随笔分类 -  Java

摘要:最近在做工单系统的生产调优,客户想要单子秒出 花了一天时间定位问题,发现查询MySQL、Mongo、Redis 查询耗时都很小,在0~4ms 耗时较大的是一段给 activity 中 form 的 field 设置属性的遍历 有一段 activities.forEach(activity -> {} 阅读全文
posted @ 2022-10-12 14:15 BigBender 阅读(462) 评论(0) 推荐(0) 编辑
摘要:从 SpringApplicaton.run 方法开始 属性: bootstrapRegistryInitializers jar包 中的 spring.factories 根据加载的列表获取实例 排序 属性: listeners 流程同上 属性: mainApplicationClass 获取ma 阅读全文
posted @ 2021-12-24 16:28 BigBender 阅读(106) 评论(0) 推荐(0) 编辑
摘要:JDK1.7 默认初始化容量,16 最大容量2的幂<=1<<30 默认负载因子0.75f 表未膨胀时要共享的空表实例 键值对数量 修饰了transient关键字,无法被序列化 配置源码 /** * The default initial capacity - MUST be a power of t 阅读全文
posted @ 2021-12-09 15:16 BigBender 阅读(107) 评论(0) 推荐(0) 编辑
摘要:Mybatis中使用了JDK反射机制和CGLIB代理 反射机制,通过 Class.forName 加载类,通过方法的 invoke 反射调用方法 JDK动态代理 MyBatis的 Mapper 采用的就是 JDK 动态代理 import java.lang.reflect.InvocationHan 阅读全文
posted @ 2021-12-06 15:02 BigBender 阅读(156) 评论(0) 推荐(0) 编辑
摘要:线程属性 private static final int COUNT_BITS = Integer.SIZE - 3; private static final int CAPACITY = (1 << COUNT_BITS) - 1; Integer.SIZE是32 COUNT_BITS是29 阅读全文
posted @ 2021-09-11 17:17 BigBender 阅读(222) 评论(0) 推荐(0) 编辑
摘要:浅拷贝 值传递,新的内存;引用传递,新的指针 通过构造函数实现浅拷贝 Entity.java public class Entity { // 两个属性值:分别代表值传递和引用传递 private Attr attr; private String name; public Entity(Attr 阅读全文
posted @ 2021-08-18 16:33 BigBender 阅读(115) 评论(0) 推荐(0) 编辑
摘要:Executor Callable Runnable + ret 异步 future futuretask Future + Runnable CompletableFuture(任务管理类) 提供链式处理方式 allOf 一堆任务的管理 anyOf submit task ThreadPoolEx 阅读全文
posted @ 2021-05-28 15:42 BigBender 阅读(40) 评论(0) 推荐(0) 编辑
摘要:Filter Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是 设置字符集 控制权限 控制转向 业务逻辑判断 工作流程 在web.xml文件配置好要拦截的客户端请求,拦截请求 对请求或响应(Request、Response)统一设置 阅读全文
posted @ 2021-04-20 15:13 BigBender 阅读(201) 评论(0) 推荐(0) 编辑
摘要:官方地址:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api Pointcut的API Spring的切入点模型使切入点重用独立于通知类型,可以用同一个切入点针对不同的Advice 阅读全文
posted @ 2021-04-20 13:15 BigBender 阅读(192) 评论(0) 推荐(0) 编辑
摘要:@Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域: 基本作用域singleton(单例) prototype(多例) Web 作用域(reqeust、session、globalsession) 自定义作用域 参数 singleton单例模式 阅读全文
posted @ 2021-04-19 11:26 BigBender 阅读(155) 评论(0) 推荐(0) 编辑
摘要:都是扫描被注解对象注入到bean 区别 @Autowired 默认按 byType 自动注入 @Resource 默认按 byName 自动注入 @Autowired 按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在 如果允许null值,可以设置它的required属性为fal 阅读全文
posted @ 2021-04-17 17:57 BigBender 阅读(51) 评论(0) 推荐(0) 编辑
摘要:悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁 传统的关系型数据库里边就用到了很多这种锁机制 行锁 表锁 读锁 写锁 都是在做操作之前先上锁,再比如Java里面的同步原语synchronized关键字的实现也是 阅读全文
posted @ 2021-03-07 22:10 BigBender 阅读(80) 评论(0) 推荐(0) 编辑
摘要:在spring-boot项目中pom文件里面添加的依赖中的bean,是如何注册到spring-boot项目的spring容器中的呢? spring.factories文件 帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spri 阅读全文
posted @ 2021-03-03 19:09 BigBender 阅读(355) 评论(0) 推荐(0) 编辑
摘要:转自:https://www.jianshu.com/p/e233bb37d2e6 countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue CountDownLat 阅读全文
posted @ 2021-03-02 19:39 BigBender 阅读(49) 评论(0) 推荐(0) 编辑
摘要:JMH(Java Microbenchmark Harness) 官方地址:http://openjdk.java.net/projects/code-tools/jmh/ 添加依赖,官方地址:https://mvnrepository.com/artifact/org.openjdk.jmh/jm 阅读全文
posted @ 2021-02-24 15:15 BigBender 阅读(110) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap 在涉及到Java多线程开发时,如果我们使用HashMap可能会导致死锁问题,使用HashTable效率低 而ConcurrentHashMap既可以保持同步也可以提高并发效率,所以这个时候ConcurrentHashmap是我们最好的选择 Map Map是数组+链 阅读全文
posted @ 2021-02-23 23:41 BigBender 阅读(89) 评论(0) 推荐(0) 编辑
摘要:基本不变式 在执行方法之前和之后,队列必须要保持的不变式: 当入队插入新节点之后,队列中有一个 next 域为 null 的(最后)节点 从 head 开始遍历队列,可以访问所有 item 域不为 null 的节点 head 的不变式和可变式 在执行方法之前和之后,head 必须保持的不变式: 所有 阅读全文
posted @ 2021-02-23 22:51 BigBender 阅读(48) 评论(0) 推荐(0) 编辑
摘要:LockSupport LockSupport.park() 可以用来阻塞当前线程,park是停车的意思,把运行的线程比作行驶的车辆,线程阻塞则相当于汽车停车 该方法还有个变体LockSupport.park(Object blocker),指定线程阻塞的对象blocker,该对象主要用来排查问题 阅读全文
posted @ 2021-02-23 16:36 BigBender 阅读(61) 评论(0) 推荐(0) 编辑
摘要:效率 线程数特别多的时候 Longadder > Atomic > synchroinzed Longadder内部使用了分段锁 Longadder是LongAccumulator的一种特殊形式 ReentrantLock,synchronized对比 cas vs sync trylock loc 阅读全文
posted @ 2021-02-23 00:07 BigBender 阅读(62) 评论(0) 推荐(0) 编辑
摘要:锁升级 为什么会有锁升级 在jdk1.6之前synchronized关键字是管态的mutex互斥锁,耗时长,开销大 此后对synchronized关键字进行了优化,出现了偏向锁,自旋锁和重量锁 锁对象 刚才我们说,锁实际上是加在对象上的,那么被加了锁的对象我们称之为锁对象,在java中,任何一个对象 阅读全文
posted @ 2021-02-22 21:32 BigBender 阅读(145) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