十五. FLEX客戶端開發
15.1開發模式
Cairngorm開發架構
Cairngorm前生是Itereation:Tow公司的一個開源項目,是FLEX開發的實踐框架。在Cairngorm 基礎上開發RIA,將會提高FLEX的程序的條理性、維護性和擴展性。當adobe公司推出Flex2和Action Script3的時候,把Itereation:Tow並入成為合作伙伴,Cairngorm也成為adobe官方欽定的開發框架,並同時發佈Cairngorm for Flex 2版本。
Cairngorm本身並不是一個完整的企業應用,它只提供一個開發的體系,讓開發者遵循這個體系開發出一個結構清暫,解耦良好的程序代碼從而提高程序的維護和擴展。
Cairngorm這個體系包括以下六個部分:
Business(业务逻辑部分)
Command(命令部分)
Control(控制部分)
Model(数据模型)
View(界面视图)
VO(valueObject)
工作原理
上圖顯示了Cairngorm框架的各部分如何協同工作完成一個操作,並把操作產生的結果變化反應
到視窗。
它的工作原理是這樣的:當用戶點擊窗體界面的一個物件時(比如按鈕),程序即產生一個Cairngorm事件,並把事件廣播出去,控制部分進行該事件的監聽,當監聽到該事件時就委派給一個命令進行處理;如果需要調用服務,命令調用一個服務的委扥進行服務調用,返回結果後更新本地的Model,視圖界面與Model邦定,所以當Model改變時,界面的顯示數據或動作會動態地根據Model的改變而改變。
按包進行功能分裝
Cairngorm根據程序代碼或組件需要處理的功能任務不同而清暫地對程序分成六個不同的功能塊,它們分別是:
1、Business:在這個package裡Cairngorm提供二個基礎類Responder.as和ServiceLocator.as。
Responder提供一個接口,實際開發時實現這個接口用於處理服務調用後的結果處理,它只有二個方法onResult、onFault。
ServiceLocator這是一個單例類,用於得到在標簽中定義的服務。例如標簽中有定義如下服務
wsdl="http://localhost /SystemLogin/services/LoginWebService?wsdl" showBusyCursor="true" result="event.token.resultHandler(event)" fault="event.token.faultHandler(event)"/> 在代碼中這樣得到服務ServiceLocator.getInstance().getService("loginService")。 實際開發時所有的服務委扥類都在這個包中。 2、Command:在這個package中Cairngorm提供了一個Command接口,該接口只有一個方法execute(event:CairngormEvent)方法。實際開發時所有的Command即實現這個接口,需要執行的代碼都在execute方法中。並編寫事件的實質性處理代碼。 3、Control:在控制部分,Cairngorm提供三個基礎類CairngormEvent.as,CairngormEventDispatcher.as,FrontController.as。他們分別是事件類、事件發佈類、前端控制類。在實際編碼中都事件類繼承CairngormEvent類。前端控制類需要別自定義類並繼承FrontController,一般的做法是在自定義類的構造函數中進行事件監聽。方法如下: addCommand(“login”,LoginCommand);//監聽login事件並委派給LoginCommand命令處理 CairngormEventDispatcher是一個單例的事件發布類,用於發佈CairngormEvent事件。調用方法如下: CairngormEventDispatcher.getInstance().dispatchEvent(loginEvent); 4、Model:在這個package中Cairngorm只提供一個空接口,實際開發中可以實現它也可以不實現。在這個包中存放程序的所有數據Model,當Model定義的變量值改變時即反應在視圖中。Model中的類也都是單實例的,並且需在邦定,樣式如下:LoginModelLocator.as [Bindable]//邦定 public class LoginModelLocator implements ModelLocator { private static var modelLocator:LoginModelLocator; //單實例 public static function getInstance():LoginModelLocator{ if(modelLocator==null){ modelLocator=new LoginModelLocator(); } return modelLocator; } //登陸狀態 public var loginStatus:Boolean; //登陸信息 public var loginMsg:String; } 在視窗國邦定Model: import com.shingwai.model.login.LoginModelLocator; [Bindable] private var loginModel:LoginModelLocator=LoginModelLocator.getInstance(); ]]> 5、View:這個package中Cairngorm提供二個ViewHelper、ViewLocator基礎類,主要的作用就是實現視圖與代碼的分離,有了這二個基礎類,視圖中只編寫視圖控件的標簽,而對視圖操作需要的代碼編寫在類一個視圖處理類中,這樣就實現視圖和代碼分離。視圖處理類繼承ViewHelper。在ViewHelper中有一個view對象,該對象即代表視圖實例。例如在處理類中需要得到ID為loginText的視圖控件的文字即可以這樣寫代碼:view.loginText.text 6、V o:這個package存放值對象。比如產品對象,訂單對象。用於存放臨時的數據。 15.2服務端數據處理 服務端的底層架構 如果Flex使用WebServie或HttpService進行數據交互,那麼它對服務端是沒有特殊要求的。只要能提供標准WebService接口或接受Http請求並返回能讓FLEX處理的數據格式(一般是XML)就行了。J2ee或 .net的服務端都是可行的。 下面只是J2EE的服務端架構: 服務端的接口形式 雖然FLEX能夠有多種方法與服務端進行通訊。它提供三種方式可供選擇,分別是:Remote Object、WebService、HttpService。但是Remote Object方式需要是JA VA的服務端,而Http的方式即過於簡易,當同一個HTTP請求需要處理不同操作時就降低了系統的維護性,因為HTTP 不支持方法級的操作,如果需要不同操作只能使用參數來區別。 所以WebService服務端接口是最理想的選擇,WebService的業界統一的接口標准,而且方法級的支持更符合程序員的編程習慣。也是SOA所推薦的方法。 Java的WebService接口發佈: 在系統的WEB-INF/web.xml文檔中加入如下內容,定義Axis: Apache-Axis Servlet org.apache.axis.transport.http.AxisServlet Axis Admin Servlet org.apache.axis.transport.http.AdminServlet 如果需要添加一個WebService即在/WEB-INF/server-config.wsdd文件如下設置:以下內容表明一個名是MpsService的WebService,它有一個方法queryMpsM,這個方法有四個參數 field,where,start,qty,後面即說明了這個服務的屬性(比如className屬性指明該服務由那個類來處理) returnQName="ns6:queryMpsMReturn" returnType="xsd:string" soapAction="" xmlns:ns6="https://www.doczj.com/doc/8e6841113.html," xmlns:xsd="https://www.doczj.com/doc/8e6841113.html,/2001/XMLSchema"> value="https://www.doczj.com/doc/8e6841113.html,"/> value="com.shingwai.erp.service.MpsService"/> value="https://www.doczj.com/doc/8e6841113.html,"/> 當然使用IDE的WebService創建功能可以不用編寫任何配置文件而使用向導窗口方便地把java 類發佈成WebService接口。 服務端的數據格式 即使服務端有統一標准的接口方式,或跨平台跨語言的接口發佈,但數據格式卻是它方不可識別的,同時不能做到數據的有效交換。所以有統一的數據格式同樣重要。 XML的數據格式可以被不同程序語言識別,FLEX同樣對XML有良好的支持。所以以XML形式的數據格式是理想選擇。XML的數據格式通常的格式如下:以下表明Book表的二條記錄書名和價格,使用UTF-8的編碼格式將良好支持中文。 15.3FLEX顯示端開發過程 以下以登陸操作為例示例FLEX開發的全過程。 界面事件觸發 首先定義好程序界面,FLEX封裝了許多的常用控制,在Flex Build中拖動控件至工作區,並對控件進行布局,可以很方便地設計出程序界面。程序的所有事件都是由界面觸發,比如按鈕的點擊事件,在登陸界面中有一個登陸按鈕,當擊時好觸發登陸事件。界面如下: 界面登陸按鈕的XML內容如下: id="loginBut" label="登陸" click="loginViewHelper.login()"/> 第一個標簽是界面處理類的一個實例,它繼承Cairngorm view包的ViewHelper類,該類處理界面事件和界面邏輯,有了處理類將界面和代碼分離。登陸界面處理類LoginViewHelper.as樣子如下: package com.shingwai.view.login { import com.adobe.cairngorm.view.ViewHelper; public class LoginViewHelper extends ViewHelper { //登陸 public function login():void{ var loginVO:LoginVO=new LoginVO(); https://www.doczj.com/doc/8e6841113.html,erName=https://www.doczj.com/doc/8e6841113.html,erNameText.text;//得到輸入的用戶名(view是界面實例) loginVO.passWord=view.passWordText.text;//得到輸入的密碼 var loginEvent:LoginEvent=new LoginEvent();//實例登陸事件 loginEvent.operation="login"; loginEvent.data=loginVO;//在事件中攜帶界面數據 CairngormEventDispatcher.getInstance().dispatchEvent(loginEvent); //發佈登陸事件 } } } 界面和處理類只收集界面數據和發佈事件,除此之外不做任何事。它不知道發佈的事件會由誰處理。所以如果要更換事件的處理類,界面和界面處理類是不用變更的。 控制器監聽事件並委派處理命令 這裡是程序的核心所在。上面的界面處理類中發佈了一個事件loginEvent,這裡介紹事件的監聽和委派給命令進行處理,先從事件開始。 事件一律繼承Cairngorm的CairngormEvent類(CairngormEvent類即繼承了flash.events.Event基類)。你可以為每一個界面都新建一個事件類也可以只建一個事件類而用type來區分不同事件。現在的做法是為每一個不同功能模塊新建一個事件類,而模塊內的不同事件以參數或type來區分。以下是LoginEvent.as的代碼樣子: package com.shingwai.control.event.login { import com.adobe.cairngorm.control.CairngormEvent; public class LoginEvent extends CairngormEvent { public var operation:String;//事件屬性,用於區分不同的事件操作 public function LoginEvent(){ super("login");//事件類型為login } override public function clone():Event{ return new LoginEvent(); } } } 建立一個統一的程序前端控制類,它實現了事件的監聽和命令委派。它繼承Cairngorm的FrontController類,代碼樣式: package com.shingwai.control { import com.adobe.cairngorm.control.FrontController; public class MainControl extends FrontController { //構造函數 public function MainControl(){ addCommand("login",LoginCommand); //臨聽登陸事件,並委派給命令 } } } 以上代碼就完成了登陸事件的監聽,並委派給LoginCommand來處理。如果需要添加另一個事件監聽,即可以在構造函數中增加一個 addCommand(事件類型,命令類); 命令LoginCommand用來處理登陸事件的具體處理實現,是需要調用服務,還是需要更改那些變量的值都由命令來決定。命令實現Cairngorm的Command接口,該接口只有一個execute(event)方法。LoginCommand.as的樣式如下: package https://www.doczj.com/doc/8e6841113.html,mands.login { import https://www.doczj.com/doc/8e6841113.html,mand; import com.shingwai.model.local.LocalModelLocator; public class LoginCommand implements Command { public function execute(event:CairngormEvent):void { //TODO: implement function var loginEvent:LoginEvent=LoginEvent(event);//轉換成loginEvent var delegate:LoginDelegate=new LoginDelegate(new loginResponder());//登陸服務的委扥,並指定服務結果處理的應答類 model.loginVO=loginEvent.data;//更新Model的loginVO屬性 delegate.login(loginEvent.data);//調用服務的方法 } private var model:LoginModelLocator=LoginModelLocator.getInstance(); } } 該命令調用了一個登陸的服務委扥類,服務的調用都在一個服務Delegate類中實現,這樣的好處是當服務的形式改變時,比如從HttpService改變成WebService時只需要修改服務的Delegate 類,而不涉及其它層次的更改。 業務委扥調用服務 這裡包括遠程服務的定義,並如何獲得服務實例,和使用服務中定義的方法。要使用RPC服務,當然得先定義服務。服務的定義在一個Cairngorm 的ServiceLocator以MXML文件形式完成,並在Application的最頂層進行實例化。比如Service.MXML xmlns:mx="https://www.doczj.com/doc/8e6841113.html,/2006/mxml"> wsdl="http://localhost:8080/SystemLogin/services/LoginWebService? wsdl" showBusyCursor="true" result="event.token.resultHandler(event)" fault="event.token.faultHandler(event)"/> 以上的標簽就定義了一個id為loginService的服務並指定了WebService的wsdl,當服務調用成功後的結果處理方法和失敗後的處理方法。在程序中實例化後就可以得到定義的服務了,實例在Application頂層完成: xmlns:mx="https://www.doczj.com/doc/8e6841113.html,/2006/mxml" xmlns:business="com.shingwai.business.*" xmlns:control="com.shingwai.control.*" > 在登陸服務Delegate中這樣實現: package com.shingwai.business.login { import com.adobe.cairngorm.business.Responder; import com.adobe.cairngorm.business.ServiceLocator; import com.shingwai.vo.login.LoginVO; public class LoginDelegate { //構造函數中指定了服務的結果處理應答類 public function LoginDelegate(responder:Responder){ //得到Service.MXML中定義的服務實例 this.service=ServiceLocator.getInstance().getService("loginServic e"); //結果應答類 this.responder=responder; } public function login(loginVO:LoginVO):void{ //調用WebService的isLogin方法 var call:Object=service.isLogin(https://www.doczj.com/doc/8e6841113.html,erName,loginVO.passWord); call.resultHandler=responder.onResult;//調用成功的處理方法 call.faultHandler=responder.onFault;//調用失敗的處理方法} private var service:Object; private var responder:Responder; } } 巽步結果處理更新Model 最後一步就是處理結果和更新Model並邦定到界面視圖。 這樣有一個服務對果的應答類來處理服務的處理結果,應答類的功能可以在Command類中一同實現也可以另建一個應答類。 LoginResponder.as package https://www.doczj.com/doc/8e6841113.html,mands.login { import com.adobe.cairngorm.business.Responder; public class LoginResponder implements Responder { public function onResult(event:*=null):void { if(event.result){//如果結果為true即登陸成功 model.currentState=1;//更新Model的currentState的值 model.loginMsg="登陸成功";//更新登陸消息 }else{//如果用戶名和密碼不正確 if(model.loginQty<2){ model.loginMsg="用戶名或密碼不正確,請注意大小寫"; }else{ model.loginMsg="失敗登陸三次,請關閉窗口得登陸"; model.enabledView=" "; } if(model.loginVO!=null){ model.loginVO=null; } model.loginQty=model.loginQty+1;//更新登陸次數 } } public function onFault(event:*=null):void {} private var model:LoginModelLocator=LoginModelLocator.getInstance(); } } 在上例中看到的model是一個單實例類,用於存放程序運行時的數據,相當於一個全局變量,它加有[Bindable]標記,視圖中的控件數據值都來自model,所以當model的值對變時視圖的值也隨之改變。 LoginModelLocator.as package com.shingwai.model.login { import com.adobe.cairngorm.model.ModelLocator; [Bindable] public class LoginModelLocator implements ModelLocator { private static var modelLocator:LoginModelLocator; public static function getInstance():LoginModelLocator{ if(modelLocator==null){ modelLocator=new LoginModelLocator(); } return modelLocator; } public var loginVO:LoginVO; //登陸信息 public var loginMsg:String; //登陸次數 public var loginQty:int; //窗口控件是否為可見 public var enabledView:String; //登陸後的主窗口狀態 public var currentState:int=0; } } 在視圖中這樣幫定 import com.shingwai.model.login.LoginModelLocator; [Bindable] private var loginModel:LoginModelLocator=LoginModelLocator.getInstance(); ]]> 如果用戶名或密碼不正確,視窗的底部顯示loginModel.loginMsg的內容,因為loginMsg的值改 變後就返應在視圖中。 以上就是Cairngorm的Flex完整開發過程。 15.4自定義通用組件 選擇窗口 功能:當一個文本框的輸入值可以在已有記錄中選擇時,可以使用選擇窗口來進行輸入值的選擇。 視圖樣式: 操作:選擇窗口開啟時會有一個初始數據,如果初始數據中沒有需要的數據,即可以使用頂部的查詢功能進行查詢,如果窗口是可以多選的,按Shift可以聯選,按Ctrl可以跳選。 使作方法: var orderSelectForm:SelectForm=new SelectForm(); orderSelectForm.multipleSelection=true;//可以多選,不設為單選 //查詢的可選條件字段 orderSelectForm.fieldArray=[{label:"tc002 單號 ",value:"cc.tc002"}, {label:"tc001 單別 ",value:"cc.tc001"}, {label:"tc003 序號 ",value:"cc.tc003"}]; //tc001單別,tc002單號,tc003訂單日期,tc004客戶編號 var hql:String="select distinct cc.tc001,cc.tc002,cc.tc003,cc.tc004 from Coptc cc,Coptd cd where cc.tc001=cd.td001 and cc.tc002=cd.td002 "; orderSelectForm.searchHQL=hql;//窗口的查詢HQL orderSelectForm.initWhere="cd.td203>=20060800001";//窗口開啟時初始值的條件 orderSelectForm.searchType="order";//不同的類型對應不現的Responder orderSelectForm.destination="WorkOrderSearchForm";//選擇後的處理 PopFormHandler.popUpForm(orderSelectForm,DisplayObject(view),true ); 工具菜單 功能:主窗口的系統菜單,因為是比較固定的,所以單獨做成一個組件,方便重用。 視圖樣式: 操作: 點擊按鈕即可。 使用方法: 在需要使用該菜單的窗口的加入菜單標標簽: securityId="{workOrderSearchViewHelper.securityId}" height="40" y="10"/> 它有二個屬性 menuOperation指定菜單的操作類,該類繼承了com.shingwai.view.util. MenuViewHelper。一般地如果某個窗口需要使用菜單條那麼在窗口處理類就繼承MenuViewHelper,並覆寫MenuViewHelper的需要重寫的方法。 securityId屬性指定了該模塊的權限ID,用於從SecutieyModelLocator中得到權限值,securityId 由用戶名+系統名+模塊名組成。 翻頁工具條 功能:對記錄集進行分頁顯示,便於數據記錄的查看。 視圖樣式: 操作: 點擊<<至最前頁,<上一頁,>下一頁,>>最後一頁,中間的下拉控件可以選擇第幾頁。 使用方法: 它有一個屬性和一個動作 recordCount是記錄總數 pageChange(event)是頁面更改動作 15.5多語言 多語言現基本有二種解決方案,第一種就是把在程序中需要顯示的文本以ID的形式保存在數據庫中,一個ID可以對應任意多種的語言文字,顯示端根據不同的語言選擇讀取不同的文字顯示出來。第二種是在程序的本地包含不同語言的資源包,選擇不同的語言就選擇了不同的資源包。解決方案 (在現有的多語言方案基礎上提供多語言服務,程序調用服務即可以進行多語言轉換) 實現方法 15.6解決中文亂碼問題 在Java領域解決中文亂碼問題的終極解決方案就是數據和編碼都統一使用”UTF-8”的encoding ,數據保存時和數據顯示以及原代碼編寫都統一使用”UTF-8”,能有效解決中文的亂碼問題。使用以上方法可以在任意語言的操作系統運行任意語言的程序並顯示任意語言的文字而不出現亂碼現象。所以在Flex開發時,出於以上考慮建議統一使用”UTF-8”的encoding來進行開發。 1、IDE的編碼格式設定 Eclipse的工作區設定的”UTF-8”,它的默認的是MS950,更改為”UTF-8”。 更改方法:菜單->Window->Preferences->General->Workspace 2、編碼的設定 在需要設定編碼的地方進行設定,比如MXML文件和XML文件。 15.7安裝Flex Data Services到tomcat服務器 如果不使用Data Services,把FLEX程序部置到服務器就與WEB程序一下,把FLEX編輯生成的SWF文件直接拷貝到Tomcat服務器的webapps相應目錄下,用瀏覽器訪問即可。但如果不使用Data Services,Flash Player出於安全的考慮,只能調用同域的服務。如果調用有別域的服務就會報“安全沙漏”錯誤。所以在實際開發中,Flex顯示層通用Data Servcies定義的服務來進行調用,這樣就可以開發一個分布式的基於服務的應用程序。 首先要把Data Services部置到Tomcat服務器上。安裝fds2,完成後在安裝目錄的根目錄下會有一個flex.war包,解壓該包內容至tomcat/webapps/flex下(http://localhost:8080/flex測試),這樣就完成的Data Services的部置,所有開發的基於Data Services的Flex程序都必段運行在flex目錄下,為了適應tomcat服務器,應更改webapps/flex/WEB-INF/flex/servces-config.xml文件:由原來的 改成: 15.8Data Services的配置和使用 定義服務 Flex提供三種方式來進行數據的交互:Remote Object、HttpService、WebService。在Data Service 中有二個文件分別定義這三種方式: Webapps/flex/WEB-INF/flex/remoting-config.xml用於配置Remote Object。 Webapps/flex/WEB-INF/flex/proxy-config.xml用於配置HttpService和WebService。 以下是WebService的配置方法,定義一個服務: 服務的調用 在程序中調用服務可以使用WebService標簽,如下是直接指定wsdl: wsdl=" http://192.168.2.111/SystemLogin/services/LoginWebService?wsdl "/> 以下標簽調用Data Services中定義的服務 注意必須把useProxy設定為true。 15.9權限安全處理 1、權限設定 所有的系統權限統一使用外掛的權限設定,FLEX不另外開發界面來進行權限設定。 2、權限服務 服務器端提供一個權限的WebService用於得到用戶的權限值。它的wsdl: http://192.168.2.111/Security/services/SecurityWebService?wsdl 它提供二個方法用於得到用戶的系統操作權限 getSecurityStandardXML(userName,sys,moduleName) :該方法返回標准的XML數據格式getSecurityXML(userName,sys,moduleName):該方法返回Delphi識別的XML數據格式 3、權限處理流程 以上的權限以模塊來進行權限獲取,並不是系統啟動時一次獲取系統各模塊的所有權限。如果模塊第一次運行即調用權限服務取得模塊的權限並緩存,再次運行時不用再調用權限服務而是從緩存中取得(根據權限KEY)。 4、編碼時的權限獲取代碼 一般的做法是當開啟一個模塊窗口,窗口初始化時就得到該模塊的權限,所以取得模塊權限的工作放在窗口處理類的構造函數中,因為這樣就在實例處理為時就運行取得權限的代碼。代碼如下: //構造函數中發佈權限事件,用於得到該模塊的用戶權限 var securityVO:SecurityVO=new SecurityVO(); //從登陸model處得到登陸用戶名 https://www.doczj.com/doc/8e6841113.html,erName=https://www.doczj.com/doc/8e6841113.html,erName;//用戶名 securityVO.sys=sys;//系統名 securityVO.moduleName=moduleName;//模塊名 var securityEvent:SecurityEvent=new SecurityEvent();//權限事件 securityEvent.data=securityVO;//加權限對象到事件中 CairngormEventDispatcher.getInstance().dispatchEvent(securityEven t); 獲得模塊的權限 SecurityModelLocator.securityObject[secId]).add;//該代碼取得模塊的增加權限,secId是模塊的權限緩存識別KEY,它由”useName+sys+moduleName”組成。 15.10FLEX程序的性能優化 Flex雖然能夠開發功能強大的RIA程序,但如果使用不當,可能會存在各方面的性能問題,例如不流暢的用戶體驗,程序出現停頓等等,這嚴重影響程序的質量。所以FLEX開發一開始就應該把性能考慮進來。 恰當使用布局 對FLEX性能最大的威脅是在界面中過度的使用容器。性能下降是由於FLEX布局管理器及其子對象要根據縮放和度量算法來決定控制的X軸和Y軸的位置、尺寸和樣式。雖然Flex2、Action Script3和Flash Player 9極大的提高了Flex的性能,但開發時考虛性能問題還是有好處的。 1、避免多層嵌套容器 一個好原則是最好避免嵌套的容器超過三層。下面的示例展示了深層的嵌套: .... .... 其實它完全可以使用以下代碼達到同樣的效果: .... .... “哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二、汇编直接与硬件打交道,如果你想搞通程序在执行时在电脑中的来龙去脉,也就是搞清电脑每个组成部分究竟在干什么、究竟怎么干?一个真正的硬件发烧友,不懂这些可不行。三、如今玩DOS的多是“高手”,如能像吾一样混入(我不是高手)“高手”内部,不仅可以从“高手”朋友那儿套些黑客级“机密”,还可以自诩“高手”尽情享受强烈的虚荣感--#$%&“醒醒!” 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指 快速入门指南 Sybase 软件资产管理 (SySAM) 2 文档 ID:DC01050-01-0200-01 最后修订日期:2009 年 3 月 版权所有 ? 2009 Sybase, Inc. 保留所有权利。 除非在新版本或技术声明中另有说明,本出版物适用于 Sybase 软件及任何后续版本。本文档中的信息如有更改,恕不另行通知。此处说明的软件按许可协议提供,其使用和复制必须符合该协议的条款。 要订购附加文档,美国和加拿大的客户请拨打客户服务部门电话 (800) 685-8225 或发传真至 (617) 229-9845。 持有美国许可协议的其它国家/地区的客户可通过上述传真号码与客户服务部门联系。所有其他国际客户请与 Sybase 子公司或当地分销商联系。升级内容只在软件的定期发布日期提供。未经 Sybase, Inc. 事先书面许可,不得以任何形式或任何手段(电子的、机械的、手工的、光学的或其它手段)复制、传播或翻译本手册的任何部分。 Sybase 商标可在位于 https://www.doczj.com/doc/8e6841113.html,/detail?id=1011207 上的“Sybase 商标页”进行查看。Sybase 和列出的标记均是 Sybase, Inc. 的商标。 ?表示已在美国注册。 Java 和基于 Java 的所有标记都是 Sun Microsystems, Inc. 在美国和其它国家/地区的商标或注册商标。 Unicode 和 Unicode 徽标是 Unicode, Inc. 的注册商标。 本书中提到的所有其它公司和产品名均可能是与之相关的相应公司的商标。 美国政府使用、复制或公开本软件受 DFARS 52.227-7013 中的附属条款 (c)(1)(ii)(针对美国国防部)和 FAR 52.227-19(a)-(d)(针对美国非军事机构)条款的限制。 Sybase, Inc., One Sybase Drive, Dublin, CA 94568. 玩物丧志的意思及故事 导读:【成语】: 玩物丧志 【拼音】: [wánwùsàngzhì] 【解释】: 意指玩弄无益之器物易于丧失意志,贻误大事。 【出处】: 《书·旅獒》:“玩人丧德,玩物丧志。” 【举例造句】: 道学家教人少作诗文,说是“~”,说是“害道”,那么诗文成了废话,这所谓诗文指表情的作品而言。 【成语典故】: 公元前668年,这时中国历史已经进入春秋时期。周王室地位衰微,各个诸侯国纷起争雄,弱肉强食,齐桓公重用管仲,打出“尊王攘夷”的旗号,一举奠定了霸业。 而此时的卫国却是另一番景象。在经历了州吁、宣公、惠公、黔牟数十年的国政动荡之后,卫国元气大伤,当年康叔、武公的辉煌早已成为可望不可即的遥远的背影。就在这时,一代荒唐国君卫懿公登上了卫国的历史舞台。 卫懿公是卫国的第十四代第十七位君主,他平生最大的爱好,既不是权术,又不是酒色,更不是治国,而是养鹤。他为了养鹤建造了 专门的宫苑,整天与鹤为伴,他非常喜欢鹤的卓尔不群的外表和高傲优雅的姿态,以至于如痴如醉,卫国从上到下的大事小事全被他抛到了脑后。他还让鹤乘坐高级豪华的车子,比朝中大臣所乘的还要高级,鹤乘坐的车驾在大街上通过时,所有路人都必须恭敬地闪避一旁。为了养鹤,卫国每年都要耗费大量资财,百姓们无形中加重了负担,无不怨声载道。由于卫懿公荒废国事,大臣们的奏章如泥牛入海,许多国际国内事务得不到及时处理,渐渐也引发了大臣们的强烈不满。而卫懿公沉溺于玩鹤,对现实形势不管不顾,早就失去了复兴卫国的宏大志向了。 很快,卫国的灾难就降临了。公元前659年,山西陕西一带的狄部落抓住卫国困顿衰弱的机会发兵侵卫。卫懿公得到奏报之后马上慌了神,他下令军队前去抵抗,可是将士们都气愤地说:“既然鹤能享受比我们高的待遇,现在就让它去打仗吧!”卫懿公没有办法,只好亲自督率倾国之兵出征,与狄人战于荥泽。由于军无战心,结果卫国军队很快被狄部落打得落花流水,连卫懿公也命丧沙场。卫国灭亡了,朝歌作为国都的历史就此告终了,后来若不是齐国、宋国出兵援助,保住了卫国仅存的七百多人,卫国真的要亡国灭种了。 后世人们不能忘记卫懿公玩鹤亡国的教训,就把他的行为称作“玩物丧志”。古人有诗云:“曾闻古训戒禽荒,一鹤谁知便丧邦。荥泽当时遍磷火,可能骑鹤返仙乡?”正是对卫懿公一针见血的讽刺。 感谢您的阅读,本文如对您有帮助,可下载编辑,谢谢 配置管理系统(北大软件 010 - 61137666) 配置管理系统,采用基于构件等先进思想和技术,支持软件全生命周期的资源管理需求,确保软件工作产品的完整性、可追溯性。 配置管理系统支持对软件的配置标识、变更控制、状态纪实、配置审核、产品发布管理等功能,实现核心知识产权的积累和开发成果的复用。 1.1.1 组成结构(北大软件 010 - 61137666) 配置管理系统支持建立和维护三库:开发库、受控库、产品库。 根据企业安全管理策略设定分级控制方式,支持建立多级库,并建立相关控制关系;每级可设置若干个库;配置库可集中部署或分布式部署,即多库可以部署在一台服务器上,也可以部署在单独的多个服务器上。 1. 典型的三库管理,支持独立设置产品库、受控库、开发库,如下图所示。 图表1三库结构 2. 典型的四库管理,支持独立设置部门开发库、部门受控库、所级受控库、所级产品库等,如下图所示。 图表2四级库结构配置管理各库功能描述如下: 以“三库”结构为例,系统覆盖配置管理计划、配置标识、基线建立、入库、产品交付、配置变更、配置审核等环节,其演进及控制关系如下图。 图表3 配置管理工作流程 1.1.2主要特点(北大软件010 - 61137666) 3.独立灵活的多级库配置 支持国军标要求的独立设置产品库、受控库、开发库的要求,满足对配置资源的分级控制要求,支持软件开发库、受控库和产品库三库的独立管理,实现对受控库和产品库的入库、出库、变更控制和版本管理。 系统具有三库无限级联合与分布部署特性,可根据企业管理策略建立多控制级别的配置库,设定每级配置库的数量和上下级库间的控制关系,并支持开发库、受控库和产品库的统一管理。 4.产品生存全过程管理 支持软件配置管理全研发过程的活动和产品控制,即支持“用户严格按照配置管理计划实施配置管理—基于配置库的实际状况客观报告配置状态”的全过程的活动。 5.灵活的流程定制 可根据用户实际情况定制流程及表单。 6.支持线上线下审批方式 支持配置控制表单的网上在线审批(网上流转审批)和网下脱机审批两种工作模式,两种模式可以在同一项目中由配置管理人员根据实际情况灵活选用。 7.文档管理功能 实现软件文档的全生命周期管理,包括创建、审签、归档、发布、打印、作废等,能够按照项目策划的软件文档清单和归档计划实施自动检查,并产生定期报表。 8.丰富的统计查询功能,支持过程的测量和监控 支持相关人员对配置管理状态的查询和追溯。能够为领导层的管理和决策提供准确一致的决策支持信息,包括配置项和基线提交偏差情况、基线状态、一致性关系、产品出入库状况、变更状况、问题追踪、配置记实、配置审核的等重要信息; 9.配置库资源的安全控制 1)系统采用三员管理机制,分权管理系统的用户管理、权限分配、系统操 作日志管理。 2)系统基于角色的授权机制,支持权限最小化的策略; 3)系统可采用多种数据备份机制,提高系统的数据的抗毁性。 10.支持并行开发 系统采用文件共享锁机制实现多人对相同配置资源的并行开发控制。在系统共享文件修改控制机制的基础上,采用三种配置资源锁以实现对并行开发的 Linux系统常用命令快速入门.txt Linux系统常用命令快速入门 文件和目录操作的基本命令 1、pwd命令 2、cd命令 3、ls命令 4、locate 命令 5、clear 命令与 6、cat命令 7、head 命令 8、tail 命令 9、grep 命令 10、chmod命令 11、cp命令 12、mv 命令 13.mkdir命令 14.rm命令 文件压缩和有关归档的命令 文件系统的命令 与系统管理相关的命令 用户管理命令 Linux 系统常用命令快速入门 注:在Linux中命令是区分大小写的,如:Ls 跟 ls 是不一样的。 文件和目录操作的基本命令 1、pwd 命令 发布时间:2007-01-17 16:21:42 pwd 命令代表“print working directory”(打印工作目录)。当你键入 pwd 时,你是在请 你的 Linux 系统显示 你的当前位置。例如: [root@teacher apache]# pwd /tmp/apache 表明你当前正处在/tmp/apache目录中。 2、cd 命令 cd 命令来改变工作目录。 3、ls 命令 使用 ls 命令就可以显示你的当前目录的内容。ls 命令有许多可用的选项。要看到 ls 命令 的所有选项,你可以 通过在 shell 提示下键入 man ls 来阅读其说明书页。下面是一个与 ls 一起使用的一些常 用选项的简短列表。 -a —全部(all)。列举目录中的全部文件,包括隐藏文件(.filename)。位于这个列表的 起首处的 .. 和 . 依 次是指父目录和你的当前目录。 -l —长(long)。列举目录内容的细节,包括权限(模式)、所有者、组群、大小、创建日期、文件是否是到 系统其它地方的链接,以及链接的指向。 -F —文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括:/ 表明是一个目录;@ 表 明是到其它文件的符号链接;* 表明是一个可执行文件。 -r —逆向(reverse)。从后向前地列举目录中的内容。 -R —递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。 -S —大小(size)。按文件大小排序 4、locate 命令 有时候,你知道某一文件或目录存在,但却不知该到哪里去找到它。你可以使用 locate 命令来搜寻文件或目录 。 使用 locate 命令,你将会看到每一个包括搜寻条件的目录或文件。譬如,如果你想搜寻所有名称中带有 finger 这个词的文件,键入: locate finger locate 命令使用数据库来定位文件或目录名中带有 finger 这个词的文件和目录。这个搜寻结果可能会包括一个 叫做finger.txt 的文件,一个叫做pointerfinger.txt 的文件,一个被命名为fingerthumbnails 的目录,诸如此类 。 5、clear 命令与 6、cat 命令 clear 命令用于清除终端窗口。 cat是 concatenate(连锁)的简写,意思是合并文件。该命令可以显示文件的内容(经常和more搭配使用), 或者是将多个文件合并成一个文件。 7、head 命令 你可以使用 head 命令来查看文件的开头部分。此项命令是: head “玩物丧国”的故事 我国最早的史书《尚书.周书》记载了“玩物丧志”的典故。公元前11世纪,周武王率军灭殷商,建立了西周王朝,四方咸服,纷纷纳贡称臣。西方蛮夷之邦进贡了一头高大威猛的獒犬,武王很是喜爱(周初之西方蛮夷部落应在今宁夏、青海、西藏、甘肃一带。《尔雅.释畜》称:“犬四尺为獒”,推想此獒应与现今的藏獒同类)。当时主要的辅政大臣召公姬奭,因担心武王会因犬而废政,便写了名曰《旅獒》的训诫(惟克商,遂通道于九夷八蛮。西旅厎贡厥獒,太保乃作《旅獒》,用训于王),告诫武王不要“玩人丧德,玩物丧志”。所谓“玩物”,就是过分好物不能自拔的意思,成语“玩物丧志”即典出于此。 其实在现实生活中,工作之余有点业余爱好本不是坏事。但关键是要掌握好“度”,不要因对外物的喜好而耽误了正事。按照召公的训诫是“不作无益害有益”,不要让无益的事情去妨害有益的事情。倘若对无益的爱好不加以节制,小则意志消沉,丧失进取心;大则身死名灭,玩物丧国,这样的例子在中外历史上可以说数不胜数。 夏王朝是中国历史上第一个奴隶制王朝,传说他的创立者大禹品尝了仪狄进献的酒醪后赞不绝口,又因担心后人会酗酒误国而不再饮酒,可以说很有忧患意识。但是他的后代却不太争气,夏代第三任君主太康不仅嗜酒,尤其酷爱狩猎。有一次,他带着大队人马到洛水南岸狩猎,一去就是好几个月,国无主君,国事全被耽误了。黄河下游东夷部落有穷氏的首领后羿乘虚而入,亲自带兵封锁了太康的 归路,夺取了夏的政权(太康死于流亡中)。但令人不解的是,神箭手后羿和太康一样,也是酷爱四出游猎。据张守节《史记正义》引《帝王纪》载,“羿恃其善射,不修民事,淫于田兽,弃其良臣”,把政事全部交给了亲信寒浞,自己则忙于弯弓搭箭,降龙伏虎射大雕。阴险的寒浞趁此机会,不断扩充部族的实力,后来干脆谋杀了后羿,并诛灭了后羿的子孙。 燕召公姬奭写了《旅獒》,告诫周武王不要“玩物丧志”。但是他的谆谆教诲对后人却没有起多大的作用。卫国的第18代国君姬赤(卫懿公,前668年-前660年在位)的嗜好是养鹤。卫懿公养鹤与一般人不同,非常用心:他根据众鹤的品相,给它们加官进爵,上等的享受大夫的俸禄待遇,较差的享受士的俸禄待遇;鹤住的地方,建有亭台楼阁,小桥流水;他外出游玩,必将鹤载于车前,号称“鹤将军”;对善养鹤者必以重用,献善鹤者必以重赏。卫懿公整天忙于“鹤政”,终至朝政混乱,民怨沸腾。懿公九年(前660年)冬,来自北方的翟人部落攻卫,卫懿公发兵抵抗。调兵遣将时,大臣们说:“您喜欢鹤,就让它们去进攻翟人吧”;向国人分发兵器盔甲时,国人们说:“叫鹤将军去抵抗敌人吧,它们享受着国家的俸禄,我们哪里比得上它们!”卫懿公无奈之下,只得带领少数亲信迎敌,结果兵败被杀。 周公的后人(姬姓诸侯国)也是一样,不过他们的爱好是斗鸡,当然是连斗带赌。国君士大夫们斗鸡与众不同,为此,营造了豪华气派的斗鸡台(原址在今山东诸城);所有斗鸡都要精挑 软件配置管理计划示例 计划名国势通多媒体网络传输加速系统软件配置管理计划 项目名国势通多媒体网络传输加速系统软件 项目委托单位代表签名年月日 项目承办单位北京麦秸创想科技有限责任公司 代表签名年月日 1 引言 1.1 目的 本计划的目的在于对所开发的国势通多媒体网络传输加速系统软件规定各种必要的配置管理条款,以保证所交付的国势通多媒体网络传输加速系统软件能够满足项目委托书中规定的各种原则需求,能够满足本项目总体组制定的且经领导小组批准的软件系统需求规格说明书中规定的各项具体需求。 软件开发单位在开发本项目所属的各子系统(其中包括为本项目研制或选用的各种支持软件)时,都应该执行本计划中的有关规定,但可以根据各自的情况对本计划作适当的剪裁,以满足特定的配置管理需求。剪裁后的计划必须经总体组批准。 1.2 定义 本计划中用到的一些术语的定义按GB/T 11457 和GB/T 12504。 1.3 参考资料 ◆GB/T 11457 软件工程术语 ◆GB 8566 计算机软件开发规范 ◆GB 8567 计算机软件产品开发文件编制指南 ◆GB/T 12504 计算机软件质量保证计划规范 ◆GB/T 12505 计算机软件配置管理计划规范 ◆国势通多媒体网络传输加速系统软件质量保证计划 2 管理 2.1 机构 在本软件系统整个开发期间,必须成立软件配置管理小组负责配置管理工作。软件配置管理小组属项目总体组领导,由总体组代表、软件工程小组代表、项目的专职配置管理人员、项目的专职质量保证人员以及各个子系统软件配置管理人员等方面的人员组成,由总体组代表任组长。各子系统的软件配置管理人员在业务上受软件配置管理小组领导,在行政上受子系统负责人领导。软件配置管理小组和软件配置管理人员必须检查和督促本计划的实施。各子系统的软件配置管理人员有权直接向软件配置管理小组报告子项目的软件配置管理情况。各子系统的软件配置管理人员应该根据对子项目的具体要求,制订必要的规程和规定,以确保完全遵守本计划规定的所有要求。 2.2 任务 本期我们将介绍VISSIM 4.3 版本二次开发的基本指令,包括路网运行控制、仿真参数设置、检测参数获取及控制算法嵌入。同时将附上一个完整的匝道控制案例源代码(包含inp路网文件)。 1前言 自VISSIM二次开发系列前十一期文章发布以来,小编收到了很多反馈和问题,主要集中在以下几点: (1) 许多读者朋友是用matlab、vb或者其他平台进行VISSIM二次开发,对C#不熟悉; (2) 有许多特定的需求,比如:无人驾驶场景模拟,驾驶行为参数标定、交叉口自适应控制等; (3) 希望公开检测参数获取和匝道控制的源代码。 第一个问题,希望读者朋友们能够掌握开发的原理和方法,平台仅仅是工具;第二个问题,如果有好的案例或者DEMO,希望能够拿出来分享,有问题也可以通过智联交通QQ群一起讨论;第三个问题,本期会介绍4,3版本开发的基本指令,并附上匝道控制案例的完整源代码。 2匝道控制场景 本期以一个匝道控制场景的构建过程为例,总结VISSIM 4.3二次开发的基本指令。 如图1所示为实施匝道控制的快速路瓶颈区域,因其地理位置原因(该匝道是南环高架南段唯一的一处上匝道,毗邻商圈),上匝道需求较大,匝道汇入主线为3并2,且汇入后的2车道宽度较窄,匝道车流汇入持续对主线交织区产生干扰,导致汇入点通行能力下降。,高峰时段主线排队部分时段超过1公里。为缓解拥堵,使上匝道车辆有序进入主线,管理部门拟在入口匝道处设计信号控制灯,在周边分流路口设置VMS信息板,并与地面信号控制相协调,限于篇幅,本文仅介绍匝道控制的一种方案——ALINEA控制(相关资料参考第五期)。 (a) 匝道控制地理位置 (b) 高峰期快速路主线拥堵 玩物丧志的例子 1.春秋时,卫懿(yì)公是卫国的第十四代君主。卫懿公特别喜欢鹤, 整天与鹤为伴,如痴如迷,丧失了进取之志,常常不理朝政、不问民情。他还让鹤乘高级豪华的车子,比国家大臣所乘的还要高级,为了养鹤,每年耗费大量资财,引起大臣不满,百姓怨声载道。公元前659年,北狄部落侵入国境,卫懿公命军队前去抵抗。将士们气愤地说:“既然鹤享有很高的地位和待遇,现在就让它去打仗吧!”懿公没办法,只好亲自带兵出征,与狄人战于荥泽,由于军心不齐,结果战败而死。人们把卫懿公的行为称作“玩物丧志”。古人有诗云:曾闻古训戒禽荒,一鹤谁知便丧邦。荥泽当时遍磷火,可能骑鹤返仙乡? 2.北宋皇帝宋徽宗赵佶,喜好书画、蹴踘,整日沉迷其中,其也实 乃历史上的书画大家,瘦金体文字和花鸟名画传承千古,但是重用蔡京、童贯、高俅等奸臣主持朝政,大肆搜刮民财,穷奢极侈,荒淫无度,朝政荒废,民不聊生,最终酿成“靖康之耻”,北宋被金灭亡。据说,宋徽宗听到财宝等被金人掳掠毫不在乎,等听到皇家藏书也被抢去,才仰天长叹几声。 3.西汉建平二年,有一天,汉哀帝下朝回宫,看到殿前站着一个人, 正在传漏报时,哀帝随口问:“那不是舍人董贤吗?”那人忙叩头道:“正是小臣董贤。”董贤是御史董恭的儿子,在汉哀帝刘欣还是太子时曾当过太子舍人。就是这一瞥,哀帝忽然发现,几年不见,董贤越长越俊俏了,比六宫粉黛还要漂亮,他不禁大为 喜爱,命他随身侍从。从此对他日益宠爱,同车而乘,同榻而眠。 董贤不仅长得像美女,言谈举止也十足地像女人,“性柔和”、“善为媚”。哀帝对董贤的爱之深,可用一个例子来说:据说,一天哀帝早晨醒来,见董贤还睡着,哀帝欲将衣袖掣回,却又不忍惊动董贤。可是衣袖被董贤的身体压住,不能取出,待要仍然睡下,自己又有事不能待他醒来,一时性急,哀帝竟从床头拔出佩刀,将衣袖割断,然后悄悄出去。所以后人把嬖宠男色,称作“断袖癖”。当时宫女都加以效仿而割断一只衣袖。待董贤醒来,见身下压着哀帝的断袖,也感到哀帝的深情,从此越发柔媚,须臾不离帝侧。后人将同性恋称为“断袖之癖”,便是源出于此。 4.据报道:某地一农妇日以继夜沉醉在麻将桌上,到了抛家不顾的 地步,一日丈夫外出,她竟将3岁的女儿锁在家中,无牵无挂地到赌场去玩至深夜才归,不料女儿在家落入地窖被毒蛇活活咬死。 某企业一位财务科长事业上正如日中天,春风得意,在一次赔同客户打麻将中连战三天三夜,身心极度疲惫时又逢“牌火”冲顶,突患脑溢血“因公牺牲”,撂下了年青的妻子和年幼的儿子。号称“西北第一贪”的周长青,只身闯入澳门赌场,利用公款豪赌11个月,输掉公款5000万元,最终被送上了断头台。凡此种种,岂只是玩物丧志呢?说“玩物丧家,玩物丧命”才更恰如其分! 沉迷网络的危害及其案例 沉迷网络的危害及其案例当今社会,网络技术迅猛发展,但网络是一把双刃剑,许多青少年沉迷于网络游戏的虚幻世界中,整个精神被那激动的情节所吞蚀,五彩缤纷、虚拟莫测的网络世界,对青少年具有强大的吸引力,资料显示,目前在中国市场销售的网络游戏大约有95%是以刺激、暴力和打斗为主要内容的,在一定程度上会影响他们的健康成长,而且越刺激的游戏上网参与的人数就越多,由此引发了一系列的社会问题。一、降低能力,影响学业不可否认,电脑网络信息丰富,确实能扩大学生的知识面,开阔学生的视野。但是,网络传播的形象化(图、文、音、像),跟电视一样,使学生"看"多"想"少或只"看"不"想",他们的思维能力、动手能力就会逐渐下降。网络游戏题材丰富,像科幻、武打、比赛等等,因此,一些游戏迷宁可不吃饭,也要省下钱进网吧过一把瘾,久而久之,就会玩物丧志,荒废学业。据调查表明,上网的中小学生有80%以上是打游戏,15-16%是交友聊天,真正查询资料用于学习的为数极少。一方面,上网占用了青少年学习、休息的部分时间,造成青少年学习压力大、时间分配紧张等情况;另一方面,部分青少年由于深陷网络的虚拟世界,以至于在日常生活中,如上课、睡眠等,也常常想着网上空间,造成了精神不集中等情况。除在精力方面,在身体健康上也受到了很大的影响,集中表现在视力大幅下降。与现实的社会生活不同,青少年在网上面对的是一个虚拟的世界,它不仅满足了青少年尽早尽快占有各种信息的需要,也给人际交往留下了广阔的想象空间,而且不必承担 现实生活中的压力和责任。虚拟世界的这些特点,使得不少青少年宁可整日沉溺于虚幻的环境中而不愿面对现实生活。曾经有一个中学生,游戏上瘾,夜不能寐,晚上11点多了,又起来跑去游戏厅,一直玩到天亮,早上上课昏昏欲睡。问他,答曰:“有一关我没打过,睡不着,想想,我能过关的,所以就又去了”。游戏成瘾是指长期迷恋电脑游戏,上课渐感注意力不集中,从而导致成绩下降。由于长时间沉溺于游戏机房,导致生活节律紊乱,一旦停止电脑游戏活动,便难以从事其他有意义的事情,情绪低落,思维迟缓,记忆减退,出现难以摆脱的渴望玩游戏机的冲动,形成精神依赖和相应的生理反应。这些行为特征与毒品成瘾行为有着许多相似之处,是一种心理病理行为。二、心理病变--孤独症青少年长时间上网,不仅影响学业,而且对心理健康也有一定的危害。教学中可以发现,有些学生迷上网吧以后,不仅成绩下降,而且变得目光呆滞,沉默寡言,孤僻怪异,易暴易躁,让人不可捉摸,也不再与同学说笑玩耍了,经常一个人呆呆地发愣。举个例子,一个重点中学的尖子生,自从迷上网络游戏以后,一天短则二小时,长则四五小时,花钱不少不说,问题是从此他就象换了一个人,一离开电脑,回到现实生活中就感到孤独,感到周围的人都很陌生,不愿再与他人交往,心理学家认为他患了一种“自闭症”。三、昼夜泡吧,摧残身体青少年学生正是长身体的时候,如果不知饥渴、不分昼夜地泡吧,对其身体的危害不亚于大麻、白粉等毒物,这并非危言耸听。一名13岁中学生从家里偷出300元钱,在网吧玩游戏连续4天4夜,由于网络游戏的激烈刺激和惊心动魄的 从下面两个题目中任选一题,按要求作答。不少于700字,将题目抄在答题卡上。 ①古人教子曰:业精于勤,荒于嬉。 现代教育家说:研究“玩儿”这一丰富的源泉,是我们的任务。 以《中国古代漆器》《明代家具珍赏》《蟋蟀谱集成》《北京鸽哨》等“世纪绝学”享誉中外的文物鉴赏家王世襄,总结自己一生时说:“我这辈子没干别的,净玩儿了。” 也有人说:玩物丧志,靠玩儿难以成就大事。 请以“说玩儿”为题,写一篇议论文。要求:观点明确,论据充分,论证合理。 ②将自己的书贴上特定标签或写上几句话投放到公共场所,如咖啡馆、地铁或公园内的长凳上……无偿提供给拾取到的人阅读;拾取的人阅读之后,再以相同的方式将该书投放到公共环境中去。这就是“漂流书活动”。 每一位主人都希望自己的书被人带走,想象着它进入另一些人的世界——和他们发生各种奇妙的联结。这样,一本流动起来的书,便有了它的故事——书的生命或人的生命,都可能由此变得不再平淡。 请根据上面的提示语,发挥想象,以“漂流书的故事”为题,写一篇记叙文。 要求:立意自定;有形象,有情节,有创意。 【试题来源】北京市鲁迅中学2019届高三上学期期中检测语文试卷 【答案解析】 漂流书的故事 我是《沉默的大多数》。我有一个哥哥,叫《2017,教你玩转中国股市》,还有一个妹妹,叫《那年夏天遇见你》。为了满足更多人的胃口,主人把我们仨订成了一本书,我被放在最前面,摆在地铁的流动书架上。 我以为日子会平淡地过去。毕竟,我是社会文艺,有深度有思想,是阳春白雪。他们两个,一个是不靠谱的成功学,一个是酸死人的言情小说,和我比起来,都是下里巴人。 第一个带走我们的,是一个满面愁容的中年人。他直接跳过了我和妹妹,开始钻研中国股市。他在地铁上看得津津有味,一副捡到宝的样子,差点坐过了站。我想他只是随便翻翻,很快就会来我这里汲取思想。没想到,他居然把我哥哥粗暴地撕了下来,把我和妹妹扔在一边的长椅上,扬长而去。我惊呆了,他满面愁容,是因为如此“求钱若渴”吗? 第二个带走我和妹妹的,是个可爱的初中女生。她一定是来向我学习精神文化的,我自豪地 ADAM-4117快速入门手册 一、ADAM-4117概述 ADAM-4117是16位A/D、8通道的模拟量输入模块,可以采集电压、电流 等模拟量输入信号,并且为所有通道都提供了独立的可编程的输入范围。在工业 测量和监控的应用中,ADAM-4117具有良好的性价比。它不仅能够用于恶劣的 环境中,而且还具有更加坚固型的设计。 ADAM-4117支持8路差分信号,还支持MODBUS协议。在模块的右侧有 一个白色的拨码开关来设置初始化状态(INIT*)和正常工作状态的切换。ADAM-4117具有4-20ma、0-20ma、±20ma等电流量程,当您需要测量电流时, 不需要外接电阻,只需打开盒盖,按照电路板上的标识来设置跳线即可。 ADAM-4117 ADAM-4117一分钟快速入门: ?ADAM-4117可以将电压电流信号 转换为RS-485信号,传输到电脑 或PLC中 ?一般电脑都具有RS-232接口,通 过RS-232到RS-485的转换器连接 ADAM-4117 ?以ADAM-4520为例,电脑通过直 连线连接ADAN-4520,4520的 DATA+连接4117的DATA+,4520 的DATA-连接4117的DATA-。连 线完成后,安装测试软件,通过测 试软件对4117进行测试和配置 ?ADAM-4117和ADAM-4520都需要 供电,4117通电之后,指示灯呈 红色闪烁状。 ?更加详细的描述参见下面的内容。 ……to be continued…… 规格说明 AI 模拟量输入 ●有效分辨率:16位 ●通道:8路差分,可独立设置量程 ●高共模电压:200Vdc ●通讯协议:ASCII命令,Modbus协议 ●输入类型:mV,V(支持单双极性),mA ●输入量程:0~150mV, 0~500mV, 0~1V, 0~5V, 0~10V, 0~15V,±150 mV, ±500 mV, ±1V, ±5 V, ±10 V, ±15V, 0~20mA,±20 mA, 4~20mA ●隔离电压:3000VDC ●过压保护:±60V ●采样速率:10/100 采样点每秒(通过测试软件设置) ●输入内阻:电压20MΩ,电流120Ω ●精确度:电压模式:±0.1% or better 电流模式:±0.2% or better ●零点漂移:±6μV/℃ ●跨度漂移:±25 ppm/° C ●共模抑制(CMR)@50/60Hz dB min ●内置看门狗 ●内置TVS/ESD保护 ●功耗1.2W@24VDC 跳线设置: 当ADAM-4117测量电流时,需要跳线。将盒盖拆开,可以看到电路板上有八个跳线,按照下图或者按照电路板上的标识进行跳线,测量电流需要将跳线跳到“I”端,测量电压则需要保持跳线在“V”端的出厂设置不变。跳线完成后,可以使用万用表测量V+与V-之间,正常应该有120Ω的电阻。 凯叔:故事亦可有趣更有用_凯叔讲故事 如何让自己的孩子享受童年的同时又能掌握必要的知识,是很多父母关注的问题。以故事的形式对孩子进行启蒙教育,通过有趣的故事向孩子展现更多的知识和道理,是很多家长正在探索的新的教育方式,这也正是亲子故事品牌“凯叔讲故事”的创立初衷。 近日,一点资讯携手影视、音乐、自媒体等多个垂直行业的名人发布“有趣更有用”的全新态度宣言,与各行业名人展开深刻讨论。凯叔作为亲子故事行业的领跑者,潜心深耕儿童教育行业、以极致的匠人精神寻找儿童教育方法,致力于引起儿童兴趣并培养儿童阅读习惯,这恰恰与一点资讯所提倡的“有趣更有用”的全新态度宣言不谋而合。 从中国最年轻的小说演播艺术家到中央电视台主持人,从豆瓣评分高达8.3分的国内首档声音竞演节目《声临其境》主持人到转型成功的内容创业者,“凯叔讲故事”微信公众号及APP创始人凯叔经历了台前幕后的多彩人生。“一点极致,造就产品艺术,故事可以有趣亦有价值。”凯叔接受一点资讯专访时表示。 采访现场,凯叔也深度解读了儿童教育行业的有趣与有用:“儿童是天生的艺术鉴赏者,对他们而言,无论是科幻还是童话,有趣是故事的先决条件,无趣的故事等于无用的故事。”有不少父母对这一观点表示认可:“用这样的方式教育孩子会更容易被接受。” 孩子对这个世界充满了未知和新奇感,故事是孩子与父母沟通和交流的一条纽带,是了解世界的一道窗。凯叔创办“凯叔讲故事”微信公众号和APP,既为了让儿童感知到世界的有趣,例如天空的飞鸟,地上的鸡鸭,远古的恐龙甚至是未来的宇宙飞船,也为了探索有用的 儿童教育之道,尽早地培养起孩子的阅读习惯,帮助孩子形成完整的人格和良好的行为习惯。此外,“凯叔讲故事”也在打造“有趣更有用”的全新版块——《凯叔·诗词来了》。一方面通过诗词戏剧、改编诗词音乐、诗词脱口秀等有趣的形式让儿童感受到古诗词的魅力,通过反复的过程深化记忆;更为重要的是,中国古诗词的传承是因为古今数代人的情感认知一致,诗词的传承即情感的传承,儿童在反复听读的过程中学到的是体验和表达情感,这也是《诗词来了》全新内容版块带给儿童教育的有用之处。 “有趣更有用”的故事,创造了总播放量30亿以上的成绩,并拥有两千多万用户。而一点资讯“有趣更有用”的全新态度宣言则是一点资讯价值阅读理念的进一步延伸,也体现了各行各业的共同愿景。 以“凯叔讲故事”微信公众号及App创始人凯叔为例,在儿童教育行业,一味地强调有趣会让家长产生玩物丧志的焦虑;一味地强调有用则会让幼小的儿童不知所措,往往适得其反,丧失学习的兴趣。只有把控好有趣与有用的剂量,以有趣为导向激发儿童兴趣,以有用为目的影响儿童成长,有趣与有用结合起来,才能杜绝揠苗助长,让儿童自然地成长为拥有良好阅读习惯的独立个体。 BeanShell快速入门---Java应用程序脚本引擎 快速入门 欢迎使用BeanShell.这是一个速成课程。我们将省去一些重要的选项和细节。要学习更多的内容请看本User's Guide的其它部分。 下载和运行BeanShell 请到https://www.doczj.com/doc/8e6841113.html,下载最新的JAR文件。你可以用图形桌面模式和命令行模式起动BeanShell。 如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上双击来起动BeanShell 的桌面。但不管怎样,如果你要让BeanShell与你的类与应用程序一起工作就必须将BeanShell的jar文件加到classpath中。 你可以将BeanShell的jar文件拖到JAVA_HOME的ext目录也可以直接加到classpath 中。 ?windows用户请将bsh.jar放在JAVA_HOME/jre/lib/ext文件夹,OSX用户可以放在/Library/Java/Extensions. 或者增加BeanShell到你的classpath目录,如: unix: export CLASSPATH=$CLASSPATH:bsh-xx.jar windows:set classpath %classpath%;bsh-xx.jar 然后你就可以运行BeanShell在GUI或命令行模式: ? java bsh.Console // run the graphical desktop or java bsh.Interpreter // run as text-only on the command line or java bsh.Interpreter filenam e [ args ] // run script file 可以在你的应用程序内部来运行,也可以作为debug及servlet的远程服务器模式,或一个Applet内部来运行BeanShell。请参考"BeanShell Modes of Operation"获得更多详情。 BeanShell GUI 用GUI模式启动BeanShell后,将打开一个桌面视窗。用鼠标右击在桌面的背景上,你可以打开另一个控制台视窗及其它的工具如一个简单的类游览器。 每一个控制台视窗运行一个独立的BeanShell解释器。这个图形化的控制台支持基本 作者:非成败 作品编号:92032155GZ5702241547853215475102 时间:2020.12.13 沉迷网络的危害及其案例 沉迷网络的危害及其案例当今社会,网络技术迅猛发展,但网络是一把双刃剑,许多青少年沉迷于网络游戏的虚幻世界中,整个精神被那激动的情节所吞蚀,五彩缤纷、虚拟莫测的网络世界,对青少年具有强大的吸引力,资料显示,目前在中国市场销售的网络游戏大约有95%是以刺激、暴力和打斗为主要内容的,在一定程度上会影响他们的健康成长,而且越刺激的游戏上网参与的人数就越多,由此引发了一系列的社会问题。一、降低能力,影响学业不可否认,电脑网络信息丰富,确实能扩大学生的知识面,开阔学生的视野。但是,网络传播的形象化(图、文、音、像),跟电视一样,使学生"看"多"想"少或只"看"不"想",他们的思维能力、动手能力就会逐渐下降。网络游戏题材丰富,像科幻、武打、比赛等等,因此,一些游戏迷宁可不吃饭,也要省下钱进网吧过一把瘾,久而久之,就会玩物丧志,荒废学业。据调查表明,上网的中小学生有80%以上是打游戏,15-16%是交友聊天,真正查询资料用于学习的为数极少。一方面,上网占用了青少年学习、休息的部分时间,造成青少年学习压力大、时间分配紧张等情况;另一方面,部分青少年由于深陷网络的虚拟世界,以至于在日常生活中,如上课、睡眠等,也常常想着网上空间,造成了精神不集中等情况。除在精力方面,在身体健康上也受到了很大的影响, 集中表现在视力大幅下降。与现实的社会生活不同,青少年在网上面对的是一个虚拟的世界,它不仅满足了青少年尽早尽快占有各种信息的需要,也给人际交往留下了广阔的想象空间,而且不必承担现实生活中的压力和责任。虚拟世界的这些特点,使得不少青少年宁可整日沉溺于虚幻的环境中而不愿面对现实生活。曾经有一个中学生,游戏上瘾,夜不能寐,晚上11点多了,又起来跑去游戏厅,一直玩到天亮,早上上课昏昏欲睡。问他,答曰:“有一关我没打过,睡不着,想想,我能过关的,所以就又去了”。游戏成瘾是指长期迷恋电脑游戏,上课渐感注意力不集中,从而导致成绩下降。由于长时间沉溺于游戏机房,导致生活节律紊乱,一旦停止电脑游戏活动,便难以从事其他有意义的事情,情绪低落,思维迟缓,记忆减退,出现难以摆脱的渴望玩游戏机的冲动,形成精神依赖和相应的生理反应。这些行为特征与毒品成瘾行为有着许多相似之处,是一种心理病理行为。二、心理病变--孤独症青少年长时间上网,不仅影响学业,而且对心理健康也有一定的危害。教学中可以发现,有些学生迷上网吧以后,不仅成绩下降,而且变得目光呆滞,沉默寡言,孤僻怪异,易暴易躁,让人不可捉摸,也不再与同学说笑玩耍了,经常一个人呆呆地发愣。举个例子,一个重点中学的尖子生,自从迷上网络游戏以后,一天短则二小时,长则四五小时,花钱不少不说,问题是从此他就象换了一个人,一离开电脑,回到现实生活中就感到孤独,感到周 VNX初始化配置工具VIA介绍和配置指南 VIA工具是VNX Installation Assist的简写,顾名思义就是VNX的安装配置工具,用来完成对VNX Block或者Unified存储系统进行初始化配置或者升级安装。 VIA是一个运行在笔记本上的Jave编写的图形化工具,主要用途有: ●VNX系统安装完毕后,配置Control station,Data Movers和存储系统 ●支持从Block系统升级Unified存储系统的安装 ●激活License enabler,如CIFS,NFS,Replicator,File Level Retention和SnapSure 等 对于Unified存储系统的配置安装一定要使用VIA工具,如果是单独的Block系统安装配置,可以不使用VIA工具。 对于一套完整的Unified存储系统,在完成连线和加电后,一般使用VIA,可以完成如下的配置工作。 ●设置网络参数(CS和SP有不同的网络参数设置) ●修改缺省的密码等 ●设置Data Mover ●配置远程支持,也就是ESRS,这个在中国客户这里一般很少使用 ●激活各种license ●系统的健康检查 下面是一个利用VIA进行存储系统配置的step by step例子,供大家学习使用。 1.在笔记本桌面启动VIA, 连接VIA和Control station,并配置CS网络和笔记本在同 一子网内。VIA自动搜索没有配置的VNX系统。如下图所示: 2.搜索到没有配置的VNX系统,开始配置File部分,如下图所示,配置Control station 的网络部分。 3.正确配置完毕CS后,系统给出成功提示,如下图所示:汇编语言 快速入门
快速入门指南
玩物丧志的意思及故事
配置管理系统
Linux系统常用命令快速入门
“玩物丧国”的故事
软件配置管理计划
VISSIM COM开发快速入门(4.3基本指令)
玩物丧志的例子
沉迷网络的危害及其案例
高考语文满分作文范例与解析:漂流书的故事
ADAM-4117快速入门手册_ED2
凯叔-故事亦可有趣更有用_凯叔讲故事
BeanShell快速入门
2020年沉迷网络的危害及其案例
VNX初始化配置工具VIA介绍和配置指南