JAVA查漏補缺(2)

?AJAX

什么是Ajax

Ajax(Asynchronous?Javascript?And XML),即是異步的JavaScript和XML,Ajax其實就是瀏覽器與服務器之間的一種異步通信方式?

異步的JavaScript

它可以異步地向服務器發送請求,在等待響應的過程中,不會阻塞當前頁面,在這種情況下,瀏覽器可以做自己的事情。直到成功獲取響應后,瀏覽器才開始處理響應數據。

XML

是前后端數據通信時傳輸數據的一種格式,現在已經不怎么用了,現在比較常用的是 JSON

所以Ajax就是在瀏覽器不重新加載網頁的情況下對頁面的某部分進行更新

工作原理:

  1. Ajax提供與服務器異步通信的能力,可在web頁面觸發js事件中中服務器發出異步請求,如執行更新或查詢數據庫
  2. Ajax的核心是js對象XMLHttpRequest,使用戶通過js向服務器提出請求并處理相應,不阻塞用戶
  3. 當web服務器的相應返回時,使用js回調函數和CSS相應的更新頁面的局部頁面,而不是刷新整個頁面
  4. 在頁面與服務器交互的過程中不中斷用戶操作,用戶甚至察覺不到瀏覽器正在與服務器進行通信

jQuery對Ajax的封裝?

1.  向遠程服務器發送get請求
$.get(url,[data]m[callback],[type])  
2.  向遠程服務器發送post請求
$.post(url,[data]m[callback],[type])  
3. 
$.ajax({url:'遠程服務器地址',type:'請求方式',data:{參數名1:參數值1,參數名2:參數值2,...}dataType:'服務器響應的數據類型',success:function(result){//請求成功后的回調函數}error:function(result){//請求失敗后的回調函數}
})

JSON

?JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation),使用 JavaScript 語法來描述數據對象,但是 JSON 仍然獨立于語言和平臺。通過在后臺與服務器進行少量數據交換,實現網頁的部分更新,無需重新加載整個頁面,提升用戶體驗。

JSON 基本語法規則

數據類型與格式

  • 對象(Object):由?{ }?包裹,包含鍵值對(key-value),鍵必須用雙引號?" "?括起,值可以是任意合法類型。
{"name": "Alice","age": 30,"isStudent": false
}

數組(Array):由?[ ]?包裹,元素可以是任意類型(包括對象、數組)。

["apple", "banana", "cherry"]

value值可以是

  • 字符串(必須用雙引號):"hello"
  • 數值(整數 / 浮點數):423.14
  • 布爾值:truefalse
  • null
  • 對象或數組(可嵌套)。

FastJSON 簡介

FastJSON?是阿里巴巴開源的高性能 JSON 處理庫,用于在 Java 對象和 JSON 格式之間進行快速轉換。它具有以下特點:

  • 速度快:解析和序列化性能優于其他同類庫。
  • 使用簡單:提供簡潔的 API(如?JSON.toJSONString()JSON.parseObject())。
  • 功能豐富:支持復雜對象、泛型、循環引用處理等。

添加依賴

在 Maven 項目中,需在?pom.xml?中添加依賴:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.30</version> <!-- 使用最新穩定版本 -->
</dependency>

Java 對象轉 JSON 字符串 / JSON 對象

1. 簡單 Java 對象轉 JSON 字符串

import com.alibaba.fastjson.JSON;public class User {private String name;private int age;private boolean isStudent;// 構造方法、Getter/Setter 略
}// 使用示例
User user = new User("Alice", 25, true);
String jsonString = JSON.toJSONString(user);
// 輸出: {"age":25,"isStudent":true,"name":"Alice"}

2. 包含嵌套對象的 Java 對象轉 JSON

public class Address {private String city;private String street;// 構造方法、Getter/Setter 略
}public class Employee {private String name;private Address address; // 嵌套對象// 構造方法、Getter/Setter 略
}// 使用示例
Address addr = new Address("Beijing", "Wangfujing");
Employee emp = new Employee("Bob", addr);
String jsonString = JSON.toJSONString(emp);
// 輸出: {"address":{"city":"Beijing","street":"Wangfujing"},"name":"Bob"}

3. Java 對象轉 JSONObject

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;User user = new User("Charlie", 30, false);
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
// 獲取屬性
String name = jsonObject.getString("name"); // "Charlie"
int age = jsonObject.getIntValue("age");    // 30

JSON 字符串 / JSON 對象轉 Java 對象

