導航:首頁 > 源碼編譯 > 開車上班20分鍾源碼

開車上班20分鍾源碼

發布時間:2023-05-16 01:50:04

① 什麼是編程

編輯程序讓電腦執行的過程就叫編程

很多軟體都可以編程 具有代表性的軟體有BASIC

C,C++,VB,VF,網頁編程JSP,ASP,PHP

建議你從BASIC樹型結構學起

編程學好了可以去軟體公司上班

一般來說可以掙到2500元/M

BASIC是Beginner's All-purpose symbolic instruction Code(初學者通用符號指令代碼)的縮寫,是國際上廣泛使用的一種計算機高級語言。BASIC簡單、易學,目前仍是計算機入門的主要學習語言之一。

BASIC語言的問世及發展 BASIC語言自其問世經歷了以下四個階段:

第一階段:(1964年~70年代初) 1964年BASIC語言問世。

第二階段:(1975年~80年代中) 微機上固化的BASIC

第三階段:(80年代中~90年代初) 結構化BASIC語言。

第四階段:(1991年以來) Visual BASIC

BASIC是種易學易用的高級語言,非常適合初學者學習運用。常用的編譯軟體有True BASIC,Turbo BASIC Quick BASIC,Visual BASIC,CAREALIZER,GFA BASIC,POWER BASIC,等等......

1991年,微軟推出了Visual Basic1.0版。這在當時引起了很大的轟動。許多專家把VB的出現當做是軟體開發史上的一個具有劃時代意義的事件。其實,以我們現在的目光來看,VB10的功能實在是太弱了。但在當時,它是第一個「可視」的編程軟體。這使得程序員欣喜之極,都嘗試在VB的平台上進行軟體創作。微軟也不失時機地在四年內接連推出VB20,VB30,40三個版本。並且從VB3開始,微軟將ACCESS的資料庫驅動集成到了VB中,這使得VB的資料庫編程能力大大提高。從VB4開始,VB也引入了面向對象的程序設計思想。VB功能強大,學習簡單。而且,VB還引入了「控制項:的概念,使得大量已經編好的VB程序可以被我們直接拿來使用,如今,VB已經有了6.0版。

通過幾年的發展,它飢嘩橋已成為一種真真專業化的開發語言和環境。用戶認為可用Visual Basic快速創建Windows程蘆悉序,在現在還可以編寫企業水平的客戶/伺服器程序及強大的資料庫應用程序,Visual Basic新版中還有更多可用功能。

Visual Basic的編程基礎

什麼是程序

首先需要知道下面這個問題的答案:「程序到底是什麼?」計算機程序是指令集,它告訴計算機如何執行特殊的任務。讀者也許對許多種指令熟悉,如按菜譜烹調特殊的食物或按指定的方向到達不熟悉的目的地。沒有這些特殊的指令,就不能執行預期的任務。

計算機也是一樣,只是它們需要為執行的每一個任務提供指令。甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存訊息。 幸運的是,許多這樣的指令包含在處理器晶元中或內置於操作系統中,因此用戶不必擔心它們。

相反,應集中於為任務提供指令,如計算雇員工資,創建鄰居郵件列表,或設置格式化文本以顯示最近的年度報表信息。 雖然我們用自然語言讀這些指令,但計算機指令必須是二進制代碼,即一系列在計算機內存和處理器中的開或關的狀態。有些語言,如匯編程序,可以允許直接寫這種類型的代碼。但是,以這種方法編程十分困難,因此Visual Basic和其他編程語言使程序員可以用與自然語言有點相近的方式編寫指令。然而,即使是這些指令仍有限,並要遵循高度定義的結構。

事件驅動編程

Visual Basic允許創建反映用戶動作和系統事件的程序。這種編程叫事件驅動編程。要了解事件驅動程序是怎樣工作的,先要了解過去的程序怎樣運行及在Windows環境中有何不同。 在Windows之前(回到往日的DOS和「史前時代」��PC之前),程序以順爛猛序方式運行。也就是說,一旦程序啟動,它就一條指令一條指令的向前執行,直到程序結束或出現致命錯誤。

面向對象編程

使創建Windows程序較為容易的關鍵技術是面向對象編程,或OOP。這種技術可以創建可重用組建,它是程序的組成模塊。

幾個定義

在討論Visual Basic時,經常可以聽到這些術語,因此對這些術語的基本理解十分有幫助。

控制項 提供程序可見界面的可重用對象。控制項的示例有文本框、標簽和命令按鈕。

事件 由用戶或操作系統引發的動作。事件的示例有擊鍵、單擊滑鼠、一段時間的限制,或從埠接收數據。

方法 嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息並響應某事件。例如,資料庫對象有打開紀錄集並從一個記錄移動到另一個記錄的方法。

對象 程序的基本元素,它含有定義其特徵的屬性,定義其任務和識別它可以響應的事件的方法。控制項和窗體是Visual Basic中所有對象的示例。

過程 為完成任務而編寫的代碼段。過程通常用於響應特定的事件。

屬性 對象的特徵,如尺寸、位置、顏色或文本。屬性決定對象的外觀,有時也決定對象的行為。屬性也用於為對象提供數據和從對象取回信息。

② 怎麼在ubuntu上編譯android源碼

