- 博客(50)
- 收藏
- 关注
原创 【数据库】浅入MySQL优化
浅入MySQL优化前言抛开过程谈结果的都是傻叉领导。。在下不会做这种事,先来简单看一遍MySQL的运行机制①、建立连接通过客户端/服务器通信协议与MySQL建立连接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个线程状态来标识这个连接正在做什么。你还记得锁表的时候会去查show processlist;吗?他能查到当前用户正在运行的线程信息。线程状态来自于此②、查询缓存如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句,
2021-12-17 20:22:07
1060
1
原创 【代理】代理模式、JDK动态代理和CGLib动态代理
代理模式、JDK动态代理和CGLib动态代理代理模式生活中最常见的,租房的例子。你需要租房,你要去找出租者。那么谁实现了出租房屋这个功能呢?一般就是房东和中介,都算是出租者。他们都有出租房屋的功能,但是这个功能的最终实现是房子真正的主人房东实现的。而中介,可以在出租房屋这个功能的前后实现自己的功能,比如:/** * 出租者 */public interface Lessors { //出租房屋 void rentHouse();}/** * 房东 */publ
2021-03-19 09:27:00
261
原创 【限流】浅入解析限流基础算法
浅入解析限流基础算法前言针对大型的分布式集群系统,我们优化各项指标,旨在优化API的吞吐量和QPS。但是总归有一个上线,一瞬间的高并发请求如果被API全盘接收,可能会导致本来效率为500的接口不可用,且后续时间内效率也一直不会达到正常值。此时我们针对这种大量的突刺访问,就必须要找到一种解决方法去解决这个问题。这里要讲的“限流”就是为了应对巨大流量的瞬间提交的解决方案。一、计数器算法限流同算法名称一样,就像我们规定,对于A接口,我们一分钟的访问次数不能超过1000个。那么我们就可以在一开始的时候,设
2021-02-09 09:57:40
234
原创 【分布式】逐步理解Redis分布式锁
逐步理解Redis分布式锁一、前言什么是分布式锁:锁我们都知道,在程序中的作用就是同步工具,保证共享资源在同一时刻只能被一个线程访问,Java中的锁我们都很熟悉了,像synchronized 、Lock都是我们经常使用的,但是Java的锁只能保证单机的时候有效,分布式集群环境就无能为力了,这个时候我们就需要用到分布式锁。分布式锁,顾名思义,就是分布式项目开发中用到的锁,可以用来控制分布式系统之间同步访问共享资源分布式锁有以下特性:互斥性:在任何时刻,对于同一条数据,只有一台应用可以获取到分布式
2021-02-02 19:11:53
276
1
原创 【数据库】MySQL的二级索引
MySQL的二级索引一、前言1、需要了解MySQL的索引。2、在MySQL中,创建一张表时会默认为主键创建聚簇索引,B+树将表中所有的数据组织起来,即数据就是索引主键所以在InnoDB里,主键索引也被称为聚簇索引,索引的叶子节点存的是整行数据。而除了聚簇索引以外的所有索引都称为二级索引,二级索引的叶子节点内容是主键的值。二、创建二级索引创建二级索引:CREATE INDEX [index name] ON [table name]([column name]);或者ALTER TABLE
2021-01-22 16:47:11
7046
1
原创 【数据库】MySQL的MVCC(Multi-Version Concurrency Control)多版本并发控制
MySQL的MVCC(Multi-Version Concurrency Control)多版本并发控制一、前言1、MySQL为了保证事务的隔离性,实现数据库的隔离级别,引入了MVCC2、需要了解undo log入门。3、需要了解快照ReadView入门。4、先看下面的MySQL的快照读、当前读。快照读:读取的是记录的可见版本 (有可能是历史版本),不用加锁。简单纯粹的查询操作,属于快照读。如:SELECT * FROM student WHERE id=1;当前读:读取的是记录的最
2021-01-22 14:34:39
319
1
原创 【数据库】MySQL的ReadView
MySQL的ReadView前言1、根据事务的隔离级别,我们已经知道读未提交、读已提交、可重复读、串行化,随着隔离级别的加强,能解决脏写、脏读、不可重复读、幻读的问题。2、InnoDB 是 MySQL(mysql-5.1版本后) 默认的存储引擎,InnoDB 默认的隔离级别就是可重复读。在这个隔离级别下,开启事务之后,多次读写同一行数据,读到的值永远是一致。3、当 MySQL 执行写操作之前,会把即将被修改的数据记录到 undo log 日志里面。MySQL可从 undo log 日志中,读取到原插
2021-01-21 19:26:24
10123
18
原创 【数据库】MySQL中的几种日志
MySQL中的几种日志前言MySQL中有几种日志文件,分别是:redo log 重做日志undo log 回滚日志binlog 二进制日志errorlog 错误日志slow query log 慢查询日志general log 一般查询日志relay log 中继日志按照重点程度,这里简单介绍binlog、redo log和undo log先看一个图,看完文章后可以重新再看看这个图,你也可以自己画并补充的更完整:binlog主从同步数据,一般就是通过它实现的。它是没有MySQ
2021-01-19 16:14:28
836
原创 【网关层】测试APISIX的JWT-AUTH扩展
测试APISIX的JWT-AUTH扩展一、前言1、要入门并使用该扩展插件,需要首先去了解JSON WEB TOKEN(JTW),其一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息。2、除了JWT之外,需要了解APISIX的Consumer模块的使用:对于API网关通常可以用请求域名、客户端IP地址等字段识别到某类请求方,然后进行插件过滤并转发请求到指定上游,但以上描述在实际应用中可能深度不够。如上图,APISIX,可以配置并知道API Consumer(消费方)具体是谁,这样就可以对
2021-01-15 10:21:55
4213
1
原创 【权限】OpenID Connect协议入门
OpenID Connect协议入门一、简介OpenID Connect是基于OAuth 2.0规范的可互操作的身份验证协议。它使用简单的REST/JSON消息流来实现,和之前任何一种身份认证协议相比,开发者可以轻松集成。OpenID Connect允许开发者验证跨网站和应用的用户,而无需拥有管理密码文件。OpenID Connect允许所有类型的客户,包括基于浏览器的JavaScript和本地移动应用程序,启动登录流动和接收可验证断言对登录用户的身份二、基础简单来说,OIDC是一种安全机制,用于
2021-01-15 10:10:37
779
1
原创 【权限】OAuth2入门
什么是OAuth2一、定义OAuth2是开放授权的一个标准,旨在让用户允许第三方应用去访问用户在某服务器中特定的私有资源,而可以不提供在某服务器的账号密码给到第三方应用。OAuth2可以分为四个角色:Resource Owner:资源所有者 类似用户Resource Server:资源服务器 保存/提供用户的私有资源信息的服务器Client:第三方应用客户端 想获取用户私有资源信息的应用Authorication Server:授权服务器,管理前三者的中间层OAuth2解决问题的关键在于使用
2021-01-15 10:07:32
258
1
原创 【网关层】APISIX插件调用C方法开发入门
APISIX插件调用C方法开发入门一、前置知识1、需要了解APISIX的插件开发,即通过lua语言开发APISIX的个性化插件的方法,若不会可自行百度。2、需要了解Lua、Luajit、Lua的ffi3、需要C、C++的Linux环境,保证可以使用GCC、G++编译指令二、入门案例1、新建calcmath.cpp#include <iostream>#include <cmath>#include <stdio.h>//using namespace
2021-01-14 19:25:54
1177
1
原创 【网关层】Nginx C模块开发入门
Nginx C模块开发入门一、前言Nginx本身支持多个模块,如HTTP模块、EVENT模块和MAIL模块,此处只讲HTTP模块Nginx本身工作实际较少,接到HTTP请求时候,仅仅通过查找配置文件将此次请求映射到一个loaction block,而此location中所配置的各个指令则会启动不同的模块去完成工作。因此模块可以看作Nginx真正的劳动工作者。通常一个location中的指令会涉及到一个handler模块和多个filter模块(多个location也可以复用一个模块)。handler模块
2021-01-14 19:22:42
853
原创 【非阻塞】Completefuture以及Guava提供的Future简单例子
Future、JDK1.8后的Completefuture以及Guava提供的Future简单例子一、前言Java 1.5开始,提供Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。当我们需要一个函数方法时,如果这个函数执行的很慢,啊么我们就要进行等待。但有时候,我们并不急着要结果。因此,我们可以让被调用者立即返回,让他再后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在正真需要数据的场合再去尝试获取需要的数据。二、Future一般地,是配合Exe
2021-01-14 19:08:33
2476
原创 【Docker】简单的Docker安装以及部署SpringBoot项目
【Docker】简单的Docker安装以及部署SpringBoot项目前置准备安装Docker官方脚本自动安装手动安装部署准备部署前置准备需要CentOS 7 64位,虚拟机或物理机都可以。参考:安装CentOS7教程需要一个SpringBoot项目,Demo级别即可。了解yum,会简单使用和设置源。配置163yum源会初步使用vi、vim指令,便于编写Dockerfile。安装Docker官方脚本自动安装就像执行了本地的.sh脚本文件,只不过内容在网上请求到。如下:curl -fs
2021-01-14 19:00:05
297
原创 【HDU 1711】Number Sequence(KMP)
Number SequenceTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionGiven two sequences of numbers : a[1], a[2], …… , a[N], and b[1], b[2], …… , b[M] (
2016-08-13 00:12:32
285
原创 【HDU 2222】Keywords Search(AC自动机)
Keywords SearchTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Problem DescriptionIn the modern time, Search engine came into the life of everybody like Google, Bai
2016-08-12 10:06:56
578
原创 【POJ 3461】 Oulipo(KMP)
OulipoTime Limit: 1000MS Memory Limit: 65536KDescriptionThe French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ‘e’. He was a member of the Oulipo group.
2016-08-08 15:38:34
287
原创 【POJ 2001】Shortest Prefixes(字典树)
Shortest PrefixesTime Limit: 1000MS Memory Limit: 30000KDescriptionA prefix of a string is a substring starting at the beginning of the given string. The prefixes of “carbon” are: “c”, “ca”, “car”
2016-08-08 15:30:22
653
原创 【HDU 1075】What Are You Talking About(字典树)
HDU 1075What Are You Talking AboutTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)Problem DescriptionIgnatius is so lucky that he met a Martian yesterday. But he didn’t kn
2016-08-01 17:17:31
326
原创 【POJ 3630】Phone List(静态字典树)
Phone ListTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluDescriptionGiven a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of
2016-08-01 11:20:05
295
原创 【HDU 1247】Hat’s Words(字典树)
Hat’s WordsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionA hat’s word is a word in the dictionary that is the concatenation of exactly two other
2016-08-01 10:59:59
333
原创 【HDU 1251】统计难题(字典树入门题)
统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Problem DescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据
2016-08-01 10:51:04
372
原创 【字典树】字典树的创建(入门详细介绍)
Part one【何谓字典树】又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 字典树与字典很相似,当你要查一个单词是不是在字典树中,首先看单词的第一个字母是不是在字典的第一层,如
2016-07-29 15:12:16
8967
原创 【FJNUMCS暑假集训周赛#1】
2016年暑假集训周赛#1Problem A: 跑跑卡丁车系列之游戏下载Time Limit: 1000 MS Memory Limit: 257792 KB 64-bit interger IO format: %lld Java class name: Main某天,金斌在实验室玩跑跑卡丁车,众多群巨也一起加入其中。蛋蛋发现这是一个虐爆群巨的好机会,所以他也准备去
2016-07-29 09:58:27
419
原创 【HDU 1203】 I NEED A OFFER!(01背包)
I NEED A OFFER!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 Problem DescriptionSpeakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没
2016-07-27 16:28:35
280
原创 【HDU 1208】Pascal's Travels(动态规划DP)
HDU 1208Pascal’s TravelsDescriptionAn n x n game board is populated with integers, one nonnegative integer per square. The goal is to
2016-07-27 16:12:56
375
原创 【POJ2533】Longest Ordered Subsequence(LIS-最长上升子序列/DP)
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KDescriptionA numeric sequence of ai is ordered if a1 < a2 < … < aN. Let the subsequence of the given numeric sequence (a1, a2, …,
2016-07-25 20:25:53
308
原创 【HDU1159】Common Subsequence(LCS/DP)
Common SubsequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem DescriptionA subsequence of a given sequence is the given sequence with some elements (possi
2016-07-25 20:08:10
379
原创 【HDU1422】重温世界杯(简单动态规划)
重温世界杯Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem Description世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利. 世界杯虽然结束了,但是这界世界杯给我们还是留下许多值得回忆的东西.比如我们听到了黄名嘴的
2016-07-25 19:53:03
303
原创 【HDU1176】免费馅饼(类数塔问题)
免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了
2016-07-25 19:47:26
378
原创 【HDU2191】悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包/简单DP)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大
2016-07-25 19:17:30
225
原创 【POJ3268】Silver Cow Party(dij/矩阵转置)
Silver Cow PartyTime Limit: 2000msMemory Limit: 65536KB 64-bit integer IO format: %lld Java class name: MainOne cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to atten
2016-07-22 17:05:34
314
原创 【POJ1797】 Heavy Transportation(最短路DIJ变种)
Heavy TransportationTime Limit: 3000msMemory Limit: 30000KB 64-bit integer IO format: %lld Java class name: MainHugo Heavy is happy. After the breakdown of the Cargolifter project he can now expan
2016-07-22 16:42:35
393
原创 【HDU 1198】Farm Irrigation(字符串拼接/类油田问题/DFS)
Farm IrrigationTime HDU 1198 主要用深度优先搜索和拼接字符串来完成题目要求
2016-07-21 11:45:31
646
原创 【POJ2389】Bull Math(大数乘法)
Bull MathTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu SubmitStatusDescriptionBulls are so much better at math than the cows. They can multiply huge integers together and
2016-07-20 20:50:38
371
原创 【HDU1231】最大连续子序列(简单动态规划)
最大连续子序列Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,
2016-07-20 17:20:37
359
原创 【HDU1181】变形课(并查集)
变形课Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 46 Accepted Submission(s) : 16Font: Times New Roman | Verdana | Georgia Font Size: ← →Proble
2016-07-20 16:54:20
303
原创 【HDU2048】数塔(简单动态规划/DP)
数塔Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20786 Accepted Submission(s): 12486Problem Description在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下
2016-07-20 16:49:01
529
原创 【POJ2386】Lake Counting(深搜与广搜)
Lake CountingTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 17917 Accepted: 9069DescriptionDue to recent rains, water has pooled in various places in Farmer John’s field, which
2016-07-20 09:12:44
712
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人