任何时候,总需要一个旗帜在远方。

最近对读书产生了一种很独特的感觉,打算长期列一个清单,并且做一些限制。

下面便是清单,重点符号的是正在读的书,删除线是已读完的书,有链接的是读书笔记。

对于借书,每次都是兴致匆匆列一堆书单,拿着书单去图书馆借书,总在书旁看见有意思的书,导致总借很多书,但总有没读完,为了让借的书都读完,必须加以限制:

1、坚持读纸质书;
2、同时在读书籍最多5本;
3、平板里必须至少存有一本在读书籍;4、同次从图书馆借出的书籍至多6本(可欠更多,但每个时间批次只借6本);
5、争取借出来的书都读完,争取买来的书都是经典;
6、少剁手,少买书。[……]

Read more

曾经有个问题一直在困惑我,分布式程序如何在宿舍调试和测试。扩容缩容是否正确,灾害发生时容灾能不能自动启动。当然对现阶段的我来说最重要的还是功能本身的验证。

这两天百步梯那群怪人又在群里讨论后台开发的一些问题,因为大牛多讨论就很吸引人很有意思,忽然就有好多点子想写一些好玩的程序,可怎么用一台机器模拟千百台机器来开发和测试分布式程序呢?

我会用zookeeper,但不愿意用java阵营的利器,想先用python造轮子实现一些分布式的服务管理和同步原语做第一个有意思的程序,可是写了怎么测试呢?
然后我刚刚才忽然想到,用docker啊!
(为什么以前从没想到过…浪费那么多好时光)[……]

Read more

出于兴趣看了一下guetzli的论文,但我本科期间做图像压缩的工作不多,所以对于一些专业的细节如有错误,还请留言斧正。

一、介绍

Guetzli是一个新jpeg编码器,使用了Butteraugli作为感知距离标准( perceptual distance metric)

主要工作:在不影响视觉感知质量的情况下,缩小图像的大小。

图1. 左为原图,中间是Guetzli,右边是libjpeg的结果

Libjpeg等编码器通常会出现一些变形[……]

Read more

常用的同步原语,到多核处理器时代锁已经是必不可少的同步方式之一了。无论设计多优秀的多线程数据结构,都避不开有竞争的临界区,此时高效的锁显得至关重要。锁的颗粒度是框架/程序设计者所关注的,当然越细越好(也不尽然),同时不同的锁往往也会体现出完全不同的效率,Linux有posix的pthread_mutex_t,Windows有CreateMutex创造的HANDLE,boost有mutex而且C++11也定义了std::mutex,这些锁在获取不到锁时都会进入睡眠状态(try_lock方法例外)并将CPU让出来给其他的进程使用。但是在很多情况下,多个进程竞争的临界区的代码可能非常的短,例如:锁[……]

Read more

想读一些代码,但不知道从哪里开始,那就随便选一个吧。

前言

为什么要写这个系列。

1、就是想变厉害一点:

学习更多数据结构和算法学习被广泛应用的软件/库的源码的实现原理学习别人的编码习惯和技巧

那开源项目那么多,从哪一个开始读呢,Nginx?Linux?还是什么,于是就谷歌,找到这个网页:
https://www.zhihu.com/question/20201738
介绍了很多开源项目,于是乎决定写这个系列,先把系列的开头放在这篇文章,如果坚持读代码并且写日志分析了三个开源项目,就把给这个系列做一个新的页面。

2、博客总要写一点有用的东西

一直想写博客,可是不知道[……]

Read more

Untiy5.x的MonoBehavior类。

所有用于添加到游戏对象上的脚本都必须继承自MonoBehavior,所以下面来学习一下这个类。

继承自MonoBehavior的脚本从唤醒到销毁有着完整的生命周期。下面介绍生命周期的各个阶段:

  • Awake(),脚本唤醒函数。当游戏对象被创建的时候,游戏对象绑定的脚本会在该帧内执行Awake()函数,无论脚本是否处于激活(enable)状态。
  • Start(),该函数在脚本激活时执行,位于Awake()函数之后。该函数同样也是执行在游戏对象被创建的帧里。不同的是,如果脚本处于不激活状态(enable=false),Star[……]

