随笔分类 -  java学习

 
Java 中的 Fail-Fast 与 Fail-Safe
摘要:一:快速失败(fail—fast)(使用原有对象)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCoun 阅读全文
posted @ 2022-04-28 15:41 little飞 阅读(164) 评论(0) 推荐(0) 编辑
Java动态代理Cglib代理
摘要:JDK 动态代理有一个最致命的问题是其只能代理实现了接口的类。 为了解决这个问题,我们可以用 CGLIB 动态代理机制来避免。 CGLIB(Code Generation Library)是一个基于ASM的字节码生成库,它允许我们在运行时对字节码进行修改和动态生成。CGLIB 通过继承方式实现代理。 阅读全文
posted @ 2022-04-24 18:38 little飞 阅读(311) 评论(0) 推荐(0) 编辑
Quartz框架使用(任务调度)
摘要:Quartz框架三大核心: 1:scheduler 代表一个Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,两者在Scheduler中拥有各自的组及名称,组及名称是Scheduler查找定位容器中某一对象的依据,Trigger的组及名称必须唯一,JobD 阅读全文
posted @ 2021-11-15 21:34 little飞 阅读(4336) 评论(0) 推荐(0) 编辑
Java 堆外内存回收原理
摘要:堆外内存简介DirectByteBuffer 这个类是 JDK 提供使用堆外内存的一种途径,当然常见的业务开发一般不会接触到,即使涉及到也可能是框架(如 Netty、RPC 等)使用的,对框架使用者来说也是透明的。 堆外内存优势堆外内存优势在 IO 操作上,对于网络 IO,使用 Socket 发送数 阅读全文
posted @ 2021-10-19 23:03 little飞 阅读(1052) 评论(0) 推荐(0) 编辑
JVM之缓存行对齐
摘要:缓存行 缓存是由多个缓存行组成的,以缓存行为基本单位,一个缓存行的大小一般为64字节。 伪共享 因为缓存行存在,当不同的线程在操作两份不同的数据时,如果这两份数据刚好位于同一个缓存行中,那么彼此之间就会互相影响。 假设A线程操作数据C,B线程操作数据D,C、D数据位于同一缓存行,那么当C数据发生修改 阅读全文
posted @ 2021-01-10 19:54 little飞 阅读(814) 评论(0) 推荐(1) 编辑
多线程下ThreadLocalRandom用法
摘要:前言 学习 ThreadLocalRandom 的时候遇到一些疑惑,为何使用它在多线程下会产生相同的随机数? 阅读源码后终于稍微了解了一些它的运行机制,总结出它在多线程下正确的用法,特此记录。 ThreadLocalRandom的用处 在多线程下,使用 java.util.Random 产生的实例来 阅读全文
posted @ 2020-03-06 21:40 little飞 阅读(7056) 评论(0) 推荐(2) 编辑
Java线程池的底层实现与使用
摘要:正文 前言 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类、实现Runnable接口、使用Callable和Future),但是这样也有一点问题,就是如果并发的线程数量很多,创建线程、销毁线程都是需要消耗 阅读全文
posted @ 2019-05-12 12:02 little飞 阅读(1591) 评论(0) 推荐(0) 编辑
关于内存泄露的几点理解
摘要:内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间。 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但 阅读全文
posted @ 2019-04-16 22:47 little飞 阅读(1716) 评论(0) 推荐(0) 编辑
Java中的公平锁和非公平锁实现详解
摘要:前言 Java语言中有许多原生线程安全的数据结构,比如ArrayBlockingQueue、CopyOnWriteArrayList、LinkedBlockingQueue,它们线程安全的实现方式并非通过synchronized关键字,而是通过java.util.concurrent.locks.R 阅读全文
posted @ 2019-02-12 14:45 little飞 阅读(23548) 评论(0) 推荐(2) 编辑
帧同步与状态同步的区别
摘要:实时游戏发展迅猛,同步技术也逐渐成为解决方案的核心之一。 本文简单讨论了帧同步和状态同步。帧同步 什么是帧同步:帧同步常被RTS(即时战略)游戏常采用。在游戏中同步的是玩家的操作指令,操作指令包含当前的帧索引。一般的流程是客户端上传操作到服务器, 服务器收到后并不计算游戏行为, 而是转发到所有客户端 阅读全文
posted @ 2018-11-28 20:55 little飞 阅读(10578) 评论(1) 推荐(2) 编辑
java多线程中的调度策略
摘要:两种线程的调度模式: 抢占式调度: 抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。 协同式调度: 协 阅读全文
posted @ 2018-10-14 13:41 little飞 阅读(3192) 评论(0) 推荐(2) 编辑
关于redis实现分布式锁
摘要:前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 阅读全文
posted @ 2018-09-26 20:53 little飞 阅读(274) 评论(0) 推荐(0) 编辑
Java注解入门
摘要:注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnings) 运行时注解:能在程序运行时起作用(如spring的依赖注入) 按来源分: 来自JDK的注解 第三方的 阅读全文
posted @ 2018-08-12 18:37 little飞 阅读(465) 评论(0) 推荐(0) 编辑
Java中字符串内存位置浅析
摘要:String内存位置说明 显式的String常量 第一句代码执行后就在常量池中创建了一个值为holten的String对象; 第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。 此时该字符串的引用在虚拟机栈里面。 String对象 Class被加载时就在常量池中创建了一 阅读全文
posted @ 2018-07-24 23:11 little飞 阅读(1166) 评论(0) 推荐(0) 编辑
SVN创建分支/合并分支/切换分支
摘要:在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录。这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方。 branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branche 阅读全文
posted @ 2018-06-24 17:57 little飞 阅读(23333) 评论(0) 推荐(0) 编辑
Java 内存模型简单剖析
摘要:Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。 主内存与工作内存 处理器上的寄存器的读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共 阅读全文
posted @ 2018-05-19 18:19 little飞 阅读(304) 评论(0) 推荐(0) 编辑
Master-Worker设计模式介绍
摘要:Master-Worker模式是常用的并行设计模式。核心思想是,系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理子任务。任务处理过程中,Master还负责监督任务进展和Worker的健康状态;Master将接收Client提交的任务,并将任务的进展 阅读全文
posted @ 2018-04-21 17:03 little飞 阅读(3417) 评论(3) 推荐(0) 编辑
Future模式介绍及入门使用
摘要:FutureClient代码实现: FutureData代码及实现: RealData代码及实现: Data接口代码: 测试类代码: 阅读全文
posted @ 2018-04-21 16:43 little飞 阅读(1882) 评论(0) 推荐(0) 编辑
关于Netty的入门使用
摘要:Netty介绍: Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开 阅读全文
posted @ 2018-03-31 17:40 little飞 阅读(10285) 评论(1) 推荐(2) 编辑
String s=new String("abc")创建了几个对象?
摘要:String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 答案应该是1个或者2个。 1个的情况:如果字符串池中已经存在了"abc"这个对象,那么直接在创建一个对象放入堆中,返回str引用。 2个的情况:如果字符串 阅读全文
posted @ 2018-01-09 09:13 little飞 阅读(5500) 评论(0) 推荐(0) 编辑

 

点击右上角即可分享
微信分享提示