自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cd19930508的博客

努力做一个优秀的程序员--逐渐成长为一个优秀的项目经理

  • 博客(51)
  • 收藏
  • 关注

原创 2020-09-18

对一些看到的好的文章的收录Spring事务的传播行为:https://blog.csdn.net/qq_38526573/article/details/87898161

2020-09-18 15:25:59 128

原创 对这几年mysql的使用进行一个整理

Mysql 是互联网中最常见,应用最广泛的的一个数据库。免费开源让它受到广大开发者的喜欢。本文总结了这几年使用mysql下来的经验以及自己对mysql的一些了解。1. 近几年个人参与的项目架构中mysql的变化 14年底刚实习时,由于实习公司的业务限制,mysql是单服务单库单表的使用方式。如下图所示随着业务的不断发展,单服务器单库单表已经无法支撑用户的请求。根据28理论,在数据库的请求中,80%的请求都是读请求,因此引入了mysql的主从架构。如下图所示:...

2020-08-27 11:40:01 180

原创 Tair 搭建

Tair 是阿里巴巴开源的,可提供快速访问的内存(MDB引擎)/持久化(LDB引擎)存储服务,基于高性能、高可用的分布式集群架构,满足读写性能要求高及容量可弹性伸缩的业务需求。近期需要研究一下该中间件,搭建了一下单机环境,整体流程如下。搭建所需服务器环境:Centos6 环境的Linux服务器tbsys & tbnetgit & svnyumtair master...

2019-11-22 17:51:42 853 3

原创 单机 mysql 主从 搭建

记录一篇单机 mysql 主从配置的博客https://www.cnblogs.com/hankguo/p/8204868.html这其中,如果遇到

2019-11-02 22:16:05 332

翻译 类加载器

类加载器虚拟机团队把类加载阶段中的”通过一个类的全限定名来获取描述此类的二进制字节流“这个动作放到Java虚拟机外部去实现,以便让应用程序自己去决定如何去获取所需要的类。实现这个动作的代码了模块叫做"类加载器"。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于任何一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一...

2019-09-12 17:09:49 100

翻译 虚拟机类加载机制

概述类加载的时机类加载的过程加载验证准备解析初始化类加载器类与类加载器双亲委派机制破坏双亲委派机制概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言中,类型的加载,连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微...

2019-09-11 16:13:56 75

原创 一个基于线程池技术的简单web服务器

