Apr
27
爱是他在的时候,眼睛里只有他一人;他不在的时候,一切都带有他的影子.
喜欢是在深夜看书时突然想起他,想象他现在做什么,心里漾起一阵 轻飘飘的温暖,打个电话问候一下。几分钟后,注意力又重新被书中的情节吸引!
爱是在寂寞的夜里,思念如潮水般涌来,手里捧着书却怎么也看不进去, 心里惦记着他此时是否还在加班,吃没吃晚饭,是不是如自己想着他一般想着自己!
喜欢一个人,在一起的时候会很开心
爱一个人,在一起的时 候,会莫名的失落
喜欢一个人,你不会想到你们的将来
爱一个人,你们常常在一起憧憬明天
喜欢一个人,在一起的时候永 远是欢乐
爱一个人,你会常常流泪
喜欢一个人,当你们好久不见,你会突然想起他
爱一个人,当你们好久不见,你会天天想着他
喜 欢一个人,当你想起他,你会微微一笑
爱一个人,当你想起他,你会对着天空发呆
喜欢一个人,你会想他有了孩子,你一定会很喜欢
爱 一个人,会有一天,你突然很好奇:将来我们的孩子会是什么样子
喜欢一个人就是希望大家都开心
爱一个人希望他会更开心
喜欢一 个人,你要得只是今天
爱一个人,你期望的是永远
喜欢一个人,是看到了他的优点
爱一个人,是包容了他的缺点
当 你站在你爱的人面前,你的心跳会加速
但当你站在你喜欢的人面前,你只感到开心
当你与你爱的人四目交投,你会害羞
但当你与你喜 欢的人四目交投,你只会微笑
当你与你爱的人对话,你觉得难以启齿
但当你和你喜欢的人对话,你可以畅所欲言
当你爱的人 哭,你会陪她一起哭
但当你喜欢的人哭,你会技巧的安慰她. 当你不想再爱一个人,你要闭上眼睛并忍着泪水
当你不想再喜欢一个人,你只 要掩住双耳!
喜欢,是一种心情
爱,是一种感情
喜欢,是一种直觉
爱,是一种感觉
喜欢,可 以停止
爱,没有休止
喜欢一个人,特别自然
爱一个人,特别坦然
喜欢一个人,有时候盼和他在一起
爱一个 人,有时候怕和他在一起 喜欢一个人,在一起的时候会很开心
爱一个人,在一起的时候,会莫名的失落
喜欢一个人,你不 会想到你们的将来
爱一个人,你们常常在一起憧憬明天
喜欢一个人,在一起的时候永远是欢乐
爱一个人,你会常常流泪
喜 欢一个人,当你们好久不见,你会突然想起他
爱一个人,当你们好久不见,你会天天想着他
喜欢一个人,当你想起他,你会微 微一笑
爱一个人,当你想起他,你会对着天空发呆
喜欢一个人,你会想他有了孩子,你一定会很喜欢
爱一个人,会有一 天,你突然很好奇:将来我们的孩子会是什么样子
喜欢一个人就是希望大家都开心
爱一个人希望他会更开心
喜欢一个人,你要 得只是今天
爱一个人,你期望的是永远
喜欢一个人,是看到了他的优点
爱一个人,是包容了他的缺点
当 你站在你爱的人面前,你的心跳会加速
但当你站在你喜欢的人面前,你只感到开心
当你与你爱的人四目交投,你会害羞
但 当你与你喜欢的人四目交投,你只会微笑
当你与你爱的人对话,你觉得难以启齿
但当你和你喜欢的人对话,你可以畅所欲言
当 你爱的人哭,你会陪她一起哭
但当你喜欢的人哭,你会技巧的安慰她.
当你不想再爱一个人,你要闭上眼睛并忍着泪水
当 你不想再喜欢一个人,你只要掩住双耳!
喜欢,是一种心情
爱,是一种感情
喜欢,是一种直觉
爱,是一种感觉
喜欢,可以停止
爱,没有休止
喜欢一个人,特别自然
爱一个人,特别坦然
喜欢一个人,有时候盼和他在一起
爱一个人,有时候怕和他在一起
喜欢一个人,不停的和他争执
爱一个人,不停的为他付出
喜欢一个人,希望他可以随时 找到自己
爱一个人,希望可以随时找到他
喜欢一个人,总是为他而笑
爱一个人,总是为他而哭
喜欢,是执着
爱, 是值得
喜欢就是喜欢,很简单
爱就是爱,很复杂
喜欢你,却不一定爱你
爱你,就一定很喜欢你
其实,喜欢和爱仅一步之遥
但,想要迈这一步
就看你 是喜欢迈这一步
还是爱迈这一步
喜欢是在深夜看书时突然想起他,想象他现在做什么,心里漾起一阵 轻飘飘的温暖,打个电话问候一下。几分钟后,注意力又重新被书中的情节吸引!
爱是在寂寞的夜里,思念如潮水般涌来,手里捧着书却怎么也看不进去, 心里惦记着他此时是否还在加班,吃没吃晚饭,是不是如自己想着他一般想着自己!
喜欢一个人,在一起的时候会很开心
爱一个人,在一起的时 候,会莫名的失落
喜欢一个人,你不会想到你们的将来
爱一个人,你们常常在一起憧憬明天
喜欢一个人,在一起的时候永 远是欢乐
爱一个人,你会常常流泪
喜欢一个人,当你们好久不见,你会突然想起他
爱一个人,当你们好久不见,你会天天想着他
喜 欢一个人,当你想起他,你会微微一笑
爱一个人,当你想起他,你会对着天空发呆
喜欢一个人,你会想他有了孩子,你一定会很喜欢
爱 一个人,会有一天,你突然很好奇:将来我们的孩子会是什么样子
喜欢一个人就是希望大家都开心
爱一个人希望他会更开心
喜欢一 个人,你要得只是今天
爱一个人,你期望的是永远
喜欢一个人,是看到了他的优点
爱一个人,是包容了他的缺点
当 你站在你爱的人面前,你的心跳会加速
但当你站在你喜欢的人面前,你只感到开心
当你与你爱的人四目交投,你会害羞
但当你与你喜 欢的人四目交投,你只会微笑
当你与你爱的人对话,你觉得难以启齿
但当你和你喜欢的人对话,你可以畅所欲言
当你爱的人 哭,你会陪她一起哭
但当你喜欢的人哭,你会技巧的安慰她. 当你不想再爱一个人,你要闭上眼睛并忍着泪水
当你不想再喜欢一个人,你只 要掩住双耳!
喜欢,是一种心情
爱,是一种感情
喜欢,是一种直觉
爱,是一种感觉
喜欢,可 以停止
爱,没有休止
喜欢一个人,特别自然
爱一个人,特别坦然
喜欢一个人,有时候盼和他在一起
爱一个 人,有时候怕和他在一起 喜欢一个人,在一起的时候会很开心
爱一个人,在一起的时候,会莫名的失落
喜欢一个人,你不 会想到你们的将来
爱一个人,你们常常在一起憧憬明天
喜欢一个人,在一起的时候永远是欢乐
爱一个人,你会常常流泪
喜 欢一个人,当你们好久不见,你会突然想起他
爱一个人,当你们好久不见,你会天天想着他
喜欢一个人,当你想起他,你会微 微一笑
爱一个人,当你想起他,你会对着天空发呆
喜欢一个人,你会想他有了孩子,你一定会很喜欢
爱一个人,会有一 天,你突然很好奇:将来我们的孩子会是什么样子
喜欢一个人就是希望大家都开心
爱一个人希望他会更开心
喜欢一个人,你要 得只是今天
爱一个人,你期望的是永远
喜欢一个人,是看到了他的优点
爱一个人,是包容了他的缺点
当 你站在你爱的人面前,你的心跳会加速
但当你站在你喜欢的人面前,你只感到开心
当你与你爱的人四目交投,你会害羞
但 当你与你喜欢的人四目交投,你只会微笑
当你与你爱的人对话,你觉得难以启齿
但当你和你喜欢的人对话,你可以畅所欲言
当 你爱的人哭,你会陪她一起哭
但当你喜欢的人哭,你会技巧的安慰她.
当你不想再爱一个人,你要闭上眼睛并忍着泪水
当 你不想再喜欢一个人,你只要掩住双耳!
喜欢,是一种心情
爱,是一种感情
喜欢,是一种直觉
爱,是一种感觉
喜欢,可以停止
爱,没有休止
喜欢一个人,特别自然
爱一个人,特别坦然
喜欢一个人,有时候盼和他在一起
爱一个人,有时候怕和他在一起
喜欢一个人,不停的和他争执
爱一个人,不停的为他付出
喜欢一个人,希望他可以随时 找到自己
爱一个人,希望可以随时找到他
喜欢一个人,总是为他而笑
爱一个人,总是为他而哭
喜欢,是执着
爱, 是值得
喜欢就是喜欢,很简单
爱就是爱,很复杂
喜欢你,却不一定爱你
爱你,就一定很喜欢你
其实,喜欢和爱仅一步之遥
但,想要迈这一步
就看你 是喜欢迈这一步
还是爱迈这一步
Apr
27
在微软Windows Server 2008中开始提供一个全新的Server Core模式,它是一个最小限度的系统安装选项,只包括安全、TCP/IP、文件系统、RPC等服务器核心子系统。在Server Core我们可以安装所需的服务器角色和特征,并且仅有非常少的GUI,像我们常见的IE、OE等应用在Server Core中是没有的,在Server Core中我们可以安装的服务器角色也只有DNS、DHCP、文件服务、活动目录、ADLDS(轻型目录服务)、打印、媒体、Web这几种,而其他角色是不能安装的。Windows Server 2008的Server Core是不支持asp.net和 .NET Framework的, Windows Server 2008 R2 Server Core有了改进,增加了对 .NET Framework子集、ASP.Net的支持,并提供对PowerShell的支持,可以配置更多的服务器角色。
在Windows Server 2008 R2 Server Core R2中Server Core提供了一些可选的特性:
•提供对 .NET Framework 2.0子集的支持
•提供对 .NET Framework 3.0和3.5子集的支持,包括WCF、WF、LINQ等开发工具
•提供对PowerShell的支持
•提供asp.Net支持,丰富了IIS的功能,除了不支持IIS的GUI管理界面,其他功能都是完全的。
•提供Active Directory Certificate Services服务器角色,即活动目录验证服务,可以成为CA服务器管理用户、计算机的公钥。
•Windows Server 2008 R2完全架构于64位,但其Server Core可以通过Windows on Windows(WOW)功能支持32位的应用程序,如果用户还需要运行32位程序的话,这个功能还是比较有用。
Server Core就是微软用命令行模式代替了图形界面,并且只有少数应用可以安装。Server Core安装完成后,我们首次登录后仅仅可以看到一个命令行窗口,看不到菜单、任务栏等GUI,服务器驱动的安装、TCP/IP设置、服务器角色的安装管理等操作均需要通过命令行来进行设置。
Server Core的常见部署主要应用做基础构架服务器,如DNS、DHCP、IIS等,或者作为分支机构的只读域控制器,除此之外,还可以作为Windows虚拟化宿主系统,可以运行微软虚拟化平台Hyper-V。
使用Server Core我们可以获得如下好处:
简化维护管理:在Server Core中我们安装的是所需的服务器角色和特征,其他的角色默认是不安装的,这样对于管理员来说可以专著于某一个应用,提高了工作效率,也降低了后期IT管理费用,总体降低了企业TCO成本。
减少攻击表面:Windows的图形界面虽然大大简化了操作,但是多个GUI也增加了出现漏洞的可能。Server Core中仅提供了系统更改时间等少数GUI,Windows中常见的GUI、Shell、IE、OE、Media等在Server Core中都被取消,这样就使服务器的攻击表面大大减少,提高了服务器的安全性。
高可用性:由于Server Core是一个最小的系统安装选项,安装的角色和特性降到了最低,省略了GUI,安装角色也不需要重启,这样就提高了系统的可用性,使系统工作更加稳定。
降低磁盘占用:Server Core去掉了Windows的外壳,也没有安装不必要的功能,所以使空间占用大大降低,Server Core安装成功后大概占用1GB的磁盘空间,随着应用的安装还需要大概2GB的空间,这比Windows Server 2008的磁盘占用要少得多。
较少的补丁安装:在Windows中我们需要经常安装各种补丁,对于不同组件需要安装不同的补丁。在Server Core中由于只具备少数组件,我们免去了安装大量补丁的麻烦。
Server Core的安装很简单,需要注意的是Server Core不能从原有的系统进行升级,只能进行全新安装。安装完成后,我们需要对Server Core进行一些初始化配置。首先我们需要做的是输入操作系统序列号并激活系统,并对系统激活状态进行验证。需要连接到网络,在命令提示符窗口中输入“Slmgr.vbs -ipk”来输入序列号,然后输入“Slmgr.vbs -ato”来激活系统。激活之后可以用“Slmgr.vbs -dli”来验证系统激活状态。
激活系统后还需要进行一些初始化设置,如设置静态IP、重命名服务器、加入域和配置防火墙。
•设置静态IP:如果服务器需要设置静态IP,可以用Netsh命令进行设置。首先需要用“Netsh interface ipv4 show interfaces”命令来查看服务器上网络适配器的状态,记下需要设置IP的网络适配器的名称,如“Local Area Connetion”。然后使用命令Netsh interface ipv4 set address name=“网络适配器名称” source=static address=静态IP地址 mask=子网掩码 gateway=默认网关 来设置静态IP地址。
•设置DNS可以用如下命令:Netsh interface ipv4 add dnsservername=“网络适配器名称” address=DNS服务器IP地址 index=1。如果设置多个DNS,只需重复输入此条命令,然后将index值递增即可。
•加入域:如果服务器需要加入域,可以利用如下命令:Netdom join 计算机名称 /domain:域名 /userd:有权限加入域的用户名 /passwordd:* ,回车后输入密码即可。
•配置防火墙:还需要进行防火墙的配置,因为防火墙默认是开启的,所以我们需要定义一些规则,如打开远程访问所需的3389端口等,否则会默认禁止应用所需的端口和协议。在系统调试阶段,我们可以暂时关闭防火墙,以消除影响,可利用如下命令:“netsh firewall set opmode disable”。创建防火墙规则可以使用命令“netsh firewall set portopening protocol=TCP|UDP port=端口号 name=名称”。此外如果需要进行一些高级设置可以使用“netsh advfirewall”命令。
•安装服务器角色:安装服务器角色我们需要利用Oclist命令,这个命令可以列出服务器所有安装的角色。安装各种角色可以利用如下命令,注意大小写是敏感的:
Start/w Ocsetup 角色包
DHCP服务器= DHCPServerCore
DNS 服务器= DNS-Server-Core-Role
文件复制服务= FRS-Infrastructure
分布式文件系统服务= DFSN-Server
分布式文件系统复制= DFSR-Infrastructure-ServerEdition
网络文件系统= ServerForNFS-Base
流媒体服务器= MediaServer
打印服务器= Printing-ServerCore-Role
LPD = Printing-LPDPrintService
常用命令汇总:对于之前没有接触过命令行操作的用户来说,一下子掌握Server Core的操作确实有些难度,Server Core中提供了一个常用的命令行汇总,可以为用户提供不少的便利:c:windowssystem32cscript scregedit.wsf /cli
管理功能:可以通过四种方式来管理Server Core,本地或者远程使用命令提示符;远程使用终端服务器;使用Windows远程命令提示符(WinRS);远程使用微软管理控制台(MMC)。
上述管理也可以通过一个图形工具进行参考:图形化的2008R2 Server Core 配置管理工具。
在Windows Server 2008 R2 Server Core R2中Server Core提供了一些可选的特性:
•提供对 .NET Framework 2.0子集的支持
•提供对 .NET Framework 3.0和3.5子集的支持,包括WCF、WF、LINQ等开发工具
•提供对PowerShell的支持
•提供asp.Net支持,丰富了IIS的功能,除了不支持IIS的GUI管理界面,其他功能都是完全的。
•提供Active Directory Certificate Services服务器角色,即活动目录验证服务,可以成为CA服务器管理用户、计算机的公钥。
•Windows Server 2008 R2完全架构于64位,但其Server Core可以通过Windows on Windows(WOW)功能支持32位的应用程序,如果用户还需要运行32位程序的话,这个功能还是比较有用。
Server Core就是微软用命令行模式代替了图形界面,并且只有少数应用可以安装。Server Core安装完成后,我们首次登录后仅仅可以看到一个命令行窗口,看不到菜单、任务栏等GUI,服务器驱动的安装、TCP/IP设置、服务器角色的安装管理等操作均需要通过命令行来进行设置。
Server Core的常见部署主要应用做基础构架服务器,如DNS、DHCP、IIS等,或者作为分支机构的只读域控制器,除此之外,还可以作为Windows虚拟化宿主系统,可以运行微软虚拟化平台Hyper-V。
使用Server Core我们可以获得如下好处:
简化维护管理:在Server Core中我们安装的是所需的服务器角色和特征,其他的角色默认是不安装的,这样对于管理员来说可以专著于某一个应用,提高了工作效率,也降低了后期IT管理费用,总体降低了企业TCO成本。
减少攻击表面:Windows的图形界面虽然大大简化了操作,但是多个GUI也增加了出现漏洞的可能。Server Core中仅提供了系统更改时间等少数GUI,Windows中常见的GUI、Shell、IE、OE、Media等在Server Core中都被取消,这样就使服务器的攻击表面大大减少,提高了服务器的安全性。
高可用性:由于Server Core是一个最小的系统安装选项,安装的角色和特性降到了最低,省略了GUI,安装角色也不需要重启,这样就提高了系统的可用性,使系统工作更加稳定。
降低磁盘占用:Server Core去掉了Windows的外壳,也没有安装不必要的功能,所以使空间占用大大降低,Server Core安装成功后大概占用1GB的磁盘空间,随着应用的安装还需要大概2GB的空间,这比Windows Server 2008的磁盘占用要少得多。
较少的补丁安装:在Windows中我们需要经常安装各种补丁,对于不同组件需要安装不同的补丁。在Server Core中由于只具备少数组件,我们免去了安装大量补丁的麻烦。
Server Core的安装很简单,需要注意的是Server Core不能从原有的系统进行升级,只能进行全新安装。安装完成后,我们需要对Server Core进行一些初始化配置。首先我们需要做的是输入操作系统序列号并激活系统,并对系统激活状态进行验证。需要连接到网络,在命令提示符窗口中输入“Slmgr.vbs -ipk
激活系统后还需要进行一些初始化设置,如设置静态IP、重命名服务器、加入域和配置防火墙。
•设置静态IP:如果服务器需要设置静态IP,可以用Netsh命令进行设置。首先需要用“Netsh interface ipv4 show interfaces”命令来查看服务器上网络适配器的状态,记下需要设置IP的网络适配器的名称,如“Local Area Connetion”。然后使用命令Netsh interface ipv4 set address name=“网络适配器名称” source=static address=静态IP地址 mask=子网掩码 gateway=默认网关 来设置静态IP地址。
•设置DNS可以用如下命令:Netsh interface ipv4 add dnsservername=“网络适配器名称” address=DNS服务器IP地址 index=1。如果设置多个DNS,只需重复输入此条命令,然后将index值递增即可。
•加入域:如果服务器需要加入域,可以利用如下命令:Netdom join 计算机名称 /domain:域名 /userd:有权限加入域的用户名 /passwordd:* ,回车后输入密码即可。
•配置防火墙:还需要进行防火墙的配置,因为防火墙默认是开启的,所以我们需要定义一些规则,如打开远程访问所需的3389端口等,否则会默认禁止应用所需的端口和协议。在系统调试阶段,我们可以暂时关闭防火墙,以消除影响,可利用如下命令:“netsh firewall set opmode disable”。创建防火墙规则可以使用命令“netsh firewall set portopening protocol=TCP|UDP port=端口号 name=名称”。此外如果需要进行一些高级设置可以使用“netsh advfirewall”命令。
•安装服务器角色:安装服务器角色我们需要利用Oclist命令,这个命令可以列出服务器所有安装的角色。安装各种角色可以利用如下命令,注意大小写是敏感的:
Start/w Ocsetup 角色包
DHCP服务器= DHCPServerCore
DNS 服务器= DNS-Server-Core-Role
文件复制服务= FRS-Infrastructure
分布式文件系统服务= DFSN-Server
分布式文件系统复制= DFSR-Infrastructure-ServerEdition
网络文件系统= ServerForNFS-Base
流媒体服务器= MediaServer
打印服务器= Printing-ServerCore-Role
LPD = Printing-LPDPrintService
常用命令汇总:对于之前没有接触过命令行操作的用户来说,一下子掌握Server Core的操作确实有些难度,Server Core中提供了一个常用的命令行汇总,可以为用户提供不少的便利:c:windowssystem32cscript scregedit.wsf /cli
管理功能:可以通过四种方式来管理Server Core,本地或者远程使用命令提示符;远程使用终端服务器;使用Windows远程命令提示符(WinRS);远程使用微软管理控制台(MMC)。
上述管理也可以通过一个图形工具进行参考:图形化的2008R2 Server Core 配置管理工具。
Apr
27
微软新一代企业级服务器操作系统平台 – Windows Server 2008 R2 系列中包含了一个全新操作体验的版本即 Server Core,包含在Windows Server 2008 R2 里的IIS 7.5 支持Server Core上的.NET。先前版本的Server 2008最大缺陷在于缺少对在基于 Server Core的 Web服务器上运行管理代码的支持。但是用惯了图形界面的Windows,对于Server Core 的 IT 朋友,可能在使用它时会感到非常迷茫。在codeplex上有个配置管理 Server Core 的小工具 – CoreConfigurator,目前最新版本是 v2.0.
CoreConfigurator 提供了如下的配置管理功能:
产品激活
配置显示属性
时间和时区的配置
远程桌面的配置
管理本地帐户
防火墙的配置
WinRM 的配置
IP 配置
计算机名和域/工作组的配置
安装 Server Core 的功能和角色

