1. Go 语言学习笔记1

    前言 之前的月余 学习了一下GO语言,基础知识过的很快,但是上手之后发现Go真实博大精深,我才窥知一角,不由得 要把心得体会记下来随时看看。 缘起 最开始做了个获取elasticsearch的demo,但是到后来处理未知结构json的时候发现了很大的问题,原生的解析方式有两种,已知结构的可以定义一个结构体,未知结构的需要解析到interface里面,通过类型判断达到解析的目的,这种方式对于多字段来说无疑是个悲剧, 还有就是用第三方的包,虽然解析上和类型推断上方便了很多但是多字段的问题依然没有解决。或许现在已经有了很好的方案但是我觉得对于超多字段的超多层级json的解析go 这里还是短板,如果不区分类型都转为泛型对于后面的逻辑处理并不友好。 上面先拍了一转头,下面就是amazing, go channel 这种协程真的是非常舒服,初学时候的是否制定channel 大小,阻塞还是非阻塞的channel都是一种选择,也需要深入了解,尤其是网络编程上面的使用,我的新练手项目的一部分已经提交了 这准确说就是个客户端,dorylus 可以让我们分布式的执行cronjob,master-slave 模式我更喜欢称为manager-worker 模式,我目前实现了worker 部分,但是核心的manager 部分只实现了手动切换,还没敢提交,并且近期发现woker有很多不足。 整个项目想法很简单就是先起一个tcp服务端,利用cron 定时器做基础,开出不同的协程执行每一个用户定义任务,执行完回写log,可以向该worker…


  2. [译]Node.js垃圾回收与内存泄露的排查

    原文地址:https://blog.codeship.com/understanding-garbage-collection-in-node-js/ 阅读时间: 8 分钟 尽管总有一些Node.js(通常)性能方面的负面报道,这并不是说Node.js比其他技术更容易出现问题。我们需要清楚知道Node.js是怎么玩的。 虽然这项技术的学习曲线相当平坦,但是其内部的实现是相当复杂的,而且你必须要了解怎么规避一些陷阱。 如果一旦出现错误你需要知道怎么快速解决问题。 这篇文章我会提到Node.js的内存管理是怎么回事,怎么能追踪内存泄露问题。和其他平台语言不同(如php), Node.js程序是一种长期运行的线程。虽然这有很多用武之地,比如一次数据库链接之后所有的请求均可复用,但是这也会产生很多问题。 首先我们来搞清楚一些Node.js的基本问题。 Node.js是通过V8引擎控制C++程序的Javascript Google的V8引擎最开始适用于Chrome浏览器的,但是它也可以独立运行,Node.js能抱大腿就是因为它能独立运行。 V8的编译器编译js成本机代码然后运行,运行过程中V8负责按需要回收,释放内存。所以我们在说内存管理实际上是说V8的内存管理机制。 V8的内存设计 一个程序的运行可以用一些内存分配来表示。这些内存分配我们叫常驻内存,V8的内存结构设计和JVM很相似,它将内存分为如下几部分: 代码块…

    on node.js gc 内存溢出 垃圾回收

  3. Electron, node桌面应用之力

    缘起 electron 就是这个大名鼎鼎的项目燃起了nodejs 开发桌面应用的火苗。 这是个跨平台的桌面开发nodejs 实现,用的是Chromium 的内核 v8引擎包装成桌面app,这么有趣的东东 当然要上手一试。 历练 本来做了一个生成密码保存本地的cli mypass 就是个给自己用的,(公司每月要换密码不能和历史重复烦得很)。 代码写完了也用起来了,可是我意识到还是有不方便的地方,对于developer 来说也行感受不到,本来公司用的lastpass 已经有类似的功能, 可是我还是不太信任网络服务,所以想把他做成彻底的本地版本。 有了electron 我就可以尝试打包成不同的桌面app了,蛮有趣。 于是搞了升级版本 用electron 实现了一下, 截图如下: 其实写代码还好,基本就是nodejs + html + js 混用,electron 的入口程序设计的还算友好,掌握了Main Process 和 Renderer Process的概念之后就能写出相对复杂的程序了。 个人认为打包才是最复杂的。推荐的打包程序 electron-builder 比较好用,但是在gfw下还是要科学上网才能成功 build, 毕竟需要get…

    on nodejs app electron

  4. Redis配置文件详解

    Redis 配置文件中文解释 基于版本2.X 简介 redis是一款开源的、高性能的键-值存储(key-value store),和memcached类似,redis常被称作是一款key-value内存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务器(data structure server)。 配置步骤 编译安装完redis,它的配置文件在源码目录下 redis.conf ,将其拷贝到工作目录下即可使用。 redis.conf 常规配置 1 daemonize no 默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为yes。 2 pidfile /var/run/redis.pid 当Redis 在后台运行的时候,Redis 默认会把pid 文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis…

    on redis 配置

  5. MEAN使用技巧-2

    接下来的几次更新会着重介绍gulp的使用因为本人也是学习不足之处请指出。 何为gulp gulp.js - the streaming build system, 官方解释是流构建系统,其实就是node.js的构建工具,配置比grunt简洁,功能不输grunt。 怎么搞? 先安装 //linux -g为全局安装在这里只说此一次 以后文章里面不会说了 sudo npm i -g gulp 如果只想用在一个项目里面使用 // -D开发者的依赖 npm i -D gulp 创建gulpfile var gulp = require('gulp'); gulp.task('default', function() { // place code for your default task here }); 运行 在gulpfile 存在的目录下运行 gulp…

    on gulp MEAN nodejs node.js