IT技术博客大学习 共学习 共进步

技术文章

精选技术长文、实践记录与系统化阅读

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT 奋斗/ 2012-08-05 22:58:55 / 累计浏览 2,407

对于创业团队拉投资的建议

和投资打交道,是个博弈的事情。创业团队的产品越强势,态度也就越强势,而口口声声说自己被VC强奸的,或者找到了不正规的投资机构,或者是自己的产品不硬,VC眼看血本无归就会施加压力。后者的比例可能占到了七八成。VC和创业者又没有直系血缘关系,凭什么无条件地支持你,信任你?拿业绩当筹码,输了也别跳脚。我知道的几个哭诉“VC欺负我”的案例,创业产品本身的问题极大,走得极惊险,VC急了才强行介入——否则好好的帮他们赚钱,VC跑来费偌大力气干预你,他吃饱了撑的?他的本行是投资,又不是经营。创业者在拿钱的时候信誓旦旦,经营出状况的时候跟VC讲你风险自负哟,这不太好吧。拿钱越多,VC越重视,博弈的架势就越明显。

IT JavaScript/ 2012-08-05 22:55:17 / 累计浏览 3,925

前端重构实践(一) —— 性能优化

 最近一直在做性能优化和模块化改造的工作,并完成了一次前端重构。在这里总结出一些经验和得失来帮助大家思考。共两篇文章,第一篇讨论性能优化,第二篇讨论模块化框架。而之所以把这两个话题放到一起,是因为这两项工作都涉及到对前端代码进行不同程度的重构,而且模块化改造其实是我们在对性能优化做到一定程度之后发现必须要做的一件事情。本篇是性能优化的部分,下面我把我们的产品简称为N页面。

IT 安全/ 2012-08-05 22:49:11 / 累计浏览 4,010

SAE云服务安全沙箱绕过3(绕过命令执行防御)

经过努力,作者已经打到了第三关,这一关叫做“命令执行关”。也不知道是因为作者描述不清楚,还是SAE的理解出现偏差,我们没有直接沟通过,只是作者写篇文章,先交给那边“审核”,“审核”通过后,才发布了,所有的交流,都仅限于文章本身。这种沟通的障碍,是此次绕过安全防御的起始。

IT 系统架构/ 2012-08-05 22:46:21 / 累计浏览 2,570

HBase在淘宝主搜索的Dump中的性能调优

目前HBase已经运用于淘宝主搜索的全量和增量的数据存储,有效的减低的数据库的压力,增强了业务扩展的能力。Dump系统的特点是要求在短时间内处理大量数据,对延时要求高。在实施这个项目过程中,我们积累了一些优化的实践,抛砖引玉,供大家参考。环境:Hadoop CDH3U4 + HBase 0.92.1 1、  尽可能用LZO 数据使用LZO,不仅可以节省存储空间尤其是可以提高传输的效率,因为数据是在regionserver端作解压的。通过测试,可以明显提高HBASE从HDFS的读的性能。尽量不用GZ的方式,GZ的方式在bulkload时有线程安全问题。 2、  根据场景调整Block size 由于使用我们非常关注随机读的性能,一条记录的长度较小,通过设置blocksize=8k,可以提高随机读的性能。

IT 系统架构/ 2012-08-05 22:46:02 / 累计浏览 7,790

websocket 连接 C Server的尝试

websocket: WebSocket 规范的目标是在浏览器中实现和服务器端双向通信.双向通信可以拓展浏览器上的应用类型. 它是基于 TCP链接的 全双工通讯,但与普通的TCP又不同,它提供的是消息流,而不是字节流。基于 HTTP 长连接的“服务器推”技术这项技术是在Ajax之后 备受追捧的一项技术,推送技术Server Push的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。客户端拉曳(Client Pull) 在客户端拖曳技术中,服务器发送一批数据,在HTTP响应或文档头标记中插入指令,让浏览器“在5秒内再次装入这些数据”或“10秒内前往某URL装入数据”。

IT 奋斗/ 2012-08-05 22:44:55 / 累计浏览 1,665

入静和入世

人有两种思考状态,我将一种称为入境,另一种称为入世。 程序员和作家需要的是一种入静的状态。他们需要整段的,不被打扰的时间才可以工作。一个下午三点种的会议,哪怕仅仅持续15分钟,一个下午就会因此废了。问题不是会议占据的时间,关键问题是会议把一个下午分成了两块,让每块都不够大,都不足以入静。因为对于下午废掉的担心,上午的工作也受到影响,不太敢开始解决真正困难的问题。所以整天都在一种心神不宁的状态。 人的大脑远没有我们想象的那么简单。那是非常精密的,需要我们细心体会的工作状态。一个典型的程序员的一天是这样的: 早上想到今天有一整天的整块时间,能够躲在一个不受打扰的地方开始写代码,想想就是件高兴的事情。

IT 奋斗/ 2012-08-05 22:43:52 / 累计浏览 2,647

享受职业素养

