自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

迷途知返

谦虚

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 对CSDN十分失望,现决定废弃该空间

Fault tolerance我们期望服务能不受故障影响持续运行 可用性:在一些类型的故障发生时仍然可运行 强一致:从客户端角度看就像是一个单机服务

2017-11-30 12:43:32 309

原创 2017 6.824学习笔记 Lecture 2: RPC and threads

线程线程是非常有用的构建工具再Go中线程称为goroutines,其他语言中叫做线程他们通常比较棘手为什么使用线程?允许利用并发,这在分布式系统中很自然的体现出来再I/O并发中,允许在等待一个IO响应时,处理下一个请求多线程可以平行运行在多核上Thread = “thread of execution”线程允许一个程序在逻辑上一次执行许多事情线程间有共享内存每个线程包含自己的运

2017-11-19 17:23:27 452

原创 2017 6.824学习笔记 Lecture 1: Introduction

什么是分布式系统?多个计算机进行协作大规模数据库,P2P文件共享,MR,DNS等等许多重要的基础设施是分布式的为什么要使用分布式?连接物理隔离的实体通过隔离取得安全性通过副本机制容忍故障可水平扩展资源提高生产力实现中的困难?许多并发问题处理局部故障难以实现理论性能主题关于分布式程序背后的三大抽象方面:存储通信计算话题:实现RPC ,threads,concurren

2017-11-12 17:02:41 425

原创 go的内存模型

关于channel对一个channel的发送操作 happens before 相应channel的接收操作完成 (channel带缓存)关闭一个channel happens-before 从该Channel接收到最后的返回值0不带缓冲的channel的接收操作 happens-before 相应channel的发送操作完成 go内存模型

2017-10-18 19:27:06 560

原创 APUE 进程环境

本文使用golang的syscall和os1.main函数main是程序的入口,golang中也亦是如此 启动一个程序时启动例程负责从内核获取命令行参数和环境变量,维护到程序的内存布局中(后文描述)2.exit//import osfunc Exit(code int)使程序主动退出,令退出码为指定值code,程序正常结束时返回码为0 (在一般的shell中使用$?获取)

2017-09-28 23:11:48 275

原创 实现了一个golang周期任务调度包

drumstickImplement crond by Golang https://github.com/openex27/drumstick鼓槌(鸡腿),golang定时任务包功能特性:1.提供时间补偿机制,避免周期任务调度中时间损耗累计导致的长期使用后产生任务滞后现象2.参数可传入自定义函数, 和变长自定义参数3.未完待续…方法:NewTask(time.Duration, fun

2017-09-11 15:46:56 2214

原创 使用Go实现了一个ping命令

注意差错校验CheckSum在总字节为奇数时,需要将最后一个byte左移8位凑成16位在操作binary时注意网络字节序问题 github地址 https://github.com/openex27/Ping/blob/master/Ping.gopackage mainimport ( "bytes" "encoding/binary" "fmt" "net"

2017-09-06 17:48:17 1808

原创 APUE 2 文件和目录

本文代码实现采用golang的syscall包,其通常会包装一层系统调用不过大体相似1.文件属性结构 Stat_t文件的类型 文件类型 描述 普通文件 可能是文本或二进制 目录文件 包含该目录内的文件名,和有关这些文件信息的指针 块特殊文件 提供对设备带缓冲的访问 字特殊文件 提供对设备不带缓冲的访问,每次访问长度可变 FIFO 命名管道,用于进程间通

2017-08-31 15:26:49 250

原创 APUE 1 文件I/O

本章讨论不带缓冲的I/O, 代码实现采用golang的syscall包,其通常会包装一层系统调用不过大体相似1.文件描述符(FD)文件描述符是一个非负的整数,内核通过该描述符对文件进行引用,进行与文件相关的操作open、openat、creat函数会返回文件描述符已打开文件在内核的数据结构如图 进程表项:1.文件描述符标志 2.指向文件表项的指针文件表项:1.文件状态标

2017-08-22 23:09:35 304

原创 golang 常量的iota使用

