自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

方小白

方家小白

  • 博客(116)
  • 资源 (1)
  • 收藏
  • 关注

原创 ModuleNotFoundError: No module named ‘distutils.cmd‘ 解决

解决 ModuleNotFoundError: No module named 'distutils.cmd'

2022-08-26 15:03:47 12940 4

原创 npx create-react-app ui --templete typescript 报错 ERR_SOCKET_TIMEOUT

创建 react-app 超时:Creating a new React app in /xxxxxxxx/chaos/ui.Installing packages. This might take a couple of minutes.Installing react, react-dom, and react-scripts with cra-template...npm ERR! code ERR_SOCKET_TIMEOUTnpm ERR! network Socket timeou

2022-04-19 19:53:52 593

原创 Pycharm 中 ModuleNotFoundError: No module named ‘xxxx‘

Pycharm报错找不到对应的模块。可能是是工作目录配置不对。**在启动入口处配置 working directory 为某个包的父级目录即可。**如下图

2022-03-18 17:06:17 847

原创 Go设计模式-单例设计模式

更多内容尽在:我的博客或者:官煮窝单例模式解决什么问题处理资源访问冲突表示全局唯一. 在整个程序中,某些数据应该存储一份,这样的类,就应该设计成单例类。比如,SpringBoot应用的配置项。再比如 雪花算法的实现类。实现单例如何实现单例呢,或者说怎样能称得上单例呢?首先,单例要求全局唯一,那就是说 不允许外部随随便便new一个新对象.这句话里,至少有两个点:1.不允许外部new对象。 2.需要类内部new对象,并提供给外部进行使用。其实很简单的,单例类的构造方法需要是priv

2022-03-12 15:21:06 341

原创 RocketMQ系列-一个系列最好的开篇词就是设想

开篇 写这篇文章的时间是2021年9月1日,这只能算是自己学习RocketMQ的笔记吧。希望在2021年的年底能够将整个系列完整的发布到方家小白公众号和 fangjiaxiaobai.github.io 博客(点击查看原文即可到达)中。想写的文章也还有很多,同时在写的有 《Java的Stream并行流设计》。2021年国家发布了很多政策,尤其是互联网行业,特别是 在线教育,我前些日子里也是一名在线教育从业者。而写这个系列的最根本的原因,也是因为被人常问的就是 RocketMQ的底层原理,可想而知,我并

2021-11-27 16:25:35 160

原创 RocketMQ系列-架构设计之启动过程详解

之前我们已经学习了RocketMQ是由四个部分组成的。这篇文章更加深入的来看看这个四个部分。NameServer 接下来,我们来看 NameServer 的相关内容,我们都知道 NameServer 是 RocketMQ 的注册中心。那它肯定会有 服务发现,检查检查,路由等等功能, 我们就按照这个思路去看看 NameServer 是如何启动的。NameSrv 的启动过程我们在部署 RocketMQ的时候,使用下面的命令启动了RocketMQ的NameServer.nohup sh&nb

2021-11-27 16:21:57 127

原创 RocketMQ系列-架构设计之消息收发过程详解

上一篇文章RocketMQ架构设计之启动过程解析 分析了 NameServer, Broker, Producer, Consumer 四个部分的启动过程, 这边文章我们分析 消息的收发过程.生产者发送消息过程解析我们还是看上篇文章中的例子:// 使用GroupName初始化ProducerDefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");// 指定NameSrv的地址: 也可

2021-11-27 16:12:23 691

原创 一文搞懂OOM

一文搞懂内存溢出,保内存平安,防止你被祭天:[手动滑稽]:释义OOM的含义,到底是什么意思?是JVM独有的吗? linux是否也会存在,那又是怎么肥事?OOM : Out Of Memory . 内存溢出。内存溢出来了,也就是说内存不够用了,就会发生这个问题了。内存又是什么呢?1、 内存 是计算机的重要部件之一。它用于暂时存放CPU中的运算数据,与硬盘等外部存储交换数据。是外存与CPU进行沟通的桥梁。2、Java内存。说到这里我们就不得说一下java的内存模型(JMM)了。如下图。就这个