步驟一:
安裝Ubuntu系統。我們既可以通過虛擬機的方式安裝Ubuntu,也可以直接在電腦上安裝,為了獲得更好的linux操作體驗,我建議直接在電腦上面安裝Ubuntu,我在自己電腦上安裝了win10和Ubunut Server14.04雙系統,使用的時候可以根據自己的需要隨時切換系統,非常方便。關於如何搭建雙系統,網上有很多教程,我就不在此敘述了,但是我想說明的一點是在安裝Ununtu的時候,分配給Ubuntu的磁碟空間一定要盡可能大一點,至少60G,我分配了105G,編譯完成之後還剩下50多G,也就是說差不多用了近50G的空間,所以安裝Ubuntu的時候一定得分配大一點的磁碟空間,不然編譯會因為空間不足而中斷。
步驟二:
搭建好Ubuntu系統之後,我們需要下載一份Android6.0的源碼,網上很多文章都介紹了如何通過repo的方式來下載源碼,但是通過這種方式下載速度可能並不是很理想,直接下載網路雲的Android6.0源碼,
因為Android6.0的源碼所佔空間非常大,所以上傳者把Android源碼分成了很多個文件,待全部下載完畢之後,我們可以通過命令把這些分開的文件合並為一個文件。
步驟三:
如果我們是在Windows上下載的源碼,那麼當我們打開Ubuntu之後,要做的第一件事請就是把Windows中的Android源碼拷貝到Ubuntu系統下面,我直接利用復制粘貼的方式將源碼拷貝到了Ubuntu的Home目錄下面,拷貝之後的目錄結構Home/android6_r1/各個分開的源碼文件。
步驟四:
合並這些被分開的源碼文件。我們按下鍵盤上的ctrl + alt + T打開控制台,通過cd命令進入到Home/android6_r1/目錄下面,然後執行命令:cat Android6_r1_* > M.tgz,不用多久,在Home/android6_r1/目錄下面就會生成一個新的文件——M.tgz,M.tgz就是合並之後的壓縮文件。
步驟五:
解壓步驟四生成的壓縮文件。同樣是在Home/android6_r1/目錄下面,我們在控制台執行命令:tar zxvf M.tgz,開始解壓。解壓的過程大概需要20分鍾左右的時間,請耐心等待。解壓好了之後,在Home/android6_r1/會生成一個mydroid的文件夾,這個文件夾就是Android源碼的根文件夾了,裡面有abi、devices、hardware、packages、sdk、art等文件夾和文件。
步驟六:
安裝編譯源碼所需要的軟體。在控制台中我們通過cd..命令退回到Unbuntu用戶的根目錄下,然後依次執行以下命令:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
以上命令每一條都必須分開單獨執行,目的是為了獲取1.7版本的jdk並設置環境變數。當我們安裝完Ubuntu之後可能會自帶一個jdk,但是如果用自帶的jdk編譯Android源碼很可能會提示jdk版本不符合要求的錯誤,因此我們需要重新下載1.7版本的jdk,我用openjdk-7-jdk編譯未出現任何問題。
接下來繼續執行以下命令,同樣每一行都是分開單獨執行的:
sudo apt-get install git gnupg flex bison gperf build-essential
sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
以上命令主要是安裝編譯源碼時需要用到的各種軟體,如果沒有安裝這些軟體,編譯的過程中會提示缺少必要的軟體而無法繼續編譯,因此,在正式編譯源碼之前,一定要先安裝這些軟體。
步驟七:
開始編譯。在控制台中通過cd命令進入到Home/android6_r1/mydroid/目錄下,然後執行命令:source build/envsetup.sh,導入編譯Android源碼所需的環境變數和其它參數。
步驟八:
在控制台中執行命令:lunch,運行命令之後會提示我們選擇編譯目標。這里我選擇的的默認目標,即aosp_arm_eng。
步驟九:
在控制台中執行命令:make -j8,開始編譯。注意,make -j8命令中的數字8和我們電腦的CPU核心數以及線程數有關系,一般這個數字的數值最大不能超過CPU線程數的2倍,例如我電腦的處理器是i5 6200U,為雙核四線程,因此編譯Android源碼的時候,我可以設置的最大工作線程數量為4 * 2 = 8。在執行make命令的時候我們應該根據自己的CPU參數設置合理的工作線程數值。
以上步驟執行完之後,就是一段非常漫長的等待了,我從中午十二點多開始編譯,一直到晚上九點多編譯完成,整個編譯過程耗時九個多小時,幸好我的運氣還不錯,編譯過程中沒有出現任何錯誤,只是中途意外中斷了一次,但是Android源碼是可以接著上次中斷的位置繼續編譯的,已經編譯的部分不會重復編譯,因此並未對我造成大的影響。同志們,我想說的是,編譯的過程中一定要有耐心喲!
整個源碼編譯完成之後,如果提示如下信息,那麼Congratulations, you are successful!!!

③ 網上有沒有免費的源代碼可以下載呢

有很多免費代碼下載的,你只要GOOGLE上面就會有很多,按你自己需求的去找,原代碼的網站很多,一般在IT網站都會有的,你搜索就搜索IT網站,就可以了,能找到你所希望的源代碼
下載的源代碼以後都有後門,如果你懂的話這個就不需要我教你了~!

④ python小游戲2048,上班摸魚必備(附源碼)

話不多說,直接上菜

為了方便大家,我就不分段解釋了

import turtle, random

# 定義一個類,用來畫除了數字方塊之外的圖形

class BackGround(turtle.Turtle):

    def __init__(self):

        super().__init__()

        self.penup()

        self.ht()

    def draw_block(self):

        self.shape('bg.gif')  # 畫出背景方塊

 改則猜       for i in allpos:

            self.goto(i)

            self.stamp()

        self.color('white', 'white')  # 畫出其他背景

        self.goto(-215, 120)

        self.begin_fill()

        self.goto(215, 120)

        self.goto(215, 110)

        self.goto(-215, 110)

        self.end_fill()

        self.shape('title.gif')

        self.goto(-125, 210)

        self.stamp()

        self.shape('score.gif')

        self.goto(125, 245)

        self.stamp()

        self.shape('top_score.gif')

        self.goto(125, 170)

        self.stamp()

    # 游戲失敗及達成2048的提示文字

    def judge(self):

        global flag_win, flag_win_lose_text

        self.color('blue')

        judge = 0  # 判斷是否還有位置可以移動

        for i in block_dic.values():

            for j in block_dic.values():

                if i.num == 0 or i.num == j.num and i.distance(j) == 100:

                    judge += 1

        if judge == 0:  # 無位置可移動,游戲失敗

            self.write('    GAME OVER\n重新開始請按空格鍵', align='center', font=('黑體', 30, 'bold'))

 盯數           flag_win_lose_text = False

        if flag_win is True:  # 此條件讓2048達成的判斷只能進行一次

            for k in block_dic.values():

                if k.num == 2048:  # 游戲達成

         核型           flag_win = False

                    self.write('    達成2048\n繼續游戲請按回車鍵', align='center', font=('黑體', 30, 'bold'))

                    flag_win_lose_text = False

    def win_lose_clear(self):

        global flag_win_lose_text

        self.clear()

        flag_win_lose_text = True

    def show_score(self):  # 分值的顯示

        global score, top_score

        if score > top_score:

            top_score = score

            with open('.\\score.txt', 'w') as f:

                f.write(f'{top_score}')

        self.color('white')

        self.goto(125, 210)

        self.clear()

        self.write(f'{score}', align='center', font=('Arial', 20, 'bold'))

        self.goto(125, 135)

        self.write(f'{top_score}', align='center', font=('Arial', 20, 'bold'))

# 數字方塊類

