1. Go并发编程基础(译)

    原文:Fundamentals of concurrent programming

    译者:youngsterxyf

    本文是一篇并发编程方面的入门文章,以Go语言编写示例代码,内容涵盖:

    • 运行期并发线程(goroutines)
    • 基本的同步技术(管道和锁)
    • Go语言中基本的并发模式
    • 死锁和数据竞争
    • 并行计算

    在开始阅读本文之前,你应该知道如何编写简单的Go程序。如果你熟悉的是C/C++、Java或Python之类的语言,那么 Go语言之旅 能提供所有必要的背景知识。也许你还有兴趣读一读 为C++程序员准备的Go语言教程为Java程序员准备的Go语言教程

    1. 运行期线程

    Go允许使用go语句开启一个新的运行期线程,即 goroutine,以一个不同的、新创建的goroutine来执行一个函数。同一个程序中的所有goroutine共享同一个地址空间。

    Goroutine非常轻量,除了为之分配的栈空间,其所占用的内存空间微乎其微。并且其栈空间在开始时非常小,之后随着堆存储空间的按需分配或释放而变化。内部实现上,goroutine会在多个操作系统线程上多路复用。如果一个goroutine阻塞了一个操作系统线程 ...

    Tagged as : 翻译 Golang
  2. Yii源码阅读笔记 - 自定义类自动加载

    前两天突然发现:之前的阅读笔记对于Yii应用中如何自动加载自定义类的问题没有解释。这里的自定义类是指非Yii框架本身的类。

    关于组件类的配置加载已在 Yii源码阅读笔记 - 组件集成 一文中做了较为详细的说明, 所以这里不再涉及。

    本文主要解释以下两点:

    1. Yii框架是如何找到请求对应的自定义控制器类?
    2. 在自定义控制器类中使用其他类(如Model类、或其他任意目录下文件中定义的类)时,Yii框架是如何自动加载的?

    Yii源码阅读笔记 - 应用模块化 一文中介绍类 CWebApplication 中的方法 createController , 该方法根据目标路由找到对应的控制器类文件并加载,方法中有行代码:

    $basePath=$owner->getControllerPath();
    

    这里的 getControllerPath 会返回当前应用或模块下的控制器类的存放目录,对应应用级与模块级,其实现有两处,其一是在类 CWebApplication 中:

    /**
     * @return string the directory that contains the controller classes. Defaults to 'protected/controllers'.
     */
    public function ...
    Tagged as : PHP Yii 笔记 总结
  3. Slim源码阅读笔记

    以前读过 PHP - The Right Way 一文, 还翻译过其中的 The Baiscs 一节 (译文见 这里)。

    前两周读了 Modern PHP - New Features and Good Practices 一书 (读书笔记见这里), 甚是不错。

    这篇文档和这本书的作者都是Josh Lockhart, 他写了一个Web框架Slim,文档与书籍内容的精华都体现在这个框架中, 所以个人觉得这个框架值得一读。

    Slim的设计与实现都非常精简易懂,其对请求的主处理流程如下图所示:

    slim-process

    其中的核心概念包括:IoC容器、中间件、路由匹配等。

    IoC容器

    IoC,为Inversion of Control的缩写,中文翻译为“控制反转” - 是一种解决组件间依赖关系、配置和生命周期的设计模式,其最常见的实现方式为:依赖注入(DI)- 当系统 ...

    Tagged as : PHP slim 笔记 总结
  4. Yii源码阅读笔记 - 日志组件

    使用

    Yii框架为开发者提供两个静态方法进行日志记录:

    Yii::log($message, $level, $category);
    Yii::trace($message, $category);
    

    两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG:

    defined('YII_DEBUG') or define('YII_DEBUG', true);
    

    Yii::log方法的调用需要指定message的level和category。category是格式为“xxx.yyy.zzz”的路径别名字符串,比如日志是在yii/framework/web/CController类中记录的,那么category为“system.web.CController”。level应为以下几种之一:

    • trace:Yii::trace方法即是使用的这个level。用于跟踪执行流
    • info:记录通用信息日志
    • profile:用于性能分析
    • warning:用于记录警告日志
    • error:用于记录重大错误日志

    要想日志真的输出到文件、邮件、web页面等地方 ...

    Tagged as : PHP Yii 笔记 总结
  5. 又是一年

    又是一年,依照惯例,得写一篇总结和计划。当然计划更多的只是一种自我鼓励,现实总是一次又一次地证明“计划赶不上变化”。

    我的2014,可能用三个关键词就能概括:

    • 结婚
    • 换工作
    • 众成技术聚乐部

    结婚

    继13年领证,14年把婚礼也办了。由于两家离得远,婚礼也就分两次办。之间还补拍了婚纱照。虽然于我这些流程显得有点折腾,但重要的是大家都是很开心,也不希望老婆以后会有丁点遗憾。

    希望以后的日子总能努力让老婆开心幸福。

    换工作

    工作的时间并不长,本没想这么快换工作,何况我还是一个挺念旧的人。但还是那句话“计划赶不上变化”,不得已主动离职跳槽。

    对于目前的工作还比较满意,能做些自己喜欢做的事情,工作氛围也还不错。

    对于自己的要求就是踏踏实实做工作搞技术,不急不躁。

    众成技术聚乐部

    参加过各种大大小小的会议,总觉得水太多,但如果始终自己一个人蒙头研究技术,也有可能落得个“闭门造车”、“目光短浅”的下场,技术的“理”也是越辩越明,所以找了三五同学朋友搞起自己的技术沙龙, 名为“众成技术聚乐部”,之所以为“众成”,是希望 ...

    Tagged as : 总结
  6. Cordova/Phonegap应用构建环境搭建

    混合(Hybrid)移动开发将Web开发与原生开发优势互补,之后应该是一个不错的方向。Phonegap是混合移动开发的一个方案, 开发者可以使用标准的Web技术进行开发,然后使用Phonegap打包成原生APP,也可以为Phonegap开发插件来扩展APP功能。 Cordova是Apache的顶级项目,起于Adobe贡献给Apache基金会的Phonegap源码,之后Phonegap官方貌似则专注于提供Phonegap应用的云构建服务。 Phonegap官网提供的文档与Apache Cordova文档是相同的,所以从技术上可以将Phonegap与Cordova视为同一个东西。

    虽然Phonegap官方提供免费的开放(public)应用以及一个私有应用构建服务。但对于应用调试或插件开发来说, 使用云构建服务上传源码下载APP还是挺耗时间的,不太方便,所以搭建本地的应用构建环境是必要的。

    依据Cordova文档的The Command-Line Interface 部分,针对Android应用,在Ubuntu上搭建Cordova应用构建环境的步骤如下所示:

    1. 安装Node.js和git客户端

    • NodeJS官网下载Linux二进制压缩包,解压缩后将bin路径加入PATH环境变量,即可从命令行执行node、npm命令。
    • sudo apt-get install git

    2. 安装Cordova:

    • sudo npm install -g cordova

    3. 下载JDK ...

    Tagged as : 笔记 Cordova Phonegap

Page 3 / 16