自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 开启MySQL远程访问权限 允许远程连接

from https://www.cnblogs.com/weifeng1463/p/7941625.html1、登陆mysql数据库 mysql -u root -p查看user表mysql> use mysql;Database changedmysql> select host,user,password from user;+--------------+-...

2018-12-14 22:44:04 327

转载 Docker 入门教程

转帖源地址: https://baijiahao.baidu.com/s?id=1591887487395526427&wfr=spider&for=pc作者:清华小哥说读书百家号02-0910:12侵删仅供自己学习记录2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里...

2018-10-12 14:56:56 242

原创 Docker学习笔记(二)使用容器部署一个Web应用

Docker中容器和镜像的概念镜像和容器类比于面向对象编程中的类和对象的概念下面这个例子是从网上下载一个 ubuntu:15.10的镜像(类), 然后使用该镜像在本地运行了一个容器(该类生成的实例), 这里的容器就相当于一个精简的ubuntu系统,我们在这个ubuntu系统里运行了命令/bin/echo "Hello world"一个例子runoob@runoob:~$ docker ...

2018-10-11 16:24:26 1740

原创 Docker学习笔记(一) Docker下载与安装

Docker在Centos7下的安装步骤参照菜鸟教程首先检查一下内核版本是否是3.1及以上[root@bogon ~]# uname -r3.10.0-693.21.1.el7.x86_64安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息(这里使用的是阿...

2018-10-11 15:05:30 445

转载 https 建立连接过程

思考问题的顺序学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什么优点,又有什么缺点?为什么网站有的用http,有的用https?如果不能很好的回答,就往下看吧。http通信存在的问题容易被监听http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的 ...

2018-09-08 08:39:15 228

原创 解决方案:Linux 下使用clone()函数 ,编译后出现CLONE_VM未定义的错误

在使用clone函数时,需要在代码的开始(顶部)处引入一个宏和头文件,如下#define _GNU_SOURCE /*注意摆放位置*/ #include <sched.h> /*注意摆放位置*/ #include<sys/types.h>#include<sys/syscall.h>#include<unistd.h...

2018-08-30 13:19:35 5263 1

原创 类型萃取,这里又遇到了Typename的问题..

类型萃取用到的特性 1.模版的特化 2.在不同的特化版本中,将两个结构体 False和True 都typedef成了_IsPODType/使用TypeTraits<T>::_IsPODType 不同版本的特化就会取到False版本的或者True版本的结构体注意的一点是 在模版中使用 :: 作用域限定符时,如果::后面是一个自定义类型名,一定要 在前面加上typenam...

2018-08-26 21:40:54 182

原创 Linux 下 使用 scp 进行远程拷贝

从本机拷贝到云服务器上[waykwin@localhost ~]$ scp -r 源目录 用户名@IP地址:目地目录之后提示输入云服务器用户密码

2018-08-21 11:26:14 163

转载 关于set_new_handler的理解

原文出处:https://blog.csdn.net/qq_14982047/article/details/50732568问题背景  在阅读侯杰的《STL源码剖析》的时候,在书中的p45页遇到一段代码,书中并没有给予详细的解释,查阅资料发现网上的解释并不是那么尽如人意,在查阅了《effective C++》这本书之后,总结写出了这篇博客。书中的“问题代码”:template&l...

2018-07-02 19:08:53 2823 1

转载 HTTP无状态协议和Connection:Keep-Alive容易犯的误区

名词解释: HTTP无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系 如果你要实现一个购物车,需要借助于Cookie或Session或服务器端API(如NSAPI and ISAPI)记录这些信息,请求服务器结算页面时同时将这些信息提交到服务器 当你登录到一个网站时,你的登录状态也...

2018-07-01 12:24:39 1544

原创 数据库查询一些小练习和注意事项

表一 student表结构mariadb root@localhost:bit_student> desc student -> ;+---------+-------------+------+-----+---------+----------------+| Field | Type ...

2018-06-30 16:51:07 305

原创 Centos 安装 mysql命令行补全和语法高亮工具 mycli

