自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(142)
  • 资源 (3)
  • 收藏
  • 关注

原创 十万访问量的背后

自去年十一月份购买第一台服务器后,设想拥有属于一个人的博客。然后开始实施,虽然中间有不少的阻力,比如:服务器被黑,数据库被黑等。后来也开始注重服务器的安全,以及保护自己的博客,屏蔽一些恶意的爬虫等。现在的博客我也尽可能的使访问的数据真实,避免被刷,被恶意爬取我的文章信息。由于我对SEO不了解,导致前期我的文章大都是发布到了CSDN(地址:https://blog.csdn.net/qq_40124555),才能被检索到,然后去往我的博客网站引流,但是毕竟博主只是小生,许多用户看过了就走了,并不会进入我自己

2022-07-10 22:06:52 1236 3

原创 三元运算符引发的自动拆装箱问题

Java中的自动拆箱和装箱问题,以及三元运算符中类型不一致导致的空指针异常问题。作者通过查看Java字节码,演示了代码中出现空指针异常的原因,并提醒读者在编写代码时要注意类型的转换问题。

2023-07-28 11:33:16 103

原创 【面试系列】JDK动态代理和CGLIB静态代理

JDK动态代理代码实例Cglib 代理代码实例两者优缺点JDK动态代理只能代理接口实现类,原因是JDK动态代理是基于接口实现的,代理对象的类型由接口列表决定。如果你想代理一个类而不是一个接口,你需要使用其他的代理技术,比如CGLIB。

2023-07-21 16:32:19 111

原创 修改jar包中的文件内容

查找是否存在需要修改的文件vim命令修改配置文件jar命令替换jar包中的文件(也可新增)解压jar包,修改后重新打包jar修改clas文件jar命令参数

2023-07-14 15:22:18 2517

原创 Go语言的基本概念与语法

包package、Imports(导入)、基本数据类型、bool、string、int、byte、rune、float、complex、变量、变量声明、变量的初始化、匿名变量、常量、iota 常量生成器、for语句、if语句、switch、defer栈、go中关键字、类型转换、类型推断、Go函数、多值返回、命名的返回值、函数值、函数闭包、Go语言nil:空值/零值、nil 标识符是不能比较的、nil 不是关键字或保留字、nil 没有默认类型、不同类型 nil 指针是一样的、nil 是零值、内存大小可能不一样

2023-06-28 10:20:51 377

原创 从注解@EventListener和@TransactionalEventListener掌握Spring的事件机制原理

Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式;为的就是业务系统逻辑的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。在Spring中我们可以通过实现接口或者接口来实现事件驱动编程。比如我们做一个电商系统,用户下单支付成功后,我们一般要发短信或者邮箱给用户提示什么的,这时候就可以把这个通知业务做成一个单独事件监听,等待通知就可以了;把它解耦处理。Spring事件类自定义类描述运行程序上下文。

2023-05-23 16:24:28 972

原创 ClickHouse之Explain查看执行计划

基本语法EXPLAIN 类型PLAN:用于查看执行计划,默认值。AST:用于查看语法树;SYNTAX:用于优化语法,有时我们指定的查询语句未必是最优的,那么 ClickHouse 在底层会进行优化,EXPLAIN SYNTAX 可以返回对一条 SQL 语句进行优化后的结果。通过对比优化前和优化后的 SQL 语句,可以有助于我们理解 ClickHouse 的优化机制PIPELINE:用于查看 PIPELINE 计划。ESTIMATE:显示处理查询时要从表中读取的估计行数、标记数和部分数

2023-05-08 18:59:30 886 1

原创 kafka配置大全broker、topic、生产者和消费者等配置介绍

kafka配置,生产者配置,消费者配置,topic配置,partition配置,broker配置等

2023-04-23 17:20:47 1584

原创 ClickHouse之常见的时间周期函数

在工作中,如果使用了ClickHouse作为数据的存储的话,那么难免会遇到关于时间的转换问题比如:字符串转时间,日期等特定格式。

2023-04-20 15:39:32 1232

原创 ClickHouse之采样查询(SAMPLE)

子句,你不知道处理了哪些数据的相对百分比。在此示例中,对0.1(10%)数据的样本执行查询。聚合函数的值不会自动修正,因此要获得近似结果,值 count()例如,如果您需要计算所有访问的统计信息,只需对所有访问的1/10分数执行查询,然后将结果乘以10即可。启用数据采样时,不会对所有数据执行查询,而只对特定部分数据(样本)执行查询。的使用示例 _sample_factor。设置),是有意义的设置一个样品,其大小远大于颗粒。在至少10,000,000行上运行查询。,其中包含有关网站访问的统计信息。