Read more

本来是不想做笔记,因为知识量一定很大,涉及到硬件软件和抽象概念,并且不乏复杂的细节,但是书中有一个细节卡住我一整天,忽想明白,开心想记录一下,因此决定写此篇读书笔记。

想必书中也有很多值得书写的抽象概念和算法,确实应该做笔记。

关于内核我不想知道的大而全,不想知道关于硬件的太多细节,我更加关注整个流畅的逻辑,对于可以忽略的细节,能省则省。

第二章内存寻址

在intel 8086的架构中,地址分为逻辑地址,线性地址和物理地址。逻辑地址经过分段变成线性地址,线性地址经过分页变为物理地址。Linux为了兼容各个平台,没有将分段纳入标准的一部分,将所有的逻辑地址(基本上)直接作为线性地[……]

Read more

左手系和右手系完全无法变换,叉乘结果的方向是完全不相同的,书中没有给予详细的证明和说明。

在选择用float还是double最为标量类型的时候,书中建议使用float,因为精度满足一般要求,提供中有24位尾数,可以节省内存资源并且获得更好的效率。

提到了一些C++接口设计的方法规律,和effective C++类似就不细说了。其中推荐类的参数直接使用public变量访问,private/protected的函数访问会很繁琐,因为是直接变量,应该使用public,对于中间变量才需要使用private/protected。

例如vector的x, y, z直接使用public: float[……]

Read more

智能Web算法

这本书的知识量还是不小的,基本机器学习在Web中的应用面面具到了,不过书以java为主,所以我不一定都会尝试实验,但所有相关的应用都学习一遍还是有必要,相信机器学习是一种特殊的技术,基本上任何一个和数据有关的系统(而现在的系统基本上都可以和数据有关)都可以使用,所以认真学习一边还是有必要的。那就一个个来了。

书中很多代码写的都有一些不够好,用的我不喜欢的JAVA啊,或者在框架里直接用的裸代码(明明可以封装很好),包括有一些实现其实也不是那么合理……,但是可读性还是很高的,真的还是很清晰的了解到实现,并且能够想象到应用,所以最让我不爽的是代码,最让我爽的大概也是代码…。

搜索

只[……]

Read more

算法导论

觉得读书实在没什么可做笔记的,以为理解,记住就是看书的全部。可是看着看着发现好多不容易理解的地方,情不自禁地会写下了好多笔记在本子上,那就转抄一下到博客上。

写博客有时候会遇到一个知识点,当时没太看懂,含糊记了个概念,但要记录在博客上又不可含糊,就回头翻阅书籍和文章把知识点啃下来。其次在转抄的过程中,读过的内容又会在脑海中重现一边,加深第一边读书的印象和效果,所以…读书做笔记并且分享出来,是有好处的,虽然花的时间稍微会长一点,读的页数也会少一点,但还是不应该盲目追求速度,尤其是对于那些难啃的书,做笔记写博客都是有意义的。

以此为系列序。

很早就有了这本书(所以是第二版…[……]

Read more

Docker基础与实战

之前读过《第一本Docker书》,所以对docker的使用和概念都是大概清楚的,只是没有实际搭建使用过,这次读本书会配合把本博客使用docker部署,但这本书还是看的很快,笔记做的不一定易懂,不过也没想过是为其他人提供(为主)的,毕竟我做笔记主要是为了让自己阅读可以保持一个良好的习惯,增强自己的阅读效果。

因为是实用工具类的书,所以笔记还是会稍微长一点,也会转述很多书上的内容下来。

第一章、Docker

随着互联网的发展,服务器市场快速转向云环境,但大量服务器的购买和配置会很麻烦,于是出现了“不可变基础设施”的概念,指主机OS和服务器运行环境分离,设置一次环境便不用再设置,每次[……]

Read more