自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ConcurrentSkipListMap

ConcurrentSkipListMap是基于SkipList实现的有序且线程安全的Map。为什么要使用跳查表实现呢?因为目前计算机领域还没找到一种高效的、作用在树上的、无锁的、增加和删除节点的办法。

2024-05-21 23:42:39 769

原创 JDK8 ConcurrentHashMap源码解析

4、把元素放入槽内。在第一次扩容的时候,sizeCtl会被设置为一个很大负数,之后每一个线程扩容的时候sizeCtl+1,每一个线程扩容完成之后,sizeCtl减1。2、加锁的粒度,并非整个ConcurrentHashMap,而是对每个头节点加锁,即并发度就是Node数组的长度,初始长度为16,和在JDK7中的Segment的个数相同。3、在线程扩容未完成之前,有的数组下标已经迁移完毕,有的还在旧的HashMap中,当使用get的时候还是会访问旧的HashMap,怎么处理呢?3、提供扩容的并发度。

2024-05-21 23:02:43 897

原创 JDK7 ConcurrentHashMap源码解析

第二个参数是负载因子,传给了Segment的内部,当每个Segment的元素个数达到一定阈值,进行rehash。,对链表尾部一串新hash值相同的一个子链表,不需要一个个移动,只需要将lastRun位置的节点连接到新数组中。扩容后数组变成两倍原数组大小,新的hash值有两种可能,1.原hash值,2.原hash值加上原数组长度。,一次对Segment数组hash,一次对HashEntry数组进行hash。为了提高hash的计算性能,会保证数组的大小始终是2的整数次方。,若没有发现重复的节点,则。

2024-05-21 20:37:45 414

原创 并发容器BlockingQueue/Deque、CopyOnwrite、ConcurrentLinkedQueue扫盲

add----当队列满时会抛出异常 remove----当队列空时会抛出异常offer----当队列满时会返回false peek----当列队空时会返回NULLput----当队列满时阻塞 take----当队列空时阻塞。

2024-05-21 19:46:20 677

原创 同步工具类-Sempaphone、CountDownLatch、CyclicBarrier、Exchanger

Slot用于交换数据,保存其中一个线程的数据,当第二个线程到时,进行数据交换。一个Slot只能支持2个线程之间交换数据,要实现多个线程并行的交换诗句,需要多个Slot,因此在Exchanger里面定义了Slot数组。每个线程在调用exchange函数交换数据的时候,会先创建一个Node对象,这个Node对象包含了要交换的数据,线程本身,对方所要交换的数据,初始为NULL。假设有n个线程来获取资源n>10,那么n个线程中只有10个能获得资源,其他线程都会阻塞,直到有现成释放了资源。

2024-05-21 00:47:47 1870

原创 StampedLock详解

StampedLock的写锁是不可重入锁。使用的数据结构不是AQS,是类似于AQS的队列,在自旋加入队列时也会去抢锁。维护了一个读线程的链表,唤醒一个则唤醒全部。StampedLock不响应中断。当被中断信号唤醒时会不断自旋占用CPU。

2024-05-19 23:35:18 790

转载 MIT 6.830数据库系统 -- lab six

本文链接:https://blog.csdn.net/m0_53157173/article/details/132125610

2024-05-19 16:30:21 46

转载 MIT 6.830数据库系统 -- lab five

本文链接:https://blog.csdn.net/m0_53157173/article/details/131962742

2024-05-19 16:28:14 39

转载 MIT 6.830数据库系统 -- lab four

本文链接:https://blog.csdn.net/m0_53157173/article/details/131850550

2024-05-19 16:26:41 27

转载 MIT 6.830数据库系统 -- lab three

本文链接:https://blog.csdn.net/m0_53157173/article/details/131452331

2024-05-19 16:25:07 33

转载 MIT 6.830数据库系统 -- lab two

本文链接:https://blog.csdn.net/m0_53157173/article/details/131394437

2024-05-19 16:23:07 59

转载 MIT 6.830 数据库系统 -- Lab One

本文链接:https://blog.csdn.net/m0_53157173/article/details/131373104

2024-05-19 16:17:26 84

原创 Conditon源码详解

