chun_soft
码龄12年
关注
提问 私信
  • 博客:1,268,004
    社区:85
    问答:1,349
    1,269,438
    总访问量
  • 212
    原创
  • 670,606
    排名
  • 473
    粉丝
  • 2
    铁粉

个人简介:再忙也不要忘记学习!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2012-11-10
博客简介:

跨语言,跨平台,跨应用

博客描述:
专注改变世界
查看详细资料
个人成就
  • 博客专家认证
  • 获得618次点赞
  • 内容获得509次评论
  • 获得2,016次收藏
  • 代码片获得499次分享
创作历程
  • 30篇
    2021年
  • 8篇
    2020年
  • 24篇
    2019年
  • 38篇
    2018年
  • 77篇
    2017年
  • 37篇
    2016年
  • 2篇
    2015年
  • 2篇
    2014年
  • 16篇
    2013年
成就勋章
TA的专栏
  • MySQL原理分析
    6篇
  • Dubbo
    5篇
  • 分库分表
    2篇
  • 后端技术基础
    1篇
  • JVM
    4篇
  • 分布式系统
    2篇
  • Java并发
    3篇
  • 架构设计与分析
    4篇
  • redis
    5篇
  • kafka
    3篇
  • zookeeper
    6篇
  • 数据结构
    2篇
  • 领域驱动设计
    4篇
  • 程序人生
    1篇
  • Java设计模式
    4篇
  • SpringCloud实战与原理分析
    2篇
  • ElasticSearch实战与原理分析
    3篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
阳光
再忙也不要忘记学习!
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Apache Dubbo 服务发布源码分析

