自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雏鹰

我就是编程界的一只雏鹰,等待长大,等待翱翔。

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 Mybatis-3 源码之缓存是如何使用的

Mybatis-3 源码之缓存是如何使用的Mybatis 缓存问题其实也是面试高频的问题了,今天我们就从源码级别来谈谈 Mybatis 的缓存实现。(本文源码均在 https://github.com/ccqctljx/Mybatis-3 中,会持续更新注释和 Demo)。前期回顾:上一篇文章主要讲述了 mybatis 一、二级缓存的创建过程(原文点此),重点主要放在了二级缓存的创建过程。...

2020-04-07 16:45:40 181

原创 Mybatis-3 源码之缓存是怎么创建的

Mybatis-3 源码之缓存是怎么创建的Mybatis 缓存问题其实也是面试高频的问题了,今天我们就从源码级别来谈谈 Mybatis 的缓存实现。(本文源码均在 https://github.com/ccqctljx/Mybatis-3 中,会持续更新注释和 Demo)。首先我们了解一下缓存是什么:缓存是一般的 ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。直白一点...

2020-04-05 16:35:10 154

原创 StopWatch —— 让 Spring 来帮你计算接口时间

StopWatch —— 让 Spring 来帮你计算接口时间微信搜索 程序员的起飞之路 可以加我公众号,保证一有干货就更新~(回复关键字“资料”可以获取小弟多年精华,懂的都懂~)是否还为接口计时而烦恼?是否还在无脑的复制 System.currentTimeMillis() ?是否还在为定位“慢代码瓶颈”而苦苦思索?我为大家来介绍一个神器 —— StopWatch!让 Spring 来帮你统计时间吧!一、背景相信大家肯定遇到过我开头提到过的几种问题吧。也相信各位一定写过如下重复无意义的

2020-11-09 00:10:56 1202 2

原创 不会吧,还有人在 finally 里关闭资源?

微信搜索 程序员的起飞之路 可以加我公众号,保证一有干货就更新~日常标题党吸引读者,本篇文章主讲 try-with-resource 语法糖。如果大神已对这个语法糖了然于心请直接跳到结尾三连 ???? 。好啦跟大家开个玩笑,请大家跟我一起了解今天的小知识点吧应用场景身为 Java 大神的各位肯定避免不了使用各式各样需要关闭的 Stream 或 Client 吧。例如 FileInputStream、HTTPClient 之类的。那么大家肯定会遇到以下恶心的代码 File file =

2020-11-06 00:37:56 878 2

原创 震惊!神秘 Bug 竟导致 8 核服务器 load 破百!

震惊!神秘 Bug 竟导致 8 核服务器 load 破百!好吧我承认我也加入了 “UC 震惊部”,那么大家请跟随我的文章,一步步走进当天的场景。场景复现阳光明媚的一个上午,身为“Bug 小王子”的我正在开开心心的敲着自己的新需求代码。此时,业务反馈群中突然反馈:页面响应变慢!业务报错!整个平台陷入僵死状态!我的心里顿时一惊,开始想早上吃了什么 开始想昨晚有没有更新,最近有没有上什么可能会导致平台卡死的需求。同时我的手上动作并没有停,快速的打开 4 台业务机器并输入了 top 指令。此时发现了一台服务器

2020-10-21 23:10:49 377

原创 Java并发编程的艺术-第一章 并发编程的挑战

第一章 并发编程的挑战1.1 上下文切换1.1.1 多线程一定快吗1.1.2 测试上下文切换次数和时长1.1.3 如何减少上下文切换1.1.4 减少上下文切换实战1.2 死锁1.3 资源限制的挑战1.1 上下文切换其实即使是单核处理器也支持多线程执行代码,CPU 通过给每个线程分配 CPU 时间片来实现这个机制。时间片是 CPU 分配给各个线程的时间,因为时间片非常短,所以 CPU 通过不停地...

2020-03-06 18:21:05 219

原创 深入理解Java虚拟机-第十三章 Java 内存模型与线程

第十三章 Java 内存模型与线程13.1 概述略13.2 线程安全“线程安全”一个比较恰当的定义:“当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。”这个定义就很严谨而且有可操作性,它要求线程安全的代码都必须具备一个共同特征:...

2020-03-05 22:08:54 211

原创 多线程-记一次 volatile 实验出错所得

今日学习 volatile 时,偶然想起之前见过的一段代码,正好说明了 volatile 的可见性,而我写博客也正好用的上。于是打算手撸一版出来,就有了下面的版本:public class VolatileTest { static class Test { public volatile boolean flag = false; } public s...

2020-03-04 22:09:59 232

原创 深入理解Java虚拟机-第十二章 Java 内存模型与线程

第十二章 Java 内存模型与线程12.1 概述衡量一个服务性能的高低好坏,每秒事务处理数(Transaction Per Second,TPS)是最重要的指标之一,它代表着一秒内服务端平均能相应的请求总数,而 TPS 值与程序的并发能力又有非常密切的关系。对于计算量相同的任务,程序线程并发协调的越有条不紊,效率自然越高;反之,线程之间频繁阻塞甚至死锁,将会大大降低程序的并发能力。12.2 ...

2020-03-04 21:01:43 223

原创 深入理解Java虚拟机-第十一章 晚期(运行期)优化

第十一章 晚期(运行期)优化11.1 概述本章讲述 JIT(Just In Time Compiler,即时编译器)。Java 虚拟机规范没有具体的约束规则区限制即时编译器应该如何实现,但是 JIT 编译性能的好坏、代码优化程度的高低却是衡量一款商用虚拟机优秀与否的最关键的指标之一,他也是虚拟机中最核心且最能体现虚拟机技术水平的部分。如无特殊说明,本章提及的编译器、即时编译器都是指的 Hot...

2020-03-03 17:06:27 1722 1

原创 深入理解Java虚拟机-第十章 早期(编译期)优化

第十章 早期(编译器)优化10.1 概述Java 语言的编译期实际上是一段不确定的操作过程,他可能是指 java 文件编译到 class 文件的过程,也可能是 JIT 把字节码转为机器码的过程,还有可能是使用静态提前编译器(AOT,Ahead Of Time Compiler)直接把 java 文件编译成本地机器码的过程。下面列举了三类编译过程中一些比较有代表性的编辑器:前端编译器:Sun...

2020-02-27 23:45:24 550 3

原创 深入理解Java虚拟机-第九章 类加载及执行子系统的案例与实践

第九章 类加载及执行子系统的案例与实践9.1 概述略9.2 案例分析9.2.1 Tomcat:正统的类加载器架构在本栏文章《深入理解Java虚拟机-第七章 虚拟机类加载机制》最后曾简单介绍过 Tomcat 是如何破坏双亲委派模型的,此处详细说明下,还是从主流 Java Web 服务器需要解决的问题开始讲起:部署在同一个服务器上的两个 Web 应用程序所使用的 Java 类库可以实现...

2020-02-18 19:08:26 508 2

原创 深入理解Java虚拟机-第八章 虚拟机字节码执行引擎

第八章 虚拟机字节码执行引擎8.1 概述执行引擎是 Java 虚拟机核心组件之一。虚拟机 是一个相对于 物理机 的概念,这两种机器都能执行代码,区别在于物理机是基于 CPU、寄存器、指令集和操作系统层面上的,而虚拟机的执行引擎是由自己实现的,因此可以自行制定指令集和执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集合。8.2 运行时栈帧结构运行时栈帧结构,实际上指的是虚拟机运行时...

2020-02-15 21:10:25 287

原创 深入理解Java虚拟机-第七章 虚拟机类加载机制

第七章 虚拟机类加载机制7.1 概述在 Java 语言里面,类型的加载、链接和初始化过程都是在程序运行期间完成的,这种策略虽然会使类加载增加一些性能开销,但是会提供高度的灵活性。例如编写一个接口,可以等到运行的时候再指定其实际的实现类。用户可以通过 Java 预定义的和自定义类加载器,让一个本地的应用程序可以再运行时从网络或其他地方加载一个二进制流作为程序代码的一部分。7.2 类加载的时机...

2020-02-13 20:54:15 355 1

原创 深入理解Java虚拟机-附件3 虚拟机字节码指令表

附件3 虚拟机字节码指令表

2020-02-10 14:23:38 236

原创 深入理解Java虚拟机-附件2 虚拟机规范预定义的属性

附件2 虚拟机规范预定义的属性JDK 8 中又新增了三个属性,分别是 RuntimeVisibleTypeAnnotations、RuntimeInvisibleTypeAnnotations、MethodParameters。具体请查阅 《Java 虚拟机规范 (Java SE 8)》,或 Java 虚拟机规范原文。...

2020-02-08 16:01:18 407

原创 深入理解Java虚拟机-第六章 类文件结构

第六章 类文件结构6.1 概述略6.2 无关性的基石因为想要实现 “Write Once,Run Anywhere”的伟大理想,Java 虚拟机被发明了出来。这些虚拟机都可以载入和执行同一种平台无关的程序存储格式——字节码(ByteCode),这就是构成无关性的基石。有的文章中只说明了平台无关性,我认为这也同样是语言无关性的基石。平台无关性已是大家所熟知的,它指的是不论是在 Window...

2020-02-07 00:30:10 557

原创 深入理解Java虚拟机-附件1 常量池中的 14 种常量项的结构总表

2020-02-06 21:41:37 593

原创 深入理解Java虚拟机-第五章 调优案例分析与实战

第五章 调优案例分析与实战本来是不想写这一章的,因为讲的都是案例分析。而 Eclipse 调优对我本身用的是 IDEA 也仅仅是只有参考作用,所以感觉没有写的必要。可是读着读着感觉还是要开一章写一下自己的思考过程,有助于后面的进步。5.1 概述:略5.2 案例分析5.2.1 高性能硬件上的程序部署策略书中讲述了一个 15 万 PV / 天 左右的在线文档类型网站更换了硬件系统,新的硬件...

2020-02-05 17:26:07 388

原创 深入理解Java虚拟机-第四章 虚拟机性能监控与故障处理工具

第四章 虚拟机性能监控与故障处理工具4.1 概述经常使用适当的虚拟机监控和分析工具可以加快我们分析数据、定位解决问题的速度。这里所说的数据包括:运行日志、异常堆栈、GC 日志、线程快照(threaddump / javacore 文件)、堆转储快照(headdump / hprof 文件)等4.2 JDK 的命令行工具Sun 公司(现在应该是 Oracle 了)其实为Java开发者提供了许...

2020-02-04 20:46:26 203

原创 深入理解Java虚拟机-第三章 垃圾收集器与内存分配策略(下)

第三章 垃圾收集器与内存分配策略(下)3.5.4 CMS(Concurrent Mark Sweep) 收集器CMS 是一种以尽可能缩短 STW 为目标的收集器,目前很大一部分 B/S 系统的服务端上都应用着 CMS。这类应用重视用户体验,对卡顿尤为敏感。CMS 主要分为四大步骤:初始标记(CMS initial mark) :标记GCRoots能直接关联到的对象以及由新生代中存活对象所...

2020-02-04 01:03:58 277

原创 深入理解Java虚拟机-第三章 垃圾收集器与内存分配策略(上)

第三章 垃圾收集器与内存分配策略(上)3.1 概述垃圾处理器实际上仅关注三个点:哪些内存需要回收、什么时候回收以及如何回收。三点会在后面一一讲解前面第二章大致讲述了 JVM 运行时区域的各个部分,我们会发现程序计数器、虚拟机栈、本地方法栈这三个区域基本上是随着线程生而生,死而死。虚拟机栈中的栈帧在类结构确定下来的时候基本就可以知道分配多大的大小。所以这几个区域的内存分配和回收基本是确定的。我...

2020-02-02 22:10:59 286 1

原创 深入理解Java虚拟机-第二章 Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常2.1 概述略2.2 运行时数据区域2.2.1 程序计数器程序计数器在Java内存模型中是一个较小的内存空间,作用是记录程序所执行的字节码的行数,就是说告诉CPU下一个语句该执行什么了。而字节码解释器工作时就是通过更改这个值来选取下一条应该之行的指令。因为Java可以多线程编程,而所谓的多线程实际上是CPU快速切换多个线程实现的,即每个线程都被分配...

2020-02-01 18:21:47 227

原创 读Java核心技术36讲有感——谈谈对Java的理解,谈谈Exception和Error

读过杨晓峰老师的36讲之后,想总结下自己的感想,写下来也有助于记忆,方便以后面试查阅和复习。题目所提到的话题本来是两讲,但是由于感想篇幅较短,所以合成一篇来写。一、谈谈对Java平台的理解:1、Java平台是一个面向对象编程的语言,具有封装、继承、多态三大特性。其最大的优点是”Write Once,Run Anywhere”,即“编写一次,到处运行”,这句话的基础实际上是依靠Java通...

2018-06-20 00:52:14 1962 1

原创 自学大话设计模式——简单工厂模式与策略模式

本人的几点浅见,各位大大不喜勿喷,欢迎带批评不带批评带表扬不带表扬的文明的评论。 今天通读了《大话设计模式》这本书的简单工厂模式与策略模式两个模式的介绍,生出部分感想以及疑问在此记录以便后查简单工厂模式:定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类 先说说简单工厂模式,书中以计算器为例子引入工厂模式。场景为设计一个计算器类,分别拥...

2018-06-15 01:30:42 960 2

原创 SpringBoot 入门:整合MongoDB,做简单查找功能

接着昨天来,今日整合入MongoDB,做个简单的查找功能出来。多说无用,开搞~ 今日目标:加入MongoDB支持。写一个简单的查询。 首先,搭建环境、学习MongoDB这都不提了,这里只说java相关,顺嘴提一句,比起繁琐的SQL来说,感觉要简单不少。可能是还没有深入了解的原因。 步骤一:在pom.xml中加入对MongoDB的支持,配置相关properties:pom.xml:<depen

2017-05-10 00:16:51 5363 2

原创 SpringBoot 入门:环境搭建与HelloWorld~

今日目标:SpringBoot 框架搭建,跑一个HelloWorld出来

2017-05-09 00:17:41 1748 2

原创 雏鹰开发附件2– Mybatis相关xml配置

雏鹰开发附件2– Mybatis相关xml配置

2017-05-07 01:49:15 296

原创 2017.05.06 记雏鹰博客系统开工第4天。

今日目标:Mybatis搭建。

2017-05-07 01:45:28 409

原创 雏鹰开发附件1 – Spring相关Maven配置

雏鹰开发附件1 – Spring相关Maven配置

2017-05-03 11:12:27 378

原创 2017.05.02 记雏鹰博客系统开工第3天。

今日目标:基本框架(Spring+SpringMVC+Mybatis)搭建。

2017-05-03 11:10:06 340

原创 2017.04.26 记雏鹰博客系统开工第2天。

今日目标:将基本模块关联理顺、部分表结构设计、基本框架(Spring+SpringMVC+Mybatis)搭建。争取出一个登录页面。

2017-04-27 00:18:46 520

原创 2017.04.25 记雏鹰博客系统开工日。

2017.04.25 记雏鹰博客系统开工日。

2017-04-26 00:20:40 595

原创 记一次解决Oracle数据库连接失败

问题背景:使用PL/SQL Developer连接本地虚拟机(RedHat6.7)中的Oracle服务,报错如下:ERROR:ORA-01034: ORACLE not availableORA-27101: shared memory realm does not existLinux-x86_64 Error: 2: No such file or directoryAdditional

2017-03-21 23:52:14 7765

原创 记一次JSON到前台乱码的解决方案

问题背景:别人给写的前台框架,我从后台向前台传递数据(Json)时,发现表格正常而下拉框(combobox)乱码。 技术背景:Spring MVC+EasyUI问题描述:后台取出数据并debug时是正常的,但是到页面上却是乱码,截图如下: 问题解决:首先,因为表格是正常的,所以以为是js的问题,所以试遍了网上的方法,包括引入js时设置GBK、GB2312、UTF-8。都未果。此时我发

2017-03-17 10:44:46 1098

原创 浅谈 Linux软链接和Linux 命令别名

本文浅谈了Linux的软链接、硬链接以及命令别名的相关知识。出自原创,欢迎交流,不喜勿喷。

2017-02-04 17:57:58 3837 3

原创 关于DOM4J 解析和生成XML小Demo

DOM4J Java小Demo

2017-01-10 01:00:41 427

原创 浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣。

微信搜索 程序员的起飞之路 可以加我公众号,保证一有干货就更新~本人的几点浅见,各位大大不喜勿喷。先说下这俩到底是干啥的吧。其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句。说是CreateStatement和PrepareStatement的区别,但其实说的就是Statement和PrepareStatement的区别,相信大家在网上已经看到过不少这方面的资料和博客,我在此处提几点,大家看到过的,就当重记忆,没看到就当补充~下面开始谈谈他.

2015-09-12 16:02:16 50336 25

原创 关于Oracle 12c 和 odbc的一点注意。

自打Oracle公司出了个Database 12C以来,各种各样的PDB问题涌现。如今又出现了一个问题,那就是我们想要用数据源(odbc)去连接数据库时,必须要用pdb的驱动而不能使用Oracle原来的驱动。否则会报连接不上的错误,但是连接cdb时可以使用原来的驱动。还有,Windows 7 64位系统的数据源(odbc)要去启动C:\Windows\SysWOW64下面的odbcad32.exe

2015-09-11 22:41:04 5966

原创 浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系

浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系名词介绍:数据库:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生 于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以 后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管 理的方式。C D B:CDB全称为Container Database,中文翻译为

2015-08-30 19:54:56 17570

SVN服务器、客户端、MyEclipse插件三合一集合包

Site为MyEclipse的svn插件离线包,LanguagePack为Svn的简体中文语言包,TortoiseSvn 为Svn的客户端,VisualSvn 为Svn的服务端。还有一个较详细的安装文档。感觉不错,拿来共享。

2015-10-08

空空如也

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

TA关注的人

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