Condition有两个核心方法await和signal方法,调用时必须获取到Lock锁。Condition里维护等待队列的是一个单向链表。阻塞时在等待队列中插入一个condition节点,然后先释放锁再park阻塞。被唤醒时通过查看是否在AQS同步队列中判断是否是被signal唤醒的。是-重新拿锁。释放时,从等待队列中取头节点,将状态改为初始状态,然后加入到AQS队列中调用unpark唤醒。一、Condition与Lock的关系。

2024-05-19 12:26:55 306

原创 读写锁详解

和互斥锁相比,读写锁就是读线程和读线程之间可以不用互斥。其实现为同一把锁的两个试图而已。可以理解为是一把锁,线程分为两类,读线程和写线程互斥,写线程和线程也互斥。共用同一个AQS。state变量拆成两半,一半表示写锁,一半表示读锁。

2024-05-19 02:16:09 1204

原创 Lock互斥锁详解

ReentrantLock 是JDK1.5 引入的J.U.C包中的一个比较重要的可重入的、互斥的并且支持公平和非公平的锁,其实现了 Lock接口,其内部是通过 AQS + CAS 原理实现的。其具备 synchronized 关键字加锁的所有功能,并且还具备一些 synchronized 锁不具备的功能,比如:尝试拿锁,支持中断、支持超时等待等。

2024-05-19 01:31:19 1982

原创 synchronized原理详解

由于轻量级锁会自旋,即不会放弃CPU,那么对一些执行时间短的任务而言,用轻量级锁可以减少线程切换的时间(对比重量级锁)。偏向锁通过对比 Mark Word 解决加锁问题,避免执行CAS操作。轻量级锁是通过用 CAS 操作和自旋来解决加锁问题,避免线程阻塞和唤醒而影响性能。重量级锁是将除了拥有锁的线程以外的线程都阻塞。

2024-05-17 23:50:16 242

原创 Atomic类

对原子类知识进行梳理。原子类基于CAS函数实现,采用的乐观锁的实现方式。Unsafe提供了Integer、Long、Object的CAS操作函数。对应的类有AtomicInteger、AtomicLong、AtomicReference对ABA问题的解决:AtomicStapedReference、AtomicMarkableReference。通过引入版本号来实现,要同时进行两个值的CAS所以只能实现引用对象的Atomic类。

2024-05-17 23:22:37 1162

原创 多线程基础

1. 单线程中的每个操作 happend-before任意后续操作2. 对volatile变量的写入,happen-before对应后续对这个变量的读取。3. 对synchronized的解锁,happen-before对应后续对这个锁的加锁。4. happen-before的传递性5. final变量的写可见于后续的final变量的读。(3)原理在编译器和CPU层面都有对应的指令,也就是内存屏障。编译器的内存屏障只是为了告诉编译器不要对执行进行重排序。

2024-05-17 01:35:00 837

原创 抽象类、接口、Lambda、内部类

