
学习心得
文章平均质量分 57
Aristocrat l
由于个人学习太过枯燥,同时缺乏方向感,所以今天开始写博客 记录自己的学习生活
展开
-
Docker入门学习
Docker安装yum install -y yum-utils配置镜像yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache安装dockeryum install docker-ce docker-ce-cli containerd.io启动dockersystemctl start doc...原创 2022-04-17 10:03:10 · 760 阅读 · 0 评论 -
jvm的三大类记载器
引导类加载器,拓展类加载器以及系统类加载器BootStrap ClassLoader(引导类加载器): 引导类加载器是有c/c++编写成的,没有继承于ClassLoader类, 负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath 参数指定路径中的,且被虚拟机认可(按文件名识别,如 rt.jar)的类,例如java包下的,javax包下的类就需要引导类加载器进行加载。Extension ClassLoader(扩展类加载器): 由ja...原创 2022-03-28 17:55:45 · 758 阅读 · 0 评论 -
jvm类加载机制
jvm类加载的五个阶段加载,验证,准备,解析,初始化类加载过程:1.加载: 加载指的是将类的class文件读入到内存,从二进制,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。...原创 2022-03-28 17:37:18 · 868 阅读 · 0 评论 -
计算机网络——滑动窗口
背景当网络通信中每个数据包都需要确认应答,那么包的往返时间越长,网络的吞吐量就会越低,所以TCP引入了窗口这个概念。窗口大小窗口大小就是无需确认等待应答的最大连续发送的数据量。窗口大小由TCP头部的Window字段决定。窗口传输丢包假设此时发送三个数据包,分别为1,1461和2921三个,那么这三个数据包不需要等待ack包确认就可以发送下一个数据包,这样即使中间有一个ack丢失了,只要后续的ack能传输到,也能证明丢失的回应对应的数据包已经...原创 2022-03-27 10:51:50 · 4961 阅读 · 0 评论 -
redis学习——RDB和AOF持久化
定义rdb持久化:把当前数据生成快照保存在硬盘上aof持久化:记录每次对数据的操作到硬盘上RDB特点操作rdb持久化可以手动也可以自动,手动需要进行save和bgsave两种操作,而自动需要修改配置文件。save操作:当执行save操作时,redis服务就会进入阻塞状态,直到rdb持久化完成。此操作在处理大量数据持久化时会造成长时间阻塞。bgsave操作:当执行bgsave操作时,redi...原创 2022-03-26 18:19:43 · 1306 阅读 · 0 评论 -
草稿——redis学习bitmaps集合日志
bitmaps基于位存储,消耗空间很少,是操作二进制位来进行记录,只有0 和1 两个状态。实用场景:比如当统计具有某个状态的人数时,可以设置某个人的状态为0或1,然后统计1的数量即可。类似的,在进行钉钉学习打卡的时候,会给每天标上已打卡和未打卡两种状态。#setbit bitmaps集合名 标号 值(设置集合某个序号的0,1 状态)127.0.0.1:6379[1]> setbit sign 0 1(integer) 0127.0.0.1:6379[...原创 2022-03-24 17:25:03 · 1915 阅读 · 0 评论 -
草稿——redis学习有关geospatial操作日志
geospatial集合实例,比如我们点了一份美团外卖,那么我们就需要知道骑手距离我们的距离。我们还需要查看本地的其他外卖店等等,都可以基于geospatial完成。#geoadd geo集合名 经度 维度 值(设置图的集合,保存形式为 集合名 1.地名 2.经度,维度 )127.0.0.1:6379[1]> geoadd china:city 116.40 39.90 beijing(integer) 1127.0.0.1:6379[1]> geoadd chi...原创 2022-03-24 16:36:27 · 634 阅读 · 0 评论 -
计算机网络——重传机制
超时重传:超时重传顾名思义就是当发送数据一定时间后没有收到回应,那么就会触发超时重传,那么超时重传的时间限制是多少呢。在计网基础学习中我们接触了时延RTT,RTT表示一次发送一次回应的总时间,RTT的时长是不确定的。而RTO是超时重传的时间,RTO的时间会略大于RTT的时间。有人会问RTT时间不是不确定的吗,怎么每次都确定RTO比RTT大一点呢?这个问题应该问学概率统计的哈哈哈。但是所有丢失的信息都进行超时重传效率会很低,因为要等待一段时间。快速重传:...原创 2022-03-24 10:40:01 · 4526 阅读 · 0 评论 -
计算机网络——TCP四次挥手
TCP的四次挥手(假设由客户端发起)首先客户端原先处于ESTABLISHED状态,然后客户端发送完信息后发送FIN给服务器,此后自己进入FIN_WAIT1状态。服务器原先处于ESTABLISHED状态,然后服务器接收到FIN之后回复ACK,接着进入CLOSE_WAIT状态。客户端接收到ACK后进入FIN_WAIT2状态。服务器处理完接收的数据之后发送FIN表示不再接收数据,请求关闭。接着进入LAST_ACK状态。客户端接收到FI...原创 2022-03-24 10:16:44 · 3677 阅读 · 0 评论 -
计算机网络——TCP三次握手,以及与UDP的区别
TCP协议头部信息:TCP三次握手:首先客户端给服务器发送连接请求,将标志位SYN设置为1,然后随机生成自身序列号,然后将SYN和自身序列号Seq发送给服务器,自己进入SYN_SENT状态。服务器接收到信息后,将序列号Seq+1设置为自己的确认应答号Ack,让后将自己的标志位ACK设置为1表示确认收到,SYN设置为1表示请求连接,并随机生成一个随机数作为自身序列号Seq,然后回复ACK,SYN,Seq number以及Ack number,随后自己进入SYN_...原创 2022-03-24 09:50:30 · 1932 阅读 · 0 评论 -
草稿——redis学习sort set集合日志
#zadd 集合名 排序值 值(添加值,如果没有集合就创建集合,可以添加多条)127.0.0.1:6379[1]> zadd myset 1 one(integer) 1127.0.0.1:6379[1]> zadd myset 2 two(integer) 1127.0.0.1:6379[1]> zadd mysey 3 three(integer) 1127.0.0.1:6379[1]> zadd myset 3 three 4 four(integer)...原创 2022-03-24 08:58:18 · 233 阅读 · 0 评论 -
草稿——redis学习有关hash集合日志
#hset hash集合名 键 值(设置hash集合的键值对,如果已有那么覆盖,如果无表,那么创建)127.0.0.1:6379[1]> hset person name zhangsan(integer) 1127.0.0.1:6379[1]> hset person age 19(integer) 1#hset hash集合名 键(根据hash集合的键获取值)127.0.0.1:6379[1]> hget person name"zhangsan"127.0...原创 2022-03-23 19:54:25 · 235 阅读 · 0 评论 -
草稿——redis学习有关set集合日志
#sadd set集合名 值(没有集合创建set集合,添加值)127.0.0.1:6379[1]> sadd set ling (integer) 1127.0.0.1:6379[1]> sadd set meng(integer) 1127.0.0.1:6379[1]> sadd set wu(integer) 1#smembers set集合名(查看set集合所有值)127.0.0.1:6379[1]> smembers set1) "meng"...原创 2022-03-23 17:54:53 · 246 阅读 · 0 评论 -
草稿——redis学习有关list日志
这里打个草稿,里面都是有关list的操作记录,以免后面忘记,可以来查看当时如何操作,得出怎样的结果。127.0.0.1:6379[1]> select 1OK127.0.0.1:6379[1]> DBSIZE(integer) 2127.0.0.1:6379[1]> flushdbOK127.0.0.1:6379[1]> DBSIZE(integer) 0127.0.0.1:6379[1]> lpush list one(integer)...原创 2022-03-23 17:27:29 · 823 阅读 · 0 评论 -
草稿——记录一下计网学习问题以及redis学习日志
计算机网络最近看到了TCP的三次握手四次挥手详解,为什么需要三次握手?二次,四次为什么不行?为什么需要四次挥手?三次握手的各个状态是什么?四次挥手的各个状态是什么?close_wait有什么意义?time_wait有什么意义?以及四种重传机制:超时重传,快速重传,sack模式,d-sack模式。滑动窗口解决发送包效率问题。发送包如何改善。滑动窗口如何进行流量控制?滑动窗口如何进行拥塞控制?拥塞控制四个算法:慢启动,拥塞避免,拥塞发生,快恢复如何实现的?与流量控制有关的,如果收发包时操作系统减...原创 2022-03-23 16:43:45 · 637 阅读 · 0 评论 -
计算机网络——详解HTTP2.0
HTTP2.0在前文已经提及过了,但是他调优的详细情况还没总结。回顾一下HTTP1.1的缺点:1.头部冗余,有重复字段或字符串2.头部过大,传输压力大3.队头堵塞,非管道传输请求堵塞,管道传输响应堵塞4.必须由客户端发起连接,服务器给予相应5.无请求优先级处理HTTP如何处理请求头冗余:HPACK算法1.静态表...原创 2022-03-20 10:44:41 · 2278 阅读 · 0 评论 -
HTTP1.0--HTTP1.1--HTTP2.0分别做了哪些优化
HTTP1.0--HTTP1.1的优化:1.使用长对话模式:之前每次请求响应都需要建立TCP/IP连接,资源消耗较大,使用长对话可以一次连接多次请求响应2.管道传输:之前http1.0发送一个请求后必须等待结果才能发送第二个请求,而http1.0在发送完请求后可以接着发送第二次请求,最后只要把响应的结果按顺序对应即可。HTTP1.1存在的问题:1.只能压缩body部分:请求信息头部无法压缩,头部较长时资源消耗较大。2.队头堵...原创 2022-03-19 13:57:10 · 1799 阅读 · 0 评论 -
计算机网络——ECDHE优化交换密钥
由于DH交换密钥算法计算过程较为复杂,所以现在大多数应用程序使用的都是ECDHE密钥交换方法,大致的流程和DH一样,只是核心计算法由离散对数改变为了椭圆。需求:通信双方确认选择一个椭圆,椭圆的曲率是相同的,有了相同曲率的椭圆就可以确认相同的基点G。这两个数据是公开的不需要加密,双方各自生成私钥a和b,计算公钥A=Ga,B=Gb,最后一方计算点(x1,y1) = aB,另外一方计算点(x2,y2) = bA。由于椭圆曲线上是可以满⾜乘法交换和结合律,所以 aB = abG ...原创 2022-03-19 13:15:57 · 1071 阅读 · 0 评论 -
计算机网络——DH密钥交换
之前的文章说的都是RSA加密形式加密密钥,但是这类加密方式都有一个共性问题,你就是前向性原创 2022-03-19 12:57:16 · 3440 阅读 · 0 评论 -
计算机网络——公钥数字认证
当客户端和服务器进行非对称的密钥通信时,服务器需要将一把公钥安全无误的交给客户端,这就涉及了公钥会不会被伪冒的问题。为了解决这一问题,可以使用权威认证机构CA去认证公钥的官方性。首先服务器接收到SSL/TLS连接请求后,生成一把公钥和一把私钥,然后向权威机构CA申请公钥认证证书。CA拿到公钥后给服务器端生成文件证书(包含序号Serial Number,发行人Issuer,合法性Validity等),然后将文件证书经过Hash算法计算成为一个哈希值,接着...原创 2022-03-18 14:04:27 · 1357 阅读 · 0 评论 -
计算机网络读笔记DAY6
SSL/TLS握手阶段四次通信过程SSL/TLS会话首先由客户端发起,客户端发送ClientHello给服务器端表示请求建立SSL/TLS连接,这一步生成了第一个随机数,向服务器端传输了第一个随机数,自己的支持的TLS版本和自己支持的密码算法列表。然后服务器端首先回复ACK表示接收到了,然后接收到ClientHello后,同样生成了一个随机数,并且返回给客户端自己支持的TLS版本,密码算法列表以及第二个随机数。接下来服务器向CA申请公钥认证,CA使...原创 2022-03-18 09:25:21 · 87 阅读 · 0 评论 -
计算机网络读书笔记DAY5(2)
公开密钥和共享密钥的联合使用在上一篇知道,公开密钥主要是接收方一发拥有私钥,共享了公钥,但是如果只用公开密钥进行通信那么真实的速度是很慢的,(因为公钥同样可能被伪造,所以公钥也需要认证,如果每次都认证,那么就会减慢总体流程)。虽然共享密钥可以解决传播慢的问题,但是共享密钥有一个致命的缺点,那就是难以把共享的密钥在可能被拦截修改的情况下传送给对方。于是就有了两种方式结合的办法。首先使用公开密钥的方式,服务器生成两把密钥,分别是公钥和私钥,公钥如果直接发送很容易被截取篡改...原创 2022-03-17 18:27:16 · 614 阅读 · 0 评论 -
计算机网络读书笔记DAY5
HTTP的信息安全问题安全问题主要有一下几个地方:1.无法确定接收请求的就是服务器,可能是被伪装的。2.无法确定接收响应的就是客户端,可能是被伪装的。3.无法确定通信对方是否具有访问权限。4.无法确定请求来自何方,出自谁手,中途可能被篡改。5.即使是无意义的请求也会照单全收,可能会被黑客发送海量请求,照成DOS攻击。HTTPS如何使信息传递变得安全1.检验身份这里使用了SSL,SSL提供了加密处理,还使用了证书这个方法。证书由值得信赖的第三方颁发,用于证明服务器和客户原创 2022-03-17 17:52:11 · 566 阅读 · 0 评论 -
计算机网络读书笔记DAY4(3)
IP与以太网的包收发操作本节内容和前面的相比稍微有些抽象,我是用城市公交站来理解的网络包经过IP模块的发送操作。网络包:网络包是由两部分组成,头部和数据部分。头部包含目的地址等信息,数据部分就是协议中的一些数据等。IP包:IP包包含了两个部分,一个是Ip头部,还有一个是数据部分(数据部分包括TCP头部和数据块,也就是前几篇文章所讲的部分)以太网包:以太网包包含了三个部分,MAC头部,IP头部,和数据部分。派送一个网络包就像是一个正在旅途的人要经过很多站点,从村子站点到镇子原创 2022-03-15 15:01:12 · 915 阅读 · 0 评论 -
计算机网络读书笔记 DAY4(2)
断开连接操作:断开连接操作一般由数据发送的一方发起断开的过程,可能是服务器,也可能是客户端。这里以服务器为例,服务器会首先调用Socket库中的close程序,然后服务器的协议栈就会生成有关断开连接的TCP头部,具体是将TCP头部中控制位的FIN比特值设置为1。接下来就是将这段信息发送给客户端,客户端接收到后返回ACK值表示接收到了。这些操作完成后协议栈就可以等待应用程序来读取加载的数据了。当数据都接收完毕,协议栈会告知应用程序信息收发完毕了,该断开连接了,应用程序得知后会调用Socket库中的clos原创 2022-03-15 14:16:45 · 1981 阅读 · 0 评论 -
计算机网络读书笔记 DAY4
上次说到了客户端与服务器的连接操作,今天解决收发操作,如何使用滑动窗口解决等待时间问题,TCP模块交给IP模块后IP模块发送数据前做了什么。发送缓冲区:当浏览器调用完connect方法后,接下来就是调用write方法将发送的数据交给协议栈,协议栈接收到信息后并不是立马发送出去,而是将数据存放在内部的发送缓冲区中,并等待应用程序的下一段数据。不同的应用程序读取字节的方法有时是不同的。有的是一个一个字节传的,有的是一组一组传的。如果是一个字节一个字节传送的话,那每传一个字节就要发送一次数据,那得发送多少原创 2022-03-15 13:57:48 · 1388 阅读 · 0 评论 -
计算机网络读书笔记 DAY3
操作系统协议栈:协议栈上半部有两块,分别是负责用TCP协议收发数据的部分和负责用UDP协议收发数据的部分。下半部分用IP协议控制网络包收发操作部分。在网络层传送数据时,数据会被切割成包,而将其发送到通信对象的操作就是IP负责的。TCP一般用于什么情况:浏览器、邮件等一般应用程序收发数据UDP一般用于什么情况:查询等收发较短的控制数据时IP包含两块:ICMP协议:用于告知网络包传送过程中产生的错误以及各种控制信息。ARP协议:用于根据IP地址查询相关以太网MAC网址。套接字原创 2022-03-14 10:23:22 · 456 阅读 · 0 评论 -
计算机网络读书笔记 DAY2(1)
第一章最后一节:1.4委托协议栈发送消息当我们从DNS服务器拿到完整的ip地址了之后,所有发送数据都已经准备完毕:ip地址,浏览器更具http协议解析后的信息,web服务器的端口号,剩下就是发送信息和接受信息了,但是与服务器连接的操作是浏览器无法做到的,需要委托操作系统中的协议栈去解决。而委托给协议栈的过程就是本节主要内容概念:端口号:每台计算机都有着自己的ip地址,当两个服务器和客户端需要发送通信时只有ip地址时不行的,他只是帮助我们找到对方的计算机在哪,而...原创 2022-03-11 10:26:27 · 2219 阅读 · 0 评论 -
计算机网络读书笔记 DAY1
今日阅读:1.1生成HTTP请求消息,1.2向DNS服务器查询Web服务器的IP地址,1.3全世界DNS服务器大接力HTTP协议一般的URL: http: + // + web服务器名 + / +目录名 + / + .... + 文件名 开头的http也就是协议名,访问不同的服务器会用到不同的协议常用的请求方法: GET POST PUT DELETE 等请求的结构:...原创 2022-03-10 14:30:50 · 112 阅读 · 0 评论 -
力扣494.目标和(动态规划)
推导题意:本题是将数组分为两组,一组是加号,另一组是减号设加数为x,减数为y:x + y = sum;x - y = target;而数组总和可以自己求出来,数组target题目已给,所以可以推出x的值:x = (sum +target)/2;如果后者能除尽则可以用加减号计算出结果,若除有余数则不可能计算出target所以本题转化为动态规划背包问题设一维dp滚动...原创 2022-03-09 11:28:02 · 330 阅读 · 0 评论 -
力扣95.不同的二叉搜索树2(dfs暴力解法)
这题明显可以使用dfs解决分析递推公式:1.当只有一个节点时,直接返回该节点2.当有两个节点时两种情况:1.小节点在上,右孩子为大节点 2.大节点在上,左孩子为小节点3.当有三个节点时三种情况:1.最小的节点在上,中等和最大的节点按照第二种方法排序2.中间节点在上,左右分别按照第一种方法3.最大的节点在上,左节点按照第二种方法排序以此类推,当n个节点时遍历n,当第i个节点作为根...原创 2022-03-08 12:13:16 · 239 阅读 · 0 评论 -
力扣42. 接雨水(双指针解法)
思路:最后无论原图形如何都会形成阶梯型,而每个阶梯型与力扣11.最大盛水容器类似,所以本题选择双指针法,首先查找到最高的一节,然后中心扩散。第一步,找到最高点,left指针与right指针同时指向该点第二步,双指针向左右扩散,找到次高点,计算与left,right之间的容量第三步,继续向左向右找次高点,计算盛水面积第四步继续进行扩散结束,返回总面积。package oneProject;public class Trap...原创 2022-03-08 11:59:38 · 630 阅读 · 0 评论 -
spring三级缓存解决循环依赖源码
当spring创建的对象A依赖于对象B,同时对象B又依赖于对象A,那么他们之间的相互依赖就会形成闭环,那么此时就会出现栈溢出异常。假设没有三级缓存,首先spring创建对象A,完成实例化后开始初始化注入属性,发现属性需要B对象,那么spring就应该先查看容器中是否含有创建好的B对象,很显然此时没有,那么spring就会转去创建B对象,当spring开始创建B对象时又发现B对象需要注入A对象,那么spring就会查看容器中是否有创建好的A对象,很显然没有(上一个A对象还在创建着呢)所有又会去...原创 2022-03-07 17:01:47 · 189 阅读 · 0 评论 -
Spring的工作流程
经过十多天的学习,我的脑海中开始对spring框架有了基本的认识首先我了解了spring框架的几个基本的常见的类:BeanFactory、BeanDefinition、BeanFactoryPostProfessor、BeanPostProcessor、BeanDefinitionReader还有Aware有关接口他们的功能区在于spring的各个工作功能期首先无论是选择使用注解开发还是使用配置文件开发注册bean,spring都需要一个类去读取这...原创 2022-03-05 16:37:27 · 1453 阅读 · 0 评论 -
力扣473. 火柴拼正方形(dfs暴力解法)
题目:你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。如果你能使这个正方形,则返回 true ,否则返回 false测试1输入: matchsticks = [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。测试2输入: matchsticks = [原创 2022-03-03 09:02:04 · 509 阅读 · 0 评论 -
基于注解开发spring
目录@Configuration@Bean@ComponentScan1.basePackages属性:用于设置可以扫描到的注解所在包的范围,也就是原本扫描标签的value值。2.includeFilters属性:该属性是一个数组,用于拦截除指定bean以外的所有注解bean3.excludeFilters属性:该属性是一个数组,用于拦截所有指定bean@Filter1.type属性:用于设置拦截的方式:2.classe...原创 2022-03-02 11:26:00 · 615 阅读 · 0 评论 -
力扣416.分割等和子集
日常算法打卡416.分割等和子集本题题干:给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。事例1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。事例2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。本题可以使用dfs深搜,但是算法复杂度十分高,所以使用动态规划滚动...原创 2022-02-19 23:20:13 · 303 阅读 · 0 评论 -
01背包——滚动数组动态规划优化
在上篇讲述了01背包基础问题,但是代码思想任然存在可优化地方,比如我们可以从递推公式可以看出来:原递推公式当前承重量的背包最大容纳价值 = max(腾出新物品空位后的背包承重量最大价值 + 新物品的价值,不加入新物品的最大价值);dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);原递推思路定义一个二维数组,每一列为从0-max解放的背包重量,每...原创 2022-02-18 13:28:34 · 572 阅读 · 0 评论 -
01背包问题——动态规划详解
有N件物品和⼀个最多能被重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能⽤⼀次,求解将哪些物品装入背包⾥物品价值总和最⼤。 在题目中我们假设有三件物品 重量 价值 物品1 1 15 物品2 3 20 物品3 ...原创 2022-02-17 19:15:07 · 2372 阅读 · 0 评论 -
Spring框架——简单了解IoC Service Provider
目录1.IoC Service Provider的职责定义职责2.IoC Service Provider如何管理对象之间的依赖注入关系三种IoC Service Provider使用的注册对象管理信息的方式1.IoC Service Provider的职责定义IoC Service Provider在这里是一个抽象的概念,他可以指代任何将IoC场景中的业务对象绑定到一起的实现方式。我们在学习spring框架的ioc容器时可以明显的感受...原创 2022-02-16 13:12:11 · 555 阅读 · 0 评论