自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_1763467007的博客

qq_1763467007的博客

  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 【@ConfigurationProperties注解的用处】

ConfigurationProperties 是 Spring 框架中的一个注解,用于将配置文件中的属性映射到 Java 对象的字段上。它的主要用途是简化配置文件与 Java 对象之间的映射过程,使得配置更加方便、可读,并提供类型安全的属性访问。

2023-12-05 17:47:24 1805

原创 【分布式id生成系统——leaf源码】

其他就是初始化需要的值。首先是程序启动后,对SegmentService进行实例化,在通过构造方法实例化SegmentService时,首先对IDAllocDao进行了创建,这里的dao层没有直接用@Mapper注解去创建实现,而是通过实现类实现IDAllocDaoImpl方式(主要原因应该是作为被引入的包,mapper注解可能扫描不到对应的sql吧)。⑥⑦:上诉对step操作完成后,根据key更新max_id,max_id值更新为max_id+step,相当于如果15分钟后,未使用的id将会被舍弃。

2023-11-10 17:54:51 344

原创 【poi导出excel模板——通过建造者模式+策略模式+函数式接口实现】

Spring Boot 中的属性解析机制是通过 ConfigurationProperties 注解来实现的,首先我们现看一下poi如何导出excel,这里举个例子代码中,可以看到创建工作簿、设置表头行、设置数据等操作都集中在一起,耦合性较高。如果后面再增加设置样式、设置不同类型单元格的样式,会全部集中到对workbook的操作上,而workbook又在开始时就创建了。如果将workbook的创建于数据填充进行解耦。并且将创建工作簿、设置表头行、设置数据等操作作为一个公有方法抽取出来

2023-11-10 17:53:43 1117

原创 【SpringCloud微服务项目实战-mall4cloud项目(5)】——mall4cloud-leaf

分布式ID(Distributed ID)是在分布式计算环境中生成的唯一标识符或标识号。在分布式系统中,通常需要唯一标识不同的实体或数据,以确保数据的一致性、唯一性和跟踪性。分布式ID的生成可以避免多个节点或服务生成相同的标识符,从而避免数据冲突和不一致性。分布式ID的好处包括:唯一性:分布式ID是全局唯一的,无论在系统中的哪个节点生成,都不会与其他节点的ID冲突。数据一致性:分布式ID可用于唯一标识数据库中的记录,确保不同节点的数据操作不会导致冲突或数据不一致性。

2023-10-24 11:04:17 368 1

原创 【SpringCloud微服务项目实战-mall4cloud项目(4)】——mall4cloud-rbac

从图中可以看到,微服务集群中,rbac模块是作为一个支持模块,与认证授权账户服务模块关联在一起的,但是代码中将其分离了出来作为单独的服务。中间的服务调用通过fegin来执行。对于权限管理系统来说,灵活而有组织的权限服务是必不可少的。RBAC(Role-Based Access Control)是一种访问控制模型,用于管理和控制系统或应用程序中的用户对资源的访问权限。RBAC基于角色的概念,将用户分配给不同的角色,而每个角色具有特定的权限,决定了用户可以执行的操作以及可以访问的资源。

2023-10-18 17:57:58 456 3

原创 比postman更好用的接口管理软件——Apifox

最近使用了一个好用的中文版接口管理软件,Apifox,以下介绍一下它的使用方式及好处。

2023-10-13 17:58:22 782 2

原创 【SpringCloud微服务项目实战-mall4cloud项目(3)】——mall4cloud-auth

令牌认证主要用于验证用户的身份。通常,用户提供用户名和密码进行身份验证,服务器验证后颁发一个访问令牌(Token)给客户端。客户端可以在后续请求中使用这个令牌来证明其身份,而不需要再次提供用户名和密码。令牌通常是一串字符,可以包含用户信息和权限信息。auth模块的代码逻辑主要流程是登录接口/ua/login->tokenStore下的storeAccessToken()方法,令牌存储完成后,就是过滤器AuthFilter类的实现。

2023-10-10 17:27:09 309 3

原创 【bug记录】This attempt to set a cookie via a Set-Cookie header was blocked because it had the “Secure“

This attempt to set a cookie via a Set-Cookie header was blocked because it had the "Secure"错误原因为:尝试通过Set-Cookie头设置具有“secure”属性的cookie,但未通过安全连接接收,因此被阻止。因为具有“secure”属性的cookie只能通过安全的https连接传输,所以浏览器阻止了此操作。查看了一下访问协议,确实是使用了http协议地址。然后查看这个接口对于cookie的设置。这个接口是登录

2023-09-18 14:57:50 2047 1

原创 通过stream流实现分页、模糊搜索、按列过滤功能