6.1 抽象类抽象类是指定义时有 abstract 修饰的类,例如:public abstract class Person{ ... public abstract String getDescription();//注意末尾没有花括号,而有分号}在定义中有abstract修饰符的方法是抽象方法。抽象类中可以包含实例变量和实例方法,甚至可以没有抽象方法,但是有抽象方法的类一定要定义为抽象类。抽象方法充当着占位的角色,它们的具体实现在子类中。抽象方法不能有方法体,即没有花括号,但必须

2024-05-16 23:17:11 673

原创 Java泛型程序设计

java代码中,判断两个方法是否是同一个方法是根据方法的签名来决定的,方法的签名是不包含方法的返回值的,也就是“方法签名=方法名+参数”。那上面这个两个方法不就冲突了吗,没错,如果我们代码里面这样写确实是冲突了,但是Java虚拟机中的方法签名规则是不同的,其“方法签名=方法名+参数+返回值”,所以他是能正确区分两个方法的,所以字节码中是允许存在上面这种情况的。当然这种情况不只是在使用泛型的时候会出现,当在重写方法时,指定了一个更加严格的返回值类型,虚拟机会帮我们生成桥方法。称为有协变的返回类型。

2024-05-15 16:22:09 1092

原创 Java反射知识梳理

反射

2024-05-15 00:12:18 869

原创 HZNU Winter Training Contest 6

C.Positions in Permutations题意:若∣p[i]−i∣=1|p[i]-i|=1∣p[i]−i∣=1,则这是一个完美位置。问nnn个位置恰好有kkk个完美位置的方案数。设F(m)F(m)F(m)代表固定mmm个完美位置,G(m)G(m)G(m)代表恰好有mmm个完美位置。∑i=0n(−1)i(ni)=0=[n=0]\sum_{i=0}^n(-1)^i\tbinom{n}{i}=0=[n=0]∑i=0n​(−1)i(in​)=0=[n=0]F(m)=∑i=mn(im)G(i)F

2024-05-11 22:46:39 712

原创 Codeforces Round #779 (Div. 2)

Codeforces Round #779 Div.2A.Marin and PhotoshootB.Marin and Anti-coprime PermutationC.Shinju and the Lost PermutationD1.388535 (Easy Version)D2.388535 (Hard Version)E.Gojou and Matrix GameF.Juju and Binary StringA.Marin and Photoshoot题意:有一串01串,0代表男生,1代表

2022-03-28 19:45:56 1260

原创 Codeforces Round #546 (Div. 2)

@[TOC](Codeforces Round #546 (Div. 2))A.Nastya Is Reading a Book题意:一本书共有nnn章,每章为[li,ri][l_i,r_i][li​,ri​],现在读到kkk页,问剩下没读得包括当前章的章数。题解:遍历一遍看第kkk页再第几章,ans=n−k+1ans=n-k+1ans=n−k+1int l[111],r[111];int main() { ios::sync_with_stdio(0); cin.tie(0); cout.t

2022-03-17 18:56:51 542

原创 Codeforces Round #776 (Div. 3)

A. Deletions of Two Adjacent LettersB. DIV + MODC. Weight of the System of Nested SegmentsD. Twist the PermutationE. Rescheduling the ExamF. Vitaly and Advanced Useless AlgorithmsG. Counting ShortcutsA. Deletions of Two Adjacent Letters题意:给你一个字符串,一次可以删.

2022-03-09 12:07:58 2101

原创 Subpermutation-2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛)

题意:把所有nnn元排列按字典序从小到大排成一列,求其中有多少子串为mmm元排列,ttt组询问。题解:(1)考虑单个nnn元组中的mmm元组个数。将mmm元组看成一个元素,排列组合有m!m!m!的情况,现在共有(n−m+1)(n-m+1)(n−m+1)个元素,排列组合为(n−m+1)!(n-m+1)!(n−m+1)!。共有m!(n−m+1)!m!(n-m+1)!m!(n−m+1)!的mmm元组。(2)考虑跨两个nnn元组的mmm元组个数。假设kkk为某个排列中的最后一个使得pk<pk+1&

2022-03-07 23:18:51 342 1

原创 Codeforces Round #539 (Div. 2)

A. Sasha and His TripB. Sasha and Magnetic MachinesC. Sasha and a Bit of RelaxD. Sasha and One More NameF. Sasha and Interesting Fact from Graph TheoryA. Sasha and His Trip题意:从1号城市到n号城市,每过一个城市消耗一升油,在i城市加油的代价为i每升。油箱最多v升油,问到n号城市的最小代价。题解:在最前面几个城市加最多的油,最.

2022-03-07 17:04:04 171

原创 Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)

A. Game题意:你只能跳一次,可以从1的地方跳到任意1的地方,消耗的值为距离差,问最小消耗多少。题解:从前面最后的1跳到后面最前的1.#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <cstring>#include <map>#include <string>#include &lt

2022-03-07 09:41:27 507

原创 Codeforces Round #538 (Div. 2)

Codeforces Round #538 Div.2A.Got Any Grapes?B. Yet Another Array Partitioning TaskC. Trailing Loves (or L'oeufs?)D. Flood FillE. Arithmetic ProgressionF. Please, another Queries on Array?A.Got Any Grapes?题意:由三个人,第一个人需要x个a葡萄,第二个人需要y个a葡萄或b葡萄,第三个人需要z个a,b,c

2022-03-06 15:36:09 494

原创 2022 HZNU Programing Contest for Sophomore Grade Group

A. Petr题意:给定一个字符串S,问以stat字符串开头,以end字符串结尾的子字符串有多少种,若完全一样视为一种。题解:考虑双哈希,以哈希值来判断字符串相等,可以达到n2n^2n2复杂度。wa点:对于end字符串,他的开头下表jjj应该大于等于stat的开头下标iii并且j+len2−1>=i+len1−1j+len2-1>=i+len1-1j+len2−1>=i+len1−1。然后赛时一直T68,因为开了个map,在否循环里判断map里是否已经有这个合法字符串,这样就多

