坚信科学,分享技术

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

优化器、激活函数、评价函数

利用深度学习解决直播支付风控

54chen的2016总结和2017预测

中国、印度、印尼在线支付接入、风控和靠谱度对比

小米大树part3:产品进度之痛

小米大树part2:测试之痛

小米大树part1.5:基础架构之痛答疑

小米大树part1:基础架构之痛

微信支付api.mch.weixin.qq.com域名解析慢原因:ipv6

在c/c++中解决SHA1WithRSA/ras/X509的过程记录

scribe的生产实践总结

一、scribe是什么 scribe是facebook开源的分布式日志系统。这里两年前的使用手记。http://www.54chen.com/_linux_/log-server-scribe-helper.html。严格说它只是一个日志处理的节点,与分布式系统相比差很多复杂的节点间的控制过程。不过也贵在它很精简,不容易出现问题。两年多时间以后,线上还没出现过一例scribed自己crash掉的情况。 二、scribe遇到master挂掉 生产环境中一般配置为一个primary(type=network)带一个secondary(type=file),在遇到master挂掉的情况下,会直接写到本地磁盘。 这个设置有非常多好处,当远程的master恢复了,本地磁盘的这些个日志还会被scribe给送回去。 日常要监控这个事情的发生也很简单,一行脚本就可以: ALERT=`du -sb /tmp/scribe/|awk '{print $1}'` if [ ${ALERT} -ge 1024000 ]; then //alert fi 三、scribe自己挂掉 scribe自己挂掉要预防把业务堵死了,一定要用异步线程在写这个日志,如果本地的scribed挂了,那端口一定不在了,在new thrift连接的时候就会失败,可以在这个异步线程中去设定多久再重试,但这就是有损日志的了。 日常监控一般可以直接看端口还在不在,不过一般不会挂(两年多还没见过)。 比较文艺的做法可以用他给的ctrl.sh那个python脚本去读取scribed内部的perfcounter来报警。 四、scr

Continue reading

Posted in linux | Tagged | Leave a comment

移动互联网创业公司的服务器选择

小公司,三五个人,扯开嗓子开干的情况下,不妨参考一下过去我们淌过的坑。 1.网络 在中国,网络成本是比较贵的(包括托管费用)。分析你的目标用户,如果用户是特别集中在南方或者是北方,这能省些钱,多线机房还是很贵的。同时,移动互联网,特别是中国特色的情况下,各种运营商挂js,各种基站网络不通,如果所在的机房在搜索引擎上一条记录都没有的话,那会很惨,基本上你的用户在手机上是很难过去的。 如果是百分之百的手机上的应用后端,前期数据量不大的情况下,可以考虑租用一些双线机房的机器。搞大了再自己买机器吧,能省则省。 2.硬件 如果要考虑硬件了,说明你的业务量已经到一个阶段了,当然也不排除高富帅创业过程,上来先来一堆高端服务器的。 内存条:注意你买的机器的主板,主板与内存的配合至关重要。常见的三通道主板,尽可能使用三条相同的内存条,高端四通道主板,使用四条相同内存条。只求大内存,随便加大是没有意义的。 raid卡电池:注意你的raid卡的电池是否加电,是否开启raid cache,这一条在mysql db机器上效果相当明显。 ssd:可以考虑在db机器上使用一部分,app机器上完全不需要。 3.软件 操作系统:一次开放调查结果显示centos5和centos6是你不二的选择,投票地址在http://vote.weibo.com/vid=2087907。 常规开发的软件:这里有一系列的介绍 《谈谈创业公司的技术选型--朴素的技术观》 协议选择:移动互联网特点,手机或者其他手持设备会需要来服务器拿数据,所以这个桥梁的选择也是一个关键的步骤。一般http的穿透率是比较高的,但是要防各种地方运

Continue reading

Posted in linux | Leave a comment

庆某会召开,发2012总结

