6 猴子哥哥1024

百度 - 高级软件工程师

我要认证

用技术改变生活,程序猿可以改变世界!!!

等级
TA的排名 6k+

Protobuf序列化

Protobuf是Google出品的一款编解码框架。1、优点:  1)谷歌内部长期使用,成熟度高  2)跨语言,支持C++、Java、Python、JavaScript、PHP、Ruby、C#、Objective-C等  3)码流小  4)性能高2、缺点:  1)pojo生成方式增加额外复杂度  2)灵活性差,定义数据格式后不可修改,需要重新生成pojo  3)pojo不支持json操作综上所述:Protobuf序列化方式适用于跨语言通信、对码流大小和性能要求高、且pojo不经常变化的场

2020-05-17 11:51:02

使用jclasslib修改字节码/源码

  查看源码很简单,一些常用IDE里如idea、eclipse都提供了查看class文件源码的功能,虽然跟源码有些出入(解语法糖等),但功能实现上是一致的,且比源码更贴近于JVM运行时的情况。  有时候我们需要修改源码以满足使用要求,对于java代码生成的字节码重新源码就比较简单了,一种方式是继承然后重新部分功能,另一种方式是直接创建一个同名类文件,把反编译的源码复制进去,修改后,将新生成的cl...

2020-05-05 11:38:31

虚拟机字节码指令表

本文字节码指令图片来源于《深入理解Java虚拟机》第2版

2020-05-04 10:41:17

gateway url适配

由于版本迭代,有的时候需要做老接口的兼容适配,有很多种方式,比如在nginx配置路由规则,在网关配置路由规则,本篇通过使用反射的方式在网关层全局过滤器中重写request请求的方式实现url适配。import lombok.extern.log4j.Log4j2;import org.apache.commons.lang3.StringUtils;import org.springfram...

2020-05-03 13:28:05

网关支持跨域

一、zuul跨域:配置方式application.ymlzuul: sensitive-headers: Access-Control-Allow-Origin ignored-headers:Access-Control-Allow-Origin,H-APP-Id,Token,APPToken二、gateway跨域:过滤器方式Spring Cloud Gateway 2.x Net...

2020-05-03 13:18:14

java序列化框架码流、性能对比

本文对序列化框架:JDK、Kryo、Hession、FST、Fastjson、Gson进行对比,对比维度包括序列化后码流大小、10w次序列化反序列化性能耗时。1、依赖jar包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifa...

2020-04-25 11:57:34

ChannelPipeline

Netty4Netty是一个和MINA类似的Java NIO框架,目前的最新版本是4.0.13,这两个框架的主要作者好像都是同一个韩国人。ChannelChannel是Netty最核心的接口,一个Channel就是一个联络Socket的通道,通过Channel,你可以对Socket进行各种操作。ChannelHandler用Netty编写网络程序的时候,你很少直接操纵Channel,而是...

2020-04-22 09:37:32

将微服务运行在Docker上

 将微服务运行在Docker上,首先要把服务制作成镜像,然后将镜像推送到公有仓库或私有仓库(可选步骤),最后像使用其他镜像的方式一样,使用我们的镜像。 本文将展示三种将微服务运行在Docker上的方式:1)通过Dockerfile;2)通过maven插件;3)通过Docker Compose一、Dockerfile的方式 Dockerfile是一个文本文件,其中包含了若干指令,指令描述了构建...

2020-03-08 17:21:51

springboot集成rocketmq

  本文是springboot集成rocketmq的入门篇,主要介绍单机环境下安装rocketmq,并集成到springboot框架中,实现字符串类型消息的生产和消费。  1)高可用集群部署方案请参考 待更新。。。  2)更多使用方式请参考 待更新。。。一、下载、安装、启动1、下载http://rocketmq.apache.org/dowloading/releases/2、安装...

2020-02-17 22:22:07

使用Docker安装Nginx

本文主要讲述使用docker安装nginx镜像,并将docker内文件挂载到物理机上1、下载Nginx镜像docker pull nginx2、本地创建挂载文件夹/Users/zhanghao/data/nginx/conf//Users/zhanghao/data/nginx/conf.d//Users/zhanghao/data/nginx/html//Users/zhangh...

2020-01-30 23:27:45

