- 博客(10)
- 收藏
- 关注
转载 秒杀系统架构设计
1,秒杀场景核心是要保证三点:稳,准,快;对应的技术落地便是高可用,一致性,高性能; 2,架构设计五原则 2.1数据要尽量少:网络传输耗时,服务器压缩以及字符编码,序列化与反序列化消耗cpu 2.2 请求数要尽量少:页面依赖的 CSS/JavaScript、图片,以及 Ajax,建立连接要做三次握手 2.3 路径要尽量短...
2019-09-24 17:26:00
129
转载 Future与FutureTask简单使用
概念不多说,网上随便百度下就可以找到一堆。直接看代码,注意关注下运行结果中日志记录的时间。 一,Future: @Slf4j public class MyFutureDemo { @SuppressWarnings("all") public static void main(String[] args) throws Exception { ...
2019-09-02 16:06:00
142
转载 CyclicBrrier的简单使用
背景:有10个同学进行吃瓜大赛,分为两组进行。要求每组内的同学都必须分到瓜以后,裁判喊开始才能进行比赛。 代码如下: @Slf4j public class CyclicBarrierDemo { private static int peopleNum = 10; private static CyclicBarrier barrier = new C...
2019-09-02 15:28:00
187
转载 java OutOfMemoryError排查
一,什么是OOM,原因有哪些 OOM也叫内存溢出,导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 代码中存在死循环或循环产生过多重复的对象实体; 使用的第三方软件中的BUG; 启动参数内存值设定的过小; 二,通过一个案例定位排...
2019-09-02 00:19:00
251
转载 java死锁排查
废话不多说,直接看下面死锁代码,这是一个典型的死锁,线程1拿到A锁获取B锁,线程2拿到B锁获取A锁 public class DeadLockTest { private static Object A = new Object(), B = new Object(); public static void main(String[] args) ...
2019-09-01 22:41:00
99
转载 CountDownLatch的使用
概念:CountDownLatch是java.util.concurrent包中一个类,CountDownLatch只要提供的机制是多个(具体数量等于初始化CountDownLatch时count的值)线程都达到了预期状态或者完成了预期工作时触发事件,其他线程可以等待这个事件来触发自己后续的工作。等待的线程可以是多个,即CountDownLatch可以唤醒多个等待的线程。到达自己预...
2019-08-30 15:16:00
89
转载 spring事务在实际项目开发中的使用
一, 事务的一些基础知识简单回顾一下,讲的不是很深入,网上博客很多。 1,关于事务的四大特性:原子性、隔离性、一致性、持久性 本文不再赘述; 2,事务的隔离级别:读未提交,读已提交,可重复读,串行化(这里应该深入了解各个级别会出现什么问题,比如脏读,不可重复读,幻读) 3,事务的传播行为:事务传播行为指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应...
2019-08-20 16:55:00
1330
转载 springboot自动配置源码解析
springboot版本:2.1.6.RELEASE SpringBoot 自动配置主要通过@EnableAutoConfiguration,@Conditional,@EnableConfigurationProperties或者@ConfigurationProperties等几个注解来进行自动配置完成的。@EnableAutoConfiguration开启...
2019-08-16 15:08:00
132
转载 mybatis批量更新策略
我们知道循环中操作db会导致连接数满,严重影响数据库性能。所以在对db进行DQL与DML时,根据业务逻辑尽量批量操作,这里我们介绍下使用mybatis批量更新mysql的两种方式。 方式一: <update id="updateBatch" parameterType="java.util.List"> <foreach coll...
2019-08-16 09:52:00
144
转载 tk.mybatis扩展通用接口
一.tk.mybatis已经为我们封装好了许多拆箱即用的通用mapper,但在实际的项目开发中想必不少小伙伴在数据库设计中都会采用逻辑删除这种方案,再去使用通用的mapper接口就不行了。这时候就需要我们封装一些扩展的通用Mapper接口。 二.项目中提供了大量现成的方法,这些方法可以作为扩展时的参考。 例如selectAll方法。 首先定义接口: ...
2019-07-16 14:53:00
465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人