快读快输模板
快读快输
Java快输模板:
123456789101112131415static class Reader{ static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tokenizer = new StringTokenizer(""); public static String next() throws IOException { while(!tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(reader.readLine()); } return tokenizer.nextToken(); } public static int nextInt() throws NumberFormatException, IOException { return Integer.parseInt(next()); }}
Java快读模板:
...
链式向前星
链式向前星
说明:
如果说邻接表是不好写但效率好,邻接矩阵是好写但效率低的话,前向星就是一个相对中庸的数据结构。前向星固然好写,但效率并不高。而在优化为链式前向星后,效率也得到了较大的提升。虽然说,世界上对链式前向星的使用并不是很广泛,但在不愿意写复杂的邻接表的情况下,链式前向星也是一个很优秀的数据结构。
我们先展示代码再做具体讲解,链式向前星的结构模板代码如下:
123456789struct Edge{ //表示边 int w;int to; int next;}edge[10005]; int cnt=0; //用以控制并统计边的数量 int head[10005]; //表示来源的边序号
具体的解释为:
Edge表示边,这个结构体数组将逐步记录边信息,其中包含有三个元素
w为权重即边之间的权值,下图中为默认的1,不演示
to表示为第i条边指向哪一个结点
edge[i].next表示第i条边的下一条边的序号
cnt表示边的数量,在输入时利用他逐个+1
head表示第x个结点所需要访问的边
同样的我们以这个结构的 ...
Git相关操作
理解工作区和暂存区的区别?
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
常用指令
设置git用户名和邮箱标识
1git config --global user.name "用户名"
1git config --global user.email "你所想绑定的邮箱"
查看当前git用户信息
12git config user.name #查看用户名称 git config user.email #查看用户邮箱
初始化仓库
1git ...
Native-image技术与应用
Native-image技术与应用
1. 背景相关
作为一个程序员,总是会在工作的时候开发一些方便自己工作的程序,但是作为一个Java程序员,给自己或者朋友开发的办公小程序总是使用一个Jar包并不是一个很好的体验,主要是:
启动不方便
需要Java环境
有时候打出来的Jar比较大,不便于分享传输
但是现在有了GraalVM,让这些都不是问题了,直接生成可执行程序,丢哪哪就能用
2. GraalVM
GraalVM是一款高性能的虚拟机,它能够直接将Java程序编译成本地可执行文件,可以在不安装JVM的情况下运行程序。当然了它的特性远不止这些,比如支持多语言,更低的内存占用等等,但这些并不是这篇博客所涉及的,有兴趣可以去他们的官网里了解一下。
3.安装GraalVM JDK
下载界面:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.1
这里用到的是Java 17版本:
下载完成之后,放入你本地的JDK目录,例如:
接着配置变量环境:
通过cmd测试一下看看是否配置环境成功:
安装nati ...
实验室培训指南
培训指南
一、常用便捷软件培训
这个根据情况进行
截图软件使用
Markdown笔记使用
二、问答艺术及Git培训
Git项目管理
三、基础算法培训指南
1、C语言基础语法
1)变量的使用(局部变量、全局变量)
2)++i和i++的区别
3)局部变量和全局变量
4)函数的使用
5)数组的使用
6)指针的使用
7)结构体的使用
2、迭代算法的使用
1)累加
2)斐波拉契数列
3、递归算法的使用
1)递归实现累加
2)递归实现一维数组的查找
3)递归实现二维数组的查找
4、基础数据结构
1)链表的实现
2)栈的实现
3)队列的实现
4)树的实现
5、基础算法
1)贪心算法实现
2)前缀和算法实现(一维前缀和、二维前缀和)
3)差分算法实现(一维差分、二维差分)
4)全排列算法
5)DFS算法实现
6)BFS算法实现(这里教学两种实现方式即可,一个基于栈,一个基于队列,这里学完之后可以看情况布置任务,比如AI贪吃蛇)
7)优先队列实现
8)二分查找算法(整形二分,高精度二分)
9)求最大公约数
10)最小公倍数算法
11)分解质因数
12)求阶乘约数
13) ...
差分
差分
什么是差分:
差分一一种处理数据的巧妙而简单的方法,它应用于区间的修改和询问问题。把给定的数据集A分成多个区间,对这些区间做多次操作,每次操作是对某个区间内的所有元素做相同的加减操作,若一个个地修改区间内的元素,非常耗时。引入差分数组D,当修改某个区间时,只需要修改这个区间的断点,就能记录整个区间的修改,而对端点的修改非常容易,复杂度为O(1)。当所有修改操作结束后,再利用差分数组计算出新的A。
数据A可以是一维线性数组a[]、二维矩阵a[][]、三维立体a[][][]。相应地,定义一维差分数组D[]、二维差分数组D[][]、三维差分数组D[][][]。一维差分容易理解,二维和三维差分需要一点空间想象力。
类似于数学中的求导和积分,差分可以看成前缀和的逆运算。前缀和就是积分、差分就是微分。
差分在写题时候作用:
一般的,差分主要用于让一个序列某一特定范围内的所有值都加上或减去一个常数。
所以差分往往应用于线性的场合,即一维数组的环境,但是除此之外,差分还可以用于二维数组,甚至三维!!!
但是相比一维数组,应用的少。
差分可以简单的看成序列中每个元素与其前一个元素的差。
...
函数、极限、连续
第一章 函数、极限、连续
第一节
第二节
极限存在的准则:
1)夹逼准则:
常用在数列n项和
2)单调有界准则
单调有界数列必有极限。
单调增、有上界的数列必有极限;
单调减、有下界的数列必有极限;
递推关系的数列极限往往可以使用;
第三节
极限概念
∣∣a∣−∣b∣∣<=∣a−b∣||a|-|b||<=|a-b|
∣∣a∣−∣b∣∣<=∣a−b∣
见到e无穷就注意分左右。
见到arctan也要注意分左右。
什么是等价无穷小:
等价无穷小意味着:
limx→0a(x)b(x)=1\lim\limits_{x\rarr0}\frac{a(x)}{b(x)}=1
x→0limb(x)a(x)=1
比如:
a(x)=x2和b(x)=3x2a(x)=x^2 和 b(x)=3x^2
a(x)=x2和b(x)=3x2
这个都是二阶的,但是它们并非等价无穷小,因为等价无穷小意味着:
limx→0a(x)b(x)=1\lim\limits_{x\rarr0}\frac{a(x)}{b(x)}=1
x→0limb(x)a(x)=1
而上面这个例子结果是$$3\neq1$$
这就叫同阶不等价无穷小,因为同阶无穷小包括等价无穷小
无穷小的性质
有限个无穷小的和仍是无穷小。
有限个无穷小的积仍是无穷小。
无穷小量与有界量的积仍是无穷小。
无穷大量
无穷大量的概念,若函数$$f(x)当x\rarr x_0(或x\r ...
RocketMQ学习
RocketMQ学习
1. 定义
中间件(缓存中间件 redis memcache 数据库中间件 mycat canal 消息中间件mq )
面向消息的中间件(message-oriented middleware) MOM能够很好的解决以上的问题。
是指利用高效可靠的消息传递机制进行与平台无关(跨平台)的数据交流,并基于数据通信来进行分布式系统的集成。
通过提供消息传递和消息排队模型在分布式环境下提供应用解耦,弹性伸缩,冗余存储,流量削峰,异步通信,数据同步等
1.1 大致流程
发送者把消息发给消息服务器[MQ],消息服务器把消息存放在若干主题中,在合适的时候,消息服务器会把消息转发给接受者。在这个过程中,发送和接受是异步的,也就是发送无需等待,发送者和接受者的生命周期也没有必然关系在发布pub/订阅sub模式下,也可以完成一对多的通信,可以让一个消息有多个接受者[微信订阅号就是这样的]
2. 为什么用MQ:
1,要做到系统解耦,当新的模块进来时,可以做到代码改动最小; 能够解耦
2,设置流程缓冲池,可以让后端系统按自身吞吐能力进行消费,不被冲垮; 能够削峰,限流
...
MarkDown数学符号收集表
MarkDown数学符号收集表
希腊字母表
符号
代码
符号
代码
α\alphaα
\alpha
A
\Alpha
β
\beta
B
\Beta
γ\gammaγ
\gamma
Γ
\Gamma
δ\deltaδ
\delta
Δ\DeltaΔ
\Delta
ϵ\epsilonϵ
\epsilon
E\EpsilonE
\Epsilon
ζ\zetaζ
\zeta
Z\ZetaZ
\Zeta
η\etaη
\eta
H\EtaH
\Eta
θ\thetaθ
\theta
Θ\ThetaΘ
\Theta
ι\iotaι
\iota
I\IotaI
\Iota
σ\sigmaσ
\sigma
Σ\SigmaΣ
\Sigma
μ\muμ
\mu
M\MuM
\Mu
λ\lambdaλ
\lambda
Λ\LambdaΛ
\Lambda
ω\omegaω
\omega
Ω\OmegaΩ
\Omega
ν\nuν
\nu
N\NuN
\Nu
π\piπ
\pi
Π\PiΠ
\Pi
τ\tauτ
\tau
ζ\ ...