关闭

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

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

2017 6.824学习笔记 Lecture 1: Introduction

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

go的内存模型

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

APUE 进程环境

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

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

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

使用Go实现了一个ping命令

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

APUE 2 文件和目录

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

APUE 1 文件I/O

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

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...
阅读(107) 评论(0)

数理逻辑基础概念

...
阅读(57) 评论(0)

离散数学基础-数理逻辑

命题: 1.确定元素 2.是一个判断 3.陈述句...
阅读(173) 评论(0)

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...
阅读(187) 评论(0)

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

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

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

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

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

Python中的整数类型是不可变对象,为了提高python运行效率,内部实现了小整数对象池(数组实现),和普通整数缓冲池(单链表实现)。1.PyIntObject 该结构仅适用2.5版本,该版本下数字长度大于long型时,对象类型会转变为PyLongObject,后续版本整合为PyIntObject,本篇文章仅讨论2.5版本 PyIntObject结构:[intobject.h] typedef...
阅读(144) 评论(0)
32条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:7022次
    • 积分:377
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类