mysql自带的命令行没有补全功能, 而且没有语法高,用起来很不方便github上的开源地址: https://github.com/dbcli/mycli首先安装pip$ sudo yum install python-pip然后安装myclisudo pip install mycli软件示意图 有没有vim 中You complete me的感觉, 感...

2018-06-30 14:27:44 1366

原创 [LinuxServerCode] 对于Epoll et+多线程下ONESHOT字段的作用

可以看出ONESHOT的作用就是在任意时刻,一个socket只能由一个线程处理

2018-06-23 10:49:26 661

原创 记录一次解题过程,矩阵中的路径

题目请设计一个函数,用来推断在一个矩阵中是否存在一条包括某字符串全部字符的路径。路径能够从矩阵中随意一格開始。每一步能够在矩阵中间向左、右、上、下移动一格。假设一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。如下比如在以下的3*4的矩阵中包括一条字符串”bcced”的路径。但矩阵中不包括字符串“abcb”的路径,因为字符串的第一个字符b占领了矩阵中的第一行第二格子之后...

2018-06-18 21:50:14 225

原创 [LinuxServerCodes] 网络聊天室使用共享内存和多进程处理(服务器端)

使用了统一事件源管理 信号和IO 详细实现请见注释 特点: 多个进程共享同一个内存进行读写,效率快, 而且往不同区域写入是通过客户端下标 1, 2, 3 控制的(没有覆盖问题) 而且读数据不会破坏数据(没有竟态条件) 所以此临界区不需要加锁,效率高#include <sys/socket.h>#include <netinet/in.h>#include ...

2018-06-18 12:51:57 371

原创 [LiunxServerCodes]定时器的总结

