A minor
码龄3年
  • 721,043
    被访问
  • 513
    原创
  • 533,256
    排名
  • 1,302
    粉丝
关注
提问 私信

个人简介:本来无一物,何处惹尘埃

  • 加入CSDN时间: 2018-12-03
博客简介:

A minor

博客描述:
菩提本无树,明镜亦非台。本来无一物,何处惹尘埃
查看详细资料
  • 5
    领奖
    总分 1,305 当月 61
个人成就
  • 获得531次点赞
  • 内容获得227次评论
  • 获得1,404次收藏
创作历程
  • 1篇
    2022年
  • 216篇
    2021年
  • 312篇
    2020年
成就勋章
TA的专栏
  • Java
  • Java虚拟机
    24篇
  • Java集合源码
    22篇
  • Java并发编程
    29篇
  • Java并发源码
    35篇
  • Java网络编程
    16篇
  • Java高级特性
    23篇
  • JavaWeb、Tomcat
    14篇
  • Java框架
  • Spring
    46篇
  • SpringBoot
    7篇
  • MyBatis
    20篇
  • Netty
    14篇
  • Dubbo
    16篇
  • 计算机基础
  • 数据结构
    30篇
  • 必备算法
    36篇
  • 面向对象
    10篇
  • 设计模式
    37篇
  • 数据存储
  • MySQL
    31篇
  • Redis
    20篇
  • HBase
    7篇
  • 分布式相关
    9篇
  • 分布式组件
  • Zookeeper
    12篇
  • Kafka
    14篇
  • RabbitMQ
    15篇
  • RocketMQ
    10篇
  • 基础设施
  • 应用构建
    11篇
  • Docker
    3篇
  • Kubernetes
  • 开发杂记
    24篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Docker 的产生背景

PaaS 项目被大家接纳的一个主要原因,就是它提供了一种名叫“应用托管”的能力。PaaS 之所以能够帮助用户大规模部署应用到集群里,是因为它提供了一套应用打包的功能。可偏偏就是这个打包功能,却成了 PaaS 日后不断遭到用户诟病的一个“软肋”。出现这个问题的根本原因是,一旦用上了 PaaS,用户就必须为每种语言、每种框架,甚至每个版本的应用维护一个打好的包。这个打包过程,没有任何章法可循,更麻烦的是,明明在本地运行得好好的应用,却需要做很多修改和配置工作才能在 PaaS 里运行
原创
发布博客 2022.01.09 ·
124 阅读 ·
0 点赞 ·
0 评论

【MySQL】基础使用(四):用户及权限操作

查看用户、权限、角色的命令和视图查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户系统权限:select * from dba_sys_privs;select * from session_privs;select * from user_sys_privs;3.查看用户对象权限:select * from dba_tab_privs;select * fro
原创
发布博客 2021.06.24 ·
173 阅读 ·
1 点赞 ·
0 评论

【MySQL】基础使用(三):视图操作及其作用

https://blog.csdn.net/buhuikanjian/article/details/53105416视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据。–创建视图–create or replace view v_student as select * from student;–从视图中检索数据–select * fr
原创
发布博客 2021.06.24 ·
363 阅读 ·
1 点赞 ·
0 评论

【项目杂记】什么是灰度发布?(转)

原文链接:https://testerhome.com/topics/15746在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有 BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍。1.蓝绿部署所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时.
转载
发布博客 2021.06.01 ·
177 阅读 ·
0 点赞 ·
0 评论

【Redis】事务浅析

我们知道 Redis 的单个命令是原子性的(比如 get set mget mset),如果涉及到 多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。例如用 setnx 实现分布式锁,我们先 set,然后设置对 key 设置 expire, 防止 del 发生异常的时候锁不会被释放,业务处理完了以后再 del,这三个动作我们就希望它们作为一组命令执行。Redis 的事务有两个特点:按进入队列的顺序执行不会受到其他客户端的请求的影响1.事务的用法命令描述
原创
发布博客 2021.05.07 ·
109 阅读 ·
0 点赞 ·
0 评论

