自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 java全局变量导致的线程安全问题

3. 落库结果如下,会出现两个一样的结果,因为两个线程用的是同一个对象。2.这是一个公共的解析类。由第一步开始两个线程去跑,代码后面是给对象赋值,落库。一个人的数据跑到了另一个人的里面。4.解决方法,把全局变量改成局部变量就可以了。1.测试复现,通过反射获取到同一个解析类。

2024-02-20 09:11:55 206

原创 mysql不走索引的情况

如果你建立一个(country, product, profit)的联合索引,相当于建立了 (country)、(product,product)、(country,product,profit) 三个索引。如下例子country没有在查询条件内,所以不会走索引。如果开头不是%开头的就会走索引比如SELECT * from sales where product like 'f%';county在查询条件内,可以看到就走了索引,当建立了联合索引的时候查询的时候一定要带上最左边的字段索引才会走索引。

2024-01-03 15:41:03 393 1

原创 ThreadLocal公共代码中使用的问题

3.我的代码如下,自测的时候没有问题,但是只要别人也调用了公共的代码,threadlocal里面就会保留别人调用的那一次记录,因为没有remove掉。从而导致我获取到了上一次的值。2.因为是公共代码会出现上一个线程调用了,而没有删除调用remove方法导致保留了上一次的结果。1.以下是一段公共代码。

2023-11-10 09:12:49 72 1

原创 一行代码速度从23分钟提升到2秒

1.可以看到只是把方法里面的对象提到了最外面这一行代码,速度就提升了非常多,避免了频繁对的创建对象销毁对象。2.这里是拿了1w的数据做的测试,最开始放在方法里面需要23分钟跑完1w的数据,后面提出来后只需要2s就跑完。3.最开始以为是第三方包geocoding它本来就慢,所以跑的那么慢,后面才发现是自己代码的问题。

2023-10-31 10:39:01 119 2

原创 java自动识别省市区街道镇村路

1.3.1

2023-10-08 16:52:32 624 2

原创 Redis快速导入与删除

命令时,由于键仍将保留在内存中,因此 Redis 内存使用情况可能会增加。因此,在删除大量键时,建议在删除任务完成后检查内存使用情况,并在需要时手动释放内存。在使用时,应该注意内存使用情况以及删除任务的异步处理。命令的不同之处在于,它将将要删除的键放入一个专门的队列中,Redis 服务器将在后台异步地处理这些删除任务。命令在删除键时不会阻塞服务器,因此可以在大型数据集上使用,而不会导致服务器在删除键时停滞。命令被调用时,键并没有立即从内存中删除,而是通过使用后台线程异步地删除。需要注意的是,在使用。

2023-09-19 09:20:38 209

原创 TransmittableThreadLocal

是一个线程本地变量的实现,它是在 Java 语言中使用的一个类。与普通的不同,允许在线程之间传递值。在多线程环境下,每个线程可以独立地访问自己的线程本地变量,而不会干扰其他线程的变量。变量的值只对所属线程可见。在此基础上提供了额外的功能。当线程在执行过程中切换到另一个线程时(例如,使用线程池),通过可以保留原始线程的变量值,并在切换后恢复这些值,使得新线程能够继续使用原始线程的变量。这种特性在一些应用场景中非常有用,特别是在线程池、异步任务等需要跨线程传递上下文或状态的情况下。

2023-09-08 10:15:54 1387 1

原创 在Java中,Redis的Pipeline的简单使用

使用Redis Pipeline可以有效地优化多个命令的批量执行,减少网络延迟并提高Redis的性能。特别是在需要执行多个命令的情况下,使用Pipeline可以提供显著的性能改进。// ... // 执行 Pipeline 中的命令 pipeline.sync();// 创建 Pipeline 对象 Pipeline pipeline = jedis.pipelined();通过Pipeline,你可以一次性发送多个命令到Redis服务器,并在最后调用。方法之前,Pipeline会缓存命令,并在调用。

2023-09-07 14:48:25 402

原创 线程中断interrupt、isInterrupted、interrupted的用法

在Java中,线程中断可以通过方法来实现。关于interrupt和。

2023-09-06 16:13:15 132 1

原创 批量插入千万数据到Elasticsearch之bulkProcessor

2.遇到的问题连接超时和io问题,这是因为发起的线程太多了上面我设置了10个线程,一个线程5000的数据,.setBulkActions(5000) .setConcurrentRequests(10) 因为线程太多导致有一个线程不成功的话就会导致缺少数据,后面解决把.setBulkActions(2000) .setConcurrentRequests(1)就成功导入1000万数据成功了。关闭,加在flush的后面一行。

2023-09-05 16:22:38 1409 1

原创 java 8 中Map的computeIfAbsent,computeIfPresent,compute,merge 函数的使用

是 java.util.Map 接口中的一个方法,用于根据指定键获取该键对应的值,并使用指定的函数对该值进行修改或生成新值,然后将新值存储回 Map 中。是 java.util.Map 接口中的一个方法,作用是根据指定键获取该键对应的值,并使用指定的函数生成一个新值,然后将新值存储回 Map 中。是 java.util.Map 接口中的一个方法,它的作用是获取指定键对应的值,如果该键不存在,则使用指定的函数生成一个值并将其返回。该函数接受两个参数:原始值和要合并的新值,并返回合并后的值。

2023-09-05 15:24:01 2142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除