这个版本只能在2008 Server Core R2上运行,如果要在2008 Server Core上运行,则Core Configurator 1.1,可以在这里下载VisualCore11_Beta2_Refresh.html。
运行CoreConfigurator 2.0要求Powershell 2.0 and NetFx 2.0功能角色启用,可以使用命令行
dism /online /Enable-Feature /Featurename:NetFx2-ServerCore
dism /online /Enable-Feature /Featurename:MicrosoftWindowsPowerShell
把CoreConfigurator 2.0拷贝到Server Core的一个目录下,运行Start_CoreConfig.wsf。
运行后就可以看到上述管理界面了。
CoreConfigurator 提供了如下的配置管理功能:
产品激活
配置显示属性
时间和时区的配置
远程桌面的配置
管理本地帐户
防火墙的配置
WinRM 的配置
IP 配置
计算机名和域/工作组的配置
安装 Server Core 的功能和角色
这个版本只能在2008 Server Core R2上运行,如果要在2008 Server Core上运行,则Core Configurator 1.1,可以在这里下载VisualCore11_Beta2_Refresh.html。
运行CoreConfigurator 2.0要求Powershell 2.0 and NetFx 2.0功能角色启用,可以使用命令行
dism /online /Enable-Feature /Featurename:NetFx2-ServerCore
dism /online /Enable-Feature /Featurename:MicrosoftWindowsPowerShell
把CoreConfigurator 2.0拷贝到Server Core的一个目录下,运行Start_CoreConfig.wsf。
运行后就可以看到上述管理界面了。
Apr
27
编者按:系统架构师是许多程序员的梦想职业。今天的你也许已经掌握了各种开发工具,并且能够使用各种平台进行开发,但作为一个架构师的要求,也许还有很长的道路。邢波涛先生在LAMP架构上的造诣,让我邀请他撰写本文,也许这位架构师的建议能让你在未来的架构师之路上节省一点时间。
一个产品的经典开发步骤通常需要经过系统需求调研、系统分析、系统设计、开发、测试、部署实施等一系列的步骤,如下图所示:

