/* 基本类型定义 */
typedef signed char s8; // 有符号8位整数别名定义
typedef signed short s16; // 有符号16位整数别名定义
typedef signed int s32; // 有符号32位整数别名定义
typedef unsigned char u8; // 无符号8位整数别名定义
typedef unsigned short u16; // 无符号16位整数别名定义
typedef unsigned int u32; // 无符号32位整数别名定义
typedef unsigned long long int u64; // 无符号64位整数别名定义
typedef signed long long int s64; // 有符号64位整数别名定义
typedef volatile signed char vs8; // volatile 有符号8位整数别名定义
typedef volatile signed short vs16; // volatile 有符号16位整数别名定义
typedef volatile signed int vs32; //volatile 有符号32位整数别名定义
typedef volatile unsigned char vu8; // volatile 无符号8位整数别名定义
typedef volatile unsigned short vu16; // volatile 无符号16位整数别名定义
typedef volatile unsigned int vu32; // volatile 无符号32位整数别名定义
typedef unsigned char BOOL; // 布尔类型定义
typedef signed int SYS_STATUS; // 函数返回值类型定义
typedef s32 BH_SOCKET;
1、版本宏函数
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
eg:printf("===%x\n",KERNEL_VERSION(2,6,11));
其他:
typedef unsigned char u8; // 无符号8位整数别名定义
typedef unsigned int u32; // 无符号32位整数别名定义
转换1
Ip32 = (u32)(*(p + 3) << 24 | *(p + 4) << 16 | *(p + 5) << 8 | *(p + 6));
转换2
u8 tmp[4] = {0};
tmp[0] = Ip32 & 0xff;
tmp[1] = (Ip32 >> 8) & 0xff;
tmp[2] = (Ip32 >> 16) & 0xff;
tmp[3] = (Ip32 >> 24) & 0xff;
2、demsg:检测和控制内核环缓冲;显示所有信息
1、dmesg:dmesg --help查看用法
2、用root权限执行 cat /proc/kmsg,查看内核的调试信息
kmsg里面就是显示内核消息的,程序中printk的输出都可以看到,
3、开机信息
开机信息亦保存在/var/log目录中;执行:cat /var/log查看
4、查看系统信息
[ubuntu:root]$ hostnamectl
Static hostname: ubuntu-virtual-machine
Icon name: computer-vm
Chassis: vm
Machine ID: a310e68e764ffe92628ad74
Boot ID: e03c392db5e22d892d148f0
Virtualization: vmware
Operating System: Ubuntu 16.04.4 LTS
Kernel: Linux 4.13.0-36-generic
Architecture: x86-64
5、查看是哪个发行版
[ubuntu:root]$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
6、查看内核版本和gcc信息
[ubuntu:root]$ cat /proc/version
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018
7、查看内核版本
[ubuntu:root]$ uname -a
Linux ubuntu-virtual-machine 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
8、如果是REDHAT的系统,还可以查看
[root@root]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
9、多层目录下的文件格式需要转换,dos2unix 没有-r之类的递归指令,所以需要与find还有管道结合。
find -type f | xargs dos2unix -o
10、列出物理CPU
及各自的逻辑核
数
cat /proc/cpuinfo | grep "physical id" | sort | uniq -c
假设输出如下,则表示有两个物理CPU,各自包含8个逻辑核
8 physical id : 0
8 physical id : 1
11、查看php相关信息
查看php的错误日志路径
echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
判断PHP是否为线程安全版本
php -r "var_dump(ZEND_THREAD_SAFE);"
12、进制转换输出
//打印二进制
for (int i = 0; i < nread; ++i){
if (i % 4 == 0) printf("\n");
printf("%02x ", buf[i]);
}
printf("\n");
/
16进制转二进制
void hex_to_binary(u8 hex_val) {
u8 i;
for (i = 0; i < 8; i++) {
u8 bit = (hex_val >> (7 - i)) & 1;
printf("%d",bit);
}
printf("\n");
}
//调用
u8 com = 170,comm=0;
printf("com1=%d com2=%d\n",(com >> 0)&1,(com >> 1)&1);
hex_to_binary(com);
comm=(u8)(1 << 0)|(1 << 1)|(1 << 2)|(0 << 3)|(0 << 4)|(1 << 5);
hex_to_binary(comm);
#define LED_CONTROL_REGISTER (*((volatile unsigned int*)0x12345678))
// 开启LED 置1
LED_CONTROL_REGISTER |= (1 << LED_BIT);
// 关闭LED 置0
LED_CONTROL_REGISTER &= ~(1 << LED_BIT);
13、arm或单片机对齐字节
#pragma pack(push, 1)
14、字符串中的字母全转换成大/小写/去掉最后的换行符
注意: 传参方式
char *buf=(char *)malloc(64);
sprintf(buf,"%s","aaahh");
// 将字符串中的字母全转换成小写
char* g_strToLower( char *str )
{
char *cp = 0;
for (cp=str; *cp; ++cp)
{
if ('A' <= *cp && *cp <= 'Z')
*cp += 'a' - 'A';
}
return(str);
}
// 将字符串中的字母全转换成大写
char* g_strToUpper( char *str )
{
char *cp = 0;
for (cp = str; *cp; ++cp)
{
if ('a' <= *cp && *cp <= 'z')
*cp += 'A' - 'a';
}
return(str);
}
去掉最后的换行符
void trim_string(char *str)
{
int len = strlen(str);
//去掉最后的换行符
if(str[len-1] == '\n')
{
len--; //字符串长度减一
str[len] = 0; //给字符串最后一个字符赋0,即结束符
}
}
15、vim创建程序文件自动添加头部注释
在当前目录下面创建一个.vimrc
的文件 或者 vim /etc/vim/vimrc放在文件尾部
[root@hegs ~] vim ~/.vimrc
或者
[root@hegs ~] sudo vim /etc/vim/vimrc
autocmd BufNewFile *.sh exec ":call AddTitleForShell()"
function AddTitleForShell()
call append(0,"#!/bin/bash")
call append(1,"# **********************************************************")
call append(2,"# * Author : Mankel")
call append(3,"# * Email : xxxx@163.com")
call append(4,"# * Create time : ".strftime("%Y-%m-%d %H:%M"))
call append(5,"# * Filename : ".expand("%:t"))
call append(6,"# * Description : ")
call append(7,"# **********************************************************")
endfunction
autocmd BufNewFile *.py exec ":call AddTitleForPython()"
function AddTitleForPython()
call append(0,"#!/usr/bin/python3")
call append(1,"# **********************************************************")
call append(2,"# * Author : Mankel")
call append(3,"# * Email : xxxx@163.com")
call append(4,"# * Create time : ".strftime("%Y-%m-%d %H:%M"))
call append(5,"# * Filename : ".expand("%:t"))
call append(6,"# * Description : ")
call append(7,"# **********************************************************")
endfunction
16、时间戳
#include <time.h>
#include <stdio.h>
int main()
{
//十进制 u32位
time_t now;
now = time(NULL);
printf("now====%ld\n",now);
char time_str[20];
// sprintf(time_str, "%ld", now);
// printf("当前时间戳:%s秒\n", time_str);
//转换为时间格式
struct tm *local_time;
local_time = localtime(&now);
strftime(time_str, sizeof(time_str),"%Y-%m-%d %H:%M:%S", local_time);
printf("格式化后的时间:%s\n", time_str);
return 0;
}
------------------------------------------------------------
now====1712139795
格式化后的时间:2024-04-03 10:23:15
now====1712139796
格式化后的时间:2024-04-03 10:23:16
now====1712139796
格式化后的时间:2024-04-03 10:23:16
12、项目中常用的协同软件
12.1 JIRA
项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域
Jira的安装、使用与集成:Jira的安装、使用与集成_如梦幽香的博客-CSDN博客_jira安装
12.2 confluence
Confluence是一个企业级的Wiki软件,可用于在企业、部门、团队内部进行信息共享和协同编辑
Confluence使用教程:Confluence使用教程_罗_星星的博客-CSDN博客_confluence
12.3 supervisor
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
Supervisor使用详解:Supervisor使用详解 - 简书
12.4 fswatch
12.4.1 fswatch是一个跨平台的文件更改监视,获取通知警报在指定的文件或目录的内容被改变或修改。
简介:fswatch - 监视Linux中的文件和目录更改或修改
应用:PHP 版本 - OpenRASP 官方文档 - 开源自适应安全产品
12.4.1 inotify文件监控
Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象
12.5 Visual Studio Code
Visual Studio Code 是一个运行于 OS X、Windows 和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台编辑器。Visual Studio Code 为开发者们提供了对多种编程语言的内置支持,同时也会为这些语言提供丰富的代码补全和导航功能。JavaScript,TypeScript,Node.js 和 ASP.NET 5 开发者也将会获得额外的工具集
12.6 PhpStorm 2020.1 x64 : php开发的IDE
12.7 PyCharm Community Edition 2020.3.2 x64 : python开发的IDE
12.8 Navicat Premium 12
一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库
12.9 Robo 3T 1.1.1
一个MongoDB管理工具
12.10 向日葵:远程控制软件
12.11 Fiddler 4
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,使用Fiddler无论对开发还是测试来说,都有很大的帮助
12.12 Burp Suite
urp Suite是一款信息安全从业人员必备的集 成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了 Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块。通 过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀
12.12.1 omnipeek7.9.1
世界上功能最强大的网络协议分析器
12.13 软件架构建模软件
powerdesigner
rationalrose
diagrams.net:网络布局图比较详细
12.14 思维导图免费软件
- XMind (功能更强大)
- FreeMind
文档编辑软件
Typora|Typora中文|typora下载|typora 主题
12.15 JMeter工具
Apache JMeter是Apache组织开发的基于Java的压力测试工具
12.6 Apache Tika 内容分析工具包
Apache Tika™ 工具包从一千多种不同的文件类型(如 PPT、XLS 和 PDF)中检测和提取元数据和文本。所有这些文件类型都可以通过一个界面进行解析,使 Tika 可用于搜索引擎索引、内容分析、翻译等。
12.7 Win32DiskImager
Win32DiskImager是一款非常好用的U盘写入工具,主要功能是来写Ubuntuimg文件到SD和USB卡中。只要运行Win32DiskImager工具,填入自己的img,然后选择移动设备写入即可。Win32DiskImager可以使用户将光盘内容恢复到它原来的状态,能够让用户将各类移动磁盘如u盘内的数据进行成像效果,软件还能够创建可移动存储单元和U3设备的精确副本来作为备份。
示例:H3芯片ubuntu镜像系统Orangepione_2.0.8_ubuntu_focal_desktop_linux5.4.65
12.8 Jupyter Notebook
Jupyter Notebook是一个开源的Web应用程序,可以创建和共享包含实时代码,方程式,可视化和说明文本的文档。
Jupyter的官网:
Project Jupyter | Home
12.9 Mininet
Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。
Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。
ubuntu : sudo apt-get install mininet
12.10 网络学习工具
eNSP
eNSP(Enterprise Network Simulation Platform)是一款由华为提供的、可扩展的、图形化操作的网络仿真工具平台,主要对企业网络路由器、交换机进行软件仿真,完美呈现真实设备实景,支持大型网络模拟,让广大用户有机会在没有真实设备的情况下能够模拟演练,学习网络技术。
Packet Tracer
是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。
12.11 NSIS
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。
HM NIS Edit :(nsis脚本编辑器)是一款功能强大的NSIS脚本编辑工具。NSIS脚本编辑的软件非常多,你在用哪款?想换吗?小编为你推荐HM NIS Edit中文版。这款软件绿色小巧,功能齐全,操作简单!
12.12 Linux终端工具
mobaXterm :亮点:network scan工具、ssh连接左边可以实时传输文件
putty.exe 简单易装 Xmanager_v2.0可以远程界面显示