- 博客(85)
- 收藏
- 关注
原创 Java用户快速了解Python语法(1)
字典用"{ }"标识。列表是有序的对象集合,字典是无序的对象集合,列表的元素通过偏移存取,字典的元素通过键来存取。Python 可以使用引号( ’ )、双引号( " )、三引号( ‘’’ 或 “”" ) 来表示字符串,引号的开始与结束必须是相同类型的。但是元组不能二次赋值,相当于只读列表,可以使用del语句来删除整个元组。python 中多行注释使用三个单引号 ‘’’ 或三个双引号 “”"。**Python 中 break,continue **三引号可以由多行组成,编写多行文本的快捷语法。...
2022-08-09 11:07:14
2294
原创 CAP定理和BASE理论
一个分布式系统不可能同时满足一致性,可用性和分区容错性这三个需求。另一方面:对于分布式系统,分区容错性可以说是一个最基本的要求,因为分布式系统中的组件必然需要被部署到不同的节点,因此必然出现子网络。网络问题又是一个必然出现的异常情况,因此分区容错性也就成为了一个分布式系统必然需要面对和解决的问题。所以我们需要把精力花在如何根据业务特点在C(一致性)和A(可用性)之间寻找平衡说明放弃P简单做法就是将所有的数据(或者与事务相关的数据)放在一个节点上,就不会碰到由于网络分区带来的影响。.........
2022-08-04 13:48:10
159
原创 Java并发面试题
说下内存Java模型?Java内存模型(JMM)线程的状态有哪些?新建状态(NEW):线程创建之后。可运行(RUNNING):可能正在运行, 也可能正在等待 CPU 时间片。阻塞(BLOCKED):等待获取一个排它锁,如果其线程释放了锁就会结束此状态。无限期等待(WAITING); 等待其它线程显式地唤醒,否则不会被分配时间片。限期等待(TIME_WAITING):无需等待其它线程显式地唤醒,在一定时间之后会被系统自动唤醒。终止(TERMINATED):可以是线程结束任务之后自已结束
2022-02-18 15:31:57
527
2
原创 Java基础面试题(下)(2022整理)
B站面试官:先来个肥肠肥肠基础的问题,如下代码:Integer a = 100;Integer b = 100;System.out.println(a == b)//返回什么?Integer c = 150;Integer d = 150;System.out.println(c == d)//返回什么?答:true、false 为什么?原因:像类似Integer包装类类内部都会有缓存,这些缓存的值被加载存放在方法区,对于-128至127范围内的Integer对象,值相同的intege
2022-02-16 21:17:48
520
原创 Web页面请求的历程
假定我启动了我的华为笔记本,然后将其用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连,学校的这台路由器与一个ISP(comcast. net) 连接。在本例中,comcast. net为学校提供了DNS服务;假设 DHCP服务器运行在路由器中。首先将华为笔记本与网络连接时,没有IP地址他就不能做任何事情(例如下载一个Web网页)。所以,笔记本所采取的一个网络相关的动作是运行 DHCP协议,以从本地DHCP服务器获得一个IP地址以及其他信息。1)笔记本的操作系统生成一个DHCP请求
2022-02-13 20:47:45
305
原创 I/O多路复用中select、poll和epoll区别
I/O多路复用中select、poll和epoll区别select: 通过它,我们可以把文件描述符的数组发给操作系统, 让操作系统去遍历,等到数据到达后,告诉我们哪个文件描述符可以读写。操作系统内核做遍历,没有用户态到内核态的切换开销poll:它和 select 的主要区别就是,去掉了 select 只能监听 1024 个文件描述符的限制。因为select描述符类型使用的是数组,默认大小是1024;poll的描述符类型是链表。epoll:解决了select的三大不足,内核中保存一份文件描述符集合,可
2022-02-12 22:24:21
359
原创 Flink运行架构
Flink运行架构文章目录Flink运行架构一、Flink运行架构图二、组件简介1. Flink客户端2.JobManager3.TaskManager3.ResourceManager一、Flink运行架构图作业的提交、执行、管理等一系列的动作,如下图所示:二、组件简介1. Flink客户端Flink客户端用来提交Flink作业到Flink集群,在客户端中负责StreamGraph(流图)和Job Graph(作业图)的构建。使用Table API和SQL编写的Flink应用,还会在客户
2022-02-09 17:17:26
175
原创 Flink自主内存管理——JVM堆上内存和堆外内存的问题
系列文章目录文章目录系列文章目录前言一、JVM内存管理在大数据场景下的问题1.有效数据密度低2.垃圾回收1.OOM问题影响稳定性1.缓存未命中问题二、自主内存管理堆上内存的问题堆外内存的不足之处前言Java语言的好处是不用考虑底层,JVM可以对代码进行深度优化,对内存资源进行管理,自动回收内存。但是自动内存管理的问题在于不可控,基于JVM的大数据引擎常常会面临一个问题,即在处理海量数据的时候,如何在内存中存储大量的数据一、JVM内存管理在大数据场景下的问题1.有效数据密度低Java的
2022-02-09 15:44:15
2964
原创 TCP三次握手和SYN洪泛攻击
系列文章目录文章目录系列文章目录一、三次握手二、TCP安全性1.SYN洪泛攻击一、三次握手第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据。但是在报文段的首部中的一个标志位(即SYN)被置为1。因此,这个特殊报文段被称为SYN报文段。另外,客户会随机地选择一个初始序号(client_isn),并将此编号放置于该起始的TCP SYN报文段的序号字段中。该报文段会被封装在一个IP数据报中,并发送给服务器。第二步:一旦包含TCP SYN报文段的I
2022-02-07 22:05:04
2344
原创 ping的原理(ICMP)
ping的原理文章目录ping的原理前言一、ICMP是什么?1.ping发送什么,收到什么?2.ICMP用途前言我们在网络通信的过程中,常常使用 ping 某一个 IP 地址或者某个域名看下基本连接是否正常;是否有丢包;那么其实ping 的原理是 ICMP 协议一、ICMP是什么?ICMP :因特网控制报文协议ICMP通常被认为是IP的一部分,但从体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的。这就是说,ICMP报文是作为IP有效载荷承载的,就像TCP与UDP报文段作为
2022-02-07 20:56:08
1765
1
原创 Java对象都保存了什么
Java对象都保存了什么文章目录Java对象都保存了什么前言一、对象头Mark Word类型指针二、实例数据三、对齐填充前言Java对象在堆内存中存储布局可以划分为三个部分:对象头、实例数据和对齐填充。一、对象头对象头中包含两类信息:Mark Word第一部分Mark Word,用于存储对象自身数据,如哈希码(HashCode)、GC年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等;它是一个动态定义的数据结构,能够在很小的空间内存储尽可能多的数据,根据对象的状态复用自己的存储空
2022-02-07 17:54:54
954
原创 指针碰撞怎么做的
指针碰撞假设Java内存堆是规整的(内存规整不规整取决于使用了那种GC收集器),所有被使用过的内存都放在一边,空闲内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配的内存就是把这个指针向空闲空间方向移动一段与对象大小相等的距离...
2022-02-07 17:20:46
386
原创 Java基础面试题(上)(2022整理)
Java相关面试题1.Object类中的wait()方法wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法后当前线程被唤醒(进入“就绪状态”)...
2022-02-05 20:37:03
1030
原创 DHCP协议
获取主机地址:动态主机配置协议DHCP动态主机配置协议(Dynamic Host Configuration,DHCP)允许主机自动获取一个IP地址。网络管理员能够配置DHCP,以使某给定主机每次与网络连接时能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址 ,该地址在每次与网络连接时也许是不同的。除了主机IP地址分配外,DHCP还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地 DNS服务器的地址。DHCP使用场景由于 DHCP具有自动将主
2022-02-02 22:43:34
2351
2
原创 边学习边记录IP协议
IPv4数据报格式 :IPv4数据报中的关键字段如下:版本: 这4比特规定了数据报的IP协议版本。不同的IP版本使用不同的数据报格式。IPv4的数据报格式如图所示。首部长度: 因为一个IPv4 数据报可包含一些可变数量的选项(这些选项包括在IPv4数据报首部中),故需要用这4比特来确定IP数据报中数据部分实际从哪里开始。大多数IP数据报不包含选项,所以一般的IP数据报具有20字节的首部。服务类型:服务类型(TOS)比特包含在IPv4首部中,以便使不同类型的IP数据报(例如,一些特别要求低时延、高
2022-02-02 22:26:53
1019
原创 面试题:Kafka为什么吞吐量大、速度那么快
Kafka天生的分布式架构顺序写:Kafka使用了磁盘顺序写来提升的性能。Kafka的message是不断追加到本地磁盘文件末尾的,而不是随机的写入,减少了磁盘寻址的开销Kafka利用了操作系统自身的内存,Kafka的读写操作基本上是基于内存的,读写速度得到了极大的提升。而不是JVM空间内存,避免GC问题,Java对象的内存消耗比较大通过 “零拷贝”的机制,Kafka消费端的性能也大幅提升,零拷贝技术,不需要切换到用户态,在内核态即可完成读写操作,零拷贝避免了在内核空间和用户空间之间的..
2022-02-01 19:17:45
3257
原创 页面置换算法(FIFO、第二次机会、LRU)
页面置换算法文章目录页面置换算法前言一、最近未使用页面置换算法二、先进先出页面置换算法三、第二次机会页面置换算法四、时钟页面置换算法四、最近最少使用页面置换算法四、最不常用算法总结前言当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。如果要换出的页面在内存驻留期间已经被修改过,就必须把它写回磁盘以更新该页面在磁盘上的副本,如果该页面没有被修改过,那么它在磁盘上的副本已经是最新的,不需要回写。直接用调入的页面覆盖被淘汰的页面就可以了。当发生缺页中断时,
2022-01-30 23:25:01
9517
原创 虚拟内存——页表
虚拟地址到物理地址的映射一种最简单的实现虚拟地址被分成虚拟页号(高位部分)和偏移量(低位部分)两部分。例如,对于16位地址和4KB 的页面大小,高4位可以指定16个虚拟页面中的一页,而低12位接着确定了所选页面中的字节偏移量(0~4095)。但是使用3或者5或者其他位数拆分虚拟地址也是可行的。不同的划分对应不同的页面大小。虚拟页号可用作页表的索引,以找到该虚拟页面对应的页表项。由页表项可以找到页框号(如果有的话)。然后把页框号拼接到偏移量的高位端,以替换掉虚拟页号,形成送往内存的物理地址。页表.
2022-01-30 22:31:36
1622
原创 虚拟内存——分页
虚拟内存文章目录虚拟内存前言一、虚拟内存的基本思想二、分页前言随着现在程序对内存的需求越来越大,交换技术并不是一个具有吸引力的解决方案,因为一个典型SATA磁盘的峰值传输率高达每秒好几百兆,这意味着需要好几秒才能换出或换入一个1GB的程序。下面就说说另一个解决方案——虚拟内存。一、虚拟内存的基本思想每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块称作一页或页面(page)。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部
2022-01-30 20:44:48
2370
原创 操作系统——空闲内存管理
空闲内存管理目录文章目录空闲内存管理目录前言一、使用位图的存储管理二、使用链表的存储管理1.首次适配算法2.下次适配算法3.最佳适配算法4.最差适配算法5.快速适配算法前言在动态分配内存时,操作系统有两种方法跟踪内存使用情况:位图和空闲区链表。一、使用位图的存储管理使用位图方法时,内存可能被划分成小到几个字或大到几千字节的分配单元。每个分配单元对应于位图中的一位,0表示空闲,1表示占用(或者相反)。一块内存区和其对应的位图如图所示:a)一段有5个进程和3个空闲区的内存,刻度表示内存分配单
2022-01-30 19:28:06
1144
原创 操作系统——内存交换技术
内存交换把所有进程一直保存在内存中需要巨大的内存,当然我们也不会这么做。那么我们是怎么做的呢?最简单的策略是交换(swapping)技术,即把一个进程完整调入内存,使该进程运行一段时间,然后把它存回磁盘。空闲进程主要存储在磁盘上,所以当它们不运行时就不会占用内存(尽管其中的一些进程会周期性地被唤醒以完成相关工作,然后就又进入睡眠状态)。另一种策略是虚拟内存,该策略甚至能使程序在只有一部分被调人内存的情况下运行。下面先讨论交换技术,虚拟内存看这个。交换系统的操作如上图所示。开始时内存中只有进程A。之后
2022-01-30 18:45:02
4478
原创 地址解析协议ARP
理解ARP因为存在网络层地址(例如,因特网的IP地址)和链路层地址(即 MAC地址),所以需要在它们之间进行转换。对于因特网而言,这是地址解析协议(ARP)的任务。为了理解对于诸如ARP这样协议的需求,考虑如图所示的网络。在这个简单的例子中,每台主机和路由器有一个单一的P地址和单一的MAC地址。与以往一样,IP地址以点分十进制表示法表示,MAC地址以十六进制表示法表示。为了便于讨论,我们假设交换机广播所有帧;这就是说,无论何时交换机在一个接口接收一个帧,它将在其所有其他接口上转发该帧。局域网上的每个接
2022-01-29 21:44:12
1057
原创 链路层交换机及和路由器的比较
文章目录前言一、交换机转发和过滤二、帧来到交换机可能发生的情况三、自学习三、链路交换机的性质四、交换机和路由器比较前言交换机的任务是接收入链路层帧并将它们转发到出链路;交换机自身对子网中的主机和路由器是透明的;这就是说,某主机/路由器向另一个主机/路由器寻址一个帧,顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个结点。这些帧到达该交换机的任何输出接口之一的速率可能暂时会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存。现在
2022-01-29 19:39:48
1656
原创 计算机网络中协议、接口、服务的理解
1.实体:计算机网络中第n层中的活动元素称为n层实体。同一层的实体叫对等实体。2.协议:为网络中的对等实体数据交换而建立的规则、标准或约定(语法、语义、同步)称为网络协议。【水平】3.接口 :上层使用下层服务的入口。4.服务:下层为相邻上层提供的功能调用。【垂直】总结:上层 “实体” 按照 “协议”,通过“接口”调用下层实体提供的“服务”。...
2022-01-29 16:33:04
3017
原创 TCP流量控制
TCP流量控制文章目录TCP流量控制前言一、问题引出二、解决方法1.引入流量控制2.如何使用rwndTCP的拥塞控制前言一、问题引出TCP连接每一侧主机都为该连接设置了接收缓存。当该TCP连接收到正确、按序的字节后,它就将数据放入接收缓存。相关联的应用进程会从该缓存中读取数据,但不必是数据刚一到达就立即读取。事实上,接收方应用也许正忙于其他任务,甚至要过很长时间后才去读取该数据。如果某应用程序读取数据时相对缓慢,而发送方发送得太多、太快,发送的数据就会很容易地使该连接的接收缓存溢出。二、解决
2022-01-28 19:24:06
799
原创 TCP的一些有趣情况和快重传
文章目录一、一些有趣的情况二、超时间隔加倍三、快速重传四、是回退N步还是选择重传一、一些有趣的情况上图描述了第一种情况,主机A向主机B发送一个报文段。假设该报文段的序号是92,而且包含8字节数据。在发出该报文段之后,主机A等待一个来自主机B的确认号为100的报文段。虽然A发出的报文段在主机B上被收到,但从主机B发往主机A的确认报文丢失了。在这种情况下,超时事件就会发生,主机A会重传相同的报文段。当然,当主机B收到该重传的报文段时,它将通过序号发现该报文段包含了早已收到的数据。因此,主机B中的T..
2022-01-26 21:38:50
1485
原创 TCP报文段结构
TCP报文段结构文章目录TCP报文段结构TCP报文段的结构如下图所示。与UDP一样,首部包括源端口号和目的端口号,它被用于多路复用/分解来自或送到上层应用的数据。另外,同UDP一样,TCP首部也包括检验和字段(checksum field)。:TCP报文段首部还包含下列字段:32比特的序号字段(sequence number field)和32比特的确认号字段(acknowl-edgment numberfield)。这些字段被TCP发送方和接收方用来实现可靠数据传输服务。16比
2022-01-26 20:37:22
892
原创 DNS为什么使用UDP
DNS是一个通常使用UDP的应用层协议的例子当一台主机中的DNS应用程序想要进行一次查询时,它构造了一个 DNS查询报文并将其交给UDP。无须执行任何握手,主机端的UDP为此报文添加首部字段,然后将形成的报文段交给网络层。网络层将此UDP报文段封装进一个IP数据报中,然后将其发送给目的服务器。在查询主机中的DNS应用程序则等待对该查询的响应。如果它没有收到响应(可能是由于底层网络丢失了查询或响应),要么试图向另一个DNS服务器发送该查询,要么通知调用的应用程序它不能获得响应。为什么应用开发人员宁愿在UD
2022-01-26 18:41:06
5245
原创 流水线技术下的滑动窗口协议(GBN)和选择重传(SR)
流水线技术对可靠数据传输协议带来如下影响:必须增加序号范围,因为每个输送中的分组(不计算重传的)必须有一个唯一的序号,而且也许有多个在输送中未确认的报文。协议的发送方和接收方两端也许必须缓存多个分组。发送方最低限度应当能缓冲那些已发送但没有确认的分组。接收方或许也需要缓存那些已正确接收的分组。所需序号范围和对缓冲的要求取决于数据传输协议如何处理丢失、损坏及延时过大的分组。解决流水线的差错恢复有两种基本方法是:回退N步(GBN)和选择重传(SR)。回退N步在回退N步(GBN)协议中,允许发送方发
2022-01-26 18:39:41
1379
原创 传输层协议是如何判断分组是新的还是重传
几乎所有现有的数据传输协议中,包括TCP,是在数据分组中添加一新字段,让发送方对其数据分组号,即发送数据分组的**序号**(sequence number)放在该字段。于是,接收方只需要检查序号即可确定收到的分组是否一次重传。...
2022-01-26 17:12:14
199
原创 多路复用与多路分解
进程与套接字一个进程有一个或多个套接字( socket),它相当于从网络向进程传递数据和从进程向网络传递数据的门户。在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。在任一时刻,在接收主机上可能有不止一个套接字,所以每个套接字都有唯一的标识符。标识符的格式取决于它是UDP还是TCP套接字。怎样将一个到达的运输层报文段定向到对应的套接字?为了达到目的,每个运输层报文段中具有几个字段。在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运
2022-01-25 19:53:23
483
原创 运输层和网络层的关系
在协议栈中,运输层刚好位于网络层之上。网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。这种差别虽然细微但很重要。我们用一个家庭类比来帮助分析这种差别。考虑有两个家庭,一家住在北京,一家住在深圳,每家有3个孩子。北京家庭的孩子们是深圳家庭孩子们的堂兄弟姐妹。这两个家庭的孩子们喜欢彼此通信,每个人每星期要互相写一封信,每封信都用单独的信封通过传统的邮政服务传送。因此,每个家庭每星期向另一家发送144封信。每一个家庭有个孩子负责收发邮件,北京家庭是狗蛋而深圳家庭是狗剩。每星
2022-01-25 16:42:06
1153
原创 浏览器输入URL回车后会发生什么?(从DNS角度解读)
提前了解下DNS服务器——分布式、层次数据库为了处理扩展性问题,DNS使用了大量的 DNS服务器,它们以层次方式组织,并且分布在全世界范围内。没有一台DNS服务器拥有因特网上所有主机的映射。相反,该映射分布在所有的DNS服务器上。大致说来,有3种类型的DNS服务器:根DNS服务器、顶级域(TLD)DNS服务器和权威DNS服务器。它们像上图所示组织起来。根 DNS服务器:到2011年秋季,共有247个根服务器。尽管我们将这些根 DNS服务器中的每个都视为单个的服务器,但每台“服务器”实际上是一个冗余服
2022-01-25 15:19:48
733
原创 关于DNS
DNS学习笔记先举一个例子:我和何广智一同走在大街上,别人喊一声靓仔或者帅哥,说明在喊我;如果别人喊的是DIAO毛或者那男的,说明在喊何广智。对于机器而言区分它们的方式是IP地址或者主机名(hostname),前者有严格的层次结构,更容易被路由器区分,后者主机名如“www.baidu.com”更容易被人区分。那么DNS就是用来进行将主机名(hostname)和IP地址进行转换的。DNS是什么?是:一个由分层的 DNS 服务器实现的分布式数据库;一个使得主机能够查询分布式数据库的应用层协议。
2022-01-25 14:35:58
1673
原创 SMTP说明(与HTTP的对比)
SMTP简单说明下去是因特网电子邮件系统的总体情况:从该图中我们可以看到它有3个主要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议( Simple Mail Transfer Protocol ,SMTP)。用户代理允许用户阅读、回复、转发、保存和撰写报文。微软的Outlook和 Apple Mail 是电子邮件用户代理的例子。完成邮件撰写时,邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的报文队列中。邮件服务器形成了电子邮件体系结构的核心。
2022-01-24 20:27:19
5465
1
原创 文件传输协议:FTP(和HTTP的异同)
一个典型的FTP会话用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件,反之亦然。HTTP和FTP异同HTTP和FTP都是文件传输协议,并且有很多共同的特点,例如,它们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别。其中最显著的就是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(control connectio
2022-01-24 19:07:06
2109
原创 Web缓存(浏览器的缓存)
Web缓存Web缓存器( Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP请求首先指向 Web缓存器。一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。举例来说,假设浏览器正在请求对象http://www. someschool. edu/campus.gif,将会发生如下情况:浏览器建立
2022-01-24 18:40:43
1810
原创 基于Flink实时数仓——DWS层-关键词主题表FlinkSQL(9)
需求分析与思路:关键词主题这个主要是为了大屏展示中的字符云的展示效果,用于感性的让大屏观看者感知目前的用户都更关心的那些商品和关键词。关键词的展示也是一种维度聚合的结果,根据聚合的大小来决定关键词的大小。关键词的第一重要来源的就是用户在搜索栏的搜索,另外就是从以商品为主题的统计中获取关键词IK 分词器的使用因为无论是从用户的搜索栏中,还是从商品名称中文字都是可能是比较长的,且由多个关键词组成所以我们需要根据把长文本分割成一个一个的词,这种分词技术,在搜索引擎中可能会用到。对于中文分词,现在的
2022-01-23 22:50:26
1523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人