CAS自旋原理

CAS是Java并发包工具类底层使用的算法,他有效的避免了并发,像AtomicInteger、Semaphore、ReentrantLock底层都采用了CAS算法cas即compare and swap(比较与交换),它涉及到三个操作数:内存值、预期值、新值。当且仅当预期值和内存值相等时才将内存值...

2017-12-18 20:12:12

阅读数 1092

评论数 0

数据库主从延迟

为了实现数据库的高可用,一般需要搭建数据库集群,即所谓的一主多从的数据库结构。主库主要用作对数据库的写操作,然后再同步给从库;从库主要用作对数据的查询。对主库的数据的更新操作时,数据的变更会同步给从库。这段同步的时间就是主从延迟。主从延迟时间一般非常短,一般在1ms左右。主从延迟是不可控的,不能缩...

2017-10-19 19:09:09

阅读数 579

评论数 1

项目启动一直报Could not resolve placeholder错误

项目启动一直报错,一直报Could not resolve placeholder错误 查了一下,说是spring xml中指定了多个,查看多个xml,确实在两个xml中都定义了一个全局属性placeholder。解决办法: 在其中一个placeholder 配置里加入如下属性:<pro...

2017-10-16 12:56:21

阅读数 3376

评论数 0

kafka消费者监听数据原理

kafka确实是一个很牛逼的消息中间件。基本上是消息中间件中数据最快吞吐量最高的分布式消息中间件了。 由于公司对kafka全封装了,直接调用api就可以了。但是本人对kafka很感兴趣,就先看了下kafka监听topic里的新增的消息。 看了下源码其实很简单。public class Cons...

2017-10-16 11:43:42

阅读数 5622

评论数 1

编译时出现java.lang.UnsupportedClassVersionError 异常

下午把beta上的代码合到我自己的分支,结果导致service启动报错。本来本地service是可以起来的,结果一合就挂了。启动时一直报错,是检查性异常。排除代码问题然后一直找问题啊,找问题。。。。。。。然后顺着堆栈信息找,是一个类报java.lang.UnsupportedClassVersio...

2017-09-26 17:46:50

阅读数 240

评论数 0

try catch后spring 事物不显式提交