2021-04-30 13:24:00 1387

原创 Redis的数据类型之有序集合 · zset

文章目录书接上回`zset`简介`zset`类型的应用场景`zset`的基本命令`zadd``zscore``zincrby``zcard``zcount``zrange``zrevrange``zrangebyscore``zrevrangebyscore``zrank``zrevrank``zrem``zremrangebyrank`zremrangebyscorezrangebylex`zlexcount``zremrangebylex`zscan`zunionstore`zinterstore`zs

2020-06-07 13:21:50 313

原创 跳表

前言文中附代码实现. 电梯直达在公众号回复 【跳表】 也可以获取哦。什么是跳表跳表是一种数据结构。它允许快速查询一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(log n),优于普通队列的O(n)。 from. 维基百科引题线性表这种数据有两种具体实现, 数组和链表。具体的内容之前的文章里也有说过,可以翻翻看哇~。在这里两种数据结构中,数组的优点是查找速度快,而链表的优点是增删的效率高,这也是我们常说的。其实,非也。数组是一种内存连续的数据结构,其优点是可以通过首

2020-06-07 13:17:45 259

原创 Redis的数据类型之集合 · set

文章目录书接上回`set`简介`set`类型的应用场景`set`的基本命令`sadd``smembers``sismember``spop``srandmemeber``srem``smove``scard``sinter``sinterstore``sunion``sunionstore``sdiff``sdiffstore``sscan``set`的内部结构`hashtable`intset字段解释:总结最后书接上回前一篇文章,我们学习的是 Redis的数据结构之hash, 学习了其基本的操作和使用

2020-06-07 13:06:54 488

原创 Redis的数据类型之 hash

书接上回前一篇文章,我们学习的是 Redis的数据结构 list, 学习了其基本的操作和使用内部数据结构是quicklist和ziplist,这两种数据结构虽然起得名字是list,但是其内部结构确实链表。如果不记得了其内部构成, 就再看看看着上篇文章吧。现在我们继续学习下一个数据类型 hashhash简介hash 是一个键值对集合. 是 string 类型的 key 和 value 的映射表, hash 特别适合用于存储对象, 每个hash 类型可以存储 2^32-1 个键值对。hash 实际上就是

2020-06-07 13:04:58 247

原创 Redis的数据结构之 list

文章目录书接上回`list` 简介`list`的相关命令`LPUSH`命令`lpushx` 命令`rpush` 命令`rpushx` 命令`lpop` 命令`rpop` 命令`lrange` 命令`rpoplpush` 命令`lrem` 命令`llen` 命令`lindex` 命令`linsert` 命令lset 命令`ltrim` 命令blpop 命令`brpop` 命令`brpoplpush` 命令`list`内部结构之`quicklist``quicklist``quicklistNode``zipl

2020-06-07 13:03:14 1396

原创 Redis的数据结构1 - string

文章目录`string`简介`string`相关常用命令`set`命令`setnx`命令`setEx` 命令`psetEx` 命令`get`命令`getset`命令`strlen` 命令`APPEND`命令`setrange`命令`getrange`命令`incr` 命令`incrby`命令`INCRBYFLOAT`命令`DECR`命令`DECRBY`命令`mget`命令`mset`命令`msetnx`命令`Redis`如何实现`String`这一数据结构`sds`使用`sds`比使用`C`字符串有什么好处

2020-06-07 13:00:14 161

原创 Redis 的多个数据库

Redis 默认提供了16个数据库. 每个数据库都有一个id, 从 0 开始, [0,15]。 不同的数据库中数据隔离保存。我们可以通过修改redis的配置文件进行修改数据库的数量。database 32使用 select <ID> 可以切换数据库.示例如下:127.0.0.1:6379> select 1OK# 演示数据隔离127.0.0.1:6379[1]> set test 1OK127.0.0.1:6379[1]> select 2Ok12

