自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Sentinel限流学习

簇点链路就是项目内的调用链路,链路中被监控的每个接口就是一个资源,默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。查询订单流量大使查询商品到达阈值时势必会影响到创建订单业务,所以需要针对从查询订单进入到查询商品的请求统计,并设置限流。之前的限流是统计访问某个资源的所有请求,判断是否超过QPS阈值。微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可调用,这就是雪崩。

2024-06-02 12:43:49 991 1

原创 Elasticsearch集群搭建学习

创建索引库时,在settings中配置,可以包含三部分tokenizerfilter。

2024-05-25 20:02:32 911

原创 结构型设计模式(7种)

这是本周讲课内容,花了大概一周时间准备,上csdn、github、z-library上找了不少材料,花了不少心血。最后因为时间原因这周讲课大概率也讲不了了,索性先写成博客发出来,供以后复习设计模式时回头看。

2024-05-18 22:59:42 954 2

原创 ElasticSearchDSL

elasticsearch支持对搜索结果排序,默认是根据相关度算分来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。使用function score query,可以修改文档的相关性算分,根据新得到的算分排序。function score query定义的三要素是什么。布尔查询是一个或多个查询子句的组合。布尔查询是一个或多个查询子句的组合。

2024-04-21 16:06:42 2001 2

原创 中职院校技能大赛教学能力比赛报名评审平台项目总结

这次项目复习了springsecurity的使用和原理,收获很大!

2024-04-14 16:20:29 423 1

原创 ElasticSearch

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。请求内容用DSL语句表示。所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

2024-04-06 20:18:41 938 1

原创 算法笔记第四章(数学知识)

例如:40被2筛掉,也就是当i= 20 , primes[j] = 2 st[primes[j] * i (40)]= true break;有一对正整数a ,b ,那么一定存在非零整数x ,y,使得ax + by = gcd(a , b)质数:在大于1的整数中,如果约数只包含1和本身,这个数就被称为质数或素数。分解质因数–试除法:从小到大枚举所有数。欧拉函数表示1~N中与N互质的数的个数。试除法求一个数的所有约数。n只会被最小质因子筛掉。

2024-03-30 21:13:02 315 2

原创 RabbitMQ学习笔记

在父工程中引入spring-amqp依赖在publisher服务中利用RabbitTemplate发送消息到simple.queue这个队列在consumer服务中编写消费逻辑,绑定simple.queue这个队列应用间消息通信的一种协议,与语言和平台无关。

2024-03-26 11:23:28 1189

原创 Nacos与Eureka的使用与区别

Ribbon负载均衡规则规则接口是IRule默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询负载均衡自定义方式代码方式:配置灵活,但修改时需要重新打包发布配置方式:直观,方便,无需重新打包发布,但是无法做全局配置饥饿加载开启饥饿加载指定饥饿加载的微服务名称。

2024-03-17 09:01:58 2371 2

原创 AQS概述

在多线程下,如果被请求的共享资源空闲,则将当前请求资源的线程设为有效的工作线程,并将共享资源设为锁定状态,如果被请求的共享资源被占用,那么就需要一套阻塞等待以及被唤醒时锁分配的机制,这就是AQS的核心思想。

2024-03-10 11:45:16 374

原创 校企合作项目总结

寒假里小组给了校企合作的项目,分配给我的工作量总共也就两三套crud,虽然工作很少,但还是从里面学到了很多东西,收获了大量的实习经验,在这里总结记录一下。虽然这个项目我参与的不多,但还是学到很多东西,是一次宝贵的实习经验,共勉。

2024-03-03 10:18:52 392

原创 GO语言入门

直接在当前文件下定义init函数,在执行这个文件的其他函数之前会先执行init函数。defer语句的运行顺序为栈顺序,先进的后出,后进的先出。对C的降级处理,并发无缝,没有C降级到asm那么完美。defer关键字主要表示语句在程序运行结束之前运行。所有Exception都用Error来处理。包管理,大部分包都在GitHub上。slice(动态数组)

2023-12-31 09:50:49 676 2

原创 创建型设计模式

一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中。尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

2023-12-24 15:59:31 1077

原创 虚拟机性能监控、故障处理工具

基础工具:用于支持基本的程序创建和运行安全:用于程序签名、设置安全测试等国际化:用于创建本地语言文件远程方法调用:用于跨Web或网络的服务交互部署工具:用于程序打包、发布、部署性能监控和故障处理工具REPL和脚本工具。

2023-12-17 16:49:42 179

原创 垃圾收集算法和各种垃圾收集器的实现

