yxhxj2006

          常用鏈接

          統計

          最新評論

          #

          7K月薪面試題----銀行業務調度系統

               摘要: 題目要求:銀行業務調度系統模擬實現銀行業務調度系統邏輯,具體需求如下:*銀行內有6個業務窗口,1 - 4號窗口為普通窗口,5號窗口為快速窗口,6號窗口為VIP窗口。*有三種對應類型的客戶:VIP客戶,普通客戶,快速客戶(辦理如交水電費、電話費之類業務的客戶)。*異步隨機生成各種類型的客戶,生成各類型用戶的概率比例為:VIP客戶 :普通客戶 :快速客戶  =  1 :6 :3。*...  閱讀全文

          posted @ 2014-02-28 01:31 奮斗成就男人 閱讀(260) | 評論 (0)編輯 收藏

          Tomcat配置多域名綁定和虛擬目錄

          tomcat采用默認安裝,要想tamcat直接綁定多個域名,這里我們需要修改配置文件:C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml

          server.xml 的修改方式如下:

          (一)多域名綁定

          1.如果你要綁定網站,首先是要把tomcat的默認訪問端口8080,修改成80

          原始:
          <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

          修改后:
          <Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

          其實這里就是把port:8080,修改成port:80就可以了,其他的參數不變

          2.接下來就是重點了哈哈...
          原始:
          <Engine name="Catalina" defaultHost="localhost">
          <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" /> 
          </Engine>
          當然這里我把注釋代碼統統刪除掉了,省的礙眼

          修改后:
          <Engine name="Catalina" defaultHost=www.abc.com>

          <Host name="www.abc.com" appBase=="abcapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"

          <Host name=www.cba.com appBase=="D:\cba" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />

          <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"   />
          </Engine>

          這里解釋一下上面的配置
          Engine 的 dafaultHost :表示訪問該tomcat默認進入的主機,注意一定不能是localhost,不然別人通過你的ip訪問,就會默認進入tomcat的管理界面.

          Host 的 name:表示該主機綁定的域名,如果綁定localhost則可以通過在瀏覽器中輸入localhost訪問該Host.

          Host的 appBase:表示該主機綁定的文件存放路徑,可以使用相對路徑或絕對路徑.

          按照上面的配置:
          1.如果我在瀏覽器中輸入http://localhost 則訪問 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT 下的網站
          2.如果輸入http://www.abc.com 則訪問 C:\Program Files\Apache Software Foundation\Tomcat 5.5\abcapps\ROOT 下的網站
          3.如果輸入http://www.cba.com 則訪問 D:\cba\ROOT 下的網站.

          注意這里有一個ROOT目錄需要創建,我們只要把網站放到相應的ROOT目錄向下面,即可通過相應域名訪問了.

          這里面的參數還有很多,我也不是很清楚,不過這樣做確實可以實現多域名綁定哈哈.而且網站頁面修改了只要直接覆蓋就可以了,tomcat可以自動更新類和頁面,當然如果修改了web.xml或lib,則需要重啟tomcat才可以.

          (二)虛擬目錄

          <Host name="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true"
                  xmlValidation="false" xmlNamespaceAware="false">
          <Context path="/cqq" docBase="f:\java\cqqapp" debug="0" reloadable="true" crossContext="true"> 
             </Host>

          其中,Host標記是用來配置虛擬主機的,就是可以多個域名指向一個tomcat,格式只要參考默認的就

          可以了。

          <context>是Host標記的子元素吧,表示一個虛擬目錄,它主要有兩個屬性,path就相當于虛擬目錄名字,

          而 docbase則是具體的文件位置。在這里我的虛擬路徑名稱為cqq,實際上我的程序也就是html、jsp、

          servlet都 放在了f:\java\cqqapp這個目錄下了。

          這樣我就可以通過 http://127.0.0.1/cqq/ 訪問我的這個虛擬目錄了。

          另外一種方法是:

          配置兩個站點
          <Host name="www.xyz.com" debug="0" appBase="D:\Tomcat5.5\portal" unpackWARs="true" autoDeploy="true"> 
          <Context path="" docBase="D:/Tomcat5.5/portal" debug="0" reloadable="true"/> 
          </Host>

          <Host name="www.abc.com" appBase="D:\Tomcat5.5\hxw"
                  unpackWARs="true" autoDeploy="true"
                  xmlValidation="false" xmlNamespaceAware="false">
          <Context path="" docBase="D:\Tomcat5.5\abc" debug="0" reloadable="true"/> 
          </Host>

          這樣設置以后,輸入域名可以分別到兩個站點

          但由于沒有指定默認站點,所以直接輸入IP的時候,無法訪問。

          于是增加 D:\Tomcat5.5\conf\Catalina\localhost\ROOT.xml
          內容如
          <Context path="/" docBase="${catalina.home}/portal" debug="5" reloadable="true" crossContext="true">
          </Context>

          這樣可以實現輸入域名分別到個站點,輸入IP就默認到D:/Tomcat5.5/portal這個站點

          可是,可是,問題出現了

          這兩個站點啟動相當消耗內存,TOMCAT內存設置我已經設到1400M了(再高TOMCAT5無法啟動),所以不能同時啟動三個應用。

          posted @ 2014-02-28 01:22 奮斗成就男人 閱讀(296) | 評論 (0)編輯 收藏

          PHP和Ajax實現二級聯動下拉菜單(代碼、詳細注釋)

          數據庫
          .

          .
          test.html
          ..
          <html>
          <head><title>php_ajax聯動下拉菜單</title>
          <meta http-equiv="content-type" content="text/html;charset=gb2312">
          <script language="javascript" src="ajax.js"></script>
          <script language="javascript">
          function query(){
          var pid = document.getElementByIdx("bigClassName").value;
          if(pid!=""){
             createRequest('query.php?pid='+pid);
          }
          }
          </script>
          </head>
          <body>
          <form action="<?=$PHP_SELF?>?" name="class" method="get" >
          <select name="bigClassName" id="bigClassName" onchange="query()">
          <option value="">--選擇大類--</option>
          <?php
          $link=mysql_connect("localhost","root","root");
          mysql_select_db("sortclass") or die("沒有此數據庫!");
          $sql="select cid,cname from class where pid=0";
          mysql_query("set names gb2312");
          $res=mysql_query($sql,$link);
          while($result=mysql_fetch_assoc($res)){
             echo "<option value='".$result["cid"]."'>".$result["cname"]."</option>";
          }
          ?>
          </select>
          &nbsp;
          <select name="smallClassName" id="smallClassName">
          <option value="">--選擇小類--</option>
          </select>
          <input type="submit" value="提交" />
          </form>
          </body>
          </html>
          .
          ajax.js
          .
          var http_request = false;
          function createRequest(url) {
          //初始化對象并發出XMLHttpRequest請求
          http_request = false;
          if (window.XMLHttpRequest) {            //Mozilla等其他瀏覽器
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
              http_request.overrideMimeType("text/xml");
             }
          else if (window.ActiveXObject) {          //IE瀏覽器
             try {
              http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
              try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
               } catch (e) {}
             }
          }
          if (!http_request) {
             alert("不能創建XMLHTTP實例!");
             return false;
          }
          http_request.onreadystatechange = alertContents;         //指定響應方法

          http_request.open("GET", url, true);         //發出HTTP請求
          http_request.send(null);
          }
          function alertContents() {                   //處理服務器返回的信息
          if (http_request.readyState == 4) {
             if (http_request.status == 200) {
              var smallClassName=document.getElementByIdx("smallClassName");
              var dataArray=[];
              //alert(http_request.responseText);
              myVariable=http_request.responseText;//形如: 1,新聞中心;2,學習園地;
              var stringArray = myVariable.split(";");//以;分隔字符串
              stringArray.pop();//移除數組最后一個元素,stringArray[0]==1,新聞中心 stringArray[1]==2,學習園地   
              var len=stringArray.length;
              for(var i=0;i<len;i++){   
               dataArray[i]= stringArray[i].split(",");// 循環數據條數按,分割字符串
              }
              //alert(dataArray[1][0]);//返回 新聞中心
              
          //初始化smallClassName的數據
              smallClassName.length=0;
              var alertOption=document.createElement_x("OPTION");
              alertOption.value="";
              alertOption.text="--選擇小類--";
              smallClassName.add(alertOption);
             
              for(var j=0;j<len;j++){//添加數據
                 var objOption=document.createElement_x("OPTION");
               objOption.value = dataArray[j][0];
               objOption.text = dataArray[j][1];
               smallClassName.add(objOption);
              }
             
             } else {
              alert('您請求的頁面發現錯誤');
             }
          }
          }
          ..
          query.php
          ..
          <?php
          error_reporting(E_ERROR|E_WARNING|E_PARSE);
          $link=mysql_connect("localhost","root","root");
          mysql_select_db("sortclass",$link) or die("no such database!");
          //$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);    //Ajax中先用encodeURIComponent對要提交的中文進行編碼
          mysql_query("set names gb2312");
          $pid=$_GET[pid];
          $res=mysql_query("select cid,cname from class where pid='$pid'",$link);
          header('Content-type: text/html;charset=GB2312');   //指定發送數據的編碼格式為GB2312
          while($info=mysql_fetch_array($res)){
             $str.=$info["cid"].",".$info["cname"];
             $str.=";";
          }
          echo $str;
          ?>

          posted @ 2014-02-28 01:12 奮斗成就男人 閱讀(908) | 評論 (0)編輯 收藏

          cookie的加強加深

          1、什么是cookie?

          0Cookie技術是一個非常有爭議的技術,自經誕生它就成了廣大網絡用戶和Web開發人員的一個爭論焦點。有一些網絡用戶,甚至包括一些資深的Web專家也對它的產生和推廣感到不滿,這倒不是因為Cookie技術的功能太弱或別的技術性能上的原因,而僅僅是因為他們覺得Cookie的使用,對網絡用戶的隱私構成了危害。因為Cookie是由Web服務器保存在用戶瀏覽器上的小文本文件,它包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點上購物的方式或用戶訪問該站點的次數)。

              那么Cookie技術究竟怎樣呢?是否真的給網絡用戶帶來了個人隱私的危害呢?還是讓我們看了下面的內容,再做回答吧。

                在WEB技術發展史上,Cookie技術的出現是一個重大的變革。最先是Netscape在它的Netscape Navigator 瀏覽器中引入了Cookie技術,從那時起,World Wide Web 協會就開始支持Cookie標準。以后又經過微軟的大力推廣(因為微軟的IIS Web服務器所采用的ASP技術很大程度的使用了Cookie技術),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術。到現在,絕大多數的瀏覽器都支持Cookie技術,或者至少兼容Cookie技術的使用。

                按照Netscape官方文檔中的定義,Cookie是在HTTP協議下,服務器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web服務器保存在用戶瀏覽器上的小文件,它可以包含有關用戶的信息(如身份識別號碼、密碼、用戶在Web站點購物的方式或用戶訪問該站點的次數)。無論何時用戶鏈接到服務器,Web站點都可以訪問Cookie信息。

             如果你使用的是windows系統,那么請打開C:\Documents and Settings\用戶名\Cookies,你會發現該目錄下有好多*.txt格式的小文件。那就是cookie文件。當然,在該目錄下你也可能什么都發現不了,那時因為你新裝了系統或者從未瀏覽過因特網,也或者你的瀏覽器禁用了cookie。否則該目錄下總會有點東西的。

               通俗地講,瀏覽器用一個或多個限定的文件來支持Cookie。這些文件在使用Windows操作系統的機器上叫做Cookie文件,在Macintosh 機器上叫做magic Cookie 文件,這些文件被網站用來在上面存儲Cookie數據。網站可以在這些Cookie文件中插入信息,這樣對有些網絡用戶就有些副作用。有些用戶認為這造成了對個人隱私的侵犯,更糟的是,有些人認為Cookie是對個人空間的侵占,而且會對用戶的計算機帶來安全性的危害。

               目前有些Cookie是臨時的,另一些則是持續的。臨時的Cookie只在瀏覽器上保存一段規定的時間,一旦超過規定的時間該Cookie就會被系統清除。例如在PHP中Cookie被用來跟蹤用戶進程直到用戶離開網站。持續的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時,仍然可以對它進行調用。

               在Cookie文件中保存Cookie,一些用戶會過分地認為這將帶來很大的問題。主要是有些用戶擔心Cookie會跟蹤用戶網上沖浪的習慣,譬如用戶喜愛到那些類型的站點、愛從事些什么活動等。害怕這種個人信息一旦落入一些別有用心的家伙手中,那么個人也就可能成為一大堆廣告垃圾的對象,甚至遭到意外的損害。不過,這種擔心壓根兒不會發生,因為網站以外的用戶是無法跨過網站來獲得Cookie信息的。所以想以這種目的來應用Cookie是不可能的。不過,由于一些用戶錯誤的理解以及“以訛傳訛”,一些瀏覽器開發商別無選擇,只好作出相適的響應(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie的選項)。個人認為,無風不起浪,如果網站程序員沒有嚴謹思路的話,cookie確實也存在些許安全問題,不過這些瑕疵并不足以掩蓋cookie的優秀品質,大多數人還是非常樂意使用它的。

               對Cookie技術期待了這么久的結果是,迫使許多瀏覽器開發商在它們的瀏覽器中提供了對Cookie的靈活性控制功能。例如,目前的兩大主流瀏覽器 Netscape Navigator 和 Internet Explorer是這樣處理Cookie的:Netscape Navigator4.0不但可以接受Cookie進行警告,而且還可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽 Cookie,但在Internet Explorer4.0中就只能進行接受警告而沒有提供屏蔽選項,不過在Internet Explorer4.0之后的更新版本中又加入了屏蔽Cookie的功能選項。

               此外,很多最新的技術甚至已經可以在不能屏蔽Cookie的瀏覽器上進行Cookie的屏蔽了。例如,可以通過將Cookie文件設置成不同的類型來限制 Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會因此拒絕許多的站點頁面。因為當今已經有許多Web站點開發人員愛上了Cookie技術的強大功能,例如Session對象的使用就離不開Cookie的支持。

          2、Cookie工作原理?

              當客戶訪問某個基于PHP技術的網站時,在PHP中可以使用setcookie函數生成一個cookie,系統經處理把這個cookie發送到客戶端并保存在C:\Documents and Settings\用戶名\Cookies目錄下。cookie是 HTTP標頭的一部分, 因此setcookie函數必須在任何內容送到瀏覽器之前調用。這種限制與header()函數一樣(如需了解head()函數,請自行查閱)。當客戶再次訪問該網站時,瀏覽器會自動把C:\Documents and Settings\用戶名\Cookies目錄下與該站點對應的cookie發送到服務器,服務器則把從客戶端傳來的cookie將自動地轉化成一個 PHP變量。在PHP5中,客戶端發來的cookie將被轉換成全局變量。你可以通過$_COOKIE[‘xxx’]讀取。

               盡管今天仍有一些網絡用戶對于Cookie的爭論樂此不倦,但是對于絕大多數的網絡用戶來說還是傾向于接受Cookie的。因此,我們盡可以放心地使用Cookie技術來開發我們的WEB頁面。

          3、Cookie常見函數

          ● SetCookie 函數創建了一個Cookie,并且把它附加在HTTP頭的后面。必須注意的一點是:Cookie是HTTP協議頭的一部分,用于瀏覽器和服務器之間傳遞信息,所以必須在任何屬于HTML文件本身的內容輸出之前調用SetCookie函數,調用該函數前即使有空格、空白行都不行。如果setCookie()認了第二,就沒有哪個元素敢認第一。使用setcookie()函數的前提是客戶瀏覽器支持cookie,如果客戶將之禁用的話,setcookie()也就英雄無用武之地了。

             int SetCookie(string name, string value, int expire, string path, string domain, int secure,bool httponly);

          參數說明:

             name;設置cookie變量的名稱。

             value;設置cookie的值。

             expire;設置cookie過期時間。如果要把cookie保存為瀏覽器進程,即瀏覽器關閉后就失效。那么可以直接把expiretime設為0。 Eg:setcookie(“name”,”value”,0)。該參數不設置的話,關閉瀏覽器也能結束一個cookie。

              path:表示web服務器上的目錄,默認為被調用頁面所在目錄. 這里還有一點要說明的,比如你的站點有幾個不同的目錄(比如一個購物目錄,一個論壇目錄),那么如果只用不帶路徑的Cookie的話,在一個目錄下的頁面里設的Cookie在另一個目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實際上,即使沒有指定路徑,WEB服務器會自動傳遞當前的路徑給瀏覽器的,指定路徑會強制服務器使用設置的路徑。解決這個問題的辦法是在調用 SetCookie時加上路徑和域名,域名的格式可以是“http://www.phpuser.com/”,也可是“.phpuser.com”。 SetCookie函數里表示value的部分,在傳遞時會自動被encode,也就是說,如果value的值是“test value”在傳遞時就變成了“test%20value”,跟URL的方法一樣。當然,對于程序來說這是透明的,因為在PHP接收Cookie的值時會自動將其decode。

              domain:cookie可以使用的域名,默認為被調用頁面的域名。這個域名必須包含兩個".",所以如果你指定你的頂級域名,你必須用 ".mydomain.com" 。設定域名后,必須采用該域名訪問網站cookie才有效。如果你使用多個域名訪問該頁,那么這個地方可以為空或者訪問這個cookie的域名都是一個域下面的。

              secure:如果設為"1",表示cookie只能被用戶的瀏覽器認為是安全的服務器所記住。

              除了name之外所有的參數都是可選的。value,path,domain三個參數可以用空字符串""代換,表示沒有設置;expire 和 secure兩個參數是數值型的,可以用0表示。expire參數是一個標準的Unix時間標記,可以用time()或mktime()函數取得,以秒為單位。secure參數表示這個Cookie是否通過加密的HTTPS協議在網絡上傳輸。

              httponly:如果設為1,則表示cookie只能被http協議所使用,任何腳本語言,比如javascrīpt是不能獲取PHP所創建的 cookie的,這就有效削弱了來自XSS的攻擊。(注意了:這是PHP5才有的選項,咱也沒有用過。看了官方手冊嘗試著翻譯的,如有疑問,請參考官方手冊。)

             當前設置的Cookie不是立即生效的,而是要等到下一個頁面或刷新后才能看到.這是由于在設置的這個頁面里Cookie由服務器傳遞給客戶瀏覽器,在下一個頁面或刷新后瀏覽器才能把Cookie從客戶的機器里取出傳回服務器的原因。

          小道消息

          Cookie應用案例:

          ●創建一個cookie:

          SetCookie()

          ●創建cookie數組:

          其一:

          SetCookie("CookieArray[]", "Value 1");

          SetCookie("CookieArray[]", "Value 2");

          其二:

          SetCookie("CookieArray[0]", "Value 1");

          SetCookie("CookieArray[1]", "Value 2");

          ● 接收和處理Cookie

          PHP對Cookie的接收和處理的支持非常好,是完全自動的,跟GET,POST變量的原則一樣,特別簡單。

          比如設置一個名為MyCookier的Cookie,PHP會自動從WEB服務器接收的HTTP頭里把它分析出來,并形成一個可直接使用的全局變量,名為$_COOKIE[‘MyCookie’],這個變量的值就是Cookie的值。數組同樣適用。

          分別舉例如下:(假設這些都在以前的頁面里設置過了,并且仍然有效)

          echo $_COOKIE[‘MyCookie’];

          取出cookie數組的例子:

          <?php

          // 創建一個cookie數組

          setcookie("cookie[three]", "cookiethree");

          setcookie("cookie[two]", "cookietwo");

          setcookie("cookie[one]", "cookieone");

          // 頁面刷新之后,用foreach提取cookie數組。

          if (isset($_COOKIE['cookie'])) {

          foreach ($_COOKIE['cookie'] as $name => $value) {

             echo "$name : $value <br />\n";

          }

          }

          ?>

          就這么簡單。

          ● 刪除Cookie

              要刪除一個已經存在的Cookie,有兩個辦法:

          1、調用只帶有name參數的SetCookie,那么名為這個name的Cookie將被從關系戶機上刪掉;

          setcookie(“MyCookie”); //刪除MyCookie。

          2、設置Cookie的失效時間為time()或time()-1//time()減多少沒有關系啦,只要是過期時間就行//,那么這個Cookie在這個頁面的瀏覽完之后就被刪除了(其實是失效了)。例如:

              setcookie(“MyCookie”,”Value”,time()-1); //刪除MyCookie。

          要注意的是,當一個Cookie被刪除時,它的值在當前頁在仍然有效的。

              如果要把cookie保存為瀏覽器進程,即瀏覽器關閉后就失效。那么可以直接把expiretime設為0。例如:setcookie(“name”,”value”,0)。該參數不設置的話,關閉瀏覽器也能結束一個cookie。

          Cookie注意事項

          1、SetCookie()之前不能有任何html輸出,它認了第二,沒有哪個元素敢認第一,就是空格,空白行都不行。

          2、SetCookie()后,你在當前頁調用echo $_COOKIE["name"]不會有輸出。必須刷新或到下一個頁面才可以看到Cookie值。原因很簡單。SetCookie()執行之后,往客戶端發送一個cookie,你不刷新或瀏覽下一個頁面,客戶端怎么把cookie給你送回去呀?瀏覽器創建了一個Cookie后,對于每一個針對該網站的請求,都會在Header中帶著這個Cookie;不過,對于其他網站的請求Cookie是絕對不會跟著發送的。而且瀏覽器會這樣一直發送,直到 Cookie過期為止。

          3、使用Cookie的限制。一個瀏覽器能創建的Cookie數量最多為30個,并且每個不能超過4KB,每個WEB站點能設置的Cookie總數不能超過20個。 (這是書上看到的說法,應該是一個web站點能創建的Cookie不能超過30個吧,要不然,我機子里的cookie少說也上百了,請達人指教!)

          4、Cookie是保存在客戶端的,用戶禁用了Cookie,你的Cookie自然也就沒作用啦!現在的瀏覽器,每當咱發送一個Cookie給客戶端,他就像看門狗一樣給攔截住了,并詢問用戶是否允許Cookie進門。天,用戶又不是專家,有幾個人知道啥叫Cookie呀?搞不好都當病毒拒之門外了。

          posted @ 2014-02-28 01:11 奮斗成就男人 閱讀(195) | 評論 (0)編輯 收藏

          實現驗證碼的代碼(有注釋)教會你怎樣實現驗證碼!

          <?php
          $im = imagecreatetruecolor(80,23);//創建畫布
          $bgcolor = imagecolorallocate($im,220,230,230);//調制背景色
          $bordercolor = imagecolorallocate($im,0,0,255);//調制邊框顏色
          $tcolor = imagecolorallocate($im,255,0,0);
          $green = imagecolorallocate($im,0,255,0);
          imagefill($im,10,10,$bgcolor);//填充背景色
          imagerectangle($im,1,1,79,22,$bordercolor);//繪制邊框
          for($i = 0;$i < 4; $i++){

          $num_case = rand(0,2);//產生隨機數0-2,根據數值的不同決定產生的是數字|小寫|大寫
          switch($num_case){
           case 0:$num = rand(48,57);break;//數字
           case 1:$num = rand(65,90);break;//大寫
           default:$num = rand(97,122);//小寫
           
           }

          $text[$i] = sprintf("%c",$num);//將隨機產生的ASCII碼轉換為相應的字符
          imagettftext($im,rand(10,20),rand(0,30),15*$i+5,20,$tcolor,"simkai.ttf",$text[$i]);//顯示字符
          }
          for($i=0;$i<100;$i++){
          imagesetpixel($im,rand(1,79),rand(1,22),$green);
          }
          session_start();
          $_SESSION["ckcode"]=implode($text);
          header("Content-type:image/png");//設置輸出類型
          imagepng($im);//輸出圖像
          imagedestroy($im);

          posted @ 2014-02-28 01:06 奮斗成就男人 閱讀(236) | 評論 (0)編輯 收藏

          計算器簡單實現

          <html>
          <head>
          <script>
            var flag = true;
            function getNum(num){
              if(!flag){
              document.getElementById('res').value = '';
              flag = true;
           }
              document.getElementById('res').value += num;
            }
            function getResult(){
              var result = eval(document.getElementById('res').value);
           document.getElementById('res').value = result;
           flag = false;
            }
          </script>
          </head>
          <body>
          <table border='1px' width='300px'>
          <caption>計算器</caption>
          <tr>
           <td colspan='4'><input type='text' id='res' size=47></td>
           
          </tr>
          <tr>
           <td><input type='button' value='1' style="width:75px" onclick="getNum(1)"></td>
           <td><input type='button' value='2' style="width:75px" onclick="getNum(2)"></td>
           <td><input type='button' value='3' style="width:75px" onclick="getNum(3)"></td>
           <td><input type='button' value='+' style="width:75px" onclick="getNum('+')"></td>
          </tr>
          <tr>
           <td><input type='button' value='4' style="width:75px" onclick="getNum(4)"></td>
           <td><input type='button' value='5' style="width:75px" onclick="getNum(5)"></td>
           <td><input type='button' value='6' style="width:75px" onclick="getNum(6)"></td>
           <td><input type='button' value='-' style="width:75px" onclick="getNum('-')"></td>
          </tr>
          <tr>
           <td><input type='button' value='7' style="width:75px" onclick="getNum(7)"></td>
           <td><input type='button' value='8' style="width:75px" onclick="getNum(8)"></td>
           <td><input type='button' value='9' style="width:75px" onclick="getNum(9)"></td>
           <td><input type='button' value='*' style="width:75px" onclick="getNum('*')"></td>
          </tr>
          <tr>
           <td><input type='button' value='0' style="width:75px" onclick="getNum(0)"></td>
           <td><input type='button' value='.' style="width:75px" onclick="getNum('.')"></td>
           <td><input type='button' value='=' style="width:75px" onclick="getResult()"></td>
           <td><input type='button' value='/' style="width:75px" onclick="getNum('/')"></td>
          </tr>
          </table>
          </body>
          </html>

          posted @ 2014-02-28 01:05 奮斗成就男人 閱讀(186) | 評論 (0)編輯 收藏

          php上傳思路很重要 舉一反三

          1、FORM標簽enctype屬性
          表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。默認情況,
          這個編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;
          只有使用了multipart/form-data,才能完整的傳遞文件數據
          <form enctype="multipart/form-data" method="post" name="upform">
          input標簽 type 屬性中的  "file"
          <input name="upfile" type="file">

          2、$_FILES 系統函數
          $_FILES['myFile']['name']   客戶端文件的原名稱。
          $_FILES['myFile']['type']   文件的 MIME 類型,例如"image/gif"。
          $_FILES['myFile']['size']   已上傳文件的大小,單位為字節。
          $_FILES['myFile']['tmp_name']   儲存的臨時文件名,一般是系統默認。
          $_FILES['myFile']['error']   該文件上傳相關的錯誤代碼。

          3、move_uploaded_file函數
          上傳后移動文件到目標位置的函數
          move_uploaded_file(臨時文件,目標位置和文件名);

          4、is_uploaded_file 函數
          判斷上傳MIME類型的文件函數

          posted @ 2014-02-28 00:59 奮斗成就男人 閱讀(217) | 評論 (0)編輯 收藏

          PHP通過使用工具類(PHPExcel)從操作數據庫和Excel表

          關于用PHPExcel從數據庫表導出到Excel表
          在網上查了好多關于這方面的資料,今天終于把這個問題解決了。
          我個人感覺 PHPExcel還是很好用的,首先到官方網站http://phpexcel.codeplex.com/下載最近版本的PHPExcel,解壓后會發現里面有class、
          Documentation、Tests三個文件夾和三個txt的日志文件,主要用到的是Class文件,而Tests主要是一些demo示例
          下面來介紹一下PHPExcel的簡單用法,這里是與數據庫連接的:
          首先,要包含PHPExcel.php
          require_once 'Classes/PHPExcel.php';          //路徑根據自己實際項目的路徑進行設置
          $objPHPExcel = new PHPExcel();  //創建PHPExcel實例
          //下面是對mysql數據庫的連接   
          $conn = mysql_connect("localhost","root","") or die("數據庫連接失敗!");   
          mysql_select_db("image",$conn);               //連接數據庫
          mysql_query("set names 'GBK'");               //轉換字符編碼
          $sql = mysql_query("select * from test");     //查詢sql語句
          /*
          --------------設置表頭信息------------------*/
          $objPHPExcel->setActiveSheetIndex(0)
          ->setCellValue('A1', 'ID編號')
          ->setCellValue('B1', '月份')
          ->setCellValue('C1', '產品一')
          ->setCellValue('D1', '產品二')
          ->setCellValue('E1', '產品三');
          /*--------------開始從數據庫提取信息插入Excel表中------------------*/
          $i=2;                //定義一個i變量,目的是在循環輸出數據是控制行數
          while($rs=mysql_fetch_array($sql)){
          $rm = iconv("GB2312","UTF-8",$rs[1]);                 //對字符進行編碼將數據庫里GB2312的中文字符轉換成UTF-8格式
          $objPHPExcel->setActiveSheetIndex(0)
          ->setCellValue("A".$i, $rs[0])
          ->setCellValue("B".$i, $rm)
          ->setCellValue("C".$i, $rs[2])
          ->setCellValue("D".$i, $rs[3])
          ->setCellValue("E".$i, $rs[4]);          
          $i++;
          }
          /*--------------下面是設置其他信息------------------*/
          $objPHPExcel->getActiveSheet()->setTitle('Example1');      //設置sheet的名稱
          $objPHPExcel->setActiveSheetIndex(0);                      //設置sheet的起始位置
          $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //通過PHPExcel_IOFactory的寫函數將上面數據寫出來
          $objWriter->save(str_replace('.php', '.xls', __FILE__));     //設置以什么格式保存,及保存位置
          至此,一個完整的將mysql數據庫里的信息用PHP導出Excel實例做完,可能在運行的時候會發生一些問題,
          如中文亂碼,表頭可能顯示不出來,這是因為文件編碼格式的原因,將文件編碼設置成UTF-8就行了,在此我就不做太多解釋了。


          二: PHPExcel從excel表導入到mysql數據庫 

          error_reporting(E_ALL);
          require './Common/Extend/Classes/PHPExcel.php';
          require './Common/Extend/Classes/PHPExcel/Reader/Excel2007.php';
          require './Common/Extend/Classes/PHPExcel/Reader/Excel5.php';
          $info =  $upload->getUploadFileInfo();
          $filepath = "./Upimg/".$info[0][savename];
          $PHPExcel = new PHPExcel();
          $PHPReader = new PHPExcel_Reader_Excel2007();
          $PHPExcel = $PHPReader->load($filepath);
          $sheet = $PHPExcel->getActiveSheet();
          $allCol=PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
          $allRow=$sheet->getHighestRow();
          $M=new Model;
          for($j=2;$j<=$allRow;$j++){
          $a = $PHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//獲取A列的值
          $b = $PHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//獲取B列的值
          $c = $PHPExcel->getActiveSheet()->getCell("C".$j)->getValue();//獲取C列的值
          $d = $PHPExcel->getActiveSheet()->getCell("D".$j)->getValue();//獲取D列的值
          $e = $PHPExcel->getActiveSheet()->getCell("E".$j)->getValue();//獲取E列的值
          $f = $PHPExcel->getActiveSheet()->getCell("F".$j)->getValue();//獲取F列的值
          $g = $PHPExcel->getActiveSheet()->getCell("G".$j)->getValue();//獲取G列的值
          $h = $PHPExcel->getActiveSheet()->getCell("H".$j)->getValue();//獲取X列的值
          $i = $PHPExcel->getActiveSheet()->getCell("I".$j)->getValue();//獲取I列的值
          $jj = $PHPExcel->getActiveSheet()->getCell("J".$j)->getValue();//獲取J列的值
          $k = $PHPExcel->getActiveSheet()->getCell("K".$j)->getValue();//獲取K列的值
          $l = $PHPExcel->getActiveSheet()->getCell("L".$j)->getValue();//獲取L列的值
          $m = $PHPExcel->getActiveSheet()->getCell("M".$j)->getValue();//獲取M列的值
          $n = $PHPExcel->getActiveSheet()->getCell("N".$j)->getValue();//獲取N列的值
          $p = $PHPExcel->getActiveSheet()->getCell("P".$j)->getValue();//獲取P列的值
          $qq = $PHPExcel->getActiveSheet()->getCell("Q".$j)->getValue();//獲取Q列的值
          $r = $PHPExcel->getActiveSheet()->getCell("R".$j)->getValue();//獲取R列的值
          $sql="insert into law_constant(true_name,email,sex,birthday,certificate_num,first_date,law_firm_name,law_firm_address,lawer_xueli,professional,school,work_year,occup_language,word_experience,hobbies) values('".$c."','".$p."','".$d."','".$jj."','".$b."','".$e."','".$f."','".$h."','".$i."','".$k."','".$l."','".$m."','".$n."','".$qq."','".$r."');";
          $res=$M->query($sql);
          }
          if($res[0]==''){
          $this->success("導入數據庫成功!",'__APP__/Lawerinfo/index');
          }else{
          $this->error("導入數據庫失敗!","__APP__/Lawerinfo/index");
          }
          }
          }
          }


          posted @ 2014-02-28 00:54 奮斗成就男人 閱讀(588) | 評論 (0)編輯 收藏

          這篇文章值1500萬元左右

          我的學歷不高,不過就是一個路上比比皆是的專科生而已,再加上家中沒
            
          有恒產,所以很早就出脫離學生單純的生活,到處在為三餐溫飽打拼。
            
          在這十幾年的工作歷程中,只有在從事業務行銷工作時讓我的年收入達到
            
          了千萬,不僅有了進口豪華轎車,還擁有了獨棟透天別墅,而當時我也不
            
          過才三十歲左右。
            
          今天在版面上看到有人批評業務工作的種種不是,其實我有著深刻的親身
            
          經歷,當各位業務急先鋒在市場上真槍實彈搏斗時,低聲下氣根本就是一
            
          種太膚淺的形容詞,請問有人被狗追過嗎?有人被人家用掃把掃出來過嗎
            
          ?如果沒有,那我認為應該還需要再加強磨練一番。
            
          我認為干業務的絕對不需要跟人低聲下氣,除非你愿意跟人低聲下氣;業
            
          務工作是一個正正當當的職業,名片上印有響當當的頭銜,不偷不搶沒什
            
          么好丟臉的;沒有業務的招攬,再好的產品也出不了工廠大門;業務人員
            
          的心中只有一句座右銘:成王敗寇;業務員的人生是由他自己所定義的,
            
          要住什么樣的房子、開什么樣的車子、等等,自己可以掌握,連老板都無
            
          法為你定奪;業務員的養成不需要專門的科系來培訓,但是的確需要一點
            
          天生的傻勁。
            
          我認為任何人都應該學習業務行銷的技巧,因為你必須不斷地推銷你的理
            
          念讓別人接受,哪怕你是文書工作人員、程序設計師、美工、總機小姐、
            
          乃至于董事長,我們每天都在推銷我們的想法給別人,就像我老婆接受了
            
          我的求婚推銷一樣,其實一點都不難,也沒什么了不起,我們每天都在作
            
          ,祇是沒有察覺而已。
            
          所以說,千萬不要再說不喜歡從事推銷、我討厭干業務,那是騙人的,事
            
          實上我們每天都在作,就像我現在打字的這一篇文章一樣,我在將我的想
            
          法推銷給你,你的反應只有四種:YesNoYes ButNo But,如此而已,
            
          不要太排斥,因為我從來都不認為全世界的人會百分之百相信我,連上帝
            
          都也有人反對,不是嗎?
            
          一些社會應對進退技巧或人格特質的確是可以被后天塑造出來的,這一點
            
          我持肯定態度,因為我是一個極為渴望安靜的人,我不喜歡一天到晚出門
            
          奔波,常常喜歡自己靜靜地窩在一個小天地里作我感興趣的事情,但是我
            
          卻被我以前的公司訓練成超級業務高手,打破公司所有的歷史紀錄,這是
            
          如何做到的呢?說穿了不稀奇,已經有人說過了, 什么卡內基、火鳳凰.
            
          ....等等的,它的確有效,至少在我以及我周遭的同事身上發揮了作
            
          用,而且屢試不爽,因為我也用在我的部屬身上,真的蠻有效的。
            
          但是我還是不快樂,因為我已經失去了自我價值,而追尋自我價值這件事
            
          對于我而言又是一件很重要的人生大事,但是我還是去做了,原因很簡單
            
          ,因為我娶妻生子,每個月付不完的帳單逼得我必須去做一大堆我不喜歡
            
          的事情,甚至連我老婆也是一樣,沒什么好抱怨的,因為這就是人生,一
            
          個非常真實在你我身邊發生的事情,我在這個版面上看到好多人說如果景
            
          氣好轉的話,他就要跳槽到比較具規模的公司去上班,唉,我就來說明一
            
          下企業主的想法吧。
            
          現在的我早已是一位公司負責人,我經常要陪客戶應酬,推銷我的產品及
            
          服務,每個月要張羅員工薪資,遇到員工身體有病痛或是心情不佳,我還
            
          得小心伺候,免得他一時之間突然離職,日常作業會陷入停頓,這一陣子
            
          實在是很不景氣,客戶的預算大幅縮水不說,連決行的時程都一再往后延
            
          ,造成業務及生產單位極大的困擾。
            
          然后一下子是下大雨,一下子淹水,搞得我都不知道該怎么辦,在我的立
            
          場來說(我要特別強調這是我作為老板的立場),每放一天假我就損失多
            
          少錢,每泡掉一臺計算機我就損失多錢,錢、錢、錢、錢、錢、錢、錢,通
            
          通都要錢,我常在想說萬一不幸有一天我垮臺了,有多少員工會替這家公
            
          司或這個事業來著想?
            
          當景氣還不錯的時候,我得用很多花招來吸引這些所謂的人才,其中股票
            
          選擇權是我最反感的一件事情,我常想為什么我用我多年來辛苦存下來的
            
          錢創辦一個事業,而這些員工卻要輕易跟我分享我辛苦的成果?
            
          當景氣變差的時候,就像是現在,有多少員工會念在當初曾經一起奮斗的
            
          情誼呢?不會,因為我永遠叫老板,你永遠叫員工,這是千古以來無法保
            
          持和諧的關系。
            
          用比較感性的角度來看,與員工們朝夕相處共同奮斗,所以日久生情算大
            
          家一份股份,這倒也無可厚非,但是剛面試就急著問說這家公司福利政策
            
          如何?薪資待遇如何?的這些人,通常我都會請他們自己創業比較好,因
            
          為這些問題永遠沒有辦法找到平衡點。
            
          如果用比較理性的角度來看,既然這個現實社會都是要用錢才能生存得下
            
          去,那么廢話就不要說太多,直接了當說明工作內容為何,期限到了的時
            
          候該產出多少產品或是業績,那這個樣子的情況之下薪資及福利為何,我
            
          想如此還比較節省彼此雙方的時間。情?那就別鬧了!
            
          這些話聽起來很刺耳,幾乎所有的求職者聽完一定會破口大罵,但是我只
            
          能說這個就是絕大多數企業主的想法,這些基本上都是根據一個簡單不過
            
          的邏輯:「我一樣每個月要花這么多錢來聘請員工作事情,我為什么沒有
            
          權利去選擇那些已經有技巧、有經驗,甚至于是有客戶在手上的新人呢?
            
          如果有一天這位員工表現突出,那么我就酌予提拔或獎勵,再過一陣子,
            
          當這位員工表現大不如前,或是突然出現了薪資待遇更便宜的高手來加入
            
          公司,那我實在沒有理由還要留著這位坐領高薪及福利的前朝重臣,卻拒
            
          絕掉一位這么價廉物美的新人。這位前朝重臣的豐功偉業呢?別傻了,老
            
          板會回你一句話:我當初不是已經給了你相對的報酬嗎?」
            
          最剛開始的時候,臺商找去大陸上班的臺籍干部差不多都有三倍于臺灣行
            
          情的薪資,到了今天差不多已經掉到1.2倍而已了。臺灣工廠的女工大
            
          約一個月可以領個1.5~2萬元,大陸工廠相同的工作卻只需要600
            
          ~1000元人民幣,但是生產出來的產品品質卻都差不多。請問如果你
            
          是老板,你會作何決定?當貿易商持續給你壓力要求你降價,不然就要把
            
          訂單轉給你認識的同業時,你的心情會好才奇怪!
            
          各位可以不相信我所說的話,但是務必去查證一下我所講的,如果沒去過
            
          大陸,那么趁失業中的空檔前進一下東莞或是廣州(大約只要準備三萬元
            
          就很夠用了)。隨便去一家工廠門口,從早上七點一直到下午六點,你會
            
          發現到門口都有人排隊想爭取應征的機會,甚至賄賂門口警衛,為的是希
            
          望獲得一份300元起薪的現場操作員工作。
            
          300元人民幣大約等于1300元臺幣,當我從香港搭機回臺灣,在機
            
          場買了一瓶香水給我老婆,結帳時我才發現我花掉了兩個大陸工廠新人的
            
          一個月薪資所得,結果害得我整個人在飛機上心情都好不起來。
            
          其實我蠻贊成神奇獅子文中的一些說法,在上海找一個什么工具軟件都很
            
          厲害的美工,一個月最高也只要4000元人民幣(這已經是很高很高了
            
          ),比照到臺灣的行情,沒有7~8萬,你大概別想請得到人。
            
          前一陣子我有一些朋友應聘到大陸內地,而且是到大陸人開設的公司上班
            
          ,要我幫他惡補一下大陸文化,我才驚然發現我也快要被淘汰了,因為我
            
          根本無法跟計算機溝通:中文輸入法的問題!
            
          先前我都沒感覺到,那是因為我都是到臺商公司去交貨,碰到的計算機青一
            
          色都是繁體中文的操作系統,這難不倒我,而且大陸員工都已經學會了倉
            
          頡或是其它的輸入法。但是大陸人開設的公司就只有簡體中文的操作系統
            
          了,這個時候換做是你,怎么辦?
            
          我要講的意思是說接下來的二三十年,我們這一代或是下一代到底要跟誰
            
          競爭?跟多少人競爭?我已經很慎重地在思考這個問題,各位想過沒有?
            
          我去了大陸這樣子走馬看花的逛了一下子,就覺得快活不下去了,各位的
            
          危機意識到底在哪里?
            
          大陸員工其實是相當糟糕的,幾乎完全沒有主動積極進取的精神,我看了
            
          這么多公司工廠,只讓我看到一個人會自己動腦筋想解決方案,這個就是
            
          我們目前臺灣員工的優勢所在,但是能維持多久呢?
            
          侏羅紀公園中很清晰的一句話:生命自會尋找出路!只要我們腦袋里確實
            
          有料,其實企業老板是不太看學歷的,有朝一日他必會回饋相當的報酬給
            
          你。但如果你讓老板覺得不放心你的時候,就算是需要作出違法的行為,
            
          他還是會毅然下決心請你走路的。呆伯特這本書其實害了好多年輕人,這
            
          是我的真實感覺。
            
          最后談到經驗。經驗是一種非常寶貴的人類資產,我絕對不會錄用一個剛
            
          出校門的年輕人,因為我曾經吃足了苦頭,大學或大專資管資工科班畢業
            
          ,竟然還要我花費十幾萬元送去接受半個月的專業講習訓練,結訓回來后
            
          叫他們集思廣益改寫一個javascript,竟然在搞了一個星期之后跟我說這是
            
          不可能寫得出來的東西,然后在二個月之后的發薪日,因為香港機場罷工
            
          我趕不回來(公司大小章剛好帶在身上),以致晚了兩天發薪水,這些新
            
          人竟然就聯合起來指著我說這是一家騙人的公司,當時那種情況,你認為
            
          我的感覺會好嗎?



             
          后來我請一位朋友的小孩,幫我看一下系統分析紀錄, 不到三個小時程序
            
          就已經寄到我的電子郵件信箱了。這兩者之間的差別在哪里 ?在經驗!
            
          這位朋友的小孩平時就在幫人家寫案子,收費非常便宜,因為他把這件事
            
          情當成是在作作業,練習練習,以便為將來出社會時找工作之用;而這些
            
          花了大把鈔票的國立大學大專同學,心中老是以為自己是全世界的重心,
            
          一看到公司只有四十幾坪,人沒幾個,聽也沒聽說過,于是就....!
            
          所以我現在寧愿用極高的薪資,來聘請一位二專畢業,但是擁有相當豐富
            
          經驗的人來幫我作事情,那些連接個電話留個信息在別人桌上的基本技巧
            
          都不懂的人,我是絕對敬而遠之的。
            
          人類只是一種智商比較高級一點的動物,如果你常看Discovery或是國家地
            
          理頻道的話,你就會發現老年的動物最可憐,因為又不能狩獵,又不能保
            
          衛家園,群體行動時還經常拖泥帶水,影響整個行程進度,這是我們所謂
            
          的動物界。其實我們人類也好不到哪里去,頂多批著一張道德的皮在身上
            
          ,當我們走進浴室衣服一脫掉,哪有什么不一樣,眼、耳、鼻、口、四肢
            
          、生殖器官...,差不多的啦!但是又為什么會出現圣人、先賢、總統
            
          呢?因為腦袋里的東西不一樣。
            
          我們一輩子活在世上,無非就是要想盡辦法來創造出被人家利用的價值。
            
          如果我每天只被老板利用一個小時,但是老板沒有我這一個小時的幫忙,
            
          他就會賺不到錢,而且又找不到什么替代方案的話,那么我這一個小時就
            
          會相當值錢,比如說我擔任這家公司的技術總顧問。
            
          反之如果我的被利用價值相當低,隨便一個人或一套硬設備就可以取代
            
          掉我,那么就算是我花了十幾個小時,累得跟狗一樣,老板還是會隨時請
            
          我走路,因為我沒有被利用的價值,比如說我客戶的一些總機小姐。
            
          常常有很久沒聯絡的朋友或客戶突然打電話給我,霹靂啪啦的問了一大堆
            
          問題,我也幾哩呱啦地回答他們,生意就上門了,因為我有一些特定的印
            
          象停留在他們的腦海中,凡是他們遇到這一方面的問題時,通常都會先來
            
          問我,他們知道像這種事情找我準沒錯,這就是我個人獨具的被利用價值
            
             你的被利用價值在哪里?有多少?能持續產生新的價值嗎?跟得上時代脈
            
          動嗎?
            
          我想這才是老板最想了解的,其它的,我認為都不是重點。
            
          愿共勉之!祝大家都能找到理想的工作! 主管欣賞的人 在職場上,苦勞不會成功,其實企業最欣賞的人才,是具有高度common sense的人,換句話說,就是要work hardwork smartwork happy,特質的A級人才。 努力工作績效  是不是最努力工作的人就一定受到主管賞識呢?
          有三個檢視標準或許可以提供 大家做為一個參考:
          Work Hard, Work Smart, Work Happy
          你是不是很努力工作,但不快樂呢?這時或許可以檢核自己一下,工作的方式是不是夠smart
          在這裡跟大家分享一個故事,或許可以引發大家一些思考與想法。
          小芬與小美畢業於某國立大學企管系,同時進入一家中型企業,擔任企劃專員的工作。小芬做事努力認真、守分務實,常常自動留下來為公司加班,工作到很晚才下班。
          小美呢?只見她每天嘻嘻哈哈,工作輕鬆又愉快,每天都會主動去找主管聊天,給人一種跟主管感情很好的印象。
          1
          年後,小美獲得主管升遷,委以重任,小芬則只獲得象徵性的加薪鼓勵。這讓小芬非常不平,認為小美工作又沒自己認真,只會逢迎拍主管馬屁,憑什麼考績反而比她好?而且還受到公司的重用。自己為公司付出許多,夙夜匪懈地工作,
          反而落得一場空,於是遞了辭呈。
          少了一根筋 
          就在小芬工作的最後一天,總經理找小芬晤談。剛好中秋節快到了,公司正在考慮該買什麼中秋禮送給客戶。總經理說,「小芬,可不可以請妳到南門巿場跑一趟,看看有沒有賣大閘蟹?」
          小芬心裡很疑惑,不知道主管為什麼要她跑這一趟,因為這並不是她負責的工作啊!但她還是乖乖地依照主管的要求,搭計程車到南門巿場。過了20分鐘,小芬回到辦公室,向總經理報告,「南門巿場有賣大閘蟹。」
          總經理接著問她,「南門巿場的大閘蟹怎麼賣?算斤?還是算隻?」小芬一臉茫然,無法回答。於是又跑了一趟南門巿場,30分鐘後又回來報告,「南門巿場大閘蟹算隻賣,每隻350元。」 
          總經理聽了之後,當著小芬的面,把小美找了進來,並吩咐小美,「麻煩妳到南門巿場去一趟,看看有沒有賣大閘蟹?」
          小美馬上問總經理,「請問大閘蟹是有什麼用途嗎?」
          總經理回答她,「中秋節快到了,打算送客戶大閘蟹做為中秋賀禮。」
          小美立即出門。過了1個多小時,小美回來了。
          一進門,就見她眉飛色舞地拎著兩隻大閘蟹。向總經理報告,「南門巿場有兩家攤位賣大閘蟹。第一家的大閘蟹,每隻平均4兩重,每隻賣350元。第二家的大閘蟹,每隻平均6兩重,一隻550元。我建議,如果總經理自家食用可以買4兩重的,肚白、背綠、金毛,看起來很新鮮。如果總經理要送人,我建議買6兩重的,看起來比較有份量。我各買了一隻帶回來給總經理參考。」
          做事Smart有方法 
          聽完小美的報告之後,總經理轉頭問小芬,「妳看出妳們之間有什麼不同了嗎?」小芬一副恍然大悟的神情,趕忙點頭表示她明白了!
          總經理向小芬進一步說明,「一樣是去南門巿場看看有沒有賣大閘蟹,妳們蒐集回來的巿場情報與態度截然不同。小芬,妳很認真沒有錯,但是妳並沒有思考這項任務的需求是什麼?只是一個口令一個動作,得來來回回好幾趟才能把一件事情做好。而小美呢?不用我多交待,一次就把事情搞定,她不僅蒐集了完整的巿場情報,甚至也提出建議與分析,協助我做為判斷的參考。」
          苦勞不會成功 
          小芬聽了不禁自慚形穢,她最感慚愧的是,為何她與小美是最好的同學,居然沒有學習小美的做事優點,暗地嫉妒她。同時她也很謝謝總經理為她上了一堂寶貴的一課,點醒她的負面思維。
          在職場上,苦勞不會成功,其實企業最欣賞的人才,是具有高度common sense的人,換句話說,就是要有work hard, work smart, work happy特質的A級人才。這樣的人才能快速掌握主管的需求與期待,為公司開創更大的格局。
          The race is not to the swift or the battle to the strong, nor does food come to wise or wealth to the brilliant or favor to the learned: but time and chance happen to them all. 
          快跑的未必能贏,力戰的未必得勝;
          智慧的未必得糧食,明哲的未必得資財,靈巧的未必得喜悅;
          所臨到眾人的,是因為「時間」與「機會」。 
          親愛的好友們!你們學到了嗎?
          你我是不是只懂得做個『努力工作、認真、守分務實』的人呢?

          posted @ 2014-02-22 14:46 奮斗成就男人 閱讀(239) | 評論 (0)編輯 收藏

          圖解SQL的inner join、left join、right join、full outer join、union、union all的區別

          對于SQL的Join,在學習起來可能是比較亂的。我們知道,SQL的Join語法有很多inner的,有outer的,有left的,有時候,對于Select出來的結果集是什么樣子有點不是很清楚。Coding Horror上有一篇文章,通過文氏圖 Venn diagrams 解釋了SQL的Join。我覺得清楚易懂,轉過來。

          假設我們有兩張表。Table A 是左邊的表。Table B 是右邊的表。其各有四條記錄,其中有兩條記錄name是相同的,如下所示:讓我們看看不同JOIN的不同

          A表
          id name
          1 Pirate
          2 Monkey
          3 Ninja
          4 Spaghetti
          B表
          id name
          1 Rutabaga
          2 Pirate
          3 Darth Vade
          4 Ninja

          1.INNER JOIN

          SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

          結果集
          (TableA.) (TableB.)
          id name id name
          1 Pirate 2 Pirate
          3 Ninja 4 Ninja

          Inner join 產生的結果集中,是A和B的交集。

          2.FULL [OUTER] JOIN 
          (1)
          SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 
          結果集
          (TableA.) (TableB.)
          id name id name
          1 Pirate 2 Pirate
          2 Monkey null null
          3 Ninja 4 Ninja
          4 Spaghetti null null
          null null 1 Rutabaga
          null null 3 Darth Vade
          Full outer join 產生A和B的并集。但是需要注意的是,對于沒有匹配的記錄,則會以null做為值。
          可以使用IFNULL判斷。
          (2)
          SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
          WHERE TableA.id IS null OR TableB.id IS null
          結果集
          (TableA.) (TableB.)
          id name id name
          2 Monkey null null
          4 Spaghetti null null
          null null 1 Rutabaga
          null null 3 Darth Vade
           產生A表和B表沒有交集的數據集。
           
          3.LEFT [OUTER] JOIN
          (1)
          SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
          結果集
          (TableA.) (TableB.)
          id name id name
          1 Pirate 2 Pirate
          2 Monkey null null
          3 Ninja 4 Ninja
          4 Spaghetti null null
          Left outer join 產生表A的完全集,而B表中匹配的則有值,沒有匹配的則以null值取代。
          (2)
          SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.nameWHERE TableB.id IS null
          結果集
          (TableA.) (TableB.)
          id name id name
          2 Monkey null null
          4 Spaghetti null null

          產生在A表中有而在B表中沒有的集合。

          4.RIGHT [OUTER] JOIN
          RIGHT OUTER JOIN 是后面的表為基礎,與LEFT OUTER JOIN用法類似。這里不介紹了。
          5.UNION UNION ALL
          UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
          請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。UNION 只選取記錄,而UNION ALL會列出所有記錄。
          (1)SELECT name FROM TableA UNION SELECT name FROM TableB
          新結果集
          name
          Pirate
          Monkey
          Ninja
          Spaghetti
          Rutabaga
          Darth Vade
          選取不同值
          (2)SELECT name FROM TableA UNION ALL SELECT name FROM TableB
          新結果集
          name
          Pirate
          Monkey
          Ninja
          Spaghetti
          Rutabaga
          Pirate
          Darth Vade
          Ninja

          全部列出來

          (3)注意:

          SELECT * FROM TableA UNION SELECT * FROM TableB
          新結果集
          id name
          1 Pirate
          2 Monkey
          3 Ninja
          4 Spaghetti
          1 Rutabaga
          2 Pirate
          3 Darth Vade
          4 Ninja
          由于 id 1 Pirate   與 id 2 Pirate 并不相同,不合并
           
          還需要注冊的是我們還有一個是“交差集” cross join, 這種Join沒有辦法用文式圖表示,因為其就是把表A和表B的數據進行一個N*M的組合,即笛卡爾積。表達式如下:SELECT * FROM TableA CROSS JOIN TableB
          這個笛卡爾乘積會產生 4 x 4 = 16 條記錄,一般來說,我們很少用到這個語法。但是我們得小心,如果不是使用嵌套的select語句,一般系統都會產生笛卡爾乘積然再做過濾。這是對于性能來說是非常危險的,尤其是表很大的時候。

          posted @ 2014-02-15 08:46 奮斗成就男人 閱讀(290) | 評論 (0)編輯 收藏

          僅列出標題
          共23頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          主站蜘蛛池模板: 深水埗区| 乐清市| 竹北市| 河曲县| 盐亭县| 安泽县| 长寿区| 桐乡市| 海宁市| 开远市| 丹凤县| 开封市| 马关县| 宾川县| 廊坊市| 北京市| 勐海县| 弋阳县| 余干县| 三河市| 衡山县| 八宿县| 周口市| 蒙山县| 晋城| 尼玛县| 樟树市| 会泽县| 襄汾县| 独山县| 溧水县| 吴川市| 高邑县| 芦溪县| 松滋市| 德江县| 永善县| 永昌县| 香格里拉县| 冷水江市| 凌海市|