#
一、什么是log4j
Log4j 是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。
二、日志簡介
日志指在程序中插入語句以提供調試信息。使用日志能夠監視程序的執行。例如,用戶利用日志可以獲得關于應用程序故障的完整信息。用戶可以將調試語句(如 System.out.println)插入到程序中以獲得詳細的調試信息。
三、項目中為什么要用log4j
大家在編程時經常不可避免地要使用到一些日志操作,比如開發階段的調試信息、運行時的日志記錄及審計。調查顯示,日志代碼占代碼總量的4%。通常大家可以簡單地使用System.out.println()語句輸出日志信息,但是往往會有一些判斷,比如:
if (someCondition)
{
System.out.println("some information.");
}
這些判斷造成正常的程序邏輯中混雜了大量的輸出語句。而在開發階段寫下的這些判斷僅為了調試的語句,在開發完成時需要查找并移除。部署運行后,尤其是在一些企業應用系統中,還經常需要進一步調試,這時就遇到了更大的麻煩。所以,我們需要一套完備的、靈活的、可配置的日志工具log4J就是優秀的選擇。
四、log4j組件
Log4j 由 logger、appender 和 layout 三個組件組成。可以通過同名的 Java 類訪問 Log4j 的這三個組件。
Logger - 在執行應用程序時,接收日志語句生成的日志請求。它是一種重要的日志處理組件, 可以通過 log4j API 的 logger 類對其進行訪問。它的方法有:debug、info、warn、error、fatal 和 log。這些方法用于記錄消息。
Appender - 管理日志語句的輸出結果。執行日志語句時,Logger 對象將接收來自日志語句的記錄請求。此請求是通過 logger 發送至 appender 的。然后,Appender 將輸出結果寫入到用戶選擇的目的地。對于不同的日志目的地,提供不同的 appender 類型。這些 appender 包括:用于文件的 file appender、用于數據庫的 JDBC appender 和用于 SMTP 服務器的 SMTP appender。
Layout - 用于指定 appender 將日志語句寫入日志目的地所采用的格式。appender 可以用來格式化輸出結果的各種布局包括:簡單布局、模式布局和 HTML 布局。
觸發器
是一種特殊的存儲過程﹐它不能被顯式地調用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發器可以用來實現對表實施復雜的完整性約束。
二: SQL Server為每個觸發器都創建了兩個專用表:Inserted表和Deleted表。這兩個表。 一: 觸發器是一種特殊的存儲過程﹐它不能被顯式地調用﹐而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。所以觸發器可以用來實現對表實施復雜的完整性約`束。
二: SQL Server為每個觸發器都創建了兩個專用表:Inserted表和Deleted表。這兩個表由系統來維護﹐它們存在于內存中而不是在數據庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。觸發器執行 完成后﹐與該觸發器相關的這兩個表也被刪除。
Deleted表存放由于執行Delete或Update語句而要從表中刪除的所有行。
Inserted表存放由于執行Insert或Update語句而要向表中插入的所有行。
三:Instead of 和 After觸發器
SQL Server2000提供了兩種觸發器:Instead of 和After 觸發器。這兩種觸發器的差別在于他們被激活的同:
Instead of觸發器用于替代引起觸發器執行的T-SQL語句。除表之外﹐Instead of 觸發器也可以用于視圖﹐用來擴展視圖可以支持的更新操作。
After觸發器在一個Insert,Update或Deleted語句之后執行﹐進行約束檢查等動作都在After觸發器被激活之前發生。After觸發器只能用于表。
一個表或視圖的每一個修改動作(insert,update和delete)都可以有一個instead of 觸發器﹐一個表的每個修改動作都可以有多個After觸發器。
四:觸發器的執行過程
如果一個Insert﹑update或者delete語句違反了約束﹐那幺After觸發器不會執行﹐因為對約束的檢查是在After觸發器被激動之前發生的。所以After觸發器不能超越約束。
Instead of 觸發器可以取代激發它的操作來執行。它在Inserted表和Deleted表剛剛建立﹐其它任何操作還沒有發生時被執行。因為Instead of 觸發器在約束之前執行﹐所以它可以對約束進行一些預處理。
五:使用T-SQL語句來創建觸發器 基本語句如下:
create trigger trigger_name
on {table_name view_name}
{for After Instead of }
[ insert, update,delete ]
as
sql_statement
六:刪除觸發器:
基本語句如下:
drop trigger trigger_name
七:查看數據庫中已有觸發器:
-- 查看數據庫已有觸發器
use jxcSoftware
go
select * from sysobjects where xtype='TR'
-- 查看單個觸發器
exec sp_helptext '觸發器名'
八:修改觸發器: 基本語句如下:
alter trigger trigger_name
on {table_name view_name}
{for After Instead of }
[ insert, update,delete ]
as
sql_statement
九:相關示例: 1:在Orders表中建立觸發器﹐當向Orders表中插入一條訂單記錄時﹐檢查goods表的貨品狀態status是否為1(正在整理)﹐是﹐則不能往Orders表加入該訂單。
create trigger orderinsert
on orders
after insert
as
if (select status from goods,inserted
where goods.name=inserted.goodsname)=1
begin
print 'the goods is being processed'
print 'the order cannot be committed'
rollback transaction --回滾﹐避免加入
end
2:在Orders表建立一個插入觸發器﹐在添加一條訂單時﹐減少Goods表相應的貨品記錄中的庫存。
create trigger orderinsert1
on orders
after insert
as
update goods set storage=storage-inserted.quantity
from goods,inserted
where
goods.name=inserted.goodsname
3:在Goods表建立刪除觸發器﹐實現Goods表和Orders表的級聯刪除。
create trigger goodsdelete
on goods
after delete
as
delete from orders
where goodsname in
(select name from deleted)
4:在Orders表建立一個更新觸發器﹐監視Orders表的訂單日期(OrderDate)列﹐使其不能手工修改.
create trigger orderdateupdate
on orders
after update
as
if update(orderdate)
begin
raiserror(' orderdate cannot be modified',10,1)
rollback transaction
end
5:在Orders表建立一個插入觸發器﹐保證向Orders表插入的貨品名必須要在Goods表中一定存在。
create trigger orderinsert3
on orders
after insert
as
if (select count(*) from goods,inserted where goods.name=inserted.goodsname)=0
begin
print ' no entry in goods for this order'
rollback transaction
end
6:Orders表建立一個插入觸發器,保證向Orders表插入的貨品信息要在Order表中添加
alter trigger addOrder
on Orders
for insert
as
insert into Order
select inserted.Id, inserted.goodName,inserted.Number from inserted
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>碰壁反彈</title>
<style>
#text {width:500px;height:300px;border:10px red solid;margin:0 auto;position:relative;}
#div1 {width:50px;height:50px;border:5px yellow solid;position:absolute;}
</style>
</head>
<body>
<div id="text">
<div id="div1"></div>
</div>
<input type="button" value="開始"/>
<input type="button" value="變大"/>
<input type="button" value="變小"/>
<input type="button" value="停止"/>
</body>
<script type="text/javascript">
var text = document.getElementById("text");
var div1 = document.getElementById("div1");
var a = div1.offsetTop;
var b = div1.offsetLeft;
var id = true;
var id2 = true;
var ss=null;
var qw = 50;
var ge = true;
var gg = true;
function pbft(){
var width = text.clientWidth;
var height = text.clientHeight;
var width2 = div1.offsetWidth;
var height2 = div1.offsetHeight;
var width3 = width - width2;
var height3 = height - height2;
if(id){
if(b<width3){
b++;
this.div1.style.left = b + "px";
}else{
id = false;
}
}else{
if(b>0){
b--;
this.div1.style.left = b + "px";
}else{
id=true;
}
}
if(id2){
if(a<height3){
a++;
this.div1.style.top = a + "px";
}else{
id2 = false;
}
}else{
if(a>0){
a--;
this.div1.style.top = a + "px";
}else{
id2=true;
}
}
}
function dian(){
var da = document.getElementsByTagName("input")[1];
var xiao = document.getElementsByTagName("input")[2];
var stop = document.getElementsByTagName("input")[3];
var kais = document.getElementsByTagName("input")[0];
ade(da,'click',function(){bd()});
ade(xiao,'click',function(){bx()});
ade(stop,'click',function(){tz()});
ade(kais,'click',function(){ks()});
}
// Resources from http://www.veryhuo.com/down
function ade(a,b,c){
if (a.addEventListener)
{
a.addEventListener(b,c,false)
}else{
a["on"+b] = c ;
}
}
function ks(){
if (ss)
{
clearInterval(ss);
}
ss = setInterval(pbft,10);
}
function bd(){
if (qw<=200)
{
qw++;
this.div1.style.width = qw + "px";
this.div1.style.height = qw + "px";
clearTimeout(ge);
gg = setTimeout(bd,20)
}
}
function bx(){
if (qw>50)
{
qw--;
this.div1.style.width = qw + "px";
this.div1.style.height = qw + "px";
clearTimeout(gg);
ge = setTimeout(bx,20)
}
}
function tz(){
clearInterval(ss);
clearTimeout(gg);
clearTimeout(ge);
}
dian();
</script>
</html>
<!-- Liehuo Button BEGIN -->
<script type='text/javascript' src='http://www.veryhuo.com/Res/share/jscss/Liehuo_r.js?btn=r3.gif' charset=utf-8></script>
<!-- Liehuo Button END --><br /><center>如不能顯示效果,請按Ctrl+F5刷新本頁,更多網頁代碼:<a target='_blank'>http://www.veryhuo.com/</a></center>
文章源自:烈火網,原文:http://www.veryhuo.com/a/view/29262.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html xmlns="<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript過河游戲</title>
<style type="text/css">
#content{width:800px;height:600px;border:1px #333333 solid;overflow:hidden;}
#A{width:120px;height:600px;float:left;background:#996633;}
#B{width:560px;height:600px;float:left;background:#0099FF;}
#river{width:560px;height:450px;}
#operator{width:560px;height:150px;background:#99CCFF;overflow:hidden;}
#C{width:120px;height:600px;float:right;background:#996633;}
#people{width:100px;height:20px;border:2px #000000 solid;margin:10px auto;text-
align:center;cursor:pointer;padding:10px 0px;}
#ship{width:200px;height:20px;border:1px #CC3300
solid;background:#663300;position:relative;top:150px;left:0px;text-align:center;padding:10px 0px;cursor:pointer;}
#btns{width:560px;height:40px;margin-top:10px;}
#btn{width:60px;height:20px;border:1px #000000 solid;background:#FFFFCC;text-align:center;padding:10px
0px;cursor:pointer;float:left;margin-left:210px;display:inline;}
#new{width:60px;height:20px;border:1px #000000 solid;background:#FFFFCC;text-align:center;padding:10px
0px;cursor:pointer;float:left;margin-left:10px;display:inline;}
#rule{width:560px;height:100px;margin-top:10px;font-family:宋體;font-size:12px;color:#666666;line-
height:16px;text-align:center;}
</style>
<script type="text/javascript">
var direction; //A to C:true ; C to A:false
var people=new Array(9);
var s2Able; //判斷船2是否有人
var s1Able; //判斷船1是否有人
var pInShip1; //哪個人在船1上
var pInShip2; //哪個人在船2上
function init(){
var peopleA=document.getElementById("A").getElementsByTagName("div");
var ships=document.getElementsByName("ship");
var peopleC=document.getElementById("C").getElementsByTagName("div");
var moveBtn=document.getElementById("btn");
var newBtn=document.getElementById("new");
for(var i=0,len=peopleC.length;i<len;i++){
peopleC[i].style.visibility="hidden";
}
s1Able=true;
s2Able=true;
direction=true;
for (var i=0;i<9;i++)
{
people[i]=true;
}
//注冊事件
var len=peopleA.length;
for(var j=0;j<len;j++){
(function(m){
peopleA[m].onclick = function(){
if(direction)
selectPeople(this,m+1);
};
peopleC[m].onclick = function(){
if(!direction)
selectPeople(this,m+10+1);
};
})(j);
}
ships[0].onclick=function(){
quitShip(this,pInShip1);
s1Able=true;
pInShip1=0;
};
ships[1].onclick=function(){
quitShip(this,pInShip2);
s2Able=true;
pInShip2=0;
};
moveBtn.onclick=function(){
move();
};
newBtn.onclick=function(){
window.location = window.location;
};
}
function selectPeople(obj,move_num){
var ships=document.getElementsByName("ship");
if(s1Able){
ships[0].innerHTML=obj.innerHTML;
obj.style.visibility="hidden";
s1Able=false;
pInShip1=move_num;
if(move_num>10)
people[move_num-10]=!people[move_num-10];
else
people[move_num]=!people[move_num];
}
else if(s2Able){
ships[1].innerHTML=obj.innerHTML;
obj.style.visibility="hidden";
s2Able=false;
pInShip2=move_num;
if(move_num>10)
people[move_num-10]=!people[move_num-10];
else
people[move_num]=!people[move_num];
}
// 烈火網 liehuo.net 歡迎復制,拒絕惡意采集 liehuo.net
else{
alert("船上最多兩個人,已滿!");
}
}
function quitShip(obj,quitId){
if(obj.innerHTML != ""){
var peopleA=document.getElementById("A").getElementsByTagName("div");
var peopleC=document.getElementById("C").getElementsByTagName("div");
if(quitId > 10){
peopleC[quitId-10-1].style.visibility="visible";
people[quitId-10]=!people[quitId-10];
}
else{
peopleA[quitId-1].style.visibility="visible";
people[quitId]=!people[quitId];
}
obj.innerHTML="";
}
}
function motherCheck(){
if(people[1]==people[5])
{
if(people[4]!=people[1])
{
alert("媽媽打兒子1");
return false;
}
}
if(people[1]==people[6])
{
if(people[4]!=people[1])
{
alert("媽媽打兒子2");
return false;
}
}
return true;
}
function fatherCheck(){
if(people[4]==people[2])
{
if(people[1]!=people[4])
{
alert("爸爸打女兒1");
return false;
}
}
if(people[4]==people[3])
{
if(people[1]!=people[4])
{
alert("爸爸打女兒2");
return false;
}
}
return true;
}
function policeCheck(){
if(people[7]!=people[8])
{
for(var i=1;i<8;i++)
{
if(people[8]==people[i])
{
alert("犯人傷人");
return false;
}
}
}
return true;
}
function atoc(peopleId){
var peopleC=document.getElementById("C").getElementsByTagName("div");
var ships=document.getElementsByName("ship");
var tempId;
if(peopleId > 10){
tempId = peopleId - 10 -1;
}
else
tempId = peopleId - 1;
if(tempId >= 0)
peopleC[tempId].style.visibility="visible";
for(var i=0,len=ships.length;i<len;i++){
ships[i].style.left = "360px";
ships[i].innerHTML = "";
}
}
function ctoa(peopleId){
var peopleA=document.getElementById("A").getElementsByTagName("div");
var ships=document.getElementsByName("ship");
var tempId;
if(peopleId > 10){
tempId = peopleId - 10 -1;
}
else
tempId = peopleId - 1;
if(tempId >= 0)
peopleA[tempId].style.visibility="visible";
for(var i=0,len=ships.length;i<len;i++){
ships[i].style.left = "0px";
ships[i].innerHTML = "";
}
}
function move(){
if(pInShip1==1 || pInShip1==4 || pInShip1==7 ||
pInShip1==11 || pInShip1==14 || pInShip1==17 ||
pInShip2==1 || pInShip2==4 || pInShip2==7 ||
pInShip2==11 || pInShip2==14 || pInShip2==17
) //開動船只的人只能是爸爸媽媽或者是警察
{
if (motherCheck()&& fatherCheck() && policeCheck())
{
if(direction)
{
atoc(pInShip1);
atoc(pInShip2);
direction=false;
}
else
{
ctoa(pInShip1);
ctoa(pInShip2);
direction=true;
}
s1Able=s2Able=true;
pInShip1=pInShip2=0;
var peopleC=document.getElementById("C").getElementsByTagName("div");
var result = true;
for(var i=0,len=peopleC.length;i<len;i++){
if(peopleC[i].style.visibility=="hidden"){
result = false;
break;
}
}
if(result){
alert("你真厲害!");
window.location = window.location;
}
}
}
else
alert("只有媽媽、爸爸和警察能撐船!");
}
window.onload = function(){
init();
};
</script>
</head>
<body>
<div id="content">
<div id="A">
<div id="people" name="people">媽媽</div>
<div id="people" name="people">女兒1</div>
<div id="people" name="people">女兒2</div>
<div id="people" name="people">爸爸</div>
<div id="people" name="people">兒子1</div>
<div id="people" name="people">兒子2</div>
<div id="people" name="people">警察</div>
<div id="people" name="people">土匪</div>
</div>
<div id="B">
<div id="river">
<div id="ship" name="ship"></div>
<div id="ship" name="ship"></div>
</div>
<div id="operator">
<div id="btns">
<div id="btn">移動</div>
<div id="new">重玩</div>
</div>
<div id="rule">
游戲規則:<br />
1.無論大人、小孩,每次最多只能承載兩人。2.只有爸爸、媽媽、警察可以駕船。<br />
3.媽媽看到爸爸離開兒子打兒子。4.爸爸看到媽媽離開女兒打女兒。<br />
5.土匪離開警察會傷害家人。6.先選擇人物,然后點擊"移動"按鈕。<br />
7.移動過程中若出現提示,說明違反上述規則。
</div>
</div>
</div>
<div id="C">
<div id="people" name="people">媽媽</div>
<div id="people" name="people">女兒1</div>
<div id="people" name="people">女兒2</div>
<div id="people" name="people">爸爸</div>
<div id="people" name="people">兒子1</div>
<div id="people" name="people">兒子2</div>
<div id="people" name="people">警察</div>
<div id="people" name="people">土匪</div>
</div>
</div>
</body>
</html>
<html>
<head>
<style type="text/css">
.code{
background-image:url(111.jpg);
font-family:Arial;
font-style:italic;
color:green;
border:0;
padding:2px 3px;
letter-spacing:3px;
font-weight:bolder;
}
.unchanged {
border:0;
}
</style>
<script language="javascript" type="text/javascript">
var code ; //在全局 定義驗證碼
function createCode(){
code = "";
var codeLength = 4;//驗證碼的長度
var checkCode = document.getElementById("checkCode");
checkCode.value = "";
var selectChar = new Array(2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z');
for(var i=0;i<codeLength;i++) {
var charIndex = Math.floor(Math.random()*32);
code +=selectChar[charIndex];
}
if(code.length != codeLength){
createCode();
}
checkCode.value = code;
}
function validate () {
var inputCode = document.getElementById("input1").value.toUpperCase();
if(inputCode.length <=0) {
alert("請輸入驗證碼!");
return false;
}
else if(inputCode != code ){
alert("驗證碼輸入錯誤!");
createCode();
return false;
}
else {
alert("OK");
return true;
}
}
</script>
</head>
<body onload="createCode();">
<input type="text" id="input1" />
<input type="text" id="checkCode" class="code" style="width: 55px" /> <a href="#" onclick="createCode()">看不清楚</a><br /><br />
<center><input id="Button1" onclick="validate();" type="button" value="確定" /></center>
<script></script>
</body>
</html>
有一個博士分到一家研究所,成為學歷最高的一個人。
有一天他到單位后面的小池塘去釣魚,正好正副所長在他的一左一右,也在釣魚。
他只是微微點了點頭,這兩個本科生,有啥好聊的呢?
不一會兒,正所長放下釣竿,伸伸懶腰,蹭蹭蹭從水面上如飛地走到對面上廁所。
博士眼睛睜得都快掉下來了。水上飄?不會吧?這可是一個池塘啊。
正所長上完廁所回來的時候,同樣也是蹭蹭蹭地從水上飄回來了。
怎么回事?博士生又不好去問,自己是博士生哪!
過一陣,副所長也站起來,走幾步,蹭蹭蹭地飄過水面上廁所。這下子博士更是差點昏倒:不會吧,到了一個江湖高手集中的地方?
博士生也內急了。這個池塘兩邊有圍墻,要到對面廁所非得繞十分鐘的路,而回單位上又太遠,怎么辦?
博士生也不愿意去問兩位所長,憋了半天后,也起身往水里跨:我就不信本科生能過的水面,我博士生不能過。
只聽咚的一聲,博士生栽到了水里。
兩位所長將他拉了出來,問他為什么要下水,他問:“為什么你們可以走過去呢?”
兩所長相視一笑:“這池塘里有兩排木樁子,由于這兩天下雨漲水正好在水面下。我們都知道這木樁的位置,所以可以踩著樁子過去。你怎么不問一聲呢?”
這個故事告訴我們:學歷代表過去,只有學習力才能代表將來。尊重經驗的人,才能少走彎路。一個好的團隊,也應該是學習型的團隊。
個人理解和感悟:看學歷更要看能力
招聘廣告上面我們經常會看到“要求本科以上學歷”,很少有企業招聘的時候是不在乎學歷的,而且在一些正規的企業里,如果沒有足夠的學歷,是不予以考慮加薪升職的。企業在人才的競爭上面出現了一種盲目攀比學歷的不良傾向,現在經常可以看到在某些企業的官方介紹上面寫“公司的本科以上學歷占有xx比例”的字眼,,似乎聘用的人才學歷越高
越好,在職員工高學歷的越多越好。有一則消息稱研究生學歷的人比本科學歷的人平均年薪要高出2w元,從這里看出,學歷在企業招聘和考核中的重要性。
現在越來越多的人堅持考研或者讀MBA,他們認為一旦有了高的學歷就可以“春風得意馬蹄疾,一頁看遍長安花”了。目前學歷仍然是一個隱形的、力量巨大的“殺手”,生生的把沒有一紙文憑的人拒之門外。
有文憑不等于有水平,沒有學歷不等于沒有能力,大量的事實說明,不少才華橫溢、能力卓越的人才,他們并沒有高的學歷,有的甚至沒有大學文憑,例如愛迪生、高爾基諾貝爾 比爾蓋茨 喬布斯等,這些人雖然沒有高的學歷,但是他們取得的成就是非凡的,同樣現實中生活中也能輕易的發現,很多擁有高學歷的人在工作中能力平平、毫無建樹、庸庸碌碌的過萬了一生,管理者在選擇人才時,只能把學歷當作一種參考條件,更重要的是要看這個人的實際能力。如果企業不從實際出發,競相制定一些高學歷的規定,對學歷的要求過為嚴格,甚至唯學歷取人,很難選拔出優秀的人才,衡量人才既要有文化程度方面的要求,更總要視履行崗位職責的能力,真正使那些有學歷,有智慧又有能力的人得到重用.
伯樂相馬,主要是看馬能否跑千里而不是看馬的出身。近有消息說,有些用人單位招聘人才的取向已更加務實,選才標準正在由“學歷型”向“能力型”轉變,這是一種令人欣慰的轉變。畢竟,千里馬是跑出來的,人才是干出來的。創造業績主要不是靠職前的學歷,而是靠任職后的實踐經歷和創造性努力。但愿我們公開選拔干部時,能夠更重任職的能力而不是更重職前的學歷。
一個人是否真正的有才能,并不能以學歷作為衡量的唯一標準,管理者在選人、用人時,不要被學歷遮住了視野,二應該把有實際能力的員工放在最重要的位置上
多一句贊美
人們相互希望得越多,想要給予對方的越多……就必定越親密。
幾天前,我和一位朋友在紐約搭計程車,下車時,朋友對司機說:“謝謝,搭你的車十分舒適。”這司機聽了愣了一愣,然后說:“你是混黑道的嗎?”
“不,司機先生,我不是在尋你開心,我很佩服你在交通混亂時還能沉住氣。”
“是呀!”司機說完,便駕車離開了。
“你為什么會這么說?”我不解地問。
“我想讓紐約多點人情味,”他答道,“唯有這樣,這城市才有救。”
“靠你一個人的力量怎能辦得到?”
“我只是起帶頭作用。我相信一句小小的贊美能讓那位司機整日心情愉快,如果他今天載了20位乘客,他就會對這20位乘客態度和善,而這些乘客受了司機的感染,也會對周遭的人和顏悅色。這樣算來,我的好意可間接傳達給1000多人,不錯吧?”
“但你怎能希望計程車司機會照你的想法做嗎?”
“我并沒有希望他,”朋友回答:“我知道這種作法是可遇不可求,所以我盡量多對人和氣,多贊美他人,即使一天的成功率只有30%,但仍可連帶影響到3000人之多。”
“我承認這套理論很中聽,但能有幾分實際效果呢?”
“就算沒效果我也毫無損失呀!開口稱贊那司機花不了我幾秒鐘,他也不會少收幾塊小費。如果那人無動于衷,那也無妨,明天我還可以去稱贊另一個計程車司機呀!”
“我看你腦袋有點天真病了。”
“從這就可看出你越來越冷漠了。我曾調查過郵局的員工,他們最感沮喪的除了薪水微薄外,另外就是欠缺別人對他們工作的肯定。”
“但他們的服務真的很差勁呀!”
“那是因為他們覺得沒人在意他們的服務質量。我們為何不多給他們一些鼓勵呢?”
我們邊走邊聊,途經一個建筑工地,有5個工人正在一旁吃午餐。我朋友停下了腳步,“這棟大樓蓋很真好,你們的工作一定很危險辛苦吧?”那群工人帶著狐疑的眼光望著我朋友。
“工程何時完工?”我朋友繼續問道。
“6月。”一個工人低應了一聲。
“這么出色的成績,你們一定很引以為榮。”
離開工地后,我對他說:“你這種人也可以列入瀕臨絕種動物了。”
“這些人也許會因我這一句話而更起勁地工作,這對所有的人何嘗不是一件好事呢?”
“但光靠你一個人有什么用呢?你不過是一個小民罷了。”
“我常告訴自己千萬不能泄氣,讓這個社會更有情原本就不是簡單的事,我能影響一個就一個,能兩個就兩個……”
“剛才走過的女子姿色平庸,你還對她微笑?”我插嘴問道。
“是呀!我知道,”他答道,“如果她是個老師,我想今天上她課的人一定如沐春風。”
個人理解和感悟:不要吝惜贊美
對正確的行為要懂得及時鼓勵和贊美。管理者往往認為,這是員工應該做的,所以,當出現正確的行為時,也不認為是什么稀奇的,就省略了及時的鼓勵。這樣,久而久之,企業中就形成了一種消極的文化,也稱為亞文化。誰也不愿意做有益的事情了,因為做了就做了,也得不到鼓勵。所以企業要形成向上的文化,管理者就應及時發現員工的閃光點,不應吝惜鼓勵和贊美。
人人都希望獲得掌上和贊美,簡單的一句贊美會帶給人無比的溫馨和振奮,有名人說過“人是或在掌聲里的,要想讓下屬更賣力的工作,就要讓他得到上司的克定或某種獎勵”。
成功學大師耐基也說過“要想嘗試改變一個人,何不將責備用贊美來替代?即使下屬進步只有很小的一點,也應獲得我們的贊美。只有這樣,才能不斷的鼓勵別人改進自己,使自己進步”
贊美是合乎人性的領導法則,每個人都渴望得到別人的贊美和夸獎。美國一位哲學家說過“人類天性中都有做個重要任務的欲望。“ 這是人力與生俱來的本能欲望。人類天生有被贊美的強烈意識,適當的贊美,會使人趕到開心和快樂
管理者如果能經常的贊美下屬,便會聽到這樣的聲音:"我們領導很清楚贊美我的表現,我就知道他是真摯的關系我、尊重我,并且很熟悉我的工作內容。" 同時管理者也會得到意想不到的回報,下屬趕到自己的表現得到肯定和重視后,會更加努力的去工作
相對于物質獎勵而言,贊美是不需要付出代價和本錢的,也不用冒風險,而且極易使一個人的榮譽感和成就感得到滿足。一句恰當的贊美,可以調動員工的積極性,讓員工和管理者之間的關系更加和諧。
贊美前應該了解的技巧
因人而異
下屬員工的素質有高低之分,年齡有長幼之別,因人而異,突出個性,有特點的贊美比一般化的贊美能收到更好的效果。老員工總希望別人不忘記他“想當年”的業績與雄風,同其交談時,可多稱贊他引為自豪的過去;對新員工不妨語氣稍為夸張地贊揚他的創造才能和開拓精神,并舉出幾點實例證明他的確能夠前程似錦;切記:一切要依據事實,切不可虛夸。
情真意切
雖然人都喜歡聽贊美的話,但并非任何贊美都能使對方高興。能引起對方好感的只能是那些基于事實、發自內心的贊美。相反,你若無根無據、虛情假意地贊美別人,他不僅會感到莫名其妙,更會覺得你油嘴滑舌、詭詐虛偽。 真誠的贊美不但會使被贊美者產生心理上的愉悅,還可以使你經常發現別人的優點,從而使自己對人生持有樂觀、欣賞的態度。
詳實具體
在日常生活中,人們有非常顯著成績的時侯并不多見。因此,交往中應從具體的事件入手,善于發現別人哪怕是最微小的長處,并不失時機地予以贊美。贊美用語愈詳實具體,說明你對對方愈了解,對他的長處和成績愈看重。讓對方感到你的真摯、親切和可信,你們之間的人際距離就會越來越近。如果你只是含糊其辭地贊美對方,說一些“你工作得非常出色”,不能引起對方的猜度,甚至產生不必要的誤解和信任危機。
合乎時宜
贊美的效果在于相機行事、適可而止,真正做到“美酒飲到微醉后,好花看到半開時”。
當別人計劃做一件有意義的事時,開頭的贊揚能激勵他下決心做出成績,中間的贊揚有益于對方再接再厲,結尾的贊揚則可以肯定成績,指出進一步的努力方向,從而達到“贊揚一個,激勵一批”的效果。
雪中送炭
俗話說:“患難風真情。”最需要贊美的不是那些早已功成名就的人,而是那些因被埋沒而產生自卑感或身處逆境的人。他們平時很難聽一聲贊美的話語,一旦被人當眾真誠地贊美,便有可能振作精神,大展宏圖。因此,最有實效的贊美不是“錦上添花”,而是“雪中送炭”。
經驗分享:學會真誠的贊美
1、贊美前,培養觀看、欣賞下屬的心態,這是令你產生贊美意愿的唯一方法
2、贊美要找出值得贊美的事情
3、贊美要真誠
4、對員工的有點,一經發現,立刻贊美
5、記住下屬的名字
6、表揚越具體,效果越明顯
7、對下屬微小的成績也要表揚
function HS_DateAdd(interval,number,date){
number = parseInt(number);
if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
if (typeof(date)=="object"){var date = date}
switch(interval){
case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
}
}
function checkDate(year,month,date){
var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
var returnDate = "";
if (year%4==0){enddate[1]="29"}
if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
return returnDate;
}
function WeekDay(date){
var theDate;
if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
if (typeof(date)=="object"){theDate = date}
return theDate.getDay();
}
function HS_calender(){
var lis = "";
var style = "";
style +="<style type='text/css'>";
style +=".calender { width:170px; height:auto; font-size:12px; margin-right:14px; background:url(calenderbg.gif) no-repeat right center #fff; border:1px solid #397EAE; padding:1px}";
style +=".calender ul {list-style-type:none; margin:0; padding:0;}";
style +=".calender .day { background-color:#EDF5FF; height:20px;}";
style +=".calender .day li,.calender .date li{ float:left; width:14%; height:20px; line-height:20px; text-align:center}";
style +=".calender li a { text-decoration:none; font-family:Tahoma; font-size:11px; color:#333}";
style +=".calender li a:hover { color:#f30; text-decoration:underline}";
style +=".calender li a.hasArticle {font-weight:bold; color:#f60 !important}";
style +=".lastMonthDate, .nextMonthDate {color:#bbb;font-size:11px}";
style +=".selectThisYear a, .selectThisMonth a{text-decoration:none; margin:0 2px; color:#000; font-weight:bold}";
style +=".calender .LastMonth, .calender .NextMonth{ text-decoration:none; color:#000; font-size:18px; font-weight:bold; line-height:16px;}";
style +=".calender .LastMonth { float:left;}";
style +=".calender .NextMonth { float:right;}";
style +=".calenderBody {clear:both}";
style +=".calenderTitle {text-align:center;height:20px; line-height:20px; clear:both}";
style +=".today { background-color:#ffffaa;border:1px solid #f60; padding:2px}";
style +=".today a { color:#f30; }";
style +=".calenderBottom {clear:both; border-top:1px solid #ddd; padding: 3px 0; text-align:left}";
style +=".calenderBottom a {text-decoration:none; margin:2px !important; font-weight:bold; color:#000}";
style +=".calenderBottom a.closeCalender{float:right}";
style +=".closeCalenderBox {float:right; border:1px solid #000; background:#fff; font-size:9px; width:11px; height:11px; line-height:11px; text-align:center;overflow:hidden; font-weight:normal !important}";
style +="</style>";
var now;
if (typeof(arguments[0])=="string"){
selectDate = arguments[0].split("-");
var year = selectDate[0];
var month = parseInt(selectDate[1])-1+"";
var date = selectDate[2];
now = new Date(year,month,date);
}else if (typeof(arguments[0])=="object"){
now = arguments[0];
}
var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
var thisMonthEndDate = thisMonthLastDate.getDate();
var thisMonthEndDay = thisMonthLastDate.getDay();
var todayObj = new Date();
today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();
for (i=0; i<lastMonthDate; i++){ // Last Month's Date
lis = "<li class='lastMonthDate'>"+lastMonthEndDate+"</li>" + lis;
lastMonthEndDate--;
}
for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date
if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){
var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i;
lis += "<li><a href=javascript:void(0) class='today' onclick='_selectThisDay(this)' title='"+now.getFullYear()+"-"+(parseInt(now.getMonth())+1)+"-"+i+"'>"+i+"</a></li>";
}else{
lis += "<li><a href=javascript:void(0) onclick='_selectThisDay(this)' title='"+now.getFullYear()+"-"+(parseInt(now.getMonth())+1)+"-"+i+"'>"+i+"</a></li>";
}
}
var j=1;
for (i=thisMonthEndDay; i<6; i++){ // Next Month's Date
lis += "<li class='nextMonthDate'>"+j+"</li>";
j++;
}
lis += style;
var CalenderTitle = "<a href='javascript:void(0)' class='NextMonth' onclick=HS_calender(HS_DateAdd('m',1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"'),this) title='Next Month'>»</a>";
CalenderTitle += "<a href='javascript:void(0)' class='LastMonth' onclick=HS_calender(HS_DateAdd('m',-1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"'),this) title='Previous Month'>«</a>";
CalenderTitle += "<span class='selectThisYear'><a href='javascript:void(0)' onclick='CalenderselectYear(this)' title='Click here to select other year' >"+now.getFullYear()+"</a></span>年<span class='selectThisMonth'><a href='javascript:void(0)' onclick='CalenderselectMonth(this)' title='Click here to select other month'>"+(parseInt(now.getMonth())+1).toString()+"</a></span>月";
if (arguments.length>1){
arguments[1].parentNode.parentNode.getElementsByTagName("ul")[1].innerHTML = lis;
arguments[1].parentNode.innerHTML = CalenderTitle;
}else{
var CalenderBox = style+"<div class='calender'><div class='calenderTitle'>"+CalenderTitle+"</div><div class='calenderBody'><ul class='day'><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul><ul class='date' id='thisMonthDate'>"+lis+"</ul></div><div class='calenderBottom'><a href='javascript:void(0)' class='closeCalender' onclick='closeCalender(this)'>×</a><span><span><a href=javascript:void(0) onclick='_selectThisDay(this)' title='"+todayString+"'>Today</a></span></span></div></div>";
return CalenderBox;
}
}
function _selectThisDay(d){
var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode;
boxObj.targetObj.value = d.title;
boxObj.parentNode.removeChild(boxObj);
}
function closeCalender(d){
var boxObj = d.parentNode.parentNode.parentNode;
boxObj.parentNode.removeChild(boxObj);
}
function CalenderselectYear(obj){
var opt = "";
var thisYear = obj.innerHTML;
for (i=1970; i<=2020; i++){
if (i==thisYear){
opt += "<option value="+i+" selected>"+i+"</option>";
}else{
opt += "<option value="+i+">"+i+"</option>";
}
}
opt = "<select onblur='selectThisYear(this)' onchange='selectThisYear(this)' style='font-size:11px'>"+opt+"</select>";
obj.parentNode.innerHTML = opt;
}
function selectThisYear(obj){
HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName("span")[1].getElementsByTagName("a")[0].innerHTML+"-1",obj.parentNode);
}
function CalenderselectMonth(obj){
var opt = "";
var thisMonth = obj.innerHTML;
for (i=1; i<=12; i++){
if (i==thisMonth){
opt += "<option value="+i+" selected>"+i+"</option>";
}else{
opt += "<option value="+i+">"+i+"</option>";
}
}
opt = "<select onblur='selectThisMonth(this)' onchange='selectThisMonth(this)' style='font-size:11px'>"+opt+"</select>";
obj.parentNode.innerHTML = opt;
}
function selectThisMonth(obj){
HS_calender(obj.parentNode.parentNode.getElementsByTagName("span")[0].getElementsByTagName("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode);
}
function HS_setDate(inputObj){
var calenderObj = document.createElement("span");
calenderObj.innerHTML = HS_calender(new Date());
calenderObj.style.position = "absolute";
calenderObj.targetObj = inputObj;
inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling);
}
在調用時,只需用光標事件引發即可,即onfocus="HS_setDate(this)"
function onclick_check2() {
var popup_width = 400;
var popup_height = 350;
var popup_left = (screen.width - popup_width) / 2;
var popup_top = (screen.height - popup_height) / 2;
var popup_scrollbars = "no";
var popup_property = "width=" + popup_width;
var popup_property = popup_property + ",height=" + popup_height;
var popup_property = popup_property + ",left=" + popup_left;
var popup_property = popup_property + ",top=" + popup_top;
var popup_property = popup_property + ",scrollbars=" + popup_scrollbars;
window.open('<%=request.getContextPath()%>/commu/pop_post.jsp','zipcode',popup_property);
}