【Redis】基础结构(五):ZSet 类型命令、应用、原理

zset 似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。1.常用命令ZADD key score member [[score member]…] // 往有序集合key中加入带分值元素ZCARD key // 返回有序集合key中元素个数ZREM key member [member …] // 从有
原创
发布博客 2021.05.06 ·
197 阅读 ·
0 点赞 ·
0 评论

【Redis】基础结构(三):List 类型命令、应用、原理

Redis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n),这点让人非常意外。 当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。1.常用命令1.存(push)lpush key value [key value...] // 将一个或多个值value插入到key列表的表头(最左边)rpush key value [key value..
原创
发布博客 2021.05.06 ·
93 阅读 ·
0 点赞 ·
0 评论

【Redis】基础结构(二):Hash 类型命令、应用、原理

Redis 的字典相当于Java 语言里面的 HashMap,它是无序字典。内部实现结构上同 Java 的 HashMap 也是一致的,同样的数组 + 链表二维结构。第一维 hash 的数组位置碰撞时,就会将碰撞的元素使用链表串接起来。优点:同类数据归类整合存储,方便数据管理相比string操作消耗内存与cpu更小相比string更节省空间缺点:过期功能不能用在field上,只能用在key上Redis集群架构下不适合大规模使用1.常用命令1.增(hset)hset key f
原创
发布博客 2021.05.06 ·
97 阅读 ·
0 点赞 ·
2 评论

【Java杂记】System.getProperty() 常用参数及解释

我们可以通过 System.getProperty(key) 很方便的获取到很多系统参数。1)运行环境java.home: Java installation directory (Java 安装目录)java.vendor.url: Java vendor URL (Java 供应商的 URL)java.version: Java Runtime Environment version(Java 运行时环境版本)
原创
发布博客 2021.05.05 ·
123 阅读 ·
0 点赞 ·
0 评论

【Maven】基本使用:坐标与依赖

1.坐标在数学中, 任何一个坐标可以唯一确定一个“点”。Maven 中坐标是Jar包的唯一标识,坐标元素包括groupId、artifactId、version、packaging:元素描述说明groupId定义当前模块隶属的实际Maven项目中小企业常常直接对应公司/组织artifactId定义实际项目中的一个Maven模块唯一标识一个模块version定义当前项目所处版本SNAPSHOT 表示不稳定的版本。 LATEST 指最新发布的版本,可能是个发布
原创
发布博客 2021.05.05 ·
76 阅读 ·
0 点赞 ·
0 评论

【设计模式】行为型:迭代器模式

迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern)。 它用来遍历集合对象。这里说的“集合对象”也可以叫“容器”“聚合 对象”,实际上就是包含一组对象的对象,比如数组、链表、树、图、跳表。迭代器模式将 集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。迭代器是用来遍历容器的,所以,一个完整的迭代器模式一般会涉及容器和容器迭代器两部 分内容。为了达到基于接口而非实现编程的目的,容器又包含容器接口、容器实现类,迭代
原创
发布博客 2021.05.02 ·
63 阅读 ·
0 点赞 ·
0 评论

【设计模式】行为型:责任链模式

责任链模式的定义是:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它 为止。说的更直白一些,在责任链模式中,多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫作责任链模式。1.代码示例// 抽象处理者public a
原创
发布博客 2021.04.30 ·
71 阅读 ·
0 点赞 ·
1 评论

【设计模式】创建型:建造者模式

1.理论定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象用户只需指定要建造的类型就可以得到他们,建造过程及细节不需要知道适用场景如果一个对象有非常复杂的内部结构(很多属性)想把对象的创建与使用分离优点封装性好,创建和使用分离扩展性好,建造类之间独立,一定程度上解耦缺点产生多余Builder对象产品内部发生变化,建造者都需要修改,成本较大与工厂模式对比建造者更适用于创建对象的方法流程复杂,而工厂模式适合创建对象的方法简单(或单一)
原创
发布博客 2021.04.30 ·
44 阅读 ·
0 点赞 ·
2 评论