定时器服务器需要定时的监测不活跃的客户端并且将其关闭SIGALRM信号我们可以使用SIGALRM信号作为检测周期,例如我们注册一个5秒的alarm信号alarm(5);那么每过5秒,就会触发信号,并且我们可以使用sigaction注册该信号,然后通过回调函数处理掉不活跃的文件描述符void sig_handler( int sig ){ int sav...

2018-06-16 21:08:43 194

转载 一些IO函数在阻塞和非阻塞方式下返回值的区别

recv:阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况 下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会...

2018-06-15 18:38:01 847

原创 C++ typedef typename 作用

出处 https://blog.csdn.net/zhangxiao93/article/details/50569924C++ typedef typename 作用C++的一些语法让人看着费解,其中就有:typedef typename std::vector<T>::size_type size_type;详见《C++ Primer》(第五版)P584 ...

2018-06-14 09:47:57 235

转载 B+Tree/Hash_Map/STL Map三种数据结构性能

Hash操作能根据散列值直接定位数据的存储地址,设计良好的hash表能在常数级时间下找到需要的数据,但是更适合于内存中的查找。B+树是一种是一种树状的数据结构,适合做索引,对磁盘数据来说,索引查找是比较高效的STL_Map的内部实现是一颗红黑树,但是只是一颗在内存中建立二叉树树,不能用于磁盘操作,而其内存查找性能也比不上Hash查找。因此对于内存中数据,查找性能较好的数据结构是Hash...

2018-06-10 15:49:51 724

原创 Linux网络编程的惊群问题

什么是惊群在网络编程中,使用多进程/线程 等待同一个sock事件,当一个sock时间到来时,会唤醒所有进程,但是只有一个进程会获得sock处理权,那么其他进程又会继续被阻塞,这样在进程状态切换上会造成性能损失. linux内核2.6以后已经修复 accept 和select惊群问题,epoll由于内核无法判断该由哪个进程去相应事件,所以不予处理 但是在Nginx中,使用互斥锁来解决epo...

2018-06-09 09:59:33 247

原创 c++ 中为什么复制构造函数的形参必须是一个引用

class myclass//一个简单的类{};myclass a 这样通过myclass 的构造函数创建了一个myclass的对象, 同样样在函数传参的时候void fun(myclass a)参数a也必须调用myclass的构造函数来生成对象,那么在一个类的拷贝构造函数中写出了这样形式class myclass{ myclass(myclass ...

2018-06-03 16:09:13 1051

转载 Linux进程、线程模型,LWP,pthread_self()

文章出处: https://blog.csdn.net/tianyue168/article/details/7403693/ 一.定义关于进程、轻量级进程、线程、用户线程、内核线程的定义,这个很容易找到,但是看完之后你可以说你懂了,但实际上你真的明白了么?在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线...

2018-06-02 20:09:54 544

转载 fork,vfork,clone与pthread_create之间的区别

进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块、虚存空间、文件系统,文件I/O、信号处理函数。所以创建一个进程的过程就是这些数据对象的创建过程。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:p...

2018-06-02 11:06:48 1680

原创 github 无法push pull fetch 的问题

gitpush的时候出现 ssh_exchange_identification: Connection closed by remote host fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository ex...

2018-06-01 21:28:45 1669

原创 一道关于fork的面试题

#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t pid1; pid_t pid2; pid1 = fork(); pid2 = fork(); printf("pid1:%d, pid2:%d\n", p...

2018-06-01 12:10:29 689 2

原创 [图解tcp/ip读书笔记] 网络层(二)

4.4路由控制路由表 1. 静态手工配置 2. 动态路由协议4.4.1 IP地址与路由控制最长匹配原则ip地址:172.20.100.52 下一跳地址 127.20/16 / 127.20.100/24 选择最长匹配,后一个进行转发 #### 路由表不转发地址 下一跳地址是某个主机或者其路由器IP本身地址,表明在同一链路里.不转发 例如路由...

2018-05-31 23:23:27 1061

原创 海量数据的处理方案

1. 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP地址,1.内存足够,我们先计算一下所需的内存, 100G 约是237237 2^{37}字节,一个IPV4地址 恰好是一个拥有4个字节的整型, 237/4237/42^{37} /4 约是32GB 如果我们要用传统的方法排序查找,时间效率是o(n2)o(n2)o(n^2),而且需要32GB的...

2018-05-28 08:58:07 252

原创 [c语言实现]哈希表

我们在这篇博客 哈希表初探 已经初步了解了哈希表的作用,那么接下来就应该自己实现一下哈希表了.同样的,实现两种不同的解决哈希冲突的方案1,闭散列 2,哈希桶闭散列头文件#pragma once#include<stdio.h>//这个结构体表示哈希表中的一个元素//这个元素中同时包含了键值对typedef int KeyType;typedef ...

2018-05-24 09:20:06 2806

原创 初探神奇的哈希表

哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数...

2018-05-23 14:33:13 710

原创 ]

PDF 基础IO输入输出 笔记.notestatic:* 创建.h和.c 编译生成.o文件(makefile) 打包成静态库 查看静态库信息 编译时指定查找静态库位置只需要库(工具)和头文件 (类似:使用说明) 静态库粘贴代码,删除库也没事动态库 链接生成 动态库 注意动态库是使用gcc生成 -fpic 与地址位置无关 在共享内存空间内不指定特定位...

2018-05-20 15:48:16 158

原创 [C语言实现]实现二叉查找树基本操作(迭代版)

