JAVA查漏补缺(2)
AJAX
什么是Ajax
Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式
异步的JavaScript
它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,在这种情况下,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据。
XML
是前后端数据通信时传输数据的一种格式,现在已经不怎么用了,现在比较常用的是 JSON
所以Ajax就是在浏览器不重新加载网页的情况下,对页面的某部分进行更新。
工作原理:
- Ajax提供与服务器异步通信的能力,可在web页面触发js事件中中服务器发出异步请求,如执行更新或查询数据库
- Ajax的核心是js对象XMLHttpRequest,使用户通过js向服务器提出请求并处理相应,不阻塞用户
- 当web服务器的相应返回时,使用js回调函数和CSS相应的更新页面的局部页面,而不是刷新整个页面
- 在页面与服务器交互的过程中不中断用户操作,用户甚至察觉不到浏览器正在与服务器进行通信
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"
- 数值(整数 / 浮点数):
42
、3.14
- 布尔值:
true
、false
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,767 | 2 字节 | 较小整数(如年龄) |
INT | -21 亿到 21 亿 | 4 字节 | 常规整数(如 ID) |
BIGINT | 极大范围(±9×10¹⁸) | 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 字节长度)。
- 示例:
三、日期和时间类型
用于存储时间信息,不同数据库可能略有差异:
常见类型
类型 | 格式 | 范围 | 用途 |
---|---|---|---|
DATE | YYYY-MM-DD | 1000-01-01 到 9999-12-31 | 仅日期(如生日) |
TIME | HH:MM:SS | -838:59:59 到 838:59:59 | 仅时间(如营业时间) |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 | 日期 + 时间 |
TIMESTAMP | 时间戳(UTC) | 1970-01-01 到 2038-01-19 | 自动记录更新时间 |
YEAR | YYYY 或 YY | 1901-2155 或 00-99 | 年份(如产品年份) |
四、布尔类型
用于存储真 / 假值,不同数据库实现方式不同:
数据库 | 布尔类型 | 说明 |
---|---|---|
MySQL | BOOLEAN 或 TINYINT(1) | 用 0 表示 FALSE ,1 表示 TRUE |
PostgreSQL | BOOLEAN | 直接存储 TRUE /FALSE |
SQL Server | BIT | 0 或 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 的优势
-
简化权限管理:
- 只需管理角色和权限,无需为每个用户单独配置。
- 新增用户时,只需分配角色,无需逐个分配权限。
-
易于扩展:
- 新增角色或权限时,只需修改角色 - 权限映射,不影响用户。
- 支持组织架构变化(如部门调整)。
-
符合组织架构:
- 与现实中的职位和职责对应(如 "财务" 角色对应财务部门)。
-
增强安全性:
- 通过约束条件(如互斥角色)避免权限滥用。
- 权限审计更方便(只需检查角色权限)。
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编码规范》
相关文章:

JAVA查漏补缺(2)
AJAX 什么是Ajax Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式 异步的JavaScript 它可以异步地向服务器发送请求,在等待响应的过程中&…...

【Web前端】JavaScript入门与基础(二)
Javascript对象 什么是对象?对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。 var…...
取消 Conda 默认进入 Base 环境
在安装 Conda 后,每次打开终端时默认会进入 base 环境。可以通过以下方法取消这一默认设置。 方法一:使用命令行修改配置 在终端中输入以下命令,将 auto_activate_base 参数设置为 false: conda config --set auto_activate_ba…...

Electron+vite+vue3 从0到1搭建项目,开发Win、Mac客户端
随着前端技术的发展,出现了所谓的大前端。 大前端则是指基于前端技术延伸出来的各种终端平台及应用场景,包括APP、桌面端、手表终端、服务端等。 本篇文章主要是和大家一起学习一下使用Electron 如何打包出 Windows 和 Mac 所使用的客户端APPÿ…...
《深度揭秘:解锁智能体大模型自我知识盲区探测》
当面对超出其训练数据边界和固有知识范畴的问题时,智能体大模型往往会陷入困境,却浑然不知,这便是知识盲区带来的隐患。如何构建能够自动发现自身知识盲区的智能体大模型,成为当下人工智能领域亟待攻克的前沿难题,它关…...
打卡Day33
简单的神经网络 数据的准备 # 仍然用4特征,3分类的鸢尾花数据集作为我们今天的数据集 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np# 加载鸢尾花数据集 iris load_iris() X iris.data # …...
计算机组成原理-基本运算部件定点数的运算
2.2基本运算部件 整理自up主beokayy_ 1.加法器 一位全加器 全加器是最基本的加法单元: 三个输入端:加数Ai,加数Bi,低位传进来的进位C1-1两个输出端:本位和S,向高位的进位C 全加器的逻辑表达式: SiAi⊕Bi⊕Ci-1CiAiBi(Ai⊕Bi)C…...