【Java杂记】代理:手动实现一个简易动态代理

Java 动态代理本质的本质就是通过代码写代码,即根据我们新定义的逻辑,实现接口,重新生成代理类class $Proxy0 implements ~{ class InvocationHandler { class Obj implements ~ { } }}调用逻辑: $Proxy0#f() -组装参数-> InvocationHandler#invoke() -控制访问-> Obj#f()我们下面就来实现一个完全属于我们自己的动态代理…要实现目标先从最终要达到的
原创
发布博客 2021.04.30 ·
167 阅读 ·
1 点赞 ·
2 评论

【MyBatis】插件原理(一):如何实现一个插件

我们可以通过 System.getProperty(key) 很方便的获取到很多系统参数。1)运行环境java.home: Java installation directory (Java 安装目录)java.vendor.url: Java vendor URL (Java 供应商的 URL)java.version: Java Runtime Environment version(Java 运行时环境版本)
原创
发布博客 2021.04.30 ·
98 阅读 ·
0 点赞 ·
1 评论

【Java杂记】文件操作:如何获取文件绝对路径?

1.获取当前项目的绝对路径String absolutePath = System.getProperty("user.dir");System.out.println(absolutePath); // C:\Users\13275\Documents\Java\Java-project\myJdkDynamic另外,还可以通过 File 来获取File f = new File("");String absolutePath = f.getAbsolutePath()System.ou
原创
发布博客 2021.04.30 ·
1254 阅读 ·
1 点赞 ·
1 评论

【Java杂记】文件操作:File 类核心 API 及特殊示例

我们下面通过一段代码来看 File 类的核心函数:public class TestFile { public static void main(String[] args) { String path = "C:/windows/"; // 指定文件所在的目录 File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用 System.out.prin
原创
发布博客 2021.04.30 ·
51 阅读 ·
0 点赞 ·
0 评论

【Java杂记】反编译:javap,jd-gui,jad 对比总结

关于反编译我们可以使用的工具有三种:javap、jad、jd-gui,本篇我们就来看看这它们的区别是什么。先来看看测试用的代码,是枚举单例:然后将该代码进行编译生成 .class 文件。PS:关于编译,我们这里既可以直接使用 javac 命令,也可以使用 ide 自动编译(包括 maven)。下面我们就分别使用以上三种方式对上面的代码进行 EnumSingleton.class 反编译,对比得到结果。1.javapjavap 是 jdk 自带的反编译工具,我们常用的命令有以下两种:ja
原创
发布博客 2021.04.30 ·
283 阅读 ·
0 点赞 ·
2 评论

【设计模式】行为型:几种设计模式小结

我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型模式比较多,有 11 种,它们分别是:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。1.观察者模式观察者模式将观察者和被观察者代码解耦。观察者模式的应用场景非常广泛,小到代码层面的解耦,大到架构层面的系统解耦,再或者一些产品的设计思路,都有这种模式的影子,比如,邮件订
原创
发布博客 2021.04.29 ·
724 阅读 ·
0 点赞 ·
0 评论

【设计模式】结构型:代理模式(四)总结对比

代理模式(Proxy Design Pattern)的原理和代码实现都不难掌握。它在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。1.代理模式的实现与原理在不改变原始类(或叫被代理类)的情况下,通过引入代理类来给原始类附加功能。一般情况下,我们让代理类和原始类实现同样的接口。但是,如果原始类并没有定义接口,并且原始类代码并不是我们开发维护的。在这种情况下,我们可以通过让代理类继承原始类的方法来实现代理模式。2.静态代理和动态代理区别静态代理需要针对每个类都创建一个代理类
原创
发布博客 2021.04.28 ·
48 阅读 ·
0 点赞 ·
0 评论
加载更多