- 博客(17)
- 资源 (20)
- 收藏
- 关注
原创 归并排序-排序-算法第四版
文章目录1、原地归并的抽象方法2、自顶向下的归并排序3、关于自顶向下归并排序的改进3.1、对小规模子数组使用插入排序3.2、测试数组是否已经有序3.3、不将元素复制到辅助数组3、自底向上的归并排序4、比较1、原地归并的抽象方法实现归并的一种直截了当的方法是将两个不同的有序数组归并到第三个数组中,即创建一个大小适当的数组然后将两个输入数组中的元素一个个从小到大放入这个数组中。但是,当用归并将一个大数组排序时,我们需要进行多次归并,因此在每次归并是都创建一个新数组来存储排序结果会带来问题。我们更希望有一种
2021-09-30 19:26:53 309
原创 原子累加器及其原理-JUC-并发编程(Java)
1、原子整数累加和原子累加器性能比较import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;import java.util.concurrent.atomic.LongAdder;import java.util.function.Consumer;import java.util.function.Supplier;public class Test01
2021-09-30 08:53:08 753
原创 原子整数、引用、数组、更新器-JUC-并发编程(Java)
文章目录一、原子整数二、原子引用1、AtomicReference-原子引用类型2、AtomicStampedReference-原子引用类型(版本标记)3、AtomicMarkableReference-原子引用类型(布尔型标记)三、原子数组四、原子更新器一、原子整数JUC并发包提供了:AtomicBooleanAtomicIntegerAtomicLong下面以AtomicInteger为例,来了解下常用API,所有的操作都是原子的。自增:incrementAndGet():自增
2021-09-27 12:04:52 389
原创 希尔排序-排序-算法第4版
1、插入排序的弊端对于大规模的乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点的从数组的一端移动到另一端。希尔排序为了加快速度,简单地改进了插入排序,交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。2、算法描述希尔排序的思想是使任意间隔h的元素都是有序的。这样的数组被称为h有序数组。选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟排序,根据对应的增量ti,将待排序列分割成若干长度
2021-09-26 19:09:07 99
原创 CAS入门-乐观锁-并发编程(Java)
1、保护共享资源模拟银行账户取款操作,设置一个账户接口以及一个非线程的账户类实现。代码如下:/** * 账户接口 */public interface Account { // 获取余额 Integer getBalance(); // 取款 void withdraw(Integer amount); // 模拟多个线程取款操作 static void multiWithdraw(Account account) { List<
2021-09-25 17:59:11 156
原创 单例模式及线程安全问题分析-设计模式-并发编程(Java)
文章目录0、序言1、饿汉式2、枚举类3、懒汉式4、懒汉式改进5、静态内部类0、序言单例模式有很多实现方法,饿汉式、懒汉式、静态内部类、枚举类。饿汉式:类加载时,创建该单例对象懒汉式:首次使用时,创建该该单例对象静态内部类:首次使用时,有静态内部类创建该实例对象枚举类:类加载时创建下面我们来分析下每种在获取单例对象时的线程安全问题及相关其他问题。1、饿汉式典型代码实现:// 问题1:为什么加final// 问题2:如果实现了序列化接口,怎么防止反序列化时单例被破坏public fi
2021-09-24 11:02:13 144
原创 选择排序和插入排序及比较-排序-算法第4版
文章目录一、选择排序1、算法描述2、分析3、特点3、代码实现二、插入排序1、算法描述2、分析3、代码实现4、总结三、两种排序算法的比较1、比较步骤2、代码实现一、选择排序1、算法描述首先,找到数组中的最小的元素其次,将它与数组的第一个元素交互位置再次,在剩余的数组元素中找到最小的元素,将它与数组的第二个元素交互位置如此重复,直到将整个数组排序2、分析比较元素:比较当前元素与目前已知的最小元素(以及将当前索引加1和检测是否代码越界)交互元素:每轮只交互一个元素,因此交换的总次数是N(数
2021-09-23 19:33:35 413
原创 valitile原理简介及读写可见性-并发编程(Java)
volatile的底层原理就是内存屏障,Memory Barrier(Fense)对volatile变量的写指令后加入写屏障对volatile变量的读指令之前加入写屏障1、volatile保证可见性写屏障保证在该屏障之前的,对共享变量的改动,同步到主存中而读屏障保证在该屏障之后,对共享变量的读取,加载的是主存中最新的数据2、volatile保证有序性写屏障会确保指令重排时,不会将 写屏障之前的代码排在写屏障之后读屏障会确保指令重排时,不会将写屏障之后的代码排在读屏障之前vo.
2021-09-23 11:14:30 242
原创 mongodb4.x版本安装(图文详解)-windows本地安装
0、序言因为本人目前用的台式机配的win7系统,一直懒得换系统,对应的mongdb版本,选择了4.2.16 ,经测试(都是选择的稳定版):版本是否可用5.0.3×4.4.9×4.2.16√其他平台和系统自行测试。1、下载官网地址:专业版:https://www.mongodb.com/try/download/enterprise社区版:https://www.mongodb.com/try/download/community百度网盘:
2021-09-22 21:40:33 469
原创 入门简介-排序-算法第4版
文章目录0、序言1、通用模板2、验证3、运行时间4、额外的内存使用5、数据类型0、序言排序就是将一组对象按照某种逻辑顺序重新排列的过程,学习排序算法实际意义:对排序算法的分析有助于你全面理解比较算法性能的方法类似的技术也能有效解决其他类型的问题排序算法常常是我们解决其他问题的第一步初级排序算法,作为对排序算法领域的第一次探索,深入学习的原因在于:我们将通过它们熟悉一些术语和简单的技巧这些简单的算法在某些情况下比我们之后将会讨论的复杂算法更有效集合你会发现,它们有助于我们改进复杂算法的
2021-09-21 18:52:14 139
原创 JMM之可见性入门-并发编程(Java)
文章目录1、Java内存模型简介2、可见性3、解决3.1、volatile3.2、synchronized4、可见性与原子性5、两阶段终止6、犹豫模式1、Java内存模型简介JMM即Java Memory Model ,它定义了主存、工作内存等抽象概念,底层对应着CUP寄存器、缓存、硬件内存、CUP指令优化等。JMM体现在以下几个方面:原子性:保证指令不会受到线程上下文切换的影响可见性:保证指令不会受到缓存的影响有序性:保证指令不会受到CUP指令优化的影响2、可见性可见性问题-退不出
2021-09-19 11:32:47 167
原创 0103函数的极限--函数与极限
文章目录一、函数极限的定义1、自变量趋于有限值时函数的极限2、自变量趋于无穷大时函数的极限二、函数极限的性质一、函数极限的定义1、自变量趋于有限值时函数的极限极限定义:设函数f(x)f(x)f(x)在点x0x_0x0的某一去心邻域内有定义。如果存在常数AAA,对于任意给定的正数ϵ\epsilonϵ(不论它有多么小),总存在正数δ\deltaδ,使得当x满足不等式0<∣x−x0∣<δ0\lt\lvert x-x_0\rvert\lt\delta0<∣x−x0∣<δ时,
2021-09-09 19:25:05 336
原创 API及性质-ReentrantLock入门-并发编程(Java)
文章目录1、可重入2、可打断3、锁超时4、锁超时解决哲学家进餐问题5、公平锁与不公平锁6、条件变量1、可重入可重入是指同一线程如果首次获得了这把锁,那么因为是这把锁的拥有者,因此有权利再次获取这边锁。/** * 测试ReentrantLock可重入性 */@Slf4j(topic = "c.TestReentrant")public class TestReentrant { static ReentrantLock lock = new ReentrantLock(); p
2021-09-08 11:34:51 212
原创 park-unpark_线程状态转换_多锁问题-并发编程(Java)
文章目录一、park-unpark1、基本使用2、park-unpark执行顺序3、与wait-notify比较3、原理二、线程状态转换1、NEW --> RUNNABLE2、RUNNABLE <--> WAITING3、RUNNABLE <--> WAITING4、RUNNABLE <--> WAITING5、RUNNABLE < -- > TIMED_WAITNG6、RUNNABLE < -- > TIMED_WAITNG7、RUNNAB
2021-09-06 20:05:14 494
原创 生产者消费者模式-设计模式-并发编程(Java)
1、保护性暂停解耦图中Futures就好比居民楼的信箱(每个信箱都有房间编号),左侧t0,t2,t4就好比等待邮件的居民,右侧的t1,t3,t5就好比邮递员。如果需要在多个类之间使用GuardedObject对象,作为参数传递不是很方便,因此设计一个用来解耦的中间类,这样不仅能够解耦结果等待者和结果生产者,还能够同时支持多个任务的管理。场景:邮递员送信,居民收信,信箱里面有很多格子,每个格子对应居民房间,编号。邮递员根据信件的房间编号,把信件投入相应的信箱小格子;居民根据自己的房间编号去对应的小格子中
2021-09-04 11:40:08 138
原创 保护性暂停-设计模式-并发编程(Java)
文章目录一、保护性暂停二、join原理一、保护性暂停同步模式之保护性暂停,即Guarded Suspension,用在一个线程等待另外一个线程的执行结果。有一个结果需要从一个线程传递到另外一个线程,让两个线程关联同一个GuardedObject。如果有结果不断从一个线程传递到另外一个线程,可以使用消息队列。JDK中,join的实现、Future的实现,采用的就是此模式。因为要等待另一方的结果,归类到同步模式。场景:线程2下载某个url网页内容,线程1需要等待线程2下载的内容/** *
2021-09-03 20:43:57 273
原创 wait_notify-并发编程(Java)
文章目录1、wait/notify 原理2、API3、wait(long n) 和 sleep(long n)区别4、唤醒不同条件下等待的多线程1、wait/notify 原理owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为WATING状态。BLOCKED和WATING状态的线程都处于阻塞状态,不占用CPU时间片。BLOCKED状态线程,会在Owner线程释放锁时唤醒。WATING状态的线程会在Owner线程调用notify或者notifyAll时唤醒,但唤醒后并不会
2021-09-03 17:36:12 124 2
2017国民经济行业分类sql.rar
2020-11-27
H3CNE课程 V7.0 构建中小企业网络全套培训PPT汇总【V7版本】.zip
2020-04-07
nmap-master.zip.zip
2020-04-07
markdown-182.2371.zip
2019-06-01
subversion.rar
2019-05-21
MybatisCodeHelperPro2.6.1.rar
2019-05-10
ScreenToGif2.17
2019-04-10
burpsuite汉化破解版
2019-03-28
Firefox 48.0.2渗透专版
2019-03-24
turnkey-wordpress-15.0-stretch-amd64
2018-08-05
H3CSE课程v2.0(v7版本)
2018-02-23
AG安全团队2017年工具包
2018-02-07
Pentest Box
2018-02-02
eclipse-java-oxygen-1a-win32-x86_64.zip
2017-10-27
H3C最新学习工具大集合
2017-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人