主頁 > 後端開發 > JAVA 專案開發團隊分配管理軟體

JAVA 專案開發團隊分配管理軟體

2021-08-22 07:19:28 後端開發

實踐專案一 專案開發團隊分配

  • 前言
    • MVC模式
  • 實作目標:
    • 整體結構圖:
    • 整體功能實作分析:
    • 需求分析:
    • 軟體設計結構
  • 具體實作
    • 用戶注冊登錄模塊:
    • 開發人員管理模塊:
      • 資料的添加:
      • 資料的回傳:
    • 開發團隊調度模塊:
      • 需求說明
      • 團隊的創建:
      • 開發團隊調度管理模塊
    • 開發專案管理模塊:
    • 主界面的實作
  • 總結

前言

??相信大家在之前的學習當中也有了不少的識訓吧,對于自己的能力檢驗呢,最好的辦法就是通過實踐啦,那要怎么實踐呢,本博主這次主要講解了這次的實踐專案,這次的實踐專案是開發團隊分配調度的一個軟體,那么關于本次專案開發也主要體現了前面JAVA基礎知識的相關使用,以及相關知識的熟練度,接下來就和我一起走進本次實踐,歡迎大家一起交流學習!

在這里插入圖片描述

MVC模式

在這里我們首先介紹一個開發模式:MVC結構
??MVC 模式(Model–view–controller)是軟體工程中的一種軟體架構模式,它把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)
在這里插入圖片描述

??簡而言之在本次專案當中的思想在于:把整個專案分成多個部分的耦合; 并且主要分為:
??M 模型塊,即抽象父類
??V 視圖塊,列印出用戶互動資訊
??C 控制塊:用于實作對資料的各種操作

實作目標:

1.模擬實作員工基于文本界面的<<專案開發團隊分配管理軟體>>
2.熟悉Java面對物件的高級特性,進一步掌握編程技巧和除錯技巧
3.主要涉及以下知識點:
???? 類的繼承和多型性
???? 物件的值傳遞、介面
???? static和final修飾符
???? 特殊類的使用:包裝類、抽象類、內部類
???? 例外處理
???? Java基本語法和流程控制
???? 陣列,ArrayList集合

整體結構圖:

??首先我們先來看一下關于本次專案的整體一個系統功能的結構圖:
它主要是是分為幾個重要的板塊,關于用戶注冊登錄,開發人員管理,開發團隊調度以及開發專案管理.
在這里插入圖片描述
??了解了系統功能結構,我們接下來再看一下整個專案代碼的運行流程,以方便我們進行整體思路的架構還有專案的實作和完成

在這里插入圖片描述

整體功能實作分析:

??那么從剛才的兩張圖來說我們可以看出:想要完成整個專案呢,我們總共需要完成四個小模塊,而每一個模塊都有自己的功能,通過兩圖可以看出,完成該專案大致的思路都是完成各自模塊的增、刪、改、查,這幾個功能,相信大家都不陌生,難點在于:該專案需要把各個模塊相聯系起來,雖然第一感覺也不算太難,但真正開始聯系的時候可能會出現很多問題,比如博主就遇到了:模塊之間的資料銜接有問題: 每次跨模塊呼叫資料時,資料有差異,就很頭疼,其實問題在于:每次呼叫不同類,實體化物件的時候沒有注意其記憶體地址的改變,
??總之,完成該專案各個模塊之間的銜接,一定要注意每個實作功能服務類要回傳資料,不然后面呼叫起來會很麻煩;一定要注意,實體化物件時地址的改變(如果需要多次呼叫同一個功能類中的資料,盡量只實體化一次,其他的把實體化的物件以引數的形式傳遞即可),下面就是博主對該專案的實作思路和理解,
在這里插入圖片描述

需求分析:

該軟體實作以下功能:
???軟體啟動時,首先進入登錄界面進行注冊和登錄功能,
???當登陸成功后,進入萊單,首先就可以對開發人員賬戶和密碼進行修改,
???然后可以對開發人員進行增刪改操作
???人員添加成功后,根據榮單提示,榛于現有的公司成員,組建一個開發團隊以開發一個新的專案,
???組建程序包括將成員插入到團隊中,或從團隊中洗掉某成員,還可以列出團隊中現有成員的串列,開發團隊成員包括架構師、設計師和程式員,
?? ?團隊組建成功,則可以進入專案模塊,添加專案,分配開發團隊進行開發,