开场致辞 2012年,全年情绪稳定,采取了各种手段遏制了技术水平过快下降势头,共计发出80篇左右博客。 http://www.54chen.com/2012 十大感动我自己内容 1.rose框架使用入门手册连载,详细记载了新手入门java开发框架的过程,用时大概2个月http://www.54chen.com/rose.html 2.cloud foundry代码阅读手记, 记录了所有的ruby学习、cf代码学习、服务器虚拟化文案warden细节,用时大概2个月 http://www.54chen.com/tag/cloud-foundry 3.riak早期代码阅读手记,记录了对分布式存储riak的代码解析过程,相当稳定的一个dynamo产品!http://www.54chen.com/tag/riak 4.好用的搜索文案senseidb使用手记,现在他的作者之一已经来到了小米,而且小米更多员工也成为其项目开发人员。http://www.54chen.com/tag/senseidb 5.linkedin的kafka使用手记,用sensei时学习的好东西,可以用来做日志收集、分发,比scribe的好处在于,它的集群和可配置。http://www.54chen.com/architecture/linkedin-kafka-usage.html 6.用上了git和gitlab。http://www.54chen.com/tag/git 7.学用新语言GO。http://www.54chen.com/document/go-lang-install.html 8.学用新语言r

Continue reading

Posted in 资料文档 | Tagged | Leave a comment

resin+thrift压力测试报告

基础条件 位置 参数 server resin 4 1 rose+1 thrift java version "1.6.0_29" Ubuntu 10.04 LTS 双核cpu 8G mem client macbook pro ab server代码 1.用thrift创建了一个方法,内部只有几行代码: logger.info("in call"); try { Thread.sleep(1000); } catch (InterruptedException e) { logger.info("sleep error"); } 2.使用的paoding-rose调用这个thrift方法。 第一波,thrift 10 thread/sleep 1s/rose timeout 3s,ab 100并发发1000次请求 ab -n 1000 -c 100 http://10.235.7.249/test Complete requests: 1000 Failed requests: 980 试了多次,一定在20次请求时开始超时,服务器端大量timeout。 第二波,thrift 10 thread/sleep 300ms/rose timeout 3s,ab 100并发发1000次请求 Complete requests: 1000 Failed requests: 386 一二波结论 同第一波,还远未触及resin的thread上限(free版本有thread限制)。 这个值大概可以计算出来: thri

Continue reading

Posted in 架构研究 | Tagged , , | 3 Comments

scala入门手记

一、安装环境 localhost:~ chenzhen$ java -version java version "1.6.0_37" Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909) Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode) 如果java没有安装,需要先安装。此处略去N字。 http://www.scala-lang.org/downloads 下载最新的版本。翻墙自理。 $tar zxvf scala-2.10.0.tgz 解压后,添加环境变量到配置文件中。 vim ~/.profile (or .bashrc) export PATH=/Users/chenzhen/scala-2.10.0/bin:$PATH localhost:~ chenzhen$ scala -version Scala code runner version 2.10.0 -- Copyright 2002-2012, LAMP/EPFL 二、安装eclipse(4.2)插件 site url: http://download.scala-ide.org/sdk/e38/scala210/dev/site/ 一路install。 三、hello world 跟java项目有点像。 package com.hello object Cz { def main(args: Array[String]) { pr

Continue reading

Posted in linux | Tagged | Leave a comment

gitlab3.1升级4.0手记

在过去的几个星期,已经顺利在gitlab中开始了团队的代码合作。http://www.54chen.com/_linux_/github-gitlab.html 圣诞前后Gitlab发布了最新的4.0版本,感觉最大的改动有: 1.merge request的diff上的comment好用了 2.支持namespace,看上去是未来用来按team划分权限的 3.network界面的bug修复 以下记录了所有的升级过程: 所有过程完全按照https://github.com/gitlabhq/gitlabhq/wiki/From-3.1-to-4.0,任何一步都可以重复搞。 坑: 因为在之前由于好奇用管理员账号在后台建立了几个Group,这回namespace支持就坏菜了。 sudo -u gitlab -H bundle exec rake gitlab:enable_namespaces RAILS_ENV=production 会出现一堆错误。由它去吧。 然后所有的原来加的Group的project重新生成push吧。 铁一般的事实说明:一定要先在3.1下把groups设置去掉之后再来打开namespace支持。

