自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据库

1 关于数据库2 MySQL的安装与初始化2.1 Linux下的软件安装方式2.1.1 源码包2.1.2 二进制包(rpm)2.1.3 yum2.2 安装MySQL2.2.1MySQL初始化2.2.2 MySQL的启动控制2.2.3 默认目录/文件位置3 MySQL的基本操作3.1 库操作3.2 表操作3.3 记录/字段操作3.3.1 增加记录3.3.2 查询记录3.3.3 更新记录3.3.4 删除记录3.3.5备份与还原3.3.5.1 备份(导出)3.3.5.2 还

2022-04-30 22:39:58 393 1

原创 Shell

Shell1 什么是shell2 shell入门2.1 编写规范1 什么是shellshell(外壳)是一个用C语言编写的程序,它是用户适用Linux是桥梁。shell既是一种命令语言,又是一种程序设计语言。shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。使用shell进行程序开发的效率非常高,在Linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux默认的shell是/bin/bash,流行的

2022-04-18 18:33:54 1128

原创 Linux网络相关命令

Linux网络相关命令1 ping2 netstat3 tranceroute4 ARP5 tcpdump1 ping作用:检测当前主机与目标主机之间的连通性(不是100%准确,有的服务器禁ping)语法:#ping 主机地址(IP地址、主机名、域名等)该命令可以跨平台,Windows下也可以使用,语法一致。(区别在于Linux下默认一直发送,Windows下默认发送4个数据包)2 netstat作用:表示查看网络的链接信息语法:(1) #netstat -tnlp-t:TCP协议

2022-04-17 21:55:48 3841

原创 Linux的权限管理操作

Linux的权限管理Linux的权限操作与用户、用户组是兄弟操作。

2022-04-13 13:16:20 5317 2

原创 Linux自有服务(2)

自有服务,即不需要用户独立去安装的软件的服务,而是系统安装好只有可以直接使用的服务(内置)。

2022-04-12 18:48:20 854

原创 Linux自有服务(1)

Linux自有服务1. 运行级别1.1 centos 6.x1.2 centos 7.x自有服务,即不需要用户独立去安装的软件的服务,而是系统安装好只有可以直接使用的服务(内置)。

2022-04-09 13:21:14 1292

原创 Linux实用功能和扩展

Linux实用功能和扩展1 代码着色2 vim中计算器的使用3 vim的配置4 异常退出5 别名机制6 退出方式1 代码着色显示着色:“:syntax on”关闭着色:“:syntax off”2 vim中计算器的使用可以在不退出vim编辑器的情况下,使用vim自身集成的计算器:(1) 进入编辑模型;(2) 按下按键“Ctrl + R”,然后输入“=”,此时光标会变成最后一行;(3) 输入需要计算的内容,按下回车。3 vim的配置vim是一款编辑器,编辑器也是有配置文件的。vim配置

2022-04-07 12:03:55 753

原创 vim的三种模式

vim的三种模式vim中的三种模式:(1) 命令模式;(2) 编辑模式(输入模式);(3) 末行模式(尾行模式)。命令模式:在该模式下不能对文件直接进行编辑,但可以使用一些快捷键岁文件进行操作(删除行、复制行、移动光标、粘贴等)【打开时候默认进入的模式】;编辑模式:在该模式下可以对文件内容进行编辑;末行模式:...

2022-04-07 10:33:06 18453

原创 Linux高级指令

Linux高级指令

2022-04-05 12:08:04 1080

原创 Linux进阶命令

Linux进阶命令

2022-04-04 17:13:30 962 1

原创 Linux基础命令

ls命令列出当前工作目录下的所有文件/文件夹的名称#ls列出指定工作目录下的所有文件/文件夹的名称#ls 路径列出指定工作目录下的所有文件/文件夹的名称,并以指定的格式进行显示。#ls -l 路径(表示以详细列表的形式进行展示)#ls -la 路径(表示显示所有的文件/文件夹,包含隐藏文件)图中第一列字符表示文档类型,-表示文件,d表示文件夹。4. 列出指定工作目录下的所有文件/文件夹的名称,以列表的形式并以在显示文档大小的时候以可读性较高的形式显示。#ls -lh

