学习笔记
文章平均质量分 91
Xcong_Zhu
这个博客用于分享自己平时写的一些笔记和心得,作为一个类似备忘录的存在,所以很多内容可能包含原理性和文绉绉的一些东西,目的就是哪天自己忘了也可以快速的通过这些笔记重温重拾重新掌握这些知识点。当然了,分享出来的东西不一定完整官方权威且正确,如果有勘误欢迎联系我指正啦~
展开
-
【经验分享】Java注解实战进阶
*** 允许字符串长度的最大值*/int max();/*** 允许字符串长度的最小值*/int min();/*** 错误消息*/1、注解的定义有点像定义接口interface,但唯一不同的是前面需要加一个符号2、注解的成员变量只能使用基本类型、String或者enum枚举,比如int可以,但Integer这种包装类型就不行,需注意3、像上面@Target@Retention这种加在注解定义上面的注解,我们称为“元注解”原创 2024-08-16 10:52:54 · 845 阅读 · 0 评论 -
【经验分享】ShardingSphere+Springboot-04:自定义分片算法(COMPLEX/STANDARD)
通过配置分片策略类型和算法类名,实现自定义扩展。掌握自定义类算法就算法完全掌握了分片算法的精髓,可以根据业务需求灵活配置分片规则。类型:CLASS_BASED可配置属性:属性名称数据类型说明strategyString分片策略类型,支持 STANDARD、COMPLEX 或 HINT(不区分大小写)String分片算法全限定名官方文档给出了一个参考案例如下,没有太多的说明,这尝试用自定义分片算法重新实现[3.3.1]中的行表达式分表规则import org} }原创 2024-08-09 16:28:23 · 576 阅读 · 0 评论 -
【经验分享】ShardingSphere+Springboot-03 : COMPLEX_INLINE 复杂行表达式分片算法
这样看官方文档还是写的不够详细,举个例子,创建一个用户表结构如下,分别是数据源ds1/ds2中分别创建以下两张表。测试一:随机生成用户并插入数据库,打印出来插入对象和预测结果,和实际插入的真实表对比。测试二:查询条件带有user_type和dep_id,测试分表逻辑是否生效。:根据用户类型user_type和部门dep_id进行复杂分库分表。复合分片比较灵活,适合于分片的字段比较多,,使用这种分片的话必须对自己的业务比较明确。原创 2024-08-09 16:27:09 · 536 阅读 · 0 评论 -
【经验总结】ShardingSphere+Springboot-02 数据分片、标准分片算法、时间间隔分片算法
借助多数据源组件和业务逻辑的修改即可实现,比较常见的微服务架构在考虑模块区分时一般也会将数据库按模块进行划分,这就是一种常见的垂直分片设计。:默认情况下,行表达式分片算法不支持范围查询,因为范围查询可能涉及多个分片,而简单的行表达式分片算法通常只能将查询路由到单个分片。面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其中的重要挑战之一。例如:根据主键分片,偶数主键的记录放入 0 库(或表),奇数主键的记录放入 1 库(或表),如下图所示。数据分片的拆分方式又分为。原创 2024-08-09 16:26:03 · 942 阅读 · 0 评论 -
【经验总结】ShardingSphere+Springboot-01模式&参数配置
在实际业务场景中,比较常见的场景是一个库中100张表只有2张表要分库分表,而其余的表则继续访问默认数据源;在5.0.0之前的版本官方支持直接配置默认数据源,目前并没有找到对应的配置说明, 自己尝试解决。也是一个常用的功能,让服务启动时会检查每个分片的数据/表结构是否一致,建议开启,可以解决一些潜在的bug。**测试一:**不配置该表的策略,配置一个数据源defaultds,该数据源汇总有。:不配置改变测试,再配置一个数据源,里面也有该表。表,观察默认情况下ss选择那个数据源。表,数据源声明顺序不变,即。原创 2024-08-09 16:24:01 · 418 阅读 · 0 评论 -
【学习笔记】Maven高级2-依赖配置补充
某个工程25,依赖26和28,26依赖log4j,26依赖27,27依赖log4j。当pom之间的同一个依赖版本出现冲突时,就会使用版本仲裁机制来确定使用哪个版本.导入特定位置的jar包,这样导入不具有可移植性,仅限于本地使用,不推荐使用。比如,编译时根据接口调用方法,实际运行时需要调用接口的实现类。典型案例,就是引入springboot,spirngcloud依赖。管理依赖最基础的方法是继承,而且maven也是单继承。如果要实现“继承”多个父工程的效果,可以使用。,类似java的“组合”原创 2024-06-20 14:16:54 · 505 阅读 · 0 评论 -
【学习笔记】Maven高级01:POM深入了解
其实通过有效POM 我们能够看到,build 标签的相关配置其实一直都在,只是在我们需要定制构建过程的时候才会通过配置build 标签覆盖默认值或补充配置。经过我们前面的学习,我们看到 Maven 在构建过程中有很多默认的设定,例如:源文件存放的目录、测试源文件存放的目录、构建输出的目录.…并不是 Maven 自带的插件,而是 SpringBoot 提供的,用来改变 Maven 默认的构建行为。配置build标签是对超级POM的补充配置,只有在默认的配置无法满足时,才会修改该标签。标签管理起来的插件就像。原创 2024-06-20 14:14:27 · 861 阅读 · 0 评论 -
【经验总结】 PostgreSQL的COALESCE 函数用法
函数在 PostgreSQL 中是一个非常有用的函数,它不仅可以用来自动替换。函数接受一系列的参数,并返回第一个非。值,还可以用于多种其他场景。原创 2024-04-28 14:48:38 · 2455 阅读 · 0 评论 -
【学习笔记】数据结构与算法07 - 图:邻接表,邻接矩阵
图由顶点和边组成,可以表示为一组顶点和一组边构成的集合。相较于线性关系(链表)和分治关系(树),网络关系(图)具有更高的自由度,因而更为复杂。有向图的边具有方向性,连通图中的任意顶点均可达,有权图的每条边都包含权重变量。邻接矩阵利用矩阵来表示图,每一行(列)代表一个顶点,矩阵元素代表边,用 1 或 0 表示两个顶点之间有边或无边。邻接矩阵在增删查改操作上效率很高,但空间占用较多。邻接表使用多个链表来表示图,第 i 个链表对应顶点 i ,其中存储了该顶点的所有邻接顶点。原创 2024-03-21 10:55:53 · 711 阅读 · 0 评论 -
【学习笔记】简单认识Https原理
不少同学对 HTTPS 协议不太理解,分析了一下,之所以觉得 HTTPS 这个东西比较难理解,往往是没有分清主干和分支导致的。HTTPS 的主干非常简单,其实就三层而已。原创 2024-03-18 10:05:57 · 874 阅读 · 0 评论 -
【学习笔记】简单了解网络安全等级保护
等级保护对象是指网络安全等级保护工作中的对象,通常是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息进行收集、存储、传输、交换、处理的系统。主要包括基础信息网络、云计算平台/系统、大数据应用/平台/资源、物联网(IoT)、工业控制系统和采用移动互联技术的等级保护对象根据其在国家安全、经济建设、社会生活中的重要程度,遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度等,由低到高被划分为五个安全保护等级。原创 2024-03-07 09:37:20 · 1738 阅读 · 0 评论 -
【学习笔记】数据结构与算法06 - 堆:上堆、下堆、Top-K问题以及代码实现
「堆 heap」是一种满足特定条件的完全二叉树,主要可分为两种类型,- 「小顶堆 min heap」:任意节点的值 ≤ 其子节点的值。- 「大顶堆 max heap」:任意节点的值 ≥ 其子节点的值。需要指出的是,**许多编程语言提供的是「优先队列 priority queue」,**这是一种抽象的数据结构,定义为具有优先级排序的队列。实际上,**堆通常用于实现优先队列,大顶堆相当于元素按从大到小的顺序出队的优先队列**。从使用角度来看,我们可以将“优先队列”和“堆”看作等价的数据结构原创 2024-03-06 10:00:58 · 1164 阅读 · 0 评论 -
【学习笔记】数据结构与算法05:树、层序遍历、深度优先搜索、二叉搜索树
二叉树 binary tree是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。每个节点都有两个引用(指针),分别指向「左子节点 left-child node」和「右子节点 right-child node」该节点自身被称为这两个子节点的「父节点 parent node」.当给定一个二叉树的节点时,我们将该节点的左子节点及其以下节点形成的树称为该节点的「左子树 left subtr原创 2024-03-01 11:01:49 · 817 阅读 · 0 评论 -
【学习笔记】数据结构与算法04:哈希表、哈希冲突、哈希算法
知识出处:Hello算法:https://www.hello-algo.com/原创 2024-02-21 17:06:28 · 884 阅读 · 0 评论 -
【学习笔记】数据结构与算法03:栈与队列
知识出处:Hello算法:https://www.hello-algo.com/.原创 2024-02-21 17:05:22 · 908 阅读 · 0 评论 -
【学习笔记】数据结构与算法02:数组与链表
知识出处:Hello算法:https://www.hello-algo.com/原创 2024-02-21 17:03:46 · 730 阅读 · 0 评论 -
【学习笔记】算法学习01:复杂度分析
学习地址Hello算法:https://www.hello-algo.com/原创 2024-02-21 17:01:46 · 1055 阅读 · 0 评论 -
【学习笔记】秒杀架构模型设计
秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀,那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?转载 2024-02-19 09:33:37 · 73 阅读 · 0 评论 -
【学习笔记】Flowable - 01 - 工作流 快速上手
Flowable快速上手原创 2024-01-15 15:00:06 · 1515 阅读 · 0 评论 -
【学习笔记】Java函数式编程03 Stream流-终结操作
书接上回。原创 2023-12-26 16:22:33 · 1129 阅读 · 0 评论 -
【学习笔记】Java函数式编程02——Stream流
Stream流是JDK8提供的新特性。使用的是函数式编程的模式。它可以被用来对集合或数组进行链状流式的操作。和之前的IO流进行区分,IO流是针对文件和数据操作可以更方便的对集合和数据进行操作。原创 2023-12-21 09:33:33 · 954 阅读 · 0 评论 -
【学习笔记】Java函数式编程01-Lambda表达式
看懂代码提高处理大数据量集合的效率代码可读性提升消灭嵌套地狱(反复的嵌套for …if …for …if …导致可读性下降Lambda表达式可以理解为JDK8新增了一个语法糖。对某一些匿名内部类的写法进行简化。是函数式编程的重要体现让程序员不用关注对象,而关注对数据的操作语法糖(Syntactic sugar),也译为糖衣语法[外链图片转存中…(img-ultqjqy9-1703122023748)]指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。原创 2023-12-21 09:27:30 · 957 阅读 · 0 评论 -
【备忘录】SpringBoot+ dynamic-datasource配置自定义多数据源
多数据源配置原创 2023-11-01 10:06:48 · 1734 阅读 · 0 评论 -
【学习笔记】RabbitMQ-6 消息的可靠性投递2 (消息幂等性
官方解释x-expires在自动删除队列之前,队列可以闲置多长时间(How long a queue can be unused for before it is automatically deleted)定义了队列自动过期的时间。参数格式 “x-expires”:number如果队列在指定的时间段内未被使用,则该队列将被自动删除。这可以确保不再需要的队列不会一直存在于RabbitMQ服务器上,从而占据资源。两者配合可以指定DLX发送的交换机和键,之前已经研究过就不做赘述了Max length参数用于限制原创 2023-10-18 12:03:10 · 1055 阅读 · 0 评论 -
【学习笔记】RabbitMQ-5 消息的可靠性投递 以及示例代码
消息队列的 confirm 确认机制,是指生产者投递消息后,到达了消息服务器 Broker 里面的exchange 交换机,则会给生产者一个应答,生产者接收到应答,用来确定这条消息是否正常的发送到 Broker 的 exchange 中。这也是消息可靠性投递的重要保障。用于确保消息传递是否正常,但是会牺牲一些性能,但是提高了系统运行的稳定性。原创 2023-10-18 12:00:50 · 173 阅读 · 0 评论 -
【学习笔记】RabbitMQ04:延迟队列的原理以及实现代码
正常的MQ应用场景中,我们希望消息可以快速稳定的传递。但是有一些场景中,希望在指定的延迟后再消费信息,比如订单支付场景(订单15部分内未支付则关闭订单)。这类实现延迟任务的场景,就可以采用延迟队列来实现。以下介绍一下其他的一些方法。原创 2023-10-17 16:16:57 · 1320 阅读 · 1 评论 -
【学习笔记】RabbitMQ03:DLX 死信交换机 死信队列 以及示例代码
即DLX(Dead-Letter-Exchange)。也称为:死信交换机、死信邮箱。如下情况后,消息会进入死信交换机中。并进一步被安排到死信队列里,消费者也可以从死信队列中获取消息。原创 2023-10-17 16:14:55 · 259 阅读 · 0 评论 -
【学习笔记】RabbitMQ02:交换机,以及结合springboot快速开始
根据路由键匹配,进行路由消息队列。生产者将消息发送到交换机X交换机会根据路由键匹配队列并且同一个键也可以匹配多个队列通配符匹配(路由键),相当于模糊查询匹配多个单词,用来表示任意数量的单词(一个或多个匹配一个单词(必须且只有一个)用来隔开为一个单词举个例子:左边是队列的路由键,而右边是发送的路由键头部交换机使用较少,要知道,每一次消息不只包含body,还有头部信息headers。原创 2023-10-16 14:52:09 · 830 阅读 · 0 评论 -
【学习笔记】RabbitMQ01:基础概念认识以及快速部署
标签页分别是概述 overview连接 connections信道 channels交换机 exchanges队列 queues系统配置 admin。原创 2023-10-16 14:49:31 · 368 阅读 · 0 评论 -
【学习笔记】手把手搭建并操作Maven私服:Nexus
在该页面上传文件,输入群组ID,项目ID,版本信息等。选择仓库类型找到maven2 ——>根据前面介绍的仓库分类,这里选择hosted。(可选)为了便于检索,就可以将私库也添加到maven-public组中。输入仓库名称,选择仓库版本侧列,这里以release为例。使用私服代理后:中央仓库的组件就会存放到中央仓库中。由于私服中可以存放多个仓库,那么久可以组成仓库组。将新仓库,添加到maven-public群组中。要配置私服仓库的地址。,即可发布到私服仓库了。原创 2023-10-13 14:57:42 · 151 阅读 · 0 评论 -
【学习笔记】Spring Security 01 认识Spring Security的重要特征(Features)
Spring Security(简称SS)是一个高可用的、可自定义的身份认证和鉴权控制的框架。类似的框架还有Shiro。需求场景:现今流行的web开发中,。原本的鉴权开发流程:springweb自带的过滤器、拦截器等等。涉及到的方面使用过滤器需要大量的原生代码——冗余。所以为了解决这些问题,就需要框架来帮助我们实现。原创 2023-10-13 14:54:05 · 1308 阅读 · 0 评论 -
【学习笔记】SpringFox+Swagger3快速入门,附代码
Springfox 的 Java 库套件旨在自动生成机器和人类可读的内容 使用Spring 系列项目编写的 JSON API 规范。春狐 通过在运行时检查一次应用程序来根据 Spring 配置、类结构和 各种编译时Java注释。原创 2023-10-13 14:52:28 · 249 阅读 · 0 评论 -
【学习笔记】快速学习链式编程和建造模式 ,附代码
当一个对象非常复杂,比如包含了很多简单的对象,就可以使用建造者模式引导用户一步一步创建简单对象,最后再来建造复杂对象。链式编程是一个很实用的小技巧,对于很多赋值用的set方法都可以使用链式编程,并且不会对原来的写法有影响。可以看到,lombok帮我们创建了一个建造者的内部类。链式编程的原理是返回一个 this 对象,也就是返回对象本身,从而达到链式效果。在POJO类的内部写一个静态内部类 : 建造者类,命名为XX-Builder。(举个例子,比如要组装一个电脑,就需要一步一步的装各种配件…原创 2023-10-13 14:49:07 · 139 阅读 · 0 评论 -
【学习笔记】minIO分布式文件服务系统
纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB,感兴趣的同学请翻墙google。原创 2023-10-13 10:57:53 · 2328 阅读 · 1 评论 -
【GIS相关】 了解坐标系
EPSG坐标系是由欧洲石油和天然气探勘协会(EPSG)定义的一组标准地理坐标系,用于描述地球上的位置和形状。而CRS坐标系则是指坐标参考系统,是一种将地球表面上的位置转换为数字坐标的方法。在GIS中,EPSG坐标系和CRS坐标系常常被用来描述地图数据的空间参考。EPSG坐标系的编号通常被用来标识特定的坐标系,而CRS则通常包括了更多的信息,例如投影方式和椭球体参数。WGS84:全球卫星定位系统(GPS)使用的坐标系,也是Google地图和OpenStreetMap等在线地图服务使用的坐标系。原创 2023-07-24 08:42:06 · 1971 阅读 · 0 评论 -
【问题总结】Docker环境下备份和恢复postgresql数据库
备份恢复原创 2023-07-18 18:28:01 · 3844 阅读 · 0 评论 -
【学习笔记-QGIS】 QGIS从零快速上手
安装文章参考:https://zhuanlan.zhihu.com/p/370633306。原创 2023-07-05 14:46:37 · 8149 阅读 · 3 评论 -
基于Docker-compose实现的Postgresql-11的主从复制
记录一次主从复制的配置经历。原创 2023-06-29 14:46:55 · 1544 阅读 · 0 评论 -
【Java+GS】GeoServer,通过配置自定义样式,实现不同图斑展示不同颜色。附java实现方法
目标:根据数据库动态生成发布所需的sld文件。其实就是需要6个核心参数:条件x2, stroke x2 , fill x2property_name 字段名literal 条件fill_color 填充颜色fill_opacity 不透明度stroke_color 线条颜色stroke_width 线宽给出初版表结构如下。原创 2023-05-08 09:27:30 · 2672 阅读 · 0 评论 -
【Java+GS】GeoServer——使用Java发布图层(SHP文件和DB数据库),附自用工具类
排查是因为shp、压缩包以及publishShp的参数layerName名称不一致。测试成功,注意传入的地址address就是 ip + /geoserver,比如。传入的参数一个可以自定义的string作为工作空间的名称。在这里,我们发现了shpPath的来源,是从数据库中取到的。还是有问题,不过手动操作发布就已经可以成功发布图层了。解决,就是数据库字段和实体的类型不对呀,更新一下即可。在发布图层时,会根据这个路径创建文件。接下来测试一下连接数据库的测试。样式先用现有的样式,进入测试。原创 2023-05-05 16:46:17 · 4109 阅读 · 7 评论