随笔分类 - Core Java
摘要:前言 前面我们提到MySQL的加锁,锁是作用于索引的。那么本篇文章说下索引。 聚簇索引(Clustered Indexes) InnoDB存储引擎的数据组织方式,是聚簇索引表:完整的记录,存储在主键索引中,通过主键索引,就可以获取记录所有的列. 每个InnoDB的表有一个特殊的索引称之为聚簇索引,每
阅读全文
摘要:一、MySQL事务隔离级别 我们都知道数据库隔离级别有四种, (《高性能mysql》) 常用数据库默认事务隔离级别 MYSQL :默认为REPEATABLE_READ ORACLE :默认为READ_COMMITTED 脏读 Dirty Read 当A事务正在访问数据,并且对数据进行了修改,而这种修
阅读全文
摘要:一、引言 我们先来看一个多线程的运行场景:时间点1 :线程1查询值是否为A 时间点2 :线程2查询值是否为A 时间点3 :线程2比较并更新值为B 时间点4 :线程2查询值是否为B 时间点5 :线程2比较并更新值为A 时间点6 :线程1比较并更新值为C 在这个线程执行场景中,2个线程交替执行。线程1在
阅读全文
摘要:一、引言 Java5以来,新增加的java.util.concurrent.atomic并发包中的一些原子类,是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。其就是建立在CAS之上的。 下面以AtomicInteger为例,来看一下是如何实现原子性
阅读全文
摘要:引言 为什么需要锁(并发控制) 在并发的环境中,会存在多个用户同时更新同一条数据,这时就会产生冲突。 冲突结果: 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。 因此为了解决上述问题,引入了并发控制机制。 乐观锁
阅读全文
摘要:一、引言 MySQL引擎默认的锁级别: MyISAM和MEMORY采用表级锁(table-level locking)。 BDB采用页面锁(page-level locking)或表级锁,默认为页面锁。 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。 二、Inn
阅读全文
摘要:一、引言 我们都知道,在单体应用系统中,数据库的事务具有ACID特性,其中一条保持了数据的一致性。我们来看下数据库的事务和锁。 DBMS事务通常是对数据库进行读或写的一个操作序列。它的存在包含有以下两个目的: 为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保
阅读全文
摘要:转载http://www.cnblogs.com/skyblog/p/4122571.html大部分应用都不需要自动创建表单创建字段的功能,但使用少部分的动态字段还是可以减少不少麻烦。比如电子商务里面的商品,有很多种商品,每种商品按说都需要定义一张表,但那行不通,因为太多了不说,商品种类还是动态增加...
阅读全文
摘要:最近线上遇到几个小问题,排查代码发现基本都是些细节问题,做些总结提示大家不要掉到坑中。 一、fastjson的序列化SerializerFeature使用注意 我们都知道Integer、Double、Boolean等包装类型的字段默认值是null。如果不对这些字段设置值,那么在反序列化时得到的相应的
阅读全文
摘要:相信在我们的系统中几乎不无时无刻发生这数据的序列化和反序列化,那么我们又该如何选择序列化协议或序列化框架,以达到最小的时间开销、空间开销、CPU消耗。本文就关于序列化做出自己的一点总结和转载一篇序列化和反序列化,能够对序列化和反序列化有深刻的理解。针对自己的业务应用场景选择合适的序列化方式。Th...
阅读全文
摘要:一、对象属性拷贝工具类 ”天下武功,唯快不破“。在互联网行业中体现的更加淋淋尽致。我们在业务系统会经常遇到业务对象间属性的拷贝,对如外接口一般都使用特定的DTO对象,而不会使用领域模型,以避免两者的变动互相影响。我们不...
阅读全文
摘要:一、问题描述 另外一个系统调用服务接口api:/xxx/create?aName=&time=&...,数据没有保存成功提示SQL state [HY000]; error code [1366]; Incor...
阅读全文
摘要:一、分布式领域CAP理论 CAP定理指在设计分布式系统时,一致性(Consistent)、可用性(Availability)、可靠性(分区容忍性Partition Tolerance)三个属性不可能同时满足,该定理也叫做布鲁尔定理。CAP定理明确了分布式系统所能实现系统的局限性,目前互联网中的很多...
阅读全文
摘要:一、简介 1、CountDownLatch是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序...
阅读全文
摘要:转载自并发编程网 – ifeve.comRateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire()会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,R...
阅读全文

浙公网安备 33010602011771号