自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈皮大虾的博客

平凡的大头虾,不平凡的大世界

  • 博客(63)
  • 资源 (2)
  • 收藏
  • 关注

原创 Golang初接触-安装

Ubuntu16.04上安装golang 环境:Ubuntu16.04 苟浪版本:1.9.2第一次接触golang,本文仅记录通过预编译安装包安装golang的方法。 本来想着直接通过apt方式安装的,但是通过 apt search golang命令,发现源上的golang是1.6的,而截止至今日最新的golang是1.9版本了,虽然不知道这两版本之差在哪里,但作为初学者本着要搞就搞最

2018-01-07 20:53:55 509

原创 C++中的4种类型转换

C语言中实现了基本类型的转换机制,比如int转double,char转int等等。转换的格式也很简单 (转换类型)变量或者 转换类型(变量) 在C语言中这种方法很简洁高效,可以对任意类型做强制转换,但缺点也是不少,比如double转int的时候会出现精度损失。当到了C++的时候,因为类类型及C++的多态等机制,使得一个对象的内存结构可以变得很复杂,显然C风格的简单粗暴的类型转换机制会为C++程

2017-09-18 21:47:44 767

原创 如何写一个简单的ping程序

今天翻硬盘时,发现自己很久之前写的ping程序。突然想不如把ping程序放上来做一下也算让之前自己写的东西重见天日,当时还是花了挺多时间来写,感触良多。首先呢,ping用到的协议是网络层的ICMP协议,发送/接收的是ICMP报文,最终的形式还是以一个IP报文在网络中传送。 下面先定义一下IP头和ICMP协议的相关数据结构。IP头 IP报文格式0

2017-09-02 20:05:13 11994 6

原创 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。

这个题目网上已经很多大佬写过了。因为这个题目本身很有意思,所以打算写下自己的一些见解。内容如文章标题: 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。这里我打算用牛客的简化题目来进行讲解:题目描述有一条彩色宝石项链,是由很多种不同的宝石组成的,包括红宝石,蓝宝石,钻石,翡翠,珍珠等。有一天国王把

2017-08-28 11:04:45 2664

原创 python笔记(三)函数的参数

python本身官方已经提供了很多函数,向常见的数学运算,进制转换,打印图像的操作python都已经内置了相应的API,我们使用的时候只要调API就好了,当然python更广为人知的特点是广而强大的第三方库支持。python内置了一个help()函数。只需要通过输入要使用的函数名字,help(fun_name),就可以查询到fun_name函数的用法。但一般是对内置的函数才有用。python其实可以

2017-08-24 13:18:03 395

原创 python笔记(二)一些特别语法

pyhton中有几个高级特性,也可以说语法糖。这些特性可以减少我们在一些场景中特殊操作的代码量。切片操作(指定范围内的索引访问)平时在C++中如果我需要访问一个序列中某个范围内的数组,一般是避免不了用循环的。 而在python中提供了指定索引范围的操作 比如R=[1,2,3,4,5]#遍历可以使用下面的方法R[0:5]#>>[1,2,3,4,5]#代表的意思是取前5个元素,从下标0开始取

2017-08-24 13:15:54 304

原创 python笔记(一)常用数据类型和方法

python3.x基本输入输出操作输出操作:print(),可以直接输出字符串和运算结果和C中的print类似但不用格式控制符 例子 ···python print(“hello world”)//hello world print(“100+200=”,100+200)//100+200=300 ···输入操作input(),可以直接请求键盘操作 例子:name =input() //

2017-08-24 09:38:09 272

原创 socket网络编程(一):最简单的一收一发

学习网络编程的最好方法就是找个实际点的东西做一做,本文实现一个超级超级简单的一收一发的demo。为了符合一般的网络编程开发思维,还是定义一方位client,一方为server。恩,写到网络编程自然是要说到socket(套接字)这东西的,书本上说的socket是指一种二元关系<IP地址,端口>可以用来标示一个机器上的一个进程,使得网络上的两部机器之间可以建立通讯,其中IP地址标示了哪一部机器,端口标示

