- 博客(55)
- 资源 (4)
- 收藏
- 关注
原创 双向链表操作
/********************************************************************************** Description: Simple doubly linked list implementation.*******************************************************************************/#ifndef __LIST_H__#define __LIST_H
2022-03-24 22:44:02 825
原创 Makefile中的wildcard patsubst
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的展开和上一小节匹配通配符的区别。一般我们可以使用 “$(wildcard *.c)“来获取工作目录下的所有的.c文件
2022-03-18 11:06:14 324
原创 uImage和zImage的区别
1. 各种文件的意义vmlinux 编译出来的最原始的内核文件,未压缩。zImage 是vmlinux经过gzip压缩后的文件。bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。uImage U-boot专用的映像文件,它是在zImage之前加上一个长度为0x
2022-03-10 15:11:36 2322
原创 CentOS8.1系统优化
c81-system-optimize.sh#!/bin/bash### by xufhwrite_to_limits(){ if [ $# -eq 3 ]; then atype=$1 item=$2 value=$3 file=/etc/security/limits.conf else return fi ok=$(grep "^* $atype $item" $file | wc -l) if [ $ok -eq 0 ]; then echo
2021-04-01 15:27:13 784
原创 CentOS6.10系统优化
c610-syscfg-adjust.sh#!/bin/bash### disable selinuxsed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 0 2>/dev/null# /etc/sysctl.confsed -i 's/net.ipv4.ip_forward =.*/net.ipv4.ip_forward = 1/' /etc/sysctl.confgrep 'net.nf_co
2021-04-01 15:26:19 162
原创 KVM虚拟机操作
虚拟机安装1. linux安装name=C81-5.0Gx-DevphyCPU=1perCore=2memSize=2048diskSize=25iface=br3vncPort=5901installISO="CentOS-8.1.1911-x86_64-dvd1.iso"virt-install \ --name ${name} \ --vcpus sockets=${phyCPU},cores=${perCore},threads=1 --cpu
2021-04-01 14:59:40 167
原创 KVM安装
一、KVM环境搭建1.检测系统是否支持cat /proc/cpuinfo | egrep 'vmx|svm'KVM 是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。2.关闭SELinuxsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /et
2021-04-01 14:40:46 139
原创 TFTP 服务搭建笔记
环境CentOS6.10rpm包tftp-server-0.49-8.el6.x86_64.rpmxinetd-2.3.14-40.el6.x86_64.rpm配置文件# vim /etc/xinetd.d/tftpservice tftp{ socket_type = dgram protocol = udp wait = yes us
2021-04-01 14:38:04 159
原创 ftp服务搭建
ftp服务搭建1 用户介绍在vsftpd服务器中支持3类用户,分别是匿名用户,本地用户,和虚拟账户。用途及区别如下。1)匿名用户:名为anonymous 或ftp 的FTP 用户,匿名FTP 用户登录后将FTP 服务器中的/var/ftp 作为FTP 根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP 服务器,所有人都可以使用匿名用户进行软件下载。2)本地用户:账号是系统用户账号(/etc/passwd),使用FTP 本地用户账号登录FTP 服务器后,登录目录为本地用户的宿主目录
2021-04-01 14:34:25 168
原创 搭建FTP服务笔记
环境CentOS6.10rpm包vsftpd-2.2.2-24.el6.x86_64.rpm配置文件anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESanon_umask=022local_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enabl
2021-04-01 14:26:58 153
原创 RAMDisk制作
(1) 在PC机的Linux操作系统环境下,生成可以虚拟成块设备的文件,假设文件名为ramdisk。$ mkfs.ext4 /dev/ram1$ dd if=/dev/ram1 of=ramdisk bs=1M(2) 新建一个目录/ram,并将ramdisk挂接到ram目录。$ mkdir /ram$ mount -o loop ramdisk /ram这时,读写ram目录,等效于读写ramdisk文件。用户可以将根文系统所需的文件写入到ram目录中。往ram目录写完文件以后,还需要使用umou
2021-03-29 17:24:57 663 2
原创 extlinux启动ramdisk
1. 硬盘准备1、虚拟机添加一块新的硬盘,大小为1G# fdisk -l /dev/sdb Disk /dev/sdb: 1073 MB, 1073741824 bytes....2、对新添加的硬盘进行分区,并设置第一分区为Boot分区# fdisk /dev/sdb分区过程省略# fdisk -l /dev/sdb Disk /dev/sdb: 1073 MB, 1073741824 bytes.....Device Boot Start End
2021-03-29 17:23:58 259 1
原创 dd克隆系统.txt
1. 查看当前系统分区# fdisk -luDevice Boot Start End Blocks Id System/dev/sda1 * 63 224909 112423+ 83 Linux/dev/sda2 224910 337364 56227+ 83 Linux2. 克隆当前系统# dd if=/dev/sda of=linux_os.img bs=5
2021-03-29 17:16:54 173
原创 vimrc
set tabstop=4 // 设置Tab长度为4格set expandtable // 设置tab为空格set autoindent // 继承前一行的缩进方式set shiftwidth=4 // 设置自动缩进长度为4格set nu // 显示行号set hls // 设置高亮搜索set is /
2021-03-16 15:22:24 109
原创 进度条C实现
#include <stdio.h>#include <string.h>#include <unistd.h>/* display by dynamic line * percent: range must at 0~100 */void update_progress_dynamic(int percent){ char str[] = {'-', '\\', '|', '/'}; printf("%c %3d%%\r", str
2021-03-16 15:21:21 167
原创 端口检测C程序
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <sys/time.h>#include &l
2021-03-16 15:19:10 505
原创 虚拟机回收空间
1. VMware删除虚拟机快照,然后开机执行cat /dev/zero >zero.fill; sync; sleep 1; sync; rm -f zero.fill关闭虚拟机,在Windows DOS下执行cd D:\Program Files (x86)\VMware\VMware Workstationvmware-vdiskmanager.exe -k “D:\VMwareOS\CentOS\CentOS5-CB50D\CentOS5-CB50D.vmdk”2. KVMkvm
2021-03-16 11:14:13 720
原创 TCP状态迁移
客户端TCP状态迁移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED服务器TCP状态迁移:CLOSED->LISTEN->SYN_RCVD->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
2021-02-25 11:18:39 242
原创 交叉编译
1. 本地编译在当前平台下,直接编译出来的程序,可以放到当前平台下运行。2. 交叉编译在当前平台下,编译出来的程序,可以放到另一平台下运行。3. 为什么要交叉编译主要是因为嵌入式系统中的资源太少,很难进行直接本地编译。编译开发需要较多的CPU,内存,硬盘等,而嵌入式开发上的资源,只够嵌入式系统运行的,没有足够的资源供本地编译。...
2021-01-28 16:11:38 89
原创 Debian10 设置
1. 网卡设置为eth方式选择开始安装前,按 tab 键,内核参数增加biosdevname=0 net.ifnames=02. vi 不能使用方向键和退格键在 /etc/vim/vimrc.tiny,添加以下两行:set nocompatibleset backspace=23. root 支持颜色设置在 /root/.bashrc 取消一下行注释# You may uncomment the following lines if you want `ls' to be colori
2020-12-15 14:38:49 297
原创 FTP、TFTP 实现 NAT ALG 访问
1. 环境操作系统: CentOS 6.10安装 ftp 服务:rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm安装 tftp 服务:rpm -ivh xinetd-2.3.14-40.el6.x86_64.rpmrpm -ivh tftp-server-0.49-8.el6.x86_64.rpm2. FTP NAT ALG 应用ftp 服务配置1. 配置为被动模式,指定监听端口范围2. 默认ftp目录加权限:chown -R ftp:ftp /var/
2020-12-11 13:52:59 1246
原创 GCC 编译、静态库、动态库
1. gcc 编译工作流程 预处理(cpp) 编译器(gcc) 汇编器(as) 链接器(ld) gcc -E C文件 gcc -S 汇编文件 gcc -c 二进制文件 gcctest.c ------------> test.i ------------> test.s ------------> test.o -------------->
2020-11-26 13:40:24 174
原创 C 语言实现 trimspace
1. 函数 char *trimspace(char *str)#include <stdio.h>#include <string.h>#include <ctype.h>char *trimspace(char *str){ char *p = NULL; if (!str || *str == '\0') { return str; } // tirm prefix p = str; w
2020-11-25 11:28:47 448
原创 sed 文本处理
1. 在字符前后添加在指定字符前添加# 在123之前添加abcsed -i 's/123/abc&/' a.txt 在指定字符后添加# 在123之后添加abcsed -i 's/123/&abc/' a.txt在每行头添加字符# 在每行的头添加abcsed -i 's/^/abc&/' a.txt在每行尾添加字符# 在每行的尾部添加abcsed -i 's/$/&abc/' a.txt 2. 在行前后添加在行前添加# 在匹配 ab
2020-11-24 11:10:22 110
原创 CentOS8.2安装docker
1. 设置docker yum源# 官方源wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo# 阿里源wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache2. docker镜
2020-11-23 15:57:50 485 1
原创 GCC 选项 “-Wl,-rpath=“
1. 介绍-Wl,-rpath=<your_lib_dir> 为程序添加一个运行时库文件搜索路径。-Wl:这个是gcc的参数,表示编译器将后面的参数传递给链接器 ld。-rpath:添加一个文件夹作为运行时库的搜索路径。在运行链接时,优先搜索-rpath路径,再去搜索LD_RUN_PATH路径。例如:# 指定链接的位置 $(prefix)/lib。程序运行时会先去$(prefix)/lib下搜索所需库文件。gcc -o foo foo.c -L$(prefix)/lib -lfo
2020-11-18 14:09:17 1259
原创 centos6.6 搭建SVN
1. 安装依赖apr-1.5.2.tar.gztar xzf apr-1.5.2.tar.gzcd apr-1.5.2./configuremake && make installapr-util-1.5.4.tar.gztar xzf apr-util-1.5.4.tar.gzcd apr-util-1.5.4./configure --with-apr=/usr/local/aprmake && make installsqlite-autoco
2020-11-17 13:49:16 105
原创 openssl结构
1. 组成主要包括三个主要模块:应用程序主要包括密钥生成,证书管理,格式转换,数据加密,签名,SSL测试等。SSL协议库通过BIO和EVP实现安全套接字的协议。密码算法库BIO主要是实现套接字的封装;EVP实现对内部算法的封装。2. BIO 封装了许多类型I/O接口细节的一种应用接口,可以和SSL连接,非加密的网络连接,文件I/O进行透明的连接。 主要分为两种,source/sink类型,如socket BIO,file BIO;filter类型,将数据从一个BIO转换到另一个B
2020-11-10 10:15:08 575
原创 mysql多表查询
1. 内连接前提条件: 两个表有联系,通过外键关联。# 1.普通内连接# 语法: 关键字 ... inner join ... on 条件;# * 在 inner join 关键字前写表1# * 在 inner join 关键字后写表2# * on 的后面写条件> select * from dept inner join emp on dept.did = emp.dno;# 2.隐式内连接(用的最多) * 语法:select ... from 表1
2020-11-08 01:29:46 154
原创 mysql表结构设计
1. 一对多表结构设计主表(一方),从表(多方),2张表建表原则: 在多方表中添加字段,把该字段作为外键,指向一方表的主键。2. 多对多表结构设计场景: 用户与角色。一个用户拥有多个角色,一个角色可以被多个用户所拥有。建表原则: 用户表和角色表例子。需3张表,需要创建一张中间表,存储数据关系。多对多可拆分成2个1对多的场景。...
2020-11-07 23:17:00 186
原创 mysql外键约束
1. 外键(多表约束)外键约束: 保证表结构中的数据完整性# 将表2的一个字段作为外键,映射到表以的一个字段中# 外键的值是从映射字段取值# 映射字段下有表关联,是不能被删除的foreign key (表2字段) references 表1 (表1字段)> create table dept ( did int primary key auto_increment, dname varchar(30));# dno 字段作为 emp 表的外键,值是从 dep 表中 did
2020-11-05 23:17:19 108
原创 mysql单表约束
1. 主键约束primary key * 主键约束,代表记录唯一标识,声明某一列为主键 * 唯一 值不能相同 * 非空 值不能为空 * 被引用 和外键一起使用# 测试主键> create table person( id int primary key, username varchar(20));>> insert into person values (1, '美美');> insert into person valuse
2020-11-05 22:58:14 852
原创 text/template用法
1. 模板标签模板标签用"{{"和"}}"括起来2. 注释# 使用"{{/*"和"*/}}"来包含注释内容{{/* a comment */}}3. 变量# 输出当前变量值{{.}}# 输出struct对象中字段或方法名称为"Abc"的值。{{.Abc}}# 定义变量# 变量名用字母和数字组成并带上"$"前缀,采用符号":="进行赋值。{{$article := "hello"}}# 调用方法"Func",并传递参数,输出其返回值。# 方法必须有一到两个返回值,如果是两
2020-11-05 15:08:28 1671
原创 mysql数据操作
1. 插入数据向表中指定字段中添加值> insert into 表 (字段1,字段2,字段3) values (值1,值2,值3);向表中所有字段添加值> insert into 表 values (值1,值2,值3,值4...);
2020-11-03 23:05:50 197
原创 mysql表操作
1. 查看表首先需要切换到数据库中> use 数据库名称;查看所有表> show tables;查看表详细信息> desc 表名称;查看你表定义信息> show create table 表名称;2. 删除表> drop table 表名称;3. 修改表添加字段> alter table 表名称 add 字段名称 数据类型(长度) 约束;修改字段> alter table 表名称 modify 字段名称 数据类型(长度) 约
2020-11-03 22:50:08 97
原创 mysql数据类型
1. 数据库的数据类型字符串型VARCHER : 长度可变。 例子:name varchar(8),存放hello,name字段长度自动变成5。CHAR : 长度不可变。 例子:name varchar(8),存放hello,用空格来补全剩余位置。大数据类型BLOB : 字节(电影 mp3)TEXT : 字符(文本的内容)数值型TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE逻辑型BIT (1或0)日期型DATE &n
2020-11-03 22:05:47 975
原创 mysql数据库操作
1. 连接mysql# mysql -u root -p root2. 数据库操作(CURD)创建数据库create database 数据库名称;create database 数据库名称 character set 编码 collate 校对规则;> create database mydb2;查看所有数据库> show databases;使用数据库use 数据库名称;> use mydb2;查看数据库创建信息show create database
2020-11-03 21:22:20 97
原创 go 实现交互终端
package mainimport ( "fmt" "golang.org/x/crypto/ssh/terminal" "os" "strings" "syscall")var ( oldTermState *terminal.State)const prompt = "LBS> "func main() { fmt.Printf("\nLBS CLI - version 1.0\n\n") var err error oldTermState, err
2020-11-03 15:20:22 1756
原创 iptables中的MARK用法
1. MARK作用给特定的数据包打上标记,配合TC做【QOS流量限制】 或 【策略路由实现】。2. MARK相关的模块libxt_mark.solibxt_connmark.solibxt_MARK.solibxt_CONNMARK.solibxt_SECMARK.solibxt_CONNSECMARK.so小写是匹配模块,大写是标记模块。带CONN的是标记链接,不带的是标记数据包。带SEC的是处理IPSEC数据,不带的是处理一般数据。-m 匹配-m mark --mark va
2020-11-03 15:18:11 7385
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人