高可用Redis服务架构分析与搭建
基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较 ...
Android组件化框架设计与实践
在目前移动互联网时代,每个 APP 就是流量入口,与过去 PC Web 浏览器时代不同的是,APP 的体验与迭代速度影响着用户的粘性,这同时也对从事移动开发人员提出更高要求,进而移动端框架也层出不穷。 上图显示的是传统的服务端架构和客户端 App 架构对比。传统的服务端架构中最底下是一个 OS,一般 ...
科普:String hashCode 方法为什么选择数字31作为乘子
1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断这个数字的用途。后来带着疑问和好奇心, ...
漫话JavaScript与异步·第三话——Generator:化异步为同步
ES6新增的特性中,Generator无疑是最为强大者之一,它与Promise结合起来,为令前端头疼的异步回调难题提供了终极解决方案! ...
超高性能管线式HTTP请求(实践·原理·实现)
这里的高性能指的就是网卡有多快请求发送就能有多快,基本上一般的服务器在一台客户端的压力下就会出现明显延时。 该篇实际是介绍pipe管线的原理,下面主要通过其高性能的测试实践,解析背后数据流量及原理。最后附带一个简单的实现 实践 先直接看对比测试方法 测试内容单一客户的使用尽可能快的方式向服务器发送一 ...
深度工作:充分使用每一份脑力
浮躁已经成了普遍的社会现象。判断一个人是否浮躁非常容易,看他一天主动拿起手机的次数就可以了。据TED的演讲者说,这个值一般是50次,除了8小时的睡觉之外,基本上每20分钟就要去翻翻手机。 你会去用手机做什么?看微信,票圈,微博,知乎,淘宝,或只是来回刷首页。我们不是名人,没人关心你在社交网络上的行动 ...
DDD峰会归来话DDD
一场大戏落幕,首届DDD中国峰会如大会主题色一般的红。或许在12月9日这一天,全中国的DDD粉丝大约有一半都汇聚在了国家会议中心。听起来是幸,其实是不幸,因为DDD在中国的人群基数实在是太少了。 因为要负责大会的其中一个Track,期间又要接受采访,另外还有朋友到访,所以除了前面的两个keynote ...
分布式、服务化的ERP系统架构设计
ERP之痛 曾几何时,我混迹于电商、珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP)。作为一个ERP系统,系统主要功能模块无非是订单管理、商品管理、生产采购、仓库管理、物流管理、财务管理等等。作为一个管理系统,大家的一般开发习惯就是使用.Net或Java技术,建立一个单块(单进程)架构的 ...
设计稿自动生成可用页面的展望
这篇文章只打算描述我加入支付宝之后,在设计稿生成代码这个方向上自己做的尝试和看到的团队中的尝试。不谈行业历史,不争论方向。文章以现状的形成和我的想法演进为主脉络,文末会提到我所看到的新契机。所以读者如果对现状和推演没兴趣可以直接翻到后面《投石》一章。 立足 三年前刚开始做 Sketch 生成代码插件 ...
.NET Core跨平台的奥秘[下篇]:全新的布局
综上所述,要真正实现.NET 的跨平台伟业,主要需要解决两个问题,一是针对不同的平台设计相应的运行时为中间语言CIL提供一个一致性的执行环境,而是提供统一的BCL以彻底解决代码复用的难题。对于真正跨平台的.NET Core来说,微软不仅为它设计了针对不同平台被成为CoreCLR的运行时,同时还重新设... ...
什么是内存(二):虚拟内存
通过上一篇文章的扯淡,我们应该已经明白了存储器的层次结构,技术细节很复杂,但是思想却不难理解,因为就是很简单的缓存思想。那么本文我们开始讨论关于内存的另一个话题. 虚拟内存 。其实思想也是很容易理解的。 我不知道有多少人听过虚拟内存这个概念,但是虚拟内存是计算机系统最重要的概念之一,并且它成功的主要 ...
.NET Core跨平台的奥秘[中篇]:复用之殇
在《.NET Core跨平台的奥秘[上篇]:历史的枷锁》中我们谈到:由于.NET是建立在CLI这一标准的规范之上,所以它天生就具有了“跨平台”的基因。在微软发布了第一个针对桌面和服务器平台的.NET Framework之后,它开始 “乐此不疲” 地对这个完整版的.NET Framework进行不同范... ...
.NET Core跨平台的奥秘[上篇]:历史的枷锁
微软推出的第一个版本的.NET Framework是一个面向Windows桌面和服务器的基础框架,在此之后,为此微软根据设备自身的需求对.NET Framework进行裁剪,不断推出了针对具体设备类型的.NET Framework版本以实现针对移动、平板和嵌入式设备提供支持。除此之外,在Window... ...
剖析Linux系统调用的执行路径
本文主要描述了操作系统是如何通过系统调用这个接口为上层提供服务的。文章通过printf函数调用过程为例,详细剖析了系统调用是如何一层层由用户态深入到内核态的过程,同时涉及到Linux处理中断的一般流程。 ...
初探性能优化——2个月到4小时的性能提升
一次项目架构和性能上的优化,该项目功能更描述十分简单,但可以说麻雀虽小五脏俱全,可以掌握Java很多优化性能的知识。 ...
一个程序员送给大学生弟弟的那些话
前言: 昨天一个大学生弟娃问了我一些问题,他是想赚点钱,因为读书嘛没什么钱,又谈了恋爱,想通过一些方式赚点外快。 虽然平时也没怎么联系,但是作为大湿人,也不免多啰嗦几句,把我能想到的一些观点告诉他,希望对他能有所启发。 在博客园里,我越来越倾向于写更多“硬菜”,和技术紧密相关的文章。 但也如我博客园 ...
从银行转账失败到分布式事务:总结与思考
思考这个问题的初衷,是有一次给朋友转账,结果我的钱被扣了,朋友没收到钱。而我之前一直认为银行转账一定是由事务保证强一致性的,于是学习、总结了一下分布式事务的各种理论、方法。 事务是一个非常广义的词汇,各行各业解读都不一样。对于程序员,事务等价于Transaction,是指一组连续的操作,这些操作组合 ...
MMORPG战斗系统随笔(三)、AI系统简介
转载请标明出处http://www.cnblogs.com/zblade/ 在设计一款游戏的时候,如果我们是玩家,是希望自己能够操作角色畅玩游戏的。在一款MMORPG游戏中,大部分的实际游戏角色,是需要玩家来操作的,通过在游戏大世界相互完成游戏中的任务等等来体验游戏。在大世界交互场景中,不可避免的会 ...
前端系列——jquery.i18n.properties前端国际化解决方案“填坑日记”
前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化。如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都有成熟的方案,比如: vue + vue-i18n angular + angular-transl ...