自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 问答 (6)
  • 收藏
  • 关注

原创 git 常用命令记录

好记性不如烂笔头,记录一些常用命令,示例分支以master和dev为例。1. 查看git命令git help -agit --help2. git 两个概念:工作区和暂存区工作区: git init 创建的代码库的所有文件但不包括 .git文件(版本库)暂存区: 通过git add 操作添加的修改,都进入到暂存区了,通过git status可查看可以认为:一个文件被修改了,git...

2020-02-10 22:37:18 463 1

原创 python 比较 mysql 表结构差异

python 比较 mysql 表结构差异

2024-06-05 21:59:02 326

原创 Apollo 整合 Spring Boot 原理分析

一、使用1、apollo是携程开发的一个开源的分布式配置中心,spring boot项目如果需要整合apollo,需要在pom.xml中添加如下依赖:<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.6.2</version></

2021-06-26 19:45:57 1227 1

原创 一张图搞懂Spring Boot内嵌Tomcat原理

流程参考: https://blog.csdn.net/oyc619491800/article/details/105459460

2021-05-04 20:49:58 375

原创 一张图搞懂Spring Boot启动流程

2021-05-04 20:43:41 620

原创 一张图搞懂Spring启动流程和Bean的生命周期

这篇文章描述了Spring整体的启动流程,并通过测试用例,演示了一些Spring的扩展点在Bean的生命周期中的使用。测试代码@Componentpublic class A { private boolean running; @Override public void start() { System.out.println("SmartLifecycle start..."); this.running = true; }

2021-04-23 00:31:38 911

原创 sentinel-dashboard-1.8.0.jar 下载及自定义持久化

现在从github下载jar包什么的都很慢,于是自己编译了源码,打成jar包,现在很多地方下载需要积分或者不是最新的,经历过此痛的鄙人免费分享。下载地址: https://pan.baidu.com/s/1g1TD9SozFBomT91OBDLkCg提取码:jzx0第二个文件,直接基于sentinel-dashboard 源码编译打包(1.8.0,目前最新)。第一个文件,基于 sentinel-dashboard 源码改造,将流控规则等持久化至Nacos,代码地址:https://gitee.com

2021-01-04 22:23:43 5384 12

原创 Could not find symbol “gHotSpotVMTypes“ ... Can‘t attach the process:ptrace(PTRACE_ATTACH) ...

最近,在查看基于docker部署的应用的gc情况时,遭遇了一系列问题,下面从一个个问题分析并解决。1.执行 jps、jmap、jinfo 等命令时提示[root@90a7d18b7758 /]# jpsbash: jps: command not found[root@90a7d18b7758 /]# jinfobash: jinfo: command not found[root@90a7d18b7758 /]# jmapbash: jmap: command not found报这个

2020-08-29 23:22:33 5739

原创 docker 镜像制作(自定义 jdk、centos 版本)

准备好 Docker 环境(基于Centos 7,Docker version 19.03.12)拉取一个 centos 7 作为基础镜像: docker pull centos:7启动镜像: docker run -ti centos:7 bash ,直接进入到了容器中替换容器中的 centos 源,参考: 阿里镜像地址 ,能使下载更快容器中安装常用 linux 命令,安装JDK(参考:OPENJDK官网)并配置环境变量打成新的镜像:docker commit -m ..

2020-08-29 18:44:01 2462 2

原创 Spring Boot 解决跨域的多种姿势

本示例讲解了什么是跨域,并基于Spring Boot项目演示了多种解决跨域的方式,以及加入Apollo实现动态刷新跨域配置功能,同时,也提供了其他解决思路。代码地址:https://github.com/francisoyc/spring-boot-cors视频地址: https://b23.tv/ZFp36S...

2020-08-12 08:50:51 291

原创 filebeat 处理 java 堆栈信息(异常日志)

在接入ELK日志系统时,用的是 filebeat 插件去采集 .log 或 .json 日志,采集 .json 日志时很容易处理,但是采集 .log 日志时就出现了问题,原来测试成功过的配置现在已经无效,鉴于本人有强迫症,最终还是研究出来才能入眠。.log 日志格式大概是这样的:2020-08-04 23:39:27.213 ERROR [francis,76fc4531346b63e2,76fc4531346b63e2,false] 16121 --- [nio-8089-exec-8] com.ex

2020-08-05 00:37:41 3213

原创 Apollo 升级内嵌 Tomcat 版本

分布式配置中心 Apollo 内嵌 Tomcat 版本为 8.5.34,存在安全漏洞,需要升级,具体步骤可参考本人视频: Francis 教你升级 Apollo 内嵌 Tomcat版本查看 Tomcat 版本是否真正升级成功: 1、运行 jar 包后,查看日志中打印的Tomcat 版本 2、解压 jar 包,查看解压目录 lib/ 下的 Tomcat 版本。相关配置:<dependency> <groupId>org.apache.tomcat.embed</grou

2020-07-22 23:20:40 499

原创 hystrix dashboard 2.2.3 页面无数据(JS 报错)解决办法

最近在使用 spring-cloud-starter-netflix-hystrix-dashboard 时,发现一个坑,当我访问页面: http://localhost:8081/ribbon-api/hystrix 后,配置如下图:点击 Monitor Stream 进入新的页面,但页面无数据显示,且打开F12看到JS报错,如下图:看到报错第一时间想到是js不兼容,但是为了保险起见,先排除代码问题,访问: http://localhost:8081/ribbon-api/actuator/hys

2020-07-17 23:49:24 830 4

原创 阅读 Spring官方文档和调试源码技巧

本人在B站上传了两个视频,分享自己在学习 Spring 过程中的经验:Francis 带你阅读 Spring 官方文档Francis 教你使用 IDEA 调试 Spring 源码

2020-07-11 14:46:12 297

原创 Scala sbt + Kafka Manager(CMAK)安装使用

yahoo 开发了一款用来管理 Kafka 集群的工具: CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager),使用这个工具需要下载源码并编译,而其编译又依赖于 sbt,网上很多博客都是以前版本的安装使用,本人最近正好有这一块的实践,用的版本是目前最新的,记录并分享之。本人已将编译成功后的压缩包上传至 github ,不想编译的同学可以直接下载使用。开发环境sbt-1.3.13、Kafka Manager(

2020-07-05 09:19:39 1205

原创 Centos7 Redis5 BloomFilter 安装及使用

Centos7 上 Redis 5.x 安装及使用布隆过滤器(BloomFilter )1. 进入redis安装目录: cd /usr/local/redis-5.0.82. 下载插件: git clone https://github.com/RedisBloom/RedisBloom.git (https://github.com/RedisBloom/RedisBloom)3. 进入插件目录: cd redisbloom/ (重命名之前为RedisBloom)4. 执行: make5.

2020-06-27 21:04:30 391

原创 Redis 高可用集群搭建

一、Redis 集群方案比较1. 哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。2. 高可用集群模式redis

2020-06-23 00:33:09 466 1

原创 Java 负数二进制表示、位运算、移位运算

负数的二进制:-x =!x+1 这个等式表示两边的二进制相等x表示一个正整数,-x表示x的相反数的二进制,!x表示x的二进制按位取反,然后+1原码:正数的原码就是他的二进制,负数的原码就是他的绝对值的二进制的最高位补1.反码:正数的反码与原码相同,负数的反码为他的原码除符号位外全部按位取反。补码:正数的反码与原码相同,负数的反码为他的原码除符号位外全部按位取反,然后+1举例:1的原码:000000000000 0000 0000 0000 0000 0001-1的原码:1000 0000

2020-06-10 12:45:52 930

原创 synchronized 原理

1. 实现代码示例:public class Test { public static void main(String[] args) { Test test = new Test(); synchronized (test) { System.out.println(test); } }}通过 javac 命令编译成class ,再通过 javap -c 查看字节码如下:Compiled from "T

2020-05-18 00:28:06 299

原创 逃逸分析

逃逸分析(Escape Analysis)是目前Java虚拟机中比较前沿的优化技术,它与类型继承关系分析一样,并不是直接优化代码的手段,而是为其他优化措施提供依据的分析技术。逃逸分析的基本原理是:分析对象动态作用域,当一个对象在方法里面被定义后,它可能被外部 方法所引用,例如作为调用参数传递到其他方法中,这种称为方法逃逸;甚至还有可能被外部线程访 问到,譬如赋值给可以在其他线程中访问的实例变量,这种称为线程逃逸;从不逃逸、方法逃逸到线 程逃逸,称为对象由低到高的不同逃逸程度。如果能证明一个对象不会逃

2020-05-17 21:45:32 607

原创 从源码角度浅析 Spring @Transactional 的代理过程

本文基于 Spring Boot 项目测试,依赖的 Spring 源码版本为5.2.1,主要测试代码如下:@EnableTransactionManagement//@EnableAspectJAutoProxy(exposeProxy = true)@SpringBootApplicationpublic class DemoApplication { public stati...

2020-04-29 01:04:13 644 1

原创 浅析Mybatis利用Spring扩展点之ImportBeanDefinitionRegistrar

看懂这篇文章可能需要有一定的spring源码基础,在分析原理之前,先简单讲一下应用。。。使用spring boot结合mybatis开发时,会在pom.xml中引入下面依赖:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-bo...

2020-04-18 18:24:11 979

原创 从源码角度浅析 Mybatis 动态SQL及$和#的区别

Mybatis目前支持的动态标签有:ifchoose (when, otherwise)trim (where, set)foreach用法示例(需要自己加上最外层<select></select>): SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <choose> <when test="...

2020-04-15 23:33:06 314 1

原创 Mybatis 四大组件及自定义插件原理解析

一、四大对象:1.Executor:Mybatis的SQL执行器,Mybatis中对数据库所有增删改查操作都由其完成,他的实现类如下:BaseExecutor中定义执行流程及通用的处理逻辑,具体方法由子类实现,是典型的模板方法模式的应用。SimpleExecutor是基础的Executor,能够完成基本的增删改查,ResueExecutor对JDBC中的Statement对象做了缓存,当执行...

2020-04-14 00:46:28 1366

原创 Spring Boot Jetty及war包部署

一、Spring Boot 默认使用 tomcat 容器,为什么是tomcat? 如何修改为其他容器?1.spring boot 目前支持tomcat、jetty、undertow,而这三种容器都有自己的配置类且需要在指定条件下才能被创建,具体可见ServletWebServerFactoryConfiguration.java。pom.xml中,在spring-boot-starter-web...

2020-04-12 16:13:52 2057

原创 Spring Boot 内嵌 Tomcat 原理

大家可能都知道Spring Boot是内嵌了Tomcat的,所以Spring Boot应用可以直接启动,但以前的web项目需要webapp目录且要打成war包,再外挂Tomcat才能成功部署,但Spring Boot并没有这些配置,他是如何做到的?今天就来探讨一下Spring Boot是如何与Tomcat结合的。不多说,依旧老套路,Debug走起,第一个断点:org.springframewo...

2020-04-12 00:09:29 387

原创 Spring Boot 自动配置及访问静态资源原理

Spring Boot 启动类上有个注解: @SpringBootApplication,其实这是一个组合注解,由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan组成。@SpringBootConfiguration其实可以认为是@Configuration的一个升级版版,用来区别spring framework ...

2020-04-10 23:13:39 376

原创 IDEA 编译调试 Spring Boot 2.2.x 源码

1.访问 https://github.com/spring-projects/spring-boot,选择分支(我选的2.2.6),目前应该是比较稳定的版本,然后以压缩包方式下载并解压(git方式会很慢)。2.IDEA导入源码,只导入spring-boot-project就可以了,如下图:导入后下载依赖可能需要一定时间,有个小技巧,可以在maven的settings.xml中的<m...

2020-04-08 23:15:47 1454

原创 IDEA + Tomcat 搭建 Spring MVC(零xml配置)

在讲spring mvc之前,先讲一下idea创建web项目及启动。步骤如下:创建maven 项目,点击Next输入如下信息,点击Next输入如下信息,点击Next在 src/main目录下新建webapp目录:修改pom.xml,配置成war包,并按需求引入相关依赖:配置tomcat及相关参数:主要代码如下:package com.francis.config;i...

2020-04-06 14:39:46 1025

原创 Spring @Autowired 自动装配 ?

以前在网上看过一些关于spring 自动装配的文章,有人说@Autowired就是自动装配,其实这是不正确的,今天我将会以官网文档和源码来说明这个问题。讲自动装配之前我想先看一下官方文档对自动装配的描述,可以看到,自动装配有四种模式:从上图可以看到,默认Mode为no,代表没有自动装配,然后我们再看看AutowireCapableBeanFactory中定义的几个常量,其实就是跟上图中四种模...

2020-04-02 22:06:41 449

原创 AspectJ 解决Spring @Transactional 坑点 步骤记录

上一篇文章提到Spring @Transactional 坑点中的前两个坑点都是用比较常规的方法解决的,spring官方提到过aspectj这种解决方案,随后我花时间研究了一下确实解决了,大概步骤是这样的:1、pom.xml中加maven依赖:<dependency> <groupId>org.aspectj</groupId> <arti...

2020-03-26 23:07:40 1473

原创 Spring 事务 @Transactional 常见坑点

聊起Spring aop很多人肯定都觉得自己使用的很熟练,比如日志,事物等等,当我问起事物怎么实现的时候,他们都会说加个注解@Transactional就可以了,而我再问你有没想过这中间有坑的时候,都说不知道,甚至工作五六年的人都不知道。而最近,看见公司项目中就有人埋了坑而不自知,所以我决定记录一下。之前已经写过spring 事务作用于异步方法或线程池时有坑,今天说说其他的坑。ServiceI...

2020-03-25 22:41:42 821 1

原创 @Configuration标注的类中使用@Autowired注入失败

关于在一个类上加了@Configuration,然后使用@Autowired注入一个属性时,有可能会出现失败的情况,目前本人在开发中并没有遇到过,只是听人提起过,然后也查过资料,并没有很好的解释。然后自己模拟了一下,如图:所以,此次并没有模拟出想要的结果。自己也翻阅了spring官方文档,有提及到这一点:但是spring并没有用代码举例说明什么情况下会出现注入失败的情况,只是讲了怎样可以注...

2020-03-24 00:09:50 4086 1

原创 从源码角度分析spring是如何解决循环依赖的

本文基于spring 5.2.x调试。聊起spring循环依赖,首先我们需要了解什么叫循环依赖,比如我们定义了两个Bean:A和B,A -> B, B -> A,这就是循环依赖。然后我们要知道spring默认是支持循环依赖的,这是因为spring内部定义了一个变量allowCircularReferences且默认为true,但是spring支持循环依赖也是有前提的,下面我将举例说明什...

2020-03-19 00:30:48 257 1

原创 Java 实现左侧菜单栏的数据层级结构

这是一个超级简单的实现,未考虑性能等因素,仅供参考。。。数据库设计: menu表,顶级菜单parentId默认为-1,同一个顶级菜单下所有菜单的rootId为顶级菜单的idMenu.java@Datapublic class Menu { private int id; private String name; private int parentId; ...

2020-03-14 19:30:00 2327 2

原创 从spring源码角度分析@Configuration和@Component区别

很多人都用过@Configuration和@Component,但并不一定了解他们的区别,或者所了解到的区别仅是在理论层面,并不知道真实原因,最近本人在学习spring 5.2源码,特记录并分享一下。首先,我们可以看到@Configuration的代码是这样的:从图中可以看出,@Configuration这个类是加上了@Component注解的,所以姑且认为@Component有的功能他都有...

2020-03-11 02:12:37 603 1

原创 Navicat + SecureCRT 搭建跳板机连接远程mysql数据库

有一个这样的场景:本地A(Win10电脑,装有Navicat),跳板机B(Linux,ip:10.10.1.101),远程mysql数据库服务器C(Linux,ip:192.168.111.101)。A想通过Navicat直连C来进行增删改查,但是由于防火墙和网络安全规则限制无法实现,但B和C之间的防火墙是通的。最开始我也没有想到怎么实现A直连C,而是采用的通过B操作C,但是第二天晚上突然来了一...

2020-03-06 00:39:03 2486

原创 SpringBoot 事务作用于异步方法或线程池踩过的坑

首先,我们的项目配置了全局事务,拦截的是ServiceImpl层中以add、save、insert、update等为方法名前缀的方法(主要拦截增删改操作)。场景是这样的,我们有好几个操作是先执行insert方法(同步方法),再执行saveMsg方法(异步方法),这两个方法都能被全局事务拦截到,事务的传播特性是Required,原则上来讲两个方法应该在同一个事物。saveMsg方法是用来拼装一条消息...

2020-02-23 21:22:19 7236

原创 Elasticsearch+Logstash+Filebeat+Kibana搭建ELK日志系统

1. 概述1.1. ELK简介ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elastic...

2020-01-20 21:44:22 1626 1

原创 通过自定义template修改Elasticsearch mapping 和 索引相关设置

在搭建ELK日志系统时,由Logstash输出到ES中的索引使用的是默认的template,在ES的单点模式下,Kibana的Index management中看到的每个索引都是黄色的,这是因为从Logstash到ES使用默认的template创建的mapping默认配置的副本数为1,而ES只有一个节点,所以健康状态显示黄色,虽然可以直接在Kibana上修改副本数为0,从而使索引的健康状态显示为绿...

2019-12-20 00:52:13 2044 1

python 比较 mysql 表结构差异

python 比较 mysql 表结构差异

2024-06-05

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

TA关注的人

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