#
摘要: 題目要求:銀行業(yè)務(wù)調(diào)度系統(tǒng)模擬實(shí)現(xiàn)銀行業(yè)務(wù)調(diào)度系統(tǒng)邏輯,具體需求如下:*銀行內(nèi)有6個(gè)業(yè)務(wù)窗口,1 - 4號(hào)窗口為普通窗口,5號(hào)窗口為快速窗口,6號(hào)窗口為VIP窗口。*有三種對(duì)應(yīng)類型的客戶:VIP客戶,普通客戶,快速客戶(辦理如交水電費(fèi)、電話費(fèi)之類業(yè)務(wù)的客戶)。*異步隨機(jī)生成各種類型的客戶,生成各類型用戶的概率比例為:VIP客戶 :普通客戶 :快速客戶 = 1 :6 :3。*...
閱讀全文
tomcat采用默認(rèn)安裝,要想tamcat直接綁定多個(gè)域名,這里我們需要修改配置文件:C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml
server.xml 的修改方式如下:
(一)多域名綁定
1.如果你要綁定網(wǎng)站,首先是要把tomcat的默認(rèn)訪問端口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" />
其實(shí)這里就是把port:8080,修改成port:80就可以了,其他的參數(shù)不變
2.接下來就是重點(diǎn)了哈哈...
原始:
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
</Engine>
當(dāng)然這里我把注釋代碼統(tǒng)統(tǒng)刪除掉了,省的礙眼
修改后:
<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默認(rèn)進(jìn)入的主機(jī),注意一定不能是localhost,不然別人通過你的ip訪問,就會(huì)默認(rèn)進(jìn)入tomcat的管理界面.
Host 的 name:表示該主機(jī)綁定的域名,如果綁定localhost則可以通過在瀏覽器中輸入localhost訪問該Host.
Host的 appBase:表示該主機(jī)綁定的文件存放路徑,可以使用相對(duì)路徑或絕對(duì)路徑.
按照上面的配置:
1.如果我在瀏覽器中輸入http://localhost 則訪問 C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT 下的網(wǎng)站
2.如果輸入http://www.abc.com 則訪問 C:\Program Files\Apache Software Foundation\Tomcat 5.5\abcapps\ROOT 下的網(wǎng)站
3.如果輸入http://www.cba.com 則訪問 D:\cba\ROOT 下的網(wǎng)站.
注意這里有一個(gè)ROOT目錄需要?jiǎng)?chuàng)建,我們只要把網(wǎng)站放到相應(yīng)的ROOT目錄向下面,即可通過相應(yīng)域名訪問了.
這里面的參數(shù)還有很多,我也不是很清楚,不過這樣做確實(shí)可以實(shí)現(xiàn)多域名綁定哈哈.而且網(wǎng)站頁面修改了只要直接覆蓋就可以了,tomcat可以自動(dòng)更新類和頁面,當(dāng)然如果修改了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標(biāo)記是用來配置虛擬主機(jī)的,就是可以多個(gè)域名指向一個(gè)tomcat,格式只要參考默認(rèn)的就
可以了。
<context>是Host標(biāo)記的子元素吧,表示一個(gè)虛擬目錄,它主要有兩個(gè)屬性,path就相當(dāng)于虛擬目錄名字,
而 docbase則是具體的文件位置。在這里我的虛擬路徑名稱為cqq,實(shí)際上我的程序也就是html、jsp、
servlet都 放在了f:\java\cqqapp這個(gè)目錄下了。
這樣我就可以通過 http://127.0.0.1/cqq/ 訪問我的這個(gè)虛擬目錄了。
另外一種方法是:
配置兩個(gè)站點(diǎn)
<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>
這樣設(shè)置以后,輸入域名可以分別到兩個(gè)站點(diǎn)
但由于沒有指定默認(rèn)站點(diǎn),所以直接輸入IP的時(shí)候,無法訪問。
于是增加 D:\Tomcat5.5\conf\Catalina\localhost\ROOT.xml
內(nèi)容如
<Context path="/" docBase="${catalina.home}/portal" debug="5" reloadable="true" crossContext="true">
</Context>
這樣可以實(shí)現(xiàn)輸入域名分別到個(gè)站點(diǎn),輸入IP就默認(rèn)到D:/Tomcat5.5/portal這個(gè)站點(diǎn)
可是,可是,問題出現(xiàn)了
這兩個(gè)站點(diǎn)啟動(dòng)相當(dāng)消耗內(nèi)存,TOMCAT內(nèi)存設(shè)置我已經(jīng)設(shè)到1400M了(再高TOMCAT5無法啟動(dòng)),所以不能同時(shí)啟動(dòng)三個(gè)應(yīng)用。
數(shù)據(jù)庫










































.










































.
test.html










































..
<html>
<head><title>php_ajax聯(lián)動(dòng)下拉菜單</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("沒有此數(shù)據(jù)庫!");
$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>
<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) {
//初始化對(duì)象并發(fā)出XMLHttpRequest請(qǐng)求
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("不能創(chuàng)建XMLHTTP實(shí)例!");
return false;
}
http_request.onreadystatechange = alertContents;
//指定響應(yīng)方法
http_request.open("GET", url,
true);
//發(fā)出HTTP請(qǐng)求
http_request.send(
null);
}
function alertContents() {
//處理服務(wù)器返回的信息
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,學(xué)習(xí)園地;
var stringArray = myVariable.split(";");
//以;分隔字符串
stringArray.pop();
//移除數(shù)組最后一個(gè)元素,stringArray[0]==1,新聞中心 stringArray[1]==2,學(xué)習(xí)園地
var len=stringArray.length;
for(var i=0;i<len;i++){
dataArray[i]= stringArray[i].split(",");
// 循環(huán)數(shù)據(jù)條數(shù)按,分割字符串
}
//alert(dataArray[1][0]);//返回 新聞中心
//初始化smallClassName的數(shù)據(jù)
smallClassName.length=0;
var alertOption=document.createElement_x("OPTION");
alertOption.value="";
alertOption.text="--選擇小類--";
smallClassName.add(alertOption);
for(var j=0;j<len;j++){
//添加數(shù)據(jù)
var objOption=document.createElement_x("OPTION");
objOption.value = dataArray[j][0];
objOption.text = dataArray[j][1];
smallClassName.add(objOption);
}
}
else {
alert('您請(qǐng)求的頁面發(fā)現(xiàn)錯(cuò)誤');
}
}
}











































