自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mergades

世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程

  • 博客(214)
  • 资源 (5)
  • 收藏
  • 关注

转载 成长为高级工程师要扪心自问的几个问题

成长为高级工程师要扪心自问的几个问题

2023-01-29 11:15:54 171

原创 SOA与服务治理

2022-03-27 13:55:05 612

原创 DDD实战

2022-03-20 13:12:43 397

原创 Linux基础知识

2021-08-29 12:36:28 124

原创 Dubbo 3.0更新点整理

文档地址: Dubbo 3.0 文档

2021-06-28 11:19:11 337

原创 Linux IO模型——阻塞、非阻塞、多路复用、同步、异步、BIO、NIO

IO模型为什么需要单独拉出来来说?因为这里是我们理解linux底层一些契机,也是我们网络编程的基础。尤其现在我们主流的框架都支持了EPOLL IO模型,比如tomcat、redis、nginx等。0. IO** IO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)**。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。*

2021-04-13 19:47:58 201

原创 Mac 启动 Docker 自带的 Kubernetes

Kubernetes 版本 1.19.7docker desktop 版本 3.3.0配置镜像代理Docker Engine 的配置脚本中,添加国内的 Docker Hub、GCR、Quay 镜像加速器地址(比如七牛云、中科大、Azure、网易云、阿里云、Docker-cn等),从而提升获取 Docker 官方镜像的速度。你可以配置一个或多个地址。{ "debug": true, "experimental": false, "registry-mirrors": [ "ht

2021-04-09 11:18:16 223

原创 字典——dict

字典又称为散列表,是用来存储键值(key-value)对的一种数据结构Redis字典的实现Redis字典实现依赖的数据结构主要包含了三部分:字典、Hash表、Hash表节点。字典中嵌入了两个Hash表,Hash表中的table字段存放着Hash表节点,Hash表节点对应存储的是键值对。1.1 Hash表/* This is our hash table structure. Every dictionary has two of this as we * implement incremental

2021-04-01 10:23:30 161

原创 跳跃表

有序集合在生活中较常见,如根据成绩对学生进行排名、根据得分对游戏玩家进行排名等。对于有序集合的底层实现,我们可以使用数组、链表、平衡树等结构。数组不便于元素的插入和删除;链表的查询效率低,需要遍历所有元素;平衡树或者红黑树等结构虽然效率高但实现复杂。Redis采用了一种新型的数据结构——跳跃表。跳跃表的效率堪比红黑树,然而其实现却远比红黑树简单。数据结构![image.png](https://img-blog.csdnimg.cn/img_convert/7130d290c72369329f9b2b9

2021-03-31 20:29:11 125

原创 深入掌握Pod

将对Kubernetes如何发布与管理容器应用进行详细说明和示例,主要包括Pod和容器的使用、应用配置管理、Pod的控制和调度管理、Pod的升级和回滚,以及Pod的扩缩容机制等内容。Pod定义详解Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享

2021-03-30 16:55:29 188

原创 项目稳定规范

说到项目稳定性,我们应该说些什么呢?我觉得应该是我们所有的流程规范,以及代码规范、日常保障的总和,只有我们做好所有的要求才能很好的保障我们的项目稳定。下面我们主要从下面几个点来讨论下为了达到项目稳定性规范,我们还可以做些什么:JVM 基本规范基本Java代码规范数据库规范RPC调用规范JVM基本规范1. 基本参数设置一般很多低级错误都是在上线的业务初期我们错误的设置了JVM的内存大小,然后一直没有人关注,直到有一天线上爆炸后我们才想起来去更改相关的设置。目前来说我们需要设置基本的xms

2021-03-15 16:18:54 391

原创 Servlet、Servlet容器、web容器、spring容器、springmvc容器

Servlet、Servlet容器、web容器、spring容器、springmvc容器Tomcat&Jetty在启动时给每个Web应用创建一个全局的上下文环境,这个上下文就是ServletContext,其为后面的Spring容器提供宿主环境。Tomcat&Jetty在启动过程中触发容器初始化事件,Spring的ContextLoaderListener会监听到这个事件,它的contextInitialized方法会被调用,在这个方法中,Spring会初始化全局的Spring根容器,

2021-02-26 11:31:19 593

原创 职业发展的2点思考

技术能力团队管理

2021-02-24 11:22:41 111

原创 Redis 的持久化——AOF&RDB

Redis 的持久化——AOF&RDBRedis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照AOF日志AOF 日志是写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。为了避免额外的检查开销,Redis 在向 AOF 里面记录日志的时候,并不会先去对这些命令进行语法检查。所以,如果先记日志再执行命令的话,日志中就有可能记录了错误的命令,Redis 在使用日志恢复数据时,就可能会出错。而写后日志这种方式,就是先让

2021-02-03 10:36:19 106

原创 Redis高性能IO模型:为什么单线程Redis能那么快

3. 高性能IO模型:为什么单线程Redis能那么快Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis 为什么用单线程多线程的开销多线程编程模式面临的共享资源的并发访问控制问题:![image.png](https://img-blog.csdnimg.cn/img_convert/f35ff7aac2

2021-02-02 11:50:24 477

原创 Using filesort

Using filesort简介当我们使用order by语句的时候,经常会看到执行计划存在Using filesort。那么什么是Using filesort呢?先看官方定义:https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.htmlThis section describes when MySQL can use an index to satisfy an ORDER BY clause, the filesort o

2021-01-20 14:17:27 1304

原创 ThreadLocal 的实现机制与踩坑

ThreadLocal 的实现机制与踩坑ThreadLocal简介ThreadLocal主要提供thread-local变量(线程本地变量),与共享变量不同,ThreadLocal 让每个线程都将目标数据复制一份作为线程私有,后续对于该数据的操作都是在各自私有的副本上进行,线程之间彼此相互隔离,也就不存在竞争问题。访问变量的时候我们可以通过get/set方法访问。ThreadLocal变量一般是私有static类型,与线程状态紧密联系,比如绑定在线程的事务id或者用户数据。可以通过如下方式访问: i

2021-01-19 19:23:32 379

原创 服务注册与发现:Eureka

服务注册与发现:Eureka整体简介Eureka 整体上可分为两个主体: Eureka Server 和 Eureka Client.服务端注册服务注册: 服务提供者启动时, 会通过 Eureka Client 向 Eureka Server 注册信息, Eureka Server 会存储该服务的信息, Eureka Server 内部有二层缓存机制来维护整个注册表.提供注册表: 服务消费者在调用服务时, 如果 Eureka Client 没有缓存注册表的话, 会从 Eureka Server

2021-01-12 17:31:08 479

原创 Java并发包中线程池ThreadPoolExecutor原理探究

Java并发包中线程池ThreadPoolExecutor原理探究介绍线程池主要解决两个问题:当执行大量异步任务时线程池能够提供较好的性能。在不使用线程池时,每当需要执行异步任务时直接new一个线程来运行,而线程的创建和销毁是需要开销的。线程池里面的线程是可复用的,不需要每次执行异步任务时都重新创建和销毁线程。线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。每个ThreadPoolExecutor也保留了一些基本的统计数据,比如当前线程池完成的任务数目等。类图介绍

2020-12-22 20:33:58 124

原创 Java中9种常见的CMS GC问题分析与解决

核心参考美团博客 https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651754955&idx=1&sn=8411133d2e5f22b9e2c5a34cdc67985d&chksm=bd1248868a65c1900dd1b7203ce17159740253df2324a208ea9c71ee764e1bde1ed2616d77ce&scene=132#wechat_redirect...

2020-12-11 11:04:53 242 2

原创 Dubbo 服务引用源码简介

核心代码依赖2.7.8版本概述Dubbo服务应用可以通过直连和注册中心两种方式,推荐使用注册中心。#服务引用流程图大致步骤可以拆解为:-1. 配置加载-2. 创建invoker对象-3. 创建服务接口代理类ReferenceBeandubbo的服务引用以dubbo:reference 标签触发,对应的为ReferenceBean。该类实现了InitializingBean、FactoryBean接口:可以通过afterPropertiesSet初始化,通过标签的init=true属性

2020-11-05 20:27:46 438

原创 Dubbo服务导出源码简介

核心代码依赖2.7.8版本服务暴露流程图Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分:第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。前置工作服务导出的入口方法是 DubboBootstrapApplicationListener 的 onApplicationCont

2020-10-28 17:26:15 296

原创 ExtensionLoader详解

ExtensionLoader 注入的依赖扩展点是一个 Adaptive 实例,直到扩展点方法执行时才决定调用是哪一个扩展点实现。Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();Dubbo 改进了 JDK 标准的 SPI 的以下问题:JDK标准的SPI是一次性实例化所有的扩展点实现,比较消耗资源,而dubbo是在方法执行时才决定调用哪个扩展点JDK 如果扩展

2020-10-23 11:16:26 1458

原创 dubbo源码编译报错 找不到com.fasterxml.jackson.databind.ObjectMapper的类文件

文档http://dubbo.apache.org/en-us/docs/dev/build.htmlmvn clean install -Dmaven.test.skip源码编译报错[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.0:compile (default-compile) on project dubbo-rpc-jsonrpc: Compilation failure

2020-10-21 20:20:44 2771

原创 MySQL RR 级别行锁问题

现象因为RR级别下为可重复读,可能会造成部分事务提交后并发问题,从而导致数据出现问题,如下两个事务T1T2start TRANSACTION;SELECT * from black_user where id = 1;start TRANSACTION;SELECT * from black_user where id = 1 for update;SELECT * from black_user where id = 1 for update;upda

2020-08-31 09:49:01 413

原创 Dubbo ServiceBean详解

ServiceBean类图类继承图成员变量和方法服务暴露服务暴露流程图我们看几个核心的节点ServiceConfig#doExportprotected synchronized void doExport() 该方法为同步方法,在初始化时同步阻塞。方法开始时进行一些列的检查,包含对provider,module,application,ref。 if (ref instanceof GenericService) { interfaceCla

2020-05-30 17:03:32 2373

原创 Druid 获取链接流程图

2020-05-16 10:17:26 416

原创 2. 映射文件入口

映射文件用于配置 SQL 语句,字段映射关系等。映射文件中包含、、、、 <select|insert|update|delete>等二级节点.映射文件解析解析入口XMLConfigBuilder#parseConfiguration的最后一步,调用方法mapperElement(root.evalNode(“mappers”))来完成对mappers元素的解析。XMLConfigBuilder#mapperElementprivate void mapperElement(XNode p

2020-05-11 19:04:45 186

原创 1. MyBatis 配置文件解析过程

配置文件解析过程 @Test public void test0() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSe...

2020-05-04 15:13:34 239

原创 JMap -heap 命令

jmap -heap pid使用jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况.测试输出如下为使用Jmap -heap命令的输出Attaching to process ID 152, please wait...Debugger attached successfully.Server compiler detected.J...

2020-03-31 21:18:02 2020

原创 InnoDB磁盘数据结构

InnoDB磁盘数据结构主要包含:Tables 表结构Indexes 索引结构Tablespaces 表空间InnoDB Data Dictionary InnoDB数据字典Doublewrite Buffer 双写缓存Redo LogUndo LogsTablescreate tableCREATE TABLE t1 (a INT, b CHAR (20), PRIMAR...

2020-03-12 11:23:35 291

原创 InnoDB内存数据结构

InnoDB内存相关的数据结构主要包含以下几种:Buffer PoolChange BufferAdaptive Hash IndexLog BufferBuffer PoolBuffer Pool 是在主存的一片区域,主要用来缓存表和索引数据供InnoDB访问。Buffer Pool允许频繁访问的数据可以加速直接从内存读取。专业的服务器,一般使用80%的物理内存作为Buffer ...

2020-02-29 11:13:10 1443

原创 InnoDB ACID模型

文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-acid.htmlACID 模型是设计数据库的基本原则。MySQL包含各种组件,比如InnoDB引擎,实现了ACID引擎,有效避免数据错误和宕机后的数据恢复问题。ACID 指:A: atomicity.C: consistency.I: isolation.D: durability....

2020-02-17 21:09:52 226

转载 RocketMQ分布式事务简介

转载 https://www.infoq.cn/article/2018/08/rocketmq-4.3-release为什么需要分布式事务在微服务架构中,随着服务的逐步拆分,数据库私有已经成为共识,这也导致所面临的分布式事务问题成为微服务落地过程中一个非常难以逾越的障碍,但是目前尚没有一个完整通用的解决方案。其实不仅仅是在微服务架构中,随着用户访问量的逐渐上涨,数据库甚至是服务的分片、分...

2020-02-12 15:18:39 563

原创 MySQL Online DDL

核心参考:https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.htmlOnline DDLOnlineDDL支持在线更改表结构的同时,运行DML语句。Online DDL是5.7版本的特性,主要包含:提高了业务的相应和可用性,不会造成业务的长时间不可用。在DDL操作使用锁时,保证程序的并发和性能之前的平...

2020-02-06 15:31:05 453

原创 InnoDB Locking——锁类型简介

主要翻译文档 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html针对部分理论知识自己做了测试。InnoDB锁类型主要包含以下几种Shared and Exclusive Locks ,即我们常说的共享锁和独占锁Intention Locks,意向锁Record Locks,行锁Gap Locks,GAP锁Next...

2020-02-04 11:42:22 627

原创 MySQL幻读 以及GAP、Next-Key Locking

什么是幻读 phantomThe so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. For example, if a SELECT is executed twice, but returns ...

2020-01-22 16:09:34 351

原创 Dubbo通信模型

Dubbo通信Dubbo consumer和provider通信通过TCP长连接的方式实现,并且通过单一长连接。优点长连接有效减少诸如http三次握手机制的性能耗损缺点不适合大量数据发送配置Dubbo 协议缺省每服务每提供者每消费者使用单一长连接,如果数据量较大,可以使用多个连接。<dubbo:service connections="1"/><dubb...

2020-01-21 15:56:25 373

原创 SpringBoot environment

EnvironmentEnvironment 是Spring的当前运行环境的抽象定义,一般包含两类:profile和properties。具体的属性实现体现在 PropertyResolver 接口。prepareEnvironment在SpringBoot启动流程中,会初始化对应的环境。SpringApplication#prepareEnvironment private Confi...

2020-01-17 14:18:19 340

原创 SpringBoot 自动化装配流程

SpringBootApplication 启动类加载SpringBootApplication SpringBoot的核心注解,该注解属于一个复合注解@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAut...

2020-01-15 21:19:13 938

mybatis plus baomidou

mybatis plus baomidou

2018-12-18

spring-data-oracle-1.0.0.RELEASE.jar

spring-data-oracle-1.0.0.RELEASE.jar下载

2015-03-27

oscache-2.0.jar

解压即可看到全部内容。

2015-03-14

《人件》中文版pdf

软件管理与软件工程译丛 人 件 Peopleware:Productive Projects and Teams (第2版) [美] 汤姆•迪马可(Tom Demarco) / 著 蒂姆•利斯特(Tim Lister) UMLChina翻译组 方春旭 叶向群 / 译

2015-01-05

jsp web聊天 群聊和私聊 源码和可运行程序

可运行的jspweb聊天程序,包含源代码。测试可运行。 源代码在java目录下,所以你下载后只需要将文件放在tomacat下即可,看源码的话,只需要查看java文件夹。

2013-05-17

空空如也

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

TA关注的人

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