- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 并发编程——JUC中的重要组件(atomic、信号量、locks、ConcurrentHashMap、线程安全的集合类)这些你都知道吗?
JUC中的重要组件原子类 java.util.concurrent.atomicjava.util.concurrent.locksCallable/Future/FutureTaskSemaphore信号量线程安全的集合类ConcurrentHashMap(重点)理解HashMap的put方法的执行过程.对比HashMap、HashTable、ConcurrentHashMap原子类 java.util.concurrent.atomic原子类内部用的是 CAS 实现,所以性能要比加锁实现 i++ 高
2020-08-07 13:33:10 1870
原创 JVM——什么是代码区、常量区、静态区(全局区)、堆区、栈区这些你知道吗?
什么是代码区、常量区、静态区(全局区)、堆区、栈区?代码区:常量区:静态区(全局区):堆区:栈区:如下图,一般内存主要分为:代码区、常量区、静态区(全局区)、堆区、栈区这几个区域。代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。代码区的内存是由系统控制的代码区的存放 :程序中的函数编译后cpu指令代码区的地址:函数的地址,程序的入口地址,程序的名字函数的名称也是一个指针,可以通过查询函数名称所处的内存地址,查询函数存放的区域常量区:存放常量(程序在运行的期间不能够被改变的量
2020-08-06 17:46:25 1007
原创 多线程——以Sychronized为例实现锁优化的五个面试问题你知道吗?
以Sychronized为例实现锁优化锁优化1、锁消除2、偏向锁3、自旋锁4、锁膨胀5、锁粗化锁优化一些提高锁的效率的策略优化操作主要是以编译器+JVM两者配合进行的1、锁消除锁消除本质是以编辑器和JVM代码运行的情况智能的判断当前的锁有没有必要加 如果没有必要, 就会直接把锁干掉public class Demo3 { public static void main(String[] args) { //StringBuffer 是线程安全的方法中加了Sychron
2020-08-06 17:41:30 259
原创 多线程——关于面试中常见的CAS问题你知道了吗?
关于面试中常见的CAS问题你知道了吗?CASCAS的使用无锁编程CAS缺陷:ABA问题)CASCAS的全称是 compare and swap(字面意思就是比较交换) 他是基于硬件提供的一种基础指令, 也是基于这样的指令, 就可以实现一些特殊的功能(实现锁)针对不同的操作系统,JVM 用到了不同的 CAS 实现原理简而言之,是因为硬件予以了支持,软件层面才能做到。我们假设内存中的原数据v,旧的预期值new,需要修改的新值tmp。比较 new 与 v 是否相等。(比较)如果比较相等,将 tmp
2020-08-06 16:54:43 401
原创 Servlet——利用数据库、前后端接口实现一个简单的博客系统
这里写目录标题需求分析数据库设计1、提取需求中的实体2、实体的属性3、实体之间关系数据库建表Java代码操作a)创建一个类,管理数据库的连接b)创建实体类需求分析1)注册新用户2)登陆已有用户3)展示博客列表(每-项包含了文章的标题,作者)点击标题就会跳转到文章详情页.分页功能也暂时不考虑4)文章详情页中,可以看到文章标题,作者,文章内容评论功能,分类功能,推荐相关文章功能等,先不考虑5)发布新的博客(不考虑富文本编辑.)6)删除自己的博客数据库设计1、提取需求中的实体两张表Use
2020-08-05 18:08:22 1189
原创 多线程——这些锁策略(乐观悲观锁、读写锁、轻量级重量级锁、公平非公平锁、可重入锁)你知道吗?
各种锁策略1、乐观锁VS悲观锁2、读写锁3、重量级锁vs轻量级锁.4、挂起等待锁VS自旋锁5、公平锁Vs非公平锁6、可重入锁7、死锁的典型场景1、乐观锁VS悲观锁乐观锁: 世界大概率是和平的,多个线程竞争一 把锁的概率会很低.(效率高)悲观锁: 世界大概率是出问题的,多个线程竞争一 把锁的概率会很高,会付出更多的成本来进行锁冲突的处理(更安全)两种想法没有优劣之分,要根据具体场景来进行使用.2、读写锁把加锁操作分成了两种.a)读锁b)写锁读锁和读锁之间是没有互斥的(不存在锁竞争)读锁和写
2020-08-05 17:45:48 1976
原创 JVM——类加载的这些面试题(类加载、类加载器、双亲委派模型等等)你真的会了吗?
类加载什么实际会触发某个类的加载a)构造该类的实例b)调用该类的静态属性方法c)
2020-08-05 12:07:06 2212 5
原创 关于深浅拷贝的代码理解
再谈深浅拷贝浅拷贝深拷贝浅拷贝针对对象A拷贝之后得到对象B,对A的修改会对B造成影响class A{ public int num =0;}class B{ public int count =0; public A a;}public class Test4 { public static void main(String[] args) { //先构造一个对象 B b = new B(); b.count
2020-08-04 23:08:56 232
原创 JVM——这七种垃圾回收器你知道吗?
垃圾回收器垃圾回收器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS老年代收集器G1回收器垃圾回收器评价垃圾回收器好坏的标准:1.回收的空间效率.扫-遍地,能扫出多少垃圾.2.回收的速度.扫- -遍地要花多长时间.3.垃圾回收和应用线程之间能否并发执行.扫地的时候会不会影响到别人干活. (STW)4.垃圾回收器是否是多线程的.5.回收的时间是否是可预测的.承诺10分钟之内一定把地扫完.即使扫的不算非常干
2020-08-02 21:29:34 991
原创 JVM——GC垃圾回收机制的八个重要面试问题你知道了吗?
GC是干什么的C语言特点,相当于是一个手动挡的汽车,挂挡比较麻烦,但是能做到更精确的控制Java语言,相当于是一个自动挡的汽车,开起来更方便,不能像手动车那样精准控制、内存管理:C语言中的内存,申请之后,需要手动释放(free/delete)一旦忘记释放,就容易导致“内存泄漏”Java中的内存,申请之后,不需要手动释放(GC)没有垃圾回收,需要程序主动归还内存(取决于用户的素质),有了垃圾回收,相当于有了一个专门负责的人为什么要有GC内存申请的时机很好确定,但是释放时机是不好确定的。比
2020-08-02 00:53:55 1271
原创 JVM——Java中的引用
1、各种不同的引用引用本质上就是个低配指针,初心,就是为了找对象.引用不光能找对象,还能决定对象的生死!!! (副作用)a)强引用平时用的引用.既能找到对象,也能决定对象的生死.b)软引用既能找到对象,也能一定程度的决定对象生死(保对象一时).保对象一时:这个对象已经没有强引用指向了,只有软引用指向.如果内存充裕,此时这个对象是不会被回收的.但是如果内存不够了,软引用的对象也会被回收.c)弱引用只能找到对象,但是不能决定对象的生死(解决引用计数的循环引用问题的一种思路就是弱引用)d)
2020-08-01 23:41:53 208
(大作业 已配置).pkt
2020-07-10
进程调度实验报告.doc
2020-07-03
银行家算法实验报告.doc
2020-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人