正文

如何激發(fā)編程的興趣(如何提高編程興趣)

謝謝邀請!

程序設(shè)計本身是一件非常有意思的事情,要想激發(fā)學(xué)習(xí)編程的興趣需要對計算機(jī)編程有一個系統(tǒng)的認(rèn)知過程。

如何激發(fā)編程的興趣(如何提高編程興趣)

隨著大數(shù)據(jù)和人工智能的不斷發(fā)展,程序設(shè)計在未來將會得到更大面積的普及,作為職場人來說,編程是一個重要的職場技能。編程本身還是有一定技術(shù)門檻的,如何培養(yǎng)編程的興趣呢?在我看來,要想培養(yǎng)起編程的興趣,首先要有一個循序漸進(jìn)的學(xué)習(xí)過程。

以Java編程為例,Java的學(xué)習(xí)是一個先難后易的過程,如果在早期能夠建立起對類、對象、屬性和方法的理解,那么后續(xù)的學(xué)習(xí)過程將會比較順利。但是,學(xué)習(xí)編程千萬不要好高騖遠(yuǎn),要一步一個腳印,在概念的理解過程中要學(xué)會把一個大的問題拆分成多個小問題依次遞進(jìn)解決,當(dāng)建立起這個思路的時候,自然就會對編程有較強的信心和興趣。

比如在Java數(shù)據(jù)庫編程中經(jīng)常會遇到一個概念就是數(shù)據(jù)庫連接池,數(shù)據(jù)庫連接池是Java數(shù)據(jù)庫編程中的一個重點和難點。為什么要使用數(shù)據(jù)庫連接池呢?通過什么技術(shù)自己創(chuàng)立一個數(shù)據(jù)庫連接池呢?要想回答這些問題首先要理解“池”在Java中的作用,“池”的概念簡單的說就是提高資源的利用率,讓有限的資源供多個人使用。

在Java操作數(shù)據(jù)庫的過程中,數(shù)據(jù)庫的連接資源是比較“昂貴”的,池化連接對象是一個必須要做的事情,大部分情況下程序員可以使用已有的數(shù)據(jù)庫連接池,通過簡單的配置就能夠完成資源的池化操作,但是掌握連接池的內(nèi)部機(jī)制對于學(xué)習(xí)Java來說還是非常重要的。

數(shù)據(jù)庫連接池的創(chuàng)建需要使用到動態(tài)代理技術(shù),如果一下子就通過DP來完成數(shù)據(jù)庫連接池的創(chuàng)建是比較麻煩的事情,但是如果把這一個大的步驟拆分成多個步驟,問題似乎就比較好解決了,下面就看一下拆分后的幾個步驟:

步驟一:定義一個類完成一個簡單的功能,就是返回一個可用的數(shù)據(jù)庫連接對象,這個類的實現(xiàn)過程還是比較簡單的:

步驟二:定義類CP2,要求在CP1的基礎(chǔ)上增加一個空閑池。

定義一個java.util.LinkedList類型的成員屬性。

修改getConnection方法名為getNewConnection,方法內(nèi)容不變。

定義新的getConnection方法,具有操作空閑池的內(nèi)容。

看一下新增加的代碼:

新增加的方法中首先判斷LinkedList中是否有連接對象,如果有則取出其中一個Connection對象返回。定義一個整型數(shù)據(jù)表示池的大小,循環(huán)5次調(diào)用getNewConnection方法,并把新生成的Connection對象添加到LinkedList池中,取出其中一個Connection對象返回。

步驟三:分別定義空閑池和使用池,在類CP2的基礎(chǔ)上進(jìn)行以下的操作步驟:

定義一個LinkedList類型的成員變量表示使用池。

修改getConnection方法,判斷空閑池的數(shù)目是否為空,如果不為空則取出其中一個返回給用戶,同時把這個Connection對象添加到使用池中。

如果空閑池為空,則創(chuàng)建一定數(shù)目的連接,并且取出其中一個返回給用戶,同時把它添加到使用池中。

定義三個方法,分別返回空閑池數(shù)目,使用池數(shù)目和池的總數(shù)目。

看一下增加的代碼:

步驟四:添加動態(tài)代理,攔截close方法,完成池化操作。在CP3的基礎(chǔ)上增加以下操作步驟:

定義一個類MyConWrapper,實現(xiàn)InvocationHandler接口。此類為Connection對象的動態(tài)代理類,在類中定義Connection的成員屬性,使用構(gòu)造器方式實現(xiàn)動態(tài)代理。在invoke方法中完成攔截的動作,判斷如果Connection對象調(diào)用了close方法,則攔截這個方法,把這個連接對象從使用池轉(zhuǎn)移到空閑池。

修改getNewConnection方法,原來返回的是Connection對象,現(xiàn)在要求返回ConnectionWrapper對象。

空閑池和使用池中原來存放的是Connection對象,現(xiàn)在要求存放的是ConnectionWrapper對象。

定義一個新的方法pushConnectionBackToPool,作用是把con從使用池轉(zhuǎn)移到空閑池中。

看一下代碼:

通過這樣一個步驟的拆分,一個復(fù)雜的數(shù)據(jù)庫連接池就被拆分成了幾個步驟,步驟之間依此遞進(jìn),從而能讓學(xué)習(xí)者更容易掌握數(shù)據(jù)庫連接池的創(chuàng)建。

編程的興趣就是在不斷的實驗中建立起來的,當(dāng)然學(xué)習(xí)方法和步驟也比較關(guān)鍵。

我從事軟件開發(fā)工作多年,目前也在帶軟件開發(fā)團(tuán)隊,我會陸續(xù)在頭條寫一些關(guān)于軟件開發(fā)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會有所收獲。

如果有軟件開發(fā)方面的問題,也可以咨詢我,謝謝!