自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

john_lw的博客

路漫漫其修远兮,吾将上下而求索

  • 博客(34)
  • 资源 (15)
  • 收藏
  • 关注

原创 Spring MVC实现原理解析

Spring MVC基于MVC设计模式设计,其实现基于Spring IOC容器和Servlet。 Spring MVC的启动 Spring MVC通常运行在Web容器(如Tomcat)中,其启动由Web容器触发。 以下是一个常规的Web应用部署描述文件Web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-

2018-07-10 17:14:53 10037

原创 Spring AOP实现原理解析

Spring AOP 相关概念 AOP:Aspect-Oriented Programming,是一种新的模块化机制,用来描述分散在对象、类或者函数中的横切关注点。 Join Point:程序流中被分割为一个个代码单元,单元之间的点即为Join Point。如程序调用栈中,可以按照各个方法将代码执行流分割为一个个方法单元,那么方法调用前后都是Join Point。 Advice:模块化内...

2018-07-05 13:39:32 1770

原创 Spring IOC实现原理解析

IOC IOC即DI,控制反转与依赖注入。表示的概念都是将对象自身从其依赖关系的管理中解放出来,将这个管理工作的责任交给第三方来完成。在Spring中,这个第三方就是IOC容器:基础版的BeanFactory和升级版的ApplicationContext。IOC容器全面接手了对象依赖关系图的管理工作。 管理工作主要分为两大部分:元数据信息的准备和对象关系图的正式建立。 元数据信息 元数...

2018-07-05 13:25:27 2300

原创 InnoDB引擎--事务隔离性