class Block(turtle.Turtle):

    def __init__(self):

        super().__init__()

        self.ht()

        self.penup()

        self.num = 0

    def draw(self):

        self.clear()

        dic_draw = {2: '#eee6db', 4: '#efe0cd', 8: '#f5af7b',

                    16: '#fb9660', 32: '#f57d5a', 64: '#f95c3d',

                    128: '#eccc75', 256: '#eece61', 512: '#efc853',

                    1024: '#ebc53c', 2048: '#eec430', 4096: '#aeb879',

                    8192: '#aab767', 16384: '#a6b74f'}

        if self.num > 0:  # 數字大於0,畫出方塊

            self.color(f'{dic_draw[self.num]}')  # 選擇顏色

            self.begin_fill()

            self.goto(self.xcor()+48, self.ycor()+48)

            self.goto(self.xcor()-96, self.ycor())

            self.goto(self.xcor(), self.ycor()-96)

            self.goto(self.xcor()+96, self.ycor())

            self.goto(self.xcor(), self.ycor()+96)

            self.end_fill()

            self.goto(self.xcor()-48, self.ycor()-68)

            if self.num > 4:  # 按照數字選擇數字的顏色

                self.color('white')

            else:

                self.color('#6d6058')

            self.write(f'{self.num}', align='center', font=('Arial', 27, 'bold'))

            self.goto(self.xcor(), self.ycor()+20)

class Game():

    def init(self):

        back = BackGround()  # 實例畫出遊戲的背景

        back.draw_block()

        for i in allpos:  # 畫出16個海龜對應16個數字塊

            block = Block()

            block.goto(i)

            block_dic[i] = block

        game.grow()

    def restart(self):  # 重開游戲的方法

        global score, flag_win_lose_text

        score = 0

        for i in block_dic.values():

            i.num = 0

            i.clear()

        win_lose_text.clear()

        game.grow()

        flag_win_lose_text = True  # 此flag為游戲達成或失敗出現提示語後的判斷,要提示語被clear後才能繼續move

    def grow(self):  # 隨機出現一個2或4的數字塊

        block_list = []

        for i in allpos:

            if block_dic[i].num == 0:

                block_list.append(block_dic[i])  # 挑出空白方塊的海龜

        turtle_choice = random.choice(block_list)  # 隨機選中其中一個海龜

        turtle_choice.num = random.choice([2, 2, 2, 2, 4])  # 賦屬性num=2/4

        turtle_choice.draw()

        win_lose_text.judge()

        show_score_text.show_score()

        ms.update()

    def move_up(self):

        allpos1 = allpos[::4]  # 切片為四列

        allpos2 = allpos[1::4]

        allpos3 = allpos[2::4]

        allpos4 = allpos[3::4]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_down(self):

        allpos1 = allpos[-4::-4]

        allpos2 = allpos[-3::-4]

        allpos3 = allpos[-2::-4]

        allpos4 = allpos[-1::-4]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_left(self):

        allpos1 = allpos[:4]

        allpos2 = allpos[4:8]

        allpos3 = allpos[8:12]

        allpos4 = allpos[12:16]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_right(self):

        allpos1 = allpos[-1:-5:-1]

        allpos2 = allpos[-5:-9:-1]

        allpos3 = allpos[-9:-13:-1]

        allpos4 = allpos[-13:-17:-1]

        self.move_move(allpos1, allpos2, allpos3, allpos4)

    def move_move(self, allpos1, allpos2, allpos3, allpos4):

        if flag_win_lose_text is True:

            count1 = self.move(allpos1)  # 四列或四行依次移動

            count2 = self.move(allpos2)

            count3 = self.move(allpos3)

            count4 = self.move(allpos4)

            if count1 or count2 or count3 or count4:  # 判斷是否有方塊移動,有才能繼續出現新的數字塊

                self.grow()

    def move(self, pos_list):

        num_list = []  # 為某一列或行的數字塊海龜的坐標

        for i in pos_list:

            num_list.append(block_dic[i].num)  #  把這些海龜的NUM形成list

        new_num_list, count = self.list_oper(num_list)  #  只是list_oper的方法形成新的list

        for j in range(len(new_num_list)):  # 把新的list依次賦值給對應的海龜.num屬性並調用draw()方法

            block_dic[pos_list[j]].num = new_num_list[j]

            block_dic[pos_list[j]].draw()

        return count

    def list_oper(self, num_list):  # num_list的操作,假設其為【2,0,2,2】

        global score

        count = True

        temp = []

        new_temp = []

        for j in num_list:

            if j != 0:

                temp.append(j)  # temp=[2,2,2]

        flag = True

        for k in range(len(temp)):

            if flag:

                if k < len(temp)-1 and temp[k] == temp[k+1]:

                    new_temp.append(temp[k]*2)

                    flag = False

                    score += temp[k]

                else:

                    new_temp.append(temp[k])  # new_temp=[4,2]

            else:

                flag = True

        for m in range(len(num_list)-len(new_temp)):

            new_temp.append(0)  # new_temp=[4,2,0,0]

        if new_temp == num_list:

            count = False  # 此變數判斷num_list沒有變化,數字塊無移動

        return(new_temp, count)

if __name__ == '__main__':

    ms = turtle.Screen()  # 主窗口的設置

    ms.setup(430, 630, 400, 50)

    ms.bgcolor('gray')

    ms.title('2048')

    ms.tracer(0)

    ms.register_shape('bg.gif')

    ms.register_shape('title.gif')

    ms.register_shape('score.gif')

    ms.register_shape('top_score.gif')

    block_dic = {}  # 放數字方塊海龜的字典,位置坐標為key,對應海龜為value

    allpos = [(-150, 50), (-50, 50), (50, 50), (150, 50),

              (-150, -50), (-50, -50), (50, -50), (150, -50),

              (-150, -150), (-50, -150), (50, -150), (150, -150),

              (-150, -250), (-50, -250), (50, -250), (150, -250)]

    flag_win = True  # 達成2048的判斷,讓達成的文字僅出現一次

    flag_win_lose_text = True  # 用來判斷失敗或成功的提示文字是否有被清除,不清除不能繼續移動方塊

    score = 0

    with open('.\\score.txt', 'r') as f:

        top_score = int(f.read())  #  讀取score中的數據

    show_score_text = BackGround()

    win_lose_text = BackGround()

    game = Game()

    game.init()

    ms.listen()

    ms.onkey(game.move_up, 'Up')

    ms.onkey(game.move_down, 'Down')

    ms.onkey(game.move_left, 'Left')

    ms.onkey(game.move_right, 'Right')

    ms.onkey(win_lose_text.win_lose_clear, 'Return')

    ms.onkey(game.restart, 'space')

    ms.mainloop()

這是游戲界面:

歡迎挑戰最高分。

