摘要: 最近自己在做一个网站,由于需要改动css文件,发现修改之后,页面没有发生变化。于是就用chrome浏览器开发工具去看对应的样式,发现和修改之前的一样。没有发生变化,初步怀疑浏览器缓存了资源文件,清空chorme浏览器之后,发现问题解决了,页面和预期的一样。为了确认这种情况,想跟踪apache 请求处理情况,也打开了 apache的访问日志,在httpd.conf文件里面打开了apache的访问日志CustomLog "/Applications/MAMP/logs/apache_access.log" common在第一次打开页面的时候,access.log 会受到两个ht 阅读全文
posted @ 2012-11-21 20:31 猫叔玩流量 阅读(1925) 评论(1) 推荐(0) 编辑
摘要: 今天在公司里面,听到很多的吐槽,最近以前的团队有很多开发工程师离职,结合自己在公司多年的工作经验,也发现这个问题越来越严重,这里也吐槽一下。在一般传统的小的IT公司,准确说的是小的技术团队,由于涉及到的业务比较少,人员相对也比较小,一半小于10个人,一般情况下,这种10个人的团队里面一般会有一个技术方面的team leader,大多数情况下,这个leader一般也就是技术开发的高手,应该算是小团队技术最好的,会从事一线的编码工作,这样的leader和其他成员相比,级别会高一些,一半情况下,团队的所有技术决策,都由他来决定,基础框架也或者核心部分编码都会由他来负责,所以相对来说,是比较合理的,因 阅读全文
posted @ 2012-11-21 13:49 猫叔玩流量 阅读(11031) 评论(11) 推荐(7) 编辑
摘要: TCP_NODELAY对于一个正常的TCP连接连说,TCP数据被封装在一个I P数据报中,客户端发送IP报文,服务器端接收IP报文。而一个IP报文的组成部分如下IP和TCP头部一共占40个字节,假设客户端比较变态,每次往服务器端写一个字节的数据,而tcp立即发送附带这一个字节IP报文,那么网络需要传输41字节,但是只有实际信息量只有1字节。以前的互联网带宽比较低,如果有大量这种信息量比率低的报文在internet上传输,会大大影响internet的效率。所以必须设计一种算法来处理这种情况,客户端可以设定一个超时时间和报文发送的阀值,在超时时间之内,tcp发送缓存里面的数据长度必须达到报文发送阀 阅读全文
posted @ 2012-11-16 15:56 猫叔玩流量 阅读(6855) 评论(2) 推荐(1) 编辑
摘要: 在前面三篇文章中,介绍了关于分布式系统中数据一致性的问题,这一篇主要介绍CAP定理以及自己对CAP定理的了解。CAP定理是2000年,由Eric Brewer 提出来的Brewer认为在分布式的环境下设计和部署系统时,有3个核心的需求,以一种特殊的关系存在。这里的分布式系统说的是在物理上分布的系统,比如我们常见的web系统。这3个核心的需求是:Consistency,Availability和Partition Tolerance,赋予了该理论另外一个名字 -CAP。Consistency:一致性,这个和数据库ACID的一致性类似,但这里关注的所有数据节点上的数据一致性和正确性,而数据库的AC 阅读全文
posted @ 2012-10-15 19:02 猫叔玩流量 阅读(9664) 评论(6) 推荐(2) 编辑
摘要: 今天公司的一位同学提到了java的一个编码规范:拼装字符串要用StringBuilder的append方法,而不要用String的+ 或者 +=链接符号就是说,不能按照下面的方式写 String str = ""; for (int i = 0; i < 1000; i++) { str = str + i; }要按照下面的代码进行改写 StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1000; i++) { sb.append(String.valueOf(i)); }目前大部分应用使用的 阅读全文
posted @ 2012-10-15 11:48 猫叔玩流量 阅读(4021) 评论(2) 推荐(2) 编辑
摘要: 一口气看了图灵出版社的《罗素的故事》,对于里面的提到的一些问题还是比较有兴趣的,聊聊自己所想到的吧比如逻辑的本质和定义是什么 逻辑的定义:一切新的,决定性的推理,这个有点像演算系统。本质是什么,里面貌似没有说,我个人理解逻辑的本质就是根据现有规则,进行演算的过程。罗素悖论罗素最重要的发现,就是我们听到的的:罗素悖论什么罗素悖论:我记得少年包青天里面有一个故事,大概是一个王爷想惩罚包拯,给包拯出了一个题目,说如果包拯猜对了他在想什么,就可以放了他,如果猜错了,就要惩罚他。包拯就说:王爷想惩罚我。最后王爷没有惩罚包拯,因为如果包拯猜对了,王爷必须放了他,如果猜错了,说明王爷没有想惩罚包拯。导致罗素 阅读全文
posted @ 2012-10-13 18:37 猫叔玩流量 阅读(2555) 评论(6) 推荐(3) 编辑
摘要: 这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来。在上一节事务的编程模型里面,主要说明了三种编程模型,一般情况下,我们都接触的是单一资源的事务,也就是单独对一个数据库进行操作。如果需要跨多个资源保证事务一致性举个例子:在ATM机取钱的时候,需要对用户的账户进行扣款处理,然后发送一条消息给消息服务器(假设消息服务器是用JMS实现的),由消息服务器异步通过短信通知用户。如果用户取款失败,那么消息服务器不应该发送短信给用户。如何保证 用户帐务扣款 和 消息服务器的消息保持一致性 阅读全文
posted @ 2012-10-11 13:09 猫叔玩流量 阅读(10875) 评论(3) 推荐(2) 编辑
摘要: 在上一篇文章里面写了关于事务的一些特性,这里在谈谈事务的编程模型。什么叫做事务的编程模型,这个问题比较难以回答,其实简单的一句话,就是我们如何去使用和控制事务。在java平台里面,有三种事务编程模型:本地事务模型,编程式事务模型,声明式事务模型(当然我不是太认同这种说法,并不是太准确,不过大体也就这么回事情)本地事务模型本地事务模型:不用事务的编程框架来管理事务,直接使用资源管理器来控制事务。典型的就是java.sql.Connection 中的 setAutoCommit、commit、rollback方法,见下面一段代码,直接使用资源管理器进行事务控制 Connection ... 阅读全文
posted @ 2012-10-09 21:26 猫叔玩流量 阅读(3679) 评论(6) 推荐(2) 编辑
摘要: 今天在《外刊IT评论》里面看到这样一篇文章 《一个程序员怎么能做出这样的事情》 ,觉得作者的观点非常有意思,下面看看文章中的一段代码public void Execute() { ArrayList empIds = PayrollDatabase.GetAllEmployeeIds(); foreach (int empId in empIds) { Employee employee = PayrollDatabase.GetEmployee(empId); ... 阅读全文
posted @ 2012-10-09 10:00 猫叔玩流量 阅读(1397) 评论(0) 推荐(0) 编辑
摘要: 在NoSql和内存数据库如此流行的今天,在谈关系型数据库的貌似有点落伍了,不过在传统软件行业和对数据一致性和安全性要求比较高的行业,关系型数据库还是比较普遍的。正好最近看到一个数据库事务相关的知识,自己在这几年的工作中用的比较多,也在事务上面犯过很多的错误,正好借这个机会整理以下。事务的ACID属性A(Atomicity)原子性: 在一个事务上下文里面,对数据库进行的任何操作,必须保证是原子的,也就是说要么不做,要么全部都做,不能只做一部分。比如insert一条数据和delete一条数据,不知能只做insert操作而不做delete操作C(Consistency)一致性:在事务的处理过程中,数 阅读全文
posted @ 2012-10-09 09:06 猫叔玩流量 阅读(6227) 评论(9) 推荐(6) 编辑
摘要: 早上读到了一篇文章《Lisp的永恒之道》这一篇文章解决了我一直以来对Lisp编程语言的疑惑,加深了对DSL(领域编程语言),同时对编程语言的理解也越来越深入。写一篇文章的目的就是从主要编程语言的进化来看看编程语言发展的过程以及背后的设计哲学,当然,这个只是我自己的认识,如果有不足之处,请博友指教。机器语言最早的编程语言是卡带,也就是机器语言,这种语言没有语义和语法,操作符和数据混合在一起,偏向于具体的设备,依赖觉得硬件。汇编语言随后,汇编语言就出现了,汇编语言定义了基本的语法结构,定义了操作符和数据类型,但是汇编语言还是针对特定的硬件编程,比如cpu,我记得大学的时候学习的就是8086汇编语言 阅读全文
posted @ 2012-09-28 10:47 猫叔玩流量 阅读(6175) 评论(5) 推荐(4) 编辑
摘要: 今天早上看到一篇文章《渡过生死线:一段恩怨,一段商战》里面讲的是金山网络的一些事情,虽然有软文的嫌疑,但是里面说的有几点我觉得非常认同。先谈谈一般公司的组织架构把,传统的软件企业的组织架构是水平的,涉及和跨越多个部门,例如下面的一个企业的组织架构(虚拟出来的,说明而已)首先层级非常多,从CEO到最终的开发人员,中间估计有6级别,比较臃肿假设开发一个产品,那么需要至少5个部门之间的配合,同时各个部门还有其他需要开发的产品,虽然每个部门之间的职责非常清楚,但是沟通成本很高。比如两个产品,都是由研发部门负责开发,研发部门自己还有自己内部的技术类项目,优先级怎么安排。同时两个产品的产品团队,可能由于研 阅读全文
posted @ 2012-09-26 13:09 猫叔玩流量 阅读(29352) 评论(11) 推荐(0) 编辑
摘要: 最近IT界比较大的事件就算是阿里云os和Google之争,里面的细节没有人知道,但是通过这个事情,我对目前常用的开源协议有了一些了解,也借此机会梳理和总结一下。自从自由软件之父理查德·斯托曼(Richard Stallman)发起的GNU(GNU's not uinix:说实在的,我也不知道他想表达什么) 运动,开源运动如火如荼的发展起来,现在开源已经成为常态了。至少开发人员应该或多或少的知道一点,但是基本上所有的开发都应该使用过开源产品,例如我们最常用的apache。由于理查德·斯托曼的认知,认为软件应该就是应该自由和开放的,开发人员应该很容易获得源代码以及进行改 阅读全文
posted @ 2012-09-25 18:35 猫叔玩流量 阅读(7001) 评论(5) 推荐(9) 编辑
摘要: 在我的博文里面 关于分布式系统的数据一致性问题(二) 里面主要介绍了数据分布的情况下保证一致性的情况,在第二篇文章里面,我这里提出了三个问题订单系统调用支付系统支付订单,支付成功,但是返回给订单系统数据超时,订单还是I(初始状态),但是此时会员帐户余额100,会员肯定会马上找京东骂京东,为啥不给老子发货,我都付钱了订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货。会员也要骂京东。订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货,仓库告诉订单系统,没有货了。这个时候数据状态和第二种情况一样 阅读全文
posted @ 2012-09-25 13:12 猫叔玩流量 阅读(5070) 评论(5) 推荐(2) 编辑
摘要: 今天正好看了博客园的首页的一篇文章 《Java封面》,初次一看,觉得这个貌似很这个说的完全都不靠谱啊,再一看,原来是2001年写的,然后在看看作者,发现原来是 硅谷创业教父Paul Graham写的,联想到之前看到他写的一本书《黑客与画家》,突然能够明白为什么他这么认为java前途了。java语言是在 1995年发明的,当初只是为了做一些机顶盒相关的应用,设计的也比较简单。那个时候java并不出名,java之所以比较火爆,就是因为互联网的发展,是由于当初的在浏览器里面能够运行java编写的小程序applet,你想想,那个时候互联网才刚开始发展,能够在网页上面运行动画,是多么牛逼的东西,由于当初 阅读全文
posted @ 2012-09-24 22:03 猫叔玩流量 阅读(2673) 评论(4) 推荐(0) 编辑