2023-04-18 10:55:29 375

原创 Kafka文件存储机制

Kafka是一种分布式的流处理平台,它通过文件存储机制来保证数据的可靠性,高效性和可扩展性。Kafka的数据存储是基于日志的,它将所有的消息都保存在一个或多个主题(topic)的日志文件中。每个主题都由一个或多个分区(partition)组成,每个分区都是一个有序的、不可修改的消息日志。消息按照它们的写入顺序追加到分区中,并分配一个唯一的偏移量(offset)来标识它们在分区中的位置。Kafka使用了两个文件来存储消息:消息文件和索引文件。索引文件:以.index后缀结尾,存储当前数据文件的索引;

2023-03-07 19:51:42 856

原创 kafka生产者和消费者配置介绍

kafka配置,生产者配置,消费者配置,topic配置,partition配置,broker配置

2023-03-06 19:42:29 1234

原创 Kafka 的简介与架构

Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统。它可以作为消息系统和日志收集系统使用。

2023-03-02 19:37:04 448

原创 Java中常见性能优化策略的总结

在软件开发中,性能优化是非常重要的一环。以下是常见的性能优化策略1. 代码优化2. 数据库层面优化SQL调优架构层面的调优连接池调优3. 网络优化4. 缓存缓存分类使用场景选型考虑什么时候更新缓存?如何保障更新的可靠性和实时性?缓存是否会满,缓存满了怎么办?缓存是否允许丢失?丢失了怎么办?缓存被“击穿”问题5. 异步使用场景作用常见做法6. JVM调优什么时候调?怎么调?7. 多线程与分布式使用场景常见做法

2023-03-01 11:09:22 775

原创 Java无法通过形参设置为null改变实参

Java中的对象是通过引用来传递的,这意味着当我们将一个对象作为参数传递给函数时,实际上是将该对象的引用传递给函数。如图所示,setNull函数仅仅解除了该函数体中的node变量与堆中的TreeNode object的绑定关系,并没有解除main函数中的node与TreeNode object的绑定关系。main函数中的node与setNull函数中的node是栈中两个不同的引用型变量,它们都指向了堆中同一个的TreeNode object。

2023-02-23 22:22:59 475

原创 Java是值传递还是引用传递?区别是什么?

在Java方法中参数列表有两种类型的参数,基本类型和引用类型。- **基本类型:**值存放在局部变量表中,无论如何修改只会修改当前栈帧的值,方法执行结束对方法外不会做任何改变;此时需要改变外层的变量,必须返回主动赋值。- **引用数据类型:**指针存放在局部变量表中,调用方法的时候,副本引用压栈,赋值仅改变副本的引用。但是如果通过操作副本引用的值,修改了引用地址的对象,此时方法以外的引用此地址对象当然被修改。(两个引用,同一个地址,任何修改行为2个引用同时生效)。

2023-02-22 23:26:37 201

原创 浅谈SQL中的union和union all

`MySQL UNION` 操作符用于连接两个以上的 `SELECT` 语句的结果组合到一个结果集合中。多个 `SELECT` 语句会删除重复的数据。`UNION` 操作符选取不同的值,如果允许得到重复的值,可以使用 `UNION ALL`union 和union all区别

2023-02-21 23:01:36 505

原创 Java字节码介绍