要運行出來,必須本地要有這些文件:bg.gif,score.gif,title.gif,top_score.gif,score.txt

我把這些文件放在了群里,還有一些學習的資料,群號642109462,歡迎對python感興趣的進群討論。

支持作者的,可以關注和點贊。感謝你們!

⑤ 我在火狐瀏覽器上班復制網頁源代碼,然後粘貼在文本文檔。改文件後綴為HTML後打開後出現問題

1、點擊頁面--查看源文件(不一定所有瀏覽器都是這個步驟,但是任何鬧手睜瀏覽器都可以查找到網頁的液歲源文件); 2、把源薯薯文件完整復制到記事本里,並保存; 3、打開記事本,把裡面所有的false全部替換成true後保存; 4、把這個記事本的擴展名改成htm; 5、雙擊打開該文件,此時就可以復制裡面的文字了。
Lyun_SotoyJ2!

⑥ 怎麼閱讀spring源碼

從HttpServletBean的init()進入,再到initWebApplicationContext(),再到refresh(),再到refreshBeanFactory(),再到finishRefresh(),直到伺服器啟動成功。不知道讀了多少遍,
但是源碼的東西實在的太多了,想要完全讀懂,完全理清頭緒,還差很遠啊。所以我只重點關注了兩塊內容,就是bean的定位載入解析注冊、bean的實例化兩大塊內容,其他地方稍作了解,沒有太過深入。
整個容器的啟動流程,都在AbstractApplicationContext的refresh()的模板方法中了。

復制代碼
1 public void refresh() throws BeansException, IllegalStateException {
2 synchronized (this.startupShutdownMonitor) {
3 // Prepare this context for refreshing.
4 prepareRefresh();
5
6 // Tell the subclass to refresh the internal bean factory.
7 beanFactory = obtainFreshBeanFactory();
8
9 // Prepare the bean factory for use in this context.
10 prepareBeanFactory(beanFactory);
11
12 try {
13 // Allows post-processing of the bean factory in context subclasses.
14 postProcessBeanFactory(beanFactory);
15
16 // Invoke factory processors registered as beans in the context.
17 (beanFactory);
18
19 // Register bean processors that intercept bean creation.
20 registerBeanPostProcessors(beanFactory);
21
22 // Initialize message source for this context.
23 initMessageSource();
24
25 // Initialize event multicaster for this context.
26 ();
27
28 // Initialize other special beans in specific context subclasses.
29 onRefresh();
30
31 // Check for listener beans and register them.
32 registerListeners();
33
34 // Instantiate all remaining (non-lazy-init) singletons.
35 (beanFactory);
36
37 // Last step: publish corresponding event.
38 finishRefresh();
39 }
40
41 catch (BeansException ex) {
42 // Destroy already created singletons to avoid dangling resources.
43 destroyBeans();
44
45 // Reset 'active' flag.
46 cancelRefresh(ex);
47
48 // Propagate exception to caller.
49 throw ex;
50 }
51 }
52 }

其實,我並沒有上來就看源碼,而是先從看書開始,稍微了解,知道了一些關鍵點,關鍵流程,自己產生了一堆疑問,然後帶著疑問去讀源碼,讀著讀著,發現有些疑問就這么解決了。

⑦ 用java計算已知一個小時60分鍾一分鍾60秒計算一個小時有多少秒的源代碼

public class Test7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("輸入小時數:");
Integer number = scanner.nextInt();
System.out.println(number+"個小旦罩如時有悶宏秒:"+60*60*number+"秒"模啟);
}
}

⑧ 關於軟體源代碼的版權問題!最好的律師進 (50分)

1、你這樣的情況,軟體的源代碼是屬於你自己的。
雖然你的開發軟體使用的資源(電腦,網線,電等等),都是公司的,軟體也是在上班時間製作的。但是你和公司沒有約定源代碼的歸屬問題,在沒有約定的情況下,源代碼的版權是屬於你自己的。

2、他們這樣企圖竊取你的源代碼屬於違法行為。

3、如果你是在自己家裡做的話,這個源代碼的版權是屬於你自己。

⑨ 求個JAVA 人力資源管理系統 源代碼和模版界面以及需求分析,求參考

星原人力資源管理系統 結構如下,

產品說明: 人力資源規劃 組織管理 招聘管理 人力測評
人事管理
培訓管理
考勤管理
薪酬福利

績效管理
行政事務
員工關系 人力分析和輔助決策

文控管理 工作流
領導查詢和員工自助查詢
SA8000人權驗廠方案

系統概覽

一、人力資源規劃
◇通過企業發展階段設置,設定適應各發展期的人力資源管理政策;

◇適應年度培訓計劃體系、三級培訓體系、崗位培訓體系、ISO管理培訓體系;
◇自動生成培訓到課與缺課統計,對比崗位任職與培訓需求,為晉升與上崗提供依據;
◇針對ISO體系驗證,為繁雜的培訓記錄及文檔管理提供自動生成核對功能,防止漏訓或資料的不一致;
◇自定義培訓費用項目;
◇提供培訓需求調查表,統一管理培訓教材,簡化教材的不致性與版本混亂;
◇可直接在系統中製作培訓通知單;
◇提供培訓心得報告;
◇提供培訓效果調查表,統一考核管理,加強培訓效果,評估成本效益;
◇能對個人、部門的培訓成績及效果進行分析,並輸出各種分析報表;
◇簡化培訓操作;
◇培訓規劃可根據用戶需要直接轉入到培訓安排中。

返回頂端

二、組織管理
1、組織機構管理

◇提供對集團公司組織管理的支持,自定義組織層級,不限組織層次;
◇對不同時期的組織職能變更進行動態管理;
◇能夠導出樹狀和矩狀的組織架構圖;
◇可以進行部門合並、部門升降,並有歷史記錄記載。
2、崗位管理

◇可以對崗位層級關系進行管理,通過設立崗位層次、級別、職系、職類、職位進行人力分析與規劃,建立組織架構與權責體系;
◇可以對不同時期的崗位職責進行管理,並有歷史記錄記載;
◇可以建立在職級、職務、職類體繫上的工作分析、含職位工作說明、職務任職資格、
◇工作量評估、權責體系、工作流分析、工資結構與權重、薪點數等管理職能表格;並有歷史記錄記載;
◇可以對不同時期的崗位任職資格進行管理,並有歷史記錄記載;
◇可以對內容進行管理,並有歷史記錄記載;
◇可設計該崗位的職業發展通道,使員工在此崗位上有很好的前景展望;
◇可設計該崗位的不同時期的績效考評指標(KPI),並有歷史記錄記載;
◇可以進行崗位的升遷、降級處理,並有歷史記錄記載;
◇對不同崗位市場成本調查,按崗位制度公司薪酬體系,對各崗位的評估上限與下限值,根據任職資格與個人資料評估薪酬;
◇通過崗位職責分類,控制直接與間接人員數量與成本比例,使管理成本更合理。
3、年度編制計劃與編制管理

