一般屬性映射
以教師表為例,教師表中還有個Name類嵌套,但是這是如果想把Name表中的兩個屬性也加在Teacher表中,這時就需要用到組建關聯。
package cn.itcast.hibernate.domain;
import java.util.Set;
public class Teacher {
private int id;
private Name name;
private Set<Student> students;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
/**************************************************************************/
Name.java
package cn.itcast.hibernate.domain;
public class Name {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
/*******************************************************************************/
這時需要在Teacher.hbm.xml映射文件里做如下配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"
<hibernate-mapping package="cn.itcast.hibernate.domain">
<class name="Teacher">
<id name="id" column="teacher_id">
<generator class="native"/>
</id>
<!--<property name="name" column="teacher_name"/>
-->
<component name="name" class="Name">
<property name="firstName" column="first_name"></property>
<property name="lastName" column="last_name"></property>
</component>
<set name="students" table="teacher_student">
<key column="teacher_id"></key>
<many-to-many class="Student" column="student_id"></many-to-many>
</set>
</class>
</hibernate-mapping>
/******************************************************************************/
這樣就會在一個表里:

net.sf.hibernate.*
該包的類基本上都是接口類和異常類
net.sf.hibernate.cache.*
JCS的實現類
net.sf.hibernate.cfg.*
配置文件讀取類
net.sf.hibernate.collection.*
Hibernate集合接口實現類,例如List,Set,Bag等等,Hibernate之所以要自行編寫集合接口實現類是為了支持lazy loading
net.sf.hibernate.connection.*
幾個數據庫連接池的Provider
net.sf.hibernate.dialect.*
支持多種數據庫特性,每個Dialect實現類代表一種數據庫,描述了該數據庫支持的數據類型和其它特點,例如是否有AutoIncrement,是否有Sequence,是否有分頁sql等等
net.sf.hibernate.eg.*
Hibernate文檔中用到的例子
net.sf.hibernate.engine.*
這個包的類作用比較散
net.sf.hibernate.expression.*
HQL支持的表達式
net.sf.hibernate.hq.*
HQL實現
net.sf.hibernate.id.*
ID生成器
net.sf.hibernate.impl.*
最核心的包,一些重要接口的實現類,如果Session,SessionFactory,Query等
net.sf.hibernate.jca.*
JCA支持,把Session包裝為支持JCA的接口實現類
net.sf.hibernate.jmx.*
我不懂JMX,只知道JMX是用來編寫App Server的管理程序的,大概是JMX部分接口的實現,使得App Server可以通過JMX接口管理Hibernate
net.sf.hibernate.loader.*
也是很核心的包,主要是生成sql語句的
net.sf.hibernate.lob.*
Blob和Clob支持
net.sf.hibernate.mapping.*
hbm文件的屬性實現
net.sf.hibernate.metadata.*
PO的Meta實現
net.sf.hibernate.odmg.*
ODMG是一個ORM標準,這個包是ODMG標準的實現類
net.sf.hibernate.persister.*
核心包,實現持久對象和表之間的映射
net.sf.hibernate.proxy.*
Proxy和Lazy Loading支持
net.sf.hibernate.ps.*
該包是PreparedStatment Cache
net.sf.hibernate.sql.*
生成JDBC sql語句的包
net.sf.hibernate.test.*
測試類,你可以用junit來測試Hibernate
net.sf.hibernate.tool.hbm2ddl.*
用hbm配置文件生成DDL
net.sf.hibernate.transaction.*
Hibernate Transaction實現類
net.sf.hibernate.type.*
Hibernate中定義的持久對象的屬性的數據類型
net.sf.hibernate.util.*
一些工具類,作用比較散
net.sf.hibernate.xml.*
XML數據綁定
以前在寫程序的時候看,特別是在編寫連接數據庫程序的時候,總要用到jdbc,提前都感覺到jdbc是一個很好的手工方式,并沒有想到更好的實現方法,也不知道jdbc的缺點是什么,因為在做大型項目的時候,必定會要寫很多的程序,當然操作數據庫的更不可缺,所以每次的有很多都是重復的,而且在對象模型和關系模型之間總會遇到很多的問題,也往往會轉來轉去的,當用了hibernate后,可以很方便的操作數據,不用寫那么麻煩的代碼,節省了很多的操作和代碼的編寫,這樣大大提高了代碼編寫的效率,提高了開發的速度!現在將走向hibernate的世界:
一:首先要使用hibernate框架,必定要引入hibernate2.jar包,當然還要引入很多的包,然后寫一個與數據表對應的JavaBean類,與數據庫的字段對應,比如一個簡單的java類如下:
package tmc.hibernat.domian;
import java.util.Date;
public class User {
private int id;
private String name;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
然后編寫一個映射的文件,
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="tmc.hibernat.domian">
<class name="User">
<id name="id">
<generator class="native" />
</id>
<property name="name" unique="true" />
<property name="date" />
</class>
</hibernate-mapping>
在寫一個加載數據庫和連接數據庫的的配置文件:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="tmc/hibernat/domian/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
在此,一切的準備都已經完成,接下來執行寫一些service的java類對數據庫進行操作,就可以實現對數據庫的操做了
寫一個service的java類:
package tmc.hibernate.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUitl {
private static SessionFactory sessionFactory;
private HibernateUitl(){
}
/**
* 初始化代碼
*/
static{
//配置的一個實例說明屬性允許應用程序在測繪文件被用來當創造一個SessionFactory
Configuration cfg = new Configuration();
cfg.configure();//讀取配置文件
sessionFactory = cfg.buildSessionFactory();//找出配置文件的所有信息
}
/**
* 獲取SessionFactory的方法
* @return
*/
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/**
* 獲取session的方法
* @return
*/
public static Session getSession(){
return sessionFactory.openSession();
}
}
然后寫對數據庫的各種操作:
1.寫一個接口:
package tmc.hibernat.domian;
public interface UserDao {
public void saveUser(User user);
public User findUserById(int id);
public User findUserByName(String name);
public void updateUser(User user);
public void remove(User user);
}
2.實現接口:
package tmc.hibernate.service;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class UserHibernateImp implements UserDao{
/**
* 根據id獲取查詢數據庫的內容
*/
@Override
public User findUserById(int id) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
User user =(User)s.get(User.class,id);//User.class方便找到映射文件
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 根據用戶名,查詢用戶的信息
*/
@Override
public User findUserByName(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.eq("name",name));
User user =(User)c.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 和上面的使用是一樣的,只是用不同的查詢方式而已
* @param name
* @return
*/
public User findUserByName1(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
String hql = "from User as user where user.name=:n";
Query q = s.createQuery(hql);
q.setString("n",name);
User user =(User)q.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 移除數據庫一條記錄
* @see tmc.hibernat.domian.UserDao#remove(tmc.hibernat.domian.User)
*/
@Override
public void remove(User user) {
Session s = null;
//創建一個事務
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.delete(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 向數據庫添加數據
*/
@Override
public void saveUser(User user) {
Session s = null;
//創建一個事務
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.save(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 修改數據庫數據
*/
@Override
public void updateUser(User user) {
Session s = null;
//創建一個事務
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.update(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
}
3.測試上面的類:
package tmc.hibernate.service;
import java.util.Date;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class TestDao {
public static void main(String[] args){
UserDao dao = new UserHibernateImp();
User user = new User();
user.setName("name");
user.setDate(new Date());
System.out.println("1111");
dao.saveUser(user);
user.setName("new name");
System.out.println("222");
dao.updateUser(user);
User u = dao.findUserByName(user.getName());
System.out.println("3333");
}
}
這樣的話,就可以完成了對數據庫的各種操作,這樣寫真的很方便,很靈活,減少了很多的重復代碼,但就是配置文件的時候很麻煩,呵呵,反正很多都這樣的,沒有十全十美的東西,但只要好用,就足夠了!
cglib-2.1.3.jar,CGLIB庫,Hibernate用它來實現PO字節碼的動態生成,非常核心的庫,必要。
asm.jar ASM字節碼庫 如果使用“cglib”則必要,必要
asm-attrs.jar ASM字節碼庫 如果使用“cglib”則必要,必要
ehcache.jar EHCache緩存 如果沒有其它緩存,則必要,必要
antlr.jar
ANother Tool for Language Recognition是一個工具,必要
jta.jar JTA規范,當Hibernate使用JTA的時候需要,不過App Server都會帶上,所以也是多余的。但是為了測試方便建議還是帶上。必要
commons-logging.jar Apache Commons包中的一個,包含了日志功能,必須使用的jar包。必要
commons-collections.jar Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大。必要
dom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。Hibernate用它來讀寫配置文件。必要
上面的就是Hibernate的核心jar包,是配置ssh架構中必須的,下面這些就是可選的了。
versioncheck.jar 版本檢查 可選
swarmcache.jar 可選
jboss-cache.jar TreeCache 可選
jgroups.jar 可選
xalan.jar, xerces.jar, xml-apis.jar Xerces是XML解析器,Xalan是格式化器,xml-apis實際上是JAXP。一般App Server都會帶上,JDK1.4也包含了解析器,不過不是Xerces,是Crimson,效率比較差,不過Hibernate用XML只不過是讀取配置文件,性能沒什么要緊的,所以也是多余的??蛇x
c3p0-0.9.1.jar C3p0是一個數據庫連接池,Hibernate可以配置為使用C3P0連接池。如果你準備用這個連接池,就需要這個jar包。
可選
connector.jar JCA API,如果你字啊App Server上把Hibernate配置為Connector的話,就需要這個Jar,不過實際上一般App Server肯定會帶上這個包,所以也是多余的包 可選
jboss-system.jar 可選
jboss-system.jar 使用TreeCache時必要 可選
jacc-1_0-fr.jar JACC庫 可選
checkstyle-all.jar 可選
junit.jar 測試單元 可選
javassist.jar Javassist字節碼解釋器 可選
ant-lanuncher.jar 可選
jaas.jar JAAS API 是用來進行權限驗證的,已經包含在JDK1.4里面了,所以實際上是個多余的包 可選
jdbc2_0-stdext.jar JDBC擴展API,一般來說數據庫連接池會用上它,不過App Server都會帶上,所以也是多余的。 可選
ant-antlr.jar Ant anlr支持 可選
jboss-jmx.jar 可選
cleanimports.jar cleanimports 可選 xerces.jar SAX parser jdk本版低于1.4時必要 可選
jaxen-1.1-beta-7.jar Jaxen 如果想提高啟動性能則去使用 可選
ant-junit.jar Ant junit support 可選
ant-swing.jar ant swing support
ant.jar Ant編譯工具的jar包,可選
proxool.jar Proxool JDBC連接池 可選
concurrent.jar 使用TreeCache 需要
syndiag2.jar 可選
commons.collections.jar,commons-pool.jar, commons-dbcp.jar DBCP數據庫連接池,Apache的Jakarta組織開發的,Tomcat的連接池也是DBCP.
Spring jar 包
spring.jar 是包含有完整發布模塊的單個jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。
除了spring.jar文件,Spring還包括有其它21個獨立的jar包,各自包含著對應的Spring組件,用戶可以根據自己的需要來選擇組合,而不必引入整個spring.jar的所有類文件。
spring-core.jar 這個jar文件包含Spring框架基本的核心工具類。Spring其它的組件要都要使用到這個包里的類,是其它組件基本核心,當然你也可以在自己的系統中使用這些工具類。外部依賴(Commons Logging, Log4J)
spring-beans.jar 這個jar文件是所有應用都要使用到的,它包含訪問配置文件,創建和管理bean以及進行Inversion of Control / Dependency(IoC/DI)操作相關的所有類。如果應用只需基本的IoC/DI支持,引入spring-core.jar及spring-beans.jar文件就可以了。
spring-aop.jar 這個jar文件包含在應用中使用Spring的AOP特性時所需的類和源碼級元數據的支持。使用基于AOP的Spring的特性,如聲明型事務管理(Declaritive Transaction Management),也要在應用里包含這個jar包。外部依賴(spring-core, spring-bean , AOP Alliance, CGLIB, Commons Attributes).
spring-context.jar 這個jar文件為Spring核心提供了大量的擴展,可以找到Spring ApplicationContext特性時所需的全部類,JNDI所需的全部類,instrumentation組件以及校驗Validation方面的相關類。外部依賴spring-beans, spring-aop.
spring-dao.jar 這個jar文件包含Spring DAO, Spring Transaction進行數據訪問的所有類,為了使用聲明型事務支持,還需在自己的應用里包含spring-aop.jar外部依賴spring-core, spring-aop, spring-context, JTA API.
spring-jdbc.jar這個jar文件包含Spring對JDBC數據訪問進行封裝的所有類。外部依賴spring-beans, spring-dao.
spring-support.jar 這個jar文件包含支持UI模板(Velocity, FreeMarker, JsperReports, BSH, Groovy, Jruby, Quartz, EHCache)
spring-web.jar 這個jar文件包含Web應用開發時,用到Spring框架時所需的核心類,包括自動載入Web Application Context特性的類,Struts與JSF集成類,文件上傳的支持類,Filter類和大量工具輔助類。外部依賴spring-context, Servlet API,(JSP API, JSTL, Commons FileUpload, COS).
spring-webmvc.jar 這個jar文件包含Spring MVC框架相關的所有類。包括框架的Servlets, Web MVC框架,控制器和視圖支持。當然,如果你的應用使用了獨立的框架,則無需這個JAR文件里的任何類。外部依賴spring-web, sping-support, Tiles, iText,POI.
spring-portlet.jar spring自己實現的一個類似Spring MVC的框架,包括一個MVC框架和一個控制器。外部依賴spring-web, Portlet API, Spring-webmvc.
spring-struts.jar Struts框架支持,可以更方便更容易的集成Struts框架,外部依賴spring-web, Struts.
spring-remoting.jar 這個jar文件包支持EJB,遠程調用Remoting(RMI,Hession, Burlap, Http Invoker, JAX-RPC)方面的類。外部依賴spring-aop, spring-context, spring-web,Hessian,Burlap,JAX-RPC,EJB API)。
spring-jmx.jar 這個jar包提供了對JMX1.0/1.2的支持類。外部依賴spring-beans, spring-aop, JMX API.
spring-jms.jar 這個jar包提供了對JMS1.0.2/1.1的支持類。
spring-jca.jar 這個jar包提供了對JCA1.0的支持。
spring-jdo.jar 這個jar包提供了對JDO1.0/2.0的支持。
spring-hibernate2.jar 對Hibernate2.1的支持,已經不建議使用
spring-hibernate3.jar 對Hibernate3.0/3.1/3.2的支持
spring-toplink.jar對TopLink框架的支持 spring-ibatis.jar 對Ibatis SQL Maps的支持。
另外的兩個包
spring-mock.jar 這個jar 文件包含Spring 一整套mock 類來輔助應用的測試。Spring 測試套件使用了其中大量mock 類,這樣測試就更加簡單。模擬HttpServletRequest 和HttpServletResponse 類在Web 應用單元測試是很方便的。并且提供了對JUnit的支持。外部依賴
spring-aspects.jar 提供對AspectJ的支持,以便可以方便的將面向方面的功能集成進IDE中.
Struts1.2包介紹:
commons-digester.jar Digester基于規則的XML文檔解析,主要用于XML到Java對象的映射(用來處理struts-config.xml配置文件,以達到通過XML生成相應的對象的功能)。
commons-beanutils.jar 提供對Java反射和自省API的包裝。
struts的驗證框架依賴以下的兩個包
commons-validator.jar(校驗方法)和校驗規則,支持校驗規則的和錯誤消息的國際化。struts使用它對表單進行驗證。
jakarta-oro.jar 一套文本處理工具,能提供perl5.0兼容的正則表達式AWK-like正則表達式,glob表達式。還提供替換,分割,文件名過濾等功能。
struts.jar struts的核心Jar包
antlr.jar 它可以接受詞文法語言描述,并能產生識別這些語言的語句的程序。
Struts2.1.6jar包介紹
struts2-core-2.1.6.jar struts2的核心jar包。
freemarker-2.3.13.jar Freemarker是struts2默認的模版語言
commons-logging-1.0.4.jar
ognl-2.6.11.jar Struts2默認的表達式語言OGNL:對象圖形化導航語言
xwork-2.1.2.jar 也是Struts2核心包,畢竟struts2很大部分是來自webwork
commons-io.jar (注意這個與2.0.x版本不同,即使不上傳文件這個也是需要的)
commons-fileupload-1.2.1.jar(注意這個與2.0.x版本不同,即使不上傳文件這個也是需要的)。
UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。
今天把前段時間寫過的幸福其實很簡單系列進行了匯總。
在人生旅途中,我們總在四處尋找幸福, 而幸福就在我們身邊,就在當下,就在我們的心里。
希望我們都變得很幸福~~
- 笑
如果假定我們能活80歲, 其中26年我們用在睡覺, 9年用在吃喝, 但是我們笑的時間只有20天. 笑得越開幸福也越多, 遇到不順心的事情, 更要學會笑口常開.現在你在笑嗎? 幸福其實這么簡單~~
- 感恩
學會感恩, 我們就變得寬容,不再抱怨,不再計較,發現我們擁有的東西是多么的美好; 學會感恩, 可以消解內心所有的積怨, 可以以更積極的心態去回報那些需要幫助的人;學會感恩, 可以讓我們在平凡的日常中每天都感到一絲絲的幸福.現在開始學會感恩吧.. 不多不少, 每天3個, 這樣你會發現原來生活是這么美好,原來天空是這么藍…今天你感恩了嗎?
- 孝敬父母
像我們一樣出門在外1年只有春節的時候回家, 假定1年在家里待10天,假設父母還能健在20年, 我們跟父母在一起的時間只有200天,不到1年。
孝敬是一種幸福, 因為孝敬可以使父母更健康/更長壽, 父母的健在可以讓我們感受到更多愛的傳遞和幸福。 - 困難
失敗是一種幸福, 因為它可以給你克服難關的智慧。
分手是一種幸福, 因為它讓我們明白愛情的真意。
人生低谷是一種幸福, 因為它給你一次審視人生的機會。
失意的今天是一種幸福, 因為我們幸福的明天將從這里開始。 - 活在當下
任何人失去的不是什么別的生活,而只是他現在所過的生活。任何人所過的也不是什么別的生活,而只是他現在所失去的生活。
“今天”是我們最珍貴的資產,也是唯一確定擁有的資產。所以,不管你現在面臨多么艱難的事情,請活在當下,享受當下這個時光,這才是讓自己幸福的方法。
我們很多人有夢想,有目標。
而且很多人的目標很高,夢想很遠大,而你的現實離你的夢想還很遙遠。
正因為兩者之間差距很大,在實現夢想的路程,我們很多人選擇放棄,或對太遙遠的夢想產生恐懼。
難道擁有很高的目標,遠大的夢想是一種錯誤?
其實不然。但是有一點我們需要非常清楚。那就是“無論眼界多高,也必須腳踏實地”。
無論夢想和愿望是多么高遠,現實中的每一天都要竭盡全力踏實地做。
揮灑汗水,一毫米、一厘米地前進,把橫在眼前的問題一個個地解決掉。
在夢想與現實的巨大落差中,我們有可能受打擊,但是人生只能是“每一天”的積累與”現在“的連續。
千里之行始于足下,無論多么偉大的夢想都需要經過一步一步、一天一天的積累,最終才能實現。
所以,認真、充實的度過今天,明天就會自然而然地呈現在你的眼前。
有可能你現在的每一步就像烏龜踱步,但是每一天腳踏實地地不斷積累,就這樣不知不覺中你會成長,
或你的公司會一點點地壯大起來,或你的處境會變得越來越好。
與其徒然為明日煩惱,孜孜不倦地計劃未來,不如首先傾注全力充實每一個今天,做你力所能及的事情。
這就是實現夢想的最佳有效途徑。
有志者事竟成 破釜沉舟 百二秦關終屬楚
苦心人天不負 臥薪償膽 三千越甲可吞吳
相傳蒲松齡考鄉試落第后,為銘其矢志不移,在銅尺上刻下了這副對聯用以自勉。
另一副流傳很廣的對聯是明代理學家胡居仁寫的“茍有恒,何必三更眠五更起;最無益,莫過一日曝十日寒。”
我曾聽到某成功人士如下言論“要學會堅持,只有堅持我們才能取得勝利!”我個人的觀點是:只有正確地堅持,我們才有可能取得最終的勝利。沒有定義好方向只能是盲目的亂撞。
正確的堅持才是我們取得成功的惟一法寶,才是我們真正應該學習和掌握的技能。
案例1.1 第101次求職的女士
在超過1萬場的面試經歷中,我絕大部分面試都會給候選人留出至少十分鐘的時間,他們可以在這段時間里講述自己的工作經歷和特點、提出問題以加強相互的了解。我的基本觀點是:無論應聘者是從馬路對面的家里來的,還是從天邊來到公司的,作為招聘方我們應該給予他們足夠的重視和尊敬,至少尊重他們付出的時間成本。
基于尊重是相互的這個原則,其中有3場面試求職者只在我面前待了不足5分鐘。這3位候選人都可以用表現奇差來形容,全都超出我容忍的低線,其中一位就是第101次在北京求職的幸儀女士。
至今我對那次面試仍然記憶深刻。
當時是下午,坐在桌子對面幸儀穿著很不得體的紫色晚裝。
我正要開口時幸儀說了話:“你好!這是我在北京第101次面試,希望能成功。”
略顯驚訝的我請她介紹自己時,她是回答:“簡歷上不是都有嗎?”
Leo:“呃……那還是說說您應聘獵頭顧問助理職位的優勢和不足吧。簡歷上寫的還是太籠統。”
幸儀:“我這人吧特長是有干勁兒,愿意付出,年輕?。∵€有我愿意學習,其實我是來這個行業學習的。我也不知道自己適合干什么。不足?我不太合群兒,大多數情況下不愿意接受別人的意見,除非我認為你說的對。還有我對你們行業也不是特別了解,我說了是來學習的。不過,我薪水要求還是挺合理的,希望你們能給個機會。”
Leo:“那您的期望薪水是多少呢?”
幸儀:“當然是越高越好!”
……
如果有面試官最討厭聽的十句話列表,幸儀面試時說到了其中兩句,那就是“簡歷上不是都有嗎?”和“薪水當然是越高越好。”前者代表著過分自信,而應聘者多半沒有與此相應聘的資本;后者代表著態度不夠誠懇,即不想錯失機會又怕要了高價兒失去機會。
第一次犯的錯誤和最后一次犯的錯誤完全相同。結果可想而知,她失去了這101次機會,原因沒有找到合適自己的方向的盲目堅持。如果找不到對她來說正確的方向,別說第101次就是第10001次怕是也找不到自己滿意的工作。
找到自己的職業方向,繼而正確地堅持才能讓我們在職場路上越走越順。
(有關“找方向”的方法在書第三章有具體介紹)
Tips 堅持也要選對方向堅持不是取得成功的保證,正確的堅持才是。方向有偏差就像兩條有夾角的線,開始相差也許只有1厘米,隨著不斷延長兩條線之前的距離會越來越遠,努力方向稍有偏差有時后果不堪相像。我曾經收到過一封計算機專業博士畢業生的郵件,其中他提到自己從大學開始就不喜歡計算機,但因為不好就業、成績還可以他選擇了本系保研,研究生畢業又選擇了碩博連讀,現在快畢業了,面臨著在自己不喜歡的專業方向上就業問題。他問我怎么辦?除了沉默,我自己都不知道說什么。
適當的時候請停下來調整、糾正自己的方向,上文提到的應聘者如果能及時停止盲目求職,總結自己面試時的不足加以改進,相信不會落到次次失敗的局面。計算機專業即將畢業的博士如果能盡早反思自己,可能也不至于落到如今這般田地。
案例1.3 我是否應該放棄編程
在錯誤的方向上堅持多半是苦不堪言,如果是痛苦,我們就讓他早點結束。
Leo,您好!
我最近看了您寫的文章,感覺獲益良多;但是還有一些地方感到很困惑,希望能得到您的幫助,謝謝!
首先介紹下我的情況:我是08年畢業的,專業是軟件工程,但是很慚愧,大學四年時間花在編程上的時間很少,軟件專業的,只是屬于入門級別的,java和C都只是just OK,估計叫我自己寫東西都不一定寫的出來,就連計算機的其他方面(如網絡,硬件維護,數據庫等)都比軟件開發要強。
目前我有幾個比較困惑的地方:
1、 我現在一家地方軟件公司上班,公司在當地有一定知名度,因為是剛剛入職還在業務培訓階段,發現公司用的技術很多以前沒有接觸過的(如java的Hibernate,struts等),現在學起來個人感覺很吃力,一看到代碼就覺得頭痛,我應不應該繼續在軟件行業發展下去?
2、 .我想過要轉行到其他的計算機行業去發展,但是來自家里的阻力很大,老媽經常說大學花了好幾萬的學費,讓我一定要在軟件上做下去,而且家里的長輩基本上都是這個態度,前段時間為此還和家里吵了一架。基本上我現在比較迷茫,不知道該如何選擇。
我想問您,像我這樣的情況該如何選擇呢?
甘兵
甘兵,您好!
比起本書中提到的米雪松的表妹(詳見本書案例:讀了不喜歡的專業,找工作迷茫了)好像您不但學了自己不是特別有興趣的軟件工程專業,還更進步,開始干起了“一看到代碼就覺得頭痛”的軟件開發,即干上了自己不喜歡的工作。
對于您我想說的是,首先想清楚、找到真正的方向再轉行。再判斷一下自己是否真的不喜歡軟件開發。如果回答是肯定的,那真正的興趣在哪?05年,我在IT銷售這條路上已經走過了近8年時間,而且做的不錯。雖然沒興趣并不一定代表做不好,但是我確認沒有繼續在銷售領域里發展的打算。所以我選擇了轉行,把職業方向轉到自己很有興趣的人力資源工作上。轉行差不多用了1年時間,之后我在HR領域也取得了些成績,算是轉行相對成功。這些可能要歸功于,我在轉行之前把兩個問題想的比較清楚,建議您下決定轉之前也要想想
問題一:我是不是真的對現在的工作及職業沒興趣?為什么會沒興趣?你不喜歡現在行業(職業)的真正原因是什么?
問題二:到底什么是我真正的興趣所在(具體到職業方向、職位)?我是否有能力把興趣轉化為工作?在有興趣的職業方向上我打算能走多遠?(具體到職位、年限)
問明白自己上面兩個問題之后,再做好一件事兒就可著手轉行了,那就是:正確評估轉行付出的代價。它們包括:
沒有家人的理解和支持,比如你媽媽的反對就表現之一。堅持干不喜歡的工作,有點像尊父母之命維持一段不幸福的婚姻,可能自己感覺不好,但父母會支持你。反之尋找自己喜歡的工作像在父母的反對聲中?。蓿┳约旱牧硪话?,自己可能感覺好,但多半不會得么他們支持。在沒有取得真正成績之前,不要指望家人堅定的支持。
薪水收入的下降,即轉行的現金本成。進入新行業時,我們即沒相關工作經驗、也沒有相關學歷,惟一具備的就是興趣。所以收入和生活質量都會下降。如果您能以機會為重,那么就要接受隨之而來的可能是前不到盡頭的低收入生活。
最后也是最大的代價其實是心理上的負擔。以上種種綜合因素會給打算轉行的您帶來極大心理負擔,現實中很多人退縮了,甚至還對自己之前確定的興趣產生了懷疑和動搖,。只有承壓能力極強的人,才有機會在轉行之路上走到成功。
最后說一句,如果你真對軟件開發沒興趣,那就像是嫁或者娶了一個自己不喜歡的人,這已經很不對了。如果要繼續在自己沒興趣的行業里再干下去,就像是準備跟自己不喜歡的家伙過一輩子,對自己對別人都是很殘忍。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jobchanceleo/archive/2010/06/25/5693165.aspx
Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try { con=DriverManager.getConnection("jdbc:odbc:nw","" ,"");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM 雇員 where (雇員id)>3");
out.print("<Table>");
out.print("<TR>");
out.print("<TH width=50>"+"雇員id");
out.print("<TH width=50>"+"姓氏");
out.print("<TH width=70>"+"名字");
out.print("<TH width=100>"+"雇用日期");
out.print("<TH width=50>"+"地址");
out.print("</TR>");
while(rs.next())
{
out.print("<TR>");
out.print("<TD >"+rs.getInt("1")+"</TD>");
out.print("<TD >"+rs.getString("2")+"</TD>");
out.print("<TD >"+rs.getString("名字")+"</TD>");
out.print("<TD >"+rs.getDate("雇用日期")+"</TD>");
out.print("<TD >"+rs.getString("地址")+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
sql.close();
}
catch(SQLException e1) {
out.print("error!");
out.print(e1.toString());
}
Connection con = null;
Statement sta = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String add = "jdbc:mysql://localhost:3306/blog";
String user = "root";
String pass = "123";
con = java.sql.DriverManager.getConnection(add,user,pass);
sta = con.createStatement();
String name = new String(request.getParameter("name").getBytes("iso8859_1"));
String context = new String(request.getParameter("context").getBytes("iso8859_1"));
String classID = request.getParameter("classID");
String in = "insert into rizhi values(null,'"+name+"','"+context+"',"+classID+")";
sta.executeUpdate(in);
你會休息嗎?
你根本不會休息
為什么你睡了11個小時仍然覺得疲累?
為什么你花了好幾萬去島國度假并沒有增加生活的熱情?
都說要去KTV,去夜店,去游樂園就能忘掉不快,更帶勁地開始新的一天,但是盡興歸來心里只剩空虛?
我們真的明白休息的含義嗎?我們休息對了嗎?
首先,來看看我們對休息有哪些誤解:
■腦力勞動者,補瞌睡對你沒什么用
你寫了一天的文案,編了一天程序,當一切都結束了,你嘆到:太累了,這一天我要睡個好覺。我們的常識使得我們對疲勞的第一反應就是“去躺躺吧”。但這是一個陷阱。
睡眠的確是一種有效的休息方式,但它主要對睡眠不足著或體力勞動者適用。對體力勞動者來說,“疲勞”主要是由體內產生大量酸性物質引起,如果十分疲勞,應采取靜的休息方式。通過睡覺,可以把失去的能量補充回來,把堆積的廢物排除出去。如果不是很累,也可以在床上先躺一躺,閉目靜息,讓全身肌肉和神經完全放松后,再起來活動活動。
但如果你是坐辦公室的,大腦皮層極度興奮,而身體卻處于低興奮狀態,對待這種疲勞,睡眠能起到的作用不大,(除非你是熬夜加班,連正常睡眠時間都達不到)因為你需要的不是通過“靜止”恢復體能,而是要找個事兒把神經放松下來。這樣你可以理解為什么你周末兩天不出門依舊無精打采,而只需下班后游泳半小時就神采奕奕。
■不必停下來,只是換一下
既然睡覺不能幫助我們休息大腦,那什么辦法才可以?答案是不停止活動,而只是改變活動的內容。
大腦皮質的一百多億神經細胞,功能都不一樣,它們以不同的方式排列組合成各不相同的聯合功能區,這一區域活動,另一區域就休息。所以,通過改換活動內容,就能使大腦的不同區域得到休息。心理生理學家謝切諾夫做過一個實驗。為了消除右手的疲勞,他采取兩種方式——一種是讓兩只手靜止休息,另一種是在右手靜止的同時又讓左手適當活動,然后在疲勞測量器上對右手的握力進行測試。結果表明,在左手活動的情況下,右手的疲勞消除得更快。這證明變換人的活動內容確實是積極的休息方式。
比如你星期五寫了5個小時的企劃案, 最好第二天去給你的盆栽們剪枝而不是睡到太陽曬屁股。還有一點,當你無法選擇由腦力勞動轉入體力勞動時,你不妨在腦力勞動內部轉換。法國杰出的啟蒙思想家盧梭就講過他的心得:“我本不是一個生來適于研究學問的人,因為我用功的時間稍長一些就感到疲倦,甚至我不能一連半小時集中精力于一個問題上。但是,我連續研究幾個不同的問題,即使是不間斷,我也能夠輕松愉快地一個一個地尋思下去,這一個問題可以消除另一個問題所帶來的疲勞,用不著休息一下腦筋。于是,我就在我的治學中充分利用我所發現的這一特點,對一些問題交替進行研究。這樣,即使我整天用功也不覺得疲倦了。”所以,這天你要是有好幾個問題要處理,最好交替進行,而不要處理完一個再開始的二個,那樣會很快被耗盡。
■最好的休息,是讓你重燃生活的熱情
我們的疲憊主要來自對現有的一層不變的生活的厭倦。所以最好的休息項目就是那些讓我們重新找到生活和工作熱情的活動。如果你干完一件事,能夠幸福地感嘆“明天又是新的一天。”那這件事對你來說就是最好的恢復熱情,調節情緒的方法。但可惜,我們缺乏對“休息”的想象力。我們能想出來的休息方法不是癡睡就是傻玩。
我們給你開了下面一些活動清單,基本思路是以“做”來解決“累”,用積極休息取代消極放縱。當然,最適合你的方法還是要你自己探索。事實上如果你覺得打掃衛生比坐過山車是更好的放松,那么就去吧,別管世界上的其他人都在玩什么。
也許你可以:
●用看兩小時讓你開懷的漫畫或小說代替去KTV唱那些一成不變的口水歌
●試著放棄在周六晚上去酒吧,10點入睡,然后在7點起床,去沒有人的街上走走,或是看看你從來沒有機會看到的早間劇場,你會發現這一天可以和過去的千萬個周末都不相同。
●不要再去你已經去過無數次的度假村找樂子了。找一條你你從沒去過的街道,把它走完。你會發現這個你感到膩味的城市結果你并沒有完全體會到它的妙處。
●旅行,而不是換個地方消遣。去一個地方對那個地方本身心存好奇,對自己這趟行程心存美意,感受自己經驗范圍以外的人生樣貌。而不是坐了5小時飛機,只是換個地方打麻將,換個地方游泳,換個地方打球......
●從這個周末起學習一項新的技藝,比如彈電子琴,打鼓......每周末練習1小時以上。
●去社交。不要以為它總是令人疲憊的。雖然和看書比起來,它稍有點令人緊張,但也能讓你更興奮,更有認同感。你必須每周有兩三天是和工作圈子和親戚外的人打交道。它讓你在朝九晚五的機械運行中不至失去活潑的天性。女性朋友們尤為需要走出去和朋友聚會,這些時刻你不再是滿臉寫著“效率”的中性人,而是一個裙裾飛揚的魅力焦點。
●做點困難的事,如果你是精神超級緊張的人。心理學家發現解除神經緊張的方法,是去處理需要神經緊張才能解決的問題。曾經一位精神即將崩潰的總經理找到一位醫師給出治療建議,結果他得到的處方是去動物園當馴獅師。一個月以后完全康復。所以壓力特別大的時候你可以為自己再找分工作,但不要是和你職業類似的。比如去孤兒院做義工,或者去一個復雜的機械工廠從學徒干起,或者做一道超級復雜的數學題。
往往珍惜生命的人,會不顧任何代價,去求得一個休息.休息十天、半個月,他們回來了.再看呀,是多么神奇的一種變化!他們簡直是一個新生的人了.生機勃勃,精神飽滿,懷著新的希望,新的計劃,新的生命憧憬,他們己消除疲勞,獲得了從新起航的動力---燃料。
關于種子法則(SEED)
切記:不會休息就不會工作
南昌大學醫學院 胡春松 北京大學人民醫院 胡大一
近幾年,知識分子“過勞死”屢見報端,如,年僅32歲的中國社科院學者蕭亮中;36歲的清華大學講師焦連偉;46歲的清華大學教授高文煥;36歲的浙江大學教授、博導何勇等。由于嚴重的“過勞死”現象頻繁出現,我國知識分子平均壽命僅有58歲。嚴峻的現實向許多中青年知識分子及管理層敲響了警鐘。知識分子英年早逝,不僅是個人和家庭的損失,而且是國家的重大損失。大力實施人才安全戰略的重要內容之一是保障人才安全與健康。
中青年知識分子由于事業、家庭的重擔,對于自身的健康關注甚少。不良的生活方式如長期熬夜、工作超負荷、心理壓力大、缺乏運動、營養不均衡、吸煙、嗜酒等以及睡眠障礙,悄悄地侵蝕著他們的健康。究其根源,主要有幾個方面:
首先,應當說這些知識分子不注意勞逸結合,且缺乏對工作與休息關系的辯證認識。他們似乎忘記了“不會休息就不會工作”、“身體是革命的本錢”這些至理名言。
其次,不重視定期檢查。導致知識分子英年早逝的主要疾病是生活方式病如心腦血管病、癌癥、糖尿病、肥胖等。這些病不僅發病率高,如高血壓發病率已達18.8%,個別地區甚至高達25%;而且發病年齡提前,如冠心病已提前到35歲—45歲,至少較以前提前10年左右。這些疾病早期可無任何癥狀,故人們稱高血壓為“悄悄的兇手”。因此,不進行定期檢查就會貽誤治療,直至悲劇出現。
三是缺乏相關保健知識。盡管我國著名健康教育專家們的健康保健知識講座亦不少,但遺憾的是對相關講座關注的大多數是老年群體,中青年知識分子因為工作繁忙而忽視。中青年知識分子要避免“過勞死”,就要切實認識到:1、認識工作與休息的辯證關系。要牢記“不會休息就不會工作”的格言。2、堅持定期檢查。研究表明,定期檢查是防治疾病的重要措施,體現了預防為主的方針和對“預防是最好的治療”的認識。管理層亦應重視和督促他們進行定期檢查。3、學習相關健康知識。健康講座不僅應進社區、進學校、進機關、企事業等單位,還應進高校實驗室。要讓中青年知識分子接受健康教育,認識到健康教育的重要作用。
通過上述三個方面的努力,使知識分子戒除不良的生活方式和習慣,從而大大減少生活方式相關疾病的致死致殘率。
最近,我們提出了健康的“種子”法則,即最基本的健康要素包括睡眠(Sleep)、情緒(Emotion)、運動(Exercise)和飲食(Diet)。它們構成健康的“種子”法則(S-E-E-D法則)。其內容包括:(1)睡眠法則:合理睡眠,午間小憩;(2)情緒法則:情緒穩定,心態平和;(3)運動法則:有氧運動,動靜結合;(4)飲食法則:科學飲食,營養均衡。它在人們的日常保健中起著非常重要的作用,是保持健康的基本要素和首要法則。若廣大中青年知識分子能在日常工作生活中遵守和實踐健康的“種子”法則,相信他們患心腦血管病、癌癥、糖尿病和肥胖癥的機率一定會大大減少,才華橫溢的中青年知識分子就可以為國家為人民作更多更大的貢獻。他們的平均壽命定可以從58歲上升為85歲。
天天都是休息天
M:我現在太久(超過一個時段)沒做事會覺得很沒安全感
杰:總是要休息的嘛
M:但休息太久會有罪惡感
杰:那就每天休息就不會啦(笑 ?)
M:(心中自語-自以為習慣每天休息就會麻痺喔 ?)
[摘自本日星夜談心]
天天都是休息天
雖然這句話在過常呈現休息狀態的人口中說出一點說服力都沒有(逃~)
不過也倒是很有道理咧
保持一種彈性
一種時間的彈性 情緒的彈性 思考的彈性
對於我這種過度神經質的人倒是不錯的提醒
走向不可避免的極端方向後要有回復平穩狀態的能力與彈性
如何避免“假期綜合癥”?
避免“假期綜合癥”,最重要的是要保持一顆平常心。
一、長假開始時就應該注意調節。事先做好計劃,怎么過長假因人而異,但原則是不能破壞正常的生活規律。不可過度休息,也不可過度勞累。
二、以休息為主。如果長假能以休息為主,盡可能過得輕松愉快,適度的參與比平時多的娛樂,與親友互訪或與家人團聚。如天天蒙頭大睡,或通宵上網等都不可取。
三、提前進入角色。人的神經有“自動調節”的特點,因此在上班前一天應有意識的做一些與工作有關的事,有助與盡早進入工作狀態。上班前一天要保證充足的睡眠。
四、多想開心事?;?#8220;假期綜合癥”的多是年輕人,誘因很多,比如分離性焦慮,人際交往困難,在工作中有過委屈、挫折、羞辱等經歷等。所以平時要多做一些自己開心的事,多找朋友聊聊天,呼吸新鮮空氣,換一個新鮮的環境。也可以求助心理咨詢師,畢竟心理健康,才會在事業上取得更大的成就,生活中才能體會更多的幸福!
x=x+1,x+=1,x++的效率哪個最高?
x=x+1最低,因為它的執行過程如下:
1. 讀取右x的地址;
2. x+1;
3. 讀取左x的地址;
4. 將右值傳給左邊的x(編譯器并不認為左右x的地址相同).
x=+1其次,它的執行過程如下:
1. 讀取右x的地址;
2. x=1;
3. 將得到的值傳給x(因為x的地址已經讀出).
x++最高,它的執行如下:
1. 讀取右x的地址;
2. x自增1.
Google有可能通過 posted @ 2010-04-03 17:26 甜咖啡 閱讀(229) | 評論 (0) | 編輯 收藏