- 博客(21)
- 收藏
- 关注
原创 网络传输相关
转载自: https://www.jianshu.com/p/9a829ddc05f5 (又读后有问题, TCP建立连接后是如何通信的,找到文章: https://blog.youkuaiyun.com/sinat_21455985/article/details/53508115)这里还有一篇类似的文章: https://www.jianshu.com/p/947a2673102a这篇文章加了soap的讲解: https://segmentfault.com/q/1010000003064904对HTTP HT
2022-04-02 19:56:47
125
转载 深入分析Synchronized原理
深入分析Synchronized原理(阿里面试题)还有一篇 讲解lock的实现原理,参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理以及如何 获取锁AQS算法 (百度-美团) 记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百...
2021-08-04 10:58:16
133
转载 JVM重要知识
1. Java 内存区域与内存溢出异常 1.1 运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成 如果线程正在执行一个 Jav...
2021-07-01 11:40:21
136
转载 zookeeper原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeepe...
2019-10-18 09:25:55
165
原创 ArrayBlockingQueue源码分析(基于jdk1.8)
前言网上找下ArrayBlockingQueue的源码分析,没找到基于jdk8分析的,索性就自己研读记录下。
2019-08-29 17:19:20
178
转载 MySQL(Innodb)索引的原理
引言回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的索引就像一本书的目录。而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个知识点。这样就帮助用户有效地提高了查找速度。所以,使用索引可以有效地提高数据库系统的整体性能。嗯,这么说其实也对。但是呢,大家看完这种说法,其实可能还是觉得太抽象了!因此呢,我还想再深入的细说一下,所以就有...
2019-08-23 17:04:17
132
转载 mysql的select加锁分析
引言大家在面试中有没遇到面试官问你下面六句Sql的区别呢select * from table where id = ?select * from table where id < ?select * from table where id = ? lock in share modeselect * from table where id < ? lock in s...
2019-08-12 18:08:48
388
原创 三色排序问题
问题描述输入一个整型数组,每个元素在0~2之间,其中0,1,2分别代表红、白、蓝。现要求对数组进行排序,相同颜色的在一起,而且按红白蓝顺序先后排列。要求时间复杂度为O(n)。 问题分析最容易想到的是排序,比如快排,归并,堆排等,但它们的时间复杂度为O(nlogn),与题意不符。第二种想到的是计数排序,扫描一遍过去,分别记录0,1,2的个数,然后再对数组进行赋值。时间复杂度为O...
2019-08-07 18:05:35
3829
转载 计数排序
思路:我们先假设待排序序列各元素均在区间[0, k]上。思想是:在待排序序列中,如果我们能统计出有多少元素小于或等于某一个元素,我们也就知道了该元素的正确位置。例如,对于待排序序列{2,5,3,0,2,3,0,3},我们统计出有8个元素小于等于5(包括5自己),那么5这个元素就应该被排序到第8位。伪代码:其中数组A[1~n]是待排序数组;数组B[1~n]用来存放已排好序的元素。C...
2019-08-05 15:35:58
122
转载 希尔排序
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关...
2019-08-02 16:42:02
118
转载 java并发编程之stampedlock
StampedLock是JUC并发包里面JDK1.8版本新增的一个锁,该锁提供了三种模式的读写控制,当调用获取锁的系列函数的时候,会返回一个long 型的变量,该变量被称为戳记(stamp),这个戳记代表了锁的状态。try系列获取锁的函数,当获取锁失败后会返回为0的stamp值。当调用释放锁和转换锁的方法时候需要传入获取锁时候返回的stamp值。StampedLockd的内部实现是基于...
2019-07-29 16:55:44
243
转载 堆排序
概要本章介绍排序算法中的堆排序。目录1. 堆排序介绍2. 堆排序图文说明3. 堆排序的时间复杂度和稳定性4. 堆排序实现4.1 堆排序C实现4.2 堆排序C++实现4.3 堆排序Java实现转载请注明出处:http://www.cnblogs.com/skywang12345/p/3602162.html...
2019-07-27 21:59:34
338
转载 快速排序
快速排序 前言:快速排序是一种分治的排序算法,他将一个数组分成两个数组,将两部分独立的排序。快速排序和归并排序是互补的:归并排序是将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序,而快速排序将数组排序的方式是当两个子数组都有序时整个数组也就有序了。大致过程如下:其中左边的不大于K,右边的部分不小于K。代码实现 1 public st...
2019-07-27 21:20:48
231
转载 插入排序之java
接下来我来讲述一下插入排序法。首先来解释一下插入排序法的原理,它的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂度同样为O(n²)。 这种算法是稳定的排序方法。下面我用一个图来解释一下首先这是一个未经排序的数组我们要做的从a[1]开始,至于为什么不是a[0]...
2019-07-26 21:57:26
111
原创 冒泡排序java版
java实现冒泡排序 一、冒泡排序:利用冒泡排序对数组进行排序二、基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对...
2019-07-25 16:57:40
150
转载 Java并发编程之Condition
1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上...
2019-07-04 18:05:44
195
转载 Java并发编程之AQS同步队列
简单解释一下J.U.C,是JDK中提供的并发工具包,java.util.concurrent。里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join等。从Lock作为切入点我想以lock作为切入点来讲解AQS,毕竟同步锁是解决线程安全问题的通用手段,也是我们工作中用得比较多的方式。Lock APILock是一个接口,方法定义如下 ...
2019-07-04 16:52:52
858
原创 Java并发编程之synchronized
在java中存在两种锁机制,分别是synchronized和Lock。Lock接口和实现类是JDK5添加的内容,而synchronized在JDK6开始提供了一系列的锁优化,下面总结一下synchronized的实现原理和涉及的一些锁优化机制1.synchroni...
2019-06-24 17:32:35
247
转载 Java并发编程之CAS原理详解
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volatile不能保证...
2019-06-19 11:22:37
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