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×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 字节长度)。

三、日期和时间类型

用于存储时间信息,不同数据库可能略有差异:

常见类型

类型格式范围用途
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

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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组播配置全流程动态组播组切换技术零拷贝数据…