自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 redis 优惠券秒杀逐步优化

根据redis set nx实现分布式锁,防止同一用户多次请求引起的多个线程同时下单,同时保证分布式系统下也不能同时下单,根据用户创建唯一key,然后进行加锁,设置锁过期时间,防止运行过程中出现意外错误导致的死锁问题,释放锁的时候也添加的判断逻辑,判断是否释放的是当前线程加的锁,只有当前线程添加的锁才会被释放,由于判断从redis中获取判断结果和在java当前线程下判断结果的非原子性,使用lua脚本解决释放锁的时候出现的并发安全问题,保证原子性。内存溢出阻塞队列内存限制,数据安全问题,丢失任务。

2023-01-22 17:53:55 957 1

原创 21 间隙锁加锁规则

间隙锁加锁规则,注意临键锁是间隙锁和行锁的总称,实际上临键锁就是行锁加间隙锁,实际上是先加间隙锁,再加行锁,这两个是分开独立的。lock in share mode想要保证搜索的数据不被修改,必须避免覆盖索引,锁是加在索引上的,只有被访问到的索引才会加锁。2.普通索引等值查询,最后一个不满足的,临键锁退化为间隙锁。其实读提交隔离级别在外键场景下还是有间隙锁,相对比较复杂,1.唯一索引的范围查询会查询到第一个不满足条件的值为止。1.等值查询的时候,给唯一索引加锁退化为行锁。两个原则,两个优化,一个bug。

2023-01-22 17:49:05 1831

原创 22 mysql临时提升性能的方法

1. 上线前,在测试环境,把慢查询日志(slowlog)打开,并且把long_query_time设置成0,确保每个语句都会被记录入慢查询日志;3. 观察慢查询日志里每类语句的输出,特别留意Rows_examined字段是否与预期一致。解决2 如果是sql语句有问题,使用query_write重写sql语句。直接使用在备库中使用alter table,要关闭bin_log日志。解决1 如果在高峰期mysql数据库已经被慢查询打挂了。2. 在测试表里插入模拟线上的数据,做一遍回归测试;

2023-01-22 17:44:57 951 1

原创 Java多线程详解

