摘要: 如果开发中用到多线程,基本上就使用java的线程池,主要原因: 1、避免线程的重复创建 2、限流(当超过指定的阈值时会有一些拒绝策略) 最初始的线程池的构建方式: public ThreadPoolExecutor(int corePoolSize, //核心线程数 int maximumPoolS 阅读全文
posted @ 2019-11-03 17:44 老木木 阅读(231) 评论(0) 推荐(0)
摘要: CountDownLatch countDownLatch主要有两个方法,countdown()与await() public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedEx 阅读全文
posted @ 2019-10-31 21:42 老木木 阅读(68) 评论(0) 推荐(0)
摘要: jvm提供了关键字sychronized与volatile去实现线程安全。而java层面是基于juc(java.util.current)包去实现线程安全。 Lock接口 1、sychronized与lock的区别 lock与sychronized都能达到相同的效果,保证线程的原子性,可见性,一致性 阅读全文
posted @ 2019-10-31 15:43 老木木 阅读(272) 评论(0) 推荐(0)
摘要: JMM(java 内存 模型) JMM(java 内存模型)是一种规范,解决线程中数据不一致问题(可见性,原子性,一致性),主要解决缓存一致性问题。 JMM模型图示: JMM抽象模型多线... 阅读全文
posted @ 2019-10-23 21:48 老木木 阅读(85) 评论(0) 推荐(0)
摘要: 进程 进程 就是分配资源的最小单位,进程可以实现宏观上(cpu时间片不断去切换)的并发,单核任意一个时刻cpu只会有一个任务去执行。 指令切换要对指令进行隔离: 给每一个进程分配内存地址空间,并且不同的进程空间是不会相互干扰的, 进程需要记住每个指令运行的行数,计数器。 线程 一个进程可以包含多个线 阅读全文
posted @ 2019-10-23 14:24 老木木 阅读(71) 评论(0) 推荐(0)
摘要: zookeeper 的由来缺少一个分布式协调机制: zookeeper 上面这个架构下 zookeeper ,可以用来解决 task 执 行问题,各个服务先去 zookeeper 上去注册节点... 阅读全文
posted @ 2019-09-03 23:03 老木木 阅读(292) 评论(1) 推荐(0)
摘要: 主题在使用 spring 框架开发的时候,我们经常会碰到这种情况:@Controllerpublic class SomeController { @RequestMapping("/test1") ... 阅读全文
posted @ 2019-08-29 21:43 老木木 阅读(464) 评论(0) 推荐(0)
摘要: 一、从架构的发展说起 以电商架构为例,早期我们是单一的应用架构,随着互联网的快速发展和体量的不断增长,后端的架构通过垂直伸缩的方式很难达到我们期望的性能要求,同时投入产出比也非常大,同时普通 PC 的性... 阅读全文
posted @ 2019-08-28 22:10 老木木 阅读(67) 评论(0) 推荐(0)
摘要: Spring AOP的实现原理是基于动态织入的动态代理技术,而动态代理技术又分为Java JDK动态代理和CGLIB动态代理,前者是基于反射技术的实现,后者是基于继承的机制实现。 JDK动态代... 阅读全文
posted @ 2019-08-16 10:21 老木木 阅读(256) 评论(0) 推荐(0)
摘要: 我们在用maven构建java项目时,最常用的打包命令有mvn package、mvn install、mvn deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但... 阅读全文
posted @ 2019-08-14 14:30 老木木 阅读(130) 评论(0) 推荐(0)