自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Linux C++网络编程

Linux C++ 网络编程(二)前言在上一节中以拆分的方式学习完 Linux 、C++、网络等知识后,这节会将这三个模块糅合起来,站在项目的基础上再次去学习这三个模块。 Linux 网路编程比较经典的有 Redis、Muduo、TeamTalk等开源项目。本文将以 Muduo 来介绍 网络编程的框架,学习完 Muduo 再去学习其他框架就容易许多了。注意, 文中贴的代码均为核心代码,且注释详细,认真阅读。Linux C++ 网络编程 (一)Linux C++ 开发环境搭建下载路径githu

2020-11-18 09:05:49 722

原创 带你一起探索 c++11 中右值引用、移动构造、&&、move、forward

本文将介绍带你一步步的了解 c++11 中:* 右值、右值引用* 移动构造函数* && 解密* move 移动语义* forward 完美转发产生原由class Object { public: //无参构造函数 Object() : m_num(new int(10)) { std::cout << "contr function..." << std::end

2021-03-29 09:39:29 487 2

原创 centos出现 fatal error: X11/Xmu/WinUtil.h: No such file or directory

在安装 ns2 的过程中出现fatal error: X11/Xmu/WinUtil.h: No such file or directory解决办法:查找 Xmu 相关包yum search Xmu会出现以下结果:libXmu.i686 : X.Org X11 libXmu/libXmuu runtime librarieslibXmu.x86_64 : X.Org X11 libXmu/libXmuu runtime librarieslibXmu-devel.i686 : X.Org

2021-03-17 13:30:06 1045

原创 Linux 下常用的网络命令汇总

在 Linux 下开发应用程序,避免不了使用一些网络工具排查、分析,下面总结了一些常用的网络工具。一、ifconfig 和 ip addr在 windows 中经常使用 ipconfig 查询网卡、IP 和 网关等信息。在 Linux 中则一般使用 ifconfig 来查看这些信息。一般使用下面命令进行安装yum install -y net-tools一般使用只需要输入 ifconfig 即可:# ifconfig eth0 Link encap:Ethernet HW.

2021-01-07 16:48:06 763

原创 gcc 安装为什么安装不上呢? 踩坑

gcc 安装为什么安装不上呢? 踩坑应与实验要求,需要 gcc 版本降级成 gcc-4.8, 网上教程很多,坑无下限。问题: apt-get install gcc-4.8 ,提示已经安装, 但是 gcc -v: /usr/bin/gcc 找不到该文件。解决办法: 1、先进入 /var/lib/dpkg/status 中, 备份 status: mv status status.bak2、清空 status 文件, 切记一定要使用: cat /dev/null > status3、

2020-12-29 10:45:19 3960

原创 Cento6.* 配置 yum 源老报错问题

什么是 yum ? yum 源又是什么鬼?在 windows 中安装软件,360 管家可以一键帮你安装,省时省力。同理 Linux 中也有一个家伙和管家一样,他叫 yum。有了它,下载软件只需要一行命令就可以了。那么什么是 yum 源呢? 故名思意: 就是yum 安装包的资源中心。一般在 Linux 的安装镜像中就包含了常见的源。配置 yum 源国外的源一般都需要强,所以通常可以配置国内的源,比如阿里源等。1、进入 /etc/yum.repos.d2、先备份以前的源mv /etc/yum.r.

2020-12-17 16:17:22 262

原创 c++ 获取线程标识的 4 中方法

在 Linux C++ 网络编程中,经常会使用到线程的标识,下面整理了常用的获取线程标识的方法:1、gettid获取内核线程的 ID, 当只有一个线程时得到的是进程的 pid,和使用 getpid 获取的结果相同。#include <sys/types.h>pid_t gettid(void);此方法在 glibc 中并没有封装,需要使用 syscall 系统调用封装#include <sys/types.h>#define gettid() syscall(_NR

2020-12-14 09:52:08 999

原创 c++ 打印树的所有路径

2020 年秋招百度二面被问到这个题,以前做过,所以顺利就写下来了。//定义树的数据结构struct TreeNode { int value; TreeNode* left; TreeNode* right; TreeNode(int val) : value(val), left(NULL), right(NULL) {}};class BinaryTreePath {public: vector<string> binaryTreePat

2020-12-13 21:33:36 432

原创 7张图带你了解红黑树变色、左旋和右旋

红黑树红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,1. 红黑树五大特性所有节点非红即黑根节点是黑色所有节点非红即黑根节点是黑色页节点是黑色不能有连续的红色任意节点到叶子节点路径中有相同数量的黑色节点2. 变色如果当前节点的父亲节点和叔叔节点均是红色,那么执行以下变色操作:父 --> 黑叔 --> 黑爷 --> 红开始分析爷爷是否满足红黑树特性3. 左旋条件:父亲是红色

2020-12-13 11:50:07 2787 3

原创 打印树的所有路径

2020 年秋招百度二面被问到这个题,以前做过,所以顺利就写下来了。//定义树的数据结构struct TreeNode { int value; TreeNode* left; TreeNode* right; TreeNode(int val) : value(val), left(NULL), right(NULL) {}};class BinaryTreePath {public: vector<string> binaryTreePat

2020-12-13 11:44:02 128

原创 Linux 下开发常用工具 WinScp、Putty 和共享文件夹

前言对于很多在 Linux 开发的程序员来说,面对一个黑窗口显然没有如 Windows 这样具有图形画界面的操作系统更能直观、快速的进行开发和管理,本文将介绍常用的 Windows 和 Linux 之间相互联系的软件, 将分别介绍文件传输、 Shell登录 和 文件夹共享 。文件传输现在有很多 Linux 服务器都是在内网中部署的,很多软件和代码都需要使用文件传输的方式传到服务器进行部署和维护。下面将介绍一款文件传输软件 -------WinScp下载地址: https://winscp.ne.

2020-11-30 21:01:06 360

原创 网络字节序

字节序前言为什么会出现大端字节序和小端字节序呢?统一使用一种字节序不是更好吗?介绍大端字节序 : 高位字节在低地址,低位字节在高地址小端字节序: 高位字节在高地址,低位字节在低地址0x1234567的大端字节序和小端字节学的写法如下图所示:原因计算机电路在处理低位字节时,效率比较高,因为计算机都是从低位开始的,所以,计算机的内部处理都是小端字节序;但是在程序员的眼里,还是习惯读写大端字节序,所以除了计算机内部外,其他场合大都使用大端字节序;如网络传输和文件存储中;判断字节序以下已

2020-11-30 09:45:03 494

原创 vim 看这篇教程就够了

前言在 Liunx 下编程或者运维,掌握一种编辑工具是必不可少的技能。本文将带你了解 vim 的常见使用方法,让你在使用 Linux 游刃有余。vim 安装centos 安装: yum install -y vimubutuo 安装: sudu apt-get install vim安装完成后,可使用 vim -v 查看版本号vim 状态介绍NORMAL (默认) 状态: 此状态是 vim 的默认状态;INSERT (插入) 状态: 此状态是 vim 的插入状态,输入的.

2020-11-30 09:19:13 339

原创 面试过程中让你手写的那些 C 库函数

面试过程中让你手写的那些 C 库函数前言在今年的秋招面试 C、C++ 过程中,很多公司都会让面试者实现一些 C 库函数(memcpy、memset、strcpy等)。起初不解,但是想想也了然,C / C++ 程序员都是自己轮轮子。掌握底层原理,可以更好的实现业务功能,同时也能锻炼自身素养。memcpy 函数#include <iostream>void* my_memcpy(void* desc, const void* src, int size) {\ if (desc

2020-11-23 11:33:08 218 1

原创 Linux C++ 开发环境搭建

Linux C++ 开发环境搭建前言工欲善其事必先利其器,想要学好 Linux C++ 编程,那么就要有对应环境,本文将带你一步步搭建开发环境。准备工作为了学习方便,在 win 下面安装虚拟机,然后安装 CentOs 操作系统。当然也可以使用 阿里云等云产品(但个人推荐本地搭建,因为阿里云远程连接经常掉线)。搭建 centos 开发环境:centos安装教程 前面介绍过,这里将不再赘述。安装常用工具作为一个合格的程序员我觉得所有的东西都应该标准化、文档化。所以我对我的文件进行规划:

2020-11-13 20:32:57 756 1

原创 常见服务器模型

常见服务器模型对比,已经优缺点分析1. 迭代式服务器 accept + read / write特 点: 这种迭代器其实不是并发服务器, 而是迭代服务器, 因为他一次只能服务一个客户端, 属于单线程。长连接:需要read – write 之间循环接受客户端请求, 但此时该模型只能服务一个客户端短链接:如果想要支持短链接,其中的 计算 - 处理 - 打包 操作不能太耗时, 应为太过耗时会影响其他客户端连接到来。2. fork/thread - per - connection特 点:

2020-09-07 10:16:18 1410

转载 tcp硬核

转载自公众号 脚本之家。TCP 性能的提升不仅考察 TCP 的理论知识,还考察了对于操作系统提供的内核参数的理解与应用。TCP 协议是由操作系统实现,所以操作系统提供了不少调节 TCP 的参数。Linux TCP 参数如何正确有效的使用这些参数,来提高 TCP 性能是一个不那么简单事情。我们需要针对 TCP 每个阶段的问题来对症下药,而不是病急乱投医。接下来,将以三个角度来阐述提升 TCP 的策略,分别是:TCP 三次握手的性能提升;TCP 四次挥手的性能提升;TCP 数据传输的性能提

2020-07-02 09:04:13 229

原创 Linux下LAMPP搭建 + mysql自动备份

Linux下LAMPP搭建 + mysql自动备份一、下载lampp集成包wget https://jaist.dl.sourceforge.net/project/xampp/XAMPP%20Linux/1.8.3/xampp-linux-x64-1.8.3-3-installer.runwget [https://jaist.dl.sourceforge.net/project/xampp/XAMPP%20Linux/1.8.3/xampp-linux-x64-1.8.3-3-installe

2020-06-17 20:32:40 554

原创 Linux申请免费证书+Apace配置+http重定向到https

Linux申请免费证书+Apace配置+http重定向到https一、环境:宿主机: Centos站环境:Apache(LAMPP)证书方:Let’s Encrypt二、获取Let’s Encrypt 免费SSL证书#1、下载 letsencrypt-auto 脚本,使用它能够很方便地完成域名验证和SSL证书的获取。$ git clone https://github.com/letsencrypt/letsencrypt#2、进入到脚本所在目录 $ cd letsencryp

2020-06-17 18:51:09 326

原创 占用CPU和内存过高的进程脚本

#!/bin/bash#cpu利用率最高的5个ps -aux | awk '{print $3,$NF}'|sort -r |head -n 5#内存利用率最高的5个ps -aux | awk '{print $4,$NF}'|sort -r |head -n 5

2020-06-14 10:23:56 583

翻译 一件查看服务器利用率脚本

一件查看服务器利用率1) CPU 60%以上2) 内存 利用率3) 硬盘 利用率4) TCP连接状态 负载情况#!/bin/bash# awk更像是一个sql,有行有列function cpu() { util = $(vmstat |awk '{if(NR==3)print $13+$14}') iowait=$(vmstat |awk '{if(NR==3)print $16}') echo "CPU - 使用率:${util}&, 等待磁盘IO响应使

