自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 scp 免密拷贝

scp 免密拷贝假如A_Linux机器 用户aaa 要向B_Linux机器的bbb用户 scp, 然后需要这个过程免密。1.在A_Linux 上用aaa用户执行 ssh-keygen -trsa2.在A_Linux 上, vim /home/aaa/.ssh/id_rsa.pub 打开公钥。3.将在A_Linux 上的/home/aaa/.ssh/id_rsa.pub(公钥) 的内容拷贝到 B_Linux上的 /home/bbb/.ssh/authorized_keys中,没有这个文件, 就创建

2021-06-11 10:27:30 566

原创 STL 迭代器的操作分类

不同容器的迭代器,其功能强弱有所不同。容器的迭代器的功能强弱,决定了该容器是否支持 STL 中的某种算法。例如,排序算法需要通过随机访问迭代器来访问容器中的元素,因此有的容器就不支持排序算法。常用的迭代器按功能强弱分为输入、输出、正向、双向、随机访问五种,这里只介绍常用的三种。正向迭代器。假设 p 是一个正向迭代器,则 p 支持以下操作:++p,p++,*p。此外,两个正向迭代器可以互相赋值,还可以用==和!=运算符进行比较。双向迭代器。双向迭代器具有正向迭代器的全部功能。除此之外,若 p 是

2020-09-25 14:58:54 240

原创 STL的几种迭代器失效与解决方案

1.数组式容器对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator或者插入某个iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除或插入一个元素导致后面所有的元素会向前或向后移动一个位置。所以不能使用erase(iter++)的方式,还好erase,insert方法可以返回下一个有效的iterator。解决方法:通过erase方法的返回值来获取下一个有效的迭代器,如下例。在调用erase之前,

2020-09-25 14:47:36 636

原创 解决C++代码在VSCode中无法快速跳转的问题。

在做C++项目的时候, 发现在VSCODE里面的, 跳转很慢, 有时候还跳转失败。并且代码提示也不够友好。让人十分蛋疼。找了找解决方案。发现用GNU Global比较靠谱。下面是配置方法1.GNU Global下载地址:GNU Global(6.5以上):http://adoxa.altervista.org/global/2.在VS Code中安装插件C++ Intellisense(此插件需要GNU Global的支持)3.将下载的.GNU Global解压到C盘根目录4.配置系统pat

2020-08-21 11:48:04 17988 4

原创 Linux(centos上)为非root用户添加 sudo权限

1.创建新用户adduser [用户名]2.为新用户添加密码passwd [用户名]3.为新用户授权 需要root 用户新创建的用户并不能使用sudo命令,需要给他添加授权。chmod -v u+w /etc/sudoers4.修改sudoers文件vim /etc/sudoers在sudoers文件中找到如下位置并添加如下内容:[用户名] ALL=(ALL) ALL(如需新用户使用sudo时不用输密码,把最后一个ALL改为NOPASSWD:ALL即可)5.收回sud

2020-08-02 16:42:43 432

原创 bitmap算法思想

Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面可以大大节省。假设这样一个需求:在20亿个不重复的随机整数进行排序,并假设32位操作系统,4G内存先看占用内存在Java中,int占4字节,1字节=8位(1 byte = 8 bit)如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/1024/1024)≈7.45G如果按位存储就不一样了,20亿个

2020-08-01 15:56:52 294

原创 C++ STL的容器

1.顺序容器:vector:可变大小数组;deque:双端队列;list:双向链表;forward_list:单向链表;array:固定大小数组; c++11string:与vector相似的容器,但专门用于保存字符。2.关联容器按关键字有序保存元素:(底层实现为红黑树)map:关联数组;保存关键字-值对;set:关键字即值,即只保存关键字的容器;multimap:关键字可重复的map;multiset:关键字可重复的set;3.无序容器: c++11unordered_map:

2020-07-21 09:36:04 128

原创 C++ vector底层数据结构

vector其底层数据结构是数组,由于数组的特点,vector也具有以下特性:1、O(1)时间的快速访问;2、顺序存储,所以插入到非尾结点位置所需时间复杂度为O(n),删除也一样;3、扩容规则:当我们新建一个vector的时候,会首先分配给他一片连续的内存空间,如std::vector vec,当通过push_back向其中增加元素时,如果初始分配空间已满,就会引起vector扩容,其扩容规则在gcc下以2倍方式完成:首先重新申请一个2倍大的内存空间;然后将原空间的内容拷贝过来;最后将原空间

