保存成功
订阅成功
保存失败,请重试
提交成功
码客

码客

Java开发
多年大型互联网项目开发经验,涉及电商平台,互金平台,在项目中负责底层代码编写,代码审查,方案的设计,第三方服务的对接,当然还有日常的编码,喜欢尬聊,沉迷工作,无法自拔,沉迷工作,日渐消沉...更多
创作文章7

并发编程解惑之容器和队列

在Java内存结构中,所有的对象实例都放在共享堆空间中,对象实例的属性也是保存在共享堆里,每个方法对应一个线程栈,线程栈只存基本类型和对象引用(对象地址),方法中的局部变量存放于私有的栈空间,局部变量不会被竞争,是线程安全的。栈内存是4字节对齐的,而堆内存是单字节对齐。 通过线程池,我们可以管理线程异常,监控线程运行状态;通过阻塞队列,我们可以协调多任务的执行、排队;通过并发容器,我们可以高效存储共享数据;通过Lock接口及其实现类,我们可以细粒度、多条件的实现同步;通过CountDownLatch等工具类,我们可以将异步操作转换成同步分批执行;通过Future实现异步执行,避免同步阻塞,Java具备完善的并发编程解决方案和生态。 并发编程解惑系列会从线程、锁、容器、队列四个篇章解读并发编程,该篇是本系列的容器和队列篇。本次Chat的主要内容: 1、并发容器、Copy-On-Write 容器和跳表 2、常见的阻塞队列和非阻塞队列 3、深入理解ArrayBlockingQueue、LinkedBlockingQueue、ConcurrentLinkedQueue三大队列 4、底层的秘密:根类Object和魔法类Unsafe
59 订阅

并发编程解惑之锁的应用和底层实现

在锁的应用这方面,Synchronized和 ReentrantLock都可用作同步,被称为同步锁。在使用前要明确一个基本概念,同步锁要加在哪里?当然是加在共享资源上,文件系统,数据库系统等自身都提供了完善的同步锁机制,不需要我们加锁。确切来说我们是把同步锁加在访问共享资源的代码上,而且访问共享对象的不同线程,加的同步锁必须是同一把锁,不然无法起到同步(排队操作共享对象)的作用,同步锁本身也一定是多个线程间的共享对象。 Java中锁的类型可继续细分为:同步锁(可以保证代码是被串行执行的),无锁CAS(通过版本号和重试保证线程安全),公平锁,非公平锁,可重入锁,不可重入锁等。 在锁的底层实现这方面,Java中核心的锁如ReentrantLock,Semaphore,CountDownLatch, ReetrantReadWriteLock,FutureTask等都是基于AQS构建的,主要区别就是原子状态state的获取和释放的条件不同而已,文中会详细解读AQS的机制和源码。 并发编程解惑系列会从线程、锁、容器、队列四个篇章解读并发编程,该篇是本系列的锁篇。 本篇 Chat 主要内容: 1.深入分析内置同步锁Synchronized 2.深入分析可重入锁 ReentrantLock 3.高效并发:JAVA锁优化 4.锁的底层实现:AQS抽象队列同步器
53 订阅

并发编程解惑之线程

线程是 CPU 调度的最小单位,进程是资源分配的最小单位,每个进程都有独立的代码和数据空间,一个进程中的多个线程可以共享代码和数据空间,Java 并发编程里通过多线程并发执行,能提升数据处理的效率,比如通过一个将一个大任务切割成数个小任务分配给多个线程并发执行,能使得任务处理时间大幅降低,同时使用线程池,可以让任务排队等待执行,复用已有线程,监控线程执行状态,能提升执行的可靠性和吞吐量。并发编程解惑系列会从线程、同步锁、容器、队列四个篇章解读并发编程,该篇是本系列的线程篇。 本篇 Chat 主要内容: 1. 线程的分类 2. 线程的状态 3. 线程间通信 4. 线程的封闭 5. 异步线程 6. J.U.C 包和线程池
严选并发编程
376 订阅

数据库之高性能 MySQL 实战演练(二)

