坚信科学,分享技术

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

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

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

54chen的2016总结和2017预测

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

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

小米大树part2:测试之痛

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

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

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

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

54chen Twitter memo 2012-02-19

预计在未来近期内发布rose-thrift、rose-zookeeper,基于spring/thrift/zk的高可用SOA解决方案。 # 54chen Twitter memo 2012-02-12 http://t.co/k0nAJfnO #

Continue reading

Posted in 生活备份 | Tagged | 1 Comment

54chen Twitter memo 2012-02-12

twitter又小改版了?调整了发推位置 # nosql应该是在引擎层面以省去解析和事务锁的方式来提升性能,以多节点协调快速复制来达到高可用性和良好的扩展性,集群内数据只需要最终一致。增减机器比RDMS容易即可。 # 使用rebar与reltool构建的release项目,只有一个基础的erts,不包括toolbar等模块。有点类似早期java打包的exe文件自带jre一样的思想。 # http://t.co/33n0klrr 怀着无限苦逼的心情人肉穿透了riak_core的代码,穿透后变成了敬畏。 # 人肉解析riak_admin join http://t.co/hu8ZUFAp # go语言安装手记 http://t.co/vOSk9YUU # 关于异常,GO语言中使用恐慌(Panic)机制进行了总结:当作为最后的手段使用,你的代码中应当没有,或者很少使用令人恐慌的东西,一旦恐慌了就要恢复(recover)它。 # <<360全部APP被苹果一夜下架>>有感:出来混,迟早要还的。 # erlang与go在部分功能上类似,主要区别是erlang是函数式语言,而go是命令式的,erlang运行在虚拟机上,而go是编译的。 # 年前和哥学社的鸟哥在2012第2期《程序员》 P106刊登了hashdos的解决办法,可惜纸媒太慢,现在到手杂志,php为了fix hashdos引出的漏洞都已经fix了。 # 54chen Twitter memo 2012-02-05 http://t.co/VwMYT1Wa #

Continue reading

Posted in 生活备份 | Tagged | Leave a comment

人肉解析riak_admin join