2020-06-07 12:58:26 2151

原创 快来!系统学习Redis~,不看后悔一年!

目录本系列学习笔记以 redis5.0.7 版本为基础进行学习.基础概念 Redis简介及其他数据库对比 Redis的多个数据库 Redis的单机部署(源码安装/docker安装) Redis的集群部署(源码安装/docker安装)数据结构(0-)五种常用的数据类型常用的命令以及浅浅的了解内部结构。 String list hash set zset不常用,知道会很牛逼的数据类型常用的命令以及浅浅的了解内部结构。 bitmap hyperlog Geo

2020-06-07 12:56:00 265

原创 红黑树

问题 什么是红黑树? 红黑树怎么自平衡? 什么时候左旋和右旋? 插入或删除操作破坏了熟的平衡该怎么处理?特征红黑树是自平衡的二叉查找树. 除了具备二叉查找树的特征之外,还具有以下特征:性质1: 节点要么是红色要么是黑色性质2: 根节点是黑色性质3: 每个叶子的节点都是黑色的空节点性质4: 每个红色节点的两个子节点都是黑色性质5: 从任意节点到其每个叶子的所有路径都包含相同的黑色节点根据性质5 ==> 如果一个节点存在黑色子节点,那么该节点肯定有两个节点正是红黑树的五条

2020-06-07 12:51:12 105

原创 Redis系列03之Redis简介

Redis简介Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图(bitMap),超日志(hyperlog),带有半径查询和流的地理空间索引(geohash)。Redis还内置了副本,Lua脚本,LRU驱逐策略,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis...

2020-02-13 07:38:42 170

原创 Redis系列持续更新

目录本系列学习笔记以 redis5.0.7 版本为基础进行学习.基础概念 Redis简介及其他数据库对比 Redis的多个数据库 Redis的单机部署(源码安装/docker安装) Redis的集群部署(源码安装/docker安装)数据结构五种常用的数据类型常用的命令以及浅浅的了解内部结构。 String list hash set zset不常用,知道会...

2020-02-13 07:32:48 170

原创 数据结构之跳表

