自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SillyDuck

今天也要加油鸭~

  • 博客(84)
  • 收藏
  • 关注

原创 [Java多线程]---原子操作的实现原理

处理器提供总线锁定和缓存锁定两个机制来保证复杂内存操作的原子性。使用总线锁保证原子性想要保证读改写共享变量的操作是原子的,就必须保证CPU1读改写共享变量的时候,CPU2不能操作缓存了该共享变量内存地址的缓存。总线锁就是使用处理器提供的一个LOCK#信号,当一个处理器在总线上输出此信号时,其他处理器的请求将被则阻塞住,那么该处理器就可以独占共享内存。使用缓存锁保证原子性因为总线锁会把CP...

2019-06-14 16:21:57 346

原创 [Java多线程]---volatile和synchronized的底层实现原理

文章目录volatile的实现原理synchronize的实现原理volatile的实现原理当有volatile变量修饰的共享变量进行写操作的时候会多出一行有Lock前缀指令的汇编代码。Lock前缀的指令在多核处理器下会发生两件事情:将当前处理器缓存行的数据写回到系统内存。这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。原因:多处理器下的缓存一致性协议(MESI),...

2019-06-13 17:17:51 550

原创 [计算机网络]---总结1(OSI/UDP/TCP/IP/ARP/Port等持续更新)

OSI七层:物理层、数据链路层,网络层,运输层,会话层,表示层,应用层TCP/IP四层:网络接口层、网际层、运输层、应用层五层协议:物理层、数据链路层、网络层、运输层、应用层UDP(User Datagram Protocol,用户数据报协议)的特点:面向非连接,发送数据之前不需要建立连接,减少开销和发送数据前的时延尽最大努力交付,不保证可靠交付面向报文,不对应用程序提交的报文信息...

2019-01-26 23:59:28 486

原创 [计算机网络]---TCP的三次握手与四次挥手总结

文章目录说说TCP的三次握手1. 第一次握手2. 第二次握手3. 第三次握手为什么需要三次握手才能建立连接?而不是两次?不是四次?说说TCP的四次挥手1. 第一次挥手2. 第二次挥手3. 第三次挥手4. 第四次挥手为什么需要四次挥手才能断开连接?为什么A要先进入TIME_WAIT状态,等待2MSL时间后才进入CLOSED状态?为什么连接的时候是三次握手,关闭的时候却是四次?如果已经建立了连接,但是...

2019-01-21 19:52:10 575

原创 [Java多线程]---将任意对象作为对象监视器

多个线程调用同一个对象中的不同名称的synchronized同步方法或synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的.synchronized同步方法对其他synchronized同步方法或synchronized(this)同步代码块调用呈阻塞状态同一时间只有一个线程可以执行synchronized同步方法中的代码synchron...

2018-12-26 22:31:44 1208 1

原创 [NeedBox项目总结]---对数据库配置文件明文信息进行加密

文章目录前言一、创建DESUtil工具类二、创建EncryptPropertyPlaceholderConfigurer类三、修改spring-dao.xml的相关配置前言我们常常在写数据库配置文件jdbc.properties的时候,都是以明文方式来显示,这样做其实是很不安全的,万一被黑客爬取到这些信息连接上数据库,造成数据泄露是很危险的。所以,我们想到对明文进行加密,使用密文来显示是个不错...

2018-12-20 19:29:28 612 1

原创 [NeedBox项目总结]---MyBatis小结

一、MyBatis的执行流程首先要有MyBatis配置文件,包括MyBatis全局配置文件和MyBatis映射文件。MyBatis通过读取配置文件信息,构造出SqlSessionFactory,即会话工厂。通过SqlSessionFactory会话工厂创建SqlSession会话,SqlSession的作用是操作数据库。SqlSession本身不能直接操作数据库,它是通过底层的Execu...

2018-12-20 13:55:53 224

原创 [NeedBox项目总结]---图片处理

文章目录前言一、实现步骤二、路径工具类(PathUtil.java)三、图片工具类(ImageUtil)四、用Thumbnailator处理图片(1)简介(2)主要功能(3)在项目中使用(4)具体场景前言在项目中,我们不可避免的会遇到对图片的处理,首先不考虑图片处理过程的细节,如何存储是个问题。如果图片很多的话,我们不可能把所有的图片都存储在数据库中,所以通常会在本机或者是服务器上单独创建一个...

2018-12-13 00:19:46 213

原创 [NeedBox项目总结]---引入Kaptcha实现验证码功能