在常量定义中,iota可以方便的迭代一个值从0以步长1递增,0,1,2,3,4,5… 本例以文件大小的格式2的10次方进位一次为依据,将KB为1左移10位,MB左移20位。。。package mainimport ( "fmt")type ByteSize float64const ( _ = iota KB ByteSize = 1 << (10*iota) M

2017-08-22 12:09:40 2660

原创 数理逻辑基础概念

2017-07-16 23:01:14 401

原创 离散数学基础-数理逻辑

命题: 1.确定元素 2.是一个判断 3.陈述句

2017-06-09 13:01:29 1017

原创 Python源码学习笔记 5 字典对象

Python中对于字典的实现是根据key进行hash生成散列表,算法为“开放定址法”1.PyDictEntry字典中每一个kv对,实际上就是一个entry对象[dictobject.h]typedef struct { Py_ssize_t me_hash; /* cached hash code of me_key */ PyObject *me_ke

2017-04-23 23:27:23 420

原创 Python源码学习笔记 4 列表对象

1.PyListObject[listobject.h]typedef struct { PyObject_VAR_HEAD //其中的obsize记录实际使用内存的对象数量 PyObject **ob_item; //指向列表存储空间中第一个元素地址 int allocated; //一共分配的内存空间对象数量(含未使用),obsize} PyListObjec

2017-04-17 20:47:37 336

原创 Python源码学习笔记 3 字符串对象

1.PyStringObjecttypedef struct { PyObject_VAR_HEAD long ob_shash; //存储字符串hash值,初始为-1 int ob_sstate; //表明该字符串是否经过intend处理 char ob_sval[1];//实际存储字符串位置,默认为一个字符数组,但创建时会根据size大小扩展此空间} PyStr

2017-04-13 16:59:54 504

原创 Python源码学习笔记 2 整数对象

Python中的整数类型是不可变对象,为了提高python运行效率,内部实现了小整数对象池(数组实现),和普通整数缓冲池(单链表实现)。1.PyIntObject 该结构仅适用2.5版本,该版本下数字长度大于long型时,对象类型会转变为PyLongObject,后续版本整合为PyIntObject,本篇文章仅讨论2.5版本PyIntObject结构:[intobject.h]typedef

2017-04-11 00:13:30 490

原创 Python源码学习笔记 1 简述python对象

声明:本系列为本人阅读《python源码剖析》的读书笔记,如有侵权请及时告知本人[email protected]在python中一切都是对象,而所有的对象都有相同的部分,便是PyObject 通常情况下PyObject对象中存在两个成员:引用计数和对象类型[object.h]typedef struct _object { PyObject_HEAD} PyObject

2017-04-09 22:02:54 314

原创 linux系统调用笔记

本笔记仅供个人学习所用,部分内容转自互联网,如有侵犯原创权益请及时联系本人1.sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 解决在同一系统,两个文件描述符之间传递数据性能问题,去掉不比较的复制和上下文切换,完全在内核空间完成传递。in_fd需要为类似mmap的文件描述符(必须是真实的文件不能是管道或者socket)o

2017-03-12 23:46:59 227

原创 python进阶-数据结构和算法

本文内容整理自《Python Cookbook》,仅用作本人学习笔记,若侵犯原著权益请尽快联系本人。1.将序列分解为单独变量理解多重赋值丢弃元素方法data = ('Kevin', 50, 100, (2017, 2, 28))name, shares, _, date = data# _ 变量理解为忽略该位置元素2.从任意长度的可迭代对象中分离元素理解*a

2017-03-02 15:46:54 366

原创 python性能优化指南

本文用以记录在python开发中遇到的性能提高技巧 持续更新中…1.字符串在python中string对象是不可变的,而字符串的相加会产生新的字符串。 当需要迭代生成一个长字符串时逐一相加不仅会影响速度也会而外增加内存消耗(如中间结果,参考java StringBuffer), 但是当仅需链接很少的字符串时join方法未必明智join的恰当使用“”%()format

2017-02-28 17:06:30 389

原创 认知神经科学--细胞机制与认知

神经系统细胞

2017-02-19 20:06:42 1317

原创 Geoip MaxMind DB 生成指南

目前MaxMind对MMDB的读写支持如下 Writer: perl Reader: C C# Java Perl PHP Python所以本文着重介绍如何快速使用perl生成mmdb文件,以及查询mmdb基本原理工作环境:Centos 6.5一、安装perl环境 忽略解压、cd等基础操作1 .下载perl

2016-12-08 16:03:58 7017 1

原创 现代操作系统学习笔记-存储管理

0.无存储器抽象通常程序引用绝对物理地址在嵌入式系统和智能卡系统中,比较常见一.地址空间 地址空间是一个进程可用于寻址内存的一套地址集合1.通常为每个CPU配置两个寄存器:基址寄存器与界限寄存器基址寄存器:存储程序的起始物理地址界限寄存器:存储程序的长度2.当取址时自动将基址值加到进程发出的地址值上,检查该地址是否超过界限寄存器计算后的值

2016-12-06 14:07:06 1186

原创 现代操作系统学习笔记-经典IPC问题

0.哲学家就餐问题解法之一:有一个二元信号量用以避免操作的竞态条件每个人有一个信号量用以标记所需叉子每个人有状态 Thinking,Eating,Hungry一个人可以吃,需邻居都不为Eating#define N 5#define LEFT (i+N-1)%N#define RIGHT (i+1)%N#define Thinking 0#define Eati

2016-11-18 22:25:06 1627

原创 现代操作系统学习笔记-调度

一.批处理系统中的调度1.先来先服务 先到来的服务,系统先对其进行服务 FIFO2.短作业优先 评估当前作业中,运行时间最短的作业优先服务能够提前掌握作业的运行时间只有所有作业是同时运行时调度才是最优的3.最短剩余时间优先 当一个作业到达时,评估当前系统中作业的剩余时间和该作业所需时间,选择剩余时间最小的进行调度能够提前掌握作业的运行时间

2016-11-17 23:36:31 738

原创 Linux系统管理-(2)--磁盘的挂载与卸载

什么是挂载:    将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;什么是卸载:    解除此关联关系的过程称之为卸载;    注意:挂载点下原有文件在挂载完成后会被临时隐藏;    挂载方法:mount DEVICE MOUNT_POINT        mount:通过查看/etc/mtab文件显

2015-08-29 16:09:41 550

原创 Linux系统管理-(1)-磁盘管理

Linux磁盘管理        块设备:block,存取单位“块”,磁盘        字符设备:char,存取单位“字符”,键盘        设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信;            设备号码:                主设备号:major number, 标识设备类型          

2015-08-28 21:25:25 363

原创 Linux学习日记--基础命令(10)--文件查找

文件查找:文件查找:locate, find        非实时查找(数据库查找):locate        实时查找:find    locate:        依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新数据库(updatedb);        索引构建过程需要遍历整个根文件系统,极消耗资源;        

2015-08-27 21:05:49 443

原创 Linux学习日记--基础命令(9)--VIM编辑器

vim编辑器    简介        vi: Visual Interface,文本编辑器       vim:VIM - Vi IMproved模式化的编辑            基本模式:                编辑模式                输入模式                末行模式:

2015-08-27 19:38:25 390

原创 Linux学习日记--基础命令(8)--算数运算,条件测试

bash中的算术运算        +, -, *, /, %, **        实现算术运算:            (1) let var=算术表达式            (2) var=$[算术表达式]            (3) var=$((算术表达式))            (4) var=$(expr arg1 arg2 arg3 ...)

2015-08-27 19:30:44 513

原创 Linux学习日记--基础命令(7)--bash中的变量,配置文件

变量的定义和使用变量类型        强类型:定义变量时必须指定类型、参与运算必须符合类型要求;调用未声明变量会产生错误;        弱类型:无须指定类型,默认均为字符型;参与运算会自动进行隐式类型转换;变量无须事先定义可直接调用;变量命名法则:                1、不能使程序中的保留字:例如if, for;                 2、

2015-08-27 18:50:16 429

原创 Linux学习日记--基础命令(6)--grep及正则表达式

grep: Global search REgular expression and Print out the line.        作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;            模式:由正则表达式字符及文本字符所编写的过滤条件;            REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符

2015-08-27 15:40:42 372

原创 Linux学习日记--基础命令(5)--用户和组概念与管理--文件权限

用户和组管理:以下区间区别于centos6,和centos7 Linux用户:Username/UID        管理员:root, 0        普通用户:1-65535            系统用户:1-499, 1-999                 对守护进程获取资源进行权限分配;            登录用户:500+, 1000+

2015-08-27 11:19:32 531

C语言双人贪吃蛇源代码

该源代码为C语言双人/单人贪吃蛇 编译软件WIN-TC 操作系统WINDOWS XP SP3 有单人双人模式选择 开场动画 分数统计 随机障碍 速度变换 但是由于我的操作系统中delay()的控制单位不是MS 所以在源代码中进行了一定的处理

2012-12-27

空空如也

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

TA关注的人

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