Java Collection
文章平均质量分 58
java 基础、juc、jvm
777_yL
在路上
展开
-
硬件同步原语(CAS、FAA)和锁 来实现异步并发转账
硬件同步原语硬件同步原语(Atomic Hardware Primitives)是由计算机硬件提供的一组原子操作,我们比较常用的原语主要是 CAS 和 FAA 这两种。原语:原子操作,只要当前线程执行完毕之后,才会切换下一个线程执行。CASCAS(CompareAndSwap),即先比较,再交换。<< atomic >>// p: 要修改的变量的指针。// old: 旧值// new: 新值function cas(p : pointer to int, old原创 2021-07-17 11:46:56 · 698 阅读 · 0 评论 -
Java开发环境的安装
了解Java1.1、什么是java1.1.1含义Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群1.1.2背景Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语...原创 2020-01-10 15:41:53 · 193 阅读 · 0 评论 -
JDBC(Java Database Connectivity )
何为JDBC?Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。如何连接?四个工具DriverManager :依据数据库的不同,管理JDBC驱动C...原创 2020-02-04 16:19:52 · 309 阅读 · 0 评论 -
java中== 与equals
例题引入答案:s1!=s2 、s1 equals s2解析1. == 在比较基本数据类型时比较的是值,在比较两个对象是比较的是两个对象的地址值。2.equals()方法存在于Object类中,因为Object类是所有类的直接或间接父类,也就是说所有的类中的equals()方法都继承自Object类,而通过源码我们发现,Object类中equals()方法底层依赖的是号在所有没有重写equals()方法的类中,调用equals()方法其实和使用号的效果一样,也是比较的地址值。然而,Java提供的原创 2020-06-23 14:13:13 · 85 阅读 · 0 评论 -
面向对象和面向过程的区别
面向过程:面向过程性能比面向对象搞。因为类调用需要实例化,开销比较大,比较消耗资源,所以当性能是最重要考虑因素时候,比如单边机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是面向过程没有面向对象易维护、易复用、易扩展。问题:面向过程的语言一定比java语言好吗?java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。而面向过程语言大多都是直接被编译成机械码在电脑上执行。但有一些面向过程的脚本语言性能也不一定比ja原创 2020-06-23 16:19:56 · 140 阅读 · 0 评论 -
java中String的两种创建方式
在Java中有两种创建String类型的变量1 String str01="abc";//第一种方式2 String str02=new String("abc");//第二种方式第一种方式创建String变量时,首先查找JVM方法区的字符串常量池是否存在存放"abc"的地址,如果存在,则将该变量指向这个地址,不存在,则在方法区创建一个存放字面值"abc"的地址。第二种方式创建String变量时,在堆中创建一个存放"abc"的对象,使变量str02指向堆中的对象。根据上面的创建方式,观察下面的原创 2020-06-23 14:04:15 · 407 阅读 · 0 评论 -
拦截器(inteceptor)与过滤器(filter)的新认识
拦截器(inteceptor)与过滤器(filter)区别:拦截器是基于java的反射机制的,而过滤器是基于函数回调。拦截器不依赖与servlet容器,过滤器依赖与servlet容器。、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注原创 2021-06-23 17:11:17 · 232 阅读 · 1 评论 -
JVM(二)垃圾回收
垃圾回收垃圾回收垃圾回收相关面试题1.如何判断对象可以回收1.1引用计数法1.2 可达性分析算法1.3四种引用2.垃圾回收算法2.1标记清除2.2标记整理2.3复制3.分代垃圾回收4.垃圾回收器4.1串行(Serial+Serial Old)4.2吞吐量优先(parallelGC)4.3响应时间优先(CWS)5.垃圾回收调优垃圾回收堆存在垃圾回收机制,垃圾回收相关面试题简述Java垃圾回收机制在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收原创 2020-08-16 21:16:53 · 128 阅读 · 0 评论 -
java并发编程之线程池
线程池线程池状态构造方法线程池的工作方式创建线程池的方法newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool线程提交任务的方法关闭线程池线程池是如何实现的线程池的好处处理线程池的异常线程池状态ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量RUNNING 正在运行SHUTDOWN 不会接受新任务,但会处理阻塞队列中的任务原创 2020-08-06 13:17:49 · 81 阅读 · 0 评论 -
java实现生产者消费者问题
777_yL何为生产者消费者模式java实现生产者消费者问题具体代码何为生产者消费者模式所谓生产者消费者模式,即N个线程进行生产,同时N个线程进行消费,两种角色通过内存缓冲区进行通信。优点: 极大的解决了代码之间的耦合程度解释:之前我们写的代码可能是这样的,有A和B两个功能代码处理数据,B代码的执行必须要依赖于A代码才能执行完B的功能,即A耦合于B。显然这严重影响B代码的生产,而且如果产生错误的话,也不容易及时的排查。采用生产者消费者模式,A代码将处理好的数据交给缓存区,B代码直接从缓存区拿取数原创 2020-08-01 10:32:27 · 416 阅读 · 0 评论 -
深入了解synchronized(二)锁优化策略
777_yLsynchronized原理进阶轻量锁锁膨胀自旋优化锁消除锁粗化偏向锁synchronized原理进阶JDK 6 对 synchronized 做了很多优化,引入了自适应自旋、锁消除、锁粗化、偏向锁和轻量级锁等提高锁的效率,锁一共有 4 个状态,级别从低到高依次是:无锁、偏向锁、轻量级锁和重量级锁,状态会随竞争情况升级。锁可以升级但不能降级,这种只能升级不能降级的锁策略是为了提高锁获得和释放的效率。轻量锁如果一个对象虽然有多线程要加锁,但因加锁的时间错开(也就是没有竞争)我们可以用轻量锁原创 2020-07-31 20:31:34 · 132 阅读 · 0 评论 -
深入了解synchronized(一)基本概念和原理
这里写目录标题synchronized共享变量带来的的问题临界区 Critical Sectionsynchronized 解决方案互斥与同步synchronized语法synchronized 原理synchronized的可重入性synchronized的不公平性synchronized共享变量带来的的问题@Slf4j(topic = "c.testShare")public class testShare { static int counter = 0; //共享变量 pub原创 2020-07-31 14:46:36 · 314 阅读 · 1 评论 -
从java角度看线程的状态及状态间的相互转换
线程线程的状态NEWRUNNABLEBLOCKEDWAITINGTIMEWAITINGTERMINATED源码线程状态之间的转换情况 1 NEW --> RUNNABLE情况 2 RUNNABLE <--> WAITING情况 3 RUNNABLE <--> WAITING情况 4 RUNNABLE <--> WAITING情况 5 RUNNABLE <--> TIMED_WAITING情况 6 RUNNABLE <--> TIMED_WAI原创 2020-07-28 19:06:19 · 112 阅读 · 0 评论