- 博客(38)
- 收藏
- 关注
原创 并发编程(7)共享模型之JUC
9 J.U.C9.1 AQS原理9.1.1 概述全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架特点:用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state 状态独占模式是只有一个线程能够访问资源,而共享模式
2024-02-28 19:11:13
1000
原创 并发编程(6)共享模型之线程池
/ 1. 任务队列// 2. 锁// 3. 生产者条件变量// 4. 消费者条件变量// 5. 容量log.info("构造BlockingQueue");// 带超时阻塞获取try {// 将 timeout 统一转换为 纳秒try {// 返回值是剩余时间return t;// 阻塞获取try {try {return t;// 阻塞添加try {try {
2024-02-28 19:10:28
1048
原创 并发编程(5)共享模型之不可变
定义英文名称:Flyweight pattern. 当需要重用数量有限的同一类对象时 .flyweight是一种通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象出自归类例如:一个线上商城应用,QPS 达到数千,如果每次都重新创建和关闭数据库连接,性能会受到极大影响。这时预先创建好一批连接,放入连接池。一次请求到达后,从连接池获取连接,使用完毕后再还回连接池,这样既节约了连接的创建和关闭时间,也实现了连接的重用,不至于让庞大的连接数压垮数据库。// 1. 连接池大小。
2024-02-24 23:41:30
968
原创 并发编程(4)共享模型之无锁
Unsafe 对象提供了非常底层的,操作内存、线程的方法,Unsafe 对象不能直接调用,只能通过反射获得static {try {
2024-02-24 21:15:10
1095
原创 并发编程(3)共享模型之内存
Balking (犹豫)模式用在一个线程发现另一个线程或本线程已经做了某一件相同的事,那么本线程就无需再做了,直接结束返回。
2024-02-23 16:49:02
359
1
原创 并发编程(2)共享模型之管程
4 共享模型之管程本章内容共享问题synchronized线程安全分析Monitorwait/notify线程状态转换活跃性Lock4.1 共享带来的问题4.1.1 小故事老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快小南、小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用但小南不能一天24小时使用算盘,他经常要小憩一会(sleep),又或是去吃饭上厕所(阻塞 io 操作),有时还需要一根烟,没烟时思路全无(wait
2024-02-22 23:13:29
582
原创 并发编程(1)线程
这门课中的【并发】一词涵盖了在 Java 平台上的以及 Java 并发工具、并发问题以及解决方案,同时也会讲解一些其它领域的并发。
2024-02-16 22:24:05
1079
原创 JVM(5)面试篇
关联课程内容基础篇-初识JVM基础篇-Java虚拟机的组成回答路径JVM的定义作用功能组成JVM 指的是Java虚拟机( Java Virtual Machine )。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,Java虚拟机上可以运行Java、Kotlin、Scala、Groovy等语言。//用java命令启动一个jvm进程,执行程序任务管理器中启动的Java进程,其实是一个虚拟机进程,它会执行我们编写好的代码。通过jps。
2024-02-16 12:40:28
1646
原创 JVM(4)原理篇
1、着色指针(Colored Pointers)着色指针将原来的8字节保存地址的指针拆分成了三部分,不仅能保存对象的地址,还可以保存当前对象所属的状态。不支持32位系统、不支持指针压缩2、读屏障(Load Barrier)在获取对象引用判断对象所属状态,如果所属状态和当前GC阶段的颜色状态不一致,由用户线程完成本阶段的工作。会损失一部分的性能,大约在5%~10%之间。1、着色指针(Colored Pointers)
2024-02-14 23:25:37
2760
原创 JVM(3)高级篇
回答:Arthas主要使用了Java Agent技术,这种技术可以让运行中的Java程序执行Agent中编写代码。Arthas使用了Agent中的动态加载模式,可以选择让某个特定的Java进程加载Agent并执行其中的监控代码。监控方面主要使用的就是JMX提供的一些监控指标,同时使用字节码增强技术,对某些类和某些方法进行增强,从而监控方法的执行耗时、参数等内容。
2024-02-14 23:14:25
2773
原创 JVM(2)实战篇
1、压力比较大的服务中,尽量不要存放大量的缓存或者定时任务,会影响到服务的内存使用。2、内存分析发现有大量线程创建时,可以使用导出线程栈来查看线程的运行情况。3、如果请求确实创建了大量的内存超过了内存上限,只能考虑减少请求时创建的对象,或者使用更大的内存。4、推荐使用g1垃圾回收器,并且使用较新的JDK可以获得更好的性能。
2024-02-14 23:00:59
1270
原创 JVM(1)基础篇
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术,类加载器只参与加载过程中的字节码获取并加载到内存这一部分。类加载器会通过二进制流的方式获取到字节码文件的内容,接下来将获取到的数据交给Java虚拟机,虚拟机会在方法区和堆上生成对应的对象保存字节码信息。一个Tomcat程序中是可以运行多个Web应用的,如果这两个应用中出现了相同限定名的类,比如Servlet类,Tomcat要保证这两个类都能加载并且它们应该是不同的类。
2024-02-12 20:21:52
1494
原创 数据结构与算法(6)查找算法
int key;// 若希望任意类型作为 key, 则后续可以将其设计为 Comparable 接口int t;int[] keys;this.t = t;@Overrideleaf 表示是否为叶子节点keyNumber 为 keys 中有效 key 数目t 为最小度数,它决定了节点中key 的最小、最大数目,分别是 t-1 和 2t-1keys 存储此节点的 keychildren 存储此节点的 child。
2023-12-30 12:01:10
1047
原创 数据结构与算法(5)堆
对于前、中两种遍历,实际以上代码从右子树向回走时,并未走完全程(stack 提前出栈了)后序遍历以上代码是走完全程了。对于后序遍历,向回走时,需要处理完右子树才能 pop 出栈。以上用队列来层序遍历是针对 TreeNode 这种方式表示的二叉树。二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子。对于数组表现的二叉树,则直接遍历数组即可,自然为层序遍历的顺序。以大顶堆为例,相对于之前的优先级队列,增加了堆化等方法。下面是一种统一的写法,依据后序遍历修改。表示没啥可处理的,可以出栈。
2023-12-04 14:33:47
912
原创 数据结构与算法(4)队列
双端队列、队列、栈对比定义特点队列一端删除(头)另一端添加(尾)栈一端删除和添加(顶)双端队列两端都可以删除、添加优先级队列优先级高者先出队延时队列根据延时时间确定优先级并发非阻塞队列队列空或满时不阻塞并发阻塞队列队列空时删除阻塞、队列满时添加阻塞Java 中 LinkedList 即为典型双端队列实现,不过它同时实现了 Queue 接口,也提供了栈的 push pop 等方法注2:不同语言,操作双端队列的方法命名有所不同,参见下表操作JavaJavaScript。
2023-12-04 11:08:34
810
原创 数据结构与算法(3)栈
计算机科学中,是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为,另一端不能操作数据的称之为,就如同生活中的一摞书先提供一个栈接口。
2023-12-04 10:19:56
428
原创 数据结构与算法(2)链表
定义计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集return;自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归内层函数调用(子集处理)完成,外层函数才能算调用完成原理假设链表中有 3 个节点,value 分别为 1,2,3,以上代码的执行流程就类似于下面的伪码return;思路确定能否使用递归求解。
2023-11-22 16:34:18
883
原创 算法笔记
文章目录1.栈2.队列3.特殊状态的枚举4.二分5.堆6.set map7.并查集8.bitset1.栈栈(Stack )是支持push和pop两种操作的数据结构。push是在栈的顶端放入一组数据的操作。反之,pop是从其顶端取出一组数据的操作。因此,最后进入栈的一组数据可以最先被取出(这种行为被叫做LIFO: Last In First Out,即后进先出)。通过使用数组或者列表等结构可以很容易实现栈,不过C++、Java等程序语言的标准库已经为我们准备好了这一常用结构,在比赛中需要时不妨使用它们
2020-11-13 20:20:45
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人