当前位置: 首页 > news >正文

JavaWeb基础(计网 socket 数据库 JDBC lombok Mybatis JUnit Maven)

本文用于检验学习效果,忘记知识就去文末的链接复习

1. 网络基础

1.1 计网基础

区分设备:IP地址

区分网络:网络地址

网络互联:路由器

主机上进程间通信:端口

http是常用的协议,基于TCP协议

TCP VS UDP

  • TCP
    • 有连接(握手,建立连接)
  • UDP
    • 无连接(不建立连接),快(数据丢失不会重传)

1.2 Socket技术

Socket有什么用?

  • 可实现 两台计算机上进程 之间的通信(通过网络

复习

  • Java创建Socket对象和Server对象
  • Socket通信过程(协议,域名,端口)
  • 用Socket传输数据(字节,字符)
  • Socket传输文件(字节)
  • Socket访问浏览器(接收数据是一堆字符,有格式)

2. 数据库基础

什么是数据库?

  • 数据的有序集合。数据放在数据表中,便于管理数据。

常见数据库

  • MySQL
  • Microsoft SQL Server
  • Oracle

常见数据库管理软件

  • Navicat
  • DataGrip

常见配置

  • 字符集(支持中文):utf8mb4(utf8只有3字节,有时会出问题)
  • 排序规则:utf8mb4_general-ci

2.1 安装一个数据库

一般用MySQL学习

  • 本地安装(下载安装包,在本地安装)
  • 服务器安装(在服务器上安装MySQL,宝塔面板等,可通过公网IP访问)
  • 在线购买(在阿里云,腾讯云上购买云数据库产品)

2.2 数据模型

  • 实体-联系模型(Entity-Relationship Model)(E-R MODEL)
    • ER图(E-R Diagram)

实体

  • 属性

联系

  • 1:1
  • n:1
  • n:m

2.3数据库的规范化

  • 主键
  • 外键

范式(具体定义看书)

(逐层递进,减少数据库间的冗余信息和依赖关系)

  • 第一范式(1NF):每一列都不可拆分
    • 如:“信息”这个列太模糊,可继续细分
  • 第二范式(2NF):表中必须有主键,其他属性完全依赖主键
    • 如:“学号”作为主键
  • 第三范式(3NF):所有属性不传递依赖于主键
    • 处理:分表,消除传递依赖
  • BCNF: 每个表只存储一种信息,没有任何冗余信息

2.4 SQL语句

增查改删CRUD(Create/Retrive/Update/Delete)

SQL数据类型

char(n):可存储固定长度为n的字符串

varchar(n):可存储任意数量字符串

存储数字

  • smallint
  • int
  • bigint
  • float
  • double

存储时间

  • date:日期
  • time:时间
  • year:年份
  • datetime:日期+时间

2.4.1 数据库定义语言(Data Definition Language,DDL)

--创建数据库
CREATE DATABASE 数据库名
--删除数据库
DROP DATABASE 数据库名
--创建表
CREATE TABLE
--修改表
ALTER TABLE
--删除表
DROP TABLE

创建数据库study

CREATE DATABASE study;

删除数据库study

DROP DATABASE study;

创建一张表

CREATE TABLE students (  id INT PRIMARY KEY,  name VARCHAR(50) NOT NULL,  age INT  
);

查询数据

查看USER表中的tHost,tUSer列

SELECT tHost,tUSer FROM USER;

修改数据

alter

如果你有一个名为 students 的表,并且你想在这个表中添加一个名为 age 的整数列,你可以使用以下命令:

ALTER TABLE students  
ADD age INT;
CONSTRAINT

列级约束条件

  • 主键Primary Key
  • 外键Foreign Key
  • 唯一unique
  • 检查check
  • 默认default
  • 非空/空not null/null

表级约束条件

  • 主键Primary Key
  • 外键Foreign Key
  • 唯一unique
  • 检查check

2.4.2 数据操纵语言(Data Manipulation Language,DML)

--插入数据
INSERT INTO
--修改数据
UPDATE 表名 SET 列名=,... WHERE 条件
--删除数据
DELETE FROM 表名
DELETE FROM 表名 WHERE 条件

2.4.3 数据库查询语言(Data Query Language,DQL)

-- 指定查询某一列数据
SELECT 列名[,列名] FROM 表名
-- 会以别名显示此列
SELECT 列名 别名 FROM 表名
-- 查询所有的列数据
SELECT * FROM 表名
-- 只查询不重复的值
SELECT DISTINCT 列名 FROM 表名
--添加where字句来限定查询目标
SELECT * FROM 表名 WHERE 条件
--将查询结果排序SELECT * FROM 表名 WHERE 条件 ORDER BY 列名 ASC|DESC

常用查询条件(WHERE中使用)

  • =,>,<,>=,<=,!=
  • 是否在集合中:in,not in
  • 模糊匹配:like,not like
  • 多重连接:and,or,not

排序(默认升序)

  • ASC:升序
  • DESC:降序

聚集函数

  • count([distinct]*)统计所有的行数(distinct表示去重)
  • count([distinct]列名)统计某列的值总和
  • sum([distinct]列名)求一列的和(注意必须是数字类型的)
  • avg([distinct]列名)求一列的平均值(注意必须是数字类型)
  • max([distinct]列名)求一列的最大值
  • min([distinct]列名)求一列的最小值

分组/分页查询

  • 分组:GROUP BY
  • 分页:HAVING
  • 限制数量:LIMIT
--分组
SELECT sum(*) FROM 表名 WHERE 条件 GROUP BY 列名
--分页
SELECT sum(*) FROM 表名 WHERE 条件 GROUP BY 列名 HAVING 约束条件
--限制查询的数量,只取前n个结果
SELECT * FROM 表名 LIMIT 数量

多表查询

--默认笛卡尔积
SELECT * FROM1,2
SELECT * FROM1,2 WHERE 条件
--自身连接,要起别名
SELECT * FROM 表名 别名1, 表名 别名2

连接

  • 外连接
  • 内连接inner join:交集
  • 左连接left join:左边都要有,右边缺失值为空
  • 右连接right join

嵌套查询

将一个查询的结果作为另一个查询的条件

SELECT * FROM 表名 WHERE 列名 = (SELECT 列名 FROM 表名 WHERE 条件)

2.4.4 数据库控制语言(Database Control Language,DCL)

--创建用户
CREATE USER 用户名 identified by 密码;
--登录
login -u 用户名 -p
--授权(授权后才可看数据库)
grant all|权限1,权限2...(1,...) on 数据库.to 用户 [with grant option]--创建视图
CREATE VIEW 视图名称(列名) as 子查询语句 [WITH CHECK OPTION];
--删除视图
drop view apptest-- 创建索引
CREATE INDEX 索引名称 ON 表名 (列名)
-- 查看表中的索引
show INDEX FROM student
--删除索引
drop index 索引名称 on 表名--创建触发器
CREATE TRIGGER 触发器名称 [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON 表名/视图名 FOR EACH ROW DELETE FROM student WHERE student.sno = new.sno
--查看触发器
SHOW TRIGGERS
--删除触发器
DROP TRIGGER 触发器名称--查看数据库引擎
SHOW ENGINES;begin;   #开始事务
...
rollback;  #回滚事务
savepoint 回滚点;  #添加回滚点
rollback to 回滚点; #回滚到指定回滚点
...
commit; #提交事务
-- 一旦提交,就无法再进行回滚了!

视图(本质就是一个查询结果)

  • 打开视图时,可看到期待的查询结果。
  • 是个虚表,不是真实存在的表

索引(快速查询)

  • 类似Hash表,可快速定位元素的位置

触发器

  • 在某种条件下会自动触发,在select/update/delete时,会自动执行我们预先设定的内容,触发器通常用于检查内容的安全性,相比直接添加约束,触发器显得更加灵活。
  • 触发器所依附的表称为基本表
  • new表/old表

事务

  • 把一系列SQL操作整理起来,变成一个整体
  • ACID特性
    • 原子性
    • 一致性
    • 隔离性
    • 持久性

函数&存储过程

  • 它们能够捆绑一组SQL语句运行,并且可以反复使用,大大提高工作效率。

3. java与数据库

3.1 JDBC(Java Data Base Connectivity)

  • 用java连接数据库,操作数据库
  • 定义了接口(规范),接口由数据库实现
  • 使用步骤
    • 导入依赖(jar包)
    • 用JDBC连接数据库
    • 操作数据库

JDBC中一些类

  • Driver Manager
  • Connection
  • Statement:用于执行SQL

操作

  • DML操作
  • DQL操作

批处理(statement.addBatch())

查询结果映射对象

  • 把查询结果传进构造函数
  • 反射

SQL注入攻击

  • 用户在输入数据时,破坏原有的SQL语句,恶意操作数据库
    • 可限制用户输入一些SQL语句关键字,但关键字太多,这方法不太好
  • PrepareStatement执行SQL命令,可解决以上问题
    • 需要给出SQL语句格式

管理事务

con.setAutoCommit();   //关闭自动提交后相当于开启事务。
// 这里是SQL语句
con.commit();或 con.rollback();

3.2 Lombok

  • 自动生成set/get/构造函数
  • 编译时处理代码(修改语法树),加上函数

使用方法

  • 导入jar包(将jar文件拖入idea,右键-添加为项目)
  • 在IDEA中下载插件

标签

  • java中的goto

lombok注解

  • 减少样板代码,使得 Java 类更加清晰和简洁。
  • 前加注解,在 方法/属性 前加注解
  • 可定义访问权限
    • AccessLevel.PUBLIC
    • AccessLevel.PRIVATE
  • @Setter
  • @Getter
  • @ToString
    • exclude:省略一些内容
    • of:留下一些内容(与exclude相反的)
    • callsuper:toString中调用父类的toString方法
    • 调用get方法,获取属性
      • doNotUseGetters:不用get方法,直接用属性
  • onlyExplicitlyIncluded:是否包含全部字段
  • @ToString.Include:指定要包含的字段
    • rank:越大,等级越高
    • name:别名
  • @EqualsAndHashCode
  • @AllArgsConstructor:有所有参数的构造函数
    • staticName:静态函数,返回一个对象
    • force:给final类型变量一个默认值
  • @NoArgsConstructor:无参数的构造函数
  • @RequiredArgsConstructor:只构造需要构造的属性
    • final类型变量
  • @Data
    • 包含@Setter,@Getter,@RequiredArgsConstructor,@ToString,@EqualsAndHashCode
    • 不建议有继承关系,因为equal方法结果可能与预期不符
  • @Value
    • 不会生成setter,成员属性都是final的
  • @SneakyThrows:自动生成try-catch代码块
    • Exception.class
    • IOException.class
  • @Cleanup:自动调用close(如IO流,用完要close)
  • @Builder:快速生成建造者模式
    • @Builder.Default:指定默认值
    • @Builder.ObtainVia:指定默认值的获取方式
    • setterPrefix:方法名前加前缀
    • .Default:属性默认值
    • .ObtainVia:在Builder过程中通过指定方法,指定属性值
    • toBuilder:把对象变回Builder
getter中懒加载有什么用在编程中,lazy 属性或特性通常用于实现懒加载(lazy loading)模式。
懒加载意味着对象的某些属性或资源的初始化会延迟到它们真正被需要时才进行,而不是在对象创建时立即进行。
这种策略对于优化性能非常有用,特别是在处理计算密集型操作或需要消耗大量资源的操作时。在 getter 上下文中,lazy 属性可以确保当你第一次访问某个属性时,其背后的计算或初始化操作才会执行,
并且其结果会被缓存起来,以便后续访问时直接返回,而不需要重新计算或初始化。

3.3 Mybatis

JDBC还是不够好用,用Mybatis可更方便地操作数据库

知道什么是XML

  • XML语法跟HTML很像。里面写的是配置

配置

  • mybatis-config.xml
  • TestMapper.xml
  • pojo文件/entity文件中创建java类
  • 写selectList
  • 不够方便,怎么办?
  • 用接口xxxMapper.java,与TestMapper.xml相关联

修改xml,切换数据库环境

数据源

别名

增删改查

  • 读取到数据后,可映射为实体类map
  • 通过resultMap设定映射规则
  • 通过constructor设定要调用的构造函数

自动映射:首字母小写,后面的驼峰

类中有多个构造方法【容易出问题】

  • 只能有一个构造方法(有条件的,多了会出问题)
  • 部分参数被构造方法使用,实体类没有被正确构建

按学号查找信息

  • select * from student where sid = #{sid}

插入学生信息

  • insert student(name,sex) values(#{name}, #{sex})

“一对多”

  • resultMap
  • collection

“多对一”
-resultMap

  • association

事务

动态SQL

  • if
  • chooose(when, otherwise)
  • trim(where, set)
  • foreach

缓存机制

何时清空缓存?

  • 插入操作后
  • 会话结束后

缓存分级

  • 优先级:二级----一级—数据库(cache—主存—硬盘)
  • 一级缓存(对应session)
  • 二级缓存(对应mapper)(需要启用)

解决缓存机制导致的不一致问题

  • 关闭缓存(但存取数据时会有额外开销)

使用注解开发

  • 在mybatis-config.xml中的< mappers >中注册
    • 单独注册< mapper>
    • 批量注册< packge >
  • @select等
  • @many/@one
  • @ConstructorArgs

3.4 JUnit(单元测试)

测试某个小功能时,没必要重新启动整个项目

使用步骤

  • 导入jar包
  • 编写测试用例,加注解
  • @Test
    • 断言Assert.
  • @Before:前置操作(@Test执行前,会执行这个)
    • 有些前置操作只需要一次,怎么办?(juint5)
  • @After

JUL日志系统(JDK提供的)

  • 使用流程
    • 获取日志打印器
    • 调用info,输出信息

日志级别(高到低)

  • SEVERE:严重错误
  • WARNING:某些警告
  • INFO:(默认)常规消息(该等级以下默认不会被打印)
  • CONFIG
  • FINE
  • FINER
  • FINEST

我们想:开发时输出所有日志,上线后正常输出日志

输出所有日志

  • 修改日志级别
  • 不使用默认日志处理器
  • 使用自定义日志处理器

可以用文件处理器打印日志

可以添加过滤器,不让某些日志显示

了解Properties配置文件

  • 常见操作
    • Properties类
    • properties.load
    • properties.store
  • hashtable VS hashmap

可用lombok快速开发日志

  • @Log

Mybatis也有日志系统

  • 启用
  • 读取配置

4. Maven(管理项目)

Maven能管理jar包(手动导入太麻烦)

在IDEA中

  • 创建maven项目
  • 配置maven路径,IDEA的设置中
  • 设置默认maven配置,在C:\Users\用户\AppData\Roaming\JetBrains\IntelliJIdea2023.3\options

如何导入jar包

  • 在官网找到插入依赖的xml
  • 插入到pom中

依赖属性

  • type
  • scope:依赖的作用域
    • compile:编译,测试,运行时有效
    • provided:编译,测试时有效(lombok)
    • runtime:运行,测试时有效
    • test:测试时有效(JUnit)
  • optional
  • exclusions

从本地找依赖

<dependencies>  <dependency>  <groupId>com.example</groupId>  <artifactId>my-local-lib</artifactId>  <version>1.0</version>  <scope>system</scope>  <systemPath>${project.basedir}/lib/my-local-lib-1.0.jar</systemPath>  </dependency>  
</dependencies>

可选依赖

<optional>true</optional>

排除依赖

<exclusions><exclusion><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId></exclusion>
</exclusions>

依赖的继承关系

  • 父项目中的<dependencies>,会被子项目直接继承
  • 父项目中的<dependencyManagement>,在子项目中引入后,也可继承(不用写版本号)
  • 子项目间也可互相导入

maven常用命令

  • clean:清除target中的文件
  • validate:验证项目的可用性
  • compile:编译项目
  • install:将当前项目安装到本地maven仓库(之后可被其他项目导入)
  • verify:按顺序执行默认生命周期阶段(validate,compile,package)
  • test:执行test目录下的所有测试用例
  • package:把项目打包为jar包(默认不含依赖)
    • pom中添加插件,可将依赖也一并打包
  • deploy:发布命令到本地仓库和远程仓库
  • site:生成当前项目的发布站点

参考

https://www.itbaima.cn/document/ggwwj09j2vkfftvd

https://www.bilibili.com/video/BV1CL4y1i7qR

相关文章:

JavaWeb基础(计网 socket 数据库 JDBC lombok Mybatis JUnit Maven)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. 网络基础 1.1 计网基础 区分设备&#xff1a;IP地址 区分网络&#xff1a;网络地址 网络互联&#xff1a;路由器 主机上进程间通信&#xff1a;端口 http是常用的协议&#xff0c;基于TCP协议 TCP VS U…...

【HBase】

什么是HBase HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据。 访问层次&#xff08;数据…...

Vue3:使用Pinia存储、读取、修改数据

一、存储数据 Pinia插件中&#xff0c;存储数据的配置项是state count.ts import {defineStore} from piniaexport const useCountStore defineStore(count,{// 真正存储数据的地方state(){return {sum:6}} })loveTalk.ts import {defineStore} from piniaexport const use…...

基于 Quartz.NET 可视化任务调度平台 QuartzUI

一、简介 QuartzUI 是基于 Quartz.NET3.0 的定时任务 Web 可视化管理&#xff0c;Docker 打包开箱即用、内置 SQLite 持久化、语言无关、业务代码零污染、支持 RESTful 风格接口、傻瓜式配置、异常请求邮件通知等。 二、部署 QuartzUI 从 2022 年到现在没有提交记录&#xf…...

前端三剑客 —— CSS (第三节)

目录 上节回顾&#xff1a; 1.CSS使用有以下几种样式; 2.选择器 1.基本选择器 2.包含选择器 3.属性选择器 [] 4.伪类选择器 &#xff1a; 5.伪元素选择器 ::before :after 3.常见样式的使用 常见样式参考表 一些特殊样式 媒体查询 自定义字体 变换效果 translate&…...

C# 系统学习(异步编程)

在C#中&#xff0c;异步编程是一种优化程序性能的关键技术&#xff0c;特别是在处理I/O密集型操作&#xff08;如网络请求、数据库查询、文件读写等&#xff09;时&#xff0c;能够有效避免由于长时间等待而导致的线程阻塞&#xff0c;从而提高应用的响应速度和资源利用率。asy…...

前端工程师————CSS学习

选择器分类 选择器分为基础选择器和复合选择器 基础选择器包括&#xff1a;标签选择器&#xff0c;类选择器&#xff0c;id选择器&#xff0c;通配符选择器标签选择器 类选择器 语法&#xff1a;.类名{属性1&#xff1a; 属性值&#xff1b;} 类名可以随便起 多类名使用方式&am…...

C# 登录界面代码

背景 MVVM 是一种软件架构模式&#xff0c;用于创建用户界面。它将用户界面&#xff08;View&#xff09;、业务逻辑&#xff08;ViewModel&#xff09;和数据模型&#xff08;Model&#xff09;分离开来&#xff0c;以提高代码的可维护性和可测试性。 MainWindow 类是 View&a…...

点云的Python均值采样

一、代码 Python import numpy as np import open3d as o3ddef mean_sampling(point_cloud, num_samples=None, depth=None, method=knn, k=10):"""对点云进行均值下采样。:param point_cloud: Open3D PointCloud对象:param num_samples: (仅当method=knn时使…...

xss-labs 11-13通关记录

前言 最近复习xss知识&#xff0c;整理一下xss的绕过思路。 level11 观察测试: 1.四个隐藏参数标签 2.全部get传参一遍发现t_sort可赋值&#xff0c;使用的是get传参 3.针对t_sort测试过滤的字符 t_sort< > & ; " 检测到他除了<>,别的全部过滤。 因为…...

Unity类银河恶魔城学习记录12-2 p124 Character Stats UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_Statslot.cs using System.Collections; using System.Collections.Gen…...

技术揭秘:如何打造完美互动的充电桩硬件与服务平台?

充电桩平台全套源码地址 https://gitee.com/chouleng/cdzkjjh.git 这张图像是一个系统或服务的架构图。以下是对图中各个部分的描述&#xff1a; 前端&#xff1a; 位于图像的顶部&#xff0c;颜色为浅绿色。用户服务端&#xff1a; 紧邻前端&#xff0c;颜色为淡黄色。设备服…...

【Django学习笔记(四)】JavaScript 语言介绍

JavaScript 语言介绍 前言正文1、JavaScript 小案例2、代码位置2.1 在当前 HTML 文件中2.2 在其他 js 文件中 3、代码注释3.1 HTML的注释3.2 CSS的注释3.3 Javascript的注释 4、变量 & 输出4.1 字符串4.2 数组4.3 对象(python里的字典) 5、条件语句6、函数7、DOM7.1 根据 I…...

IO和NIO的主要区别在哪里?

Java 中的 IO&#xff08;输入/输出&#xff09;和 NIO&#xff08;新输入/输出&#xff09;都是处理输入和输出操作的方式&#xff0c;它们的主要区别在于如何处理数据的读写。 阻塞与非阻塞: IO是阻塞的&#xff0c;这意味着当一个线程调用read()或write()时&#xff0c;该线…...

爬虫部署平台crawlab使用说明

Crawlab 是一个基于 Go 语言的分布式网络爬虫管理平台&#xff0c;它支持 Python、Node.js、Jar、EXE 等多种类型的爬虫。 Crawlab 提供了一个可视化的界面&#xff0c;并且可以通过简单的配置来管理和监控爬虫程序。 以下是 Crawlab 的一些主要优点&#xff1a; 集中管理&am…...

uniapp uni.scss中使用@mixin混入,在文件引入@include 样式不生效 Error: Undefined mixin.(踩坑记录一)

问题&#xff1a; 在uni.scss文件定义mixin 2. 在vue文件引入: 3. 出现报错信息: 4. 问题思考&#xff1a; 是不是需要引入uni.scss &#xff1f; 答案不需要 uni.scss是一个特殊文件&#xff0c;在代码中无需 import 这个文件即可在scss代码中使用这里的样式变量。uni-app的…...

Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景&#xff0c;这一篇文章就针对Redis的常用数据结构进行一个说明&#xff0c;通过示例的形式演示每一种数据结构如何使用。 当涉及Redis的数据操作时&#xff0c;不同数据类型对应的不同数据结构&#xff0c;如下就对5大常用的数据类型进行…...

刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢?

刘小光本就疑心赵本山与他媳妇李琳有染&#xff0c;赵本山为证实清白便想起蛋糕上的字&#xff0c;结果呢&#xff1f; ——小品《生日快乐》&#xff08;中5&#xff09;的台词 &#xff08;接上&#xff09; 赵本山&#xff1a;噢!对对!那谁&#xff0c;老四&#xff0c;是…...

Unity之PUN实现多人联机射击游戏的优化(Section 2)

目录 &#x1f3ae;一、准备工作 &#x1f3ae;二、实现手雷投掷动作 &#x1f3ae;三、手雷投掷同步 &#x1f4a4;3.1 photonView.RPC &#x1f3ae;四、同步手雷伤害 这几周都给我布置任务了&#xff0c;最近可忙。现在终于有机会更新了&#xff0c;也谢谢大家的阅读&a…...

多叉树题目:N 叉树的层序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;N 叉树的层序遍历 出处&#xff1a;429. N 叉树的层序遍历 难度 4 级 题目描述 要求 给定一个 N 叉树的根结点 root \texttt{root} root&#xf…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...