文章目录前言一、Kaptcha简介二、在项目中使用Kaptcha三、相关参数配置前言验证码是防止批量操作和恶意登录最有效的方式之一。所以一个成熟的web项目怎么能少了验证码呢?不过自己编写实现好像对我来说,有点困难阿。不过没关系,我们也可以使用一些比较方便的验证码工具,省时省力。在网上收集一些资料之后,决定使用Kaptcha组件。一、Kaptcha简介Kaptcha是一个基于SimpleC...

2018-12-11 01:49:34 318

原创 [NeedBox项目总结]---使用Logback进行日志管理

文章目录一、Logback简介二、Logback的配置介绍三、项目中需要的Logback配置文件(logback.xml)四、logger的简单使用五、查看日志一、Logback简介Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-corelogback- classiclogback-accesslogback-core...

2018-12-11 00:28:12 200

原创 [NeedBox项目总结]---使用Maven搭建SSM框架

文章目录前言一、引入jar包(pom.xml)二、数据库的连接配置(jdbc.properties)三、mybatis相关的配置(mybatis-config.xml)四、整合spring和mybatis(spring-dao.xml)五、通过spring管理service层(spring-service.xml)六、配置SpringMVC(spring-web.xml)七、初始化配置信息(web...

2018-12-10 22:04:53 276

原创 [深入理解JVM]---Java内存区域

一起来学习JVM吧我们在学习C++的时候知道,每一个new操作都要对应相应的delete操作,否则会出现内存泄漏的问题,同理C语言的malloc和free也是如此。那么对于Java这门语言,我们却无需这样做,这一切都归结于JVM的强大,在虚拟机自动内存管理机制的帮助下,我们一般只需创建对象(申请内存),而不需要关注或者主动的销毁对象。不过,也正是因为我们把内存控制的权力交给了JVM,一旦出现内...

2018-07-27 01:18:40 290

原创 [Java8源码分析]---ArrayList

ArrayList源码分析ArrayList简介我们知道,ArrayList是基于数组实现的List类,完全支持List接口的全部功能,底层实质上就是一个Object[]数组。从源码注释的第一行“Resizable-array implementation of the List interface”中,可以看出ArrayList是List接口的可变长数组实现,即这是一个动态数组,与普...

2018-06-29 18:06:53 649 1

原创 [Java之泛型]---泛型接口、泛型类、泛型方法、类型通配符

[Java之泛型]—泛型接口、泛型类、泛型方法、类型通配符Java泛型是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。即其本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。...

2018-06-12 19:59:00 5030 1

原创 [Java之Lambda表达式]---让你的代码更简洁

Lambda表达式是什么? Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。 Lambda表达式的本质是“匿名方法”,即当编译我们的程序代码时,“编译器”会自动将“Lambda表达式”转换为“匿名方法”。...

2018-06-09 18:42:08 1385

原创 [Java之内部类]---非静态内部类、静态内部类、局部内部类、匿名内部类

什么是内部类? 通俗的讲,就是把一个类放在另一个类的内部定义,这个定义在其他类内部的类就叫做内部类,这个包含内部类的类就叫做外部类。

2018-06-07 18:26:18 472

原创 Spring实战(8):Spring MVC的工作原理

MVC是什么?在讲SpringMVC之前我们先来看一下什么是MVC模式~MVC:MVC是一种设计模式MVC的原理图: 分析:M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View 视图(做界面的展示:jsp,html……)C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)...

2018-05-07 22:08:20 557

原创 Spring实战(7):面向切面的Spring

在软件开发中,散布于应用中多处的功能被称为横切关注点。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的。把这些横切关注点与业务逻辑相分离正是面向切面编程所要解决的问题。前面我们介绍了如何使用依赖注入管理和配置我们的应用对象。依赖注入有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。下面我们就来看Spring是如何实现切面的,先从AOP的基础知识开始...

2018-05-07 22:08:04 322 1

原创 Spring实战(6):装配Bean——运行时注入

我们通常讨论依赖注入的时候,讲的都是将一个Bean引入到另一个Bean的属性或构造器参数中,它通常指的是将一个对象与另一个对象进行关联。而装配Bean的另一个方面指的是将一个值注入到Bean的属性或构造器中,也就是字面量的注入。 比如,将专辑的名字装配到TaylorSwift Bean的构造器或title属性中:@Beanpublic CompactDisc taylorSwift()...

2018-05-07 22:07:50 1801

原创 Spring实战(5):装配Bean——高级装配

在上一篇博客中我们看到了最为核心的Bean装配技术。但是,Bean装配所涉及的领域并不仅仅局限于那些,Spring还提供了多种技巧,借助它们可以实现更为高级的Bean装配功能。环境与profile在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁移到另一个环境。在开发阶段中,某些环境相关做法可能并不适合迁移到生产环境中,甚至即便迁移过去也无法工作。数据库配置、加密算法以及与外...

