人事管理系統總結

1.Maven 創建 Spring Boot 項目:

主要使用 Maven 創建 Spring Boot 項目、配置 MySQL 數據庫、回顧 Spring Boot 分層架構、使用 MyBatis 逆向工程生成代碼及整合測試項目等內容,具體如下:

  1. Maven 創建 Spring Boot 項目
    • 可通過 IDEA 直接創建,高版本 IDEA 若想使用低版本 JDK,也可借助阿里云國服地址(https://start.aliyun.com/)間接創建,創建時可預先選擇如 MySQL 驅動、Spring Web 等必要依賴。
    • 項目創建成功后,運行時若出現數據庫連接錯誤,可先注釋屏蔽 pom.xml 中的 Mybatis 依賴。當控制臺顯示 Tomcat 在 8080 端口啟動且項目啟動時間等信息時,表明項目創建成功。
  2. MySQL 數據庫配置
    • 可通過導入 example.sql 文件,或手動新建數據庫及用戶表(包含 name、pwd、userimg 等字段)來準備數據庫。
    • Spring Boot 2.0 以后默認使用 Hikari 連接池,在 application.properties 中需配置數據源信息,包括驅動類、數據庫 URL(高版本 MySQL 需設置時區參數)、用戶名、密碼及連接池相關參數(如最小空閑連接數、最大連接數等)。配置完成后,可恢復之前屏蔽的 Mybatis 依賴。
  3. Spring Boot 分層架構回顧
    • pojo 層:定義與數據庫對應的屬性,提供 get/set 方法、構造方法等。
    • dao 層:通過接口訪問數據庫,具體實現寫在 mapper.xml 中。
    • service 層:調用 dao 層接口,先設計接口再實現,完成業務邏輯。
    • controller 層:負責前后端交互,接收前端請求并調用 service 層,返回響應數據。
  4. MyBatis 逆向工程
    • 在 pom.xml 中配置 mybatis-generator 插件及 MySQL 驅動依賴,指定 generatorConfig.xml 文件位置。
    • 在 generatorConfig.xml 中配置 pojo 類、mapper.xml 映射文件、持久層接口的生成路徑,以及數據庫連接信息和表名。執行插件后自動生成相關文件,需注意避免反復執行導致 sql 語句重復報錯。
  5. 整合測試項目
    • 創建 service 和 controller 文件,在 application.properties 中配置 mybatis mapper 文件路徑。
    • 在啟動類中添加 @MapperScan 注解掃描 dao 層包,在 dao 接口和 mapper.xml 中定義并實現查詢方法,service 層實現接口調用 dao 層,controller 層通過 service 層處理請求。啟動項目后,通過訪問指定 URL(如http://localhost:8081/admin/find)測試功能。

2.登錄、MD5 加密及攔截器:

?Spring Boot 項目中登錄功能實現、MD5 加密及攔截器配置,具體內容如下:

  1. 熱部署配置
    • application.properties中添加配置spring.thymeleaf.cache=false,實現修改 HTML 頁面后無需重啟項目,刷新即可生效。
    • 同時需在 IDEA 設置中開啟相關編譯選項,確保熱部署功能正常使用。
  2. 前端 UI 框架與頁面結構
    • 采用 LayUI 作為前端框架,在resources/static目錄下組織 CSS、JS、圖片等靜態資源,登錄頁面和后臺主頁分別為login.htmlindex.html,存放于templates/admin目錄。
  3. Controller 層處理登錄邏輯
    • 通過@GetMapping映射/userlogin/等路徑,返回登錄頁面;映射/sys_index返回后臺主頁。
    • @PostMapping("/userlogin")接收前端提交的用戶名和密碼,校驗非空后調用auserService.login()方法,并根據返回結果跳轉頁面或提示錯誤。
  4. Dao 層與 Service 層實現登錄驗證
    • Dao 層:在AuserMapper.java中定義login方法,接收用戶名和密碼參數;AuserMapper.xml中編寫 SQL 語句,根據用戶名和密碼查詢用戶信息。
    • Service 層AuserService.java定義userlogin接口,AuserServiceImpl.java實現時對密碼進行 MD5 加密(調用MD5Util.MD5Encode),再調用 Dao 層方法查詢用戶。
  5. 攔截器實現登錄狀態校驗
    • 攔截器類AdminLoginInterceptor實現HandlerInterceptor,在preHandle方法中檢查請求路徑是否以/admin開頭且 session 中無用戶信息,若未登錄則重定向到登錄頁面并提示錯誤。
    • 配置類MyWebMvcConfigurer通過@Configuration標記,注冊攔截器并指定攔截路徑(/admin/**),排除登錄接口/admin/userlogin,確保未登錄用戶無法訪問后臺頁面。

3.退出功能、驗證碼登錄及用戶信息修改:

?Spring Boot 項目中退出功能、驗證碼登錄及用戶信息(含密碼)修改的實現,具體內容如下:

  1. 退出系統實現
    • AuserController中通過@GetMapping("/logout")映射退出路徑,調用session.invalidate()銷毀會話,并重定向到登錄頁面。
  2. 驗證碼登錄功能
    • 依賴配置:引入 Hutool 工具庫的驗證碼模塊hutool-captcha(版本 5.8.7),用于生成和驗證圖片驗證碼。
    • 驗證碼生成:創建VerifyCodeController,通過CaptchaUtil.createShearCaptcha生成驗證碼圖片,將驗證碼存入 Session 并輸出圖片流,響應頭設置禁止緩存。
    • 前端集成:在login.html中添加驗證碼輸入框和圖片組件,點擊圖片可刷新驗證碼,引入 LayUI 組件進行表單驗證。
    • 后端驗證:修改登錄接口@PostMapping("/userlogin"),增加驗證碼參數校驗,從 Session 中獲取驗證碼并調用verify方法驗證,驗證失敗則返回錯誤提示。
  3. 用戶信息修改
    • 基礎信息展示:在用戶登錄成功后,將用戶名、密碼、頭像地址存入 Session,index.html通過th:src獲取頭像地址并顯示,默認頭像存放在static/images/user.jpg,數據庫auseruserimg字段默認值設為該路徑。
    • 密碼修改邏輯
      • 舊密碼驗證:通過@GetMapping("/password")接口接收舊密碼,從 Session 獲取系統存儲的 MD5 密碼,加密輸入的舊密碼后進行比對,返回驗證結果。
      • 信息更新:Service 層定義updateUser方法,調用 MyBatis 自動生成的updateByPrimaryKeySelective接口更新用戶信息;Controller 層接收新密碼,加密后調用 Service 層方法完成更新。
    • 頁面跳轉:通過@GetMapping("/userInfo")映射用戶信息編輯頁面userInfo-edit.html,提供修改入口。

4.修改頭像:

?Spring Boot 項目中修改頭像的文件上傳功能實現、靜態資源配置、上傳驗證及部門管理增刪改查示例,具體內容如下:

  1. 文件上傳工具類
    • 定義UploadFileUtils.java,包含三個方法:getSuffixName獲取文件后綴、getNewFileName生成 “當前時間 + 隨機數 + 后綴” 的新文件名、getHost獲取服務器主機名,用于處理文件上傳的基礎操作。
  2. 文件上傳邏輯實現
    • 控制器處理AuserController@PostMapping("/upload/userImg")接收文件,調用工具類生成新文件名,在本地或服務器創建upload文件夾,通過file.transferTo保存文件,并生成可訪問的 URL(如http://localhost:8081/upload/xxx.jpg)存入數據庫,同時更新 Session 中的頭像地址。
  3. 靜態資源映射配置
    • MyWebMvcConfigurer中通過addResourceHandlers配置,將/upload/**路徑映射到本地存儲位置(file:upload/),確保前端可通過 URL 訪問上傳的圖片資源。
  4. 上傳功能驗證與配置
    • 打包運行:項目打包為 JAR 文件(如example-1.0.jar)后,通過命令行java -jar運行,脫離 IDEA 驗證圖片上傳和顯示效果。
    • 文件大小限制:在application.properties中配置單個文件最大 10MB、總文件最大 30MB,避免大文件上傳導致性能問題。
  5. 部門管理增刪改查示例
    • 數據庫表:新建department部門表,包含iddnamedtel等字段,用于演示業務操作。
    • 逆向工程:重新配置 Mybatis-generator,根據department表自動生成對應的 pojo、dao、mapper.xml 文件,注意確保數據庫中無同名表以免沖突。

5.分頁查詢:

Spring Boot 項目中基于 Layui 實現部門管理的分頁查詢功能,具體內容如下:

  1. 分頁基礎配置
    • 前端與控制器:創建部門列表頁面department-list.html,通過DepartmentController@GetMapping("/department")映射訪問該頁面。
    • Layui 參數:Layui 表格默認請求page(當前頁)和limit(每頁記錄數)參數,點擊分頁按鈕時以 GET 方式傳遞這兩個參數。
  2. SQL 分頁邏輯
    • 查詢語句:使用LIMIT實現分頁,公式為LIMIT limit*(page-1), limit,例如查詢從第 3 條開始的 10 條記錄為LIMIT 2, 10
  3. 后端處理流程
    • 控制器@GetMapping("/department/listall")接收包含pagelimit的參數 Map,計算起始索引start=(page-1)*limit,調用 Service 層方法處理分頁請求。
    • 返回格式:遵循 Layui 表格的異步返回格式,定義Result類包含code(狀態碼)、msg(提示信息)、count(總記錄數)、data(當前頁數據)。
  4. Mapper 與 Service 層實現
    • Mapper 接口findDepartmentList方法執行分頁查詢,getTotalDepartments方法統計總記錄數。
    • Mapper XML:編寫 SQL 語句,findDepartmentList使用LIMIT #{start},#{limit}分頁,getTotalDepartments使用COUNT(*)統計總數。
    • Service 實現getDepartmentsList方法調用 Mapper 獲取分頁數據和總記錄數,組裝成Result對象返回,滿足 Layui 表格的數據格式要求。
  5. 時間格式處理
    • 在實體類Department.java的時間字段establishmentdate上添加@JsonFormat注解,設置格式為yyyy-MM-dd HH:mm:ss,時區為GMT+8,確保前端正確顯示時間格式。

6.模糊查詢:

Spring Boot 項目中基于部門名稱的模糊查詢功能實現,結合分頁邏輯與 SQL 注入安全說明,具體內容如下:

  1. Mapper 層 SQL 配置
    • 模糊查詢語句:在DepartmentMapper.xml中定義findDepartmentListByName方法,使用like '%${dname}%'實現部門名稱(dname)的模糊查詢,按創建時間倒序排列并添加分頁參數limit #{start},#{limit};同時定義getTotalDepartmentsByName方法統計符合條件的總記錄數。
    • SQL 注入風險:對比${}#{}的安全性,${}直接拼接參數易導致 SQL 注入(如用戶輸入惡意字符),而#{}通過預編譯防止攻擊,但此處因模糊查詢需動態拼接百分號,故使用${}并強調其安全風險。
  2. 接口與方法定義
    • Mapper 接口DepartmentMapper.java中聲明findDepartmentListByName(接收 dname、start、limit 參數)和getTotalDepartmentsByName(接收 dname 參數)方法。
    • Service 層DepartmentService.java定義getDepartmentsListByName接口,DepartmentServiceImpl.java實現時調用 Mapper 獲取模糊查詢結果和總記錄數,組裝成 Layui 表格所需的Result對象格式。
  3. 控制器處理
    • DepartmentController.javalistByName方法通過@GetMapping("/department/listbyname")接收包含pagelimit(分頁參數)和dname(查詢關鍵詞)的參數 Map,計算起始索引后調用 Service 層方法處理請求并返回結果。

7.添加:

Spring Boot 項目中部門管理模塊的添加功能實現,包括刷新頁面校驗、唯一性約束設置、各層代碼實現及參數接收方式,具體內容如下:

  1. 刷新頁面校驗
    • AuserController中通過@GetMapping("/reload")定義刷新接口,檢查 Session 中是否存在用戶名name,存在則返回true,用于驗證用戶登錄狀態。
  2. 唯一性約束設置
    • 為避免部門名稱重復,對數據庫department表的dname字段添加唯一性索引(UNIQUE),確保數據完整性。
  3. 添加功能各層實現
    • 控制器層
      • @GetMapping("/department/add")跳轉至部門添加頁面department-add.html
      • @PostMapping("/department/add")支持三種參數接收方式:通過@RequestParam逐個獲取參數、接收Map鍵值對、使用@RequestBody接收 JSON 格式數據(需前端調整提交格式為 JSON)。
    • 服務層DepartmentService定義addDepartment接口,實現類中調用DepartmentMapperinsertSelective方法插入數據,根據插入結果返回操作成功或失敗的Result對象。
    • 持久層:利用 MyBatis 逆向工程生成的insertSelective方法,支持選擇性插入部門數據(非空字段才插入)。
  4. 前端參數提交調整
    • 當使用@RequestBody接收 JSON 數據時,前端頁面需將表單數據通過JSON.stringify轉換為 JSON 格式,并設置請求頭contentTypeapplication/json

8.刪除和修改:

Spring Boot 項目中部門管理模塊的刪除和修改功能實現,具體內容如下:

  1. 刪除功能實現
    • 持久層(Mapper):使用 MyBatis 逆向工程生成的deleteByPrimaryKey方法,修改返回類型為boolean,通過主鍵 ID 刪除部門記錄。
    • 服務層(Service)DepartmentService定義deleteById接口,實現類中調用deleteByPrimaryKey,根據刪除結果返回包含狀態碼和提示信息的Result對象。
    • 控制器層(Controller)@PostMapping("/department/delete")接收前端傳遞的部門 ID,調用服務層刪除方法并返回結果。
  2. 修改功能實現
    • 顯示待修改部門信息
      • 控制器@GetMapping("/department/edit")通過 ID 獲取部門信息,若 ID 存在則將數據存入Model,傳遞到編輯頁面department-edit.html
      • 服務層getDepartmentById方法調用 MyBatis 的selectByPrimaryKey,根據 ID 查詢部門詳情。
    • 提交修改信息
      • 持久層:使用updateByPrimaryKeySelective方法,支持選擇性更新部門字段(僅更新非空屬性)。
      • 服務層saveDepartment接口接收修改后的部門對象,調用updateByPrimaryKeySelective并返回操作結果。
      • 控制器層@PostMapping("/department/edit")接收前端參數,更新部門對象的名稱、電話、描述等信息,調用服務層完成修改。

以上功能通過各層協作,實現了基于主鍵的部門刪除和動態字段修改,確保數據操作的準確性和完整性。

9.崗位管理:

Spring Boot 項目中崗位管理模塊的增刪改查功能實現,基于 MyBatis 逆向工程生成基礎代碼,結合分頁、模糊查詢等邏輯,具體內容如下:

1.?數據庫表與逆向工程

  • 崗位表結構:新建post表,包含id(主鍵)、pname(崗位名稱)、ptype(崗位類型)、organization(所屬機構)等字段,其中pname設置唯一性約束避免重復。
  • 逆向工程配置:重新配置 MyBatis-Generator,自動生成post表對應的pojodaomapper.xml文件,簡化基礎代碼開發。

2.?分頁查詢

  • 前端與控制器:創建崗位列表頁面post-list.htmlPostController通過@GetMapping("/post")跳轉頁面,@GetMapping("/post/listall")接收page(當前頁)和limit(每頁記錄數)參數,計算起始索引start=(page-1)*limit,調用 Service 層處理分頁邏輯。
  • Mapper 與 ServicePostMapper定義findPostList(分頁查詢)和getTotalPosts(統計總數)方法,XML 中使用LIMIT #{start},#{limit}COUNT(*)實現分頁和計數;Service 層組裝符合 Layui 表格格式的Result對象(包含codemsgcountdata)返回前端。

3.?模糊查詢

  • 按崗位名稱查詢PostMapper.xml中使用like '%${pname}%'實現模糊查詢,PostMapper聲明findPostListByNamegetTotalPostsByName方法;Service 層和 Controller 層接收查詢關鍵詞pname,結合分頁參數完成模糊查詢并返回結果。

4.?刪除功能

  • 主鍵刪除:利用 MyBatis 生成的deleteByPrimaryKey方法,通過主鍵id刪除崗位記錄;Service 層封裝刪除結果為Result對象,Controller 層接收id參數并調用 Service 層方法執行刪除。

5.?新增功能

  • 唯一性校驗:數據庫對pname字段添加唯一索引(UNIQUE),避免重復崗位名稱。
  • 數據插入PostController跳轉添加頁面post-add.html,接收前端參數創建Post對象,調用 Service 層addPost方法,通過insertSelective選擇性插入非空字段數據。

6.?修改功能

  • 顯示待修改信息PostController通過@GetMapping("/post/edit")獲取崗位id,調用 Service 層getPostById(基于selectByPrimaryKey)查詢詳情,存入Model傳遞到編輯頁面post-edit.html
  • 提交修改:前端提交修改后,Controller 層更新Post對象的pnameptype等字段,調用 Service 層savePost方法,通過updateByPrimaryKeySelective選擇性更新數據庫記錄。

核心邏輯總結

  • 分層協作:各功能均遵循 “Controller 接收請求→Service 處理業務→Mapper 操作數據庫” 的分層架構,利用 MyBatis 逆向工程生成的基礎方法(如selectByPrimaryKeyinsertSelective)簡化開發。
  • 參數處理:分頁、模糊查詢、增刪改操作均通過@RequestParamMap接收參數,確保前端與后端數據格式匹配,同時通過Result類統一返回格式,滿足 Layui 組件的異步數據要求。

10.創建員工表后的崗位查詢:

Spring Boot 項目中創建員工表后,如何通過關聯查詢實現崗位編制人數(員工數量)的統計與顯示,具體內容如下:

  1. 數據庫表結構與外鍵設置
    • 員工表(staff):創建或導入staff表,設置兩個外鍵索引,depart_id關聯department表的id(部門外鍵),post_id關聯post表的id(崗位外鍵),通過外鍵約束確保數據一致性。
    • 崗位表(post)organization字段(編制人數)默認值為 0,需通過員工表中post_id相同的記錄數重新賦值。
  2. MyBatis 逆向工程與代碼生成
    • 重新配置 MyBatis-Generator,自動生成staff表對應的pojodaomapper.xml文件,為后續數據操作提供基礎接口。
  3. 崗位編制人數統計邏輯
    • 持久層(Mapper):在StaffMapper.xml中定義getSamePostTotal方法,通過SELECT COUNT(*)統計staff表中特定post_id的員工數量;PostMapper使用updateByPrimaryKeySelective方法更新崗位表的organization字段。
    • 服務層(Service):修改PostServiceImplgetPostsList方法,遍歷崗位列表,調用staffMapper.getSamePostTotal(post.getId())獲取每個崗位的員工數,存入post對象的organization屬性,并更新崗位信息到數據庫。
  4. 數據關聯與更新流程
    • 通過崗位表與員工表的post_id外鍵關聯,實現 “崗位編制人數 = 該崗位員工總數” 的統計邏輯,確保崗位列表顯示的編制人數實時反映員工表中的關聯數據。

11.員工管理:
?

Spring Boot 項目中員工管理模塊的實現,包括分頁查詢、詳情查看、信息修改等功能,通過關聯部門和崗位表實現數據整合與顯示,具體內容如下:

1.?分頁查詢與數據關聯

  • 實體類擴展:在Staff.java中添加departname(部門名)和postname(崗位名)屬性(無數據庫對應字段,僅用于前端顯示),并提供get/set方法。
  • 控制器與服務層
    • StaffController通過@GetMapping("/staff/listall")接收分頁參數pagelimit,調用staffService.getStaffsList處理分頁邏輯。
    • StaffServiceImpl中,先通過staffMapper.findStaffList獲取分頁員工數據,再遍歷每個員工,根據departIdpostId查詢對應的部門(departmentMapper.selectByPrimaryKey)和崗位(postMapper.selectByPrimaryKey)名稱,設置到員工對象中,并根據enddate判斷員工狀態(“轉正” 或 “試用期”)。
  • 持久層StaffMapper.xml定義分頁查詢findStaffList和總數統計getTotalStaffs方法,使用LIMITCOUNT(*)實現分頁邏輯。

2.?詳情頁顯示與時間格式處理

  • 時間格式注解:在Staff.java中對birthdayentrydate等時間字段添加@JsonFormat注解,指定格式為yyyy-MM-dd,時區為GMT+8,確保前端正確顯示日期。
  • 詳情查詢邏輯StaffControllerstaffView方法通過員工id查詢員工信息,關聯部門和崗位表獲取名稱,存入Model后跳轉至詳情頁staff-view

3.?員工信息修改功能

  • 編輯頁面數據準備
    • StaffControllergotostaffEdit方法獲取員工信息后,查詢所有部門(departmentService.getDepartmentList)和崗位(postService.getPostsList),并準備性別、民族、學歷等下拉列表數據,傳遞到編輯頁面staff-edit
    • 部門和崗位列表通過DepartmentServicePostServicegetDepartmentListgetPostsList方法獲取,底層調用mapper的全量查詢。
  • 數據提交與更新
    • 前端以 JSON 格式提交修改數據,StaffController通過@PostMapping("/staff/edit")接收參數,使用SimpleDateFormat解析日期字段(如birthdayentrydate),轉換為java.sql.Date后更新員工對象。
    • StaffServiceImpl調用staffMapper.updateByPrimaryKeySelective實現選擇性更新,返回操作結果。

核心邏輯與技術點

  • 外鍵關聯查詢:通過員工表的departIdpostId外鍵,關聯部門表和崗位表,實現 “員工 - 部門 - 崗位” 三級數據聯動,確保前端顯示完整信息。
  • 狀態動態判斷:根據員工試用期結束日期enddate與當前時間的對比,動態設置員工狀態(“轉正” 或 “試用期”),增強業務邏輯的自動化。
  • 分層架構協作:遵循 “Controller(請求處理)→ Service(業務邏輯)→ Mapper(數據庫操作)” 分層模式,利用 MyBatis 的selectByPrimaryKeyupdateByPrimaryKeySelective等方法簡化數據操作。

通過以上實現,員工管理模塊實現了數據的分頁展示、詳情查看、動態狀態判斷及復雜表單編輯,確保了前端與后端的數據一致性和操作便捷性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80744.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80744.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80744.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot--springboot簡述及快速入門

spring Boot是spring提供的一個子項目,用于快速構建spring應用程序 傳統方式: 在眾多子項目中,spring framework項目為核心子項目,提供了核心的功能,其他的子項目都需要依賴于spring framework,在我們實際…

INT202 Complexity of Algroithms 算法的復雜度 Pt.7 NP-Completeness NP完全性

文章目錄 1.P與NP問題1.1 計算上難以解決的問題(Hard Computational Problems)1.2 決策問題和優化問題(Decision/Optimization problems)1.3 計算問題的正式定義1.4 復雜性類1.4.1 復雜性類 P P P1.4.2 證明(Certifica…

websocketpp 安裝及使用

介紹 WebSocket 是從 HTML5 開始支持的一種網頁端和服務端保持長連接的消息推送機制。 傳統的 web 程序都是屬于 "一問一答" 的形式,即客戶端給服務器發送了一個 HTTP 請求,服務器給客戶端返回一個 HTTP 響應。這種情況下服務器是屬于被動…

Android NDK 高版本交叉編譯:為何無需配置 FLAGS 和 INCLUDES

引言:NDK 交叉編譯的演進 Android NDK(Native Development Kit)是開發高性能C/C代碼的核心工具鏈,而交叉編譯(在x86主機上生成ARM架構代碼)一直是NDK的核心功能。過去,開發者需要手動配置大量編…

AI+可視化:數據呈現的未來形態

當AI生成的圖表開始自動“美化”數據,當動態可視化報告能像人類一樣“講故事”,當你的眼球運動直接決定數據呈現方式——數據可視化的未來形態,正在撕裂傳統認知。某車企用AI生成的3D可視化方案,讓設計師集體失業;某醫…

基于Flink的用戶畫像 OLAP 實時數倉統計分析

1.基于Flink的用戶畫像 OLAP 實時數倉統計分析 數據源是來自業務系統的T日數據,利用kakfa進行同步 拼接多個事實表形成大寬表,優化多流Join方式,抽取主鍵和外鍵形成主外鍵前置層,抽取外鍵和其余內容形成融合層,將4次事…

Java游戲服務器開發流水賬(7)網絡通信簡介

在 Java 游戲服務器開發中,網絡通訊是核心組成部分,它主要負責客戶端與服務器之間的數據交換。 一、網絡通訊基礎 1. 網絡模型 C/S 架構:游戲服務器采用客戶端 / 服務器模式,客戶端向服務器發送請求,服務器處理請求…

使用ADB命令操作Android的apk/aab包

keystore文件轉換jks文件 操作步驟: 步驟1,生成P12文件: keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步驟2,生成jks文件: keytool…

圖文展示HDFS、YARN、MapReduce三者關系

MapReduce架構概述 MapReduce將計算過程分為兩個階段:Map和Reduce (1)Map階段并行處理輸入數據 (2)Reduce階段對Map結果進行匯總 HDFS、YARN、MapReduce三者關系

DL00219-基于深度學習的水稻病害檢測系統含源碼

🌾 基于深度學習的水稻病害檢測系統 — 智能農業的未來,守護農田的每一寸土地! 🚜 完整系統獲取見文末 水稻病害檢測,一直是農業領域的一大難題。傳統的人工檢測不僅耗時耗力,還容易因經驗不足導致漏檢或誤…

github 上的 CI/CD 的嘗試

效果 步驟 新建倉庫設置倉庫的 page 新建一個 vite 的項目,改一下 vite.config.js 中的 base 工作流 在項目的根目錄下新建一個 .github/workflows/ci.yml 文件,然后編輯一下內容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…

鴻蒙5.0項目開發——鴻蒙天氣項目的實現(介紹)

【高心星出品】 文章目錄 項目簡介:項目運行效果圖:主要功能:使用的技能點:開發環境: 項目簡介: 這是一個基于鴻蒙系統(HarmonyOS)開發的天氣應用,采用 ArkTS 語言開發&…

SpringCloud之Eureka基礎認識-服務注冊中心

0、認識Eureka Eureka 是 Netflix 開源的服務發現組件,后來被集成到 Spring Cloud 生態中,成為 Spring Cloud Netflix 的核心模塊之一。它主要用于解決分布式系統中??服務注冊與發現??的問題。 Eureka Server 有必要的話,也可以做成集群…

【氮化鎵】電子輻照下溫度對GaN位移閾能的影響

2024年,華東師范大學的彭勝國等人基于從頭算分子動力學(AIMD)方法,研究了低能電子束輻照下溫度對氮化鎵(GaN)位移閾能(TDE)的影響。實驗結果表明,在初始動能40至80 eV的范圍內,鎵(Ga)和氮(N)原子作為初級擊出原子(PKAs)引發的位移對溫度呈現不同的敏感性:Ga 的…

Java 中的數據類型誤導點!!!

在 Java 中,數據類型分為兩大類:基本類型(Primitive Types) 和 引用類型(Reference Types)。它們的存儲方式和行為完全不同。 1. 基本類型 Java 有 8 種基本數據類型,它們直接存儲值&#xff…

二次封裝 el-dialog 組件:打造更靈活的對話框解決方案

文章目錄 引言為什么需要二次封裝?封裝思路代碼實現1. 基礎封裝組件 (Dialog.vue)2. Vue中引入使用示例 封裝后的優勢進階優化建議 總結 引言 在 Vue 項目中,Element UI 的 el-dialog 是一個非常實用的對話框組件。但在實際開發中,我們經常會…

框架篇八股(自用)

框架篇 Spring框架中的bean不是線程安全的 Scope() singleton單例 prototype多例 一個類中有可修改的成員變量需要考慮線程安全 bean沒有可變狀態(service類,DAO類) 某種程度單例bean是線程安全的 AOP面向切面編程…

Go語言安裝proto并且使用gRPC服務(2025最新WINDOWS系統)

1.protobuf簡介 protobuf 即 Protocol Buffers,是一種輕便高效的結構化數據存儲格式,與語言、平臺無關,可擴展可序列化。protobuf 性能和效率大幅度優于 JSON、XML 等其他的結構化數據格式。protobuf 是以二進制方式存儲的,占用空…

rust-candle學習筆記11-實現一個簡單的自注意力

參考:about-pytorch 定義ScaledDotProductAttention結構體: use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …

spark MySQL數據庫配置

Spark 連接 MySQL 數據庫的配置 要讓 Spark 與 MySQL 數據庫實現連接,需要進行以下配置步驟。下面為你提供詳細的操作指南和示例代碼: 1. 添加 MySQL JDBC 驅動依賴 你得把 MySQL 的 JDBC 驅動添加到 Spark 的類路徑中。可以通過以下兩種方式來完成&a…