2022-04-03 23:05:51 768 1

原创 Linux系统的文件目录结构

Linux系统的文件目录结构Linux一切皆文件Bin:全称binary,该目录存放的是可执行的二进制文件。Sbin:全称super binary,该目录存放的也时可执行的二进制文件,但必须有super权限的用户才能执行。Dev:该目录中主要存放的是外接设备,如U盘、其他的光盘等,在其中的外接设备是不能直接被使用的,需要挂载(类似Windows下的分配盘符)。Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。Etc:该目录主要存储一些配置文件。Home:表示除了root用户之外其他用

2022-04-03 16:11:14 1200

转载 中间人攻击

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方 直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻 击中,攻击者可以拦截通讯双方的通话并插入新的内容。中间人攻击是一个(缺乏)相互认证的攻击。大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信 任的数字证书认证机构颁发,并且

2021-05-19 14:04:46 786

转载 linux查看服务器负载和资源占用情况,以及性能监控

1.查看磁盘Linux磁盘管理常用三个命令为df、du和fdisk。df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。df [-ahikHTm] [目录或文件名]选项与参数:-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k :以 KBytes 的容量显示各文件系统;-m :以 MBytes 的容量显示各文件系统;

2021-05-14 14:40:15 14447

转载 消息队列

如何保证消息不丢失?如何处理重复消息?如何保证消息的有效性?如何处理消息堆积?消息队列什么是消息队列为什么需要消息队列异步处理服务解耦流量控制消息队列的两种模型队列模型发布/订阅模型小结生产者消费者模型如何保证消息不丢失生产消息存储消息消费消息小结如何处理重复消息几个常用的实现幂等的套路如何保证消息的有序性全局有序部分有序如何处理消息堆积什么是消息队列消息队列就是进程之间或者线程之间用来通信的一个队列组件,也就是我们常说的消息中间件,但是它的存在并不仅仅只是为了解决通信的问题。为什么需要消.

2021-05-14 12:28:23 176

转载 UDP解决丢包问题总结

收包率低/丢包率高的原因分析1 缓存太小,不能及时接收数据。连续多个UDP包超过了UDP接收缓冲区大小 ,比如:如:UDP包过大如:UDP发包速率过快,突发大数据流量超过了缓冲区上限2 recvfrom()接收到数据之后处理速度太慢如果数据接收和处理是连续进行的,那么可能由于数据处理过慢,两次recvfrom调用的时间间隔里发过来的包丢失。对应的解决方法1 UDP包过大解决方法:增加系统发送或接收缓冲区大小int nBuf=32*1024;//设置为32K setsockopt(s,

2021-05-14 10:09:41 9030

原创 HTTP请求流程

HTTP协议是建立在TCP连接基础之上的。HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议。浏览器端发起 HTTP 请求流程浏览器输入网址:http://time.geekbang.org/index.html,之后会完成什么步骤呢?1、构建请求首先,浏览器构建请求行信息,构建好后,浏览器准备发起网络请求。GET

2021-05-14 09:48:11 5369

转载 select、poll、epoll 区别总结

select、poll、epoll 区别总结1、支持一个进程所能打开的最大连接数select:单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64位机器上FD_SETSIZE为3264),当然我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响,这需要进一步的测试。poll:poll本质上和select没有区别,但是它没有最大连接数的限制,原因是它是基于链表来存储的。epoll:虽然连接数有上限,但是很大,1G内存的

2021-05-12 17:32:42 821

转载 分布式锁

随着业务发展、微服务化,一个应用需要部署到多台服务器上然后做负载均衡,由于分布式系统多线程、多进程并且分布在不同的机器上,这将原来的单机部署情况下的并发控制锁策略失效。分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。分布式锁应该具备哪些条件互斥性:任意时刻,只有一个客户端能持有锁;高可用、高性能的获取锁与释放锁:加锁和解锁需要开销尽可能低,同时要保证高可用,避免分布式锁失效。

2021-05-12 15:31:52 166

转载 Linux 网络命令必知必会之 tcpdump

tcpdump简介简介

2021-05-11 23:12:17 644

转载 TCP连接

