自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 mybatis插入返回id

学习笔记001场景:数据库表做了垂直拆分,拆分成两个之后 由id进行关联 存表需要做的一些调整,1.因为旧的逻辑id是自动生成的 所以需要先存第一个表的时候拿到id返回问题1解决:本来保存返回 id并不难 xml中加 useGeneratedKeys=“true” keyProperty=“id” 或者直接在注解里加 类似,但是 这种必须是同步的情况下才能返回 因为此次是对日志表做的拆分 所以日志以前的逻辑是异步的导致无法返回 。使用同步所以一定要用同步,且返回的结果mybatis放在

2020-06-20 11:22:23 699 1

原创 记录springboot中使用springsecurity一些注意和需要理解的地方

前几天在springboot中使用了下springsecurity做下记录 ,先简单介绍下securitysecurity是spring的一个安全权限框架 无论是之前的单系统还是现在的前后端分离 都可以很好的集成使用,主要分为三块内容1.认证2.鉴权3.安全防护认证是在用户第一次登录的时候(因为加了token,用的jwt),需要首先去认证,并生成token,这个token的...

2019-12-16 14:59:27 304

原创 获取线程返回值Callable

jdk1.5之后多了Callable接口 默认方法call 类似Runnable的run方法 执行具体任务 但不同的是run方法返回值是void 但是call方法是有返回值的 并一般使用Future接受 通过get方法获取 另外除了返回值 如果执行失败也会有异常的抛出。下边具体看下使用callable的两种常用方法:1.通过线程池配合使用线程池创建线程执行对象之后使用exe...

2019-12-16 11:07:04 840

原创 Hashmap源码解析

话不多说,直接看hashmap的put、方法源码 这是jdk1.8的源码 与1.7有所不同。final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i...

2019-10-25 10:16:15 66

原创 ## java反射和动态代理以及ASM工具类的优点

记一次学习动态代理和工具类MethodAccess的好用之处前言:java中的反射类是java一个功能很强大的类,几乎所有的框架中都要使用到反射进行代理,动态代理是在java运行过程中动态调用方法的时候必须使用到的一种方式。1.先看下jdk提供的动态代理的使用使用jdk提供的接口和工具进行动态代理时,首先要实现一个InvocationHandler处理类。这个类将会被代理类作为参数传入到自...

2019-10-24 15:42:28 508

原创 springboot使用thymeleaf时无法正常使用

 第一次使用这个thymeleaf,使用都没有问题,但是跳转不了页面,网上很多解决办法都试过 ,没有用,我的jdk是1.7,一般网上的springboot教程都是1.8的,不知道有没有可能是这个问题。然后加了一个版本控制解决。困扰了两天的问题终于得到解决  心酸  哈哈   &lt;thymeleaf.version&gt;3.0.2.RELEASE&lt;/thymeleaf.vers...

2018-11-15 17:42:18 2178

原创 线上问题排查-接口请求偶尔失败

更换arm机器后,部分接口请求异常,问题排查。

2023-12-20 14:15:18 455

原创 nacos配置变更导致服务器内存爆满异常

线上的服务突然内存爆满,查服务器突然发现,日志全部打印到了/tmp/tomcat.xxx.port目录下,后来对应操作时间,和nacos修改配置是同一时间发生的,但是疑惑的点是,nacos配置变更为什么会引起logback的日志打印目录突然切换,以下是分析结论和原理。

2023-11-29 11:45:41 1655

原创 chat2db初步使用和体验AI

功能: 1.传统客户端能使用的功能基本都有,并且增加了导出excel等便捷的能力。可以根据输入的汉语例如我要查询某个表的什么条件下的记录,可以解析成sql后执行。可以根据查询结果进行对应报表可视化显示。

2023-11-02 16:48:57 325

原创 java中的BIO NIO AIO

多路复用IO模型是目前使用的比较多的模型。我们的web项目中是用的哪种呢?可以往下看。

2023-07-11 16:02:53 376

原创 spring的事务处理@Trasactional Aop处理第二弹

书接上回 ,我们针对spring中的ApplicationContext类的扩展功能-事件发布和监听处理源码进行了解析,知道了消息是如何存放和传递给监听器处理的。这章我们看下另外一个重量级的组件@Transactional事务处理是如何实现的。

2023-07-06 15:15:14 696

原创 spring源码分析-ApplicationContext----扩展组件event listener

我们知道 spring中的ApplicationContext在beanFactory(提供基础bean处理)基础上增加了扩展组件,例如国际化,资源,发布事件和监听事件,今天主要针对发布和监听事件做一次源码分析,看到底发布和监听是如何实现的?是否放队列消费 还是直接调用?

