存档

文章标签 ‘LINUX’

Daniel-Journey Weekly Dose-2010/8/21

2010年8月23日 admin 3 条评论

很久没有更新博客了,最近忙的事情很多,但收获也很多,只是一直没有机会好好去整理出来。

LINUX

Unix IO模型学习
同步I/O(阻塞I/O),异步I/O(非阻塞)

JAVA

应用DirectBuffer提升系统性能

其他

去跨国公司还是去创业公司?

How to Become an Expert Developer

分类: 阅读 标签: , , ,

Daniel-Journey Weekly Dose –2010/5/22

2010年5月22日 admin 没有评论

Agile

敏捷软件开发模型:SCRUM
闲话:关于敏捷

而敏捷里面所有的实践,质量是隐含的,不可侵犯的.这就是我们所说的Built Quality In.比如,刚开始写Story, 就要和测试人员定义验收条件;开发Story采用TDD的方式,通过测试来检验功能,类似于砌墙的时候先扯水平线,然后开始铺砖.

整个团队只有一个目标:产生高质量的交付

在此目标之下,以尊重 交流 反馈 勇气 简单为基本做事价值观和原则.

Agile Versus Waterfall: Part One

敏捷与能力

丰田精益生产方式中一个经常用的隐喻是“湖水和岩石”。大意是指湖水太深,你无法发现阻碍当前生产的主要原因,只有把湖水讲下去,才能发现真正的岩石在哪里。在精益生产中,湖水是指“库存”,而在软件开发中,对应的湖水则是“迭代周期”。
我们举一个例子,当发现“项目严重延期”时,通常已经是交付时间,不过开发人员最近一直加班,也挺辛苦的呀。不过如果你是项目经理或者客户,你知道开发人员的时间都花到哪儿了吗?如果采用迭代式交付,每两周一个迭代,完成一定的特性,你可能第一个迭代就发现问题

我们可以抱怨团队开发人员能力不够,不过这关敏捷的什么事儿?本来大家都知道的事情,只不过敏捷让它暴露的更严重更突出罢了,谁还会任由你“掩耳盗铃”呢。

敏捷和SCRUM回顾

Javascript

JavaScript Debugging Techniques in IE 6

Java

Top 10 (not so popular) Eclipse Shortcuts

Design Pattern

Design Patterns Uncovered: The Flyweight Pattern

image

When considering this pattern, you will need to think about intrinsic and extrinsic data. Intrinsic data is the data that makes this object instance unique. Meanwhile, extrinsic data is information that can be passed in through arguments. So, if you can make some data extrinsic for cases that you have a large number of objects, the Flyweight pattern may be exactly what you are looking for.

设计模式学习笔记(十二)——Flyweight享元模式

Flyweight模式的几个要点:

1、面向对象很好的解决了抽象性的问题,但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight设计模式主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。

2、Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意对象的状态处理。

3、对象的数量太大从而导致对象内存开销加大(这个数量要经过评估,而不能凭空臆断)

SOA

自底向上的ESB管理 VS. 自顶向下的SOA治理

但创建了一个SOA,自底向上的治理方法关注围绕单独ESB的集成化服务,这些ESB 可以快速装配。该方法因为需要过多的更新和重做而受到非难。

同时,相对的“自顶向下”的治理方法涉及大量严格规划和精确策略执行。这种方法也由于花费过多的时间才能产生结果而不被认可。

SOA治理策略如何抉择?

企业接受SOA的速度比较慢,大多数接受者倾向于接受自底向上的方法。

随着人们开始实施SOA,自身的技术就不够用了,这时就需要一些治理来辅助

Hariharan最后讲到:“如果企业以一种长期的愿景和蓝图来寻求SOA,那么自顶向下的方法是最佳的选择。如果并没有一项企业级的IT 策略以及长期的愿景,IT 可以选择自底向上的方法来实现和展示SOA的好处。”

Linux

使用scp 命令在两台linux上对拷文件或者文件夹

scp 本地用户名@IP地址:文件名1 远程用户名@IP地址:文件名2

拷贝文件夹命令如下:scp -r file username@ip:filepath
多加上一个-r参数即可。

Daniel-Journey Weekly Dose-2010/4/16

2010年4月18日 admin 没有评论

Database & SQL

如何应对表结构经常变化?

第一种方法,预留字段.不管怎样,预留字段的方式还是很解决很多问题的,而且基本不影响性能,除了额外的meta信息描述外,也没有其他的负担。

第二种方法,使用复杂字段.使用复杂字段的好处就在于比较灵活,同一类型的数据可以放在一起(实际上相当于把应该是一个关联表的数据放一个字段里了),操作的性能也不错,但是复杂字段里面的内容查询比较困难.