TCP 的三次握手假设 A 为客户端,B 为服务器端。首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。B 收到 A 的确认后,连接建立。三次握手的原因第三次握手是为了防止失效

2021-05-06 11:38:39 888

转载 HTTP-服务器端CooKie与浏览器端Cookie

服务器端的发送与解析发送cookie服务器端向客户端发送Cookie是通过HTTP响应报文实现的,在Set-Cookie中设置需要像客户端发送的cookie,cookie格式如下:Set-Cookie: “name=value;domain=.domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure”其中name=value是必选项,其它都是可选项。Cookie的主要构成如下:name:一个唯一确定的cook

2021-04-30 11:40:25 575

转载 Cookie由谁设置、怎么设置、有什么内容?

Cookie是保存在客户端的多组记录,在客户端以文件的形式存在。在与服务通信时,Cookie中通常会被要求保存会话的Session ID等信息,以用于识别客户端。服务器通过response响应头的set-Cookie字段来让客户端在本地Cookie中记录信息,下面是一个示例:[HTTP/1.1 200 OK]Server:[bfe/1.0.8.18]Etag:["58860415-98b"]Cache-Control:[private, no-cache, no-store, proxy-reval

2021-04-30 00:21:44 461

转载 cookie和session

CookieCookie是网页浏览器用来保存用户信息的文件,可以保存比如用户是谁,购物车有哪些商品等。HTTP协议是无状态的协议,就是说网页一关闭,浏览器和服务端的连接就会断开,下次打开网页又要重新连接,服务器无法从你一打开的连接上恢复上一次的会话,服务器不知道是你又回来了。流程:访问浏览器的时候,浏览器会发送一个HTTP请求到服务器端;服务器会发送一个HTTP响应到客户端,其中包括Set-Cookie,意思就是浏览器建立一个cookie保存服务器指定的内容,比如用户信息和用户操作信息;

2021-04-30 00:17:18 167

转载 进程内存加载过程

在进程创建的过程中,程序内容被映射到进程的虚拟内存空间,为了让一个很大的程序在有限的物理内存空间运行,我们可以把这个程序的开始部分先加载到物理内存空间运行,因为操作系统处理的是进程的虚拟地址,如果在进行虚拟到物理地址的转换工程中,发现物理地址不存在时,这个时候就会发生缺页异常(nopage),接着操作系统就会把磁盘上还没有加载到内存中的数据加载到物理内存中,对应的进程页表进行更新。也许你会问,如果此时物理内存满了,操作系统将如何处理?可以使用页面置换算法,如LRU(最近最少使用)。...

2021-04-28 09:03:37 407

转载 C++11多线程:thread头文件

std:thread1. std::thread(class)线程构造(constructor)joinable线程状态operator=joindetachget_idnative_handleswaphardware_concurrency2. std::this_thread(namespace)get_idsleep_forsleep_untilyield#include头文件中主要包含两个内容:std:thread类和std:this_thread命名空间。1. std::thread(cla

2021-04-26 17:01:55 1880

转载 C++多线程中的join, detach, joinable

thread是C++11中提供多线程编程的模块,使用的时候需要包含<thread>头文件。首先我们先来看一下简单的hello world的多线程的代码在这里插入图片描述这个创建的方式就是以函数作为一个入口,创建了一个子线程,那么创建的语句就是第11行代码所示,所传入的参数就是入口的函数名。在创建了这个子线程之后,这个子线程就开始运行了,同时主线程也不停的往下运行,当碰到t.join()这句代码的时候,就表示主线程需要等待子线程运行结束回收掉子线程的资源后,再往下运行,否则就会产生一种情况

2021-04-26 16:02:18 304

转载 C++11线程中的几种锁

线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能与性能成反比。不过我们一般不使用递归锁(C++标准库提供了std::recursive_mutex),所以这里就不推荐了。互斥锁(Mutex)...

2021-04-26 13:29:59 7545

转载 对称加密和非对称加密

什么是对称加密技术?对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高对称加密算法在电子商务交易过程中存在几个问题:1、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施的

2021-04-23 11:42:27 312

转载 C++ 加锁的原则

规则1 多线程、进程并行访问共享资源时,一定要加锁保护说明:共享资源包括全局变量,静态变量,共享内存,文件等。 建议封装像智能指针一样的对象对锁进行管理,比如我们就封装了一个auto_lock,在构造时申请 锁,析构中释放锁,保证不会忘记“解锁”。如果锁的作用范围有限,则可以这样: do { auto_lock lock(&lock); //… }while(0);规则2 锁的职责单一说明:每个锁只锁一个唯一共享资源;这样,才能保证锁应用的单一,也能更好的确保加锁的范围尽 量小。

2021-04-23 08:42:06 2525

转载 c++内存泄漏和内存碎片

内存泄漏一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该 内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。对于C和C++这种没有Garbage Collection 的语言来讲,我们主要关注两种类型的内存泄漏:堆内存泄漏(Heap leak):对内存指的

2021-04-22 19:24:02 564

转载 Git和SVN

简单总结:GIT是分布式的,而SVN是集中式的GIT把内容按元数据方式存储,而SVN是按文件:因为git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。GIT分支和SVN的分支不同:svn会发生分支遗漏的情况,而git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。GIT没有一个全局的版本号,而SVN有GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完

2021-04-22 16:22:21 611

转载 git管理项目

git项目管理创建Git仓库获取Git仓库git配置全局变量git使用步骤多人协作把文件添加到版本库项目管理版本回退撤销修改保存工作现场码云的使用git常用命令总结git 相关概念的理解创建Git仓库版本库又叫仓库(repository),这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除都能被跟踪。在项目开始前或者项目进行中都可以进行Git仓库的创建,首先进入项目的根目录,然后运行$ git initInitialized empty Git repository in C:/De

2021-04-22 12:56:04 374

转载 使用VSCode和CMake构建跨平台的C/C++开发环境

开发流程开发工具MinGWCMakemakemakefilescmakeCMake生成makefile的原理编写CMakeLists.txt文件是重点开发流程编写调试C/C++程序开发工具MinGWMinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自

2021-04-17 18:50:25 1315

转载 GDB(调试工具)

什么是GDBGDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)当程序被停住时,可以检查此时你的程序中所发生的事。动态的改变你程序的执行环境。GDB调试的对象GDB主要来调试C/C++语言写的程序,当然也就可以调试其他语言程序。GDB调试一定要是可执行文件而不是.c文件。要用gcc

2021-04-09 15:20:04 2397

转载 get 和 post

从标准上来看,GET 和 POST 的区别如下:GET 用于获取信息,是无副作用的,是幂等的,且可缓存POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存分类GETPOST后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。书签可收藏为书签不可收藏为书签缓存能被缓存不能缓存编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencode

2021-04-09 11:05:15 79

转载 HTTPS通信过程

HTTPS协议是由HTTP和SSL/TLS一起合作完成的,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输。HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。HTTPS在传输的过程中会涉及到三个密钥:服务器端的公钥和私钥,用来进

2021-04-09 10:46:25 367

转载 Socket

TCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中应用层:TFTP,HTTP,SNMP,

2021-04-09 10:24:51 179

转载 C++的特性

C是面向过程的语言,是一个结构化的语言,考虑如何通过一个过程对输入进行处理得到输出;C++是面向对象的语言,主要特征是“封装、继承和多态”。封装隐藏了实现细节,使得代码模块化;派生类可以继承父类的数据和方法,扩展了已经存在的模块,实现了代码重用;多态则是“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用。C和C++动态管理内存的方法不一样,C是使用malloc/free,而C++除此之外还有new/delete关键字。C++支持函数重载,C不支持函数重载C++中有引用..

2021-04-08 10:52:49 2004

原创 内存对齐

内存对齐内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。对于内存对齐问题,主要存在于struct和union等复合结构在内存中的分布情况,许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们要求这些数据的首地址的值是某个数M(通常是4或8);对于内存对齐,主要是为了提高程序的性能,数据结构,特别是栈,应尽可能在自然边界上对齐,经过对齐后,cpu的内存访问速度大大提升。Windows中默认对齐数为8,Linux中默认对齐数为4;内存对齐的主要作

2021-03-29 21:31:10 1266

空空如也

空空如也

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

TA关注的人

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