自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (5)
  • 收藏
  • 关注

转载 ReentrantLock实现原理详解

转载自http://www.jb51.net/article/105762.htm以下是本篇文章的大纲1 synchronized和lock    1.1 synchronized的局限性    1.2 Lock简介2 AQS3 lock()与unlock()实现原理    3.1 基础知识    3.2 内部结构    3.

2017-11-14 16:08:24 491

转载 Java 8系列之重新认识HashMap

转载自https://tech.meituan.com/java-hashmap.html摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨Hash

2017-11-13 14:34:29 330 1

转载 Session机制详解

转自:http://justsee.iteye.com/blog/1570652虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。    一、术语s

2017-11-01 21:47:53 535

原创 Java的同步机制

1 synchronized和lock 1.1 synchronized的局限性synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如:当线程尝试获取锁的时候,如果获取不到锁会一直阻塞。 如果获取锁的线程进入休眠或者阻塞,除非当前线程异常

2017-11-01 21:47:08 713

原创 OutOfMemoryError

配置VM arguments: -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 可以显示内存状态等信息堆溢出测试代码public class testOom { static class OOMObject{}; public static void main(String

2017-10-27 21:43:57 317

转载 ReentrantLock实现原理

1 synchronized和lock1.1 synchronized的局限性    synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如:当线程尝试获取锁的时候,如果获取不到锁会一直阻塞。如果获取锁的线程进入休眠或

2017-10-26 00:46:25 272

原创 线程池

简介概念: 线程池是一种多线程处理行驶,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务。优点 避免线程的创建和销毁带来的性能开销避免大量线程因相互抢占系统资源导致的阻塞能够对线程进行简单的管理并提供定时执行、间隔执行等功能Java通过Executors提供四种线程池newCachedThreadPool : 可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用

2017-10-25 14:50:40 264

原创 Spring AOP基础

AOP概念面向切面编程AOP希望将分散在各个业务逻辑代码中的相同代码通过横向切割的方式抽取到一个独立的模块中,让业务逻辑代码可以专注于业务本身。但如何将这些独立的逻辑融合到业务逻辑中以完成和原来一样的业务流程,是事情的关键,也是AOP要解决的主要问题。AOP术语连接点(Joinpoint) 程序执行的某几个特定位置。Spring仅支持方法的连接点,即仅在方法调用前、方法调用后、方法抛出异常及方法

2017-10-25 14:13:51 332

原创 在IoC容器中装配Bean

Bean的配置信息是Bean的元数据信息,由以下4个方面组成:Bean的实现类Bean的属性信息,如数据源的连接数、用户名、密码等Bean的依赖关系,Spring根据依赖关系配置完成Bean之间的装配Bean的行为配置,如生命周期范围及生命周期各过程的回调函数基于XML的配置采用基于Schema配置方案依赖注入属性注入属性注入指Setter方法注入Bean的属性值或依赖对象构造函数注入需要

2017-10-24 22:18:43 385

原创 IoC容器

BeanFactory和ApplicationContextBeanFactory:IoC容器。Spring框架最核心的接口,提供了高级IoC的配置机制。是Spring框架的基础设施,面向Spring本身 ApplicationContext:应用上下文,Spring容器。面向使用Spring框架的开发者,更易于创建实际应用。BeanFactoryBeanFactory是一个类的通用工厂,可以创建

2017-10-23 22:29:05 346

原创 Spring Boot具体细节

注解@SpringBootApplication:开启了Spring的组件扫描和Spring Boot的自动配置功能,有三个注解组合 Spring的@Configuration:表明该类使用Spring基于Java的配置Spring的的@ComponentScan:启动组件扫描,使得所写的Web控制器类和其他组件被自动发现并注册为Spring应用程序上下文里的BeanSpring的的@Com

2017-10-22 22:27:05 290

转载 Linux五种IO模型性能分析

1. 概念理解     在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理

2017-10-22 00:09:25 231

原创 Linux IO模型分析

概念理解同步 在发送一个功能调用时,没有得到结果之前,该调用就不返回。 例如普通B/S模式:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步 与同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。 例如 ajax请求(异步): 请求通过事件触发->服务器处理(这是浏览器仍然可以作其

2017-10-22 00:07:46 293

原创 TCP协议

概念TCP协议是一种面向连接的、可靠的、基于IP的传输层协议。每条TCP连接只能有两个端口,TCP连接是点对点的。全双工,面向数据流。 TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。TCP报文头部格式序列号(SYN):表示报文所发送的数据的第一个字节的序号确认号(ACK):期望收到对方的下一个报文段数据的第一个字节的

2017-10-21 22:28:10 591

原创 HTTP协议

基础概念HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP是基于请求-响应模式的、无状态的、应用层,规定了浏览器和服务器之间的通信规范,通常用TCP连接方式。HTTP 1.0、1.1 HTTPSHTTP1.0 浏览器和服务器使用短连接,响应玩,立即断开请求的过程:3次握手,请求,响应,断开连接HTTP不保存连接,好处:服务器可以处理更多的连接

2017-10-21 20:13:53 251

原创 Java NIO

概念 NIO出现之前,Java 使用传统Socket实现基本的网络通信功能。当没有客户端对服务器发起请求时,会在accept()阻塞。同时简历连接后read()、write()也会阻塞。 处理多个连接,需要采用多线程的方式,阻塞会导致线程进行上下文切换,是的程序的效率很低。NIO采用非阻塞的方式实现网络通信,提高了效率。实现原理NIO通过Selector、Channel和Buffer实现非阻塞的

2017-10-21 17:57:51 204

原创 Java IO

与Java流操作有关的类或接口 IO流的概念流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类字节流 以字节(8bit)为单位,没有用到缓存字符流 以字符(16bit)为单位,根据码表映射字符,一次可以读多个字节,处理输入输出时用到了缓存 区别

2017-10-21 17:35:33 210

原创 反射和代理

什么是反射反射是程序运行过程中进行自我检查,同时对内部的成员变量进行操作。反正可以在运行时对类进行动态装载,并动态的创建类的对象在运行时分析类的能力 运行时查看对象实现通用的数组操作代码具体功能通过反射机制获取类Class.forName("类的路径")类名.Class实例.getClass()//第一种方式: Classc1 = Class.forName("Employee"

2017-10-21 15:27:56 255

原创 泛型

泛型IO反射集合

2017-10-20 20:50:54 301

原创 索引简要小结

简介及优势索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引类型主要分为聚簇索引和辅助索引聚簇

2017-10-10 09:56:45 254

原创 Spring MVC简单小结

简介MVC模式在MVC框架中,控制器(Controller)用于执行业务逻辑并产生模型数据(Model),而视图(View)则用于渲染模型数据 MVC模式,即Model-View-Controller。View指表现层,Model,是用来承载数据的抽象结构,而Controller则是View和Model的桥梁。View存在与前端代码中,Controller,Model存在与后端代码中。 在

2017-10-09 20:58:41 468

原创 Spring简要总结

为什么使用Spring传统Java开发具有高度耦合性,类之间的依赖关系太强,改动一个地方往往牵扯很多类。Spring可以管理对象和对象之间的依赖关系,我们不需要自己建立对象,把这部分工作全部转交给容器完成,具有低耦合,对代码没有侵略性,对服务器没有依赖性特点的框架 Spring整个系列的最最核心的概念当属IoC, AOP,什么是IoC和AOP就不展开了,简而言之,将对象创建过程的职责赋予容器,通

2017-10-09 17:35:55 555

原创 Spring Boot简单小结

什么是Spring BootSpring Boot用来简化新Spring应用的初始搭建以及开发过程,从而快速、敏捷的开发新一代基于Spring框架的应用程序本身不包含Spring框架的核心特性和扩展功能集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail,Tomcat等等)“习惯优于配置”特点创建独立的Spring应用程序嵌入的Tomca

2017-10-08 22:24:05 333

原创 垃圾收集器与内存分配策略小结

对象已死吗引用计数法给对象添加一个引用计数器,每当其他地方引用它,计数值加1;引用失效,计数值减1无法解决对象之间相互循环引用的问题可达性分析算法通过一系列“GC Roots”的对象作为起始点,向下搜索,搜索路径称为“引用链”。如果一个对象到GC Roots没有任何引用链相连时(GC Roots到这个对象不可达),则对象不可用GC Roots对象: 虚拟机栈中引用的对象方法区中类静态属

2017-10-07 20:39:57 282

原创 Java内存区域与内存溢出异常小结

运行时数据区域程序计数器当前字节码的行号指示器线程私有栈区线程私有Java虚拟机栈为虚拟机执行Java方法(即字节码)服务存储局部变量表、操作数栈、动态链接、方法出口等局部变量表:编译期间完成分配 存储基本数据类型、对象引用本地方法栈为执行Native方法服务HotSpot将本地方法栈和虚拟机栈合一Java堆线程共享目的:存放对象实例垃圾回收器管理的主要区域通过-X

2017-10-07 18:36:02 302

原创 Mac OS环境下Selenium的安装

Mac OS环境下Selenium的安装特别感谢简书上一个分享大致流程也如这篇文章所写,不过我在最后阶段出现了一个小问题,记录一下下载pip(Python包管理工具)注意是下载source格式的文件下载PyCharm(Python开发工具)下载Firefox安装解压pip,进入该文件夹,输入指令sudo python setup.py install执行sudo easy_install pip

2017-09-24 22:38:46 1606

原创 Python基础(简明Python教程)

Python基础(简明Python教程)参考简明Python教程基本概念注释符 # 基本数据类型整数、长整数、浮点数(52.3E-4)、复数(-5+4j) 字符串对象运算符与Java基本一致运算符 运算符优先级控制流if语句number = 20guess = int(raw_input('Enter an integer:'))if guess == number

2017-09-24 21:55:32 791

Spring Boot实战 高清扫描完整版

本书以Spring应用程序开发为中心,全面讲解如何运用Spring Boot提高效率,使应用程序的开发和管理更加轻松有趣。作者行文亲切流畅,以大量示例讲解了Spring Boot在各类情境中的应用,内容涵盖起步依赖、Spring Boot CLI、Groovy、Grails、Actuator。对于Spring Boot开发应用中较为繁琐的内容,附录奉上整理完毕的表格,一目了然,方便读者查阅。

2018-11-05

深入理解Java虚拟机:JVM高级特性与最佳实践 高清扫描完整版

本书第1版两年内印刷近10次,4家网上书店的评论近4?000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据全新的JDK 1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和优佳实践;增加了若干与生产环境相结合的实战案例;对第1版中的错误和不足之处的修正;等等。第2版不仅技术更新、内容更丰富,而且实战性更强。   本书共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见虚拟机监控与故障处理工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、HotSpot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析JIT编译的数据和结果;第五部分探讨了Java实现高效并发的原理,包括JVM内存模型的结构和操作;原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。

2018-11-05

JAVA并发编程的艺术-高清扫描版-带索引书签-原书排版-part1+part2

JAVA并发编程的艺术-高清扫描版-带索引书签-原书排版,对理解Java并发非常有帮助

2017-10-27

空空如也

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

TA关注的人

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