面试突击
Etile_5
这个作者很懒,什么都没留下…
展开
-
GitHub操作
GitHub操作watch:会持续收到该项目的动态fork:复制某个项目到自己的GitHub仓库中star:可以理解为点赞clone:将项目下载到本地follow:关注你感兴趣的作者,会收到他们的动态使用in关键字限制搜索范围XXX关键词 in name 或者description或者readme例如:seckill in:name 项目名称包含秒杀的seckill in:description项目描述包含秒杀的seckill in:readme项目readme文件包含秒杀的原创 2021-03-05 11:34:52 · 132 阅读 · 0 评论 -
CPU占用过高的定位分析
CPU占用过高的定位分析结合JDK和Linux命令来看1.在linux环境中使用top命令找到使用CPU很好的线程top2.使用ps -ef或者jps进一步定位,得知后台程序给我们惹了什么样的麻烦ps -ef|grep java|grep -v grepjps -l3.定位到具体线程和代码ps -mp 进程ID -o THREAD,tid,time :哪一个线程耗费了多少时间4.将需要的线程ID转化为16进制格式(英文格式小写)print“%x\n” 有问题的线程IDj原创 2021-03-05 10:36:32 · 172 阅读 · 1 评论 -
Linux常用命令
Linux常用命令整体:topCPU:vmstat内存:free硬盘:df磁盘IO:iostat网络IO:ifstat整体top :详细查看服务运行所占cpu和内存大小。uptime:是top的简略版本CPUvmstat -n 2 3 :查看内存、CPU等,每两秒采样一次,攻击采样三次。一般vmstat工具的使用是通过两个数字完成的,第一个参数是采样的时间间隔是秒,第二个参数是采样的次数。procsr:运行和等待CPU时间片的进程,原则上1核的CPU运行队列不要超过原创 2021-03-05 10:35:58 · 126 阅读 · 1 评论 -
Java-23中设计模式
Java-23中设计模式设计模式的本质是面向对象设计原则的实际应用。是对类的封装性、继承性和多态性以及类的关联关系和组合的充分理解。一种思维,一种态度,一种进步创建型模式单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式结构型模式适配器模式、桥接模式、装饰模式、组合模式、外观模式、亨元模式、代理模式行为型模式模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式OOP七大原则开闭原则:对扩展开放,对修改关闭原创 2021-03-04 16:42:18 · 163 阅读 · 1 评论 -
ConcurrentHashMap
ConcurrentHashMapConcurrentHashMap继承自HashMap并实现了Map接口HashMap是线程不安全的:在多线程环境下,如果两个线程同时插入相同的key的key-Value键值对,可能就会产生数据重复插入问题。HashTable是线程安全版本,可以解决上述问题。但是由于HashTable是在方法上都加了Synchronized关键字,在线程插入的时候都要争抢锁,所以就会导致资源的浪费,性能低。ConcurrentHashMap中引入的分段锁机制,unSafe原子类,同原创 2021-03-04 10:10:45 · 262 阅读 · 1 评论 -
HashMap详细解析
HashMap详细解析引入:package com.audition.hashmap;import java.util.HashMap;/** * Created with IntelliJ IDEA. * * @Auther: 两杯水 * @Date: 2021/03/03/19:02 * @Description: */public class HashMapDemo { public static void main(String[] args) {原创 2021-03-03 20:32:34 · 188 阅读 · 1 评论 -
java-锁_自我理解
锁引入锁概念代码:package com.audition.lock;import java.util.concurrent.atomic.AtomicInteger;/** * Created with IntelliJ IDEA. * * @Auther: 两杯水 * @Date: 2021/03/03/11:15 * @Description: */public class A { int num = 0; public long getNum(){原创 2021-03-03 16:54:39 · 68 阅读 · 2 评论 -
Mysql索引
Mysql索引索引的底层为B+树B+树作为B树的变种,对数据的存储有所改变,数据由B树各个子节点上存储,变化为存储在最底层的子节点上,而每个叶子节点则记录下个一叶子节点的地址,子节点的数据索引值遵从最左原则,从左到右依次增加。为什么用B+树,为什么不用红黑树?红黑树上每个叶子节点只能记录一条数据,如果有数据增加,就会增加新的叶子节点,这样的话查找时,所经历过的层级就会比较多,从而增加了时间的消耗而B+树是在单个叶子节点上最多可以存储16KB的下级节点数据,每个下级节点又会对应一个叶子,这样存储,层原创 2021-03-02 11:44:39 · 87 阅读 · 0 评论 -
CAS
CAScas是什么Compare-And-Swap 比较并交换,是一条CPU的并发原语判断内存中某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的如果主内存中的值和期望中的值一样,就修改为现在想要的值,如果主内存中的值和期望中的值不一样,就不修改package com.audition.cas;import java.util.concurrent.atomic.AtomicInteger;/** * Created with IntelliJ IDEA. * * @原创 2021-03-02 11:43:58 · 173 阅读 · 0 评论 -
volatile三大特性
volatile三大特性1.对volatile的理解1.volatile是Java虚拟机提供的轻量级的同步机制(同步:synchronized)乞丐版的synchronized。有三大特性:保证可见性 不保证原子性 禁止指令重排可见性:多个线程,访问java主内存中的同一对象,获取对象之后,各自都拷贝到自己的线程内存中,当有一个线程中的对象改变时,需要写回给主内存中,主内存就会通知其他线程此对象改变了,需要重新拷贝的过程就叫可见性未加volatile关键字代码演示packa原创 2021-03-02 11:41:53 · 848 阅读 · 0 评论 -
JVM内存模型
JVM内存模型运行时数据区:栈,堆,本地方法栈,方法区,程序计数器栈程序在执行时,首先会在栈中开辟一个方法栈空间,空间中存储局部变量表、操作数栈、动态链接和方法出口。当程序执行到此方法时,就会把存储在操作数栈的数据放到对应的局部变量表中去。动态链接就是指我们的引用的方法名是符号,我们通过符号找到对应的方法,得到对应的方法内部代码。方法出口:局部方法执行完之后,返回主方法(main方法)堆new 出来的对象存储在堆内存空间中,栈中的局部变量表存储了对应堆内存空间的引用地址原创 2021-03-02 11:38:47 · 92 阅读 · 0 评论