自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 向前迈进!走入GC世界:G1 GC原理深入解析

对象从创建到回收经历了什么?那天书般的GC日志到底想告诉我们什么?你是否对此感到好奇,那么请耐下心来,让我带你一起走入这美妙的GC世界,本文将以通俗易懂的方式告诉你G1在背后究竟做了什么。

2022-11-22 22:30:55 1087 1

原创 进程与线程的区别

什么是进程呢?我理解的进程就是程序在操作系统中的一次执行。什么是线程呢?线程我理解是轻量级进程,它依附于进程存在,与进程具有类似的特性,同样拥有运行,阻塞,就绪状态,这三个状态再细划分可以划分为初始,运行中,等待,超时等待,阻塞,结束几个状态,同时共享同一进程的资源。进程与线程的区别:1.线程相比较进程而已,更加的轻量,上下文的创建与切换开销更小2.多个进程共享物理内存,磁盘,打印机与其他资源,多个线程共享同一个地址空间。3.进程用于不同的地址空间,而同一进程的线程用于相同的地址空间,并

2020-07-15 00:19:27 194

原创 TCP流量控制与滑动窗口

TCP连接的发送速率和接收速率是不一致的,接收方处理数据的速度和发送方发送数据的速度可能不匹配,因此若不能使发送方与接收方同步的话,会导致数据的丢包。滑动窗口能比较好的解决这个问题。滑动窗口的机制是在服务端设置一个接受窗口,接收窗口值由数据接收端指定,以字节数形式存储于TCP报文头,在TCP进行三次握手连接的时候,通知窗口信息,使得发送方的发送窗口与接收方的接收窗口同步。提问:TCP如何进行流量控制?TCP请求连接服务器进行三次握手时,服务器会在响应报文段中将接收窗口值,以字节数形式存储于T

2020-07-12 14:23:43 248

原创 四次挥手过程与原因

当一方发送完数据请求关闭连接时,TCP会进行四次挥手,过程如下 TCP A TCP B 1. ESTABLISHED ESTABLISHED 2. FIN-WAIT-1 --> <SEQ=100><CTL=FIN> -->CLOSE-WAIT

2020-07-11 22:06:25 674

原创 为什么要三次握手

为什么要三次握手?TCP协议握手目的是为了保证数据可靠传输,并且提高数据传输的效率,而三次握手恰好能满足以上要求为什么要三次握手: The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion. To deal with this, a special control message, reset,

2020-07-11 20:04:00 254

原创 [..................] / rollbackFailedOptional: verb npm-session 560e475e72d32145问题解决记录

我自己的问题应该是镜像服务器没有设置,下载速度太慢,运行npm config set registry http://registry.npm.taobao.org问题解决

2020-06-12 00:58:44 288

原创 数据库1NF,2NF,3NF,BCNF总结

上述几个范式的定义自己曾理解了很多遍,但总是容易忘记,决定写个总结,忘了就来看看。1NF:通俗的将是表的每一列(数据项)都是不可再分的一部分2NF:在1NF的基础上,所有非主属性对码完全函数依赖(这里完全函数依赖主要区别于平凡函数依赖,是平凡函数依赖的一个子集,平凡函数依赖可以理解为一个关系模式上的属性集X可以完全确定属性集Y,而完全函数依赖则是更细一步规定了X的子集不能完全确定属性集Y)...

2020-05-03 23:29:56 1930

原创 《现代操作系统》学习总结-进程模型

进程模型在进程模型中,计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程,简称进程。一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器、和变量的当前值。从概念上讲,每个进程都拥有自己的虚拟cpu,不过实际上cpu只是轮流处理这些进程而已,只不过由于线程之间切换速度比较快,不容易发现,这种快速的切换进程执行,我们将其称为多道程序设计。如上图,这四道程序被抽象为各自...

2020-04-25 02:37:33 511

原创 Java-finalize()方法与垃圾收集之间的联系

