自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CG国斌的博客

全职程序员,兼职导游,非著名相声演员。

  • 博客(17)
  • 资源 (32)
  • 收藏
  • 关注

原创 详述 ThreadLocal 的实现原理及其使用方法

文章目录实现原理ThreadLocal 的 get 方法ThreadLocal 的 set 方法ThreadLocal 的特性使用方法Threadlocal是一个线程内部的存储类,可以在指定线程内存储数据,并且该数据只有指定线程能够获取到,其官方解释如下:/** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thre

2020-05-30 18:21:27 2594 1

转载 详述 Spring MVC 启动流程及相关源码分析

- 部署描述文件中(例如 Tomcat 的`web.xml`)由`<listener>`元素标记的事件监听器会被创建和初始化- 对于所有事件监听器,如果实现了`ServletContextListener`接口,将会执行其实现的`contextInitialized()`方法- 部署描述文件中由`<filter>`元素标记的过滤器会被创建和初始化,并调用其`init()`方法- 部署描述文件中由`<servlet>`元素标记的 Servlet 会根据`<load-on-startup>`的权值按顺序创

2020-05-30 09:00:52 5664 15

转载 详述 Spring Boot 中内嵌 Tomcat 的实现原理

对于一个 Spring Boot Web 工程来说,一个主要的依赖标志就是有`spring-boot-starter-web`这个`starter`,`spring-boot-starter-web`模块在 Spring Boot 中其实并没有代码存在,只是在`pom.xml`中携带了一些依赖,包括`web`、`webmvc`和`tomcat`等

2020-05-26 22:41:02 4012

原创 详述 synchronized 和 volatile 的实现原理以及两者的区别

版权声明:本文的内容大都来自于「zejian_」的博文,略作修改。文章目录线程安全synchronized使用方式作用于实例方法作用于静态方法作用于同步代码块实现原理同步代码块同步方法其他可能需要了解的关键点可重入性线程中断等待唤醒机制volatile内存可见性禁止指令重排优化synchronized 和 volatile 的区别线程安全在并发编程中,线程安全是我们最需要关心的问题,而导致并发问题的原因,主要是:存在共享数据;并且,存在多条线程共同操作共享数据。因此,为了解决这个问题,我.

2020-05-24 19:22:31 2613

原创 出现 curl: (51) SSL: no alternative certificate subject name matches target host name 错误的原因及解决方法

## 问题描述![curl-ssh-51](https://img-blog.csdnimg.cn/20200522151604861.png)如上图所示,通过`curl`发起 POST 请求,出现 SSL 51 异常:> curl: (51) SSL: no alternative certificate subject name matches target host name通过异常描述,我们知道,该错误为:没有与目标主机名匹配的证书。

2020-05-23 14:14:31 44372

转载 十分钟搞懂 Lombok 的使用方法与实现原理

Lombok 是一款好用顺手的工具,就像 Google Guava 一样,在此予以强烈推荐,每一个 Java 工程师都应该使用它。Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长代码,尤其是对于简单的 Java 对象(`POJO`),它通过注释实现这一目的。通过在开发环境中使用 Lombok,开发人员可以节省构建诸如`hashCode()`和`equals()`这样的方法以及以往用来分类各种`accessor`和`mutator`的大量时间。

2020-05-23 08:11:44 2739 1

原创 详述 MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因

文章目录表空间在 MySQL 的众多存储引擎中,InnoDB 是最常用的存储引擎,也是 MySQL 现阶段唯一免费支持事务机制的存储引擎。在本文中,我们以 InnoDB 为例,介绍 MySQL 的索引结构以及其使用 B+ 树实现索引的原因。表空间首先,来了解一下 MySQL 的表空间。中的所有数据被存储在一个空间内,称之为表空间,表空间内部又可以分为段(segment)、区(extent)、页(page)、行(row),逻辑结构如下图:参考资料:MySQL存储引擎MyISAM和InnoDB底

2020-05-22 08:04:11 3841

原创 二叉树的前序、中序、后序、层序以及蛇形遍历的实现方式

文章目录树节点的定义二叉树的前序遍历递归迭代二叉树的中序遍历递归迭代二叉树的后序遍历递归迭代二叉树的层序遍历递归迭代二叉树的蛇形遍历递归迭代总结树节点的定义首先,给出树节点的定义,方便我们理解下面的算法:public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; }}

2020-05-16 19:01:53 1258

原创 深入理解 MySQL 事务:隔离级别、ACID 特性及其实现原理

什么是事务?事务(`Transaction`),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务通常由高级数据库操作语言或编程语言(如 SQL,C++ 或 Java)书写的用户程序的执行所引起,并用形如`begin transaction`和`end transaction`语句(或函数调用)来界定。事务由事务开始(`begin transaction`)和事务结束(`end transaction`)之间执行的全部操作组成。

2020-05-10 21:31:48 132802 22

转载 不可不说的 Java “锁”事

文章目录前言1. 乐观锁 VS 悲观锁2. 自旋锁 VS 适应性自旋锁3. 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁无锁偏向锁轻量级锁重量级锁4. 公平锁 VS 非公平锁5. 可重入锁 VS 非可重入锁6. 独享锁 VS 共享锁结语前言Java 提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自 JDK 8 和 Ne...

2020-05-08 14:36:14 764 1

转载 基于 Redis 的分布式锁实现

文章目录关于分布式锁基于数据库实现分布式锁基于数据库表的增删基于数据库排他锁基于数据库锁的优缺点基于 Zookeeper 实现分布式锁基于缓存实现分布式锁基于 Redis 的分布式锁实现SETNX存在死锁的问题一种实现方式获取锁释放锁总结关于分布式锁很久之前有讲过并发编程中的锁「并发编程的锁机制:synchronized和lock」。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需...

2020-05-07 19:44:04 631

转载 常用的分布式事务解决方案

众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分布式事务的基本概念和理论基础,然后介绍几种目前常用的分布式事务解决方案。废话不多说,那就开始吧~

2020-05-07 15:40:16 14345 14

原创 面试官:什么是死锁?如何解决死锁?写一段死锁的代码吧!

## 什么是死锁?死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。产生死锁的原因,主要包括:- 系统资源不足;- 程序执行的顺序有问题;- 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,那么死锁出现的可能性就很低;否则,就会因争夺有限的资源而陷入死锁。其次,程序执行的顺序与速度不同,也可能产生死锁。产生死锁的四个必要

2020-05-06 20:10:31 19915 23

转载 面试官:请你谈谈 Java 的类加载过程

刚刚走出校门的应届毕业生,如果在去寻求一份 Java 开发的工作时,你的面试官很有可能一边看着你的简历,一边漫不经心地问你:了解过 Java 类的加载过程吗?这个时候你一定要注意了,虽然这是一个老生常谈的问题,但是这也是一个非常能够考验你 Java 功底的问题。如果你答好了,这是你应该的;如果你没答好,那么对不起,面试官心中已经给了你不及格。今天,小编就 Java 类加载过程这个问题,抛砖引玉,说一下自己的理解,如果有不对的地方,欢迎大家在评论去指正。

2020-05-05 19:46:09 2761 2

原创 详述 Spring 中 Bean 的生命周期

1 实例化 Bean2 设置对象属性(依赖注入)3 注入 Aware 接口4 BeanPostProcessor5 InitializingBean 与 init-method6 DisposableBean 和 destroy-method

2020-05-05 19:13:20 5153

转载 Java 内存溢出(OOM)异常完全指南

java.lang.OutOfMemoryError:Java heap spaceJava 应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:`Heap space`(堆空间)和`Permgen`(永久代)

2020-05-04 08:31:48 3057

原创 深入理解 JVM 垃圾回收机制及其实现原理

对于 JVM 来说,我们都不陌生,其是 Java Virtual Machine(Java 虚拟机)的缩写,它也是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统,其本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java 语言的可移植性正是建立在 JVM 的基础上。任何平台只要装有针对于该平台的 Java 虚拟机,字节码文件(`.class`)就可以在该平台上运行。这就是

2020-05-03 13:38:29 398512 167

全国导游考试科目五练习盘.rar

全国导游考试科目五练习盘。这是一个压缩包,里面包括安装包以及安装说明!该软件为官方提供,供备考导游考试科目五练习使用,完全模拟真实的考试场景。

2019-12-05

2019年北京市导游考试导游词.zip

2019年北京市导游考试导游,包括天坛、明十三陵、颐和园、故宫和长城,共6个景点15到备选题。除此之外,资料包里面还包括官方提供的科目五考试备考景点!

2019-12-05

unzipAndFind.sh

循环解压 ZIP 类型的包,以及 FIND 指定名称文件的 Shell 脚本。

2019-11-07

DbVisualizer 9.5.X 版本 64 位破解补丁

DbVisualizer 9.5 64 位破解补丁,Windows 和 MAC 版本,均可破解。

2017-10-31

流畅的Python(高清中文版)

在读完《Python编程:从入门到实践》之后,这是进阶必备书籍。

2017-10-11

jstl 和 standard jar 包

jstl.jar & standard.jar

2017-08-23

《Maven实战》徐晓斌著(完整高清版)

Maven 专家徐晓斌著。

2017-08-18

GIF 制作工具

这是一个比较好用的 GIF 制作工具。

2017-04-25

MySQL Group Replication

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MySQL组复制提供了高可用、高扩展、高可靠的MySQL集群服务。

2017-04-22

64 位 Windows 版 DbVisualizer

64 位 Windows 版 DbVisualizer

2017-04-09

阿里巴巴 Java 开发手册

阿里巴巴 Java 开发手册,了解阿里巴巴内部的 Java 风云。无论用什么语言,都需要养成一个良好的开发习惯,以阿里巴巴为例,借鉴一下吧!

2017-02-16

MyBatis 之 各种依赖包

本资源包括MyBatis框架下的各种依赖包,通过本资源,可以快速搭建MyBatis框架。

2017-02-01

Spring MVC框架的各种依赖包下载

本资源包括Spring MVC框架下的各种依赖包,同过本资源,可以快速搭建Spring MVC框架。

2017-01-24

揭秘:微信摇一摇背后的技术细节

10亿红包从天降,揭秘微信摇一摇背后的技术细节,腾讯的技术分享。

2017-01-20

阿里巴巴 2016 双 11 背后的技术

不一样的技术创新 - 阿里巴巴 2016 双 11 背后的技术,阿里双11团队联合打造的第一手资料,共享给大家,让大家一起领略阿里的技术创新。

2017-01-20

javax.servlet.jar包下载

javax.servlet.jar包,如果有报异常未找到该jar包的,可以尝试着将该jar包导入,可以解决该异常。

2017-01-17

Cornerstone(免费破解版)

Cornerstone(免费破解版),找了很久,终于找到了,已经安装完成。先提供给大家,以免大家搜索之苦。如果有什么不懂得地方,可以到博主(http://blog.csdn.net/qq_35246620/article/details/53888211)博客上留言。

2017-01-12

运行在Mac上的Editplus - TextWrangler

运行在Mac上的Editplus - TextWrangler,完全免费,安装即用。

2017-01-11

hessian-4.0.37(jar包)

hessian-4.0.37(jar包)。

2017-01-11

DbVisualizer Pro v9.1.10 Mac(破解版)

DbVisualizer Pro v9.1.10 Mac(破解版)

2017-01-03

官方 Spring4.0 jar包

官方提供的Spring4.0版jar包,也是在网上找的,不过为了以后用着方便,再次传上来,莫怪莫怪。

2016-12-29

SmartSVN Mac版

SmartSVN Mac版,替代小乌龟。

2016-12-20

SmartSVN注册文件

Mac版SmartSVN的注册文件,让你无忧作业。

2016-12-20

Java程序驱动包

Java程序驱动包。

2016-12-09

Java编程面试攻略

Java编程面试攻略(Java Programming Interviews Exposed),为你加分!

2016-11-20

算法设计与分析

本书主要取材于算法设计与分析领域的经典内容,并介绍了算法设计的发展趋势。内容主要包括非常经典的算法设计技术,例如递归与分治、动态规划、贪心、回溯、分支限界、图算法,也包括了一些高级的算法设计主题,例如网络流和匹配、启发式搜索、线性规划、数论以及计算几何。在算法分析方面,介绍了概率分析以及最新的分摊分析和实验分析方法。在算法的理论方面,介绍了问题的下界、算法的正确性证明以及NP完全理论等方面的内容。

2016-11-19

深入浅出面向对象分析与设计

你是否早已对市面上那些只有在成为专家以后读起来才有感觉的OOA&D书籍感到厌倦?你可能早就听说过OOA&D书籍能帮助你写出伟大的软件——让老板高兴、客户满意的软件。但如何办到呢?《深入浅出面向对象分析与设计》(中文版)将告诉你如何分析、设计以及撰写真正面向对象的软件:容易重用、好维护、可扩展的软件;不再使你心碎的软件;让你增添新功能而不会破坏旧机制的软件。

2016-11-18

MapReduce2.0源码分析与实战编程

MapReduce2.0源码分析与实战编程,深入讲解MapReduce相关内容。

2016-11-15

深入理解Java虚拟机:JVM高级特性与最佳实践

作为一位Java程序员,你是否也曾经想深入理解Java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,《深入理解Java虚拟机:JVM高级特性与最佳实践》极尽化繁为简之妙,能带领你在轻松中领略Java虚拟机的奥秘。《深入理解Java虚拟机:JVM高级特性与最佳实践》是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。

2016-11-14

设计模式之禅

如果说“四人帮”的《设计模式》是设计模式领域的“圣经”,那么之后出版的各种关于设计模式的书都可称之为“圣经”的“注释版”或“圣经的故事”。本书是得道者对“圣经”的“禅悟”,它既不像“圣经”那样因为惜字如金、字字珠玑而深奥、晦涩和难懂,又比“圣经”的“注释版”更深刻和全面、更通俗和生动、更接近开发者遇到的实践场景,更具指导性。本书兼收并蓄、博采众长,也许是设计模式领域里的下一个里程碑之作。

2016-11-14

空空如也

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

TA关注的人

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