摘要:
一、概述 多个线程操作共享数据时,synchronized保证访问共享数据的线程安全性。synchronized是非公平锁,新来的线程有可能立即获得监视器,而在等待区中等候已久的线程可能再次等待,不过这种抢占的方式可以预防饥饿。 synchronized加锁方式的作用范围,区别实际是被加锁的对象的区 阅读全文
摘要:
一、作用 通常情况下我们可以通过synchronized关键字来解决可见性、有序性及原子性问题这些问题,不过synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用synchronized来解决问题。而volatile关键字就是Java 阅读全文
摘要:
概览 首先我们通过@GlobalTransactional这个注解开启一个全局事务,而GlobalTransactionScanner.wrapIfNecessary()会为所有方法上加了这个注解的bean注入一个包装了GlobalTransactionalInterceptor实例的advisor 阅读全文
摘要:
用Spring的@Transactional注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编写业务代码时候,突然某一个方法里的事务好像失效了。然后debug跟踪代码时发现,自己第一步的insert或者update的数据在语句执行完毕后,数据库中并没有立即出现更改或保存 阅读全文
摘要:
一、题目 在10亿数字的文件中找到最大的前100个数字。 二、分析 2.1 排序方法 快速选择(Quick Select)和快速排序(Quick Sort)两个算法的作者都是Hoare,并且思想也非常接近:选取一个基准元素pivot,将数组切分(partition)为两个子数组,比pivot大的扔左 阅读全文
摘要:
一、简介 AbstractQueuedSynchronizer(简称AQS),抽象的队列式的同步器,是Java并发包实现的基类。 AQS用来构建锁和同步器的框架,使用AQS能简单且高效地构造出大量的应用广泛的同步器,如常用的ReentrantLock、Semaphore、CountDownLatch 阅读全文
摘要:
一、CPU利用率与CPU负载的区别 提到CPU利用率,就必须理解时间片。什么是CPU时间片?我们现在所使用的Windows、Linux、Mac OS都是“多任务操作系统”,就是说他们可以“同时”运行多个程序,比如一边打开Chrome浏览器浏览网页还能一边听音乐。但是,实际上一个CPU内核在同一时刻只 阅读全文
摘要:
一、JVM监控和调优 在Java应用和服务出现莫名的卡顿、CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了。本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考。 命令 阅读全文
摘要:
Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个jar包加载的?为什么会报各种类相关的Exception? 我改的代码为什么没有执行到?难道是我没commit?分支搞错了? 遇到问题无法在线上debug 阅读全文
摘要:
SELECT ... INTO 语句 SELECT...INTO使查询结果可以存储在变量中或写入文件: SELECT ... INTO var_list选择列值并将其存储到变量中。 SELECT ... INTO OUTFILE将选定的行写入文件。可以指定列和行终止符以产生特定的输出格式。 SELE 阅读全文