- 博客(95)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Linux-Ubuntu下安装zsh+OhMyZsh+autojump
平常我们执行命令的shell基本上都是在bash下,也很少看到周围有人用其他的;今天无意间被身边的大佬秀了一波shell,所以特地自己也安装一波。真的是用一下就知道zsh有多方便了。多余的介绍就省了,直接一步步介绍这些插件的安装。先看一下安装zsh+OhMyZsh安装完的样子:而最后要安装的autojump则是可以不论你当前所处的目录在哪,你都可以直接快速的跳转到你想要去的目录中。...
2018-04-01 17:48:03
6725
原创 网络-HTTP不同版本之间的对比
不管在找实习还是找工作的时候,关于http协议以及延伸出的一些问题都会经常被问到。专门小结一下。首先介绍下HTTP/1.0和HTTP/1.1:1、HTTP/1.0:HTTP 协议老的标准是HTTP/1.0,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户...
2018-03-29 10:00:32
1130
原创 Linux-常用查看系统资源命令小结
mpstat:显示各个可用CPU的状态使用:-P 对应cpu编号例:suhw@ubuntu:~$ mpstat -P ALLLinux 4.13.0-37-generic (ubuntu) 2018年03月26日 _x86_64_ (2 CPU)23时02分41秒 CPU %usr %nice %sys %iowait ...
2018-03-27 09:06:40
787
原创 网络-TCP详解
一、TCP服务的特点传输层协议主要有两个:TCP协议和UDP协议。相对于UDP协议,TCP最主要的特点就是面向连接、字节流、和可靠传输。但是与UDP相比,TCP除了面向连接、字节流以外还有一些因为这些特性而带来的区别:1、TCP协议的连接是一对一的,所以基于广播和多播的应用程序不能使用TCP服务,而无连接协议UDP则非常适合广播和多播;2、由于TCP协议面向字节流服...
2018-03-18 12:40:40
563
原创 Linux-netstat命令小结
netstat命令在面试以及日常开发使用中都会经常出现,所以特地小结一波;首先要知道Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 ,连接,多播成员等等。 常见参数: -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字...
2018-03-16 14:37:04
714
原创 网络-数据链路层小结
数据链路的作用1、封装成帧:在每个网络层数据报经链路传送之前,几乎所有的链路协议都要将其用链路层帧封装起来;2、链路接入:媒体访问控制协议(MAC)协议规定了帧在链路上传输的规则;3、可靠交付:链路层保证无差错的经链路层移动每个网路层数据帧;4、差错检验和纠正5、流程可画为如下: MAC地址1、MAC地址用于识别数据链路中互连的节点;数...
2018-03-06 13:18:35
444
原创 网络-利用抓包工具理解TCP三次握手
在学习网络的过程中,总觉得知识都很抽象,只知道书上是这样讲的,但没有使用抓包工具来真正的看一下整个报文的内容;所以专门查询了资料,将过程梳理如下: WireShark简介(抓包工具):1、wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。2、wireshark是开源软件,可以放心使用。 可以运行在Windows...
2018-03-05 17:57:33
953
1
原创 mysql-select语句小结
首先先创建一个班学生的信息,并插入一些数据来解释用法:create table student( id int not null, name varchar(20) not null, chinese float(5,2) not null default 0.0, math float(5,2) not null default 0.0, englis...
2018-03-02 23:27:10
1336
3
原创 Linux-线程相关概念小结
线程是什么:在一个程序里的执行路线叫做线程;说的再通俗点:在我们程序中,一般情况下是由一个线程来完成所有的操作的,但是当有多个线程时,我们把众多的事分配给这些线程去做,在这期间,整个程序里的执行线路就会增加,与此同时,效率也会得到提升。 线程中有什么:每个线程中都包含有表示执行环境的所必须的信息,其中包括:表示线程的线程ID,一组寄存器,私有栈,调度优先级,信...
2018-03-02 10:06:29
199
原创 mysql-基础操作总结
至于mysql是什么,怎么下载,怎么登陆就不再多赘述了,直接将关于库和表的操作列出: 一、关于数据库的相关操作:1.1、创建一个默认属性的数据库:create database 库名;1.2、创建一个使用utf8字符集的数据库:create database 库名 charset = utf8;1.3、创建一个字符集为utf8,并带校验规则的数据库:...
2018-03-01 00:22:10
227
原创 STL-空间配置器分析(内存的配置和释放)
首先通过STL源码剖析中的一个插图有个初步的印象,接下来再详细解释。(由于是繁体,图中的记忆体也就是所谓的“内存池 ”)一级空间配置器: 对malloc,free函数的简单封装;添加了增加_malloc_alloc_oom_handle处理机制对malloc失败后的情况进行了处理;申请内存: 1、void* allocate(size_t n) :调用mall...
2018-02-03 10:17:23
480
1
原创 c++-思维导图梳理语法重点
以上为自己在学习完C++后总结的一些知识点,本来是xmind格式,里面包含一些自己总结的博客以及备注,如果想要原图的,可以留下邮箱我发原图。当然如果有发现错误,也可及时联系我
2018-02-01 17:56:01
3887
60
原创 数据结构-哈希表理解与实现
一、哈希表的简介 1、在我们C++11中的unordered_set/unordered_map以及unordered_multiset/unordered_multimap底层最主要的实现就是哈希表;而哈希表则是通过关键字(key)按照一定的规律映射到表中的位置。 2、最常用构造哈希表的方法: 直接定址法:将关键字通过某个线性函数,算出在表中对应的下标; 除
2018-01-23 18:07:59
1868
原创 数据结构-二叉树基础题目小结(遍历,求节点数目等等)
包含以下基本操作实现:前序中序后序遍历的递归非递归写法;给定序列构建二叉树;层序遍历;节点数目;叶子节点数目;数的高度;
2017-12-25 15:11:31
3012
原创 Linux-进程间通信(三、共享存储)
LINUX进程间通信一、匿名管道与命名管道二、消息队列三、共享存储共享存储概述: 共享存储允许两个或更多进程共享一给定的存储区。共享内存区是最快的IPC形式,一旦这样的内存映射到共享它的进程的 地址空间,这些进程间数据传递不再涉及到内核,也就是说进程不再需要切换到内核态来传递数据。所以比起消息队列一直在用户态和内核态的切换,共享存储更高效。...
2017-12-22 22:25:23
498
原创 Linux-进程间通信(二、消息队列)
LINUX进程间通信(一、命名管道与匿名管道)消息队列概述 消息队列是消息的链接表,存放在内核中并由消息队列标识符表示。主要涉及到msgget(),msgsnd(),msgrcv(),msgctl()四个函数,在具体使用时可将四个函数再次封装进行使用。消息队列特点: 1、由于是一个链接表,所以消息队列是一个全双工的通信方式,两端都可读可写; 2、对于...
2017-12-22 10:15:17
956
原创 Linux-进程间通信(一、匿名管道与命名管道)
LINUX进程间通信(二、消息队列) 匿名管道:头文件:#include<unistd.h>函数原型:int pipe(int fd[2]);返回值:成功返回0,失败返回错误代码注:fd:文件描述符数组,fd[0]代表读端,fd[1]代表写端 用法:单个进程中的管道几乎没有任何用处,通常,调用pipe的进程接着调用fork,从而创建了一个父进程与子进程之间的半双工的IPC通道。在当
2017-12-20 15:26:59
893
2
原创 数据结构-栈应用(中缀转后缀并计算结果)
关于中缀和后缀表达式基础概念自行百度。 对于中缀转后缀表达式并计算结果思路可归纳为以下: 1、将每个数据当做一个结构体,包含对应的类型以及数值; 2、对于给定的中缀表达式,转为结构体数组,进行后缀表达式的转换; 3、对于转换完成后的表达式进行计算,返回结果。一、如何将中缀表达式转换为后缀表达式:先给一个不涉及括号的中缀表达式,通过图简单缕一下转换到后缀表达式的方法
2017-12-19 00:05:54
1662
原创 数据结构-基数排序(桶排序)
基数排序和计数排序都属于“非比较排序”,有关计数排序可查看http://blog.csdn.net/sssssuuuuu666/article/details/78677302。 基数排序介绍: 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序
2017-12-15 13:56:52
944
原创 Linux-动态链接与静态链接对比(动态库和静态库)
一、库的基础概念: 在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。通俗的说就是把这些常用函数的目标文件打包在一起,提供相应函数的接口,便于程序员使用。在使用函数时,只需要包对应的头文件即可。按照库的使用方式又可分为动态库和静态库,在不同平台下...
2017-12-14 17:52:46
7678
4
原创 数据结构-迷宫问题(回溯法)
题目描述:迷宫是一个二维矩阵,其中1为墙,0为路,入口在第一列,出口在最后一行。要求从入口开始,从出口结束,按照 上,下,左,右 的顺序来搜索路径.。 思路:回溯法 + 试探法。回溯法可用栈或递归,每次将走过的坐标进行标记,防止再次回头造成死循环。 准备工作:位置信息struct Pos{ int _row; int _col; Pos(const int& x
2017-12-11 15:12:55
3575
原创 数据结构-二路归并及归并排序
一、介绍:归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。该算法的核心思想是二路归并。二、二路归并介绍<1>在归并的过程中步骤如下:①设定两个指针(不一定非是指针,只需要记住对应开始下标即可),最初位置分别为两个已
2017-12-08 12:47:42
21343
原创 数据结构-位图(可对海量数据进行处理)
在学习linux过程中,wait函数中的status参数的用法其实就如同位图,位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法。一、先给一个很简单的情景来引入该结构。题目如下:加入给定40亿个无符号整数,要快速判断一个值是否在这其中,该怎么解决?
2017-12-07 14:33:15
954
1
原创 Linux-vfork与fork简单对比分析
fork相关问题:一、fork基础了解fork作用为创建一个子进程,在使用了fork命令后,内核会分配新的内存块和数据结构给子进程,并且将父进程的部分数据结构内容拷贝到子进程,最后再将子进程添加到系统进程列表中,添加完成后fork返回,开始调度。 头文件:#include < unistd.h > 函数原型:pid_t fork( ) 返回值:返回值大于0则当前进程为父进程,等于0代
2017-12-04 16:09:26
2148
1
原创 数据结构-插入排序&希尔排序
一、插入排序<1>介绍:插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。...
2017-12-03 23:48:13
1047
原创 数据结构-计数排序
计数排序算法没有用到元素间的比较,它利用元素的实际值来确定它们在输出数组中的位置。通过以下几步就可以实现:<1>:先遍历数组,找出最大值和最小值;<2>:利用最大值最小值的差值,开辟一个大小为max-min+1的临时数组,并将元素初始化为0;<3>:遍历源数组,把源数组每个元素的值减去min后作为临时数组的下标,同时在临时数组中对对应下标的数值进行自增操作;源数组元素值 - min 作为 临时数组的
2017-11-30 16:00:39
976
1
原创 数据结构-快速排序的三种实现方式及其优化
快速排序初步了解:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。后面将提供一种快排的优化方式可以尽量避免出现Ο(n2)的复杂度。基本思路1.先从数据当中找出一个数据作为参照数2.然后开始分区操作,大于参照数的就放到参照数右边,小于参照数的就放到参照数的左边.3.然后对左右分区继续进行该操
2017-11-29 15:22:25
1993
原创 Linux-进程状态&僵尸进程&孤儿进程
一、Linux进程状态在我们的操作系统中,可以同时运行多个程序,而程序在内存中则是一个个的进程,在windows下我们打开任务管理器就可查看对应进程的状态。Linux下可以通过ps命令查看,Linux上进程主要有以下几种状态:<1>运行状态 R(TASK_RUNNING)当进程正在被CPU执行,或已经准备就绪随时可被调度执行,则称该进程为处于运行状态(running)。所谓就绪状态就是该进程已经具有
2017-11-29 08:26:23
950
原创 数据结构-堆的应用(TopK &堆排)
关于堆相关的基本概念以及上调和下调的操作实现参考http://blog.csdn.net/sssssuuuuu666/article/details/78629000。接下来总结下堆的应用。一:TopK问题假设有这样一个问题:现在有一场整个国家都要参加的的考试,我需要找出成绩最高的三个成绩。简单分析下,如果是整个国家都要参加的考试,那么数据量一定很大,假设我们电脑只有4G的内存,那么只能存放42亿九
2017-11-25 16:25:18
502
原创 数据结构-堆基本概念以及操作实现
一:堆相关的概念:1>什么是堆:堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。2>堆的分类:最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。例如下面的两个堆:二:堆的向下调整过程(拿大堆举例)首先给定父亲节点的下标,由于堆存放在数组中,下标一定连续,所以可以看作一棵完全二叉树,我们只需要求出该父亲节点对应左孩子的下标,使得child值为孩子中较大的一个的下标,若孩
2017-11-25 09:05:17
811
原创 Git-如何在windows下安装Git并用GitHub同步
一:下载msysgit,然后按默认选项安装即可。安装包下载链接二:安装完成后,在桌面点击右键就会有Git Bash Here选项,点击会弹出以下界面。三:设置自己的名字和邮箱:因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。在命令行中输入以下命令并填入相关信息:$ git config --global user.name "Your Name"$ git
2017-11-17 21:18:13
5561
4
原创 数据结构-平衡搜索二叉树(AVL树)
一、概念及性质AVL树又称为高度平衡的二叉搜索树,是一个“加上了额外平衡条件的二叉搜索树”所以插入的规则是按照二叉搜索树来的。AVL数具有以下性质:1. 左子树和右子树的高度之差的绝对值不超过12. 树中的每个左子树和右子树都是AVL树3. 每个节点都有一个平衡因子(balance factor–bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因子等于右子树的高度减去左子树的高度 )二、插
2017-11-17 19:06:12
1155
4
原创 Linux-入门常用基础命令
一、ls命令:用来显示目标列表常用选项:-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出,所以当查看隐藏文件时会用到);-A:显示除影藏文件“.”和“..”以外的所有文件列表;-l:以长格式显示目录下的内容列表。-r:以文件名反序排列并输出目录内容列表;-t:用文件和目录的更改时间排序;(按照最新更改时间向以前排序)-R:递归处理,将指定目录下的所有文件及子
2017-10-31 15:33:50
547
原创 Linux-根目录作用了解
Linux根目录下的目录:在终端下进行命令行操作时,输入cd /指令进入根目录下,此时再输入ls即可查看此时存放在根目录下的目录。如图:接下来就具体分别介绍各目录的作用1>bin目录: bin是二进制binary的缩写,包含了那些供系统管理员和普通用户使用的重要linux命令的二进制映像。目录存放的内容包括各种可执行文件,还有某些可执行文件的符号连接。常用的命令有:cp、rm、ping、cat、ec
2017-10-24 11:17:30
1652
8
原创 c++-模板不支持分离编译错误分析
先说明下是怎么出现这个问题的:当我们使用模板时,如果直接在声明处定义不会出现问题。但是,像下面这样将模板函数分离编译时,在测试函数编译时就会报错。//template.h#pragma oncetemplate<class T>class MyClass{public: void Func();//只声明,定义在其他文件};//templat.cpp 函数的定义#include
2017-08-06 11:50:07
659
原创 C++-智能指针——简单实现分析
一:为什么要有智能指针在我们动态开辟内存时,每次new完就一定会有配套的delete来完成释放操作。可是这时候问题就来了,有时候程序未必会执行到我们释放的那一步,说不定在中间部分就进行了异常的跳转又或者是在判断是否释放的条件上出错,都会导致未按照我们预想的那样完成空间的释放,从而造成内存泄漏。这时候就有人利用RAII思想实现了智能指针,所以说白了所谓智能指针就是智能/自动化的管理指针所指向的动态资
2017-08-03 20:18:07
610
原创 C++-对象继承内存模型配图
注:本文章为此文章配图,查看参考代码请点击一般继承(成员变量+虚函数覆盖)多重继承(成员变量+虚函数覆盖)菱形继承(成员变量 + 虚函数覆盖)菱形的虚拟继承(成员变量 + 虚函数覆盖)
2017-07-26 10:55:16
908
原创 C++-对象继承中的内存布局
关于单继承和多继承的简单概念可参考此文章(以下编译环境均为WIN32+VS2015) 虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。首先先通过一个例子来引入虚函数表,假如现
2017-07-26 10:31:09
1183
C-C++复习.xmind
2021-03-18
安卓:编程操作sqlite数据库,一访问就闪退出错。
2018-12-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