- 博客(125)
- 收藏
- 关注
原创 services in OS implementations
As a structuring principle, we identify three categories of services in OS implementations: hardware services, user services, and application services. Hardware services include the OS kernel and dev
2017-10-11 19:05:45
609
原创 函数式编程
定义“函数式编程”是一种“编程范式”,也就是如何编写程序的方法论。它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。特点函数是“第一等公民”所谓”第一等公民”(first class),指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。没有”副作用”所谓”副作用”(side effect),指的是函数
2017-10-11 00:37:57
615
原创 汇编语言的寻址方式
Intel 汇编立即寻址方式MOV AH, 80H (直接给寄存器赋值)寄存器寻址方式(源或者目的有一个是寄存器)源操作数是寄存器寻址方式如: ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。 其中: VARD、VARW和VARB是双字,字和字节类型的内存变量。目的操作数是寄存器寻址方式如: ADD BH, 78h ADD AX, 1234h MOV EB
2017-10-10 22:11:46
1513
原创 Intel SGX
Intel SGXIntel’s Software Guard Extensions (SGX) is a set of extensions to the Intel architecture that aims to provide integrity and confidentiality guarantees to security-sensitive computation perform
2017-10-09 15:32:35
3341
原创 Computer Architecture Background
OverviewA computer’s main resources are memory and processors. On Intel computers, Dynamic Random Access Memory (DRAM) chips provide the memory, and one or more CPU chips expose logical processors.Syst
2017-10-08 18:55:59
448
原创 makefile和shell脚本
makefile和shell脚本Makefile本质上也是shell脚本,即每条command都是shell进程,运行完shell进程都会退出。shell代码行,如果有=的话,=两边不能有空格。Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递。所以,Makefile中的shell不管多长也要写在一行。可以用\来分行写,格式清晰一点。shell中所有引用以$打头的变量
2017-09-21 09:54:42
1242
原创 CPUID指令
介绍cpuid就是一条读取CPU各种信息的一条指令,大概是从80486的某个版本开始就存在了。似乎是从80386开始,当CPU被RESET以 后,CPU会在EDX寄存器中返回一个32bits的CPU签名(Processor Identification Signature),但这时候CPU还没有CPUID这条指令,后来出现了这条指令后,软件无需以来CPU复位就可以读出这个CPU签名,同时还可以读 出
2017-09-18 15:15:01
992
原创 流、管道和重定向
流Linux shell(比如 Bash)接收或发送序列和字符串流形式的输入或输出。每个字符都独立于与之相邻的字符。字符没有被组织成结构化记录或固定大小的块。不管实际的字符串流进入或来自文件、键盘、显示窗口或其他 I/O 设备,都使用文件 I/O 技术来访问流。Linux shell 使用 3 种标准的 I/O 流,每种流都与一个文件描述符相关联: 1. stdout 是标准输出流,它显示来自命令
2017-09-16 23:47:56
526
原创 Linux配置文件
前言每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。 几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。什么是系统配置文件?内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系
2017-09-16 15:49:26
530
原创 Linux中断机制
中断向量中断(interrupt)被定义为一个事件,该事件改变处理器执行的指令顺序,这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断。同步中断指的是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。异步中断是由其他硬件设备依照CPU时钟信号随机产生的。在In
2017-09-16 14:35:27
508
原创 可执行文件(ELF)格式
ELFELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 UNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。对象文件(Object files)有三个种类可重定位的对象文件(Relocatable fi
2017-09-14 19:22:10
557
原创 汇编
1 intel 80X86系列寄存器以Intel 80x86 CPU为例,80x86 CPU的寄存器组包括若干个8位、16位和32位寄存器,其中,32位寄存器是从80386 CPU开始才引入的。这些寄存器可以被分为4类,它们是通用寄存器、段寄存器、专用寄存器及其他寄存器。通常,应用程序主要使用前3类寄存器。1.1 通用寄存器80x86 CPU的通用寄存器包括8个8位通用寄存器,它们是AL、AH、BL
2017-08-27 02:40:25
508
原创 静态库和动态库
静态库和动态库1.1 静态库(.lib)函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)。 当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。2 动态库(.lib文件和.dll文件)在使用动态库的时候,往往提供两个文件:一个
2017-08-12 17:34:08
449
原创 RAM
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-08-09 21:22:35
570
原创 TensorFlow-tf.gfile()模块
The main roles of the tf.gfile module are: To provide an API that is close to Python’s file objects, and To provide an implementation based on TensorFlow’s C++ FileSystem API. The C++ FileSystem API
2017-08-03 10:56:05
610
原创 代价函数
代价函数1. 方差代价函数代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为: 其中y是我们期望的输出,a为神经元的实际输出【 a=σ(z), where z=wx+b 】。2. 交叉熵代价函数公式对应一个神经元,多输入单输出 其中y为期望的输出,a为神经元实际输出【a=σ(z), where z=∑Wj*Xj+b
2017-07-30 21:30:36
854
原创 结巴分词--词性标注
1、简介词性(part-of-speech)是词汇基本的语法范畴,通常也称为词类,主要用来描述一个词在上下文的作用。例如,描述一个概念的词就是名词,在下文引用这个名词的词就是代词。有的词性经常会出现一些新的词,例如名词,这样的词性叫做开放式词性。另外一些词性中的词比较固定,例如代词,这样的词性叫做封闭式词性。因为存在一个词对应多个词性的现象,所以给词准确地标注词性并不是很容易。例如,“改革”在
2017-06-20 10:28:06
8873
原创 用LDA处理文本(Python)
一、LDA介绍LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。LDA是一种非监督机器学习技术,可以用来识别
2017-06-20 09:49:40
8605
2
原创 sklearn:点互信息和互信息
1、点互信息PMI机器学习相关文献里面,经常会用到点互信息PMI(Pointwise Mutual Information)这个指标来衡量两个事物之间的相关性(比如两个词)。其原理很简单,公式如下:在概率论中,我们知道,如果x跟y不相关,则p(x,y)=p(x)p(y)。二者相关性越大,则p(x, y)就相比于p(x)p(y)越大。用后面的式子可能更好理解,在y出现的情
2017-06-03 00:07:53
23112
3
原创 Python:list的一些操作
1、list删除元素使用del删除对应下标的元素:li = [1,2,3,4,5,6]del li[2]删除指定值的元素:li.remove(4)使用切片来删除 li = li[:-1] # li = [1,2,3,4,5] 使用这个方法要倍加小心,如果li被作为参数传入函数,那么在函数内使用这种删除方法,将不会改变原list。li = li[:-1]
2017-06-02 23:30:54
275
原创 Python:合并两个numpy矩阵
numpy是Python用来科学计算的一个非常重要的库,numpy主要用来处理一些矩阵对象,可以说numpy让Python有了Matlab的味道。 如何利用numpy来合并两个矩阵呢?我们可以利用numpy向我们提供的两个函数来进行操作。#hstack()在行上合并 np.hstack((a,b)) #vstack()在列上合并 np.vstack((a,b))以上a,
2017-06-02 23:19:34
8135
原创 大数据存储系统(5)--- ZooKeeper
Distrubuted Coordination:ZooKeeper1、概念用于分布式系统中,多个节点协调。Leadership election:选举一个代表负责节点Group membership:哪些节点还活着?发现崩溃等故障Consensus:对一个决策达成一致Zookeeper:Yahoo研发的开源分布式协调系统。是Hadoop/Hbase环境的一部分。目前广
2017-05-31 12:25:19
672
原创 大数据运算系统(4)--- 内存计算系统
二、内存系统1、内存数据库(1)起源发展体系结构和硬件技术的巨大发展Memory-resident:可能在buffer pool中。MMDB:可能彻底不用buffer pool,改变了系统内部设计。(2)关键技术Vectorization;处理器加速;压缩(3)MonetDB(4)在商用数据库中的实现2、内存键值系统MemcachedRedi
2017-05-30 16:23:26
8265
原创 大数据存储系统(4)--- 图存储系统(Graph Database)
一、图数据模型(1)图的概念G=(V,E):V为顶点的集合,E为边的集合。有向图:边有方向无向图:边没有方向;可以用有向图表达无向图:每条无向边->2条有向边。(2)图数据存储系统存储图顶点和边,提供顶点和边的查询。二、Neo4j(1)概念Native graph database:采用自定义的结构在本地硬盘存储图,而不是存在数据库关系型表中。开源Java实
2017-05-29 16:49:34
7817
原创 大数据存储系统(3)--- Document Store
Document Store一、数据模型1、JSON:JavaScript Object NotationJSON是一个低成本的数据交换格式;是JavaScript程序语言标准(1993年)的子集。JSON对应于程序语言中的结构与数组。(1)JSON格式定义Value:基础类型、Object、ArrayObject:{“key1”:value1,……,”keyn”:valu
2017-05-29 16:32:32
1430
原创 大数据存储系统(2)--- Key-Value Store
No-SQL:(1)这些系统大部分是由互联网公司研发,研发目标是支持某公司的某类重要的应用。(2)放弃使用关系型系统,转而开发专门的系统以支持目标应用。(3)针对目标应用进行开发,简化了许多关系型系统的功能,以提高系统性能和降低研发成本。不支持完全的SQL,不支持完全的ACID。Key-Value Store:一种分布式数据存储系统。数据形式为,支持Get/Put操作。
2017-05-29 11:01:50
3992
原创 大数据存储系统(1)--- 分布式文件系统
分布式文件系统一、分布式系统概念(1)分布式系统类型:Client/Server、P2P(Peer-to-Peer)、Master/Worker(2)故障模型(Failure Model):Fail stop:出现故障时,进程停止/崩溃Fail slow:出现故障时,运行速度变得很慢Byzantine failure:包含恶意攻击(3)CAP定理:三者不可得兼C
2017-05-29 01:45:24
5461
原创 行式与列式数据库
行式数据存储:每个记录把所有的列相邻地存放。优点:多个列的值,可以一次I/O都得到;适合于OLTP,同时需要读写同一个记录的多个列的值。但是,对于数据分析操作,只使用少数列。所以,不适合。列式数据存储:每个列产生一个文件,存储所有记录中该列的值。列式存储的原因:数据仓库的分析查询,大部分情况只涉及一个表的少数几列;会读一大部分记录。在这种情况下,行式存储需要读很多无
2017-05-28 19:44:40
689
原创 关系型数据库管理系统:事务处理Durability(持久性)的实现
一、目的:Transaction commit后,结果持久有效,crash不消失。二、想法一:在transaction commit时,把所有的修改都写回硬盘。只有当硬盘完成后,才commit。但是,这样会出现正确性问题;如果写多个page,中间掉电的话,Atomicity被破坏了!而且随机写硬盘、等待写完成也存在性能问题。三、解决方案:WAL(Write Ahead Logging)
2017-05-28 17:29:09
1133
原创 Python爬虫开源软件工具
Python爬虫 (1)QuickRecon QuickRecon是一个简单的信息收集工具,它可以帮助你查找子域名名称、perform zone transfe、收集电子邮件地址和使用microformats寻找人际关系等。QuickRecon使用python编写,支持linux和 windows操作系统。 授权协议: GPLv3 开发语言: Python 操作系
2017-05-28 09:21:40
2828
原创 sklearn:使用GBDT选择特征
(1)如何在numpy数组中选取若干列或者行? >>>import numpy as np>>>tmp_a = np.array([[1,1], [0.4, 4], [1., 0.9]]) >>>tmp_a>>>tmp_a[[0,1],:]#选第0、1行 >>>tmp_a[np.array([True, False, True]),:]# 选第0、2行>>>tmp_a[:
2017-05-27 17:02:35
15695
原创 sklearn:朴素贝叶斯(naïve beyes)
朴素贝叶斯的原理:基于朴素贝叶斯公式,比较出后验概率的最大值来进行分类,后验概率的计算是由先验概率与类条件概率的乘积得出,先验概率和类条件概率要通过训练数据集得出,即为朴素贝叶斯分类模型,将其保存为中间结果,测试文档进行分类时调用这个中间结果得出后验概率。一、基本定义分类是把一个事物分到某个类别中。一个事物具有很多属性,把它的众多属性看作一个向量,即x=(x1,x2,x3,…,
2017-05-27 13:07:59
2839
原创 Python2.7编码问题
一、unicode、encode、decode字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2
2017-05-26 18:47:53
882
原创 sklearn:SVM
from sklearn import svm一、SVM分类(1)模型参数初始化clf = svm.SVC(C=0.6, kernel='linear', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False, tol=0.01, cache_size=200, class_
2017-05-26 16:32:45
604
原创 sklearn:GBDT
一、GBDT分类(1)模型参数初始化:from sklearn.ensemble import GradientBoostingClassifiergbdt = GradientBoostingClassifier( init=None, learning_rate=0.1, loss='deviance', max_depth=3, max
2017-05-26 16:06:28
1964
原创 Python数学计算:Numpy和Scipy(矩阵相关)
Python是一种通用语言。它被解释运行,是动态类型语言,并且非常适合交互工作和快速实现原型,然而又足够强大用来写大型应用。NumPy是一个定义了数值数组和矩阵类型和它们的基本运算的语言扩展。SciPy是另一种使用NumPy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展。(1)创建矩阵import numpy as nps = np.array([[-0.7
2017-05-26 14:46:02
1917
原创 Python图表绘制:matplotlib绘图库
http://www.cnblogs.com/wei-li/archive/2012/05/23/2506940.html#resourcematplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程
2017-05-26 14:21:41
758
原创 Python机器学习库
Python是学习(和实现)机器学习技术最好的语言之一,其原因主要有以下几点:语言简单:如今,Python成为新手程序员首选语言的主要原因是它拥有简单的语法和庞大的社区。功能强大:语法简单并不意味着它功能薄弱。Python同样也是数据科学家和Web程序员最受欢迎的语言之一。Python社区所创建的库可以让你做任何你想做的事,包括机器学习。丰富的ML库:目前有大量面向Python的机器学习库
2017-05-25 14:40:54
780
原创 sklearn:随机划分训练集和测试集
一、sklearn.model_selection.train_test_split作用:随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test
2017-05-25 11:06:51
13114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人