而系统架构师,则在这个过程中,起到了承上(面对业务专家/系统分析员)和启下(面对软件工程师)的作用。所以说,系统架构师,在整个产品开发周期内是一个核心角色。如果说市场和销售决定一个产品是否好卖的话,系统架构师则直接决定着这个产品的开发是否成功。从某种意义上说,这也是众多程序员未来的梦想职业。
要想成为一个优秀的系统架构师,并非一朝一夕之功所能达到的,“冰冻三尺,非一日之寒”,除了要有很深的专业技能外,还需技术全面、成熟练达、洞察力强、经验丰富,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。如果说系统分析员、业务专家只需要对一个产品的业务负责,可以不关心一个产品软件开发语言的话,而一个优秀的职业系统架构师,不仅要对产品背景和产品背后的业务逻辑熟悉,而且要对所用的软件开发语言(例如Java/C#/C/C++/J2EE),也要非常熟悉才可以,两者缺一不可。否则就起不到承上启下的作用,当然也设计不出良好的软件架构。在美国,一个合格的系统架构师的薪水甚至比部门经理或产品经理要高很多,这也是美国为什么三四十岁甚至五十岁的程序员也很常见的原因。
事实上,软件开发中碰到的很多问题,归结起来都可能和当初的架构设计有关,所以架构师要想不成为众矢之的,决不是件容易的事情。基于此,我认为,要想成为合格的系统架构师,首先要从程序员做起,只有有了多年的一线软件开发经验,深刻体会到了程序员的艰辛与不容易,才能设计出易于扩展、易于修改、易于维护、“不难为”程序员的架构出来。一个系统架构师,首先要能做出能够“自圆其说”的原型,才能跟程序员进行有效的沟通,而不是只是设计出来一个架构,就完全交给程序员来做了,这样,后期开发出来的产品风险很大。以我现在参与开发的产品为例,这个产品只是公司核心战略产品的很小的一部分,当然,虽然小,却是核心中的核心。这个产品配了3个系统架构师(年龄都在40岁以上,有数十年的软件开发经验),6个程序员、5个测试,还有一个负责产品打包的工程师。这3个系统架构师也都参与核心代码编写。
其次,合格的系统架构师,对所要开发的产品的业务背景,也要相当的熟悉才好,否则,设计出来的产品就不是客户想要的产品,当然也就不是成功的产品。还是以我现在参与的产品为例,这个产品是SCA规范的一个实现,3个系统架构师的其中一个,就是SCA标准规范的参与者与制定者,对SOA/SCA标准,有着相当的功底,否则,做出来的产品,就只能围着大公司,在他们屁股后面天天追了,别人做什么,自己也做什么,别人标准修改了,自己也赶快跟着修改。
第三,作为系统架构师,要经常阅读一些关于产品背景资料和系统架构设计方面的最新书籍。虽然现在技术方面的书籍,出得太滥,精品极少,大部分是从网上抄袭一些资料攒出来的,但是经常阅读一些国外大师的一些精品图书,还是能给自己带来一些新的思路和设计理念的。
第四,作为系统架构师,一定要有自信,既不要保守,也不要人云亦云,千万不要迷信于大师和大侠。别人说J2EE好,自己的产品就基于J2EE开发;别人说.NET容易开发,开发成本低,就转做.NET;别人说Ruby很敏捷,自己就说自己的产品是基于ROR开发的。一定要结合公司、市场和项目的实际情况,采用合适于自己的开发语言,设计出合适于自己的架构。比如,《J2EEWithoutEJB》那本书,提出了著名的“不要造新轮子”原则。如果大家都不要造轮子,都利用别人现有的框架和产品,怎么可能有技术的进步和百花齐放、欣欣向荣的景象呢?Spring的作者还不是看到经典J2EEEJB框架的诟病,才设计出来自己的Spring轮子了吗,为什么自己有了Spring轮子,就劝别人不要另造轮子了呢?GavinKing造出来了Hibenate这个轮子,为什么又参与EJB3.0的制定呢?并又参与设计出Seam这个轮子?我个人觉得,一个系统架构师,一定要造出自己的轮子,才算是真正的系统架构师,而不是拿着一大堆开源框架进行拼凑。
第五,对于开源的架构设计,要批判性地继承。要多阅读这些框架的源代码。以J2EE和Eclipse插件开发为例(因为我专注于这两个方面的开发),从前些年流行EJB,再到Struts→J2EEwithoutEJB→Spring/Hibernate→AJAX,每一个框架的流行,都有其深刻的历史背景,有一些现有框架解决不了的难题在里面,这些框架都是为了解决一些问题而出现的。我们经常阅读这些大师的源代码,精神上是一种享受,对锤炼自己的功底,也是大有好处的。例如,在做Eclipse插件开发的时候,常常会遇到一个问题,怎么才能监听到用户保存的事件,虽然Eclipse提供了资源变化监听机制,但是直接利用其机制,是很原始的,任何资源的变化,比如,添加/删除/移动一个图形,都会引起这个事件的调用,而我只想监听用户存盘的一刹那那个事件,以前在做项目的时候,想尽各种办法也没解决好。后来,在另外一个产品的源代码中,就看到了别人很好的解决方案,自己看到那段源代码,真的是领悟到很多。有时候,Eclipse的源代码和J2EE的源代码,在架构上是可以互相借鉴和补充的。比如,Eclipse的Adapter扩展机制和事件、资源监听机制,我们一样可以拿到J2EE框架中来,作为设计自己产品的设计模式蓝图。
第六,优秀的系统架构师还要拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目组成员的信任。一个系统架构师设计出一个良好的框架后,如果不能跟程序员进行有效的沟通,不能对程序员进行良好的指导,则这个良好的框架就不能很好的贯彻到产品开发的每个环节中去。有的程序员可能还是按照老经验对程序中的一些关键环节进行处理,等到这个架构师发现问题时,可能已经很晚了,说服、教育、培训和处罚到那时已经没有意义了。另外,如果一个系统架构师不能赢得项目组成员信任的话,那么他设计出来的架构就不具备说服力,程序员遇到困难,就会抱怨系统架构师设计的框架有问题,不能充分调动起来程序员的责任感和主观能动性。所以说,一个优秀的系统架构师,无论在精神上,还是技能上,都是一个程序员良好的导师。
第七,系统架构师要分清自己和系统分析员、项目经理或产品经理之间的角色和关系,不能负责一切,也不能只负责技术架构。由于系统架构师在整个产品开发周期内处于承上启下的中间地位,和程序员打交道的时间比系统分析员面向程序员的时间要长,有时候甚至比项目经理和程序员之间还熟悉,使得程序员很容易认为系统架构师对所有的需求和架构都负责,容易造成系统架构师职责过重。
成为优秀系统架构师的路,是一条漫长而任重道远的路。在这条道路上,要不断说服自己,不断抵制各种诱惑,要能在深夜无人的时候,挑灯阅读别人的源代码,还要有承受住各种压力的能力,能跟项目经理一起抵制住老板的无理工期要求,还要在困难的时候,鼓励项目组成员一起渡过难关。总之一句话,要想成为系统架构师,不是很容易。“路漫漫其修远兮,吾将上下而求索”。
作者简介:
邢波涛,11 年软件开发和管理经验,7 年的J2EE 开发经验, 资深J2EE 专家。对JSP/ Servlet /JavaBean/EJB 技术有深刻了解。熟悉Oracle、MS SQL Server、DB2,对Eclipse 平台开发,基于SWT/GEF/EMF 的Eclipse 插件开发有深入的实践基础。此外,熟悉UML、Rational Rose/ Rational Software Architecture 等面向对象分析技术和工具,熟悉WBI Modeler 等业务建模工具,从事过MDA/MDD 开发。
一个产品的经典开发步骤通常需要经过系统需求调研、系统分析、系统设计、开发、测试、部署实施等一系列的步骤,如下图所示:
而系统架构师,则在这个过程中,起到了承上(面对业务专家/系统分析员)和启下(面对软件工程师)的作用。所以说,系统架构师,在整个产品开发周期内是一个核心角色。如果说市场和销售决定一个产品是否好卖的话,系统架构师则直接决定着这个产品的开发是否成功。从某种意义上说,这也是众多程序员未来的梦想职业。
要想成为一个优秀的系统架构师,并非一朝一夕之功所能达到的,“冰冻三尺,非一日之寒”,除了要有很深的专业技能外,还需技术全面、成熟练达、洞察力强、经验丰富,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。如果说系统分析员、业务专家只需要对一个产品的业务负责,可以不关心一个产品软件开发语言的话,而一个优秀的职业系统架构师,不仅要对产品背景和产品背后的业务逻辑熟悉,而且要对所用的软件开发语言(例如Java/C#/C/C++/J2EE),也要非常熟悉才可以,两者缺一不可。否则就起不到承上启下的作用,当然也设计不出良好的软件架构。在美国,一个合格的系统架构师的薪水甚至比部门经理或产品经理要高很多,这也是美国为什么三四十岁甚至五十岁的程序员也很常见的原因。
事实上,软件开发中碰到的很多问题,归结起来都可能和当初的架构设计有关,所以架构师要想不成为众矢之的,决不是件容易的事情。基于此,我认为,要想成为合格的系统架构师,首先要从程序员做起,只有有了多年的一线软件开发经验,深刻体会到了程序员的艰辛与不容易,才能设计出易于扩展、易于修改、易于维护、“不难为”程序员的架构出来。一个系统架构师,首先要能做出能够“自圆其说”的原型,才能跟程序员进行有效的沟通,而不是只是设计出来一个架构,就完全交给程序员来做了,这样,后期开发出来的产品风险很大。以我现在参与开发的产品为例,这个产品只是公司核心战略产品的很小的一部分,当然,虽然小,却是核心中的核心。这个产品配了3个系统架构师(年龄都在40岁以上,有数十年的软件开发经验),6个程序员、5个测试,还有一个负责产品打包的工程师。这3个系统架构师也都参与核心代码编写。
其次,合格的系统架构师,对所要开发的产品的业务背景,也要相当的熟悉才好,否则,设计出来的产品就不是客户想要的产品,当然也就不是成功的产品。还是以我现在参与的产品为例,这个产品是SCA规范的一个实现,3个系统架构师的其中一个,就是SCA标准规范的参与者与制定者,对SOA/SCA标准,有着相当的功底,否则,做出来的产品,就只能围着大公司,在他们屁股后面天天追了,别人做什么,自己也做什么,别人标准修改了,自己也赶快跟着修改。
第三,作为系统架构师,要经常阅读一些关于产品背景资料和系统架构设计方面的最新书籍。虽然现在技术方面的书籍,出得太滥,精品极少,大部分是从网上抄袭一些资料攒出来的,但是经常阅读一些国外大师的一些精品图书,还是能给自己带来一些新的思路和设计理念的。
第四,作为系统架构师,一定要有自信,既不要保守,也不要人云亦云,千万不要迷信于大师和大侠。别人说J2EE好,自己的产品就基于J2EE开发;别人说.NET容易开发,开发成本低,就转做.NET;别人说Ruby很敏捷,自己就说自己的产品是基于ROR开发的。一定要结合公司、市场和项目的实际情况,采用合适于自己的开发语言,设计出合适于自己的架构。比如,《J2EEWithoutEJB》那本书,提出了著名的“不要造新轮子”原则。如果大家都不要造轮子,都利用别人现有的框架和产品,怎么可能有技术的进步和百花齐放、欣欣向荣的景象呢?Spring的作者还不是看到经典J2EEEJB框架的诟病,才设计出来自己的Spring轮子了吗,为什么自己有了Spring轮子,就劝别人不要另造轮子了呢?GavinKing造出来了Hibenate这个轮子,为什么又参与EJB3.0的制定呢?并又参与设计出Seam这个轮子?我个人觉得,一个系统架构师,一定要造出自己的轮子,才算是真正的系统架构师,而不是拿着一大堆开源框架进行拼凑。
第五,对于开源的架构设计,要批判性地继承。要多阅读这些框架的源代码。以J2EE和Eclipse插件开发为例(因为我专注于这两个方面的开发),从前些年流行EJB,再到Struts→J2EEwithoutEJB→Spring/Hibernate→AJAX,每一个框架的流行,都有其深刻的历史背景,有一些现有框架解决不了的难题在里面,这些框架都是为了解决一些问题而出现的。我们经常阅读这些大师的源代码,精神上是一种享受,对锤炼自己的功底,也是大有好处的。例如,在做Eclipse插件开发的时候,常常会遇到一个问题,怎么才能监听到用户保存的事件,虽然Eclipse提供了资源变化监听机制,但是直接利用其机制,是很原始的,任何资源的变化,比如,添加/删除/移动一个图形,都会引起这个事件的调用,而我只想监听用户存盘的一刹那那个事件,以前在做项目的时候,想尽各种办法也没解决好。后来,在另外一个产品的源代码中,就看到了别人很好的解决方案,自己看到那段源代码,真的是领悟到很多。有时候,Eclipse的源代码和J2EE的源代码,在架构上是可以互相借鉴和补充的。比如,Eclipse的Adapter扩展机制和事件、资源监听机制,我们一样可以拿到J2EE框架中来,作为设计自己产品的设计模式蓝图。
第六,优秀的系统架构师还要拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目组成员的信任。一个系统架构师设计出一个良好的框架后,如果不能跟程序员进行有效的沟通,不能对程序员进行良好的指导,则这个良好的框架就不能很好的贯彻到产品开发的每个环节中去。有的程序员可能还是按照老经验对程序中的一些关键环节进行处理,等到这个架构师发现问题时,可能已经很晚了,说服、教育、培训和处罚到那时已经没有意义了。另外,如果一个系统架构师不能赢得项目组成员信任的话,那么他设计出来的架构就不具备说服力,程序员遇到困难,就会抱怨系统架构师设计的框架有问题,不能充分调动起来程序员的责任感和主观能动性。所以说,一个优秀的系统架构师,无论在精神上,还是技能上,都是一个程序员良好的导师。
第七,系统架构师要分清自己和系统分析员、项目经理或产品经理之间的角色和关系,不能负责一切,也不能只负责技术架构。由于系统架构师在整个产品开发周期内处于承上启下的中间地位,和程序员打交道的时间比系统分析员面向程序员的时间要长,有时候甚至比项目经理和程序员之间还熟悉,使得程序员很容易认为系统架构师对所有的需求和架构都负责,容易造成系统架构师职责过重。
成为优秀系统架构师的路,是一条漫长而任重道远的路。在这条道路上,要不断说服自己,不断抵制各种诱惑,要能在深夜无人的时候,挑灯阅读别人的源代码,还要有承受住各种压力的能力,能跟项目经理一起抵制住老板的无理工期要求,还要在困难的时候,鼓励项目组成员一起渡过难关。总之一句话,要想成为系统架构师,不是很容易。“路漫漫其修远兮,吾将上下而求索”。
作者简介:
邢波涛,11 年软件开发和管理经验,7 年的J2EE 开发经验, 资深J2EE 专家。对JSP/ Servlet /JavaBean/EJB 技术有深刻了解。熟悉Oracle、MS SQL Server、DB2,对Eclipse 平台开发,基于SWT/GEF/EMF 的Eclipse 插件开发有深入的实践基础。此外,熟悉UML、Rational Rose/ Rational Software Architecture 等面向对象分析技术和工具,熟悉WBI Modeler 等业务建模工具,从事过MDA/MDD 开发。
Apr
27
俗话说得好:会干的不如会说的。你想仅仅凭着熟练的技能和勤恳的工作,就在职场游刃有余、出人头地,未免有些天真了。虽然能力加勤奋很重要,但会说 话,却能让你工作起来更轻松,并且可能帮助你加薪、升职。
1、应答上司交代的工作:我立即去办。
冷静、迅速地做出这样的回应,会让上司直观地感觉你是一个工作讲效率、处理问题果断,并且服从领导的好下属。如果你犹豫不决,只会让上司不快,会给上司 留下优柔寡断的印象,下次重要的机会可能就轮不到你了。
2、传递坏消息时:我们似乎碰到一些情况……
一笔业 务出现麻烦,或市场出现危机,如果你立刻冲到上司的办公室报告这个坏消息,就算不关你的事,也会让上司怀疑你对待危机的能力,弄不好还会惹得上司的责骂, 成为出气筒。
正确的方式是你可以从容不迫地说:我们似乎碰到一些情况……千万不要乱了阵脚,要让上司觉得事情并没有到不可收拾的地 步,并且感到你会与他并肩作战,解决问题。
3、体现团队精神:XX的主意真不错!
小马的创意或设计得到了上 司的欣赏,虽然你心里为自己不成功的设计而难过,甚至有些妒忌,你还是要在上司的听力范围内夸夸小马:小马的主意真不错。在明争暗斗的职场,善于欣赏别 人,会让上司认为你本性善良,并富有团队精神,从而给你更多的信任。
4、如果你不知道某件事:让我再认真地想一想,2点前答复您好 吗?
上司问了你某个与业务有关的问题,你不知道如何作答,千万不要说“不知道”。而“让我再认真地想一想,2点前答复您好吗?”不 仅暂时让你解围,也让上司认为你不轻率行事,而是个三思而后行的人。当然,要记得按时给出答复。
5、请同事帮忙:这个策划没有你真 不行啊!
有个策划,你一个人搞不定,得找个比较内行的人帮忙,怎么开口呢?你可以诚恳地说:这个策划没有你真不行啊!同事为了不负 自己内行的形象,通常是不会拒绝的。当然,事后要记得感谢人家。
6、拒绝黄段子:这种话好像不适合在办公室讲哦!
男人有时总喜欢说些黄段子,并且不大注意场合。如果有男同事对你开“黄腔”,让你无法忍受,这句话可以让他们识趣地闭嘴。
7、减 轻工作量:我知道这件事很重要,我们不妨先排一排手头的工作,按重要性排出先后顺序。
首先,强调你了解这项工作的重要性,然后请求 上司指示,将这项工作与其它工作一起排出先后顺序,不露痕迹地让上司知道你的工作量其实很大,如果不是非你不可,有些事就可交给其他人或延期处理。
8、承认过失:是我一时疏忽,不过幸好……
犯错误在所难免,所以勇于承认自己的过失很重要,推卸责任只会使你错上加错。不过,承 认过失也有诀窍,就是不要让所有的错误都自己扛,这句话可以转移别人的注意力,淡化你的过失。
9、打破冷场的话题:我很想知道您对 这件事的看法……
当你与上司相处时,有时不得不找点话题,以打破冷场。不过,这正是你赢得上司青睐的好机会,最恰当的话题就是谈一 些与公司有关、上司很关心又熟悉的话题。当上司滔滔不绝地发表看法时,也会对你这样一个谦虚的听众欣赏有加。
10、面对批评:谢谢 你告诉我,我会仔细考虑你的建议的。
面对批评或责难,不管自己有没有不当之处,都不要将不满写在脸上,但要让对方知道,你已接受到 他的信息,不卑不亢让你看起来又自信又稳重,更值得敬重。
1、应答上司交代的工作:我立即去办。
冷静、迅速地做出这样的回应,会让上司直观地感觉你是一个工作讲效率、处理问题果断,并且服从领导的好下属。如果你犹豫不决,只会让上司不快,会给上司 留下优柔寡断的印象,下次重要的机会可能就轮不到你了。
2、传递坏消息时:我们似乎碰到一些情况……
一笔业 务出现麻烦,或市场出现危机,如果你立刻冲到上司的办公室报告这个坏消息,就算不关你的事,也会让上司怀疑你对待危机的能力,弄不好还会惹得上司的责骂, 成为出气筒。
正确的方式是你可以从容不迫地说:我们似乎碰到一些情况……千万不要乱了阵脚,要让上司觉得事情并没有到不可收拾的地 步,并且感到你会与他并肩作战,解决问题。
3、体现团队精神:XX的主意真不错!
小马的创意或设计得到了上 司的欣赏,虽然你心里为自己不成功的设计而难过,甚至有些妒忌,你还是要在上司的听力范围内夸夸小马:小马的主意真不错。在明争暗斗的职场,善于欣赏别 人,会让上司认为你本性善良,并富有团队精神,从而给你更多的信任。
4、如果你不知道某件事:让我再认真地想一想,2点前答复您好 吗?
上司问了你某个与业务有关的问题,你不知道如何作答,千万不要说“不知道”。而“让我再认真地想一想,2点前答复您好吗?”不 仅暂时让你解围,也让上司认为你不轻率行事,而是个三思而后行的人。当然,要记得按时给出答复。
5、请同事帮忙:这个策划没有你真 不行啊!
有个策划,你一个人搞不定,得找个比较内行的人帮忙,怎么开口呢?你可以诚恳地说:这个策划没有你真不行啊!同事为了不负 自己内行的形象,通常是不会拒绝的。当然,事后要记得感谢人家。
6、拒绝黄段子:这种话好像不适合在办公室讲哦!
男人有时总喜欢说些黄段子,并且不大注意场合。如果有男同事对你开“黄腔”,让你无法忍受,这句话可以让他们识趣地闭嘴。
7、减 轻工作量:我知道这件事很重要,我们不妨先排一排手头的工作,按重要性排出先后顺序。
首先,强调你了解这项工作的重要性,然后请求 上司指示,将这项工作与其它工作一起排出先后顺序,不露痕迹地让上司知道你的工作量其实很大,如果不是非你不可,有些事就可交给其他人或延期处理。
8、承认过失:是我一时疏忽,不过幸好……
犯错误在所难免,所以勇于承认自己的过失很重要,推卸责任只会使你错上加错。不过,承 认过失也有诀窍,就是不要让所有的错误都自己扛,这句话可以转移别人的注意力,淡化你的过失。
9、打破冷场的话题:我很想知道您对 这件事的看法……
当你与上司相处时,有时不得不找点话题,以打破冷场。不过,这正是你赢得上司青睐的好机会,最恰当的话题就是谈一 些与公司有关、上司很关心又熟悉的话题。当上司滔滔不绝地发表看法时,也会对你这样一个谦虚的听众欣赏有加。
10、面对批评:谢谢 你告诉我,我会仔细考虑你的建议的。
面对批评或责难,不管自己有没有不当之处,都不要将不满写在脸上,但要让对方知道,你已接受到 他的信息,不卑不亢让你看起来又自信又稳重,更值得敬重。