• BLOG
  • ARCHIVE
  • X
  • GITHUB
  • ABOUT
  • RSS
  • 快学Lua

    Aug 29, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    工作需要用到Lua做一些脚本, 所以学习一下这个在游戏开发应用广泛的语言, 当然, 我更喜欢称之为撸啊撸语言…

    简介

    • Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库,
    • 性能方面, Lua比Python快(这也是脚本语言选型中不用python的原因)
    • Lua与C/C++交互方便, 易于扩展
    • Lua是一个动态弱类型语言, 支持增量式垃圾收集策略, 支持协程
    • 支持REPL(Read-Eval-Print Loop, 交互式解释器)
    1
    2
    3
    4
    5
    6
    7
    8
    -- 命令行中输入lua, 使用REPL
    andrew_liu:Lua/ $ lua
    Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
    > print "hello world" -- 国际编程学习惯例
    hello world
    > print("hello world")
    hello world
    >
    ...more
  • Kqueue学习笔记

    Aug 14, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    想在Mac上造点小轮子, 然而epoll是在Linux平台独有的, 所以想到了用kqueue来替代. 记录一下自己的学习过程.

    Introduction

    • kqueue是在UNIX上高效的IO复用技术, 类比于linux平台中的epoll.
    • IO复用原理大概为: 网卡设备对应一个中断号, 当网卡收到网络端的消息的时候会向CPU发起中断请求, 然后CPU处理该请求. 通过驱动程序 进而操作系统得到通知, 系统然后通知epoll/kqueue, epoll/kqueue通知用户代码.
    ...more
  • 浅谈Raft

    Aug 6, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    工作忙了,总是骗自己说的没时间写博客,其实都是自己懒癌发作而已。题目写了浅谈,肯定文章是不够深入透彻的,刚刚爬进分布式门槛的婴儿,需要慢慢的学会走路。希望后面能通过自己总结再来一篇深入理解Raft(显然又在挖坑

    ...more
  • shadowsocks源码剖析

    Jul 24, 2016

    VPS上嗨皮的跑了那么久shadowsock的server了, 但一直比较想搞明白具体是怎么实现的. 前段时间比较忙, 最近总算有点私人时间了, 速度的强读一发shadowsocks源码

    什么是shadowsocks?

    • 不想再强行安利一发了, 毕竟开发者都被请去喝茶了
    • 只需要知道和G * F * W有关就好了
    • 如果上面你都不知道, 说明这篇文章与你无缘, 叉掉吧

    所读源码基于shadowsocks-go 1.1.5, 为什么选择golang实现版本? 我难道会告诉你, Golang的吉祥物太萌了, 我已经决定好好安利golang了. 正经点的回复, golang的语法灵活不失简洁, 棒棒哒.

    ...more
  • Golang RPC

    Jul 2, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    RPC(Remote Procedure Call)是分布式系统中的一个关键机制.

    Go HTTP RPC

    ...more
  • Tornado源码剖析

    Jun 19, 2016

    pdb调试

    简单的介绍一下pdb的调试, 更详细的命令查看python pdbf官方文档

    1
    2
    3
    import pdb
    // 使用以下语句希望debug的地方打断点
    pdb.set_trace()
    命令 说明
    n 运行下一行代码
    p 计算p后面的表达式(当前上下文中), 并打印表达式的值
    s 进入函数
    r 从函数中返回
    b 动态设置断点
    w 打印当前栈信息
    q 退出pdb
    ...more
  • Google protobuf(C++) 学习笔记

    Jun 5, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    Google Protocol Buffers简称 Protobuf, 是Google公司内部的混合语言数据标准. 它提供一种轻量, 高效的结构化数据存储结构.

    简介

    为什么学习protobuf?

    想通过protobuf的序列化来做一个C++的微型RPC框架.
    本文主要是学习protobuf的使用, 大量参考官方文档.

    ...more
  • The Google File System

    May 15, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    GFS是一个共享的分布式文件系统

    • GFS提供了一个与位置无关的名字空间(namespace), 这使得数据可以为了负载均衡或灾难冗余等目的在不同位置间透明迁移
    • GFS并没有在文件系统层面提供任何Cache机制, 但借助了Linux底层cache机制.
    • GFS文件以分层目录的形式组织, 用路径名来表示, 文件的写入主要依赖追加(append)操作完成
    ...more
  • How to Write Go Code

    May 8, 2016

    官方How to Write Go Code的阉割版 :-D

    GOPATH

    GOPATH环境变量指明当前工作区的位置, 这可能在你编写Go程序时唯一一个需要设置的环境变量

    1
    2
    3
    4
    5
    6
    7
    # 设置GOPATH
    $ mkdir example
    $ cd example
    # 类Unix设置环境变量, 只对当前session有效, 如需长期生效需要设置如.zshrc的配置文件
    $ export "GOPATH=$PWD"
    # 验证是否设置成功
    $ echo $GOPATH
    ...more
  • Golang 字符串操作小结

    Apr 29, 2016

    本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.

    本文形式为, 给出一个函数接口, 然后匹配相关example. 关注函数主要集中在strings和strconv

    ...more
PREVNEXT

© 2014 - 2026 Andrew Liu, powered by Hexo and hexo-theme-apollo.