自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rust高级 异步编程 二 pin

脑袋里已经快被 Pin 、 Unpin 、!若 T: Unpin ( Rust 类型的默认实现),那么 Pin<'a, T> 跟 &'a mut T 完全相同,也就是 Pin 将没有任何效果, 该移动还是照常移动绝大多数标准库类型都实现了 Unpin ,事实上,对于 Rust 中你能遇到的绝大多数类型,该结论依然成立 ,其中一个例外就是:async/await 生成的 Future 没有实现 Unpin你可以通过以下方法为自己的类型添加!

2023-12-06 09:49:05 60

原创 rust高级 异步编程 一 future

OS线程, 它最简单,也无需改变任何编程模型(业务/代码逻辑),因此非常适合作为语言的原生并发模型,我们在多线程章节也提到过,Rust 就选择了原生支持线程级的并发编程。但是,这种模型也有缺点,例如线程间的同步将变得更加困难,线程间的上下文切换损耗较大。使用线程池在一定程度上可以提升性能,但是对于 IO 密集的场景来说,线程池还是不够。事件驱动(Event driven),如果说事件驱动常常跟回调( Callback )一起使用,相信大家就恍然大悟了。

2023-12-06 07:46:11 101

原创 spring cloud 整合Feign经行远程调用

使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。

2023-12-05 00:15:00 49

原创 spring cloud nacos整合gateway

过滤器的作用是:① 对路由的请求或响应做加工处理,比如添加请求头② 配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?① 对所有路由都生效的过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:import org。

2023-12-05 00:15:00 135

原创 中介者模式 rust和java的实现

意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。作用:1.通过中介者提供的中转作用,各个同事对象就不再需要显式引用其他同事,当需要和其他同事进行通信时,通过中介者即可。该中转作用属于中介者在结构上的支持。2.中介者可以更进一步的对同事之间的关系进行封装,同事可以一致地和中介者进行交互,而不需要指明中介者需要具体怎么做,中介者根据封装在自身内部的协调逻辑,对同事的请求进行进一步处理,将同事成员之间的关系行为进行分离和封装。

2023-12-04 08:29:18 227

原创 备忘录模式 rust和java的实现

意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态。应用实例: 1、打游戏时的存档。2、Windows 里的 ctrl + z。3、浏览器中的后退。4、数据库的事务管理。

2023-12-04 08:28:40 126

原创 rust 笔记 高级错误处理

虽然标准库定义了大量的错误类型,但是一个严谨的项目,光使用这些错误类型往往是不够的,例如我们可能会为暴露给用户的错误定义相应的类型。当自定义类型实现该特征后,该类型就可以作为 Err 来使用。实际上,自定义错误类型只需要实现 Debug 和 Display 特征即可,source 方法是可选的,而 Debug 特征往往也无需手动实现,可以直接通过 derive 来派生最简单的错误// AppError 是自定义错误类型,它可以是当前包中定义的任何类型,在这里为了简化,我们使用了单元结构体作为例子。

2023-12-03 09:38:26 395

原创 组合模式 rust和java的实现

意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。何时使用:、1、您想表示对象的部分-整体层次结构(树形结构)。2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。应用实例。

2023-12-03 09:38:17 288

原创 外观模式 rust和java的实现

意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。应用实例去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。优点: 1、减少系统相互依赖。2、提高灵活性。3、提高了安全性。缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

2023-12-03 09:38:06 246

原创 rust 日期和时间格式化输出

要将这些字符串解析为 DateTime 结构体,可以分别用 DateTime::parse_from_rfc2822、DateTime::parse_from_rfc3339,以及 DateTime::parse_from_str。使用 DateTime::to_rfc2822 将当前时间格式化为熟悉的 RFC 2822 格式,使用 DateTime::to_rfc3339 将当前时间格式化为熟悉的 RFC 3339 格式,也可以使用 DateTime::format 自定义时间格式。

2023-12-03 09:37:48 619 2

原创 打造个性化github主页 一