实现二叉查找树基本操作 在这篇博客我们已经记录了二叉查找树插入查找删除的思路,使用递归很容易实现,因为树的定义都是递归实现的,所以相对于递归,使用迭代完成上述操作就比较复杂了.插入的实现需要手动记录该节点的父节点,因为要将父节点的子树指向新节点 插入的节点是该父节点的左子树还是右子树,通过比较大小就可以确定void SearchTreeInsert_ByLooP(Searc...

2018-05-20 11:36:46 733

原创 [C语言实现]实现二叉查找树基本操作(递归版,图示)

定义二叉查找树是一种特殊的二叉树,它不仅是一颗二叉树,还满足如下性质 对于任何非叶子节点,他的左节点都小于它本身,而右节点都大于其本身. 它的左右子树也分别而二叉搜索树一般情况下,在这么一棵树中进行查找,它的时间复杂度是 longnlongnlongn 但是在最坏情况下,一棵树会退化成单链表,那么此时的查找时间复杂度就是 nnn实现头文件#pragma...

2018-05-20 11:13:24 3520 1

原创 [图解tcp/ip读书笔记] 数据链路层相关笔记

head 当初在学习网络时,总是处于一种”似懂非懂”的状态,对网络每层的功能和职责也是”懵懵懂懂” 最近无意之间发现了一本<图解TCP/IP>,在边看这本书的同时也将之前不清楚的知识又似乎融会贯通了起来,以下是对本书的笔记数据链路相关技术主机在同一种数据链路上进行通信网络种类共享介质指的是 多个网络公用一个信道 在任意一时刻只能有一对主机...

2018-05-15 23:20:47 189

原创 [图解tcp/ip读书笔记] 网络层(一)

网络层相关技术可以让不在统一数据链路上的主机通信4.1主机具有IP地址,但不进行路由转发的主机网络层的功能IP地址屏蔽数据链路层相关的帧的格式, 将标识主机的唯一形式变为:IP地址路由控制IP数据包依靠路由器转发, IP数据包从路由器A到路由器B,成为一跳 注意一跳内 在数据链路层可能进过了多次转发, 在一跳的范围内是依靠...

2018-05-15 23:18:35 299

原创 c注释转换为c++注释(初探 有限状态机思想)

问题描述将所有c风格的注释转换为c++风格,其中具体情况如下所示 转换前// 1.一般情况/* int i = 0; */// 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;// 3.匹配问题/*int i = 0;/*xxxxx*/// 4.多行注释问题/*int i=0;int j ...

2018-05-13 21:31:35 198

原创 二分查找的一些细节,考虑重复元素的前提下,拒绝死循环和未找到

基础版注意点都通过注释标出 缺陷: 查找的key 有重复元素会返回重复元素中的任意一个#include<stdio.h>int BinarySearch_1(int *a,int length, int key){ if( a == NULL || length <= 0 ) { return -1; } int...

2018-05-04 10:28:54 646

原创 当 printf 碰上 i++和 ++i ,输出的结果让我老阔疼

本文测试的环境是centos 7, 使用的编译器为 GCC#include<stdio.h>int main(){ int i = 5; printf("%d, %d, %d\n", i++,i,++i); return 0;}printf输出结果为 6,7,7 在查看了反汇编和 其他人相关博客后 得出如下结论 : 首先我们要明白 ...

2018-05-03 09:16:01 11210 6

原创 (c语言实现)二叉树的相关操作 (三) 通过遍历构建二叉树的两种类型

本文所指二叉树 皆为普通二叉树,下同二叉树的定义在介绍相关操作时,请记住一点, 二叉树构建核心思想是递归, typedef char treeNodeType;typedef struct _treeNode{ struct _treeNode* left; struct _treeNode* right; treeNodeType value;}...

2018-05-01 21:11:50 400

原创 啊哈算法关于快速排序法为什么一定要从右边开始的原因 (因为while循环的结束条件)

因为啊哈算法上基数选在左边 也就是6 最后循环结束要将6和 比它小的数 2 交换 这是从右边开始的循环 while(arr[j] >= temp && i < j){ j--;}我们一定要清楚循环终止条件 因为循环条件是 arr[j] >= temp 所以循环结束时 j肯定指向 小于基数 6的值 2上 所以从右边先走,最后肯定是j...

2018-04-30 18:38:51 1802

原创 (c语言实现)二叉树的相关操作 (二) 二叉树节点操作

本文所指二叉树 皆为普通二叉树,下同二叉树的定义在介绍相关操作时,请记住一点, 二叉树构建核心思想是递归, typedef char treeNodeType;typedef struct _treeNode{ struct _treeNode* left; struct _treeNode* right; treeNodeType value;}...

2018-04-30 11:28:58 1471

空空如也

空空如也

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

TA关注的人

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