自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

copbint

no

  • 博客(180)
  • 资源 (10)
  • 收藏
  • 关注

原创 编程IDE杂项与各种实用的小工具及windows设置(装机必备)

shellcheck:shell脚本语法检查器有多种使用方法,实践过的: 1.在线使用:https://www.shellcheck.net/ 2.在ubuntu上与vim集成使用(https://github.com/vim-syntastic/syntastic) 先安装shellcheck,vim,git, curl(全部用apt-get安装即可)1)执行命令: mkdir ...

2018-04-22 01:28:19 1679 3

原创 记录一个由于域名服务器设置错误导致访问www.baidu.com慢到无法使用的问题

最近发现访问所有百度相关网站的时候都出奇的慢,其他网站倒还好,一直以为是百度的问题。所以无奈之下只能用了一下其他搜索引擎,比如秘迹搜索。找到一个原因:我用的是电信宽带,但是解析出的百度的IP是百度在联通的服务器的IP,所以导致特别慢。1.1 https://www.ip138.com/即可查看自己IP及宽带提供商。1.2 ping www.baidu.com。查看解析出的IP,与以下页面提供的网段对比,可以看出IP属于哪个运营商。中国各运营商(电信、联通、移动、铁通)IP地址段在网上手动查询百

2020-09-13 00:40:19 516

原创 ftp学习笔记

20191028最近公司需要用到ftp,趁周末抓紧时间学习一下。简介ftp全称file transfer protocol,是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。在类linux上,流行的ftp软件是vsftpd,全称Very Secure FTP Server。ftp主动模式与被模式1. ftp主动模式工作流程:1)服务端监听21端口(一般使用21端口)...

2019-10-28 08:54:22 425

原创 Linux操作系统, 构建自己的内核——7. 通过响应鼠标的中断函数,让鼠标动起来

要最终能够让鼠标动起来,作者分了好几次课来讲解。成功让鼠标动起来的课程链接:系统内核的洪荒之力:挪动鼠标跟着作者讲解的步骤和代码操作,确实能够做出同样的效果,鼠标能够动起来了,感觉还是非常神奇的。但是这个过程中,更多的只是依葫芦画瓢,对相关技术的机制依然不甚了解,作者在这方面的讲解也几乎为0。但是先动起来,有个感性的认识,对于后续学习也是有帮助的。本章的学习笔记就是对代码添加了一些注释:...

2019-09-18 08:58:10 490

原创 Linux操作系统, 构建自己的内核——6.使用调色板绘制系统界面

学习课程:使用调色板绘制系统界面在上一课程中,通过往0xA0000-0xAFFFF共64KB的的显存空间写入0-255的字符,来绘制界面。0-255表示的颜色非常有限,画出来的效果很单调。利用调色板功能,能够绘制出更丰富的图案。使用调色板功能时,显存空间的每个字符不再表示颜色,而是表示颜色的下标。真正的颜色存储在一个数组中。因为一个字节最大只能表示到255,所以,表示颜色的数组最大也只能...

2019-09-09 08:57:01 470

原创 当一个变量占多个字节的内存时,变量的指针指向的是高地址还是低地址?

