- 博客(486)
- 收藏
- 关注
原创 4. 自定义Realm
1.创建一个类 ,继承AuthorizingRealm->AuthenticatingRealm->CachingRealm->Realm2.重写授权方法 doGetAuthorizationInfo3.重写认证方法 doGetAuthenticationInfoUsernamePasswordToken : 对应就是 shiro的token中有Principal和CredentialSimpleAuthorizationInfo:代表用户角色权限信息。
2025-09-23 11:22:44
207
原创 2. 基于IniRealm的方式
由多个部分(Section)组成,每个部分都有一个明确的名称,用方括号括起来 [sectionName]Shiro 的权限字符串是高度自由的,但通常使用 资源:操作:实例 这种冒号分隔的格式。定义角色与权限的静态映射关系。格式为:角色名 = 权限字符串1, 权限字符串2, …这个部分用于静态地定义用户,格式为:用户名 = 密码, 角色1, 角色2, …准备一个.ini文件,存储用户信息,并且IniRealm支持权限校验。适用一些小型系统,不必使用数据来实现。
2025-09-22 21:23:06
135
原创 1. shrio入门
密码是admin,所以会抛出密码异常:org.apache.shiro.authc.IncorrectCredentialsException。用户名错误,抛出用户名异常:org.apache.shiro.authc.UnknownAccountException。代码中的超级管理员,商户都是角色。
2025-09-22 17:37:06
284
原创 6 广播表
1. 广播表(公共表) 属于系统中数据量较小,变动少,而且属于高频联合查询的依赖表。2. 参数表、数据字典表等属于此类型。3. 可以将这类表在每个数据库都保存一份,所有更新操作都同时发送到所有分库执行。
2025-09-12 17:43:34
216
原创 5 绑定表
t_order和t_order_item,均按照order_id分片,则此两个表互为绑定表关系。绑定表之间的多表关联查询不会出现笛卡尔积关联,可以提升关联查询效率。分别创建t_course_section_0 和 t_course_section_1 表。查询每个订单的订单号和课程名称以及每个课程的章节的数量.
2025-09-12 16:54:02
221
原创 4 水平分库分表
2. 数据准备:数据先找到database,然后找到自己的table在这两个库中,分别创建表t_course_0,t_course_14 配置文件:这是自定义的实现方式,不是官网推荐的方式5 测试6 测试结果
2025-09-12 10:47:02
465
原创 3 水平分表
基于MyBatisPlus的id策略:将Course类的id设置成如下形式。水平分片需要关注全局序列,因为不能简单的使用基于数据库的主键自增。基于ShardingSphere-JDBC的全局序列配置。分片算法名称table-inline是自定义的。去除mybatis的分布式id注解。
2025-09-12 00:03:52
274
原创 2. ShardingSphere实战
Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。官网: https://shardingsphere.apache.org/document/current/cn/overview/Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。
2025-09-11 15:10:56
875
原创 1. 数据库架构演变与分库分表介绍
简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
2025-09-11 14:37:27
830
原创 2 修改、删除和查询操作
可以发现Dao实现类中的方法是实现是有很多可以相互约定的操作,如果相互都按照约定来执行的话,那么我们完全可以省略掉Dao的实现类,通过代理对象来实现。单独提供SqlSessionFactory单例方法。
2025-09-09 17:17:56
191
原创 1. MyBatis的基本使用
2.创建全局配置文件XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。例如:3.定义User对象4.创建映射文件5.将映射文件关联配置文件6. 测试代码运行在Maven项目中默认的src/main/java目录下面只会打包java编译后的class文件,所以对于的UserMapper.xml文件是不会打包进去的。出现这种情况我们需要在pom
2025-09-09 16:48:25
252
原创 9 搜索数据
但是存在一种可能,就是索引中保存的是UTC时间,但是查询条件又想用北京时间来筛选,此时需要在查询条件中添加参数:“time_zone” : “+08:00”,表示查询条件的时间对应的时区是东八区。所谓精准查询,指的是搜索内容不经过文本分析,直接用于文本匹配,这个过程类似于数据库的SQL查询,搜索的对象大多是索引中的非text类型的字段。术语查询直接返回包含搜索内容的文档,常用来查询索引中某个类型为keyword的文本字段,类似于sql中的"="查询.从搜索结果中看,只有新增的数据被检索出来了。
2025-08-21 16:26:36
318
原创 8 文本分析
全文检索与常规关系型数据库SQL查询的显著区别,就是全文检索具备对大段文本进行分析的能力,它可以通过文本分析把大段的文本切分为细粒度的分词。
2025-08-18 09:55:18
738
1
原创 7 索引的监控
从上述返回结果可以看出索引的监控状态,运行状态,主分片和每个主分片的副本分片数量,现有文档总数,删除文档总数,索引占用的空间大小,主分片占用的空间大小。由于是单节点,副本分片无法分配,所以主分片占用的空间和索引占用的空间大小是一样的.索引的状态分为三种:为了让副本分片得到分片,可以再次启动一个节点,进入到elasticsearch的安装目录下,进行cmd操作:再次查询索引的状态:一个索引的分片实际上是一个Lucene索引,一个Lucene索引是由很多个段(segment)构成的。可以使用_cat/s
2025-08-18 00:05:31
469
原创 6 索引的块,模板
假设,我们需要创建两个索引:asset-log1和asset-log2,这两个索引分别记录了不同年份的服务器日志,他们的映射结构是相同的,也具有相同的分片数和别名。在上述配置中,index_patterns用于设置索引模板可以匹配的索引名,这里配置了以asset-log开头的索引都会"命中"此模板。有了模板后,创建索引时,一旦被模板匹配上就会自动加载模板的配置到索引映射中,例如创建索引:asset-log1。当需要为同一类索引应用相同的配置,映射,别名时,如果每次创建索引都逐一配置会比较耗时。
2025-08-17 18:05:50
397
原创 5 索引的操作
上面的滚动索引配置的条件是,如果往别名logs-all中写入的索引数据量大于等于1,或者主分片总大小超过5GB,或者创建索引的时间长度超过7天,就把新的数据写入新索引log2。当一个索引数据量太大时,如果继续写入数据可能会导致分片容量过大,查询时会因内存不足引起集群崩溃。滚动索引需要配合索引别名一起使用,可实现把原先写入一个索引的数据自动分发到多个索引中。现在来为别名logs-all指定一个滚动索引,如果条件成立,就把新数据写入logg2.为了避免所有的数据都写入同一个索引,可以考虑使用滚动索引。
2025-08-16 22:48:27
252
原创 4. 索引数据的增删改查
由于elasticsearch不支持事务管理,自然也就没有事务的隔离级别。由于无法保证修改请求是按顺序到达elasticsearch的,需要防止低版本的修改请求把高版本的数据覆盖,这时就需要使用乐观锁进行并发控制。上面的请求使用了_update端点进行数据修改,这时只需要传递主键和需要修改的字段内容,对于无须修改的自带可以不用提供。查询插入的数据:GET test33/_doc/1。删除数据:delete test33/_doc/1。乐观锁的实现是基于版本号或者时间戳进行的。
2025-08-14 22:09:52
253
原创 03 Maxwell
Maxwell是由美国Zendesk开源,使用Java编写的MySQL实时抓取工具,可以实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它设计的初衷是实时采集Mysql数据到Kafka。支持全表load数据,支持自动断点还原,支持按照列将数据发送到Kafka不同分区。
2024-08-08 18:09:13
734
原创 03 Canal HA原理及安装
Canal一般用于实时同步数据场景,那么对于实时场景HA显得尤为重要,Canal支持HA搭建,canal的HA分为两部分,canal server和canal client分别有对应的HA实现。将Canal安装包上传到node3,node4,并解压到“/software/canal”目录下,修改“/software/canal/conf”下的canal.properties文件,加上zookeeper配置。zookeeper地址:node3:2181,node4:2181,node5:2181。
2024-08-08 17:45:17
1083
原创 02 Canal的安装&使用
首先需要在Canal中配置CanalServer 对应的canal.properties,这个文件中主要配置Canal对应的同步数据实例(Canal Instance)位置信息及数据导出的模式,例如:我们需要将某个mysql中的数据同步到Kafka中,那么就可以创建一个“数据同步实例”,导出到Kafka就是一种模式。基于get获取的batchId进行提交,避免误操作。data:最新的数据,为JSON数组,如果是插入则表示最新插入的数据,如果是更新,则表示更新后的最新数据,如果是删除,则表示被删除的数据。
2024-08-08 17:00:05
1776
原创 01. 实时数据同步工具
Canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 触发器获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。
2024-07-31 15:26:47
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人