之前几个小节已经探讨了如何回收对象的问题,接下来几个小节主要探讨如何分配对象的问题。

2023-12-09 14:51:14 89

原创 JVM运行时数据区域、对象内存分配、内存溢出异常总结

对象需要存储的运行时数据很多,已经超出了32、64位Bitmap结构所能记录的最大限度,但对象头里的信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Word被设计成一个有着动态定义的数据结构,以便在极小的空间内存储尽量多的数据,根据对象的状态复用自己的存储空间。在JDK8以后,永久代便完全退出了历史舞台(到了JDK8,完全废弃了永久代的概念,改用在本地内存中实现的元空间来代替,把JDK7中永久代还剩余的内容(主要是类型信息)全部移到元空间中)。不足8N的需要填充字节。

2023-11-28 10:43:09 256

原创 Windows使用WSL编译自己的JDK

笔者使用的操作系统为windows,但是windows编译自己的jdk还是比较麻烦的,所以我们就需要使用wsl构建一个ubuntu操作系统环境,然后编译。下载完成后打开,就可以看到ubuntu操作系统的命令行窗口了,使用cd命令进入/mnt文件夹,这个文件夹下的c文件夹对应C盘,d对应D盘,以此类推。,点击左侧的“Browse”,进入jdk12的根目录,然后点击左边的“zip”即可下载当前版本打包好的源码,到本地直接解压即可。现在,我们就可以编译jdk12的源码并且使用自己调试的jdk了。

2023-11-23 16:44:25 182

原创 使用内网穿透解决支付宝回调地址在公网问题

最近一个项目用到了支付宝,但是本地调试的时候发现支付宝的回调地址需要在公网上能够访问到。为了更加方便地调试,就使用了natapp内网穿透,将回调地址放到公网上,成功解决问题。

2023-11-19 10:26:22 405

原创 使用Redis实现热搜功能

