自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 问答 (16)
  • 收藏
  • 关注

转载 Http的哑代理与Keep-Alive

请叫我网络的搬运工,这块讲解的比《HTTP权威指南》稍微生动一点。谈谈持久连接——HTTP权威指南读书心得(五)

2019-12-27 10:25:40 457

原创 Django 死锁 Deadlock found where trying to get lock, try restarting tracsaction

Django 死锁mysql死锁问题参考链接: https://www.iteye.com/blog/uule-2422193情况一在创建完一条数据后,对此条数据的多对多键和外键进行设置时产生如下:tree_qs = Tree.objects.filter(id__in=list_tree_ids)for name in list_name: asset = Asset....

2019-12-25 11:53:00 1198 1

原创 Kubernetes default-scheduler 0/2 nodes are available: 2 node(s

K8S pod 调度失败  这个问题其实很简单,因为deployment(或其他控制器)或Pod的yaml文件中使用了nodeSelector,例如:下面的这个yaml文件:apiVersion: apps/v1kind: Deploymentmetadata: labels: app.kubernetes.io/name: kube-state-metrics app...

2019-12-11 10:31:28 15997

转载 解决vscode对某些Python/Django项目出现的 "Unresolved Import"

点击访问原链接获取更多信息调出python的settings.jsonF1 or Ctrl+Shift+p -> Show all commands -> Configure Language Specific Settings此时打开了python的settings.json文件,找到{"pyton.jediEnabled": false}这一行,如果存在,将其注释掉,重启V...

2019-11-27 10:17:25 2146

原创 python非对称加密及保存数据库

python非对称加密及保存数据库使用python标准包rsa  加密和解密网上一搜一大堆,但是如何保存在数据中并在取出时可以正确解密就很烦人,然后发现将加密的数据进行base64编码即可正常存入数据库中,解密时只需使用base64解码一下就行了。生成对应的密钥和公钥:pubkey, privkey = rsa.newkeys(1024)保存公钥、密钥# 公钥with op...

2019-02-19 16:33:57 1150

原创 MySQL学习笔记——连接

连接A——table AB——table B1 笛卡尔积:为A,B两个表产生笛卡尔积( X={a, b} Y={1, 2, 3} X Y 的笛卡尔积为{{a, 1}, {a, 2}, {a, 3}, {b, 1}, {b, 2}, {b, 3}})  个人理解:即将A表所有的属性和B表中的所有属性进行合并,且每条记录都产生一个这样的关系。select * from A cros...

2018-09-21 10:44:05 2306

原创 MySQL学习笔记——嵌套查询

嵌套查询some  表示在子查询中,至少存在一个,例如在上面的表中,我们男生中至少有一个比女生的年龄大的男生名字:  select name from people where age > some (select age from people where sex='woman') and sex='man'  结果是nick,lihua,tom。因为是至少一个,那么女生的年龄应该...

2018-09-21 10:42:48 324

原创 MySQL学习笔记——更名、集合运算、聚集

更名select id as a_id from table_a;// 将table_a的id更名为a_id,结果也使用a_id表示select A.id, B.name from table_a as A, table_b as B;// 将表table_a更名为A, table_b更名为B,然后查询A中的id和B中的name并且更名操作还能这样用查询 本学校中老师的工资,并且工资...

2018-09-21 10:42:01 1027

原创 linux C之stat函数

之前写过一篇关于stat命令的博客,介绍了stat命令的使用和输出信息表示,今天又见到了stat函数,因为输出原因,准备整理一下。stat函数介绍  根据《UNIX环境高级编程》中对于stat函数的解释,stat函数和stat命令一样,都是返回该文件的详细信息。 函数定义为: #include <sys/types.h> #include &lt...

2018-03-29 11:41:54 9525 2

原创 salt出错Job for salt-master.service failed because the control process exited with error code.

问题&emsap; 在虚拟机上使用salt的时候,因为一边看文档一边学习,突然之前salt就用不了了,然后ps aux | grep salt&emsap; 发现salt-maste和salt-minion都在,准备重启一下salt-master服务试试:sudo service salt-master restart但是提示报错:Job for...

2018-03-09 16:35:57 12641

原创 salt学习之安装‘seco.range’

salt学习  因为目前我也是个初学者,没有什么好建议提供给大家参考,只能参考文档和与人多交流。看网上的中文文档其实跟英文差不多(也可能是我没找到),在我学习文档到SECO RANGE时,发现python -c 'import seco.range'这句话提示出错,没有这个模块。   在网上找这个模块安装的方法时,大多没有好的方法,都是使用yum什么的进行下载,但我是ubuntu16...

2018-03-09 14:50:32 336

转载 在Windows Server 2012 R2 上部署与安装AD域

给个传送门,图片太多。原始出处:小梁博客 作者:小梁。发表于:2016-11-30 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://blog.postcha.com/read/80 在Windows Server 2012 R2 上部署与安装AD域...

2018-02-24 10:32:22 11494 1

原创 pyad对于pywin32封装的简单分析

通过win32com.client.Dispatch产生的(调度器?)import win32api import pywintypes import win32com.client_adsi_provider=win32com.client.Dispatch(‘ADsNameSpaces’) 此处名称使用一个命名空间, 可能代表使用的是一个树的命名空间 使用_adsi_provid...

2018-02-12 10:55:34 2818

原创 一眼就能看懂的cin.ignore()函数详解

看了很多网上的cin.ignore()函数的解析,发现万片一律,不知道是你抄我的还是我抄你的,还都没有注明转载,而且纯粹是教科书的死搬硬套。   希望我的这篇博客可以帮到大家。   首先,他的函数原型是这样的:    istream& ignore (streamsize n = 1, int delim = EOF);  第一个参数n表示从输入到正式被赋值到变量的过程中,也就

2018-01-29 11:11:11 6962 7

转载 一致性哈希算法及其在分布式系统中的应用

原文链接:http://blog.codinglabs.org/articles/consistent-hashing.html 摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详

2017-08-31 13:37:05 339

原创 I/O复用之epoll的ET模式

在I/O复用中epoll模式无疑是最为高效的,凭借其底层的红黑树和就绪链表就能省却很多时间,也不用将监视的socket来来回回的从内核拷贝到用户态下,并且他还在更深层次中做了一些我们不知道的事情。但是epoll中ET(Edge Trigger,边沿触发)为我们提供了更高效的解决模式。默认状态下epoll使用的是LT(Level Trigger,水平触发)。      对于LT模式,当epoll_

2017-08-27 10:23:35 388

原创 I/O复用之epoll服务器

原理剖析  其实在写完poll服务器之后,“写”一个epoll服务器貌似很简单了,但是实际上epoll服务器的实现和poll的实现差了十万八千里,仅仅在内核态到用户态的拷贝中,就省却了很大的时间。最底层的源码本人因为才疏学浅,剖析不了。但是原理还是能说一点点。epoll在底层使用了三个关键函数:    int epoll_create(int size); int epoll_ctl(int ep

2017-08-26 11:30:12 361

转载 epoll为什么这么高效?

原文链接:https://zhidao.baidu.com/question/687563051895364284.html 百度知道上的一位大神,讲的是在太好了。一、明确epoll的使用以一个生活中的例子来解释.  假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面. 如果你使用的阻塞IO模型来处理这个问题,那么你就只

2017-08-26 10:35:01 5105 2

原创 I/O复用之poll服务器

github代码:https://github.com/NICK-DUAN/Three-U/tree/master/poll_server代码编写  poll服务器的编写上,就不能直接在代码上做文章了,需要先了解一下poll函数中的几个API和参数。    int poll(struct pollfd *fds, nfds_t nfds, int timeout);     先说返回值,返回值

2017-08-26 09:47:48 481

原创 I/O复用之select服务器

学习了select之后,也有好一段时间了,但是一直没有提起写一篇关于select的博客,大概也是因为自己那会还没搞懂吧,这段时间在看《linux高性能服务器编程》时,又看到I/O复用对于select,poll,epoll的用法实例和比较,又从头看了一次之前写的代码,虽然是在老师的指导下写的,但是印象还是很深刻的,现在看来,当时一头雾水的写,顶多记得一个写代码的步骤,而并没有明白为什么和原理,甚至当初

2017-08-25 17:56:08 553

转载 Window内存管理方式:页式 段式 段页式

转自: LingLee_荆棘鸟http://blog.csdn.net/u012813201/article/details/70143990内部碎片:已经被分配出去的内存空间>请求所需的内存空间。(分出去的没用完)页式内存管理。页的大小大于实际进程所需要的空间,但是该剩余部分不能够被其他进程使用。分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0

2017-08-18 21:51:45 1471

转载 CSDN博客怎么转载?

转载于:http://blog.csdn.NET/jiangping_zhu/article/details/18044109作者:包心菜加糯米饭1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选中内容会被高亮显示,然后右键菜单选中 Copy as HTML3、进入个人”管理博客”主界面

2017-08-18 21:49:02 262

原创 fork后printf如何输出

#include <stdio.h> #include <unistd.h> #include <fcntl.h>int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-"); } return 0; }本人思路:答:三个   因为是先fork,再pr

2017-07-16 23:36:21 4344

原创 【计算两数之和】不使用加减乘除

计算两数之和不论在计算机中还是生活中,都不算难(即使某些数据过大)。但是如何能更高效的计算时一个难题,或者说在计算机内部是如何解析两个数之间的加法的,这就成了一个可以探讨的问题。  当然我们很了解十进制的算法,那么来看一组简单数组:   56+89   首先个位:6和9相加大于等于10,机会产生进位,此时我们只去个位相加后得出结果的个位,即6+9=15,我们取5,使1进到十位;   然后

2017-07-15 10:29:34 3651 2

原创 浅谈TCP定时器

定时器  在TCP/IP协议栈中,因为重传,等待,确认的情况,很多都会用带定时器,所以定时器是TCP/IP协议栈中一个至关重要的“部件”,在很多时候都仰仗定时器来确认一个请求。最明显的大概就是TCP/IP协议栈中的四次挥手时的timewait时刻了,主动发起断开连接的一端,在等待timewait时间无回应后,即断开连接。这个时候的timewait就使用了一个定时器。   常见的几个定时器连接建立(

2017-07-02 09:55:47 990

原创 TCP报头标志位URG/PSH/SYN/ACK/FIN/RST

TCP报头  TCP是TCP/IP协议栈中的传输层支持的协议,并且TCP有自己报头信息。   TCP的报头信息如下表:      TCP是一个面向连接的、可靠的传输协议。而这个可靠传输的功能则是靠32位序号和32位确认序号实现。TCP报头的标志位  TCP报头中一共有六个标志位:URG/ACK/PSH/RST/SYN/FIN。  SYN  TCP三次握手中,如果A是发起端,则A就对服务器发

2017-06-29 20:26:40 8904

原创 端口号相关

端口号的作用  本来准备先描述一下什么是端口,但是末学才疏学浅,绞尽脑汁也没有想出一个清晰的关于端口的描述。   但是我想,知道端口号的作用后,对端口的认识会清晰起来。   端口号:即是本地计算机中唯一描述一个进程的“代号”。一般跟IP组合为套接字,描述网络中唯一的一个进程。端口号的分类  端口号可分为三类:公认端口、注册端口、动态/私有端口。   公认端口      公认端口端口号的范

2017-06-29 17:33:15 697

原创 路由原理与路由表生成

何为路由  路由工作在TCP/IP四层协议栈的网络层,通过转发分组实现网络互连,并连接两个IP子网。是指分组从源端到目的端时路径的进程。在我国,路由一般支持TCP/IP协议。路由器根据网络层的地址和路由器内部维护的路由表决定下一跳地址,分组到达路由时,更改链路层MAC帧的报头继续转发。   平常人们一直容易将路由与桥接弄混,但是桥接和路由的区别非常明显:路由与桥接的关键区别点在于路由发生在网...

2017-06-29 17:02:42 26687 11

原创 ARP协议和ARP脚本抓取MAC地址

ARP协议——地址解析协议。是TCP/IP四层结构中的链路层,是通过IP地址寻MAC地址的一种协议。ARP协议的工作过程  本地主机需要给另一个局域网中的主机发送数据,但不知道另一个主机的MAC地址,此时采用ARP协议得到对方主机的MAC地址,再进行数据的发送。   首先,在发现本地的ARP缓存表中没有这个IP地址对应的MAC地址的时候,即使用ARP协议,广播一个ARP发送帧向整个局域网,局域网中

2017-06-27 18:47:45 3404

原创 Linux父进程对于子进程的异步等待

父进程为什么等待子进程     Linux中,存在多进程、多线程的服务。  进程是如何产生、如何消失的?  首先,打开Linux虚拟机或者系统的时候,系统自己建立一个init进程,这是Linux系统的基础进程,然后init进程再根据一些配置文件决定创建哪些进程,或者我们在终端自己创建一个新进程的时候,如果你有时间,你可以一直追查这个进程的祖祖辈辈,你会发现,他们都指向一个进程,那就是init进程。

2017-06-27 16:59:27 3810

原创 MySQL学习笔记——连接

套接字  TCP/IP服务器的网络基础编程是利用网络套接字进行通信的,所以应该先明确网络套接字时什么东西。   首先,IP地址标识了网络中唯一的一台主机,TCP/UDP标识了一台主机中唯一的一个进程,所以IP地址+TCP/UDP端口号就标识了网络中唯一一个进程,我们称之为套接字。   如果网络中服务器端和客户端各有一个套接字进行标记各自唯一的一个进程,那么组成这个socket pair的一组套接

2017-06-26 17:29:35 759

原创 线程安全和可重入函数的对比

可重入函数  可重入函数简单也就相当于可以被中断的函数,即一个函数正在执行的过程中被其他函数或操作中断出去,在这个中断操作执行完毕后,再返回来执行原代码。     那么如果这个中断出去的函数对i进行操作呢?   假设这个中断函数对i直接进行加9,那么在中断函数返回之后i=9,sum只进行一次+=操作,但是原先的预期是从0+到9,所以跟我们的预期结果有很大的差异。   所以对于可重入函数要进行对

2017-06-26 11:18:24 730

原创 mysleep与sigsuspend函数

承接此文,建议先看这篇文章:http://blog.csdn.net/sinat_36118270/article/details/73719061  所以可以使用这篇文章后面的几个函数实现一个简单的mysleep函数,更加深入的了解信号  #include <stdio.h>#include <sys/types.h>#include <signal.h>#include <stdlib

2017-06-25 17:55:59 545

原创 浅谈信号之block,pending,handler

信号的概念为了理解信号,先从我们最熟悉的场景说起:    1. ⽤户输⼊命令,在Shell下启动⼀个前台进程。   2. ⽤户按下Ctrl-C,这个键盘输⼊产⽣⼀个硬件中断。   3. 如果CPU当前正在执⾏这个进程的代码,则该进程的⽤户空间代码暂停执⾏,CPU从⽤户态 切换到内核态处理硬件中断。   4. 终端驱动程序将Ctrl-C解释成⼀个SIGINT信号,记在该进程的PCB中(也

2017-06-25 17:43:01 2833

原创 TCP/IP之间的三次握手以及四次挥手

TCP的三次握手  TCP的三次握手,一般都是由客户端发起请求,发送给服务器后,服务器解读信息,发现是一个TCP连接请求,在允许的情况下受理该请求,受理并处理后,此时服务器端已经准备好连接所做的一切服务,随机对客户端发起回应,等待客户端的链接,客户端收到回应之后,意识到服务器已经建立好连接并允许本客户端连接,所以发起对服务器的连接,服务器收到这个消息,二者真正意义上建立链接。   我画了一个图对应

2017-06-22 19:39:21 800

转载 ip(点分十进制 <==> 二进制整数)之间的转换

linux的套接字部分比较容易混乱,在这里稍微总结一下。  地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换。  地址转换函数有四个:其中inet_addr 和 inet_ntoa适用于IPv4,inet_pton 和 inet_ntop同时适于用IPv4和IPv6。  套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr

2017-06-20 21:51:28 6470

原创 CRC循环冗余校验码

CRC循环冗余校验码是一种差错检测方式,数据在传输时,给数据后方加上一定长度的冗余码对其进行校验。是数据通信领域中最常用的一种查错校验,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC循环冗余校验码的原理:     循环冗余校验码(CRC)的

2017-06-19 16:31:57 1500 1

转载 gdb调试多好几次&线程

相信对于初学多进程和多线程的童鞋们,每次编译器报出一大堆看不懂的错误,就头大,这改改,那修修,就是不对。想起来gdb调试,但是不会,一度怀疑是不是gdb不可以进行多进程和多线程的调试,那我告诉你:gdb很强大的,当然可以进行这些调试,即使我一度也这样认为,所以在我懂了一些和查阅了一些资料后,整理出来和大家分享。  多进程调试  原文链接:http://blog.163.com/jiams_wang

2017-06-18 21:45:04 1680

原创 Linux基于单链表&环形队列的多线程生产者消费者模型

生产者–消费者模型简述  对于生产者–消费者模型,相信我们都不陌生,因为生活中,我们无时无刻不在扮演生产者或消费者。但是对于Linux中的生产者–消费者模型,大家又了解了一个什么程度?   其实,说白了就是一个生产,一个消费的关系,而且保证生产者在不生产的时候,消费者无法消费(这跟生活中一样,只不过生活中我们是确实消费不到任何东西,但在计算机中,我们就有可能消费到无效数据,、乱数据、过期数据等等)

2017-06-16 17:39:35 1153

原创 Linux之死锁产生条件&解决方法

何为死锁:  现有A、B两个进程和a,b两把锁,a锁保护a资源,b锁保护b资源,现在A申请a资源,则a锁上锁,B申请b资源,则b锁上锁。此时,A又需要b资源,对b资源进行申请,但B正在使用,即b锁已经上锁,没有申请到,即挂起等待,同时,B需要a资源,对a资源进行申请,但A已经挂起,并且A持有a资源,所以B不可能申请到,所以B也 挂起。此时、B都挂起——死锁。死锁产生的四个必要条件  1、互斥条件——

2017-06-15 17:25:53 2997

空空如也

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

TA关注的人

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