自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

写代码的柯长的博客

越努力越幸运

  • 博客(54)
  • 问答 (1)
  • 收藏
  • 关注

原创 Docker文件系统基本概述

先来看一下docker文件系统的一览图这张图可以基本说明docker存储结构的两种大的基本方式:数据卷数据卷即是我们可以通过-v 参数将主机目录或者主机设备挂载在我们的docker container中,这种方式是在I/O传输中最快的方式,因为不用通过docker文件系统,直接到达主机目录,适用于数据持久化和大文件传输。下面是数据卷系统的一览图:顺带一提的是,有不少研究docker...

2018-10-26 14:24:26 4824 1

原创 332. Reconstruct Itinerary

Given a list of airline tickets represented by pairs of departure and arrival airports [from, to], reconstruct the itinerary in order. All of the tickets belong to a man who departs from JFK. Thus, th...

2018-10-25 19:25:49 334

原创 操作系统的持久性学习(二):HDD

我们来对我们平时最常见的Hard Disk Drives 来进行理解和分析。首先,我们先介绍一下HDD的几个重要的组成部分:**sector:**我们的HDD由0-N个sector组成(每个sector的容量在512KB),实际上一个HDD的寻址空间也直接和你的sector数量有关,有N个sector。那么,磁盘的寻址空间也就是0-N。disk head: 我们实际访问磁盘sector的装置...

2018-10-16 22:02:02 878

原创 CMU15-440 project-0:用Go实现一个广播回显的Server

最近在学习分布式系统,特定跟上了CMU15-440这门课。写完了Project 0Project 0 : 是让写一个能够回显的Echo Server要求是每一个Client发送给Server消息,用\n来进行分割,并将收到的信息都返回给所有的用户:下面是具体的实验要求(直接上英文,为了方便):Your multi-client echo server must have the foll...

2018-10-14 18:00:07 1218

原创 操作系统的持久性学习一:I/O Devices

最近由于项目需要,需要学习相关的文件系统,觉得当时在学习操作系统的时候对文件系统方向的知识比较匮乏,所以特地来进行补充知识。I/O总线在介绍I/O设备的时候,我们要先知道我们的device(HDD,SDD)是如何接到我们的CPU上的,下面来放一个相关的I/O总线的图:根据存储介质的传输速度不同,所对应连接的总线也要采用不同的总线:首先是CPU到Memory之间有着独立的总线:Memo...

2018-10-11 20:52:29 866

原创 RDMA简介相关内容

RDMA简介DMA简单的说一下DMA(Direct Memory Access),直接内存访问。即通过DMA Enigne 能够将主板上的设备数据不通过CPU直接将数据搬运到内存当中。DMA的工作信息,可以通过一个简单的图来进行表示:两个buffer不通过CPU的搬运。而是通过DMA Engine 将数据进行搬运,并且在数据搬运结束之后通知CPURDMARDMA(Remote Di...

2018-10-11 19:53:57 4529

原创 1101. Quick Sort

这道题想找到一组数据中满足,左边的数字都小于它,右边的数字都大于它的数字。 最暴力的方法n^2会超时 这道题的Quick Sort实际上已经提示我们了,这道题的重点在于发现符合题目条件的数字在sort之后的位置是相同的,这一点回想quick sort过程就很容易验证,并且保证数组中的数字要大于前面数字的最大值,就会满足题意,具体代码如下:#include<iostream>#include<v

2018-05-06 14:12:56 189

原创 1103. Integer Factorization

题目的大体意思就是,给出N,k,p三个数字 找出满足N=n_1^P+…n_k^P的所有n的值,并且在所有方法中找到n_1+…+n_k最大的值,如果大小相同,就选择字典序最大的一组数组。 这道题肯定是要通过搜索去寻找最合适的组合,明显是dfs(有点贪心的意思在里面) 首先,先将index^p#include&lt;iostream&gt;#include&lt;cstdio&gt;...

2018-05-06 14:04:20 338

原创 hypergraph learning(超图学习)

最近在研究graph learning,自然在接触到前沿的,自然学习到了超图学习。特在此做下记录: hypergraph learning的主要论文来自: Learning with Hypergraphs: Clustering, Classification, and Embedding Learning Hypergraph-regularized Attribute Predictor

2018-04-25 17:36:40 11601 5

原创 l1正则化的稀疏表示和l2正则化的协同表示

这些天一直在看稀疏表示和协同表示的相关论文,特此做一个记录: 这篇文章将主要讨论以下的问题: 1.稀疏表示是什么? 2.l1正则化对于稀疏表示的帮助是什么,l0,l1,l2,无穷范数的作用? 3.稀疏表示的robust为什么好? 4.l2正则化的协同表示是不是比稀疏表示更好?好的,内容开始。稀疏表示是什么?稀疏表示的基本思想来自压缩感知,即我们能用最少的样本来代表测试数据...

2018-04-12 17:33:37 4908

原创 C/C++ volatile关键词探幽

我们先选定操作系统centOS。 选定GCC的版本gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)先上我们的基础测试代码: 开两个线程,两个线程同时一起for循环:for i=1:n,对值sum进行累加,对sum值设置volatile和非volatile查看效果如何:#include &lt;semaphore.h&gt;...