之前有个疑惑,像这样CMS,G1这样大部分时间可以与用户线程并发执行的垃圾收集器,在回收对象时,可以执行finalize方法可以理解,但为什么那些完全stw的收集器也可以执行finalize方法呢,后来去了解了一下发现,执行finalize的机制是这样的在进行垃圾回收时,对于那些被判定为不可达的对象我们会检查它是否有必要执行finalize方法(即finalize有没有被重写,或者已经执行过了...

2020-04-25 01:21:49 226

原创 《深入理解Java虚拟机》学习总结-class文件

一.魔数与版本号每个Class文件的头4个字节被称为魔数,它的唯一作用是确定这个文件是否为一个能被虚拟机接受的class文件。有许多文件都通过魔数的方式来对文件进行验证。Java class文件的魔数位0xCAFEBABE,寓意咖啡宝贝。紧随着魔数的四个字节存储的class文件的版本号,这个不用过多去关注。二.常量池常量池是class文件的一部分,常量池的入口紧接着主、次版本号。由...

2020-04-24 23:10:59 179

原创 《Java并发编程的艺术》学习总结-队列同步器(AQS)

一.队列同步器队列同步器是一个抽象类,全名AbstactQueuedSynchronizer,简称AQS,基于模板方法模式设计的,即会提供一些抽象方法供使用者重写,提供一些模板方法供使用者调用,在自定义同步器的实现中会通过调用模板方法来调用使用者重写的方法。同步器提供了如下三个模板方法来访问或修改同步状态*getState():获取当前同步状态*setState():设置当前同步状...

2020-04-19 23:15:18 165

原创 《深入理解Java虚拟机》学习总结-垃圾收集

一.分代收集理论当前商业虚拟机的垃圾收集器,大多数遵循了“分代收集”的理论,该理论建立在两个分代假说之上:1)弱分代假说:绝大多数对象都是朝生夕灭的2)强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡3)跨代引用假说:跨代引用相对于同代引用来说仅占极少部分这两个分代假说共同奠定了垃圾收集器的一致的设计原则:收集器应该将Java堆划分出不同区域,然后将回收对象依据其年龄分配到...

2020-04-19 16:44:33 326 8

原创 《深入理解Java虚拟机》学习总结-类加载器

一.类与类加载器类加载器只用于实现类的加载阶段,对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间,也就意味着,只有当两个类来源于同一个Class文件,被同一个Java虚拟机加载,那么这两个类才相等。站在Java虚拟机的角度来看,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap Class...

2020-04-17 23:50:05 118

原创 《深入理解Java虚拟机》学习总结-类加载过程

一.类加载的时机一个类型从被加载到虚拟机内存开始,到卸载出内存为止,它的生命周期将会经历加载,验证,准备,解析,初始化,使用和卸载七个阶段。在这个图中,加载,验证,准备,初始化和卸载这五个阶段的开始顺序是确定的(注意确定的只有开始顺序,完成顺序不确定),而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定特性(也称为动态绑定或晚期绑定)...

2020-04-16 23:21:43 180

原创 《深入理解Java虚拟机》学习总结-对象(创建过程,内存布局,访问定位)

一.对象的创建当Java虚拟机遇到一条字节码new指令时,首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用所代表的类是否已被加载、验证、准备、解析、初始化过,如果没有,那必须先执行相应的类加载过程。类加载完成后,接下来虚拟机将为新生对象分配内存。对象所需内存大小在类加载完成后便可完全确定,内存分配完毕后,虚拟机必须将分配到的内存空间(不包括对象头)都初始...

2020-04-16 22:12:13 220

原创 《深入理解Java虚拟机》学习总结-运行时数据区域

Java虚拟机运行时数据区域可划分为以下5个部分:虚拟机栈,本地方法栈,程序计数器,堆,方法区虚拟机栈虚拟机栈是线程私有的数据区,他的生命周期与线程相同。虚拟机栈中划分了若干个栈帧,每个栈帧对应了一个方法,用于存储局部变量表、操作数栈,动态链接、方法出口等信息。1)局部变量表:局部变量表是一组变量值的存储空间,用于存储线程中方法内部定义的局部变量及方法参数,局部变量表以变量槽为最小...