◇可對各年度各部門崗位進行人員編制管理;
◇與人力資源規劃、招聘模塊關聯,自動產生招聘申請需求及招聘標准;
◇按既定編制招聘人手,判斷是否超編。
◇支持各種計劃性、臨時性、租賃、外包等多種用工招聘模式;
◇按人力資源規劃確定各組織人員需求層次,按崗位分析與任職要求制定測評指標;
◇參照人力資源規劃需求、組織架構與崗位編制制定出相應的招聘計劃;
◇制定對內招聘與晉升計劃,激發員工學習與工作能力;
◇按組織規劃確認面試者薪酬結構與標准;
◇參照組織管理中崗位規劃屬性,結合當前人事檔案的年齡、藉貫、性別、學歷等統計分析報表,確定招聘申請人員標准;
◇記錄招聘渠道信息,及相關廣告、費用等;
◇招聘關鍵環節的申報審批功能;
◇從招聘計劃開始對每個關鍵環節詳細跟蹤,實現動態信息記載;
◇對應聘人員從填寫應聘簡歷到面試、測評錄用進行全程跟蹤記載;
◇把應聘人員轉入到人事檔案中並設置此人的狀態,很好的與人事檔案結合到一起;
◇內部儲備人才和外部儲備人才進行分別管理;
◇對一段時間內各部門人員需求單的分類統計;
◇對已審批的部門需求單直接轉入到招聘安排中;
◇面試通知單可直接在系統中通過郵件的形式發送給面試者;
◇提供通用的報表形式,如錄用通知單,招聘通知單等;
◇可直接從系統中生成招聘發布信息,也可直接把招聘需求發送給人才市場;
◇對招聘渠道、招聘成功率、留任率、人均成本等招聘結果進行綜合全面的分析;
◇對未審批的招聘計劃、已審批的招聘計劃、未審批的人員需求單、已審批的人力需求單及時提醒用戶;
◇可與人力測評結合使用,對應聘人員的各方面素質進行測試記載。
返回頂端

三、招聘管理
◇支持各種計劃性、臨時性、租賃、外包等多種用工招聘模式;
◇按人力資源規劃確定各組織人員需求層次,按崗位分析與任職要求制定測評指標;
◇參照人力資源規劃需求、組織架構與崗位編制制定出相應的招聘計劃;
◇制定對內招聘與晉升計劃,激發員工學習與工作能力;
◇按組織規劃確認面試者薪酬結構與標准;
◇參照組織管理中崗位規劃屬性,結合當前人事檔案的年齡、藉貫、性別、學歷等統計分析報表,確定招聘申請人員標准;
◇記錄招聘渠道信息,及相關廣告、費用等;
◇招聘關鍵環節的申報審批功能;
◇從招聘計劃開始對每個關鍵環節詳細跟蹤,實現動態信息記載;
◇對應聘人員從填寫應聘簡歷到面試、測評錄用進行全程跟蹤記載;
◇把應聘人員轉入到人事檔案中並設置此人的狀態,很好的與人事檔案結合到一起;
◇內部儲備人才和外部儲備人才進行分別管理;
◇對一段時間內各部門人員需求單的分類統計;
◇對已審批的部門需求單直接轉入到招聘安排中;
◇面試通知單可直接在系統中通過郵件的形式發送給面試者;
◇提供通用的報表形式,如錄用通知單,招聘通知單等;
◇可直接從系統中生成招聘發布信息,也可直接把招聘需求發送給人才市場;
◇對招聘渠道、招聘成功率、留任率、人均成本等招聘結果進行綜合全面的分析;
◇對未審批的招聘計劃、已審批的招聘計劃、未審批的人員需求單、已審批的人力需求單及時提醒用戶;
◇可與人力測評結合使用,對應聘人員的各方面素質進行測試記載。
返回頂端

四、人力評測
◇系統支持各種測試模式,自定義測評類別與試題,例如通過導入一般職業適合性測驗、心理測試、領導測評類測評試題或工具,對任職指標、智力、語言能力、算術、書寫知覺、空間判斷能力、形狀知覺、協同動作、運動速度、手指靈活度、手靈活度、領導類型、能力、職業興趣、個性,LPC領導有效性測評、領導與部屬關系測量、工作結構測量、職位權力測量等各項指標進行測評;
◇可按測評職位、標准任職資格指標庫等自動推薦測評方案、項目、權重等;
◇ 提供測評方式維護;
◇可利用電腦進行人力在線測評,方便控制時間與測評效果;
◇人力測評登記;
◇人力測評查詢;
◇ 崗位匹配性分析;
◇情景測試:公文處理測試等;
◇對應各測試類別的測試的方法與題目:所有試題給出總分值、測試目標與功能,合格分、勝任分、優秀分值及否決項;
◇測評項目與職位指標相對應部份自動對比,計算匹配度;
◇ 按各測試項的測試目標、總分值、實得分值,自動分析出各項優秀、合格、不合格層次及總層次;
◇測評結果可以用不同方式查詢與設計報表。
返回頂端

五、人事管理
◇提供身份證識別設備供驗證身份證真偽,同時將身份證相片及姓名、號碼、住址等自動讀入系統,減少輸入錯誤、提高效率,自動判斷年齡等合法性;
◇預先統計時間點在職、離職等各種人員狀態,為生產計劃、招聘計劃提供依據;
◇提供員工狀態管理,了解各類員工比例;
◇通過各種統計報表了解人員各種比例,分析可能存在的同籍貫風險、年齡或學歷不合理等,為招聘與調配提供依據;
◇通過統計流失率及離職原因分析,查找人員流失率主因,為行政工作決策提供依據;
◇對個人檔案管理增加了對個人的技能檔案管理、計生檔案管理、崗位職責查詢;
◇自動統計員工學習、工作、培訓、考核、異動、加薪履歷,對比組織管理崗位規劃,作為晉升、調動、加薪等依據;
◇個人職業生涯規劃;
◇個人離職記錄查詢,對有多次離職記錄人員進行記載跟蹤;
◇人事檔案中人事動態跟蹤,用戶可自定義人員狀態,並記載各狀態下的發生信息。比如可定義離職申請狀態、離職已審批狀態、已離職狀態;
◇人事黑名單管理,對在公司犯有重大錯誤的人納入到黑名單中,系統提醒是否錄用。
返回頂端