Continue reading

Posted in linux | Tagged | Leave a comment

五步构建持续性部署(CD)

错误被发现的时间越迟,修复的难度越高,代价也最昂贵。如果工程师在敲下代码的时候就发现了问题,那修复的成本几 乎为零。如果编译器捕获了bug,它对开放时间造成的影响就是以分钟计的。如果bug进入了产品,而且在一段时间内没有被发现,找到bug、修复bug的 代价就会让人觉得难以承受。千年虫问题就是一个典型的例子。 ----题记 from http://www.infoq.com/news/2009/03/Continuous-Deployment 持续部署的目标是通过减少批量工作的大小,并加快团队工作的节奏,帮助开发团队在其开发流程中消除浪费。这使团队能够一直处于一种可持续的平稳流状态, 让团队更容易去创新、试验,并达到可持续的生产率。 下面是来自Eric的五步构建快速部署的办法: 1.CI服务器。持续性部署的前提是持续性构建。我们需要一个地方去做单元测试、功能测试、集成测试和所有测试。这些事情会在每次commit之后进行。一定要确保所有的test在10到30分钟内全部跑完。如果不可能做到,那就将它们进行归类。 2.代码控制提交脚本。不管是svn还是git,都有各种hook的勾子程序,在每次commit前嵌入检查逻辑。这概念来自于传统意义上的“生产线”,一旦在线上的产品发现问题,将停止进入,进入暂停阶段。修好之后继续运转。如果1中的持续构建有一个test case不能过,那这个脚本要能够阻止再来的commit。简单地说,就是让代码能够检查的bug代码不能进入。 3.简洁的发布工具。不需要多复杂的工具,只需要每个人都遵守的、简单的办法,同时要遵循CI没通过就不能使用的原则。 4.

Continue reading

Posted in 架构研究 | Tagged | Leave a comment

谈谈创业公司的技术选型--朴素的技术观

创业公司的定义 把服务器数量在千台以内(如果存在服务端),或者业务没有爆发过或者是长时间没有爆发过的公司,叫做创业公司。 朴素技术观的定义 有很多看上去很美好的技术,背后都有很多对应的很残酷的事实,在一个创业公司许多选择给你,你可以使用当前最炫的技术,也可以使用团队最擅长的技术。朴素世界观,是指所有选择使用团队最擅长技术的一种观念。 语言 语言之争是最没品了,这里不争哪种语言好哪种语言坏。 这里有一个办法来选择语言:所有团队成员的简历中,出现最多的一种语言为标准。 例外情况:团队成员中有一位大拿,是某门语言的泰斗,不说在国际上,在国内也要有领头羊的成绩。印象中在创业中大量使用GO语言的许式伟大侠是例外中最典型的一个,不过看看人家的成绩,已经把GO摸的一清二楚了。 反例:太多。 以下条件满足可开启反例模式: 1.至少一人完全理解整个语言的语法 2.至少一人完全理解语言精髓 3.至少一人完全掌握此语言常见debug工具 4.至少一人在一个规模较小应用成功使用 存储 这里主要讲服务器的存储。 如何选择:mysql+memcached至少在twitter、renren.com、taobao、qq、sina、baidu......等公司大量使用,如果你团队成员一个都不是来自这些公司,那大胆地用吧,用死也用不出什么毛病来。当然了,十分需要在业务爆发时找到一位可靠的mysql dba,这里要提一下人人网的创始员工DBA刘启荣大侠,引用一句前老板的话:×××无出启荣之右也。 反例:此处省去创业团队名字,有史可考。当年KV十分火爆,某兄弟对cassandra十分感冒,于是在整个系统初期设计时

Continue reading

Posted in 资料文档 | Tagged | Leave a comment