spring管理的事物,例如声明式事物或者是注解式事物默认是在抛出运行异常时,会被spring catch到然后回滚,如果你在需要事物管理的方法里就已经try,catch了。哪么spring就捕获不到这个异常,也就不会回滚了。例如:public void doSome(){ try{ ...

2017-08-24 11:15:21

阅读数 234

评论数 1

git 所有撤销、回退命令

git add 后撤销: 撤销所有add文件 git reset HEAD . 撤销单个add文件 git reset HEAD -filenamegit commit 后撤销: 只回退commit的信息,保留修改代码:git reset --soft head 彻底回退到上次commit版本,不...

2017-05-24 12:00:27

阅读数 16868

评论数 2

maven 将项目打成jar包加入依赖包

有时间我们需要将项目打成jar包生成在我们项目的target目录下。先来说一下maven instal与maven Package的区别:maven install是将你的maven项目按照packaging属性打包为制定类型到本地仓库中,可以给依赖它的其他项目调用,并自动建立关联。 maven ...

2017-05-24 10:55:03

阅读数 8048

评论数 2

java 获取jvm运行状态

在项目收集jvm运行状态信息并上传到监控平台是必要的,这样有利于我们分析服务器的运行情况,好让我们对一些潜在的威胁采取相关措施。首先要了解到ManagementFactory这个类,它是java.lang.Object包下的 java.lang.management.ManagementFact...

2017-05-22 11:44:22

阅读数 2655

评论数 2

项目中执行ArrayList.remove() 抛出java.lang.UnsupportedOperationException

项目中代码:if(attrEntity!=null && attrEntity.size()>0){ mdseCodes = new ArrayList<String>(); for(MdseAttributeVO e...

2017-04-12 18:58:58

阅读数 2770

评论数 0

mysql事务隔离级别为Read uncommitted产生脏读原因

Read uncommitted是mysql innodb引擎的最低事务隔离级别。他并不能保证并发情况下的数据的安全性。例如使用jdbc事务模仿Read uncommitted隔离级别:import java.sql.Connection; import java.sql.DriverManage...

2017-04-10 14:00:27

阅读数 1026

评论数 2

java 并发包之Semaphore

Semaphore是java5之后并发包里的工具类。是用来在并发时控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。例如一个奶茶店,同时只能为5个人提供服务,其余的人必须等待其前面五个人服务完毕后才能接受服务,如果所有的人同时一窝蜂的去请求服务那会导致很多问题发生甚至奶...

2017-04-04 22:37:32

阅读数 285

评论数 0

java 并发包之countDownLatch

countDownLatch是Java.util.concurrent里的并发工具包。它是让某个线程等待其他线程处理完再执行。所用场景:例如导出10万条的订单记录时,需要对每一条订单记录进行处理后再导出,这是由于数据量过大需要采用10个线程对这10万条数据进行处理,那么导出execel的这个动作或...

2017-03-29 20:38:44

阅读数 267

评论数 1

JVM GC算法以及调优

jvm的垃圾回收器是jvm的重要组成部分。GC负责着整个jvm运行时堆中对象的回收,保证jvm的性能。由于Java执行GC垃圾回收时会阻塞其他所有的线程,这样是对用户极不友好的,即对GC的优化重点是降低阻塞的时间,对GC的调优也就是对jvm的性能调优的重点。jvm堆的内存模式(画的比较简陋,忘海涵...

2017-03-27 23:13:17

阅读数 851

评论数 2

java 执行基础运算时内存调度过程

当我们执行i=i+1时;有没有想过i是怎么执行+1操作的,他的过程是什么? 我查过一些资料,虽然不是很深,但还是要分享一下我的理解。jvm的所有运算操作都是要依赖cpu进行的,当java中执行i=i+1时,首先是jvm将i=i+1操作的过程生成cpu能执行的指令,然后cpu来执行i=1+1的操作...

2017-03-27 16:16:27

阅读数 286

评论数 1

项目中执行lock.unlock()出现java.lang.IllegalMonitorStateException

项目中代码,这段代码是判断excel是不是正在导出中,并发量只允许为1,因为excel导出很占cpu资源@RequestMapping("excelOrderExportCheck.json") @ResponseBody public AjaxObj excelOrd...

2017-03-27 12:21:02

阅读数 2141

评论数 0

Java 实现插入排序

插入排序就像起扑克牌一样,当起到第二张比第一张比较如果比第一张小就放在第一张的位置,当起到第三张牌的时候与前两张进行比较插入适当位置,依次类推。。。用Java实现: 例一:package test;public class insetSort{ static int[] array={1,...

2017-03-22 22:27:14

阅读数 182

评论数 0

java实现单链表

在Java中,java就是采取的是一个对象里面存储着相对类型的另一个对象,另一个对象里面又存在又一个相同类型的同对象,逐渐递归下去形成单链表。Java伪代码实现单链以及单链的查询package test;public class SingleLink<K,V> { Entry e...

2017-03-21 22:08:13

阅读数 186

评论数 0

高并发下接口核心业务方法限流

高并发下,为防止某个接口的主要方法被高频率的反复调用甚至是竞争伙伴恶意请求服务器导致服务器爆掉,获取接口处理业务效率缓慢。需要对接口的核心业务方法进行限制,比如说1分钟之内只允许调用1000次改接口。超过1000次的线程被阻塞,直到1分钟结束或者其他线程处理完毕。java伪代码实现(1分钟之类方法...

2017-03-21 14:46:11

阅读数 2058

评论数 1

CyclicBarrier 高并发的使用

CyclicBarrier是Java中java.util.concurrent并发包里的一个工具类。作用就是控制多个线程同时等待某个事件的执行才会一起执行。使用场景:多用于多个子线程等待主线程执行完毕后执行的场景。两个重要构造方法:new CyclicBarrier(int)int为等待的线程的个...

2017-03-19 21:07:11

阅读数 293

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