六、培訓管理
◇適應年度培訓計劃體系、三級培訓體系、崗位培訓體系、ISO管理培訓體系;
◇自動生成培訓到課與缺課統計,對比崗位任職與培訓需求,為晉升與上崗提供依據;
◇針對ISO體系驗證,為繁雜的培訓記錄及文檔管理提供自動生成核對功能,防止漏訓或資料的不一致;
◇自定義培訓費用項目;
◇提供培訓需求調查表,統一管理培訓教材,簡化教材的不致性與版本混亂;
◇可直接在系統中製作培訓通知單;
◇提供培訓心得報告;
◇提供培訓效果調查表,統一考核管理,加強培訓效果,評估成本效益;
◇能對個人、部門的培訓成績及效果進行分析,並輸出各種分析報表;
◇簡化培訓操作;
◇培訓規劃可根據用戶需要直接轉入到培訓安排中。
返回頂端

七、考勤管理
◇豐富的參數設置,適應不同企業班制特殊性;
◇提供了與多種型號IC卡、條碼、指紋考勤機數據介面;
◇能處理頻繁倒班、調班、停工待料、中途請假等靈活的出勤管理;
◇能處理臨時加班,周末加班、節假日加班、班前、班中、班後加班以及通宵加班等各種加班的管理;可根據最大加班管控指標預警,並通過各種加班報表分析加班的必要性,以控制加班成本;與門禁系統結合可規范員工行為,培養員工良好的工作習慣與優秀的公司文化;
◇能處理跨72小時連班作業(跨兩天);
◇可根據各項加班最大加班管控指標預警,並通過各種加班報表顯示;
◇分析加班的必要性,以控制加班成本與防範違反法規,分析產值加班負荷率;
◇自定義各種假期,如事假、病假、工傷假、調休、年假、累計假等有薪、無薪、半薪假的管理可處理存假自動與請假抵消,各種復雜的調休等;
◇能輸出各種請假單、加班單、排班表、班製作休時間;
◇能輸出並查詢年、月、日及任意時間段任意部門人的出勤情況報表、異常出勤表並進行各種匯總分析;
◇運用了自動找班和多種靈活排班技術,極大地減輕了考勤人員工作量;
◇運用了先進的考勤演算法,處理5000人一個月的考勤報表只需3-5分鍾,提高了考勤管理的時效性及管理效率,高度開放的二次開發平台,可最大程度調整考勤項目與計算方法;
◇系統支持多用戶和網路,通過嚴格的許可權控制技術、使得考勤日常管理(分散和集中)做到隨心所欲,實時控制;
◇自定義各類遲到、早退、曠工、加班超時等異常查詢邏輯顯示顏色,一目瞭然、處理快捷
◇自定義簽卡控制次數,簽卡顯示以顏色區分;
◇可定義入職或離職當天是否計出勤;
◇提供海量數據處理機制,解決大型企業歷史數據累積導致系統性能下降問題;
◇考勤與門禁系統結合分析上班期間外出情況,可規范員工出勤行為;
◇考勤與消費系統結合,使上班時間與就餐時間對應,公司可以視情況確定是否補貼與是否允許就餐;
◇提醒機制:系統提供默認遲到、早退、曠工、超時加班等提醒功能,同時提供自定義提醒項目需求;
◇安全機制:提供加班、請假、簽卡、調休、考勤結果審核功能,防止生效後結果被人為更改或因制度改變重算影響歷史數據;
◇考勤項目直接匯入工資計算,考勤、工資、消費數據整合;
◇自定義各種考勤明細、匯總報表,加班、缺勤、異常等報表;
◇支持集團性多套帳或驗廠用到的多帳套演算法。
返回頂端

八、薪酬福利管理
◇可對薪資項目進行分類管理,如:崗位工資、福利、獎金,實現用戶自定義設定和自定義計算,適應各種薪資體系與工資計算方式經常變動;
◇解決了一個月多次調薪的計算難題;
◇可按薪資等級或薪點數根據崗位進行設置,並可設定多個調薪方案;
◇支持多個薪酬體系,不同組織、崗位、職級不同的薪資方案的計算方法,可根據崗位設計標准成本與實際薪資對比,部門預算與實際薪資對比;
◇每個月可計算多個帳套;
◇各帳套可支持不同財務周期演算法;
◇支持非自然月為財務周期的工資計算方式,財務周期起止日期可支持自定義;
◇帳套間可共用每月錄入數據及介面數據;
◇薪資計算可從考勤、績效導入數據;
◇支持銀行報盤,所得稅計算與申報;
◇豐富的薪酬福利報表;
◇支持借款扣除;
◇支持自離或曠工多日自動薪資凍結,也支持手動凍結與解凍;
◇對於其客觀存在系統的數據完全共享,如計件工資、考勤、考評、獎懲、水電費、就餐資產等數據與本系統實現了無縫聯接,實時調用,只要一次錄入,不用重復錄入或轉換。
返回頂端

九、績效管理
◇系統支持自定義考核模型或工具:排名表、面談表、組織考核表、KPI、MBO、360度;
◇績效參數設置:包括績效指標庫管理,績效指標可以根據職位績效指標引入績效考評指標,並可在此基礎上進行自定義其它指標庫;
◇績效層次設置:每個績效層次有相應的績效變數及職位;
◇在支持量化指標考核同時,也支持關鍵工作事項等不能量化的考核項目考核與跟蹤;
◇績效考評級別管理,根據績效考評級別可以進行多層次、多方位的考評,可以更准確的了解考評者的績效狀況,考評級別依賴於考評分類,每個考評級別所需要的考評級別及每個級別所佔的比重是不一樣的;
◇績效考評模板管理,個人績效考評表及組織績效考評表可在績效考評模板基礎上生成;
◇組織績效考評包括引入組織、定義考評分類及考評要點、製作考評表,查看考核信息;
◇個人績效考評根據個人所在的考評層次及考評周期設置考評分類及考評要點,並根據每個考評級別製作考評表,最後根據每個考評級別及考評周期生成綜合考評信息;
◇系統支持自定義考評工具及相關考評表格式;
◇按考評分值與權重自動統計考核結果,自動比對標桿;
◇自動提醒針對考核不合格的培訓項目;
◇自動對比各期考核結果,跟蹤考核項目改善狀況;
◇支持對考核者直接評分;
◇支持領導多級點評、修正、審核;
◇考核結果自動應用於晉升、調職、薪資計算、培訓等相關功能模塊,起到預警提醒作用;
◇考核結果查詢支持:絕對分值比較、相對標准比較、客觀標准比較;
◇支持排序法,代表人物法、強制正態分布法(預先設定優良中及格差比例)統計方法;
◇支持績效考核結果申訴,設定提交、受理、處理、結案周期;
◇考核結果可以通過自定義演算法,直接應用於薪酬,異動等子系統。
返回頂端