在有一些数据通过数据库查询出来后,需要经过一定的逻辑处理才进行前端展示,这时候需要在程序中进行相应的分页、模糊搜索、按列过滤了。按列过滤和模糊搜索类似,但是传入的是一个map,k为这个字段名,v为模糊搜索内容。对其中的字段进行排序,分别有string、数值类以及默认排序,排序方式desc或者asc等,如果要加时间类或者其他类型,需要手动实现comparter接口构造比较方式了。①:将完成数据处理的list重新构成一个新的list,当然,里面的数据引用是一样的,但是新list可以对其增删改了。

2023-09-14 18:27:01 1280

原创 【SpringCloud微服务项目实战-mall4cloud项目(2)】——mall4cloud-gateway

从图中可以看到,在用户端和静态层通过接入层(nginx+防火墙)后就会到达后端服务中,首先要通过的便是网关层,网关层由springCloud gateway2+负载均衡去实现。微服务架构中的网关层充当了微服务体系结构的门卫,负责处理请求、管理安全性、实施过滤和转换、执行路由和负载均衡等任务。通过集中管理这些功能,网关可以简化微服务的客户端访问,并提供一些关键的非业务功能,以确保整个系统的高可用性、性能和安全性。请求路由:网关充当了所有进入微服务系统的请求的入口点。

2023-09-12 17:39:16 1135 6

原创 【SpringCloud微服务项目学习-mall4cloud项目(1)】——环境部署,构建与运行

mall4cloud是mall4j的微服务架构。具有微服务架构,分布式部署,静态化分离,高性能高并发,支持负载均衡,支持多端开发特点商城是基于**Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服务B2B2C电商商城系统**,采用主流的互联网技术架构、全新的UI设计、支持集群部署、服务注册和发现以及拥有完整的订单流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发的电商平台系统。B2B2C

2023-09-11 23:32:15 2078 19

原创 通过nginx将https协议反向代理到http协议请求上