我在招聘时常问的一个问题是:在你过去的工作中,遭遇过哪些印象深刻的困难,最后是怎么解决的?依我的经验,简历写得再漂亮的人,如果这个问题答不好,大都可以直接忽略。为什么会有这种结论?因为我们需要招聘的不是“经历丰富”的人,而是“有职业素养的人”。你遇到的问题可能很容易也可能很难,但我看重的并不是问题的难度,而是解决问题的方式、步骤,以及反思的深度。拿恢复误删数据来说,这可能算非常简单的任务,我更感兴趣的是怎样分析问题,找了怎样的资料,采取了怎样的步骤,此后做了哪些措施来避免这种错误再次出现。在我看来,相比问题本身的难度,解决问题的方式和步骤,以及反思的深度,都体现出一个人的职业素养。 是的,上面我两次提到了“职业素养“。

IT 奋斗/ 2012-08-05 22:42:56 / 累计浏览 3,364

随记:关于职业规划,交互设计及写博客

下班回家路上,偶遇一个同事,刚好一起步行回家,路上聊了一些问题,激发了一些思考。回去之后,抓紧时间进行了一些整理。主题比较杂,所以仅当做记录而已。也欢迎读到的朋友一起讨论。一. 频繁的职业变化如何做个人的职业规划与沉淀假设小A在公司短短2年不到,可是已经变化了4个工种,5个老大,这样的事情稀奇吗?至少据我了解,经常发生。频繁的换岗,有可能不是自己的选择,也不是因为能力的问题,而是战略调整,业务重组,业务线合并等等“不可抗力之因素”。员工换工种,本来可以拓展横向的技能和经验,提升综合能力,但是频繁的变化,若不是出于主动,而是被动,却真的会被职业规划,个人能力沉淀形成障碍。

IT 系统架构/ 2012-08-03 00:23:42 / 累计浏览 5,824

C++多进程并发框架

三年来一直从事服务器程序开发,一直都是忙忙碌碌,不久前结束了职业生涯的第一份工作,有了一个礼拜的休息时间,终于可以写写总结了。于是把以前的开源代码做了整理和优化,这就是FFLIB。虽然这边总结看起来像日记,有很多废话,但是此文仍然是有很大针对性的。针对服务器开发中常见的问题,如多线程并发、消息转发、异步、性能优化、单元测试,提出自己的见解。 面对的问题 从事开发工程中,遇到过不少问题,很多时候由于时间紧迫,没有使用优雅的方案。在跟业内的一些朋友交流过程中,我也意识到有些问题是大家都存在的。

IT 系统运维/ 2012-08-03 00:22:31 / 累计浏览 4,309

解决 ubuntu 的 /etc/hosts 重启就被还原

我用的是Ubuntu的操作系统。之前碰到了一个问题: 为了方便登录公司机器,我经常修改/etc/hosts ,让自己连接到别的机器方便些。 但就在前段时间,我发现一个问题:每当我修改完/etc/hosts,在重启之后,会发现/etc/hosts会被还原。这个非常让人奇怪,以前并不会出现这个问题。

IT 算法/ 2012-08-03 00:18:12 / 累计浏览 3,231

树与存储

二叉树: 一个根节点,每个节点下挂着最多2个子节点。、 概念: 度:结点的分支数,二叉树度为2。 深度:树的层次。 二叉排序树: 二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。 应用场景: 基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。 B-树: B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。 B-树的查找需要一次对每个节点进行二分查找,直至找到或返回null。通常,可以引入布朗过滤器等方式加速查找。 B-树的写入、删除时要进行分裂、合并、转移等操作,越是非顺序的插入就越容易碰到这些高性能消耗的操作。

IT 系统架构/ 2012-08-03 00:17:03 / 累计浏览 2,148

(H2与HBase)面向行or面向列的存储模型?

(H2与HBase)面向行or面向列的存储模型?                                 目录   0. 示例      1. H2怎么存储pet表的记录?       1. 1 DATA_LEAF页格式       1. 2 DATA_NODE页格式      2. HBase怎么存储pet表的记录?       2. 1 Data Block格式       2. 2 Data Block如何存下面这些记录?       2. 3 leaf索引块的格式:       2. 4 root索引块的格式:       2. 5 IntermediateLevel索引块  

IT 源码分析/ 2012-08-03 00:02:57 / 累计浏览 2,024

ERLANG OTP源码分析 – sys

sys模块主要有两大用途.统计跟踪目标gen进程,代码热升级,尤其后者非常重要,下面从erlang源码层面来讲述这两大工作原理. 代码热升级 代码热升级能做到gen进程不停(自然其中的socket,file都不需要关闭咯,100%的在线率多有趣的功能阿)的情况下自动载入新的代码, 这点对于其它程序语言来说是件非常难的事情,而对于erlang确只是简单几行代码就能解决问题. 演示代码 这里有演示代码,你可以自行运行. 热升级的原理和步骤 1.首先gen进程已经启动并处于正常工作状态处理业务逻辑,现在需要对代码进行升级,修改原来的内部State状态. 2.修改代码,编译出新的beam文件. compile:file(Mod). 注意不能使用c(Mod). c命令实际包含一个编译和加载和清理老代码作用,这里还不能加载哦, 老的内存状态运行在新的代码肯定报错.