还有一种方法,将数据的存储和索引(需要查询的内容)分开存放,相当于主表就一个key-value,value就是一个大的xml(或者其他的一坨),把需要查询的字段放到其他单独的表里去,可以参考friendfeed如何使用mysql.

还有column based db,也可以很好的解决这个问题,实际上他就本本回避了加字段的问题,不过现在似乎没有性能很好的实现

公交车路线查询系统后台数据库设计–查询算法

公交车路线查询系统后台数据库设计–关联地名和站点

SOA

SOA(面向服务的开发) 简介

微软SOA平台体系架构介绍

SOA@eBay 读后感

SOA与服务识别

面向服务架构(SOA)已被作为一种通过对齐IT和业务来促进业务机动性的方法被广泛接受。这种方法的主要不同之处在于,用相对较低的成本就能轻易 地获得某种机动性。在较高的层次,该方法试图将第n次业务变更所产生的增量成本降低到零或接近于零。组织推行SOA项目目的就是为了在他们的SOA之旅当 中尽早达到这个难以捉摸的第n个迭代。在实践中,要达到这种最佳状态的时间可能得花数年,甚至更长时间。

Architecture & Design

探秘:AOP能否解决紧密耦合的难题

虽然动态横切(其中对象的运行时行为可以改变)被认为是AOP的根基之一,但静态横切却是一种远不为人所知的技术。

Scalability

大规模集群下的http 状态解决方案

Java

Java 语言中的函数编程

Jrebel原理剖析

Reloading Java Classes 401: HotSwap and JRebel — Behind the Scenes

Difference between HashMap and IdentityHashMap

Linux

关于cronExpression的介绍

其他

我在QQ邮箱的这四年(一) [转]

张小龙(Foxmail的作者)认为互联网团队中的管理不是管人,而是管理产品体验,以产品体验为核心,产品设计和开发人 员与产品共同提升,共同进步。小龙之于QQ邮箱的影响正如乔布斯之于苹果的影响。

当时(2005)的javascript代码有很重的面向对象的味道,用传统的软件工程思想构建了 整个web框架,从软件的开发流程来说,这并没有什么问题,但是产品却有很大的问题出现了–慢,不是一般的慢,当时除了较快的电信网用户可以登陆进邮箱 之外,其他的用户基本上都被卡在登陆上。06年的大部分时间,整个团队都在解决速度慢的问题,尝试了很多方法,把js容量压缩掉了一半,js混淆之后又压 缩了很多,js文件分开为多个,但始终没有根本的转变,速度的提升仍然不能被用户接受。现在回过头分析这个问题,我觉得物理上的压缩和分割js文件之所以 解决不了问题是因为问题的根本在于js的逻辑架构上,当时的js有明显的基类和继承类结构体系,这种结构并不适合物理上的分割,即使分割开,渲染消耗的时 间是节省不下来的。

Javascript

实用的JavaScript 测试及效验工具

Daniel-Journey Weekly Dose-2010/4/4

2010年4月4日 admin 没有评论

Java

ThreadLocal是什么

深入探讨在集群环境中使用 EhCache 缓存系统

WEB

加速Javascript:DOM操作优化

Linux

Linux内存模型

文件默认权限:umask

查看方式有两种,一种是直接输入umask,可以看到数字类型的权限设置分数,一种是加入 -S(Symbolic)参数,就会以符号类型的方式显示权限。

在默认权限的属性上,目录与文件是不一样的。由于我们不希望文件具有可执行的权力,默认情况中,文件是没有可执行(x)权限的。因此:
• 若用户建立为”文件”则默认“没有可执行(x)项目”,即只有rw这两个项目,也就是最大为666分,默认属性如下:
-rw-rw-rw-
• 若用户建立为”目录”,则由于x与是否可以进入此目录有关,因此默认为所有权限均开放,即为777分,默认属性如下:

umask指定的是“该默认值需要减掉的权限”。因为r、w、x分别是4、2、1,所以。也就是说,当要去掉能写的权限,就是输入2,而如果要去掉能读的权限,也就是4,那么要去掉读与写的权限,也就是6,

Architecture & Design

IOU 设计模式介绍及应用

IOU 思想是人们在处理日常债务关系时行之有效的一种方法,即:

  • 债务人通过可靠的第三方保管账户,向债权人发放 IOU 债务凭证;
  • 债务人通过向第三方保管账户提交结果以终止 IOU 债务;
  • 债权人凭此 IOU 债务凭证通过第三方保管账户履行债权并进行结果赎回。

