
Linux
WanJunCoder
make the world a better place!
展开
-
TCP客户端非阻塞connect,EPOLL异步响应
废话不多说,直接上代码下面展示一些 内联代码片。#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h>#include <iostream&g原创 2020-10-18 23:50:39 · 1709 阅读 · 1 评论 -
epoll_create和epoll_create1踩坑,导致cpu100%
epoll_create 和 epoll_create1的区别不知道但是在使用的过程中发现:运行后使用htop没有什么异常;但是使用epoll_create1后CPU的使用率直接标到了99%,严重的影响性能。...原创 2019-03-19 10:55:06 · 6876 阅读 · 4 评论 -
ubuntu clang llvm使用
安装 clang、llvmsudo apt-get install llvmsudo apt-get install clang配置默认的C++编译sudo update-alternatives --config c++There are 2 choices for the alternative c++ (providing /usr/bin/c++).Selection ...原创 2019-03-26 10:11:54 · 1853 阅读 · 0 评论 -
muduo Mutex.h Condition.h 解析
mutex 配合 线程idclass CAPABILITY("mutex") MutexLock : noncopyable{ public: MutexLock() : holder_(0) { MCHECK(pthread_mutex_init(&mutex_, NULL)); } // 只有未上锁的状态可以析构 ~MutexLock() ...原创 2019-03-26 13:09:09 · 350 阅读 · 0 评论 -
epoll server实例
ServerEpollepoll [enhancement poll]this is a async server base on epoll at Linux这是一个在Linux系统上基于epoll机制的异步服务器class EpollService 主要功能就是,创建一个后台服务器监听指定端口号,并且接受来自客户端的连接请求。EpollService 使用两个 epoll 机制来完成...原创 2019-03-22 22:12:59 · 1267 阅读 · 0 评论 -
muduo AsyncLogging 解析(异步日志)
异步日志原理需要了解其中使用的几个类使用方法muduo::detail::FixedBuffer<muduo::detail::kLargeBuffer> Buffer;std::vector<std::unique_ptr<Buffer>> BufferVector; BufferVector::value_type BufferPtr;其中 Bu...原创 2019-04-03 21:39:22 · 965 阅读 · 0 评论 -
zeromq安装测试
地址sudo sh -c "echo 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/network:messaging:zeromq:release-stable.lis...原创 2019-06-04 12:19:21 · 379 阅读 · 0 评论 -
Linux大小端转换实现
实现#include <byteswap.h>#include <stdint.h>/** * @brief 8字节类型的字节序转化 */template<class T>typename std::enable_if<sizeof(T) == sizeof(uint64_t), T>::typebyteswap(T value)...原创 2019-07-02 14:39:01 · 3716 阅读 · 0 评论 -
获得真正的线程id
使用目的在linux后台服务器系统中,首先需要实现的就是日志库。在使用日志库的过程中会发现,当引入多线程后,为了更好的排查错误和整理业务逻辑需要对多线程的日志进行区分。一个很好的方法就是在每条日志中打印相对应的线程id简单实现#include <unistd.h>long int id = sys_call(SYS_gettid);...原创 2019-07-02 17:49:00 · 358 阅读 · 0 评论 -
gperftools安装和使用
gperftools 下载和安装github 上找到源码,下载并解压64位机器需要先安装 apt-get install libunwind8-dev./autogen.sh./configuremake -j8# 安装到系统文件夹sudo make installldconfig 刷新动态库文件CPU使用方法一gcc [...] -o myprogram -lprofil...原创 2019-07-11 09:55:05 · 5092 阅读 · 0 评论 -
协议分析-libpcap的安装与使用
下载源代码http://www.tcpdump.org/release/通过 tar zxvf libpcap-1.0.0.tar.gz 解压文件。进入文件目录后依次执行./configuremake && make install配置过程中缺少什么就使用 sudo apt install xx 安装实例代码代码的作用是读取一个 .pcap 文件,并解析其中的T...原创 2019-07-24 09:21:18 · 396 阅读 · 0 评论 -
linux c++ 后台服务器环境搭建
samba + xshell环境搭建samba的环境搭建sudo apt-get install samba创建Samba用户创建共享的文件夹 share重启Samba登录Samba服务器SSH安装ssh配置文件修改重新启动ssh服务samba的环境搭建sudo apt-get install sambasudo vim /etc/samba/smb.conf在最后添加[share]...原创 2018-12-30 22:00:13 · 809 阅读 · 0 评论 -
pcap入门教程
第一件事就是需要了解 pcap 应用的格式1.发现哪个网卡需要我们去sniff 嗅探linux下也许是eth0BSD下可能是 xl1我们可以将设备定义为string然后打开该设备,或者我们可以让pcap自己查找然后提供我们网卡的名称2.初始化pcap ,实际上就是我们告诉pcap 去嗅探哪个网卡设备。如果我们想的话,可以同时嗅探多个网卡设备。我们使用文件描述符去区分这些网卡,就像我们打...翻译 2019-08-14 14:46:26 · 3906 阅读 · 0 评论 -
muduo type.h 解析 C++类型转换技巧
初始化// 简化了 memset 的使用inline void memZero(void* p, size_t n){ memset(p, 0, n);}隐式转化// 用于在继承关系中, 子类指针转化为父类指针;隐式转换// inferred 推断,因为 from type 可以被推断出来,所以使用方法和 static_cast 相同template<typename ...原创 2019-03-25 18:45:11 · 250 阅读 · 0 评论 -
mosquitto 客户端源码剖析 mosquitto_loop_start()
mosquitto 调用形式源码MainServer.h#ifndef _WJ_MAINSERVER_H#define _WJ_MAINSERVER_H#include <event.h>#include <mosquitto.h>class MainServer{public: // single static MainServer&a...原创 2019-03-06 11:09:59 · 7250 阅读 · 0 评论 -
Linux api close和shutdown的区别
关闭连接关闭一个连接实际上就是关闭该连接对应的socket。#include <unistd.h>int close(int fd);int shutdown(int fd);区别close调用并非总是立即关闭一个连接,而是将fd的引用计数为0时,才真正关闭连接。多进程程序中,一次fork系统调用默认将使父进程中打开的socket的引用计数加1。如果无论如何都要终止连接...原创 2019-02-26 18:06:27 · 495 阅读 · 0 评论 -
linux 文件隐藏属性 文件特殊权限
chattr 设置文件隐藏属性chattr [±=][ASacdistu]+i 可以让一个文件无法被改动+a 让一个文件只能增加数据,而不能更改和删除数据-R 递归的修改文件隐藏属性...原创 2019-01-05 11:59:47 · 228 阅读 · 0 评论 -
Linux shell loop 循环 函数
循环while true;doif [ $count -lt 40 ];thenlet count++;sleep 1;tput rctput edecho -n ${count}else exit 0;fidone函数function fname(){statements;}fname(){statements;}fname(){echo $1,...原创 2019-01-07 14:33:12 · 2348 阅读 · 0 评论 -
Linux shell read 用法
read 用于从键盘或者标准输入中读取文本从输入中读取n个字符串并存入变量中read -n number_of_chars variable_name用无回显的方式读取密码read -s var显示提示信息read -p "enter input: " var在特定时限内读取输入read -t timeout var用特定的定界符作为输入行的结束read -d delim_c...原创 2019-01-07 15:21:36 · 941 阅读 · 0 评论 -
linux shell cat
cat读取文件内容的一般写法cat files1 files2 files3 …打印单个文件的内容cat files1OUTPUT_FROM_SOME COMMANDS | cat将来自输入文件的内容与标准输入拼接在一起echo “text throught stdin” | cat - file.txt1.摆脱多余的空白行cat -s file2.将制表符显示为^Icat -...原创 2019-01-08 10:41:43 · 340 阅读 · 0 评论 -
linux shell 录制并回放终端会话 script
script开始录制script -t 2>timing.log -a output.sessiontype commands;exit结束录制scriptreplayscriptreplay timing.log output.session开始回放原创 2019-01-08 10:49:23 · 187 阅读 · 0 评论 -
在 ipad上远程连接 linux服务器
一般来说只有在局域网的情况下,我们才可以使用 telnet 或者 xshell 登录了linux 服务器,但是现在我们可以使用 蒲公英 ,在登录相同账号的情况下可以通过 蒲公英 分配的 ip 地址构成一个虚拟的局域网。...原创 2019-01-13 20:51:15 · 20587 阅读 · 3 评论 -
linux shell tr命令的使用
tr (translate)tr 只能通过 stdin(标准输入),而无法通过命令行参数来接受输入tr [options] set1 set2example:将输入字符由大写转换为小写echo “HELLO WORLD” | tr ‘A-Z’ ‘a-z’用tr 删除字符,通过指定需要被删除的字符集合-dcat file.txt | tr -d ‘[set1]’字符集补集 ...原创 2019-01-09 18:02:40 · 351 阅读 · 0 评论 -
linux高性能服务器 读书笔记
arp协议工作原理主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会相应一个ARP应答。...原创 2019-01-10 10:57:51 · 157 阅读 · 0 评论 -
pthread.h 线程部分 源码解读
int pthread_create (pthread_t *__restrict __newthread, const pthread_attr_t *__restrict __attr, void *(*__start_routine) (void *)创建线程void pthread_exit (void *__retval)退出线程int pthread...原创 2019-02-18 15:40:11 · 1140 阅读 · 0 评论 -
makefile笔记
程序的编译和链接将源文件编译成中间代码文件,windows下是.obj,linux环境下是.o文件。编译时,只需要语法的正确。把大量的Object File文件合成执行文件,这个动作叫链接。库文件由于源文件太多导致生成的中间目标文件大多,而在链接时需要明显的指出中间目标文件,这很不方便,所以将中间目标文件打包,在unix下是Archive File,也就是.a文件...原创 2019-03-04 23:45:39 · 97 阅读 · 0 评论 -
mysql 用户管理
user 表最重要的权限表,记录允许连接到服务器的账号信息。db 表存储了用户对某个数据库的操作权限。host 表存储了某个主机对数据库的操作权限。...原创 2019-02-20 22:01:01 · 105 阅读 · 0 评论 -
git 操作记录
git branch查看当前的分支情况git branch -v查看当前的分支情况,并显示commit 信息git checkout origin test选择 test 分支git checkout -b newBranch创建新的分支,并且切换到新的分支...原创 2019-03-05 17:30:18 · 116 阅读 · 0 评论 -
Linux 中文件权限和目录配置
原创 2019-01-04 21:09:50 · 756 阅读 · 0 评论