- 博客(10)
- 收藏
- 关注
原创 volatile解决什么问题
了解java内存模型,每个线程都有自己的工作内存,工作内存都会从主内存拷贝一份变量(本质上就是高速缓存,这样设计就是为了更好的运行速度),上述循环一致读的是工作内存中的变量。这就是可见性问题,voliatile就是解决此问题的。2. 但是操作boolean,以及赋值操作,天然是原子操作。1. volatile 保证了可见、有序,但是不能保证原子。测试线程安全问题,下面代码,main线程会一直死循环,不会进入判断break。volatile: 保证每次使用变量,都是先从主内存上刷新到本地内存。
2023-06-16 21:21:53 90
原创 简单工厂和工厂方法的优缺点及解决到生产的应用
以上代码实现,可以看出是满足我们想法的:1.开闭原则必须满足;满足2.工厂类提供唯一入口分发;避免新增业务增加新的工厂代码量。满足3.具体业务类且只需要实现自己的业务,其他的一概不需要关心。业务类扩展性好,且不用修改工厂类,或者增加工厂。满足。
2021-11-25 16:19:07 1716 2
原创 Nginx+PHP-FPM服务,Nginx502异常。TCP改为Socket解决
问题:1、Nginx报异常502错误码2、Nginx的log异常信息 2019/06/0317:05:00[error]24892#0: *2recv() failed (104: Connection reset by peer)whilereading response header from upstream, client:**************, se...
2019-07-28 22:46:52 555 2
原创 linux服务CPU过高,以及scala代码优化
背景:公司的消息系统的保持长链接的服务(scala编写)。在IDC的机器(12C24G)上一直运行着,一直存在CPU过高,老员工写的2小时重启,重启缺失能解决问题。最近服务要上阿里云,使用4C8G的实例。不一会CPU使用率就到了600%,负载最高达到了16。所以解决CPU过高迫在眉睫。定位问题:jvm上运行的服务导致CPU过高网上多数写的很清楚了。本项目是scala编写,所以适用,三板斧:...
2019-07-28 22:37:26 368 1
转载 navicate旧版本、以及最新新版本的破解
此贴只是为了方便你我他,跳转用,网上的99%的帖子都过时了(根本就不维护)。还是要看原帖,那些看了破解了的人写了自己的破解教程,然后就软件也不升级,跟着博客也不升级,毫无意义可言。原文链接:https://github.com/DoubleLabyrinth/navicat-keygen.githttps://github.com/DoubleLabyrinth/navicat-keygen.gi...
2018-07-08 11:18:37 3262
原创 在nginx集群上升级vue项目,踩坑过程
目的:部署项目到nginx集群的三个节点上。升级代码过程很简单,rpm run build 后的 dist目录打包后,分别上传到三个节点下的。1、初步我是先替换了node1节点的代码(node1、node3还是旧代码),想着刷新页面,如果负载均衡到node1上就能看出的我的代码是否修改成功了。问题出现了,只要负载到node1,就报js语法错误(<token......,首先项目在本地跑是正常...
2018-07-08 11:04:53 833
原创 设置数据源超时等待,重要性。(关键字:后台post请求进不去,get可以,不打印日志)
想当然地以为程序连接不到数据库就会报异常,日志中就可以看到,但是今天遇到的问题真是熬了半天的时间,定位问题的方向不对。记录并反思。背景:1、完成一个支付渠道的开发。2、一个只放了测试页面的动态项目。功能就是模拟其他服务发送http请求,走流程。部署:测试linux的tomcat中把这两个web工程放进去启动。没报错。3、访问页面可以访问到。但是提交表单,请求发送不到另一个服务上。接口不通。在本地起...
2018-06-09 23:38:03 1371
原创 maven本地依赖project问题
maven本地依赖project问题,buildpath中有依赖的工程文件夹,但是启动报错classnodefound,也就是没有添加成功。初步解决:将依赖以及源码都安装到本地仓库中,命令 mvn clean source:jar install 此方案的效果就像是,把你的依赖当作不可修改的代码处理,就好比添加进来的jdk源码包。但是不能...
2018-05-18 19:46:42 1324
原创 2、HashMap线程安全问题
1、并发测试,会出现的赋值成功,但是结果却是数量少了。 new Thread(new Runnable() { @Override public void run() { for (int i = 0;...
2018-04-06 22:29:04 229
原创 HashMap部分源码阅读,主要是put方法相关的部分
前言:一定要理解是有顺序的很多桶,桶中装的可不是一个元素。桶的数量就是hashmap通常所说的容量(单位是桶)。桶的数量不一定等于数量size(),so很明显容量不是存放的元素个数。源码中显示的hashmap的容量就是底层table数组的长度1、初始桶数量:int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 162、最大的桶数量:MUST be ...
2018-03-24 21:44:06 260 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人