企业github之高仿选择-gitlab使用实录

自从上周使用git-svn以来(http://www.54chen.com/_linux_/git-svn.html),一发不可收拾,于是在偶然的机会发现了gitlab这个不错的选择(可以想象成是github的公司自己搭建的内部版本),还有什么理由继续使用svn+redmine+wiki! @有个梨UGlee 一个人,20年,单枪匹马的干翻了整个计算工业。如果你是程序员,还没有在他写的操作系统上工作,或者还没有开始使用他缔造的版本管理系统,那么你还是趁早改行吧,你干这行是没希望的。 安装 用ubuntu,让生活更加轻松。 root@ubuntu-chenzhen:/home/gitlab/gitlab# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04 LTS Release: 12.04 Codename: precise 请打开以下地址并收藏:https://github.com/gitlabhq/gitlabhq/blob/stable/doc/install/installation.md 所有的安装只需要一步一步按照说明做就可以完成。以下记录一些中国特色的安装过程。 中国特色 1.安装ruby1.9.3p0 不要下了,打不开的(原因你懂的)。 直接 apt-get install ruby1.9.3 2.补充安装bundler 装完ruby就有gem了,然后把源改在淘宝: gem source -r http://rubygem

Continue reading

Posted in linux | Tagged | 1 Comment

git svn使用手记

以下是一个淡疼的记录,因为从linkedin归来的宝秋叔大力推荐git,而我们现在的代码大多在svn中,所以就有了这一段故事。 一、同步回来svn $git svn clone https://miliaocode/repos/project -T trunk -b branches -t tags 然后进入漫长的等待。 -T trunk -b branches -t tags 告诉 Git 该 Subversion 仓库遵循了基本的分支和标签命名法则。如果你的目录下没有三个标准目录的话还是不要加了。 二、完成同步之后 localhost:xxx chenzhen$ git branch -a * master remotes/git-svn localhost:xxx chenzhen$ git show-ref ecf28daf78732c0538a99e206bd9e6e32cbd1ff3 refs/heads/master ecf28daf78732c0538a99e206bd9e6e32cbd1ff3 refs/remotes/git-svn 远程的svn只作为一个远程的分支存在。 三、使用 $cd xxx $vim yyy $git commit -am 'Adding git-svn instructions to the README' 这一步是提交到本地,还可以用各种分支之类的都是对本地的操作。 四、注意 $git svn rebase 这一步应该经常被执行,防止出现空洞,因为svn会在服务器端进行merge。而git却不会。 避免使用merge和直接

Continue reading

Posted in linux | Tagged , | Leave a comment
Page 3 of 5112345102030...Last »
尝试与54chen交流:
Twitter sina微博V GMAIL GitHub

 

54chen,真名:陈臻。
2010年加入小米科技。
关键词:
rose,riak,rabbitmq,zookeeper,thrift,nuclear,
senseidb,hadoop,hive,dynamo,
php extension,nginx module

天下风云出我辈,一入江湖岁月催.
鸿图霸业谈笑中,不胜人生一场醉.
提剑跨骑挥鬼域,白骨如山鸟惊飞.
尘世如潮人如水,只叹江湖几人回.

过去的经历:
人人网分布式研究人员(nuclear系统开发者)
雅虎、淘宝搜索开发工程师
金山词霸开发工程师
曾用代号有:cc0cc、零蛋。

SEARCH

接受捐赠

Comments

  • 54chen: 并没有mybatis的高级,只是简单够用的...
  • 54chen: 参考jade包内,rowmapper包下代码...
  • qiang: sql中查询的字段和实体类中的字段是...
  • mr_change: 你好,for就是类似于mybatis的foreach么...
  • anping: 搞定...
  • anping: 陈老师.rose dao 不能执行存储过程吗?...
  • xiaobao: 我也遇到这个问...
  • 54chen: 没有加@DAO注解...
  • 54chen: 移步github看看qieqie最新的版本吧。事...
  • 54chen: MysqlParse...