![](https://img-blog.csdnimg.cn/20190927235535834.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
----Java
文章平均质量分 85
syrdbt
这个作者很懒,什么都没留下…
展开
-
Netty 入门实例
Netty 是一款用于高效开发网络应用的 NIO 网络框架,它大大简化了网络应用的开发过程。Netty 相比 JDK NIO 的优势:● 易用性:Netty 在 NIO 基础上进行了更高层次的封装,屏蔽了 NIO 的复杂性,大大降低了开发者的上手难度;● 稳定性:Netty 修复和完善了 JDK NIO 较多已知问题,例:select 空转导致 CPU 消耗 100%,TCP 断线重连,keep-alive 检测等问题;原创 2024-06-22 23:02:39 · 715 阅读 · 0 评论 -
Netty ByteBuf 使用详解
ByteBuf 对字节进行操作readerIndex: 读指针,字节数组,读到哪了writerIndex: 写指针,字节数组,写到哪了maxCapacity:最大容量,字节数组最大容量markedReaderIndex:标记读指针,方法可以把修改为,回退重新读某段数据markedWriterIndex: 标记写指针,方法可以把修改为,回退重新写数据。原创 2024-06-22 18:56:57 · 950 阅读 · 0 评论 -
Java Socket 网络编程实例(阻塞IO、非阻塞IO、多路复用Selector、AIO)
之前还有一篇文章:套接字进行网络连接流程, 如下图:socket()bind()listen()accept()read()write()close()close()socket()connect()write()read()close()流程图如下, 具体代码示例可以看下面的。原创 2024-06-02 17:14:06 · 580 阅读 · 0 评论 -
Java8 ConcurrentHashMap 存储、扩容源码阅读
ConcurrentHashMap 是线程安全且高效的 HashMap。原创 2024-05-12 22:58:14 · 824 阅读 · 0 评论 -
ReentrantLock源码阅读
lock锁, 基于AQS, 实现公平锁、非公平锁AQS可以阅读我这篇文章: 点击传送实现了Lock接口:2. 源码阅读2.1 属性2.2 构造函数构造函数:2.3 Sync队列同步器2.3.1 非公平尝试获取同步状态 nonfairTryAcquirestate为0● 直接CAS 尝试获取同步状态, compareAndSetState(0, acquires)● 成功设置当前线程占有锁 setExclusiveOwnerThread(current);当前线程已经获取锁:● sta原创 2024-04-14 20:35:20 · 390 阅读 · 0 评论 -
ThreadLocal核心源码阅读
ThreadLocal为每个使用该变量的线程提供独立的变量副本,因此每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。原创 2024-04-06 23:28:19 · 186 阅读 · 0 评论 -
AbstractQueuedSynchronizer 独占式源码阅读
*** 同步队列的头,懒惰地初始化。只能通过方法setHead修改* 注:如果Head存在,则保证其waitStatus不会已取消。*//*** 尾节点,enq 加入*//*** 同步状态*//*** 获取状态*//*** 设置状态*//*** CAS 设置状态*//***/原创 2024-03-23 17:50:29 · 819 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor源码阅读
线程池先判断核心线程池是否已经已满,即工作线程数是否大于核心线程数,如果不是则创建核心工作线程执行该任务,否则下一步判断工作队列是否已经满了,如果队列没有满,则将该任务入队,否则进入下一步判断线程池中的线程是否已经满了,即是否大于最大线程数,如果不是则创建工作线程执行该任务,否则拒绝这个任务。原创 2024-03-10 18:54:27 · 880 阅读 · 0 评论 -
ArrayBlockingQueue 数组阻塞队列 源码阅读
数组阻塞队列。原创 2024-03-03 16:42:28 · 386 阅读 · 1 评论 -
Redisson Java整合入门实例
1. 概述原创 2020-11-22 21:08:41 · 1741 阅读 · 4 评论 -
Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立子文件夹
代码如下所示,将 /Users/shiheng/desktop/测试文件 目录下的图片(包含子文件夹目录下的图片)移动到了 /Users/shiheng/desktop/测试结果 目录下,默认不分批次建立文件夹,重名文件只保存一个:package com.syrdbt.java.study;import java.io.File;import java.util.*;/** * @author syrdbt * @date 2020-10-09 */public class FileUt原创 2020-10-18 23:26:32 · 436 阅读 · 0 评论 -
Java String字符串类的不可变性
https://www.jianshu.com/p/cd72099051f9转载 2019-10-18 19:42:21 · 491 阅读 · 0 评论 -
Java 之 fail-fast
原文地址:https://juejin.im/post/5cb683d6518825186d65402c1. 什么是fail-fast首先我们看下维基百科中关于fail-fast的解释:In systems design, a fail-fast system is one which immediately reports at its interface any condition...转载 2019-10-18 20:02:33 · 172 阅读 · 0 评论 -
Java 面向对象的三个特性和五个基本原则
面向对象(OOP)的三个特性: 封装性(Encapsulation),继承性和多态性。面向对象(OOP)的五个原则:单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP)。1.面向对象的三个特性面向对象的三个特性: 封装性(Encapsulation),继承性和多态性。1.1封装性封装性:将数据和对数据...原创 2019-03-23 11:08:47 · 7813 阅读 · 0 评论 -
Java 中的继承
继承:可以基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域,在此基础上,还可以添加一些新的方法和域。1.继承性继承性:把多种有着共同特性的多的类事物抽象成一个类,这个类就是多个类的父类。父类的意义在于可以抽取多个类的共性,代码复用,减少代码量。例:三个类,Pupil类(小学生),MiddleSchoolStudent类(中学生类),CollegeSt...原创 2019-06-02 20:21:49 · 265 阅读 · 0 评论 -
Java 中的 BIO、NIO和AIO
原文地址:https://qindongliang.iteye.com/blog/2018539在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下:序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是...转载 2019-06-17 14:51:38 · 201 阅读 · 0 评论 -
Java 中 Holder 方式 和 枚举方式 实现单例模式
Holder 方式 和 枚举方式可以线程安全的实现单例模式。Holder 方式借助于类加载的初始化阶段<clinit>()方法是同步方法。枚举方式是因为枚举类型不能继承且只能被实例化一次。1.Holder 方式实现单例模式类加载的初始化阶段<clinit>()方法是同步方法,在类中设置一个静态类,将唯一实例放在静态类中,第一次访问实例...原创 2019-06-26 18:49:10 · 3830 阅读 · 0 评论 -
Java 重写equals就必须重写hashCode的原理分析
原文地址:https://www.cnblogs.com/wang-meng/p/7501378.html因为最近在整理Java集合的源码, 所以今天再来谈谈这个古老的话题,因为后面讲HashMap会用到这个知识点, 所以重新梳理下。如果不被重写(原生Object)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。 ...转载 2019-06-29 16:12:46 · 394 阅读 · 0 评论 -
Java 自定义注解
1.元注解元注解是 Java提供的一些基本注解,使用这些元注解区可疑创建新的注解;可以先大致看一下元注解,然后去看后面自定义注解的例子。元注解有 @Retention, @Documented, @Target, @Inherited,@Repeatable五种。1.1@Retention@Retention可以定义注解的生命周期,注解的存活时间有如下三种:Reten...原创 2019-07-26 19:17:03 · 312 阅读 · 0 评论 -
Java 应用性能调优实践
原文出处:点击传送文章目录概述性能诊断工具OS 诊断CPU 诊断MemoryI/OJava 应用诊断工具应用代码诊断jstackJProfilerGC 诊断jstatjmapMAT性能优化实践JVM 调优:GC 之痛应用层调优:嗅到代码的坏味道数据库层调优:死锁噩梦总结与建议概述Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据...转载 2019-10-06 21:37:52 · 189 阅读 · 0 评论 -
Java 中的类与对象
类是构造对象的模板,由类构造(construct) 对象的过程称为创建类的实例 (instance)。对象中的数据称为实例域(instance field), 操纵数据的过程称为方法(method)。对于每个特定的类实例(对象)都有一组特定的实例域值,这些值的集合就是这个对象的当前状态( state )。1. 封装性封装性:将数据和对数据的操作封装起来,对象状态(属性)由这...原创 2019-06-02 18:19:58 · 3560 阅读 · 0 评论 -
Java中的抽象类
抽象类必须使用abstract关键声明,例如抽象类MyAbstractStudy:public abstract class MyAbstractStudy {}不能使用抽象类创建对象。 抽象类中可以没有抽象方法。 抽象方法必须为public或者protected,缺省情况下为public。 抽象类的子类必须实现父类的抽象方法,如果没有则需要声明子类也为abstract类。扩展,接口...原创 2019-06-12 21:40:00 · 964 阅读 · 0 评论 -
Java 字节流与字符流的区别详解
原文地址:https://www.cnblogs.com/DONGb/p/7844123.html1. 流的概念在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。2. 字节流与字符流在java.io包中操作文件内...转载 2019-05-02 21:25:50 · 16997 阅读 · 15 评论 -
Java的Set集合(HashSet、TreeSet)学习
1.概述Set 接口是Collection和IterAble的一个子接口,List集合中的元素是没有顺序的,并且元素不可以重复。实现List接口 的容器类有HashSet <E>类,TreeSet <E> 类。1.1HashSetHashSet类,不允许出现重复元素;允许包含值为null的元素,但最多只能有一个;不保证集合中元素的顺序,...原创 2019-04-13 20:09:51 · 380 阅读 · 0 评论 -
Java 的深拷贝和浅拷贝学习
1.为什么需要拷贝举一个例子,一个Student类,初始化创建一个student01实例,如果想让初始化创建student02实例和student01实例相同,你可能会这样做:Student student02 = student01,直接赋值。这样做是有问题的,student01这个对象实例放在Java堆中,如果你直接赋值,Java堆中并没有创建一个新的实例对象student02,而是让s...原创 2019-04-13 18:21:18 · 175 阅读 · 0 评论 -
Java 的 List 集合(ArrayList、LinkedList、Vector )学习
1. 概述List接口是Collection和IterAble的一个子接口,List集合中的元素是有顺序的,并且元素可以重复。实现的List接口 的容器类有ArrayList类,LinkedList类,Vector类。ArrayList类,实现一个可变大小的数组 ,可以像链表一样被访问,他是以数组的方式实现的,允许快速随机存取,也就是说ArrayLi...原创 2019-03-28 11:38:02 · 720 阅读 · 0 评论 -
Java 中 String、StringBuilder 和 StringBuffer 的区别
1. String和 (StringBuilder、 StringBuffer)的区别String是内容不可变的字符串,StringBuilder 和 StringBuffer是内容可变的 ,因为String底层是通过 “final字符数组” 存储数据,用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。而StringBuilder 和 StringBuff...原创 2019-03-22 22:39:45 · 119 阅读 · 0 评论 -
Java中的 “==” 和 equals
1.“ ==”的使用“ ==”在比较基本“基本数据类型”(byte,short,int,long,float,double,boolean,char),比较的是基本数据类型的值;比较“引用类型”(类(class)、接口(interface)、数组(array)),比较的是引用类型在内存中的存放地址。下面用一些例子进行验证:1.1 基本类型比较样例1 == 1 ,...原创 2019-03-22 20:32:59 · 284 阅读 · 0 评论 -
Java 实现去除中文文本的停用词
目录1. 整体思路2. 中文文本分词环境配置3. 下载停用词表4.去除停用词工具类5. 工具类测试5.1 测试代码5.2 测试结果1. 整体思路第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词。第二步:使用停用词表,去除分好的词中的停用词。2. 中文文本分词环境配置使用的HanLP-汉语言处理包进行...原创 2019-03-18 17:10:54 · 4151 阅读 · 0 评论 -
生成“唯一辨识的32位字符串”工具类(UUID、Java)
这里通过使用UUID来生成 唯一辨识的32位字符串。UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不...原创 2019-02-17 18:03:43 · 3006 阅读 · 0 评论 -
Java反射
网上好些都是这篇文章的转载,但是就找不到原文,如果您知道,请告知。反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的...转载 2019-05-03 21:28:16 · 176 阅读 · 0 评论 -
Java 中的 sleep 方法
Sleep可以让当前线程进行休眠,有如下两个方法:public static void sleep(long millis) throws InterruptedException ,mills 毫秒 public static void sleep(long millis, int nanos) throws InterruptedException ,millis 毫秒, nan...原创 2019-05-11 11:03:35 · 41082 阅读 · 1 评论 -
Java工程师成神之路(2019正式版)
原文地址:https://hollis.blog.csdn.net/article/details/87686522 原作者:Hollis在csdn主要版本 更新时间 备注v1.0 2015-08-01 首次发布v1.1 2018-03-12 增加新技术知识、完善知识体系v2.0 2019-02-19 结构调整,更适合从入门到精通;...转载 2019-05-20 23:40:19 · 492 阅读 · 0 评论 -
Java中的static关键字
原文地址:https://www.cnblogs.com/dolphin0520/p/10651845.html,原作者:Matrix海子 再议Java中的static关键字 java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:《Java中的static关键字解析》。...转载 2019-05-14 21:33:31 · 514 阅读 · 0 评论 -
Java 的 final 关键字
final关键字可以用于修饰类、方法、变量。修饰类 , 类不可以被继承。 修饰方法,方法不可以被重写。 修饰变量:变量为基础数据类型,这个变量一旦被初始化之后就不能在改变。 变量为引用数据类型,这个引用的地址不可以被修改,引用指向的对象的内容还可以修改。1.修饰类final 修饰类 , 类不可以被继承,测试代码如下所示:MyFinalStudy...原创 2019-05-09 23:15:49 · 295 阅读 · 0 评论 -
Java 接口学习总结
1.概述接口( interface) 技术, 主要用来描述类具有什么功能,而并不给出每个功能的具体实现。接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。接口的特点:(1)一个类可以实现( implement) 一个或多个接口。Java中每个类只能扩展于一个类。(2)接口不是类,尤其不能使用 new 运算符实例化一个接口,却能声明接口的变量。(...原创 2019-05-01 14:15:12 · 2120 阅读 · 0 评论 -
Java 枚举(enum)的7种常见用法
原文地址:http://blog.lichengwu.cn/java/2011/09/26/the-usage-of-enum-in-java/本文在原文的基础上进行了测试,添加了如何调用的代码(main方法)。目录用法一:常量用法二:switch用法三:向枚举中添加新方法用法四:覆盖枚举的方法用法五:实现接口用法六:使用接口组织枚举用法七:关于枚举集合的使用...转载 2019-04-25 16:43:36 · 220 阅读 · 0 评论 -
Java创建多线程的两种方式:继承Thread类和实现Runnable接口
继承Thread类:继承Thread类,再重写Thread类的Run方法,然后调用start()方法启动线程,启动线程后执行的是run方法。注意:多次启动线程(多次调用start()方法)是不合法的。实现Runnable接口:实现Runnable接口,再重写run方法,然后将这个实现类当做参数传给Thread类,例如:Thread dog = new Thread(runn,"小狗"),创建...原创 2019-04-20 11:44:10 · 13935 阅读 · 0 评论 -
Java 泛型详解
原文地址:https://blog.csdn.net/s10461/article/details/53941091目录1. 概述2. 一个栗子3. 特性:泛型只在编译阶段有效4. 泛型的使用4.3 泛型类4.4 泛型接口4.5 泛型通配符4.6 泛型方法4.6.1 泛型方法的基本用法4.6.2 类中的泛型方法4.6.3 泛型方法与可变参数4.6...转载 2019-04-28 21:11:42 · 145 阅读 · 0 评论 -
Java 中的8种基本数据类型,数据范围,数据所需字节数
1.Java 基本数据类型Java 基本数据类型包括如下类型,整型:char、byte、short、int、long;浮点型:float、double; 布尔型:boolean;具体描述如下表所示(一个字节8位)。 整型:char、bit、short、int、long 类型名 描述 ...原创 2019-01-23 17:25:08 · 484 阅读 · 0 评论