摘要:
简介 Semaphore是一个计数信号量。信号量维护了一个许可集合; 通过acquire()和release() 来获取和释放访问许可证。只有通过acquire获取了许可证的线程才能执行,否则阻塞。 通过release释放许可证其他线程才能进行获取。 公平性:没有办法保证线程能够公平地从信号量中获得 阅读全文
摘要:
简介 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBar 阅读全文
摘要:
CountDownLatch介绍 java.util.concurrent.CountDownLatch,我们可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 可以为CountDownLatch对象设置一个 阅读全文
摘要:
有时候,我们在数据库中会插入一些字段的值时固定的,比如性别字段,它的值固定只有2个,男或者女; 或者季节字段,只有春夏秋冬4种。有时候在Java类中会采用枚举类型来表达相应的数据库字段,比如如下数据表: create table student( id int auto_increment comm 阅读全文
摘要:
什么是一级缓存 在日常开发过程中,经常会有相同的sql执行多次查询的情况,mybatis提供了一级缓存来优化这些查询,避免多次请求数据库。 一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。 什么是二级缓存 相对于一级缓存,二级缓存的作用域更广 阅读全文
摘要:
概念这里不赘述了,上节都已介绍过了。 前提准备: 1 create table book( 2 id int auto_increment comment '书ID', 3 name varchar(50) comment '书名', 4 primary key(id)); 5 6 7 insert 阅读全文
摘要:
mybatis3之后,采用了功能强大的OGNL表达式语言消除了许多其它繁琐的标签,现在动态SQL在xml中支持的几种标签: if choose(when、otherwise) trim(where、set) foreach bind 一.if标签 if标签通常用于where语句中,通过判断参数值来决 阅读全文
摘要:
一.Swagger简介 我们在项目开发中,经常会写接口文档。但是随着代码的不断更新,我们需要花费大量的精力去修改接口文档。即使是修改了接口文档,还是会存在更新不及时,更新不匹配等问题存在。为了统一接口规范,Swagger就顺势而生啦。它能提供一个统一的接口文档规范。但是虽然有了这个统一的接口规范(S 阅读全文
摘要:
最近采用jenkins+python+pytest+allure写了一些自动化测试用例。碰到这样一种场景:如果我创建了2个测试任务,测试任务1包含2个测试用例test_a.py和test_b.py,测试任务2包含一个测试用例test_c.py。 前提:需要在jenkins上面配置allure、jdk 阅读全文
摘要:
JVM简介 Java虚拟机是在千差万别的物理机上建立了统一的运行平台,实现了在任意一台虚拟机上编译的程序都能在任何一台虚拟机上正常运行。JVM会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。但是,当同时使用程序的人的个数增加时,程序就会死锁、崩溃、缓慢。因此,如果要满足更多人同时使用 阅读全文