随笔分类 -  java

javase javaee
摘要:问题引入,在Netty网络通信中常常遇见在接收端接受消息的时候会出现三中类型的输出: 读到一个完整的客户端输入的ByteBuf 读到多个客户端发过来的ByteBuf 读到一个客户端不完整的ByteBuf 1.1 问题 出现以上三个问题的原因是我们没有在应用层对传输层的TCP包进行包的拆分与分发。 让 阅读全文
posted @ 2021-12-02 19:31 西伯利亚爱学习的狼 阅读(215) 评论(0) 推荐(0)
摘要:多线程Reactor模式旨在分配多个reactor每一个reactor独立拥有一个selector,在网络通信中大体设计为负责连接的主Reactor,其中在主Reactor的run函数中若selector检测到了连接事件的发生则dispatch该事件。 让负责管理连接的Handler处理连接,其中在 阅读全文
posted @ 2021-12-02 12:00 西伯利亚爱学习的狼 阅读(429) 评论(0) 推荐(0)
摘要:设计模式之间的关系: 设计模式总概况: 一、设计原则 1、单一职责原则 一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影 阅读全文
posted @ 2021-10-03 15:51 西伯利亚爱学习的狼 阅读(94) 评论(0) 推荐(0)
摘要:##简介 AQS是Java并发包中很重要的一个抽象类,我们所使用的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。 ##1.1 实现原理 AQS中维护了一个state变量这个表示共享的资源,以及一个C 阅读全文
posted @ 2021-04-02 17:51 西伯利亚爱学习的狼 阅读(353) 评论(0) 推荐(0)
摘要:这个类是在JDK7中新增的随机数生成器,它弥补了Random类在多线程下的缺陷。 Radndom类的局限性 在JDK7之前包括现在java.util.Random都是使用比较广泛的随机数生成工具。为什么说它在多线程中有缺陷,看下面一个例子: public class RandomTest { pub 阅读全文
posted @ 2021-03-01 12:23 西伯利亚爱学习的狼 阅读(88) 评论(0) 推荐(0)
摘要:前言 多线程访问同一个共享变量的时候也别容易出现并发问题,特别是在多线程需要对一个共享变量进行写入的时候。为了保证线程的安全,一般使用者在访问共享变量的时候需要进行适当的同步。如下图所示 同步的措施一般是加锁,但是加锁显然加重了使用者的负担。那么有没有一种方式可以做到,当创建一个线程过后,每个线程对 阅读全文
posted @ 2021-03-01 11:20 西伯利亚爱学习的狼 阅读(105) 评论(0) 推荐(0)
摘要:首先我们得先了解java的对象结构 可以看到分别由三个部分组成对象头,实例数据,以及填充位 查看JDK1.8 String源码可以看到一个String对象由以下组成: @Stable private final byte[] value; /** Cache the hash code for th 阅读全文
posted @ 2021-02-27 13:16 西伯利亚爱学习的狼 阅读(2475) 评论(0) 推荐(0)
摘要:前因:今天一个朋友叫我帮忙看代码如下: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-g 阅读全文
posted @ 2021-01-20 15:52 西伯利亚爱学习的狼 阅读(1510) 评论(3) 推荐(0)
摘要:##1.1 类加载器 ###1.1.1 类加载器 判断类是否“相等” 任意一个类,都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都有一个独立的类名称空间。 因此,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个 阅读全文
posted @ 2021-01-14 17:51 西伯利亚爱学习的狼 阅读(67) 评论(0) 推荐(0)
摘要:HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 ##1.1 新生代垃圾收集器 ###1.1.1 Serial 垃圾收集器(单线程) 只开启一条 GC 线程进行垃圾回收,并 阅读全文
posted @ 2021-01-14 17:46 西伯利亚爱学习的狼 阅读(94) 评论(0) 推荐(0)
摘要:##1.1 GC ###1.1.1 对象存活判断 引用计数法: 经典的引用计数算法,每个对象添加到引用计数器,每被引用一次,计数器+1,失去引用,计数器-1,当计数器在一段时间内为0时,即认为该对象可以被回收了。但是这个算法有个明显的缺陷:当两个对象相互引用,但是二者都已经没有作用时,理应把它们都回 阅读全文
posted @ 2020-09-18 20:08 西伯利亚爱学习的狼 阅读(124) 评论(0) 推荐(0)
摘要:void add(int index, E element); /** * Removes the element at the specified position in this list (optional * operation). Shifts any subsequent element 阅读全文
posted @ 2020-09-07 10:35 西伯利亚爱学习的狼 阅读(127) 评论(0) 推荐(0)
摘要:##1.1 JVM系统架构图 JVM是什么? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新 阅读全文
posted @ 2020-09-06 09:58 西伯利亚爱学习的狼 阅读(165) 评论(0) 推荐(0)
摘要:##1.1 读写问题 ReadWriteLockUnsafeDemo: public class ReadWriteLockUnsafeDemo { // TODO: 2020/7/25 模拟多线程对公共资源类的读和写操作,没有加锁,不安全 static class Cache { private 阅读全文
posted @ 2020-08-20 19:56 西伯利亚爱学习的狼 阅读(136) 评论(0) 推荐(0)
摘要:##1.1 线程通信 ###1.1.1 CountDownLatch /** * @Description: *让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。 * <p> * CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。 * 其它线程调用 阅读全文
posted @ 2020-08-20 19:35 西伯利亚爱学习的狼 阅读(123) 评论(0) 推荐(0)
摘要:##1.1 集合安全问题 ###1.1.1 ListNotSafe 首先看一个例子: public class ListNotSafeDemo { //ArrayList线程不安全 public static void main(String[] args) throws Exception { L 阅读全文
posted @ 2020-08-20 19:25 西伯利亚爱学习的狼 阅读(118) 评论(0) 推荐(0)
摘要:##1.1 JUC是什么? JUC 全称叫做:java.util.concurrent。是在并发编程中使用的工具类。 ###1.1.1 进程与线程 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基 阅读全文
posted @ 2020-08-20 17:36 西伯利亚爱学习的狼 阅读(180) 评论(0) 推荐(0)
摘要:这个问题是之前考研复试老师问的一个问题,当时答得还不错。今天刷题后记录一下。 贪心算法: 基本思想:贪心算法并不从整体最优上加以考虑,它所做的选择只是在某种意义上的局部最优解。 基本要素:最优子结构性质和贪心选择性质。 动态规划: 基本思想:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些 阅读全文
posted @ 2020-08-10 11:59 西伯利亚爱学习的狼 阅读(1711) 评论(0) 推荐(0)
摘要:首先如果A上只有一个盘,直接将A中最后一个放到C上, 否则N>1的时候,借助C进行递归将A上N-1个盘放到B上,最后再将A上最后一个放在C上 这时候显然A盘上面没有盘子了,只需要将B上的N-1个盘子借助A放在C上 分治思想:将原问题分解为和原问题结构相同的若干个子问题。 public void ha 阅读全文
posted @ 2020-08-10 11:54 西伯利亚爱学习的狼 阅读(109) 评论(0) 推荐(0)
摘要:##前言 HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。Concurre 阅读全文
posted @ 2020-08-04 13:32 西伯利亚爱学习的狼 阅读(217) 评论(0) 推荐(0)