SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 後端篇(五): 數據表設計、使用 jwt、redis、sms 工具類完善註冊登錄邏輯

来源:https://www.cnblogs.com/l-y-h/archive/2020/07/07/13264307.html
-Advertisement-
Play Games

(1) 相關博文地址: SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(一):搭建基本環境:https://www.cnblogs.com/l-y-h/p/12930895.html SpringBoot + Vue + ElementUI 實現後臺管理 ...


(1) 相關博文地址:

SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(一):搭建基本環境:https://www.cnblogs.com/l-y-h/p/12930895.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(二):引入 element-ui 定義基本頁面顯示:https://www.cnblogs.com/l-y-h/p/12935300.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(三):引入 js-cookie、axios、mock 封裝請求處理以及返回結果:https://www.cnblogs.com/l-y-h/p/12955001.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(四):引入 vuex 進行狀態管理、引入 vue-i18n 進行國際化管理:https://www.cnblogs.com/l-y-h/p/12963576.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(五):引入 vue-router 進行路由管理、模塊化封裝 axios 請求、使用 iframe 標簽嵌套頁面:https://www.cnblogs.com/l-y-h/p/12973364.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 前端篇(六):使用 vue-router 進行動態載入菜單:https://www.cnblogs.com/l-y-h/p/13052196.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 後端篇(一): 搭建基本環境、整合 Swagger、MyBatisPlus、JSR303 以及國際化操作:https://www.cnblogs.com/l-y-h/p/13083375.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 後端篇(二): 整合 Redis(常用工具類、緩存)、整合郵件發送功能:https://www.cnblogs.com/l-y-h/p/13163653.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 後端篇(三): 整合阿裡雲 OSS 服務 -- 上傳、下載文件、圖片:https://www.cnblogs.com/l-y-h/p/13202746.html
SpringBoot + Vue + ElementUI 實現後臺管理系統模板 -- 後端篇(四): 整合阿裡雲 簡訊服務、整合 JWT 單點登錄:https://www.cnblogs.com/l-y-h/p/13214493.html

(2)代碼地址:

https://github.com/lyh-man/admin-vue-template.git

 

一、數據表設計

1、需求分析

(1)目的:
  由於此項目作為一個後臺管理系統模板,不同用戶登錄後應該有不同的操作許可權,所以此處實現一個簡單的菜單許可權控制。即不同用戶登錄系統後,會展示不同的菜單,並對菜單具有操作(增刪改查)的許可權。

(2)數據表設計(自己瞎搗鼓的,有不對的地方還望 DBA 大神不吝賜教(=_=)):
需求:
  一個用戶登錄系統後,根據其所代表的的角色,去查詢其對應的菜單許可權,並返回相應的菜單數據。

  整個設計核心可以分為:用戶、用戶角色(下麵簡稱角色)、菜單許可權(下麵簡稱菜單)。

思考一:
  一個用戶只擁有一個角色,一個角色可以被多個用戶擁有。
  一個角色可以有多個菜單,一個菜單可以被多個角色擁有。
  即 角色 與 用戶間為 1 對 多關係,角色 與 菜單 間為 多對多關係。
  所以可以在用戶表中定義一個欄位作為外鍵 關聯到 角色表。
  而角色表 與 菜單表 採用 中間表去維護。

思考二:
  一個用戶可以有多個角色,一個角色可以被多個用戶擁有。
  一個角色可以有多個菜單,一個菜單可以被多個角色擁有。
  即 菜單 與 角色 間屬於 多對多關係,用戶 與 角色間 也屬於 多對多關係。
  所以 用戶表 與 角色表間、角色表 與 菜單表間均可以採用 中間表維護。

為了避免使用外鍵,此處我均採用中間表對三張表進行數據關聯。

 

最終設計(三個主表,兩個中間表):
  用戶表 sys_user
  用戶角色表 sys_user_role
  角色表 sys_role
  角色菜單表 sys_role_menu
  菜單表 sys_menu

 

2、用戶表(sys_user)設計

(1)必須欄位:
  用戶 ID、用戶名、用戶手機號、用戶密碼。
其中:
  用戶手機號 作為用戶註冊、登錄的依據(用戶名也可以登錄)。
  用戶名為 用戶登錄後顯示的 昵稱。
  用戶密碼 需要密文存儲(此項目中 前端、後端均對密碼進行 MD5 加密處理)。

(2)數據表結構如下:

-- DROP DATABASE IF EXISTS admin_template;
--
-- CREATE DATABASE admin_template;