2017-08-17 19:06:35 1946

原创 MySQL索引背后的数据结构和算法原理

看到了一篇很不不错的MySQL索引的文章,由于转载比较麻烦,所以就贴出各地址了。 http://blog.codinglabs.org/articles/theory-of-mysql-index.html

2017-08-16 22:00:09 518

原创 Linux的各文件目录作用

Linux中的根目录/下有很多目录,比如home,etc这些。今天收集到一个收录的挺不错的表,可以快速了解每个目录的作用。目录说明/根目录,只能包含目录,不能包含具体文件。/bin存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对所有用户有效。/dev硬件驱动程序。例如声卡、磁盘驱动等,还有如 /dev/null、/dev/console、/dev/

2017-07-27 23:48:13 361

原创 CMAKE模板

个人使用的cmake模板,基本思想就是:设定编译参数/条件->设定源码->设定头文件目录和库的目录->生成动静态库(非必须)->生成可执行文件->最后进行链接#输出编译状态可以用一下的语句插入#message(STATUS "PROJECT_BINARY_DIR: " ${PROJECT_BINARY_DIR})#最低cmake版本cmake_minimum_required(VERSION

2017-07-26 17:04:21 971

转载 vim多窗口使用技巧

vim多窗口使用技巧1、打开多个窗口 打开多个窗口的命令以下几个: 横向切割窗口 :new+窗口名(保存后就是文件名) :split+窗口名,也可以简写为:sp+窗口名 纵向切割窗口名 :vsplit+窗口名,也可以简写为:vsp+窗口名 2、关闭多窗口 可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有

2017-07-26 12:15:32 457

原创 linux的grep命令简单使用

Linux的grep命令学习grep命令是一个很强大的文本查询命令,grep全称是Global Regular Expression Print,可以配合正则表达式来使用grep常见的两种使用方式基于文件的查询,使用格式为:grep [命令参数] 待匹配模式串 [查询文件] [ ]为可选的参数 例如:grep -i 'hello world' menu.h main.c如果不是

2017-07-25 14:52:22 488

原创 STL的priority_queue及其背后的heap读书笔记

今天继续记录一下优先队列(priority_queue)的感想。其实优先队列的本质就是一个堆,STL中默认是大根堆(大顶堆)。在学习数据结构的堆排序的时候,已经接触过堆的相关性质了,这里就不展开讲堆了。虽然在逻辑结构上堆是一个完全二叉树,但在实现上时经常是用数组来表达数据结构。基于此,STL的优先队列也是一个容器适配器,默认是在vector的基础上封装而来的。但要注意一下STL中的堆是以下标0的元素

2017-07-20 14:46:16 1076 1

原创 STL的stack和queue读书笔记

其实stack(栈)在学习数据结构的时候就已经接触过了,栈是功能被阉割的线性表,只有一个入口,是一种先入后出的数据结构化,因为其简单操作,其实用到的地方还是挺广泛的,但本文不展开讲,因为主题还是在STL上,自然也是主要说STL的栈。STL中的stack不是一种容器,而是容器适配器。即stack实在前面说到的容器的基础上封装而来的。从stack先进后出的特性来看,只要是线性的数据结构其实都可以作为栈的

2017-07-18 22:39:23 262

原创 C++输入输出总结

在学习C/C++编程,经常会忽略I/O的使用,之前也没有自己做一遍总结。导致后来吃了不少亏,比如开发的时候,会因为忘记cin的某个成员而去查谷歌/百度,导致效率下降。今天,要好好沉思一下,写一篇总结。特别的本文着重针对std::cin,std::cout这两个对象,和iostream流的记录,可能会穿插一点细节,但不会多。输入流对象std::cin平时我们使用的cin,cout,其实是命名空间中的s

2017-07-16 21:35:20 792