1. JSON 字符串轉簡單 Java 對象

String jsonStr = "{\"name\":\"David\",\"age\":28,\"isStudent\":false}";
User user = JSON.parseObject(jsonStr, User.class);
// user.getName() → "David"
// user.getAge() → 28

2. JSON 字符串轉包含嵌套對象的 Java 對象

String jsonStr = "{\"name\":\"Eve\",\"address\":{\"city\":\"Shanghai\",\"street\":\"Nanjing Road\"}}";
Employee emp = JSON.parseObject(jsonStr, Employee.class);
// emp.getAddress().getCity() → "Shanghai"

3. JSON 字符串轉泛型對象(如 List)

String jsonArrayStr = "[{\"name\":\"Frank\"},{\"name\":\"Grace\"}]";
List<User> userList = JSON.parseArray(jsonArrayStr, User.class);
// userList.get(0).getName() → "Frank"

4. JSONObject 轉 Java 對象

JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "Henry");
jsonObj.put("age", 35);
User user = jsonObj.toJavaObject(User.class);
// user.getName() → "Henry"

?

?靜態網頁,動態網頁

靜態網頁

定義:靜態網頁是指內容固定的網頁,每個訪問者看到的內容都是相同的。頁面內容在開發時就已經確定,直接發送給客戶端瀏覽器。缺乏交互性,無法根據用戶行為動態更新內容,內容更新需要手動修改 HTML 文件,不適合需要實時數據的應用。

示例場景

  • 個人博客
  • 產品介紹頁面
  • 靜態文檔
  • 單頁應用 (SPA) 的靜態版本

動態網頁

定義:動態網頁是指內容根據用戶請求或其他條件動態生成的網頁。頁面內容在訪問時由服務器實時生成。開發復雜度高,需要前后端技術配合,對服務器資源要求高,性能可能受影響,安全風險較高,需要防范 SQL 注入、XSS 等攻擊。

示例場景

  • 電子商務網站
  • 社交媒體平臺
  • 內容管理系統 (CMS)
  • 在線論壇
  • 企業應用系統

數據庫的數據類型

?

?

一、數值類型

用于存儲數字,可分為整數和浮點數:

1. 整數類型

類型范圍(示例)存儲空間用途
TINYINT-128 到 127(無符號 0-255)1 字節小范圍整數(如性別)
SMALLINT-32,768 到 32,7672 字節較小整數(如年齡)
INT-21 億到 21 億4 字節常規整數(如 ID)
BIGINT極大范圍(±9×101?)8 字節超大整數(如流水號)

2. 浮點類型