2018-05-07 22:07:31 290

原创 Spring实战(4):装配Bean——导入和混合配置

在典型的Spring应用中,我们可能会同时使用自动化和显式配置。就产生了混合配置,即可以在JavaConfig中引入XML配置,也可以在XML配置中引用JavaConfig。在JavaConfig中引用XML配置之前我们在JavaConfig配置中写过一个CDPlayerConfig:2.27:CDPlayerConfig@Configurationpublic clas...

2018-05-07 22:07:10 472

原创 Spring实战(3):装配Bean——自动化、JavaConfig、XML

装配是什么?创建应用对象之间协作关系的行为通常称为装配(wiring),这也是DI的本质。 我们必须要告诉Spring要创建哪些bean并且如何将其装配在一起。Spring提供了三种主要的装配机制:在XML中进行显式配置在Java中进行显式配置隐式的bean发现机制和自动装配Spring的配置风格是可以互相搭配的,但应尽可能地使用自动配置的机制,因其使用起来要方便的多,显...

2018-05-07 22:06:34 1029 1

原创 Java基础类库:常用类(Object、String、Math、Random类等)

Object类Object类是所有类、数组、枚举类的父类,即Java允许把任何类型的对象赋给Object类型的变量。当定义一个类没有使用extends关键字为它显示指定父类,则该类默认继承Object父类。//常用方法:boolean equals(Object obj)protected void finalize()Class<?>getClass()int h...

2018-04-13 00:39:52 322

原创 Spring实战(2):Spring的六大模块

俯瞰Spring风景线——六大模块 现在逐一介绍Spring的模块~Spring核心容器(Core Spring container)容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。在该模块中,包括了Spring bean工厂,它为Spring提供了DI的功能。基于bean工厂,我们还会发现有多种Spring应用上下文的实现。还提供了许多...

2018-04-12 23:29:00 1800 1

原创 Spring实战(1):初步了解Spring

Spring是什么啊 O_O 春天?emm…我现在所说的Spring是指一个开源框架PS!!!从现在开始,一定要很熟悉的知道下面这些英文单词首字母组成的简称,后面不再做解释 EJB:Enterprise JavaBean ——企业级JavaBean JDO:Java Data Object ——Java数据对象 POJO:Plain Old java Object ——简单老式Java...

2018-04-12 23:28:40 480 1

原创 Java基础类库:Date、Calendar类

今天在用Java写一道去年寒假用C语言刷过的一道特别简单的水题的时候,用到了Java类库的Date、Calendar类,不妨写个总结以便下次复习~题目是这样的:给定一个日期,输出这个日期是该年的第几天Input输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成Output对于每组输入数据,输出一行,表示该日期是该年的第几天Sample Input1985/1/202006/3/

2018-03-17 22:52:54 335

原创 [每日一问]---Java中的方法重写(Overriding)和方法重载(Overloading)是什么意思?

方法重写是子类重新定义父类的方法 方法重载发生在同一个类里两个或多个方法的方法名相同但是参数列表不同1)方法重写的原则:方法名、参数列表必须与原方法相同返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)重写方法的访问权限不允许缩小,不能比原方法访问性差重写方法不能比原方法抛出更多的异常final修饰的方法是无法重写的private修饰的方法是无法重写的static修

2018-03-17 11:46:04 651

原创 [每日一问]---Java中支持的数据类型有哪些?什么是自动装箱和拆箱?

Java支持的数据类型包括两种:基本数据类型、引用类型 1)基本数据类型有8种: byte、short、int、long、float、double、boolean、char 2)引用类型: 如String、包装类等自动装箱是Java编译器在基本数据类型和对应的对象包装类型间的转化,即int转化为Integer,自动拆箱是Integer调用其方法将其转化为int的过程。 所以自动装箱和拆箱就

2018-03-16 23:52:26 308

原创 [每日一问]---hashCode()和equals()方法的重要性体现在什么地方?

Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。 如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此可能会被集合认为是相等的。 而且,这两个方法也用来发现重复元素,所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。HashMap的很多函数要基于hashCode()方法和equ

2018-03-15 19:11:39 4282

原创 [每日一问]---“static”关键字是什么意思?Java中可以重写一个static方法吗?

1)static表示静态的意思,表明一个被其修饰的成员变量(类成员)或者是成员方法(类方法)可以在没有所属类的实例变量的情况下被访问。2)Java中不可以重写static方法,因为重写Override是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以不可以重写static方法。PS:Java中也不可以重写一个private方法,因为p...

2018-03-14 12:54:29 550

原创 [每日一问]---JDK和JRE的区别是什么?