-- --------------------------sys_user 用戶表---------------------------------------
USE admin_template;
DROP TABLE IF EXISTS sys_user;
-- 用戶表
CREATE TABLE sys_user (
    id bigint NOT NULL COMMENT '用戶 ID',
    name varchar(20) NOT NULL COMMENT '用戶名',
    mobile varchar(20) NOT NULL COMMENT '用戶手機號',
    password varchar(64) NOT NULL COMMENT '用戶密碼',
   sex tinyint DEFAULT NULL COMMENT '性別, 0 表示女, 1 表示男',
   age tinyint DEFAULT NULL COMMENT '年齡',
   avatar varchar(255) DEFAULT NULL COMMENT '頭像',
   email varchar(100) DEFAULT NULL COMMENT '郵箱',
    create_time datetime DEFAULT NULL COMMENT '創建時間',
    update_time datetime DEFAULT NULL COMMENT '修改時間',
    delete_flag tinyint DEFAULT NULL COMMENT '邏輯刪除標誌,0 表示未刪除, 1 表示刪除',
   disabled_flag tinyint DEFAULT NULL COMMENT '禁用標誌, 0 表示未禁用, 1 表示禁用',
   wx_id varchar(128) DEFAULT NULL COMMENT '微信 openid(拓展欄位、用於第三方微信登錄)',
   qq_id varchar(128) DEFAULT NULL COMMENT 'QQ openid(拓展欄位、用於第三方 QQ 登錄)',
    PRIMARY KEY(id),
    UNIQUE INDEX(name),
    UNIQUE INDEX(mobile)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='系統用戶表';


-- 插入數據
INSERT INTO `sys_user`(`id`, `name`, `mobile`, `password`, `sex`, `age`, `avatar`, `email`, `create_time`, `update_time`, `delete_flag`, `disabled_flag`, `wx_id`, `qq_id`)
VALUES (1278601251755454466, 'superAdmin', '17730125031', 'e10adc3949ba59abbe56e057f20f883e', 1, 23, NULL, "m_17730125031@163.com", '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0, 0, NULL, NULL),
    (1278601251755451232, 'admin', '17730125032', 'e10adc3949ba59abbe56e057f20f883e', 1, 23, NULL, "m_17730125031@163.com", '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0, 0, NULL, NULL),
    (1278601251755456778, 'jack', '17730125033', 'e10adc3949ba59abbe56e057f20f883e', 1, 23, NULL, "m_17730125031@163.com", '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0, 0, NULL, NULL);

-- --------------------------sys_user 用戶表---------------------------------------

 

 

3、角色表(sys_role)設計

(1)必須欄位:
  角色 ID,角色名稱。
其中:
  角色名稱用於定位用戶角色。

(2)數據表結構如下:

-- DROP DATABASE IF EXISTS admin_template;
--
-- CREATE DATABASE admin_template;

-- --------------------------sys_role 角色表---------------------------------------
USE admin_template;
DROP TABLE IF EXISTS sys_role;
-- 系統用戶角色表
CREATE TABLE sys_role (
    id bigint NOT NULL COMMENT '角色 ID',
    role_name varchar(20) NOT NULL COMMENT '角色名稱',
   role_code varchar(20) DEFAULT NULL COMMENT '角色碼',
   remark varchar(255) DEFAULT NULL COMMENT '角色備註',
    create_time datetime DEFAULT NULL COMMENT '創建時間',
    update_time datetime DEFAULT NULL COMMENT '修改時間',
    delete_flag tinyint DEFAULT NULL COMMENT '邏輯刪除標誌,0 表示未刪除, 1 表示刪除',
    PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='系統用戶角色表';


-- 插入數據
INSERT INTO `sys_role`(`id`, `role_name`, `role_code`, `remark`, `create_time`, `update_time`, `delete_flag`)
VALUES (1278601251755451245, 'superAdmin', '1001', '超級管理員','2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755452551, 'admin', '2001', '普通管理員','2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755458779, 'user', '3001', '普通用戶','2020-07-02 16:07:48', '2020-07-02 16:07:48', 0);

-- --------------------------sys_role 角色表---------------------------------------

 

 

4、菜單許可權表(sys_menu)設計

(1)必須欄位:
  當前菜單 ID,父菜單 ID,菜單名,菜單類型,菜單路徑
其中:
  當前菜單 ID 與 父菜單 ID 用於確定菜單的層級順序。
  菜單類型 用於確定是否顯示在菜單目錄中(按鈕不顯示在菜單目錄中)。
  菜單路徑 用於確定最終指向的 組件路徑(使用 vue-route 進行路由跳轉)。
註:
  最外層 父菜單 ID 此處設置為 0,但不創建 ID 為 0 的數據。

(2)數據表結構如下:

-- DROP DATABASE IF EXISTS admin_template;
--
-- CREATE DATABASE admin_template;

-- --------------------------sys_menu 菜單許可權表---------------------------------------
USE admin_template;
DROP TABLE IF EXISTS sys_menu;
-- 系統菜單許可權表
CREATE TABLE sys_menu (
    menu_id bigint NOT NULL COMMENT '當前菜單 ID',
    parent_id bigint NOT NULL COMMENT '當前菜單父菜單 ID',
   name_zh varchar(20) NOT NULL COMMENT '中文菜單名稱',
   name_en varchar(40) NOT NULL COMMENT '英文菜單名稱',
   type tinyint NOT NULL COMMENT '菜單類型,0 表示目錄,1 表示菜單項,2 表示按鈕',
   url varchar(100) NOT NULL COMMENT '訪問路徑',
   icon varchar(100) DEFAULT NULL COMMENT '菜單圖標',
   order_num int DEFAULT NULL COMMENT '菜單項順序',
    create_time datetime DEFAULT NULL COMMENT '創建時間',
    update_time datetime DEFAULT NULL COMMENT '修改時間',
    delete_flag tinyint DEFAULT NULL COMMENT '邏輯刪除標誌,0 表示未刪除, 1 表示刪除',
    PRIMARY KEY(menu_id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='系統菜單許可權表';

-- 插入數據
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name_zh`, `name_en`, `type`, `url`, `icon`, `order_num`, `create_time`, `update_time`, `delete_flag`)
VALUES (127860125171111, 0, '系統管理', 'System Control', 0, '', 'el-icon-setting', 0,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125172211, 127860125171111, '用戶管理', 'User Control', 1, 'sys/UserList', 'el-icon-user', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125173311, 127860125171111, '角色管理', 'Role Control', 1, 'sys/RoleControl', 'el-icon-price-tag', 2,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125174411, 127860125171111, '菜單管理', 'Menu Control', 1, 'sys/MenuControl', 'el-icon-menu', 3,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),

    (127860125172221, 127860125172211, '添加', 'Add', 2, '', '', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125172231, 127860125172211, '刪除', 'Delete', 2, '', '', 2,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125172241, 127860125172211, '修改', 'Update', 2, '', '', 3,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125172251, 127860125172211, '查看', 'List', 2, '', '', 4,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),

    (127860125173321, 127860125173311, '添加', 'Add', 2, '', '', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125173331, 127860125173311, '刪除', 'Delete', 2, '', '', 2,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125173341, 127860125173311, '修改', 'Update', 2, '', '', 3,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125173351, 127860125173311, '查看', 'List', 2, '', '', 4,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),

    (127860125174421, 127860125174411, '添加', 'Add', 2, '', '', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125174431, 127860125174411, '刪除', 'Delete', 2, '', '', 2,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125174441, 127860125174411, '修改', 'Update', 2, '', '', 3,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125174451, 127860125174411, '查看', 'List', 2, '', '', 4,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),

    (127860125175511, 0, '幫助', 'help', 0, '', 'el-icon-info', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125175521, 127860125175511, '百度', 'Baidu', 1, 'https://www.baidu.com/', 'el-icon-menu', 1,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (127860125175531, 127860125175511, '博客', 'Blog', 1, 'https://www.cnblogs.com/l-y-h/', 'el-icon-menu', 2,'2020-07-02 16:07:48', '2020-07-02 16:07:48', 0);

-- --------------------------sys_menu 菜單許可權表---------------------------------------

 

 

5、中間表設計(sys_user_role、sys_role_menu)

(1)設計原則:
  中間表存儲的是相關聯兩表的主鍵。

(2)用戶角色表如下:

-- DROP DATABASE IF EXISTS admin_template;
--
-- CREATE DATABASE admin_template;

-- --------------------------sys_user_role 用戶角色表---------------------------------------
USE admin_template;
DROP TABLE IF EXISTS sys_user_role;
-- 系統用戶角色表
CREATE TABLE sys_user_role (
    id bigint NOT NULL COMMENT '用戶角色表 ID',
    role_id bigint NOT NULL COMMENT '角色 ID',
   user_id bigint NOT NULL COMMENT '用戶 ID',
    create_time datetime DEFAULT NULL COMMENT '創建時間',
    update_time datetime DEFAULT NULL COMMENT '修改時間',
    delete_flag tinyint DEFAULT NULL COMMENT '邏輯刪除標誌,0 表示未刪除, 1 表示刪除',
    PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='系統用戶角色表';


-- 插入數據
INSERT INTO `sys_user_role`(`id`, `role_id`, `user_id`, `create_time`, `update_time`, `delete_flag`)
VALUES (1278601251755452234, '1278601251755451245', '1278601251755454466', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755453544, '1278601251755452551', '1278601251755451232', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755454664, '1278601251755458779', '1278601251755456778', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0);

-- --------------------------sys_user_role 用戶角色表---------------------------------------

 

 

(3)角色菜單表如下:

-- DROP DATABASE IF EXISTS admin_template;
--
-- CREATE DATABASE admin_template;

-- --------------------------sys_role_menu 系統角色菜單表---------------------------------------
USE admin_template;
DROP TABLE IF EXISTS sys_role_menu;
-- 系統角色菜單表
CREATE TABLE sys_role_menu (
    id bigint NOT NULL COMMENT '角色菜單表 ID',
    role_id bigint NOT NULL COMMENT '角色 ID',
   menu_id varchar(20) NOT NULL COMMENT '菜單 ID',
    create_time datetime DEFAULT NULL COMMENT '創建時間',
    update_time datetime DEFAULT NULL COMMENT '修改時間',
    delete_flag tinyint DEFAULT NULL COMMENT '邏輯刪除標誌,0 表示未刪除, 1 表示刪除',
    PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='系統角色菜單表';


-- 插入數據
INSERT INTO `sys_role_menu`(`id`, `role_id`, `menu_id`, `create_time`, `update_time`, `delete_flag`)
VALUES (1278601251755461111, '1278601251755451245', '1278601251755451111', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461112, '1278601251755451245', '1278601251755452211', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461113, '1278601251755451245', '1278601251755453311', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461114, '1278601251755451245', '1278601251755454411', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461115, '1278601251755451245', '1278601251755452221', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461116, '1278601251755451245', '1278601251755452231', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461117, '1278601251755451245', '1278601251755452241', '2020-07-02 16:07:48', '2020-07-02 16:07:48', 0),
    (1278601251755461118, '1278601251755451245	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇 前端 瀏覽器所在客戶端信息,有瀏覽器信息後,以下是區分手機的詳細類型 雖然沒難度,但是記錄下來,方便後續無腦複製: 蘋果APP類型 1 // iOS 2 isIPhone = (userAgent: string) => /iphone/i.test(userAgent); 3 isIPod ...
  • 什麼是建造者模式 經典建造者模式的優缺點 對建造者模式的擴展 什麼是建造者模式 建造者模式將一個複雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。創建者模式隱藏了複雜對象的創建過程,它把複雜對象的創建過程加以抽象,通過子類繼承或者重載的方式,動態的創建具有複合屬性的對象。 雖然與 ...
  • Java容器 集合是一種存儲數據的容器,是Java開發中使用最頻繁的對象類型之一. 或許提起Collection,都會第一時間意識到List和Set以及Map等相關關鍵詞。因為這幾乎是我們日常開發里接觸最多和遇見最頻繁的,以及與數據處理交互最多的Java對象類型。換句話說,就是我們與數據進行處理的數 ...
  • 負載均衡: 一聽這詞很多小伙伴嚇壞了,前人就喜歡搞一些看起來很高大上的詞,好讓後生望而敬畏.那我們一起來捋一捋. 負載就是負擔. 均衡就是平均分.這樣 一說就是負擔平均分. 伺服器也要減減壓 我們都知道伺服器是第三產業,服務行業,客戶來了,你不能不服務.客戶少還行,客戶多了一臺伺服器就頂不住了,怎麼 ...
  • 1 前言 經過《Maven一鍵部署Springboot到Docker倉庫,為自動化做準備》,Springboot的Docker鏡像已經準備好,也能在Docker上成功運行了,是時候放上Kubernetes跑一跑了。這非常簡單,一個yaml文件即可。 2 一鍵部署Springboot 2.1 準備ya ...
  • 一、複數和虛數類型 1.C語言有三種複數類型:float _Comples,double _Complex,long double _Complex float_complex類型的應包含兩個float類型的值,分別表示實部和虛部。 類似的C語言的三種虛數類型為1float _Imaginary,d ...
  • 1:IDEA安裝教程 開始安裝Idea,點擊next 點擊Browse選擇好安裝文件夾,點擊next 根據電腦選擇幾位,我的電腦是64位選擇64bit,Update PATH variable:是否將IDEA啟動目錄添加到環境變數中,即可以從cmd命令行中啟動IDEA,根據需要勾選 點擊Instal ...
  • shell之ping減少時間間隔&ping的次數 作為一位新手,檢測IP地址是否正常使用,ping是一個很不錯的選擇,可以更快的探測到當前網路的可用IP,併進行到文檔。 步驟如下: 首先:創建一個腳本文件併進行編輯: 1 # vim ping.sh 然後:寫入腳本,內容如下: #!/bin/bash ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...