..
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對(duì)要提交的中文進(jìn)行編碼
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');
//指定發(fā)送數(shù)據(jù)的編碼格式為GB2312
while($info=mysql_fetch_array($res)){
$str.=$info["cid"].",".$info["cname"];
$str.=";";
}
echo $str;
?>
1、什么是cookie?
0Cookie技術(shù)是一個(gè)非常有爭(zhēng)議的技術(shù),自經(jīng)誕生它就成了廣大網(wǎng)絡(luò)用戶和Web開發(fā)人員的一個(gè)爭(zhēng)論焦點(diǎn)。有一些網(wǎng)絡(luò)用戶,甚至包括一些資深的Web專家也對(duì)它的產(chǎn)生和推廣感到不滿,這倒不是因?yàn)镃ookie技術(shù)的功能太弱或別的技術(shù)性能上的原因,而僅僅是因?yàn)樗麄冇X得Cookie的使用,對(duì)網(wǎng)絡(luò)用戶的隱私構(gòu)成了危害。因?yàn)镃ookie是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)上購物的方式或用戶訪問該站點(diǎn)的次數(shù))。
那么Cookie技術(shù)究竟怎樣呢?是否真的給網(wǎng)絡(luò)用戶帶來了個(gè)人隱私的危害呢?還是讓我們看了下面的內(nèi)容,再做回答吧。
在WEB技術(shù)發(fā)展史上,Cookie技術(shù)的出現(xiàn)是一個(gè)重大的變革。最先是Netscape在它的Netscape Navigator 瀏覽器中引入了Cookie技術(shù),從那時(shí)起,World Wide Web 協(xié)會(huì)就開始支持Cookie標(biāo)準(zhǔn)。以后又經(jīng)過微軟的大力推廣(因?yàn)槲④浀腎IS Web服務(wù)器所采用的ASP技術(shù)很大程度的使用了Cookie技術(shù)),即在微軟的Internet Explorer瀏覽器中完全支持Cookie技術(shù)。到現(xiàn)在,絕大多數(shù)的瀏覽器都支持Cookie技術(shù),或者至少兼容Cookie技術(shù)的使用。
按照Netscape官方文檔中的定義,Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在用戶瀏覽器上的小文件,它可以包含有關(guān)用戶的信息(如身份識(shí)別號(hào)碼、密碼、用戶在Web站點(diǎn)購物的方式或用戶訪問該站點(diǎn)的次數(shù))。無論何時(shí)用戶鏈接到服務(wù)器,Web站點(diǎn)都可以訪問Cookie信息。
如果你使用的是windows系統(tǒng),那么請(qǐng)打開C:\Documents and Settings\用戶名\Cookies,你會(huì)發(fā)現(xiàn)該目錄下有好多*.txt格式的小文件。那就是cookie文件。當(dāng)然,在該目錄下你也可能什么都發(fā)現(xiàn)不了,那時(shí)因?yàn)槟阈卵b了系統(tǒng)或者從未瀏覽過因特網(wǎng),也或者你的瀏覽器禁用了cookie。否則該目錄下總會(huì)有點(diǎn)東西的。
通俗地講,瀏覽器用一個(gè)或多個(gè)限定的文件來支持Cookie。這些文件在使用Windows操作系統(tǒng)的機(jī)器上叫做Cookie文件,在Macintosh 機(jī)器上叫做magic Cookie 文件,這些文件被網(wǎng)站用來在上面存儲(chǔ)Cookie數(shù)據(jù)。網(wǎng)站可以在這些Cookie文件中插入信息,這樣對(duì)有些網(wǎng)絡(luò)用戶就有些副作用。有些用戶認(rèn)為這造成了對(duì)個(gè)人隱私的侵犯,更糟的是,有些人認(rèn)為Cookie是對(duì)個(gè)人空間的侵占,而且會(huì)對(duì)用戶的計(jì)算機(jī)帶來安全性的危害。
目前有些Cookie是臨時(shí)的,另一些則是持續(xù)的。臨時(shí)的Cookie只在瀏覽器上保存一段規(guī)定的時(shí)間,一旦超過規(guī)定的時(shí)間該Cookie就會(huì)被系統(tǒng)清除。例如在PHP中Cookie被用來跟蹤用戶進(jìn)程直到用戶離開網(wǎng)站。持續(xù)的Cookie則保存在用戶的Cookie文件中,下一次用戶返回時(shí),仍然可以對(duì)它進(jìn)行調(diào)用。
在Cookie文件中保存Cookie,一些用戶會(huì)過分地認(rèn)為這將帶來很大的問題。主要是有些用戶擔(dān)心Cookie會(huì)跟蹤用戶網(wǎng)上沖浪的習(xí)慣,譬如用戶喜愛到那些類型的站點(diǎn)、愛從事些什么活動(dòng)等。害怕這種個(gè)人信息一旦落入一些別有用心的家伙手中,那么個(gè)人也就可能成為一大堆廣告垃圾的對(duì)象,甚至遭到意外的損害。不過,這種擔(dān)心壓根兒不會(huì)發(fā)生,因?yàn)榫W(wǎng)站以外的用戶是無法跨過網(wǎng)站來獲得Cookie信息的。所以想以這種目的來應(yīng)用Cookie是不可能的。不過,由于一些用戶錯(cuò)誤的理解以及“以訛傳訛”,一些瀏覽器開發(fā)商別無選擇,只好作出相適的響應(yīng)(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie的選項(xiàng))。個(gè)人認(rèn)為,無風(fēng)不起浪,如果網(wǎng)站程序員沒有嚴(yán)謹(jǐn)思路的話,cookie確實(shí)也存在些許安全問題,不過這些瑕疵并不足以掩蓋cookie的優(yōu)秀品質(zhì),大多數(shù)人還是非常樂意使用它的。
對(duì)Cookie技術(shù)期待了這么久的結(jié)果是,迫使許多瀏覽器開發(fā)商在它們的瀏覽器中提供了對(duì)Cookie的靈活性控制功能。例如,目前的兩大主流瀏覽器 Netscape Navigator 和 Internet Explorer是這樣處理Cookie的:Netscape Navigator4.0不但可以接受Cookie進(jìn)行警告,而且還可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽 Cookie,但在Internet Explorer4.0中就只能進(jìn)行接受警告而沒有提供屏蔽選項(xiàng),不過在Internet Explorer4.0之后的更新版本中又加入了屏蔽Cookie的功能選項(xiàng)。
此外,很多最新的技術(shù)甚至已經(jīng)可以在不能屏蔽Cookie的瀏覽器上進(jìn)行Cookie的屏蔽了。例如,可以通過將Cookie文件設(shè)置成不同的類型來限制 Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的話,肯定會(huì)因此拒絕許多的站點(diǎn)頁面。因?yàn)楫?dāng)今已經(jīng)有許多Web站點(diǎn)開發(fā)人員愛上了Cookie技術(shù)的強(qiáng)大功能,例如Session對(duì)象的使用就離不開Cookie的支持。
2、Cookie工作原理?
當(dāng)客戶訪問某個(gè)基于PHP技術(shù)的網(wǎng)站時(shí),在PHP中可以使用setcookie函數(shù)生成一個(gè)cookie,系統(tǒng)經(jīng)處理把這個(gè)cookie發(fā)送到客戶端并保存在C:\Documents and Settings\用戶名\Cookies目錄下。cookie是 HTTP標(biāo)頭的一部分, 因此setcookie函數(shù)必須在任何內(nèi)容送到瀏覽器之前調(diào)用。這種限制與header()函數(shù)一樣(如需了解head()函數(shù),請(qǐng)自行查閱)。當(dāng)客戶再次訪問該網(wǎng)站時(shí),瀏覽器會(huì)自動(dòng)把C:\Documents and Settings\用戶名\Cookies目錄下與該站點(diǎn)對(duì)應(yīng)的cookie發(fā)送到服務(wù)器,服務(wù)器則把從客戶端傳來的cookie將自動(dòng)地轉(zhuǎn)化成一個(gè) PHP變量。在PHP5中,客戶端發(fā)來的cookie將被轉(zhuǎn)換成全局變量。你可以通過$_COOKIE[‘xxx’]讀取。
盡管今天仍有一些網(wǎng)絡(luò)用戶對(duì)于Cookie的爭(zhēng)論樂此不倦,但是對(duì)于絕大多數(shù)的網(wǎng)絡(luò)用戶來說還是傾向于接受Cookie的。因此,我們盡可以放心地使用Cookie技術(shù)來開發(fā)我們的WEB頁面。
3、Cookie常見函數(shù)
● SetCookie 函數(shù)創(chuàng)建了一個(gè)Cookie,并且把它附加在HTTP頭的后面。必須注意的一點(diǎn)是:Cookie是HTTP協(xié)議頭的一部分,用于瀏覽器和服務(wù)器之間傳遞信息,所以必須在任何屬于HTML文件本身的內(nèi)容輸出之前調(diào)用SetCookie函數(shù),調(diào)用該函數(shù)前即使有空格、空白行都不行。如果setCookie()認(rèn)了第二,就沒有哪個(gè)元素敢認(rèn)第一。使用setcookie()函數(shù)的前提是客戶瀏覽器支持cookie,如果客戶將之禁用的話,setcookie()也就英雄無用武之地了。
int SetCookie(string name, string value, int expire, string path, string domain, int secure,bool httponly);
參數(shù)說明:
name;設(shè)置cookie變量的名稱。
value;設(shè)置cookie的值。
expire;設(shè)置cookie過期時(shí)間。如果要把cookie保存為瀏覽器進(jìn)程,即瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0。 Eg:setcookie(“name”,”value”,0)。該參數(shù)不設(shè)置的話,關(guān)閉瀏覽器也能結(jié)束一個(gè)cookie。
path:表示web服務(wù)器上的目錄,默認(rèn)為被調(diào)用頁面所在目錄. 這里還有一點(diǎn)要說明的,比如你的站點(diǎn)有幾個(gè)不同的目錄(比如一個(gè)購物目錄,一個(gè)論壇目錄),那么如果只用不帶路徑的Cookie的話,在一個(gè)目錄下的頁面里設(shè)的Cookie在另一個(gè)目錄的頁面里是看不到的,也就是說,Cookie是面向路徑的。實(shí)際上,即使沒有指定路徑,WEB服務(wù)器會(huì)自動(dòng)傳遞當(dāng)前的路徑給瀏覽器的,指定路徑會(huì)強(qiáng)制服務(wù)器使用設(shè)置的路徑。解決這個(gè)問題的辦法是在調(diào)用 SetCookie時(shí)加上路徑和域名,域名的格式可以是“http://www.phpuser.com/”,也可是“.phpuser.com”。 SetCookie函數(shù)里表示value的部分,在傳遞時(shí)會(huì)自動(dòng)被encode,也就是說,如果value的值是“test value”在傳遞時(shí)就變成了“test%20value”,跟URL的方法一樣。當(dāng)然,對(duì)于程序來說這是透明的,因?yàn)樵赑HP接收Cookie的值時(shí)會(huì)自動(dòng)將其decode。
domain:cookie可以使用的域名,默認(rèn)為被調(diào)用頁面的域名。這個(gè)域名必須包含兩個(gè)".",所以如果你指定你的頂級(jí)域名,你必須用 ".mydomain.com" 。設(shè)定域名后,必須采用該域名訪問網(wǎng)站cookie才有效。如果你使用多個(gè)域名訪問該頁,那么這個(gè)地方可以為空或者訪問這個(gè)cookie的域名都是一個(gè)域下面的。
secure:如果設(shè)為"1",表示cookie只能被用戶的瀏覽器認(rèn)為是安全的服務(wù)器所記住。
除了name之外所有的參數(shù)都是可選的。value,path,domain三個(gè)參數(shù)可以用空字符串""代換,表示沒有設(shè)置;expire 和 secure兩個(gè)參數(shù)是數(shù)值型的,可以用0表示。expire參數(shù)是一個(gè)標(biāo)準(zhǔn)的Unix時(shí)間標(biāo)記,可以用time()或mktime()函數(shù)取得,以秒為單位。secure參數(shù)表示這個(gè)Cookie是否通過加密的HTTPS協(xié)議在網(wǎng)絡(luò)上傳輸。
httponly:如果設(shè)為1,則表示cookie只能被http協(xié)議所使用,任何腳本語言,比如javascrīpt是不能獲取PHP所創(chuàng)建的 cookie的,這就有效削弱了來自XSS的攻擊。(注意了:這是PHP5才有的選項(xiàng),咱也沒有用過。看了官方手冊(cè)嘗試著翻譯的,如有疑問,請(qǐng)參考官方手冊(cè)。)
當(dāng)前設(shè)置的Cookie不是立即生效的,而是要等到下一個(gè)頁面或刷新后才能看到.這是由于在設(shè)置的這個(gè)頁面里Cookie由服務(wù)器傳遞給客戶瀏覽器,在下一個(gè)頁面或刷新后瀏覽器才能把Cookie從客戶的機(jī)器里取出傳回服務(wù)器的原因。
小道消息
Cookie應(yīng)用案例:
●創(chuàng)建一個(gè)cookie:
SetCookie()
●創(chuàng)建cookie數(shù)組:
其一:
SetCookie("CookieArray[]", "Value 1");
SetCookie("CookieArray[]", "Value 2");
其二:
SetCookie("CookieArray[0]", "Value 1");
SetCookie("CookieArray[1]", "Value 2");
● 接收和處理Cookie
PHP對(duì)Cookie的接收和處理的支持非常好,是完全自動(dòng)的,跟GET,POST變量的原則一樣,特別簡(jiǎn)單。
比如設(shè)置一個(gè)名為MyCookier的Cookie,PHP會(huì)自動(dòng)從WEB服務(wù)器接收的HTTP頭里把它分析出來,并形成一個(gè)可直接使用的全局變量,名為$_COOKIE[‘MyCookie’],這個(gè)變量的值就是Cookie的值。數(shù)組同樣適用。
分別舉例如下:(假設(shè)這些都在以前的頁面里設(shè)置過了,并且仍然有效)
echo $_COOKIE[‘MyCookie’];
取出cookie數(shù)組的例子:
<?php
// 創(chuàng)建一個(gè)cookie數(shù)組
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// 頁面刷新之后,用foreach提取cookie數(shù)組。
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
echo "$name : $value <br />\n";
}
}
?>
就這么簡(jiǎn)單。
● 刪除Cookie
要?jiǎng)h除一個(gè)已經(jīng)存在的Cookie,有兩個(gè)辦法:
1、調(diào)用只帶有name參數(shù)的SetCookie,那么名為這個(gè)name的Cookie將被從關(guān)系戶機(jī)上刪掉;
setcookie(“MyCookie”); //刪除MyCookie。
2、設(shè)置Cookie的失效時(shí)間為time()或time()-1//time()減多少?zèng)]有關(guān)系啦,只要是過期時(shí)間就行//,那么這個(gè)Cookie在這個(gè)頁面的瀏覽完之后就被刪除了(其實(shí)是失效了)。例如:
setcookie(“MyCookie”,”Value”,time()-1); //刪除MyCookie。
要注意的是,當(dāng)一個(gè)Cookie被刪除時(shí),它的值在當(dāng)前頁在仍然有效的。
如果要把cookie保存為瀏覽器進(jìn)程,即瀏覽器關(guān)閉后就失效。那么可以直接把expiretime設(shè)為0。例如:setcookie(“name”,”value”,0)。該參數(shù)不設(shè)置的話,關(guān)閉瀏覽器也能結(jié)束一個(gè)cookie。
Cookie注意事項(xiàng)
1、SetCookie()之前不能有任何html輸出,它認(rèn)了第二,沒有哪個(gè)元素敢認(rèn)第一,就是空格,空白行都不行。
2、SetCookie()后,你在當(dāng)前頁調(diào)用echo $_COOKIE["name"]不會(huì)有輸出。必須刷新或到下一個(gè)頁面才可以看到Cookie值。原因很簡(jiǎn)單。SetCookie()執(zhí)行之后,往客戶端發(fā)送一個(gè)cookie,你不刷新或?yàn)g覽下一個(gè)頁面,客戶端怎么把cookie給你送回去呀?瀏覽器創(chuàng)建了一個(gè)Cookie后,對(duì)于每一個(gè)針對(duì)該網(wǎng)站的請(qǐng)求,都會(huì)在Header中帶著這個(gè)Cookie;不過,對(duì)于其他網(wǎng)站的請(qǐng)求Cookie是絕對(duì)不會(huì)跟著發(fā)送的。而且瀏覽器會(huì)這樣一直發(fā)送,直到 Cookie過期為止。
3、使用Cookie的限制。一個(gè)瀏覽器能創(chuàng)建的Cookie數(shù)量最多為30個(gè),并且每個(gè)不能超過4KB,每個(gè)WEB站點(diǎn)能設(shè)置的Cookie總數(shù)不能超過20個(gè)。 (這是書上看到的說法,應(yīng)該是一個(gè)web站點(diǎn)能創(chuàng)建的Cookie不能超過30個(gè)吧,要不然,我機(jī)子里的cookie少說也上百了,請(qǐng)達(dá)人指教!)
4、Cookie是保存在客戶端的,用戶禁用了Cookie,你的Cookie自然也就沒作用啦!現(xiàn)在的瀏覽器,每當(dāng)咱發(fā)送一個(gè)Cookie給客戶端,他就像看門狗一樣給攔截住了,并詢問用戶是否允許Cookie進(jìn)門。天,用戶又不是專家,有幾個(gè)人知道啥叫Cookie呀?搞不好都當(dāng)病毒拒之門外了。
<?php
$im = imagecreatetruecolor(80,23);//創(chuàng)建畫布
$bgcolor = imagecolorallocate($im,220,230,230);//調(diào)制背景色
$bordercolor = imagecolorallocate($im,0,0,255);//調(diào)制邊框顏色
$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);//產(chǎn)生隨機(jī)數(shù)0-2,根據(jù)數(shù)值的不同決定產(chǎn)生的是數(shù)字|小寫|大寫
switch($num_case){
case 0:$num = rand(48,57);break;//數(shù)字
case 1:$num = rand(65,90);break;//大寫
default:$num = rand(97,122);//小寫
}
$text[$i] = sprintf("%c",$num);//將隨機(jī)產(chǎn)生的ASCII碼轉(zhuǎn)換為相應(yīng)的字符
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");//設(shè)置輸出類型
imagepng($im);//輸出圖像
imagedestroy($im);
<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>計(jì)算器</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>
1、FORM標(biāo)簽enctype屬性
表單中enctype="multipart/form-data"的意思,是設(shè)置表單的MIME編碼。默認(rèn)情況,
這個(gè)編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;
只有使用了multipart/form-data,才能完整的傳遞文件數(shù)據(jù)
<form enctype="multipart/form-data" method="post" name="upform">
input標(biāo)簽 type 屬性中的 "file"
<input name="upfile" type="file">
2、$_FILES 系統(tǒng)函數(shù)
$_FILES['myFile']['name'] 客戶端文件的原名稱。
$_FILES['myFile']['type'] 文件的 MIME 類型,例如"image/gif"。
$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節(jié)。
$_FILES['myFile']['tmp_name'] 儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。
$_FILES['myFile']['error'] 該文件上傳相關(guān)的錯(cuò)誤代碼。
3、move_uploaded_file函數(shù)
上傳后移動(dòng)文件到目標(biāo)位置的函數(shù)
move_uploaded_file(臨時(shí)文件,目標(biāo)位置和文件名);
4、is_uploaded_file 函數(shù)
判斷上傳MIME類型的文件函數(shù)
關(guān)于用PHPExcel從數(shù)據(jù)庫表導(dǎo)出到Excel表在網(wǎng)上查了好多關(guān)于這方面的資料,今天終于把這個(gè)問題解決了。我個(gè)人感覺 PHPExcel還是很好用的,首先到官方網(wǎng)站http://phpexcel.codeplex.com/下載最近版本的PHPExcel,解壓后會(huì)發(fā)現(xiàn)里面有class、
Documentation、Tests三個(gè)文件夾和三個(gè)txt的日志文件,主要用到的是Class文件,而Tests主要是一些demo示例下面來介紹一下PHPExcel的簡(jiǎn)單用法,這里是與數(shù)據(jù)庫連接的:首先,要包含PHPExcel.phprequire_once 'Classes/PHPExcel.php'; //路徑根據(jù)自己實(shí)際項(xiàng)目的路徑進(jìn)行設(shè)置
$objPHPExcel = new PHPExcel(); //創(chuàng)建PHPExcel實(shí)例
//下面是對(duì)mysql數(shù)據(jù)庫的連接
$conn = mysql_connect("localhost","root","") or die("數(shù)據(jù)庫連接失敗!"); mysql_select_db("image",$conn); //連接數(shù)據(jù)庫
mysql_query("set names 'GBK'"); //轉(zhuǎn)換字符編碼
$sql = mysql_query("select * from test"); //查詢sql語句
/*--------------設(shè)置表頭信息------------------*/$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'ID編號(hào)')->setCellValue('B1', '月份')->setCellValue('C1', '產(chǎn)品一')->setCellValue('D1', '產(chǎn)品二')->setCellValue('E1', '產(chǎn)品三');/*--------------開始從數(shù)據(jù)庫提取信息插入Excel表中------------------*/$i=2; //定義一個(gè)i變量,目的是在循環(huán)輸出數(shù)據(jù)是控制行數(shù)
while($rs=mysql_fetch_array($sql)){$rm = iconv("GB2312","UTF-8",$rs[1]); //對(duì)字符進(jìn)行編碼將數(shù)據(jù)庫里GB2312的中文字符轉(zhuǎn)換成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++;}/*--------------下面是設(shè)置其他信息------------------*/$objPHPExcel->getActiveSheet()->setTitle('Example1'); //設(shè)置sheet的名稱
$objPHPExcel->setActiveSheetIndex(0); //設(shè)置sheet的起始位置
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通過PHPExcel_IOFactory的寫函數(shù)將上面數(shù)據(jù)寫出來
$objWriter->save(str_replace('.php', '.xls', __FILE__)); //設(shè)置以什么格式保存,及保存位置
至此,一個(gè)完整的將mysql數(shù)據(jù)庫里的信息用PHP導(dǎo)出Excel實(shí)例做完,可能在運(yùn)行的時(shí)候會(huì)發(fā)生一些問題,如中文亂碼,表頭可能顯示不出來,這是因?yàn)槲募幋a格式的原因,將文件編碼設(shè)置成UTF-8就行了,在此我就不做太多解釋了。二: PHPExcel從excel表導(dǎo)入到mysql數(shù)據(jù)庫 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("導(dǎo)入數(shù)據(jù)庫成功!",'__APP__/Lawerinfo/index');
}else{
$this->error("導(dǎo)入數(shù)據(jù)庫失敗!","__APP__/Lawerinfo/index");
}
}
}
}
我的學(xué)歷不高,不過就是一個(gè)路上比比皆是的專科生而已,再加上家中沒
有恒產(chǎn),所以很早就出脫離學(xué)生單純的生活,到處在為三餐溫飽打拼。
在這十幾年的工作歷程中,只有在從事業(yè)務(wù)行銷工作時(shí)讓我的年收入達(dá)到
了千萬,不僅有了進(jìn)口豪華轎車,還擁有了獨(dú)棟透天別墅,而當(dāng)時(shí)我也不
過才三十歲左右。
今天在版面上看到有人批評(píng)業(yè)務(wù)工作的種種不是,其實(shí)我有著深刻的親身
經(jīng)歷,當(dāng)各位業(yè)務(wù)急先鋒在市場(chǎng)上真槍實(shí)彈搏斗時(shí),低聲下氣根本就是一
種太膚淺的形容詞,請(qǐng)問有人被狗追過嗎?有人被人家用掃把掃出來過嗎
?如果沒有,那我認(rèn)為應(yīng)該還需要再加強(qiáng)磨練一番。
我認(rèn)為干業(yè)務(wù)的絕對(duì)不需要跟人低聲下氣,除非你愿意跟人低聲下氣;業(yè)
務(wù)工作是一個(gè)正正當(dāng)當(dāng)?shù)穆殬I(yè),名片上印有響當(dāng)當(dāng)?shù)念^銜,不偷不搶沒什
么好丟臉的;沒有業(yè)務(wù)的招攬,再好的產(chǎn)品也出不了工廠大門;業(yè)務(wù)人員
的心中只有一句座右銘:成王敗寇;業(yè)務(wù)員的人生是由他自己所定義的,
要住什么樣的房子、開什么樣的車子、等等,自己可以掌握,連老板都無
法為你定奪;業(yè)務(wù)員的養(yǎng)成不需要專門的科系來培訓(xùn),但是的確需要一點(diǎn)
天生的傻勁。
我認(rèn)為任何人都應(yīng)該學(xué)習(xí)業(yè)務(wù)行銷的技巧,因?yàn)槟惚仨毑粩嗟赝其N你的理
念讓別人接受,哪怕你是文書工作人員、程序設(shè)計(jì)師、美工、總機(jī)小姐、
乃至于董事長,我們每天都在推銷我們的想法給別人,就像我老婆接受了
我的求婚推銷一樣,其實(shí)一點(diǎn)都不難,也沒什么了不起,我們每天都在作
,祇是沒有察覺而已。
所以說,千萬不要再說不喜歡從事推銷、我討厭干業(yè)務(wù),那是騙人的,事
實(shí)上我們每天都在作,就像我現(xiàn)在打字的這一篇文章一樣,我在將我的想
法推銷給你,你的反應(yīng)只有四種:Yes、No、Yes But、No But,如此而已,
不要太排斥,因?yàn)槲覐膩矶疾徽J(rèn)為全世界的人會(huì)百分之百相信我,連上帝
都也有人反對(duì),不是嗎?
一些社會(huì)應(yīng)對(duì)進(jìn)退技巧或人格特質(zhì)的確是可以被后天塑造出來的,這一點(diǎn)
我持肯定態(tài)度,因?yàn)槲沂且粋€(gè)極為渴望安靜的人,我不喜歡一天到晚出門
奔波,常常喜歡自己靜靜地窩在一個(gè)小天地里作我感興趣的事情,但是我
卻被我以前的公司訓(xùn)練成超級(jí)業(yè)務(wù)高手,打破公司所有的歷史紀(jì)錄,這是
如何做到的呢?說穿了不稀奇,已經(jīng)有人說過了, 什么卡內(nèi)基、火鳳凰.
....等等的,它的確有效,至少在我以及我周遭的同事身上發(fā)揮了作
用,而且屢試不爽,因?yàn)槲乙灿迷谖业牟繉偕砩希娴男U有效的。
但是我還是不快樂,因?yàn)槲乙呀?jīng)失去了自我價(jià)值,而追尋自我價(jià)值這件事
對(duì)于我而言又是一件很重要的人生大事,但是我還是去做了,原因很簡(jiǎn)單
,因?yàn)槲胰⑵奚樱總€(gè)月付不完的帳單逼得我必須去做一大堆我不喜歡
的事情,甚至連我老婆也是一樣,沒什么好抱怨的,因?yàn)檫@就是人生,一
個(gè)非常真實(shí)在你我身邊發(fā)生的事情,我在這個(gè)版面上看到好多人說如果景
氣好轉(zhuǎn)的話,他就要跳槽到比較具規(guī)模的公司去上班,唉,我就來說明一
下企業(yè)主的想法吧。
現(xiàn)在的我早已是一位公司負(fù)責(zé)人,我經(jīng)常要陪客戶應(yīng)酬,推銷我的產(chǎn)品及
服務(wù),每個(gè)月要張羅員工薪資,遇到員工身體有病痛或是心情不佳,我還
得小心伺候,免得他一時(shí)之間突然離職,日常作業(yè)會(huì)陷入停頓,這一陣子
實(shí)在是很不景氣,客戶的預(yù)算大幅縮水不說,連決行的時(shí)程都一再往后延
,造成業(yè)務(wù)及生產(chǎn)單位極大的困擾。
然后一下子是下大雨,一下子淹水,搞得我都不知道該怎么辦,在我的立
場(chǎng)來說(我要特別強(qiáng)調(diào)這是我作為老板的立場(chǎng)),每放一天假我就損失多
少錢,每泡掉一臺(tái)計(jì)算機(jī)我就損失多錢,錢、錢、錢、錢、錢、錢、錢,通
通都要錢,我常在想說萬一不幸有一天我垮臺(tái)了,有多少員工會(huì)替這家公
司或這個(gè)事業(yè)來著想?
當(dāng)景氣還不錯(cuò)的時(shí)候,我得用很多花招來吸引這些所謂的人才,其中股票
選擇權(quán)是我最反感的一件事情,我常想為什么我用我多年來辛苦存下來的
錢創(chuàng)辦一個(gè)事業(yè),而這些員工卻要輕易跟我分享我辛苦的成果?
當(dāng)景氣變差的時(shí)候,就像是現(xiàn)在,有多少員工會(huì)念在當(dāng)初曾經(jīng)一起奮斗的
情誼呢?不會(huì),因?yàn)槲矣肋h(yuǎn)叫老板,你永遠(yuǎn)叫員工,這是千古以來無法保
持和諧的關(guān)系。
用比較感性的角度來看,與員工們朝夕相處共同奮斗,所以日久生情算大
家一份股份,這倒也無可厚非,但是剛面試就急著問說這家公司福利政策
如何?薪資待遇如何?的這些人,通常我都會(huì)請(qǐng)他們自己創(chuàng)業(yè)比較好,因
為這些問題永遠(yuǎn)沒有辦法找到平衡點(diǎn)。
如果用比較理性的角度來看,既然這個(gè)現(xiàn)實(shí)社會(huì)都是要用錢才能生存得下
去,那么廢話就不要說太多,直接了當(dāng)說明工作內(nèi)容為何,期限到了的時(shí)
候該產(chǎn)出多少產(chǎn)品或是業(yè)績(jī),那這個(gè)樣子的情況之下薪資及福利為何,我
想如此還比較節(jié)省彼此雙方的時(shí)間。情?那就別鬧了!
這些話聽起來很刺耳,幾乎所有的求職者聽完一定會(huì)破口大罵,但是我只
能說這個(gè)就是絕大多數(shù)企業(yè)主的想法,這些基本上都是根據(jù)一個(gè)簡(jiǎn)單不過
的邏輯:「我一樣每個(gè)月要花這么多錢來聘請(qǐng)員工作事情,我為什么沒有
權(quán)利去選擇那些已經(jīng)有技巧、有經(jīng)驗(yàn),甚至于是有客戶在手上的新人呢?
如果有一天這位員工表現(xiàn)突出,那么我就酌予提拔或獎(jiǎng)勵(lì),再過一陣子,
當(dāng)這位員工表現(xiàn)大不如前,或是突然出現(xiàn)了薪資待遇更便宜的高手來加入
公司,那我實(shí)在沒有理由還要留著這位坐領(lǐng)高薪及福利的前朝重臣,卻拒
絕掉一位這么價(jià)廉物美的新人。這位前朝重臣的豐功偉業(yè)呢?別傻了,老
板會(huì)回你一句話:我當(dāng)初不是已經(jīng)給了你相對(duì)的報(bào)酬嗎?」
最剛開始的時(shí)候,臺(tái)商找去大陸上班的臺(tái)籍干部差不多都有三倍于臺(tái)灣行
情的薪資,到了今天差不多已經(jīng)掉到1.2倍而已了。臺(tái)灣工廠的女工大
約一個(gè)月可以領(lǐng)個(gè)1.5~2萬元,大陸工廠相同的工作卻只需要600
~1000元人民幣,但是生產(chǎn)出來的產(chǎn)品品質(zhì)卻都差不多。請(qǐng)問如果你
是老板,你會(huì)作何決定?當(dāng)貿(mào)易商持續(xù)給你壓力要求你降價(jià),不然就要把
訂單轉(zhuǎn)給你認(rèn)識(shí)的同業(yè)時(shí),你的心情會(huì)好才奇怪!
各位可以不相信我所說的話,但是務(wù)必去查證一下我所講的,如果沒去過
大陸,那么趁失業(yè)中的空檔前進(jìn)一下東莞或是廣州(大約只要準(zhǔn)備三萬元
就很夠用了)。隨便去一家工廠門口,從早上七點(diǎn)一直到下午六點(diǎn),你會(huì)
發(fā)現(xiàn)到門口都有人排隊(duì)想爭(zhēng)取應(yīng)征的機(jī)會(huì),甚至賄賂門口警衛(wèi),為的是希
望獲得一份300元起薪的現(xiàn)場(chǎng)操作員工作。
300元人民幣大約等于1300元臺(tái)幣,當(dāng)我從香港搭機(jī)回臺(tái)灣,在機(jī)
場(chǎng)買了一瓶香水給我老婆,結(jié)帳時(shí)我才發(fā)現(xiàn)我花掉了兩個(gè)大陸工廠新人的
一個(gè)月薪資所得,結(jié)果害得我整個(gè)人在飛機(jī)上心情都好不起來。
其實(shí)我蠻贊成神奇獅子文中的一些說法,在上海找一個(gè)什么工具軟件都很
厲害的美工,一個(gè)月最高也只要4000元人民幣(這已經(jīng)是很高很高了
),比照到臺(tái)灣的行情,沒有7~8萬,你大概別想請(qǐng)得到人。
前一陣子我有一些朋友應(yīng)聘到大陸內(nèi)地,而且是到大陸人開設(shè)的公司上班
,要我?guī)退麗貉a(bǔ)一下大陸文化,我才驚然發(fā)現(xiàn)我也快要被淘汰了,因?yàn)槲?span lang="EN-US">
根本無法跟計(jì)算機(jī)溝通:中文輸入法的問題!
先前我都沒感覺到,那是因?yàn)槲叶际堑脚_(tái)商公司去交貨,碰到的計(jì)算機(jī)青一
色都是繁體中文的操作系統(tǒng),這難不倒我,而且大陸員工都已經(jīng)學(xué)會(huì)了倉
頡或是其它的輸入法。但是大陸人開設(shè)的公司就只有簡(jiǎn)體中文的操作系統(tǒng)
了,這個(gè)時(shí)候換做是你,怎么辦?
我要講的意思是說接下來的二三十年,我們這一代或是下一代到底要跟誰
競(jìng)爭(zhēng)?跟多少人競(jìng)爭(zhēng)?我已經(jīng)很慎重地在思考這個(gè)問題,各位想過沒有?
我去了大陸這樣子走馬看花的逛了一下子,就覺得快活不下去了,各位的
危機(jī)意識(shí)到底在哪里?
大陸員工其實(shí)是相當(dāng)糟糕的,幾乎完全沒有主動(dòng)積極進(jìn)取的精神,我看了
這么多公司工廠,只讓我看到一個(gè)人會(huì)自己動(dòng)腦筋想解決方案,這個(gè)就是
我們目前臺(tái)灣員工的優(yōu)勢(shì)所在,但是能維持多久呢?
侏羅紀(jì)公園中很清晰的一句話:生命自會(huì)尋找出路!只要我們腦袋里確實(shí)
有料,其實(shí)企業(yè)老板是不太看學(xué)歷的,有朝一日他必會(huì)回饋相當(dāng)?shù)膱?bào)酬給
你。但如果你讓老板覺得不放心你的時(shí)候,就算是需要作出違法的行為,
他還是會(huì)毅然下決心請(qǐng)你走路的。呆伯特這本書其實(shí)害了好多年輕人,這
是我的真實(shí)感覺。
最后談到經(jīng)驗(yàn)。經(jīng)驗(yàn)是一種非常寶貴的人類資產(chǎn),我絕對(duì)不會(huì)錄用一個(gè)剛
出校門的年輕人,因?yàn)槲以?jīng)吃足了苦頭,大學(xué)或大專資管資工科班畢業(yè)
,竟然還要我花費(fèi)十幾萬元送去接受半個(gè)月的專業(yè)講習(xí)訓(xùn)練,結(jié)訓(xùn)回來后
叫他們集思廣益改寫一個(gè)javascript,竟然在搞了一個(gè)星期之后跟我說這是
不可能寫得出來的東西,然后在二個(gè)月之后的發(fā)薪日,因?yàn)橄愀蹤C(jī)場(chǎng)罷工
我趕不回來(公司大小章剛好帶在身上),以致晚了兩天發(fā)薪水,這些新
人竟然就聯(lián)合起來指著我說這是一家騙人的公司,當(dāng)時(shí)那種情況,你認(rèn)為
我的感覺會(huì)好嗎?
后來我請(qǐng)一位朋友的小孩,幫我看一下系統(tǒng)分析紀(jì)錄, 不到三個(gè)小時(shí)程序
就已經(jīng)寄到我的電子郵件信箱了。這兩者之間的差別在哪里 ?在經(jīng)驗(yàn)!
這位朋友的小孩平時(shí)就在幫人家寫案子,收費(fèi)非常便宜,因?yàn)樗堰@件事
情當(dāng)成是在作作業(yè),練習(xí)練習(xí),以便為將來出社會(huì)時(shí)找工作之用;而這些
花了大把鈔票的國立大學(xué)大專同學(xué),心中老是以為自己是全世界的重心,
一看到公司只有四十幾坪,人沒幾個(gè),聽也沒聽說過,于是就....!
所以我現(xiàn)在寧愿用極高的薪資,來聘請(qǐng)一位二專畢業(yè),但是擁有相當(dāng)豐富
經(jīng)驗(yàn)的人來幫我作事情,那些連接個(gè)電話留個(gè)信息在別人桌上的基本技巧
都不懂的人,我是絕對(duì)敬而遠(yuǎn)之的。
人類只是一種智商比較高級(jí)一點(diǎn)的動(dòng)物,如果你常看Discovery或是國家地
理頻道的話,你就會(huì)發(fā)現(xiàn)老年的動(dòng)物最可憐,因?yàn)橛植荒茚鳙C,又不能保
衛(wèi)家園,群體行動(dòng)時(shí)還經(jīng)常拖泥帶水,影響整個(gè)行程進(jìn)度,這是我們所謂
的動(dòng)物界。其實(shí)我們?nèi)祟愐埠貌坏侥睦锶ィ敹嗯粡埖赖碌钠ぴ谏砩?/span>
,當(dāng)我們走進(jìn)浴室衣服一脫掉,哪有什么不一樣,眼、耳、鼻、口、四肢
、生殖器官...,差不多的啦!但是又為什么會(huì)出現(xiàn)圣人、先賢、總統(tǒng)
呢?因?yàn)槟X袋里的東西不一樣。
我們一輩子活在世上,無非就是要想盡辦法來創(chuàng)造出被人家利用的價(jià)值。
如果我每天只被老板利用一個(gè)小時(shí),但是老板沒有我這一個(gè)小時(shí)的幫忙,
他就會(huì)賺不到錢,而且又找不到什么替代方案的話,那么我這一個(gè)小時(shí)就
會(huì)相當(dāng)值錢,比如說我擔(dān)任這家公司的技術(shù)總顧問。
反之如果我的被利用價(jià)值相當(dāng)?shù)停S便一個(gè)人或一套硬設(shè)備就可以取代
掉我,那么就算是我花了十幾個(gè)小時(shí),累得跟狗一樣,老板還是會(huì)隨時(shí)請(qǐng)
我走路,因?yàn)槲覜]有被利用的價(jià)值,比如說我客戶的一些總機(jī)小姐。
常常有很久沒聯(lián)絡(luò)的朋友或客戶突然打電話給我,霹靂啪啦的問了一大堆
問題,我也幾哩呱啦地回答他們,生意就上門了,因?yàn)槲矣幸恍┨囟ǖ挠?/span>
象停留在他們的腦海中,凡是他們遇到這一方面的問題時(shí),通常都會(huì)先來
問我,他們知道像這種事情找我準(zhǔn)沒錯(cuò),這就是我個(gè)人獨(dú)具的被利用價(jià)值
。 你的被利用價(jià)值在哪里?有多少?能持續(xù)產(chǎn)生新的價(jià)值嗎?跟得上時(shí)代脈
動(dòng)嗎?
我想這才是老板最想了解的,其它的,我認(rèn)為都不是重點(diǎn)。
愿共勉之!祝大家都能找到理想的工作! 主管欣賞的人 在職場(chǎng)上,苦勞不會(huì)成功,其實(shí)企業(yè)最欣賞的人才,是具有高度common sense的人,換句話說,就是要work hard,work smart,work happy,特質(zhì)的A級(jí)人才。 努力工作≠績(jī)效 是不是最努力工作的人就一定受到主管賞識(shí)呢?
有三個(gè)檢視標(biāo)準(zhǔn)或許可以提供 大家做為一個(gè)參考:
Work Hard, Work Smart, Work Happy
你是不是很努力工作,但不快樂呢?這時(shí)或許可以檢核自己一下,工作的方式是不是夠smart?
在這裡跟大家分享一個(gè)故事,或許可以引發(fā)大家一些思考與想法。
小芬與小美畢業(yè)於某國立大學(xué)企管系,同時(shí)進(jìn)入一家中型企業(yè),擔(dān)任企劃專員的工作。小芬做事努力認(rèn)真、守分務(wù)實(shí),常常自動(dòng)留下來為公司加班,工作到很晚才下班。
小美呢?只見她每天嘻嘻哈哈,工作輕鬆又愉快,每天都會(huì)主動(dòng)去找主管聊天,給人一種跟主管感情很好的印象。
1年後,小美獲得主管升遷,委以重任,小芬則只獲得象徵性的加薪鼓勵(lì)。這讓小芬非常不平,認(rèn)為小美工作又沒自己認(rèn)真,只會(huì)逢迎拍主管馬屁,憑什麼考績(jī)反而比她好?而且還受到公司的重用。自己為公司付出許多,夙夜匪懈地工作,
反而落得一場(chǎng)空,於是遞了辭呈。
少了一根筋
就在小芬工作的最後一天,總經(jīng)理找小芬晤談。剛好中秋節(jié)快到了,公司正在考慮該買什麼中秋禮送給客戶。總經(jīng)理說,「小芬,可不可以請(qǐng)妳到南門巿場(chǎng)跑一趟,看看有沒有賣大閘蟹?」
小芬心裡很疑惑,不知道主管為什麼要她跑這一趟,因?yàn)檫@並不是她負(fù)責(zé)的工作啊!但她還是乖乖地依照主管的要求,搭計(jì)程車到南門巿場(chǎng)。過了20分鐘,小芬回到辦公室,向總經(jīng)理報(bào)告,「南門巿場(chǎng)有賣大閘蟹。」
總經(jīng)理接著問她,「南門巿場(chǎng)的大閘蟹怎麼賣?算斤?還是算隻?」小芬一臉茫然,無法回答。於是又跑了一趟南門巿場(chǎng),30分鐘後又回來報(bào)告,「南門巿場(chǎng)大閘蟹算隻賣,每隻350元。」
總經(jīng)理聽了之後,當(dāng)著小芬的面,把小美找了進(jìn)來,並吩咐小美,「麻煩妳到南門巿場(chǎng)去一趟,看看有沒有賣大閘蟹?」
小美馬上問總經(jīng)理,「請(qǐng)問大閘蟹是有什麼用途嗎?」
總經(jīng)理回答她,「中秋節(jié)快到了,打算送客戶大閘蟹做為中秋賀禮。」
小美立即出門。過了1個(gè)多小時(shí),小美回來了。
一進(jìn)門,就見她眉飛色舞地拎著兩隻大閘蟹。向總經(jīng)理報(bào)告,「南門巿場(chǎng)有兩家攤位賣大閘蟹。第一家的大閘蟹,每隻平均4兩重,每隻賣350元。第二家的大閘蟹,每隻平均6兩重,一隻550元。我建議,如果總經(jīng)理自家食用可以買4兩重的,肚白、背綠、金毛,看起來很新鮮。如果總經(jīng)理要送人,我建議買6兩重的,看起來比較有份量。我各買了一隻帶回來給總經(jīng)理參考。」
做事Smart有方法
聽完小美的報(bào)告之後,總經(jīng)理轉(zhuǎn)頭問小芬,「妳看出妳們之間有什麼不同了嗎?」小芬一副恍然大悟的神情,趕忙點(diǎn)頭表示她明白了!
總經(jīng)理向小芬進(jìn)一步說明,「一樣是去南門巿場(chǎng)看看有沒有賣大閘蟹,妳們蒐集回來的巿場(chǎng)情報(bào)與態(tài)度截然不同。小芬,妳很認(rèn)真沒有錯(cuò),但是妳並沒有思考這項(xiàng)任務(wù)的需求是什麼?只是一個(gè)口令一個(gè)動(dòng)作,得來來回回好幾趟才能把一件事情做好。而小美呢?不用我多交待,一次就把事情搞定,她不僅蒐集了完整的巿場(chǎng)情報(bào),甚至也提出建議與分析,協(xié)助我做為判斷的參考。」
苦勞不會(huì)成功
小芬聽了不禁自慚形穢,她最感慚愧的是,為何她與小美是最好的同學(xué),居然沒有學(xué)習(xí)小美的做事優(yōu)點(diǎn),暗地嫉妒她。同時(shí)她也很謝謝總經(jīng)理為她上了一堂寶貴的一課,點(diǎn)醒她的負(fù)面思維。
在職場(chǎng)上,苦勞不會(huì)成功,其實(shí)企業(yè)最欣賞的人才,是具有高度common sense的人,換句話說,就是要有work hard, work smart, work happy特質(zhì)的A級(jí)人才。這樣的人才能快速掌握主管的需求與期待,為公司開創(chuàng)更大的格局。
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.
快跑的未必能贏,力戰(zhàn)的未必得勝;
智慧的未必得糧食,明哲的未必得資財(cái),靈巧的未必得喜悅;
所臨到眾人的,是因?yàn)椤笗r(shí)間」與「機(jī)會(huì)」。
親愛的好友們!你們學(xué)到了嗎?
你我是不是只懂得做個(gè)『努力工作、認(rèn)真、守分務(wù)實(shí)』的人呢?
對(duì)于SQL的Join,在學(xué)習(xí)起來可能是比較亂的。我們知道,SQL的Join語法有很多inner的,有outer的,有l(wèi)eft的,有時(shí)候,對(duì)于Select出來的結(jié)果集是什么樣子有點(diǎn)不是很清楚。Coding Horror上有一篇文章,通過文氏圖 Venn diagrams 解釋了SQL的Join。我覺得清楚易懂,轉(zhuǎn)過來。
假設(shè)我們有兩張表。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
結(jié)果集 |
(TableA.) | (TableB.) |
id | name | id | name |
1 | Pirate | 2 | Pirate |
3 | Ninja | 4 | Ninja |

