- 博客(7)
- 收藏
- 关注
原创 nio的零拷贝
零拷贝传统 IO 问题传统的 IO 将一个文件通过 socket 写出File f = new File("helloword/data.txt");RandomAccessFile file = new RandomAccessFile(file, "r");byte[] buf = new byte[(int)f.length()];file.read(buf);Socket socket = ...;socket.getOutputStream().write(buf);内部工
2022-02-21 20:10:56
259
原创 JVM的内存结构、垃圾回收算法和垃圾收集器的详解
运行时数据区(Run-Time Data Areas)本地方法区:方法区和堆一样,也是被所有线程共享的内存区域。它存储已被虚拟机加载的类信息,常量,静态变量,即时编译后的代码数据。虚拟机栈(JVM Stacks):每个Java虚拟机线程都有一个私有Java虚拟机栈,与线程同时创建。每个方法执行的同时都会创建一个栈,用于存储局部变量表,操作数栈,动态链接,方法出口等信息,每一个方法从调用到直...
2019-07-11 08:46:59
256
原创 阻塞队列的理解和使用
队列和阻塞队列阻塞队列,顾名思义首先他是一个队列,而一个阻塞队列在数据结构中所起的作用如下图:当阻塞队列为空时,从队列中获取元素的操作将会被阻塞。当阻塞队列为满时,从队列里添加元素的操作将会被阻塞。为什么用? 有什么好处?在多线程领域:所谓阻塞,在某些情况下会挂起线程(阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。为什么需要阻塞队列好处是我们不需要关心什么时候需要阻塞线程,什么...
2019-06-26 08:36:06
618
原创 公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁
公平锁和非公平锁是什么?有什么区别?并发包中ReentrantLock的创建可以指定构造函数的布尔类型来得到公平锁和非公平锁,默认是非公平锁。 ReentrantLock lock = new ReentrantLock(true);两者的区别公平锁:就是很公平,在并发环境中,每个线程在获取锁时会查看此锁维护的等待队列,如果为空,或者当前线程时等待队列的第一个,就占有锁。否则就会...
2019-06-22 18:49:05
923
1
原创 Apollo管理多环境下的配置和踩坑实践
目录1、源码构建Apollo配置中心2、Apollo管理多环境的配置3、Apollo从零到一过程中的踩坑记录1、Apollo服务端的搭建通过上一节我们基本实现了apollo配置中心,体验其便捷的同时,思考如果部署生产的话会有什么问题? 如何解决?为什么要用源码构建?Apollo默认自带了Eureka作为内部的注册中心实现,端口为8080,但是一般公司自己已经有了一套Eureka,...
2019-04-19 17:41:38
12487
原创 从零到一,搭建apollo配置中心和apollo客户端(附源码)
目录1、Apollo服务端的搭建2、创建一个配置的应用并发布配置3、客户端拉取apollo中的配置1、Apollo服务端的搭建如上图为Apollo服务端搭建完成的界面Apollo对环境的要求Apollo服务端:jdk 1.8+Apollo客户端:jdk 1.7+Mysql 5.6.5+源码下载和基础数据的导入在上述环境准备好后,需要到官方下载源码构建,下载地址为:ht...
2019-04-16 19:14:14
3155
4
原创 相较嫡系的SpringCloudConfig,为什么选择使用Apollo作为微服务的配置中心?
目录1、SpringCloudConfig和Apollo的对比2、apollo的介绍3、apollo架构设计原理4、客户端通过apollo拉取配置的原理1、SpringCloudConfig和Apollo的对比如上图对比SpringCloudConfig优势是对SpringBoot原生支持,且是SpringCloud组件。缺点是无界面管理,且需要git,SpringCloudB...
2019-04-12 08:42:27
6199
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人