债务人和债权人之间的债务关系,通过可靠的第三方保管账户,实现了在时间和空间上最大程度的分离和解耦。

IOU 设计模式是 IOU 思想在软件设计领域的应用,最早由 Allan Vermeulen 于 1996 年首次提出。在软件设计领域,债务关系发生在方法调用者和方法体之间,债务对象就是方法的返回结果。普通方法的调用模型是方法体同步执行然后返回结果,调用者必须等待结果返回后才能继续执行。在 IOU 设计模式下,方法体将立即返回一个 IOU 对象,并且承诺 IOU 对象最终一定会被终止,调用者在 IOU 对象被终止后可进行结果的赎回。在此期间,调用者无需等待就能够继续进行其它有价值的事务,从而达到了提高程序整体的并发性和异步性的目的。

IOU 设计模式完全不依赖于任何一种异步机制,IOU 对象的提供者可以选择任意有效的方式来执行服务并最终终止 IOU 对象,比如启用独立的线程/进程执行、驱动异步事件产生、通过远程方法调用或是等待用户终端输入等等。这是 IOU 模式具备普遍适用性的一个重要因素。

Q1技术回顾

SOA

Services vs. Applications

Services Applications
Perform a single or a few specialized operations. Perform a wide range of operations, and may even expose some of these operations as services.
Most often accessed by other programs. Often (but not always) accessed by humans.
Often (but not always) targets part of a larger problem domain. Often (but not always) targets a whole problem domain.
分类: 阅读 标签: , , , ,

linux vmstat命令详解

2009年7月7日 admin 没有评论

vmstat命令用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。

输出项

类别 项目 含义 说明
Procs r 等待执行的任务数 展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了
  b    
Memory swpd 正在使用的swap大小单位K  
  free 空闲的内存空间  
  buff 已使用的buff大小,对块设备的读写进行缓冲  
  cache 已使用的cache大小,文件系统的cache  
  inact    
  active    
Swap si 交换内存使用,由磁盘调入内存  
  so 交换内存使用,由内存调入磁盘  
IO bi 从块设备读入的数据总量(读磁盘) (KB/s),  
  bo 写入到块设备的数据总理(写磁盘) (KB/s)  
System in 每秒产生的中断次数  
  cs 每秒产生的上下文切换次数 上面这2个值越大,会看到由内核消耗的CPU时间会越多
CPU us 用户进程消耗的CPU时间百分比 us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了
  sy 内核进程消耗的CPU时间百分比 sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
  id 空闲  
  wa IO等待消耗的CPU时间百分比 wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

命令比较简单,但涉及到的内存、磁盘、cpu之间的关系还是挺复杂的,需要进一步学习相关的knowledge。

相关资料

linux命令汇总

分类: LINUX 标签: ,

《linux命令free详解》学习笔记

2009年7月1日 admin 没有评论

该文的绝大多数内容至Taobao QA Teamlinux命令free详解这篇文章,只是做为学习总结特意做的笔记。

free命令介绍

语 法: free [-bkmotV][-s <间隔秒数>]

补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

参 数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息

free命令输出结果

free -t

  total used free shared buffers cached
Mem
物理内存
4147796
物理内存总量
3377584
分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
770212
未被分配的内存
0
共享内存
210416
系统分配但未被使用的buffers 数量
860604
系统分配但未被使用的cache 数量
-/+ buffers/cache
物理内存的缓存
  2306564
=mem/used-mem/buffers-mem/cached
1841232
未被使用的buffers
与cache 和未被分配
的内存之和
=mem/free+
mem/buffers+
mem/cached
     
Swap
硬盘上交换分区
2096440 1907580 188860      
total 6244236 5285164 959072      

参考资料

linux命令free详解

相关资料

linux命令汇总

分类: LINUX 标签: ,

linux uname 命令详解

2009年6月29日 admin 没有评论

uname命令用于显示系统信息,根据不同的命令参数,输出不同的系统信息

命令格式如下

uname [OPTION]…

参数名称 显示内容 显示样例
-a,–all 显示所有内容  
-s, –kernel-name 显示内核名称 Linux
-n, –nodename 显示主机名 test0-32-227.test.com
-r, –kernel-release 显示操作系统的发行编号 2.6.9-42.ELsmp
-v, –kernel-version 显示操作系统的版本。 #1 SMP Wed Jul 12 23:27:17 EDT 200
-m,–machine 显示电脑类型 i686
-p, –processor 显示CPU类型 i686
-i, –hardware-platform 显示硬件平台 i386
-o,–operating-system 显示操作系统类型 GNU/Linux

 

参考资料

man uname

相关资料

linux命令汇总

分类: LINUX 标签: ,