- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 【最佳实践】使用 CAS 方式并发插入或更新数据到数据库 2021-08-17
CAS 并发更新或者插入一条数据使用场景Java 核心代码示例MySQL 业务表信息使用场景消费消息队列MQ的消息,持久化到DB时。可能会有并发操作的业务中。Java 核心代码示例import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.RandomUtils;import org.springframework.dao.DuplicateKeyException;import org.springframework
2021-08-17 20:31:59
1500
2
原创 【最佳实践】并发请求微服务接口来加快接口响应速度 2021-08-17
以前使用过的 CountDownLatch 方式CountDownLatch 基本工作原理和使用案例现在使用的 Lambda 方式示例代码:// 定义一个公共的池public static final ForkJoinPool FORK_JOIN_POOL = new ForkJoinPool(Runtime.getRuntime().availableProcessors());public List<RegionInfoDTO> getRegionInfos(
2021-08-17 17:55:31
463
原创 解决 CentOS7 最小化安装后无法联网问题
这里写自定义目录标题需要先开启网络服务需要先开启网络服务1)激活网卡切root用户修改文件:/etc/sysconfig/network-scripts/ifcfg-XXXX将 ONBOOT=no 改为 ONBOOT=yes2)启动network服务service network restart
2020-09-17 19:43:55
398
原创 单例模式最佳实践 2020-09-10
单例模式维基百科:In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one "single" instance. This is useful when exactly one object is needed to coordinate actions across the system. The .
2020-09-10 23:40:15
282
原创 阿里云OSS与NAS
对象存储OSS调研结果:我们使用OSS的方式不是最佳实践,一句话解释:没有为对象Object使用随机前缀,而是使用的顺序前缀。顺序前缀策略可能会导致存储对象的分区成为热点分区,而每个分区的I/O能力是有限的,也就是说繁忙时会被限速;另外达到一定条件时,分区数据再均衡还可能会延长请求处理时间(因为它要忙着再均衡)。最佳实践:多开辟Bucket,多使用随机前缀,使得数据分布相对离散,从而最大化利用OSS的能力。适合场景:适合互联网架构的海量数据的上传下载和分发。文件存储NAS调研结果:.
2020-07-06 18:59:49
1006
原创 同步编程和异步编程的差异
差异:同步编程- 一个请求对应一个线程。- 所有都是阻塞执行,所有的执行都在一个线程持续。- ThreadLocals工作良好。异步编程- 一个请求可能会被多个线程去执行。- 所有都是非阻塞执行,一个被接受的请求可能会被返回到另一个线程的客户端(Client)。- ThreadLocals必须从一个线程传播到另一个线程。关于异步编程的总结:DO...- Learn fu...
2020-04-08 17:05:22
874
原创 Git 常用命令简单记录
git reflog 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)git reset --hard HEAD~1 退回到上一个版本git reset --hard <commitid> 退回到指定commitid的版本(不保留这些被退回的提交)git reset --mixed <commitid> 退回到指定commiti...
2020-04-08 17:02:40
136
原创 CountDownLatch 基本工作原理和使用案例
定义:一种多功能的同步工具,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。字面可以翻译为“倒计时锁存器”。功能:使用给定的计数初始化CountDownLatch。由于countCount方法的调用,直到当前计数达到零为止,await方法将阻塞,此后所有释放的线程将被释放,并且任何随后的await调用将立即返回。这是一种一次性现象-无法重置计数。如果需要用于重置计数的版本,请...
2020-02-28 18:48:12
796
原创 给一个大的 List 分区(根据给定的最大子列表Size均衡的分割出相应的子List)
核心思想:就是计算出相对均等的桶大小,然后利用Guava的Lists.partition()方法来分区。应用场景:请求的接口只允许一次请求1000个数据,而实际上要请求的数据超过1000,此时就可以利用次方法先分割;然后,再利用多线程和CountDownLatch工具来并发获取数据,从而提高响应速度。好了,话不多说,请看代码:import com.google.common.co...
2020-02-27 18:27:00
276
原创 超实用的SpringBoot中全局异常处理器(供参考)
import com.xxx.exception.CodingCloudException;import com.xxx.exception.ResourceNotFoundException;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.apache.com...
2020-02-06 19:05:38
639
原创 Linux 服务器上如何通过 Shell 脚本一键部署 SpringBoot 应用?
下面的脚本适用于在Linux环境下,部署Java可执行jar包。需要对应的修改环境相关的参数,比如代码路径、部署路径、日志输出位置等。记得执行 chmod +x restart_server.sh 来让脚本可执行。#! /bin/shexport JAVA_HOME=$JAVA_11_HOMEhome_path=/home/workgit_branch=masterserver_p...
2019-05-19 15:49:44
961
翻译 什么是 Servlet 容器?
目录1、什么是 Web 服务器?2、什么是 Servlet 容器?3、什么是 Servlet?4、Servlet 容器和 Web 服务器如何处理一个请求的?5、JVM 的作用我们简单的谈一谈关于Web服务器,Servlet 容器及其与JVM 的关系。其实Servlet 容器只不过是一个 Java 程序。1、什么是 Web 服务器?想要了解什么是 Servl...
2019-04-30 23:10:08
18989
原创 Git免密码操作
在部署服务的时候,初期阶段,在没有运维的情况下,我们需要自己给代码构建打包放到服务器上部署。一般我们有两种方式:一种是直接打好包,上传到服务器上,然后部署;一种是在服务器上拉代码,然后配置好构建环境,然后打包部署,这个方式好处是拉代码的速度远快于本地打包上传。使用持续集成工具部署的方式不在讨论范围之内,就不提了。现在我们来说说,在使用Git的情况下,如何使用服务器上Pull代码的形式,...
2019-01-07 18:29:54
1231
原创 MySQL中如何存储字符宽度最大为4个字节的UTF-8编码?
问题来源在存储Scratch项目的xml内容时,DB报了个错:Incorrect string value: '\xF0\x9F\x91\x8B",...' for colum ...........(省略)原因因为数据库默认配置都是uft8,具体如下:SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_...
2019-01-01 23:14:03
1709
原创 SpringBoot中单机Reidsson客户端配置
这其中有一个大坑! 在 application.yml 配置中,redis密码配置为空的时候(如下代码所示),如果调用setPassword(password)方法直接设置密码,那么传入的将是一个空字符串,然后你就会发现怎么就连接不是redis呢?!所以这里一定要判断空字符串,将其转为null再SetPassword。(或者配置文件中不配置password这个属性应该默认就是null)...
2018-12-25 15:47:14
927
原创 Tomcat9 启动时创建 SecureRandom 实例使用了过长的时间
问题:Tomcat启动慢,启动日志提示:警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [172,808] milliseco...
2018-12-04 17:47:01
1672
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人