qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java如何獲取系統cpu、內存、硬盤信息

               摘要: 1 概述  前段時間摸索在Java中怎么獲取系統信息包括cpu、內存、硬盤信息等,剛開始使用Java自帶的包進行獲取,但這樣獲取的內存信息不夠準確并且容易出現找不到相應包等錯誤,所以后面使用sigar插件進行獲取。下面列舉出了這兩種方式獲取系統信息的方式及代碼。  2 使用Java自帶包獲取系統信息  2.1 使用Java自帶包獲取系統信息代碼如下:  2.1.1 Bytes.javapublic...  閱讀全文

          posted @ 2014-11-18 09:49 順其自然EVO 閱讀(343) | 評論 (0)編輯 收藏

          質量管理知識點大盤點

          一、內容提要:
            1、5W3H
            2、8D/5C報告
            3、QC 舊七大手法
            4、QC 新七大手法
            5、ISO/TS16949 五大核心手冊
            6、10S/五常法
            7、7M1E
            8、SPC八大判異準則/三大判穩原則
            9、IE 七大手法
            10、ISO知識大總結
            二、詳細內容規納:
            1、5W3H思維模式
            What,Where,When,Who,Why,How,How much,How feel
            (1) Why:為何----為什么要做?為什么要如此做(有沒有更好的辦法)? (做這項工作的原因或理由)
            (2) What:何事----什么事?做什么?準備什么?(即明確工作的內容和要達成的目標)
            (3) Where:何處----在何處著手進行最好?在哪里做?(工作發生的地點)?
            (4) When:何時----什么時候開始?什么時候完成? 什么時候檢查?(時間)
            (5) Who:何人----誰去做? (由誰來承擔、執行?)誰負責?誰來完成?(參加人、負責人)?
            (6) How:如何----如何做?如何提高效率?如何實施?方法怎樣?(用什么方法進行)?
            (7) How much:何價----成本如何?達到怎樣的效果(做到什么程度)? 數量如果?質量水平如何?費用產出如何?
            概括:即為什么?是什么?何處?何時?由誰做?怎樣做?成本多少?結果會怎樣?   也就是:要明確工作/任務的原因、內容、空間位置、時間、執行對象、方法、成本。
            再加上工作結果(how do you feel),工作結果預測,就成為5W3H
            2、8D/5C報告
            (1)8D報告:
            D0:準備
            D1:成立改善小組
            D2:問題描述
            D3:暫時圍堵行動
            D4:根本原因
            D5:制訂永久對策
            D6:實施/確認PCA
            D7:防止再發生
            D8:結案并祝賀
            (2)5C報告:5C報告是DELL為質量問題解決而提出來的,即五個C打頭的英文字母的縮寫:描述;圍堵措施;原因;糾正措施;驗證檢查。相比于8D報告簡單了些,但是基本思想相同
            為了書寫更優良的5C報告,需要遵守“5C”準則:
            C1:Correct(準確):每個組成部分的描述準確,不會引起誤解;
            C2:Clear(清晰):每個組成部分的描述清晰,易于理解;
            C3:Concise(簡潔):只包含必不可少的信息,不包括任何多余的內容;
            C4:Complete(完整):包含復現該缺陷的完整步驟和其他本質信息;
            C5:Consistent(一致):按照一致的格式書寫全部缺陷報告。
            3、QC 舊七大手法
            (1)魚骨圖(又叫魚刺圖、樹枝圖、特性要因圖、因果圖、石川圖)(Characteristic Diagram):魚骨追原因)。(尋找因果關系)
            (2)層別法Stratification:層別作解析。 (按層分類,分別統計分析)
            (3)柏拉圖(排列圖)Pareto Diagram:柏拉抓重點。 (找出“重要的少數”)
            (4)查檢表(檢查表、查核表 )Check List:查檢集數據。 (調查記錄數據用以分析)
            (5)散布圖Scatter Diagram:散布看相關。 (找出兩者的關系)
            (6)直方圖<層別法(分層圖)>Histogram:直方顯分布。 (了解數據分布與制程能力)
            (7)管制圖(控制圖)Control__ chart:管制找異常。 (了解制程變異)
            4、QC 新七大手法
            (1)關系圖法(關聯圖法);
            (2)KJ法(親和圖法、卡片法);
            (3)系統圖法(樹圖法);
            (4)矩陣圖法;
            (5)矩陣數據分析法;
            (6)PDPC法(Process Decision program__ chart 過程決策程序圖法)或重大事故預測圖法;
            (7)網絡圖法(又稱網絡計劃技術法或矢線圖也叫關鍵路線法)
            5、ISO/TS16949 五大核心手冊
            (1)FMEA(潛在失效模式及后果分析)(Potential failure mode and effects Analysis);
            (2)MSA(量測系統分析);
            (3)SPC(統計制程管制)(Statistical Process Control);
            (4)APQP(產品質量先期策劃和控制計劃)(Advanced Product Quality Planning (APQP) and Control Plan);
            (5)PPAP(生產件批準程序)(Production Part Approval Process)五大手冊中最重要的是APQP
            6、10S/五常法
            (1)由5S續出來的10S
            1S:整理(SEIRI)
            2S:整頓(SEITON)
            3S:清掃(SEIS0)
            4S:清潔(SEIKETSI)
            5S:素養(SHITSIJKE)
            6S:安全(SAFETY)
            7S:節約(SAVING)/速度(speed)
            8S:服務(SERVlCE)
            9S:滿意(SATISFICATl0N)
            10S:堅持

          posted @ 2014-11-18 09:48 順其自然EVO 閱讀(264) | 評論 (0)編輯 收藏

          對于QTP,你應該知道的9個基本概念

          學習QTP或者其他相關任何工具的方法都是首先把基本的概念過一遍。正所謂砍柴不怕磨刀功,一旦你對這些概念熟悉了,你就可以學習該工具的高級部分了。寫這篇文章的目標是列出初學QTP的人應該掌握的所有基本概念。對于那些曾經接觸過qtp人來說,可以看下這篇文章介紹的checklist,看下自己對這些基礎概念是否有遺漏
            QTP的基本概念
            QTP是什么?這個應該你第一次接觸這個工具腦子想到的問題,你還會想QTP可以用來做什么類型的測試,并且它可以支持什么類型的應用以及QTP最新版本會有什么好東東,我可以從那可以把它下載下來,不同許可證的模式有什么不同,等等
            設么樣的應用和測試用例可以考慮用QTP進行自動化.在你開始準備用QTP進行自動化項目之前,這個重要的概念是必須要看的。你應該分析手動用例和應用程序看下他們是否可以被自動化,如果他們可以自動化,你應該了解是否真正可以從自動化測試用例中得到收益熟悉QTP工具.在開始用QTP創建測試腳本之前,你應該需要熟悉QTP工具,了解工具里的各種窗格(比如工具欄)。你需要知道這些菜單欄和窗體的具體功能是什么測試對象和對象庫.你應該知道什么是對象,對象的層級結構,用QTP怎么來識別對象以及怎么能識別到測試對象的唯一識別屬性。你應該也要知道什么是對象庫,以及我們為什么要用它,你是怎么把對象添加到對象庫里的創建測試腳本/Actions.現在來到腳本部分了,你應該用錄制和回放的方法來創建和運行測試腳本。結合錄制和回放的方法,在對象庫分配到你的action后,就應該能'寫'你的腳本了分析你的測試運行結果.一旦運行完測試腳本,你就可以分析測試運行結果。你可以找出那些步驟是通過了,那些是失敗了。你也可以在運行結果里找出測試流程
            創建和使用函數庫.你應該可以在你的測試用例里找出可以重用的流程。你應該能為重用的流程編寫用戶定義的函數。你應該也能創建新的函數庫,添加一些重用的函數到這些函數庫里,然后把函數庫與你的測試腳本相關聯,就可以在腳本里調用這些函數了使用數據表格(DataTable).你應該知道你怎么可以在你的測試腳本里使用DataTable里的數據,你應該也知道怎么從Excel里取出數據,然后在腳本里使用它調試的基本知識.你應該對在QTP里的調試有一個清晰的理解,你應該知道怎么在你的代碼里使用斷點。你應該也知道在運行你的腳本的時候,怎么使用debug viewer如果你對這些概念都很熟悉了,那么你可以放心,你已經對QTP的基本概念有一個好的理解了。

          posted @ 2014-11-18 09:47 順其自然EVO 閱讀(240) | 評論 (0)編輯 收藏

          新手學Python之端口掃描系統

           無聊寫的一個小小的程序,主要功能如下:
            1,從自有API接口獲取所有的外網IP段;
            2,用Nmap 遍歷掃描所有的IP段,-oX 生成XML的掃描報告;
            3,用xml.etree.ElementTree模塊方法讀取XML文件,將ip,開放端口,對應服務等寫入Mysql數據庫。
            功能很簡單,沒有滿足老大高大上的需求,所以這個小項目就這么英勇的掛掉了!~~~完全都還沒考慮程序異常終止,掃描服務器異常歇菜的情況。
            貼上代碼:
          #coding:utf-8
          import sys,os,time,subprocess
          import MySQLdb
          import re,urllib2
          import ConfigParser
          from IPy import IP
          import xml.etree.ElementTree as ET
          nowtime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
          configpath=r'c:\portscan\config.ini'
          #傳入api接口主路徑,遍歷獲取所有的ip列表,用IPy模塊格式成127.0.0.1/24的格式
          def getiplist(ipinf):
          serverarea=['tj101','tj103','dh','dx']
          iplist=[]
          for area in serverarea:
          ipapi=urllib2.urlopen(ipinf+area).read()
          for ip in ipapi.split('\n'):
          #判斷如果ip列表不為空,轉換成ip/網關格式,再格式化成ip/24的格式
          if ip:
          ip=ip.replace('_','/')
          ip=(IP(ip))
          iplist.append(str(ip))
          ipscan(iplist,nmapathx)
          #傳遞ip地址文件和nmap路徑
          def ipscan(iplist,nmapath):
          #古老的去重,對ip文件中的ip地址進行去重
          newiplist=[]
          scaniplist=[]
          for ip in iplist:
          if ip not in newiplist:
          newiplist.append(ip)
          #遍歷所有ip段,批量掃描,生成xml格式報告
          for ip in newiplist:
          filename=nowtime+ip.split('/')[0]+'.xml'
          filepath=r"c:\portscan\scanres\\"
          nmapcmd=nmapath+' -PT '+ip.strip('\r\n')+' -oX '+filepath+filename
          os.system(nmapcmd)
          scaniplist.append(ip)
          writeinmysql(scaniplist)
          #入庫模塊是某大嬸發寫好的給我 我只是簡單修改了哈,主要是xml.etree.ElementTree模塊。
          def writeinmysql(scaniplist):
          filepath=r"c:\portscan\scanres"
          for ip in scaniplist:
          xmlfile=filepath+'\\'+ip+'.xml'
          #縮進哈 發文章的時候臨時改的,懶得縮進了
          root=ET.parse(xmlfile).getroot()
          allhost=root.findall('host')
          conn=MySQLdb.connect(host='10.1.11.11',user='nxadmin',passwd='nxadmin.com',port=3306,db='scandatabase',charset='utf8')
          cur= conn.cursor()
          for host in allhost:
          address = host.find('address')
          #首先判斷端口是不是open的,如果是再進行入庫
          for port in host.find('ports').findall('port'):
          if port.find('state').attrib['state']=="open":
          ip=address.attrib['addr']
          portval=port.attrib['portid']
          state=port.find('state').attrib['state']
          sql = "INSERT INTO portscan (ip,port,state) VALUES(%s,%s,%s)"
          params=[ip,portval,state]
          cur.execute(sql,params)
          conn.commit()
          cur.close()
          conn.close()
          if __name__=="__main__":
          #讀取配置文件中要掃描的IP apiurl和nmap安裝文件路徑
          config=ConfigParser.ConfigParser()
          config.readfp(open(configpath,'rb'))
          nmapathx=config.get('nmap','nmapath')
          ipinf=config.get('ip','ipinf')
          getiplist(ipinf)
            配置文件c:\portscan\config.ini中主要是api接口主url,nmap安裝路徑。

          posted @ 2014-11-18 09:47 順其自然EVO 閱讀(311) | 評論 (0)編輯 收藏

          軟件測試是抽樣的活動

          我想你一定聽過很多人說, 測試應該要涵蓋所有狀況, 或是抱怨未甚么連簡單的東西都沒有測試到, 或者測試為什么需要這么多時間....
            這是因為他們對測試這個活動的本質有點誤解, 他們不知道軟件測試是sampling的活動. 即然是取樣, 自然不會涵蓋所有狀況; 有可能你選樣不好, 導致某些狀況漏掉; 或者是隨著你取樣的多寡, 自然需要花的時間也就不同.
            這時候你會問, 為什么軟件測試是sampling的活動?
            這個問題的答案是, 因為可以測試的組合是無限多種, 你不可能有無限的時間去做測試, 因此你必須挑選一些有代表性的來測試, 希望他能夠涵蓋大部分的狀況, 讓你投資較小的資源, 得到最大的效益.
            這時候你又問到, 為什么測試的組合是無限多種呢?
            這是我們試想有一個程序, 當你按空格鍵時, 會顯示圖案在屏幕上, 按其他按鍵則不會顯示任何東西.
            當你使用黑箱測試的方法, 也就是在不知道程序內容狀況下測試, 你會如何進行一個完整的測試?
            把所有按鍵都按一次, 看看是否照預期的結果運作. 這樣就好了嗎?
            程序設計師若是設定連按八次return鍵也出現同樣的效果, 你怎么會知道呢? 若是要防止這樣的事情, 你要試多少種組合才能發現? 答案可能無限次.
            你會說不可能有能寫這樣的程序, 那你說微軟復活節彩蛋的程序是怎么出來的? 那些銀行后門程序又是怎么來的?
            那你會說如果可以做白箱測試就可以避免這樣的狀況. 是嗎? 事實上是不可能的
            第一, 通常程序的行數都是很龐大的, 第二, 即使程序不長, 但是程序讀入的data, 它的值域是很龐大的, 若是32 bits的 integer, 范圍是2147483647~-2147483648(大約是這樣, 我沒有記太清楚), 你如何確保每個數字進去都正確, 而且你可能是不只一個data. 所以二者組合起來, 應該也是一個天文數字吧!!
            所以到這里你可以知道要測試的狀況是無限的, 你不可能有完整測試. 因此你必須要sampling.
            我想可以從測試方法中, 來印證測試真的是sampling. 你知道為什么會有statement coverage, branch coverage 或是decision coverage嗎?
            當初科學家在想有這么多組合, 那要怎么挑選test case呢? 那找會經所有statements的test cases, 這樣會把所有 statement都測過. 可是后來有人想, 即使測過所有statements, 還是會漏掉一些branch不會經過, 所以這樣的取樣不夠好, 因此改成取樣會經過所有branch的test cases. 可是后來又想經過所有branch, 還是不足, 因為有些decision 不會包含.
            因此你會發現到, 每種測試方法都是在取樣, 只是取樣方法不同, 嚴謹度不同, 因此會有不同種類或數量的test case出來.
            看到這里, 你會知道測試是測不完的, 因為組合真的太多了. 我們可以做的, 是加強取樣的能力. 不過要小心的是, 不要選太多沒有價值也就是沒有代表性的test cases, 那不會有什么幫助的.

          posted @ 2014-11-18 09:46 順其自然EVO 閱讀(213) | 評論 (0)編輯 收藏

          Ext.net中ComboBox如何綁定數據庫中的值

           今天在項目中再次碰到了問題,就是Combobox中的值如果是直接綁定很簡單。簡單添加項就行了。代碼如下:
          <ext:ComboBox ID="ComBox_SecretsLevel" runat="server" FieldLabel="密級" Width="250" EmptyText="請選擇密級..." >
          <Items>
          <ext:ListItem Text="公開" Value="1"/>
          <ext:ListItem Text="保密" Value="2" />
          <ext:ListItem Text="絕密" Value="3" />
          </Items>
          </ext:ComboBox>
            但是要從數據庫中獲取綁定該如何操作呢?
            找了下網上的質量好像挺少的,去官網找了些Combobox的例子。雖然不是寫死在控件上,但是發現他也只不過是通過獲取后臺的數組,然后綁定數據來操作的,也沒有真正的操作數據庫。于是我通過嘗試,結合了例子和實際,實現了綁定后臺數據庫的要求,這邊與大家分享下。
            這邊數據庫中的參數及值如圖:
            獲取表中數據只要簡單的sql查詢語句,這邊就不詳細講解了。
            在頁面中,首先是aspx頁面的代碼:
          <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LR_FileReg.aspx.cs" Inherits="EasyCreate.DFMS.WebUI.LR_FileReg" %>
          <%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head id="Head1" runat="server">
          <title>綁定Combobox后臺數據</title>
          </head>
          <body>
          <form id="form1" runat="server">
          <ext:ResourceManager ID="ResourceManager1" runat="server"/>
          <ext:Store ID="Store_SecretsCom" runat="server">
          <Reader>
          <ext:JsonReader>
          <Fields>
          <ext:RecordField Name="SecretsLevelID" Type="Int"/>
          <ext:RecordField Name="SecretsLevelName" Type="String" />
          </Fields>
          </ext:JsonReader>
          </Reader>
          </ext:Store>
          <ext:ComboBox ID="ComBox_SecretsLevel" runat="server" FieldLabel="密級" Width="250" EmptyText="請選擇密級..."
          StoreID="Store_SecretsCom" ValueField="SecretsLevelID" DisplayField="SecretsLevelName">
          </ext:ComboBox>
          </form>
          </body>
          </html>

          posted @ 2014-11-17 10:38 順其自然EVO 閱讀(405) | 評論 (0)編輯 收藏

          Linux-vmware tools安裝與cdrom掛載

           前述
            昨天想直接復制虛擬機centos系統中命令行的內容到主機的txt文檔上進行保存,發現不能實現虛擬機與主機之間的直接通訊,后來查資料發現原來是由于我的虛擬機沒有安裝vwmare tools的緣故。
            一個下午查資料下來,搞定了cdrom鏡像,掛載,掛載目錄之間的關系,但是有個問題是明明是掛載上了,但是打開掛載目錄沒有看到想要的安裝包。后來詢問博客園的朋友才發現是我的centos版本有問題,大概是由于我的版本是livecd類型,切換cdrom的iso鏡像時失敗了導致。
            早上回來,新建了一個虛擬機,再把livecd安裝到硬盤上,再進行掛載,就成功了!
            介紹
            VMware Tools是VMware虛擬機中自帶的一種增強工具,相當于VirtualBox中的增強功能(Sun VirtualBox Guest Additions),是VMware提供的增強虛擬顯卡和硬盤性能、以及同步虛擬機與主機時鐘的驅動程序。
            只有在VMware虛擬機中安裝好了VMware Tools,才能實現主機與虛擬機之間的文件共享,同時可支持自由拖拽的功能,鼠標也可在虛擬機與主機之前自由移動(不用再按ctrl+alt),且虛擬機屏幕也可實現全屏化。
            VMware 強烈建議你在每一臺虛擬機中完成操作系統安裝之后立即安裝 VMware Tools 套件。在客戶操作系統中安裝 VMware Tools 非常重要。最重要的是安裝后在主機和客戶機之間或者從一臺虛擬機到另一臺虛擬機可以進行復制和粘貼操作
            Linux VMware tools安裝步驟:
            1.安裝環境介紹
            #虛擬機版本:VMware-workstation-full-10
            #linux分發版本:CentOS-6.4-i386-LiveCD
            2.事前準備工作
            #安裝虛擬機,安裝目錄:C:\Program Files (x86)\VMware
            #新建虛擬機:使用CentOS-6.4-i386-LiveCD.iso鏡像新建一個2G或以上內存的centos系統,記得是2G或以上內存,否則后面的intall to hard drive無法進行。
            注意:新建過程中記住其中設置的賬戶密碼,它就是后面su root時要求輸入的密碼。
            #安裝到硬盤(intall to hard drive):因為我用的linux鏡像是livecd(它可以通過光盤啟動電腦,啟動出一個系統,這個系統在使用上和安裝到硬盤上的是一樣的,就是啟動時速度比較慢),啟動系統時需要用到虛擬機-設置-CD/DVD-->使用ISO鏡像文件,其中的鏡像文件就是CentOS-6.4-i386-LiveCD.iso。當我們以livecd的形式啟動系統時,再進行切換其中的iso鏡像文件操作,系統會給予警告:系統已鎖定cdrom...就算你按確定進行切換,實際上也是切換失敗的,因為當前的iso正是用于當前的系統嘛,正在被占用,肯定不給你切換啦~
            寫下以上的說明是由于按照VMware tools時需要用到另一個鏡像文件啦~
            所以我們必須將linux系統安裝到硬盤上,這樣啟動系統時就不需要鏡像文件了~
            安裝過程很簡單,主要是設置時間,語言,用戶名和密碼,太復雜的我也不懂啦。記住用戶名和密碼哦~~
            3.安裝VMWARE TOOLS
            有了以上的準備工作,我們就可以正式開始安裝VMWARE TOOLS了~~O(∩_∩)O哈!
            以我本地的安裝為例:
            (1)打開虛擬機后,在CD-ROM虛擬光驅(虛擬機-設置-CD/DVD-->使用ISO鏡像文件)中選擇使用ISO鏡像,找到VMWARE TOOLS安裝文件,如C:\Program Files (x86)\VMware\VMware Workstation\linux.iso(這是安裝虛擬機時的安裝目錄下的linux.iso)
            (2)啟動虛擬機
            (3)進入linux新建一個終端,以root身份進入terminal。
            (4)退出到windows,在虛擬機菜單欄中點擊 虛擬機-> 安裝VMWARE TOOLS子菜單,會彈出對話框,點擊"確認" 安裝。這是虛擬機下方會出現一個說明:
            點擊幫助,會彈出相應的安裝過程說明文件。也可以參考它。
            (5 )掛載光驅mount -t iso9660 -o ro /dev/cdrom /mnt (注意命令中輸入的空格)這時,你的linux.iso里面的文件就相當于windows光盤里面的文件了。
            輸入df命令就可以看到如下圖的掛載目錄:
            咦,我明明是把/dev/cdrom掛載到/mnt上面去,為什么這里顯示的是/dev/sr0呢?
            輸入:ls -l /dev | grep cd 可以看到光驅的說明,一般/dev/cdrom指向的是/dev/sr0:
            懂了吧,只要出現/dev/sr0掛載到/mnt上,也就是說掛載成功啦。
            如果掛載目錄錯了,可以輸入umout /dev/cdrom進行卸載掛載。
            我安裝時還遇到這樣一個問題:我想掛載到/mnt/cdrom,也就是在/mnt下mkdir cdrom,但是系統提示this is read-only system,無法新建目錄。其實這時你df命令一下就會發現/mnt其實已經被掛載上了,掛載后就是只可讀了~如果目前系統掛載得不對,你可以輸入umout /dev/cdrom進行卸載掛載,再進行新建目錄操作啦。
           (6) 使用 cd /mnt進入光驅,輸入ls命令你會查看到有個*.tar.gz格式的文件(如我的是:VMwareTools-9.6.0-1294478.tat.gz),然后輸入命令cp VMwareTools-9.6.0-1294478.tat.gz /tmp/將它復制到/tmp/目錄下
            (7)輸入命令 cd /tmp 進入/tmp目錄
            (8)輸入命令tar -zxf VMwareTools-9.6.0-1294478.tat.gz 將剛剛復制的VMwareTools-9.6.0-1294478.tat.gz 解壓,默認解壓到當前目錄下,此時就會多出一個命名為類似于“vmware-tools-distrib”的文件夾,這里和windows 里面的解壓結果一樣。
            (9)輸入命令 cdvmware-linux-tools 進入解壓后的目錄
            (10) 輸入命令 ./*.pl 運行安裝VMware tools (我的*.pl文件是:vmware-install.pl)
            (11)在運行安裝過程中,它會一步一步的有問題提出要你回應,此過程中,你只要見到問題后面顯示[yes]、[no]、[yes/no]的都輸入yes,然后回車,其他的問題后面不管[ ]里面是什么直接回車就好
            (12)安裝完成后,選擇虛擬機上方的:虛擬機-設置-選項-客戶機隔離,勾選“啟用復制粘貼”,然后重啟centos系統,就可以實現在虛擬機系統與主機系統之間復制,粘貼文字,以及文件可以直接在兩系統間拖動了。
            ps:mount命令介紹
            命令格式:mount [-t vfstype] [-o options] device dir
            1.-t vfstype 指定文件系統的類型,通常不必指定。mount 會自動選擇正確的類型。常用類型有:
            光盤或光盤鏡像:iso9660
            DOS fat16文件系統:msdos
            Windows 9x fat32文件系統:vfat
            Windows NT ntfs文件系統:ntfs
            Mount Windows文件網絡共享:smbfs
            UNIX(LINUX) 文件網絡共享:nfs
            2.-o options 主要用來描述設備或檔案的掛接方式。常用的參數有:
            loop:用來把一個文件當成硬盤分區掛接上系統
            ro:采用只讀方式掛接設備
            rw:采用讀寫方式掛接設備
            iocharset:指定訪問文件系統所用字符集
            3.device 要掛接(mount)的設備。
            4.dir設備在系統上的掛接點(mount point)。

          posted @ 2014-11-17 10:38 順其自然EVO 閱讀(16142) | 評論 (0)編輯 收藏

          JAVA調用C語言寫的SO文件

           因為工作需要寫一份SO文件,作為手機硬件IC讀卡和APK交互的橋梁,也就是中間件,看了網上有說到JNI接口技術實現,這里轉載了一個實例
          1 // 用JNI實現
          2 // 實例:
          3
          4 // 創建HelloWorld.java
          5 class HelloWorld
          6 {
          7     private native void print();
          8     public static void main(String[] args)
          9     {
          10         new HelloWorld().print();
          11     }
          12
          13     static
          14     {
          15         System.loadLibrary("HelloWorld");
          16     }
          17 }
          18 // 注意print方法的聲明,關鍵字native表明該方法是一個原生代碼實現的。另外注意static代碼段的System.loadLibrary調用,這段代碼表示在程序加載的時候,自動加載libHelloWorld.so庫。
          19 // 編譯HelloWorld.java
          20 // 在命令行中運行如下命令:
          21 javac HelloWorld.java
          22 // 在當前文件夾編譯生成HelloWorld.class。
          23 // 生成HelloWorld.h
          24 // 在命令行中運行如下命令:
          25 javah -jni HelloWorld
          26 // 在當前文件夾中會生成HelloWorld.h。打開HelloWorld.h將會發現如下代碼:
          27 /* DO NOT EDIT THIS FILE - it is machine generated */
          28 #include <jni.h>
          29 /* Header for class HelloWorld */
          30
          31 #ifndef _Included_HelloWorld
          32 #define _Included_HelloWorld
          33 #ifdef __cplusplus
          34 extern "C" {
          35 #endif
          36 /*
          37  * Class:     HelloWorld
          38  * Method:    print
          39  * Signature: ()V
          40  */
          41 JNIEXPORT void JNICALL Java_HelloWorld_print
          42 (JNIEnv *, jobject);
          43
          44 #ifdef __cplusplus
          45 }
          46 #endif
          47 #endif
          48 // 該文件中包含了一個函數Java_HelloWorld_print的聲明。這里面包含兩個參數,非常重要,后面講實現的時候會講到。
          49 // 實現HelloWorld.c
          50 // 創建HelloWorld.c文件輸入如下的代碼:
          51 #include <jni.h>
          52 #include <stdio.h>
          53 #include "HelloWorld.h"
          54
          55 JNIEXPORT void JNICALL
          56 Java_HelloWorld_print(JNIEnv *env, jobject obj)
          57 {
          58     printf("Hello World!\n");
          59 }
          60 // 注意必須要包含jni.h頭文件,該文件中定義了JNI用到的各種類型,宏定義等。
          61 // 另外需要注意Java_HelloWorld_print的兩個參數,本例比較簡單,不需要用到這兩個參數。但是這兩個參數在JNI中非常重要。
          62 // env代表java虛擬機環境,Java傳過來的參數和c有很大的不同,需要調用JVM提供的接口來轉換成C類型的,就是通過調用env方法來完成轉換的。
          63 // obj代表調用的對象,相當于c++的this。當c函數需要改變調用對象成員變量時,可以通過操作這個對象來完成。
          64 // 編譯生成libHelloWorld.so
          65 // 在Linux下執行如下命令來完成編譯工作:
          66 cc -I/usr/lib/jvm/java-6-sun/include/linux/
          67 -I/usr/lib/jvm/java-6-sun/include/
          68 -fPIC -shared -o libHelloWorld.so HelloWorld.c
          69 // 在當前目錄生成libHelloWorld.so。注意一定需要包含Java的include目錄(請根據自己系統環境設定),因為Helloworld.c中包含了jni.h。
          70 // 另外一個值得注意的是在HelloWorld.java中我們LoadLibrary方法加載的是“HelloWorld”,可我們生成的Library卻是libHelloWorld。這是Linux的鏈接規定的,一個庫的必須要是:lib+庫名+.so。鏈接的時候只需要提供庫名就可以了。
          71 // 運行Java程序HelloWorld
          72 // 大功告成最后一步,驗證前面的成果的時刻到了:
          73 java HelloWorld
          74 // 如果你這步發生問題,如果這步你收到java.lang.UnsatisfiedLinkError異常,可以通過如下方式指明共享庫的路徑:
          75 java -Djava.library.path='.' HelloWorld
          76 // 當然還有其他的方式可以指明路徑請參考《在Linux平臺下使用JNI》。
          77 // 我們可以看到久違的“Hello world!”輸出了。
           試著去完成,自己生成了一份com_test_GetMsg.h頭文件,并完成test.c,生成libtest.so文件,JAVA調用SO文件時,屢次報:
            failed: Cannot load library: load_library(linker.cpp:761): not a valid ELF executable: /data/app-lib/com.example.iccommtest-libtest.so
            也就是提供的SO無法load,是valid的。
            注意,剛才引用的實例是JAVA調用SO,而我需要的是android調用SO,不然會頻繁上面錯誤。
            原因有兩點:
            1、JAVA和android的虛擬環境不一樣
            2、Linux和android的系統庫文件不一樣
            這樣導致了在Linux下通過JNI標準命名方式編譯的SO文件,在android是調用失敗的,原因是Linux和android的系統庫不一樣,而生產的SO跟生產環境庫文件有依賴關系,然后搭建了NDK和Cywin環境,然后生產的SO可以被android調用,
            那么SO文件就必須完全遵循JNI命名規則,方法名是這樣:
          /*
          * Class:     com_samples_jni_test
          * Method:    GetMsg
          * Signature: ()V
          */
          JNIEXPORT jstring JNICALL Java_com_samples_jni_test_GetMsg
          (JNIEnv *, jobject);
            通過NDK和Cywin生產libtest.so,android調用成功!

          posted @ 2014-11-17 10:37 順其自然EVO 閱讀(1486) | 評論 (0)編輯 收藏

          測試團隊管理-第一篇:空降

           空降到新公司做測試部門的部門經理有一年了,回頭看看,才發現自己有多勇敢和幸運。和我同一批空降過來的,還有兩位研發方向的副總,一位項目總監;其中一 位副總來了不到3個月就走了,項目總監堅持了10個月,另一位副總熬了11個月,都不滿1年。
            比我們這批早來幾個月的,還有2名市場營銷方向的副總,也只 干了半年左右就悻悻離開,其中一位曾經在公司干過五六年,辭職若干年后又回來。和我一樣能干滿一年的,只剩下一位比我早來幾個月的財務總監。
            總結一下,大 體有以下幾種原因。其一,沒有實權,定位模糊。新公司出于延攬人才的需要,給予空降人員很高的頭銜,比如副總和總監,但在實際組織架構中,實權掌握在部門 經理手中,副總和總監手下一個直接匯報對象都沒有,更多是起到顧問和參謀的作用,這讓想干一番事業,在過往各自公司中都擔當過封疆大吏的人極其不爽。更讓 他們不可接受的,是好幾個月過去了,公司也沒給出明確的工作內容和責任邊界。其二,缺乏信任。相比新來的高管,老板更信任幾名跟隨自己南征北戰多年的中 層,重要的事情一概和老中層商議,新高管空掛個頭銜,連會議通知都得不到。想獲得深度信任,沒個兩三年時間根本沒可能。其三,組織架構和匯報關系不清晰, 管理相對不規范,典型的夫妻店公司。這讓習慣了規范化管理的新高層極不適應。其四,在招聘面試環節,信息雙向溝通不充分,在工作一段時間后,公司和新高管 都發現對方未能達到自己的期望。我和財務總監能相對順利地留下來,原因差不多,都是因為公司對我們兩個人的需求和定位相對明確,而且是剛性需求:公司想上市,需要一名有注冊會計師資格的CFO;公司想整合原有的兩個小測試部門為一個公司級的大測試部門,內部實在沒有合適人選,原有的兩個測試主管,一個正在休產假,一個在孕期即將休產假。

          posted @ 2014-11-17 10:30 順其自然EVO 閱讀(241) | 評論 (0)編輯 收藏

          手機進銷存管理系統需求分析

           隨著競爭的日益激烈,如何降低成本越來越成為企業要解決的問題。對手機生產企業來講,這涉及到原材料的進貨渠道、銷售情況及庫存等方面的管理,管理的好壞對企業至關重要。而對手機經銷商而言,渠道扁平化已是大勢所趨,這使經銷商對產品的進銷存合理化提出了更高的要求。概括地講,用戶對進銷存管理系統的需求具有普遍性。手機進銷存管理系統適用于采購、銷售和倉庫部門,對采購、銷售及倉庫的業務全過程進行有效控制和跟蹤。手機進銷存管理系統可有效減少盲目采購、降低采購成本、合理控制庫存、減少資金占用并提高市場靈敏度,提升企業市場競爭力。
            手機進銷存管理系統功能需求,主要包括基礎設置、供應商業務。
            一、基礎設置:
            包括機構設定、各機構操作人員的設定、公司員工及工資級別信息的設置、賬戶信息設置、供應商類別及供應商信息的設置、客戶類別及客戶信息設置、手機型號、配件、內配型號設定及費用類別、收支項目等信息的設置。
            通過以上基礎信息的設置、完成系統基礎數據的錄入、為其他業務提供數據基礎。
            二、供應商業務:
            包括手機入庫、配件入庫、內配入庫、現金返利、庫存業務、配送管理、財務管理、售后維修管理、辦公管理
            手機進銷存管理系統的技術特點應具備實用性、開放性、安全性、擴展性和穩定性。
            通過手機進銷存管理系統不僅僅體現在管理效率的提高,還能通過服務的加強、迅速的反應速度、提升的管理層次,使企業實現更高的管理和發展目標。
            供銷存管理信息化不僅僅是信息技術的簡單采用,而是企業借助信息技術的工具,引進新的管理思想和模式,使企業的管理層次得到進一步提升,對于包括手機銷售在內的中小型企業來說,擁有很明顯的優勢。同時,由于信息化技術的發展,相關設備的價格迅速下降,使得信息化管理建設的門檻降低,再加上手機銷售企業本身的日漸成熟,對企業形象、發展的考慮也越來越多,綜合各方面因素,手機企業實現信息化,目前是一個非常好的時期,也是一種必然趨勢。

          posted @ 2014-11-17 10:25 順其自然EVO 閱讀(243) | 評論 (0)編輯 收藏

          僅列出標題
          共394頁: First 上一頁 15 16 17 18 19 20 21 22 23 下一頁 Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 什邡市| 营山县| 蒙山县| 新晃| 什邡市| 巢湖市| 北京市| 城口县| 普格县| 通化市| 张家界市| 荔浦县| 万山特区| 贡山| 白城市| 平定县| 南通市| 庆阳市| 宝坻区| 大英县| 南陵县| 同心县| 贵港市| 吴江市| 普洱| 防城港市| 突泉县| 定陶县| 互助| 团风县| 灵武市| 株洲市| 湘西| 阿荣旗| 焦作市| 江安县| 申扎县| 西昌市| 顺义区| 北辰区| 清苑县|