
java
@淡 定
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySql过滤重复数据
【代码】MySql过滤重复数据。原创 2023-08-17 22:29:41 · 566 阅读 · 0 评论 -
文件上传下载
【代码】文件上传下载。原创 2023-01-12 19:25:08 · 152 阅读 · 1 评论 -
rabbitmq消息失败的补偿
【代码】rabbitmq消息失败的补偿。原创 2023-01-12 10:50:27 · 399 阅读 · 0 评论 -
消息的可靠传递
消息的可靠传递。原创 2022-12-23 10:57:20 · 119 阅读 · 0 评论 -
kubernetes基础操作
kubernetes基础操作。原创 2022-11-30 18:14:30 · 246 阅读 · 0 评论 -
feign实现组件服务调用
feign实现组件服务调用。原创 2022-11-30 18:05:41 · 126 阅读 · 0 评论 -
邮件发送实现
邮件发送实现。原创 2022-11-30 17:55:57 · 177 阅读 · 0 评论 -
Rabbitmq 延时队列
rabbitmq延时队列原创 2022-10-22 23:00:45 · 138 阅读 · 0 评论 -
设计模式-代理模式
【代码】设计模式-代理模式。原创 2022-09-25 10:24:15 · 119 阅读 · 0 评论 -
设计模式-责任链模式
设计模式:责任链模式原创 2022-09-18 22:52:00 · 119 阅读 · 0 评论 -
设计模式-模板模式
【代码】设计模式-模板模式。原创 2022-09-18 22:16:53 · 114 阅读 · 0 评论 -
对比两个properties文件差异
【代码】对比两个properties文件差异。原创 2022-08-22 22:58:14 · 506 阅读 · 0 评论 -
docker操作命令
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。转载 2022-08-20 21:50:56 · 1193 阅读 · 0 评论 -
rabbitmq订单消费案例
需求:订单provide:补单provide:config:custome:参考:https://blog.youkuaiyun.com/qq_31463999/article/details/89788176?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165746494416781685354052%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_原创 2022-07-10 23:34:32 · 920 阅读 · 0 评论 -
数据库批量插入数据
数据库批量处理数据原创 2022-06-29 17:41:29 · 292 阅读 · 0 评论 -
延时队列两种实现方式
延时队列原创 2022-06-29 14:41:14 · 216 阅读 · 0 评论 -
线程池批量处理数据
配置参数:配置类:异步处理方法:主方法:原创 2022-06-23 17:36:42 · 1348 阅读 · 0 评论 -
多线程执行案例
手动创建的线程池使用后务必关闭public static void main(String[] args)throws Exception { Console.log(DateUtil.now()); ExecutorService executorService=new ThreadPoolExecutor(5,10, 1L, TimeUnit.SECONDS, new LinkedBlockingQueue原创 2022-04-17 22:36:22 · 302 阅读 · 0 评论 -
RabbitMQ解决分布式事务问题案例
配置类/** * 商户金融权益分配rebbit配置 */@Configurationpublic class ShopDelegateRabbitMqConfig { private static final Logger log = LoggerFactory.getLogger(ShopDelegateRabbitMqConfig.class); @Autowired private DelegateShopConfig delegateShopConfig;原创 2022-04-16 20:37:52 · 1907 阅读 · 0 评论 -
mysql的TO_DAYS函数
就是计算从年份0开始的天数 //查询昨天的数据select * from order where to_days(now())-to_days(create_time)<1//同理前天的数据select * from order where to_days(now())-to_days(create_time)<2 and to_days(now())-to_days(create_time)>1...原创 2022-03-26 10:45:30 · 1048 阅读 · 0 评论 -
java导出excel封装
import org.apache.commons.collections.CollectionUtils;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;im..原创 2022-03-24 11:35:47 · 845 阅读 · 0 评论 -
Redis过期键删除策略
定时删除在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。 优点:对内存是最友好的,保证过期键会尽可能快地被删除,并释放 过期键所占用的内存。 缺点:对cpu时间是最不友好的,过期键比较多的情况下,删除键会占 用相当一部分的cpu时间,无疑会对服务器的响应时间和吞吐量造成影响惰性删除程序只会在取出键时才对键进行过期检查。 优点:对cpu时间来说是最友好的,可以保证过期键的删除操作只会非 做不可的情原创 2022-03-08 17:36:24 · 660 阅读 · 0 评论 -
JVM架构分析
jvm的运行时数据区:JVM内存结构图和垃圾回收VM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。非堆内存用途:永久代,也称为方法区,存储程序运行时长期存活的对象,比如类的元原创 2022-02-28 10:20:37 · 623 阅读 · 1 评论 -
Redis过期键删除策略
1 惰性删除 1所有读写数据库的Redis命令在执行之前都会调用expireIfNeeded函数对输入键进行检查:如果输入键已经过期,那么expireIfNeeded函数将输入键从数据库中删除。如果输入键未过期,那么expireIfNeeded函数不做动作。 2程序只会在取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行,并且删除的目标仅限于当前处理的键,这个策略不会在删除其他无关的过期键上花费任何CPU时间。 3它对内存是最不友好的:如果一个键已经原创 2022-02-24 16:01:38 · 226 阅读 · 0 评论 -
Redis持久化机制
1 .RDB原理是redis会单独创建(fork)一个与当前进程一样的子进程来进行持久化,这个子进程的所有数据都和原进程一模一样,会先将数据写入到一个临时文件中,待持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的io操作,这就确保了极高的性能。rdb默认开启.2 .AOF如果要开启,在redis.conf配置文件中修改appendonly yes,原理是将Redis的操作文件以追加的方式写入文件,读操作是不记录的.2.2触发机制(根据配置文件配置项)n原创 2022-02-24 13:51:30 · 190 阅读 · 0 评论 -
Zookeeper和Redis做分布式锁的区别
1 redis只保证最终一致性,副本间的数据复制是异步进行(set是写,get是读,redis集群一般是读写分离架构,存在主从同步延迟情况),主从切换之后可能有部分数据没有复制过去的可能会丢失锁的情况,所以强一致性的业务不推荐使用redis,推荐使用zk. 2 redis集群个方法的响应时间比较低,但是随着并发量和业务数据的提升会影响其响应时间,zookeeper集群,锁原理是使用zk的临时顺序节点,临时顺序节点的生命周期在client与集群的session结束时结束,因此如果某个client节点.原创 2022-02-23 15:24:01 · 319 阅读 · 0 评论 -
spring bean的生命周期
1 实例化bean对象 通过反射的方式进行对象的创建,此时的创建只是在堆空间中申请空间,属性都是默认值.2 设置对象属性 给对象中的属性进行值的设置工作3 检查Aware相关接口并设置相关依赖 如果对象中需要引用容器内部的对象,那么需要调用aware接口的子类方法进行统一的设置4 beanPostprocessor的前置处理 对生成的bean对象进行前置处理工作5 检查是否是initialzingBean的子类来决定是否调用afterPropertiseSet方法 判断当前bean对象是原创 2022-02-21 15:32:14 · 235 阅读 · 0 评论 -
mybatis存在更新不存在新增
1 主键或者唯一索引,有相同的字段进行添加时进行其他字段更新,否则进行新增<insert id="insertFwdcBlacklist" parameterType="com.qujie.mintwo.life.fwdc.entity.FwdcBlacklist"> insert into fwdc_blacklist <trim prefix="(" suffix=")" suffixOverrides=","> &l原创 2022-02-16 15:18:54 · 4236 阅读 · 0 评论 -
多线程实现批量推送数据
1 .采用ThreadPoolExecutor构造方法创建线程池@Servicepublic class PushProcessServiceImpl implements PushProcessService { @Autowired private PushUtil pushUtil; @Autowired private PushProcessMapper pushProcessMapper; private final static Logger log原创 2022-02-16 10:21:36 · 1283 阅读 · 0 评论 -
redis防止页面重复提交
/** * @param request * @return * @描述 添加营销笔记(营销任务入口) */ @PostMapping(value = "/addMarketingNotes", produces = "application/json;charset=UTF-8") public String addMarketingNotes(HttpServletRequest request) { // 获取Id .原创 2022-02-08 10:27:39 · 947 阅读 · 0 评论 -
索引失效几种情况
1.有or必全有索引; or条件中的每个列都加上索引,2.复合索引未用左列字段;3.like以%开头;4.需要类型转换;5.where中索引列有运算;6.where中索引列使用了函数;7.如果mysql觉得全表扫描更快时(数据少);...转载 2022-02-07 15:01:19 · 118 阅读 · 0 评论 -
HashMap和Hashtable的区别
1、继承的父类不同HashMap继承自AbstractMap类。Hashtable继承自Dictionary类。2、HashMap线程不安全,HashTable线程安全Hashtable 中的方法大多是Synchronize的。hashmap使用ConcurrentHashMap解决线程安全问题。并且hashmap采用Iterator遍历,所以增删操作时会抛ConcurrentModificationException异常。3.是否允许null值Hashmap是允许key和value为nu原创 2022-02-06 21:09:01 · 403 阅读 · 0 评论 -
常用cron表达式
(1)0/2 * * * * ? 表示每2秒 执行任务(1)0 0/2 * * * ? 表示每2分钟 执行任务(1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点(5)0 0/30 9原创 2022-02-05 17:56:45 · 332 阅读 · 0 评论 -
多线程的几种线程池使用
1 Executors.newCacheThreadPool()import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; public class NewCachedThreadPoolTest { public static void main(String[] args) { // 创建一个可缓存线程池 ExecutorService cache原创 2022-02-04 20:33:29 · 139 阅读 · 0 评论 -
MySQL 查询当天、本周,本月、上一个月的数据
mysql查询当天的所有信息: SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间字段名) = month(now()) and day(时间字段名) = day(now()); 这个有一些繁琐,还有简单的写法: SELECT * FROM 表名 WHERE date(时间字段名) = curdate(); 查询当天的记录 SELECT ...转载 2022-02-02 23:30:28 · 2143 阅读 · 1 评论 -
Mysql中Sum和Count函数的使用
sum函数//举个例子,if中第一个参数是表达式,成立的话统计第二个参数的值,这个挺好用SELECT SUM(if(if_finish=0,cust_manager_id,0)) a from market_marketing_task count函数//统计参数一条件成立的个数,也比较实用SELECT count(if(if_finish=0,true,null)) a from market_marketing_task ...原创 2022-02-02 10:29:06 · 1161 阅读 · 0 评论 -
Stream的List转Map
//测试user对象@lombok.Dataclass User { private String id; private String name;}//四个参数toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper, BinaryOperator<U> mergeFunction, Suppli原创 2022-02-02 09:49:48 · 1761 阅读 · 0 评论 -
设计模式-单例模式
懒汉式://懒汉式单例类.在第一次调用的时候实例化自己 //并发环境下很可能出现多个Singleton实例public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if (single == null) { si原创 2022-01-30 09:58:26 · 1149 阅读 · 0 评论 -
@Scheduled 和Quartz
一、Quartz1配置<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="startupDelay" value="0"/> <property name="triggers"> <list> &原创 2022-01-18 17:17:58 · 773 阅读 · 0 评论 -
mysql解决唯一索引重复导致的插入失败问题
insert ignore into 表名(name) values ('张三'); replace into 表名(name) values ('张三');原创 2022-01-18 15:30:44 · 883 阅读 · 0 评论