一直有一个疑惑:int a =0x01020304;如果a在内存中按如下方式存储(小端机器):100-103表示地址。int *address=&a;那么address 到底是等于100还是103呢?验证代码:test.cvoid main(){ int a=0x01020304; unsigned char* a1=(unsigned char*)(&a...

2019-09-08 15:20:27 2648 4

原创 Linux操作系统, 构建自己的内核——5. 利用C语言绘制操作系统图像界面

课程链接:利用C语言绘制操作系统图像界面课程的目的是在屏幕上绘制一个图形界面,其实只需要往显存对应的缓冲区写入表示颜色的字符就行了。循环写入显然是一个不错的办法,用汇编写一个循环?一般人的汇编水平可能并不太够。所以作者提供的办法是先用c语言写,再反汇编成汇编代码。1. kernel.asm%include "pm.inc"org 0x9000VRAM_ADDRESS equ ...

2019-09-08 00:03:19 1332 2

原创 virtaulbox cannot register the hard disk with uuid already exists

virtualbox默认将虚拟磁盘文件放到系统的C盘下面,导致C盘满了。所以将vdi文件移到其他路径下了,移完之后需要重新导入。但是导入的时候报错:cannot register the hard disk with uuid already exists解决办法:全局工具->虚拟介质管理。删除掉对应的虚拟介质,重新导入即可!...

2019-09-07 11:25:34 340

原创 Linux操作系统, 构建自己的内核——4. C语言结合汇编开发系统内核

课程链接:https://blog.csdn.net/tyler_download/article/details/52468520课程主要讲解的是如何把c跟汇编结合起来进行开发。从理论上来说,这不难,因为C要变成最终执行的二进制,中间就有编译成汇编这一个步骤。把C编译出的汇编与写的汇编结合起来不就OK了?但是实际操作起来却有各种各样的问题,归根结底还是对汇编了解太少了,出了错完全不知所措...

2019-09-04 08:54:01 648

原创 内存分段分页机制理解

现代操作系统,计算机内存是按照先分段再分页的方式管理的。注意:以下描述都是基于32位计算机进行描述的。1. 分段1) 程序直接使用物理地址的问题考虑最原始,最直接的情况,程序中访问的地址都直接对应于物理地址。这种方式有以下几个问题:1)两个使用的地址有交集的程序没法同时动行。2)写代码时,必须考虑到要运行的计算机内存大小。比如说,程序要在两台机器上运行,但是一台内存为4G,一台内存...

2019-08-29 08:14:30 4206 1

原创 Linux操作系统, 构建自己的内核——3. 由实模式进入保护模式之32位寻址

这个课程讲的是怎么由实模式进入保护模式,正如文章所说,学完之后完全是云里雾里。简单记录一下自己所学,希望继续学习下去能够柳暗花明吧。课程链接:网易课程:java开发操作系统内核:由实模式进入保护模式之32位寻址CSDN博客:java开发操作系统内核:由实模式进入保护模式之32位寻址建议这个课程一定要看网易的视频,只看文章完全看不懂。1. 知识储备1) CS和IP寄存器汇编语言学习笔...

2019-08-25 23:49:10 301

原创 Linux操作系统, 构建自己的内核——2. 启动扇区引导其他扇区的内核

学习课程:java开发操作系统内核:让内核突破512字节的限制上一篇文章的例子,是直接在启动扇区的代码中打印内容到屏幕。一个扇区对应于512个字节,能够存储的内容太有限,必须学会在启动扇区的代码中加载其他扇区的代码。1. 启动扇区的代码boot.asmorg 0x7c00;LOAD_ADDR EQU 0X8000entry: mov ax, 0 mov ...

2019-08-25 00:07:22 335

原创 Linux操作系统, 构建自己的内核——1. 制作可以在屏幕上打印hello world的img文件

学习课程:操作系统-java1. 先写汇编:boot.asmorg 0x7c00;entry: mov ax, 0 mov ss, ax mov ds, ax mov es, ax mov si, msgputloop: mov al, [si] add si, 1 cmp al, 0 je ...

2019-08-24 10:26:55 556

原创 计算机启动过程理解杂记

纯属个人理解,如有错误,请多包涵。最近在学网易云课堂——Linux操作系统, 构建自己的内核里面讲解到,计算机启动以后,BIOS会首先运行起来,然后BIOS会去磁盘的启动扇区读取数据,判断是否是引导程序(是否以55AA结尾),如果是引导程序,则加载进内存执行,引导程序会进一步加载整个操作系统。对这个过程中产生了很多疑惑。1. BIOS是怎么启动起来的?按照以前的理解,所有的程序要运行,都...

2019-08-23 08:52:57 240

原创 Operating System Concepts ——chapter 5——Process Synchronization

