自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java中String创建对象过程及其运算原理

一、String类的常见问题题解析,1.1、new String(“hello”)创建了几个对象  不考虑其他因素,String b = new String("hello");这行代码到底创建了几个对象?  情况一,创建了一个对象:String a = "hello&qu

2018-09-11 23:05:15 4705 7

原创 Mybatis中#{}和${}的区别

一、结论  #{}:占位符号,好处是防止sql注入。   ${}:sql拼接符号。二、具体分析  动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因。mybatis 在对 sql 语句进行预编译之前,会对 sql 进行动态解析,解析为一个 BoundSql 对象,也是在此处对动态 SQL 进行处理的。在动态 SQL 解析阶段, #{ } ...

2018-09-07 14:17:36 993

原创 数据库事务隔离级别及脏读、不可重复读、幻读的理解

  开篇声明,由于两位大佬排版不够美观,然后又发现一些歧义,因此我集百家之所长,精心整理并排版良好,可放心阅读。 http://blog.csdn.net/yuxin6866/article/details/52649048 https://blog.csdn.net/zjxxyz123/article/details/79413729一、数据库事务正确执行的四个基本要素1.1ACID...

2018-08-30 16:25:36 3667

原创 Nginx之upstream的四种配置方式

1、轮询(weight)   指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。默认当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream bakend { server 192.168.1.10 weight=1; server 192.168.1.11 ...

2018-08-29 16:42:34 24623 1

原创 HTTP三次握手四次挥手过程

一、HTTP协议三次握手过程1.1名词解释。   SYN(Synchronous 位码,表示建立联机)   Seq(Sequence number 顺序号码)   ACK(Acknowledgement 确认值)   Ack(Acknowledgement number 确认号码)1.2握手过程详解   参照下图所示进行解释:   (1)第一次握手:主机A发送位码为SY...

2018-08-27 14:14:43 4614 1

原创 Java动态代理源码详解

  前言:动态代理在很多底层框架中都会用得到,比如Spring等都用到了动态代理。它的作用很简单,就是将你要使用的类,重新生成一个子类或本类。这样框架就可以利用这个新生成的类做一些事情,比如在该类的方法前后加一些代码。这样的话,你就可以不用修改任何已经编写好的代码,只要使用代理就可以灵活的加入任何东西,将来不用了,也不会影响原来的代码。   Spring的AOP中用到的两种动态代理。   AO...

2018-08-21 17:11:14 2168

原创 Java中CAS详解(悲观锁与乐观锁)

前言:在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。  volatile是不错的机制,但是vo...

2018-08-14 15:36:01 2591

原创 Java设计模式——工厂模式详解

一、概述1.1使用场景。   在任何需要生成复杂对象的地方,都可以使用工厂方法模式。 直接用new可以完成的不需要用工厂模式。   个人理解,重点就是这个复杂 (构造函数有很多参数)和是否可以直接用new。二、工厂模式的五种写法2.1简单的静态工厂模式。/** * 图形抽象类 */public abstract class Shap { /** ...

2018-08-13 17:07:36 194

原创 Nginx入门配置详解

一、配置虚拟主机  前言:Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,在开发中很常用。本文只讲解Nginx常用配置,安装方面自行百度,以下是基于windows版本讲解的,除了命令稍有不同,配置文件和Linux是一模一样的。   (1)Linux下常用命令:   启动Nginx:./nginx   重启Nginx:./nginx -s reload   关...

2018-08-12 17:00:48 939

原创 JVM二:全面理解Java内存模型(JMM)及Java内存区域

一、计算机内存1.1、硬件内存架构。   计算机CPU(central processing unit)和内存的交互是最频繁的,内存是我们的高速缓存区。用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓存用户IO等待导致CPU的等待成本。但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每...

2018-08-09 11:53:33 957

原创 JVM一:类加载过程详解

  我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,今天来说说类加载。   学完类加载之后,java运行过程就可以分为:编译—>>>类加载—>>>执行。   类加载主要是由jvm虚拟机负责的,过程非常复杂,类加载分三步:加载—>>&a

2018-08-08 11:17:30 481 1

原创 Java设计模式——单例模式详解

三、单例模式的八种写法3.1懒汉模式【线程不安全】,单例实例在第一次使用时进行创建。public class SingletonExample1 { // 私有构造函数 private SingletonExample1() {} // 单例对象 private static SingletonExample1 instance = null; //...

2018-08-03 11:42:28 239

原创 Java反射完全详解

三、反射的使用3.1获取Class对象的三种方式。 3.1测试类:public class Example1 { public static void main(String[] args) { // 1.第一种方式获取Class对象 // new产生一个对象,一个Class对象 Example1 example1 = new Ex...

2018-08-02 16:46:25 167

原创 Java反射详解

三、反射的使用3.1获取Class对象的三种方式。 3.1测试类:public class Example1 { public static void main(String[] args) { // 1.第一种方式获取Class对象 // new产生一个对象,一个Class对象 Example1 example1 = new Ex...

2018-08-02 16:29:13 306

原创 Maven中指定Java的编译版本和源文件编码方式

Maven默认编译版本是JDK1.5,在很多时候,发现有些代码报错,又找不到原因,很有可能是没有配置JDK版本。就如有一次我遇到的问题:定义全局异常处理类继承HandlerInterceptorAdapter时候,preHandle方法上面有@Override就一直报错,点开HandlerInterceptorAdapter源码,明显是有这个方法,后来发现JDK版本的问题,按如下方法设置好后,错误...

2018-07-30 21:19:56 4753

原创 eclipse安装lombok或@Slf4j注解找不到log

一、第一种方法1、这里面列出了所有版本的jar,一般下载最上面最新的就行。 https://www.projectlombok.org/all-versions2、找到eclipse安装位置,将lombok.jar放入和eclipse.ini文件平级的文件夹下,如我的安装路径: D:\eclipse2017\eclipse-jee-oxygen-R-win32-x86_64\eclip...

2018-07-29 21:40:45 8064 1

原创 java中final关键字的真正作用

一、前言   final使得被修饰的变量”不变”,但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义: (1)引用本身的不变, (2)引用指向的对象不变。一、引用本身的不变:final StringBuffer a=new StringBuffer("immutable");final StringBuffer b=new StringBuffer("not immut...

2018-07-28 14:26:19 489

原创 Maven+Tomcat实现热部署

一、Tomcat配置1、修改Tomcat的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。<role rolename="manager-gui" /><role role

2018-07-27 20:12:36 7419 1

原创 线程与多线程(四)——线程调度

三、线程调度  线程调度管理器负责线程排队和CPU在线程间的分配,并按线程调度算法进行调度。当线程调度管理器选中某个线程时,该线程获得 CPU资源进人运行状态。   线程调度是抢占式调度,即如果在当前线程执行过程中个更高优先级的线程进人可运行状态,则这个更高优先级的线程立即被调度执行。3.1实现线程调度的方法 1. join( )方法   join( )方法使当前线程暂停执行,等待调...

2018-07-27 14:21:16 964 1

原创 线程与多线程(三)——线程的状态

三、线程的状态3.1线程的四种状态        线程的生命周期可以分成4个阶段,即线程的4种状态,分别为新生状态、可运行状态、阻塞状态和死亡状态。一个具有生命的线程,总是处于这4种状态之一。 线程的生命周期如下图所示。1.新生状态(New Thread)               创建线程对象之后,尚未调用其start( )方法之前,这个线程就有了生命,此时线程仅仅是一个空对象,系...

2018-07-27 11:04:36 316

原创 URLConnection和Socket和HttpClient的区别

一、URL通信和Socket的区别。       利用socket进行通信时,在服务器端运行一个socket通信程序。服务器端不停地监听某个端口,等待客户的连接申请,接到申请后建立连接并进行通信,所以,在socket通信方式中,服务器是主动等待连接通信的到来。       利用URL进行通信时,在服务器端常驻一个CGI程序,但它一直处于休眠状态。只有在客户端要求建立连接时才被激活,然后与用户进行通...

2018-07-16 10:14:50 3159 2

原创 Java中设置多个Access-Control-Allow-Origin跨域访问

1、如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全。response.setHeader("Access-Control-Allow-Origin","*");2、为保证安全性,可以只添加部分域名允许访问,添加位置可以在下面三处任选一个。(1)可以在过滤器的filter的dofilter()方法种设置。(2)可以在servlet...

2018-07-11 15:33:31 17686 3

原创 Java字节码文件和二进制文件的区别与联系

1、class文件:里面存放了许多16进制的字节(码)(如二进制字节码可表示为:010101101),如下图所示;但是这个文件,是二进制的,例如图形文件等都属于二进制文件。                                                  2、javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各...

2018-07-04 11:29:26 11667 6

原创 线程与多线程(二)——java实现多线程

二、 在Java中实现多线程       每个程序至少自动拥有一个线程,称为主线程。当程序加载到内存时,启动主线程。Java 程序中的public static void main( )方法是主线程的人口,运行Java程序时,会先执行这个方法。        开发中, 用户编写的线程般都是指除了主线程之外的其他线程。        使用一个线程的过程,可以分为4个步骤:        (...

2018-07-03 15:16:39 298

原创 线程与多线程(一)——线程概述

一、线程概述       计算机的操作系统多采用彩任务和分时设计,多任务是指在一个操作系统中可以同时运行多个程序,例如,可以在使用qq聊天的同时听音乐,即有多个独立运行的任务,每个任务对应一个进程,每个进程又可产生多个线程。1.1进程       认识进程先从程序开始。程序(Program) 是对数据描述与操作的代码的集合,如Office中的Word,暴风影音等应用程序。      ...

2018-07-03 14:25:51 656

转载 SLF4J和Logback和Log4j和Logging的区别与联系

前言       Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能: 输出日志。       对于这一点,IO大臣其实非常清楚, 日志是个很重要的东西, 因为程序运行起来以后, 基本上就是一个黑盒子,如果程序的行为和预料的不一致,那就是出现Bug了,如何去定位这个Bug 呢?       ...

2018-07-03 09:36:43 20887 31

转载 HTTP访问过程原理解析

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,...

2018-07-02 17:19:34 367

原创 CPU结构及工作过程

       中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。       中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的...

2018-07-02 16:48:44 952

原创 tomcat配置多域名访问多项目

1、两个项目,第一个为Apache-tomcat的默认项目ROOT,第二个项目名为applet。2、修改tomcat的server.xml文件,原来的代码如下,其中Host标签的appBase表示这个目录下面的子目录将自动被部署为应用。name为访问项目的默认域名/IP(localhost就是127.0.0.1)。注:在未部署任何项目时,Engine标签里面的Host标签如上图所示;而一般正常部署...

2018-04-20 11:34:17 3137

原创 addEventListener和on的区别

为什么需要addEventListener?先来看一段html代码:<div id="box">我是DIV</div>1、用on的代码。window.onload = function(){ var box = document.getElementById("box"); box.onclick = function(){ console....

2018-04-08 10:51:48 450

转载 java文件下载中Content-disposition的定义

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。

2017-09-23 14:37:48 3451

原创 java中getRealPath("/")和getContextPath()的区别

在做上传文件的功能时,突然被关于路径的问题困扰了一下,今天就做个总结。

2017-09-19 10:33:31 20501

转载 JSP中getAttribute和getParameter的不同

1.request  中对属性的操作,如果要使用 getAttribute( ) ,则之前一定要有setAttribute  的操作,否则无法取得。2.使用 getParameter ( ) 则表示接收参数,参数的来源有:(1)表单提交(2)地址重写;getParameter ( )是无法接受setAttribute 所设置的属性的。

2017-03-19 17:23:00 330

commons-io-2.5.jar

[免费]java开发技术所需要的文件上传的jar包,2017年Apache官网最新版本commons-io-2.5.jar,大家放心下载。

2017-09-18

空空如也

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

TA关注的人

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