SOA 项目交叉学科建模方法 Olaf Zimmermann, Pal Krogdahl, 和 Clive Gee 2004 年 6 月 01 日发布 引言 面向服务的体系结构(SOA)和 Web 服务的基本观念是成为我们日常语言的一部分,并可看作是适于设计现代企业应用程序的体系结构形式。在这种背景下, 什么构成好的服务这个基本问题就成为确保成功实现 SOA 的关键。 像 面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、 企业体系结构(Enterprise Architecture,EA)框架和 业务流程建模(Business Process Modeling,BPM)这样的现有建模规则为我们提供了高质量的实践,可以长期帮助标识和定义体系结构内的适当抽象。然而经验表明,这些实践各自单独应用时达不到要求。 在本文中,我们将研究 OOAD、EA 和 BPM 中的适当原理。我们还将推动对混合方法的需求,这种方法把所有这些规则中的原理与许多独特的新原理组合起来。这样得到的交叉学科 OOAD 方法使成功地进行 SOA 开发更容易,我们称之为 面向服务的分析与设计(Service-Oriented Analysis and Design,SOAD),它还有待正式定义。我们还只是刚刚跨入 SOAD 的殿堂。 面向服务的概念 在发现新的商机或威胁的预期下,SOA 体系结构形式旨在提供企业业务解决方案,这些业务解决方案可以 按需扩展或改变。SOA 解决方案由可重用的服务组成,带有定义良好且符合标准的已发布接口。SOA 提供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们的平台或语言。 从概念上讲,SOA 中有三个主要的抽象级别: 操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。 服务:代表操作的逻辑分组。例如,如果我们将 CustomerProfiling视为服务,则 按照电话号码查找客户、 按照名称和邮政编码列出顾客和 保存新客户的数据就代表相关的操作。 业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。业务流程的例子有: 接纳新员工、 出售产品或服务和 完成订单。在 SOA 术语中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程 编排。典型的情况是调用已编排服务来响应业务事件。 从建模的观点来看,由此带来的挑战是如何描述设计良好的操作、服务和流程抽象的特征以及如何系统地构造它们。这些相关问题都是当前行业内和学术界最常讨论的问题。据我们所知,最近几乎所有的 SOA 项目或专题研讨会都将这样的服务建模方面作为重要的主题,并引起了许多的争论。因此,让我们更近地作一番审视。 为什么 BPM、EA 和 OOAD 还不够? 早期的 SOA 实现项目经验表明,诸如 OOAD、EA 和 BPM 这样的现有开发流程和表示法仅仅涵盖支持 SOA 范式所需的部分要求。SOA […]
View DetailsNginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。 会有好多种情况出现502错误,下面我们分情况来说一下。 一、fastcgi缓冲区设置过小 出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误。 2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream 查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。 网上查找了一下解决方法,在国外网站看到了一个增加缓冲区的方法,彻底解决了Nginx 502 Bad Gateway的问题。方法如下: 1 2 3 4 5 6 http { … fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; … } 请根据服务器已经网站的情况自行增大上述两个配置项。 二、代理缓冲区设置过小 如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 server { listen 80; server_name *.lxy.me; location / { ###############添加这3行 proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; ###############添加这3行 proxy_set_header […]
View DetailsGNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。 GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。 在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。 Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。 在PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBM PowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统。 因为X86架构的机器仍是主流, 所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
View Details在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。 Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。[1] 对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。 反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。
View DetailsSwap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。 Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。 计算机用户会经常遇这种现象。例如,在使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会的程序时,会听到硬盘“哗哗”直响。这是因为这个程序的内存被那些频繁运行的程序给“偷走”了,放到了Swap区中。因此,一旦此程序被放置到前端,它就会从Swap区取回自己的数据,将其放进内存,然后接着运行。
View Details重启系统,出现系统选择界面时按下向下方向键,防止系统直接启动。 把光标移到第一行,按「e」键编辑启动项。 把光标定到linux16这行,找到 ro ,改为 rw init=/sysroot/bin/bash。 按ctrl+x进入emergency模式。 执行chroot /sysroot/ 切换到原始系统。 输入passwd命令修改密码。 执行touch /.autorelabel 让新密码生效。 ctrl+d,然后reboot。
View DetailsMac远程桌面链接 Windows2012提示"远程桌面连接无法验证您希望连接的计算机的身份" 具体异常如截图: 解决方法: 1. 通过连接管理终端功能连接进入云服务器。 2. 点击任务栏powershell,然后输入命令gpedit.msc,输入完成后回车,回车后会显示本地组策略编辑器。 3. 依次找到【计算机配置】->【管理模板】->【windows组件】->【远程桌面服务】->【远程桌面会话主机】->【安全】->【远程(RDP)连接要求使用指定的安全层】,如下图: 4. 双击【远程(RDP)连接要求使用指定的安全层】,出现下图: 5. 将截图中的未配置,修改为已启用,安全层选择 rdp,最后点击应用确认。 from:http://bbs.qcloud.com/thread-9598-1-1.html
View Details贝二狗在众多远程控制术语中挣扎,各种 RDP, VNC, SSH 的概念让他头晕脑涨。他想起来小时候看的一个动画片,刚开始就是墙上一幅画歪了,一哥们儿拿钉子锤子修理这画。然后用什么什么坏,椅子断腿桌子断面再碰到小球砸倒冰箱惊醒小猫连锁反应把房子里能砸碎的都砸碎了。最后钉子进墙墙裂了,整个房子榻了。他本来想做的就是在 Mac 上远程操纵家里的 Windows 杀杀毒。最终还是用了 Remote Desktop Connection,微软官方发布的 Mac 平台远程协助软件。@appinn Remote Desktop Connection 是 Office for Mac 2011 组件之一,微软网站上提供单独的免费下载。它本身就是微软在 Windows 上提供远程协助功能的官方 Mac 客户端。可以同时连接多台 Windows 机器,直接使用 Mac 打印机打印远程文档,甚至可以选择远程声音是在本地 Mac 播放还是远程计算机的喇叭播放。 [教程]使用 Remote Desktop Connection 需要先对 Windows 端进行设置,开启远程协助功能: 以 Windows XP 为例,在桌面“我的电脑”图标上点右键,选弹出菜单最下面的属性;或者通过 控制面板 -> 系统。此时打开系统属性对话框。 在系统属性对话框中选定最右面的标签“远程”(如上图)。勾选“允许用户远程连接到此计算机”,然后点击“选择远程用户”,打开用户选择对话框(如下图),选择可以远程连接的用户。远程协助本质是远程用户实用本机账户名密码进行登录之后操作。如果是管理员权限的帐号无需在此处加入列表,受限账户才需要加入列表。需要注意,为了安全起见,无论管理员还是受限账户,都必须设置密码才能在远程使用。如果是空密码账户,远程用户无法登录。 确定退出用户选择对话框,确定退出系统属性。 在 Mac 上使用 Romote Desktop Connection 非常简单,打开后输入目标机器 IP/计算机名称(如果在同一网域),Connect 即可。如果连接 XP 的话,会显示安全提示,无视它继续 Connect 就好。 RDC for Mac 毕竟是官方出品,质量有保证,操作流畅从不断线。二狗很满意。 from:http://www.appinn.com/remote-desktop-connection-for-mac/
View Details首先我们打开Finder,就是我们Dock栏下方的左侧的第一个按钮,我们点击进入。 进入之后我们在左侧菜单中不难发现应用程序这个选项,我们点击进入。 进入之后我们就能看见我们电脑上自己安装的所有程序,我们选择自己想要卸载的软件,点击鼠标右键,选择移动到废纸篓。 如果想要完全卸载,我们右键点击Dock中的废纸篓,点击右键,选择清倒废纸篓,就可以完全清除你想要卸载的软件了。 重点事项 废纸篓的文件清除之后就很难恢复了,所以在清倒之前一定要考虑清除的软件是否是自己不再需要的了。 from:http://jingyan.baidu.com/article/fec4bce25c337af2618d8b34.html
View DetailsTTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段。 TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。 虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。 TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源,并能使IP包的发送者能收到告警消息。 TTL 是由发送主机设置的,以防止数据包不断在IP互联网络上永不终止地循环。转发IP数据包时,要求路由器至少将 TTL 减小 1。 TTL值的注册表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改,但不能大于十进制的255。Windows系统设置后重启才生效。 生存时间,就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
View Details