十、行政事務管理
1、會議管理

系統通過對會議室及物品配套、會議室安排排程、會議參會人員與時間核算會議成本。通過會議申請,提前規范會議內容以 提高會議效率,避免管理中的文山會海;同時,提高會議記錄管理,對會議決議跟蹤,避免會議流於形式,每次會議決議、跟進責任人、進度、結案做自動跟蹤,管 理者通過系統查詢,跟進工作,保證決議得以執行。

通過會議管理系統,避免諸多企業會而不議、議而不決、決而不行、行而不果的會議怪圈與高昂的會議成本。

2、工傷管理

工傷管理,通過對工傷等級劃分,確認各級別對應處理預案。對單個工傷案例每一個社保步驟進度跟蹤記錄,同時保持對應的文件。可隨時產生所有工傷案例進度表,員工離職是可避免工傷未結案帶來的風險。

3、宿舍管理

◇對宿舍基本資料、床位床號的設置;
◇可隨時查詢各宿舍的入住情況及空床位;可自定義按部門,班組等自動建議床位分配;
◇對各宿舍進行物品配置及管理;
◇對住宿安排、變更、退宿進行全面管理;
◇對外宿人員的登記管理;
◇對宿舍水電費價格的設定,水電表的登記、水電費用等的登記、計算;
◇水電等費用的分攤;相關費用與薪資系統的鏈接,並可直接從工資中扣除;
◇宿舍日常的維修維護、物品租賃的登記管理等。
4、圖書管理

用於企業內部文化室(或圖書館)的計算機化管理。可對所有圖書、報刊、雜志、傳記、專業資料書籍等進行分類登記;對內部員工的借閱、歸還進行跟蹤管理;對破損、遺失、賠償等進行登記跟蹤管理。

5、資產管理

對人力資源部門通常管理的辦公用品、工衣等物品進行分類編碼;對辦公用品的購進、 分發、領用、歸還、賠償等進行登記跟蹤管理;對庫存物品可進行盤點操作;對所有數據的分類分析等。與員工離職相關聯,保證先退保管資產,後辦離職發工資的 手續。在規定時間內重復領用系統自動提示。可核算人均辦公費用等管理指標。

6、保險管理

管理企業內部的各類福利保險;自定義保險險種、員工、企業的繳費記錄、明細分攤;處理員工參保,停保操作,與系統的工資等其它功能模塊相關聯進行匯總和查詢分析。

7、醫療管理

記錄員工入職時及各次體檢記錄,對在企業內部葯品的分發、使用、回收、醫葯費進行管理;對醫療服務的過程進行跟蹤記錄;對醫療服務的類型、費用等進行分類、分析等。

8、車輛管理

規范企業的公務用車管理。從申請、批復等環節對公務用車進行有效的管控;對外出路線、逗留時間、維修保養、路橋費、油費等進行有效有據的跟蹤記錄,從而達到降低費用,提高效用的目的。

返回頂端

十一、員工關系
◇對相關法律法規條款重要性與內容案例解讀,可能風險性預估;
◇明確公司規章各項條款與對應措施,量化必要的指標,更好貫徹各項規章;
◇公司公告的發布、公示與保管等,協助達到制度、公告的最大公示性;
◇法律法規、公司規章、公司公告明確責任到相關執行與保管人員,量化必要數據,保留原始憑據體系,以降低公司人力資源風險;
◇需求調查與處理、員工建議、文娛管理,結合公司理念,協助公司文化建設,提高員工滿意度,加強公司員工凝聚力;
◇職代會管理、工會管理:建立公司各種會議架構,明確職責。並對公司相關制度決議討論,對接國家對企業工會、職代會制度要求,有利公司和諧經營,從文化上降低經營風險與推行企業文化理念;
◇員工跟蹤:對員工計劃事項進行跟進,防止工作漏失;
◇離職員工訪談與跟蹤,針對離職原因切實改善管理;
◇合同管理:可對新員工自動產生合同,進行分類型管理,明確各類合同法定事項,保存各類相關原始文本與變更記錄,合同外約定附件等;
◇提供合同批次管理可按簽訂日期分合同批次,避免每日續簽合同,也防止漏簽或遲簽;
◇工傷管理:提供各工傷案的原始文件,處理步驟流程與進度維護。對各種工種鑒定級別做相應的理培事項;
◇證件管理:對各種證件的有無與有效期管理,自動提醒;
◇體檢管理:關注員工健康,對各工種員工按法規或公司制度進行體檢管理。按周期要求自動提醒需求;
◇文娛管理:對公司文娛計劃與執行,相關經費預算與實際應用進行管理;
◇◇對企業內部公告、通知、新聞消息等的登記、發布、跟蹤、反饋等進行分類管理與分析;
◇總經理信箱:在公司內部架設一個上下級之間可以快速、直接的溝通渠道。可對信息進行分類管理,並有保密措施。
返回頂端
十二、人力分析和輔助決策
◇包括人力成本分析、組織績效分析、合理化建議分析、薪資實驗分析、薪資分布分析;
◇自定義和輸出多種報表和圖表,靈活生成和輸出各種多維統計報表,分析人力資源的組成、成本和效益,發掘和預測人力資源的發展趨勢;
◇系統內置分析型數據倉庫,提供在線實時(OLAP)數據統計分析功能;
◇人員供給分析(根據生產情況及現有人員分析);
◇勞動生產率分析。
返回頂端