類型精度存儲空間用途
FLOAT單精度(約 7 位小數)4 字節精度要求不高的小數
DOUBLE雙精度(約 15 位小數)8 字節較高精度的小數
DECIMAL任意精度(如?DECIMAL(10,2)可變財務計算(避免精度丟失)

二、字符串類型

用于存儲文本數據,不同類型有不同的長度限制和存儲方式:

1. 固定長度字符串

  • CHAR(n):定長字符串,不足?n?位時用空格填充,效率高
    • 示例:CHAR(10),存儲 "abc" 時實際占 10 字節(補 7 個空格)。

2. 可變長度字符串

  • VARCHAR(n):變長字符串,僅存儲實際內容 + 1-2 字節長度信息。
    • 示例:VARCHAR(10),存儲 "abc" 時占 4 字節(3 字符 + 1 字節長度)。

三、日期和時間類型

用于存儲時間信息,不同數據庫可能略有差異:

常見類型

類型格式范圍用途
DATEYYYY-MM-DD1000-01-01 到 9999-12-31僅日期(如生日)
TIMEHH:MM:SS-838:59:59 到 838:59:59僅時間(如營業時間)
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 到 9999-12-31 23:59:59日期 + 時間
TIMESTAMP時間戳(UTC)1970-01-01 到 2038-01-19自動記錄更新時間
YEARYYYY?或?YY1901-2155 或 00-99年份(如產品年份)

四、布爾類型

用于存儲真 / 假值,不同數據庫實現方式不同:

數據庫布爾類型說明
MySQLBOOLEAN?或?TINYINT(1)用 0 表示?FALSE,1 表示?TRUE
PostgreSQLBOOLEAN直接存儲?TRUE/FALSE
SQL ServerBIT0 或 1

五、大數據類型

1. BLOB 類型

  • 基礎概念:BLOB(Binary Large Object)是一類用于存儲大量二進制數據的字段類型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。
  • 優勢:適合存儲圖像、音頻、視頻等非文本數據。
  • 應用場景:當需要在數據庫中存儲文件內容時。
  • 問題與解決:如果遇到存儲空間不足的問題,可以考慮升級數據庫實例的存儲容量或優化數據存儲策略。

2. TEXT 類型

  • 基礎概念:TEXT類型用于存儲大量文本數據,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。
  • 優勢:適合存儲長文本數據,如文章、評論等。
  • 應用場景:當需要存儲超過VARCHAR類型限制的文本數據時。
  • 問題與解決:如果遇到性能問題,可以考慮對文本數據進行分表存儲或使用全文索引優化查詢。

RBAC原理

?RBAC(Role-Based Access Control)是一種廣泛應用于信息系統的訪問控制模型,它通過角色作為中間層,將用戶與權限分離,簡化了權限管理。

RBAC 基本概念

1. 三大核心組件

  • 用戶(User):系統的使用者,可以是個人或程序。
  • 角色(Role):一組權限的集合(如 "管理員"、"財務"、"普通用戶")。
  • 權限(Permission):對系統資源的操作許可(如 "查看訂單"、"刪除用戶")。

2. 核心關系

  • 用戶 - 角色映射:一個用戶可以擁有多個角色(如用戶 A 既是 "管理員" 又是 "財務")。
  • 角色 - 權限映射:一個角色可以包含多個權限(如 "管理員" 角色擁有所有權限)。

RBAC 的優勢

  1. 簡化權限管理

    • 只需管理角色和權限,無需為每個用戶單獨配置。
    • 新增用戶時,只需分配角色,無需逐個分配權限。
  2. 易于擴展

    • 新增角色或權限時,只需修改角色 - 權限映射,不影響用戶。
    • 支持組織架構變化(如部門調整)。
  3. 符合組織架構

    • 與現實中的職位和職責對應(如 "財務" 角色對應財務部門)。
  4. 增強安全性

    • 通過約束條件(如互斥角色)避免權限濫用。
    • 權限審計更方便(只需檢查角色權限)。

Cookie 和 Session會話

  • 當從瀏覽器發送請求到服務器后,servlet創建cookie,保存少量數據,發送瀏覽器。

  • 瀏覽器獲得服務器發送的cookie數據,將?動的保存到瀏覽器端。

  • 下次訪問時,瀏覽器將?動攜帶cookie數據發送給服務器。

Cookie創建

Cookie cookie = new Cookie(String key,String value);

    key:表示cookie的名字

    value:表示cookie中保存的數據

    發送給瀏覽器

    response.addCookie(cookie);
    

    獲取Cookie

    Cookie[] cookies = request.getCookies();if(cookies!=null) {for (Cookie cookie : cookies) {// 獲取cookie的名稱String name = cookie.getName();// 獲取cookie的值String value = cookie.getValue();System.out.println(name+":::"+value);}?
    }

    當用戶訪問網站時,服務器會為其創建一個唯一的 Session ID,并將其存儲在服務器端。同時,服務器會通過 Cookie 將這個 Session ID 發送給客戶端瀏覽器。瀏覽器在后續的請求中會攜帶這個 Session ID

    Cookie是運?在客戶端,Session是運?在服務器端。

    1、獲取session對象

    HttpSession session = request.getSession();

    2、保存數據到session中

    session.setAttribute(String 綁定名, Object 綁定值);
    

    3、獲取session數據

    Object session.getAttribute("綁定名");

    4、有效時間 單位秒 默認30分鐘,可以去tomcat中conf下web.xml?件查看

    session.setMaxInactiveInterval(int expiry);

    5、銷毀session對象

    session.invalidate();

    會話和 Cookie 的關系

    會話和 Cookie 通常一起工作,就像超市的會員卡和便簽一樣。服務器創建會話后,會將會話 ID 通過 Cookie 發送給瀏覽器。瀏覽器將這個 Cookie 保存下來,并在每次請求時將其發送回服務器。服務器通過會話 ID 就能識別出是哪個用戶在訪問,從而保持會話狀態。

    其他知識點

    ?MySQL三部分——從增刪改查到集群搭建

    1.mysql基礎:增刪改查,一對多。。。 2.mysql架構3.mysql集群搭建,集群搭建

    ?《阿里巴巴Java編碼規范》

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

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

    相關文章

    客服中心大模型應用演進路線:從傳統服務到超級智能助手的轉型

    客服中心作為企業與客戶溝通的重要橋梁&#xff0c;近年來經歷了從人工服務到人工智能驅動的深刻變革。本文基于"客服中心大模型應用演進路線圖"&#xff0c;詳細解析客服中心從傳統模式向AI驅動智能服務的轉型歷程&#xff0c;剖析每個發展階段的特點、應用場景及關…

    使用 OpenCV 實現“隨機鏡面墻”——多鏡片密鋪的哈哈鏡效果

    1. 引言 “哈哈鏡”是一種典型的圖像變形效果&#xff0c;通過局部鏡面反射產生扭曲的視覺趣味。在計算機視覺和圖像處理領域&#xff0c;這類效果不僅有趣&#xff0c;還能用于藝術創作、交互裝置、視覺特效等場景。 傳統的“哈哈鏡”往往是針對整張圖像做某種鏡像或扭曲變換…

    Python訓練營打卡——DAY33(2025.5.22)

    目錄 簡單的神經網絡 一、PyTorch的安裝 二、準備工作 三、數據的準備 四、模型架構定義 五、模型訓練&#xff08;CPU版本&#xff09; 1. 定義損失函數和優化器 2. 開始循環訓練 3. 可視化結果 六、通俗解釋 1. 環境安裝&#xff08;相當于買鍋碗瓢盆&#xff09;…

    目標檢測 Lite-DETR(2023)詳細解讀

    文章目錄 迭代高級特征跨尺度融合高效的低層次特征跨尺度融合KDA&#xff1a;Key-aware Deformable Attention 論文翻譯&#xff1a; CVPR 2023 | Lite DETR&#xff1a;計算量減少60%&#xff01;高效交錯多尺度編碼器-CSDN博客 DINO團隊的 &#xff08;Lightweight Transfo…

    ES(Elasticsearch) 基本概念(一)

    Elasticsearch作為當前最流行的開源搜索和分析引擎&#xff0c;廣泛應用于日志分析、全文搜索、業務智能等領域。Elasticsearch是一個基于 Apache Lucene 構建的分布式搜索和分析引擎、可擴展數據存儲和矢量數據庫。它針對生產級工作負載的速度和相關性進行了優化。使用 Elasti…

    當物聯網“芯”闖入納米世界:ESP32-S3驅動的原子力顯微鏡能走多遠?

    上次咱們把OV2640攝像頭“盤”得明明白白&#xff0c;是不是感覺ESP32-S3這小東西潛力無限&#xff1f;今天&#xff0c;咱們玩個更刺激的&#xff0c;一個聽起來就讓人腎上腺素飆升的挑戰——嘗試用ESP32-S3這顆“智慧芯”&#xff0c;去捅一捅科學界的“馬蜂窩”&#xff0c;…

    Excel合并單元格后,如何自動批量生成序號列

    1.選擇整列 2.組合鍵&#xff1a;CtrlG 3.定位條件&#xff0c;選擇“空值” 4.在第一個框中輸入“MAX(”&#xff0c;鼠標選中A1框&#xff0c;后加“&#xff1a;”&#xff0c;鼠標選中前方“A1”&#xff0c;按“F4”絕對引用&#xff0c;補全右括號&#xff0c;后輸入“1…

    TDengine 運維—容量規劃

    概述 若計劃使用 TDengine 搭建一個時序數據平臺&#xff0c;須提前對計算資源、存儲資源和網絡資源進行詳細規劃&#xff0c;以確保滿足業務場景的需求。通常 TDengine 會運行多個進程&#xff0c;包括 taosd、taosadapter、taoskeeper、taos-explorer 和 taosx。 在這些進程…

    Axure設計數字鄉村可視化大屏:從布局到交互的實戰經驗分享

    鄉村治理正從傳統模式向“數據驅動”轉型。數字鄉村可視化大屏作為數據展示的核心載體&#xff0c;不僅能直觀呈現鄉村發展全貌&#xff0c;還能為決策提供科學依據。本文以Axure為工具&#xff0c;結合實際案例&#xff0c;分享如何從零設計一個功能完備、交互流暢的數字鄉村大…

    從零基礎到最佳實踐:Vue.js 系列(1/10):《環境搭建與基礎概念》

    Vue.js 環境搭建與基礎概念 關鍵點 Vue.js 是一個簡單易用的前端框架&#xff0c;適合初學者快速上手。搭建開發環境需要安裝 Node.js 和 npm/Yarn&#xff0c;推薦使用最新 LTS 版本。Vue CLI 是官方工具&#xff0c;可快速創建項目并提供開發服務器。Vue.js 基于 MVVM 模式&…

    使用docker compose部署dify(大模型開發使用平臺)

    Dify是一款生成式 AI 應用中間件&#xff0c;面向有私有部署與數據合規需求的企業用戶&#xff0c;推動企業向 AI 時代轉型。平臺支持無代碼構建&#xff0c;業務人員即可快速搭建與調試 AI 應用&#xff0c;顯著降低開發門檻。 參考 https://docs.dify.ai/zh-hans/getting-s…

    npm 安裝時 SSL 證書過期問題筆記

    問題描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 這表明當前配置的 npm 鏡像源&#xff08;淘寶鏡像 https://registry.npm.taobao.org&…

    力扣HOT100之二叉樹: 236. 二叉樹的最近公共祖先

    果然&#xff0c;這道題二刷還是不會做&#xff0c;回去看卡爾視頻了。結合靈神的題解&#xff0c;我對這道題有了一些新的理解。 首先這道題還是用遞歸來做&#xff0c;由于我們需要計算兩個節點的最近公共祖先&#xff0c;一定是從下往上來遍歷&#xff0c;只有先判斷左右子樹…

    Word 轉 HTML API 接口

    Word 轉 HTML API 接口 圖像/轉換 Word 文檔轉換為 HTML 文件轉換 / 超高精度與還原度 文件轉換 / Word。 1. 產品功能 超高精度與還原度的 HTML 文件轉換&#xff1b;支持將 Word 文檔轉換為 HTML 格式&#xff1b;支持 .doc 和 .docx 格式&#xff1b;保持原始 Word 文檔的…

    idea 安裝飛算-javaAI 插件使用

    文章目錄 前言idea 安裝飛算-javaAI 插件使用1. 介紹一下飛算-AI2. 安裝使用 前言 如果您覺得有用的話&#xff0c;記得給博主點個贊&#xff0c;評論&#xff0c;收藏一鍵三連啊&#xff0c;寫作不易啊^ _ ^。 ??而且聽說點贊的人每天的運氣都不會太差&#xff0c;實在白嫖的…

    Bert預訓練任務-MLM/NSP

    MLM MLM:Masked Language Mode:在每一個訓練序列中以15%的概率隨機地選中某個token進行MASK,當一個token被選中后&#xff0c;有以下三種處理方式&#xff1a; 80%的概率被[MASK]&#xff0c;如my dog is hairy->my dog is [MASK]10%的概率修改為隨機的其他token,如my dog …

    瀏覽器原生 Web Crypto API 實現 SHA256 Hash 加密

    寫在前面 在我上一篇文章 《node 后端和瀏覽器前端&#xff0c;有關 RSA 非對稱加密的完整實踐&#xff0c; 前后端匹配的代碼演示》 中&#xff0c;我們使用 瀏覽器原生 Web Crypto API 實現了 RSA 的加密算法。 但是&#xff0c;在我之前的 《我設計的一個安全的 web 系統用…

    5G 網絡尋呼的信令及 IE 信息分析

    一、尋呼信令的觸發背景 在 5G 網絡中,當網絡側有下行數據要發送給處于空閑態(RRC_IDLE)或非激活態(RRC_INACTIVE)的用戶設備(UE)時,就會觸發尋呼流程。這是因為在這些狀態下,UE 與網絡之間沒有建立持續的無線資源控制(RRC)連接,網絡需要通過尋呼機制來通知 UE 有…

    印度語言指令驅動的無人機導航!UAV-VLN:端到端視覺語言導航助力無人機自主飛行

    作者&#xff1a;Pranav Saxena, Nishant Raghuvanshi and Neena Goveas單位&#xff1a;比爾拉理工學院&#xff08;戈瓦校區&#xff09;論文標題&#xff1a;UAV-VLN: End-to-End Vision Language guided Navigation for UAVs論文鏈接&#xff1a;https://arxiv.org/pdf/250…

    基于Zynq SDK的LWIP UDP組播開發實戰指南

    一、為什么選擇LWIP組播? 在工業控制、智能安防、物聯網等領域,一對多的高效數據傳輸需求日益增長。Zynq-7000系列SoC憑借其ARM+FPGA的獨特架構,結合LWIP輕量級網絡協議棧,成為嵌入式網絡開發的理想選擇。本文將帶您實現: LWIP組播配置全流程動態組播組切換技術零拷貝數據…