2020-07-17 10:00:01 3240

原创 C++ unordered_map实现方案,与hash冲突解决办法

unordered_map有点类似c++11之前的非标准库hash_map, c++11后, 加入了unordered_map, 可就用来代替之前的hash_map。今天来看看unordered_map的底层实现。END

2020-07-17 09:57:59 9346 3

原创 c++ 中的RAII

什么是RAII?先看看书面的解释:RAII技术被认为是C++中管理资源的最佳方法,进一步引申,使用RAII技术也可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。RAII是Resource Acquisition Is Initialization, 翻译过来就是“资源获取即初始化”,是不是比较难明白。 接着看。RAII是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访

2020-07-16 21:26:27 216

原创 单向链表上的环

单向链表上的环有如下三种情况:1:没有环2:头尾相接3:尾部next指向了中间任意节点一般的做法是采用快慢指针。 即初始快慢节点指针都指向head, pSnow = pSnow->next;pFast = pFast->next->next;当if(pSnow == pFast) 即表示有环代码实现如下:xx* pSnow = head;xx* pFast = head;while(pFast) {pSnow = pSnow->next;pFast

2020-07-14 19:00:51 202

原创 windows10下安装配置nodejs

nodejs下载win10安装msi版本安装完成可以修改默认的安装路径,一直Next直到安装完成。win+R打开输入cmd打开命令提示符,输入node -v或npm -v 查看版本号在安装路径下新建两个文件夹【node_global】及【node_cache】在cmd窗口中配置这两个文件夹8.设置环境变量,进入环境变量对话框,在【系统变量】下新建【NODE_PATH】,输入【D:\Program Files\nodejs\node_modules】在【Path】后面加上【D:\Pro.

2020-07-09 11:54:58 323

原创 Host ‘xxx‘ is not allowed to connect to this MySQL server

解决办法:命令行进入Mysql所在服务器中,执行下面三行语句:效果如图所示END

2020-07-06 14:40:58 149

原创 Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误

今天在电脑上安装了Mysql 8.0.11,然后又屁颠屁颠地安装了Navicat for MySQL,打开Navicat准备链接数据库的时候出现了如下提示:上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,解决问题方法有两种:方法1.升级navicat驱动;方法2.把mysql用户登录密码加密规则还原成mysql_native_password.

2020-07-06 14:21:17 215 1

原创 常用指令Linux

总核数 = 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数查看物理CPU个数cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep “cpu cores”| uniq查看逻辑CPU的个数cat /proc/cpuinfo| grep “processor”| wc -l查看CPU

2020-07-03 20:32:52 133

原创 浅谈KCP

什么是KCP?为什么要使用KCP?KCP是一个快速可靠协议。它主要的设计目的是为了解决在网络拥堵的情况下TCP协议网络速度慢的问题,增大网络传输速率,但相当于TCP而言,会相应的牺牲一部分带宽。kcp没有规定下层传输协议,一般用UDP作为下层传输协议。kcp层协议的数据包在UDP数据报文的基础上增加控制头。当用户数据很大,大于一个UDP包能承担的范围时(大于MSS),kcp会将用户数据分片存储在多个kcp包中。因此每个kcp包称为一个分片。我们先看一下网络协议的一些基本的概念,这对我们理解KCP有很大

2020-06-19 13:50:46 1418

原创 宝塔Linux

1.使用xshell 连接LINUX 注意使用Centos7.x系统2.安装宝塔yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh如果大家系统是centos7以下的大家还是乖乖使用宝塔5.9的安装脚本(Centos官方已宣布在2020年停止对Centos6的维护更新,推荐大家装系统直接安装centos7)yum

2020-06-17 10:27:32 638

原创 使用luastudio,调试 lua配置

本来打算用VSCODE + 插件的方式, 发现很难用, 果断弃坑了。打算使用luastudio1.安装 luastudio2.新建LUA工程, 类似VS 的.sln3.然后打开LUA工程文件夹。目标程序, 就是宿主程序。命令参数,就是宿主程序的相关启动参数工作目录, 就是宿主程序所在目录4.运行宿主程序5.附加宿主程序注意宿主程序要有对应的PDB文件。否则会失败。LUA...

2020-04-30 16:02:38 2079

原创 vs code C++ windows 10调试环境搭建

1.安装VSCODE2.安装c/c++ 插件3.安装MinGW, 并配置path环境变量《D:\mingw64\bin》, 目的是可以使用gcc g++编译代码4.新建一个cpp文件,写上以下测试代码写一点测试代码Ctrl+S保存,然后按F5,VSCode会在上方弹出选择环境,选择C++(GDB/LLDB)修改launch.json{// Use IntelliSense to l...

2020-04-29 16:50:54 217

原创 VS CODE nodejs 调试环境搭建

nodejs 是vscode就内置的调试语言, 似乎就不需要再安装作何插件, 就可以启动调试1.直接用vscode 打开工程目录文件夹, F5 选择环境:2.选择完成之后,生成一个.vscode文件夹,文件夹下有个launch.json文件。将【program】字段的值修改为自己程序的入口文件,开始调试时会从这个入口启动程序,我的程序的入口为server.js,修改如下:{// 使用 I...

2020-04-29 11:04:36 7399

原创 VS CODE下golang调试环境搭建

1.首先安装golang开发环境。这个不细说2.安装vs code3.安装go 插件chinese 和 go (rich go language support for visual studio code)4.下载使用vscode加载go语言扩展包后,需要下载go相关调试和开发的exe工具,国内因为墙的原因,经常失败国内因为墙的原因,经常失败, 可以通过其它国内网站下载, 更快一些。...

2020-04-29 10:46:43 493

原创 centos7真机默认最小安装,与相关网络配置

1、8G以上U盘2、UltraISO虚拟光驱(试用版即可)最新版 下载地址:https://cn.ultraiso.net/xiazai.html 点击下载试用3. CentOS-7-x86_64-DVD-1810.iso 镜像打开UltraISO的窗口后依次点击左上角的"文件"-“打开”浏览到存放镜像文件的目录,选中该目标文件,点击"打开"按钮然后再次回到UltraISO窗口,点...

2020-04-16 10:11:30 950

原创 golang GO111MODULE是用来干什么的?

再没有 GO111MODULE时, go编译程序的查找依赖的顺序 go path > goroot , 有了GO111MODULE后,会读取当前项目的go.mod.文件, 在go.mod文件中会记录有哪些依赖Go Modules 是 Go 语言的一种依赖管理方式,该 feature 是在 Go 1.11 版本中出现的,由于最近在做的项目中,团队都开始使用 go module 来替代以前的 ...

2020-04-02 15:18:56 7764

原创 国内go get下载速度慢的解决办法

1.建议go版本在1.13以上go version2.打开你的终端并执行go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct现在速度应该杠杠的!END

2020-03-31 19:50:19 1504 3

原创 nodejs http request错误码解析

“ETIMEDOUT”当客户端请求未设超时,同时服务端也没设超时或者超时大于Linux kernel默认的20-second TCP socket connect timeout情况下,则达到20秒没连接成功,则报出"ETIMEDOUT"错误,形如{“code”:“ETIMEDOUT”,“errno”:“ETIMEDOUT”,“syscall”:“connect”,“address”:“10.1...

2020-03-13 14:17:17 2500

原创 NodeJS,通过Express + multer 接受上传文件

SERVER code:“use strict”const ExpressLib = require(“express”);const Multer = require(“multer”);const Fs = require(“fs”);const ObjMulter = Multer({dest: ‘./dmp_files’});const ServerConfig = requi...

2020-03-11 14:39:53 338

原创 Http Header “Content-Type” 》》》 application/x-www-form-urlencoded 与 application/json的区别

通过POST方式提交数据到接口的时候,常常会遇到这种句子:webClient.Headers.Add(“Content-Type”, “application/json”);或者webClient.Headers.Add(“Content-Type”, “application/x-www-form-urlencoded”);那究竟应该用哪种方式?答案是跟我们提交的参数格式有关。如果是...

2020-02-28 10:19:02 6299

原创 centos7 解决终端无任何操作过段时间后,再无法ssh

导致这个问题主要是因为linux 的自动休眠功能未关闭。 当系统自检长时间没什么操作后, 连网卡都会被休眠掉, 所以导致无再SSH, PING也无法PING通, 好像每次都要重启CentOs后, 才能用终端进行SSH。解决方案:进入系统,etc 下多出了 x11 文件夹,新增 xorg.conf 文件,关闭自动休眠vim /etc/X11/xorg.conf添加文本内容Section “...

2020-02-28 10:08:21 2117 1

原创 golang中是怎么捕获异常的?

go没有php java nodejs python的try catch让我这个写习惯了try的人怎么办…和异常捕获有关的几个内置函数defer 析构,函数结束时候调用panic 抛出致命错误,同throwrecover 恢复,go语言中的defer就像c++中的析构函数,但是go语言中defer的对象是函数(或者对象的方法),defer能保证在函数结束最后执行该方法(函数),但是有例...

2020-02-26 13:49:19 1179 1

原创 websocket断开连接 代码解析

WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。ws.onclose = function (e) {console.log('websocket 断开: ’ + e.code + ’ ’ + e.reason + ’ ’ + e.wasClean)console.log(e)}错误状态码:WebSocket断开时,会触发CloseEvent, Cl...

2020-02-24 14:37:50 2443

原创 google proto2与proto3的区别总结

总结:proto3比proto2支持的语言更多,语法更简洁。去掉了复杂的语法和特性,更强调约定而弱化语法。1.在第一回非空白非注释行,写明语法:syntax = “proto3”;2.字段规则移除了"required",所有非repeated的字段都默认为optional(可选的)在proto2中required也是不推荐使用的。proto3直接从语法层面移除了required规则。3....

2019-12-28 10:39:47 1025

原创 CentOS安装 nodeJs并配置环境变量

<1>进入安装目录: cd /opt<2>下载安装包:wget https://npm.taobao.org/mirrors/node/v12.14.0/node-v12.14.0-linux-x64.tar.xz<3>解压缩安装包:tar -xvf node-v12.14.0-linux-x64.tar.xz<4>重命名安装包:mv no...

2019-12-25 19:22:51 1950 4

原创 nodeJs,同步与异步读取文件,事件原理分析

//阻塞读取文件var fs = require(“fs”);var data = fs.readFileSync(‘input.txt’);console.log(data.toString());console.log(“end!”);//非阻塞读取文件//Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。//Node.js 单线程类似进入一个while(tru...

2019-12-16 11:22:29 535

原创 常用字符集简介

字符集在计算机系统中,所有的数据都以二进制存储,所有的运算也以二进制表示,人类语言和符号也需要转化成二进制的形式,才能存储在计算机中,于是需要有一个从人类语言到二进制编码的映射表。这个映射表就叫做字符集。ASCII最早的字符集叫 American Standard Code for Information Interchange(美国信息交换标准代码),简称 ASCII,由 American...

2019-12-12 15:14:20 286

原创 HTTP status

一、HTTP 超文本传输协议复制代码HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。一个HTTP "客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。一个HTTP "服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务...

2019-12-12 10:19:19 340

原创 svn的tag和branch

一:使用场景:假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发、测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时候,突然接到用户或测试人员的反馈,项目中有个重大bug需要紧急修复,并且要求bug修复后要立即上线;此时应该怎么修复bug呢?是在当前已经开发新需求的基础上进行修复吗?答案是否定的,原因是:如果是...

2019-12-12 09:58:21 204

原创 TCP UDP保序问题分析

tcp 保序原理 建立连接后,就不会在动态路由,会使用一开始的固定路由,消息总是按序到达udp 不保序的缺点,没有连接,每次都会动态选择路由,所有可能会出现后发的消息先到client发生数据A,B给server,使用的TCP传输,client发送毫无疑问是先发送A,然后发送B,但是有些搞网络的同学可能会有这个疑问,A跟B在物理层走的链路不一样,传输速度不一样,B是会比A先到达Server,这个...

2019-12-11 16:08:47 1243

原创 位操作相关算法

异或法:可以完成对整型变量的交换。交换a, b的值:a = a^b;b = a^b;a = a^b;不使用±运算符计算a + b的值递归法:function add(a, b) {let tmp = a ^ b;let tmp1 = (a & b) << 1;if(tmp1 == 0) {return tmp;}else {return test_ad...

2019-12-11 16:04:44 79

原创 JWT(JSON Web Token)

什么是JWT?JWT全称JSON Web Token是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。{“typ”:“JWT”,“alg”:“HS256”}在头...

2019-12-10 13:32:07 297

原创 ASCII码表 256位

ASCII中的031为控制字符;32126为打印字符;127为Delete(删除)命令.ASCII扩展字符——(为了适应更多字符)128255,或者-128-1,其中,-128对应128,依次递增对应END...

2019-12-09 20:37:32 3669

空空如也

空空如也

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

TA关注的人

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