自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Think In JAVA—Max

Best Or Nothing

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

翻译 RPC框架核心技术

同前几篇博文,本次针对大神分享的PRC框架核心技术进行总结分享。欢迎讨论一、RPC框架整体架构RPC Client  &&  RPC ServerRPC Client1、动态代理,根据lookUp信息(接口-实现-方法)动态创建出代理类,(创建代理类==RPC服务端的目标接口)。即Lookup为远端目标接口地址,创建调用目标接口代理。2、上下文管理,主要为标...

2018-05-30 15:33:55 2248

翻译 (二)常用的优化策略

一、性能瓶颈的定位查看操作系统负载1、CPU (查看各性能指标命令集合-待整理)2、IO3、带宽4、其他使用Profiler测试,另外外部工具例如Java的JProfiler/TPTP/CodePro Profiler;通过日志查询二、性能优化策略(具体case)空间换时间1、将远程调用改为数据初始化到heap堆中(us级),服务提供端本地查找时间、减少RPC 网络传输时间。2、当jvm heap...

2018-05-29 18:59:39 492

翻译 (一)服务容量预估

昨天一大神又做了一次精彩的分享,关于服务容量预估和常用的优化策略。鄙人将分享内容case及个人理解写出来,一在自我回顾总结,二在分享给大家,一起讨论。Case用户运营提出某活动价促销需求(优惠力度很大),且活动商品无限量供应。计划给1000w用户发送促销短信。问:你是负责该活动的RD,这次活动需要加机器吗? 回答这个问题需应基于历史活动的访问量、机器性能指标表现而定;且是否加机器首先还得清楚机器硬...

2018-05-29 17:47:52 3564 3

原创 JDK、CGLib、Javassist实现动态代理

一、类加载1.类加载过程模拟public class Programmer { public void code() { System.out.println("I'm a Programmer,Just Coding....."); }}/** * 自定义一个类加载器,用于将字节码转换为class对象 */public class MyClassLoad...

2018-05-22 11:04:30 2080

原创 Spring Cloud Zuul--服务网关

有了Eureka服务注册发现、Hystrix断路器、Ribbon服务调用负载均衡,以及spring cloud config 集群配置中心,似乎一个微服务框架已五脏俱全,last but not least,一个服务网关却不可或缺。一、Zuul 实例    在上篇demo创建好注册中心、服务提供方的基础之上,再来演示一下zuul网关服务1、创建网关类@EnableZuulProxy

2016-12-19 10:41:56 38754 5

原创 Spring Cloud Hystrix--熔断器

一、Hystrix 熔断器1、引入pom org.springframework.boot spring-boot-starter-parent 1.3.5.RELEASE org.springframework.cloud spring-cloud-starter-ribbon org.springframework

2016-12-13 16:39:19 4041 1

原创 Spring Cloud Ribbon--智能路由

一、Ribbon负载均衡还是先通过一个demo直观的体验一下spring cloud Ribbon负载均衡技能1、引入pom依赖 org.springframework.boot spring-boot-starter-parent 1.3.5.RELEASE org.springframework.cloud spring-cloud-

2016-12-12 16:21:00 5447 1

原创 Spring Cloud Eureka--服务发现

一、Spring Cloud     Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。最关键的是它足够简单,一般的开发人员只需要几天时间就可以学会它的基本用法。    简言之,spring cloud 就是一堆微服务框架的一个集合。    微服务框

2016-12-12 12:01:08 5513 1

原创 知识图谱和Neo4j图数据库

一、知识图谱               互联网、大数据的背景下,谷歌、百度、搜狗等搜索引擎纷纷基于该背景,创建自己的知识图谱Knowledge Graph(谷歌)、知心(百度)和知立方(搜狗),主要用于改进搜索质量。1、什么是知识图谱      一种基于图的数据结构,由节点(Point)和边(Edge)组成。其中节点即实体,由一个全局唯一的ID标示,关系(也称属性))用于连接

2016-09-04 11:48:42 36753 4

原创 Docker 命令 & K8S 共享卷

因为容器是镜像的运行实例,如果有任何一个容器在使用某个镜像,那么该镜像就会被认为是被“占用”的,Docker 不会允许删除被使用的镜像。容器的创建是基于镜像的,镜像提供了容器运行所需的一切环境和依赖。如果希望不同的 Pod 中的容器之间共享数据,可以考虑使用网络存储(如 NFS、GlusterFS、Ceph 等)或者对象存储(如 AWS S3、Google Cloud Storage 等)来实现数据的共享。在 Pod 的 YAML 文件中定义两个容器,并在配置容器中挂载共享卷(共享的文件地址)。

