
平台(PLATFORM)
XiaoH0_0
Fresh Meat
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[DOCKER]开启IPv6支持
/etc/docker/daemon.json中加入ipv6开启的设置: "ipv6": true, "fixed-cidr-v6": "fd00:daad:beee::/48"原创 2020-09-14 16:36:02 · 3924 阅读 · 1 评论 -
[DOCKER]开启IPv6支持
/etc/docker/daemon.json中加入ipv6开启的设置: "ipv6": true, "fixed-cidr-v6": "fd00:daad:beee::/48"原创 2020-09-14 14:54:37 · 1111 阅读 · 0 评论 -
[DOCKER]Windows设置daemon.json内容
右键任务栏docker小图标,选择settings;点击DockerEngineer选项,在弹出的设置中加入需要添加的设置(遵循json格式);添加完毕后点击客户端的Apply&Restart即可;原创 2020-09-11 16:38:28 · 5874 阅读 · 0 评论 -
[LINUX]LD_PRELOAD中对于dlopen函数的hook
- LD_PRELOAD的hook方式可以hook大部分的函数,通常需要通过dlopen获取共享库的句柄,然后用dlsym获取对应名称的函数地址, 用于后续调用;- 这种方式对于绝大多数的libc暴露的函数均有效,但是对于dlopen这种机制中需要使用的函数无法进行hook,因为一旦hook了dlopen函数,则会在获取共享库句柄的时候,陷入死循环;- 解决方式:自主编译libc,建立一个...原创 2020-04-08 20:36:20 · 1143 阅读 · 0 评论 -
[VBS]使用环境变量
Dim strDeskTop, strPath, objWsh'Read Environment String--1set objWsh=CreateObject("WScript.Shell")strDeskTop=objWsh.ExpandEnvironmentStrings("%dt%") strPath=objWsh.ExpandEnvironmentStrings("%pat...原创 2020-04-07 20:08:13 · 1438 阅读 · 0 评论 -
[LINUX]mount与umount
关于mount和unmount:①mount:mount的过程涉及到3个部分的内容,一个是原来的那个目录的索引节点,对于他来说,mount和不mount唯一的区别就是是否设置了一个“安装点”的标志,由于一个目录只能够mount一个设备,所以这个标志位只有一个。在mount的时候置上,umount的时候,解除就可以了。②安装表:安装表中记录的是一张map,里面有原来的被安装的目录的索引节点,...原创 2020-04-02 20:05:22 · 709 阅读 · 0 评论 -
[LINUX]目录文件
- 目录也是一种文件,存储在磁盘上,只是文件的内容是按照约定的格式来写入的,内部写了该目录下的所有文件或者目录的名称,以及对应的inode编号。可以想象,这样就形成了一颗文件系统的目录树,存储在磁盘上。- 每个节点存储自己的孩子节点,而根节点一般是固定的/目录。当我们给定一个文件的相对路径时,就在当前工作目录下(进程自身的一个属性),去查询是否有对应的相对目录(可能是递归的查询,先查有没有子目...原创 2020-03-31 19:49:58 · 304 阅读 · 0 评论 -
[WINDOWS]在windows上编译使用cmake的工程
在windows上编译使用cmake的工程1.进入CmakeList.txt所在的文件夹,新建一个目录build,并进入该目录mkdir buildcd build2.运行cmake命令进行解析,检查依赖项(需要安装VS Build Tools)cmake ..3.运行编译命令即可自动开始编译,这里的Target与2步骤中生成的vcxproj后缀的文件保持同名cmak...原创 2019-12-29 08:36:44 · 2117 阅读 · 1 评论 -
[LINUX]stat时间精度
stat中的3个time时间精度的问题,之前linux的stat精度是比较低的,只有秒,对应的结构体名字是st_mtime(修改时间),st_ctime(状态改变时间),实际上对应的是两个long类型的数据。但是到现在,linux中的stat结构体已经经过了优化,已经支持了nano sec级别的时间精度了,对应的原来的time_spec结构体也发生了变化,对应的名字,就是删除了最后一个e,即st_...原创 2019-12-20 21:21:12 · 675 阅读 · 0 评论 -
[LINUX]后台运行某一个命令
在开头加上nohup,结尾加上&符号即可在后台运行某个进程。nohup sh xxxx.sh > output_log 2>&1 &原创 2019-12-01 09:11:06 · 313 阅读 · 0 评论 -
[LINUX]后台运行某一个命令
在开头加上nohup,结尾加上&符号即可在后台运行某个进程。nohup sh xxxx.sh > output_log 2>&1 &原创 2019-11-30 20:03:10 · 191 阅读 · 0 评论 -
[LINUX]信号机制
信号机制:在内核中,除了固有的,硬件提供的中断机制之外,还提供了一种软中断机制,软中断不同于硬件中断,硬件中断具有在任何时候想要中断,就触发cpu中断的能力,而软中断,更像是固定触发的模式,触发中断仅仅是置了一下原因值的标志位而已,真正触发中断的地方,是在一些状态切换的流程固定点上执行真正的软中断处理程序,也是由于这个原因,导致了软中断实际上不如硬件中断那么给力,通常用来处理一些异常,比如系统调用...原创 2019-11-28 23:23:48 · 150 阅读 · 0 评论 -
[机器学习]自然语言处理:GPT-2模型训练finetunning
GPT-2模型主要用于根据上下文,预测下一个最有可能的词汇。基于开源的Transformers库,用GPT-2模型以无监督学习的方式训练文本:①下载开源库:transformers②根据要求安装tensorflow2.0、Pytorch1.0+等依赖的训练工具;③如果需要使用GPU训练,还需要安装CUDA10.0、CUDNN7.x等组件;④训练:transformers提供了方便的训练...原创 2019-11-26 22:20:11 · 2764 阅读 · 3 评论 -
[WINDOWS]护眼设置
护眼设置护眼背景色 #B9E3DD(204 232 207)色调:84饱和度:91亮度:205一般字体颜色建议设置成深绿色:0 128 0原创 2019-11-26 22:11:26 · 423 阅读 · 0 评论 -
[WINDOWS]护眼设置
护眼设置护眼背景色 #B9E3DD(204 232 207)色调:84饱和度:91亮度:205一般字体颜色建议设置成深绿色:0 128 0原创 2019-11-25 21:05:09 · 206 阅读 · 0 评论 -
[LINUX]mmap和read、write的区别
mmap和read、write的区别:文件数据在VFS系统中实际都是先读取到内核缓冲区,然后再拷贝到用户态缓冲区的,所以,实际上一份文件很可能在内存中存储了至少两份(一份内核,用于万一后续要用到,另一份是用户态内存,供用户自己去访问),这样做的优点是彻底的分离,但是缺点是其实对于空间、时间都是有很大的浪费的,时间浪费在拷贝操作上,尤其是大文件的读取,而空间浪费在多存了一份,mmap则是直接将内核空...原创 2019-11-22 20:33:11 · 1067 阅读 · 0 评论 -
[WINDOWS]在命令行中启用代理
①打开命令行窗口,并设置代理环境变量:set http_proxy=http://usr:pwd@xxxx.xxx.com:8080set https_proxy=https://usr:pwd@xxxx.xxx.com:8080②不关闭cmd窗口的情况下,直接在内部执行各种网络访问命令...原创 2019-11-15 19:45:23 · 2156 阅读 · 0 评论 -
[VBS]VBS替换正则表达式的内容
vbs替换字符串内容:可以使用正则表达式自己写一个函数进行替换的:Function ReplaceTest(str,patrn, replStr)Dim regEx, str1 ' 建立变量。Set regEx = New RegExp ' 建立正则表达式。regEx...原创 2019-11-03 09:48:01 · 1251 阅读 · 0 评论 -
[LINUX]shell传递超过10个参数的获取
shell脚本中如果有参数,一般使用n的方式来获取传递进去的参数。如果传入的参数大于9个,获取第10个参数需要使用n的方式来获取传递进去的参数。如果传入的参数大于9个,获取第10个参数需要使用n的方式来获取传递进去的参数。如果传入的参数大于9个,获取第10个参数需要使用{10}的方式表示,否则linux系统会认为是想要获取第一个参数,并在后面追加一个0字符。...原创 2019-10-30 19:52:38 · 3768 阅读 · 0 评论 -
[LINUX]磁盘块存储机制
关于磁盘分块存储:①分块存储的另一种实现模式就是分连续的块,可以想象一下,如果将一个文件存储在连续的磁盘块上面,这样带来的好处是不需要记录每个块的索引再拼接了,类似于内存的操作方式,只要记录一个大小和块的首地址实际上就可以了,但是实际在操作的过程中,会需要对文件进行增加删除和修改,如果采用连续存储,可能只能开辟一个新的磁盘块去存储修改过后的文件(因为前面的都被连续的存储占用了),这样会导致...原创 2019-10-29 22:24:11 · 362 阅读 · 0 评论 -
[NET]ip分片与mtu
ip分片和mtu:①分片是指ip网络层发现数据包超过了链路层上报的mtu的值(最大网络传输单元),因此将大的数据报拆分成一个一个小的数据包,并打上标签,便于对端恢复的一个流程,这个思路其实比较简单,就是少量分批的传输数据。②mtu:网络最大的传输单元,通常设置为1500,网络中都是数据帧的概念,他是不管你用什么协议,包中具体数据是什么的,他唯一关心的一个细节就是数据包的大小,即这层只负责传输...原创 2019-10-28 20:29:20 · 723 阅读 · 0 评论 -
[LINUX]SSL协议主要应用
ssl协议的主要应用:①数字签名:主要用于校验数据的完整性,以及确保中途数据没有被别人篡改。(当然如果中间截获的人有私钥的话,这套机制也就瓦解了)。这个方法就是hash+对hash值的加密操作即可。②数据加密:这个是为了防止数据中途被泄露(别人不修改,也不影响数据,只是看里面的内容),这个时候需要对数据进行加密。通常的做法是先使用非对称加密进行一对对称秘钥的协商(当然确保这个过程是在别人如果...原创 2019-10-27 11:43:25 · 1269 阅读 · 0 评论 -
[LINUX]文件绝对路径到索引节点之间的转换
文件绝对路径到索引节点之间的转换算法:(system V系统,这个算法的特点是比较简单容易理解,相对的,对于某些特殊场景,其性能一般)。算法的输入是一个绝对路径,而输出是一个inode节点的编号。①目录的存储格式:目录以前规定不超过14个字符,而目录类型的inode都是前面预留的,所以目录的inode编号一般也比较小,基本上就是2个字节存储,所以一个目录表项的结构大小是16字节(linux很多...原创 2019-10-26 20:01:26 · 369 阅读 · 0 评论 -
[LINUX]管道的实现
管道,管道分为命名管道和无名管道,他们的区别主要是初始化的方式不同。①管道的存取:命名管道是一个实际存在于文件系统的特殊类型文件对应了内存索引节点,这中间会维护一个读偏移量和写偏移量。当一个进程以读的方式打开管道后(系统调用read),如果此时还没有任何其他进程试图往该管道里面写数据,那么内核会让这个读进程进入睡眠状态,直到另一个进程以写的方式打开该管道,并往里面写入数据(写的方式和写普通文件...原创 2019-10-25 19:57:55 · 229 阅读 · 0 评论 -
[LINUX]inode文件索引节点介绍
inode索引节点:①inode索引节点是一种数据结构,是VFS文件系统要求文件系统必须要实现的一个部分。以磁盘文件系统为例,inode结构体数据一般以线性的方式(数组),存储在磁盘上(一般磁盘布局是引导块、超级块、inode索引、数据块)4个布局。②inode结构与一个特定的文件相对应,在磁盘上,主要包括一些文件大小、修改时间、创建时间、inode修改时间、所属用户、文件操作权限、联结数、...原创 2019-10-21 22:24:55 · 659 阅读 · 0 评论 -
[LINUX]VFS高速缓存的实现方式
VFS buffercache的实现原理:①磁盘的存储方式:(这里的磁盘理解为驱动程序的模拟),磁盘类似块存储的方式,一个文件可能分为非常多的块来存储,每个块并不大,可能就4k个字节等,即一个文件最终被存储在多个块上,而上层通过索引节点inode来记录对于块的索引(一个inode对应于一个或者多个同样内容的文件路径),而一个inode对下对应了多个块的信息。inode之上就某个文件系统超级块(...原创 2019-10-18 19:56:09 · 359 阅读 · 0 评论 -
[WINDOWS]shell的一些处理常用命令
一些shell处理中的常用逻辑:①无限循环:loop: goto loop的形式可以实现无限循环;②判断文件是否存在 if exists path ( ) else ( );③Sleep超时:一般采用ping本机来代替,因为一次ping间隔1秒;④cat文件内容,在windows上面是type;...原创 2019-09-26 22:36:55 · 171 阅读 · 0 评论 -
[LINUX C]利用ptrace实现文件读写等linux系统调用的hook(代码)
利用ptrace实现文件读写等系统调用的hook:#include <stdio.h> #include <stdlib.h> #include <sys/ptrace.h> #include <sys/wait.h> #include <sys/types.h> #include <sys/reg.h> #in...原创 2019-09-27 19:38:37 · 1033 阅读 · 2 评论 -
[WINDOWS]多个文本文件内容合并到一个文本文件中
将当前目录下,所有.txt后缀文件合并到一个文本文件中方法:type *.txt > res.txt原创 2019-08-09 21:46:41 · 2251 阅读 · 0 评论 -
[LINUX]搜索历史输入过的命令
搜索历史输入过的命令方法:1. 按ctrl+r,进入搜索界面;2. 输入关键字,会弹出最近的一条匹配的记录;3. 若不是预期的命令,继续按ctrl+r查看下一条匹配的记录;4. 直接按回车,执行命令;说明:如需要查看所有历史命令,使用history命令进行查看。...原创 2019-07-17 20:06:34 · 2699 阅读 · 0 评论 -
[LINUX]gdb简单使用
方法:1.gdb是命令行代码调试工具:通过命令行进行操作。2.一些基础命令:(可以调试一个基本的程序,当然可能没什么太大作用)[1]启动gdb:gdb 程序名称[2]设置断点:break 行号或者break+函数名称[3]查看当前设置的所有断点信息:info break;[4]设置完断点后运行程序,输入r即可;[5]在断点后停止后单步调试,输入n即可;[6]打印某个变量:p...原创 2019-09-11 20:35:07 · 414 阅读 · 0 评论 -
[C/C++]C编码:变量定义注意点
字符串操作方法:1.一个变量只有一个功能,不能把一个变量用作多种用途。(不要为了类型一致,或者节省空间等去重复利用一个变量)示例:具有两种功能的反例WORD DelRelTimeQue(void) { WORD Locate; Locate = 3; Locate = DeleteFromQue(Locate); /* Locate具有两种功能:位置和函数...原创 2019-09-07 21:52:40 · 191 阅读 · 0 评论 -
[C]字符串操作注意点
字符串操作方法:①需要注意每个字符串结尾都应该带有’\0’结束符,才能够叫做字符串;②字符串拷贝的时候,需要注意长度是否符合要求(一般采用memcpy_s函数即可达到这个目的),否则容易造成缓冲区溢出的问题;③memcpy不支持有重叠区域的拷贝,要用memmove_s函数来实现。但还是尽量避免还有重叠区域的拷贝操作,可以专门开辟一段缓冲区;④格式化字符串输出,尤其要注意:参数类型一致、...原创 2019-09-04 21:39:16 · 251 阅读 · 0 评论 -
[LINUX]并发场景下的文件写入
并发场景下的文件写入:多个线程或进程同时写入同一个路径的文件的场景,可能会出现写入数据异常的情况;方法:避免的方法是使用先写入tmpfile, 然后重命名的方式;说明:重命名更换了对应的inode节点,是瞬时的;...原创 2019-08-04 15:50:20 · 934 阅读 · 0 评论 -
[LINUX]使用strace工具抓取程序运行过程中详细系统调用日志
使用strace工具抓取程序运行过程中详细系统调用日志方法:strace -f -F -ttt -v -s 5000 -o strace.log sh target说明:-f 递归的监控所有子进程的系统调用;-ttt 日志每一行打印精确到微秒的时间戳-v 打印系统调用的参数信息-s 5000 设置每一行字符串最大长度-o 输出文件名称可以通过man strace查看参数说明...原创 2019-07-25 22:25:39 · 898 阅读 · 0 评论 -
[c]简易内存池构想与实现
使用场景:小内存(<1k)多次的分配、偶尔的中量内存分配(1k~1mb),少量的大内存(>1mb),重复的使用malloc会导致性能降低,尤其是大内存的malloc,因此需要构造一个简易内存池,提醒性能的同时,提升程序可靠性;基本构想是利用空间换取时间,不进行内存释放的碎片的拼接操作,仅当整个池的所有内存都已经释放之后,再整个归还到分配池;方法:① 获取内存块:malloc一...原创 2019-08-01 22:33:31 · 180 阅读 · 0 评论 -
[LINUX C]将log信息输出到linux syslog文件
将log信息输出到linux syslog文件,优点是使用了linux自带的log系统,能够进一步配置自动打包、轮转等功能;方法:openlog(NULL, LOG_PID, LOG_DAEMON); // 开启syslogcloselog(); // 关闭log#...原创 2019-08-02 21:10:47 · 1233 阅读 · 0 评论 -
[LINUX]一次grep多条查询
一次grep多条查询方法:grep -E "sfdf|fdfds" xxx.txt说明:-E:正则匹配用’或’连接查询条件。原创 2019-07-20 21:15:20 · 969 阅读 · 0 评论 -
[LINUX]用ptrace来监控某一个进程的系统调用
用ptrace来监控某一个进程的系统调用方法:用execpl执行某个程序,并打上TRACE_ME标记即可如果要解决子进程启动新的进程也想要被监控的问题,可以使用Set Options的功能,来监控所有的fock、vfock等信息基本原理是在调用fock新生成一个进程的时候,会返回进程pid,如果返回不是0,就是父进程,如果返回0,就是子进程。这样就可以分别在父进程、子进程中执行一些操作:...原创 2019-07-24 20:20:28 · 1141 阅读 · 0 评论 -
[LINUX]查看某个进程打开的fd数量
查看某个进程打开的fd数量方法:ll /proc/pid/fd | wc -l说明:pid需要替换成进程的真实pid;如果有socket连接,用此方法也可以统计连接数。原创 2019-07-23 22:46:26 · 13186 阅读 · 0 评论