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 * FROM 表1, 表2
SELECT * FROM 表1, 表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)
本文用于检验学习效果,忘记知识就去文末的链接复习 1. 网络基础 1.1 计网基础 区分设备:IP地址 区分网络:网络地址 网络互联:路由器 主机上进程间通信:端口 http是常用的协议,基于TCP协议 TCP VS U…...
【HBase】
什么是HBase HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据。 访问层次(数据…...
Vue3:使用Pinia存储、读取、修改数据
一、存储数据 Pinia插件中,存储数据的配置项是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 可视化管理,Docker 打包开箱即用、内置 SQLite 持久化、语言无关、业务代码零污染、支持 RESTful 风格接口、傻瓜式配置、异常请求邮件通知等。 二、部署 QuartzUI 从 2022 年到现在没有提交记录…...
前端三剑客 —— CSS (第三节)
目录 上节回顾: 1.CSS使用有以下几种样式; 2.选择器 1.基本选择器 2.包含选择器 3.属性选择器 [] 4.伪类选择器 : 5.伪元素选择器 ::before :after 3.常见样式的使用 常见样式参考表 一些特殊样式 媒体查询 自定义字体 变换效果 translate&…...
C# 系统学习(异步编程)
在C#中,异步编程是一种优化程序性能的关键技术,特别是在处理I/O密集型操作(如网络请求、数据库查询、文件读写等)时,能够有效避免由于长时间等待而导致的线程阻塞,从而提高应用的响应速度和资源利用率。asy…...
前端工程师————CSS学习
选择器分类 选择器分为基础选择器和复合选择器 基础选择器包括:标签选择器,类选择器,id选择器,通配符选择器标签选择器 类选择器 语法:.类名{属性1: 属性值;} 类名可以随便起 多类名使用方式&am…...
C# 登录界面代码
背景 MVVM 是一种软件架构模式,用于创建用户界面。它将用户界面(View)、业务逻辑(ViewModel)和数据模型(Model)分离开来,以提高代码的可维护性和可测试性。 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知识,整理一下xss的绕过思路。 level11 观察测试: 1.四个隐藏参数标签 2.全部get传参一遍发现t_sort可赋值,使用的是get传参 3.针对t_sort测试过滤的字符 t_sort< > & ; " 检测到他除了<>,别的全部过滤。 因为…...
Unity类银河恶魔城学习记录12-2 p124 Character Stats UI源代码
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_Statslot.cs using System.Collections; using System.Collections.Gen…...
技术揭秘:如何打造完美互动的充电桩硬件与服务平台?
充电桩平台全套源码地址 https://gitee.com/chouleng/cdzkjjh.git 这张图像是一个系统或服务的架构图。以下是对图中各个部分的描述: 前端: 位于图像的顶部,颜色为浅绿色。用户服务端: 紧邻前端,颜色为淡黄色。设备服…...
【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(输入/输出)和 NIO(新输入/输出)都是处理输入和输出操作的方式,它们的主要区别在于如何处理数据的读写。 阻塞与非阻塞: IO是阻塞的,这意味着当一个线程调用read()或write()时,该线…...
爬虫部署平台crawlab使用说明
Crawlab 是一个基于 Go 语言的分布式网络爬虫管理平台,它支持 Python、Node.js、Jar、EXE 等多种类型的爬虫。 Crawlab 提供了一个可视化的界面,并且可以通过简单的配置来管理和监控爬虫程序。 以下是 Crawlab 的一些主要优点: 集中管理&am…...
uniapp uni.scss中使用@mixin混入,在文件引入@include 样式不生效 Error: Undefined mixin.(踩坑记录一)
问题: 在uni.scss文件定义mixin 2. 在vue文件引入: 3. 出现报错信息: 4. 问题思考: 是不是需要引入uni.scss ? 答案不需要 uni.scss是一个特殊文件,在代码中无需 import 这个文件即可在scss代码中使用这里的样式变量。uni-app的…...
Redis的5大常见数据类型的用法
上一篇文章我们讲了Redis的10大应用场景,这一篇文章就针对Redis的常用数据结构进行一个说明,通过示例的形式演示每一种数据结构如何使用。 当涉及Redis的数据操作时,不同数据类型对应的不同数据结构,如下就对5大常用的数据类型进行…...
刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢?
刘小光本就疑心赵本山与他媳妇李琳有染,赵本山为证实清白便想起蛋糕上的字,结果呢? ——小品《生日快乐》(中5)的台词 (接上) 赵本山:噢!对对!那谁,老四,是…...
Unity之PUN实现多人联机射击游戏的优化(Section 2)
目录 🎮一、准备工作 🎮二、实现手雷投掷动作 🎮三、手雷投掷同步 💤3.1 photonView.RPC 🎮四、同步手雷伤害 这几周都给我布置任务了,最近可忙。现在终于有机会更新了,也谢谢大家的阅读&a…...
多叉树题目:N 叉树的层序遍历
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:N 叉树的层序遍历 出处:429. N 叉树的层序遍历 难度 4 级 题目描述 要求 给定一个 N 叉树的根结点 root \texttt{root} root…...
时序数据库IoTDB:功能详解与行业应用
一文读懂时序数据库 IoTDB。 01 为什么需要时序数据库 解释时序数据库前,先了解一下何谓时序数据。 时序数据,也称为时间序列数据,是指按时间顺序记录的同一统计指标的数据集合。这类数据的来源主要是能源、工程、交通等工业物联网强关联行业…...
信息系统项目管理师——第18章项目绩效域管理(一)
本章节内容属于第四版新增知识,为PMBOK第七版专有,选择、案例、论文都会考,属于比较重要的章节。 选择题,稳定考3分左右,新教材基本考课本原话,需要多读课本,多刷题。 案例题,考的概…...
WebSocket用户验证
在WebSocket中,如何携带用户的验证信息 一、在OnMessage中进行验证 客户端在连接到服务器后,客户端通过发送消息,服务器端在OnMessage方法中,进行信息验证,这种方式需要将用户身份验证及接收用户消息进行混合处理&am…...
NOSQL(非关系型数据库)的优缺点有哪些?
优点: 高度灵活且可扩展:NoSQL数据库不受固定数据模型的限制,可以根据应用需求灵活设计数据结构,轻松应对大规模数据集。此外,它支持分布式架构,具有出色的水平扩展能力,能够高效地处理大量数据…...
个人推荐Redis比较好的一种使用规范
随着对个人项目的不断开发、迭代和重构,博主在这个过程中总结出了一套使用redis的较好的规范。主要包含Redis的key命名规范和Redis代码规范。 主要内容 主要包含以下几个内容: 同一应用的key在最前面添加统一的前缀,如应用名; 案…...
【教程】宝塔default.db占用空间几十g解决方法|宝塔占用磁盘空间特别大解决方法|宝塔磁盘被占满怎么清理
目录 一、前言二、排查问题三、解决方法 一、前言 用过宝塔创建网站,大家应该都非常熟悉,但是用随着用的时间越来越多,宝塔所占用的空间也越来越多,不停的加大数据盘都没有用,我原先买了30G够用了,随着时间…...
Unity类银河恶魔城学习记录11-15 p117 Ice and Fire item Effect源代码
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili IceAndFire_Controller.cs using System.Collections; using System.Coll…...
Qt QML的枚举浅用
QML的枚举用法 序言概念命名规则在QML定义枚举的规范 用法QML的枚举定义方法供QML调用的,C的枚举定义方法 序言 概念 QML的枚举和C的其实差不多,但是呢,局限比较多,首先不能在main.qml里定义,也不能在子项中定义。 …...
设计模式:单例模式六种实现
单例模式有多种实现方式,每种方式都有其设计思想、优缺点以及适用的使用场景。以下是一些常见的单例实现方式: 1. 懒汉式(线程不安全) 设计思想 这种实现方式采用了类加载的懒加载机制来保证单例只在第一次使用时被创建。 实现代码 public class Singleton {private s…...
Mybatis-Plus05(分页插件)
分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 1. 添加配置类 Configuration MapperScan("com.atguigu.mybatisplus.mapper") //可以将主类中的注解移到此处 public class MybatisPlusConfig {Bean public MybatisPlusIntercepto…...
购物网站开发文献综述/google推广 的效果
电脑快捷键 Ctrl A 全选 Ctrl C 复制 Ctrl P 打印 Ctrl Y 恢复 Win D 返回桌面 Win E 打开我的电脑 Win L 锁定桌面 F2 文件重命名 F5 刷新 Ctrl shift T 网页关了,一键重新打开...
做外汇网站代理/网络营销是什么
然而并没有什么好论的。。。 直接贴代码算了。。。 ll Mul(ll x,ll y,ll Mod){x(x%ModMod)%Mod;y(y%ModMod)%Mod;return (x*y-(long long)((long double)x/Mod*y0.5)*ModMod)%Mod; } 转载于:https://www.cnblogs.com/yanshannan/p/9649887.html...
开发商交房必备条件/深圳优化seo
插在电脑上实验时若出现 ATCREG? CREG: 0,2 可能是usb口供电不足所致,换至主机箱后面usb口后问题解决,返回值CREG: 0,1转载于:https://www.cnblogs.com/prayer521/p/6690257.html...
wordpress成品网站云部落/友情链接格式
Mac安装brew 软件包管理工具HomebrewHomebrew安装Homebrew基本命令Homebrew是一款Mac OS下的软件包管理工具,具备安装、卸载、更新、查看、搜索等很多实用功能。一条指令就可实现包管理,而无需考虑各种依赖和文件路径等情况,十分方便快捷。Ho…...
设计头条app官方网站/推广用哪个平台效果好
模块化编程对头文件的要求 在模块化编程中,使用头文件是非常常见的做法,头文件通常包含一些常量,宏定义,类型定义,函数声名等信息,可以使代码更加模块化,可读性更高,可维护性更强. 以下是一些模块化编程中应该遵守的偶文件使用规则. 1.只包含需要的头文件,头文件的数量和大小…...
vps建立多个网站/广东又出现新病毒
研究了一下,并和开发这探讨了一下这个扩展,扩展会不断更新,作者也在努力出个windows版的啊 扩展开源地址:https://code.google.com/p/php-beast/downloads/detail?namebeast-v0.2.zip&can2&q转载于:https://www.cnblogs.…...