<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kai0511的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kai0511</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kai0511]]></copyright><item><title><![CDATA[程序员后端学习路线大体了解]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118394210</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118394210</guid><author>kai0511</author><pubDate>Thu, 01 Jul 2021 22:17:36 +0800</pubDate><description><![CDATA[GitHub上比较火的路线

对勾颜色标志
紫色：强烈建议学习
绿色：备选方案，选择这个学习或是绿色
灰色：路线图中的顺序不严格（随时学习）可作为进阶
纯灰色：不建议学习，过时
第一部分：Internet（网络部分）
1.整个互联网网络怎样运行的。（计算机网络）
计算机网络中基础概念：五层协议，HTTP，浏览器，DNS
每一层的所做的事情，要搞清楚。
2.什么是HTTP–HTTPS（学习前端必须了解的协议，后端也需要学习）
3.浏览器是怎么工作的（前端所需要了解的，后端也需要了解）
什么是DNS，什么是域名]]></description><category></category></item><item><title><![CDATA[剑指offer（jz41--jz50）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118173474</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118173474</guid><author>kai0511</author><pubDate>Thu, 24 Jun 2021 08:32:14 +0800</pubDate><description><![CDATA[jz41 和为S的连续正数序列
描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?
思路
暴力解法：遍历两遍数组，穷举找到所有的序列。
优化解法（滑动窗口）:考虑到序列是连续的，可以维护一个两个指针，计算序列值，终止条件是序列的中间数]]></description><category></category></item><item><title><![CDATA[运输层协议TCP与UDP]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118146878</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118146878</guid><author>kai0511</author><pubDate>Wed, 23 Jun 2021 11:26:18 +0800</pubDate><description><![CDATA[地位：运输层向它上面的应用层提供通信服务，属于面向通信部分的最高层，同时也是用户功能最低层。
存在：当网络的边缘部分的两台主机进行端到端的通信时，只有主机的协议栈才有运输层，网络核心的路由器转发分组时都只能用到下三层的功能。
存在的必要：网络层只能把信息传送到对应的主机上，但根本上通信的是主机之间的进程，只有网络层无法送到准确的进程。所以需要运输层掌控端到端即应用进程之间的通信。
运输层重要功能：复用和分用。
复用：一台主机上的进程要与其他主机进程通讯，都要经过同一个运输层协议。
分用 ：主机接收到的数据都]]></description><category></category></item><item><title><![CDATA[剑指offer（jz31--jz40） python!!]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118137165</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118137165</guid><author>kai0511</author><pubDate>Wed, 23 Jun 2021 07:30:01 +0800</pubDate><description><![CDATA[jz31 整数中1出现的次数（从1到n整数中1出现的次数）
描述
输入一个整数 n ，求1～n这n个整数的十进制表示中1出现的次数
例如，1~13中包含1的数字有1、10、11、12、13因此共出现6次
思路
直接方法：把1-n个数字拼接成一个字符串，遍历出1的个数，最简单直接的方法。时间复杂度接近于kn。基本可行
代码如下:
def jz31(s):
	count=0
	t=''
	for i in range(len(s)):
		t+=str(i)
	for j in t:
		if j=='1':
]]></description><category></category></item><item><title><![CDATA[网络层IP地址与数据链路层MAC地址]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118106981</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118106981</guid><author>kai0511</author><pubDate>Tue, 22 Jun 2021 15:06:08 +0800</pubDate><description><![CDATA[区别：从体系结构来看，MAC地址是属于数据链路层和物理层使用的地址
IP地址是网络层及以上的各层使用的地址，是一种逻辑地址。IP地址是用软件实现的。
在通信线路上进行传输的是MAC帧，运输首先看的是MAC帧。从主机1向主机2发送，无论中间发生了什么事，源ip地址和目标ip地址始终不会改变，改变的是物理地址。
细节：
（1）在ip层抽象的互联网上只能看到ip数据报。
（2）ip数据报有具体的ip地址，但路由器只根据网络号进行路由选择
（3）局域网的链路层，只能看见MAC帧。
（4）尽管各个网络的硬件体系不同，]]></description><category></category></item><item><title><![CDATA[剑指offer（jz21--jz30）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118098324</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118098324</guid><author>kai0511</author><pubDate>Tue, 22 Jun 2021 06:52:32 +0800</pubDate><description><![CDATA[jz21 栈的压入弹出序列
描述
输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该压栈序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。（注意：这两个序列的长度是相等的）
思路分析
创建一个栈，进行进栈操作，同时进行出栈的判断，最后判断栈里是否还有元素，以此判断是否是出栈顺序。判断条件就是栈是否为空。
代码如下：
def solution(pu]]></description><category></category></item><item><title><![CDATA[运输层安全协议---SSL与TLS]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118089906</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118089906</guid><author>kai0511</author><pubDate>Mon, 21 Jun 2021 16:59:54 +0800</pubDate><description><![CDATA[SSL作用在端系统应用层的HTTP和运输层之间，在TCP上建立起一个安全通道，为通过TCP传输的应用层数据提供安全保障。
SSL2.0/3,0 TLS1.0/1.1/1.2
未使用SSL时，应用层的数据是通过TCP套接字与运输层进行交互。
SSL应该是运输层协议，但实际上，HTTP把SSL驻留在应用层，在应用层的下面加上了一层SSL子层，之间有一个SSL套接字，是两者之间的编程接口API。
SSL应用广泛，最常见的是用在HTTP上。
TCP的HTTPS端口号是443.
大致流程：
浏览器先建立TCP连接，先]]></description><category></category></item><item><title><![CDATA[网络层提供的两种服务]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118082954</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118082954</guid><author>kai0511</author><pubDate>Mon, 21 Jun 2021 12:06:17 +0800</pubDate><description><![CDATA[计算机网络领域，网络层应该怎么向运输层提供服务，是面向连接还是无连接？
争论的实质就是，计算机通讯中，可靠交付应当由谁来负责，是网络还是端系统？
传统电信网的主要业务是提供电话服务，面向连接的通信方式。部分人希望两台计算机之间先建立连接，建立一条虚电路。这样减少开销，不用记录主机的地址，只需要记住虚电路的编号。
电话机适合这种虚电路，因为电话机没有差错处理能力，只能端对端进行传输，保障语音通话质量。互联网可以采用这种方式，但造价比较比较贵，（交换机）。为了降低造价，让运行方式更加灵活。采用无连接，简单灵活，]]></description><category></category></item><item><title><![CDATA[剑指offer（jz11--jz20）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118078684</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118078684</guid><author>kai0511</author><pubDate>Mon, 21 Jun 2021 07:33:17 +0800</pubDate><description><![CDATA[jz11 二进制中1的个数
描述
输入一个整数，输出该数32位二进制表示中1的个数。其中负数用补码表示。
思路
把整数n当做一个而二进制数，每次与n-1做按位与操作，再每次把n向右移动一位。
代码如下：
def solution(n):
	count=0
	while n!=0:
		count+=1
		n=n&amp;(n-1)
	return count

比较讲究技巧。还有除2取模法。二进制移位法。
jz12 数值的整数次方
描述
给定一个double类型的浮点数base和int类型的整数expon]]></description><category></category></item><item><title><![CDATA[剑指offer（jz1--jz10）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118066841</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118066841</guid><author>kai0511</author><pubDate>Sun, 20 Jun 2021 11:22:57 +0800</pubDate><description><![CDATA[jz1 二维数组中的查找
描述
在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]
给定 target = 7，返回 true。
给定 target = 3，返回 false。
思路
根据数组的特点，一行递增，一列递增。要查找数字是否在该数组中，遍历是暴力解法。由于]]></description><category></category></item><item><title><![CDATA[总结Python中涉及的面向对象技术（OOD）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118058042</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118058042</guid><author>kai0511</author><pubDate>Sat, 19 Jun 2021 21:29:01 +0800</pubDate><description><![CDATA[OOD基本概念
1.类：一种描述具有相同的属性和方法的集合
2.封装：通过集成在一起形成类，让使用者通过外部接口访问内部的内容，比如属性和方法。
3.多态：通过类生成的对象，有着不同的形态。
4.继承：可以被其他类进行继承，同样继承其方法和属性。
类的声明与定义
下面创建一个类：
class Yanshi(object):
	def __init__(self,*args):
		pass

init 方法进行创建实例的初始化，并绑定属性到类的实例上。
calss Yanshi:
	def __init__]]></description><category></category></item><item><title><![CDATA[Linux常用命令]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118053264</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118053264</guid><author>kai0511</author><pubDate>Sat, 19 Jun 2021 14:26:29 +0800</pubDate><description><![CDATA[查看端口占用情况：
losf -i 8080  查看8080端口占用情况
netstat  -anp  | grep   端口号
netstat   -nultp（此处不用加端口号）查看所有正在被占用端口
关机 (系统的关机、重启以及登出 )
shutdown -h now 关闭系统
init 0 关闭系统
telinit 0 关闭系统
shutdown -h hours:minutes &amp; 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启
r]]></description><category></category></item><item><title><![CDATA[数据结构之区别与实际的应用场景]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118052540</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118052540</guid><author>kai0511</author><pubDate>Sat, 19 Jun 2021 14:07:41 +0800</pubDate><description><![CDATA[列表与链表
1.列表创建刚开始是开辟了连续的空间而且连续空间的大小是一定的，插入和删除需要移动更多的元素。
列表的常用方法是append与pop,都是从尾部进行操作
链表不需要开辟连续的空间，只需要改变指针。所以它的插入与删除是常数时间。
2.列表应用场景：批量处理数据，动态调整元素个数，大部分时间是被读取切片。天然实现栈操作。
链表应用场景：频繁的插入删除元素，对线性表的长度难以估计。
列表实现栈（头部作为栈顶）：
class Stack:
    def __init__(self):
        ]]></description><category></category></item><item><title><![CDATA[Python装饰器]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/118051956</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/118051956</guid><author>kai0511</author><pubDate>Sat, 19 Jun 2021 12:59:16 +0800</pubDate><description><![CDATA[什么是装饰器
包装函数的函数，相当于要对一个函数进行相关的操作，把目标函数当做一个对象，封装到另一个函数中，这个充当容器的函数叫做装饰器。
装饰器
一个简单的函数,返回两个数的值：
def add(a.b):
	return a+b
add(1,2)

新的需求，计算这个函数运行所需的时间：
import datetime 
def add(a,b):
	start=datatime.datatime.now()
	result=a+b
	end=datatime.datetime.now()
	print]]></description><category></category></item><item><title><![CDATA[六月七日小记]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/117673826</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/117673826</guid><author>kai0511</author><pubDate>Mon, 07 Jun 2021 20:44:57 +0800</pubDate><description><![CDATA[文章目录测试思想1.整体大于细节2.越早介入测试，就能越早发现问题，风险越小。3.考虑到负责的模块最坏情况是怎样的，会造成怎样的后果，尽早采取措施。测试工具通识技能工程能力
测试思想
1.整体大于细节
世上没有完美的系统，只要是人写的代码，就会有bug，测试工程师就是要把bug减到最少。
1）测试抓住重点，主要功能流程要多过几遍
2）学会梳理系统框架和业务流程，出现的bug不仅出现在自己负责的模块上，还有可能出现在所依赖的模块上。
2.越早介入测试，就能越早发现问题，风险越小。
3.考虑到负责的模块最坏情况]]></description><category></category></item><item><title><![CDATA[MySQL的架构和内部模块（1）]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/117468707</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/117468707</guid><author>kai0511</author><pubDate>Wed, 02 Jun 2021 15:39:18 +0800</pubDate><description><![CDATA[文章目录MySQL可视化工具MySQL查询缓存
MySQL可视化工具
以Navicat premium为例，连接MySQL数据库，并可视化。
启动MySQL服务-关闭MySQL服务
此处要以管理员身份打开终端。
此时Navicat premium开启的连接，把自身作为一个客户端，连接到MySQL服务端上，并且进行的数据操作平行更新。
连接是TCP通信连接，安全可靠。
长连接，连接之后，操作完不会立马断开（短连接），而是保持一段时间的连接。
查询是同步的，有时会阻塞，但更安全。
show global sta]]></description><category></category></item><item><title><![CDATA[数据结构之二叉搜索树的查询与删除操作]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/116841784</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/116841784</guid><author>kai0511</author><pubDate>Sat, 15 May 2021 12:19:01 +0800</pubDate><description><![CDATA[二叉搜索树删除纯叶子节点删除只有左孩子只有右孩子左右孩子都有
纯叶子节点删除
代码如下（考虑是不是根节点）：
if not node.lchild and not node.rchild:
                if not node.parent:
                    self.root=None
                if node==node.parent.lchild:
                    node.parent.lchild=None
 ]]></description><category></category></item><item><title><![CDATA[数据结构之二叉搜索树的插入与遍历]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/116761741</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/116761741</guid><author>kai0511</author><pubDate>Thu, 13 May 2021 19:31:36 +0800</pubDate><description><![CDATA[二叉搜索树二叉搜索树介绍二叉搜索树的python建立二叉搜索树的插入数据操作二叉搜索树的遍历操作前部遍历中部遍历（数据排序）尾部排序逐层遍历
二叉搜索树介绍

二叉搜索树的python建立
建立空的二叉搜索树，只存在空根节点
代码如下：
class Node:
	def __init__(self,val):
		self.val=val
		self.parent=None
		self.lchild=None
		self.rchild=None
class Tree:
	def __init__(se]]></description><category></category></item><item><title><![CDATA[网络编程之TCP多人聊天]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/116654954</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/116654954</guid><author>kai0511</author><pubDate>Tue, 11 May 2021 14:50:23 +0800</pubDate><description><![CDATA[服务端转发信息：
from socket import *
from threading import Thread
sockets=[]
def main():
    server_socket=socket(AF_INET,SOCK_STREAM)
    server_socket.bind(('',9999))
    server_socket.listen()
    while True:
        client_socket,client_info=server_socket.acc]]></description><category></category></item><item><title><![CDATA[网络编程之TCP通信]]></title><link>https://blog.youkuaiyun.com/kai0511/article/details/116646932</link><guid>https://blog.youkuaiyun.com/kai0511/article/details/116646932</guid><author>kai0511</author><pubDate>Tue, 11 May 2021 11:37:13 +0800</pubDate><description><![CDATA[TCP


代码如下(服务端)：
from socket import *
server_socket=socket(AF_INET,SOCK_STREAM)
server_socket.bind(('',8888))
server_socket.listen()
client_socket,client_info=server_socket.accept()
while True:
    recv_date=client_socket.recv(1024)
    print('接收到%s的消息%s'%]]></description><category></category></item></channel></rss>