- 博客(157)
- 资源 (10)
- 收藏
- 关注
原创 飞书获取用户及部门信息
1、进入企业后台管理,创建一个企业自建应用 ,获取App ID,App Secret。有两种方式可以获取:1、api 2、sdk的方式。我这里采用sdk的方式,需要引入maven依赖。2、 对应用设置api权限及数据权限。3、Java客户端获取用户,部门信息。
2024-09-19 10:36:24 184
原创 canal监听mysql增量数据发布到rabbitmq
注意:canal.serverMode = rabbitMQ 由于选择的是rabbitMQ ,则需要把plugin/connector.rabbitmq-1.1.8-SNAPSHOT-jar-with-dependencies.jar的复制到lib目录,否则会出现问题。//这里就是在安装canal配置的adminPasswd密码,这里是admin,由于要配置加密的密码,可以去mysql中执行select password("admin"),把前面那个*去掉即可。
2024-08-06 13:49:29 1291 1
原创 使用arthas ognl表达式调试方法
对返回的结果取值-map中根据key取value。下面我们根据一个spring bean来测试。对返回的结果取值-根据索引取list中的元素。点击复制命令,放在arthas客户端去执行。说明这个方法入参为0,返回的结果为null。获取spring bean对象中的普通属性。用idea的目的就是生成执行命令较为方便。idea在线安装arthas插件。执行方法-对象传参,返回list。对返回的结果取值-取对象中的属性。
2023-03-30 14:49:43 833 1
原创 mybatis多线程事务回滚
在有事务的方法中,有时候我们需要对这个方法进行性能优化,性能优化的措施采用多线程并发处理,不同的线程,在mybatis中创建的sqlSession不同,导致多线程之间同一时刻不能使用同一个connection(数据库的session),从而多线程执行的sql不会同时进行事务的回滚。链接可以通过数据库链接池被复用。在MyBatis中,不同时刻的SqlSession可以复用同一个Connection,同一个SqlSession中可以提交多个事务。
2023-03-23 12:02:11 1738
原创 k8s使用hostpath卷持久化数据
会在qhtx-k8s-node-001和qhtx-k8s-node-002节点下自动创建/root/logs目录,并且把容器中目录下的文件给同步过来,当容器关闭,文件仍然会存在。得知这个应用部署在 qhtx-k8s-node-002,和 qhtx-k8s-node-001节点下。容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。• 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会丢失。挂载Node文件系统(Pod所在节点)上文件或者目 录到Pod中的容器。
2023-03-14 19:42:05 660
原创 用arthas轻松排查线上问题
你是否在项目中会碰到以下一些问题:在代码中打印各种日志来排查,比如方法的入参,出参,及在方法体中打印日志判断走哪行代码 还有你觉得代码没问题,可是运行出现却是以前的bug,感觉代码没修改,或者别人把你修改好之前的代码部署上去了,你想要看线上部署的是不是你修改的最新代码,把包从服务器上下载下来然后再反编译查看 有些接口请求很慢,你想知道这个接口的方法调用链中耗时时间,你以前是不是通过切面去打印每个方法的耗时时间,修改代码,重新部署 当进程CPU飙高或者占用内存较大,你用top命令查看,然后top -
2023-03-02 10:29:13 2152
原创 mycat2使用
解压mycat2-install-template-1.21.zip把mycat2-1.21-release-jar-with-dependencies.jar放在mycat/lib中修改mycat/conf/datasources/prototypeDs.datasource.json配置文件进入到mycat/bin目录,执行以下命令对文件分配权限服务启动客户端进行连接默认的端口是8066,可以在mycat/conf/server.json中修改。
2023-02-09 17:25:42 1215 1
原创 ogg改变表结构和新增表操作
2、新增topic,由于新增topic需要添加新的REPLICAT进程为 REKAFKA2。修改新topic文件内容htf_damp_dimensionTopic.props。TARGETDB LIBFILE:修改为对应的topic文件名,后面会创建该文件。2、修改表结构定义文件(由于配置table QHTX_DW.* 不需要操作)添加:TABLE QHTX_DW.TP_SF_HOLD;添加:TABLE QHTX_DW.TP_SF_HOLD;3、退出ogg命令行,创建topic文件。查看进程状态是否正常。
2023-01-09 17:24:14 1446
原创 flink单机部署和简单使用
这个实时处理作业的source 是 scoket ,slink是print,对实时接收数据中的单词进行个数统计。看streaming作业会一直处于running运行中。利于nc启动socket server。Java版本:1.8.0_45。实时处理socket流数据。
2022-12-13 20:15:57 1136
原创 如何清理ogg日志文件
进入目标端ogg文件目录,/usr/local/ogg/dirdat,删除hr000009674之前的文件,不要都全部删掉,最好保留5-6个最新文件。ogg分为源端和目标端,由于目标端和kafka部署在一机器上,ogg日志文件使这台机器磁盘频繁的被占满, 导致kafka 进程被杀死。之前配置的是3天就把已经完成推送的日志给删除,现在改成1小时就把已经完成推送的日志给删除。接下来的话 ./dirdat/* 日志文件就不会频繁的把磁盘占满了。其中一个文件500M。可以看到消费到哪个文件。
2022-11-09 18:48:58 2707
原创 redis cluster伪集群搭建及应用
集群架构: redis 版本:Redis 5.0.8下载地址为:https://download.redis.io/releases/安装步骤:1、安装gcc环境 : 执行 yum install gcc-c++2、进入文件夹编译cd /usr/local/redismake3、进入src文件夹,执行make install进行Redis安装make install4、编写6份redis.conf配置文件,端口号分别为7001,7002,7003,7004,7005,7006,如下7001端口的配置文件为
2022-11-09 09:52:39 354
原创 kafka监控工具----cmak安装
https://space.dingtalk.com/s/gwHOBC65GQLOAur0NgPaACAzYzYwMzhmNjZlYzc0OGY3YTY0NGNmOTExZDg4NTAwNQ 密码: sGEX。当前已安装的kafka版本:kafka_2.13-2.7.0 2.13为scala版本,2.7.0为kafka版本。则安装cmak需要Java 11及以上环境,kafka的版本为0.8,0.9,0.10,0.11及以上版本。jdk11下载的地址为:阿里云云盘链接如下。
2022-11-04 14:59:35 924
原创 trino关于查询elasticSearch中时间字段的问题
这段话的意思就是,elasticSearch支持很多时间类型的格式化方式,但是trino中es连接器只支持默认的date类型,就是不能加时间格式化。创建 yc_test_data 索引,索引中包含两个属性create_time 和 name。如果索引yc_test_data的mapping改成这样,则用trino可以查询出来。注意看,带有格式化的时间字段create_time没有查询出来。
2022-09-15 17:41:24 1139
原创 ORCAL给时间戳字段赋默认值,精确到毫秒级
为什么要精确到毫秒级呢?因为批量插入数据的时候,1s钟可以插入很多条数据。如果需要对数据先后来排序,显然不符合要求,所以要精确到毫秒级。
2022-09-09 15:47:37 2552
原创 freemarker+poi实现动态生成excel文件及解析excel文件
pom文件配置:配置文件:生成模板ftl文件步骤:1、新建excel文件:test.xlsx 2、把文件另存为xml文件,即test.xml 3、把test.xml修改文件后缀名,改为test.ftl 4、ftl文件格式化在线 XML 格式化 | 菜鸟工具 5、test.ftl文件中添加动态数据参数最终把test.ftl文件放到resources/templates下,freemarker默认读取模板文件的位置下面使用springboot+freemarker动态生成并在线下载excel文
2022-07-01 18:06:19 10063 8
原创 spring 事件监听器的使用及事件异步处理
spring 中的事件监听机制是运用观察者模式来实现的,观察者模式的优点有:1、观察者和被观察者之间低耦合,代码比较好维护2、被观察者和观察者之间是一对多的关系(当然也可以一对一),当被观察者状态改变的时候,多个观察者能同时进行处理,能实现广播通讯观察者模式有两种角色:1、Subject 目标角色:接收外界的状态变化,向观察者发送通知(广播通知) 2、Observer 观察者角色:就是具体操作的一个实体,根据Subject状态变化,会触发自身的具体操作逻辑所以说subject 和 obser
2022-06-29 11:30:06 2562
原创 使用stream api替代sql
假设mysql数据库中有两张表:user用户表 company企业表 当这以上两种类型的数据不是存放在数据库中,而是分别来自两个接口,如果想要对分别来自两个不同的接口的数据做一些join,group(sum),order,limit等操作的时候,我们就需要使用stream api来进行处理在java中用list来封装用户,企业信息:用mysql实现: 用stream api(sorted)实现: 用mysql实现: 用stream api(limit)实现:
2022-06-16 21:16:06 444 4
原创 Java获取日历数据及用mybatis进行保存
@Configurationpublic class RestClientConfig { @Bean RestTemplate restTemplate(){ return new RestTemplate(); }}package com.htf.damp.service.impl;import com.htf.damp.mapper.HolidayMapper;import com.htf.damp.model.DayHodilyDetai.
2022-05-28 13:57:00 595
原创 sql语法检测
maven配置: <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>4.2</version> </dependency>用 jsqlparser可以限定输
2022-05-28 13:45:08 5415
原创 执行逻辑大同小异的实现类使用模板模式
接着前一篇文章:使用枚举实现工厂模式_为爱停留的博客-CSDN博客如现在有从四个维度日度/周度/自定义,实现定时调度,现在每个维度有一个实现类,当创建不同维度的定时器的时候,就会触发实现类去执行枚举类:package com.htf.damp.custom_enum;import com.htf.damp.quartz.QuartzCustomManager;import com.htf.damp.quartz.QuartzDayManager;import com.htf.damp.quartz.Qu
2022-05-25 10:35:13 146
原创 使用枚举实现工厂模式
如现在有从四个维度日度/周度/自定义,实现定时调度,现在每个维度有一个实现类,当创建不同维度的定时器的时候,就会触发实现类去执行枚举类:package com.htf.damp.custom_enum;import com.htf.damp.quartz.QuartzCustomManager;import com.htf.damp.quartz.QuartzDayManager;import com.htf.damp.quartz.QuartzMonthManager;import c
2022-05-25 10:19:05 424
原创 Java强引用,软引用,弱引用
强引用一般我们声明变量都是强引用,如:int[] array1 = getArray();-Xmx10M -XX:+PrintGCDetailspackage com.fen.dou;public class YInyong { public static void main(String[] args) throws InterruptedException { int[] array1 = getArray(); int[] array..
2022-04-26 22:51:19 548 3
原创 java bio,nio(内存映射/零拷贝),aio(直接IO)
socket client:先来了解几个关键词:1、DMA控制器:通俗来讲,就是操作内存和硬盘之间数据的复制,可以让当前线程释放CPU,在DMA出来之前,是由CPU来做这事的2、pageCahe:就是一个高速缓冲区,缓存IO(大部分IO操作都是缓存IO)中用户态和内核态之间的一个桥梁3、缓存IO,直接IO缓存IO:大部分IO使用的一种方式直接IO:在AIO(nio2)中使用到4、mmap:就是用户进程虚拟内存地址和内核内存间直接建立映射关系,用户态可以直接访问内核态.
2022-04-22 12:48:36 1341
原创 sleuth+zipkin链路追踪
sleuth+zipkin大致工作图:sleuth: 有以下术语:Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址) ,span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。 Trace:一系...
2022-04-17 03:42:07 2609
原创 cas server和client搭建
下载地址:GitHub - apereo/cas-overlay-template at 5.3Apereo CAS WAR Overlay template. Contribute to apereo/cas-overlay-template development by creating an account on GitHub.https://github.com/apereo/cas-overlay-template/tree/5.3解压压缩包,执行打包命令:./build.sh pa..
2022-04-16 18:20:44 1160
原创 CAS SSO用户认证原理分析
cas中重要的三个属性:TGT: 缓存在cas server用户登录标识的票据(可以存放在mongodb,mysql等数据存储介质中,默认是放在本地内存中) TGC:缓存在浏览器cookie中用户登录标识,在同一个用户下,可以用TGC去cas server中查找对应的TGT,获取ST ST:就是ticket,用来验证是否可以访问资源服务器的票据现在有两台资源服务器,一台资源服务器A,一台资源服务器B,现在想要资源服务A和资源服务器B实现单点登录第一次登录资源服务器A流程:由
2022-04-15 19:30:44 3011
原创 mysql-join优化
如有两张表:mysql> select * from testleft;+----+---------+| id | user_id |+----+---------+| 4 | NULL || 5 | NULL || 1 | 1 || 2 | 2 || 3 | 3 |+----+---------+5 rows in set (0.03 sec)mysql> select * from testright
2022-04-15 15:08:52 1747
原创 mysql-count优化
countcount是统计数据的行数的,一般分页都会用到,常见的有count(1),count(*)写法,很多人会人作为count(1)的效率会高,用数据说话count(*):mysql> SELECT count(*) FROM `job_instance`;+----------+| count(*) |+----------+| 2345399 |+----------+1 row in set (35.19 sec)mysql> EXPLAIN SEL.
2022-04-13 23:34:23 1790
原创 线程上下文类加载器的作用
在spring中,有一个获取默认的类加载器的方法public static ClassLoader getDefaultClassLoader() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoader(); } catch (Throwable ex) { // Cannot access thread context ClassLoader - falling ba
2022-04-12 18:45:30 930
原创 spring IOC和AOP
springspring data :如常见的spring data jpa,有hibernate实现,springdata jdbc,spring boot 集成mybatis底层就使用了 ,spring data redis等等 spring core(ioc容器的实现) , spring web ,包括了支持很多web容器组件,如webflux,undotow,tomcat等等 spring web mvc 基于spring web实现的mvc框架 spring securit...
2022-04-12 01:01:39 644 3
原创 为什么要用微服务?
从传统单体架构,到集群架构,再到微服务架构过程单体架构有单点问题,如果宕机所有的服务都不可用 所有业务的功能模块都聚集在一起,如果代码量多,功能之前如果有很多共同的代码,不同业务的需求开发同时进行的时候,维护起来有点麻烦 由于是单体,对请求的并发量,有限制,一个tomcat,并发量千级左右 由于代码都聚集在一起,部署慢 修改bug,牵扯的可能性的代码有很多,修个bug可能需要把所有功能模块都测试一遍 扩展成本高,根据单体架构图假设用户模块是一个CPU密集型的模块(涉及到大量的运算)..
2022-04-11 18:03:19 3431 3
原创 @Transactional注解解析
@Transactional注解默认:隔离级别:Connection.TRANSACTION_REPEATABLE_READ,可重复读的隔离级别,传播机制:Propagation.REQUIRED,如果当前没有事务,则自己新建一个事务,如果当前存在事务,则加入这个事务readOnly首先要弄清楚如果一个接口中有多个查询,需要不需要加@Transactional ?如果不需要,会不会出现多个sql查询,数据不一致的情况? //关闭mybatis的二级缓存 @Overri
2022-04-09 15:05:52 2376
原创 mysql保证数据的安全性
mysql 是日志先行的原则,在操作一条数据的时候,就会把旧数据插入undolog在事务提交的时候,会把最新的数据保存在redolog表中在事务提交之后,如果开启了binlog,则会把sql或者数据的前后变化保存在binlog中undo.log和redo.log保证了数据的一致性,保证了数据库的安全持久性:持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何数据库系统故障。持久性通过数据库.
2022-04-08 16:16:14 2027
原创 几种可行的分布式事务解决方案
数据库层面上的分布式事务1、XA事务:是DTP模型定义TM和RM之间通讯的接口规范。XA接口函数由数据库厂商提供。TM用它来通知数据库事务的开始、结束、提交、回滚。基于XA规范衍生出下面的二阶段提交(2PC)、三阶段提交(3PC),sharding-jdbc和mycat都实现了XA事务2、JTA:Java的事务API,需要第三方实现,目前JTA的实现有以下几种形式 J2EE容器提供的JTA实现(Weblogic、JBoss ); JOTM(Java Open Transact...
2022-04-07 23:05:22 843
转载 SPRING CLOUD ALIBABA与SPRING BOOT、SPRING CLOUD版本对应关系
一、前言在搭建SpringCloud项目环境架构的时候,需要选择SpringBoot和SpringCloud进行兼容的版本号,因此对于选择SpringBoot版本与SpringCloud版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启动不起来,怪异的则会是你的项目出现一些诡异的问题,查资料也不好查。下面就收集一下SpringBoot与SpringCloud版本之间的对应关系,在搭建项目框架或者学习时按照对应的版本区间进行选择即可,避免走一些不必要的弯路。1. 历史版本图Release
2022-04-07 15:56:21 2712
原创 eureka
eureka server集群maven配置: <dependencyManagement> <dependencies> <!--引入springcloud的版本--> <dependency> <groupId>org.springframework.cloud</groupId> ...
2022-04-07 14:12:21 954
awt动态曲线sdkawt动态曲线sdk
2023-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人