2024-02-26 17:02:42 1209 1

原创 文件编码、转换、乱码问题

用来表示文本内容的字符集和字符编码方式,决定了在文本文件中使用的字符集和字符的二进制表示方式。常见的文件编码包括 UTF-8、UTF-16、ASCII、ISO-8859-1 等。选择文件编码时,需要考虑到所支持的字符集范围、编码方式对特定语言的支持程度以及文件大小等因素。服务器用于传输数据的编码方式。常见的服务器编码包括 UTF-8、UTF-16、ASCII、ISO-8859-1 等当浏览器向服务器请求数据时,服务器需要确定将数据以何种编码方式发送。

2023-11-20 11:08:03 242

原创 【Linux运维】磁盘告警排查过程及常用磁盘命令

如上问题,/var/log/journal/下日志文件过大,那便可设定journalctl --vacuum-size=500M,因为系统日志会随时间不断增长占用磁盘空间。通过指定一个大小值,journalctl 将删除旧的日志条目,以使日志保持在指定的大小范围内。当日志大小超过这个限制时,journalctl 将删除一些旧的日志条目,以减小日志的总体大小。珍视排查一个看似简单问题的过程,通过排查问题,记录问题的排查思路,引申出新的知识点,并且回顾旧有知识, 温故知新 不断夯实沉淀。

2023-11-06 14:58:41 844

原创 InfluxDB 内存消耗分析及性能优化

cardinality反应了series的维度,即不同的series的数量。序列基数是影响内存(RAM)使用量的主要因素。

2022-07-26 10:14:23 4416 1

原创 Go 语言进阶—反射

项目中有多处用到反射,本文简单列举go中提供反射的常用case。go reflect反射包,通过Type和Value 分别表示反射获取的类型和值。通过函数,reflect.TypeOf和reflect.ValueOf,返回被检查对象的类型和值。例如,x 被定义为:var x float64 = 3.4,那么reflect.TypeOf(x)返回float64,reflect.Val...

2019-08-19 17:27:28 458

原创 Go 语言进阶—函数-变量-类型-并发 基础

Go gc时下流行的语言大都是运行在虚拟机上,如:Java 和 Scala 使用的 JVM,C# 和 VB.NET 使用的 .NET CLR。而go同样通过虚拟机,采用标记-清除回收器管理内存,尽管虚拟机的性能已经有了很大的提升,但任何使用 JIT 编译器和脚本语言解释器的编程语言(Ruby、Python、Perl 和 JavaScript)在 C 和 C++ 的绝对优势下甚至都无法在性能上望...

2019-08-19 14:53:01 408

原创 Go框架进阶— Resty

Simple HTTP and REST client library for Go。简单理解 java里的HttpClient,用于发送http 或rest协议的请求。github:https://github.com/go-resty/restyapi doc:https://godoc.org/github.com/go-resty/resty应用实例:import "g...

2019-08-16 16:19:41 4820

原创 Go框架进阶—定时任务 goCron

goCron是一个Golang作业调度工具,可以使用简单的语法定期执行go函数。github:https://github.com/jasonlvhit/gocronapi doc:https://godoc.org/github.com/jasonlvhit/gocron#Every使用实例package mainimport ("fmt""github.com/jas...

2019-08-16 14:41:09 16865 3

原创 OpenStack 和云计算(扫盲篇)