2020-06-14 10:23:25 188

原创 检测网卡流量脚本

检测网卡流量#!/bin/bashNIC=$1echo In ------ Outwhile true; do OLD_IN=$(cat /proc/net/dev | awk '/eth0/{print $2}') OLD_OUT=$(cat /proc/net/dev | awk '/eth0/{print $10}') sleep 1 NEW_IN=$(cat /proc/net/dev | awk '/eth0/{print $2}') NEW_OUT=$(cat /proc/n

2020-06-14 10:22:46 152

原创 nginx日志分析脚本

nginx日志分析访问最多的IP访问最多的页面 CC攻击访问页面状态码数量根据时间段来访问最多的IP#统计某列IP数量 awk '{a[$1]++}END{for(v in a)print v, a[v]}' /usr/local/nginx/logs/access.log#!/bin/bashLOG_FILE=$1echo "统计访问最多的10个IP"awk '{a[$1]++}END{print "UV:", length(a);for(v in a)pri

2020-06-14 10:22:16 150

原创 mysql数据备份脚本

mysql数据备份分库 分表#-s 去掉边框mysql -uroot -p密码 -s -e "show databases;"#排除所有的系统库mysql -uroot -p密码 -s -e "show databases;" | egrep -v "infor|perfor|sys|mysql"分库备份#!/bin/bashDATE=$(date +%F_%H-%M-%S)HOST=localhostUSER=backupPASS=密码BACKUP_DIR=/data/db_

