fkjava

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          #

           

           Hibernate持久層緩存的級別:

            

              1)事務級別

            

              該級別緩存中的緩存對象只能被當前事務使用,每個事務都有各自的緩存,緩存中的數據通常以關聯對象的形式保存。同時被緩存對象的生命周期依賴于當前事務的生命周期,當前事務結束時,該緩存中緩存對象的生命周期也會結束。事務級別的緩存通常使用內存作為保存緩存對象的存儲介質,Hibernate的一級緩存(Session緩存)即該級別的緩存。

            

              2)應用(進程)級別

            

              該級別緩存中對象可以被當前應用(進程)內的所有事務共享訪問,被緩存對象的生命周期與當前應用相同。當應用結束時,緩存對象的生命周期結束。如果當前應用是一個分布式應用,則不能使用該級別的緩存,這種級別的緩存使用內存或硬盤作為緩存對象的存儲介質。

            

              3)分布式級別

            

              如果當前應用部署在多臺服務器的分布式(集群)環境下,則當前應用可以使用分布式級別的緩存緩存持久化對象。分布式緩存中緩存的數據會被一臺或者多臺服務器共享。如果緩存數據發生變化,則更新后的緩存數據會同步到集群中的每臺服務器中,進而保證緩存數據的一致性。

            

              Hibernate的二級緩存可以是應用級別或者分布式級別的緩存,完全依賴于第三方緩存組件的具體實現。

            

              Hibernate沒有提供自身產品級別的二級緩存,而是在設計上利用第三方成熟的緩存組件實現。為了集成不同的第三方緩存組件

            

              Hibernate提供了org.hibernate.cache.CacheProvider接口用來作為緩存組件與Hibernate之間的適配器。在實際開發中,

            

              Hibernate二級緩存組件如表:

            

              緩存名稱

            

              對應的適配器類

            

              Hashtable

            

              org.hibernate.cache.HashtableCacheProvider

            

              EHCache

            

              org.hibernate.cache.EhCacheProvider

            

              OSCache

            

              org.hibernate.cache.OSCacheProvider

            

              SwarmCache

            

              org.hibernate.cache.SwarmCacheProvider

            

              JBoss Cache 1.x

            

              org.hibernate.cache.TreeCacheProvider

            

              Jboss Cache 2

            

          org.hibernate.cache.jbc2.JBossCacheRegionFactory

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990           星老師

          posted @ 2012-09-10 17:35 瘋狂軟件 閱讀(132) | 評論 (0)編輯 收藏

           

          public class Sort2

             

              {

             

              //交換排序之--最簡單的冒泡排序法

             

              public static void BubbleSortint[] a

             

              {

             

              int i,j,temp;

             

              int n = a.length;

             

              fori=0;i<n;i++

             

              {

             

              forj=i+1;j<n;j++

             

              {

             

              if a[i]>a[j]

             

              {

             

              temp = a[i];

             

              a[i] = a[j];

             

              a[j] = temp;

             

              }

             

              }

             

              }

             

              }

             

              //插入排序-- 直接插入排序

             

              public static void InsertSortint[] a

             

              {

             

              int i,j,temp;

              

              int n = a.length;

             

              fori=1;i<n;i++

             

              {

             

              temp = a[i];

             

              j=i-1;

             

              while((a[j]>temp&&j>=0))

             

              {

             

              a[j+1] = a[j];

             

              j--;

             

              }

             

              a[j+1] = temp;

             

              }

             

              }

             

              //選擇排序

             

              public static void SelectSortint[] a

             

              {

             

              int i,j,min,temp;

             

              int n=a.length;

             

              fori=0;i<n;i++

             

              {

             

              min = a[i];

             

              forj=i+1;j<n;j++

             

              {

             

              ifa[j]<min

             

              {

             

              temp = min;

             

              min =a[j];

             

              a[j] = temp;

             

              }

             

              }

             

              a[i] =min ;

             

              }

             

              }

             

              public static void mainString[] args

             

              {

             

              int[] arr = {45,76,32,32,5,4,54,7,943,3};

             

              int n = arr.length;

              

              BubbleSortarr);

             

              forint i=0;i<n;i++

             

              System.out.printarr[i]+   ”);

             

              System.out.println();

             

              InsertSortarr);

             

              forint i=0;i<n;i++

             

              System.out.printarr[i]+   ”);

             

              System.out.println();

              

              SelectSortarr);

             

              forint i=0;i<n;i++

             

              System.out.printarr[i]+   ”);

             

              }

             

          }

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990           星老師

          posted @ 2012-09-09 11:23 瘋狂軟件 閱讀(112) | 評論 (0)編輯 收藏

           

           PageBean.java

             

              package org.andy;public class PageBean {

             

              private Integer start;

             

              private Integer limit;

             

              public PageBean(){

             

              }

             

              public PageBeanInteger paramStart, Integer paramLimit {

             

              this.start = paramStart;

             

              this.limit = paramLimit;

             

              }

             

              public int getStart() {

             

              return this.start.intValue();

             

              }

             

              public int getLimit() {

             

              return this.limit.intValue();

             

              }}

             

              測試類:

             

              package org.andy;public class Test {

             

              public static void mainString[] args {

             

              PageBean pageBean=new PageBean();

             

              StringBuffer sb=new StringBuffer();

             

              sb.append(“start:”)。appendpageBean.getStart());

             

              sb.append(“/t”);

             

              sb.append(“limit:”)。appendpageBean.getLimit());

             

              System.out.printlnsb.toString());

             

              }}

             

              運行這段代碼時,便會報異常,異常如下:

             

              Exception in thread “main” java.lang.NullPointerException

             

              at org.andy.PageBean.getStartPageBean.java:16

             

              at org.andy.Test.mainTest.java:7

             

              很顯然是空指針異常,

             

              這是開發經常遇到的問題,

             

              Integer類型的變量沒有賦值(默認null)的時候,對其執行intValue(),就會出現上面的錯誤,一個健壯的程序是不允許這種情況出現的,修改PageBean可以解決:

             

              package org.andy;public class PageBean {

             

              private Integer start;

             

              private Integer limit;

             

              public PageBean() {

             

              }

             

              public PageBeanInteger paramStart, Integer paramLimit {

             

              this.start = paramStart;

             

              this.limit = paramLimit;

             

              }

             

              public int getStart() {

             

              if start != null

             

              return this.start.intValue();

             

              return 0;

             

              }

             

              public int getLimit() {

             

              if limit != null

             

              return this.limit.intValue();

             

              return 0;

             

          }}

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢“Q564205990           星老師

          posted @ 2012-09-08 14:56 瘋狂軟件 閱讀(148) | 評論 (0)編輯 收藏

           

           “這樣下去沒法玩了,我們的選擇只有撤柜。” 95中午,杭州牛仔品牌Jasonwood電商總經理尉偉在電話里顯得有些憤怒。

            同日,新浪微博認證為JASONWOOD電子商務運營負責人“louisa小曦”發微博稱,決定退出京東商城POP平臺,理由是93日京東舉辦“買3001000券”的活動,而1000的店鋪券全部需要商家來出,JASONWOOD拒絕參加活動后,店鋪被京東鎖死。“你打價格戰一分錢不出要我們埋單,請問劉總,這就是您所謂的豪氣嗎?”

            而尉偉告訴記者,“300200,500300,800500,這相當于我們的商品被京東強行打了三到四折”,而且事前沒有任何征兆,所有在京東平臺上銷售的服裝品牌的后臺都被鎖死,“我們是不參加都不行”。

            此外,94日,包括伊芙麗(eifini)、諾奇、AKSERIES等被強行拉上促銷戰車的服裝品牌都曾一度在其網店主頁上發布暫停發貨或營業的緊急公告,并開始與京東商城平臺營運方進行溝通,隨后又先后撤掉公告。

            此外,為了抗議京東的這次活動,柒牌、杉杉、七匹狼、零號男均已將店鋪產品下架,而卡帝樂鱷魚與京東溝通后放棄參加此次活動,被京東凍結其后臺編輯頁面,無法進行相關操作,貨款也被京東凍結。

            京東此次在秋裝產品上的促銷遭到如此多供應商的杯葛,背后的原因是什么?幾乎就在同時,有消息稱發改委價監局近期已經對電商“價格戰”展開調查,初步調查認為,價格戰過程中,有電商的促銷宣傳行為涉嫌虛構原價、欺詐消費者。

            撤柜反促銷

            “京東的費用率已經最高”

            “我們這次活動都是與供應商進行了充分溝通后推出的,如果供應商不同意我們是不會強行讓他們參與的,說到底我們與供應商的溝通一直是良性的。”面對供應商的抗議聲音,京東商城高級副總裁吳聲95日回應本報記者。

            然而對于吳聲的說法,尉偉表示,“這完全是胡說,京東的確在我們供應商的QQ群中發布了一個活動方案的公告,但是當我們向他們提出不參加活動的意見時,我們的后臺就已經被鎖死了,說到底不參加是不可以的”。

            而一家供應商提供給本報記者的QQ聊天記錄的截屏更是顯示,當這家供應商提出將其從促銷頁面上刪除的要求后,京東方面的人員的回復是:“不行,不參加這次活動今后別想參與任何活動。”

            而有的供應商則反映,在與京東溝通無果后,其所有的商品被京東方面強行修改為無貨的狀態,導致顧客無法下單。

            尉偉稱,京東要求商家承擔所有促銷成本,“風險全部轉嫁在我們身上”。據了解,今年京東6·18店慶促銷活動之前說全是京東送券,后來變成雙方各承擔一半,但最后全部由商家承擔了,而銷售并不理想。

            “在京東我們的返點是9%,物流費是每單9.5元,這并不是最高的,但是其他平臺基本不讓我們承擔促銷費,京東則不然,這樣算下來京東的費用率已經最高。”尉偉說。

            對于JASONWOOD這樣中等規模的服裝供應商來說,京東這樣的做法讓其壓力很大,“louisa小曦”在微博上發出的一封名為“劉強東,我不玩了”的公開信中特別指出,“我們不是暴利企業,除了基礎的京東年費、扣點外,我們總是為一些根本不為商家著想的活動來付出很多,但我們又得到了什么?”。

            上述公開信還提到,如果誰還可以扛下去,接下去要么賣次品,要么賣庫存,或者跟上次一樣再玩一次消費者。

            供應商的兩難抉擇

            “我們的賬期已經在45天以上,現在有進一步延長的趨勢”

            對于這次促銷活動的起因,尉偉表示,“這是一個平臺為了對抗另外一個平臺倉促發起的促銷活動,居然讓商家來買單”。

            據悉,這次京東的秋裝促銷贈送的贈券是115-8日,其目的就是搶在天貓前啟動雙11促銷。

            資金日趨緊張的京東商城不僅開始逐步讓供應商來承擔促銷成本,對供應商的貨款賬期也一再延長,這也是引發供應商不滿的主要原因。

            今年4月進入京東平臺的JASONWOOD對此深有體會。尉偉告訴記者:“在我們進入開店前,京東給我們傳遞的信息是,他們是一個低費用的沒有賬期的欣欣向榮的全新的平臺,但是從我們進入那天起我們的賬期已經在45天以上,現在有進一步延長的趨勢。”

            據悉,JASONWOOD在天貓、拍拍、京東、當當和1號店的平臺上都有開店。但“去年1111日我們在天貓單天的銷售額就達到570萬,而我們在京東今年618促銷的銷售額只有11萬元,在京東平臺的大促的銷售額還不如天貓一場中型促銷銷售額的1/5”。

            根據京東商城此前IPO的報告,其2011年平臺收入大約為46億元,而今年目的是達到百億元以上,從目前來看這與天貓近千億元的平臺收入相差很大。更多供應商是將京東作為嘗試性進入的平臺來操作的,隨時做好了退出的準備。

            “從進入京東那天開始我們就想撤柜,這不是現在才有的想法,今后消費者可以到我們在其他網購平臺上的柜臺去購買。”尉偉表示,“本來我們是希望有幾個平臺來分攤運營風險的,畢竟不能把所有雞蛋都放在一個籃子里,但是京東這樣的做法讓我們無法繼續維持,只有選擇退出。”

            有電商行業人士表示,“京東2012年以來由于第四輪融資遇阻,其資金壓力很大,劉強東對外說的87億元現金其實很多都是應付賬款,也就是賬期結算中供應商的資金,而讓供應商承擔促銷費用也是這個原因”。

            但很多廠商依然是捆綁參與了93日開始的這次促銷,而大部分商家在與京東溝通無果后也還是恢復了促銷,有不愿透露姓名的商家表示,“雖然京東平臺目前銷售規模不大,但是其增速更快,我們也不敢得罪這個平臺,此外如果要退出,我們的貨款損失和用戶流失都很嚴重”。

          上述電商行業人士指出,對于一些依靠網購平臺成長的供應商來說,已經成為了電商平臺之間競爭的犧牲品,但大部分廠商只能選擇接受,也許他們開始后悔當初圖便宜而選擇的多平臺進入的決策。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990           星老師

          posted @ 2012-09-06 14:30 瘋狂軟件 閱讀(146) | 評論 (0)編輯 收藏

           

           Oracle觸發器中select into報錯no_data_found異常處理

              紅色部分為對查詢不到數據異常的處理

              create or replace trigger TIG_MONITOR_ALarm

              after insert on t_monitor_real_minute

              for each row www.2cto.com

              declare

              -- 標準值

              standvalue number;

              --報警實況表id

              liveid number;

              begin

              --

              --觸發器功能:監測實況數據表,對比監測數據是否超標,超標數據則記錄入超標報警表中

              --

              standvalue:=-1;

              liveid:=-1;

              select nvlt.bzz,-1 into standvalue from t_monitor_factor t where t.jcdbm=:new.STATION_ID and t.jcxmbm=:new.INFECTANT_ID;

              --如果錄入檢測項目數據大于標準值,則入庫報警信息表中

              if standvalue>-1 then

              if :new.M_VALUE>standvalue then

              --將數據錄入報警歷史數據中

              insert into t_alarm_historyid,jcdbm,jcxmbm,mvalue,mtime

              values www.2cto.com SEQ_ALarm_HISTORY.NEXTVAL,:new.STATION_ID,:new.INFECTANT_ID,:new.M_VALUE,:new.M_TIME);

              --異常判斷,如果查詢不到數據

              begin

              select r.id into liveid from t_alarm_real r where r.jcdbm=:new.STATION_ID and r.jcxmbm=:new.INFECTANT_ID;

              --查詢不到數據

              EXCEPTION

              WHEN no_data_found THEN

              --不存在則錄入新的報警實況

              insert into t_alarm_historyid,jcdbm,jcxmbm,mvalue,mtime

              valuesSEQ_ALarm_REAL.NEXTVAL,:new.STATION_ID,:new.INFECTANT_ID,:new.M_VALUE,:new.M_TIME);

              end;

              --報警實況中是否已存在該監測點的該因子報警信息

              if liveid>-1 then

              update t_alarm_real r1 set r1.mvalue=:new.M_VALUE,r1.mtime=:new.M_TIME,r1.status=0 where r1.id=liveid;

              else

              --不存在則錄入新的報警實況

              insert into t_alarm_historyid,jcdbm,jcxmbm,mvalue,mtime

              values www.2cto.com SEQ_ALarm_REAL.NEXTVAL,:new.STATION_ID,:new.INFECTANT_ID,:new.M_VALUE,:new.M_TIME);

              end if;

              end if;

              end if;

              EXCEPTION

              WHEN no_data_found THEN

              null;

          end TIG_MONITOR_ALarm;

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990             星老師

          posted @ 2012-09-05 10:25 瘋狂軟件 閱讀(198) | 評論 (0)編輯 收藏

          Java根據圖片url下載圖片

           

          java 天生在網絡編程方面具有獨特的優勢,封裝了許多網絡的api.下面寥寥數句就實現了爬取網絡圖片的功能。

             

              String imageUrl

             

              URL url = new URLimageUrl);

             

              //打開網絡輸入流

             

              DataInputStream dis = new DataInputStreamurl.openStream());

             

              String newImageName=“C:/2.jpg”;

             

              //建立一個新的文件

             

              FileOutputStream fos = new FileOutputStreamnew FilenewImageName));

             

              byte[] buffer = new byte[1024];

             

              int length;

             

              //開始填充數據

             

              while length = dis.readbuffer))>0{

             

              fos.writebuffer,0,length);

             

              }

             

              dis.close();

             

          fos.close();

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990          星老師

          posted @ 2012-09-04 19:35 瘋狂軟件 閱讀(372) | 評論 (0)編輯 收藏

          hbase參數配置及優化

           

           

          接觸hbase已有半年的時間,查了很多資料,也參考了很多別人心得,也希望把自己的心得以及理解寫出來,我把配置hbase必調的幾個參數寫一下,以及它們的意義。

          zookeeper.session.timeout

          這個參數的意義是regionserverzookeeper的會話過期時間,默認是3分鐘,如果regionserver zookeeper.session.timeout這個配置的時間沒有去連zookeeper的話,zookeeper會將該regionserverzookeeper摘除,不讓該regionserver向提供服務,很多人都該值配置很大,原因是生產環境中regionserver的內存都配置很大,以擴大memstorecache的大小,提高性能,但是內存配置大了以后,regionserverjvm做一次內存大回收時,時間也會變長,很有可能這個時間超過zookeeper.session.timeout時間,導致regionserverjvm回收內存的時候,zookeeper誤以為regionserver掛掉而將regionserver摘除。但我認為該值還是不要配的過大,首先地java已支持cms方式回收內存,每次內存回收的時間不是太長,并且生產環境中,我們也不允許過長時間的服務中斷,配置大了,容易造成一個regionserver的服務真出現異常時,zookeeper不會切除該regionserver,使得很多請求失敗。

          hbase.regionserver.handler.count

          regionserver的工作線程數量,默認是10,沒有疑問,官方默認值太小,通常都調到100~200之間,提高regionserver性能。

          hbase.regionserver.lease.period

          regionserer租約時間,默認值是60s,也有點小,如果你的生產環境中,在執行一些任務時,如mapred時出現lease超時的報錯,那這個時候就需要去調大這個值了。

          hfile.block.cache.size

          regionserver cache的大小,默認是0.2,是整個堆內存的多少比例作為regionservercache,調大該值會提升查詢性能,當然也不能過大,如果你的hbase都大量的查詢,寫入不是很多的話,調到0.5也就夠了,說到這個值,有一個地方需要說明一下,如果生產環境有mapred任務去scan hbase的時候,一些要在mapred scan類中加一個scan.setCacheBlocks(false),避免由于mapred使用regionservercache都被替換,造成hbase的查詢性能明顯下降。

          hbase.hregion.memstore.flush.size

          一個regionserver的單個region memstore的大小,默認是64M,在hbase結構中,一個regionserver管理多個region,一個region對應一個hlog和多個store,一個store對應多個storefile和一個memstore,這里的hbase.hregion.memstore.flush.size意思一個region下面的所有store里面的memstore的達到多少時,開始將這些memstore flushhdfs中去,配置這個值,需要參考一下,平均每個regionserver管理的region數量,如果每臺regionsever管理的region不多的話,可以適當的調大該值,如512M時再flush

          hbase.regionserver.global.memstore.upperLimit/hbase.regionserver.global.memstore.lowerLimit

          配置一臺regionserver所有memstore占整個堆的最大比例,默認是0.4/0.35,二個值的差異在于是做局部的flush,還是全部flush,如果你的regionserver日志中,頻發出現因為超過hbase.regionserver.global.memstore.lowerLimit而做flush的信息,我覺得有必要調小hbase.hregion.memstore.flush.size,或者適當調大這二個值,當然hbase.regionserver.global.memstore.upperLimithfile.block.cache.size的和不能大于1,到0.8我覺得已經夠大了。如果你的jvm內存回收是使用cms的話,有一個值CMSInitiatingOccupancyFraction(內存使用到時多少時,一始cms回收內存)的大小和覺得和這個有關系,略小于hbase.regionserver.global.memstore.upperLimithfile.block.cache.size的和是一個不錯的選擇。

          hbase.hstore.compactionThreshold/hbase.hregion.majorcompaction

          hbase.hstore.compactionThreshold執行compactionstore數量,默認值是3,如果需要提高查詢性能,當然是storefile的數量越小,性能越好,但是執行compaction本身有性能資源的開消,如果regionserver頻繁在compacion對性能影響也很大。hbase.hregion.majorcompaction表示majorcompaction的周期,默認是1天,majorcompaction與普通的compaction的區別是majorcompaction會清除過期的歷史版本數據,同時合并storefile,而普通的compaction只做合并,通常都是majorcompaction,調為0,然后手工定期的去執行一下majorcompaction,適當調小點compacionThreshold

          hbase.hregion.max.filesize

          一個regionsever的最大值,默認是256M,如果數據量特別大的話,調大該值可以減少region的數量,調到2G我覺得都不為過。

          hbase配置調優太多,jvmmslab內存管理以及hdfs append方式等等,需要太多的知識面,很多東西,我也在學習之中,先寫這么多。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990            星老師

          posted @ 2012-09-03 15:14 瘋狂軟件 閱讀(2058) | 評論 (0)編輯 收藏

           

           

                認為編寫一個類的列表,深受程序員。我應該說是最重要的?這里沒有嚴格的規則的選擇,事實上,也沒有規則。類出現在頂部的心態,列舉如下。歡迎您加入你自己的名單。本列表將取決于類型的項目上工作。這些類,我已經列出不需要任何介紹,他們是受歡迎的拉茲尼堪世界中。玩得開心。

           

          1,java.lang.string

          字符串類將是無可爭議的冠軍在任何一天的普及和不可以否認。這是最后一個類,用來創建操作不可變字符串字面值。

          2java.lang.system

          用法系統取決于類型的項目,你的工作。你可以不使用它在您的項目,但它仍然是一個受歡迎的爪哇班級。這是一個實用類,不能實例化。主要利用這一類獲取標準輸入,輸出,環境變量。

          3java.lang.exception

          拋出是超類的所有錯誤和異常。所有異常情況,可以處理在例外。時是最流行的所有例外。例外的是在最高層次的所有例外。

          4java.util.arraylist

          一個實現數組數據結構。這個類實現了列表界面,是最受歡迎的成員或集合框架。之間的差異和向量數組列表是一個熱門話題的初學者和常見問題的訪談。

          5java.util.hashmap

          實現了一個鍵值對數據結構。這個類實現了地圖界面。類似vector -向量,我們有值與哈希表流行的比較。這恰好是一個受歡迎的集合類,作為一個容器的屬性值和工程作為一個運輸代理之間的多層次應用。

           

          6java.lang.object

          祖父所有類。每一類是一個類的對象。它將被用于經常在我們工作的一個平臺框架。它包含的重要方法,等于,哈希,克隆,String,等。

          7java.lang.thread

          一個線程是一個單一的執行順序,在多個線程可以共存,資源共享。我們可以擴展此線程類和創造我們自己的線程。使用運行也是另一種選擇。這個類的使用取決于域的應用。這是完全沒有必要建立一個通常的應用。

          8java.lang.class

          類是一個直接子類對象。有沒有在這個類的構造函數對象加載Java虛擬機中的類加載器。我們中的大多數可能沒有使用它直接但我認為其基本類。它是一類重要的做反射。

          9java.util.date

          這是用來工作日期。有時我們覺得這個類添加了更多實用的方法和我們最終創造那些。每一個企業應用程序的創建日期實用。介紹了1類和后來的巨大變化jdk1.1的自嘲一大堆的方法。

          10java.util.iterator

          這是一個接口。這是非常受歡迎,來作為替代枚舉。這是一個使用簡單方便實用,工作在同步迭代的。

          您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990           星老師

           

          posted @ 2012-09-02 16:35 瘋狂軟件 閱讀(149) | 評論 (0)編輯 收藏

          怎樣才能做個有靈性的技術人員

          一個有靈性的技術員是項目中非常需要的,這里的靈性包含7個方面:全局觀;細節的把握;認真負責的態度;合理的時間分配;溝通;學習能力;開放分享精神;

           

          1.全局觀

          這個同一個技術員個人的修養、格局很有關系了,能夠看到項目的遠景,這個是一般技術員很難做到的,許多的技術員可能就是個代碼工或者粉刷匠,對產品或者項目發展的意識看不到或者無法理解。尤其是剛剛從學校走出來的學生,很多的雖然有些技術基礎(開發、設計),但大多還是不了解所從事的產品、項目甚至行業的發展情況,很多情況下就是聽而從之,甚至有些技術員就草草了事。

           

          全局觀的培養需要從剛接觸這個行業就開始培養,這個主要是一個技術人員看事情,想問題,出方法的能力,對整個行業的了解程度及對產品、項目的思考深度這就是一個技術員的全局觀,統攬全局的技術員才不會輕易的迷失,并且更能夠集中精力去對待。

           

          2.對細節的把握

          注重細節,這個我自己也和以前的技術員探討過這個問題,一個產品完成總是那么毛毛糙糙,有的甚至無法使用,更讓人痛心的就是只有一個版本,沒有后續的跟進和更新建議說明。這個就要看一個技術人員對設計或者開發的態度,那些精益求精、把握住細節,多站在用戶角度著想的技術產品才會深得人心。

           

          對細節的把握,這個需要項目中每個成員都需要有這個共同的意識,除了項目經理要在整個項目過程中不斷追求自身產品的精益求精之外,作為一個技術員也要能夠站在很高的角度去對待這個問題,至少做的產品比用戶想的更深一點,如果在技術實現在沒有太大的問題,這些內容是必須意識到的,給出一個最優解決方案。

           

          3.認真負責的態度

          把產品當做自己的,把自己看成項目的一部分,我曾經看到過有技術員花費很長時間去完成一個產品,拿出手來讓人臉紅的場景,但自己的網站、自己開發的程序卻非常精致、細心。這個很大一部分是態度問題,做公司項目的時候根本沒有把心思用在上面,哪能夠出來什么好產品。

           

          這種負責的態度來源于自己同公司需要擁有一個共同的價值觀,并且在之前需要有一個較為合理的安排,把每次開發、每次設計制作作為自己的一份經驗積累,把這些中的點滴去記錄下來,把自己去看成項目經理去思考,盡管你是小的員工,但你需要有一種領導者的意識,不要太去在乎功德利益,做好項目積累,付出總是會有很大的收獲的,這個完全取決于你的個人心態了。

           

          有許多技術員經常有這樣一個念頭“這東西開發出來反正也不算是我的,管他呢”,其實這個大錯特錯,有了這種心態后就會附帶一個不負責任的態度,在整個項目過程中這個不負責任的技術員其實失去的是最多的,并且項目產品也沒有做好,使得整個團隊受害。這種責任取決于全局觀,表現于細節和認真做事的態度。

           

          4.合理的時間分配

          總是有一種很多事情要做,但卻無事可做的感覺,想想一樁樁事情就讓人感到心煩意亂,但做起來卻不知從何開始,尤其是項目開發,從策劃、設計、前端開發、程序開發到測試運營等一個整體過程,如果項目參與人數比較少,會出現忙的一塌糊涂,最后自己糊涂。

           

          這個就是技術員缺乏合理的時間管理,這個時間管理表現在1.項目開始對任務的充分分析及時間估計;2.項目進程對整體項目任務的時間把握,這2點缺少會直接導致以上情況的發生,所以在項目開始的時候技術員或者項目負責人需要有一個時間的預估,并且在開發設計過程中不斷去對實現預定任務進行跟進,方能不亂。

           

          5.溝通

          其實這是一個技術員最重要的一點,一個項目如果涉及到2個或2個以上的人難免就需要溝通,如果技術員不能溝通我相信這個項目做到最后會成為一個啞巴項目,最后連責怪都不知道去責怪誰。

           

          溝通并非說閑話說得來,聊聊生活、聊聊感情那些不是技術員的溝通,反而這里的溝通是指能夠把氣氛嚴肅起來,對整個項目中的問題能夠及時的交流,這種溝通應該是一種探討式的溝通,并且能夠提出對問題看法的同時能夠提出自己的解決方案,項目溝通中也需要技術員去了解大家的性格、態度,并且需要遵循一個“以用戶為中心”的設計標準,這樣的溝通才會有效。

           

          6.學習能力

          一個技術員如果沒有學習能力,那基本上就讓人很痛苦,尤其是做IT類的,學習是必不可少的事情,在技術日新月異的今天,開發制作技術也不斷在更新,除了需要不斷去關注的同時,還需要技術員去嘗試理解、應用這些新的技術,這樣這些技術才能夠很好的融入到開發中來。這一點一些成熟的技術公司做的是非常好的,例如騰訊、阿里巴巴的技術團隊,他們就經常研究一些新奇的東西分享出來,并且融入到他們自己的開發中。

           

          學習能力其實我個人看來是一種模仿的能力,能夠快速接受并且能夠靈活運用其實這個就是一種學習的過程,這點騰訊做的是非常好的,他們的學習無處不在,這個也能看出中國人模仿學習的智慧了。

           

          7.學會分享

          我學會了一個東西這個就是我必殺技了,我不告訴你,我自己留著偷著樂,如果是以前那的確是這樣了,并且中國人也喜歡有“獨門絕技”,但在一個開放的時代,技術分享成為一種主流的趨勢,一個技術員如果缺少分享那他永遠可能會落在其他技術員后面,因為他只能“盜取”被人的技術。

           

          有靈性的技術員其實是非常喜歡把自己琢磨的東西記錄下來并且講這些東西分享出去,當然途徑很多,例如博客、相關行業的門戶等,但這種積累和技術分享是一個走向成熟、具有靈性技術員的必經之路,懂得分享,一種開放式的胸懷能夠讓技術員成為大師級的人物,開源社區中很多英雄的出現也認證了這一點。

           

          成為一個有靈性的技術員是很多想從事技術行業的人希望的,并且這個是我們不斷追求的目標,不求各個都是大師級人物,中國只要多一些有靈性的程序員我們國家的計算機產業也不至于“比較落后”了,當然我也朝著這個方向去奮斗,很高興能和朋友們分享這些,也很希望能和更多人學習和交流。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990           星老師

          posted @ 2012-09-01 15:42 瘋狂軟件 閱讀(138) | 評論 (0)編輯 收藏

           

           任何一款框架都應該有自己的菜單和權限管理策略,LML本來是沒有的,后來借鑒了一下就有了。LML毫不保留的借鑒了公司正在使用的Castle.MonoRail框架的菜單和權限管理策略,以及權限審核策略,務求山寨的完美。由于本人能力有限,再者本人實際情況下并沒有閱讀過Castle.MonoRail的源碼,所以粗糙之處敬請原諒,以后還定會加以改正和改進。

             

              菜單即鏈接,LML中每一個Action中的任何一個方法都可以成為一個菜單,實際情況下我們從沒有把一個沒有返回視圖的方法作為一個菜單,但是它可能對應一個權限。

             

              權限并不是鏈接,但是訪問鏈接,即使是通過菜單訪問鏈接,都可能需要通過權限審核。鏈接和權限也有著莫大的關聯。

             

              雖然我可能解釋的很粗糙,但是大家肯定能理解一下這樣的關系:

             

              1, 一個菜單就是有一個鏈接。

             

              2, 一個鏈接的訪問可能需要通過權限的審核,即一個鏈接(可能是菜單)可以對應一個權限。

             

              還需要注意這樣一點:

             

              3, LML中權限并不會單獨存在,它依托于一個菜單而展現存在。原因是:在我們這樣的模塊開發中,基本上一個Action類就對應一個模塊,一個模塊其實相當于一個菜單,在這個Action類中出現的所有權限,都讓它歸屬于這一個大菜單,便與收集和管理。LML的菜單權限策略借鑒Castle.MonoRail,理解起來有些問題,請原諒。

             

              使用LML的菜單和權限管理策略需要4步:

             

              1, 配置菜單和權限初始化Bean,代碼如下:

             

              權限初始化Bean

             

              <bean id=“InitMenuPower”

             

              class=“LML.Core.System.InitMenuPower”><property name=“packages”

             

              value=“LML.Action.System,LML.Action.Article”/>

             

              </bean>

             

              初始化參數是需要初始化菜單和權限的包名,多個請使用英文逗號隔開。

             

              2, Action配置定義權限攔截器,代碼如下:

             

              自定義權限攔截器

             

              <interceptors><interceptor name=“power” class=“LML.Core.System.PowerInterceptor”></interceptor>

             

              <interceptor-stack name=“baseStack”>

             

              <interceptor-ref name=“defaultStack”></interceptor-ref>

             

              <interceptor-ref name=“power”></interceptor-ref>

             

              </interceptor-stack>

             

              </interceptors>

             

              3, 為方法(鏈接)定義菜單和權限,LML中使用注解來定義,代碼如下:

             

              使用注解定義菜單和權限

             

              @SysMenuMenuId = System, MenuName = “系統管理”, MenuPic = sys.png, MenuParent = “”, MenuLevel = 1, MenuSort = 1

             

              @SysPowerPowerId = SystemPower, PowerMenu = System, PowerName = “系統管理查看”)

             

              public void System()

             

              {

             

              }

             

              Sysmenu各個參數的意義分別為:菜單ID,菜單名稱,菜單圖片,上級菜單ID,菜單層級,菜單排序。

             

              Syspower各個參數的意義分別為:權限ID,所屬菜單ID,權限名稱。

             

              4, 初始化。

             

              初始化操作:收集系統中如第三步驟定義的菜單和權限,插入數據庫永久保存。毫無疑問,數據庫結構需要自行設計。

             

              以上四個步驟做完了,系統將能夠自動化收集菜單和權限,并能夠進行管理。

             

              下一集我們會說到初始化操作。

             

              經過以上簡單介紹,想必大家都知道在LML如何簡單的使用菜單和權限了,我覺得就算是讓你自行設計開發一套類似的菜單和權限管理策略,也是小零食一袋了。我一直對LML的要求就是足夠簡單,對于菜單和權限也不例外。沒有很復雜的概念,也沒有很復雜的語法,通過以上步驟就可以就使一個業務系統納入較為靈活的菜單和權限管理。

             

          當然了,這并不是完美的,必定簡單的策略做不了太復雜的事情。獻丑了。

              您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

              信息咨詢:Q564205990             星老師

           

          posted @ 2012-08-31 14:46 瘋狂軟件 閱讀(176) | 評論 (0)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 彝良县| 驻马店市| 博野县| 台中市| 西城区| 遵义县| 读书| 阿荣旗| 临武县| 阳新县| 老河口市| 大余县| 垦利县| 遂溪县| 慈利县| 仙居县| 柏乡县| 衡水市| 锦屏县| 德庆县| 屏边| 汝南县| 静海县| 孝感市| 赤峰市| 来凤县| 佛坪县| 太保市| 尤溪县| 大英县| 兴安盟| 石景山区| 招远市| 资源县| 仪陇县| 丹凤县| 武安市| 英吉沙县| 侯马市| 建阳市| 行唐县|