Java之所以可以“一次编译,到处运行”。一是因为JVM针对各种操作系统、平台都进行了定制。二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。

2022-12-21 22:51:12 1735

原创 【Kubernetes系列】工作负载资源之DaemonSet

DaemonSet确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。在每个节点上运行集群守护进程在每个节点上运行日志收集守护进程在每个节点上运行监控守护进程一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个 DaemonSet。一个稍微复杂的用法是为同一种守护进程部署多个 DaemonSet;

2022-12-01 20:43:53 786 2

原创 【Kubernetes系列】工作负载资源之StatefulSet

StatefulSet 是用来管理有状态应用的工作负载 API 对象。StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。和 Deployment 类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是, StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的, 但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。

2022-11-29 22:00:19 677

原创 【Kubernetes系列】工作负载资源之ReplicaSet

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。

2022-11-24 20:30:12 402 2

原创 【Kubernetes系列】工作负载资源之Deployment

Deployment很适合用来管理你的集群上的无状态应用,Deployment中的所有Pod都是相互等价的,并且在需要的时候被替换。一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。负责描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态。

2022-11-21 20:48:43 610 1

原创 【Kubernetes系列】Workloads(工作负载)

工作负载是在 Kubernetes 上运行的应用程序。在 Kubernetes 中,无论你的负载是由单个组件还是由多个一同工作的组件构成, 你都可以在一组Pod中运行它。在 Kubernetes 中,Pod代表的是集群上处于运行状态的一组 容器 的集合。Kubernetes Pod 遵循预定义的生命周期。例如,当在你的集群中运行了某个 Pod,但是 Pod 所在的 节点 出现致命错误时, 所有该节点上的 Pod 的状态都会变成失败。

2022-11-07 13:40:46 261 1

原创 Spring事务传播行为,事务隔离级别以及事务失效的场景

@Transactional注解,事务的传播行为,事务失效的原因,事务为什么失效,事务的隔离级别

2022-11-02 20:05:10 480 1

原创 Docker容器网络(七)

在应用程序和网络之间是 Docker 网络,被亲切地称为容器网络模型 或 CNM(Container Network Model)。是 CNM 为您的 Docker 容器代理连接性,并且还抽象出网络中常见的多样性和复杂性。结果是可移植性,它来自 CNM 强大的网络驱动程序。这些是 Docker 引擎、Swarm 和 UCP 的可插拔接口,提供了多主机网络、网络层加密和服务发现等特殊功能。每个驱动程序都提供权衡,并根据用例具有不同的优势。

2022-10-24 18:32:35 3664 1

原创 【Kubernetes系列】Pod

Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。Pod是一组(一个或多个)容器;这些容器共享存储、网络、以及怎样运行这些容器的声明。Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。Pod 所建模的是特定于应用的 “逻辑主机”,其中包含一个或多个应用容器, 这些容器相对紧密地耦合在一起。在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。

2022-10-16 22:07:31 326 1

原创 【Kubernetes系列】Container(容器)

镜像摘要唯一标识了镜像的特定版本,因此 Kubernetes 每次启动具有指定镜像名称和摘要的容器时,都会运行相同的代码。如果有一个容器化的应用程序需要修改,则需要构建包含更改的新镜像,然后再基于新构建的镜像重新运行容器。这里的服务仅限于新容器的 Pod 所在的名字空间中的服务,以及 Kubernetes 控制面的服务。容器镜像是一个随时可以运行的软件包, 包含运行应用程序所需的一切:代码和它需要的所有运行时、应用程序和系统库,以及一些基本设置的默认值。每个运行的容器都是可重复的;

2022-09-30 15:40:41 717

原创 【Kubernetes系列】Kubernetes介绍以及架构

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。Kubernetes这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。Google 在 2014 年开源了 Kubernetes 项目。Kubernetes 建立在Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

2022-09-19 23:10:08 186 1

原创 【Kubernetes系列】Kubernetes组件介绍