1、源码分析思考按照对于 dubbo 的理解,如果要实现服务发布和注册,需要做哪些事情?配置文件解析或者注解解析服务注册启动 netty 服务实现远程监听2、Dubbo 对于 Spring 的扩展最早我们使用 Spring 的配置,来实现 dubbo 服务的发布,方便大家的同时,也意味着 Dubbo 里面和 Spring 肯定有那种说不清的关系。/** * (1)spring.schemas文件用来配置schame文件的位置; * (2)当spring容器扫描到配置文件,例如dubbo
原创
发布博客 2021.09.23 ·
1142 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

MyCat 基础入门

官网:http://www.mycat.io/Mycat 概要介绍:https://github.com/MyCATApache/Mycat-Server入门指南:https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%971、Mycat介绍与核心概念1.1 基本介绍历史:从阿里 cobar 升级而来,由开源组织维护,2.0 正在开发中。定位:运行在应用和数据库之间,可以当做.
原创
发布博客 2021.09.09 ·
1332 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

分库分表基础

1、为什么要分库分表1.1 数据库性能瓶颈的出现对于应用来说,如果数据库性能出现问题,(1)要么是无法获取连接,是因为在高并发的情况下连接数不够了。(2)要么是操作数据变慢,数据库处理数据的效率除了问题。(3)要么是存储出现问题,比如单机存储的数据量太大了,存储的问题也可能会导致性能的问题。归根结底都是受到了硬件的限制,比如 CPU,内存,磁盘,网络等等。但是我们优化肯定不可能直接从扩展硬件入手,因为带来的收益和成本投入比例太低。所以我们先来分析一下,当我们处理数据出现无法连接,或者变慢的问题
原创
发布博客 2021.09.07 ·
760 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Redis 原理

1、发布订阅模式1.1 列表的局限通过队列的 rpush 和 lpop 可以实现消息队列(队尾进队头出),但是消费者需要不停地调用 lpop 查看 List 中是否有等待处理的消息(比如写一个 while 循环)。 为了减少通信的消耗,可以 sleep()一段时间再消费,但是会有两个问题:1、如果生产者生产消息的速度远大于消费者消费消息的速度,List 会占用大量的内存。2、消息的实时性降低。list 还提供了一个阻塞的命令:blpop,没有任何元素可以弹出的时候,连接会被阻塞。基于 list
原创
发布博客 2021.09.03 ·
1335 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Redis 入门与数据结构

1、redis 诞生历程08 年的时候有一个意大利西西里岛的小伙子,笔名 antirez(http://invece.org/),创建了一个访客信息网站 LLOOGG.COM。有的时候我们需要知道网站的访问情况,比如访客的 IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。在国内,有很多网站提供了这个功能,比如 CNZZ,百度统计,国外也有谷歌的 Google Analytics。我们不用自己写代码去实现这个功能,只需要在全局的 footer 里面嵌入一段 JS 代码就行了,当页面被
原创
发布博客 2021.09.02 ·
976 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

程序运行原理:程序是如何运行又是如何崩溃的?

软件的核心载体是程序代码,软件开发的主要工作产出也是代码,但是代码被存储在磁盘上本身没有任何价值,软件要想实现价值,代码就必须运行起来。那么代码是如何运行的?在运行中可能会出现什么问题呢?1、程序是如何运行起来的软件被开发出来,是文本格式的代码,这些代码通常不能直接运行,需要使用编译器编译成操作系统或者虚拟机可以运行的代码,即可执行代码,它们都被存储在文件系统中。不管是文本格式的代码还是可执行的代码,都被称为程序,程序是静态的,安静地呆在磁盘上,什么也干不了。要想让程序处理数据,完成计算任务,必须把程序
原创
发布博客 2021.07.23 ·
2089 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Apache Dubbo 之 内核剖析

本文的源码是基于 Dubbo 2.7.2 版本进行的分析1、Dubbo 的 SPI 机制在 Dubbo 中,SPI 贯穿在整个 Dubbo 的核心。所以有必要对 spi 做一个详细了解。SPI 机制在很多地方都有用到。1.1 关于 Java SPI了解 Dubbo 里面的 SPI 机制之前,我们先了解下 Java 提供的 SPI(service provider interface)机制,SPI 是 JDK 内置的一种服务提供发现机制。目前市面上有很多框架都是用它来做服务的扩展发现。简单来说,它是
原创
发布博客 2021.05.28 ·
499 阅读 ·
0 点赞 ·
3 评论 ·
0 收藏

Dubbo服务治理功能及新特性讲解

1、负载均衡1.1 负载均衡的背景到目前为止,dubbo 集成 zookeeper 解决了服务注册以及服务动态感知的问题。那么当服务端存在多个节点的集群时,zookeeper 上会维护不同集群节点,对于客户端而言,他需要一种负载均衡机制来实现目标服务的请求负载。通过负载均衡,可以让每个服务器节点获得适合自己处理能力的负载。负载均衡可以分为软件负载和硬件负载,在实际开发中,我们基础软件负载比较多, 比如 nginx,硬件负载现在用得比较少而且有专门的人来维护。Dubbo 里面默认就集成了负载均衡的算法和
原创
发布博客 2021.05.11 ·
741 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

微服务治理之 Dubbo 基础认识

1、为什么要用 Dubbo1.1 远程通信背景技术架构的发展从单体到分布式,是一种顺势而为的架构演进,也是一种被逼无奈的技术变革。架构的复杂度能够体现公司的业务的复杂度,也能从侧面体现公司的产品的发展势头是向上的。和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是 soa 还是微服务,他们本质上都是对于业务服务的提炼和复用。那么远程服务之间的调用才是实现分布式的关键因素。而在远程通信这个领域,其实有很多的技术,比如 Java 的 RMI、WebService、 Hessian、Dubb
原创
发布博客 2021.05.11 ·
762 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏

如何优雅的自定义 ThreadPoolExecutor 线程池

1、概述java 中经常需要用到多线程来处理一些业务,非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这个时候引入线程池比较合理,方便线程任务的管理。java中涉及到线程池的相关类均在 jdk 1.5 开始的java.util.concurrent包中,涉及到的几个核心类及接口包括:Executor、Executors、ExecutorService、ThreadPoolEx
原创
发布博客 2021.05.10 ·
7852 阅读 ·
3 点赞 ·
2 评论 ·
10 收藏

Java设计模式——策略模式

1、简介策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(Policy Pattern)。其定义如下:Define a family of algorithms, encapsulate each one, and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。)我们看看策略模式的通用类图。策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,我们再来看看策略模式的三个角色:Con
原创
发布博客 2021.05.10 ·
521 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

分布式缓存redis问题(2)

1、redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再重启,内存里的数据就全部都弄丢了啊。你必须得用 redis 的持久化机制,将数据写入内存的同时,异步的慢慢的将数据写入磁盘文件里,进行持久化。如果 redis 宕机重启,自动从磁盘上加载之前持久化的一些数据就可以了,也许会丢失少许数据,但是至少不会将所有数据都弄丢。这个其实一样,针对的都是 redis 的生产环境可能遇到的一些问题
原创
发布博客 2021.04.20 ·
370 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

分布式缓存 redis 问题(1)

1、项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?项目中缓存是如何使用的?这个,需要结合自己项目的业务来。为什么要用缓存?用缓存,主要有两个用途:高性能、高并发。(1)高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了
原创
发布博客 2021.04.08 ·
459 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

MQ 消息队列问题整理

1、为什么要用消息队列?先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。(1)解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把数据
原创
发布博客 2021.03.31 ·
1066 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

业务架构-可扩展架构

在实际工作中,业务需求总在不断变化,因此,经常会面临以下这些问题:(1)如何快速地上线新业务?老板很可能明天就想看到效果。(2)对某个功能进行修改,如何不影响到系统其它的功能?对于新的需求变化,我们一方面要快快搞定,另一方面要稳稳接住。但问题是软件虽然姓"软",但也不是想变就能变,如果事先没有经过良好的设计,调整起来,往往牵一发动全身,导致系统到处出问题。那如何设计一个具有良好扩展性的系统,能够快速支持业务变化落地呢?接下来,我们围绕系统的可扩展,先来了解下什么是系统,什么样的系统才能具备良好
原创
发布博客 2021.02.20 ·
1166 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

并发编程的基本认识

1、并发的发展历史1.1 真空管和穿孔打卡最早的计算机只能解决简单的数学运算问题,比如正弦、余弦等。运行方式:程序员首先把程序写到纸上,然后穿孔成卡片,再把卡片盒带入到专门的输入室。输入室会有专门的操作员将卡片的程序输入到计算机上。计算机运行完当前的任务以后,把计算结果从打印机上进行输出,操作员再把打印出来的结果送入到输出室,程序员就可以从输出室取到结果。然后,操作员再继续从已经送入到输入室的卡片盒中读入另一个任务重复上述的步骤。操作员在机房里面来回调度资源,以及计算机同一个时刻只能运行一个程序,在程
原创
发布博客 2021.02.20 ·
408 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

JVM 性能优化

1、重新认识 JVMJVM的大体物理结构图:如上面架构图所示,JVM分为三个主要子系统:(1)类加载器子系统(Class Loader Subsystem);(2)运行时数据区(Runtime Data Area);(3)执行引擎(Execution Engine)。1.1 类加载器子系统(Class Loader Subsystem)Java的动态类加载功能由类加载器子系统处理,处理过程包括加载和链接,并在类文件运行时,首次引用类时就开始实例化类文件,而不是在编译时进行。1.1.1 加
原创
发布博客 2021.02.18 ·
664 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM 垃圾回收

1、如何确定一个对象是垃圾对象要想进行垃圾回收,得先知道什么样的对象是垃圾。1.1 引用计数法对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任何指针对其引用,它就是垃圾。弊端:如果AB相互持有引用,导致永远不能被回收。例如:public class Main { public static void main(String[] args) { MyObject object1 = new MyObject(); M
原创
发布博客 2021.02.18 ·
361 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java虚拟机栈和内存模型

1、结合字节码指令理解Java虚拟机栈和栈帧栈帧:每个栈帧对应一个被调用的方法,可以理解为一个方法的运行空间。每个栈帧中包括局部变量表(Local Variables)、操作数栈(Operand Stack)、指向运行时常量池的引用(A reference to the run-time constant pool)、方法返回地址(Return Address)和附加信息。局部变量表:方法中定义的局部变量以及方法的参数存放在这张表中,局部变量表中的变量不可直接使用,如需要使用的话,必须通过相关指令
原创
发布博客 2021.02.18 ·
19153 阅读 ·
19 点赞 ·
1 评论 ·
49 收藏

Java 代码编译和执行的整个过程

1、JDK/JRE/JVM之间的关系JVM:Java Virtual Machine(Java虚拟机),包含了Java最核心的类库。JRE:java runtime environment (java运行环境),包含了JVM和一些常见的Java运行类库,即JRE=JVM+常见运行类库。最大特点:安装了JRE之后,只能运行java程序,但不能开发java程序。因为JRE中没有包含开发者编译Java的相关工具。安装好的JRE文件夹内包含bin和lib两个文件夹,其中bin就是JVM,lib是Java核心类库
原创
发布博客 2021.02.05 ·
637 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏
加载更多