自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

让我做你的眼睛

写一点遇到的坑

  • 博客(33)
  • 收藏
  • 关注

原创 CAS、AtomicInteger、synchronized原理

并发锁

2022-10-30 14:51:59 331 1

原创 线程池的工作原理

线程池原理

2022-10-28 09:59:50 558

原创 List、set、concurrentHashMap原理

集合底层原理

2022-10-27 09:40:51 295

原创 JMM内存模型高频面试题合集

JMM

2022-10-25 23:46:36 281

原创 JMM并发模型

并发JMM

2022-10-25 00:20:01 187

原创 微服务架构

微服务简介

2022-10-22 13:48:02 351

原创 ThreadLocal

ThreadLocal

2022-10-21 18:36:46 391 1

原创 系统CPU过高,导致系统GC频繁,会引发一系列问题,如何定位原因呢?---以跑批洗数据为例

1. 第一步 top 查看cpu,如图java 进程号 1066182. top -Hp 106618 查看该进程下所有的线程情况3. 把线程ID转为16进制printf "%x" 10762216进制转10进制 printf "%d" 0x1a4664. 把堆栈信息输出到文件中jstack 106618 >> 2020072101.txt5. 在堆栈信息中查找该16进制线程号,分析具体代码情况...

2020-07-21 17:25:09 762

转载 HashMap为什么是线程不安全的

我们知道hashmap的扩容因子是0.75如果hashmap的数组长度已经使用了75%就会引起扩容,会新申请一个长度为原来两倍的桶数组,然后将原数组的元素重新映射到新的数组中,原有数据的引用会逐个被置为null。就是在resize()扩容的时候会造成线程不安全。另外当一个新节点想要插入hashmap的链表时,在jdk1.8之前的版本是插在头部,在1.8后是插在尾部那么hashmap什么时候进行...

2020-01-09 19:22:27 189

原创 linux 常用查看命令

查看各个进程内存所占百分比,使用情况ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less

2020-01-09 11:27:28 228

原创 JAVA什么时候执行垃圾回收以及回收流程

JAVA head 分三个区域:1、新生代:1).Eden(伊甸园)区是新对象分配内存的地方,由于堆是所有线程共享的,因此在堆上分配内存需要加锁。而Sun JDK为提升效率,会为每个新建的线程在Eden上分配一块独立的空间由该线程独享,这块空间称为TLAB(Thread Local Allocation Buffer)。在TLAB上分配内存不需要加锁,因此JVM在给线程中的对象分配内存时会尽量...

2020-01-09 11:06:51 544

原创 一周内第二次MQ积压问题

