Java基础
文章平均质量分 64
Java基础知识
肥牛火锅
你来人间一趟要看看天上的太阳
展开
-
服务注册中心的设计与实现
Java开发的简易服务注册中心以及相关RPC模块。未使用第三方框架,利于理解服务注册中心及RPC的底层原理。原创 2022-07-03 20:50:16 · 953 阅读 · 0 评论 -
IDEA Debug模式执行指定表达式修改参数
文章目录IDEA DebugDemoRun 结果Debug 结果方法IDEA Debug我们在Debug程序的时候,有时候需要修改中间参数,并且获取到值,同时在此过程中程序并不阻塞,避免超时。想法:不阻塞的修改中间参数并且获得修改后的结果。DemoRun 结果Debug 结果方法1、指定添加断点2、修改断点3、Debug模式运行即可...原创 2022-04-12 22:03:47 · 2081 阅读 · 2 评论 -
Java 反射获取泛型信息
Java 通过反射获取到泛型信息;同时实现一个泛型单例模式原创 2022-01-25 19:42:43 · 1360 阅读 · 2 评论 -
Java HashMap常见问题
文章目录1、HashMap中常见变量2、HashMap的hash函数3、HashMap底层结构4、put方法5、扩容6、JDK8对HashMap做了哪些改变1、HashMap中常见变量// 默认初始化容量// 设置容器大小要为2的整数幂// 这样数组长度-1刚好成为一个低位掩码,&的结果刚好可以用做数组下标访问static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// 最大容量static final i原创 2021-08-14 09:23:52 · 256 阅读 · 0 评论 -
Java NIO(一)
目录文章目录ChannelChannel的实现简单示例BufferScatterGatherSelector示例ChannelJAVA NIO的通道类似流:从通道中读取数据,也可以写数据到通道,但流的读写通常是单向的通道可以异步的读写通道中的数据总是要先读到一个Buffer,或从一个Buffer中写入Channel的实现FileChannel: 从文件中读写数据DatagramChannle:能通过UDP读写网络中的数据SocketChannel:能通过TC原创 2021-07-19 21:12:09 · 93 阅读 · 0 评论 -
并发笔记(三)AQS
目录文章目录AQS概述框架源码分析1、节点模式2、节点状态waitStatus3、独占模式accquire实现release实现4、共享模式acquireSharedreleaseSharedAQS概述谈到并发,就会说到Lock,从而谈到ReentrantLock;而ReentrantLock就是基于AQS实现的。AQS(AbstractQueuedSynchronizer),类如其名,抽象队列同步器,定义了一套多线程访问共享资源的同步器框架。常用的ReentrantLock、Semaphore、原创 2021-07-14 19:08:40 · 230 阅读 · 0 评论 -
并发笔记(二)Sleep和wait和join
目录文章目录sleep和wait的区别joinsleep和wait的区别1、sleep方法是Thread类的静态方法。wait方法是Object类的成员方法。调用会阻塞调用对象的wait方法的线程,将其放置到该对象的等待池中。2、sleep方法不释放锁。调用wait方法时,线程会放弃对象锁,进入等待此对象的等待锁定池。3、sleep方法可能会抛出异常,需要异常处理。wait方法不需要处理。4、sleep方法可以在任何地方使用。wait方法只能在同步代码块中使用。5、sleep方法通过超原创 2021-07-13 12:54:36 · 96 阅读 · 0 评论 -
并发笔记(一) volatile和CAS
目录文章目录volatile实现原理缓存一致性协议从lock角度看CAS存在的问题volatilevolatile是并发中常见的关键词之一。它提供两种性质,可见性和有序性。可见性:保证修改的值立即更新到主存;当有其他线程需要读取时跳过该线程缓存区,直接读取主存数据。有序性:禁止指令重排。实现原理在通常的指令前加上了lock指令。处理器使用三个相互依赖的机制来实现加锁的原子操作:1、保证原子操作2、总线加锁,使用LOCK#信号和LOCK指令前缀3、高速缓存相干性协议,确保对高速缓存中的原创 2021-07-10 21:02:32 · 157 阅读 · 0 评论 -
[JAVA基础] 6、JNA的使用教程和示例
文章目录前言1、JNA2、windows环境下构建dll2.1、新建项目2.2、实现函数2.3、修改平台2.4、生成dll3、Linux环境下构建so4、JAVA调用JNA4.1、注意前言相关环境:Windows10,VS2013,IDEA2020,JDK1.8x64本项目git地址JNI的相关示例demo:JNI的使用和示例1、JNAJNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。2、windows原创 2021-02-26 14:52:56 · 1970 阅读 · 0 评论 -
[JAVA基础] 5、JNI的使用教程和示例
文章目录JNI示例注意事项JNIJNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。示例在windows环境下使用vs2013构建dll动态库。在liunx环境下构建so动态库。java项目中使用System.load加载动态库。教程根据上述教程完成一个简单示例demo。示例git地址注意事项windows环境下构建dll1、在classes执行 javah -jni cn.weezoo.jnademo.原创 2021-02-26 12:25:27 · 2106 阅读 · 3 评论 -
[JAVA基础] 4、构造器的隐式调用
文章目录总结总结1、一个类没有自定义构造器时,会生成一个无参构造器(隐式的)。2、每个类都会在他的构造器前面调用父类的无参构造器(隐式的)。子类没有自定义构造器时,会隐式生成一个无参构造器,并在该构造器中调用父类的无参构造器。当父类没有无参构造器时,必须显式调用父类的有参构造器。3、可以在构造器的第一行加上super去调用父类构造器(显式的)。当显示调用后不会再隐式调用(跟自动生成的构造器同理,有显式调用时不会再隐式调用)。...原创 2021-02-24 18:15:49 · 349 阅读 · 0 评论 -
[Java基础] 3、java.util.logging的Logger的使用原理
文章目录1、测试代码2、使用原理2.1、Logger.getLogger2.2、LogManager.getLogManager()获取LogManager.manager。2.3、LogManager.demandLogger2.4、LoggerContext.addLocalLogger2.5、Logger.info的使用1、测试代码package log.JDKLog;import java.util.logging.Logger;public class Test { publi原创 2021-02-24 12:11:18 · 239 阅读 · 0 评论 -
[JAVA基础] 2、ArrayList源码分析
文章目录ArrayList继承图ArrayList相关属性构造器ArrayList继承图直接继承了AbstractList抽象类,实现了RandomAccess,Serializable,Cloneable接口AbstractList:对List接口的简单部分实现。RandomAccess:标识类是否可以随机访问。Serializable:标识类是否可以序列化与反序列化,实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInpu原创 2020-11-26 16:52:06 · 87 阅读 · 0 评论 -
[Java基础] 1、APT实现注解处理器
文章目录自定义编译时注解处理器APT简介自定义注解处理器创建一个注解实现注解处理器添加tools.jar添加SPImaven打包使用自定义的注解处理器新建项目IDEA设置遇到的问题自定义编译时注解处理器使用IDEA构建的maven项目。项目github地址注解的保留类型@Retention(RetentionPolicy.SOURCE).java源文件有,编译成class文件后不保存的注解,运行时也不能获取@Retention(RetentionPolicy.CLASS)编译后的class文原创 2020-07-02 13:26:32 · 797 阅读 · 0 评论