工作四年经验总结

  今年的年终总结做的比较迟,这个月发生了好多事:搬家、找工作、带娃过年、肺炎疫情、科比离开,虽然一直坚信唯一不变的是变化,但当很多事情同时发生时,还是需要一点时间来适应。2019年总结1、工作上:由于可控和不可控的一些因素,今年的两个小目标都没有实现,不想说太多,尽全力做最好的自己,来年继续奋斗,fire!!!2、生活上:收获了一枚可爱的猪宝宝(琛宝),过渡性的买了第一套房(昌平北六环)。...

2020-01-28 01:10:50

如何设计一个秒杀系统

1、问题抽象:并发读、并发写、稳准快2、4要1不要:数据要尽量少、请求数要尽量少、路径要尽量短、依赖要尽量少(服务分级)、不要有单点3、秒杀思路:秒杀系统独立部署、热点数据进缓存、答题环节、动静分离、本地缓存、限流4、动静分离 1)做法:  a、把静态数据缓存到离用户最近的地方:浏览器、CDN、服务端Cache  b、静态化改造,直接缓存HTTP连接  c、代理层缓存 2)动静分离...

2019-11-20 21:54:27

Kafka安装及使用

本示例使用docker安装,springboot使用1、安装zookeeper(示例中单点)1)下载:docker pull wurstmeister/zookeeper2)安装:docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper2、安装kafka(示例中两台broker组成的集群)1)下载:docker ...

2019-10-07 11:14:39

延迟队列浅析

        早期需要延迟处理的业务场景,更多的是通过定时任务扫表,然后执行满足条件的记录,具有频率高、命中低、资源消耗大的缺点。随着消息中间件的普及,延迟消息可以很好的处理这种场景,本文主要介绍延迟消息的使用场景以及基于常见的消息中间件如何实现延迟队列,最后给出了一个在网易公开课使用延迟队列的实践。一、使用场景...

2019-09-23 20:02:32

Feign实战

1、Feign  是一个声明式、模版化的HTTP客户端,有助于更便捷、优雅地调用HTTP API。在Spring Cloud中自动的为Feign整合了Ribbon和Eureka,使用时创建一个接口并添加@FeignClient即可2、使用Demo  1)添加Feign依赖<!-- Feign --><dependency> <groupId>org....

2019-06-15 09:48:14

Ribbon实战

1、Ribbon简介Ribbon是Netflix发布的负载均衡器,配合Eureka使用时,可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例2、使用Demo1)引入Ribbon依赖<dependency> <groupId>org.springframework.cloud</groupId> ...

2019-06-10 22:24:17

ActiveMQ失效转移(Failover)

本文的ActiveMQ都基于5.10版本,参考了ActiveMQ官方文档:http://activemq.apache.org/failover-transport-reference.html。 集群是个比较广泛的概念,它有多种形式,关于消息服务的集群,大概分为Consumer集群(消费者集群)和Broker集群(消息服务器集群)两种。 对于消费者集群,对于队列消费者,主要是:1.保证...

2019-05-13 20:14:34

ActiveMQ基于JmsTemplate的持久化

持久化需要满足两个条件:  1)消息服务开启了持久化功能;  2)生产者发送持久化消息注:笔者建议MQ服务开启持久化功能,生产者根据消息内容的重要性、量级来合理使用持久化或不使用持久化本文主要描述,消息服务的默认持久化功能及存储,不涉及定制存储方式。本文描述JmsTemplate的发送消息时如何设置是否支持持久化,其他使用方式类同一、ActiveMQ开启持久化功能(默认开启)1、支持持...

2019-05-11 11:29:35

Eureka实战

一、简介1、微服务架构中关键组件:服务提供者、服务消费者、服务发现组件2、服务发现组件的功能:  1)服务注册表:用来记录各个微服务的信息  2)服务注册:指微服务在启动时,将自己的信息注册到服务发现组件的过程  3)服务发现:指查询可用微服务列表及其网络地址的机制  4)服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表中移除...

2019-05-03 13:07:01

SpringCloud与SpringBoot版本兼容性

  Spring Cloud是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式工具集,适合在Docker或PaaS上部署,又叫云原生应用。(云原生指面向云环境的软件架构)一、SpringCloud版本1、命名规则:英文单词 RELEASE 或 英文单词 SRX2、解释: 1)英文单词:按照字母顺序发行 2)第一个稳定版本为:英文单词 RELEASE 3)SR1:...

2019-05-01 14:27:01

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取