随笔分类 - java
Java 内存模型& JVM 内存结构
摘要:这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为JVM 内存结构,描述的是线程运行所设计的内存空间 JVM 是什么呢?它屏蔽了底层架构的差异性,是 Java 跨平台的依据,也是每个
阅读全文
单例模式推荐的三种实现方式
摘要://6.双重检查(推荐使用) public class Singleton{ private Singleton(){} private static volatile Singleton singleton; public static Singleton getInstance(){ if(si
阅读全文
Java中Char占用几个字节???
摘要:也许你看到的一些书上说Char占用2个字节,但事实真的的是这样吗? 非也: 与编码格式、中英文均有关系 uft8编码下占3个字节;GBK编码下占2个字节; 但是如果 char表示英文字母: 在uft8编码下占一个字节;在GBK编码下还是占2个字节;所以GBK编码下:char类型的值不管是英文还是中文
阅读全文
>>>与>>
摘要:>> 表示(带符号)右移,如果该数为正,则高位补0,若为负数,则高位补1; >>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
阅读全文
公平锁与非公平锁
摘要:根据线程获取锁的抢占机制,锁可分为公平锁和非公平锁。 公平锁:线程获取锁的顺序是按照线程请求锁的时间顺序决定的,也就是最早请求的线程将最早获取到锁,即 FIFO 可用 JUC 中的lock提供了实现 ReentrantLock lock=new ReentrantLock (ture) 非公平锁:线
阅读全文
单例模式的实现方法(主要的7种)
摘要:1. 饿汉模式 public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){ } public static Singleton getInstance() {
阅读全文
Java技术之AQS详解(AbstractQueuedSynchronizer)
摘要:AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,
阅读全文
ThreadLocal和Synchonized
摘要:ThreadLocal 和 synchronized 是 Java 中用于实现线程安全的两种机制,它们之间有以下几点区别: 作用范围不同: ThreadLocal:用于在多线程环境下,为每个线程提供独立的变量副本,每个线程都可以通过 ThreadLocal 访问自己的变量副本,互不干扰。synchr
阅读全文
【HashMap】深入理解HashMap+ConcurrentHashMap的扩容策略
摘要:前言 理解HashMap和ConcurrentHashMap的重点在于: (1)理解HashMap的数据结构的设计和实现思路 (2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路 前面的文章已经介绍过Map结构的底层实现,这里我们重点放在其扩容方法, 这里分别对J
阅读全文
Servlet中的service()方法
摘要:引入 Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServlet,HttpServlet中对它进行了实现,将ServletRequest和Servlet
阅读全文
重入锁及实现原理
摘要:可重入锁,从字面来理解,就是可以重复进入的锁。 可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。 在JAVA环境下ReentrantLock和synchronized都是可重入锁。 synchronized是一个可重入锁。在一个类中,如果syn
阅读全文
序列化方式:hessian和msgpack
摘要:引入 阿里的dubbo默认使用的就是hessian序列化,它的特性是:序列化的时候,会写入字段名称,然后字段值,你可以想象为一个map。 而京东jsf默认使用的是msgpack序列化,它的特性是:序列化的时候,不写入字段名字,会按字段顺序写入值,你可以想象为一个数组。 区别介绍 Hessian和Ms
阅读全文
nextLine()和next()
摘要:nextLine(): 返回的是Enter键之前的所有字符,可得到带空格的字符串。 其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。 next(): 会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。 结束符:只是Enter键
阅读全文
Connection接口总结
摘要:总 Connection接口: List 有序,可重复(ps:有序是指按照插入的顺序存储) ArrayList 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程不安全,效率高 Vector 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程安全,效率低 LinkedList 优点:
阅读全文
while (n-- > 0) 的用法
摘要:while (n-- > 0) 即是: for (int i = 0; i < n; ++i) {...} 的简写; 还可以写和成while (--n >= 0) {...}。
阅读全文
java中length,length(),size()区别
摘要:java中length,length(),size()区别 比较对象归属用途length属性数组查看数组的长度length()方法字符串String查看字符串的长度size()方法泛型集合查看泛型中元素数目
阅读全文
Java中二维数组使用
摘要:对应 array[i][y] 一、获取行和列 int rows = array.length;//行数 int columns = array[0].length;//列数 二、判空 二维数组首地址是否为空,即array==null;二维数组是否为{},即array.length==0的情二维数组是
阅读全文
Java代码执行顺序静态(代码块>构造代码块>构造函数>普通代码块)
摘要:执行顺序 静态代码块>构造代码块>构造函数>普通代码块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class CodeBlock { static{ System.out.println("静态代
阅读全文
进程&线程以及通信方式
摘要:进程(Process)和线程(Thread) 进程: 进程是计算机中正在运行的程序的实例。它是分配系统资源(如内存、文件、网络连接等)的基本单位。每个进程都有独立的内存空间,包含代码、数据和堆栈等。它们互相独立,彼此之间不会互相干扰。进程之间通过进程间通信(IPC)方式进行通信,如管道、共享内存、消
阅读全文
通过sql语句查询实现分页
摘要:通过sql语句分页 如:SELECT * FROM users limit 3,2 从第4条记录开始后续显示两行,索引从0开始 (服务器机制)该方式的优缺点如下: 优点:操作便捷(利用服务器内存),适合于大数据量操作,对底层数据库服务器起到保护作用。 缺点:增加了和数据库交互的次数,访问速度较慢。
阅读全文