自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 JAVA程序员必须掌握的数据结构的面试题(附答案)

数据结构面试题常见的数据结构一. 数组1.寻找数组中第二大的元素2.寻找数组中不重复出现的整数3.实现数组中负数在左,正数在右二. 栈1.用栈计算后缀表达式2.对栈数据进行排序2.用栈来判断括号匹配问题三. 队列常见的数据结构数组栈队列链表树图字典树(高效树形结构)散列表(哈希表)一. 数组1.寻找数组中第二大的元素 //冒泡排序法 public static voi...

2018-10-16 17:37:42 6289

原创 并发编发笔记三

JUC并发工具一、CountDownLatch应用&源码分析1.1 CountDownLatch介绍CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。需要一个并发安全的计数器来操作。CountDownLatch就可以实现。给CountDownLatch设置一个数值。可以设置3。每个业务处理完毕之后,执行一次countDown方法,指定的3每次在执行countDown方法时,对3进行-

2024-02-27 10:35:07 659

原创 JVM研究笔记六

C语言申请内存:malloc freec/C++ 手动回收内存Java: new?忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)根据需求进行JVM规划和预调优优化运行JVM运行环境(慢,卡顿)解决JVM运行过程中出现的各种问题(OOM)

2024-02-04 17:22:58 704

原创 JVM研究笔记五

提示:结合GC, 一直创建字符串常量,观察堆,和Metaspace。如何证明1.7字符串常量位于Perm,而1.8位于Heap?JVM可以直接访问的内核空间的内存 (OS 管理的内存)NIO , 提高效率,实现zero copy。​ 取PC中的位置,找到对应位置的指令;

2024-02-04 17:22:06 219

原创 JVM研究笔记四

作者:马士兵 http://www.mashibing.com。

2024-02-04 17:21:34 575

原创 JVM研究笔记三

协议很多intel 用MESI现代CPU的数据一致性实现 = 缓存锁(MESI …) + 总线锁读取缓存以cache line为基本单位,目前64bytes位于同一缓存行的两个不同数据,被两个不同CPU锁定,产生互相影响的伪共享问题伪共享问题:JUC/c_028_FalseSharing使用缓存行的对齐能够提高效率。

2024-02-04 17:21:03 235

原创 JVM研究笔记二

动态语言支持java.lang.invoke.MethodHandle解析的结果为REF_getstatic REF_putstatic REF_invokestatic的方法句柄时,该类必须初始化。–new getstatic putstatic invokestatic指令,访问final变量除外。第一节课遗留问题:parent是如何指定的,打破双亲委派,学生问题桌面图片。–虚拟机启动时,被执行的主类必须初始化。–初始化子类的时候,父类首先初始化。LazyLoading 五种情况。

2024-02-04 17:20:31 125

原创 JVM研究笔记一

补齐 0。markword 8个字节。1:句柄池 (指针池)间接指针,节省内存。类型指针 8个字节。实例变量 0。锁的信息(2位 四种组合)JVM参数指定压缩或非压缩。2:直接指针,访问速度快。16字节(压缩 非压缩)如果是数组,数组的长度。老不死 - > Old。

2024-02-04 17:18:10 135

原创 并发编程笔记二

线程池一、什么是线程池为什么要使用线程池在开发中,为了提升效率的操作,我们需要将一些业务采用多线程的方式去执行。比如有一个比较大的任务,可以将任务分成几块,分别交给几个线程去执行,最终做一个汇总就可以了。比如做业务操作时,需要发送短信或者是发送邮件,这种操作也可以基于异步的方式完成,这种异步的方式,其实就是再构建一个线程去执行。但是,如果每次异步操作或者多线程操作都需要新创建一个线程,使用完毕后,线程再被销毁,这样的话,对系统造成一些额外的开销。在处理过程中到底由多线程处理了多少个任务,以及每个

2024-02-02 11:21:14 1076

原创 并发编程笔记一

并发编程@Author 雷奇一、线程的基础概念一、基础概念1.1 进程与线程A什么是进程?进程是指运行中的程序。 比如我们使用钉钉,浏览器,需要启动这个程序,操作系统会给这个程序分配一定的资源(占用内存资源)。什么线程?线程是CPU调度的基本单位,每个线程执行的都是某一个进程的代码的某个片段。举个栗子:房子与人比如现在有一个100平的房子,这个方式可以看做是一个进程房子里有人,人就可以看做成一个线程。人在房子中做一个事情,比如吃饭,学习,睡觉。这个就好像线程在执行某个功能的代码。

2024-01-19 10:19:12 377

原创 Arthas研究笔记(Java诊断工具)

Java诊断工具-Arthas使用场景1.排查函数调用异常现象2.热更新代码3.动态更新应用Logger Level4.获取Spring Context命令列表dashboardthreadjvmsyspropsysenvvmoptiongetstaticArthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是...

2019-09-29 15:36:39 532

原创 JAVA五种基本算法

常见基本算法一.插入排序法二.冒泡排序法三.选择排序法四.二分查找法五.迷宫算法插入排序法冒泡排序法选择排序法二分查找法迷宫算法一.插入排序法 //插入排序法 public class InsertionSort { public static void main(String[] args) { int[] data = {3,9,6,1,2,213,21}; fo...

2019-05-30 10:12:03 438

原创 单元测试工具之Mockito

Mockito作用Mockito 是一个针对 Java 的单元测试模拟框架,是为了简化单元测试过程中测试上下文 ( 或者称之为测试驱动函数以及桩函数 ) 的搭建而开发的工具。在有这些模拟框架之前,为了编写某一个函数的单元测试,程序员必须进行十分繁琐的初始化工作,以保证被测试函数中使用到的环境变量以及其他模块的接口能返回预期的值,有些时候为了单元测试的可行性,甚至需要牺牲被测代码本身的结构。单元测...

2019-05-27 10:07:14 3429

空空如也

空空如也

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

TA关注的人

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