
Java
tianlan996
这个作者很懒,什么都没留下…
展开
-
Spring IOC要点
一 什么是IOCIOC即Inversion of Control,控制反转,是面向对象编程中的一种设计原则,可以用来降低机代码之间的耦合度。Spring IOC是将类的依赖关系和生成交给了Spring容器去管理,至于我们自己的app则可以不需要去关系这些对象的产生了。二 IOC与DI的关系实现IOC有多种方式,比如DI(Dependency Injection 依赖注入)和DL(...原创 2020-05-03 16:50:29 · 278 阅读 · 0 评论 -
java中的各种锁详细介绍
作者:JYRoy出处:https://www.cnblogs.com/jyroy/p/11365935.htmlJava提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁...转载 2020-04-07 22:40:50 · 495 阅读 · 0 评论 -
synchronized
synchronized是Java控制多线程同步的,其实现是基于锁。一 锁机制有两种特性1. 互斥性在同一时间内,一个对象锁只允许一个线程持有。互斥性往往也称为操作的原子性。2. 可见性在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的。二synchronized用法1. 加在方法前面,用于同步方法既可以同步静态方法,也可以同步非静态...原创 2020-04-07 21:56:43 · 124 阅读 · 0 评论 -
JMM Java内存模型
一 硬件内存架构CPU处理速度远大于内存处理速度,因此中间设置有高速缓存(cache,可以有多级)。这样会引发数据的一致性问题,即对于共享的数据而言,怎样保证各个CPU拿到的一致。解决方案:1. 总线加锁。优点:实现简单;缺点:降低CPU吞吐量。2.缓存一致性协议(MESI)当CPU在CACHE中操作数据时,如果该数据是共享变量,数据在CACHE读到寄存器中,进行新修改,...原创 2020-03-16 22:57:09 · 233 阅读 · 0 评论 -
微服务之spring-cloud
一 什么事微服务微服务就是把一个原本臃肿的项目按照功能模块进行拆分,形成多个功能较为独立和单一的服务,这些服务联合起来可以完成原来整个大服务的功能。二 为什么要微服务化一个服务包含太多功能,当某个部分出现故障,或是需要维护重启时,所有功能模块都会受到影响。如果服务过大,部署时需要的时间也很长,也会对用户体验造成较大影响。微服务化后,对单个小服务的维护不会对其他服务造成影响...原创 2020-03-15 23:04:09 · 165 阅读 · 0 评论 -
Java并发编程
1. 并发编程,由于线程创建和上下文切换开销,可能会比串行执行还要慢。2. 减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 CAS算法。Java的Atomic包使用CAS算法来更新数据,而不需要加锁...原创 2019-01-20 12:32:13 · 135 阅读 · 0 评论 -
java并行基础(要点总结)
一 线程状态1. NEW线程刚刚被创建时的状态。2. RUNNABLENEW状态的线程调用了start()方法来启动后可能处于的状态。如果线程满足运行的状态,但还没有得到CPU调度,则处于此状态。3. RUNNING正在运行的线程状态。4. TERMINATED线程运行结束的状态。5. BLOCKED调用了start方法,但线程需要运行的某些资源没有得到满足...原创 2019-02-24 10:39:24 · 304 阅读 · 0 评论 -
无锁
转载自:https://blog.youkuaiyun.com/yangguangdesenlin/article/details/79263335略作了一些修改。无锁:无障碍运行。 实现原理:cas算法实现 为什么要cas 在多线程高并发编程的时候,最关键的问题就是保证临界区的对象安全访问。通常是加锁来处理,其实加锁的本质是将并发转化成串行来实现,势必会影响吞吐量,而且线程的数量是有...转载 2019-02-25 21:45:11 · 488 阅读 · 0 评论 -
Java 集合/IO流/多线程基础
一、集合:1. 集合框架:1)Collection(1)List:有序的,有索引,元素可重复。(add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from, to)、listIterator())①ArrayList:底层是数组结构,查...原创 2019-03-05 10:02:32 · 2254 阅读 · 0 评论