- 博客(558)
- 收藏
- 关注
原创 ThreadLocalRandom.current().nextInt(100) 和 Random.nextInt 的区别
ThreadLocalRandom.current().nextInt(100) 和 Random.nextInt(100) 都是在 Java 中生成随机整数的方法,但它们之间存在一些关键区别,特别是在多线程环境下使用时。ThreadLocalRandom 是为多线程环境优化的,每个线程使用 ThreadLocalRandom 时都会有自己的随机数生成器,这样就减少了在多线程环境中争用同一个随机数生成器实例的开销。相对于 Random,它提供了更好的性能和较小的内存占用。
2024-05-21 11:19:23 433
转载 深入Guava Cache的refresh和expire刷新机制
Guava Cache是本地缓存的不二之选,用起来真不错呵,可是你真的知道怎么使用才能满足需求?今天我们深入探讨一下Expire和Refresh。(废话少说)
2024-05-08 09:18:42 17
转载 AtomicBoolean介绍
AtomicBoolean类的优点在于原子性操作,可确保在多线程环境中对布尔值的读取和设置不会产生竞态条件,同时,它的性能通常优于使用synchronized的代码,因为它避免了线程阻塞和上下文切换的开销。同时,AtomicBoolean还提供了丰富的API,如compareAndSet和getAndSet等。但是,虽然AtomicBoolean提供了原子性保证,但它却无法解决并发中的可见性和有序性问题,这里需要特别注意。
2024-04-11 10:10:19 12 1
原创 分页查询优化
分页查询优化,在程序内存中计算出id的值,要比通过select id from 表 order by id 49173090,100,先找到id,再关联查询要快很多的,大概快出3-5倍。
2024-04-03 16:39:17 112
转载 开启String去重XX:+UseStringDeduplication的利与弊
转载 https://blog.csdn.net/goldenfish1919/article/details/94555589。
2024-04-01 19:53:48 27
转载 深入Guava Cache的refresh和expire刷新机制
https://blog.csdn.net/abc86319253/article/details/53020432https://community.jiguang.cn/article/464216
2024-03-22 10:08:44 24
转载 redis命令scan、keys的区别
https://www.cnblogs.com/lxwphp/p/15452534.htmlhttps://blog.51cto.com/JavaAlliance/4803496
2024-03-18 19:59:32 14
转载 Aviator——轻量级Java表达式求值引擎
讲的很清楚、全面 https://developer.aliyun.com/article/608829。
2024-03-18 08:50:06 27
转载 BitSet原理与实践
JAVA中,,根据上述“位图”的概念,那么(无碰撞冲突时)。比如50个数字{0,1,10,…63},判定“15”是否存在,那么我们通常会首先将这些数字使用数组或者hashmap保存,然后再去判定,那么保存这些这些数据需要占用64 * 64位;。(如果换成50个字符串,那么其节约的空间可能更大)。BitSet只面向数字比较,比如set(int a,boolean value)方法,;此后可以。对于string类型的数据,如果像使用BitSet,那么可以。
2024-03-17 13:54:05 26
转载 Shallow Size和Retained Size详解
计算Retained Size的关键在于领会移除实例时, 可以同时被回收的实例, 重点观察B实例的情况。
2024-02-24 23:19:45 339
转载 ping和telnet的区别
Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。Ping(Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。
2023-12-08 18:34:10 271
转载 Thread.sleep、Object.wait、LockSupport.park 区别
转载:https://blog.csdn.net/u013332124/article/details/84647915。
2023-12-08 18:12:32 60
原创 System.getenv()与System.getProperty()
System.getenv()与System.getProperty()的使用场景与区别
2023-10-26 11:39:56 325
转载 try-catch-finally执行顺序你都搞明白了吗?
无论catch是否捕获异常,finally语句块都是要被执行的。当try块或catch块return一个值,那么finally块中的代码会在执行return后,返回之前执行。(此时并没有返回运算后的值,而是把要返回的值暂时保存起来)。finally中如果包含return,那么程序将在这里返回,而不是通过try或catch中的return返回,返回值就不是try或catch中保存的返回值了。会直接在finally中结束方法的执行,导致try、catch中的return失效。
2023-06-02 09:53:04 576
转载 Lombok EqualsAndHashCode 的用法
反编译修改后的User.class,发现有些许变化,变化(1)和(2)解释了@EqualsAndHashCode(callSuper = true)的作用.当@EqualsAndHashCode修改为@EqualsAndHashCode(callSuper = true)时,输出false。参考 https://www.jianshu.com/p/16571aad10a2。
2023-04-16 16:33:46 100
转载 Guava EventBus 发布/订阅模式
EventBus 是 Guava 的事件处理机制,是观察者模式(生产/消费模型)的一种实现。观察者模式在我们日常开发中使用非常广泛,例如在订单系统中,订单状态或者物流信息的变更会向用户发送APP推送、短信、通知卖家、买家等等;审批系统中,审批单的流程流转会通知发起审批用户、审批的领导等等。
2023-01-31 20:54:40 232
转载 maven scope的作用
比如说,假定我们自己的项目ProjectABC 中有一个类叫C1,而这个C1中会import这个portal-impl的artifact中的类B1,那么在编译阶段,我们肯定需要这个B1,否则C1通不过编译,因为我们的scope设置为provided了,所以编译阶段起作用,所以C1正确的通过了编译。刚才我们讲述的是理论部分,现在我们看下,实际插件在运行时候,是如何来区别对待scope=compile和scope=provided的情况的。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?...
2022-08-25 20:00:22 147
转载 HashMap、ConcurrentHashMap原理
JAVA并发容器—ConcurrentHashMapJava HashMap 和 ConcurrentHashMapHashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!Map 这样的 在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。众所周知 HashMap 底层是基于 组成的,不过在 jdk1.
2022-06-27 22:56:16 125
转载 mysql5.6 索引下推
参考MySQL索引下推,原来这么简单!“MySQL5.6”、“索引优化”,其实都是索引下推1、什么是索引下推索引条件下推,也叫索引下推,英文全称Index Condition Pushdown,简称ICP。索引下推是MySQL5.6新添加的特性,用于优化数据的查询。在MySQL5.6之前,通过使用非主键索引进行查询的时候,存储引擎通过索引查询数据,然后将结果返回给MySQL server层,在server层判断是否符合条件。在MySQL5.6及以上版本,可以使用索引下推的特性。当存在索引的列做
2022-04-23 10:51:51 245
原创 Spock单测利器,用过都说好
参考Spock单元测试框架介绍以及在美团优选的实践Spock官网单元测试及框架简介Spock简介在日常开发中,每发布一个需求,为了保证代码逻辑的正确性,需要编写高覆盖率的单元测试。市面上常见的单测框架有Junit、Mock。JUnit适用于没有外部依赖服务、或者外部依赖服务较少的简单类的单测,对于有外部依赖服务的类、或者对运行环境有要求的类,Junit模拟外部依赖、环境非常耗时。Mock类型的单测方式会解决外部依赖不容易模拟的问题,常见的Mock有Jmock、Mockito、PowerMock
2022-03-10 16:41:34 1493
转载 Mybatis 插件机制解析
参考概述Mybatis插件又称拦截器,本篇文章中出现的拦截器都表示插件。Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flush
2022-01-09 17:02:51 335
原创 函数模版简化代码
改造前的代码public class OfflineCacheService { @Autowired private RedisConfig redisConfig; @Override public Result<Void> pexpireAt(String cacheKey, long pexpireAt) { JedisPool jedisPool = redisConfig.getJedisPool(); tr
2021-12-12 18:03:06 592
原创 java环境参数
dockerfile# 设置spring profile或者自定义的jvm参数。如果需要则打开下面的注释内容ENV SERVICE_OPTS="-Dspring.profiles.active=production -Ddruid.logType=slf4j"java// 在dockerfile启动参数中设置System.getProperty("spring.profiles.active")System.getProperty("user.home"); // home/admini
2021-12-11 12:49:13 399
转载 性能分析工具 火焰图
https://arthas.aliyun.com/doc/profiler.htmlhttps://zhuanlan.zhihu.com/p/73385693https://www.ruanyifeng.com/blog/2017/09/flame-graph.htmlhttps://www.infoq.cn/article/a8kmnxdhbwmzxzsytlga
2021-11-23 11:00:27 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人