- 博客(19)
- 收藏
- 关注
原创 Docker入门-基本命令以及操作
Docker 安装Docker 架构图 需要正确的理解仓储/镜像/容器这几个概念: Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。Docker 在线安装步骤安装 GCC 相关依赖y
2022-05-21 14:15:33
496
原创 kafka 入门-集群搭建&简单示例
kafka 入门-集群搭建&简单示例集群搭建搭建 ZooKeeper 集群1、官网下载zookeeper下载地址2、解压安装准备三台机器,分别解压 apache-zookeeper-3.5.8-bin.tar.gz 到 /opt/zookeeper 下tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /opt/zookeeper/分别修改三台 zookeeper 的配置文件# 先备份配置文件,养成好习惯cp zoo_sample.cf
2022-05-21 14:11:57
462
原创 浅谈动态代理和静态代理的底层原理及实现
什么是反射,反射的作用是什么 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键.java类加载机制要弄清楚java的反射原理,我们首先需要知道java的类加载机制*.java文件通过编译器编译成为*.class文件*.class文件通过类加载器加载到 j
2022-05-21 14:06:49
656
原创 记一次远程ssh调试服务器连接不上的问题及解决方案
ssh 远程到远端服务器报错@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone
2022-05-21 14:01:27
602
原创 Eureka 搭建高可用,副本出现 unavailable-replicas
Eureka 搭建高可用,副本出现 unavailable-replicas问题描述Eureka 搭建高可用集群,在管理控制台发现副本出现在unavailable-replicas这一栏,表明副本不可用,正确的情况,副本信息应该出现在available-replicas[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8eTHVvsJ-1653112743166)(Eureka高可用出现unavailable-错误原因Application.yml配置文件中,对于app
2022-05-21 13:59:43
381
原创 启动Eureka报错,异常处理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
错误描述:启动Eureka报错,异常处理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext报错信息如下Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
2022-05-21 13:57:43
778
1
原创 java8 stream流对集合的常用操作
java8 stream流对集合的常用操作数据准备// 用来测试的实体类public class User { public static List<User> init() { User user = new User("张三", 18, "男"); User user1 = new User("李四", 28, "女"); User user2 = new User("王五", 38, "男"); User use
2021-08-11 22:14:41
443
原创 浅谈Spring容器初始化流程
浅谈Spring容器初始化流程Step1、new AnnotationConfigApplicationContext(MyConfig.class)下图是AnnotationConfigApplicationContext的继承关系核心构造方法 AnnotationConfigApplicationContext(Class<?>… componentClasses)/** * Create a new AnnotationConfigApplicationContext
2021-05-07 14:50:08
362
原创 kafka 入门集群搭建&集成Springboot
kafka 入门-集群搭建&简单示例集群搭建搭建 ZooKeeper 集群1、官网下载zookeeper下载地址2、解压安装准备三台机器,分别解压 apache-zookeeper-3.5.8-bin.tar.gz到 /opt/zookeeper 下tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /opt/zookeeper/分别修改三台 zookeeper的配置文件# 先备份配置文件,养成好习惯cp zoo_sample.cfg
2020-11-10 03:16:24
306
原创 实现一个自定义的Mybatis
实现自定义的 Mybatis 框架自定义Mybatis概述原生 JDBC 存在的问题问题描述数据库链接信息、注册驱动、Sql 语句硬编码的问题,代码不易维护频繁创建释放数据库链接造成资源的浪费结果集需要手动封装,非常麻烦解决方案硬编码问题可以通过配置文件来解决引入数据库连接池,解决频繁释放资源造成的问题使用反射、动态代理,减少重复代码,根据执行条件动态执行sql自定义 Mybatis 架构图实现自定义 Mybatis 框架pom 文件<properties>
2020-09-30 03:51:08
270
原创 初见Manjaro:Manjaro 安装配置流程
1、换源选择一个速度最快的源,一个就行,选多了会降低速度sudo pacman-mirrors -i -c China -m rank2、更新系统Manjaro 属于滚动式更新的系统,最好每天上来更新一次系统sudo pacman -Syyu3、安装软件yay是一个用Go语言写的一个AUR助手,有些时候官方仓库没有你想要的软件,就需要通过yay来安装sudo pacman -S yay4、安装拼音输入法建议安装 rima + 自定义输入配置的方式# 安装小企鹅输入法框架,这里使用
2020-09-27 02:18:37
2140
原创 从索引结构来看索引失效的原因
前言 关于索引优化的原则,网上有太多总结性的文章,大多是列举了一系列优化的意见以及在什么情况下索引会失效,但是却很少有人能说清楚为什么索引会失效,本篇文章会从索引底层结构的角度去分析索引失效的原因InnoDB索引结构 InnoDB 是 Mysql 默认的存储引擎,一般来说索引优化针对的就是 InnoDB 引擎,相比于MyISAM ,InnoDB 在查询性能和删除性能并没有什么优势,但是 InnoDB 好处在于可以支持事务、外键以及行级锁。一般来说 InnoDB 存储引擎的索引结构是基于 B-
2020-09-22 00:58:47
355
1
原创 每天一道面试题(三):什么是反射,反射的原理是什么?
什么是反射,反射的作用是什么 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键.java类加载机制要弄清楚java的反射原理,我们首先需要知道java的类加载机制*.java文件通过编译器编译成为*.class文件*.class文件通过类加载器加载到 j
2020-07-24 04:21:34
1241
3
原创 每天一道面试题(二):什么是CAS,什么是ABA问题
前言CAS(compare and swap)它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的原子包装类和CASjava.util.concurrent.atomic 存在许多原子包装类,它们都是在基本数据类型包装类的基础上实现了原子性,这里我们拿 AtomicInteger 来举例//首先我们来看一下 AtomicInteger 的getAndIncrement()方法,该方法的作用是 Integer 类型的数据自增,等同于num++
2020-07-15 02:41:22
267
1
原创 每天一道面试题(一):浏览器输入URL发生了什么
浏览器输入URL发生了什么前言这是一道非常经典的面试题,可以覆盖绝大多数网络相关的知识点,重点考察 TCP/IP 网络模型、tcp、http 网络协议、DNS 地址解析过程等知识点,当然也可以衍生出许多其他的网络相关的面试题,比如:TCP协议为什么需要进行三次握手,而不是四次,五次TCP协议为什么要进行四次挥手DNS 服务器是如何解析地址的,流程是怎样的HTTP 协议的特点TCP/IP 网络模型分为哪几层,分别有什么作用这篇文章主要是对浏览器一次完整的请求进行大致的分析,并且在分析的过程
2020-07-14 06:02:34
1472
1
原创 为什么Spring推荐使用构造器注入而不是Field注入
前言我们都知道在 Spring Bean 的注入方式一般分为三种:1、构造器注入 2、Setter注入 3、基于注解的 @Autowired 自动装配(Field 注入)在以往的项目开发过程中,我们大多会使用方便灵活的 @Autowired 自动装配的方式来管理依赖,但是 Spring 官方却不推荐这么做Inspection info: Spring Team recommends: “Always use constructor based dependency injection in you
2020-07-03 01:58:47
2329
4
原创 如何优雅的处理全局异常
前言异常处理是项目开发中绕不过的一个环节,一个优雅的全局异常处理可以迅速反馈给开发人员这些信息1、异常种类2、可能导致异常的原因3、导致异常出现的关键参数4、异常发生的时间5、发生异常的请求路径这些信息有助于开发人员迅速定位、处理异常,一个优秀的项目应该尽可能的将可能发生的异常进行捕获,再通过自定义的处理流程将异常信息反馈,而不是一味的抛出异常异常捕获流程ErrorCode 异常信息枚举 对于异常的处理我倾向于通过枚举类列举广义的异常种类,再通过附加信息对异常种类进行细分。
2020-06-30 21:57:59
1126
原创 浅谈volatile:可见性,不保证原子性,禁止指令重排
前言volatile是jvm提供的一种轻量的同步机制,它相较于synchronize性能更优,在某些场合比synchronize更加适用,它具有三种特性分别是保证可见性不保证原子性禁止指令重排volatile特性一:可见性理解可见性的抽象概念如下图所示,有三个线程 T-1,T-2,T-3,主内存中存在一个对象A,对象A的age属性数值为24,现在定义一个方法,将对象A的age...
2020-06-30 21:55:59
763
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人