java
能力说明:
掌握封装、继承和多态设计Java类的方法,能够设计较复杂的Java类结构;能够使用泛型与集合的概念与方法,创建泛型类,使用ArrayList,TreeSet,TreeMap等对象掌握Java I/O原理从控制台读取和写入数据,能够使用BufferedReader,BufferedWriter文件创建输出、输入对象。
阿里云技能认证
详细说明多线程--Lock锁
Spring Boot--自动配置原理
JVM--入门篇
JVM--Gc篇
Spring Boot--基础
JUC--CountDownLatch
JUC--阻塞队列与非阻塞队
JUC--线程池实现
JUC--线程池原理解析
JUC--自定义线程池
Atomic原子类-1
Java锁介绍
设计模式--分类与六大原则
设计模式--单例模式
设计模式--工厂模式
基于AOP实现整体项目事务控制
Springboot集成Swagger2
go-编写第一个go程序
ThreadLocal源码解析
悲观锁&乐观锁
可重入锁与非可重入锁
公平锁与非公平锁
共享锁和排它锁
自旋锁与阻塞锁
Elasticsearch入门-1
Atomic原子类-2
git企业级版本开发,一篇文章足矣
Atomic原子类-3
AOP实现项目日志收集
CAS原理
你所不知道的final
解决redis序列化java8 LocalDateTime
分布式接口限流实现
SpringBoot自定义异常,优雅解决业务逻辑中的错误
微服务架构 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调。互相配合,每个服务运行在其独立的进程中,服务与服务之间采用轻量级通信机制互相协作(通常基于HTTP协议的RESTful API)。每个服务都围绕这具体业务进行构建,并且能够被独立的部署到生产环境 通俗的讲 就是 一个个springboot 开发出来的模块就是落地功能
你所不知道的final
解决redis序列化java8 LocalDateTime
分布式接口限流实现
SpringBoot自定义异常,优雅解决业务逻辑中的错误
【并发容器精讲一、】ConcurrentHashMap
诞生的历史和原因 - 代替Vector和SyschronizedList 就像 ConcurrentHashMap 代替了SyschronizedMap的原因一样 - Vector和SyschronizedList 锁的粒度太大,并发效率较低,并且迭代时无法编辑 - Copy-On-Write 并发容器还包括CopyOnWriteArraySet,用来代替同步 Set
1. 为什么要使用队列 - 用队列可以在线程间传递数据:生产者,消费者模式,银行转帐 - 考虑锁等线程安全问题重任 转移到队列上 # 2. 并发队列简介 简单介绍各个并发并发队列的关系,并发队列是指线程安全的队列,包含:阻塞队列和非阻塞队列
为什么要用count(*) 在我们实际开发中,业务 往往是 如:(判断该手机是否已经存在),我们为了提高程序的运行效率,这个时候都会使用
Semaphore 可以用来限制或管理数量有限资源的使用情况 - 信号量的作用是用来维护一个“许可证”,的计数,线程可以获取 许可证,那信号量剩余许可证就减一,线程也可以是否一个许可证,那剩余的许可证就加一,当信号量拥有的许可证为0时,那么下一个线程想获得许可证,就要进行等待,直到另外线程释放许可证
作用 - 当线程1需要等待某个条件的时候 ,它就去执行 condition.await() 方法,一旦执行了 await()方法,线程就会进入阻塞状态
CyclicBarrier循环栅栏和CountDownLatch 很类似 ,都能阻塞一组线程 - 当有大量线程相互配合,分别计算不同任务,并且需要最后统一汇总的时候,我们可以使用CyclicBarrier 。CyclicBarrier可以构造一个集结点,当某一个线程执行完毕,他就会到集结点等待,知道所有线程都到了集结点,那么该栅栏就被撤销,所以有线程在统一出发,继续执行剩下都任务。
为什么要数据迁移 - 1.系统重构 (代码跟不上现在的用户量) - 2.数据库设计不合理,与sql 垃圾,导致数据库qps大大的降低,从而导致数据库挂掉 - 3.业务不断增长,现有资源不够用,战略的转移
为什么需要AQS - 锁的协作类共同点:闸门 (和 ReentrantLock、Semaphore相似) - 不仅 ReentrantLock、Semaphore、像CountDownLatch、都有这样的协作 (或者同步)功能,其实,他们底层都用了一个共同的基类,这就是 AQS