2018-03-29 00:29:23 210

原创 BST,AVL树,红黑树,B树,B+树,B*树(从map的底层实现到mysql索引原理)

本文不会对具体细节过多的探究,力求得到这几种树的联系以及区别,实际运用。BST(二叉检索树):二叉检索树也是我们最熟悉的一个索引方式了,它保证所有节点的左子树都小于该节点,所有节点的右子树都大于该节点。就可以通过大小比较关系来进行快速的检索,在一棵满二叉平衡树的情况下,检索的效率可以达到logn(类似二分检索),然后插入和删除的效率也是稳定的logn。 还是上一张图吧: BST可以...

2018-03-24 13:55:29 2319

原创 C与C++中的static的关键词的作用

这里分成两个方面来讲:1.对于C语言原则一:只用进行一次初始化但是有一个原则必须讲,static所存储的位置: 还是把一个进程进行的位置放出: .text:指的是代码段 .data和.bss是我们要重点讨论的段: 这两个段存储着我们全局变量(包括全局静态变量和全局变量) .data:保存着我们已经初始化的全局变量和全局静态变量 .bss(block of start s...

2018-03-23 15:43:28 328

原创 C++内存泄露应对方法

解决这个问题之前,我们要先理解一下C/C++为什么会出现这个问题,主要原因是C/C++有new和malloc这种内存管理机制能够让我们自由的管理我们的堆空间,这就需要我们及时的对空间进行申请和回收。 很多情况下,出现内存泄露的原因是我们对空间进行了申请但没有进行及时的回收。 这种情况常出现在在申请之后,程序出现了异常。所以没法回收。 所以,我们很自然的我们的最重要的解决办法:把我们要管理...

2018-03-20 22:43:36 321

原创 TCP三次握手,四次挥手(从状态的角度分析)

但是,我发觉我的知识来源大多来自《计算机网络-自顶向下》那本,这本书没有过多的考虑TCP三次握手中的相关状态转移细节,导致当时回答的并不是特别好,这次决定好好把这块知识好好巩固一下。 首先,我们先来一张大家都非常熟悉的图: 相信大家对这张图已经熟得不能再熟悉的,但我这次要应用程序的角度来说下: 1.客户端的socket(socket描述符)调用connect主动打开连接(当然要指定服务器...

2018-03-20 00:38:44 290

原创 C++的malloc和new的区别

1.对于C++而言,malloc是函数,但是new是运算符看似函数和运算符实现的功能都差不多。但是对于C++来说,new是运算符就意味着我们可以进行运算符重载,这就意味着我们可以定制我们自己的new内存分配器。 同时,由于C++特有的异常处理机制,我们不但可以在我们内存分配失败的时候,new返回一个null,同时也可以报出一个bad_alloc错误,同时调用我们的new_handler(ne...

2018-03-19 17:10:58 389

转载 C++的引用和指针的区别(&和*)

这里,做个总结。 资料来源:https://www.zhihu.com/question/37608201 More Effective C++ 先来说一下指针的特点: 1.指针的本意是可以指向一块地址空间,这就意味着指针可以指向未初始化的内存空间。 2.这里我们来了解一下const在指针上的用法,我们这里要理解两个const,指向常量的指针以及常量指针,指向常量的指针说明我们不能通过这...

2018-03-18 11:31:37 4847 1

原创 C++对象内存模型详解(基于GDB)

因为挺多内容的来自别人博客的学习,所以把相关博客的链接拉上: 虚函数解析:http://blog.csdn.net/haoel/article/details/1948051 C++ 对象的内存布局(上):http://blog.csdn.net/haoel/article/details/3081328 C++对象的内存布局(下):http://blog.csdn.net/haoel/ar...

2018-03-17 18:06:24 1369

原创 基于UNIX的网络编程(理论篇:设计迭代服务器)

注意:read的返回值为0说明读的字节数,如果为EOF则为0.之前腾讯一面的时候,面试官看见了我的最近一篇博客《TCP和UDP详解》感觉我的理论还行。但是,问我有没实际做过TCP/UDP的项目。结果我就只能说我在大一做过的一个没有搭在服务器上面的下载器,感觉有点丢人。于是,自己马上下来做了准备一个基于UNIX的网络编程的小项目。准备分为两个理论篇和一个实践篇。 现在马上进入我们的第一个理...

2018-03-10 15:06:51 296

原创 1123. Is It a Complete AVL Tree(AVL树旋转、判断完全二叉树)

Is It a Complete AVL Tree (30) An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ b

2018-03-08 17:14:23 590

原创 TCP和UDP总结笔记

最近在准备实习面试,所以复习一些基本知识点,故做此笔记。 在这篇文章中,你将看到: 一.什么是TCP和UDP? 二.TCP和UDP的共同点以及特点是什么?适合用于什么场景。 三.TCP的三次握手,二次分手是什么? 四.TCP面向连接是如何面对计算机网络领域中的两个重要问题? 五.TCP是如何实现拥塞避免的?1.什么是TCP和UDP? 在时候就不得不提计算机网络的五层协议啦,TCP...

2018-03-02 13:21:24 526

原创 子空间学习论文笔记02:Laplacian Eigenmaps for Dimensionality Reduction and Data Representation

这篇论文就不像是前面那篇图像分割的论文更像是计算机视觉的论文。这篇论文是属于机器学习领域并且更像于流形学习中的一类。但是基本方法还是很像前面那篇图像分割的论文,都是利用拉普拉斯矩阵来求其特征向量来实现我们降维的目的(也跟谱聚类的思想很类似),这里想简单的说明这篇利用Laplacian Eigenmaps来进行降维的基本算法流程: 降维的基本意思就是:我们现在有x_1,x_2,….,x_k的k个点

2018-01-24 16:01:02 1435

原创 子空间学习论文笔记01:Normalized Cuts and Image Segmentation

入门了解计算机视觉的一个分支——子空间学习,刚开始当然要从读论文开始。 最开始的一篇论文当然是图像分割的一个初始论文: Normalized Cuts and Image Segmentation ——Jianbo Shi and Jitendra Malik, Member, IEEE 这里做一下学习笔记。 这篇论文针对于图像分隔的问题提出了一个基于图的图

2018-01-20 19:15:41 5350

原创 解释HTTPS和SSH

刚考完信息安全这门课,想详细的说说我们常见的HTTPS和SSH,这两种针对于传输层安全的东西。 在这篇博客中你将看到这些内容: 首先先从我们的应用入手,说到HTTPS就不得不说到HTTP了,当我们打开的网站前面的前缀是由https://开头的就说明了这个网站用到了https了,类似我们的银行网站,网络购票网站(这里吐槽一下我们官方购票网站安全证书还没有做好的问题),淘宝,天猫。可以看到一个

2018-01-09 01:04:08 2652

原创 记录题目中遇到的坑

1.尽量用scanf和printf,不用cin和cout(太慢了),除非用std::ios::sync_with_stdio(false)取消同步 例题:http://poj.org/problem?id=1182(考察并查集,时间卡的很死)2.高精度问题,看到问题中要输入1000个digits的数字表示高精度数字,如下描述: Each input file contains ...

2017-12-19 17:38:18 215

原创 从差分约束到最短路径(POJ 3169)

话不多说,先来看这么几个线性规划的约束方程: x1−x2⩽0x1−x5⩽−1x2−x5⩽1x3−x1⩽5x4−x1⩽4x4−x3⩽−1x5−x3⩽−3x5−x4⩽−3\begin{equation}x_1-x_2 \leqslant 0 \\ x_1-x_5 \leqslant -1 \\ x_2-x_5 \leqslant 1 \\ x_3-x_1 \leqslant 5 \\ x_4-x_1

2017-12-19 14:16:41 740

原创 leetcode105 && leetcode106 && PAT 1138. 二叉树的三种遍历的应用

俗话说的好“你先前跳过的坑,迟早都要再踩进去的” 昨天考的PAT的利用二叉树的前序和中序遍历得到后序遍历的第一个值。想起在leetcode上做过,却没做出来。特此,对二叉树的三种遍历做个复习。二叉树的三种遍历分别为:前序遍历(preorder),中序遍历(inorder),后序遍历(postorder),这三种遍历的区别直接体现在代码上,看如下三个代码:void preorder(TreeNode

2017-12-10 23:35:48 509

原创 解决mac平台的mysql+python的中文乱码问题

首先,针对mysql数据库来说,它的默认字符是:latin1 我们写不进去中文的罪魁祸首就是这个latin1。那么,对应的解决办法就是将这个字符集改成UTF-8 那么,最简便的方法:对于window(修改my.ini配置文件),my.ini在哪里,如何修改成UTF-8如下: https://www.cnblogs.com/Ray-xujianguo/p/3322455.html 对于mac平

2017-12-05 19:00:05 1245

原创 前端和后端的数据交互(jquery ajax+python flask+mysql)

上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份。 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息。 3.将城市信息返回客户,客户用select控件进行显示。 基本效果如下所示(页面挺丑陋的,但是前后端数据交互的要求基本达到了): 我利用json进行数据传输。 所用的工具为:jQuery ajax+ python flask

2017-12-05 18:57:12 36977 4

原创 malloclab 实验详解(动态分配器如何设计)

本文主要针对CSAPP中的动态内存分配器做一个讲解,在讲解书上的各种分配器如何设计的同时,用实验的实际代码来实现这些算法。 首先,先贴上书本配套实验的地址:http://csapp.cs.cmu.edu/public/labs.html 备注:这个实验地址并没有给出实际的traces里面的测试, 相关的测试以及最终的答案可以从我的github上下载:https://github.com/HBK

2017-11-18 22:40:47 25989 10

原创 MAC上使用gdb(完美解决)

由于要在mac上制作自己的malloc动态存储分配器,要使用gdb进行调试,之前一直在centos上用gdb调试,转到mac上竟然发现有这么多坑,还好一一解决了,其原因大多数因为mac上非常关注程序安全性的问题。 主要会碰到的问题主要有如下问题,如果大家发现如下的问题就可以接着看下去: 1.-bash: gdb: command not found 2. `Starting program:

2017-11-12 14:29:37 47406 9

原创 1010. Radix (25)

题目描述: Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is “yes”, if 6 is a decimal number and 110 is a binary number.Now for any pair of positiv

2017-11-10 11:02:00 163

原创 深入理解虚拟存储器(1:虚拟存储器概念与工作原理)

每当我们安心的使用LINUX系统或者在编写C语言的时候,安心的使用malloc或者free的时候,我们很少关注过其底层的内存是怎么工作的,CPU是如何获取从主存中获取数据的,我们的寻址是不是可以直接寻找到对应的数据,还是通过某种转化机制。实际上,对于每一个进程,它所能接触到的地址都不是实际的物理地址,而是通过虚拟地址进行映射而来的。那么,这篇博客就要讲述一下虚拟存储器是一个什么东西。 第一篇会从硬

2017-11-06 18:37:23 27320 4

原创 揭秘UNIX文件缓存(the buffer cache)(实战篇)

这篇博客基于上篇的the buffer cache理论篇,本人利用c++11的多线程机制实现了一个demo,并且由于在网上大多数博客针对双向链表的LRU实现并没有过多的考虑同步问题,特做此记录。 想要直接看项目代码,可以直接移步到我的github:https://github.com/HBKO/the_buffer_cache闲话少说,在这篇博客中你将看到以下内容: 好戏开始:先来展示一下

2017-11-01 01:29:52 634

原创 leetcode222. Count Complete Tree Nodes

记录这道题的目的主要是想复习一下计算时间复杂度的方法。题目描述是这样的: Given a complete binary tree, count the number of nodes.Definition of a complete binary tree from Wikipedia: In a complete binary tree every level, except possibl

2017-10-20 16:55:36 241

原创 Mac上安装boost库(在Xcode上)

今天想学习一下C++多线程和C++的原子操作,于是装了一个boost库,但是在Mac上安装boost库出了一点问题,所以记录下来。首先,在Mac上这种UNIX内核的操作系统上,用shell命令行进行安装操作是最方便的。 闲话少说。第一步: 到官网安装对应的boost包: https://sourceforge.net/projects/boost/files/boost/1.62.0/ 下载

2017-10-18 00:26:03 999

原创 揭秘UNIX文件缓存(the buffer cache)(理论篇)

对于UNIX系统来说,最核心的是两个子系统,一个是File subsystem(文件子系统),一个是process control subsystem(进程控制子系统),请看下面这幅图: 这幅图基本上讲述了UNIX内核的基本架构,可以看到在file subsystem到block即device drivers(设备驱动)之间有一个明显的buffer cache,我们就来讲讲这个The

2017-10-12 01:17:41 1428

原创 shell命令记录

这段时间想要自己写一个shell,所以也学习不少shell相关命令,在此特地做一下记录: 首先:cat (文本文件) 这个命令可快速看一些文档里面的内容,这个命令一般配合 grep快速查找信息。 grep: 正则表达式的匹配模块,后面跟上内容,可快速查找与后面匹配的内容,例如:cat hello.txt | grep readline这个命令即通过管道机制读取hello.txt的内容,作

2017-10-06 12:27:33 226

原创 Makefile初识

最近要针对项目文件进行整体修改,所以特地了解了makefile的相关内容。首先,makefile是一种在linux下进行项目管理的工具,关于项目的编译,清楚,重编译都可以在makefile中制作,我的小理解就是作为一个自动化部署的工具,你可以把你要写的命令行命令统一写在Makefile中。 关于编译: 这里说几个基本概念,对于makefile中你的写的第一个 target(

2017-10-06 11:41:44 230

原创 深入理解计算机系统:C语言文件的链接原理

在这篇blog里,你将了解到以下的内容: 1. 一个.c文件是怎么变成一个可执行文件,中间会产生那几种文件,在执行的时候又是怎么被加载进操作系统的? 2. 在形成这些不同文件的过程中,即链接的过程中,容易诱发那几种问题,诱发这些问题的原因是什么,如何避免这些问题? 3. 链接分成那几种形式?静态链接库与动态链接库是什么,如何构成静态链接库和动态链接库,静态链接库和动态链接库的利弊?好的,接下来

2017-10-02 17:43:06 2752

空空如也

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

TA关注的人

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