十三、文檔辦工流管理
◇支持文檔櫃管理,保證電子文檔與紙質文檔保管台帳對應,方便查找;
◇支持文件多級審批與會簽;
◇支持文件分類管理,內置常用法律法規、公司制度、通知通告等類別;
◇支持其它子系統調用相關文件;
◇可制定各類別文件對應不同審批流程、管控流程;
◇支持文件號、文件多版本管理;
◇通過文檔收發記錄,實時查詢文件起草、審批、公布、收發、保管履歷;
◇支持文件集中備份。
返回頂端
十四、工作流
◇支持針對不同單據而不同職位自定義工作流程;
◇支持自動提醒當前各類需要審批工作流單據;
◇支持工作流程許可權公式定義,例如每個職位可審批的請假天數;
◇支持多人會簽;
◇支持前後審批人員審批意見是否可見;
◇支持離崗期間指定職位替代,替代時可以按流程指定多人替代,是否可查看本人以前單據審批記錄
返回頂端
十五、領導查詢和員工自助查詢
◇XY-WEB星原人力資源查詢系統,採用完全的B/S結構,提高軟體的可維護性和可擴充性;
◇提供使用戶進行二次開發的通用模塊,用戶可以方便地擴展軟體的功能;
◇提供統一友好的操作界面和豐富的數據管理分析功能;
◇為企業的信息發布交流提供人性化的操作平台,使企業的規章制度、新聞簡報、技術交流、公告事項等及時傳播,使企業員工能及時了解企業發展動態;
◇改變傳統的集中辦公方式,擴大辦公區域,企業用戶可在家中、城市各地甚至世界各個角落通過網路連接隨時辦公;
◇系統地利用企業積累的信息資源,改進企業的創新能力和快速響應能力,以提高效率;
◇對客戶端機器的硬體要求較低,可以在保留原有的軟體和硬體的基礎上運行新的應用系統,不影響原有資源;
◇基於WEB方式的辦公系統只需在伺服器上作配置和維護,大大降低了用戶用於軟體系統維護和升級的難度及費用,使系統更加容易實施。
返回頂端

十六、SA8000人權驗廠方案
人權驗廠主要是政府部門、歐美客戶檢查企業執行勞動法的情況,主要表現在員工是否有超時加班和符合當地最低工資標准以及保險福利、安全保護情況。其核心就是人事、考勤和薪酬福利部分。
主持驗廠的對象及特點:

◇政府部門(勞動、稅務、海關)查廠:除了考勤和工資部門要調整外,人數、身份證和保險也應為關注調整重點。企業與政府保持良好的關系也是重要因素; ◇歐美客戶直接驗廠:由於不熟悉大陸情況比較容易應對;
◇客戶委託第三方驗廠:專業從事驗廠工作,對我國情況了如指掌,最難應對,既要符合標准,又要處理好關系。
驗廠的應對方式:
普遍採用的是針對不同的驗廠對象設立多套賬和多套制度,不同的方式,費用和效果差別很大。傳統手工和紙卡考勤方式 工作量大、費用高主要表現在處理考勤和工資項目以及對員工培訓的項目上。為了避免在處理人事考勤工資多套賬時耗用大量的人力和物力,我公司結合近千家工廠 一卡通驗廠實施經驗,總結了多套一卡通驗廠實施方案。

⑩ 如何查看spring源碼

1.准備工作:在官網上下載了Spring源代碼之後,導入Eclipse,以方便查詢。
2.打開我們使用Spring的項目工程,找到Web.xml這個網站系統配置文件,在其中找到Spring的初始化信息:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

由配置信息可知,我們開始的入口就這里ContextLoaderListener這個監聽器。
在源代碼中我們找到了這個類,它的定義是:
public class ContextLoaderListener extends ContextLoader
implements ServletContextListener {

/**
* Initialize the root web application context.
*/
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
if (this.contextLoader == null) {
this.contextLoader = this;
}
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
...
}

該類繼續了ContextLoader並實現了監聽器,關於Spring的信息載入配置、初始化便是從這里開始了,具體其他閱讀另外寫文章來深入了解。
二、關於IOC和AOP
關於Spring IOC 網上很多相關的文章可以閱讀,那麼我們從中了解到的知識點是什麼?
1)IOC容器和AOP切面依賴注入是Spring是核心。
IOC容器為開發者管理對象之間的依賴關系提供了便利和基礎服務,其中Bean工廠(BeanFactory)和上下文(ApplicationContext)就是IOC的表現形式。BeanFactory是個介面類,只是對容器提供的最基本服務提供了定義,而DefaultListTableBeanFactory、XmlBeanFactory、ApplicationContext等都是具體的實現。
介面:

public interface BeanFactory {
//這里是對工廠Bean的轉義定義,因為如果使用bean的名字檢索IOC容器得到的對象是工廠Bean生成的對象,
//如果需要得到工廠Bean本身,需要使用轉義的名字來向IOC容器檢索
String FACTORY_BEAN_PREFIX = "&";
//這里根據bean的名字,在IOC容器中得到bean實例,這個IOC容器就象一個大的抽象工廠,用戶可以根據名字得到需要的bean
//在Spring中,Bean和普通的JAVA對象不同在於:
//Bean已經包含了我們在Bean定義信息中的依賴關系的處理,同時Bean是已經被放到IOC容器中進行管理了,有它自己的生命周期
Object getBean(String name) throws BeansException;
//這里根據bean的名字和Class類型來得到bean實例,和上面的方法不同在於它會拋出異常:如果根名字取得的bean實例的Class類型和需要的不同的話。
Object getBean(String name, Class requiredType) throws BeansException;
//這里提供對bean的檢索,看看是否在IOC容器有這個名字的bean
boolean containsBean(String name);
//這里根據bean名字得到bean實例,並同時判斷這個bean是不是單件,在配置的時候,默認的Bean被配置成單件形式,如果不需要單件形式,需要用戶在Bean定義信息中標注出來,這樣IOC容器在每次接受到用戶的getBean要求的時候,會生成一個新的Bean返回給客戶使用 - 這就是Prototype形式
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//這里對得到bean實例的Class類型
Class getType(String name) throws NoSuchBeanDefinitionException;
//這里得到bean的別名,如果根據別名檢索,那麼其原名也會被檢索出來
String[] getAliases(String name);
}

實現:
XmlBeanFactory的實現是這樣的:
public class XmlBeanFactory extends DefaultListableBeanFactory {
//這里為容器定義了一個默認使用的bean定義讀取器,在Spring的使用中,Bean定義信息的讀取是容器初始化的一部分,但是在實現上是和容器的注冊以及依賴的注入是分開的,這樣可以使用靈活的 bean定義讀取機制。
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
//這里需要一個Resource類型的Bean定義信息,實際上的定位過程是由Resource的構建過程來完成的。
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
//在初始化函數中使用讀取器來對資源進行讀取,得到bean定義信息。這里完成整個IOC容器對Bean定義信息的載入和注冊過程
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws
BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}

閱讀全文

與開車上班20分鍾源碼相關的資料

熱點內容
軟通動力程序員節2021 瀏覽:845
安卓系統如何卸載安裝包 瀏覽:868
簡訊刪除助手文件夾 瀏覽:688
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:278
沈陽用什麼app租房車 瀏覽:857
00後高中生都用什麼app 瀏覽:239
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:808