笔者这里写的是每天凌晨将前十个热搜删除,这个方法写的比较烂,大家可以自己查询学习一下比较好的热搜算法,对热搜进行维护。(可以将这些数据放入mysql统一管理或者使用一个变量作为热度因子对热搜真实热度进一步统计)i<10;i++){(完)

2023-11-10 22:31:24 1022

原创 N皇后的两种解决方法(java)

当前这个判断位置是否合法的方法也是比较有意思,可以以已经放置的N皇后为点,绘制出三条直线,然后用截距(没错,就是y=x+b中的b)表示N皇后放置之后在棋盘上的所有不合法位置,用代码表示出来的话就是一个布尔数组,然后在新的皇后放置加减偏移量就可以得到当前位置是否合法。这种方法就是枚举所有可能的路径,比如在第一层第一格放置了一个皇后,那么就进入下一层第一格,然后判断当前位置是否合法(会不会被其他的N皇后杀掉),如果不合法则不进行操作,如果合法,就放置N皇后,然后进入下一层重复放置操作。

2023-11-05 17:28:47 73

原创 HashMap源码

HashMap在进行扩容时,使用的rehash方式非常巧妙,因为每次扩容都是翻倍,与原来计算的(n-1)&hash的结果相比,只是多了一个bit位,所以节点要么就在原来的位置,要么就被分配到“原位置+旧容量”当数组需要扩容时,就会将数组大小扩展一倍,然后重新计算每个元素在数组中的位置,这是一个非常耗性能的操作,所以如果我们已经知道HashMap中元素的个数,那么预知元素的个数能够有效的提高HashMap的性能。进行扩容,会伴随着一次重新hash分配,是非常耗时的,在编写程序中,要尽量避免resize。

2023-10-28 08:53:51 51

原创 总结一下近四个月以来的学习和生活

很久没写过总结篇了,一是因为生活学习按部就班,平平淡淡,没什么好总结的。二来也是因为觉得写总结篇浪费空间,不如发一篇技术性的文章好。第三就是懒的总结自己。但昨晚学长的话犹如当头棒喝,给我上了一课,这才觉得是时候好好反思一下自己这几个月的学习态度,总结一下学习心得了。

2023-10-22 09:15:51 53

原创 基础算法第二章(java)

数据结构这一章不是特别的难,主要是怎么优化已有的API或者怎么对基础的数据结构变形,使之能够应用到对应的题目上。例如食物链就需要维护一个节点到根节点的距离,用来表示当前节点对应的类别。或者是堆排序,需要维护节点的插入顺序和节点所在的位置(这题饶了我好久)。总之,算法是死的,人是活(死)的,灵活变通,这才是算法。

2023-10-14 20:56:14 76 3

原创 java基础面试题

java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来讲虚拟机代码转换为特定系统的机器码执行。在java中,这种供虚拟机理解的代码叫做字节码,它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。

2023-10-07 21:31:59 32

原创 两个月以来的训练笔记

5、高碳日的碳水在时间轴上的安排(血糖波动安排)——早餐(大头)、练前300g-500g水果、练中运动饮料、练后的碳水后置(大头)8、碳水循环里的脂肪在时间轴上的安排——最好晚上睡前(高碳日的安排)或者除了早餐和训练后的时间段(低碳日的安排)4、高碳日的碳水种类选择——快碳(米饭馒头)、膳食纤维——蔬菜在时间轴上的安排、脂肪种类选择——不饱和脂肪。7、低碳日的碳水在时间轴上的安排——中午前吃完一天的所有碳水(下午和晚上不再吃碳水,可以吃一些蛋白质之类)

2023-09-23 20:18:15 99 1

原创 基础算法第一章(java)

归并排序模板思路:首先进行递归,将所有的元素分成一小块一小块然后逐层进行归并,归并时设置一个临时数组用来存放比较后的数据,由于每次递归使用的元素都不一样,所以在归并时元素会被分成两组两组,不断向上进行比较,到最后一次归并只剩下两个有序数组,这是对这两个有序数组进行比较。先写check函数,判断l=mid还是r=mid,如果是l = mid,那么mid = l+r+1>>1,如果是r = mid,那么mid = l+r>>1。如果左边界等于mid,则mid需要向上取整,即mid=l+r+1/2。

2023-09-16 16:56:00 60

原创 数据结构(java)

数据结构数据结构数组空间占用动态数组二维数组链表单向链表-带哨兵双向链表-带哨兵环形链表-带哨兵队列栈双端队列二叉树集合和映射 Set and Map优先队列线段树Trie并查集AVL红黑树图数据结构数组数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识空间占用Java中数组结构为:8字节markword4字节class指针(压缩class指针的情况)4字节数组大小(决定了数组的最大容量是2^32)数组元素+对其字节(java中所有对象大小都是8字节的整数倍 ,

2023-09-07 17:06:06 48

原创 Shiro+Redis控制用户并发登录

最近些项目时需要控制用户同一时间在线登陆的人数,所以就从网上找了一些相关代码学习学习。不料各种方法使我学的头昏眼花,最后索性自己造一个简易版的算球。以下是这个过滤器的具体写法。

2023-08-22 15:29:37 200

原创 函数式编程

根据函数式编程视频学习所记录的笔记。代码可读性避免过分嵌套看懂别人写的代码大数据量下集合处理效率底层使用多线程处理并线程安全可以保障?/*** 查询未成年作家评分在70分以上的书籍,由于流的影响所以作家和书籍可能会重复出现,所以要去重* 我不是很理解这里为什么说会重复出现呢?*/@Test// 这里如果重复就不会添加成功// 如果之前有这本书就不会再次添加// 函数式写法。

2023-08-19 21:10:35 57

原创 实现接口限流的四种算法

以上就是实现接口限流的四种方法,除了第一种算法,其他三种都是很优秀的实现接口限流的方法,没有优劣,只有合适不合适。原理是令牌桶会以恒定的速率生成令牌,直到把桶装满为止,然后每个请求都需要携带一个令牌才可以被处理,否则就被销毁或者堆积。其中窗口是在不断地滑动的,也就是说在这可变的一分钟内只有5次请求可以被处理,实现了真正的接口限流。该方法是在计数器法上进行了一些优化,使攻击者无法在较短时间内突破服务器的请求数量限制。漏桶算法顾名思义,就是用一个相当于漏斗的容器接收请求,然后以恒定的速率处理请求。

2023-08-13 15:51:24 511

原创 如何使用Shiro和Redis优雅的搭建一个简单的角色验证框架

相信很多Shiro新手都和我一样,刚上手Shiro时候一脸懵。Realm不是个权限库吗?怎么会做认证和校验的活儿?为什么在Shiro的配置文件里又见到它了?Redis怎么集成到Shiro?Session储存的值怎么交给Redis管理?且看我用一个简单的小demo一一道来。

2023-08-06 09:48:50 199

原创 Redis快速入门

Redis中SortedSet是一个可排序的Set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加Hash表。Redis的Set结构与Java中的HashSet类似,可以看作是一个value为null的HashMap。​ HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行。

2023-07-29 21:38:32 46

原创 SpringMVC项目转SpringBoot

SpringMVC项目转SpringBoot前言1、更改依赖mvc依赖文件springboot依赖文件2、更改配置文件3、更改资源目录,设置WebMvcConfig将webapp目录下的资源放进resources目录下删除web.xml,并配置webmvcconfig文件来替代web.xml4、添加启动类目录结构:前言我写的第一个项目终于迎来了尾声,将spirngmvc转成成spirngboot可能是这个项目的最后一次重构了。在期间遇见了一些问题,随着问题的攻破也收获了很多宝贵经验,用此文章分享一下我的

2023-07-19 15:50:55 4852

原创 springboot和spirng配置bean的方式以及区别

相较于Spring配置IOC容器时手动配置自动扫描的方式,SpringBoot在@SpringBootApplication注解中组合了@ComponentScan注解,默认扫描同包下的配置类注解。您可以创建一个配置类,使用Spring提供的配置注解来定义bean和其属性,然后通过加载该配置类来创建和管理bean。通过在类或方法上添加特定的注解,Spring将自动扫描并创建相应的bean。以上三种为Spring常用的bean配置,Spring框架会管理bean的创建和注入的依赖关系。用在层级模糊的组件上。

2023-06-10 18:54:02 585

原创 mybatis+spirngmvc实现二级评论

二级评论思路其实并不难,多摸索就能学会。学习一门编程语言最好的方法还是直接上手敲代码,纸上谈兵不可取。

2023-06-04 10:40:19 249

原创 SpringMVC实现邮箱验证注册

总之使用邮箱验证的思路就是:填写邮箱(验证格式)->发送验证码邮件并将验证码和邮箱存到session中->用户填写验证码注册->检查验证码与session中存储的验证码是否一致,若一致,则验证通过。

2023-05-27 22:06:51 338 2

原创 食谱项目总结

食谱项目接近尾声,虽说项目过程一波三折,但也学到了不少东西,例如oss云端存储,Linux服务器的入门使用,支付宝沙箱的使用,qq登录邮箱验证等等。最后发现是阿里云仓库的证书问题,配置了之后果然maven快如闪电。总结:这次项目对我的提升很大,学到了很多新技术和新思路,ssm框架的使用也大大提高了我的逻辑和解耦能力。但沉淀下来的才是精华,路还很长,不管这次项目写的怎么样,我已经收获到了我需要的东西。4、前后端交互问题:项目中前后端交互免不了掐架,我的建议是小不忍乱大谋,毕竟是大家的项目,都应该担起责任。

2023-05-19 19:47:35 65

原创 java中的高精度加减乘除

乘法和除法与加减法思路不一样的地方在于,传入的两个参数一个是高精度,一个是低精度,高精度参数用集合表示,用每一位的数字去乘以低精度数,并将个位存入结果集。然后利用一个变量t表示向前借位,(t+10)%10,如果t为整数,那么该数不变,最后将该数赋值为0,如果t为负数,那么该数成功向前一位借位,最后将该数赋值为1。值得一提的是,高精度储存结果中是下标值小的存储位数低的,也就是从个位开始存,取得时候需要从高位开始取。用中间变量t表示进位情况,t%10为当前位的值,t/10为下一位的进位情况。

2023-05-14 11:44:07 663

原创 SpringMVC

MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model、模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如Student、User等。一类称为业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指工程中的heml或jsp等页面,作用是与用户进行交互,展示数据。C:Controller,控制层,指工程中的servlet,作用是接受请求和响应浏览器。

2023-05-06 21:35:13 52

原创 IOC容器概述

框架概述IOC容器(1)IOC底层原理IOC过程Bean管理Bean管理操作有两种方式(2)IOC接口(BeanFactory)(3)IOC操作Bean管理(基于xml)IOC操作bean管理(xml注入其他类型属性)IOC操作Bean管理(xml注入集合属性)IOC操作Bean管理(FactoryBean)IOC操作Bean管理(Bean作用域)IOC操作bean管理(Bean生命周期)IOC操作Bean管理(自动装配)IOC操作Bean管理(外部属性文件)(4)IOC操作Bean管理(基于注解操作)

2023-04-23 14:37:56 306

结构型设计模式(7种)

结构型设计模式(7种)

2024-05-18

RabbitMQ代码demo

RabbitMQ代码demo

2024-03-26

创建型物种设计模式代码实现包

内涵工厂模式demo、抽象工厂模式demo、建造者设计模式demo、原型设计模式demo、单例设计模式demo

2023-12-24

空空如也

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

TA关注的人

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