- 博客(167)
- 收藏
- 关注
原创 springboot+canal+mysql+redis缓存双写一致性
canal官网地址:https://github.com/alibaba/canal/wiki/QuickStart基本上按照官网的步骤来就行。
2023-09-18 14:26:42 591
原创 Springboot整合规则引擎
在 LHS 当中,可以包含 0~n 个条件,多个pattern之间可以采⽤“&&” (and) 、 “||”(or)和“,”(and) 来实现,也可以不写,默认连接为and。如果 LHS 部分为空的话,那么引擎会⾃动添加⼀个 eval(true)的条件,由于该条件总是返回 true,所 以 LHS 为空的规则总是返回 true。LHS(Left Hand Side):是规则的条件部分的通⽤名称。在 Drools当中共提供了⼗⼆种类型的⽐较操作符, 分别是: >、 >=、 <、 <=、 = =、!
2023-09-15 11:37:05 576
原创 aliEasyexcel导出单元格实现下拉框,下拉框数据字典查询,超过50不显示字典数据问题解决方案
excel下拉框选择数据,数据超过50不显示问题
2023-06-16 09:42:13 628
原创 Mysql多表联合查询,行转列
core_code是字符,但却搞成 了数字 ,问题就出在sum ,所以 如果不是计算类型的,最好不要用su。项目中,所有的字段是通过key和value的形式存放的,以至于导致查询某一个人的数据,需要进行判断,一开始在网上找了很多,大部分都是 一样demo,第一次尝试,结果不是我想要的。
2023-04-19 19:07:20 383
原创 Mysql中 in 和exists 执行的结果为什么不一样
参考地址:https://blog.csdn.net/Maxiao1204/article/details/120467106sql如下;第一条sql SELECT count(*) FROM hlms_toc_role tr WHERE tr.disabled = 0 AND tenant_id =540 and id in ( SELECT
2022-05-18 15:14:15 606
原创 Elasticsearch 基本操作
基本操作CRUDPUT /ecommerce/product/1{ "name" : "gaolujie yagao", "desc" : "gaoxiao meibai", "price" : 30, "producer" : "gaolujie producer", "tags": [ "meibai", "fangzhu" ]}{ "_index": "ecommerce", "_type": "product", "_id"
2022-05-04 20:06:33 156
转载 多线程使用不当,造成OOM
本次代码摘自某公众号造成OOM代码模拟public static void test() throws InterruptedException, ExecutionException { Executor executor = Executors.newFixedThreadPool(3); CompletionService<String> service = new ExecutorCompletionService<>(executor);
2022-04-28 08:41:55 550
原创 Springboot整合Minio文件上传下载
linux安装minio创建一个文件miniomkdir miniocd minio --进入到文件执行下载命令 wget https://dl.minio.io/server/minio/release/linux-amd64/minio创建一个日志文件 ,方便查看日志touch minio.log 点击下载好之后 执行运行命令 ./minio server /opt/minio/data -- 这条命令不是后台启动命令 关闭窗口 程序则停止运行成功页面上面会显示系统自带的用户
2022-04-21 19:50:58 1934
原创 Mysql Sql查询之Limit 用法
面试题?你知道mysql 中limit的用法吗? 你是怎么使用的? 在一条sql语句中 limit 1 表示什么,limit 1,3 又是什么意思?这道题本人答的很烂。。。。。在mysql中,limit关键字主要用于指定查询结果从哪条记录开始显示,一共显示多少条记录;它有3种使用语法“LIMIT 初始位置,记录数”、“LIMIT 记录数”和“LIMIT 记录数 OFFSET 初始位置”。当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就
2022-04-14 09:38:53 7589
原创 mysql分组查询 取最新一条数据
select * from ( select hai.PROC_INST_ID_ AS processInstanceId, case when hai.ACT_NAME_ is null then hai.ACT_TYPE_ else hai.ACT_NAME_ end AS currentActName from act_hi_actinst hai where hai.PROC_INST_.
2022-04-13 16:46:18 3545 1
原创 表单json赋值 ,String字符串填写
格式一formDate 为单一的 String formDate="{\"input_1648710489626\":\"lkz\",\"input_1648710513450\":\"测试请假表单\"," + "\"number_1648710548258\":\"3\",\"datetime_1648710573324\":\"2022-04-01\"}"; String formJson="[{\"key\": \"input_16487104896
2022-04-01 16:56:13 597
原创 Mysql利用存储过程动态拼接sql查询数据
代码如下:// 这个是满足条件需要调用的存储过程 可以看下上篇存储过程迁移数据篇drop PROCEDURE if EXISTS test_dept;CREATE PROCEDURE test_dept () BEGIN DECLARE d_id INT ( 11 ) DEFAULT 0; DECLARE d_name VARCHAR ( 64 ) DEFAULT NULL; DECLARE d_level VARCHAR ( 64 ) DEFAULT NULL; DECLARE flag
2022-01-13 17:38:50 1949
原创 mysql利用存储过程迁移数据
本次demo利用存储过程迁移数据是在同一个数据库的实例中,网上查找资料说存储过程如果不在同一个数据库实例中 不能使用。如有此方法demo 可告知本人 万分感谢!!!! 本次demo实现同一个数据苦实例中 不同库 实现的数据迁移 代码;同库不同表:drop PROCEDURE if EXISTS test_dept;CREATE PROCEDURE test_dept () BEGIN DECLARE d_id INT ( 11 ) DEFAULT 0; DECLARE d_na...
2022-01-12 15:12:16 876
原创 mysql添加数据之前判断是否存在
mysql支持直接写sql语句做判断,通过查询表数据是否存在,不存在则执行插入操作示例: INSERT INTO tb_news_topic(title,summary) SELECT '218', 'XQ33019920170811142528217' FROM DUAL WHERE NOT EXISTS(SELECT * FROM tb_news_topic WHERE title = '111')语法:INSERT INTO table(field1, field2, fieldn) S
2022-01-12 10:39:10 6446
原创 mysql利用存储过程 同实例数据库迁移数据
网上有很多利用存储过程迁移数据,很多是利用游标添加数据 但是 使用游标添加数据 ,会产生数据丢失的问题,,所以在在网上找了相关方法 把相关数据导入到临时表中,我这里是导入到视图中mysql提供了三张插入的方式:类别一、 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:INSERT INTO目标表 SELECT * FROM来源表 ;类别二、 如果只希望导入指定字段,可以用这种方法:INSERT INTO目标表 (字段1, 字段2, ...)SELECT字段1,
2022-01-11 17:01:37 556
原创 Aop反射机制实现某个参数值 修改
项目中使用敏感字段的加解密,但是有的是直接在url中拼接的 ,所以我就想根据一个自定义注解的方式做匹配 ,修改值利用反射的机制实现值的修改以下是具体的代码依赖aop <!-- SpringBoot 拦截器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...
2021-12-13 16:43:18 2208 2
转载 MySQL 实现树形的遍历
MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题) 前言: 关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程来实现。1,建立测试表和数据:DROP TABLE IF EXISTS csdn.channel; CREATE TABLE csdn.channel ( id INT(11) NOT NUL
2021-11-16 14:00:00 681
原创 ReentrantLock原理分析
ReentrantLock:表示重入锁,它是唯一一个实现了 Lock 接口的类。重入锁指的是线程在获得锁之后,再次获取该锁不需要阻塞,而是直接关联一次计数器增加重入次数ReentrantLock 重入锁 重入锁,表示支持重新进入的锁,也就是说,如果当前线程 t1 通过调用 lock 方法获取了锁之后,再次调用 lock,是不会再阻塞去获取锁的,直接增加重试次数就行了。synchronized 和 ReentrantLock 都是可重入锁。很多同学不理解为什么锁会存在重入的特性,那是因为对于同步
2021-10-29 23:18:46 353
原创 一张小图看尽 Nginx
0x01:nginx安装Nginx安装完成,没有sbin目录cd进入到nginx-1.18.0目录内执行[root@centos7 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx[root@centos7 nginx-1.18.0]# make[root@centos7 nginx-1.18.0]# make installps:–prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录,默认使用 /us.
2021-10-19 17:06:58 268
原创 分布式事务SeataAT 模式的分析解读
AT事务模式分布式事务工作机制1.前提基于支持本地 ACID 事务的关系型数据库;(mysql、oracle)Java 应用,通过JDBC访问数据库;整体机制就是两阶段提交协议的演变:一阶段:“业务数据“和“回滚日志记录“在同一个本地事务中提交,释放本地锁和连接资源;二阶段:如果没有异常异步化提交,非常快速地完成;如果有异常回滚通过一阶段的回滚日志进行反向补偿;具体举例说明整个AT分支的工作过程;举例; update product set name = ‘GTS’ where na
2021-10-19 14:43:46 394
原创 Docker安装nginx
拉去镜像docker pull nginx查看镜像docker images首先测试下nginx镜像是否可用,创建并启动nginx容器docker run -d --name mynginx -p 80:80 0839-d 指定容器以守护进程方式在后台运行–name 指定容器名称,此处我指定的是mynginx-p 指定主机与容器内部的端口号映射关系,格式 -p[宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口0839 是nginx的镜像IMAGE ID前
2021-10-11 19:50:59 171
原创 5分钟入门分布式任务调度平台XXL-JOB
没有太多废话 直接干;这是一个非常简单的定时任务开源框架 地址连接 里面包含了文档 可以直接看文档操作1。doc里面包含需要的sql2.core是核心 类似一个订阅的东西 需启动3.官方给出的示例配置文件**在项目xxl-job-admin项目,resources目录下找到application.properties文件。修改成自己的配置**### webserver.port=8080server.servlet.context-path=/xxl-job-admin#
2021-09-27 00:15:45 216
原创 Springboot项目优化篇
1.在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?方便微服务部署。方便项目启动,不需要下载Tomcat或者Jetty2.针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点线程数超时时间jvm优化针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求。而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大
2021-09-10 09:20:13 385
原创 程序员安全规范:安全无小事,安全防范从nginx配置做起
1.1隐藏版本号http { server_tokens off;}2. 开启HTTPSserver { listen 443; server_name ops-coffee.cn; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNU.
2021-09-04 14:29:45 146
原创 Springboot整合阿里云oss存储服务
一、开通“对象存储OSS”服务登录阿里云搜索oss服务,并开通二. 使用RAM子用户创建一个子用户用来管理创建用户并设置权限添加可操作的服务权限给创建的用户创建Accesskey 需要在后面使用到三 项目运用使用SDK四 项目创建1.pom文件 <!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --> <dependency>
2021-08-12 17:56:48 323
原创 Springboot整合Zipkin监控
导入依赖:<!-- Brave 核心库 --> <!-- The below are needed to report traces to http://localhost:9411/api/v2/spans --> <dependency> <groupId>io.zipkin.brave</groupId> <artifactId>brave<
2021-08-10 11:47:11 977
转载 Springboot过滤器和拦截器详解及使用场景
一、过滤器和拦截器的区别1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。3、过滤器的实现基于回调函数。而拦截器(代
2021-07-16 17:13:23 712
原创 Spring Boot利用AOP巧妙记录操作日志
1.AOP关键术语切面(Aspect):也就是我们定义的专注于提供辅助功能的模块,比如安全管理,日志信息等。连接点(JoinPoint):切面代码可以通过连接点切入到正常业务之中,图中每个方法的每个点都是连接点。切入点(PointCut):一个切面不需要通知所有的连接点,而在连接点的基础之上增加切入的规则,选择需要增强的点,最终真正通知 的点就是切入点。通知方法(Advice):就是切面需要执行的工作,主要有五种通知:before,after,afterReturning,afterThrowi
2021-07-16 16:54:19 631 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人