軟體設計結構

該軟體由以下三個模塊組成:
在這里插入圖片描述
?com.team.view 模塊為主控模塊,負責對選單的顯示和處理用戶操作
?com.team.service模塊為物體物件(Employee及其子類 如程式員等)的管理模塊,NanmelistService和TeamService類分別用各自的陣列來管理公司員工和開發團隊成員物件
?ProjectService 是對專案的操作物件類
?domaln模塊 為Employee及其子類等JavaBean類所在的包
??當然啦,這里也可以采用MVC模式,道理是一樣的
在這里插入圖片描述

具體實作

用戶注冊登錄模塊:

????????定義一個LoginView類

???實作注冊方法
????▼如果沒有賬戶則需要注冊
????▼如果有賬號則直接進行登錄

???實作登錄功能
????▼判斷用戶輸入的值是否正確
????▼如果正確則進入軟體選單
????▼如果錯誤則重新輸入,限制次數只有5次,超過次數則程式停止,重新啟動

???修改用戶密碼功能
????▼可以實作對用戶名,密碼,或者兩者都可以進行修改即可,

開發人員管理模塊:

??該模塊主要的難點在于:我們需要先存盤不同員工的資料,每個型別的員工我們需要建立相應的類,然后通過繼承來將幾個類之間聯系起來,建立每個類時,我們需要想清楚該類有哪些屬性,哪個屬性是可以繼承的,哪個屬性是自己獨有的,博主這里是通過集合來存盤的資料,
首先
????????在NameListService類中完成功能操作
??●實作員工的添加(根據職業添加(無, 程式員,設計師,架構師) )
??●實作員工的修改(至少修改員工的姓名,年齡,工資)
??●實作員工的洗掉(注意員工id需要動態顯示,也就是洗掉后,員工id需要更新)實作員工的查看(顯示所有資料)
在這里插入圖片描述

?? 說明
???getAllEmployees()方法:獲取當前所有員工,
??????回傳:包含所行員工集合
?? ?getEmployee(id:int)方法:獲取指定ID的員工物件,
??????引數:指定員工的ID
??????回傳:指定員工物件口
??????例外:找不到指定的員工
?? 在service子包下提供自定義例外類:TeamException
?? 另外可根據需要自行添加其他方法或多載構造器

資料的添加:

employees.add(new Employee(count, "馬云 ", 22, 3000));
employees.add(new Architect(++count, "馬化騰", 32, 18000, new NoteBook("聯想T4", 6000), 60000, 5000));
employees.add(new Programmer(++count, "李彥宏", 23, 7000, new PC("戴爾", "NEC 17寸")));
employees.add(new Programmer(++count, "劉強東", 24, 7300, new PC("戴爾", "三星 17寸")));
employees.add(new Designer(++count, "雷軍 ", 50, 10000, new Printer("激光", "佳能2900"), 5000));
employees.add(new Programmer(++count, "任志強", 30, 16800, new PC("華碩", "三星 17寸")));
employees.add(new Designer(++count, "柳傳志", 45, 35500, new PC("華碩", "三星 17寸"), 8000));
employees.add(new Architect(++count, "楊元慶", 35, 6500, new Printer("針式", "愛普生20k"), 15500, 1200));
employees.add(new Designer(++count, "史玉柱", 27, 7800, new NoteBook("惠普m6", 5800), 1500));
employees.add(new Programmer(++count, "丁磊 ", 26, 6600, new PC("戴爾", "NEC17寸")));
employees.add(new Programmer(++count, "張朝陽 ", 35, 7100, new PC("華碩", "三星 17寸")));
employees.add(new Designer(++count, "楊致遠", 38, 9600, new NoteBook("惠普m6", 5800), 3000));

??值得注意的是,這里存盤時,是通過new 物件,將資料以物件的帶參構造器傳入的資料,用該方法傳遞資料,需要在該類里重寫toString方法,不然的話,得到的只是該物件的地址,資料并沒有成功地傳入,

??資料的洗掉: 我們在洗掉資料時,需要將員工的號碼也前移一位,這樣得到的資料看著才更順暢,我們可以通過回圈遍歷洗掉過后的資料,使得他們的號碼依次減一:

資料的回傳:

    //得到所有員工資料集合
    public ArrayList<Employee> getAllEmployees() {

        return employees;
    }
    //得到當前員工
    public Employee getEmployee(int id) throws TeamException {

        for (int i = 0; i < employees.size(); i++) {

            if (employees.get(i).getId() == id) {
                return employees.get(i);
            }
        }
        throw new TeamException("該員工不存在");
    }

??完成基本的功能之后,最重要的是我們需要將的到的資料作為回傳值回傳,以便于下一個模塊對其的呼叫,這里博主寫了 開發人員資料的回傳,以及得到某一個員工資料的回傳,
??這兩個回傳方法,在添加團隊成員時,可以用到,

開發團隊調度模塊:

??該模塊的主要難點在于:把最后的主界面和開發人員管理模塊相聯系起來,這就要注意引數的傳遞要準確, 就比如,博主在添加團隊成員,呼叫開發人員的模塊時發現,在主界面對開發人員實作的增刪改查后的資料,在團隊模塊里找不到了!得到的只是開發人員模塊里初始化的資料,這個問題,博主改了好久,想起都頭疼!問題在于:在團隊模塊呼叫資料時,new了新物件,在主界面也new 了新物件,也就是說:主界面進行的增刪改查后的資料,只保存到了主界面,而團隊模塊只是重新呼叫了開發團隊的資料! 最后,博主才把主界面的物件做為引數傳到了團隊模塊,才完善了該功能,

需求說明

----------------------・ ゚*。・゚??。需求說明。??・ ゚*。・゚----------------------

如果添加操作因某種原因失敗,將顯示類似以下資訊(失敗原因視具體原因而不同):
1-團隊串列 2-添加團隊成員 3-洗掉團隊成員 4-退出請選擇(1-4): 2
------------------------------------------添加成員---------------------------------
請輸入要添加的員工ID: 2
添加失敗,原因:該員工已是某團隊成員
按回車鍵繼續…

失敗資訊包含以下幾種: (需要拋出自定義例外)
??成員己滿,無法添加
??該成員不是開發人員,無法添加
??該員工已在木開發團隊中
??該員工已是某團隊成員
??團隊中至多只能有一名架構師(以下判斷可借用instanceof進行判斷)
??團隊中至多只能有兩名設計師
??團隊中至多只能有三名程式員

團隊的創建:

    //增加團隊成員
    public void addMember(Employee e) throws TeamException {
        if (total >= MAX_MEMBER){
            throw new TeamException("成員已滿,無法添加");}
        if (!(e instanceof Programmer)) {
            throw new TeamException("該成員不是開發人員,無法添加");
        }
       // Programmer p = (Programmer)e;

        if (isExist(e)) {
            throw new TeamException("該員工已在本團隊中");
        }
        Programmer p = (Programmer)e;
        if(("BUSY".equalsIgnoreCase(p.getStatus().getNAME()))) {
            throw new TeamException("該員工已是某團隊成員");
        }else if ("VOCATION".equalsIgnoreCase(p.getStatus().getNAME())){
            throw new TeamException("該員工正在休假,無法添加");
        }
        //獲取team已有成員中架構師,設計師,程式員的人數
        int numOfArch = 0, numOfDsgn = 0, numOfPrg = 0;
        for (int i = 0; i < total; i++) {
            if (team[i] instanceof Architect) {numOfArch++;}
            else if (team[i] instanceof Designer){ numOfDsgn++;}
            else if (team[i] instanceof Programmer){ numOfPrg++;}
        }
        if (p instanceof Architect) {
            if (numOfArch >= 1)
            {throw new TeamException("團隊中至多只能有一名架構師");}
        } else if (p instanceof Designer) {
            if (numOfDsgn >= 2)
            {throw new TeamException("團隊中至多只能有兩名設計師");}
        } else if (p instanceof Programmer) {
            if (numOfPrg >= 3)
            {throw new TeamException("團隊中至多只能有三名程式員");}
        }
        //將p添加到現有team
        team[total++] = p;
        //p的屬性賦值
        p.setStatus(Status.BUSY);
        p.setMemberId(counter++);
    }