1线程的创建和启动1.1thread类创建线程类package ThreadLearnDemo01;public class FirstThread extends Thread{ private int i; public void run(){ for(;i<100;i++) { System.out.println(this.getName()+" "+i); } } public

2022-05-09 20:47:16 605

原创 狂神mysql快速入门笔记

2022-04-29 21:04:39 1123

原创 抽象abstract和接口详解

1什么是抽象(abstract)?​在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Jav

2022-04-25 19:32:07 737 2

原创 java多态详解

什么是多态?​ 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用变量调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。java

2022-04-25 17:45:41 184

原创 java继承详解

1继承的最基本实现package ExtendLearn;class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name=name; } public int getAge() {

2022-04-25 11:48:15 624 1

原创 狂神JavaScript快速入门学习笔记

1什么是JavaScriptJavaScript是一门世界上最流行的脚本语言2快速入门2.1 引入JavaScript1 内部标签 <script> alert('hello world'); </script>2外部标签<script src="kkk.js"></script>2.2 基本语法入门2.2.1定义变量一切变量定义都是var,局部变量建议使用let定义不加var就是全局变量‘use str

2022-04-22 21:01:17 1004

原创 UVA 10129 Play On Words 一道题同时学会欧拉回路和并查集

​​这道题是一道学习并查集和欧拉回路的好题。也可以用另外的dfs+建图的方式,不过不如并查集好用,强烈推荐学习一下并查集,很优美的一个数据结构,后面有时间可能也会写一写这种算法笔记,先引用一下别人的文章可以先借助这篇文章了解一下欧拉回路欧拉回路然后并查集的知识可以借助这一篇并查集然后这道题可以把每一个单词看成一条有向边,然后统计出度入度,统计连通集内点的个数,然后判断入度出度是否符合,然后判断是否所有点在同一连通集内部,得出答案即可。最后说一下我踩得坑,又把=写成了==,debug了得20分

2022-04-19 19:52:06 246

原创 深入理解计算机系统(csapp) 第二章信息的表示和处理练习题答案

第二章信息的表示和处理git仓库1.这道题一定不要偷懒啊,我做这题的时候就是第一位1,第二位2,第三位4,第四位8,然后累加。2.这道题可以找规律可以推导出公式最高位 2n%42^{n\%4}2n%4,然后后面跟 n/4n/4n/4 个0推导就是每次进1位需要242^424,然后递推总结出公式3# include<stdio.h>int main(){ int a[10]; int i=0; while(scanf("%d",&a[i]))

2022-04-17 14:17:40 7317 4

原创 深入理解计算机系统(csapp) 第二章信息的表示和处理

第一部分 程序结构和执行gitee仓库练习题答案这一部分等全写完再补上第一章 信息的表示和处理2.1信息的存储机器级程序将存储器视为一个非常大的字节数组,成为虚拟存储器。每个字节都有唯一的数字标识,称为地址。2.1.1 十六进制表示法2.1.2 字字长决定虚拟地址空间的大小,大小为0-2n−12^{n-1}2n−1 n是代表位数,我们常说的32位操作系统64位操作系统的内存最大就是2n−12^{n-1}2n−1,也就是4GB和8GB。2.1.3 数据大小2.1.4 寻址和字节顺序

2022-04-17 14:17:19 2053

原创 css基础

css学习1.第一个css程序入门<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> h1{ color:red; } </style></head><body>

2022-04-17 14:16:25 216

原创 html基础

一.基本结构注释格式:<!-- --><!DOCTYPE html> //表示使用什么规范<html lang="en"><head> //head代表头部 <meta charset="UTF-8"> //meta用来描述,描述性标签 <title>Title</title> //title表示什么标题</head><body></body></h

2022-04-15 19:45:12 534

原创 大一下阶段总结及对下个学习计划展望

为什么会在这时候做总结呢,其实放寒假的时候就想总结一下了,但那时候感觉自己真的啥也没学会,大一上半学期我听说学校acm队找人但需要紫书刷够100题,当时信心满满,这学期搞完这本书不成问题吧。但后来发现当时太天真了,紫书的难度设置是很不合理的,让一个刚会c基本使用和c++容器的上来就搞world final和区域赛的题,虽然这些都是老题而且比现在的要简单不少,但对新手来说是真的困难。更恐怖的是前面会有大模拟题,而且当时我就是硬看代码,从代码看别人的思路,因为网上找的博客和题解感觉很多都是不明所以,完全把握

2022-04-11 20:54:03 314 2

原创 深入理解计算机系统(csapp)第一章计算机系统漫游

第一章 计算机系统漫游1.1信息就是位加上下文对于计算机来说所有文件都是由01来存储的,区分文件的唯一标准是文件的上下文,而我们平时写的内容会经由ASCLL转化为01存储在计算机中,就像这篇文章,在计算机眼中也是01字符。...

2022-04-10 18:10:27 1558

原创 AcWing 2005. 马蹄铁题解

题目描述尽管奶牛贝茜发现每个平衡括号字符串都很美观,但她特别喜欢被她称为“完全”平衡的括号字符串----一个由 ( 构成的字符串后接一个长度相同的 ) 构成的字符串。例如:(((())))有一天,当贝茜穿过牛棚时,她发现地面上有一个 N×N 的马蹄铁矩阵。每个马蹄铁的方向都看上去像 ( 或 )。从矩阵的左上角开始,贝茜希望四处走动以拾起马蹄铁,使得她捡起的马蹄铁按顺序构成的括号字符串是完全平衡的。请计算她能得到的最长完全平衡括号字符串的长度。每一步中,贝茜可以沿上下左右四个方向移

2022-01-16 12:06:38 224

原创 05-树7 堆中的路径 (25 分)

# include<iostream># include<algorithm># include<stack>using namespace std;struct Pile{ int a[2000]; int size; int maxsize;}pile;void insert(int x,Pile *pile){ pile->a[pile->size++] = x; int num = pile->size-1; for.

2021-12-04 12:44:16 194

原创 04-树6 Complete Binary Search Tree (30 分)

# include<iostream># include<vector># include<algorithm># include<cmath>using namespace std;vector<int>a, b;void solve(int first,int end,int item){ if (first > end) { return; } int N = end - first+1; int h = .

2021-12-04 12:43:26 368

原创 04-树5 Root of AVL Tree (25 分)

# include<iostream>using namespace std;typedef struct ntree{ int val; ntree* left; ntree* right;}*tree;tree rightright(tree pnode){ tree t = pnode->left; pnode->left=t->right; t->right = pnode; return t;}tree leftleft(tr.

2021-12-04 12:42:41 183

原创 04-树4 是否同一棵二叉搜索树 (25 分)

# include<stdio.h># include<malloc.h>typedef struct TreeNode{ int flag = 0; int data; TreeNode* left; TreeNode* right;}*tree;tree insert(tree Pnode, int x);tree newtreenode(int x);int check_flag(tree Pnode, int x);void deletetree.

2021-12-04 12:41:47 342

原创 03-树2 List Leaves (25 分)

# include<stdio.h># include<queue>using namespace std;struct tree{ int number; int left; int right;}t[11];int n;int a[10];int inputtree(){ char le,ri; scanf("%d", &n); for (int i = 0; i < n; i++) { getchar(); scanf(.

2021-12-04 12:35:00 629

原创 02-线性结构4 Pop Sequence (25 分)

# include<iostream># include<stack># include<vector>using namespace std;int main(void){ int maxn, number, kase; scanf("%d %d %d", &maxn, &number, &kase); while (kase--) { stack<int>st; vector<int>v; .

2021-12-04 12:33:41 76

原创 02-线性结构3 Reversing Linked List (25 分)

# include<iostream>using namespace std;int a[100005];int b[100005];int data1[100005];int main(void){ int p0, num, x; scanf("%d %d %d", &p0, &num, &x); for (int i = 0; i < num; i++) { int node, data0, next; scanf("%d %d %.

2021-12-04 12:32:42 488

原创 02-线性结构2 一元多项式的乘法与加法运算 (20 分)

#include <stdio.h>#include <stdlib.h>typedef struct LNode { int data; int expo; struct LNode* next;} LNode, * Linklist;Linklist Read(void);Linklist Attach(Linklist L1, LNode* r);Linklist Sum(Linklist L1, Linklist L2);Linklis...

2021-12-04 12:30:52 560

原创 01-复杂度2 Maximum Subsequence Sum (25 分)

#include <iostream>#include <vector>using namespace std;int main() {int n;scanf("%d", &n);vector<int> v(n);int leftindex = 0, rightindex = n - 1, sum = -1, temp = 0, tempindex = 0;for (int i = 0; i < n; i++) {scanf("...

2021-12-04 12:30:09 84

原创 01-复杂度1 最大子列和问题 (20 分)

# include<iostream>using namespace std;int a[100000+10];int MaxUbseqSum(int A[],int N){ int ThisSum, maxsum; int i; ThisSum = maxsum = 0; for (int i = 0;i < N;i++) { ThisSum += A[i]; if (ThisSum > maxsum)...

2021-12-04 12:29:27 430

原创 06-图2 Saving James Bond - Easy Version (25 分)

# include<iostream> using namespace std; struct crocodile { int x; int y; }cro[110]; int a[110]; int firstjump(int i,double m) { if ((cro[i].x * cro[i].x + cro[i].y * cro[i].y) <= (m + 7.5) * (m + 7.5)) { return 1; } else..

2021-12-01 17:44:48 85

原创 03-树3 Tree Traversals Again

//因为以前接触的分治递归比较少,所以每个递归程序都需要好好看,好好理解很长时间才能完全看懂并自己写出来,慢慢学吧,这种递归方式感觉比较好,还有用数组进行递归实现的,比较麻烦# include<stdio.h># include<string.h># include<iostream># include<vector># include<stack>using namespace std;vector<int>fir,.

2021-11-22 23:18:38 184

原创 03-树3 Tree Traversals Again (25 分)

这个题算是02的简化版,会了02这个题写起来很轻松,下面附上ac代码# include<stdio.h># include<queue>using namespace std;struct tree{ int number; int left; int right;}t[11];int n;int a[10];int inputtree(){ char le,ri; scanf("%d", &n); for (int i = 0; i &

2021-11-22 16:33:45 160

原创 03-树1 树的同构 (25 分)

浙江大学数据结构我觉得非常典型的一道题,这道题有助于我们深入了解递归怎样使用,想了很久终于想出了如何写出这个递归程序的思路,附在注释中,# include<iostream># include<string.h>using namespace std;struct tree{ char alphaber; int left; int right;}t1[11],t2[11];int a1[11];//用于找出根节点//输入函数int input_tre

2021-11-21 19:53:06 732

原创 1003 pta乙级(我要通过)

/*pta甲乙上的题感觉都很巧妙,这个题最大的问题在于读题,最核心的公式是(t-p-1)*(p)==(x.length()-t-1),中间(多余的)*前面=后面这段代码不难理解,但用map容器统计字母的思路非常值得学习,非常巧妙*/# include<iostream># include<string># include<map>using namespace std;int main(void){ int n,t=0,p=0; cin ...

2021-11-17 18:06:54 208

原创 1007 Maximum Subsequence Sum pta甲级题目(beautiful解)

/*这种代码就给我一种很巧妙的感觉,从这些代码中能学到很多,将sum初始值赋为-1,看数列中是否存在0;将rightindex变为n-1,方便最后的输出这两点是我没有想出来的,导致程序一直存在几个样例过不去直接把题解上的代码传上来了,这道题能学到很多细节处理方面的东西/*这种代码就给我一种很巧妙的感觉,从这些代码中能学到很多,将sum初始值赋为-1,看数列中是否存在0;将rightindex变为n-1,方便最后的输出这两点是我没有想出来的*/#include <ios

2021-11-17 18:00:34 274

原创 UVA1591 data mining

想要真正理解这个题的本质真的很难,但可以根据题目中给出的公式进行把代码写出来/*看了很多题解,对于此题中的公式暂未真正了解其含义,此题就是提取出题目中的公式,利用公式算出最优的的K,以及最小的A和B*/#include <iostream>using namespace std;int main(){ long long n, sp, sq;//定义long long 防止溢出 long long minK, minA, minB, A, B; while (cin

2021-11-15 16:55:42 936

原创 UVA815紫书例题FLOOD

这个题思路还是比较好想的,1主要是输出坑了我一段时间,2在使用sort函数的时候没有注意自己是从1开始计数的时候也出现了bug。# include<iostream># include<algorithm># include<string.h>using namespace std;int a[10000];int main(void){ int m, n; double flood; int high; int kase = 0; w

2021-11-15 11:42:34 607

原创 uva 230紫书图书管理系统(已ac)

/*2021年11月14日16:27:32使用set和map,set记录书籍,并通过运算符重载对set中的数据进行排序,map记录书籍状态应该是比较常用的模拟算法注意其中学习到的知识点substr截取,struct结构体中的运算符重载,通过图记录状态,set记录并且遍历书籍*/# include<iostream># include<map># include<set># include<algorithm># include <.

2021-11-14 17:39:09 999

原创 uva10763习题5-4

用multiset进行存储,可以包涵重复数据# include<iostream># include<set>using namespace std;int main(void){ int n; while ((cin >> n) && n != 0) { multiset<int>a; multiset<int>b; while (n--)...

2021-11-13 09:05:46 211

原创 uva 10763习题5-4

用一个multiset轻松解决# include<iostream># include<set>using namespace std;int main(void){ int n; while ((cin >> n) && n != 0) { multiset<int>a; multiset<int>b; while (n--) {...

2021-11-13 09:04:10 367

原创 uva221紫书

字母都是比着紫书写的,方便进行查阅。这道题debug了很久,最后是函数for循环搞错了,把return ture也纳入了for循环而且默认了b中的数据是int型,浪费了很多时间//一个重要的思想,讲题目中所给的数据离散化,我暂且理解其为将不固定的题目中给出的数据//通过自己的操作无论出现什么情况,都将其转化为能够被记录的数据//此题就是将题目中给出的数据进行区间标记# include<iostream># include<algorithm>using nam

2021-11-11 20:36:32 59

原创 紫书uva 814传输代理的交互

# include<iostream># include<map># include<set># include<string># include<vector>using namespace std;void parse_add(const string& s, string& user, string& mta)//对数据进行处理的函数{ int k = s.find('@'); user ...

2021-11-10 19:26:30 83

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除