第一篇:S sh 教案
S sh 教案
教學目標:
1.學會聲母s sh,能在四線格中正確書寫。
2.會讀音節(jié)si shi及其四聲。能準確拼讀帶有s sh的音節(jié)。3.幫助練習學習普通話,培養(yǎng)學習語文的興趣。教學重難點:
讀準聲母s sh及其音節(jié)si shi,準確拼讀帶有s sh的音節(jié)。教學過程:
一、復習舊知識,激趣導入。1.抽讀卡片z zh zhi c ch chi.2.導入新課:今天,我們一起認識幾個新朋友,愿意嗎?
二、指導學法,教學新課。
1.投影第一幅插圖,引導看圖:圖上有誰,正在干什么?引導說話。(一個小朋友正在撕紙。)
2.出示s的卡片,s的讀音和“撕”相似。
師范讀,生一邊做“撕”的動作一邊讀。指名讀,師正音,領讀、齊讀。
3.觀察圖畫:s的形狀像什么?(像紙條卷曲的樣子)。我們怎么記住它?如8的比較、彎來彎去的掛鉤等。編兒歌:半個8字s s s.4.s如果和好朋友站在一起就組成了音節(jié)si,讀音和s差不多,指名讀,齊讀。想:你怎么記住它。(s加i, si si si。)5.練讀四聲,用的四聲練習組詞、說話。6.小結(jié)學法?!耙巫右豢?,舌頭一翹?!睂W生自主學習sh shi。7.學生匯報,教師相機點撥、正音。
8.指導書寫s sh。師板演,生書空。美美地寫在四線格里,寫得好的能得到五星。
三、總結(jié)
1.師出示練習,生讀一讀,比一比。s----si
sh----shi
s----sh 2.指名讀一讀,師強調(diào)si shi s sh發(fā)音的不同。3.相機打亂順序抽讀。
第二篇:SSH總結(jié)面試題
張國良編輯
SSH面試題
版本1.0
1.struts1與struts2的區(qū)別 :
1、兩者之間目前只有名字是一樣的。
2、struts1是通過繼承來實現(xiàn)相關機制的。而struts2是通過接口方式來實現(xiàn)的。
3、在struts2中沒有了ActionForm使用Action來代替原來struts1中的ActionForm和Action兩者的功能。
4、Struts2比Struts1更加容易進行單元測試
5、線程安全
2.hibernate與iBATIS的區(qū)別
hibernate和ibatis都是持久層的ORM框架,hibernate是全自動化的,而ibatis是半自動化的。
為什么這樣說呢?因為hibernate把我們要用到的增、刪、改的SQL語句都封裝了,我們不需要再自己手動寫,直接調(diào)用即可,所以稱它全自動。而對于ibatis,所有的SQL語句都要我們自己來手寫,所以稱它為半自動化的框架,就等于是一個O/R Mapping 解決方案.有了這框架,只要配置下映射文件,就不需要手寫sql語句了.Hibernate是全自動化的,可以說O/R做的相當全面了.iBateis和Hibernate相比,iBatis最大的特點就是小巧,上手很快。如果你不需要太多復雜的功能,iBatis是能滿足你的要求又足 夠靈活的最簡單的解決方案
3、hibernate的優(yōu)化(項目)
1.使用雙向一對多關聯(lián),不使用單向一對多
2.靈活使用單向一對多關聯(lián)
3.不用一對一,用多對一取代
4.配置對象緩存,不使用集合緩存
5.一對多集合使用Bag,多對多集合使用Set
6.繼承類使用顯式多態(tài)
7.表字段要少,表關聯(lián)不要怕多,有二級緩存撐腰
4、hibernate中session與sessionfactory的聯(lián)系,分別什么時候用
sessionFactory、session都是由hibernate框架生成的,其中sessionFactory包括了數(shù)據(jù)庫配置和映射關系等資源,一個項目中只能生成一個sessionFactory實例。因此sessionFactory被設計成線程安全的。session是對對象進行操作并映射至對應的數(shù)據(jù)庫表中的,它由sessionFactory生成,不支持多線程并發(fā),因此它是非線程安全的。
5、hibernate中g(shù)et和load的區(qū)別
1、它們都用來根據(jù)主鍵,查找相應的記錄
2、load和get方法對緩存的應用不同,其中l(wèi)oad和get都可以使用session層的緩存,但是對于load可以應用二級緩存,而get無法使用
拋異常Null
張國良編輯
注意:criteria也是綁定session的,即隨著session的產(chǎn)生而產(chǎn)生,隨著session的消亡而消亡。如果想重用criteria對象,必須使用DetechedCriteria對象,實現(xiàn)criteria和session進行分離。
7、在項目中用hibernateORM框架與傳統(tǒng)jdbc比較有什么優(yōu)點
延遲加載:
延遲加載機制是為了避免一些無謂的性能開銷而提出來的,所謂延遲加載就是當在真正需要數(shù)據(jù)的時候,才真正執(zhí)行數(shù)據(jù)加載操作。在Hibernate中提供了對實體對象的延遲加載以及對集合的延遲加載,另外在Hibernate3中還提供了對屬性的延遲加載。
hibernate中l(wèi)azy的使用
hibernate中l(wèi)azy的使用(2008-09-12 13:57:47)
標簽:雜談分類:hibernate
hibernate中l(wèi)azy的使用
lazy,延遲加載
Lazy的有效期:只有在session打開的時候才有效;session關閉后lazy就沒效了。
lazy策略可以用在:
*
*
標簽上,可以取值true/false,這個特性需要類增強
* 等集合上,可以取值為true/false/extra
*
一、概念:即兩者之間存在關聯(lián)關系,那么在加載主對象的時候,對副對象的加載處理,是延遲或立即,比如說公司(主)-》部門(副).二、分析
1.立即檢索
實現(xiàn)方法:將
a.在業(yè)務或程序中,需要立即訪問關聯(lián)對象時可以使用.b.使用二級緩存.2.延遲檢索
實現(xiàn)方法:將
a.一對多或多對多的關聯(lián)使用.b.在程序中不需要立即訪問或者該關聯(lián)的對象不需要訪問的時候.什么時候用延遲加載
例如:銀行開戶,一個人可以開多個帳戶,一個帳戶只能屬于一個人,所以在用戶類里包含一個帳戶的集合,帳戶類里包含一個用戶類型,他們之間是一對多的關系.如過你在查詢的時候,通過用戶查詢是,如果只想查到用戶就用(hibernate)默認的延遲加載,這樣效率也高,如果你想把該用戶的的所有帳戶都一同查出來,那就需要立即加載了,這樣一來如果一個用戶對應的帳戶比較多的話,他的效率是很低的.設置加載方式一般有兩種,一種是通過映射文件(lazy=false),另一種是通過程序的方式來實現(xiàn)的也很簡單.Struts2工作流程:
Struts2:
(1)客戶端提交一個HttpServletRequest請求(.action或JSP頁面)。
(2)請求被提交到一系列Filter過濾器,如ActionCleanUp和FilterDispatcher等。
(3)FilterDispatcher是Struts2控制器的核心,它通常是過濾器鏈中的最后一個過濾器。
(4)請求發(fā)到FilterDispatcher后,FilterDispatcher詢問ActionMapper是否需要調(diào)用某個Action來處理這個Request(一般根據(jù)URL后綴是否為.action來判斷)。
(5)如果ActionMapper決定需要調(diào)用某個Action,FilterDispatcher則把請求交到ActioProxy,由其進行處理。
(6)ActionProxy通過Configuration Manager(它會訪問struts.xml)詢問框架的配置文件,找到需要調(diào)用的Action類。
(7)ActionProxy創(chuàng)建一個ActionInvocation實例,而ActionInvocation通過代理模式調(diào)用Action,(在調(diào)用之前會根據(jù)配置文
第三篇:SSH技術(shù)方案
基于Struts2+Spring+Hibernate實現(xiàn)輕量級企業(yè)式開發(fā)技術(shù)方案
一. 技術(shù)平臺
J2EE是Java2平臺企業(yè)版(Java 2 Platform Enterprise Edition)
J2EE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件、服務架構(gòu)及技術(shù)層次,均有共同的標準及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺之間,存在良好的兼容性,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無法兼容,企業(yè)內(nèi)部或外部難以互通的窘境。
J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關的復雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如“編寫一次、隨處運行”的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結(jié)構(gòu)。
J2EE體系結(jié)構(gòu)提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統(tǒng)一的開發(fā)平臺,J2EE降低了開發(fā)多層應用的費用和復雜性,同時提供對現(xiàn)有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?,添加目錄支持,增強了安全機制,提高了性能。[1]
二. 輕量級J2EE架構(gòu)
目前 J2EE 應用中,由于應用需求不同,架構(gòu)設計上分成兩種設計方式,即重量級J2EE架構(gòu)和輕量級J2EE架構(gòu)。銀行,電信,大型企業(yè)的業(yè)務系統(tǒng)邏輯復雜,結(jié)點分布廣泛,且普遍使用了物理上多層架構(gòu),事務要求性極高,對系統(tǒng)的穩(wěn)定性要求也是極高的,因此大多數(shù)使用重量級的EJB開發(fā)架構(gòu)。
一般的中小型應用系統(tǒng),所關注的是訪問速度與快速響應市場需求變化,強大的系統(tǒng)緩存功能,傳統(tǒng)的大型分布式J2EE架構(gòu)就顯得不太合適。本系統(tǒng)的開發(fā)基于 J2EE 的輕量級多層架構(gòu),即業(yè)界比較成熟的 Struts2 + Spring + Hibernate 框架: Struts2實現(xiàn) MVC 最為成熟的框架之一,在 J2EE 項目中應用廣泛; Spring 可以實現(xiàn)對 Hibernate 的無縫鏈接,適用于業(yè)務處理層;在數(shù)據(jù)持久層中,采用Hibernate 這一功能強大的 ORM 映射工具。
J2EE的三層結(jié)構(gòu)在業(yè)界是指表示層(Presentation),業(yè)務邏輯層(Business logic)以及基礎架構(gòu)層(Infrastructure)。一個最常用的擴展就是將三層體系擴展為五層體系,即表示層(Presentation)、控制/中介層(Controller/Mediator)、領域?qū)?Domain)、數(shù)據(jù)持久層(Data Persistence)和數(shù)據(jù)源層(Data Source)。它其實是在三層架構(gòu)中增加了兩個中間層??刂?中介層位于表示層和領域?qū)又g,數(shù)據(jù)持久層位于領域?qū)雍突A架構(gòu)層之間。而輕量級架構(gòu)Struts2 + Spring + Hibernate可以實現(xiàn)J2EE多層結(jié)構(gòu),Struts2用于表示層、控制層,Spring 用于業(yè)務處理層,而Hibernate用于數(shù)據(jù)持久層。[2] 三. 應用部署架構(gòu)
1.Web服務器架構(gòu)
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器。Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP規(guī)范總是能在Tomcat 中得到體現(xiàn)。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應用服務器。
Tomcat 是一個輕量級應用服務器,它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行Tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。2.系統(tǒng)數(shù)據(jù)庫 MySQL是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL的SQL語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。
四. 主要技術(shù)方案
1.表示層、控制層
表示層是整個架構(gòu)中最活躍的分層,由WEB服務器及其組件構(gòu)成,主要用于處理客戶端的請求、響應業(yè)務層組件的請求。表示層引入了基于組件開發(fā)的Struts開源框架,采用Servlet與XML等技術(shù)實現(xiàn),具有良好的可伸縮性和穩(wěn)定性,降低了系統(tǒng)開發(fā)的復雜度、提高了開發(fā)效率。
Struts:可用于快速開發(fā)JAVA WEB應用。Struts實現(xiàn)的重點在C(Controller),包括ActionServlet/RequestProcessor和開發(fā)人員定制的Action,也為V(View)提供了一系列定制標簽(Custom Tag)。Struts沒有涉及M(Model),所以Struts可以調(diào)用JAVA實現(xiàn)的任何形式的業(yè)務邏輯組件。2.業(yè)務層
在的項目開發(fā)中,每個領域都會有自己獨特的業(yè)務邏輯,由此使項目中代碼高度耦合,原本有可能被重用的代碼或功能,因為與具體的業(yè)務邏輯綁定在一塊而導致很難被重用。因此我們將實現(xiàn)這些具體邏輯的代碼抽取出來分為單獨的一層,其目的是希望通過層,來降低它與系統(tǒng)其他部分的耦合度?,F(xiàn)實中世界是變化的,既然該層實現(xiàn)的是現(xiàn)實中具體的業(yè)務邏輯,那該層的實現(xiàn)代碼不可避免的會發(fā)生變更。怎樣讓該層適應最大的變化,做到最小的改動?通常我們在編碼的時候會盡量考慮到同一業(yè)務多種實現(xiàn)的兼容和可擴展的能力。因此我們在該層借助了Spring,通過依賴注入、AOP應用、面向接口編程,來降低業(yè)務組件之間的耦合度,增強系統(tǒng)擴展性。
IOC(Inversion of Control),譯作反轉(zhuǎn)控制,其功能是將類之間的依賴轉(zhuǎn)移到外部的配置文件中,避免在調(diào)用類中硬編碼實現(xiàn)類,因此也被稱作依賴注入(Dependency Injection)。在以往的開發(fā)中,通常利用工廠模式(Factory)來解決此類問題,其實不管是工廠模式還是依賴注入,調(diào)用類與實現(xiàn)類不可能沒有任何依賴,工廠模式中工廠類通常根據(jù)參數(shù)來判斷該實例化哪個實現(xiàn)類,Spring IOC將需要實例的類在配置文件文件中配置。使用Spring IOC能得到工廠模式同樣的效果,而且編碼更加簡潔。3.數(shù)據(jù)持久層
Hibernate是一個ORM工具,它不僅僅是實現(xiàn)了數(shù)據(jù)庫訪問性能優(yōu)化和與數(shù)據(jù)庫交互的常用操作(CRUD),還將數(shù)據(jù)表與對象進行了關聯(lián),讓開發(fā)人員可以脫離數(shù)據(jù)表,而直接針對對象來與數(shù)據(jù)庫交互,開發(fā)人員不再需要用字符串去描述表中字段,這使得編碼中可書寫性提高。
在本系統(tǒng)中已經(jīng)抽象出了一個CRUD DAO組件基類,利用JDK5.0的泛型技術(shù),每個繼承此組件基類的DAO都持有自身的持久對象類型,非常方便操作。在此基類中涵蓋了大多數(shù)數(shù)據(jù)庫操作方法,如CRUD,分頁,屬性查詢等。[3]
參考資料
[1] J2EE[EB] 百度百科http://baike.baidu.com/view/1507.htm [2] J2EE中三種框架Spring + Struts +Hibernate [EB] 百度百科http://baike.baidu.com/view/16184.htm#sub5909255 [3] 李剛.輕量級Java EE 企業(yè)應用實戰(zhàn) Struts2+Spring3+hibernate整合開發(fā)[M] 北京:電子工業(yè)出版社,2012
第四篇:ssh架構(gòu)個人總結(jié)
(轉(zhuǎn)載)看過了兩三個SSH搭建的視頻(浪曦風中葉老師、尚學堂李勇老師的兩個視頻),也跟著視頻把這個框架搭了兩遍,有點迷迷糊糊的,為了加深印象,我決定不依靠視頻再來搭一遍,經(jīng)過一天的調(diào)試與處理,終于能夠獨立自主地把SSH框架給搭建起來了,不容易啊。
其中出現(xiàn)的錯誤以及各種各樣的BUG不計其數(shù),通過查閱文檔以及Google得到了解決。這里,我就來做一個總結(jié):
SSH框架的基本配置:
1.相關jar包的引入,這里我采用的是spring2 + struts2 + hibernate3的組合,搭完了之后才發(fā)現(xiàn)Spring已經(jīng)到3了,不知道在Spring3上面的配置是否相同,有待嘗試。
Code:
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.-----核心jar包-----# spring.jar# struts2-core.jar# xwork-core.jar# mysql-connector-java.jar# hibernate3.jar# struts2-spring-plugin.jar-----在默認配置下核心jar所依賴的jar包---# commons-collections.jar---|# commons-fileupload.jar-----|------------這三個jar包是在jakarta-commons項目中一些# commons-logging.jar--------|基于JDK上擴展的工具包。# freemarker.jar# log4j.jar# ognl.jar# dom4j.jar# jta.jar# cglib-nodep.jar# antlr.jar------------這個jar包是spring AOP 采用 動態(tài)代理 時需要的jar包。
2.相關的配置
i)/WEB-INF/web.xml
a.需要配置一個Struts2的Filter:
Code:
1.2.3.
4.5.6.
8.
b.由于從struts2.1.3之后的版本不再建議采用
org.apache.struts2.dispatcher.FilterDispatcher,所以,我們最好
配置成StrutsPrepareAndExecuteFilter或者StrutsExecuteFilter以及StrutsPrepareFilter,需要注意的是:如果配置
成StrutsExecuteFilter需要將StrutsPrepareFilter也配置上,否則將會報錯。所以建議就只直接采用StrutsPrepareAndExecuteFilter。c.此外還需要配置一個ContextListener:
Code:
1.2.3.4.5.
如果你的applicationContext.xml沒有配置在/WEB-INF/目錄或者采用的不是默認的文件名,則還需要配置context-param,讓Spring找到對應的配置文件,如下(注意:param-name的內(nèi)容一定是
contextConfigLocation,Spring將根據(jù)該名稱注入到相應的對象中):
Code:
1.2.3.4. contextConfigLocation classpath*:application-Context.xml
ii)applicationContext.xml,這個文件是比較核心的文件:
a)配置sessionFactory,有兩種配置方式:
(1)采用傳統(tǒng)的Hibernate配置文件,將其映射到sessionFactory中:
Code:
1. ”> 2.3.4.5.
采用這種方式時,需要在hibernate.cfg.xml文件中配置數(shù)據(jù)連接相關信息,這里與一般的hibernate配置文件一樣:
Code:
1.
3.4.5.
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/ssh_test
6.7.8.9.10.11.12.13.14.15.
root
orange
org.hibernate.dialect.MySQLDialect
true
Code:
1.2. ”> 3.4.5.6.7.8.9.10.11.12.13.14. ”> 15.16.17.18.19.20.21.22.23.24.25. org.hibernate.dialect.MySQLDialect true 27.
b)配置完sessionFactory后,還可以根據(jù)需要配置以下三方面的內(nèi)容,也可以不配置選擇采用默認的方式:
Code:
1.2. nManager”> 3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.
這樣就基本完成了我們的ssh的相關配置。
3.SSH的基本使用:
具體分工:
# 在applicationContext.xml中配置相關的bean信息
Code:
1.2.3.4.5.6. 7.
這里的property屬性中name值對應的是相應處理類生成時需要IoC容器注入的屬性,比如說id為loginAction的處
理類為com.ssh.action.LoginAction(它其中應當設置一個
setService(UserService service)方法),這樣在需要使
用該bean時,IoC容器會調(diào)用這個setService方法來將生成的userService對象傳入。
需要注意的是,如果想讓IoC容器注入相應屬性,則必須要實現(xiàn)相應屬性的set方法。
# 在struts.xml中配置action的相關信息
相關注意事項:
由于所有的bean都由Spring來管理,那么在struts.xml中一個action的class屬性就不能寫成具體的類,而是要使用該類在applicationContext.xml文件中配置的Bean的id,如:
Code:
1.2.3.4.
這個loginAction對應的就是上面的id為loginAction的bean,而這個bean的class屬性中設置的才是真正的對應的Action的處理類。
# 對于每個模型,都要有一*.hbm.xml
3.其它一些注意點:
Spring中一些的概念很重要:AOP,IOC。
第五篇:(優(yōu)質(zhì))寶劍鋒從磨礪出,磨礪Ssh
優(yōu)質(zhì)范文:
寶劍鋒從磨礪出
經(jīng)過嚴寒的考驗,梅花變得更加美麗。經(jīng)過冰雪的重壓,松柏變得更加挺拔。經(jīng)過風雨的打擊,雨燕變得更加矯健。
梅花香自苦寒來,寶劍鋒從磨礪出。人也是一樣,只有經(jīng)過了苦難,才能成就大事業(yè)。有位名人這樣說“自古英雄多磨難,從來紈绔少偉男”。韓信的事跡人人皆知,他出身于一個貧苦的家庭,曾經(jīng)在貧困的時候,向河邊洗衣服的婦人討過飯。但縱使這么貧困,他也從未放棄過努力,他努力學習兵法,最終獲得成功,成為漢朝的大將,并封為王候。
韓信的事跡不是很好的說明了這一觀點嗎?寶劍鋒從磨礪出。他經(jīng)過了生活的磨礪,終于獲得了成功。
古往今來,不必說蘇秦等人的懸梁刺骨,也不必說匡衡等人的鑿壁偷光、囊螢映雪,單是祖逖的聞雞起舞足以讓后人贊嘆不已,他們經(jīng)歷了生活的磨難,并戰(zhàn)勝了磨難,最終獲得了成功。
著名的發(fā)明家愛迪生就是這樣一個人,生活給予了他一次又一次打擊。他小時候在火車上做實驗失敗,被車長打聾了一只耳朵,但他沒有放棄,苦難造就了他的輝煌,也磨練了他的意志。他為發(fā)明電光泡,做了一千次實驗,但正如別人所說的一樣 “沒有那一千次失敗,就沒有一千零一次的成功,沒有苦難環(huán)境的造就,就不可能有愛迪生的成功?!?/p>
生活的磨礪把愛迪生磨礪成了一把寶劍,并最終使他獲得了成功。在《報任安書》中,司馬遷這樣寫道“文王拘而演《周易》,仲尼厄而作《春秋》,屈原放逐,乃賦《離騷》,左丘失明,闕有《國語》,不韋遷蜀,世傳《呂覽》??大抵圣賢發(fā)憤之所為作也?!笔巧畹目嚯y與磨礪,使他們獲得了最終的成功。
蘇東坡也是這樣的一個人,仕途的苦悶,喪妻的悲哀,人生的坎坷,命運的多艱,沒能打跨這個偉人。在黃州,在蘇州,在他貶謫的地點,處處可以聽到他那膾炙人口的名句。
孟子說,“天將降大任于是人也,必先苦其心志,勞其筋骨,餓其體膚,行拂亂其所為,所以動心忍性,增益其所不能”。不經(jīng)歷風雨,怎能看到彩虹?
請記住,寶劍鋒從磨礪出,梅花香自苦寒來,不經(jīng)歷磨難,哪能隨隨便便成功。