github作为全球最大的代码托管平台,作为程序员都多多少少,都使用过他。这里,很多程序员利用工作之余,无私的贡献了很多优秀的开源代码和框架。Github 也是一个很好的展示你自己的地方。那么如何让其人能通过Github更快认识你呢?你的Github主页就显得至关重要了!本人主页以上就是我们实现的静态界面,之后的文章会介绍更多的动态界面的实现,也欢迎访问本人主页。

2023-12-02 14:31:40 646

原创 Hertz 整合swagger

因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下载对应库文件将无法自动编译并安装到 $GOPATH/bin 的路径, 所以不再推荐用 go get 来安装可执行文件的方式。编译运行你的应用程序,之后在 http://localhost:8888/swagger/index.html,可以看到 Swagger UI 界面。访问http://localhost:8888/swagger/index.html。你可以使用不同的配置选项来配置 Swagger。

2023-12-02 08:04:48 40

原创 spring cloud Nacos配置管理

因为之后的版本spring cloud取消了bootstrap.yaml配置,所以我们需要把内容配置在application.yml。注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是。

2023-12-01 08:00:09 103

原创 nacos 2.0 版本在spring cloud 2022.0.0.0-RC2读取配置文件失败

报错信息如下Spring 官方给出的解决方案如下。

2023-12-01 07:59:18 33

原创 spring cloud Eureka注册中心和Nacos注册中心

代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:@Bean配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则注意。

2023-11-30 09:10:36 131 1

原创 SpringCloud 一

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

2023-11-30 09:10:07 26

原创 elasticsearch 实战

本项目是一个由spring boot 3.0.2在gradle 8.4和java 21的环境下搭建的elasticsearch项目demo,这个项目是基于新版的Elasticsearch Java API 制作的,符合最新的框架要求,由于是运用了Elasticsearch新版的java jar包,所以在查询的时候使用了大量的Stream流式编程和闭包,亦可以作为流式编程的巩固。

2023-11-29 10:09:01 383 1

原创 命令模式 rust和java实现

意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用:当需要先将一个函数登记上,然后再以后调用此函数时,就需要使用命令模式,其实这就是回调函数。优点。

2023-11-29 10:02:25 662

原创 java Stream编程笔记

Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。不可变性:Stream 是不可变的,它不会修改原始数据源,也不会产生中间状态或副作用。

2023-11-28 13:39:09 5359 3

原创 elasticsearc DSL查询文档

精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围。

2023-11-26 09:25:37 87 2

原创 Redis分片集群

例如:key是num,那么就根据num计算,如果是{itcast}num,则根据itcast计算。利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。如图,在7001这个节点执行set a 1时,对a做hash运算,对16384取余,得到的结果是15495,因此要存储到103节点。时,对num做hash运算,对16384取余,得到的结果是2765,因此需要切换到7001节点。

2023-11-26 00:15:00 96 1

原创 elasticsearch 索引库操作和文档操作

倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。索引库就类似数据库表,mapping映射就类似表的结构。增量修改是只修改指定id匹配的文档中的部分字段。

2023-11-25 09:56:28 71 1

原创 黑马点评笔记 分布式锁

线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,= -1 则会进去抢锁,抢锁的逻辑就是之前说的那三个逻辑。

2023-11-25 01:45:00 188 1

原创 代理模式 rust和java的实现

意图:为其他对象提供一种代理以控制对这个对象的访问。代理模式的主要优点代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;其主要缺点在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;增加了系统的复杂度;应用实例: 1、买火车票不一定在火车站买,也可以去代售点。2、一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。

2023-11-24 10:08:23 96 1

原创 黑马点评笔记 redis实现优惠卷秒杀

以上逻辑的核心含义是:只要我扣减库存时的库存和之前我查询到的库存是一样的,就意味着没有人在中间修改过库存,那么此时就是安全的,但是以上这种方式通过测试发现会有很多失败的情况,失败的原因在于:在使用乐观锁过程中假设100个线程同时都拿到了100的库存,然后大家一起去进行扣减,但是100个人中只有1个人能扣减成功,其他的人在处理时,他们在扣减时,库存已经被修改过了,所以此时其他线程都会失败。其实按照串行的方法我们上面的代码已经实现的解决了超卖问题,但在现实中web往往是高并发的,我们的代码任然存在以下问题,

2023-11-24 10:07:51 70

