莫队
普通莫队算法 给出一个序列,要求每次查询L, R中满足某些条件的数字,输出每次查询的结果 正常操作下需要进行$O(n^2)$ ,但是使用莫队可以实现 $O(nsqrt(n))$ 查询所有操作; 莫队主要在于预先处理 查询操作,用 l 和 r 两个指针找到当前窗口,每次移动指针使得时间复杂度降低。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990#include<bits/stdc++.h>using namespace std;using i64 = long long;struct Query { int l, r, id;};int main() { ios::sync_with_stdio(false); ...
JDBC
JDBC 概述 定义:Java Database Connectivity (JDBC) 是 Java 语言操作关系型数据库的一套 API,MyBatis 等框架底层均基于 JDBC。 核心功能:提供数据库连接、SQL 执行、结果集处理等操作接口。 JDBC 操作示例需求:更改 id=1 的记录的 age 为 2 123456789101112131415161718192021public void test() throws Exception { // 1. 注册驱动(兼容性建议显式加载) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立数据库连接 String url = "jdbc:mysql://localhost:3306/web01"; String username = "root"; String password = "1234"; Connection...
MySQL
启动 : net start mysql 查看有没有进程1tasklist| findstr "mysql" 杀死进程1taskkill/f /t /im mysqld.exe 登录mysql: 语法:12345mysql -u用户名 -p密码 [-h数据库服务器IP地址 -P端口号]// 一般直接mysql -uroot -p后输入密码登录 卸载: SQL 一门操作关系型数据库的编程语言 分类 DDL:数据定义语言,定义数据库对象 DML:数据操作语言,对数据库数据进行修改 DQL:数据查询语言,查询 DCL:数据控制语言,控制,用来控制数据库访问权限 DDL - 数据库 操作语法 1234567891011121314-- 查询所有数据库show databases;-- 查询当前数据库select database();-- 使用 / 切换数据库名字use 数据库名字-- 创建数据库(如果不存在),数据库不能重复create database [if not exist] 数据名字 [default charset...
二分图最大匹配
匈牙利算法 本质上是一个调整策略的方法,有点类似反悔贪心。 首先让可以匹配的点直接匹配(不必顾及后面的点),之后到了某个点进行匹配时,如果该点可以匹配直接匹配,否则从该点所连的对应点开始,找到它的上一个匹配点,让他尝试着更换一个匹配,如果成功更换匹配就更新当前匹配,否则匹配失败,这样最后总会得到一个最大匹配。 具体实现so ez, 设置一个vis标记当前对应点是否在更新的交替路中,设置Match作为对面的点的匹配,dfs即可。 12345678910111213141516171819202122232425262728293031323334353637383940struct Match { int n; vector<vector<int>> e; vector<int> match, vis; Match(int n) : vis(n + 1), n(n) { e.resize(n + 1); match.assign(n + 1, -1); ...
三层架构和分层解耦
一、Java Web 三层架构Java Web 应用可以大致分为三层: Controller 层(控制层) Service 层(业务逻辑层) Dao 层(数据访问层) 1. Controller 层Controller 层主要负责接收前端发送的 HTTP 请求,并对请求进行处理后响应数据。 职责: 接收来自客户端(如浏览器、移动设备等)的 HTTP 请求(GET、POST、PUT、DELETE 等)。 解析请求中的参数(如查询字符串或表单数据)。 调用 Service 层的方法处理业务逻辑。 注:Controller 层不直接实现业务逻辑,而是通过调用 Service 层的方法来完成具体操作。 2. Service 层Service 层负责实现具体的业务逻辑,是应用的核心部分。 职责: 实现复杂且核心的业务逻辑(例如银行系统中的转账业务)。 管理事务处理,确保多个数据库操作要么全部成功(提交事务),要么全部失败(回滚事务)。 为 Controller 层提供业务处理方法。 3. Dao 层Dao 层(Data Access Object...
gdb
编译程序时添加调试信息为了让 GDB 能够读取源码并关联变量信息,你必须在编译时加入调试符号。例如,对于 C 程序,可以这样编译: 1gcc -g -o my_program my_program.c 对于 C++ 程序,则用: 1g++ -g -o my_program my_program.cpp 启动 GDB在终端中输入以下命令启动 GDB 调试器,并加载可执行文件: 1gdb my_program 进入 GDB 后,会看到提示符 (gdb),这时就可以开始调试了。 常用 GDB 命令查看源码和设置断点 list (l) 显示源码,默认显示当前停留位置附近的代码。 1(gdb) list break (b) 在指定的函数或行设置断点。 示例:在 main 函数入口设置断点: 1(gdb) break main 或在具体文件的某一行设置断点:1(gdb) break my_program.c:20 启动和控制程序运行 run (r) 启动程序执行,可以附带命令行参数。1(gdb) run arg1 arg2 continue (c) ...
hutool
📚简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。 #🎁Hutool名称的由来Hutool = Hu + tool,是原公司项目底层代码剥离后的开源库,“Hu”是公司名称的表示,tool表示工具。Hutool谐音“糊涂”,一方面简洁易懂,一方面寓意“难得糊涂”。 #🍺Hutool如何改变我们的coding方式Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。 以计算MD5为例: 👴【以前】打开搜索引擎 -> 搜“Java MD5加密” ->...
HTTP协议
概念: 超文本传输协议,规定了浏览器和服务器数据传输的规则 例子: Response 123456HTTP/1.1 200 Content-Type: text/html;charset=UTF-8 Content-Length: 10 Date: Wed, 19 Mar 2025 08:22:49 GMT Keep-Alive: timeout=60 Connection: keep-alive Request 12345678910111213141516GET /hello?name=ith HTTP/1.1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflate, br, zstdAccept-Language:...
Educational-Codeforces-Round-176题解
近期来打得最好的一场,但是B题细节真有点多啊喂。。 A. To Zero给定 n, k, 求把n变0次数 k >= n 答案是1, 否则n先减去k,之后无论如何选择的减数必然是偶数,然后计算次数即可 1234567891011121314151617181920212223242526272829303132333435363738#include<bits/stdc++.h>using namespace std;using i64 = long long;void solve() { i64 n, k; cin >> n >> k; i64 ans = 0; if (k >= n) { cout << 1 << '\n'; return; } n -= k; ans++; if (k & 1) { k--; } ...
Maven
Maven是管理Java项目根据,apache旗下一个东西 当前市场上的主流是Maven 1. Maven的基本概念 构建生命周期: Maven通过一组预定义的构建生命周期来管理项目的构建过程。最常用的生命周期有三个: clean: 清理项目的输出目录。 default: 执行项目的构建过程,包括编译、测试、打包等。 site: 生成项目的文档。 每个生命周期由多个阶段组成,Maven会按照一定的顺序执行这些阶段。 插件和目标: Maven通过插件来扩展功能,每个插件包含若干个目标(goals)。比如,编译Java代码的插件是maven-compiler-plugin,它的目标是compile。 依赖管理: Maven使用POM文件(pom.xml)来管理项目的依赖、构建配置等信息。每个依赖都由以下几部分定义: Group ID: 依赖所属的组。 Artifact ID: 依赖的唯一标识符。 Version: 依赖的版本。 仓库: Maven通过仓库来存储和获取依赖项。可以是本地仓库、中央仓库或私有仓库。 2....