转载 STL的list成员函数

找了很久终于,找到一个觉得很好的博文总结出来的list成员。 文章比较长不过绝对慢慢干货。 下面是原文地址 本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过!本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过!

2017-07-15 19:54:53 1430

原创 STL的deque读书笔记

今天看到了deque,个人觉得deque应该是STL容器中的一个精华了,设计很巧妙,同时也很复杂,要花不少时间把这块硬骨头啃下来。deque的逻辑模型deque的逻辑模型和数组一样,连续的线性空间。使用上和vector一样支持随机存取。但和vector的区别很大,deque几乎以O(1)时间完成元素的头插入和移除,vector的话需要做元素移动处理;同时deque的不会出现vector那样空间增长的

2017-07-15 19:18:56 295

原创 STL的list读书笔记

前言循循渐进,今天来记录一下对于list的读书笔记。一般我们学生期间碰到使用链表的场景其实比较少的,因为有了vector后链表list相对于数组的主要优势可以说只有O(1)时间复杂度的插入和删除了,但如果是要求空间尽可能利用无多余的空间场景的话,还是会使用到链表结构。而实际使用中往往采取是把链表和其他结构相结合组成一种混杂的数据结构来使用的方法,如:前面的STL的空间配置器中的自由链表,哈希表中解决

2017-07-13 21:22:27 244

转载 STL之vector成员函数

