- 博客(71)
- 收藏
- 关注
原创 SpringBoot集成RabbitMQ
SpringBoot 集成 RabbitMQ1 引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2 发送消息最简单的发送消息,使用 RabbitTemplate 的 convertAndSend() 方法即可,不过
2022-05-23 21:38:49 267 1
原创 ReentrantLock加锁原理
ReentrantLock原理学习ReentrantLock 实际上是基于 AbstractQueuedSynchronizer实现的可重入锁。在阅读了美团技术博客的相关文章后,对 ReentrantLock 以及 AQS 有了更深入的理解,这里梳理自己的思路,记录自己的学习经验。AQS 简要原理核心为由 volatile 修饰的 int 变量 state 和 CLH 等待队列state 变量用来维护状态,一般非共享锁用0表示空闲,1表示已被占有,若已被占有时还有线程来请求,则加入 CLH 等待队列
2022-04-13 10:31:31 499
原创 SpringBoot集成Redis缓存
SpringBoot 集成 Redis 缓存查询操作是应用中最常见的操作,如果每次查询都从 MySQL 中查询则会影响效率,通常需要引入缓存来实现查询性能的优化。缓存可以选择本地缓存,远程缓存或本地缓存结合远程缓存。本地缓存可以使用 Guava 或 Caffeine 提供的解决方案,而远程缓存则可以选择 Redis 这样的内存数据库。本文记录一下 SpringBoot 集成 Redis 做缓存的相关配置。1 引入依赖引入相应 Starter。<dependency> <gr
2022-04-10 00:02:39 1177
原创 Nginx负载均衡
分布式计算第一次作业实验报告本次实验重现了课上演示的基于Nginx的负载均衡实验,学习了Nginx负载均衡策略的原理,相关配置,并进行了实机操作。1 Nginx安装环境: Ubuntu 20.04这里采用自己编译的方式安装Nginx,具体步骤如下:从官网(http://nginx.org/en/download.html)下载相应压缩包nginx-1.20.2 .tar.gz,使用tar -xvf命令解压放到 /usr/local目录下。进入解压后目录,运行如下命令:./configu
2022-01-17 23:08:42 1942
原创 java代理
JAVA的三种代理学习1 什么是代理代理(Proxy)是一种设计模式,定义:为其他对象提供一个代理以控制对某个对象的访问,即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2 JAVA中的三种代理2.1 静态代理代理对象与被代理对象需要继承共同父类或实现相同接口,特点是代理类在编译期就已经确定,即编译器就已经存在它的class文件。代码实例创建一个接口,代理类和被代理类要实现该接口。public interface He
2021-12-13 17:29:06 270
原创 Mysql锁学习
Mysql锁学习InnoDB锁机制学习数据库中“lock”和“latch”都被称为锁,这里仅简要记录对“lock”的学习。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AAngrV0V-1635499550488)(F:\Typora笔记\图片\lock-lantch.png)]锁的类型InnoDB实现了以下两种标准的锁。共享锁(S lock):允许事务读一行数据。排他锁(X lock): 允许事务删除或更新一行数据。兼容性:XSX
2021-10-29 17:26:36 143
原创 点播直播弹幕实现2
直播弹幕实现简要说明之前实现了点播弹幕实现,在之前基础上利用WebSocket长连接实现了直播弹幕,具体采用websocket+stomp,而SpringBoot对着两者有着非常好的支持。使用技术前端:…(之前的),sockjs(尝试建立websocket连接,如果客户端不支持退化为轮询或长连接),webstomp-client(建立基于stomp协议的连接)。后端: SpringBoot.后端使用了SpringBoot一套实现,另外的话还想用底层基于Netty的一套异步实现,不过不是裸Nett
2021-10-17 16:40:01 390
原创 点播直播弹幕实现1
点播弹幕实现后端仓库简要说明之前突然觉得弹幕视频还挺有意思的,就想自己也实现点播弹幕和直播弹幕。由于是主学后端的,对于自己手动实现前端的弹幕功能感到困难,于是上网搜索有没有相关实现,首先找到了** CommentCoreLibrary**项目,不过貌似只能全局script导入,没有实现相应模块化,而我前端用的是vue3+ts,用起来感觉很难受,遂放弃。又经过一番搜寻,找到了 **DPlayer**项目,看了它的文档,正如它开头的一句???? Wow, such a lovely HTML5 danma
2021-10-17 16:39:29 652
原创 quarkus初试
Quarkus初试Quarkus是什么引用Red Hat官网的话Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。看它的简介,它支持现有常用的java标准,库,框架,另外还支持GraalVM用于进行原生编译。接下来就记录跟着官网的get started在windows操作系统初次尝试Quarkus的过程。第一个Quarkus程序
2021-10-09 12:52:10 1255
原创 Spring Security+JWT学习笔记
Spring Security + JWT 认证学习JWT是什么Spring Security文档youtobe上的一个教学视频知乎上一篇Spring Security+JWT之前学习认证授权相关知识,先了解学习了shiro,最近在学习Spring Security,同时了解到分布式认证方式JWT,所以尝试结合两者写一段demo,算是同时加深对两者的理解和认识。JWT工具类封装JwtUtils.public final class JwtUtils { private fina
2021-09-06 23:28:23 167
原创 C++内存模型和名称空间学习摘要
C++内存模型和名称空间参考书籍:C++ Primer Plus现在是学java的,c++只用过c部分和stl写算法,不过学校面向对象设计要用C++,看书时发现C++中的static和java中含义相差很多,做一下学习记录。单独编译头文件用于包含结构声明和使用这些结构的函数原型。头文件中常包含的内容:函数原型。#define或const声明的常量结构声明,类声明。模板声明内联函数示例头文件://my_head.h#ifndef MY_HEAD_#define MY_HEA
2021-09-01 21:34:59 108
原创 java内部类
JAVA内部类非静态内部类变量内部类中可以调用外部类中非静态变量,若存在同名变量默认调用内部类中变量,使用同名外部类变量:Outer(外部类名).this.xxx.方法内部类中可以调用外部类中非静态方法,同名方法处理同同名变量处理。使用依赖于外部对象,需要先创建外部类。Inner inner = new Outer().new Inner();权限和正常一样,default默认只有本类和本包中可以使用,private只有本类中可以使用,public都可以使用,protected本包和子
2021-08-22 10:32:06 111
原创 java项目学习(一)
Java项目学习(一)idea环境搭建Spring Initializr通过spring Initializr创建spring项目,可以大大简化创建项目流程。观察pom文件可以发现,项目的父项目是: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&g
2021-08-15 10:34:54 215
原创 练习记录(dfs序)
DFS序的练习来源牛客每日一题选点根据根右左的遍历顺序的到dfs序,再求lis即为可以选到的最多点。Colorful Tree利用dfs序维护每种颜色的树,大佬博客需要注意的是当只能取同一边的两个点时,要取dfs序差值最大的两个点,可以想出反例,但不会证明。#include<bits/stdc++.h>using namespace std;const int maxn =1e5+5;int head[maxn];struct edge{ int to,nxt; e
2020-12-09 23:53:35 182
原创 练习记录(高斯消元,kmp,dp)
UVA1358题目实际本题还有更好的dp做法,之后再学习一下。不过正好学了高斯消元,就练习一下。设F[i]F[i]F[i]为已匹配了前i为字符,得到期望字符串还需要补上字符串的长度的期望值。显然,F[m]=0.F[m]=0.F[m]=0.F[i]=∑F[j]/n+1,0=<i<mF[i]=\sum{F[j]}/n+1,0=<i<mF[i]=∑F[j]/n+1,0=<i<m,j是枚举加上的字符后转移到的状态,这个状态值可以由前缀函数推得。根据全期望公式,就可以得到该公
2020-12-05 23:49:56 141
原创 练习记录
虚树对于多组询问,且每组询问都包含树上一些不同的点的查询的树上问题可能会用到虚树。虚树的建立学习链接void add(int s){ if(!c) { vtree[++c] = s; return; } int f = query(pre[s],pre[vtree[c]]); while((c>1)&&pre[f]<pre[vtree[c-1]]) { add_edg
2020-12-02 12:35:57 144
原创 第六课 字体和背景
字体和背景字体/*font-face可以将服务器中的字体直接提供给用户去使用问题:1.加载速度2.版权3.字体格式*/@font-face {/* 指定字体的名字 */font-family:‘myfont’ ;/* 服务器中字体的路径 */src: url(’./font/ZCOOLKuaiLe-Regular.ttf’) format(“truetype”);}p{
2020-12-02 12:16:38 199
原创 第五课 定位
定位相对定位 /* 定位(position) - 定位是一种更加高级的布局手段 - 通过定位可以将元素摆放到页面的任意位置 - 使用position属性来设置定位 可选值: static 默认值,元素是静止的没有开启定位
2020-12-02 12:16:22 100
原创 组合数学入门
组合数学入门卡特兰数以下摘自OI-wiki: 一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数? 对角线不相交的情况下,将一个凸多边形区域分成三角形区域的方法数? n个结点可构造多少个不同的二叉树? ...通项公式\textbf通项公式通项公式 H(n)=(2nn)
2020-11-23 12:22:14 327
原创 最小直径生成树
最小直径生成树其实就是找树的绝对中心(到其他节点的最大距离最小,可证直径为绝对中心到其他节点最远距离乘2,也就是说直径两端点到绝对中心距离相等,且绝对中心可能在边上)。求绝对中心 枚举边,假设绝对中心在该边(u,v)上,边长L,设其到u的距离为x,则直径的1/2应为max(d[u][i]+x,d[v][i]+L−x)max(d[u][i]+x,d[v][i]+L-x)max(d[u][i]+x,d[v][i]+L−x),其图像如下(盗的图),要与max所以图像为实现部分,那么我们要找的值就是最低点所
2020-11-23 12:13:03 581
原创 无旋Treap学习
无旋Treap学习核心操作split:void split(int rt, int & a, int & b, int sz) //按size分{ if (rt == 0) { a = b = 0; return; } flip(rt); if (tree[tree[rt].lc].sz <= sz-1) { a = rt; split(tree[rt].rc, tre
2020-11-23 12:10:01 159
原创 前缀函数,AC自动机
前缀函数,AC自动机洛谷p2375前缀函数的应用。题目大意:我们都知道前缀函数,但现在要求求出一个更强大num数组一一对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。 其实只要找出最长符合要求前缀即可,更短的一定是最长符合要求前缀的前缀,推前缀函数时求一个“前缀”和就好(即累加到最长前缀上)。如何求最长不重合既是前缀又是后缀的串呢?前缀函数求的会包含重合的,想一想最开始重合那个过程,在i-1的位置如i=7,在i=6的位
2020-11-23 12:09:30 461
原创 点分治模板题
洛谷模板题利用点分治复杂度约为nlogn,再加上其他操作的复杂度。总结一下:1. 每次找子树的重心作根递归进行。2. 注意各种标记vis标记回溯时需去掉。#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;//加找重心struct edge{ int to,next,w; edge(int to=0,int next=0,int w=0):to(to),next(next),w(w){}
2020-11-23 12:08:38 87
原创 第四课 float和高度塌陷
CSS布局浮动float:通过浮动可以使一个元素在其父元素内左右移动属性值:right,left,none;注意:元素设定浮动后,大小等式不再满足,元素会从文档流中脱离,下面的元素补上。 /* 通过浮动可以使一个元素向其父元素的左侧或右侧移动 使用 float 属性来设置于元素的浮动 可选值: no
2020-11-23 12:03:29 77
原创 第三课 css样式的学习
CSS样式的学习文档流网页是一个多层结构,文档流就是一个网页的最底层,是网页的基础,我们创建的元素默认在文档流上。元素在文档流上有什么特点块元素:独占一行默认宽度是父元素的全部默认高度由内容撑开,子元素决定行内元素不会独占一行,自左向右水平排列如果一行中无法容纳所有行内元素,自动换至下一行排列长度和宽度默认由内容撑开盒子模型 具体不细记录设置边框,至少设置3个样式边框的宽度:border-width -可以用来指定四个方向的宽度,四个值 上 右 下 左,例如
2020-11-23 12:02:59 122
原创 第二课 css选择器
尚硅谷html和css学习第二部分CSS基本语法注释 ‘/* */’选择器和声明块选择器常用选择器元素选择器:语法:标签名+{} 例如:p{},h1{}id选择器:语法:#id属性值{} 例如:#leader{}利用class属性,类似于id属性,但可以重复。class选择器:语法:.class属性值{} 例如:.leader{}可以为一个元素指定多个class,相较于id,class用的较多通配选择器:语法:*{}
2020-11-23 12:02:37 102
原创 第一课 常用标签
尚硅谷HTML学习第一天实体再HTML中特殊符号要用实体来表示,其格式为: &实体名;,如小于号<用& lt;来表示。meta标签指定网页的一些元数据,常见元数据:charset:指定网页字符集 ,name 指定的数据名称, content: 指定的数据的内容。 如: <!--网站描述,在搜索引擎中显示--><meta name="description" content="京东JD.COM-专业的综合网上购物商城,销售家电、数
2020-11-23 12:01:42 121
原创 练习dsu on tree
题目注意点‘:1. 1~1e5每个数最多因子数不超过1002.dsu on tree标准步骤:1.找好重儿子2. dfs先处理轻儿子,在处理重儿子,保留重儿子的数据,在遍历轻儿子及后代得到相关信息。3. 如若当前点为轻儿子删除该点及后代的影响。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct edge{ int to,next,w; edge(int to=0,int
2020-08-25 17:21:56 110
原创 斜率dp入门
[HNOI]玩具装箱算是斜率dp的入门题吧,记录一下自己的学习心得。S[]处理前缀和,可得状态转移方程F[i]=F[j]+(S[i]−S[j]+i−j−1−L)2,0<=j<iF[i]=F[j]+(S[i]-S[j]+i-j-1-L)^2,0<=j<iF[i]=F[j]+(S[i]−S[j]+i−j−1−L)2,0<=j<i换元简化a=S[i]+i,b=S[j]+j+L+1a=S[i]+i,b=S[j]+j+L+1a=S[i]+i,b=S[j]+j+L+1 可得F[
2020-08-25 11:40:31 163
原创 练习记录:可持久化权值线段树
链接通过可持久化建n棵权值线段树,因为最小未出现自然数一定小于数列长度所以权值线段树长度为2e5+1即可,储存每个数最后出现的位置,每次查询l,r,即查询第r棵线段树第一个出现位置小于l的数即可,为了查询还需要保存区间最小值,查询时最小值小于l就往哪边继续查。总结一下:1可持久化。2利用线段树可查询第一个权值小于k的数。#include<bits/stdc++.h>using namespace std;const int maxn=2e5+5;struct node{ i
2020-08-18 09:46:18 95
原创 前缀函数学习
前缀函数在oi-wiki上学习了前缀函数,自己也总结一下。定义:pi[i]=max(j),s[0..j]=s[i−j+1,i]pi[i]=max(j),s[0..j]=s[i-j+1,i]pi[i]=max(j),s[0..j]=s[i−j+1,i]O(n)计算方法:#include<bits/stdc++.h>using namespace std;const int maxn=1e5;int p[maxn];char s[maxn];void getpi(int n){
2020-08-11 09:38:31 465
原创 多项式算法学习记录
多项式单纯记录一下拉格朗日插值大佬博客链接f(k)=∑i=0nyi∏i≠jk−x[j]x[i]−x[j]f(k) = \sum_{i = 0}^{n} y_i \prod_{i \not = j} \frac{k - x[j]}{x[i] - x[j]}f(k)=i=0∑nyii=j∏x[i]−x[j]k−x[j]普通拉格朗日插值代码如下ll x[maxn],y[maxn];ll solve(int n,ll k){ ll ans=0; for(int
2020-07-23 20:30:10 125
原创 练习纪录(网络流)
uva1658利用了分点法,如果直接跑流量为2最小费用流,有可能出现某个点出现两次,所以把2~v-1分为两个点中间连一条容量为1,费用为0的边,实操时可用2i,2i+1代替i点一个连入的边,一个连出的边。另外紫书上提示这是解决节点容量问题的通法,需要注意。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2000+7;const int inf=1e9;struct edge
2020-07-06 16:04:10 99
原创 练习记录(网络流入门)
uva11082没有想法,看了紫书的解析。先把矩阵每一个元素-1,这样每个元素取值范围变为0~19,这样就允许了0流量的存在。把所有行的和x1,x2…xr,列的和y1,y2,…yc看为节点源点于所有行和节点相连,容量为x[i]-c;列和节点于汇点相连,容量为y[i]-r;每个x节点在与所有y节点相连,容量为19,跑最大流。则xi于yj边的流量变为 A[i][j]-1.可以这样理解每一行的和可以由不同列的元素构成,只要与源点和汇点相连的边都满载,即说明在满足行和列和一定的条件下有解。#include<
2020-07-05 21:05:48 198
原创 练习记录(权值线段树or set)
牛客练习赛的一道题目 先想到一个思路,对于一个固定的左端点,右边第一个比他大的数下标为i,第二个为j,则右端点必然在[i,j-1]之间,同时对于每一个右端点满足要求的左端点也在一个区间中,还需要检查固定的左端点是否在该区间中。直接检查的话会超时,可以检索每个点为右端点,对应的区间中有多少成立的左端点转化为区间和问题,可用树状数组解决。而某个点A作为左端点成立时仅在右端点为[i,j-1]是成立,只需要在枚举到以i为右端点时将A激活(即树状数组add(A,1)),在枚举j时再消除他的影响即可。#includ
2020-07-01 20:31:19 156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人