python打卡day34@浙大疏锦行
知识点回归: CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作self.fc1(x) ①CPU性能查…...

SOC-ESP32S3部分:8-GPIO输出LED控制
飞书文档https://x509p6c8to.feishu.cn/wiki/OSQWwh95niobqUkKyDQcVgsbnFg 这节课,我们将会以ESP32S3外设GPIO的使用为例,带大家学习如何从零开始学会ESP32外设的使用。 例如,这节课我们的需求是,需要通过GPIO控制指示灯的亮灭&…...

05算法学习_59. 螺旋矩阵 II
05算法学习_59. 螺旋矩阵 II 05算法学习_59. 螺旋矩阵 II题目描述:个人代码:学习思路:第一种写法:题解关键点: 个人学习时疑惑点解答: 05算法学习_59. 螺旋矩阵 II 力扣题目链接: 59. 螺旋矩阵 II 题目描…...
绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图librosa.display.specshow
librosa.display.specshow 是一个非常方便的函数,用于绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图,还能自动设置轴标签和刻度,使得生成的图像更加直观和易于理解。 ### 函数签名 python libros…...

Linux `>`/`>>` 重定向操作符深度解析与高阶应用指南
Linux `>`/`>>` 重定向操作符深度解析与高阶应用指南 一、核心功能解析1. 基础重定向2. 标准流描述符二、高阶重定向技巧1. 多流重定向2. 文件描述符操作3. 特殊设备操作三、企业级应用场景1. 日志管理系统2. 数据管道处理3. 自动化运维四、安全与权限管理1. 防误操作…...

【自定义类型-联合和枚举】--联合体类型,联合体大小的计算,枚举类型,枚举类型的使用
目录 一.联合体类型 1.1--联合体类型的声明 1.2--联合体的特点 1.3--相同成员的结构体和联合体对比 1.4--联合体大小的计算 1.5--联合体练习 二.枚举类型 2.1--枚举类型的声明 2.2--枚举类型的优点 2.3--枚举类型的使用 🔥个人主页:草莓熊Lotso…...

李宏毅《深度学习》:Self-attention 自注意力机制
一,问题分析: 什么情况下需要使用self-attention架构,或者说什么问题是CNN等经典网络架构解决不了的问题,我们需要开发新的网络架构? 要解决什么问题《——》对应开发self-attention架构的目的? 1&#…...

C++初阶-list的使用1
目录 1.std::list简介 2.成员函数 2.1构造函数的使用 2.2list::operator的使用 3.迭代器 4.容量 4.1list::empty函数的使用 4.2list::size函数的使用 4.3list::max_size函数的使用 5.元素访问 6.修饰符 6.1list::assign函数的使用 6.2push_back和pop_back和push_fr…...
Linux中的tty与login之间的关系
agetty 进程和 login 进程之间的关系: 一、简要概括 agetty 是登录前的终端初始化程序。 login 是处理用户登录认证的程序。 关系:agetty 启动后等待用户输入用户名,然后调用 login 进程进行用户认证。 二、详细过程 1. agetty 的作用 a…...

Python web 开发 Flask HTTP 服务
Flask 是一个轻量级的 Web 应用框架,它基于 Python 编写,特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置,从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html...

分享|16个含源码和数据集的计算机视觉实战项目
本文将分享16个含源码和数据集的计算机视觉实战项目。具体包括: 1. 人数统计工具 2. 颜色检测 3. 视频中的对象跟踪 4. 行人检测 5. 手势识别 6. 人类情感识别 7. 车道线检测 8. 名片扫描仪 9. 车牌识别 10. 手写数字识别 11.鸢尾花分类 12. 家庭照片人脸检测 13. 乐…...

