<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ji_Haoran的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ji_Haoran</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ji_Haoran]]></copyright><item><title><![CDATA[Tcp的三握四挥手过程]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102712957</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102712957</guid><author>Ji_Haoran</author><pubDate>Wed, 23 Oct 2019 23:06:39 +0800</pubDate><description><![CDATA[三次握手（SYN：同步序列编号，ACK应答机制）
第一次握手：建立连接时，客户端发送syn包（syn=x）到服务器，并进入SYN_SENT状态，等待服务器确认；
第二次握手：服务器收到syn包，必须确认客户的SYN（ack=x+1），同时自己也发送一个SYN包（syn=y），即SYN+ACK包，此时服务器进入SYN_RECV状态；
第三次握手：客户端收到服务器的SYN+ACK包，向服务器发送确认包...]]></description><category></category></item><item><title><![CDATA[事物的隔离级别]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102630408</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102630408</guid><author>Ji_Haoran</author><pubDate>Fri, 18 Oct 2019 18:47:17 +0800</pubDate><description><![CDATA[数据库事务的隔离级别有4种，由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且，在事务的并发操作中可能会出现脏读，不可重复读，幻读。下面通过事例一一阐述它们的概念与联系。
1.Read uncommitted
读未提交，顾名思义，就是一个事务可以读取另一个未提交事务的数据。
事例：老板要给程序员发工资...]]></description><category></category></item><item><title><![CDATA[SQL注入以及如何预防]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102413601</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/102413601</guid><author>Ji_Haoran</author><pubDate>Tue, 08 Oct 2019 21:39:14 +0800</pubDate><description><![CDATA[原理
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序，而这些输入大都是SQL语法里的一些组合，通过执行SQL语句进而执行攻击者所要的操作，其主要原因是程序没有细致地过滤用户输入的数据，致使非法数据侵入系统。
根据相关技术原理，SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致；后者主要是由于程序员对输入未进行细致地过滤，从而执行了非法的数据查...]]></description><category></category></item><item><title><![CDATA[Redis的配置和安装]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/100145672</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/100145672</guid><author>Ji_Haoran</author><pubDate>Thu, 29 Aug 2019 20:41:04 +0800</pubDate><description><![CDATA[redis学习目标

能够描述出什么是 nosql
能够说出 Redis 的特点

nosql介绍
NoSQL：一类新出现的数据库(not only sql)


泛指非关系型的数据库


不支持SQL语法


存储结构跟传统关系型数据库中的那种关系表完全不同，nosql中存储的数据都是KV形式


NoSQL的世界中没有一种通用的语言，每种nosql数据库都有自己的api和语法，以及擅长的业务场...]]></description><category></category></item><item><title><![CDATA[# 静态Web服务器-多任务版]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699258</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699258</guid><author>Ji_Haoran</author><pubDate>Sat, 17 Aug 2019 23:05:46 +0800</pubDate><description><![CDATA[**
静态Web服务器-多任务版
**
学习目标
能够写出多线程版的多任务web服务器程序
1. 静态Web服务器的问题
目前的Web服务器，不能支持多用户同时访问，只能一个一个的处理客户端的请求，那么如何开发多任务版的web服务器同时处理 多个客户端的请求?
可以使用多线程，比进程更加节省内存资源。
多任务版web服务器程序的实现步骤:
当客户端和服务端建立连接成功，创建子线程，使用子线程专门处...]]></description><category></category></item><item><title><![CDATA[静态Web服务器-命令行启动动态绑定端口号]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699148</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699148</guid><author>Ji_Haoran</author><pubDate>Sat, 17 Aug 2019 22:57:01 +0800</pubDate><description><![CDATA[静态Web服务器-命令行启动动态绑定端口号 学习目标
## 能够写出获取终端命令行参数动态绑定端口号的web服务器程序
**
1. 开发命令行启动动态绑定端口号的静态web服务器 实现步骤:
**
获取执行python程序的终端命令行参数
判断参数的类型，设置端口号必须是整型
给Web服务器类的初始化方法添加一个端口号参数，用于绑定端口号
import socket
import threadin...]]></description><category></category></item><item><title><![CDATA[静态Web服务器-面向对象开发]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699071</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699071</guid><author>Ji_Haoran</author><pubDate>Sat, 17 Aug 2019 22:48:53 +0800</pubDate><description><![CDATA[1. 以面向对象的方式开发静态Web服务器
实现步骤:
1.把提供服务的Web服务器抽象成一个类(HTTPWebServer)
2.提供Web服务器的初始化方法，在初始化方法里面创建socket对象
3.提供一个开启Web服务器的方法，让Web服务器处理客户端请求操作
2. 静态Web服务器-面向对象开发的示例代码
import socket
import threading


# 定义web服...]]></description><category></category></item><item><title><![CDATA[MySQL的基本 操作]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699004</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99699004</guid><author>Ji_Haoran</author><pubDate>Sat, 17 Aug 2019 22:43:07 +0800</pubDate><description><![CDATA[2. MySQL 操作
2.1 数据库操作
-- 展示系统中所有的数据库
mysql&gt; show databases;

-- 创建数据库 默认拉丁1字符集不能存中文的
mysql&gt; create database py27 charset=utf8;
-- 错误 mysql&gt; create database py27 charset=utf-8;

-- 展示创建数据库的 SQ...]]></description><category></category></item><item><title><![CDATA[HTTP协议、请求和响应报文格式说明]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99607770</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99607770</guid><author>Ji_Haoran</author><pubDate>Wed, 14 Aug 2019 20:39:56 +0800</pubDate><description><![CDATA[1. HTTP协议-重点
1.1 简介
用途: 浏览器访问网站网页
HTML超文本标记语言  写网页
HTTP 超文本传输协议 (在浏览器和 web 服务器 传输 HTML 网页相关资源css js 图片 的协议)
底层基于 TCP 协议&lt;传输层&gt;实现的    HTTP 协议&lt;应用层&gt;
web 服务器作用: 根据用户的请求返回对应的资源

OSI7 层
TCP/IP4 层 ...]]></description><category></category></item><item><title><![CDATA[IP地址和TCP套接字的作用]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99607293</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99607293</guid><author>Ji_Haoran</author><pubDate>Wed, 14 Aug 2019 20:33:53 +0800</pubDate><description><![CDATA[1.  网络概念
1.1 IP 地址
作用
​	标识计算机网络中的一台主机设备
分类
​	IPv4   点分式    x.x.x.x  0-255   40亿  4 字节
​	IPv6  16字节    5G+智能物联网+IPv6
​
​	公网IP
​	私网IP
​		127.0.0.1  标识本机地址(只能在本机localhost系统使用  一般用于本地测试)
命令
​		ifconfig   ...]]></description><category></category></item><item><title><![CDATA[进程线程扩展]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99606789</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/99606789</guid><author>Ji_Haoran</author><pubDate>Wed, 14 Aug 2019 20:28:16 +0800</pubDate><description><![CDATA[1. 线程进程扩展
进程创建
multi process ing

import multiprocessing

进程对象 = multiprocessing.Process(target=子进程代码入口, 
                       args=(位置参数,...),
                        kwargs={"参数名":值,...},
        ...]]></description><category></category></item><item><title><![CDATA[TCP的通信过程]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/98867127</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/98867127</guid><author>Ji_Haoran</author><pubDate>Thu, 08 Aug 2019 13:54:59 +0800</pubDate><description><![CDATA[3. TCP 通信过程
3.1 编码解码

ipython3 工具安装        pip3 install ipython3

s = "hello dage"
# str类型  不能直接在网络中传输  如果需要传输需要转换为 Bytes 二进制 字节类型
# utf-8编码情况 一个汉字 3 个字节 ； GBK 编码情况下  一个汉字 2 字节

s1 = "hello大哥"
# str-编...]]></description><category></category></item><item><title><![CDATA[python 互斥锁的概念和使用]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97502704</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97502704</guid><author>Ji_Haoran</author><pubDate>Sat, 27 Jul 2019 12:34:09 +0800</pubDate><description><![CDATA[1 互斥锁解决资源竞争-重点
1.1 资源竞争产生原因:
​	1 多线程共享全局资源
​	2 多个线程不加限制随意访问全局资源  产生竞争 导致数据错误
1.2 互斥锁使用
​	加互斥锁(保证任意时刻只有一个线程能够占有锁)
​	1 访问资源先加锁 (已被占用则等待直到别人释放)  ;2 使用 ;3 完成释放锁
import threading

g_number = 0

def update_...]]></description><category></category></item><item><title><![CDATA[python 多任务:进程,线程相关知识点]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97501864</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97501864</guid><author>Ji_Haoran</author><pubDate>Sat, 27 Jul 2019 12:31:21 +0800</pubDate><description><![CDATA[3. 进程
3.1 多任务
目的:  提供程序的执行效率  利用 CPU
时间片:  操作系统分配每个应用程序的一段时间
同一时间段内 同时执行的多任务    并发&lt;交替&gt;
同一时间点     同时执行的多任务    并行
3.2 进程概念
进程: 资源分配的基本单位(一个进程一份资源)
线程: 资源调度的基本单位(共享进程内部资源)
在一个程序默认有一个进程  主进程，新建的进程称为...]]></description><category></category></item><item><title><![CDATA[Linux 高级命令]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97437032</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97437032</guid><author>Ji_Haoran</author><pubDate>Fri, 26 Jul 2019 23:49:11 +0800</pubDate><description><![CDATA[目录



1.Linux 进阶操作

1.1 输出重定向⭐⭐⭐

1.2 管道⭐⭐⭐

1.3 链接⭐⭐⭐

1.4 文本搜索grep⭐⭐⭐

1.5 查找文件find ⭐⭐⭐

1.6 压缩和解压缩⭐⭐⭐

1.7 文件权限⭐⭐

1.8 用户基本操作⭐⭐

1.9 用户管理⭐⭐

1.10 用户组管理⭐

1.11 远程登录⭐⭐⭐

1.12 远程拷贝⭐⭐

1.Linux 进阶操作

1...]]></description><category></category></item><item><title><![CDATA[Linux基本命令]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97147362</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/97147362</guid><author>Ji_Haoran</author><pubDate>Wed, 24 Jul 2019 18:01:57 +0800</pubDate><description><![CDATA[目录



1. 基本认知

1.1 操作系统

1.2 虚拟机软件

1.3 Ubuntu Linux

1.4 内核和发行版

1.5 客户端服务器

1.6 命令格式

1.7 帮助手册

2. Linux 命令

2.1 简单命令预览

2.2 cd 命令

2.3 相对和绝对路径

2.4 文件目录创建和删除

2.5 复制移动

2.6 ls 命令

2.7 mkdir 命令选...]]></description><category></category></item><item><title><![CDATA[猴子第一天摘下若干个桃子，当即吃了一半，还不过瘾，又多吃了一个。第二天早上又将剩下的桃子吃掉一半，又多吃了一个.....(迭代法)]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/96703288</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/96703288</guid><author>Ji_Haoran</author><pubDate>Sun, 21 Jul 2019 11:10:28 +0800</pubDate><description><![CDATA[n = 1
for i in range(1,10):
    n = (n+1)*2
print(n)      
1534


]]></description><category></category></item><item><title><![CDATA[假设市面上有4种面值 硬币，20元、10元、5元、1元。输入一个钱数，能够使用最少的硬币凑成这个钱数]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/96703075</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/96703075</guid><author>Ji_Haoran</author><pubDate>Sun, 21 Jul 2019 11:07:18 +0800</pubDate><description><![CDATA[假设市面上有4种面值 硬币，20元、10元、5元、1元。输入一个钱数，能够使用最少的硬币凑成这个钱数。 55 54
def aa(a):
    x=a//20
    y=a%20

    z=y//10
    u=y%10

    l=u//5
    v=u%5


    print("20元有",x,"10元有",z,"五元有",l,"1元有",v)
aa(38)

20元有 1 ...]]></description><category></category></item><item><title><![CDATA[# python实现学生信息管理系统]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/95056724</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/95056724</guid><author>Ji_Haoran</author><pubDate>Mon, 08 Jul 2019 13:42:29 +0800</pubDate><description><![CDATA[python实现学生信息管理系统
my_dict={}		#先定义一个空字典用来存放数据

	#操作页面
def show_menu():	
    print("---------------------------")
    print("      学生管理系统 V1.0")
    print("     1:添加学生")
    print("     2:删除学生")
    pri...]]></description><category></category></item><item><title><![CDATA[用Python代码实现棋盘]]></title><link>https://blog.youkuaiyun.com/Ji_Haoran/article/details/94447244</link><guid>https://blog.youkuaiyun.com/Ji_Haoran/article/details/94447244</guid><author>Ji_Haoran</author><pubDate>Tue, 02 Jul 2019 15:39:54 +0800</pubDate><description><![CDATA[加粗样式
import turtle            #导入模块
for x in range(1,20):    #用一个循坏画出横线
    turtle.forward(180)
    turtle.penup()
    turtle.goto(0,-x*10)
    turtle.pendown()
turtle.left(90)         #调整箭头
turtle.pe...]]></description><category></category></item></channel></rss>