<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT精英俱樂部

    方便自己查閱,僅此而已!

    統(tǒng)計(jì)

    留言簿(4)

    閱讀排行榜

    評(píng)論排行榜

    2009年9月4日 #

    RBAC用戶角色權(quán)限設(shè)計(jì)方案

    http://www.iteye.com/topic/930648

    RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權(quán)限進(jìn)行關(guān)聯(lián)。簡(jiǎn)單地說,一個(gè)用戶擁有若干角色,每一個(gè)角色擁有若干權(quán)限。這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型。在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對(duì)多的關(guān)系。(如下圖)



    角色是什么?可以理解為一定數(shù)量的權(quán)限的集合,權(quán)限的載體。例如:一個(gè)論壇系統(tǒng),“超級(jí)管理員”、“版主”都是角色。版主可管理版內(nèi)的帖子、可管理版內(nèi)的用戶等,這些是權(quán)限。要給某個(gè)用戶授予這些權(quán)限,不需要直接將權(quán)限授予用戶,可將“版主”這個(gè)角色賦予該用戶。 

     

    當(dāng)用戶的數(shù)量非常大時(shí),要給系統(tǒng)每個(gè)用戶逐一授權(quán)(授角色),是件非常煩瑣的事情。這時(shí),就需要給用戶分組,每個(gè)用戶組內(nèi)有多個(gè)用戶。除了可給用戶授權(quán)外,還可以給用戶組授權(quán)。這樣一來,用戶擁有的所有權(quán)限,就是用戶個(gè)人擁有的權(quán)限與該用戶所在用戶組擁有的權(quán)限之和。(下圖為用戶組、用戶與角色三者的關(guān)聯(lián)關(guān)系)

    在應(yīng)用系統(tǒng)中,權(quán)限表現(xiàn)成什么?對(duì)功能模塊的操作,對(duì)上傳文件的刪改,菜單的訪問,甚至頁(yè)面上某個(gè)按鈕、某個(gè)圖片的可見性控制,都可屬于權(quán)限的范疇。有些權(quán)限設(shè)計(jì),會(huì)把功能操作作為一類,而把文件、菜單、頁(yè)面元素等作為另一類,這樣構(gòu)成“用戶-角色-權(quán)限-資源”的授權(quán)模型。而在做數(shù)據(jù)表建模時(shí),可把功能操作和資源統(tǒng)一管理,也就是都直接與權(quán)限表進(jìn)行關(guān)聯(lián),這樣可能更具便捷性和易擴(kuò)展性。(見下圖)



    請(qǐng)留意權(quán)限表中有一列“權(quán)限類型”,我們根據(jù)它的取值來區(qū)分是哪一類權(quán)限,如“MENU”表示菜單的訪問權(quán)限、“OPERATION”表示功能模塊的操作權(quán)限、“FILE”表示文件的修改權(quán)限、“ELEMENT”表示頁(yè)面元素的可見性控制等。

     

    這樣設(shè)計(jì)的好處有二。其一,不需要區(qū)分哪些是權(quán)限操作,哪些是資源,(實(shí)際上,有時(shí)候也不好區(qū)分,如菜單,把它理解為資源呢還是功能模塊權(quán)限呢?)。其二,方便擴(kuò)展,當(dāng)系統(tǒng)要對(duì)新的東西進(jìn)行權(quán)限控制時(shí),我只需要建立一個(gè)新的關(guān)聯(lián)表“權(quán)限XX關(guān)聯(lián)表”,并確定這類權(quán)限的權(quán)限類型字符串。

     

    這里要注意的是,權(quán)限表與權(quán)限菜單關(guān)聯(lián)表、權(quán)限菜單關(guān)聯(lián)表與菜單表都是一對(duì)一的關(guān)系。(文件、頁(yè)面權(quán)限點(diǎn)、功能操作等同理)。也就是每添加一個(gè)菜單,就得同時(shí)往這三個(gè)表中各插入一條記錄。這樣,可以不需要權(quán)限菜單關(guān)聯(lián)表,讓權(quán)限表與菜單表直接關(guān)聯(lián),此時(shí),須在權(quán)限表中新增一列用來保存菜單的ID,權(quán)限表通過“權(quán)限類型”和這個(gè)ID來區(qū)分是種類型下的哪條記錄。

     

    到這里,RBAC權(quán)限模型的擴(kuò)展模型的完整設(shè)計(jì)圖如下:



    隨著系統(tǒng)的日益龐大,為了方便管理,可引入角色組對(duì)角色進(jìn)行分類管理,跟用戶組不同,角色組不參與授權(quán)。例如:某電網(wǎng)系統(tǒng)的權(quán)限管理模塊中,角色就是掛在區(qū)局下,而區(qū)局在這里可當(dāng)作角色組,它不參于權(quán)限分配。另外,為方便上面各主表自身的管理與查找,可采用樹型結(jié)構(gòu),如菜單樹、功能樹等,當(dāng)然這些可不需要參于權(quán)限分配。

    posted @ 2011-07-30 16:36 suplayer 閱讀(1005) | 評(píng)論 (0)編輯 收藏

    iBATIS操作Blob與Clob淺析

    http://developer.51cto.com/art/200907/136668.htm


    spring 中已經(jīng)提供了很好的實(shí)現(xiàn),所以這又省去了很多的功夫,接下來看看iBATIS是如何支持Clob和blob的。

    iBATIS提供了TypeHandler接口,用于處理數(shù)據(jù)類型,基本的實(shí)現(xiàn)類為BaseTypeHandler

    在spring 中,提供了AbstractLobTypeHandler作為基礎(chǔ)類,并且提供了相應(yīng)的模版方法,所有的工作由LobHandler處理。

    BlobByteArrayTypeHandler 主要用于處理blob類型數(shù)據(jù),使用byte[]來映射相應(yīng)的Blob

    ClobStringTypeHandler 用于處理Clob類型數(shù)據(jù),使用字符串來映射Clob

    有一點(diǎn)需要注意的是,AbstractLobTypeHandler中實(shí)現(xiàn)了事務(wù)支持,需要用來釋放相應(yīng)的資源,所以一定需要在事務(wù)環(huán)境中進(jìn)行。

    下面是一個(gè)簡(jiǎn)單的例子:

    1. public class Food {   
    2. private String content;   
    3.  
    4. private String id;   
    5.  
    6. private byte[] image;   
    7.  
    8. private String name;     
    9.     ...   
    10. }  

    xml如下:說明一下,在resultMap中可以通過typeHandler來指定具體的handler.在inline變量中,可以通過handler來定義相應(yīng)的typeHandler

    1. ﹤sqlMap namespace="Food"﹥   
    2.      
    3.    ﹤typeAlias alias="Food" type="org.esoft.hdb.bo.Food"/﹥   
    4.    ﹤resultMap id="foodResult" class="Food"﹥   
    5.   ﹤result property="id" column="C_ID"/﹥   
    6.   ﹤result property="name" column="C_NAME"/﹥   
    7.   ﹤result property="content" column="C_content"   
    8.  typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/﹥   
    9.   ﹤result property="image" column="C_image"   
    10.  typeHandler="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/﹥   
    11.    ﹤/resultMap﹥   
    12.    ﹤sql id="foodFragment"﹥select C_ID,C_NAME,C_CONTENT,C_IMAGE from T_FOOD﹤/sql﹥   
    13.   ﹤select id="getAll" resultMap="foodResult"﹥   
    14.   ﹤include refid="foodFragment"/﹥   
    15.    ﹤/select﹥   
    16.    ﹤select id="selectById" parameterClass="string" resultMap="foodResult"﹥   
    17.   ﹤include refid="foodFragment"/﹥ where C_ID=#id#﹤/select﹥   
    18.      
    19.    ﹤insert id="insert" parameterClass="Food"﹥ insert into T_FOOD ( C_ID,   
    20.   C_NAME,C_CONTENT, C_IMAGE) values ( #id#,   
    21.   #name#,#content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
    22.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#)   
    23.   ﹤/insert﹥   
    24.      
    25.    ﹤update id="update" parameterClass="Food"﹥ update T_FOOD set C_NAME = #name#,   
    26.   C_CONTENT =   
    27.   #content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
    28.   C_IMAGE =   
    29.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#   
    30.   where C_ID = #id# ﹤/update﹥   
    31.      
    32.    ﹤delete id="deleteById" parameterClass="string"﹥ delete from T_FOOD where C_ID = #id#   
    33.   ﹤/delete﹥   
    34.      
    35. ﹤/sqlMap﹥   
    36.  
    37.  
    38. public interface FoodService {   
    39.  
    40.      
    41. void save(Food food);   
    42. Food get(String id);   
    43. /**   
    44. * @param food   
    45. */   
    46. void update(Food food);   
    47. }   
    48.  
    49. public class FoodServiceImpl implements FoodService {   
    50. private FoodDAO foodDAO;   
    51.  
    52. private DaoCreator creator;   
    53.  
    54. public void setCreator(DaoCreator creator) {   
    55.     this.creator = creator;   
    56. }   
    57.  
    58. protected FoodDAO getFoodDAO() {   
    59.     if (foodDAO == null) {   
    60.    foodDAO = (FoodDAO) creator.createDao(FoodDAO.class, Food.class);   
    61.     }   
    62.     return foodDAO;   
    63. }   
    64.  
    65. public Food get(String id) {   
    66.     return getFoodDAO().get(id);   
    67. }   
    68. public void save(Food food) {   
    69.     getFoodDAO().save(food);   
    70. }   
    71. public void update(Food food) {   
    72.     getFoodDAO().update(food);   
    73. }   
    74.  
    75. }   
    76.  
    77. spring xml 配置:  
    78.    
    79. 。。。   
    80.  ﹤bean id="lobHandler"   
    81.   class="org.springframework.jdbc.support.lob.DefaultLobHandler"/﹥   
    82.      
    83.    ﹤bean id="transactionManager"   
    84.   class="org.springframework.jdbc.datasource.DataSourceTransactionManager"﹥   
    85.   ﹤property name="dataSource" ref="dataSource"/﹥   
    86.    ﹤/bean﹥   
    87.      
    88.    ﹤bean id="sqlMapClient"   
    89.   class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"﹥   
    90.   ﹤property name="dataSource" ref="dataSource"/﹥   
    91.   ﹤property name="configLocation"﹥   
    92.  ﹤value﹥SqlMapConfig.xml﹤/value﹥   
    93.   ﹤/property﹥   
    94.   ﹤property name="lobHandler" ref="lobHandler"/﹥   
    95.    ﹤/bean﹥   
    96.      
    97.    ﹤bean id="daoCreate" class="org.esoft.hdb.ibatis.IbatisDaoCreator"﹥   
    98.   ﹤property name="sqlMapClient" ref="sqlMapClient"/﹥   
    99.    ﹤/bean﹥   
    100.      
    101.    ﹤bean id="foodService" class="org.esoft.hdb.service.FoodServiceImpl"﹥   
    102.   ﹤property name="creator" ref="daoCreate"/﹥   
    103.    ﹤/bean﹥   
    104.      
    105.      
    106.    ﹤aop:config﹥   
    107.   ﹤aop:pointcut id="foodServiceMethods"   
    108.  expression="execution(* org.esoft.hdb.service.FoodService.*(..))"/﹥   
    109.   ﹤aop:advisor advice-ref="txAdvice" pointcut-ref="foodServiceMethods"/﹥   
    110.    ﹤/aop:config﹥   
    111.    ﹤tx:advice id="txAdvice" transaction-manager="transactionManager"﹥   
    112.   ﹤tx:attributes﹥   
    113.  ﹤tx:method name="*" propagation="REQUIRED"/﹥   
    114.   ﹤/tx:attributes﹥   
    115.    ﹤/tx:advice﹥  

    簡(jiǎn)單的測(cè)試:

    1. save :   
    2.     Food food = new Food();   
    3.     food.setPk("1");   
    4.     food.setName("food1");   
    5.     BufferedInputStream in = new BufferedInputStream(getClass()   
    6.   .getResourceAsStream("/1.gif"));   
    7.     byte[] b = FileCopyUtils.copyToByteArray(in);   
    8.     food.setImage(b);   
    9.   in = new BufferedInputStream(getClass().getResourceAsStream(   
    10.   "/hibernate.cfg.xml"));   
    11.     b = FileCopyUtils.copyToByteArray(in);   
    12.     food.setContent(new String(b));   
    13.     foodService.save(food);   
    14. update:   
    15. Food food = foodService.get("1");   
    16.     BufferedInputStream in = new BufferedInputStream(getClass()   
    17.   .getResourceAsStream("/jdbc.properties"));   
    18.     byte[] b = FileCopyUtils.copyToByteArray(in);   
    19.     food.setContent(new String(b));   
    20.     foodService.update(food);   
    21.     food = foodService.get("1");   
    22.     assertNotNull(food.getImage());  

    posted @ 2011-07-30 16:35 suplayer 閱讀(320) | 評(píng)論 (0)編輯 收藏

    ORACLE表解鎖

    select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.
    object_name,
       lo.locked_mode
       
    from v$locked_object lo,
       dba_objects ao,
       v$session sess
    where ao.object_id = lo.object_id and lo.session_id = sess.SID;
    獲得未提交的事物的列表和基礎(chǔ)信息
    然后根據(jù) sessionID和serial#號(hào)強(qiáng)制關(guān)閉事物:

    ALTER SYSTEM KILL SESSION '9,108';
    --'9,108'為sessionID和serial#號(hào),逗號(hào)分開


    posted @ 2011-07-30 16:33 suplayer 閱讀(118) | 評(píng)論 (0)編輯 收藏

    UML類與類之間的關(guān)系

    http://www.javaeye.com/topic/37302

    類與類之間的關(guān)系對(duì)于理解面向?qū)ο缶哂泻苤匾淖饔?,以前在面試的時(shí)候也經(jīng)常被問到這個(gè)問題,在這里我就介紹一下。
    類與類之間存在以下關(guān)系:
    (1)泛化(Generalization)
    (2)關(guān)聯(lián)(Association)
    (3)依賴(Dependency)
    (4)聚合(Aggregation)

    UML圖與應(yīng)用代碼例子:
    1.泛化(Generalization)
    [泛化]
    表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。
    [具體表現(xiàn)]
    父類 父類實(shí)例=new 子類()
    [UML圖](圖1.1)

    圖1.1 Animal類與Tiger類,Dog類的泛化關(guān)系

    [代碼表現(xiàn)]

    1. class Animal{}   
    2. class Tiger extends Animal{}   
    3. public class Test   
    4. {   
    5.     public void test()   
    6.     {   
    7.         Animal a=new Tiger();   
    8.     }   
    9. }  

    2.依賴(Dependency)
    [依賴]
    對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),這兩個(gè)對(duì)象之間主要體現(xiàn)為依賴關(guān)系。
    [具體表現(xiàn)]
    依賴關(guān)系表現(xiàn)在局部變量,方法的參數(shù),以及對(duì)靜態(tài)方法的調(diào)用
    [現(xiàn)實(shí)例子]
    比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作
    [UML表現(xiàn)](圖1.2)


    圖1.2 Person類與Screwdriver類的依賴關(guān)系

    [代碼表現(xiàn)]

    1. public class Person{   
    2.     /** 擰螺絲 */  
    3.     public void screw(Screwdriver screwdriver){   
    4.         screwdriver.screw();   
    5.     }   
    6. }  

    3.關(guān)聯(lián)(Association)
    [關(guān)聯(lián)]
    對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。
    [具體表現(xiàn)]
    關(guān)聯(lián)關(guān)系是使用實(shí)例變量來實(shí)現(xiàn)
    [現(xiàn)實(shí)例子]
    比如客戶和訂單,每個(gè)訂單對(duì)應(yīng)特定的客戶,每個(gè)客戶對(duì)應(yīng)一些特定的訂單;再例如公司和員工,每個(gè)公司對(duì)應(yīng)一些特定的員工,每個(gè)員工對(duì)應(yīng)一特定的公司
    [UML圖] (圖1.3)

    圖1.3 公司和員工的關(guān)聯(lián)關(guān)系


    [代碼表現(xiàn)]
    1. public class Company{   
    2.     private Employee employee;   
    3.     public Employee getEmployee(){   
    4.         return employee;   
    5.     }   
    6.     public void setEmployee(Employee employee){   
    7.         this.employee=employee;   
    8.     }   
    9.     //公司運(yùn)作   
    10.     public void run(){   
    11.         employee.startWorking();   
    12.     }   
    13. }  
    (4)聚合(Aggregation)
    [聚合]
    當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象A之間為聚集關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系,強(qiáng)調(diào)的是整體部分之間的關(guān)系。
    [具體表現(xiàn)]
    與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量來實(shí)現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來語法上是沒辦法區(qū)分的,從語義上才能更好的區(qū)分兩者的區(qū)別。
    [關(guān)聯(lián)與聚合的區(qū)別]
    (1)關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對(duì)象是處在同一個(gè)層次上的。比如人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊嚱M成的。
    聚合關(guān)系涉及的兩個(gè)對(duì)象處于不平等的層次上,一個(gè)代表整體,一個(gè)代表部分。比如電腦和它的顯示器、鍵盤、主板以及內(nèi)存就是聚集關(guān)系,因?yàn)橹靼迨请娔X的組成部分。
    (2)對(duì)于具有聚集關(guān)系(尤其是強(qiáng)聚集關(guān)系)的兩個(gè)對(duì)象,整體對(duì)象會(huì)制約它的組成對(duì)象的生命周期。部分類的對(duì)象不能單獨(dú)存在,它的生命周期依賴于整體類的對(duì)象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內(nèi)存)拆了下來。
    [UML圖](圖1.4)

    圖1.3 電腦和組件的聚合關(guān)系

    [代碼表現(xiàn)]
    1. public class Computer{   
    2.     private CPU cpu;   
    3.     public CPU getCPU(){   
    4.         return cpu;   
    5.     }   
    6.     public void setCPU(CPU cpu){   
    7.         this.cpu=cpu;   
    8.     }   
    9.     //開啟電腦   
    10.     public void start(){   
    11.         //cpu運(yùn)作   
    12.         cpu.run();   
    13.     }   
    14. }  

    posted @ 2010-05-07 12:47 suplayer 閱讀(108) | 評(píng)論 (0)編輯 收藏

    解決eclipse與360啟動(dòng)沖突

    在快捷方式屬性-目標(biāo)里加入 -vm "%JAVA_HOME%/jre/bin/javaw.exe"

    posted @ 2010-04-13 08:45 suplayer 閱讀(185) | 評(píng)論 (0)編輯 收藏

    Oracle 10g Express Edition字符集修改

     Oracle 10g Express Edition是Oracle專門為小型用戶提供的免費(fèi)版本。Oracle XE十分小巧,安裝簡(jiǎn)單,可供第三方軟件開發(fā)商部署較小的應(yīng)用。 

      不過Oracle XE目前的beta2缺省安裝的字符集是WE8MSWIN1252,不是中文字符集,并且不能通過直接運(yùn)行 alter  database  character  set  ZHS16GBK  ; 來修改,因?yàn)閆HS16GBK不是缺省字符集的超集。過去流傳很廣的直接修改sys用戶下的PROPS$表的方法,也會(huì)給字符集的變更留下很多潛在的問題. 

      不過在安裝完Oracle XE后,可以在sqlplus(即Oracle XE的run SQL command line)中, 進(jìn)行如下的操作來修改字符集: 

    connect  system/oracle9i  as  sysdba 

    shutdown  immediate 

    startup  mount 

    alter  system  enable  restricted  session  ; 

    alter  system  set  JOB_QUEUE_PROCESSES=0; 

    alter  system  set  AQ_TM_PROCESSES=0; 

    alter  database  open  ; 

    alter  database  character  set  internal_use  ZHS16GBK  ; 

    shutdown  immediate 

    startup 

    這樣字符集的修改就完成了


    摘自紅色黑客聯(lián)盟(www.7747.net) 原文:http://www.7747.net/px/200902/34068.html

    posted @ 2009-11-27 19:56 suplayer 閱讀(136) | 評(píng)論 (0)編輯 收藏

    解決Oracle XE允許連接的用戶數(shù)不足問題



    在數(shù)據(jù)庫(kù)服務(wù)器上運(yùn)行 sqlplus system/password@xe (其中 system 是數(shù)據(jù)庫(kù)用戶無需改變;password 是數(shù)據(jù)庫(kù)密碼應(yīng)指定為實(shí)際密碼;xe 是數(shù)據(jù)庫(kù)實(shí)例名稱) ,然后執(zhí)行:

    alter system set session_cached_cursors=200 scope=spfile;
    alter system set session_max_open_files=200 scope=spfile;
    alter system set sessions=20 scope=spfile;
    alter system set license_max_sessions=200 scope=spfile;
    alter system set license_sessions_warning=200 scope=spfile;
    alter system set processes=200 scope=spfile;

    執(zhí)行后,重啟 Oracle XE 數(shù)據(jù)庫(kù)實(shí)例即可。要重啟 Oracle XE 數(shù)據(jù)庫(kù)實(shí)例:

    1. 如安裝于 Windows 上,先運(yùn)行 net stop oracleservicexe,再運(yùn)行 net start oracleservicexe 即可。也可通過“服務(wù)”管理控制臺(tái)重啟 OracleServiceXE 服務(wù)。
    2. 如安裝于 Linux 上,先運(yùn)行 /etc/init.d/oracle-xe start,再運(yùn)行 /etc/init.d/oracle-xe stop 即可。

    此時(shí),可以支持 179 個(gè)額外的連接會(huì)話。

    posted @ 2009-11-27 19:54 suplayer 閱讀(417) | 評(píng)論 (0)編輯 收藏

    如何改變Oracle 10g Express Edition默認(rèn)的8080端口

    選擇“運(yùn)行SQL命令”,進(jìn)入如下提示符
    SQL>
    首先連接到服務(wù)器
    connect 用戶名/密碼
    登陸后輸入如下命令:
    sql 代碼
    1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081));    
    其中8081是修改后的端口,可以任意。
     
    這樣你就不會(huì)與Tomcat的默認(rèn)端口沖突了,方便開發(fā)。

    ftp服務(wù)占用2100端口,更改命令是:
    sql 代碼
    1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get() , '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()', 2111));   

    posted @ 2009-11-27 19:53 suplayer 閱讀(231) | 評(píng)論 (0)編輯 收藏

    Eclipse插件安裝的3種方法

     

       1. 把插件文件直接覆蓋到eclipse目錄里
       2. 使用link文件,就是把插件存放到任一的地方(例如/eclipse/MyPuls),然后 在eclipse的文件夾里新建一個(gè)links的文件,在里面添加一些后追名為.link的文件(例如emfPlugins.link)結(jié)構(gòu)是這樣的:

              /eclipse/
                   links/
                        emfPlugins.link
                        webtools.link
                        updateManager.link
                        ...
                   ...

              link文件的里包含這樣一條 “path=D:\\JavaDev\\plugins\\vssplugin”這個(gè)路徑就是插件的存放路徑。

       3. 使用eclipse自帶的圖形界面的插件安裝方法:選擇Help > Software Updates > Manager Configuration

        在選擇Add > Extension Location 找到你要安裝插件的目錄就可以了。強(qiáng)烈推薦這種方法,優(yōu)點(diǎn)很多比如可以方便的添加刪除,也不用自己寫link文件!

    備注:Eclipse插件的目錄結(jié)構(gòu)

        /eclipse-plugins/
           eclipse/
              .eclipseextension
              features/
              plugins/

        第2、3種方法所指向的目錄都指的是"eclipse"目錄,

        如果用第3種方法,在eclipse這個(gè)目錄下必須有文件.eclipseextension,如果你下的插件沒有這個(gè)文件,那就隨便eclipse安裝目錄下的那個(gè)文件靠過去就行了!只有有這么個(gè)文件就可以了,內(nèi)容沒什么用,主要是一些版本信息!例如:

        id=org.eclipse.platform name=Eclipse Platformversion=3.3.1

     

    posted @ 2009-09-06 15:21 suplayer 閱讀(138) | 評(píng)論 (0)編輯 收藏

    創(chuàng)建XMLHtttRequest對(duì)象

    創(chuàng)建XMLHtttRequest對(duì)象(針對(duì)mozilla,IE8,FF,IE5,IE5.5,IE6,IE7)
    //2、創(chuàng)建XMLHttpRequest對(duì)象
        //這其實(shí)是XMLHttpReqest對(duì)象使用最復(fù)雜的一步
        //針對(duì)IE和其他類型瀏覽器建立這個(gè)對(duì)象的不同方式寫不同的代碼
       
        if(window.XMLHttpRequest){
        //針對(duì)firefox,mozillaz,opera,IE7,IE8
            xmlhttp = new XMLHttpRequest();
            //用于修復(fù)某些Mozillaz瀏覽器bug
            if(xmlhttp.overrideMimeType)
            {
                xmlhttp.overrideMimeType("text/xml");
            }
        }
        else if(window.ActiveXObject){
            //針對(duì)IE6,IE5.5,IE5
            //兩個(gè)都可以創(chuàng)建XMLHttpRequest對(duì)象,保存在js數(shù)組中
            var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

    //var activeName= ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0', //'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0', //'MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
            for(var i =0;i<activeName.length;i++)
            {//取出一個(gè)控件名來創(chuàng)建XMLHttpRequest對(duì)象,創(chuàng)建成功就終止循環(huán),如果創(chuàng)建失敗可以繼續(xù)創(chuàng)建
            //可以拋出異常,繼續(xù)創(chuàng)建
                try{
                    xmlhttp= new ActiveXObject(activeName[i]);
                    break;
                }catch(e){
                }
            }
           
        }
        //確認(rèn)XMLHttpRequest對(duì)象已經(jīng)創(chuàng)建成功
        if(!xmlhttp)
        {
            alert("XmlHttpRequest創(chuàng)建失敗");
            return;
        }   
       
       
        //3、注冊(cè)回調(diào)函數(shù),函數(shù)名后面不要加括號(hào)
        //如果加了括號(hào),就變成了調(diào)用函數(shù),會(huì)把函數(shù)的返回值發(fā)揮給xmlhttp,沒有達(dá)到我們的目的  
        xmlhttp.onreadystatechange=callback;
       
        //4、設(shè)置連接信息
        //第一個(gè)參數(shù)設(shè)置http請(qǐng)求方式,主要是get和post兩種方式
        //第二個(gè)參數(shù)是uri地址
        //第三個(gè)參數(shù)表示異步交互還是同步交互方式,true表示異步,false表示同步
        xmlhttp.open("GET","/JQuery/servlet/AjaxServlet?name="+username,true);
       
        //5、發(fā)送數(shù)據(jù)開始和服務(wù)器端交互
        //同步方式下,send這句話會(huì)在服務(wù)器端的數(shù)據(jù)回來后,才執(zhí)行完
        //異步方式下,send會(huì)立即執(zhí)行完
        xmlhttp.send(null);
    }
    //5、寫回調(diào)函數(shù)
    //回調(diào)函數(shù)
    function callback(){
        //接收相應(yīng)的相應(yīng)數(shù)據(jù)
        //判斷交互狀態(tài)已經(jīng)完成
        if(xmlhttp.readyState ==4)
        {
            //判斷http的交互狀態(tài)
            if(xmlhttp.status == 200)
            {
               //獲取服務(wù)器端返回的數(shù)據(jù)
                //獲取服務(wù)器端純文本數(shù)據(jù)
                var responseText = xmlhttp.responseText;
                //將數(shù)據(jù)顯示在頁(yè)面上
                //通過dom獲取div元素節(jié)點(diǎn)
                var divNode =document.getElementById("result");
                //設(shè)置元素節(jié)點(diǎn)的html內(nèi)容
                divNode.innerHTML=responseText;
            }   
        }

     

    posted @ 2009-09-04 21:18 suplayer 閱讀(201) | 評(píng)論 (0)編輯 收藏

    網(wǎng)頁(yè)頭部 用法

     

    1,<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">   默認(rèn)是all
    其中的屬性說明如下:
    設(shè)定為all:文件將被檢索,且頁(yè)面上的鏈接可以被查詢;
    設(shè)定為none:文件將不被檢索,且頁(yè)面上的鏈接不可以被查詢;
    設(shè)定為index:文件將被檢索;
    設(shè)定為follow:頁(yè)面上的鏈接可以被查詢;
    設(shè)定為noindex:文件將不被檢索,但頁(yè)面上的鏈接可以被查詢;
    設(shè)定為nofollow:文件將不被檢索,頁(yè)面上的鏈接可以被查詢。

    2,revisit-after (重訪)
    <META name="revisit-after" CONTENT="7 days" >
    通知搜索引擎多少天訪問一次

    其他的:
    <META NAME="GENERATOR" CONTENT="Macromedia Dreamweaver MX">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <Meta http-equiv="Content-Language" Content="zh-CN">
    <Meta http-equiv="Refresh" Content="5; Url=http://hi.baidu.com/pihi">
    <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
    <meta http-equiv="cache-control" content="no-cache">
    <META name="keywords" content="關(guān)鍵字">
    <meta name="description" content="描述">
    <meta name="author" content="作者">
    <meta name="build" content="日期">
    <meta name="coprright" content="版權(quán)">
    <meta name="reply-to" content="email">
    <meta name="robots" content="all">
    <meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=23)">
    <meta http-equiv="Page-Exit" content="RevealTrans (Duration=3, Transition=23)">
    <link rel="shortcut icon" href="favicon.ico">
    ------------------------------------------------------------------------------------------------------------


    meta標(biāo)簽分兩大部分:HTTP標(biāo)題信息(HTTP-EQUIV)和頁(yè)面描述信息(NAME)。


    1、Content-Type和Content-Language (顯示字符集的設(shè)定)
    說明:設(shè)定頁(yè)面使用的字符集,用以說明主頁(yè)制作所使用的文字已經(jīng)語言,瀏覽器會(huì)根據(jù)此來調(diào)用相應(yīng)的字符集顯示page內(nèi)容。
    注意: 該meta標(biāo)簽定義了HTML頁(yè)面所使用的字符集為GB2132,就是國(guó)標(biāo)漢字碼。如果將其中的“charset=GB2312”替換成“BIG5”,則該頁(yè)面所用的字符集就是繁體中文Big5碼。當(dāng)你瀏覽一些國(guó)外的站點(diǎn)時(shí),IE瀏覽器會(huì)提示你要正確顯示該頁(yè)面需要下載xx語支持。這個(gè)功能就是通過讀取HTML頁(yè)面Meta標(biāo)簽的Content-Type屬性而得知需要使用哪種字符集顯示該頁(yè)面的。如果系統(tǒng)里沒有裝相應(yīng)的字符集,則IE就提示下載。其他的語言也對(duì)應(yīng)不同的charset,比如日文的字符集是“iso-2022-jp ”,韓文的是“ks_c_5601”。
    Charset選項(xiàng):ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content還可以是:EN、FR等語言代碼。


    2、Refresh (刷新)
    3、Expires (期限)
    說明:指定網(wǎng)頁(yè)在緩存中的過期時(shí)間,一旦網(wǎng)頁(yè)過期,必須到服務(wù)器上重新調(diào)閱。
    注意:必須使用GMT的時(shí)間格式,或直接設(shè)為0(數(shù)字表示多少時(shí)間后過期)。


    4、Pragma (cach模式)
    說明:禁止瀏覽器從本地機(jī)的緩存中調(diào)閱頁(yè)面內(nèi)容。
    注意:網(wǎng)頁(yè)不保存在緩存中,每次訪問都刷新頁(yè)面。這樣設(shè)定,訪問者將無法脫機(jī)瀏覽。


    5、Set-Cookie (cookie設(shè)定)
    說明:瀏覽器訪問某個(gè)頁(yè)面時(shí)會(huì)將它存在緩存中,下次再次訪問時(shí)就可從緩存中讀取,以提高速度。當(dāng)你希望訪問者每次都刷新你廣告的圖標(biāo),或每次都刷新你的計(jì)數(shù)器,就要禁用緩存了。通常HTML文件沒有必要禁用緩存,對(duì)于ASP等頁(yè)面,就可以使用禁用緩存,因?yàn)槊看慰吹降捻?yè)面都是在服務(wù)器動(dòng)態(tài)生成的,緩存就失去意義。如果網(wǎng)頁(yè)過期,那么存盤的cookie將被刪除。
    用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
    21-Oct-98 16:14:21 GMT; path=/">
    注意:必須使用GMT的時(shí)間格式。


    6、Window-target (顯示窗口的設(shè)定)
    說明:強(qiáng)制頁(yè)面在當(dāng)前窗口以獨(dú)立頁(yè)面顯示。
    用法:<Meta http-equiv="Widow-target" Content="_top">
    注意:這個(gè)屬性是用來防止別人在框架里調(diào)用你的頁(yè)面。Content選項(xiàng):_blank、_top、_self、_parent。


    7、Pics-label (網(wǎng)頁(yè)RSAC等級(jí)評(píng)定)
    說明:在IE的Internet選項(xiàng)中有一項(xiàng)內(nèi)容設(shè)置,可以防止瀏覽一些受限制的網(wǎng)站,而網(wǎng)站的限制級(jí)
    別就是通過該參數(shù)來設(shè)置的。
    用法:<META http-equiv="Pics-label" Contect=
    "(PICS-1.1'http://www.rsac.org/ratingsv01.html'
    I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
    for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))">
    注意:不要將級(jí)別設(shè)置的太高。RSAC的評(píng)估系統(tǒng)提供了一種用來評(píng)價(jià)Web站點(diǎn)內(nèi)容的標(biāo)準(zhǔn)。用戶可以設(shè)置Microsoft Internet Explorer(IE3.0以上)來排除包含有色情和暴力內(nèi)容的站點(diǎn)。上面這個(gè)例子中的HTML取自Microsoft的主頁(yè)。代碼中的(n 0 s 0 v 0 l 0)表示該站點(diǎn)不包含不健康內(nèi)容。級(jí)別的評(píng)定是由RSAC,即美國(guó)娛樂委員會(huì)的評(píng)級(jí)機(jī)構(gòu)評(píng)定的,如果你想進(jìn)一步了解RSAC評(píng)估系統(tǒng)的等級(jí)內(nèi)容,或者你需要評(píng)價(jià)自己的網(wǎng)站,可以訪問RSAC的站點(diǎn):http://www.rsac.org/。


    8、Page-Enter、Page-Exit (進(jìn)入與退出)
    說明:這個(gè)是頁(yè)面被載入和調(diào)出時(shí)的一些特效。
    用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
    <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
    注意:blendTrans是動(dòng)態(tài)濾鏡的一種,產(chǎn)生漸隱效果。另一種動(dòng)態(tài)濾鏡RevealTrans也可以用于頁(yè)面進(jìn)入與退出效果:
    <Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
    <Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)">

    Duration 表示濾鏡特效的持續(xù)時(shí)間(單位:秒)
    Transition 濾鏡類型。表示使用哪種特效,取值為0-23。

    0 矩形縮小
    1 矩形擴(kuò)大
    2 圓形縮小
    3 圓形擴(kuò)大
    4 下到上刷新
    5 上到下刷新
    6 左到右刷新
    7 右到左刷新
    8 豎百葉窗
    9 橫百葉窗
    10 錯(cuò)位橫百葉窗
    11 錯(cuò)位豎百葉窗
    12 點(diǎn)擴(kuò)散
    13 左右到中間刷新
    14 中間到左右刷新
    15 中間到上下
    16 上下到中間
    17 右下到左上
    18 右上到左下
    19 左上到右下
    20 左下到右上
    21 橫條
    22 豎條
    23 以上22種隨機(jī)選擇一種


    9、MSThemeCompatible (XP主題)
    說明:是否在IE中關(guān)閉 xp 的主題
    用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
    注意:關(guān)閉 xp 的藍(lán)色立體按鈕系統(tǒng)顯示樣式,從而和win2k 很象。
    10、IE6 (頁(yè)面生成器)


    說明:頁(yè)面生成器generator,是ie6
    用法:<Meta http-equiv="IE6" Content="Generator">
    注意:用什么東西做的,類似商品出廠廠商。
    11、Content-Script-Type (腳本相關(guān))
    說明:這是近來W3C的規(guī)范,指明頁(yè)面中腳本的類型。
    用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">

     

    ★NAME變量


    name是描述網(wǎng)頁(yè)的,對(duì)應(yīng)于Content(網(wǎng)頁(yè)內(nèi)容),以便于搜索引擎機(jī)器人查找、分類(目前幾乎所有的搜索引擎都使用網(wǎng)上機(jī)器人自動(dòng)查找meta值來給網(wǎng)頁(yè)分類)。
    name的value值(name="")指定所提供信息的類型。有些值是已經(jīng)定義好的。例如description(說明)、keyword(關(guān)鍵字)、refresh(刷新)等。還可以指定其他任意值,如:creationdate(創(chuàng)建日期) 、
    document ID(文檔編號(hào))和level(等級(jí))等。
    name的content指定實(shí)際內(nèi)容。如:如果指定level(等級(jí))為value(值),則Content可能是beginner(初級(jí))、intermediate(中級(jí))、advanced(高級(jí))。


    1、Keywords (關(guān)鍵字)
    說明:為搜索引擎提供的關(guān)鍵字列表
    用法:<Meta name="Keywords" Content="關(guān)鍵詞1,關(guān)鍵詞2,關(guān)鍵詞3,關(guān)鍵詞4,……">
    注意:各關(guān)鍵詞間用英文逗號(hào)“,”隔開。META的通常用處是指定搜索引擎用來提高搜索質(zhì)量的關(guān)鍵詞。當(dāng)數(shù)個(gè)META元素提供文檔語言從屬信息時(shí),搜索引擎會(huì)使用lang特性來過濾并通過用戶的語言優(yōu)先參照來顯示搜索結(jié)果。例如:
    <Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
    <Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil">


    2、Description (簡(jiǎn)介)
    說明:Description用來告訴搜索引擎你的網(wǎng)站主要內(nèi)容。
    用法:<Meta name="Description" Content="你網(wǎng)頁(yè)的簡(jiǎn)述">
    注意:


    3、Robots (機(jī)器人向?qū)?
    說明:Robots用來告訴搜索機(jī)器人哪些頁(yè)面需要索引,哪些頁(yè)面不需要索引。Content的參數(shù)有all、none、index、noindex、follow、nofollow。默認(rèn)是all。
    用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
    注意:許多搜索引擎都通過放出robot/spider搜索來登錄網(wǎng)站,這些robot/spider就要用到meta元素的一些特性來決定怎樣登錄。


    all:文件將被檢索,且頁(yè)面上的鏈接可以被查詢;
    none:文件將不被檢索,且頁(yè)面上的鏈接不可以被查詢;(和 "noindex, no follow" 起相同作用)
    index:文件將被檢索;(讓robot/spider登錄)
    follow:頁(yè)面上的鏈接可以被查詢;
    noindex:文件將不被檢索,但頁(yè)面上的鏈接可以被查詢;(不讓robot/spider登錄)
    nofollow:文件將不被檢索,頁(yè)面上的鏈接可以被查詢。(不讓robot/spider順著此頁(yè)的連接往下探找)


    4、Author (作者)
    說明:標(biāo)注網(wǎng)頁(yè)的作者或制作組
    用法:<Meta name="Author" Content="張三,abc@sina.com">
    注意:Content可以是:你或你的制作組的名字,或Email


    5、Copyright (版權(quán))
    說明:標(biāo)注版權(quán)
    用法:<Meta name="Copyright" Content="本頁(yè)版權(quán)歸Zerospace所有。All Rights Reserved">
    注意:


    6、Generator (編輯器)
    說明:編輯器的說明
    用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
    注意:Content="你所用編輯器"


    7、revisit-after (重訪)
    說明:
    用法:<META name="revisit-after" CONTENT="7 days" >
     

    posted @ 2009-09-04 21:17 suplayer 閱讀(110) | 評(píng)論 (0)編輯 收藏

    使用免安裝版本在windows上手動(dòng)安裝PostgreSQL

     
        PostgreSQL支持管理員直接手動(dòng)安裝數(shù)據(jù)庫(kù),給用戶提供了更大的方便。
        1. 在PostgreSQL官方網(wǎng)站上下載免安裝二進(jìn)制的包,名字類似于postgresql-*.*.*.*-binaries-no-installer.tar.gz之類的。
    下載到本地,解壓到某路徑PATH下。
        2. 在PATH目錄中創(chuàng)建data文件夾,用于存放數(shù)據(jù)。
        3. 開始-->運(yùn)行-->cmd 進(jìn)入命令行。并cd到PATH\bin目錄下執(zhí)行下面的命令用來初始化數(shù)據(jù)庫(kù):
    PATH\bin> initdb.exe -D PATH\data -E UTF8 --locale=C
     

        4. 將pgsql注冊(cè)為windows服務(wù),便于操作和控制:

    PATH\bin> pg_ctl.exe register -D PATH\data -N pgsql
     

        其中-N參數(shù)用來設(shè)置pgsql作為windows服務(wù)的名稱。

        5. 啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù),在命令行下:

    > net start pgsql (開啟數(shù)據(jù)庫(kù))

    > net stop pgsql (關(guān)閉數(shù)據(jù)庫(kù))
     

        注:為避免以后可能發(fā)生的亞州大字符集的亂碼問題,統(tǒng)一使用UTF8編碼。


    需要一個(gè)非管理員帳號(hào)來運(yùn)行PostgreSQL?
    當(dāng)一個(gè)駭客通過軟件的缺陷獲得了侵入一臺(tái)計(jì)算機(jī)的入口時(shí),她獲得的是這個(gè)程序運(yùn)行所用用戶帳號(hào)的對(duì)應(yīng)權(quán)限。由于我們無法預(yù)知PostgreSQL中是否還存在這樣的bug,所以我們強(qiáng)制使用一個(gè)非管理員的服務(wù)帳號(hào)來最小化潛在的駭客利用此類漏洞對(duì)系統(tǒng)進(jìn)行破壞的風(fēng)險(xiǎn)。這樣的設(shè)置已是Unix界的慣例做法,同時(shí)在Windows世界中,Microsoft以及其他供應(yīng)商也開始采用這樣的做法來改進(jìn)他們系統(tǒng)的安全性。補(bǔ)充: 自PostgreSQL 8.2發(fā)行后,從管理帳號(hào)啟動(dòng)變得可行。PostgreSQL 8.2及后續(xù)版本會(huì)在啟動(dòng)后不可撤銷地放棄管理權(quán)限,從而保證了當(dāng)極端不可能事件,當(dāng)PostgreSQL受到入侵時(shí),系統(tǒng)的安全性。

     
     
     
     

    posted @ 2009-09-04 21:16 suplayer 閱讀(1642) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 在线综合亚洲欧洲综合网站| 亚洲VA中文字幕无码一二三区| 免费中文字幕在线| 亚洲AV无码专区日韩| 亚洲乱码无码永久不卡在线| 亚洲第一精品福利| 亚洲一级免费毛片| 美国免费高清一级毛片| 全黄大全大色全免费大片| 最近免费中文在线视频| 国产在线19禁免费观看国产| 精品国产日韩亚洲一区| 亚洲综合免费视频| 色偷偷亚洲第一综合| 水蜜桃视频在线观看免费播放高清| 91久久精品国产免费直播| 国产精品黄页在线播放免费| 久久被窝电影亚洲爽爽爽 | 亚洲国产专区一区| 亚洲国产精品人久久| 亚洲AV无码国产剧情| 精品在线免费观看| 天天看片天天爽_免费播放| 国产亚洲美日韩AV中文字幕无码成人 | 又粗又硬免费毛片| 久久狠狠高潮亚洲精品| 亚洲av无码兔费综合| 国产精成人品日日拍夜夜免费| 久久久久久久久免费看无码| 中文字幕在亚洲第一在线| 亚洲a∨无码男人的天堂| 亚州**色毛片免费观看| 精品福利一区二区三区免费视频| 免费在线观看毛片| 亚洲宅男天堂a在线| 一出一进一爽一粗一大视频免费的| 99久久这里只精品国产免费| 亚洲一区二区三区AV无码| 亚洲午夜精品久久久久久app| 97无码人妻福利免费公开在线视频| 麻豆精品国产免费观看|