Inner join 產(chǎn)生的結(jié)果集中,是A和B的交集。
2.FULL [OUTER] JOIN
(1)
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
結(jié)果集 |
(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 產(chǎn)生A和B的并集。但是需要注意的是,對(duì)于沒有匹配的記錄,則會(huì)以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
結(jié)果集 |
(TableA.) | (TableB.) |
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |
null | null | 1 | Rutabaga |
null | null | 3 | Darth Vade |

產(chǎn)生A表和B表沒有交集的數(shù)據(jù)集。
3.LEFT [OUTER] JOIN
(1)
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
結(jié)果集 |
(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 產(chǎn)生表A的完全集,而B表中匹配的則有值,沒有匹配的則以null值取代。
(2)
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.nameWHERE TableB.id IS null
結(jié)果集 |
(TableA.) | (TableB.) |
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |

產(chǎn)生在A表中有而在B表中沒有的集合。
4.RIGHT [OUTER] JOIN
RIGHT OUTER JOIN 是后面的表為基礎(chǔ),與LEFT OUTER JOIN用法類似。這里不介紹了。
5.UNION 與 UNION ALL
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語句中的列的順序必須相同。UNION 只選取記錄,而UNION ALL會(huì)列出所有記錄。
(1)SELECT name FROM TableA UNION SELECT name FROM TableB
新結(jié)果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Darth Vade |
選取不同值
(2)SELECT name FROM TableA UNION ALL SELECT name FROM TableB
新結(jié)果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Pirate |
Darth Vade |
Ninja |
全部列出來
(3)注意:
SELECT * FROM TableA UNION SELECT * FROM TableB
新結(jié)果集 |
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 并不相同,不合并
還需要注冊(cè)的是我們還有一個(gè)是“交差集” cross join, 這種Join沒有辦法用文式圖表示,因?yàn)槠渚褪前驯鞟和表B的數(shù)據(jù)進(jìn)行一個(gè)N*M的組合,即笛卡爾積。表達(dá)式如下:SELECT * FROM TableA CROSS JOIN TableB
這個(gè)笛卡爾乘積會(huì)產(chǎn)生 4 x 4 = 16 條記錄,一般來說,我們很少用到這個(gè)語法。但是我們得小心,如果不是使用嵌套的select語句,一般系統(tǒng)都會(huì)產(chǎn)生笛卡爾乘積然再做過濾。這是對(duì)于性能來說是非常危險(xiǎn)的,尤其是表很大的時(shí)候。