二十三、面向对象底层逻辑-BeanDefinitionParser接口设计哲学
一、引言:Spring XML配置的可扩展性基石 在Spring框架的演进历程中,XML配置曾长期作为定义Bean的核心方式。虽然现代Spring应用更倾向于使用注解和Java Config,但在集成第三方组件、兼容遗留系统或实现复杂配置逻辑的场景下,XML配…...

[Vue]路由基础使用和路径传参
实际项目中不可能就一个页面,会有很多个页面。在Vue里面,页面与页面之间的跳转和传参会使用我们的路由: vue-router 基础使用 要使用我们需要先给我们的项目添加依赖:vue-router。使用命令下载: npm install vue-router 使用路由会涉及到下面几个对象:…...

使用VGG-16模型来对海贼王中的角色进行图像分类
动漫角色识别是计算机视觉的典型应用场景,可用于周边商品分类、动画制作辅助等。 这个案例是一个经典的深度学习应用,用于图像分类任务,它使用了一个自定义的VGG-16模型来对《海贼王》中的七个角色进行分类,演示如何将经典CNN模型…...
OSI 网络七层模型中的物理层、数据链路层、网络层
一、OSI 七层模型 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 1. 物理层(Physical Layer) 功能:传输原始的比特流(0和1),通过物理介质(如电缆、光纤、无线电波)…...

WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
我们在以前的文章中探讨过如何加快你的WordPress网站的速度,并研究过各种形式的缓存。 然而,像那些使用WooCommerce的动态电子商务网站,在让缓存正常工作方面往往会面临重大挑战。 在本指南中,我们将告诉你如何为WooCommerce设置…...
AtCoder Beginner Contest 406(ABCD)
前言 我仿佛在梦游…… 一、A - Not Acceptable #include <bits/stdc.h> using namespace std;typedef long long ll; typedef pair<int,int> pii;void solve() {int dueH,dueM,upH,upM;cin>>dueH>>dueM>>upH>>upM;if(upH>dueH){cou…...

第J2周:ResNet50V2 算法实战与解析
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 学习目标 ✅ 根据TensorFlow代码,编写出相应的Python代码 ✅ 了解ResNetV2和ResNet模型的区别 一、环境配置 二、数据预处理 三、创建、划分数据…...
Live Search API :给大模型装了一个“实时搜索引擎”的插件
6月5号前免费使用。 Live Search 是一项xAI API功能,允许 LLM 在生成响应时查询和考虑实时数据。通过此功能,您可以直接从 API 获得包含实时数据的聊天响应,而无需自己协调网络搜索和大型语言模型(LLM)工具调用。 可以…...
每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
在现代数据仓库建设中,时间维度表是不可或缺的基础维表之一。尤其是在金融、电力、物联网、互联网等行业,分钟级别的时间维度表对于高频数据的统计、分析、报表、数据挖掘等场景具有极其重要的作用。本文将以 Doris 为例,详细讲解每天分钟级别时间维度表在数据仓库中的作用、…...

虚拟机Centos7:Cannot find a valid baseurl for repo: base/7/x86_64问题解决
问题 解决:更新yum仓库源 # 备份现有yum配置文件 sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup# 编辑CentOS-Base.repo文件 vi /etc/yum.repos.d/CentOS-Base.repo[base] nameCentOS-$releasever - Base baseurlhttp://mirrors.aliyun.com/centos/$relea…...

IP风险度自检,多维度守护网络安全
如今IP地址不再只是网络连接的标识符,更成为评估安全风险的核心维度。IP风险度通过多维度数据建模,量化IP地址在网络环境中的安全威胁等级,已成为企业反欺诈、内容合规、入侵检测的关键工具。据Gartner报告显示,2025年全球78%的企…...

NV066NV074美光固态颗粒NV084NV085
NV066NV074美光固态颗粒NV084NV085 在存储技术的快速发展浪潮中,美光科技(Micron Technology)始终扮演着引领者的角色。其NV系列闪存颗粒凭借创新设计和卓越性能,成为技术爱好者、硬件开发者乃至企业级用户关注的焦点。本文将围绕…...