当前位置: 首页 > 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…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...