- 博客(71)
- 收藏
- 关注
原创 DNS报文分析
**Header各字段分别解释如下:**- ID 请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回 来,这样请求客户端就可以区分不同的请求应答了。- QR 1个比特位用来区分是请求(0)还是应答(1)。- OPCODE 4个比特位用来设置查询的种类,应答的时候会带相同值,可用的值如下:
2021-05-21 11:40:57
2075
原创 python学习---隐藏链接评论内容爬取
#!/usr/bin/python3import requestsimport jsonlink = "https://api-zero.livere.com/v1/comments/list?callback=jQuery112401306523037356928_1621511074326&limit \ =10&repSeq=4272904&requestPath=%2Fv1%2Fcomments%2Flist&consumerSeq=1020&
2021-05-21 10:11:03
656
原创 BIND9配置文件详解
参考ISC BIND9 - 最详细、最认真的从零开始的 BIND 9 - DNS服务搭建及其原理讲解一、conf文件中字段详解1. acl 一般来说,ACL模块用来承担控制主机可以访问域名解析服务器的角色,其设置不会让控制文件的配置非常冗余和庞大。采用这个配置可以有效防范DOS以及Spoofing攻击。一般来说定义这部分的内容来规定IP是否能够被接入以及Blacklist来阻止某些特定的IP地址介入到域名解析服务器中。ACL匹配客户端是否能够接入到域名服务器基于三个基本的特征:客户端的IPv4
2021-05-20 12:21:53
5369
1
原创 python学习---爬取豆瓣top250电影
#!/usr/bin/python3import requestsfrom bs4 import BeautifulSoupdef get_movies(): headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36', 'Host':
2021-05-19 18:04:47
242
原创 CDN工作原理
CDN全称叫做内容分发网络(Content Distribute Network),或者也有人称其内容交付网络(Content Delivery Network)。很显然,CDN 完成的是将内容从源站传递到用户端的任务。
2021-05-19 15:00:07
1597
原创 dig命令详解
在命令行输入dig之后返回结果如下:; <<>> DiG 9.11.3-1ubuntu1.14-Ubuntu <<>> www.qianwanjun.work;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64427;; flags: qr rd ra; QUERY: 1, ANSWER: 1, A
2021-04-30 14:59:04
874
2
原创 DNS胶水记录
胶水记录的英文叫Glue Record。当前,大多数企业使用云解析,无需自建DNS服务器,很少会碰到这个概念。但如果你是自建DNS,那就必须掌握这个概念
2021-04-30 10:35:42
750
原创 四种DNS
DNS大致分为四种:权威DNS、递归DNS、转发DNS、公共DNS。权威DNS权威DNS负责管理一个域名,在他所管理的域名里,具有权威性,通俗一点就是在这个域名里,他说了算。递归DNS递归DNS也叫local dns,其核心功能一个是缓存、一个是递归查询。收到域名查询请求后其首先看本地缓存是否有记录,如果没有则一级一级的查询根、顶级域、二级域……直到获取到结果然后返回给用户。日常上网中运营商分配的DNS即这里所说的递归DNS。转发发DNS转发DNS是一种特殊的递归。如果本地的缓存记录中没有相应
2021-04-30 09:49:14
6147
1
原创 DNS运行机制
DNS的分布式数据库通过域名来进行索引。每个域名本质上就是**一棵大型逆向树**的一条路径,而这棵逆向树又被称作域命名空间。这棵树的层次结构和UNIX文件系统的结构类似。这个棵树的顶端有唯一的根。对应UNIX文件系统中的根目录,在DNS中它被称为“root”
2021-04-28 12:00:38
973
原创 高性能服务器框架
性能对服务器来说是至关重要的,毕竞每个客户都期望其请求能很快地得到响应。影响服务器性能的首要因素就是系统的硬件资源,比如 CPU的个数、速度,内存的大小等。不过由于硬件技术的飞速发展,现代服务器都不缺乏硬件资源。因此,我们需要考虑的主要问题是如何从"软环境"来提升服务器的性能。服务器的"软环境",一方面是指系统的软件资源,比如操作系统允许用户打开的最大文件描述符数量;另一方面指的就是服务器程序本身,即如何从编程的角度来确保服务器的性能,这是本节要讨论的问题
2021-03-18 23:57:36
262
原创 为云盘项目增加Mysql连接池
一般的应用程序都会访问到数据库,在程序访问数据库的时候,每一次数据访问请求都必须经过下面几个步骤:建立数据库连接,打开数据库,对数据库中的数据进行操作,关闭数据库连接。而建立数据库连接和打开数据库是一件很消耗资源并且费时的工作,如果在系统中很频繁的发生这种数据库连接,必然会影响到系统的性能,甚至会导致系统的崩溃。
2021-01-30 18:01:41
263
原创 Ubuntu新用户恢复文件和目录颜色
新买的腾讯云,装上Ubuntu系统之后发现,root用户下,对应的文件和目录名字都是带有颜色的,而自己创建的用户却没有颜色。
2021-01-19 23:13:45
792
原创 并查集
一、什么是并查集概念:并查集由一个整型数组pre[ ]和两个函数find( )、join( )构成。数组pre[ ]记录了每个点的前导点是什么,函数find(x)用于查找,函数join(x,y)用于合并。作用:并查集的主要作用是求连通分支数(如果一个图中所有点都存在可达关系(直接或间接相连),则此图的连通分支数为1;如果此图有两大子图各自全部可达,则此图的连通分支数为2……)...
2021-01-13 11:43:00
754
2
原创 对linux内核网络协议栈研究
/usr/src/linux/include/linux/udp.hstruct udphdr { __u16 source; //16位源端口号 __u16 dest; //16位目的端口号 __u16 len; //表示此次发送的数据报的长度,16位 __u16 check; //校验和};...
2020-10-24 13:14:14
235
原创 Linux内核模块编程
linux内核模块是可以根据需要加载和卸载到内核中的代码片段。 它们扩展了内核的功能,而无需重启系统。 例如,一种类型的模块是设备驱动程序,它允许内核访问连接到系统的硬件。 没有模块,我们必须构建单片内核并将新功能直接添加到内核映像中。 除了拥有更大的内核之外,这还有一个缺点,即每次我们想要新功能时都需要我们重建和重启内核。
2020-10-16 14:38:24
665
原创 TCP实现文件传输
一直想着给之前的CloudDisk项目加上一个C/S架构的文件传输模块,因为之前是nginx+fastcgi架构的B/S架构,自己又不会前段代码,没有办法继续增加新的功能块。最近终于抽出时间开始写项目了,已经选用TCP完成linux下的CS架构文件上传功能模块,这里展示TCP文件传输模块。
2020-09-22 22:17:17
1518
原创 在源码中编译自己的APK的流程
我们习惯于在Google提供的eclipse和Android studio里面构建自己的项目,但是我们如何能够直接在源码中构建编译自己的程序呢?相对于实用工具来说,其实是要复杂很多的,因为工具帮我们做了很多工作,如果我们想要更加了解Android项目源码的构建方式,就必须尝试去摆脱对工具的依赖。
2020-09-22 20:18:10
1658
原创 mmap拷贝文件与用常规文件IO拷贝文件效率对比
通常我们读写文件时,都是用系统提供的write和read函数,但是我们都知道文件IO函数操作文件流效率要低于mmap,因为mmap相对write/read省去将数据拷贝到用户态的操作。那么他们之间的差距有多大呢,我们来用事实说话。
2020-09-04 17:54:08
812
原创 mmap ---- 内存映射原理
mmap是一种内存映射文件的方法,即将磁盘上的内容映射到进程的虚拟地址空间上来,这样我们就可以通过指针来操作这一块数据,而不必用open和write来读写这段数据。并且,我们在进程空间对该段数据的操作,会被自动同步到磁盘上,这样就是进程间通信共享内存的实现原理,在一个进程里可以直接操作磁盘上某段数据,如果两个或者多个进程共享该数据段,那么另一个进程就可以得到该进程对共享数据的修改。
2020-08-31 19:21:57
760
原创 为CloudDisk项目加上log日志系统
鉴于该系统定位为分布式高并发大流量系统,所以有个记录操作和流量的日志是必要的。好吧,其实就是想练练手,把这个比较菜鸡的项目看起来不那么菜鸡。加的代码不多,直接看代码
2020-08-28 00:21:02
325
原创 用C++重构CloudDisk项目
附上项目地址[CloudDisk](https://github.com/82457097/CloudDisk);我已经在里面把需要的安装包都打包好了,一键安装脚本只完成了一半,慎用,不过很快就会完善它。之前是用c来完成功能的,现在想重新用C++重新架构一下,方便后续在上面增加功能。***我还是个刚入门萌新,分享的一些东西并不一定准确,还望大佬们多多指教。***
2020-08-27 23:51:31
488
原创 为CloudDisk项目编写一键安装脚本
之前做了分布式网络云盘项目,这个项目的环境搭建还是比较麻烦的,总有小伙伴问我有没有打包好的安装包,其实我之前整理了在Github上,但是下载速度确实让人望而却步。而且自己把之前搭建好的阿里云服务器重置了,所以自己也需要重新搭建一遍,索性写个脚本,一劳永逸。正好也复习一下脚本编写。
2020-08-18 23:19:39
562
原创 Android 进程间通信以及AIDL介绍
AIDL全名Android Interface Definition Language,意为安卓接口描述语言,是一种接口定义语言,也是Android系统的一种跨进程通信机制。AIDL做的就是在服务提供进程使用进程之间协商好的接口,双方通过该接口进行通信。其主要实现为Binder类。
2020-08-17 17:33:04
257
原创 iptables网络防火墙
iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者经该设备转发、路由时,都可以使用iptables进行控制。
2020-08-16 21:00:45
219
原创 如何编写Dockerfile
一、什么是DockerfileLinux环境下的程序员都应该使用过GNUmake来构建和管理自己的工程。使用GNU的make工具能够比较方便地构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个称为Makefile文件的编写。Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile有自己的书...
2020-04-24 18:11:31
2768
1
原创 史上最全C/C++面试题汇总
总结一些常见面试题,包括准备面试查阅的和自己实际面试中遇到的。不建议全篇的去背面试题,要学会将面试的知识点进行分类总结,聚合成一块块的知识点,然后去学习串联,推荐《王道程序员面试宝典》这本求职复习书籍,应付一般小厂的面试绰绰有余,内容很全面,建议反复阅读记忆。
2020-04-20 23:29:22
25445
3
原创 Shell脚本 ---- 系统信息监控
项目Github地址:https://github.com/82457097/Shell该项目为shell脚本学习项目,整合了一些系统信息收集的操作,有CPU负载、磁盘负载、磁盘使用率、磁盘文件inode使用率、内存使用率、网络连接信息、CPU使用前十进程、内存消耗前十进程、网络流量等。
2020-04-19 22:11:06
621
原创 I/O多路复用 ---- select、poll、epoll
I/O复用的基本思想是,先构造一张有关描述符的表,然后调用一个函数,该函数会根据需要去遍历这张表,知道这些描述符中有一个描述符准备好进行I/O时,它才返回,并且会告诉进程,是哪一个描述符准备好进行I/O了。该方法用了两个重要的函数select和poll。
2020-04-17 16:23:34
246
原创 Docker介绍
此篇为学习Docker的一个开端,主要以介绍为主。主要内容摘抄自菜鸟教程后面将会将Docker学习的心得陆续更新出来,与大家共同交流进步~
2020-04-13 18:59:00
152
原创 操作系统 ---- 进程管理
进程是计算机中已运行程序的实体。进程和程序之间的关系可以这么理解,程序可以看做是一些指令的集合,而这些指令在执行时就可以成为是一个进程。
2020-03-19 14:57:02
280
原创 C++关键字 ---- static
昨天看书看到了这一部分,感觉书上总结的很好。把我之前的认知成功的串联了一遍,也填补了很多不曾注意到的空白。以下总结内容参考《王道程序员求职宝典》,很不错的一本书,内容比较全面,还有搭配的真题训练很不多,认真看一遍受益很大。
2020-03-14 13:58:17
212
原创 UNIX系统 ---- 文件和目录
UNXI系统的大多数文件是普通文件或目录,但是也有另外一些文件类型:普通文件(regular file)。这是最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。目录文件(directory file)。这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以写目录文件。
2020-02-17 17:12:40
1477
原创 分布式网络云盘项目
先附上项目Github地址https://github.com/82457097/CloudDisk;(近期对这个项目用C++进行了重构,加上了log系统,增加了C/S架构,增加了一些安装配置的脚本,修复了很多bug,在性能上也进行了一定的优化,后续还会继续开发新的功能和对网络传输性能,文件读写性能进行进一步的优化,欢迎star,一起讨论学习)
2020-02-16 21:55:08
4852
17
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人