摘要:
当运维同学突然找你说某台服务器cpu突然飙高,这个时候不要着急,使用jstack命令查看某线程的执行情况,找出问题所在。 1.使用top命令,再shift+h,查看线程的挂起时间,如下图线程的pid=184执行时间持续了170分钟,值得怀疑 2.将线程的pid转成16进制,如下图,输出线程pid=1 阅读全文
摘要:
1.AtomicInteger等原子类的底层都是由Unsafe类的CAS思想和自旋锁实现。 2.CAS思想是把自己的期望值和主存中的值进行比较,如果相同就赋值,不同就不赋值。CAS是CPU原语,是操作系统底层一系列指令实现,这些指令是连续的,所以是原子的。一般用到CAS的地方都有自旋,即先从主存中获 阅读全文
摘要:
创建单例模型的方法有多种,我们常用的是双重校验法,代码如下: public class SingleTon { private static SingleTon instance = null; private SingleTon(){} public static SingleTon getIns 阅读全文
摘要:
定义:volatile是一种轻量级的同步机制,其属性有3个: 1.保证内存数据的可见性 正常每个线程操作数据,都是先将数据从主内存加载到自己的工作内存,在工作内存中进行读取和赋值;而volatile的作用是将数据从主内存中读出,修改后再强刷会主内存,保证其他线程可以看到修改后的数据 2.不保证原子性 阅读全文
摘要:
一. jvm的内存模型分5个区域: 程序计数器:是线程私有的,用来记录当前线程的程序行号 因为多线程执行时,保证线程切换后可以恢复到正确的执行位置,线程私有,每个线程都有自己的程序计数器 2.虚拟机栈:就是传说的栈,线程私有,当一个方法执行时,会创建一个栈帧用于存储局部变量、操作数和方法出口等。一个 阅读全文
摘要:
1.需求,表A中按一定条件,根据a字段统计b、c两字段的总和——sql语句实现,实测好使 db.getCollection("A").aggregate([ { "$match":{ "d":0} },{ "$group":{ "_id":"$a", "total":{ $sum:{$add:["$ 阅读全文
摘要:
1.写bat文件的初心 是每次打包maven项目且跳过测试类时需要手动输入 mvn clean install -Dmaven.test.skip=true 比较麻烦,并且输错一个字母就会导致打包不成功,所以决定用执行bat文件的方式代替 2.问题出现 在bat文件中写入 mvn clean ins 阅读全文
摘要:
1.只查询A表中a、b两字段 db.A.find( {"stage":2,"workStatus":1},//第一个大括号表示查询条件 {"a":1,"b":1}//第二个大括号中字段值为1的表示要显示这些字段 ) 2.不显示a字段,其他字段全显示 db.A.find( {"stage":2,"wo 阅读全文
摘要:
需求:从A、B两表中关联查询且按照某字段分组统计,A表中满足一定的条件,B表数据也要满足一定条件 语法: db.A.aggregate([{ $match:{...}//根据条件匹配A表里的数据 },{ $lookup:{ from:“B”,//关联的B表 localField:, foreignF 阅读全文
摘要:
因为某些原因接收器找不到了,100多块钱的东西扔了怪可惜,从某宝上搜到可以单买接收器,但是太贵,如果你也有这样的担忧,可以按下面步骤来解决: 1.发动关系网,找同事、朋友要了一个已经损坏的同型号的接收器 2.下载一个支持所有型号的对码软件http://www.pc6.com/softview/Sof 阅读全文