本系列第一篇 [ MySQL 实战演练(一)](https://gitchat.cn/m/mazi/activity/5b45e6fbc60b9d62e0921420)主要讲解 MySQL 基础、事务和锁并发,本篇会围绕 SQL 语句优化和索引优化这两个对数据库性能影响较大的点进行讲解 本次 Chat 的主要内容: 1. SQL 语句优化(对 Where、EXISTS、JOIN、ORDER BY、COUNT 等语句进行优化)。 2. 索引数据结构(分析哈希索引、全文索引、B+树索引、B Tree、AVL Tree 的数据结构)。 3. 索引优化(针对覆盖索引,索引排序,索引长度和区分度等进行优化)。
严选MySQL数据库
713 订阅

数据库之高性能 MySQL 实战演练(一)

日常开发中,数据库的 SQL 编写基本占到了 30% 的工作量,但因为 SQL 没写好而造成的功能异常和性能缺少而造成的 Bug 远超过了30%。数据库之高性能 MySQL 实战演练系列通过实际业务场景复杂 SQL 的编写来带领大家解决工作中让开发者欲罢不能的三大痛点:高并发场景下的数据一致性问题、企业复杂的查询和聚合统计、数据集中导致的 IO 吞吐下降。 本次 Chat 主要内容: 1. MySQL 的安装,MySQL 核心语句:DDL、DML、DQL、DCL 的编写; 2. 列的数据类型(数值,时间日期和字符串)和约束,库表字段的设计; 3. MySQL 的表类型、存储引擎、事务管理、隔离级别和锁并发; 4. Float、Decimal 存储金额的区别? 5. Datetime、Timestamp 存储时间的区别? 6. Char、Varchar、Varbinary 存储字符的区别? 7. 有多少种事务失效的场景,如何解决? 8. 乐观锁的线程如何做失败补偿? 9. 高并发场景(领红包)如何防止死锁,保证数据一致性? 10. MVCC 的底层实现?批量更新或插入时的脏数据问题?
MySQL数据库
733 订阅

分布式服务治理框架 Dubbo 之应用实战和源码分析

现在很多大中型公司 (研发团队达到60人或以上) 的系统都在采用 Dubbo 做服务管 理,一个系统会分成支付、用户、产品、活动、网关等子系统,每个子系统之间的服务依赖和调用都是通过 Dubbo 等服务中间件做管理和监控的,所以会使用被广泛运用的 Dubbo 进行开发成为了核心的技能。企业级别的 Dubbo 应用很多文章都没有触及,在这会有讲解(如 Dubbo 服务降级),而源码部分还会讲解需要扩展接口时,如何通过 SPI(Service Provider Interface)机制实现。 本次 Chat 主要内容: 应用部分: 1. 前置知识:Java基础知识 2. Dubbo 服务启动,调用,暴露消费的过程。 3. 代码演示子系统间的 Dubbo 调用。 4. Dubbo 的集群容错、负载均衡、并发控制。 5. Dubbo 直连,Cmd 远程调试。 6. 基于 Dubbo 的服务降级实现和灰度发布实现。 源码部分: 1. Dubbo 的 IO 线程模型。 2. Dubbo 接口扩展 SPI。 3. Dubbo 核心源码分析。
Dubbo分布式实战服务治理
289 订阅

性能优化之 JVM 高级特性

在面试的后期,往往都会问性能优化的问题,譬如你优化过 JVM 吗,有没有遇到过 JVM 排查的场景,如果只能说点基本的见解,那面试官给你的定岗定薪很有可能是初级,为了避免这种尬聊,兄弟,你还是进来深入交流一番吧,而且 JVM 的优化的确能给服务运行带来更低的停顿和更高的吞吐量,优化到位无疑能让代码更稳定的运行,优化不到位,尤其是秒杀和大促的时候,商品没秒杀到,服务倒是被秒杀了,这……就有点不好意思了,进来一小时,开心一整天,保证面试的时候可以顺利走完这最后一公里。 1. 前置知识:Java 基础知识; 2. JVM 内存模型,JVM 类加载模型,OSGI 加载模型; 3. 常用垃圾搜集算法,互联网公司常用算法 CMS,G1 算法; 4. JVM 排查场景,GC 日志解析; 5. JVM的内存模型与并发特性; 7. JVM的编译期和运行期优化; 8. 面试要想加薪,深入理解 JVM 必不可少; 9. 图形演示,代码讲解。
JVM性能优化
571 订阅