`
thinkry
  • 浏览: 38270 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
当我们在程序员的岗位做得出色,被任命为技术经理(组长、主程序)时,除了提拔的喜悦,还会有种面对新问题域的茫然感: 以前只用做好自己的工作,现在需要负责团队的绩效 以前只用和产品、测试沟通,现在明显发现要参加各种会 以前有困难可以找到上级,现在发现自己就是最后的防线 以前每周还时不时可以按时下班,现在发现每天都是最晚走 。。。 优秀员工 ≠ 优秀经理,这种转变不会自然发生,需要有指引和辅导。不少公司在提拔基层干部时会组织基干培训,可能你参加过 团队管理 项目管理 目标管理 招聘、绩效等等 但相信你会发现这些管理课程,在实际工作中难以落地。   我以前看《敏捷软件 ...
有些应用需要把用户密码保存在本地,本方案设计了一种较为安全的密码本地存储的方案。 1 安全要求 1.1 要实现的 防止攻击者得到用户密码的明文 防止攻击者拿到自动登录token后,一直都可以登陆 即使两个用户的密码相同,服务器保存的密文密码也不一样 可在服务器端清除salt,让用户的自动登录token失效,需手动登录 用户在多个终端登录同一个帐号,各终端的自动登录功能都生效 1.2 不实现的 更安全的方案能做到“把本地保存的文件复制到其他客户端”登录就会失效,这依赖于客户端做处理,本方案不实现 有的方案采用RSA非对称加密,本方案直接采用AES对称加密 2 APP场景分析 2.1 ...
缓存为什么能提高性能? 为什么memcached的性能比mysql高?   首要因素是memcached的数据都是位于内存中,mysql的数据可能是位于磁盘里。从IO速度来说,内存IO比磁盘IO会快几个数量级,memcached也就比mysql性能更高。架构和性能优化做到后面,会发现最终限制性能的是硬件瓶颈。例如nginx做静态webserver时,出口流量往往能达到网卡的最大值或出口带宽的最大值。mysql是个性能还不错的db,但它的数据持久化在磁盘上,自然就受限于磁盘IO速度。   mysql也是有缓存的,但大多数场景下觉得还是不够用,这就涉及到次要因素——针对具体业务特征做优化 ...
我们用一个做手游的故事来聊聊数据层不断优化提升的演进过程。   10:简单设计 有一天,老板突然说做个山寨版的糖果传奇手游,你接到任务后,分析出游戏的交互频率不大,都是点查询,用mysql能简单搞定。对游戏来说, ...
在上一篇《主程的晋升攻略(6):CGI和FastCGI》中,讲到Web服务器和CGI/FastCGI能动态输出内容,从而提供更强大的业务处理能力。Web服务器这种架构,我称之为Web模式,与之相对的是Svr模式。Web模式和Svr模式是互联网项目的后台最常 ...
消息经过网络传输,到达了服务器端,最常见的服务器是Web服务器,做PHP的同学都知道FastCGI模式的PHP比普通PHP更高效,这篇就聊聊其中的原理。   古老但常见的CGI Web服务器能解析HTTP请求,返回静态资源(HTML页、图片等), ...
在上一篇《主程的晋升攻略(4):TCP、消息分包和协议设计》中谈了协议设计的一些话题,这里补充聊聊HTTP协议和二进制协议的对比。   HTTP协议是一种文本协议,也是一种Name-Based协议,就从这两方面来说。   文本协议 vs 二进制协议 文本协议的特点:     便于人     易于阅读、理解、调试、构造     解析复杂、冗余多     需要考虑字符转义   二进制协议的特点:     便于机器   Name-Based vs Position-Based Name-Based协议 的特点:     协议字段都用Name标识     协议字段与位 ...
在《主程的晋升攻略(3):IP、DNS和CDN》中,一次网络请求经过DNS解析知道了目的IP,现在就要发出网络包,这里我们说一说TCP的相关话题。   TCP是一种流式协议 讲网络编程的教科书一般都会对TCP的可靠传输,api用法做详细说明,但对于TCP是一种流式协议讲解的不多,但这背后隐藏着很重要的一个知识点。先做个名词定义方便交流,这里的“消息”是指应用层的一个完整的协议包。   流式协议的特点是什么?就像流水连续不断那样,消息之间没有边界。例如send了3条消息,分别是100字节、50字节、80字节,recv时可能收到的是230字节,就是说一次recv收到了3条消息,需要应用逻 ...
有段时间我面试程序员时,喜欢问这个问题:局域网IP有哪些IP段?由这个问题再追问NAT(网络地址转换)。   为什么不是每个设备一个公网IP? 先说个关于QQ的小故事,最早开发QQ时,小马哥他们也没想到QQ会发展成中国互联 ...
技术是程序员安身立命的家伙,主程的技术不强,向下难以服众,向上有负重托。   或许有人会问:技术深度上该挖多深才能做好主程?程序员至少有两个高阶成长方向: 1、技术型专家非常热爱技术本身,往往会钻研得非常 ...
虽然是引言,但也很重要。   程序员如何成长?这个话题百度有大约170万个相关结果,介绍了不少从菜鸟到老鸟的经验,但如何成长为主程序员(以下简称主程),网上的“帮助文档”不完善,也缺少实践指南。本系列文章主 ...
我在android上调试native程序时,参考了网上不少文章,这里结合我的经历做些注解   第一步、先列清楚我使用的环境 手机:是台真实手机,不是模拟器,已经root了 电脑:是windows7系统,网上不少是用linux来讲解的 AndroidSDK:路径假定是%ANDROID_SDK%,那么建议把%ANDROID_SDK%\platform-tools目录加到PATH环境变量中,这样能在命令行直接使用adb了 AndroidNDK:我用的是r9b版本,路径假定是%ANDROID_NDK% gdbserver:该文件在%ANDROID_NDK%\prebuilt\androi ...
我们使用OpenFl引擎开发了手机网游《超级足球》,已经在删档内测了,估计是国内第一款用OpenFL引擎做的手机网游了。本文就来总结下使用OpenFL引擎的心得。 一、OpenFL的特色 OpenFL是Open Flash Library的简写,从名字能看出它的目标是兼容Flash  API,实际也正是如此,具体来说有以下特色:     1、它实现了Flash as3绝大部分的API(不包括Stage3D部分);     2、它跨平台性好,能编译出Flash、Android、iOS、Windows等不同平台的产品;     3、编译出来的Android、iOS、
var a: Int64 = Int64.make(0xFFFFFFFF, 0x10); //0xFFFFFFFF00000010 var b: Int64 = Int64.make(0xFFFFFFFF, 0x10); var c = b; trace(a == b); //result false trace(Int64.compare(a, b) == 0); //result true trace(c == b); //result true trace(a == c); //result false var d1: Date = Date.fromStr ...
在做网络协议编解码时,发现haxe.io.BytesOutput里有writeInt31、writeInt32这2个方法。继续追查下去,发现了有内置Int和haxe.Int32这两种类型。不太明白为什么有两种,google后了解到,内置Int在neko平台下是31-bits,而haxe.Int32是各平台一致的32-bits。   由于我使用的target是flash/cpp/html5,这几个平台的Int都是32-bits,直接用Int就ok了。   ps:在haxe3中,直接去掉了haxe.Int32这个变量,直接用Int。
Global site tag (gtag.js) - Google Analytics