背景:工程尾期,将全套应用服务部署到OpenStack上。没用过,于是抽丝剥茧,研究研究啥是OpenStackWhat is OpenStackOpenStack是一个可以管理整个数据中心里大量资源池的云操作系统,包括计算、存储及网络资源。管理员可以通过管理台管理整个系统,并可以通过web接口为用户划定资源。基于Iaas(Infrastructure as a Servic,基础设施即...

2019-08-13 12:02:16 2713

原创 APM —全链路追踪

全链路追踪目的微服务背景下1.故障快速定位 跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。2.各个调用环节的性能分析 分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化3.数据分析 分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。4.调用拓扑图Trace系统设计目标...

2019-08-01 16:28:32 11013 1

原创 Go Web 集成swagger

swagger完美API文档的生成工具,免去繁琐的面向wiki编程。java中可直接引用swagger依赖,spring全家桶对swagger也集成通过写注解便可直接生成入参返回值的api接口文档。go项目也有对应的swaggo集成。下面介绍如何在go工程中使用swaggo自动生成接口文档。很简单,三步走一、项目download swaggo资源//1.安装swag clientg...

2019-07-19 17:29:09 2897

原创 GOPROXY代理 invalid $GOPROXY setting error

Go 由于是谷歌研发出品,很多开源依赖包都在国外服务器,down包经常会出现当不下来的情况,此时就需要设置$GOPROXY 代理,通过国内代理链接来获取包资源。常用代理路径:https://goproxy.io/网站打开很直白的介绍了如何设置$GOPROXY变量。In Linux or macOS, you can execute the below commands.Bash /...

2019-07-08 11:58:49 8769

原创 Docker

Linux虚拟化容器技术,有效的由单个操作系统管理资源细化为独立的组中,更高效的平衡有冲突的资源间使用需求,docker2013年基于go实现的开源项目,进一步优化了容器使用的体验。每个容器内运行应用,不同容器间相互隔离,容器间可以建立通信机制。通过管理应用组件的封装、分发、部署、运行达到组件“一次封装,到处运行”的目的。这里的应用组件可以是一个web应用、mysql服务等,最常见的LAMP(li...

2019-06-02 17:55:03 563

原创 ReactJS编程—state 和props数据传递

一、state vs propsstate对象,可以理解为组件内置的对象,通过更新赋值给state 类改变、重新渲染用户界面。类似java类中private属性的载体,用于传递类私有的数值。class WebSite extends React.Component { constructor() { super(); this.state = { ...

2019-05-05 21:50:19 679

原创 ReactJS编程(三)

逻辑判断1、if else简单登陆逻辑如下:class LoginControl extends React.Component {//构造函数 初始化props、state数据 constructor(props) { super(props); this.handleLoginClick = this.handleLoginClick.bind(thi...

2019-05-05 21:34:47 197

原创 ReactJS编程(二)—自定义组件

原生 HTML 元素名以小写字母开头,而自定义的 React 类名以大写字母开头。其实ReactJS编程(一)中,已经自定义了Name、Url等组件进行页面元素封装。写法很简单,如下。<script type="text/babel">//自定义一个HelloMessage组件function HelloMessage(props) { return <h1&g...

2019-05-05 21:26:17 576

原创 ReactJS编程(一)

源于facebook13年开源 js框架,用于构建页面的js库。使用简单,直接在web页面引用react 三个核心js包即可。react.min.js- React 的核心库 react-dom.min.js- 提供与 DOM 相关的功能 babel.min.js- Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执行 React 代码。...

2019-05-05 21:18:43 222

原创 架构设计——ID生成器

一、分布式ID发号器要求很明确:不同机器同一时间生成不同ip;同一机器不同时间生成不同IP;所以根据需求,可选变量有:机器(网卡、IP)+时间,随机数二、Why not UUID?UUID的实现:算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成UUID。优势:保证唯一性;本地调用,不需要rpcUUID的缺陷:1.UUID较长,占用内存空间;往往用字符串表示...

2019-04-16 14:19:48 4793

原创 Go Web Template

之前没了解过go,两年前听别人分享据说是很牛逼,研究了两天,刚入门已被折服,展示一下用Go写一个web有多简单。1.Go语言里提供了很完善的net/http包,通过http包可以很方便的编写一个可运行的web服务。非常便捷的设置路由url、静态文件等2.Go内置的天然支持高并发特性,让该web无需进行额外并发控制。内部使用goroutines来处理Conn的读写事件, 这样每个请求都能保持...

2019-04-11 16:34:39 471

原创 GO 基础语法(2)——指针结构体集合并发反射

一、指针//指针 获取对象、变量的内存地址//取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。//指针类型前面加上 * 号(前缀)来获取指针所指向的内容func pointDef() { //定义指针变量 var ip *int /* 指向整型*/ //获取变量地址 a := 1 fmt.Println("变量的内存地址:", &a) //通过...

2019-04-10 17:21:25 504

原创 GO 基础语法(1)——常量变量函数数组

一、变量声明赋值package mainimport ( "fmt" "unsafe")//全局变量声明var ( globelString string globleInt int)func main() { //局部变量声明 way1 var string string string = "hi go" fmt.Println(string) /...

2019-04-09 17:01:05 633

原创 MAT定位OOM溢出源

前期准备:配置oom自动dump jvm快照:-XX :+HeapDumpOnOutOfMemoryError分析过程:1)MAT中导入java_pid17932.hprof jvm快照,查看histogram 信息注:Shallow Heap:对象自身不包含引用的大小;Retained Heap:对象自身及对象相关引用的大小结论:如图,可得出每个类产生的实例数量(Obje...

2018-11-13 16:09:00 1818

原创 Linux awk

一、语法awk [选项参数] 'script' var=value file(s)示例echo "" | awk '{print "hello kuaigou"}'awk '{a=0;b=1;print a,b}'awk '{a[0]=0;a[1]=1;print a[0],a[1]}'$字符引用分隔后每个域的内容,使用“$”获取,从1开始“$0”表示整行echo "a ...

2018-11-12 18:07:01 304

原创 spring IOC容器自自实现

流程组件一、配置文件加载器 public final class PropsUtil { /** * 获取文件流,转成properti map内存 */ public static Properties loadProps(String fileName){ InputStream inputStream=Thread.currentTh...

2018-11-05 18:25:58 302

原创 缓存穿透 & 缓存雪崩 & 缓存预热 & 缓存热点并发访问

一、什么是缓存穿透?缓存未命中某key,转而到db中查询。缓存穿透的漏洞恶意利用不存在的key频繁攻击应用,导致请求直接落到DB中,可能导致DB瞬时高负载或挂掉。缓存穿透解决方案一:先查询缓存,若缓存为null,则查询db,若DB仍返回无结果,将该key写入缓存,标识为不存在key(例如将对应v设置成统一值,标识该v的所有keyDB中不存在),同样key再访问应用时,查询缓存!...

2018-10-22 17:15:30 458 1

原创 Spring AOP 内部调用失效解决方案

背景前两篇博客采用AOP实现接口入参、返回结果的log打印和方法参数校验。测试时发现一个问题,简言之:1、service中方法1设置AOP拦截,奏效2、同service中方法2未设置AOP拦截,但在方法2中直接diao调用方法1,方法1的AOP拦截失效。原因通过debug发现,在方法2调用方法1时,this指向service对象本身(写或不写都指向本service),而非ser...

2018-10-09 15:19:07 3275

原创 Redis缓存淘汰算法

Redis缓存淘汰策略当实际内存超出 maxmemory 时,Redis 提供了几种可选策略 (maxmemory-policy) 来让用户自己决定淘汰哪些key。总结如下:Redis LRU近似算法Redis 使用的是一种近似 LRU 算法:1、key增加最近访问时间戳字段2、选取一定数量的key(默认5,server.maxmemory_samples进行配置),比较最...

2018-09-25 16:55:49 2180 1

翻译 Mybatis缓存机制

一级缓存实现原理1、创建了一个SqlSession对象,同时会为这个SqlSession对象创建一个新的Executor执行器2、Executor接口的实现类BaseExecutor则使用PerpetualCache缓存对象维护缓存.3、PerpetualCache缓存类实现HashMap()&lt;Obj,Obj&gt;; public class PerpetualCac...

2018-09-25 15:46:41 438

翻译 LFU & LRU-K 等常用缓存淘汰算法对比

上篇文章介绍了最常用的LRU算法及实现,本篇总结常用缓存淘汰算法,归总对比。一、LFU(Least Frequently Used):最近最低使用频次被淘汰实现:通过count记录缓存数据的使用次数,数据块按照引用计数排序,计数相同则按照时间排序。1. 新加入数据插入到队列尾部(因为引用计数为1);2. 队列中的数据被访问后,引用计数增加,队列重新排序;3. 当需要淘汰数据...

2018-09-20 17:37:29 1471

翻译 缓存淘汰算法LRU及JAVA实现

一、基本概念命中:访问缓存是通过key get到对应value回源: miss了,未命中导致回读源数据淘汰:缓存满了,那么就会按照某一种策略,把缓存中的旧对象踢出,而把新的对象加入缓存池。(只有5个存储单元,来了第6个元素。则考虑谁出队)淘汰策略:即缓存算法,决定到底应该踢出哪些对象缓存污染:不常用的数据加入进缓存,降低了缓存效率的现象二、缓存淘汰算法LRULRU(Le...

2018-09-20 16:39:48 1087

原创 Spring AOP 通用入参校验终极版

入参校验一直是程序中一块鸡肋,食之无味却又不得不吃。经过几个版本变更,本次项目上线笔者终于将入参校验应用了稍微高级一点的写法。基调:hibernate.validator实现-低配版1、引入pom&lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;h...

2018-09-17 19:31:51 2899

git 客户端工具

git 客户端工具

2017-08-10

空空如也

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

TA关注的人

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