- 博客(58)
- 资源 (2)
- 收藏
- 关注
原创 springCloud Alibaba教程- 搭建springboot工程(最新版本)
springcloud alibaba教程开篇,基于最新的cloud alibaba版本搭建基础的微服务开发环境
2022-10-14 16:22:45
2103
转载 Redis:string类型带来的空间消耗过大的问题
案例:使用Redis的string类型保存图像ID和图片存储对象 ID,图像ID为Key、图片存储对象ID为Value。两者均为10位纯数字。保存1亿对键值消耗空间6.4GB,平均1个键值对消耗64字节。问题:按理来说8个字节可以表示2的64次方-1,超过了10位数字,案例中键值对加起来消耗16字节也就罢了,为什么消耗了64字节?回答:除了记录实际数据,String 类型还需要额外的内存空间记录数据长度、空间使用等信息,这些信息也叫作元数据。当实际保存的数据较小时,元数据的空间开销就显得比较大了。.
2021-03-13 10:06:16
988
原创 gateway使用protobuf进行鉴权的坑
1、问题描述 项目中使用了springcloud alibaba这一套。其中网关使用的gateway,序列化使用的protobuf。 使用protobuf作为序列化框架,我们都使用的POST请求,将请求体都放body中。进行鉴权的时候需要获取到body中的内容。异常信息如下:2020-09-26 23:38:15.066 [reactor-http-nio-2] INFO [ChainedDynamicProperty.java:115] - Flipping propert...
2020-09-26 23:58:19
5273
原创 proto3默认值与可选项
proto3特性proto3相较于proto2支持更多语言但在语法上更为简洁。去除了一些复杂的语法和特性,更强调约定而弱化语法。删除原始值字段的presence字段逻辑,删除required字段以及删除默认值。这使得proto3更容易实现如在Android Java,Objective C或 Go等语言中的开放式结构化表示。 移除unknown关键字. 去掉extensions类型,使用Any新标准类型替换。 针对未知枚举值的固定语法. 增加maps(主要指代码生成支持map) 添加.
2020-08-26 00:03:58
7887
原创 创建线程的方法?
1、实现 Runnable 接口 实现 Runnable 接口,然后重写 run() 方法,之后只需要把这个实现了 run() 方法的实例传到 Thread 类中就可以实现多线程。2、继承 Thread 类 继承 Thread 类,并重写了其中的 run() 方法。3、线程池创建线程 3.1使用ThreadPoolExecutor类public ThreadPoolExecutor(int corePoolSize, ...
2020-07-25 17:16:35
148
原创 JVM知识梳理与总结下
我们写好的代码,是要通过JVM才能运行的 JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class 文件 然后就执行类的加载过程,JVM 加载类的话,需要类加载器 类加载器是分层级的,遵循双亲委派机制最上层是Bootstrap ClassLoder,加载java的核心类库,加载java安装目录下的lib目录的class文件 第二层是Ext ClassLoder,加载一些java的其他类库,加载java安装目录下的lib/ext目录下的class 第三层是Applicat.
2020-07-12 19:59:27
371
转载 自定义bean容器提升代码可读性
开发中经常有这样的场景:根据某个类型标识走不同的业务逻辑,通常我们会使用if(type.equals(xxxxx)) 或者 switch语句来进行逻辑处理。这样做当然是没什么问题的。当业务逻辑变得越来越复杂,类型标识增多之后,难免会出现if判断增加,或者switch case分支变多,这样的代码往往会过于冗长,代码重复性较大,或者说逼格不够高。本文介绍一种基于自定义Bean容器的开发方式,消除代码中的判断分支,提升代码可读性。我们通过一个demo来看如何实现这种编码方式。1、定义
2020-06-21 20:58:09
215
原创 JVM知识梳理与总结上
1、编写Java代码到运行它 如上图XXX.java是源文件,然后使用命令javac XXX.java将源文件编译成XXX.class文件,然后再使用命令java XXX字节码文件(class文件)。当然实际工作中一般项目中是使用mvn相关命令将java系统打包成jar/war包,然后使用java xxx.jar或者部署到tomcat等相关web服务器运行。JVM在执行字节码文...
2019-10-27 15:34:41
373
原创 面试题:简单谈谈对RabbitMQ的理解?
目录1、RabbitMQ1.1、RabbitMQ定义了几种交换机1.1.1、Direct exchange(直连交换机)1.1.2、Fanout exchange(扇型交换机)1.1.3、Topic exchange(主题交换机)1.1.4、Headers exchange(头交换机)1.2、RabbitMQ支持事务消息1.2.1、事务消息1.2.2、Confi...
2019-10-13 23:33:38
1070
1
原创 RocketMQ实战---从入门到放弃
RocketMQ源码阅读(1)-环境搭建RocketMQ源码阅读(2)-NameServer启动流程RocketMQ源码阅读(3)-Broker启动RocketMQ源码阅读(4)-Broker启动向NameServer注册、发送心跳RocketMQ源码阅读(5)-NameServer定时路由状态监测更多博文连载参考:RocketMQ中国开发者中心R...
2019-09-11 14:38:06
435
原创 RocketMQ源码阅读(5)-NameServer定时路由状态监测
1、NameServer中定时监测路由状态的定时任务在创建NamesrvController、调用initialize方法时候往线程池放入了一个任务,每隔十秒扫描一次Broker,移除处于不 激活状态的Broker(Broker在正常关闭的情况下,会执行unregisterBroker指定,移除broker信息)。// 定时线程任务每隔十秒扫描一次Broker,移除处于不 激活状态...
2019-09-10 17:15:07
393
原创 RocketMQ源码阅读(4)-Broker启动向NameServer注册、发送心跳
1、Broker启动向NameServer注册在BrokerStartup类的main方法运行的时候,创建了BrokerController,然后调用了BrokerController的start方法,在该方法中有如下代码// 启动的时候向每个NameServer发起注册this.registerBrokerAll(true, false, true);this.schedule...
2019-09-10 15:19:55
706
原创 RocketMQ源码阅读(3)-Broker启动
1、首先找到BrokerStartup启动的主类 该类在broker模块中,类全路径为org.apache.rocketmq.broker.BrokerStartup,我们在启动Broker的时候只需要运行该类就行了。2、从main方法入口看broker启动都做了哪些事情?public static void main(String[] args) { star...
2019-09-09 16:37:03
663
原创 RocketMQ源码阅读(2)-NameServer启动流程
1、首先找到NameServer启动的主类 该类在namesrv模块中,类全路径为org.apache.rocketmq.namesrv.NamesrvStartup,我们在启动NameServer的时候只需要运行该类就行了。2、从main方法入口看NameServer启动都做了哪些事情?public static void main(String[] args) {...
2019-09-06 15:54:39
223
原创 RocketMQ源码阅读(1)-环境搭建
1、rocketmq源码导入jdk/maven安装配置略,源码地址:https://github.com/apache/rocketmq.git2、项目启动2.1、NameServer启动1)找到NamesrvStartup主类2)配置环境变量(ROCKETMQ_HOME=d:\rocketmq)3)创建相应目录(d:\rocketmq,并在该目录下创建c...
2019-09-05 18:46:12
567
原创 kafka集群的搭建
1、准备几台虚拟机,并配置host10.10.10.xxx hadoop0310.10.10.xxx hadoop0410.10.10.xxx hadoop052、安装zookeeper在hadoop03、hadoop04、hadoop05三台机器上部署zookeepertar -zxvf zookeeper-3.4.9.tar.gzmv zookeeper-3.4.9 ...
2019-08-28 23:13:07
193
原创 <CentOS7>如何设置hostname
1、在CentOS/RHEL 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置;[root@localhost ~]# hostnamectl status Static hostname: localhost.localdomain.mq01 Icon name: computer-vm Chassis: v...
2019-04-21 20:28:01
2673
原创 线程池的拒绝策略(RejectedExecutionHandler)
1、AbortPolicy(线程池默认策略)public static class AbortPolicy implements RejectedExecutionHandler { /** * Creates an {@code AbortPolicy}. */ public AbortPolicy() { }...
2019-04-18 22:30:28
915
原创 项目启动:Data source rejected establishment of connection, message from server: "Too many connections"
MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"==> cmd==> mysql -uroot -p==> show variables like 'max_...
2018-10-09 12:40:06
1086
scala-2.12.11.zip
2020-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人