2023-07-04 15:55:15 153

原创 CloudCanal使用和canal对比

CloudCanal是canal一部分开源开发人员组成的一个商业公司产品,在canal基础上推出的具有更好的监控,任务查看,可视化操作,告警等功能,开源的版本在使用上和可视化界面上不好用,如果有兴趣可以尝试CloudCanal。对阿里云的数据库集成很好很全,可以直接填入key secret的情况下直接选择数据源进行同步。创建的任务包括全量和增量同步,任务都会有可视化界面和进度可供查看。是镜像包形式,直接docker启动即可。1.下载社区版本使用。2.启动后访问管理端。

2023-05-05 16:54:05 476

原创 Canal实战使用(集群部署)和原理解析

MySQL master将数据变更写入二进制日志(binary log,其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)配置完成后,先启动服务端(省略zk安装,较为简单可以自己百度),然后启动客户端,新建表添加数据进行测试。canal模拟mysql数据同步的原理,伪装自己为mysql slave,向mysql master发送dump协议。MySQL slave重放relay log中事件,将数据变更反映它自己的数据。

2023-05-05 16:46:49 1560

原创 jdk动态代理和cglib2的区别

在spring5.x和旧版本的springboot中 ,aop使用的是jdk的动态代理,jdk动态代理必须实现接口才能正常代理,如果对象没有实现接口,才会使用cglib。新版本的springboot中默认使用cglib则不存在这个问题,因为cglib的代理是针对类的。在使用springaop切面过程中,由于将@autowired注解加到实现类上,切面无法正常增强使用,这篇文章记录失败原因和解决方法。JDK动态代理基于接口(必须声明接口并接口),CGLIB基于子类(可以只定义类)

2023-05-05 16:26:53 57

原创 Dockerfile及相关知识拓展

dockerfile基础介绍与编写云容器平台厂商管理k8s与docker工具Rancher

2022-08-05 16:13:48 867

原创 skywalking日志上送和链路追踪

官方文档连接:Documentation | Apache SkyWalkinghttps://skywalking.apache.org/docs搭建服务Downloads | Apache SkyWalking下载的时候需要注意,如果要使用服务日志上送功能,必须下载8.5之后的版本,8.5之前的不支持日志功能,控制台的那个service点不动。可以简单看下目录讲解 因为后续使用会用到,比如命令行增加agent的时候会读取agent包同目录下的配置文件等。这个配置文件主要修改持久化数据源的相关配置,我这里

2022-06-30 11:30:11 1507 1

原创 arthas实战使用和导出日志文件

系统设置其中user.home 为用户的默认路径 如root 就是/root。开启日志跟踪的话可以持续观察并记录到日志文件中便于下载和统计。watch命令观察接口耗时超过3秒的接口及其入参等信息。-x代表探测深度,1的话只能看到入参类型,看不到入参的值。效果如下:trace命令追踪接口调用链路的每一个调用步骤及其耗时统计。效果如下:内存溢出排查--待补充...

2022-06-17 14:07:35 2148 1

原创 jstat命令实战及内存模型介绍

jstat命令使用排查线上内存问题

2022-06-17 14:04:54 117

原创 【无标题】