JRE:Java Runtime Environment,即Java运行时环境,包含了Java虚拟机、Java核心类库和支持文件。是使用Java语言编写的程序运行所需要的软件环境,是提供给想运行Java程序的用户使用的。JDK:Java Development Kit,即Java开发工具包,包含了JRE、编译器和其他的工具(JavaDoc、Java调试器等)。是程序员使用Java语言编写程序所需要的

2018-03-13 19:52:42 154

原创 [每日一问]---什么是Java虚拟机?为什么Java是“与平台无关的编程语言”?

1)Java虚拟机,Java Virtual Machine即JVM,是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。2)Java被称作“与平台无关的编程语言”,即Java的跨平台性。Java源程序先经过javac编译成二进制的.class字节码文件,.class文件再运行在JVM上,然后java解释器(JVM的一部分)会将其解释成对应平台的...

2018-03-12 10:07:04 845

原创 JSP&Servlet学习笔记(8): 使用JSP

JSP生命周期由于在Servlet中编写HTML很麻烦,可以使用JSP来编写HTML。JSP与Servlet是一体的两面。因为JSP最后还是会被容器转译为Servlet源代码、自动编译为.class文件、载入.class文件,然后生成Servlet对象。 在编写Servlet时,可以重新定义init()方法作Servlet的初始化,重新定义destroy()进行Servlet销毁前的收尾工作...

2018-03-11 00:23:05 612 1

转载 JSP&Servlet学习笔记(7): 过滤器

过滤器概述什么是过滤器过滤器JavaWeb三大组件之一,它与Servlet很相似!不过滤器是用来拦截请求的,而不是处理请求的。当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继承执行用户请求的Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。其实可以这样理解,当用户请求某个Servlet时...

2018-03-10 22:30:10 171

转载 JSP&Servlet学习笔记(6): 监听器

监听器是JAVAWeb开发中很重要的内容,其中涉及到的知识,可以参考下面导图: Web监听器1)什么是web监听器?   web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext、HttpSession、ServletRequest的创建和销毁,变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。 2)监听...

2018-03-10 21:50:51 143

原创 JSP&Servlet学习笔记(5): Servlet进阶API

每个Servlet都必须由Web容器读取Servlet设置信息,才可以真正成为一个Servlet。对于每个Servlet的设置信息,web容器会为其生成一个ServletConfig作为代表对象,我们可以从这个对象取得Servlet初始参数,以及代表整个web应用程序的ServletContext对象。Servlet、ServletConfig、GenericServlet在Servlet...

2018-03-10 21:14:17 208

原创 Java的一些基本概念小总结

类是一种抽象的概念,对象是类的一种具体的表现形式。先有类,在生成对象(实例)。类由两大部分构成:属性和方法。一个JAVA源文件只能定义一个public类。JAVA中进行方法的参数传递时,无论是基本类型还是引用类型,都是传值。方法重载:方法名字相同,但参数不同:个数不同和类型不同。继承:extends。继承的三个特点:1,父类有的,子类也有。2,父类没有的,子类可增加。3,父类有的,子...

2018-02-28 22:26:20 159

原创 HTML入门知识点笔记

HTML概述HTML的基本概念HTML是Hyper Text Markup Language(超文本标记)的缩写。HTML不是一种编程语言,而是一种描述性的标记语言。一个HTML文件名的后缀是.html或.htm。HTML的主要功能: (1)格式化文本 (2)创建列表 (3)建立表格 (4)插入图片 (5)加入多媒体 (6)添加交互式表单标记符又称标签,<&...

2018-02-28 22:21:29 434

原创 JSP&Servlet学习笔记(4): 会话管理

会话管理基本原则使用隐藏域在HTTP协议中,服务器是没有记忆功能的,每个请求对服务器来说都是新请求。 所以就有了隐藏域,隐藏域是主动告知服务器多次请求间必要信息的方式之一。 如何将上一次的结果成为下一次请求的隐藏域呢? 做法之一就是将上一次的结果发送至服务器,由服务器将上一次的结果以隐藏域的方式再响应给浏览器。 比如调查问卷,第一页的结果会在第二页成为隐藏域,当第二页发送后,可...

2018-02-28 22:19:23 287

原创 JSP&Servlet学习笔记(3): 请求与响应

从容器到HttpServlet有关HTTP请求的相关信息,是如何变成相对应的Java对象的呢?当请求来到HTTP服务器,服务器将请求转交给Web容器的时候,Web容器会创建一个代表当次请求的HttpServletRequest对象,并给这个对象设置请求的相关信息。同时,容器也会创建一个作为稍后对客户端进行响应的HttpServletResponse对象。 接着,容器会根据读取的@WebS...

2018-02-28 22:19:03 686

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除