2020-04-16 21:08:35 155

原创 《计算机网路:自顶向下方法》第三章学习总结

1.运输层与网络层的关系?网络层提供了主机间的逻辑通信,而运输层提供了不同主机间进程之间的逻辑通信,在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层)2.TCP和UDP最基本的责任?将两个端系统间IP的交付服务扩展为运行在端系统上两个进程之间的交付服务将主机交付扩展到进程间交付被称为运输层的多路复用与多路分解3.UDP所能提供的服务?进程到进程的数据交付和...

2020-03-24 00:25:45 437

原创 多路分解和多路复用概念

多路分解:在接收端,运输层检查报文段,标识出接收socket,进而将报文段定向至该socket,将运输层报文段交付至正确的socket称为多路分解。多路复用:从源主机的不同socket收集数据块,并为每个数据块装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递至网络层,所有这些工作称之为多路复用...

2020-03-18 22:25:24 1194

原创 计算机网络:自顶向下方法 第二章课后习题

1.列出五种非专用的因特网应用和其对应的协议答:(1)Web应用和HTTP协议 (2)电子邮件应用和STMP(简单邮件传输协议),POP3(第三版邮局协议),IMTA(因特网邮件访问)协议 (3)因特网目录DNS和DNS协议 (4)P2P和P2P协议 (5)文件传输和FTP协议 (6)远程终端访问和Telent2.网络体系结构和应用程序体系结构有什么区别答:从应用程序研发者的角度来看,...

2020-03-18 20:10:32 5446

原创 Spring上下文属性配置及标签使用总结

一.声明一个简单的<bean>如果使用XML文件来装备bean的话,那么<bean>标签是不可或缺的,首先我个人认为,bean其实就是一个对象,我们通过配置bean将对象置于一个容器中去,当我们需要时,这个容器就能够传递给我们需要的对象。<bean>标签经常用到的属性有两个 id,class,id属性的值其实就相当于bean的名字,也就是对象的名字,而c...

2020-02-20 21:09:03 482

原创 获取Class对象的三种方法

1.对象名.getClass()2.类名.class3.Class.forName()

2020-02-20 14:20:12 263

原创 反射实现动态工厂设计模式