IT 源码分析/ 2012-08-02 23:58:57 / 累计浏览 3,006

Zen Cart 源码阅读笔记 (一)

深夜失眠,苦闷无处排遣,于是打开电脑读起Zen Cart的代码来了。 从index.php开始读,这个文件相当重要,注释里说index.php represents the hub of the Zen Cart MVC system,也就是说它代表了Zen Cart MVC系统的中心。

IT 信息和交互/ 2012-08-02 23:57:38 / 累计浏览 2,626

阅读好体验的准则:100% Easy-2-Read

大多数网站都挤满了小号的文字,使人阅读起来感到很痛苦。产生这个问题的原因是什么呢?如果我们稍作思考就会发现,没有理由将如此多的信息都硬塞进一个小小的屏幕当中。其实,这只是一个历史遗留问题,因为过去的时候屏幕真的是很小。 屏幕 VS. 杂志:100%并不大(来自Wilson Miner) 所以… 不要让我去调节字体大小 我可不想每次访问一个网站的时候都要去更改我的浏览器设置! 不要告诉我繁杂的页面看上去更好 拥挤的页面看上去一点也不好,反而会令人很不爽。向页面中填塞各种内容对于可用性来说没有任何帮助。这种把各种信息都丢给我的做法,我只能理解成你太懒了。我希望你可以思考和预先筛选一下重要的信息进行呈现,而不是让我来做。 不要告诉我滚动很糟糕 因为如果这样,那么所有的网站都很糟糕。滚动并没有错,一点也没错。

IT 设计思想/ 2012-08-02 12:34:00 / 累计浏览 2,147

移动平台的产品设计世界

随着智能手机的产生,人们对它们的使用时间与粘性迅速加大,移动互联网的发展越来越迅猛,越来越多的PC端产品开始把注意力集中在转移到方寸之间的屏幕之上时,有如潮水般汹涌。 当下的移动互联网产业,已经从单纯的以实现单一功能为主,到平台的转移,再到各个APP之间的产业链的形成,还有广告植入的各种运营手段产生各种盈利。充分说明了移动互联网的前景堪好。 如何设计出一个好的APP,是我们今天需要介绍的主题。   所谓移动平台,是指除了不方便搬动的PC机,所有方便移动和携带的电子设备。不仅仅是我们流行在使用的智能手机和各种pad,也同时包含了车载应用和各种家庭生活电子产品。 

IT 奋斗/ 2012-08-02 12:33:16 / 累计浏览 3,987

转:从张绍刚vs刘俐俐谈技术面试中的非技术元素

很早之前就想总结一下技术面试中的非技术元素。最近张邵刚很火,网民愤很大,正好借个机会写点东西。 本文一不讨论节目本身;二尽量不评价主持人和参赛者个体;三不上纲上线。我自己面试和被面试的经验都有限,观点难免偏颇狭隘,只希望管中窥豹,抛砖引玉。欢迎补充指正。 目的 面试唯一的目的是衡量求职者是否满足职位要求,尽可能全面的收集相关信息。一切无关活动都应该避免或减少。 例如,评价求职者的表现应该在面试结束后综合各种信息完成,尽量不要当场透露给对方。有经验的面试官会在过程中做动态评估,灵活更换问题或方向,目的是获取更多更可靠的信息。即便如此,当面批评求职者的表现,哪怕只是面露不屑,也是非常糟糕的。求职者一般都很紧张和忐忑,面试官的任何负面评价乃至表情语气都会直接影响他们的表现,降低整个面试甚至接下来其他面试的价值。

IT Oracle/ 2012-08-02 12:32:26 / 累计浏览 3,689

使用ORACLE在线重定义将普通表改为分区表

客户有张大表,在设计的时候是分区表,按全宗号分了77个分区,最近发现对这张表查询速度明显比之前慢了许多,经过分析发现这张表的分区不见啦,变成了普通表,问了看法人员才知道,原来他对这张表做了好多次ALTER TABLE XX RENAME和CREATE TABLE XX AS SELECT *操作,由于CREATE TABLE AS(CTAS)操作只会建立同样的表结构而不会建立分区,导致这张表由分区表变成了普通的堆表,那么就要将这张表再改回分区表,普通表改为分区表的方法很多,但是对于7*24的系统来说,就只能用ORACLE 10g版本推出的新功能-在线重定义了,下面的案例是在虚拟机上做的测试。

IT 用户研究/ 2012-08-02 12:31:07 / 累计浏览 4,748

受众人群分析

无论你做什么产品,首先要面对的问题就是受众人群。或者说做不同的项目主要的区别就是受众人群和业务的差别。在这里我不想把互联网项目和传统行业的项目做出区分,我觉得两者是相辅相成,不可分开独立来算的。从做产品的角度来看这个问题,我会把周期中60%的时间投入到对人群的分析中。为什么会花费如此多的时间,是因为方向是前提,是基础,值得付出这么多。而且这是一个不断迭代完善的过程。深刻的理解了用户的行为习惯和心理特征就已经是成功一半了。