文章目录前言什么是跳表引题跳表跳表的实现代码实现时间复杂度的分析空间复杂度的分析比较跳表 与平衡树、哈希表的比较解释如下:`Redis`中作者选择SkipList的原因:总结推荐最后前言文中附代码实现. 在公众号回复 【跳表】 也可以获取哦。什么是跳表跳表是一种数据结构。它允许快速查询一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(log n),优于普通队列的O(n...

2020-01-05 18:16:45 582

原创 你!学Java的,除了Spring你还知道什么

Vert.x 是什么vert.x是基于JVM,轻量级,高性能的应用平台。JVM的Reactive开发套件基于全异步Java服务Netty同时支持多种编程语言同步无锁编程极好的分布式开发支持Vert.x为Java中构建反应式微服务平台提供了整套工具包.包含Web、Data access、Reactive、Microservices、MQTT、Authentication and A...

2019-09-08 21:00:48 1237

原创 Java定时器系列一之你最容易忽略的定时器

Timer介绍Timer是JDK自带的一种最为简单的定时器实现.Timer在java.util包中,最好出现在jdk1.3线程的工具,用于在后台线程中安排将来执行的任务。 可以将任务安排为一次性执行,或者以固定间隔重复执行每一个Timer对象对应的是一个线程。当定时任务都执行完成后,计时器的任务执行线程会正常终止,但是这可能会发生在任意长的时间内。默认情况下,任务执行线程不作为守护线程运行...

2019-09-08 07:56:46 160

原创 全网!最全!最详细! HashMap 源码解析

这是全网最全最详细的HashMap解析了,相信你看过一定不会后悔!全类逐行解析!完整讲解数据结构以及中间使用的算法。HashMap的底层数据结构(节点结构,这种结构有什么优点)如何处理hash冲突怎么扩容?扩展机制是什么?增删改查过程链表到红黑树的转换过程,反之?红黑树相关(见另一篇数据结构之红黑树)hash计算达到的目标 掌握底层数据结构 掌握扩容原理 掌握hash冲突的处理过程 掌握增删改查过程看之前要掌握的知识点红黑树看之前大体了解的知识点hash算法...

2019-09-06 13:22:06 563

原创 Kafka-Manager 安装

文章目录安装步骤下载Kakfa-Manager解压使用sbt打包应用程序拷贝出打包好的程序,解决配置环境变量(也可以修改配置文件)启动Kafka-manager使用安装步骤下载Kakfa-Managerwget https://github.com/yahoo/kafka-manager/archive/2.0.0.2.tar.gz解压tar -zxvf 2.0.0.2.tar.gz...

2019-08-30 09:54:31 384

原创 搭建Eureka - 分区

分区对于一个用户量比较大或者地理位置分布范围很广的项目。跨地区调用时,延时比较大。我们可以通过同一个机房的服务优先调用同一个机房的服务,当本机房的服务不可用的时候,才会调用其他机房的服务。Eureka中的分区概念eureka提供了region和zone两个概念。region: 地区。比如亚洲地区,欧洲地区。zone: region内的某个机房。我的使用案例几个同事一起开发一个项目...

2019-08-23 22:17:09 453

原创 数据源读写分离

以springboot2.x+mybatis+mysql+HikariCP为例,记录下自己的开发记录。说点废话从四种读写分离的方式看到了读写分离有四种实现方式。我这里使用的是第三种方式实现的。目前实现的是一个主(Master),两个从(Slave)。废话少说,讲下我的思路。定义四个数据源,为什么是四个呢? Master1 ,Slave2,统一的数据源*1(一下称为DynamicDatas...

2019-05-20 20:11:05 557

原创 HikariCP配置读写分离的时候,出现的一个小问题。

日后补充,占坑。

2019-05-11 18:07:34 2332

原创 SpringCloud-alibaba - 03 - 使用nacos做配置中心

使用nacos做配置中心步骤1.新建一个springboot项目2.修改pom.xml,如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...

2019-04-17 13:40:52 619

原创 SpringCloud-ablibaba - 02 - 构建一个服务提供者

步骤新建一个springboot应用。修改pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s...

2019-04-17 13:38:15 499

原创 SpringCloud-ablibaba - 01 - 搭建nacos

搭建步骤在 https://github.com/alibaba/nacos/releases 下载最新版本.解压后,点击startup.md运行即可。启动完成后,http://127.0.0.1:8848/nacos/,默认用户名和密码均为nacos,nacos具体配置,日后记录。nacos的持久化存储在下载的nacos服务的conf目录下:有nacos-mysql.sql和sche...

2019-04-17 12:04:33 859

原创 java8中新的日期和时间API

日期时间API发展历程java1.0 只有java.util.Date类jdk1.1 java.util.Calender类jdk1.8 java.time.*JDK1.8的java.time包。jdk8在java.time包中提供了很多可以操作的类。、LocalDate该类是一个不可变对象。他只提供了简单的日期,不提供当天的时间。也不附带任何和时区相关的信息。System...

2019-02-23 17:29:48 400

原创 netty实战笔记 第九章 单元测试

9.1 EmbeddedChannel 概述netty提供了Embedded传输,用于测试ChannelHandler. 这个服传输是一种特殊的Channel实现,EmbeddedChannel的功能,这个实现提供了通过ChannelPipeline传播事件的简便方法。具体的思路是:将入站数据或者出站数据写到EmbeddedChannel中,然后检查是否有任何东西到达了ChannelPipel...

2018-12-16 16:58:33 186

原创 netty实战笔记 第八章 引导

8.1 bootstrap类先看下引导类的层次结构服务器端使用一个父Channel来接受来自客户端的连接,并创建子Channel用于他们之间的通信。客户端将最可能只需要一个单独的,没有父Channel的Channel来用于所有的网络交互。为什么引导类是Cloneable的?AbstractBootStrap类的完成声明:public abstract class Abstract...

2018-12-16 16:57:52 356

原创 netty实战笔记 第七章 EventLoop和线程模型

7.1 线程模型概述java5 随后引入了Executor API, 其线程池通过缓存和重用Thread极大的提高了性能。基本的线程池话模型描述为:1.从池的空闲线程列表中选择一个Thread,并且指派它去运行一个已提交的任务(一个Runnable的实现)2.当任务完成的时候,将该Thread返回给该列表,使其可被重用。线程频繁的切换带来的是上下文切换的开销。随着线程数量的增多变得极其明...

2018-12-16 16:56:08 255

原创 netty实战笔记 第六章 ChannelHandler和ChannelPipeline

6.1 ChannelHandler家族6.1.1 Channel的生命周期Channel有四种状态.如下;状态描述channelUnregisteredchannel已经被创建,但还未注册到EventLoopChannelRegisteredChannel已经被注册到了EventLoopChannelActiveChannel处于活动状态(已经连接到它...

2018-12-16 16:54:58 440

原创 netty实战笔记 第五章 netty的数据容器--ByteBuf

Netty的字节容器ByteBuffer使用过于复杂,使用ByteBuf替代。5.1 ByteBuf的API详见 abstract class ByteBuf 和 interface ByteBufHolder.5.2网络通信涉及到字节序列的移动,所以高效易用的数据结构是很重要的。Netty的ByteBuf满足并超越了这些需求。5.2.1 工作原理ByteBuf维护了两个不同的索引,一...

2018-12-09 17:55:50 273

原创 netty实战笔记 第三章 Netty的组件和设计

从类库的视角以及框架的视角来探讨Netty、。3.1 Netty 网络的抽象 Channel,EventLoop,ChannelFutureChannel — SocketEventLoop – 控制流,多线程处理,并发。ChannelFuture – 异步通知3.1.1 Channel接口EmbeddedChannelLocalServerChannelNioDatagra...

2018-12-07 21:02:43 214

原创 netty实战笔记 第四章 传输

探索Netty所提供的不同类型的传输,以及如何选择一个最适合你的应用程序的传输。本章主要内容OIO 阻塞传输NIO 异步传输Local jvm内部的通信机制Embedded 测试你的Channelhandler写一个案例:java 写一个应用程序简单地接收连接,向客户端写Hi,然后关闭连接。我们分为java的阻塞IO(OIO),NIO,netty的OIO和NIO分别来实现。j...

2018-12-07 21:01:35 239

原创 netty实战笔记 第二章 第一个Netty程序

2.1 编写Echo服务器所有的Netty服务器都需要一下两个部分:至少一个ChannelHandler该组件实现了服务器对客户端接收的数据的处理,即他的业务逻辑。引导这是配置服务器的启动代码. 至少,他会将服务器绑定到它要监听连接请求的端口上.2.1.1 ChannelHandler 业务处理逻辑接口ChannelInboundHandler用来响应入站事件的方法。使用的时候...

2018-12-04 22:01:20 268 2

原创 netty实战笔记 第一章 异步和事件驱动 笔记

Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。Java BIO:首先,早期我们java里面使用BIO(Block IO),编写网络通信相关的程序时候,往往都是使用Socket编程。会为每个连接创建一个线程,当连接数少的时候,还可以,但是当连接数多的时候,我们就会发现这很不理想。另外,有些线程会长时间处在休眠状态,资源浪费。需要为每个...

2018-12-04 22:00:37 238

空空如也

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

TA关注的人

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