自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 JVM内存模型介绍

JVM内存模型复习JDK8之前的内存模型:在HotSpot JVM中,永久代用于存放类与方法的元数据以及常量池,例如 Class 与 Method。每当一个类被加载的时候都会被放入永久代。永久代是有大小限制的,因此如果加载的类太多,很有可能导致永久代内存溢出,即 java.lang.OutOfMemoryError,为此我们不得不对虚拟机做调优。而且一方面为了HotSpot JVM 与 JRockit VM 的融合,因为 JRockit 没有永久代。因此,JDK8之后移除了永久代。方法区移

2020-12-30 17:17:45 184

原创 CPU指令和运算

CPU指令和运算计算机指令早期的计算机程序要使用打孔卡,而不能像我们现在一样,用 C 或者 Python这样的高级语言,这是为什么呢?因为计算机或者说 CPU 本身,并没有能力理解这些高级语言。即使在 2019 年的今天,我们使用的现代个人计算机,仍然只能处理所谓的“机器码”,也就是一连串的“0”和“1”这样的数字。而计算机是怎么处理0与1的呢?软硬件接口中CPU担当的角色从硬件的角度来看,CPU 就是一个超大规模集成电路,通过电路实现了加法、乘法乃至各种各样的处理逻辑。如果我们从软件工程师

2020-12-30 13:27:16 1812

原创 红黑树概念与代码展示

红黑树定义一棵红黑树需要满足这样几个要求:根节点是黑色的;每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存储数据;任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的;每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点;平衡调整在插入、删除节点的过程中,第三、第四点要求可能会被破坏,而“平衡调整”,实际上就是要把被破坏的第三、第四点恢复过来。红黑树通过节点的左旋和右旋完成平衡调整。插入操作的平衡调整红黑树规定,插入的节点必须是红色的

2020-12-29 13:04:52 135

原创 浅谈排序算法

浅谈排序算法首先介绍一个大佬的算法学习网站:小浩算法他的这个算法网站在Git星星之多,啧啧,顺便一提我还在他的分群里(笑)~前段时间按他的分类刷了下leetcode,整个人感觉升华了一般,啊,那个快感啧啧…以下贴出排序算法的java代码实现,并且介绍一下基本概念。插入排序:插入排序就好似整理扑克牌一般,每次的插入都一个个与元素比较,放入合适的位置。图取自算法导论左边遍历过排完序的数组就是一个循环不变式。private static int[] insert_sort_ASC(in

2020-12-29 13:03:01 438

原创 G1的基本概念(G1源码分析和调优读书笔记)

G1的基本概念分区分区(Heap Region, HR)或称堆分区,是G1堆和操作系统交互的最小管理单位。G1的分区类型大致可以分为四类:1.自由分区2.新生代分区3.大对象分区4.老生代分区其中新生代分区又可以分为Eden和Survivor;大对象分区又可以分为:大对象头分区和大对象连续分区。堆分区默认大小计算方式 ↓// 判断是否是设置过堆分区大小,如果有则使用;//没有,则根据初始内存和最大分配内存,获得平均值,并根据HR的个数得到分区的大小,和分区的下限比较,取两者的最大值

2020-10-23 14:31:01 1814

原创 简单介绍IO多路复用

IO多路复用 (简单介绍)那么,什么是IO呢?首先如果要介绍到关于IO,肯定要介绍操作系统内核↓关于内核(kernel)的介绍:  按下电源键后,bios第一个读到内存的程序就是内核(kernel)。在内存中属于kernel的那部分空间可以当做是内核空间(内核态),而内存内其他空间就是用户空间(用户态),用户无权直接访问内核态,这样做也是为了保护系统安全。如下图(右为用户态,kernel被装载在内存中),硬件的访问都需要内核来管理:    内核使用系统调用(system call)来调用硬件,

2020-10-07 13:44:09 612

原创 浅谈spring生命周期

Spring源码笔记Spring, 意为春天IOC:IOC,意为控制反转(Inversion of Control),可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。spring装载流程——IOC的实现:图片示例:[外链图片转存失败

2020-10-07 13:42:50 848

原创 线程和线程池简单学习笔记

线程和线程池线程:线程即资源调度的最小单位,在linux中即为轻量级进程LWP(light weight process)线程可分大致两种:用户级线程(ULT)由用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度、管理线程的函数控制线程,不需要用户态/内核态切换,线程阻塞进程(包括它的所有线程)内核级线程(KLT) 由系统内核管理线程,内核保存线程状态和上下文信息,线程阻塞不会引起进程阻塞,多线程在多处理器的系统上并行运行,线程的创建、管理、调度由内核管控,效率慢与用户级线程,快于进程。

2020-10-07 13:40:38 116

原创 简单构建Nginx服务器与Tomcat服务器并实现Nginx转发(Linux)

构建基本Nginx服务器1. 安装.编译nginx服务器先下载nginx源码包,然后安装pcre用来做正则匹配。(使用wget下载,如果下载的很慢可以使用ftp服务器传输工具或者共享文件夹来上传到虚拟机,例如File Zilla Client )之后解压nginx源码压缩包,进入目录。编译nginx (编译过程中如果缺失组件包可以用yum下载) 1. ./configure --prefix=/usr/local/nginx 2. make 3. make install之

2020-10-07 13:38:29 877 1

原创 详解synchronized (Jdk8版本 含偏向锁 轻量锁 重量锁)

synchronized关键字阐述什么是synchronized?讲到Sync,其实不可避免要讲述JMM模型。笔者简单的概述一下JMM。CPU缓存对于现代的计算机,因为处理器和存储设备相差速度过大,所以在两者之间会加一层高速缓存。将运算需要的数据复制到缓存中,让计算可以快速运行,运算结束后从缓存同步回内存,处理器都无需等待缓慢的内存读写了。但是这样的同时也引出了新的矛盾:缓存一致性在多处理器中,每个处理器都有自己的高速缓存,而他们又共享一块主内存,那么同步到主内存以谁的数据为准呢?这时每个处理器

2020-10-07 13:32:43 1874 2

原创 粗浅的学习Docker

Docker基本容器和镜像安装好久没更新了,前段时间在想要不要去icp备案网站,但是先等备案过的人告诉我一个月过公安备份会不会来催再去备案吧()。这两天在学习Docker,刚刚入门,在看一本叫做《第一本Docker书》的书,里面虽然案例有点老,不过还是不错的。切入正题安装Docker容器、镜像安装docker:yum -y upgradecurl -sSL https://get.docker.com/ | sh (官方)curl -sSL http://acs-public-mirror

2020-10-07 13:31:25 121

空空如也

空空如也

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

TA关注的人

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