2020-06-14 10:21:45 168

原创 LNMP脚本

LNMP搭建#!bin/bashNGINX_V=1.15.6PHP_V=5.6.36TMP_DIR=/tmpINSTALL_DIR=/usr/localPWD_C=$PWDechoecho -e "/tMenu\n0"echo -e "1. Install Nginx"echo -e "2. Install PHP"echo -e "3. Install MySQL"echo -e "4. Deploy LNMP"echo -e "9. Quit"function co

2020-06-14 10:21:11 135

原创 服务器系统配置初始化脚本

### 一、服务器系统配置初始化背景:新购买的10台服务器并已安装Linux操作需求:​ 1) 设置时区并同步时间​ 2) 禁用seLinux​ 3) 清空防火墙默认策略​ 4) 历史命令显示操作时间​ 5) 禁止root远程登录​ 6) 禁止定时任务发送邮件​ 7) 设置最大打开文件数​ 8) 减少Swap使用​ 9) 系..

2020-06-14 10:20:35 323

转载 unique_lock和lock_guard

互斥锁保证了线程间的同步,但是却将并行操作变成了串行操作,这对性能有很大的影响,所以我们要尽可能的减小锁定的区域,也就是使用细粒度锁。这一点lock_guard做的不好,不够灵活,lock_guard只能保证在析构的时候执行解锁操作,lock_guard本身并没有提供加锁和解锁的接口,但是有些时候会有这种需求。看下面的例子。class LogFile { std::mutex _mu;...

2020-03-17 10:09:09 354

转载 condition_variable详解

互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候,另一个线程不能取,反之亦然。用互斥锁实现如下:#include <iostream>...

2020-03-17 09:52:01 819

转载 右值引用、移动语义和完美转发

c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。左值、右值C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能...

2020-03-17 08:42:05 121

原创 开放封闭原则

什么时开放封闭原则?什么是依赖倒置原则?什么是高类聚低耦合原则?前言​ 一国两制: 小平同志在香港回归问题上提出了一国两制,独到之处是? 大陆的社会这一制度不能修改,而港澳的资本主义也根深蒂固,强行修改也不合理。这种不可修改(香港的资本主义修改成社会主义),但是可以扩展的思想。 ——开...

2020-03-16 10:34:11 194

原创 ssh

一、SSH口令登录方式1、 客户端 -- > 服务端发起ssh请求2、 服务端收到请求, 发送 公钥 -- > 客户端3、 客户端将用户名和密码用公钥加密 -- > 服务端 服务端根据私钥解密和本地用户名密码对比,成功,允许登录二、使用密钥登录三、ssh登录端口设置配置文件: /etc/ssh/sshd_config#Port 22#LIste...

2020-03-15 20:12:50 98

原创 软件安装

Linux软件安装一、源码包需要用户下载源码包,进行编译安装,比较耗时二、二进制包源码包经过成功编译之后产生的包,在发布之前已经编译好了,安装速度快。主流包管理系统 RPM :功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。三、yum安装RPM 和 源码安装需要手...

2020-03-15 20:07:19 190

原创 shell常用命令

一、cut-b :以字节为单位进行分割。-c :以字符为单位进行分割。-d :自定义分隔符,默认为制表符。-f :与-d一起使用,指定显示哪个区域。field 字段eg: $ who root pts/0 2020-03-12 21:00 (124.114.237.101) root pts/1 2020-03-12 21:18 ...

2020-03-15 20:05:42 170

原创 linux下/etc目录下常用文件

一、/etc/passwdLinux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。mysql:x:996:1001::/home/mysql:/bin/bash用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell1、真正的密码保存在/etc/shadow中2、默认...

2020-03-15 20:00:59 2657

翻译 TCP的time_wait和close_wait

TIME_WAIT 和 CLOSE_WAIT分析和解决方法1、查看当前time_wait和close_wait数的命令netstat -an2、会显示如下信息:TIME_WAIT(主动关闭) 、CLOSE_WAIT(被动关闭) 、FIN_WAIT1 、ESTABLISHED(正在通信) 、SYN_RECV 、LAST_ACK3、服务器出现异常最长出现的状况是:服务器保持了大量的...

2020-03-15 16:24:23 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除