临界区问题硬件同步硬件指令,一个指令执行过程中,不会被中断(原子操作)TestAndSetboolean TestAndSet (boolean *target){ boolean rv = *target; *target = TRUE; return rv;}while (true) { while ( TestAndSet (&lock )); /* ...

2019-08-05 08:53:07 302

原创 Operating System Concepts ——chapter 6——CPU Scheduling

调度算法目标:通过多道程序设计来获得尽可能大的CPU利用率。基本算法:FCFSfirst come, first server看起来很公平,但是并不一定合理。容易导致短作业进程等待时间过长。SJFshortest job first选择执行时间最短的优先执行非抢占式如果一个作业已经在执行了,即使有执行时间更短的作业到达,依然保持已经在执行的作业,不进行抢占。抢占式如果一个...

2019-08-04 16:02:20 221

原创 java基础学习笔记——集合

集合可以动态的把多个的引用加入其中,并且可以动态的扩容缩容。java 集合类图UML类图基础知识:实现:虚线+空心三角形继承:实线+空心三角形待补充。。参考:https://blog.csdn.net/liulin_good/article/details/6213815https://blog.csdn.net/gaoxin12345679/article/details/1...

2019-07-16 08:51:40 140

原创 java基础学习笔记——单例模式

有很多场景,都需要保证一个类仅有一个实例,为此有一种专门的设计模式:单例模式。单例模式的几种写法1. 饿汉式(没有延迟加载,线程安全)public class Singleton { private static Singleton instance = new Singleton(); public static Singleton getInstance() { retur...

2019-07-16 08:24:07 159

原创 java基础学习笔记——静态初始化块,初始化块,构造函数的执行顺序

代码:class A { static { System.out.println("Static init A."); } { System.out.println("Instance init A."); } A() { System.out.println("Constructor A."); ...

2019-07-13 11:41:06 259

原创 java基础学习笔记——关键字final

声明为final的变量被标识为不可改变的,也就是说不能再对此变量进行赋值。但是变量引用的对象,如果提供了写的接口,则对象的属性依然是可以改变的。String类型的对象,由于未提供写的接口,所以是不可改变的。final变量声明为final的成员变量(非静态变量),必须在构造对象的过程中完成初始化。1)定义处。也就是定义变量时直接赋值。2)初始化块3)构造函数声明为final的静态变量,...

2019-07-13 11:32:53 124

原创 java基础学习笔记——数据默认值

趁考试的契机,学习一下java基础,仅记录自己不太熟悉的知识点。2019/07/131. 数据默认值数字类型的成员,默认值是0,布尔型为false,对象引用缺省值为null。各种类型的默认值:public class Test { boolean test_boolean; byte test_byte; char test_char; short test_short; in...

2019-07-13 09:45:05 227

原创 选择排序——简单选择排序

思路思路非常简单。就是第一轮循环选出最大的元素,第二轮循环选出第二大的元素。。。。代码package dataStructureAndAlgorithms;public class SelectSort_heapSort { public static void main(String args[]) { int[] array = { 4, 2, 8, 9, 5, 7, 6, ...

2019-07-08 08:30:57 207

原创 选择排序——堆排序

思路参考:https://download.csdn.net/download/qq_31567335/10356263什么是堆?堆是一颗完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。而且堆还必须满足以下性质:父节点大于等于左右子节点(大堆),或者父节点小于等于左右子节点(小堆),后面为了表述方便,在文章中只讨论大堆。由此可以看出大...

2019-07-08 08:23:58 222

原创 交换排序——冒泡排序

代码package dataStructureAndAlgorithms;public class SwapSort_bubbleSort { // 增序冒泡排序 public static void sort(int[] array) { int length = array.length; boolean endFlag = true; // i表示这一轮排序要将i位置上...

2019-07-07 16:11:16 190

原创 插入排序——折半插入排序

折半插入排序是基于直接插入排序的优化。直接插入排序将第i个元素插入时,通过折半查找的方式,来查找第i个元素合适的位置。推导过程当0~(i-1)位置上的元素都已经排序OK,现需要插入第i个元素,设其值为temp;令low=0, high=i, mid=(high+low)/2。那么temp可能插入的位置是:low~high。每一次循环对范围的缩小都要保持这个性质不变。分两种情况讨论:t...

2019-07-07 14:38:51 280

原创 插入排序——直接插入排序

思路:对位置i上的元素排序(设为升序)时(设为Ai),假设从0~(i-1)位置上的元素都已经全部排好序。所以,只需要为Ai在已经排好序的元素中找到合适的位置,并将其插入即可。最朴素的插入算法是直接插入,即从i-1开始,如果Ai小于Ai-1,则交换这两个元素的位置。以此类推,直到比前一个元素大,或者已经被交换到了第一个位置,则结束。代码:package dataStructureAndAlg...

2019-07-07 14:08:05 264

原创 linux 路由学习笔记

查看路由表缓存:ip route show cacheroute -Cen重建路由缓存次数限制/proc/sys/net/ipv4/rt_cache_rebuild_count路由缓存大小限制清空路由缓存ip route flush cache有文章说貌似在linux3.6之后的版本,就不支持路由缓存了。https://unix.stackexchange.com/questio...

2019-06-27 08:53:03 197

原创 IPVS相关数据结构

1 netLinux提供的一种内核级别环境隔离,最重要的就是namespace的概念。有6种namespace对不同的资源进行隔离,包括:Mount namespaces UTS namespaces IPC namespaces PID namespaces Network namespacesUser namespaces每个network namespace都有一个net结...

2019-05-19 22:37:02 460

原创 IPVS Connection Synchronization

LVS保存了大量的连接信息,如果发生主备倒换,这些连接信息将会丢失,导致对应的连接失效。一般来说这并不是多大的问题,因为连接失效之后,客户端重新建立连接即可。但是LVS也提供了一种在主备之间同步连接信息的方法,介绍请参考:IPVS Connection Synchronization这里面对原理有非常准确的解释。大概总结一下:有一个主进程,通过组播&UDP报文,不断的发送连接变...

2019-05-15 08:21:43 194

原创 linux kernel链表相关结构及操作

相关内容都定义在 include/linux/list.h文件中LIST_HEAD#define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)#define LIST_HEAD_INIT(name) { &(name), &(name) }list_add_tailstatic ...

2019-05-06 23:21:35 179

原创 linux kernel hlist_head,hlist_node

哈希表的作用是为了提高查询的速度:通过将key映射为数组的下标从而实现o(1)复杂度的查找。数组的大小是有限的,而key的范围一般都比数组大小大,所以必然会出现冲突的情况,即两个不同的key被映射到了数组的同一个位置。一般的解决办法有两个:设置算法进行再映射,直到找到空闲的位置数组中不存储单个的元素,而是存储一个链表,映射到相同位置的元素存储在一个链表中。通过合理设置哈希算法,不出现单个...

2019-05-02 21:22:33 384

原创 c中关于结构体,指针,指针的指针的理解

如果要确定一个对象,需要知道2个要素:1 对象在内存中的起始位置。2 对象的结构。从而知道从起始位置之后的多少个字节都属于此对象。从而也就可以获取到结构中每个元素的值。一个指针就包含这两个要素:指针的值表示对象在内存中的起始位置。指针的类型,则说明了指针所指向的内存的大小及结构。在c中,直接声明的方式声明的对象:struct Tool tool;tool本身就包含了完整的信息。对象的地...

2019-05-01 17:28:42 701

原创 我使用过的linux命令之strace

strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。最常用选项:-f 跟踪由fork调用所产生的子进程.-ff 如果提供-o filena...

2019-04-30 08:04:02 489

原创 我使用过的linux命令之strings

strings命令用于输出文件中可打印的字符串。不论文件是普通文本,还是可执行文件,任何文件都可以。最常用的选项:-a 扫描整个文件的任何段,这是strings的默认行为,但是这种默认行为是可以改变的。所以建议加上此选项。-f 打印对应的文件。-n 字符串的最小长度。默认是4。也就是说长度小于4的字符串不会输出。常用场景:确定某个可执行文件的版本。生成的so文件的文件名往往不包...

2019-04-29 01:19:51 479

原创 c语言中的字符串拼接

在看内核源码时,看到这样一段代码:int __init ip_vs_protocol_init(void){ char protocols[64];#define REGISTER_PROTOCOL(p) \ do { \ register_ip_vs_protocol(p); \ strcat(protocols, ", "); \ strcat(protoco...

2019-04-27 23:51:05 4994

原创 单独编译内核模块

最近在学习ipvs的内核源码,便想对源码加入一些注释,来帮助理解。由于编译整个内核的时候过长,故研究了一番怎么编译单个内核模块。1 编译一个最简单的内核模块参考:https://blog.csdn.net/zhangyifei216/article/details/49703435/*helloworld.c*/#include <linux/module.h> //...

2019-04-27 16:53:52 2718

原创 c函数指针

虽然是一个java程序员。但是c的东西不能丢啊,很多底层的东西都是c的。好记性不好烂笔头,基础知识需要一点一点的积累。都知道c中区别与其他语言的就是指针,初学者常常被指针搞得痛不欲生。变量的指针即是变量在内存中的地址。同样,函数的指针指的也就是函数在内存中的地址。经常见到的是在结构体中使用函数指针:#include <stdio.h>#include <string....

2019-04-21 23:07:22 126

原创 linux下getopt, getopt_long函数的使用

在linux下使用的各种命令行工具一般都支持传递参数,来决定工具的行为。解析参数,是各种程序最为基本的一个功能。所以,glibc提供了函数库getopt和getopt_long来帮助简化程序的开发工作。get_optget_opt函数的声明在头文件unistd.h中。unistd是Unix Standard的缩写,unistd.h是POSIX 操作系统 API 的访问功能的集合。gcc...

2019-04-09 23:45:33 484

原创 win10后台偷跑流量限制方法

有无线网而且不限流量,而且不卡的时候,自然不会去关心流量的问题。最近开始一直在图书馆上自习。图书馆无线管实在太不给力,所以用手机开无线网给电脑用。结果有时候发现一下子一个G的流量就没了,不得不开始关心是谁搞走了我的流量。参考以下两篇文章搞定了问题:hwin10如何查看数据使用量 win10流量查询_百度经验原来绝大部分流量都被系统给消耗了,网上查了一下,需要关闭windwows自动更新。...

2019-04-07 16:01:09 10091

原创 understanding linux internals——critical data structures

sk_buff定义文件:include/linux/skbuff.h

2019-04-05 11:43:54 112

自己动手写操作系统_超清

自己动手写操作系统_超清,比那些30M的版本清晰无数倍,好不容易下到,发出来造福大众。而且有目录,简直太爽了。

2018-08-01

mobaxterm_Portable_v9.4_professional

MobaXterm是远程计算的终极工具箱。在一个单独的Windows应用程序中,它为程序员、网站管理员、it管理员和几乎所有需要以更简单的方式处理远程工作的用户提供了大量的功能。 网站提供个人免费版,但是功能有限制,比如说保存的session数量有限制。此为专业版的破解版,无此限制。ftp等功能也可正常使用。 此为免安装版,直接双击即可运行。 可以右键发送到桌面快捷方式,然后对快捷方式右键,固定到开始屏幕。这样就可以方便的直接按win键搜索并打开程序了。

2018-07-09

understanding_ipv6_3rd_edition(深入解析IPv6第三版英文版)

understanding_ipv6_3rd_edition(深入解析IPv6第三版英文版)。

2018-04-29

深入解析IPv6 第3版_understanding ipv6 .pdf

本书详细讲述了IPv6的概念,原理与实现过程,并结合微软公司的主流操作系统讲解了IPv6的具体实现与应用方法。

2018-04-27

数据结构与算法java—作者:周鹏

数据结构与算法java中文,详细讲解了各种基础的数据结构与算法,包括链表,栈,队列,树,图,以及各种排序算法,如选择类排序,交换类排序,插入类排序等等....

2018-04-18

com.lembas.CopyCutCurrentLine_1.0.0.jar

eclipse不支持像VS一样在不选中任何字符时按ctrl+c复制整行,Ctrl+x剪切整行。 下载这个jar包,拷贝到dropins目录下,重启eclipse下即可。

2018-03-24

cmder_mini-带使用说明

cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令。

2018-01-30

QTTabBar_带中文语言包_带默认设置-带使用说明

windows默认的文件资源管理器不像chrome等软件一样具有标签页的功能,从而可以随便切换,qttabbar可以完美解决这个问题。还有其他好用功能请看使用说明。

2018-01-30

tcp/ip卷1-第三版-英文版

tcp/ip卷1(协议)-英文版,介绍网络技术的基本原理,经久不衰的经典著作,本书已经出版30余年,但是却依旧没有过时。

2018-01-18

空空如也

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

TA关注的人

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