[原文地址](http://blog.csdn.net/tianyajuankewxl/article/details/50500128%20%E5%8E%9F%E6%96%87%E5%9C%B0%E5%9D%80)vector成员函数成员函数说明assign清除vector并用指定元素填充空的vecotrat返回指定元素引用back返回最后一个元素引用begin返回第一个元素的

2017-07-12 19:13:03 353

原创 STL的vector读书笔记

本着实践才是检验是否学会的标准,看完书和写完demo程序后,觉得还是有必要记录下对vector的一些心得。本文截图取自《STL源码剖析》和SGI STL源代码vector的内存模型vector的内存模型是动态增长的线性空间,其实本质上来说就是堆上的数组。 动态增长的实质是,需求空间超过当前可用空间后,重新申请一块更大的空间来作为载体,然后复制已有数据过去新空间,删除回收旧空间,然后在...

2017-07-12 18:51:05 370

原创 STL空间配置器读书笔记

STL中的空间配置器读书笔记SGI-STL中定义了两套空间配置器,分别是std::allocator和std::alloc。 std::allocator只是在::operator new和::operator delete上做了一层简单的封装。所以一般也不会使用allocator,而alloc则是一套相比allocator在设计上更符合规范的组件。 这里有个点需要提及。 全局的:...

2017-07-11 16:03:59 299

原创 hiho任务分配

一道区间的题目,画个图就可以知道,最少的机器数目=被最多运行区间覆盖的数目。只要维护一个记录当前最大区间覆盖数目就要,重合边界点要注意,起点要在终点的前面。#include<iostream>#include<vector>#include<algorithm>using namespace std;//记录点,true为一个区间的起点,false为一个区间的终点struct point{

2017-06-21 14:06:59 242

原创 用队列实现栈

以前接触过用两个栈实现一个队列,现在又来一个逆问题,用队列实现栈,那么是不是需要使用两个栈,才能实现一个队列呢? 答案不是的,队列有两个口,一进一出。 那么思路就很简单了,用循环队列的思想,就可以通过一个队列实现一个队列。 比如初始入队 1, 在入2 2,1 我们循环一次把1取出来,在重新插入变成 1,2 这是队列内的元素出队排列就符合栈的排列了,如果在插一个呢 3,1,2 循

2017-06-09 21:33:03 396

原创 对数据库中的123范式的理解

关系数据库中的函数依赖。 定义如下:一个属性集的全集U,设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的所有具体关系r都满足如下约束:对于X的每一个具体值,Y有唯一的具体值与之对应,则称Y函数依赖于X,或X函数决定Y,记作X->Y,X称作决定因素。 其实这个看起来就很像数学上的映射,如果一个输入X在一个函数F的作用下的输出在值域中有唯一的值,则它们可以用一个函数

2017-06-07 22:48:10 3094 1

原创 XML语法小结

XML语法小总结1.XML文档必须包含根元素。上一篇的例子中<?xml version="1.0" encoding="UTF-8"?><note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>note是根元

2017-05-12 16:38:56 431

原创 XML初涉

XML初涉XML(可扩展标记语言),和HTML很像,但设计出来的目的和HTML不同。HTML设计出来的目的是为了方便显示网页的内容和布局关注点在数据的显示:而XML被设计用来传输和存储数据,关注点在数据的内容。 总结:HTML关注显示信息,XML关注传输信息。因此在设计WEB应用的时候,我们可以使用XML来存储需要显示的数据内容,HTML来数据显示的布局和样式。这样就可以做到视图和数据的分

2017-05-12 11:18:02 215

原创 深度优先搜索应用:走迷宫

走迷宫问题是深度优先搜索的一个典型应用,通常迷宫的形状如下 0为可走的道路,1为墙壁。通常情况下一些变种的模型,会加入一些特殊项,有别的意思,比如数字5代表钥匙,当然复杂模型先不讨论,从最简单的开始。深度优先搜索的思想其实就是枚举式的递归,不断的对当前状态下进行对下一状态转移的进行枚举,直到找到解。在迷宫问题中,任意一个可以走的点都有4种转移状态(往上,往下,往左,往右),当然不是每一种状

2017-05-07 20:13:12 4689 4

原创 hiho字体大小设置(二分搜索)

https://hihocoder.com/problemset/problem/1288题目大概意思就是我们有N个自然段,每个自然段有ai个字符,手机屏幕宽W,长H,让我们字符可设定的最大字体号S,比如字体号为S,则一行只能显示【W/S】向下取整个字符,一个页只能娴熟【H/S】行,最终所有自然段显示的页面不超过P页。 每一个自然段都重新的一行开始显示,自然段之间没有空余的行。 基本思路就是当S

2017-05-06 20:31:04 283

原创 求二叉树的最浅叶子所在层数

呃呃呃,一看到问题可能会有点懵逼。 二叉树的最浅叶子层数,所在层数最低的叶子节点,也就是在层的度量上里根节点最近的叶子节点。和求二叉树深度是相对的问题,更新规则和求二叉树的深度类似,只是更新规则变成了 节点的新层数 = 该节点未更新前的层数 + min(左孩子层数,右孩子层数)。 这样最后到达,根节点的时候计算得到的就是最浅叶子层数。 其实除了更新规则不同,代码的思路都是一样的。 //注意

2017-05-06 16:57:11 1539 1

原创 求二叉树的深度

日常我们的思维以及书本上为了定义二叉树的深度,都是从根节点出发往下数,最深的叶子所在层数代表了二叉数的深度,这个思考过程是自顶向下的。但我们使用计算机来解决这个问题时,在编码上就会不好下手,从自顶向下的角度入手,没有利用上二叉树自身特有的结构性质。我们可以逆向思维一下,利用上二叉树的最小子结构的特点,自底向上的从叶子节点向根结点的角度来思考。 下面我们定义,二叉树中的所有有效节点(非空节点,标注为

2017-05-06 15:43:54 682

原创 二叉树的层序遍历

层序遍历不是二叉树所特有的,但使用二叉树来讲解是因为在视觉和理解上更直观。顾名思议,按层遍历。如下图: 树的层序遍历对应到了图中的宽度优先搜索,需要使用一个队列辅助遍历过程,从图中也可以看出其遍历过程很符合队列的性质。初始化一个空队列,我们让根节点入队,然后出队,查看出队节点的左孩子是否为空,非空的话,出队节点左孩子入队,查看出队节点的右孩子是否为空,非空的话,出队节点的右孩子入队。然后重复,

2017-05-06 14:18:18 472

原创 找二进制0 和1

int n=0;cin>>n;if(n==0) return 1;if(n<0) n=-n;int count=0;while(n){ if((n&0x01) == 0) { count++; } n=n>>1;} cout<<count<<endl;return 0;

2017-05-04 21:03:11 1481

原创 回文串判断

回文串就是通常我们说的,从头读到尾和从尾读到头都一样的字符串。 比如下面两个例子。 hellolleh 是回文串 helloworld 不是回文串。判断是不是回文串的思路很简单,双指针,从两边往中间靠逐个对比。 下面是代码,考虑了奇数长度回文串和偶数长度回文串的特点,循环结束条件为i<=j,很好理解,奇数长度回文串最终的比较是最中间的同一个字符,相当于字符自身的比较。如果是回文串的话,跳

2017-05-04 19:59:55 1935

原创 有序二维数组的查找

class Solution { public: bool Find(int target, vector

2017-05-04 19:49:30 340

原创 每日刷题:lightoj 1005 - Rooks

#include #include #include #include long long solve(int N){ int K=0; scanf("%d",&K); if(K>N) return 0; long long dp[31][31];//定义dp[i][j]:边长为i的正方形,有j个rooks所能组成的不攻击数量 memset(dp

2017-04-24 00:49:01 344

原创 数据库的那些事(一)

俗话说:万丈高楼平地起。接下来几篇文章,将会花多点篇幅在数据库管理系统(DBMS)的一些理论和相关概念上的整理。本文先简要讲讲数据库的三级模式结构。请看下图三级模式的划分是依据数据库系统人员以不同的角度来看待数据库中的数据。①模式 :也称为逻辑模式,是从全局的角度对数据库中全部数据的逻辑结构和特征的总体描述。不涉及数据的物理存储细节,软硬件环境,和开发工具。举个例子:如果一家酒店要设计一个营业收入支

2017-04-23 21:32:34 544 1

原创 每日刷题:lightoj-1004 - Monkey Banana Problem

终于开始写人生第一道DP了。 第一题,耳熟能详的猴子吃香蕉问题。 题目的话,就放出来了,去lightoj上就能找到。 在一个菱形中找到一条路径,使得猴子能吃到的香蕉数最多。 看下图,题目比较容易想到,用一个相同的表记录走到某一个为止能吃到的香蕉数,每次决策取最大的就是了。 实际编程时,我们是以二维数组来填表的,所以请把下图想象成一个实心右箭头’>’样子的三角形 7 0 0

2017-04-18 17:18:01 478

原创 链表操作:反转链表

反转链表是一个挺有趣的问题。我们可以化为两个链表的衔接和断开问题。为了形象说明假设有两条链表L1和L2(转换过程中只有一条),以蓝色的节点为L1的节点,红色的节点为L2的节点。其中L2为L1的反转链表。 要从L1转换到转换到L2。可以看出从L1开始截取当前一个节点作为L2的头,被截取节点的下一节点为,L1的新头,然后把L1的心头指向L2的头,不断重复直到转换完毕,说的比较抽象下面...

2017-04-13 20:20:35 405

原创 每日刷题:从尾到头打印链表

老生长谈,从头打印一个链表。也不是什么难题,单向链表只能从头走到尾。从尾到头打印很明显的先进后出性质。即可以用一个栈来装遍历结果,也可以用递归来解。总之,本质上都是用一个链表模拟栈。用栈的解法/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :*

2017-04-12 22:17:24 274

谷歌的三篇论文

Google的著名的三篇大数据的论文,分别讲述GFS、MapReduce、BigTable,取自网上,排版整理完成,以供参考。

2017-12-04

卡尔曼滤波

卡尔曼滤波程序,matlab实现,卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。

2017-12-04

空空如也

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

TA关注的人

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