2022-03-05 22:45:06 555

原创 Codeforces Global Round 1

2022/3/4文章目录A. ParityB. TapeC. Meaningless OperationsD. JongmahE. Magic StonesF. Nearest LeafA. Parity题意:求n=a1∗bk−1+a2∗bk−2+...+akn=a_1*b^{k-1}+a_2*b^{k-2}+...+a_kn=a1​∗bk−1+a2​∗bk−2+...+ak​的奇偶性。题解:考虑b的奇偶性,若b为偶数,则前k-1项必为偶数,此时只用判断aka_kak​奇偶性。若b为奇数,n的

2022-03-04 17:09:53 350

原创 ICPC 2019-2020 North-Western Russia Regional Contest

文章目录ICPC 2019-2020 North-Western Russia Regional ContestA.Accurate MovementB.Bad TreapE.EquidistantI.Ideal PyramidJ.Just the Last DigitM.Managing DifficultiesICPC 2019-2020 North-Western Russia Regional ContestA (√)(√)(√)B (√)(√)(√)CDE (√)(√)(√)FG

2021-11-07 15:12:25 308

原创 2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

文章目录2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)B.Perfect FlushC.Coloring ContentionD.Dividing By TwoE.Rainbow StringsI.Error CorrectionL.Carry Cam FailureM.Maze Connect2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)AB

2021-11-06 15:00:36 280

原创 ICL 2016

文章目录ICL 2016A Three seamarksD CamelogisticsF GCD and LCMG PotsH MessengerI Manhattan ProjectM The smallest fractionICL 2016ABCD (√)EF (√)G (√)H (√)I (√)JKLM (√)A Three seamarks给出点M1,M2,M3的坐标,和角M1KM2,M2KM3的大小,求点K的坐标D Camelogistics题意:骆驼要把

2021-11-05 22:47:50 206

原创 寒假训练10最小生成树

模板prim#include<stdio.h>#include<algorithm>using namespace std;const int maxn=100010;int set[maxn];int mark[maxn];int flag;int dis[maxn];struct node{ int a,b,l;};node dot[maxn];bool cmp(node a,node b){ return a.l<b.l;}

2021-01-31 12:32:08 55

原创 寒假训练9最短路入门

最短路dijkstra#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include<bits/stdc++.h>#define min(a,b) (((a)<(b)) ? (a):(b))int dis[1001][1001];const int inf=0x3f3f3f3f; int main(int arg

2021-01-31 12:23:25 42

原创 寒假训练8hash

hashHash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录

2021-01-31 12:15:25 44

原创 寒假训练7搜索

搜索dfs1)算法原理深度优先搜索(Depth First Search),是图遍历算法的一种。用一句话概括就是:“一直往下走,走不通回头,换条路再走,直到无路可走”。具体算法描述为:选择一个起始点 u 作为 当前结点,执行如下操作:a. 访问 当前结点,并且标记该结点已被访问,然后跳转到 b;b. 如果存在一个和 当前结点 相邻并且尚未被访问的结点 v,则将 v 设为 当前结点,继续执行 a;c. 如果不存在这样的 v,则进行回溯,回溯的过程就是回退 当前结点;上述所说的 当前结点 需要用

2021-01-27 17:24:24 37

原创 寒假训练6dp入门

dp数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位…数的每一位就是数位啦!之所以要引入数位的概念完全就是为了dp。数位dp的实质就是换一种暴力枚举的方式,使得新的枚举方式满足dp的性质,然后记忆化就可以了。基础模板#include <iostream>#include <cstring>#include <str

2021-01-27 17:15:01 146

原创 寒假训练5贪心算法

1.贪心算法简介1.1 基本定义在贪婪算法(greedy method) 中,我们要逐步构造一个最优解。每一步,我们都在一定的标准下,做出一个最优决策。做出决策所依据的标准称为贪心准则(greedy criterion)。贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法每一步必须满足以下条件:  1、可行的:即它必须满足问题的约束。  2、局部最优:他是当前步骤中所有可行选择中最佳的局部选择。  

2021-01-26 14:44:51 54 1

sandbox.zip

在线评测系统的安全沙箱开发1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

2024-05-17

MIT 6.830 SimpleDB

MIT 6.830 SimpleDB -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2024-05-17

空空如也

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

TA关注的人

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