技术片段
文章平均质量分 74
学是为了不学
你学习吗?大家都在学习噢
展开
-
redis 分布式锁实现
3、锁可以续期,应该怎么续期?通过一个线程,比较锁key的对应的value(uuid)在一定时间内是发生变化(获取定时查看锁剩余时间,小于10s,重新设置时间,类似watch机制),执行三次即可;4、删除锁必须当前线程操作,threadlocal获取和存放的value值比较;5、删除锁之前的获取比较,和删除操作应该也是原子操作,建议使用lua脚本;2、可重入的问题:判断锁key的对应的value(uuid)是否相等;1、锁的获取和锁的过期时间设置需要原子操作;原创 2023-04-26 22:21:57 · 117 阅读 · 0 评论 -
synchronized原理:
抢占资源之前都先放到contentList,然后放到entryList,才有资格去获取锁,A线程执行monitorEnter,成功获取锁则对count+1,重入之后,继续累加,执行完任务之后【执行过程中,若调用await方法,则放进waitset集合内,需要被notify才行】,最后执行monitorExit进行释放锁。(1) 如果monitor的进入数为0,则该线程进入monitor,然后将进入数设置为1,该线程即为monitor的所有者。//处于wait状态的线程,会被加入到_WaitSet。原创 2023-04-22 17:28:09 · 470 阅读 · 0 评论 -
接口的幂等性,如何保证
最近跟朋友聊起这个话题,想深入了解下,于是学习总结,记录下来,此文章参考以下博客综合而来表示感谢:参考:分布式系统接口幂等性参考:高并发的核心技术-幂等的实现方案参考:什么是分布式系统中的幂等性1. 接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理完毕后返回结果的时候挂掉,这个时候用户端...转载 2021-06-08 23:39:38 · 691 阅读 · 0 评论 -
redis缓存和数据库双写一致性问题
今天陪大家来一起研究下redis缓存和数据库双写一致性问题我相信redis对于大多数程序猿并不陌生,大家在日常使用中肯定会遇到双写一直性问题,当然对于这个问题的解决方案大家肯定都各有见解,那么今天我就给大家总结一下常见解决方案先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的终极解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然..转载 2021-06-08 23:38:05 · 328 阅读 · 0 评论 -
Mybaits 运行原理流程时序图
mybatis是目前应用常见的映射框架,用了工厂模式,代理模式,模板模式,装饰器模式等设计模式;基本例子 /** * 通过 SqlSession.getMapper(XXXMapper.class) 接口方式 * @throws IOException */ @Test public void testSelect() throws IOException { String resource = "mybatis-config.xml原创 2021-03-09 23:03:40 · 260 阅读 · 0 评论 -
volatile不能保证原子性,atomic不仅保证可见性还有原子性CAS分析
给一个变量加了volatile关键字,就会告诉编译器和JVM的内存模型:这个变量是对所有线程共享的、可见的,每次jvm都会读取最新写入的值并使其最新值在所有CPU可见。volatile似乎是有时候可以代替简单的锁,似乎加了volatile关键字就省掉了锁。但又说volatile不能保证原子性(java程序员很熟悉这句话:volatile仅仅用来保证该变量对所有线程的可见性,但不保证原子性...原创 2019-07-10 16:17:14 · 2147 阅读 · 2 评论 -
解析url图片并 进行邮件的附件发送:示例
public class MailTest { public static void main(String[] args) throws Exception { String localImgUrl = "https://cdn-jdo-test.jidouauto.com/jdo/media_img/20200609/n5DkF51591692476.jpg"; // 构造URL URL url = new URL(localImgUrl);...原创 2020-09-15 16:56:18 · 849 阅读 · 0 评论 -
Apollo配置中心动态的刷新和获取配置
1、某些简单的属性可以直接使用@Value注解的配置会自动刷新配置2、多个管理(或者说复杂的配置各种配置)加一个配置类即可@Component("systemConfig")@ConfigurationProperties(prefix = "cword")@RefreshScope@EnableApolloConfig("cword")public class SystemConfig { private Resource filePath; private Reso原创 2020-08-25 23:50:19 · 5951 阅读 · 0 评论 -
mqsql利用map的批量更新数据库数据
今天试了一下1、##mapper:/** * 批量更新排序 * @param sortMap * @return */int updateSortMore(@Param("sortMap")Map<Integer, Short> sortMap);2##sql<update id="updateSortMore"> <foreac...原创 2020-04-23 17:47:50 · 634 阅读 · 0 评论 -
java对有英文的日期进行格式化
我是最近在解析某个csv文件是,返现里面的日期字段全部是 数字-英文月份-数字年 例如:05-Mar-2019 ,而我入库存储date类型必须在java方法中对它进行转化,其实我们可以将它split之后,对Mar做个枚举类,来获取对应的 03,但是,谁让我懒呢,就想着有没有一步到位的方法;好,废话结束,直接贴代码:public static void main(String[] args)...转载 2019-11-16 10:08:21 · 2409 阅读 · 0 评论 -
实体类为什么要实现Serializable序列化的作用
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用...转载 2019-11-12 15:08:01 · 1250 阅读 · 0 评论 -
Java的导出excel表格,简单易懂
1、常用组件:HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,有以下几种常用的对象:HSSFWorkbook excel的文档对象HSSFSheet excel的表单HSSFRow excel的行HSSFCel...原创 2019-10-09 10:59:22 · 365 阅读 · 1 评论