第一篇:VC++調(diào)用matlab引擎方法設(shè)置(個(gè)人總結(jié))
VC++調(diào)用matlab引擎找不到dll問(wèn)題
最近嘗試在Win7系統(tǒng)下,用VC++6.0調(diào)用MatlabR2010a引擎,正常配置后發(fā)現(xiàn)程序能夠正常編譯,但運(yùn)行時(shí)報(bào)錯(cuò)如下,說(shuō)找不到libmx.dll,網(wǎng)上查發(fā)現(xiàn)有不少人遇到這樣的問(wèn)題,有人說(shuō)系統(tǒng)、軟件都太新了,難免出問(wèn)題,倒是有人提議系統(tǒng)變量路徑配置不正確,嘗試下確實(shí)可以。
下面把整個(gè)設(shè)置過(guò)程講下:
要在VC中成功編譯Matlab引擎程序,必須包含引擎頭文件engine.h并引入Matlab對(duì)應(yīng)的庫(kù)文件libmx.lib、libmat.lib、libeng.lib。具體的說(shuō),打開一個(gè)工程后,做如下設(shè)置:
1)通過(guò)菜單工具/選項(xiàng),打開選項(xiàng)頁(yè),點(diǎn)擊項(xiàng)目和解決方案,然后在頁(yè)面右面“顯示以下內(nèi)容的目錄”下拉列表框中選擇“包含文件”,添加路徑:“D:Program filesMATLABR2010aexterninclude”。
2)選擇“庫(kù)文件”,添加路徑:d:Program FilesMATLABR2010aexternlibwin32microsoft。
以上步驟1)、2)只需設(shè)置一次,因?yàn)槭菍?duì)VC++6.0整體工作環(huán)境的設(shè)置。
3)右擊工程/屬性,打開項(xiàng)目屬性頁(yè),選擇鏈接器/輸入,在附加依賴項(xiàng)編輯框中,添加文件名libmx.lib libmat.lib libeng.lib libmex.lib,中間用空格隔開。
步驟3)對(duì)每個(gè)項(xiàng)目都要單獨(dú)設(shè)定。另外有一種比較簡(jiǎn)單的方法,可以自動(dòng)加載lib庫(kù)文件,在工程的stdafx.h中寫入以下語(yǔ)句: //自動(dòng)連接Matlab庫(kù)函數(shù) #pragma comment(lib,“l(fā)ibeng.lib”)#pragma comment(lib,“l(fā)ibmx.lib”)#pragma comment(lib,“l(fā)ibmex.lib”)#pragma comment(lib,“l(fā)ibmat.lib”)4)如此設(shè)置后,能夠正常編譯,但運(yùn)行時(shí)報(bào)錯(cuò)還說(shuō)找不到dll文件,如下
而libmx.dll是存在于D:Program FilesMATLABR2010abinwin32文件夾中,而在Win7系統(tǒng)變量里Matlab在安裝的時(shí)候時(shí)只寫入了路徑D:Program FilesMATLABR2010abin,故系統(tǒng)不會(huì)自動(dòng)到其子文件中找dll,從而報(bào)錯(cuò)說(shuō)找不到文件,這也解釋了為什么舊版本的Matlab無(wú)此問(wèn)題,因?yàn)榭赡芘f版本的Matlab中沒有將這些dll分離放到win32子文件夾中。所以只要在系統(tǒng)變量中包含路徑D:Program FilesMATLABR2010abinwin32即可,右擊我的電腦選擇屬性高級(jí)系統(tǒng)設(shè)置環(huán)境變量選擇系統(tǒng)變量的新建如下圖。
如果以上設(shè)置完成后,運(yùn)行仍報(bào)錯(cuò),可以嘗試將VC++關(guān)掉再啟動(dòng),我就是這樣OK了!
單擊畫四朵花按鈕,如圖出現(xiàn)MATLAB繪圖窗口: void CMATLABEngineDlg::OnPlotFollwer(){ // TODO: Add your control notification handler code here if(!r){
MessageBox(“沒有啟動(dòng)matlab”,MB_OK|MB_ICONINFORMATION);
return;} //畫四只花朵
engEvalString(ep,“z1=sym('(x^2+y^2)^(1/2)');”);engEvalString(ep,“z=sin(z1);”);engEvalString(ep,“subplot(2,2,1),ezsurf(z);”);engEvalString(ep,“z=sin(z1)*cos(z1);”);engEvalString(ep,“subplot(2,2,2),ezsurf(z);”);engEvalString(ep,“z=sin(z1)/tan(z1);”);engEvalString(ep,“subplot(2,2,3),ezsurf(z);”);engEvalString(ep,“z=cos(z1);”);engEvalString(ep,“subplot(2,2,4),ezsurf(z);”);}
引
擎!
“,”MATLAB
引
擎
void CMATLABEngineDlg::OnCancel(){ // TODO: Add extra cleanup here if(r){
}
engClose(ep);//關(guān)閉matlab引擎 }
CDialog::OnCancel();
第二篇:個(gè)人對(duì)Java構(gòu)造方法調(diào)用的總結(jié)(精選)
個(gè)人對(duì)Java構(gòu)造方法調(diào)用的總結(jié)
1.構(gòu)造方法必須與定義它的類有完全相同的名字。構(gòu)造方法沒有返回類型,也沒有void。
2.類可以不聲明構(gòu)造方法,這時(shí)類中隱含聲明了一個(gè)方法體為空的無(wú)參構(gòu)造方法。但當(dāng)類有明確聲明構(gòu)造方法時(shí),它就不會(huì)自動(dòng)生成。
3.構(gòu)造方法的調(diào)用:子類首先要調(diào)用父類的構(gòu)造方法才能繼承父類的屬性和方法。如果子類的構(gòu)造方法中沒有顯式地調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用父類無(wú)參數(shù)的構(gòu)造方法。說(shuō)說(shuō)3種情況:
①父類和子類都沒有顯式定義構(gòu)造方法或者只定義了無(wú)參構(gòu)造方法,這種情況下沒有問(wèn)題,Java 會(huì)順著繼承結(jié)構(gòu)往上一直找到 Object,然后從 Object 開始往下依次執(zhí)行構(gòu)造函數(shù)。以下兩個(gè)例子效果一樣,只是Example2有相關(guān)輸出: Example1 public class test1 { public static void main(String[] args){
A example =new A();} }
class A extends B{ } class B{ }
Example2:
public class test { public static void main(String[] args){
A example =new A();} }
class A extends B{ public A(){
System.out.println(“A's constructor is invoked.”);} } class B{ public B(){ System.out.println(“B's constructor is invoked.”);} } 輸出:B's constructor is invoked
A's constructor is invoked
②父類只定義有參構(gòu)造方法,那么無(wú)論子類如何定義,編譯都會(huì)報(bào)錯(cuò),因?yàn)楦割惾鄙倭四J(rèn)無(wú)參構(gòu)造方法,需要顯式定義。
public class test { public static void main(String[] args){
A example =new A(3);} }
class A extends B{ public A(int a){
System.out.println(“A's constructor is invoked.”+“a=”+a);} }
class B{ private int b=0;//public B(){ // System.out.println(“B's constructor is invoked.”);//}
public B(int b){
System.out.println(“B's constructor is invoked.”+“b=”+b);} } 把注釋符去掉就可以編譯,輸出:B's constructor is invoked.A's constructor is invoked.a=3
③在父類只有有參構(gòu)造方法而沒有無(wú)參構(gòu)造方法時(shí),可以用super(參數(shù))來(lái)調(diào)用父類構(gòu)造方法,但super無(wú)參時(shí)需要父類的無(wú)參構(gòu)造方法。public class test { public static void main(String[] args){
A example =new A(3);} }
class A extends B{ public A(int a){
super(a);
System.out.println(“A's constructor is invoked.”+“a=”+a);} } class B{ private int b=0;
public B(int b){
System.out.println(“B's constructor is invoked”+“b=”+b);} } 輸出:B's constructor is invoked.b=3 A's constructor is invoked.a=3 此處指定用super(3)調(diào)用public B(int b),所以就有如下輸出: B's constructor is invoked.b=3 A's constructor is invoked.a=3
第三篇:java 調(diào)用webservice的各種方法總結(jié)
一、利用jdk web服務(wù)api實(shí)現(xiàn),這里使用基于 SOAP message 的 Web 服務(wù)
1.首先建立一個(gè)Web services EndPoint:
Java代碼
package Hello;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;
@WebService
public class Hello {
@WebMethod
public String hello(String name){
return “Hello, ” + name + “n”;}
public static void main(String[] args){
// create and publish an endpoint
Hello hello = new Hello();
Endpoint endpoint Endpoint.publish(“http://localhost:8080/hello”, hello);
} }
=
2.使用 apt 編譯 Hello.java(例:apt-d [存放編譯后的文件目錄] Hello.java),會(huì)生成 jaws目錄
3.使用java Hello.Hello運(yùn)行,然后將瀏覽器指向http://localhost:8080/hello?wsdl就會(huì)出現(xiàn)下列顯示
4.使用wsimport 生成客戶端
使用如下:wsimport-p.-keep http://localhost:8080/hello?wsdl
5.客戶端程序:
Java代碼
1.class HelloClient{ 2.3.public static void main(String args[]){ 4.5.HelloService service = new HelloService();6.7.Hello helloProxy = service.getHelloPort();8.9.String hello = helloProxy.hello(“你好”);10.11.System.out.println(hello);12.13.} 14.15.} 16.二、使用xfire,我這里使用的是myeclipse集成的xfire進(jìn)行測(cè)試的
利用xfire開發(fā)WebService,可以有三種方法:
1一種是從javabean 中生成;
一種是從wsdl文件中生成;
還有一種是自己建立webservice
步驟如下:
用myeclipse建立webservice工程,目錄結(jié)構(gòu)如下:
首先建立webservice接口,代碼如下:
Java代碼
1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public interface IHelloWorldService { 8.9.10.11.public String example(String message);12.13.14.15.} 16.Java代碼
1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public class HelloWorldServiceImpl implements IHelloWorldService { 8.9.10.11.public String example(String message){ 12.13.return message;14.15.} 16.17.18.19.} 20.修改service.xml 文件,加入以下代碼:
Xml代碼
1.2.3.
客戶端實(shí)現(xiàn)如下:
Java代碼
1.package com.myeclipse.wsExample.client;2.3.import java.net.MalformedURLException;4.5.import java.net.URL;6.7.8.9.import org.codehaus.xfire.XFireFactory;10.11.import org.codehaus.xfire.client.Client;12.13.import org.codehaus.xfire.client.XFireProxyFactory;14.15.import org.codehaus.xfire.service.Service;16.17.import org.codehaus.xfire.service.binding.ObjectServiceFactory;18.19.20.21.import com.myeclipse.wsExample.IHelloWorldService;22.23.24.25.public class HelloWorldClient { 26.27.public static void main(String[] args)throws MalformedURLException, Exception { 28.29.// TODO Auto-generated method stub 30.31.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);32.33.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());34.35.String url=“http://localhost:8989/HelloWorld/services/HelloWorldService”;36.37.38.39.try 40.41.{ 42.43.44.45.IHelloWorldService hs=(IHelloWorldService)xf.create(s,url);46.47.String st=hs.example(“zhangjin”);48.49.System.out.print(st);50.51.} 52.53.catch(Exception e)54.55.{ 56.57.e.printStackTrace();58.59.} 60.61.} 62.63.64.65.} 66.這里再說(shuō)點(diǎn)題外話,有時(shí)候我們知道一個(gè)wsdl地址,比如想用java客戶端引用.net 做得webservice,使用myeclipse引用,但是卻出現(xiàn)無(wú)法通過(guò)驗(yàn)證的錯(cuò)誤,這時(shí)我們可以直接在類中引用,步驟如下:
Java代碼
1.public static void main(String[] args)throws MalformedURLException, Exception { 2.3.// TODO Auto-generated method stub 4.5.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);6.7.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());8.9.10.11.//遠(yuǎn)程調(diào)用.net開發(fā)的webservice 12.13.Client c=new Client(new URL(“http://www.tmdps.cn/axis2/
同理,也需要將axis2復(fù)制到webapp目錄中
在axis2中部署webservice有兩種方法,第一種是pojo方式,這種方式比較簡(jiǎn)單,但是有一些限制,例如部署的類不能加上包名
第二種方式是利用xml發(fā)布webservice,這種方法比較靈活,不需要限制類的聲明
下面分別說(shuō)明使用方法:
1.pojo方式:在Axis2中不需要進(jìn)行任何的配置,就可以直接將一個(gè)簡(jiǎn)單的POJO發(fā)布成WebService。其中POJO中所有的public方法將被發(fā)布成WebService方法。先實(shí)現(xiàn)一個(gè)pojo類:
Java代碼
1.public class HelloWorld{ 2.3.public String getName(String name)4.5.{ 6.7.return ”你好 “ + name;8.9.} 10.11.public int add(int a,int b)12.13.{ 14.15.return a+b;16.17.} 18.19.} 20.由于這兩個(gè)方法都是public類型,所以都會(huì)發(fā)布成webservice。編譯HelloWorld類后,將HelloWorld.class文件放到%tomcat%webappsaxis2WEB-INFpojo目錄中(如果沒有pojo目錄,則建立該目錄),然后打開瀏覽器進(jìn)行測(cè)試:
輸入一下url:
http://localhost:8080/axis2/services/listServices
會(huì)列出所有webservice
這是其中的兩個(gè)webservice列表,接著,在客戶端進(jìn)行測(cè)試:
首先可以寫一個(gè)封裝類,減少編碼,代碼如下:
Java代碼
1.package MZ.GetWebService;2.3.import javax.xml.namespace.QName;4.5.6.7.import org.apache.axis2.AxisFault;8.9.import org.apache.axis2.addressing.EndpointReference;10.11.import org.apache.axis2.client.Options;12.13.import org.apache.axis2.rpc.client.RPCServiceClient;14.15.16.17.18.19.public class GetWSByAxis2 { 20.21.private static String EndPointUrl;22.23.private static String QUrl=”http://ws.apache.org/axis2“;
24.25.private QName opAddEntry;26.27.public String WSUrl;28.29.public RPCServiceClient setOption()throws AxisFault 30.31.{ 32.33.RPCServiceClient serviceClient = new RPCServiceClient();34.35.Options options = serviceClient.getOptions();36.37.EndpointReference targetEPR = new EndpointReference(WSUrl);38.39.options.setTo(targetEPR);40.41.return serviceClient;42.43.} 44.45.46.47.public QName getQname(String Option){ 48.49.50.51.return new QName(QUrl,Option);52.53.} 54.55.//返回String 56.57.public String getStr(String Option)throws AxisFault 58.59.{ 60.61.RPCServiceClient serviceClient =this.setOption();62.63.64.65.opAddEntry =this.getQname(Option);66.67.68.69.String str =(String)serviceClient.invokeBlocking(opAddEntry, 70.71.new Object[]{}, new Class[]{String.class })[0];72.73.return str;74.75.} 76.77.// 返回一維String數(shù)組 78.79.public String[] getArray(String Option)throws AxisFault
80.81.{ 82.83.RPCServiceClient serviceClient =this.setOption();84.85.86.87.opAddEntry =this.getQname(Option);88.89.90.91.String[] strArray =(String[])serviceClient.invokeBlocking(opAddEntry, 92.93.new Object[]{}, new Class[]{String[].class })[0];94.95.return strArray;96.97.} 98.99.//從WebService中返回一個(gè)對(duì)象的實(shí)例
100.101.public Object getObject(String Option,Object o)throws AxisFault 102.103.{ 104.105.RPCServiceClient serviceClient =this.setOption();106.107.QName qname=this.getQname(Option);108.109.Object object = serviceClient.invokeBlocking(qname, new Object[]{},new Class[]{o.getClass()})[0];110.111.return object;112.113.} 114.115.116.117.///////////////////////////////////////// 讀者可以自己封裝數(shù)據(jù)類型,如int,byte,float等數(shù)據(jù)類型
118.119.} 120.客戶端調(diào)用方法:
Java代碼
1.MZ.GetWebService.GetWSByAxis2 ws=new MZ.GetWebService.GetWSByAxis2();2.3.ws.WSUrl=”http://localhost:8989/axis2/services/HelloWorld“;4.5.HelloWorld hello=(HelloWorld)ws.getObject(”getName“, HelloWorld.class);6.7.8.9.10.11.System.out.println(hello.getName(”zhangjin“));12.2.使用service.xml發(fā)布webservice,這種方式和直接放在pojo目錄中的POJO類不同。要想將MyService類發(fā)布成Web Service,需要一個(gè)services.xml文件,這個(gè)文件需要放在META-INF目錄中,該文件的內(nèi)容如下:
Xml代碼
1.
http://localhost:8080/axis2/services/myService?wsdl
除此之外,還有直接可以在其中制定webservice操作方法:可以這樣些service.xml文件
Java代碼
1. 10.11.service.HelloWorld 12.13. 14.15.
第四篇:個(gè)人讀書方法總結(jié)(..
{讀書}個(gè)人讀書方法總結(jié)(看Jun Yang兄的讀書文章后有感而寫)
看了Jun Yang的文章,我也想寫我自己的讀書總結(jié)了,呵呵。
不過(guò)看這個(gè)的前提是:每個(gè)人的讀書習(xí)慣都是不同的,不要隨便“全盤”拿別人的習(xí)慣來(lái)培養(yǎng)自己的習(xí)慣,找到合適自己的才是最重要的。“全盤”二字重點(diǎn),不要全盤接受別人的習(xí)慣。我下面所說(shuō)的也不一定是讀到我文章的人所需要的。
我的讀書方法,一些是我爸爸培養(yǎng)的,一些是我以后總結(jié)的。
1、挑選合適的時(shí)間連續(xù)閱讀。
我也一樣不推薦計(jì)劃閱讀。看了Jun Yang的文章,在這一點(diǎn)有些共鳴。
C專家編程的作者Peter Van Der Linden曾經(jīng)玩笑的解釋“什么時(shí)候數(shù)組與指針相同”這個(gè)標(biāo)題的時(shí)候說(shuō):
The C Programming Language,第二版(K&R)99頁(yè)的底部是:
作為函數(shù)定義的形式參數(shù),然后翻到第100頁(yè),緊接前一句,char s[]和char* s是一樣的。
嗚呼,真是不幸,這么重要的一句話竟然在K&R第二版種被分別印在兩頁(yè)上。
嗯,如果按計(jì)劃看這樣的書,恰巧看到99頁(yè),而不看100頁(yè),那么100頁(yè)的關(guān)鍵部位豈不是看不到?呵呵,玩笑。
畢竟連續(xù)閱讀頭腦才有印象。看書不是鍛煉,看書不是鍛煉記憶力,獲取書本知識(shí)不能“量化”。
2、快速瀏覽,然后多看幾遍。
這個(gè)是我爸爸在我小時(shí)候就給我提的,我接受了這個(gè)建議到現(xiàn)在。他給我說(shuō):書你一遍看完就掌握其中重要的內(nèi)容是不現(xiàn)實(shí)的。但是在掌握之前要有個(gè)大概的印象,掌握這個(gè)印象的方法就是快速瀏覽,不要知道某些條目是為什么,需要研究的重點(diǎn)就記下來(lái),第二次看的時(shí)候再去仔細(xì)看,能理解多少就是多少,第一次要以看完為目的。而真正掌握,是隨后的通讀,有了第一遍的基礎(chǔ),隨著看這本書的次數(shù)增加,看書速度會(huì)越來(lái)越快,因?yàn)轭^腦里早已經(jīng)知道那些是沒有掌握的,已經(jīng)掌握的就會(huì)快速略過(guò),但是會(huì)加深印象。此后可以帶著實(shí)際問(wèn)題從新來(lái)翻閱該書,會(huì)有更深的理解。《C++Primer第三版》潘愛民老師翻譯的版本,我在2002年購(gòu)買到現(xiàn)在看了不知道多少遍了。從最初的花了近3個(gè)月的瀏覽第一遍,到現(xiàn)在的可以花一天就可以通讀一遍。期間給我?guī)?lái)了不少好處。
曾經(jīng)非常非常不待見這種方法,自從親身使用過(guò)好感到確實(shí)是好方法。特別是一些技術(shù)書籍,盡管你第一遍看的很仔細(xì),你仍然不能記住對(duì)你來(lái)說(shuō)第一次接觸到的概念,讀多了(可能跟艾賓浩斯曲線有關(guān)吧),記住的概念多了,也就更好理解了。
3、學(xué)會(huì)記憶也要學(xué)會(huì)忘記。
記住重點(diǎn),盡量忘記細(xì)節(jié)。甚至記住哪本書可以找到這個(gè)概念就夠了,然后忘記它。每個(gè)人對(duì)待書的態(tài)度不同的,或許與自己的成長(zhǎng)經(jīng)歷有關(guān)。我的習(xí)慣是,記住重點(diǎn),想了解細(xì)節(jié)再去查。學(xué)會(huì)記住很難,其實(shí)學(xué)會(huì)忘記也很難。有時(shí)候記憶是一種負(fù)擔(dān),日積月累會(huì)很沉重,不用的知識(shí)會(huì)越來(lái)越多,而且書承載的是作者他的想法,看書在吸收知識(shí)的時(shí)候,無(wú)形中也在被作者所“干涉”思想。但模仿的過(guò)程是學(xué)習(xí)的重要過(guò)程,但脫離不了模仿就不能成為自己的思想和知識(shí)。學(xué)會(huì)查是一種重要的手段,還是《C++Primer》,前幾天我還就構(gòu)造函數(shù)和析構(gòu)函數(shù)的細(xì)節(jié),特別對(duì)多繼承的析構(gòu)函數(shù)作為重點(diǎn)仔細(xì)看了一下,有時(shí)候一些類似常用的概念,有很多種形式,平時(shí)也就用最常用的,那些不常用換言之特殊的概念,能查就可以了。嗯,看了Jun Yang的第二點(diǎn),他說(shuō)“知識(shí)存儲(chǔ)機(jī)器”,呵呵有些夸張了。不過(guò)也可以理解他這么說(shuō),上面我已經(jīng)提到書本給我們帶來(lái)的負(fù)面影響了。
“看書”而不是“讀書”,讀書也是中國(guó)常用詞語(yǔ)。英語(yǔ)就是read book。很多人都喜歡用嘴去“讀”書,或者邊看書邊自言自語(yǔ)。這是不太好的一個(gè)習(xí)慣,讀是一種干擾人思維的方式。語(yǔ)言雖然能加深記憶,但會(huì)影響思考。
4、不要“太”強(qiáng)迫自己。
不喜歡就不要看,看不進(jìn)去可以極端的選擇干脆不看,或者隔一段時(shí)間再看,或者靜下心來(lái)的時(shí)候再看,或者換一本同類的書,按照自己需要的知識(shí)點(diǎn)來(lái)尋找書籍。曾經(jīng)和朋友交流過(guò),他說(shuō)《編譯原理》也就是那本經(jīng)典的“龍書”,雖然他也知道很好,可怎么也看不進(jìn)去,不知道為什么。但是看《編譯原理與實(shí)踐》,他很容易的就看進(jìn)去了,之后,他根據(jù)掌握的編譯原理寫了一個(gè)匯編語(yǔ)言的代碼著色器,可以生成UBB代碼和HTML代碼。
我為什么要突出不要“太”強(qiáng)迫自己這個(gè)“太”呢?有時(shí)候也需要強(qiáng)迫一下自己,不能太隨性,也得掌握一個(gè)度。有時(shí)候很重要的概念書籍,看起來(lái)是很枯燥的,朋友建議看的書,可能有他受益過(guò)的地方。比如我看《Structure and Interpretation
of Computer Programs(SICP)》,就是那位只能看《編譯原理與實(shí)踐》的朋友推薦我看的,北大裘宗燕老師已經(jīng)翻譯為中文版。經(jīng)典的SICP是用Lisp描述的,一本古老的介紹functional編程的書。看一點(diǎn)就感覺很乏味,但稍微強(qiáng)迫一下自己,就知道這本書的優(yōu)異之處。我就是看了求解費(fèi)波那契數(shù)列的使用遞歸,以及遞歸優(yōu)化那一章,對(duì)我以后寫任何語(yǔ)言遞歸的分析,受益那是一輩子的。比如C++之父寫的書,就被公認(rèn)的哲學(xué)味太濃,不適合絕大多數(shù)人閱讀,但我就很喜歡看,書本就是這樣,因人而宜,就像配偶一樣,自然有適合自己的一位。
5、有時(shí)候需要追根溯源一下,有時(shí)候需要換一種角度來(lái)看書。
下面是來(lái)自:Bejarne Stroustrup在《C++語(yǔ)言的設(shè)計(jì)與演化》里面有關(guān)“引用”這個(gè)概念的提出時(shí)候的細(xì)節(jié),更多的描述見該書裘宗燕老師翻譯的版本第56頁(yè)和第57頁(yè):
引入引用機(jī)制主要也是為了支持運(yùn)算符的重載。Doug McIlroy還記的,有一次我向他解釋某個(gè)預(yù)示了目前運(yùn)算符重載模式的問(wèn)題。他用的術(shù)語(yǔ)引用挑起了我的思緒,我嘟囔了一聲謝謝就離開了他的辦公室。當(dāng)我第二天再出現(xiàn)時(shí)就帶著已經(jīng)基本完成的目前模式。Doug使我想起了Algol 68。
現(xiàn)在引用機(jī)制得到了大家認(rèn)可,一些崇尚C語(yǔ)言高效,但有些抵制C++的牛人們也稱贊了它,這是C++優(yōu)于C的地方。這里不是討論語(yǔ)言的,關(guān)于這些我就不再多說(shuō)了。自從我看了這一段話之后,我頭腦中所記憶的引用的概念就是“為了支持重載運(yùn)算符而添加的機(jī)制”。嗯,現(xiàn)在可以在很多書或者文章里找到解釋這個(gè)引用字眼,引用也不僅僅只用在“重載運(yùn)算符”上。不過(guò)追根溯源看了重載運(yùn)算符這里,什么時(shí)候該用指針,什么時(shí)候該用引用,我自認(rèn)為寫的代碼里用的還算合適。中國(guó)人非常喜歡對(duì)某個(gè)知識(shí)追根溯源,如果時(shí)間允許的話這是好事,從源頭找起,更有助于加深理解。
6、做筆記只是手段而不是最終目的,總結(jié)為自己的思想才是最重要的。
看書的最終目的,就是吸收書本知識(shí),成為自己的思想。我個(gè)人不喜歡做筆記,我也不喜歡批注,我就喜歡一遍遍的看書。但記住,這是我個(gè)人的喜好而已,我父親40歲之前看書就喜歡做讀書筆記,而且很喜歡用沒有條格的速寫本做筆記,但是現(xiàn)在年齡大了看書多反而不去做筆記,喜歡小批注。喜歡做筆記的人,一般是喜歡把自己想要知道的重點(diǎn)記錄下來(lái),可以省卻再次閱讀書本的時(shí)間。或者用紙張記錄自己的觀點(diǎn),給自己做自我總結(jié)。這是好習(xí)慣,但是我自己就是不喜歡,哈哈:)。我喜歡用我頭腦需要的概念在頭腦中總結(jié),哪怕挑重點(diǎn)的再把這本書看兩遍。以前研究COM的時(shí)候做過(guò)一段時(shí)間的筆記,后來(lái)逐漸就放棄了。
7、看到好書后不能讀死書,更不能信奉為“天書”。看書后不能白看,多多的反思自己,然后有批評(píng)的眼光看待這本書,看待自己甚至別人的觀點(diǎn)或者代碼。很早就感悟到“適度”的重要性,盡量不走極端,包括批評(píng)本身。但不知不覺就會(huì)慢慢走向極端,這時(shí)需要適度的修正自己,應(yīng)用書本的知識(shí)。我聽到過(guò)許多別人的話,比如C/C++已經(jīng)過(guò)時(shí),JAVA才是最先進(jìn)的,或者C#有多么多么先進(jìn),或者UNIX哲學(xué)一派,面向?qū)ο缶褪切┗ㄉ诘臇|西C語(yǔ)言就足夠用了。這類極端的話有些是自己想的,但絕大多數(shù)是人云亦云的跟風(fēng)和受書本的影響。說(shuō)JAVA先進(jìn)的,我會(huì)問(wèn)他,你能用JAVA寫操作系統(tǒng)嘛?說(shuō)面向?qū)ο蠡ㄉ诘模視?huì)拿出一些C語(yǔ)言很不容易編寫的方面給他看,比如3D游戲。聽到我的話這些人會(huì)閉嘴的,總有長(zhǎng)處和短處存在。知其然,知其所以然。
8、書面知識(shí)是死的,實(shí)際應(yīng)用才是活的,根據(jù)自己的需要,活用參考書。
有些書涉及的知識(shí)面很廣,比如參考書,通讀真的很難。如果條件允許的話,尋找一些實(shí)際的問(wèn)題看書,會(huì)更好的理解。為了工作,我曾經(jīng)就快速排序做過(guò)研究,也和許多朋友交流過(guò)。我?guī)е@個(gè)問(wèn)題翻看了許多算法書籍,包括《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》《C算法》《編程珠璣》之類的經(jīng)典著作,也參考了許多代碼。《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》很厚,我只取其中一章而已,這本書我沒有看完,不過(guò)里面單獨(dú)的幾章,我看的很仔細(xì)。當(dāng)然,我沒看完也沒資格給蓋茨發(fā)簡(jiǎn)歷:)
9、給自己定位,你是否適合從書本獲取知識(shí)。我有個(gè)朋友,他幾乎不看技術(shù)書,但是他的思維很開闊,很容易理解新概念和方法,我只需要和他說(shuō)一說(shuō)他隨便上網(wǎng)看看資料就夠了。他做的系統(tǒng)很耐用,我也不容易挑出毛病。看書反而限制他的思維方式,這點(diǎn)我拍馬趕不上,我只能看看書,呵呵。所以說(shuō)獲取知識(shí)并不一定只有看書,朋友們的交流,網(wǎng)絡(luò)上的論文和資料都是很好的資源。只給自己一個(gè)定位,是不是真的適合看書才能增長(zhǎng)你的知識(shí)。記得以前和tinyfool有過(guò)一些交流,此人就是不需要看太多書籍的人。
10、最好能和作者交流一下。現(xiàn)在互聯(lián)網(wǎng)豐富,我們也可以通過(guò)郵件和作者交流了。我研究快速排序的時(shí)候,曾經(jīng)和Julian Bucknall,《Delphi算法和數(shù)據(jù)結(jié)構(gòu)》的作者用電子郵件交流過(guò),他給我指出了我理解上的偏差,讓我受益匪淺。高山仰止,外加猜測(cè)理解,還不如直接去問(wèn)作者。
最后,就用《論語(yǔ)》里的那句話來(lái)總結(jié)一下:學(xué)而不思則罔,思而不學(xué)則殆。
很贊,其中的幾個(gè)建議也是我的習(xí)慣:)此外,我在學(xué)習(xí)一個(gè)知識(shí)點(diǎn)的時(shí)候,心中始終抱著一個(gè)目標(biāo),就是最終要能寫出一篇很好的survey,這樣一來(lái)在閱讀思考的時(shí)候總是有意無(wú)意地在整理知識(shí)的結(jié)構(gòu),并且往深處想。我的實(shí)踐表明這是一個(gè)很棒的技巧。
在樓主的基礎(chǔ)上,補(bǔ)充幾個(gè)我自己的讀書習(xí)慣
1、在看新書的時(shí)候,就會(huì)拿幾本一起聯(lián)合著來(lái)看(而不管那其中的某一本書有多經(jīng)典)。理解->總結(jié)->求交集->挑毛病->求證->結(jié)論或疑問(wèn)(算是critical thinking的一種表現(xiàn)吧)
2、經(jīng)常重復(fù)閱讀。就是說(shuō),在這次開始讀的時(shí)候,不是接著上次停掉的地方讀,而是多向前覆蓋一些,比如:一大段,幾頁(yè),甚至前面的一整章。有時(shí)候還隨機(jī)地翻開一本書來(lái)讀,如果一旦發(fā)現(xiàn)找不到感覺,跟不上作者思路,就努力補(bǔ)充知識(shí)直到滿意。
3、先在某些人面前表現(xiàn)得“強(qiáng)大”一些,然后為了彌補(bǔ)自己的過(guò)度膨脹,就必須要努力加倍地讀書了……百試不爽的辦法,呵呵,從小學(xué)時(shí)就這樣干了
我的想法是,有時(shí)候換個(gè)角度從作者的角度來(lái)思考問(wèn)題,比如說(shuō)作者為什么要這么組織結(jié)構(gòu),作者是怎么說(shuō)明某個(gè)問(wèn)題的,這樣思考的話,有時(shí)候會(huì)有意想不到的收獲:-)
樓主說(shuō)的很對(duì),最近在看《算法導(dǎo)論》,癥狀基本和你說(shuō)的差不多,剛開始時(shí)雄心勃勃,但過(guò)了一陣,效率降低很多,感覺樓主好像在說(shuō)我,呵呵,開玩笑了。
前一段時(shí)間,為了自己的成就感,我只讀書或者說(shuō)只在意今天讀了多少頁(yè),對(duì)于習(xí)題,做得不多或者做得不好。因?yàn)樽x書的時(shí)間相對(duì)于做題來(lái)說(shuō)少的多,對(duì)于《算法導(dǎo)論》,你一個(gè)小時(shí)能看不少頁(yè),但當(dāng)中的習(xí)題,有的一個(gè)小時(shí)根本做不完,因?yàn)槟愕盟伎肌K宰x書時(shí)的成就感大受打擊,久而久之,就只看書,不思考了。當(dāng)然,但我很興奮的讀完一章之后,發(fā)現(xiàn)自己的收獲沒有想象中的那么多。所以現(xiàn)在,自己把讀書分為兩個(gè)階段--首先,對(duì)于一章,我會(huì)不看習(xí)題,一口氣把它快速讀完,這可以提高自己的成就感;之后,我會(huì)一節(jié)一節(jié)的細(xì)讀、思考和做題,這期間自己的成就感很高(我一看完這一章了,呵呵),不過(guò)第二階段的時(shí)間不宜過(guò)長(zhǎng),否則自己的成就感會(huì)降的很低,所以關(guān)鍵還得靠努力。這樣用的時(shí)間或許很多,但收獲也會(huì)很多。以上兩個(gè)階段,有點(diǎn)像預(yù)習(xí)、讀書和復(fù)習(xí)。當(dāng)然,這只針對(duì)于好書。一般的書,以增長(zhǎng)見識(shí)為主。
第五篇:個(gè)人總結(jié)的格式和方法
個(gè)人總結(jié)的格式和方法
個(gè)人總結(jié)的格式
1. 開端回顧過(guò)去一年,概括簡(jiǎn)述工作經(jīng)歷,例句“過(guò)去一年在部門領(lǐng)導(dǎo)的帶領(lǐng)下取得了一些成就”等等。適當(dāng)照顧領(lǐng)導(dǎo)的閱讀口味。
2. 接下來(lái)具體列舉各方面花費(fèi)的力量和取得的成績(jī),例句“在與單位人員火熱廝打成一片中,取得了XX的成果”。重點(diǎn)體現(xiàn)自己付出的繁重勞動(dòng)。
3. 對(duì)工作的不足略加陳述,先大量描述客觀不利因素,再把帳算到自己的主觀因素頭上。例句“當(dāng)然,我自己XXX也是一部分原因”。
4. 展望明年一年的工作,列舉雄心壯志一二,不管能不能做到。例句“請(qǐng)同志們和領(lǐng)導(dǎo)們看我的實(shí)際行動(dòng)吧!”后附若干中感嘆號(hào)更能體現(xiàn)決心。
這個(gè)也算是年終總結(jié)的“八股”了吧。
如何寫好年終總結(jié)?
一是要總結(jié)成績(jī)的同時(shí)“盤點(diǎn)”問(wèn)題。實(shí)事求是是搞好年終總結(jié)的重要原則,我們謝總結(jié)時(shí),既要對(duì)取得的成績(jī)充分肯定,但不對(duì)實(shí)際過(guò)分的夸大或任意拔高,更不可用成績(jī)來(lái)掩蓋問(wèn)題。只有找出“問(wèn)題”,才能改進(jìn)工作。取得進(jìn)步。
二是要在總結(jié)經(jīng)驗(yàn)教訓(xùn)的基礎(chǔ)上“盤點(diǎn)”工作規(guī)律。搞好年終工作總結(jié)的關(guān)鍵是找到工作中那些帶規(guī)律的東西,不是表面現(xiàn)象的羅列和枯燥條文的拼湊,而是通過(guò)對(duì)以往工作的全面分析、研究和概括,找到它們內(nèi)在的必然聯(lián)系,從理性認(rèn)識(shí)上提煉出那些具有普遍意義的基本經(jīng)驗(yàn)、教訓(xùn)和工作方法來(lái),使工作總結(jié)上升到一個(gè)新的高度。
三是要在尋找工作規(guī)律的基礎(chǔ)上“盤點(diǎn)”來(lái)年工作思路。要通過(guò)明確來(lái)年的工作任務(wù)、工作要求、工作方法、工作步驟和工作措施等,把“做什么”、“怎么做”、“由誰(shuí)做”、“走到什么程度”、“什么時(shí)候完成”等落到實(shí)處,以增強(qiáng)工作的主動(dòng)性。
年終總結(jié)即體現(xiàn)著工作作風(fēng),又是不可或缺的工作方法。實(shí)事求是是我們黨一貫的作風(fēng),也是我們奪取革命和建設(shè)勝利的傳家寶。在總結(jié)工作時(shí),本著實(shí)事求是的原則,通過(guò)認(rèn)真細(xì)致的“盤點(diǎn)”,既要總結(jié)好成功經(jīng)驗(yàn),又要分析透失誤教訓(xùn),還要理清以后的工作思路,坦率務(wù)實(shí),才能更好的地凝聚人心,做好下一步工作。
哈哈我市