原创 rust每日一库 rand 生成随机数

ust中官方并没有像以他语言一样,rust并没有官方并没有提供生成随机数的工具,所以我们要借助rand包进行生成随机数。这里我们使用现在使用罪为广泛的rand包只需要引入以下依赖就能够使用

2023-11-23 17:05:12 667 1

原创 黑马点评笔记 redis缓存三大问题解决

当我们客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据,此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据库能够承载的并发不如redis这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis中去,这样,下次用户过来访问这个不存在的数据,那么在redis中也能找到这个数据就不会进入到缓存了。因为锁能实现互斥性。

2023-11-23 09:18:55 100

原创 黑马点评笔记 redis实现缓存

缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据例1:Static final ConcurrentHashMap map = new ConcurrentHashMap();本地用于高并发例2:static final Cache USER_CACHE = CacheBuilder.newBuilder().build();用于redis等缓存例3:Static final Map map = new HashMap();本地缓存由于其被。

2023-11-23 01:00:00 166

原创 享元模式 rust和java的实现

意图:运用共享技术有效地支持大量细粒度的对象。主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。何时使用系统中有大量重可复利用的对象。这些对象消耗大量内。对象的创建和销毁较为浪费系统资源。这些对象的状态大部分可以外部化。这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。系统不依赖于这些对象身份,这些对象是不可分辨的。应用实例。

2023-11-22 00:15:00 145

原创 装饰模式 rust和java的实现

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。应用实例孙悟空有 72 变,当他变成"庙宇"后,他的根本还是一只猴子,但是他又有了庙宇的功能。不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;

2023-11-20 00:15:00 282

原创 Nginx 核心配置文 nginx.conf介绍

我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说MIME Type是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。在Nginx的配置文件中,默认有两行配置:用来配置Nginx响应前端请求默认的MIME类型。语法默认值位置在default_type之前还有一句。

2023-11-19 09:43:25 204

原创 elasticsearch 概述

elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。

2023-11-18 10:12:05 223

原创 elasticsearch 安装

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在,比如我们的爱坤就被分开,不被当作一组词汇。IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

2023-11-17 07:52:00 231

原创 Spring Task使用介绍

是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位定时任务框架作用定时自动执行某段Java代码为什么要在Java程序中使用Spring Task?1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单**强调:**只要是需要定时处理的场景都可以使用Spring Task。

2023-11-17 01:00:00 306

原创 Nginx静态资源部署之响应内容部署

(1)静态资源的配置指令(2)静态资源的配置优化(3)静态资源的压缩配置指令(4)静态资源的缓存处理(5)静态资源的访问控制,包括跨域问题和防盗链问题。

2023-11-16 18:33:52 92

原创 建造者模式 rust和java的实现

意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。关键代码:建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。应用实例: 1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。

2023-11-16 08:34:25 223

原创 过滤器模式 rust和java的实现

我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。

2023-11-16 01:00:00 597

原创 Hutool 笔记 日期工具类的使用

日期时间包是Hutool的核心包之一,提供针对JDK中Date和Calendar对象的封装,封装对象。

2023-11-15 13:27:13 120

原创 hutool 笔记二 类型转换工具 Convert

Hutool的默认转换有时候并不能满足我们自定义对象的一些需求,这时我们可以使用ConverterRegistry.getInstance().putCustom()方法自定义类型转换。@Override。

2023-11-15 09:51:11 84

原创 桥接模式 rust和java的实现

意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。

2023-11-15 01:00:00 229

spring cloud 整合Feign经行远程调用

spring cloud 整合Feign经行远程调用

2023-12-03

SpringCloud 一

spring cloud 项目demo

2023-11-29

elasticsearch 实战

该资源是一个由spring boot 3.0.2在gradle 8.4和java 21的环境下搭建的elasticsearch项目demo,这个项目是基于新版的Elasticsearch Java API 制作的,符合最新的框架要求,而且该项目中运用了大量的流式编程和闭包的部分也值得学习

2023-11-20

MyBatis-Plus 实战教程一

项目所需sql文件

2023-10-22

spring boot MongoDB实战

数据库资料

2023-10-20

空空如也

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

TA关注的人

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