riak_admin只是一个bash脚本,当riak_admin join被执行时,都是在执行riak_kv_console join。 大概过程分析 riak_kv_console:join => %%入口 riak:Join(Node) => %% 真正执行 riak_core:join(Node) => %%去到riak_core riak_core_gossip:legacy_gossip() => %%通知检查是否是 legacy gossip, riak_core:standard_join(Node,Ring,false) => %%非rejoin 非legacy riak_core_gossip:send_ring(Node, node()) => %% 进入gossip模块发起ring请求 gen_server:cast({?MODULE, FromNode}, {send_ring_to, ToNode}) => %%广而告之 riak_core_gossip:handle_cast({send_ring_to, Node}, State) => %%收到 gen_server:cast({?MODULE, Node}, {reconcile_ring, RingOut}) => %%告诉它们开始协调 riak_core_gossip:handle_cast({reconcile_ring, RingIn}, State) => %%收到 riak_core_ring_manager:ring_trans(

Continue reading

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

go语言安装手记

安装 机器环境 centos 5.5 64位机器 有两种编译器,官方的文档是基于Go编译器和工具(6g 8g),另一个是gccgo(后台是gcc)。 工具和编译的对照表: amd64 (a.k.a. x86-64); 6g,6l,6c,6a 386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a arm (a.k.a. ARM); 5g,5l,5c,5a 这是一个坑:Mercurial(hg工具)需要安装,并且要1.7版本以上的。(实际上给个下载的tar包不是可以降低门槛嘛,应该是还在开发状态为了方便使用hg直接升级环境)。折腾这个的人应该不在少数。 hg clone -u release https://go.googlecode.com/hg/ go cd go/src ./all.bash 最后会停在一段时间: --- cd ../test 然后提示: 0 known bugs; 0 unexpected bugs ALL TESTS PASSED --- Installed Go for linux/amd64 in /root/go. Installed commands in /root/go/bin. *** You need to add /root/go/bin to your $PATH. *** The compiler is 6g. 就表示编译成功了。 添加到PATH环境变量 vim /etc/profile PATH=$PATH:/root/go/bin/ export PATH source /etc/profile

Continue reading

Posted in 资料文档 | Tagged | 2 Comments

54chen Twitter memo 2012-02-05

安乐死释义:某云博士,下套传统手机厂,游说江湖大佬风清扬,末鸟发配亦庄充军。 # 每次发F码,都需要做艰难的决定。 # 现在流行,在github上写博客。 # Riak Core说明 http://t.co/lvFrWhFK # maven库nexus拖不到jar包小记 http://t.co/ZKOAz3lG # http://t.co/bxISwqBP riak工程团队,为啥老外都显老? #

Continue reading

Posted in 生活备份 | Tagged | Leave a comment

Riak Core说明

什么是riak_core? riak_core是一个单独的OTP应用,提供了所有必须的服务,以完成一个现代化的、表现良好的分布式应用。riak_core开始于Riak的一部分。当代码在建立各种分布式应用普遍有用时,我们决定重构并且分离出来核心部分,使其便于使用。 分布式系统是复杂的,riak_core可以满足这些大量复杂的需求。在深入代码之前,我将分离这些需求为明显的分类,且给出每项的概况。 注:如果你是急性子,想跳过后面的直接读代码,你可以通过hg或者git检出riak_core的代码。 节点存活 & 节点关系 riak_core_node_watcher是负责反馈riak_core_cluster内部节点状态的进程。它使用net_kernel有效地监控了许多节点。riak_core_node_watcher也有能力将一个节点按程序预定踢出cluster。当一个主节点必须临时断电而又不想完全停服的情况,这十分有用。 riak_core_node_watcher还提供了在cluster内广播和定向服务的API。当节点提供了专门的服务,比如CUDA计算节点,这个服务被cluster中的其他的节点所使用,这些API很有用。 riak_core_node_watch_events配合riak_core_node_watcher产生以活跃节点为基础的events,比如说加入或者离开cluster等等。当事人可以注册callback方法,当events被触发时会被调到。 分区 & 分布式工作 riak_core在每个节点上使用了master/worker配置,以

Continue reading

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

maven库nexus拖不到jar包小记

使用maven,nexus是个不错的选择。 最常见的问题: 1.SNAPSHOT拿不到最新的包。 2.明明在maven central库里搜索到的包,却提示Missing。 3.plugin提示Missing。 1.SNAPSHOT拿不到最新的包。 这个问题往往得nexus+hudson造成的。因为daily build导致与日俱增的jar包堆积在一个文件夹下,文件数目过多,导致在取最新的包时超时了。 解决办法: 浏览器打开nexus, login->scheduled tasks->add,添加一个定时清理目录的计划任务即可。最后一个选项“remove if released”需要慎重,平时开发可能不是特别正规的时候可能会snapshot和release都需要。 2.明明在maven central库里搜索到的包,却提示Missing。 网上大多数说法都是index失败了,个人经验实际不然(当然不排除你的问题就是index失败)。 当nexus.log里没有任何异常时,请注意以下内容: 在central搜索时,如果只有pom没有jar,那说明这个依赖的项目可能有多个依赖,一定要加上pom,默认是jar。 3.plugin提示Missing。 通常原因是:nexus设置的搜索顺序有问题。 login->Public Repositories -> configuration 左边的是正在使用的定义好的仓库组,右边是可以使用的,正确的顺序应该是先在Release找,然后Snapshots,然后3rd party,最后才去外网下(这时nexus才拖下来新的jar/pom)。

Continue reading

Posted in java | Tagged , | 2 Comments

服务接入层小结

接入层 是指普通用户与核心业务逻辑中间的过程。现在常见的服务接入层,像nginx、lvs、php这些都可以算是。 观点 一种观点认为:接入的量不应该影响系统的正常运行,也就是不能接入不能处理的用户请求,类似上图中前图。 另一种观点认为:接入层应该尽量接入所有用户,类似上图中后图。 做法 nginx: nginx如果用做proxy,后端挂其他服务的话,是一个纯粹的NIO server。对用户来说,nginx是长连接(http 1.1),对后端服务来说,nginx是短连接(http 1.0)。 default: proxy_connect_timeout 60s; 向后端服务创建连接的超时时间 default: proxy_read_timeout 60s; 后端返回请求响应超时时间 default: proxy_send_timeout 60s; 大请求发到后端超时时间 nginx通过上面的三个设置,当后端有响应不过来的时候,进行超时处理(记录日志),当发现超时很多了,就需要提升后端的处理能力了。 那么,nginx自身的处理能力是否有上限呢?当然有! worker_processes 1; worker_connections 1024; max_clients = worker_processes * worker_connections 当超过max_clients的用户扑上来的时候,如果幸运后端没有能力问题,那就会看到nginx在日志中要求你增加worker的提示。 php-fpm: pm = dynamic/static; dynamic时有最大进程最小进程之说

Continue reading

Posted in 架构研究 | Tagged | 1 Comment

54chen Twitter memo 2012-01-15

http://t.co/OQzzjGtA 有亮点,雷倒了吗? # 描述性工作流程是指大多数技术人员不愿意写wiki,只愿意口口相传。必须要写下来才会沉淀。我们团队写wiki标准为“如果你成长了就写下来”。 # 在facebook,公司文化与工作流程是有抵触的,引入新的工作流程的通常模式是“只有在事情快要到了不可收拾的时候,才会考虑引入新的工作流程。” # nginx防hashdos模块使用帮助 http://t.co/DIsCU1SI # 54chen Twitter memo 2012-01-08 http://t.co/9reuxYIS #

Continue reading

Posted in 生活备份 | Tagged | Leave a comment

nginx防hashdos模块使用帮助

经过上周一周朋友们帮忙测试和bug fix,nginx_http_hashdos_module已经达到可以线上使用的水平,下面是使用记录。 下载 #wget --no-check-certificate https://github.com/54chen/nginx-http-hashdos-module/zipball/master #mv master nginx_hashdos.zip #unzip nginx_hashdos.zip 编译安装 #tar zxvf nginx-1.0.xx.tar.gz #cd nginx-1.0.xx/ #./configure --prefix=/opt/soft/nginx --with-pcre --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=../54chen-nginx-http-hashdos-module-f84d909 #make && make install 配置注意事项 在http段,增加如下: hashdos on; body_max_count 1000; 在各自的location段,要按照业务情况来加: client_body_buffer_size 2m; client_max_body_size 2m; *上述两个值一定要相等。 如果是普通的discuz,上传上限是1m的,可以修改为1m。 如果是没有上传功能的普通网站,建议修改为512k。

Continue reading

Posted in WEB相关 | Tagged , | Leave a comment
Page 10 of 51« First...89101112203040...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...