写一个基于多线程的web服务器,能提供展示图片的功能,代码如下:接口 ThreadPool/** * @author chendong * @date 2019/9/7 12:54 */public interface ThreadPool<Job extends Runnable> { // 执行一个job,这个Job需要实现Runnable void ...

2019-09-08 14:51:29 271

原创 使用等待超时模式写一个简单的数据库连接池

等待超时模式假设超时时间是T,那么可以推断出在当前时间 now+T 之后就会超时定义如下变量等待持续时间:REMAINING = T超时时间: FUTURE=now+T这是仅需要wait(REMAINING)即可,在wait(REMAINING)返回之后将会执行: REMAINING = FUTURE-now. 如果REMAINING小于等于0,表示已经超时,直接退出,否则将继续执行...

2019-09-05 23:08:02 284

原创 循环打印线程输出123

面试时要求给出一个循环打印线程123的问题,特在此记录一下import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class CycleCallABC { private int num = 1; ReentrantLock loc...

2019-09-05 22:23:41 737

原创 生产者消费者模型

面试时要求写一个生产者消费者模型,特在此记录一下给对象加锁:package newthread;import java.util.*;class Counter{ List<Integer> lists = new ArrayList<>(); int size = 10; Object object = new Object(); ...

2019-09-05 22:21:57 70

原创 Redis集群安装

最近在研究Redis方面的知识,平常公司用的Redis环境是主从环境,也没有使用哨兵集群,因此私下在此研究一下Redis Cluster的使用。所需环境准备:Centos6 环境的Linux服务器3.2.8 版本的Redis2.3.0 版本以上的Ruby环境第一步:安装Ruby直接通过yum install ruby安装的ruby的版本过低,为2.0.0,使用这个版本去执行gem ...

2019-08-12 22:19:43 142

翻译 内存分配与回收策略

Java技术体系中提倡的自动内存管理最终可以归结为自动化的解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方面讲,就是在堆上分配(也可能经过JIT编译后被拆解为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使...

2019-08-05 10:56:00 101

翻译 垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。本文将会讲解下述七个垃圾收集器。Serial 收集器ParNew 收集器Parallel Scavenge 收集器CMS 收集器Serial Old(MSC) 收集器Parallel Old 收集器G1 收集器如图中所示的收集器,如果两个收集器之间存在连线,就说明他们可以搭配使用。虚拟机所在的区域,则表示...

2019-08-01 22:19:53 127

翻译 垃圾收集算法

垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法HotSpot的算法实现枚举根节点安全点安全区域标记-清除算法最基础的手机算法是”标记-清除“算法,该算法分为标记和清除两个阶段:首先标记处所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说它是最基础的手机算法,是因为后续的手机算法都是基于这种思路并对其不足进行改进而得打的。他的不足主要有两...

2019-07-30 20:45:44 129

翻译 垃圾收集器和内存分配策略-1

为什么要了解GC和内存分配?当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些自动化技术实施必要的监控和调节。程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上在类结构确定下来时就已知,因此这几个区域的内存分配和回收都具备确定性,在这几个区...

2019-07-29 16:26:34 116

翻译 OutOfMemoryError异常

目录Java堆溢出虚拟机栈和本地方法栈溢出方法区和运行时常量池溢出本地直接内存溢出在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都会发生OutOfMemoryError异常的可能。Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限...

2019-07-29 10:42:14 187

翻译 Java内存区域&虚拟机对象

Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据虚拟机规范,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存程序...

2019-07-17 16:55:13 97

原创 并发学习笔记 - 这是一篇垃圾博客,慎点

并发学习四个阶段#1 熟练掌握API,能够完成并发变成#2 熟读API源码,掌握其原理#3 理解java虚拟机的内存模型#4 操作系统对并发的支持并发的优点:发挥出多处理器的强大能力建模的简单性异步事件的简化处理响应更加灵敏的用户界面并发的缺点:安全性的问题活跃性问题(饥饿,死锁等问题)性能问题进程与线程进程是资源分配的基本单位进程中包含多个线程,线程共享进程的资...

2019-05-05 17:21:54 140

原创 SpringBoot 读取配置文件

SpringBoot 读取配置文件SpringBoot 会自动从四个地方读取配置文件,分别为: 根项目路径下的config目录中的application.properties, 跟项目路径下的application.propertiesclasspath 路径下的config文件夹下的 application.properties, classpath 下的 application.prop...

2018-11-16 14:44:14 169

原创 Set 集合类

相比于前面两篇文章写的关于ArrayList和LinkedList,Set集合与他们的不同之处在于,Set不允许数据重复。Set类集合类库的简化图如下。 可见:Set实现了Collection和Iterator几种常见的Set:Set(interface): 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals() 方法以确保对象的...

2018-09-26 17:13:30 217

原创 LinkedList 学习

底层实现: LinkedList 基于双向链表实现 线程安全:LinkedList 线程不安全 优点:LinkedList 基于链表,插入删除快,但读取较慢 缺点:线程不安全,读取慢 LinkedList 链表的基础实现private static class Node&amp;amp;lt;E&amp;amp;gt; { E item; Node&amp;amp;lt;E&amp;amp;gt; next; Node&amp;a

2018-08-09 16:59:46 365

原创 ArrayList 学习

底层实现:ArrayList的底层是一个数组,默认的数组长度为10 线程安全:ArrayList是线程不安全的 优点: ArrayList基于数组,所以擅长读取,在末尾add值也很快捷 缺点: 在指定下标add值的性能较差private static final int DEFAULT_CAPACITY = 10;private static final Object[] EMP...

2018-08-08 16:37:08 131

原创 JVM - 字节码执行

此博客为炼数成金JVM教程第十一课目录javap简单的字节码执行过程常用的字节码使用ASM生成java字节码JIT及其相关参数javap &nbsp;&nbsp;&nbsp;&nbsp; class 文件反编译工具有如下代码:public class Calc{ public int calc(){ int a = 500; ...

2018-06-15 15:04:05 1091

原创 JVM - Class文件结构

此博客为炼数成金JVM教程第十课目录语言无关性文件结构 魔数版本常量池访问符类,超类,接口字段方法属性语言无关性 JVM直接运行.clss 文件 .class 可以直接从 .java 文件编译过来,但java并不是 JVM的唯一语言,rb,groovy语言等都可以在JVM的平台上执行。文件结构 u2: 表示无符号的整数,2个by...

2018-06-15 09:33:25 188

原创 JVM - 锁

本博客为炼数成金JVM教程第九课目录线程安全对象头Mark偏向锁轻量级锁自旋锁较少锁持有时间较小锁粒度锁分离锁粗化锁消除无锁线程安全多线程网站统计访问人数 使用锁,维护计数器的串行访问和安全性我们举一个不加锁访问ArrayList的例子import java.util.ArrayList;import java.util.Li...

2018-06-13 15:16:29 168

原创 Java堆分析

本博客为炼数成金JVM教程第八课目录内存溢出(OOM)的原因MAT使用基础 浅堆(shallow Heap) 和 深堆(Retained Heap)显示入引用(incoming) 和出引用(outgoing)支配树使用Visual VM 分析堆Tomcat OOM分析案例JVM中,有哪些内存区间? 永久区不属于堆,但属于JVM进程的空间。 线程栈:是...

2018-06-12 11:23:20 868 1

原创 JVM 性能监控工具

次博客为炼数成金JVM教程第七课目录系统性能监控 确定系统运行的整体状态,基本定位问题所在Java自带的工具 查看Java程序运行细节,进一步定位问题实战分析 案例问题uptime 系统时间 运行时间:例子中为7分钟 连接数: 每一个终端算一个进程 1,5,15分钟内的系统平均负载:运行队列中的平均进程数top...

2018-06-11 17:29:14 3990

原创 类装载器

本博客为炼数成金JVM教程的第六课目录class装载验证流程什么是类装载器ClassLoaderJDK中ClassLoader默认设计模式打破常规模式热替换class 装载验证流程 加载 链接 验证 准备 解析 初始化 加载 装载类的第一个阶段 取得类的二进制流 转为方法区数据结构 在Java堆中生产读研的jav...

2018-06-11 10:20:49 477

原创 GC参数

本博客是炼数成金JVM课程的第五课目录堆的回顾串行收集器并行收集器CMS收集器Tomcat实例演示堆的回顾 堆总体上可以分为两类,新生代和老年代 老年代存放着老年对象,新生代存放着年级较轻的对象 一般来说,对象在创建出来的时候,绝大部分是会存放到eden区的。除此之外,对象一般都在新生代产生。 如果在新生代进行收集之后这个对象还能幸存,那么...

2018-06-07 19:06:10 313 1

原创 JVM-GC算法与种类

此博客为炼数成金JVM课程的第四课目录GC的概念GC算法 引用标记法标记清楚标记压缩复制算法可触及性Stop-The-World GC的概念 Garbage Collection 垃圾收集。在系统运行过程中产生的一些无用的对象,会占据一定的内存空间,如果不被释放,就会导致内存溢出。所以这些内容必须被回收掉,确保JVM有足够的内存使用。 1960年,Lis...

2018-06-01 18:24:23 244

原创 常用JVM配置参数

此博客为炼数成金JVM课程的第三课:常用JVM配置参数目录Trace跟踪参数堆的分配参数栈的分配参数Trace跟踪参数-verbose:gc 打开GC的跟踪日志-XX:+printGC 可以打印GC的简要信息[GC 4790K-&gt;374K(15872K), 0.0001606 secs][GC 4790K-&gt;374K(15872...

2018-06-01 12:00:52 329

原创 JVM运行机制

本博客为炼数成金 JVM教程的第二课博客大纲 1. JVM启动流程 2. JVM基本结构 3. 内存模型 4. 编译和解释运行的概念JVM启动流程 JVM基本结构 PC寄存机 每个线程拥有一个PC寄存器 在线程创建时创建 执行下一条指令的地址 执行本地方法时,PC的值为undefined方法区(用来保存类的原信息) ...

2018-05-29 10:10:03 1624

原创 初识JVM

JVM概念JVM是Java Virtual Machine 的简称,以为Java虚拟机虚拟机指通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统有哪些虚拟机VMWareVIsual BoxJVMVMWare 或者 Visual Box都是使用软件模拟物理CPU的指令集JVM 使用软件模拟Java字节码的指令集Java语言规范 ...

2018-05-23 09:45:06 301

原创 SSM+Maven 项目运行时,提示找不到 org.springframework.web.servlet.DispatcherServlet

SSM+Maven 项目运行时,提示找不到 org.springframework.web.servlet.DispatcherServlet今天在运行SSM项目的时候,死活报一个错误: HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.Dispatcherservlet ...

2018-05-09 17:19:03 10704 6

原创 win10 不存在hosts文件

win10 不存在hosts文件昨天喜提自配电脑,安装win10 系统,今天在开发时,发现找不到hosts文件。处理方法: 在cmd中运行如下命令: for /f %P in (‘dir %windir%\WinSxS\hosts /b /s’) do copy %P %windir%\System32\drivers\etc &amp; echo %P &amp; Notepad %...

2018-05-07 10:57:51 9645 1

原创 git 学习笔记

最近学习了一下git,感谢廖雪峰老师的blog,提供了一整个系列的git教程,本文完全是建立在廖雪峰老师的git教程上面的。只是简单的一些git命令整合,而且写的很乱,完全就是一个随手记的笔记。廖老师老师博客原址Git 操作git init把当前目录变成Git可以管理的目录git add告诉Git,把文件添加到仓库例子: git add readme.txt/ git add .git co

2017-01-19 23:04:00 258

原创 Spring学习第十二天:FactoryBean配置bean

Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean. 工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象 为什么我们有了全类名配置,工厂方法配置,为什么还要有factorybean? 因为我们有些时候配置bean的时候,需要用到IOC容器中其

2016-11-29 23:44:51 372

原创 Spring学习第十一天:通过工厂方式配置Bean

工厂方式配置bean可分为两种:静态工厂方法和实例工厂方法静态工厂方法 调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称. 最后,

2016-11-28 22:49:51 269

原创 Spring 学习第十天: IOC容器中Bean的生命周期

Spring 容器中bean的生命周期 Spring IOC 容器可以管理 Bean 的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务. Spring IOC 容器对 Bean 的生命周期进行管理的过程: - 通过构造器或工厂方法创建 Bean 实例 - 为 Bean 的属性设置值和对其他 Bean 的引用 - 调用 Bean 的初始化方法 - Bean 可

2016-10-03 00:03:03 371

原创 Node.JS 环境搭建

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。下载地址:https://nodejs.org/en/下载完成之后双击安装我的本地安装目录为 D:\nodejs安装完成之后,使用cmd输入 node -v 。如果输出版本号,说明安装成功。下载编译工具sublime,下载地址:htt

2016-09-21 23:48:25 324

空空如也

空空如也

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

TA关注的人

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