??我們可以先呼叫增刪改查后,開發人員的資料,得到想要存到團隊里的員工ID,添加到創建的陣列中,在添加團隊成員時,按照添加團隊成員的要求,設定判斷陳述句限制添加成員的類別和數量,
??在創建團隊時,我們可以在第一個團隊創建后,在退出這里,把團隊的資料保存到一個新建的集合里,然后初始化團隊的資料,以便于下一個團隊可以像第一個團隊那樣重新添加團隊成員

開發團隊調度管理模塊

參考實作: TeamService類的設計:
在這里插入圖片描述

功能:關于開發團隊成員的管理:添加、洗掉等(還需要自行實作),
說明:
???counter為靜態變數,用來為開發團隊新增成員自動生成團隊中的唯一ID, 即memberld (提示:應使用增1的方式)
???MAX_ MEMBER:表示開發團隊最大成員數
???team陣列:用來保存當前團隊中的各成員物件(也可以用一個新的集合)
???total:記錄團隊成員的實際人數
在這里插入圖片描述
說明:
???listSvc 和teamSvc屬性:供類中的方法使用
???enterMainMenu ()方法:主界面顯示及控制方法,
???以下方法僅供enterMainMenu()方法呼叫:
?????listAllEmplovees ()方法:以表格形式列出公司所有成員
?????getTeam()方法:顯示團隊成員串列操作
?????addMember ()方法:實作添加成員操作
?????deleteMember ()方法:實作洗掉成員操作

開發專案管理模塊:

該模塊需要實作的功能主要就是把添加進來的專案,隨機分配給團隊,
??實作專案的添加 (添加參考的專案)
??實作專案的分配 (團隊隨機分配一個專案進行開發)
??實作專案的查看 (顯示所有專案及是否被開發)
??實作專案的洗掉 (被開發中的專案不能被洗掉)
??不過我們需要注意的是,在分配時,我們要根據專案的狀態這個屬性來判斷該專案是否被開發,以便于后面執行分配時,避免重復分配,以及專案沒有確保分配到團隊中,在這里,我們采用了一個while回圈判斷:

  //隨機分配專案
 Random ra = new Random();
 int ranNum = ra.nextInt(pro.size());
 Project project = this.pro.get(ranNum);
 while (project.getStatus()) //使用while回圈,判斷如果專案已經開發,重新讀取 
{ 
 ranNum= ra.nextInt(pro.size());//重新獲取亂數             
 project=this.pro.get(ranNum);//集合重新取出隨機專案
}
 project.setTeamName(teamName);
 project.setTeam(team);
 project.setStatus(true);
 pro.set(ranNum, project);

在處理例外時,我們可以重寫例外輸出的資訊,以便于代碼更好的可讀性,

try {
              throw new TeamException("該專案不存在");
            } catch (TeamException e) {
              e.printStackTrace();
            }

在domain包中完成專案物體類Project的創建
在這里插入圖片描述
在service包中完成專案操作類ProjectService的創建
在這里插入圖片描述
??其他還需要的方法屬性可自行添加

主界面的實作

IndexView類的設計
??最后在view包中撰寫專案程式運行主界面類IndexView
??將前面4個模塊的內容裝在一起,并運行軟體,操作基本功能,除錯bug,專案開發完成,
在這里插入圖片描述

總結

在這里插入圖片描述
??本專案的實作還是具有一定的難度,該專案主要的難點在于:讓每個模塊相互銜接,以及各個模塊之間資料的引數傳遞要準確,還有就是在創建集合或者陣列保存資料時,注意集合或者陣列的初始化,保下一次資料的存盤不會受到影響,該專案是博主寫的第一個較大的專案,寫了好久,中間遇到了很多的問題,也修改了很久,有時候遇到的問題也相當頭疼,幸好在老師的幫助下,把問題解決掉以后,瞬間豁然開朗的那種感覺,還是挺不錯的,在遇到難以解決的問題,或者自己已經花了很多時間都沒有解決掉問題時,別頭鐵(一股腦地自己改,可能會越改越麻煩!),多和同學、老師交流請教,

??最后附上本次專案的代碼檔案,歡迎下載,

( ??????? ) hi! 我是一朵云

鏈接:https://pan.baidu.com/s/1HAMHxc4gOKGSlqzJ-pGA_g
提取碼:sy52
代碼源檔案

( ??????? )我想飄到你心里

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295394.html

標籤:java

上一篇:Java垃圾回識訓制(GC)

下一篇:JAVA方法

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more