事务将数据库从一个一致状态转换至另外一个一致状态,若某个事务看到了另外一个事务在状态转换过程中的中间态数据(不一致状态),将有可能导致另外一个事务的操作基于一个不一致的数据库状态,进而数据库失去一致性。事务隔离性主要用于处理数据库的并发访问问题。 事务隔离性级别 事务隔离性分为4个级别,可以在事务的一致性与并发性上的做出权衡。另外,不同的隔离级别也有不同的问题存在。 读未提交(Rea...

2018-06-03 17:21:44 686

原创 InnoDB引擎--事务持久性

事务是指构成单一逻辑工作单元的操作的集合。数据库系统维护事务的ACID四个特性: 原子性:事务的所有操作在数据库中要么全部反映,要么全部不反映。 一致性:事务执行前后数据库保持约束一致性和业务逻辑一致性。 隔离性:在事务并发执行时,各个事务都感觉不到其他事务的存在。 持久性:事务一旦提交,其更改是永久性的,即使数据库系统崩溃也能恢复。 先从持久性说起。 持久性 保证持久性的策略就是Wr...

2018-05-15 14:36:14 4581

原创 InnoDB引擎--索引

良好的索引设计可以大大提高数据库查询性能。InnoDB引擎支持自适应哈希索引、B+树索引和全文索引。其中自适应哈希索引是系统自动调整的,用户无法干预。 B+树索引 聚集索引 聚集索引以主键顺序构建B+树,叶子节点中存储行数据记录,数据也是索引的一部分。 辅助索引 辅助索引以索引列逻辑顺序构建B+树,叶子节点中不存储实际的行数据记录,而存储的是行数据的聚集索引键。...

2018-05-15 10:56:36 560

原创 InnoDB引擎--存储结构与文件

数据库是数据的集合,数据库管理系统(DBMS)是操作和管理数据库的应用程序。数据库应用主要有两类:OLAP(联机分析处理)和OLTP(联机事务处理)。 OLAP的主要特点是: 实时性要求不高 数据量大 并发量小 OLTP的主要特点是: 实时性要求高 数据量小 高并发 要求满足ACID Mysql体系架构 mysql是一种DBMS,其体系架构如下图所示: mysql中集成的...

2018-05-14 14:36:54 11020 1

原创 JVM--解析、分派、重载与重写

方法调用最关键的问题就是要确定具体调用哪个版本的方法。在Java虚拟机里共有5条方法调用字节码指令: invokestatic:调用静态方法 invokespecial:调用实例构造方法,私有方法和父类方法 invokevirtual:调用虚方法 invokeinterface:调用接口方法,在运行时确定一个实现此接口的对象 invokedynamic 静态解析 通过invokestat...

2018-04-23 15:08:20 352

原创 JVM--JVM类加载机制(下)

在深入理解JVM–JVM类加载机制(上)中,只写到Java类加载机制的加载阶段,在类的生命周期中,还有后面的验证、准备、解析、初始化、使用和卸载这些阶段。 验证 验证阶段的主要工作是为了确保Class文件流中包含的内容符合虚拟机的要求,而且不会威胁到虚拟机自身的安全,主要有以下几个方面: 文件格式验证:验证Class文件格式 元数据验证:Java语言级语义分析 字节码验证:验证方法体不会危...

2018-04-18 16:56:53 315

原创 JVM--JVM类加载机制(上)

类加载机制 虚拟机把描述类的Class文件(一串二进制字符流,无论何种存在形式)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是JVM的类加载机制。 类的生命周期 类从加载到内存到卸载的整个生命周期如下图: 加载阶段 Java虚拟机规范并没有指定什么时候开始加载阶段,由虚拟机实现自己选择。加载阶段的工作由类加载器来完成,在JV...

2018-04-17 16:54:19 291

原创 JVM--垃圾回收

哪些内存应该被回收? JVM垃圾回收主要针对堆区和方法区。在Java堆中,我们不再需要的对象就可以被回收了。例如:在一个方法中新生成了一个Integer对象作为局部变量,当方法结束后,该对象将不会再被使用,是被回收的对象。 如何确定对象可被回收? 引用计数法 当没有引用指向某个对象时,可以认为该对象可被回收。 在引用计数法中,每个对象都记录了指向它的引用的个数,当引用为0时即可被...

2018-03-30 10:48:01 355

原创 JVM--JVM内存布局与Java对象的定义

JVM基本结构 如图所示: 运行时数据区 Java虚拟机定义了若干种程序运行时会用到的运行时数据区。 程序计数器 每个Java线程都拥有自己的程序计数器,字节码执行游标。 虚拟机栈 每个Java线程都拥有自己的虚拟机栈,在线程创建时同时创建,用于存储栈帧。栈帧是用来存储数据和部分过程结果的数据结构,用来处理动态链接,方法返回和异常分派。栈帧随着方法的调用而创建,随着方...

2018-03-29 12:46:41 350

原创 Java并发机制(5)--线程、中断、Runnable、Callable、Future

Thread 线程的基本概念我们已经在深入理解Java并发机制(1)–理论基础中总结过了,这里不再赘述。 线程的状态 Java线程在其生命周期里处于以下6种状态,这些状态定义在Thread类内部枚举中。 状态 说明 NEW 初始态,还未调用start()方法 RUNNABLE 运行态,将操作系统中的就绪态和运行态统一定义为RUNNABLE BLOCKED 阻塞态,线程等...

2018-03-28 09:51:50 2130

原创 AVL树图解和Java实现

AVL树 AVL树是带有平衡条件的二叉查找树。平衡条件为:某节点左右子树的高度差不超过1。 平衡操作-旋转 在AVL树的插入和删除操作中,需要更新树节点的高度信息以检查AVL树的平衡状态,如果插入和删除后出现了不平衡,还需要通过旋转操作来修正AVL树的平衡状态。 插入后平衡 假设插入后非平衡节点为N,4种情况和修正方案: 向N的左儿子的左子树插入:右旋 向N的右儿子的右子树插...

2018-03-27 13:33:44 5042

原创 二叉查找树Java实现

二叉查找树 首先是一棵二叉树,使其称为查找树的关键性质是其某节点的左子树中任意值都小于该节点,右子树中任意值都大于该节点。 代码如下: public class BinaryTree<T extends Comparable<T>> { private TreeNode<T> root = null; private LinkedLi...

2018-03-22 13:23:59 402

原创 排序算法汇总

冒泡排序 算法思想:比较+交换。从数组第一个元素开始,两两比较相邻元素,将较大者后移,直到最后一个元素。重复此操作,直到数组中所有元素有序。 public class BubbleSort { public static void sort(int[] arr) { //重复N-1次 for (int i = 0; i < arr.length - 1...

2018-03-19 15:27:47 284

原创 Java String类相关

String类简述 String类是不可变类,由final关键字修饰,内部由final数组char[]保存字符。对于String类的方法,查询类方法不会导致char[]数组内容变化。其他诸如subString,replace的方法均需要原字符串内容变化,又由于String类不可变,当调用这些方法的时候实际上返回的是新建的String对象。 String类内部由char[]数组维护,String...

2018-03-15 16:46:23 279

原创 JDK动态代理与CGLIB动态代理应用及源码解析

代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 代理模式中有三种角色:Subject抽象主题角色、RealSubject真实主题角色、Proxy代理主题角色。Subject描述了业务行为,RealSubject执行具体的业务逻辑,Proxy代理会拦截对RealSubject对象方法的调用,并在方法调用前后做预处理以及一些善后工作。 代理模式可以很好地在不侵入原代码的情况下...

2018-03-15 13:40:44 2941 1

原创 Session与Cookie

cookie技术 http协议是无状态的,服务器无法判断某一个简单http请求来自于谁。这里我们可以利用cookie技术,当一个用户第一次登录服务器时,http request中不带有cookie字段,服务器通过http response中set-cookie字段设置浏览器访问该网站的cookie,然后该用户第二次访问服务器时,由于服务器设置了cookie,浏览器会自动将关联该服务器的cooki...

2018-03-13 10:46:59 357

原创 单例模式

单例模式定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式优缺点 优点 在内存中只有一个实例,节约内存,减少性能开销。当一个对象的产生需要占用较多资源时(如文件、读取配置文件等),采用单例模式可有效节约资源。 单例对象可以作为全局访问点,优化和共享全局资源访问。 缺点 单例模式要求自行实例化,因此单例模式一般没有接口,拓展性不好。 ...

2018-02-28 16:03:51 283

原创 Java并发机制(4)--AQS、ReentrantLock、ReentrantReadWriteLock源码分析

背景 锁是用来控制多个线程访问共享资源的工具,Java中有两种锁,一种是jvm层面的synchronized关键字,一种是JUC的Lock接口的实现类。 Lock接口对比synchronized关键字需要显示的获取/释放锁,虽然丧失了一定的便捷性,但是提供了synchronized关键字所不具备的获取/释放锁的灵活性、可中断获取锁、超时获取锁、非阻塞获取锁(trylock)、以及多个条件变量。...

2017-11-24 16:20:31 554

原创 Java并发机制(3)--synchronized关键字底层原理

synchronized关键字在Java语言层面提供了同步功能。 synchronized同步的形式 Java中的任何对象都可以被锁。 有以下三种形式: 对于普通同步方法,锁住的是当前实例对象 对于静态同步方法,锁住的是当前类的Class对象 对于同步方法块,锁住的是synchronized括号里配置的对象 这三种形式在jvm里都是由管程来支撑的。 同步代码块在字节码层面插入了...

2017-11-02 10:32:52 472

原创 Java并发机制(2)--volatile关键字

本文深入分析了Java volatile关键字的底层原理。

2017-10-31 11:04:47 576

原创 Java并发机制(1)--理论基础

进程与线程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元, 线程是程序执行的最小单元。 线程作为调度和分配的基本单位,进程作为资源分配的基本单位。 一个进程的组成实体可以分为两大部分:线程集和资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。 多道程序设计模型 计算机采用多道程序设计模型...

2017-10-25 14:16:14 2945

原创 LinkedHashMap源码分析

本文分析了Java集合框架中的LinkedHashMap的API结构和源码实现原理。

2017-06-02 10:58:33 336

原创 HashMap源码分析

本文详细分析了Java集合框架中的HashMap的API结构和源码实现原理。

2017-05-16 09:24:22 298

原创 数据结构与算法基础概念总结

线性结构—–线性表 定义 具有相同数据类型数据元素的有限序列 顺序表 逻辑上相邻的元素物理位置上也相邻,即数组 链式表 逻辑上相邻的元素物理位置上不一定相邻,节点包含数据域和指针域,指针域指向后继节点。有单向链表,双向链表,循环链表。 顺序与链式比较 名称 存取方式 逻辑/物理结构 增删 查 空间分配 场景选择 顺序表 ...

2017-05-11 21:08:28 510

原创 后缀表达式的计算器Java实现

本文用Java实现了基于后缀表达式的简易计算器

2017-05-09 13:42:58 3482

原创 Java 基础知识总结--持续更新

Java是OOP语言,所有的OOP语言都有三个特性:封装、多态、继承。 封装 封装是一种将代码与它所处理的数据结合起来,而不被外界干扰滥用的程序设计机制。 在Java中,基本封装单元是类,数据即字段,代码即方法。 多态 多态是一种允许使用一个接口来访问一类动作的特性。 在Java中,多态的表现形式为:1、接口的实现;2、继承父类进行方法重写(override);3、同一个类中进...

2017-05-08 11:02:00 3176

原创 SQL各种Join连接总结

本文对比总结了SQL中的JOIN之间的联系和区别 1.INNER JOIN or JOIN 2.OUTER JOIN 2.1LEFT OUTER JOIN or LEFT JOIN 2.2RIGHT OUTER JOIN or RIGHT JOIN 2.3FULL OUTER JOIN or FULL JOIN 3.NATURAL JOIN 4.CROSS JOIN 5.SELF JOIN

2017-04-25 10:20:28 22580

原创 BUG 记录

Mybatis 1、sql update 当wedId为null时不抛异常,不更新数据库,注意手动检查条件是否为null UPDATE exception_waterquality_diagnose SET enterpriseId = #{enterpriseId},categoryId = #{categoryId},cause = #{cause},solution = #...

2017-04-21 16:35:33 351

原创 LinkedList源码分析

本文详细分析了Java集合框架中的LinkedList的API结构和实现原理。

2017-04-18 09:55:21 633

原创 ArrayList 源码分析

本文详细分析了Java集合框架中的ArrayList的API结构和实现原理。

2017-04-14 09:58:03 326

原创 Java For-each 和 Iterator异同点总结

详述了Java For-each 和 Iterator异同点

2017-03-07 15:54:30 690

Java_Pdf_itext7-7.0.5

Java_Pdf_itext7-7.0.5Java_Pdf_itext7-7.0.5Java_Pdf_itext7-7.0.5

2018-02-06

Python机器学习及实践从零开始通往Kaggle竞赛之路 中文版 高清版 完整版

Python机器学习及实践从零开始通往Kaggle竞赛之路 中文版 高清版 完整版

2018-02-06

图解性能优化-中文高清版完整版

图解性能优化图解性能优化图解性能优化图解性能优化图解性能优化

2018-02-01

程序员的数学 中文版 高清版 完整版

程序员的数学 中文版 高清版 完整版程序员的数学 中文版 高清版 完整版

2018-02-06

微服务设计--中文高清完整版

本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,通过持续集成部署微服务,等等。

2018-01-09

网络是怎样连接的 高清版 中文版 完整版

网络是怎样连接的 高清版 中文版 完整版网络是怎样连接的 高清版 中文版 完整版

2018-02-06

图解算法 中文版 高清版 完整版

图解算法 中文版 高清版 完整版图解算法 中文版 高清版 完整版

2018-02-06

利用python进行数据分析 中文版 高清版 完整版

利用python进行数据分析 中文版 高清版 完整版利用python进行数据分析 中文版 高清版 完整版

2018-02-02

深入理解Redis

《深入理解Redis》以由浅入深、由原理到应用场景的方式介绍了Redis 这款NoSQL 数据库产品。书中不仅细致地讲解了Redis 中的数据结构及流行的使用模式,还针对Redis 键的设计和管理,以及内存管理提出了建设性的方案。同时,作者深入Redis 源码,将其内部构造通过源代码调试的方式进行呈现。

2018-09-06

敏捷软件开发:原则、模式与实践 中文版 完整版 高清版

敏捷软件开发:原则、模式与实践 中文版 完整版 高清版

2018-02-06

空空如也

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

TA关注的人

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