旧机房6台服务器MQ全部停掉后,MQ积压告警,原因是分账MQ有两套,针对二维码某种业务的原来有4台机器,但是新机房的6台读取的配置文件都是prod,并没有读取新MQ qrProd代码如下: @Bean public SimpleMessageConsumer<String> direct() { String exchangeName = env...

2019-10-24 19:56:59 477

原创 20191018 投产导致结算MQ没有及时消费

第三季度 修改了配置文件获取方式,原来是 private static Environment evironment; public static String getEnvironmentProperty(String key) { if (evironment == null) { evironment = SpringUtils.g...

2019-10-24 16:22:51 196

原创 Gradle版本升级流程及注意事项

因架构升级,需要系统更换gradle版本,gradle 2.14.1升到4.10版本以上,也是第一次做这个事,记录一下,还是有一些坑的主要修改的就是gradle 配置第一步,下载高版本gradle all.zip 包含了gradle源码,一般我们只需要下载bin.zip就可以用第二步 修改新安装的gradle地址,刷下gradle包第三步 修改gradle 配置高版本不...

2019-08-09 11:24:16 6007 1

原创 selectKey标签详解

1.为什么要使用selectKey数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键2.具体实现demo查询数据库最简单的几步2.1 controller@Controllerpublic class SelectKeyContro...

2019-05-14 19:10:35 31584 3

原创 mysql 替换like的几种方法

1.LOCATE语句SELECTcolumnfromtablewhere locate(‘keyword’,condition)>02.locate 的別名 positionPOSITION语句SELECTcolumnfromtablewhere position(‘keyword’ INcondition)3.INSTR语句SELECTcol...

2019-05-07 16:10:50 5521

原创 UnsupportedOperationException异常

今天写了一个String转list,然后新创建的list.add()会报错java.lang.UnsupportedOperationException List&lt;String&gt; list = Arrays.asList("1,2,3"); list.add("2"); public static &lt;T&gt; List&lt;T&gt; asL...

2019-03-15 11:25:59 2802

原创 深度复制和浅度复制

1.深度复制和浅度复制深度复制和浅度复制的区别在于有没有为拷贝出的新对象重新分配一块内存区域。 浅度拷贝即直接赋值,拷贝的只是原始对象的引用,在堆中仍然公用一块内存,而深度拷贝为新对象在堆中重新分配一块内存,所以对新对象的操作不会影响原始对象public class Person implements Cloneable { String name; Stri...

2019-03-15 11:09:48 524

转载 curl命令详解

常用参数详解参数 描述 -I/--head 只显示传输文档,经常用于测试连接本身 -o/--output 把输出写到该文件中,必须输入保存文件名 -O/--remote-name 把输出写到该文件中,保留远程文件的文件名 -F/--form 模拟表单提交 -s/--silent 静默模式,不输出任何东西 -S/--show-error...

2019-02-19 10:31:35 2218

转载 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.

出现这个异常说明了跳转页面的url无对应的值.原因1:Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包 原因:spring-boot会自动加载启动类所在包下及其子包下的所有组件.原因2:在springboot的配置文件:application.yml或application.properties中关于视图解析器的配置问题: 当pom...

2019-02-14 16:44:19 383

原创 mysql事务隔离级别

1.mysql事务隔离级别mysql默认的事务隔离级别为repeatable-read1、读未提交:(1)打开一个客户端A,并设置当前事务模式为read uncommitted(未提交读),查询表account的初始值:(2)在客户端A的事务提交之前,打开另一个客户端B,更新表account: (3)这时,虽然客户端B的事务还没提交,但是客户端A就可以查询到B已经更新的...

2019-01-29 16:06:47 236

原创 事务PlatformTransactionManager

1.事务三大接口PlatformTransactionManager 事务管理器 TransactionDefinition 事务的一些基础信息,如超时时间、隔离级别、传播属性等 TransactionStatus 事务的一些状态信息,如是否一个新的事务、是否已被标记为回滚2.PlatformTransactionManagerpublic interface PlatformTr...

2019-01-29 11:42:08 24168 1

原创 mysql查询超时,跑批报错分析原因

1. 跑批报错 日志如下:最开始以为是那天的数据有什么问题,然后把sql和对应的值拿出来在测试环境执行也不行 报一样的错,就是查询超时在查询生产表的数据量发现19号开始,二维码的量到了60W,我认为是量大后查询变慢,设置的300s超时,现在300s查不出来报错但是所有的表都做了分区,按理说一天60W的量也没有问题,只会查找那一天的最终确认原因是 没有写执行日志表的时间 m.exec...

2019-01-23 19:09:57 1592

原创 synchronized和Lock

1. synchronized的缺陷synchronized是java的一个关键字,也就是说是java语言的特性。如果一个代码块被synchronized修饰,当一个线程获取了对应的锁,其他线程只能等待,这里释放锁只有两种情况: (1)执行完了该代码块,该线程释放对锁的占有(2)线程执行发生异常,此时JVM 会让线程自动释放锁 那么如果这个获取锁的线程由于等待IO或其他原因(sleep...

2019-01-22 16:21:24 117 1

原创 对于多模块项目如何创建

对于多模块项目如何创建在工作中一个project经常需要建立多个子模块,例如common、service、management、quartz 那么如何创建并且管理模块间的依赖1.正常建立一个springboot项目,作为大的project,例如命名wjt-workspace,删除src,保留settings.gradle,添加include,如图:2.添加module正...

2019-01-22 13:54:50 1290

原创 如何获取dump文件

1、获取应用的pid使用ps -ef | grep java查询服务器上的java应用进程信息,找到应用进程及id2、使用jmap获取dump信息jmap -dump:format=b,file=/home/app/dump.out 17740注:/home/app/dump.out表示生成的dump文件的存放地址及文件名,自己定义存放位置,17740表示1中查询到的应用pid3、分析d...

2019-01-17 15:21:48 7146

原创 RandomStringUtils工具类

//产生5位长度的随机字符串,中文环境下是乱码RandomStringUtils.random(5);//使用指定的字符生成5位长度的随机字符串RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});//生成指定长度的字母和数字的随机组合字符串RandomStringUtils....

2018-12-18 11:14:40 1164

原创 Forbidden什么意思

403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是“HEAD”,并且服务器想让客户端知道为什么没有权限的情况下,服务器应该在返回的信息中描述拒绝的理由。在服务器不想提供任何反馈信息的情况下,服务器可以用404 Not Foun...

2018-12-18 10:19:47 3376

原创 myBatis逆向工程

1.添加相关依赖 testCompile("org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7") // 如果不添加连接依赖,则报错:Exception getting JDBC Driver compile("mysql:mysql-connector-java") 2.写配置文件 ...

2018-12-17 18:24:00 184

原创 IDEA导入项目失败,类是灰色的另一种情况

今天在导入别人写的项目时,发现类是灰色的,刷包,重新导入都不能用,在网上看了很多文章说是在类工程下点击+module,也是不行的!!!在对单个子模块刷包时会报这样的错: Could not get unknown property 'suixingpayStarterVersion' for object of type org.gradle.api.internal.artifacts...

2018-12-17 15:19:27 6254 2

原创 nfs挂载实现

mac 实现 挂载 nfs1. nfs是网络文件系统,允许一个节点通过网络远程访问远程计算机的文件系统,远程文件系统可以直接挂载到本地,文件操作和本地文件没有区别,如果是本地局域网的nfs,那么io的性能也可以保证2. 首先检查服务端的配置,服务端提供文件系统供客户端来挂载使用,检查是否缺少基础环境:rpm -qa|grep nfs-utils rpm -qa|grep rpcbind...

2018-12-17 15:04:31 2391

原创 Redis 学习

Redis 简介:Remote Dictionary Server (redis)  用C语言编写的key-value数据存储服务器Value值可以是字符串(String)、哈希(map)、列表(list)、集合(set) 和有序集合(sorted sets) 等类型 通常也被称为数据结构服务器。Redis 属于NoSql 服务器,NoSql服务器也叫非关系型数据库,(Not Only...

2018-08-17 16:17:25 173 3

转载 数据库SQL优化——使用EXIST代替IN

查询进行优化,应尽量避免全表扫描  对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 . 尝试下面的技巧以避免优化器错选了表扫描: · 使用ANALYZE TABLEtbl_name为扫描的表更新关键字分布。 · 对扫描的表使用FORCEINDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。 SELEC...

2018-08-10 10:06:45 2202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除