部署完 Kubernetes,便拥有了一个完整的集群。集群是由一组被称作节点(node)的机器组成, 这些节点上会运行由 Kubernetes 所管理的容器化应用。且每个集群至少有一个工作节点。工作节点会托管所谓的 Pods,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和 Pods。为集群提供故障转移和高可用性, 这些控制平面一般跨多主机运行,而集群也会跨多个节点运行。

2022-09-19 11:17:18 209 1

原创 【Kubernetes系列】Kubernetes相关概念介绍

【Kubernetes系列】Kubernetes相关概念Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。ReplicaSet 支持新的基于集合的选择器需求(在标签的用户指南中有相关描述),而副本控制器只支持基于等值的选择器需求。包含可被 Pod 中容器访问的数据的目录。这些规则是使用 Kubernetes 标签(label) 和 Pod 中指定的 选择算符定义的, 这些规则、

2022-09-13 23:05:22 262 1

原创 猿创征文|小而巧的API文档生成工具之smart-doc

一个 java restful api 文档生成工具,不用像Swagger一样写大量注解,完全基于接口源码分析来生成接口文档,但是需要按照 java的标准注释写。完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释,smart-doc就能帮你生成一个简易明了的Markdown、HTML5、、的文档。注意:需要完全按照java的标准注释,如果方法注释包含特殊符号或者换行的话,生成的json是会出现格式错误,但是不影响相关的html使用。...

2022-08-31 20:41:35 1002 3

原创 23种设计模式之分类总结

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。简单说。..

2022-08-29 20:30:38 247 1

原创 23种设计模式之解释器模式(Interpreter)

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。1、可扩展性比较好,灵活。2、增加了新的解释表达式的方式。3、易于实现简单文法。1、可利用场景比较少。2、对于复杂的文法比较难维护。3、解释器模式会引起类膨胀。4、解释器模式采用递归调用方法。1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。...

2022-08-28 22:07:34 286 1

原创 23种设计模式之中介者模式(Mediator)

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。...

2022-08-25 20:18:25 325 1

原创 23种设计模式之访问者模式(Visitor Pattern)

访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增加新的数据结构很困难。...

2022-08-24 22:14:54 147 1

原创 23种设计模式之状态模式和策略模式的区别

在行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下状态模式与策略模式很相似,确切的说状态模式包含策略模式。策略模式封装的是行为,而状态模式封装的是变化。尽管这么说,但事实上策略模式与状态模式在很多情况下都是可以互相转化的,具体应该使用何种模式,就要从上面的两个方面尽心分析,能够看得出明显状态变化的,当热要用状态模式;...

2022-08-23 20:25:01 2549 1

原创 23种设计模式之状态模式(State)

当对象的状态改变时,同时改变其行为。就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态。所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。状态模式允许一个对象基于内部状态而拥有不同的行为和程序状态机(......

2022-08-23 20:23:50 203

原创 23种设计模式之备忘录模式

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销操作,其中就使用了备忘录模式。........

2022-08-23 20:19:38 163

原创 23种设计模式之命令模式和策略模式的区别

命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色。它们虽然同为行为类模式,但是两者的区别还是很明显的。策略模式的意图是封装算法,它认为“算法”已经是一个完整的、不可拆分的原子业务(注意这里是原子业务,而不是原子对象),即其意图是让这些算法独立,并且可以相互替换,让行为的变化独立于拥有行为的客户;而命令模式则是对动作的解耦,把一个动作的执行分为执行对象(接收者角色)、执行行为(命令角色),让两者相互独立而不相互影响。

2022-08-22 22:36:50 1492 1

原创 23种设计模式之命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。命令模式又称为行动/交易模式;是指将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。1、降低了系统耦合度。2、新的命令可以很容易添加到系统中去。使用命令模式可能会导致某些系统有过多的具体命令类。....................

2022-08-15 22:37:58 240 1

ClickHouse从入门到精通

ClickHouse从入门到精通 xmind脑图

2022-08-09

restful api设计

restful api设计

2022-03-10

SpringCloud中文文档

SpringCloud中文文档

2022-03-10

空空如也

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

TA关注的人

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