package com.zokkk.spring;interface IMessage{ void send();}interface CloudMessage{ void send();}class MyIMessage implements IMessage{ public void send() { System.out.println("IMessage:MyIMes...

2020-02-20 14:19:07 377

原创 2016青岛区域赛G题 Coding Contest 费用流

题意:给n个点,每个点上有x个人和y份食物,给m条边,每条边有走断的概率,不过第一次走是不会断的,点上的人可以通过边来移动,问你让所有人吃上饭破坏边的最小概率思路:求破坏边的最小概率可以转换成不破坏边的最大概率,考虑到精度问题,我们通过对数运算把乘法转换成加法,设置一个超级源点和一个超级汇点,然后跑一遍最小费用最大流即可,注意使用eps精度修正代码:#include<bits/...

2019-11-01 19:46:05 193

原创 The Preliminary Contest for ICPC Asia Xuzhou 2019 I. query

题意:找[l,r]范围内大数是小数的倍数的数对数量思路:首先预处理一下每个数的位置pos[a[i]=i,再从枚举a[i](0<i<=n)的倍数,a[i]*2,a[i]*3....a[i]*(n/a[i]),预处理每个位置左边对其有用的数的位置,再对询问进行离线处理,将r作为键值,放进vector数组里,然后我们实际上做了这么一个操作,处理每个位置的数对右边数的贡献,只不过我们这个右...

2019-10-18 22:39:09 132

原创 The Preliminary Contest for ICPC Asia Xuzhou 2019 G. Colorful String

题意:定义一个字符串的价值为该字符串出现的不同字母的数量,现在给你一个字符串,求其所有回文子串的价值之和思路:预处理一下字符串每个字母出现的位置,manacher求出以位置i为对称轴的回文串的最大半径r,枚举26个字母,二分找出每个字母第一个大于等于i的位置z,然后计算这个字母的贡献ans+=i+r-z就行了代码:#include<bits/stdc++.h>using...

2019-10-18 18:10:35 177

原创 The Preliminary Contest for ICPC Asia Shenyang 2019 D. Fish eating fruit

题意:设f(x,y)=dis(x,y)%3,现在要求f(x,y)=i(0<=i<=2)的路径思路:两种解法,一种树形dp,一种点分治。树形dp:二次扫描换根,第一次扫描,搜索出每个节点到其子树的答案贡献,第二次扫描,搜出这个点到非子树节点的答案贡献最后统计答案的时候加上两次扫描每个点的贡献代码:#include<bits/stdc++.h>usi...

2019-10-15 18:45:30 157

原创 分层最短路模板

#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long#define pi pair<int,int>const int maxn=1e4+9;int d[maxn][11],cnt,k,head[maxn];struct Edge{ ...

2019-10-15 17:15:33 199

原创 点分治模板+学习总结

点分治是一种用来处理树上路径的算法,假如给出一个问题,有一颗树,树上有n个点,要求你求出这棵树上距离小于等于k点对的数量。首先我们有一个最简单直观的想法,求出任意两点之间的距离,判断是否小于等于k,用搜索去写的话我们的时间复杂度是O(n^2),这对于一些有着较大数据范围的题来说是不可接受的,这个时候点分治就出现了。首先对于一颗有根树,满足条件的路径有两种情况:第一种情况,满足条件的路径...

2019-10-10 21:17:12 198

原创 The Preliminary Contest for ICPC Asia Shenyang 2019 B. Dudu's maze

题意:一张图,n个点,m条边,n个点中有k个怪兽节点,除了怪兽节点其他节点都有糖果,从1号点出发,遇到怪兽点就得停下,但你有一次使用传送门的机会,传送门会等概率的将你传送到这个点相连的任意一个点中去,问你最大糖果数的期望值是多少?思路:幷查集找连通块,再找出所有与1号节点所在连通块相连的怪兽节点,枚举这些怪兽节点,找出收益最大的那个代码:#include<bits/stdc++...

2019-10-07 20:05:59 197

原创 The Preliminary Contest for ICPC Asia Shanghai 2019 J. Stone game (退背包)

题意:有n个石头,每个石头重量为a[i],将这n个石头分为2堆,要求第一堆石子比第二堆大,第一堆去掉重量最小的那个石子后又比第二堆小思路:退背包,先用01背包算出容量为j的方案数,然后再从小到大到顺序使石子推出背包代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define inf...

2019-10-06 17:37:59 178

原创 2019牛客暑期多校训练营(第八场)E.Explorer

题意:给你一张有着n个点的图,图上有m条边,每条边有一个属性[l,r]代表只有size在这个区间范围内的才能通过,你在一开始可以喝下一瓶魔法药水,改变自己的size,问你有多少种可能的size使你能从1号点走到n号点。思路:对size离散化,线段树节点存储size段,按秩合并幷查集判断是否连通,dfs从线段树根节点遍历所有可能到达的路径。详细操作:首先我们将题目给出的m条边的size从...

2019-08-18 15:29:38 223

原创 Codeforces Round #577 (Div. 2)D Treasure Hunting (动态规划+二分)

题意:给一个n*m的地图,地图上有k个点放有宝物,你从起点(1,1)出发,只能往上,左,右三个方向,并且只有在安全列才能往上走,要求收集完所有宝物走的最短距离思路:一个dp题,正着递推或倒着递推都是可以的,这里我们倒着递推,从最顶层开始往下面走,每一层可以列出两个状态,假设这一层编号i,第一种状态,收集完第i层到第n层的所有宝物后,最后停留在第i层最左边的宝物点的最短距离,第二种状态,收集完第...

2019-08-06 22:54:49 580

原创 基姆拉尔森公式

d代表日,m代表月,y代表年,w+1代表星期几1582年10月4日后:w = (d + 1+ 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;1582年10月4日前:w = (d+1+2*m+3*(m+1)/5+y+y/4+5) % 7;

2019-08-05 23:38:33 349

原创 2019牛客暑期多校训练营(第四场)补题总结(未完待续)

K.number题意:给一个只有数字构成的字符串,问能整除300的子串有多少思路:我队友给我描述他写这道题的想法,很神奇,他当时看到这道题脑子里突然浮现了三个光束轮流转的画面,然后一下就写出来了。。。实际上这道题就是三个状态的转移。若我们能找到两个连续的0,那我们就只要找到前面的子串中与这两个0相连的子串中有多少是3的倍数就行了,假如我们确定了与第i字符相连的子串大小模3是0,1,2的个数...

2019-07-30 00:05:22 168

原创 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes

题意:题目给定两个序列a,b,规定两个序列若要相等的话,必须满足RMQ(a,l,r)=RMQ(b,l,r),而RMQ(a,l,r)的定义是在a序列中,[l,r]的最小值的下标,即两序列若要相等,则任意相同区间的子串都必须满足最小值下标相等的条件,然后问题是找出a,b序列中最大的r值,使得a[1,r]=b[1,r]思路:如果我们采取相当粗暴的手段去写这道题,首先想到的可能就从小到大枚举r值,然后...

2019-07-26 00:25:39 197

原创 2015ACM/ICPC亚洲区上海站-重现赛 A - An Easy Physics Problem

题意:在二维平面上有一个圆,知道圆心坐标和半径,现在给你一个点A,并且给你一个有方向的速度矢量v,问你这个点能否在按给定的速度矢量方向前进后,最终能经过给出的另一个点B,你可以通过与圆的碰撞来改变点的运动方向,碰撞属于完全弹性碰撞思路:总共可以分为两种情况,第一种情况,点未碰撞前的运动轨迹与圆相切或相离,这种情况我们只需要判断B点是否在它的运动轨迹上就行了,第二种情况,点未碰撞前的运动轨迹...

2019-07-23 22:10:28 8666

转载 线性筛(模板)

prime[]数组中的素数是递增的,当i能整除prime[j],那么i*prime[j+1]这个合数肯定被prime[j]乘以某个数筛掉。 因为i中含有prime[j],prime[j]比prime[j+1]小,即i=k*prime[j],那么i*prime[j+1]=(k*prime[j])*prime [j+1]=k’*prime[j],接下去的素数同理。所以不用筛下去了...

2019-06-27 14:22:47 563

原创 prim模板

#include<iostream>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define inf 0x3f3f3f3fconst int maxn=1e2+9;int mp[maxn][maxn],n,vis[maxn];stru...

2019-06-09 16:49:53 338

原创 Day4 Codeforces Round #562 (Div. 2 A,B,C,D)&&POJ1489(最小生成树)

这些题是昨天就写了的,事情太多,博客拖到现在才写Codeforces Round #562 (Div. 2)A:思路:按题意模拟一下坐车过程,可以先预处理一下a,x,b,y,将其值全部减一,然后模拟的时候在加一减一的基础上每次加一个mod,再模mod就行了,也可以不预处理a,x,b,y,这样的话就得特判处理一下到圆环边界的情况。不预处理代码:#include<bits/...

2019-05-28 02:08:04 147

原创 Day 3 Codeforces Round #558 (Div. 2)(A,B1,B2,C1,C2)

Codeforces Round #558 (Div. 2)A:思路:m个人离开后,还剩n-m个人,枚举1~(n-m),看补上m个人是否能连成环代码:#include<bits/stdc++.h>using namespace std;const int maxn=1e3+9;priority_queue<int>q;int main(){ ...

2019-05-26 01:46:16 149

空空如也

空空如也

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

TA关注的人

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