linux
Achou.Wang
勿在浮沙筑高台
展开
-
算法中常用位操作
算法中常用位操作1.1 异或操作x ^ 0 = xx ^ 1111...1111 = ~xx ^ (~x) = 1111...1111x ^ x = 0a ^ b = c ==> a ^ c = b ==> b ^ c = aa ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c1.2 构造特殊的Mask,将特殊位置放0或者1x & (~0 << n) // 将x右边n位清零(x >> n) & 1 //.原创 2022-03-13 16:27:16 · 509 阅读 · 0 评论 -
c++类的大小
C++类对象中的成员变量和成员函数是分开存储的成员变量:普通成员变量:存储于对象中,与 struct 变量有相同的内存布局和字节对齐方式静态成员变量:存储于全局数据区中成员函数:存储于代码段中。class C2{public: int i; int j; int k; static int m; //4 静态成员变量 不会放到对象里面public: int getK() const { return k; } //4 void setK(int val) { k = v原创 2020-09-05 19:22:57 · 220 阅读 · 0 评论 -
C/C++实现读取当前文件夹下的文件-popen
常使用该方法获取bash命令的的输出,并将输出的文本用于分析,便于执行下面的操作,如本例子就是利用popen实现读取ls -l命令的输出源码#include <iostream>#include <string>using namespace std;int main(int argc, char const *argv[]){ //-rwxrwxrwx 1 root group 64463 Mar 14 09:53 101.jpg\r\n str原创 2020-09-03 00:17:08 · 1365 阅读 · 0 评论 -
面向对象C语言编程--抽象数据类型-AbstractDataTypes
AbstractDataTypesC语言的灵活C语言很灵活,不但有基础数据类型,char、int、double等,还允许程序员自定义类型,如:定义一个链表使用的数据类型,其中有Node节点和自己需要使用的其他数据信息。typedef struct node { struct node * next; ... information ...} node;一个小例子-setset会有这些操作:#ifndef SET_H#define SET_Hextern const v原创 2020-05-30 12:54:29 · 1030 阅读 · 0 评论 -
C语言必知必会-strtok赞歌
strtok的赞歌标记解析(Tokenizing)是最简单也是最常见的解析问题,也就是根据分隔符把一个字符串分割为几个部分。这个定义覆盖了所有这种类型的任务。根据空白分隔符(例如" \t\n\r"之一)分割单词。假设有个像"/usr/include:/usr/local/include:."这样的路径,在冒号处将其分开,形成单独的目录。根据一个简单的换行分隔符"\n"把一个字符串分割为不同的行。...原创 2020-04-19 00:17:34 · 422 阅读 · 0 评论 -
学习网站大全
算法可视化算法网站中文可视化算法中文网址可视化算法英文网址原创 2020-04-18 12:35:00 · 1488 阅读 · 0 评论 -
链接脚本语法
链接脚本语法原创 2020-02-18 15:12:07 · 332 阅读 · 0 评论 -
VS-code中的Postman替代品
REST Client第一次看到 REST Client 并尝试它时,与现有的软件(如Postman)相比,它似乎不是一个非常有用的工具。但是,对 REST Client 扩展的用法了解越多,就会意识到它对开发工具的影响有多大,尤其是在测试API 时。只需要创建一个新文件写入下面这一行:https://google.com然后转到命令面板(CTRL + SHIFT + P),单击Res...原创 2020-02-01 12:03:41 · 1860 阅读 · 0 评论 -
ubuntu16.04上安装graphy-easy
Graph::Easy 是一个处理图形DSL的Perl模块,它有如下功能:提供了一种易懂,可读性很强的图形描述语言一种支持 ASCII Art 的基于网格的布局器可以导出为 Graphviz, VCG (Visualizing Compiler Graphs), GDL (Graph Description LAnguages) 和 GraphML 格式。可以从 Graphviz, VCG...原创 2020-01-18 22:44:32 · 650 阅读 · 0 评论 -
Linux中文件加锁
/proc/locksandrew@andrew-Thurley:/dev$ cat /proc/locks 1: POSIX ADVISORY WRITE 8968 08:01:11666907 1073741825 10737418252: POSIX ADVISORY READ 2433 08:01:11798469 128 128...35: FLOCK ADVISO...原创 2019-12-22 22:12:36 · 2888 阅读 · 0 评论 -
enum-使用宏管理你的枚举型数据
高级枚举型定义实现C源文件#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>/*实现原理说明:首先在枚举型结构体中定义宏定义 #d...原创 2019-12-08 22:58:24 · 778 阅读 · 0 评论 -
shell--变量的替换
文章目录变量的替换小知识加油站--trap使用trap设计一个用于反应程序执行过程的脚本变量是什么,变量是脚本编程中进行数据表现的一种方法,说白了,变量不过是计算机为了保留数据项,而在内存中分配的一个位置或一组位置的标识或名字。变量的替换变量的名字就是保存变量值的地方,引用变量的值就叫做变量替换$在shell中要仔细区分变量的名字和变量的值,如果a是一个变量,那么$a就是引用这个变量的值...原创 2019-11-24 17:43:40 · 498 阅读 · 0 评论 -
trap--shell脚本调试的不二人选
trap简介trap的格式如下,功能就是捕捉信号,并对信号进行处理trap [-lp] [[arg] sigspec ...]arg可以是shell命令或者自定义函数sigspec可以是以下的一个或多个定义在<signal.h>中的信号名或者数值。信号名的大小写不敏感,SIG这个前缀也是可选的。以下的命令的效果都是一样的trap "echo SIGINT" SIGIN...原创 2019-11-24 15:37:48 · 845 阅读 · 0 评论 -
bash-shell中使用的特殊字符总结
文章目录特殊字符`#``;``;;``.``""``''``,``\``/`` ` ``:``!``*``?``$``()``{xxx,yyy,zzz,...}`{}`{} \;``[]``[[]]``(())``> &> >> < <>``<<、<<<``<、>``\<、\>``|``>...原创 2019-11-23 10:50:02 · 860 阅读 · 0 评论 -
基于ARM的linux嵌入式操作系统
RISC:0精简指令系统计算机(RISC) ARM即Advanced RISC Machines的缩写,既是一个公司的名字也是一种微处理器的统称,还可以认为是一种技术的名字;原创 2017-07-02 21:00:19 · 664 阅读 · 0 评论 -
lseek函数
#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, offset, int whence)说明:若成功返回新的文件偏移量(绝对偏移量),若出错位-1功能:定位一个已打开的新文件fd:已打开文件描述符offset:位移量whence:定位的位置 SEEK_SET:将文件的位移量设...原创 2018-08-04 22:53:50 · 179 阅读 · 0 评论 -
linux系统程序设计
计算机的基本组成:处理器主存储器输入输出模块系统总线标准C的IO输出有三种缓存类型全缓存:对于磁盘通常使用全缓存操作行缓存:终端的标准输入输出 两种情况下航缓存会输出:1)行缓存满自动输出。2)碰到换行符自动输出无缓存 标准作物输出通常是不带缓存的是为了错误信息能够尽快的显示出来使用实例证明printf后面不加回车,那么行缓存将不会输出自读到屏幕上://程序一直运...原创 2018-07-31 23:16:47 · 769 阅读 · 0 评论 -
配置交叉编译环境
自己配置了两天多了,终于找到了解决方式在配置交叉编译环境的时候,若你的主机是64位的,除了按照韦东山老师说的那样配置之外还要安装 lsb-core即执行下面的语句:sudo apt-get install lsb-core 否则会出现:NO SUCH FILE OR DIRECTORY...原创 2018-08-09 23:34:15 · 752 阅读 · 0 评论 -
linux-IO
使用命令more hole.txt若hole是空洞文件,则只能查看文件的前半部分,可以使用od -c hole.txt 查看文件的二进制形式的,可以看到空洞文件中默认是放入 ‘\o’ ,所以使用more命令看不到...原创 2018-08-10 23:07:02 · 231 阅读 · 0 评论 -
lseek()函数详解
今日命令: df -k //查看磁盘的分区情况andrew@andrew-Thurley:~/work/iotec$ df -k文件系统 1K-块 已用 可用 已用% 挂载点udev 2800604 0 2800604 0% /devtmpfs 566068 837...原创 2018-08-10 23:30:37 · 19745 阅读 · 0 评论 -
Linux中文件操作
在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。P...原创 2018-08-11 09:03:29 · 214 阅读 · 0 评论 -
dup和dup2以及cat函数函数
今日命令:more filenamen //分屏显示filename 内容od -c filename //使用二进制形式查看文件内容dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。这两个函数的原形如下:#include &amp;lt;unistd.h&amp;gt;int d...原创 2018-08-11 10:25:33 · 372 阅读 · 0 评论 -
fcntl函数-文件控制函数
今日命令在vim中使用:vsplit ./include/io.h 是以垂直方式打开io.h文件 同理:split ./include/io.h 是以水平方式打开io.h文件可以用fcntl 函数改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为File StatusFlag),而不必重新open 文件。#include &lt;unistd.h...原创 2018-08-11 13:02:23 · 414 阅读 · 0 评论 -
使用fcntl编写set_fl()函数和clr_fl()函数
voidset_fl(int fd, int flags) /* flags are file status flags to turn on */{ int val; if ( (val = fcntl(fd, F_GETFL, 0)) < 0) { printf("fcntl F_GETFL error"); ...原创 2018-08-11 13:03:49 · 377 阅读 · 0 评论 -
阻塞IO模型-数据读写
使用的IO模型若是没有设置就是默认是阻塞的 注意运行环境ubuntu16.04#include &lt;unistd.h&gt;#include &lt;fcntl.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;string.h&gt;int原创 2018-08-11 17:23:22 · 418 阅读 · 0 评论 -
非阻塞IO-读数据
阻塞型看:阻塞IO读数据 使用set_fl(STDIN_FILENO, O_NONBLOCK);将输入输出设置为非阻塞时,read()函数等不到数据输入的时候就会直接返回出错信息,而不是继续等到用户输入。#include <unistd.h>#include <fcntl.h>#include <stdlib.h>#include <stdio...原创 2018-08-11 17:44:07 · 1021 阅读 · 0 评论 -
fcntl函数完成 set_fl()函数还有clr_fl()函数的封装
使用fcntl函数完成,set_fl和clr_fl()函数的封装,设置文件的属性,例如:阻塞IO模型 和 非阻塞IO模型#include <stdio.h>#include "io.h"void set_fl(int fd, int flags) /* flags are file status flags to turn on */{ int val...原创 2018-08-11 17:48:34 · 658 阅读 · 0 评论 -
使用socket创建服务器进程和客户端进程
TCP客户端和服务器创建流程在上篇博文中已经说明:TCP客户端服务器模型创建流程服务器进程#include &lt;netdb.h&gt;#include &lt;sys/socket.h&gt;#include &lt;unistd.h&gt;#include &lt;string.h&gt;#include &lt;stdio.h&a原创 2018-08-14 22:22:15 · 738 阅读 · 0 评论 -
csdn设置自己的博客代码和博客的背景颜色
设置自己的背景颜色&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td bgcolor=#000322&amp;gt; 这里是背景颜色&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;原创 2018-08-11 20:05:08 · 4546 阅读 · 3 评论 -
linux中的五大查找命令---whereis,find,locate,which,type
附代码上色实例:<table><tr><td bgcolor=#7FFFD4><ol><li><font size="2" color="#CC78321"face='Consolas'>package</font> <font size= &quo原创 2018-08-11 20:44:14 · 292 阅读 · 0 评论 -
网络分层模型OSI和TCP/IP四层模型
网络分层模型OSI和TCP/IP四层模型网络分层模型OSI和TCP/IP四层模型OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。...原创 2018-08-12 08:17:12 · 20076 阅读 · 2 评论 -
socket(套接字)详解一种通讯机制
socket给提供给使用进程TCP/UDP等网络协议进行网络通讯手段。 linux中网络编程通过socket接口实现; socket既是一种特殊的IO,提供对应的文件描述符。socket都有一个相关的描述{协议,本地地址,本地端口,远程地址,远程端口}(五元组信息);每一个socket有一个本地的唯一socket,由操作系统分配。#include &lt;sys/socket.h&gt;...原创 2018-08-13 00:31:27 · 2065 阅读 · 0 评论 -
socket使用多进程实现并发的服务器
服务器测试效果:andrew@andrew-Thurley:~/work/network$ bin/echo_tcp_server 8888client: 127.0.0.1(55610) connectedstart read and write!namestart read and write!namestart read and write!客户端测试效果:an...原创 2018-08-17 22:10:21 · 1214 阅读 · 0 评论 -
不恰当使用read会造成服务器阻塞
可正常工作的tcp服务器:#include <netdb.h>#include <sys/socket.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <memory.h>原创 2018-08-15 23:31:26 · 622 阅读 · 0 评论 -
htonl、ntohl、htons、ntohs函数
htonl函数,将一个32位整数,由主机字节序转换为网络字节序。htons函数,将一个16位整数,由主机字节序转化为网络字节序 ntohl函数,将一个32位整数,由网络字节序转换为主机字节序。ntohs函数,将一个16位整数,由网络字节序转化为主机字节序htonl()--"Host to Network Long"ntohl()--"Network ...原创 2018-08-13 22:26:13 · 1859 阅读 · 0 评论 -
linux线程随笔-pthread_create函数
函数简介 pthread_create是UNIX环境创建线程函数头文件 #include<pthread.h>函数声明 int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict_attr, void*(*start_rtn)(void*), void ...原创 2018-08-18 20:15:16 · 19798 阅读 · 0 评论 -
getpeername函数与getsockname函数的介绍
getpeername函数用于获取与某个套接字关联的外地协议地址getsockname函数用于获取与某个套接字关联的本地协议地址 函数定义如下:#include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); int getpe...原创 2018-08-18 20:25:50 · 6738 阅读 · 2 评论 -
sockaddr与 sockaddr_in
留住因为很多系统调用必须使用这种结构struct sockaddr {unsigned short sa_family; /* 地址族, AF_xxx */char sa_data[14]; /* 14bytes的协议地址*/}; 上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换struct sockaddr_in {sho...原创 2018-08-13 22:43:09 · 157 阅读 · 0 评论 -
inet_ntop函数和inet_pton函数
#include<arpa/inet.h>int inet_pton(int family, const char *strptr, void *addrptr); 返回:若成功则为1,若输入不是有效的表达格式则为0,若出错则为-1const char *inet_ntop(int family, const void *addrptr, char *strptr, size_...原创 2018-08-13 23:02:20 · 1117 阅读 · 0 评论 -
TCP客户端服务端编程模型
客户端调用序列调用socket函数创建套接字调用connect连接服务端调用I/O函数(read/write)与服务器端通讯调用close关闭套接字服务器端调用序列调用socket函数创建本地套接字调用bind函数绑定本地地址和端口调用listen启动监听调用accept从已经连接的队列中提出客户连接调用I/O函数(read/write)与客户端通讯调用close...原创 2018-08-13 23:11:34 · 1054 阅读 · 0 评论