
JAVA
文章平均质量分 92
沧hi
这个作者很懒,什么都没留下…
展开
-
Error accessing PooledConnection. Connection is invalid.问题处理总结
最近有个项目使用SpringBoot+Mybatis,进行大批量数据库操作,基本代码结构是6个类:其中,AbstractSync定义的Session的获取,另外三个类集成自AbstractSync,从而获取数据库连接。AbstractSync代码结构如下:public abstract class AbstractSync { private Logger log = L...原创 2019-01-14 13:13:52 · 5870 阅读 · 0 评论 -
虚拟机执行子系统
第三部分 虚拟机执行子系统第6章 类文件结构第7章 虚拟机类加载机制第8章 虚拟机字节码执行引擎第6章 类文件结构6.1 Class类文件的结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空...原创 2019-04-28 23:58:31 · 500 阅读 · 0 评论 -
程序编译与代码优化
第四部分 程序编译与代码优化第10章 早期(编译期)优化第11章 晚期(运行期)优化第10章 早期(编译期)优化10.1 概述Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compile...原创 2019-04-29 01:16:11 · 1137 阅读 · 0 评论 -
高效并发(多线程JVM原理)
第四部分 程序编译与代码优化第10章 早期(编译期)优化第11章 晚期(运行期)优化第10章 早期(编译期)优化10.1 概述Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compile...原创 2019-04-29 02:15:26 · 500 阅读 · 0 评论 -
24种设计模式(一)
24种设计模式第1章 简单工厂第2章 外观模式第3章 适配器模式第4章 单例模式第5章 工厂方法模式第6章 抽象工厂模式第7章 生成器模式第8章 原型模式第9章 中介者模式第10章 代理模式第11章 观察者模式第12章 命令模式第13章 迭代器模式第14章 组合模式第15章 模版方法模式第16章 策略模式第17章 状态模式第18章 备忘录模式第19章 享元模式...原创 2019-04-30 02:00:32 · 7459 阅读 · 0 评论 -
24种设计模式(二)
24种设计模式第1章 简单工厂第2章 外观模式第3章 适配器模式第4章 单例模式第5章 工厂方法模式第6章 抽象工厂模式第7章 生成器模式第8章 原型模式第9章 中介者模式第10章 代理模式第11章 观察者模式第12章 命令模式第13章 迭代器模式第14章 组合模式第15章 模版方法模式第16章 策略模式第17章 状态模式第18章 备忘录模式第19章 享元模式...原创 2019-04-30 04:32:21 · 565 阅读 · 0 评论 -
24种设计模式(三)
24种设计模式第20章 解释器模式第21章 装饰模式第22章 责任链模式第23章 桥接模式第24章 访问者模式第20章 解释器模式(Interpreter)1.解释器模式的定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这里的文法,简单点说就是我们俗称的“语法规则”。2. 解释器模式的结构和说明■ AbstractEx...原创 2019-04-30 06:13:41 · 569 阅读 · 0 评论 -
java并发底层原理及JMM
整理自《java并发编程的艺术》一,java并发机制底层实现原理1.volatile “易变的”volatile 是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个县城修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的...原创 2019-04-25 16:09:53 · 491 阅读 · 0 评论 -
java三年面试题(基础知识篇)不定期更新
java三年面试题(基础知识篇)1. java面向对象的三大特性?封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。代表实现:javaBean优点:隐藏内部细节,只通过规定的方法访问数据,保证安全性; 低耦合。缺点:不便与深度调试实现方法:访问修饰符(private,无修饰符,protected,public)访问...原创 2019-05-10 20:32:34 · 1278 阅读 · 0 评论 -
java三年面试题(分布式篇)不定期更新
java三年面试题(分布式篇)1.什么是软件架构?软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。2.SOA架构和微服务架构的区别?SOA面向服务架构:是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。SOA使用WebService进行通信。微服务架构:从SOA架构发展而来,相比于SOA,服务的...原创 2019-05-11 16:33:45 · 2363 阅读 · 0 评论 -
java三年面试题(多线程篇)不定期更新
java三年面试题(多线程篇)1.进程和线程的区别?进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。一个进程至少包含一条线程。 进程拥有自己的内存空间。线程(Thread)是进程的一部分,线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。所有线程共享进程的内存空间。2.创建线程的方法?...原创 2019-05-11 19:32:34 · 474 阅读 · 0 评论 -
JAVA三年面试题(Web篇)不定期更新
JAVA三年面试题(Web篇)1.什么是Servlet?Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。2.Servlet生命周期(1)加载和实例化当Servlet容器启动或客户端发送一个请求时,Servlet容器会查...原创 2019-05-11 23:17:30 · 2944 阅读 · 0 评论 -
java三年面试题(设计模式篇)不定期更新
java三年面试题(设计模式篇)不定期更新1. 什么是设计模式 ?设计模式不是软件工程的专属名词,实际上设计模式是从建筑学引申到软件工程的。建筑学中研究将一个庭院设计的更美观,形成了一些公认的规范和标准,称之为设计模式。软件工程将其引申到软件设计上,旨在设计出更加美观,可维护更强的软件。2.工厂模式和抽象模式有什么区别?这两种设计模式主要的区别在于产品,工厂模式是用来创建同一个产品的不同类...原创 2019-05-12 00:50:12 · 459 阅读 · 0 评论 -
java三年面试题(数据库篇)不定期更新
java三年面试题(数据库篇)不定期更新1.什么是索引?索引的作用?索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。在数据库系统中建立索引主要有以下作用:(1)快速取数据;(2)保证数据记录的唯一性;(3)实现表与表之间的参照完整性;(4)在使用ORDER ...原创 2019-05-13 00:02:58 · 455 阅读 · 0 评论 -
自动内存管理机制
第二部分 自动内存管理机制第2章 Java内存区域及对象揭秘第3章 垃圾收集器与内存分配策略第4章 虚拟机性能监控与故障处理工具第2章 Java内存区域及对象揭秘2.1 Java内存区域2.2 HotSpot虚拟机对象探秘2.2.1 对象的创建虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载...原创 2019-04-28 17:21:58 · 281 阅读 · 0 评论 -
Spring Mvc源码架构
一,Spring MVC原理原理解读,此篇博客已叙述详细,在此引用二,Spring MVC架构以下内容整理或引自《看透SpringMVC:源代码分析与实践》 SpringMVC中Servlet一共有三个层次,分别是HttpServletBean、FrameworkServlet和DispatcherServlet。HttpServletBean直接继承自Java的HttpServlet,...原创 2019-04-23 23:51:13 · 448 阅读 · 0 评论 -
java对象初始化对象和销毁对象
java对象初始化与对象销毁的顺序的相反的。原创 2019-01-31 11:44:19 · 423 阅读 · 0 评论 -
IOC深度解读
IOC IoC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦。 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对...原创 2019-04-11 15:15:54 · 312 阅读 · 0 评论 -
AOP深度解读
AOP原理摘自:基于AOP的软件开发方式改善《中国知网》 AOP就是用一种松散耦合的方式来实现独立的关注点, 然后, 组合这些实现来建立最终系统。用它所建立的系统是使用松散耦合的, 模块化实现的横切关注点来搭建的, 这些模块单元叫做“方面。 基于AOP的软件开发需要以下三个步骤:i.方面分解:分解需求提取出横切关注点和一般关注点, 即将一个系统中的核心模块级关注点和横切关注点分离开来...原创 2019-04-11 15:16:40 · 312 阅读 · 0 评论 -
Spring 整体架构
Spring的整体架构(1)Core Container。Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。Core和Beans模块是框架的基础部分,提供IoC(转控制)和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序...原创 2019-04-11 15:17:51 · 146 阅读 · 0 评论 -
java 类加载机制
一、类文件结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言...原创 2019-04-11 15:18:47 · 162 阅读 · 0 评论 -
JVM 垃圾回收 内存结构
一、JVM内存结构程序计数器(Program Counter Register) 是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个...原创 2019-04-11 15:20:10 · 150 阅读 · 0 评论 -
数据结构
一、线性表 线性结构中的任意一个结点至多只能有一个前驱与一个后继。向量 向量(vector)是由具有相同数据类型的数据元素(表目)组 成的线性表,即所有表目类型相同,它们都属于同一数据对象, 一般采取顺序存贮的方式。目录表如果线性表的表目不为同一类型,每个表目所占的存储空间就可能不相等。仍用顺序存储的方法就不能快速存取任一表目。为了提高运算速度,可以采用索引的方法,建立...原创 2019-04-11 15:21:08 · 920 阅读 · 0 评论 -
查找
查找查找(search)又称为检索。线性表的查找线性表上进行查找的方法:顺序查找、折半查找和分块查找。顺序查找 从表的一端开始,用给定的值与表中各结点的关键字逐个进行比较,直到找出相等的结点则查找成功; 或者查找所有结点都不相等则查找失败。顺序查找对线性表的结构本身没有特殊的要求,即表可以是顺序存储的,也可以是链接存储的; 对表中的数据也没有排序要求。因此...原创 2019-04-11 15:21:46 · 176 阅读 · 0 评论 -
排序
排序排序(sorting)又称为分类。概要地说,排序就是将待排序文件中的记录按排序码不减(或不增)的次序排列起来。 其确切定义为:设{R1,R2,…,Rn}是由n个记录组成的文件,{K1,K2,…,Kn}是相应的排序码的集合。 所谓排序,就是确定1,2,…,n的一种排列p1,p2,…,pn,使得各排序码满足如下的非递减(或非递增)关系。 如果待排序文件中,存在多个排...原创 2019-04-11 15:22:19 · 515 阅读 · 0 评论 -
深入理解java IO
一、Java的I/O类库的基本架构Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下四组。◎ 基于字节操作的I/O接口:InputStream和OutputStream。◎ 基于字符操作的I/O接口:Writer和Reader。◎ 基于磁盘操作的I/O接口:File。◎ 基于网络操作的I/O接口:Socket。基于字节的I/O操作接口基于字...原创 2019-04-13 09:22:48 · 295 阅读 · 0 评论 -
Cookie 和 Session
一、CookieCookie属性项当前Cookie有两个版本:Version 0和Version 1。通过它们有两种设置响应头的标识,分别是“Set-Cookie”和“Set-Cookie2”。Cookie如何工作真正构建Cookie是在org.apache.catalina.connector. Response类中完成的,调用generateCookieString方法将Coo...原创 2019-04-13 09:23:54 · 172 阅读 · 0 评论 -
Servlet工作原理
一、Servlet工作原理当Context容器初始化状态设为init时,添加到Contex容器的Listener将会被调用。ContextConfig继承了LifecycleListener接口,它是在调用Tamcat.addWebapp被加入到StandardContext容器中的。ContextConfig类会负责整个Web应用的配置文件的解析工作。ContextConfig的ini...原创 2019-04-13 09:24:36 · 498 阅读 · 0 评论 -
java并发编程应用(一)
整理自《java并发编程的艺术》一,线程进程:操作系统分配资源的最小单元,一个进程包含多条进程。进程:操作系统调度的最小单元,也叫轻量级进程。一个进程可以创建多个线程,各个线程拥有各自的计数器,堆栈和局部变量等属性,并且能够访问共享的内存变量。线程优先级:setPriority(int);优先级1-10;线程状态:Daemon线程:是一种支持型线程,因为它主要被用作程序中后台调度...原创 2019-04-26 03:12:06 · 563 阅读 · 0 评论 -
Java并发编程应用(二)
三,Java并发容器和框架1.ConcurrentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap。1.1为什么要使用ConcurrentHashMap?(1)线程不安全的HashMapHashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的nex...原创 2019-04-27 14:06:03 · 247 阅读 · 0 评论 -
java三年面试题(Spring篇)不定期更新
java三年面试题(Spring篇)不定期更新1.什么是Spring?Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。2.Spring的优缺点?优点:轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):S...原创 2019-05-13 15:57:20 · 601 阅读 · 0 评论