![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端技术
小方编程
这个作者很懒,什么都没留下…
展开
-
【最佳实践】使用 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 · 1354 阅读 · 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 · 410 阅读 · 0 评论 -
阿里云OSS与NAS
对象存储OSS调研结果:我们使用OSS的方式不是最佳实践,一句话解释:没有为对象Object使用随机前缀,而是使用的顺序前缀。顺序前缀策略可能会导致存储对象的分区成为热点分区,而每个分区的I/O能力是有限的,也就是说繁忙时会被限速;另外达到一定条件时,分区数据再均衡还可能会延长请求处理时间(因为它要忙着再均衡)。最佳实践:多开辟Bucket,多使用随机前缀,使得数据分布相对离散,从而最大化利用OSS的能力。适合场景:适合互联网架构的海量数据的上传下载和分发。文件存储NAS调研结果:.原创 2020-07-06 18:59:49 · 920 阅读 · 0 评论 -
CountDownLatch 基本工作原理和使用案例
定义:一种多功能的同步工具,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。字面可以翻译为“倒计时锁存器”。功能:使用给定的计数初始化CountDownLatch。由于countCount方法的调用,直到当前计数达到零为止,await方法将阻塞,此后所有释放的线程将被释放,并且任何随后的await调用将立即返回。这是一种一次性现象-无法重置计数。如果需要用于重置计数的版本,请...原创 2020-02-28 18:48:12 · 722 阅读 · 0 评论 -
给一个大的 List 分区(根据给定的最大子列表Size均衡的分割出相应的子List)
核心思想:就是计算出相对均等的桶大小,然后利用Guava的Lists.partition()方法来分区。应用场景:请求的接口只允许一次请求1000个数据,而实际上要请求的数据超过1000,此时就可以利用次方法先分割;然后,再利用多线程和CountDownLatch工具来并发获取数据,从而提高响应速度。好了,话不多说,请看代码:import com.google.common.co...原创 2020-02-27 18:27:00 · 234 阅读 · 0 评论 -
超实用的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 · 589 阅读 · 0 评论 -
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 · 916 阅读 · 0 评论 -
什么是 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 · 18903 阅读 · 0 评论 -
Git免密码操作
在部署服务的时候,初期阶段,在没有运维的情况下,我们需要自己给代码构建打包放到服务器上部署。一般我们有两种方式:一种是直接打好包,上传到服务器上,然后部署;一种是在服务器上拉代码,然后配置好构建环境,然后打包部署,这个方式好处是拉代码的速度远快于本地打包上传。使用持续集成工具部署的方式不在讨论范围之内,就不提了。现在我们来说说,在使用Git的情况下,如何使用服务器上Pull代码的形式,...原创 2019-01-07 18:29:54 · 1194 阅读 · 0 评论 -
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 · 1647 阅读 · 0 评论 -
SpringBoot中单机Reidsson客户端配置
这其中有一个大坑! 在 application.yml 配置中,redis密码配置为空的时候(如下代码所示),如果调用setPassword(password)方法直接设置密码,那么传入的将是一个空字符串,然后你就会发现怎么就连接不是redis呢?!所以这里一定要判断空字符串,将其转为null再SetPassword。(或者配置文件中不配置password这个属性应该默认就是null)...原创 2018-12-25 15:47:14 · 838 阅读 · 0 评论 -
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 · 1550 阅读 · 0 评论