public static void main(String[] args) throws ExecutionException, InterruptedException { CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {System.out.println("执行过程=="+Thread.currentThread().getName());tr.

2022-05-25 13:20:17 56

原创 maven仓库读取顺序

maven的加载顺序和配置1.加载顺序 项目中的pom.xml是最为优先的,当有父类工程时,父类工程中的peoperties仓库配置节点,会放到最后进行扫描,优先读取本地,对于maven的setting配置文件来说,如果工程pom.xml中的properties节点id与maven的配置文件mirror节点id相同,那么会首先使用maven中配置的仓库,如果找不到那么会使用pom.xml自己的,如果在maven仓库中的mirror节点中配置的是*过滤的话,那最优先读取这个,所以记得将*过滤的仓库放到配置

2021-09-11 11:28:48 2015

原创 DorisDB(StarRocks)使用记录

机器:两台36核64g,一台6核16g,网速千兆,be搭建三台集群,fe单机部署,broker对应be三台部署,机器上除了DorisDB有其他应用,无固态硬盘。数据量:1亿7000w1.查询一天内的访问量 0.01sselect count(id) from api_logs3 where req_time>'2020-01-09 00:00:00' and req_time <'2020-01-10 00:00:00';2.查看一个月内的....

2021-07-15 10:23:39 1264

原创 静态内部类使用场景(建造者模式)

先了解下静态内部类的调用静态内部类 是java静态类的使用规范,静态类必须也只能是内部类,用法上和其他的静态变量方法一样,用外部类点内部类名进行创建和使用。那么静态内部类存在的意义是什么?有什么作用?静态内部类的使用有几种场景:1.A类中需要一个B类,但是B类只为A类服务,这种情况不需要将B类单独剥离,只需要在A内部即可。 like earth--water‘s relation2.一个类的构建有非常多参数的时候--引申到了建造者模式。参数较多时 ,比如有几十个,初始化参数非常不灵活

2021-07-15 10:15:45 1589

原创 Jprofiler分析性能调优--远程连接服务器服务

java性能监控工具,调优工具,因为现在用IDEA编辑器的比较多,所以选择使用Jprofiler。可以在IDE中安装插件,直接使用监控方式启动。这篇文章主要记录远程连接linux服务器上的服务,进行实时监控cpu,线程 内存等属性变化。1.需要在linux服务器安装和本地版本一致的JProfiler下载地址 https://www.ej-technologies.com/download/jprofiler/version_111我使用的是11.4版本 有破解的注册机可以使用,最新版本还不能

2021-07-14 13:56:02 877 1

原创 jvm参数理解和记录

jvm配置参数分为三大类:1.跟踪参数:跟踪,监控JVM状态,用于程序员JVM调优及故障排查2.堆分配参数:分配堆内存3.栈分配参数:分配栈内存各类配置参数常用参数:1.-XX:+PringGC2.-verbose:gcArthas 排除函数异常调用watch com.example.demo.arthas.user.UserController * '{params, throwExp}' watch com.example.demo.arthas.us

2021-07-13 09:15:40 90

原创 Spring拓展接口和注解的使用记录

Spring拓展接口之-1ApplicationContext.publishEvent() 发布事件ApplicationEvent--用来承载真正处理的数据对象@EventListener(ApiLogEvent.class) 配合这个注解进行事件的真正处理触发此拓展作用适用于异步解耦操作:如 记录操作日志,记录错误日志等,封装到底层,在我们的业务服务里剩一个存储日志的接口即可。HandlerMethodArgumentResolver--springmvc用来解析参数并绑定入参的接口

2021-06-22 17:35:34 94

原创 es集群搭建过程

es集群搭建过程1.环境和安装包es的运行依赖java环境,所以要先保证有jdk的安装,例子中使用1.8的jdk。拉取es的安装包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.2.tar.gz解压 tar -zxvf elasticsearch-6.8.2.tar.gz 解压之后进入目录 修改elasticsearch.yml文件内容 在conf文件夹下,配置为集群,配置文件如下:c

2020-11-03 16:47:08 466

原创 mybatisPlus的切换数据源失效问题。

mybatisPlus的切换数据源失效问题。使用mybatisplu的动态切换数据源时,遇到无法切换的问题 原因是具体操作的服务调用的是异步线程 mp的切换数据源信息是放在ThreadLocal中去存储的,如果切换了线程,那么就取不到数据源信息的内容,导致无法切换数据源的问题 对于这种情况,如果异步有存在的必要性 那么可以将这个异步使用的数据源设置为默认的数据源 如果无法设置 可能要考虑别的切换数据源的方法 mp的切换数据源跟线程是有关联的。项目遇到这个问题 特此记录,其他人碰到问题可以看下是否跟

2020-05-25 15:20:28 3573 11

原创 concurrentHashMap源码略读

由于项目中常用的集合是hashMap和conCurrentHashMap,hashMap的源码之前已经写过 ,今天看下conCurrentHashMap的存取和两者之间的一些比较。 conCurrentHashMap(jdk1.7和1.8的变化)在jdk1.7以及之前ConcurrentHashMap采用的是Segment+HashEntry的分段锁策略进行设计的 ,Segmen...

2020-03-24 13:37:47 110

原创 oracle索引相关问题

oracle索引在oracle数据库中 (其他数据库情况不一样) 如果查询条件是is null 且查询的内容不是索引列 会全表扫索引列应避免空值和重复值SELECT t.type_id FROM t_company_type t where t.type_id is null;SELECT t.type_id FROM t_company_type t wher...

2020-01-07 17:07:41 204

原创 vue使用推荐的axios封装发送表单数据

项目开始都是默认的json格式传输 后端加了权限认证(security)之后过滤器只能接收表单数据 做不到像控制器一般灵活,所以在前端vue的使用中必须能够切换为表单传输 但是我将头headers换位了表单格式 后端却还是接收不到 原因是没有序列化 没有序列化的参数体看下图 会有一个花括号像json格式一样但是其实也是表单 只是没有序列化 只有序列化之后后端才能接收到请求...

2019-12-17 11:38:20 444

原创 通过docker搭建web环境

近日听说使用docker部署项目更加方便有效(启动速度快) 有时间看下docker 顺便学习下如何搭建环境以及部署项目。准备: 首先准备一台centos服务器 虚拟机也是可以的 我使用的是centos7 默认内核为3.10 能够比较正常的安装docker 如果使用的是centos6.9或者更早的服务器 内核一般都是2.6的 用uname -a /uname -r 查看系统内核 如果低...

2019-11-28 10:31:06 208

原创 io流中的锁

io流中的一些类中都是有锁操作的 今天记录一种inputstream对象是文件输入流 先被缓冲流BufferedReader装饰着包装使用 之后在直接使用unputstream对象进行读操作 发现读不出来 原因是上面缓冲流的使用已经将其加了锁 直到下边直接使用的时候 还没有进行释放@503可以看出是同一个对象 先注掉上面的缓冲流读取 下边就能够读出来了。上图中的...

2019-11-15 10:29:52 920

原创 记一次环境重启导致nginx无法正常启动

几天服务器重启之后 需要重启应用 但是重启nginx的时候报错找不到pid的那个文件 (在logs下边那个) 想着可能是因为服务器重启导致pid丢失 所以那个文件也就不见了 执行/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 但是这个命令执行是有可能卡住的 ,使用nohup ./nginx -c /xxx...

2019-11-08 15:55:31 472

原创 记录一次mybatis的实体类和数据库字段映射方法

本来这个问题很简单 一般的做法在mapper.xml进行指定就好<result property="userName" column="user_name" /但是我使用selectOne方法进行查询的时候(而且使用的是mybatis的plus框架,虽然普通的mybatis也有selectOne,应该是一样的),之前一直以为selectOne查出来映射给实体类对象的字段映射也是...

2019-11-08 14:11:42 1790

原创 springboot中的boostrap配置文件不起作用

springboot本身是不支持bootstrap文件的 需要结合springcloud的组件一起使用在pom中加入。<!--需要引入该jar才能使bootstrap配置文件生效--> <dependency> <groupId>org.springframework.cloud</groupId>...

2019-11-06 11:09:08 787

转载 ON DUPLICATE KEY UPDATE 用法记录

转载:https://blog.csdn.net/qq_22771739/article/details/84668620ON DUPLICATE KEY UPDATE是mysql的独特用法ON DUPLICATE KEY UPDATE作用先声明一点,ON DUPLICATE KEY UPDATE为Mysql特有语法,这是个坑语句的作用,当insert已经存在的记录时,执行Updat...

2019-10-31 17:41:39 103

原创 ArrayList与LinekdList源码解析

今天看下简单集合ArrayList与LinkedList的源码 并分析其擅长和不擅长的操作。。上图是ArrayList的成员变量 主要变量elementData 是底层数组的体现 ,还有一些初始化数组的成员变量 在list为空的时候进行初始化使用。构造函数基本是判断如果为空就初始化 否则将参数带进去创建。这两个图是插入元素的操作 比较简单 就是直接将元素按顺序放入数...

2019-10-30 13:18:19 190

原创 HashSet源码解析

之前看过了HashMap的存入和取出及初始化等源码的理解,现在再看HashSet就会容易一些。先看属性字段使用了hashmap作为自已的成员变量,所以我们看存值的时候其实也用了这个成员变量可以看到存进去的对象作为HashMap的键存储 而值是一个空对象,这样的存储方式可以保证不会有重复。因为HashMap的键是不允许重复的,如果重复,会替换掉旧值,并且将旧值返回,所以这里对返回值进...

2019-10-28 16:44:13 103

原创 Hashmap源码解析--get取值

之前的文章探讨过了put存值的底层实现,今天看了下get,做个记录还是jdk1.8的源码,看过put之后 get就很好理解了。首先入参跟put相比除了没有值value,其他的都在,依然用存进去的方式一样的键的hash值与数组长度的位运算确定数组下标 。第二步是用这个数组下标的第一个值 (头结点指向的那个节点)的hash与传进来的hash比较判断 如果是一样的 只能说明hash一样 但是不...

2019-10-28 16:08:38 186

空空如也

空空如也

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

TA关注的人

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