目前一个系统仅支持https协议访问,因后端服务基于ssl协议,前端在请求是也需要支持ssl协议的https请求来访问。目前的代理服务器是nginx,现在想要==通过http访问系统==,需通过nginx的**反向代理**或者**重定向方式**将https请求代理为http请求。可实现的做法有如下几种:>1、使后端开放两种端口,一个端口支持https协议访问,一个端口支持http协议访问,之后前端请求通过nginx代理,同时nginx也开放两个端口(比如80端口作为http访问,443端口作为https访

2023-09-05 17:58:26 15119 9

原创 nested exception is java.io.FileNotFoundException: class path resource [xxx.class] cannot be opened

class path resource [xxx.class] cannot be opened because it does not existnested exception is java.io.FileNotFoundException: class path resource [***.class]cannot be opened

2023-08-09 17:07:56 1146

原创 全排列、子集、组合、子序列

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。子集是指给定一组元素,从中选取0个或多个元素组成的集合。对于n个元素的集合,它将包含2^n个不同的子集,包括空集和全集。全排列(Permutation):全排列是指给定一组元素,通过交换元素的位置,得到这组元素所有可能的排列方式。假设有n个元素,全排列将产生n!(n的阶乘)种不

2023-08-03 18:20:51 1016

原创 使用docker搭建nacos

4、nacos从2.2版本后加入了鉴权功能,如果使用默认配置nacos.core.auth.enabled=false,可以不用登录,也没有登录页面,但是进入会提示:当前集群没有开启鉴权,请参考文档开启鉴权~,右上角也没有登录用户。如过配置了nacos.core.auth.enabled=true,则需要按照如下配置增加nacos.core.auth.plugin.nacos.token.secret.key=MTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5MWNoZW4KIA==

2023-07-27 18:05:10 557

原创 【分布式锁介绍与使用-(redisson,zk)】—(RLock,InterProcessMutex)

分布式锁是一种用于在分布式系统中实现协调和同步的机制。在分布式系统中,多个节点(服务器或进程)可能同时访问共享资源,而为了避免资源竞争和数据不一致性问题,需要使用分布式锁来确保在任意时刻只有一个节点可以访问该资源。当节点完成数据同步操作后,需要释放分布式锁,让其他节点有机会获取锁进行数据同步。通过调用Redisson提供的unlock()方法来释放锁。当一个节点需要进行数据同步操作时,它会在ZooKeeper上创建一个临时顺序节点(EPHEMERAL_SEQUENTIAL)。==每个节点创建的节点都有一个

2023-07-24 18:17:58 246

原创 好用的shell工具——finalShell3.9.5

好用的shell工具——finalShell3.9.5软件下载安装激活专业版功能在这里记录一下这款shell工具,主要是一换环境就需要重新安装,记在csdn上方便以后自己查看软件下载安装因为finalshell下载后需要激活,目前的激活程序只能到3.9.5版本,这里给一个3.9.5版本的地址吧,官网地址是最新的3.9.5下载地址

2023-07-21 14:11:48 6430 9

原创 集合处理常用Stream流

Stream API是Java 8引入的一项重要特性,它提供了一种新的处理集合数据的方式。Stream可以看作是一种高级的迭代器,它允许以声明式的方式对集合进行各种操作,如过滤、映射、排序、归约等。它可以简化集合处理的代码,并且在处理大数据集时具有性能优势。filter(Predicate predicate)map(Function mapper)flatMap(Function mapper)distinct()sorted()limit(long

2023-07-06 17:17:25 1434 1

原创 在windows11环境下安装CUDA11.6+Anaconda3+pyToach1.13搭建炼丹炉

在windows11环境下安装CUDA11.6+Anaconda3+pyToach1.13搭建炼丹炉目前2023.03出来的pyToach2.0是用不到了,因为最低版本支持CUDA11.7。我的显卡是1650,驱动达不到CUDA11.7的要求,因此安装不了11.7。

2023-06-26 11:28:07 3463 3

原创 分布式事务解决方案---Seata

分布式事务的解决方案通常有以下几种:以上是常见的几种分布式事务解决方案,每种解决方案都有其优缺点和适用场景,具体选择哪种解决方案需要根据具体业务场景进行评估。下面主要介绍一下常用的消息对了和Seata方式当使用消息队列作为分布式事务解决方案时,可以将一个分布式事务拆分成多个子操作,每个子操作都是一个独立的消息,然后将这些消息放入消息队列中。消息队列的事务性特性可以保证消息的可靠性,即只有当消息被成功消费后,才会从消息队列中移除,从而保证消息的不丢失和不重复消费。针对这些子操作,可以将它们分别转化为消息,然

2023-03-14 20:00:00 1368 1

原创 使用Lang3实现深拷贝(SerializationUtils.clone())

什么情况下需要对一个对象进行克隆?深拷贝和浅拷贝的区别实现深拷贝深克隆,浅克隆

2023-03-06 15:48:55 1138

原创 MySQL常用函数整理

MySQL常用函数整理,在通过sql处理一些业务场景中,除了使用关联查询、子查询等一些常用sql方法外,还可以使用sql函数去处理聚合函数(Aggregate Functions):对一组数据进行聚合计算,如 SUM、AVG、MAX、MIN 等。数学函数(Mathematical Functions):执行数学计算,如 ABS、CEILING、FLOOR、LOG、POWER、ROUND、SQRT 等。字符串函数(String Functions):对字符串进行操作,如 CONCAT、LENGTH、

2023-03-06 15:24:27 626

原创 通过反射将map类型转为实体对象

通过反射将map类型转为实体对象//获取已声明的字段 Field[] declaredFields = Student.class.getDeclaredFields(); for (Field field : declaredFields) { //获取修饰符,用数字表示 int modifiers = field.getModifiers(); //判断是否

2023-02-10 18:23:10 779

原创 bug记录:java.lang.UnsupportedOperationException

java.lang.UnsupportedOperationException 最近遇到一个这样的问题,报错如下:模拟的代码:想要对一个list处理,但是通过Optional.ofNullable防止为空,如果为空,则返回一个Collections.emptyList(),空的List。之后对返回的stringList做新增处理,调用add方法,就报错了。

2023-02-07 11:25:16 582

原创 通过递归构造树

使用 Stream 流的 filter() 方法来筛选根节点和子节点,并使用 peek() 方法将节点添加到相应的列表中。在 addChildren() 方法中,我们使用 Stream 流的 filter() 方法筛选出每个父节点的子节点,并将它们添加到父节点的 children 列表中。然后,再递归地调用 addChildren() 方法,以添加每个子节点的子节点,直到所有节点被处理完毕。递归出口:可以想到,当子节点下再找不到下一级的子节点了,那么这个root节点下的递归构造就完成了,便可回溯。

2023-02-06 18:10:27 1170

原创 【spring boot应用在项目启动后执行代码】

有时候我们需要在项目启动阶段执行一些代码,比如为了`记录log、启动时检查、启动完成后调用一段业务方法等`。诸如上述业务要求我们可能会经常碰到。Spring Boot 提供了至少 5 种方式用于在应用启动阶段执行代码。如下:CommandLineRunnerApplicationRunnerApplicationListener@PostConstructInitializingBeanApplicationListener(2)

2022-09-26 20:00:00 1941 4

原创 【java组件扩展,自定义扩展点】

SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。在遇到的有些情况下,我们在引入项目中一些公有模块后,想要对其进行功能扩展。让其功能适用于每个想要依赖的其他模块。通常,我们在公有模块中会提供一些扩展接口Spring的扩展点都有哪些BeanFactory和ApplicationContext区别及详解

2022-09-19 12:07:46 1003 1

原创 Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could

Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following: If you want an embedded database (H2,

2022-08-23 14:28:30 355

原创 AspectJ AOP的使用(@Before、@PointCut、@Around等)

最近在看一个项目中使用到AOP的功能,现在将自己过去所学的知识梳理一下。AspectJ AOP的使用(@Before、@PointCut、@Around等)

2022-08-01 22:15:00 4639 1

转载 Structured Streaming 编程模型(Input Table、Result Table、Output Mode...)

Structured Streaming的编程模型,顺带会总结Structured Streaming与Spark Streaming的区别

2022-07-18 15:24:13 351

原创 使用ALS算法的一个电影推荐模型(java操作Spark-ML)

使用ALS算法的一个电影推荐模型(java操作Spark-ML)

2022-07-15 21:00:00 674

原创 Redis集群搭建(Cluster 集群模式,分片集群)

Redis集群搭建(Cluster 集群模式,分片集群),redis相信大家不陌生,是最常用的缓存解决方案了。但是,在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有剩余的服务器可用服务就可用。redis也是一样,要合理的使用redis,搭建一个高可用的集群是必不可少的。主从模式、哨兵模式、分片模式...

2022-07-15 20:00:00 1216

转载 Optional()的使用(java8新特性)

Optional经常使用在判空if(xx==null)中,可以方便的减少代码,提高代码的可阅读性和规范性。下面是对其的使用:在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行一些防御式的检查,所以在代码中常常可见if(obj != null) 这样的判断。幸好在JDK1.8中,java为我们提供了一个Optional类,Optional类能让我们省掉繁琐的非空的判断。下面先说一下Optional中为我们提供的方法...

2022-06-20 18:00:00 436 2

原创 Java操作spark-自定义累加器

Java操作spark-自定义累加器累加器是Spark 计算框架为了能够进行高并发和高吞吐的数据处理封装的三大数据结构之一,功能是实现分布式共享只写变量。累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行merge。以此来实现变量的共写。累加器...

2022-06-17 21:00:00 994

原创 ES集群搭建_使用docker

单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。ES集群搭建_使用docker- 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点- 单点故障问题:将分片数据在不同节点备份(replica )ES集群介绍为什么需要集群ES集群相关概念搭建ES集群集群职责划分集群脑裂问题...

2022-06-14 15:58:30 2677 6

原创 ES查询不存在的索引,索引未创建导致查询报错

项目中的一个es索引是根据时间建立的,在对其操作时候,因时间原因此索引为创建,查询时候报如下错误:`[Elasticsearch exception [type=index_not_found_exception, reason=no such index [xxx_xxx_xxx_202206]]]`可以看到报错原因是因为此索引未发现,不存在。网上查了没找到具体做法,有方法是在查询时候判断是否存在的。但是我们想要的是,==怎样在查询时候忽略不存在的index==

2022-06-02 11:00:44 11449 3

原创 docker命令(常用、简洁)

docker命令(常用、简洁)docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginxdocker run 这个命令是最常用的最基础的了,如下解释:eg:docker run --name myNginx -p 80:80 -d nginxdocker logs 查看容器日志命令,加-f为持续docker ps 查看容器状态,加-a看所有docker exec -it mn bash 进入容器内部,平常不这样用...

2022-05-31 22:45:00 381 5

原创 查es大于10000条数据-滚动查询(scroll)

查es大于10000条数据-滚动查询(scroll),总所周知,es一般查询只支持最多查询出前1w条数据,很难受。想要一次性查询出你想要的数据,一些大数据的场景下,我们需要用到ElasicSearch的两种查询方式:==深度分页==或者==滚动查询==,我们今天使用的是滚动查询方式,因为需要一批次加载全部使用的数据。

2022-05-19 21:30:00 9832 9

转载 朴素贝叶斯算法-公式加实例

朴素贝叶斯法概述、联合概率分布、条件概率 conditional probability、 贝叶斯定理、朴素贝叶斯分类器、 极大似然估计、贝叶斯估计

2022-05-17 18:21:41 1958

原创 Redis 的 hash,及其序列化问题

Redis 的 hash,及其序列化问题介绍常用命令应用场景hash的序列化存储方式介绍一次应用中,需要将MySQL中的表在redis中缓存一份,防止查询次数太多,对数据库造成压力。用到了hash这种结构,对此进行一个理解。Redis hash数据结构 是一个键值对(key-value)集合,它是一个 string 类型的 field 和 value 的映射表(它的key取名为field,为了和redis的key做区分),redis 本身就是一个 key-value 型数据库,因此 hash 数据结构相

2022-05-17 09:57:16 1901 3

movielens提取到的需要的数据

movielens提取到的需要的数据

2022-07-15

空空如也

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

TA关注的人

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