自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(339)
  • 资源 (1)
  • 收藏
  • 关注

转载 内存分析工具MAT(Memory Analyzer Tool)的安装与使用

一、安装1.1、在Eclipse上安装MAT插件,步骤如下:点击Help,Install New Soft,就出现了以下Install界面:然后我们点击ADD,在弹出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.6/update-site/,确定后,点击Select All,点击Next,之后就一直确定,就能安装了。安装之后需要重启Eclip...

2020-03-05 16:20:56 674

转载 开始食用grpc(之一)

记一次和一锅们压马路,路过一咖啡厅(某巴克),随口就问随行的锅门:你能从那咖啡厅看到什么? 当时的那家某巴克处于闹市,也正值周末,屋外屋内喝咖啡的人几近乎十分的安静,使用电脑的,刷手机的、做作业的。。。而且大都是年轻人和中年人。  锅门撂了句:一群屌丝呗(;¬_¬)  。。。白了他一眼(¬_¬) ( ...其实想教唆他进去看看美女,歇歇脚来着๑乛◡乛๑)...

2020-01-07 14:17:59 413

转载 【postman】中 form-data、x-www-form-urlencoded、raw、binary的区别

1、form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multip...

2019-07-26 15:02:04 368

原创 无重复字符的最长子串

public class K { static int clen=0; public static void lengthOfLongestSubstring(String s) { String tempStrs = ""; for(int i=0;i<s.length();i++){ ...

2019-07-19 17:58:58 180

转载 手动注入bean到spring容器

ApplicationContext applicationContext = SpringContextUtils.getApplicationContext();//将applicationContext转换为ConfigurableApplicationContextConfigurableApplicationContext configurableApplicationContex...

2019-07-17 15:27:40 1111

转载 垃圾收集算法、垃圾回收算法、java垃圾收集器

目录1. 垃圾收集算法1)引用计数法2)根搜索法2. 垃圾回收算法1)复制算法2)标记-清除算法3)标记-整理算法4)分代收集算法3. java垃圾收集器新生代GC器:1)Serial垃圾收集器2)ParNew垃圾收集器3)Parallel Scavenge垃圾收集器老年代GC器1)Serial和Parallel Scavenge都有对应的老年代版本2)CMS垃圾收集器G1回收器4.java...

2019-06-27 15:04:54 175

转载 HTTP1.0与HTTP1.1与HTTP2.0区别

浏览器与服务器通信过程TCP 连接:浏览器与服务器三次握手,建立 TCP 连接客户端请求:建立 TCP 连接后,客户端就会向服务器发送一个 HTTP 请求信息(比如请求 HTML 资源,我们暂且就把这个称为“ HTML 请求”)服务器响应:服务器接收到请求后进行处理并发回一个 HTTP 响应信息影响HTTP访问速度的的因素影响一个HTTP网络请求的因素主要有两个:带宽和延迟。带...

2019-06-27 11:15:37 1612

转载 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascrip...

2019-06-26 18:42:26 194

转载 Guava-RateLimiter详解

常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败,下图来自网上:ratelimite原理图本次实战,我们用的是guava的RateLimiter,场景是spr...

2019-06-20 14:00:28 323

转载 RabbitMQ之消息确认机制

在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失的话,持...

2019-06-13 14:47:45 298

原创 redis 指令中文文档

http://redisdoc.com/

2019-06-13 13:44:11 621

转载 【jvm】使用命令行jmap手工触发fullGC

使用了jmap工具实现,手工触发fullGC,运维常备jmap -histo:live <pid>或者jmap -dump:live,file=dump_001.bin PID然后删掉dump_001.bin文件

2019-06-10 10:33:57 6347

转载 [RabbitMQ] AutorecoveringConnection在连接恢复后才调用ShutdownListener 此博文包含图片

想玩一玩RabbitMQ中的ShutdownListener和RecoveryListener,又不想写自己的重连接逻辑,所以使用了ConnectionFactory类的setAutomaticRecoveryEnabled方法让其自动恢复连接。代码如下:package com.yqu.rabbitmq;import com.rabbitmq.client.*;import java...

2019-06-04 19:10:24 2793

转载 JVM调优系列:(四)GC垃圾回收

跟踪收集算法:复制(copying):将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A。因为只访问活跃对象,将所有活动对象复制走之后就清空整个空间,不用去访问死对象,不需要标记骤,所以遍历空间的成本较小,但需要巨大的复制成本和较多的内存。标记清除(mark-sweep):收集器...

2019-05-28 14:34:31 204

转载 JVM的分区+查看GC对象是否存活+3种GC算法+7种垃圾收集器+如何减少GC次数

一、JVM的分区:1、程序计数器(私有)程序计数器是一块较小的内存分区,你可以把它看做当前线程所执行的字节码的指示器。在虚拟机的概念模型里,字节码解释器工作时,就是通过改变计数器的值来选择下一条需要执行的字节码指令。程序技术器为线程私有,每个线程都有它们各自的程序计数器,这样再多线程的情况下,线程之间的来回切换,也能正确找到上次切换时执行的位置。如果线程正在执行的是一个J...

2019-05-28 14:33:20 469

转载 【极光推送】给指定用户发送消息

前言如果你还没有搭建极光推送服务器,建议你根据情况,先从服务器搭建开始。前文标题:《【极光推送】jpush服务端开发详尽过程》链接:http://ningmengjiabing.blog.163.com/blog/static/20484719820163194218972/如果你已经完成推送服务器的搭建,最后在验证推送功能时,返回的options大致格式...

2019-05-28 13:37:24 2930

转载 jstat命令查看jvm的GC情况 (以Linux为例)

stat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统...

2019-05-23 10:12:25 496

转载 Dubbo 一些你不一定知道但是很好用的功能

dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些你不一定知道,但是很好用的功能;直连Provider在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连模式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表(说明:官方只建议开发&测试环境使用该功能),用法如下,ur...

2019-03-22 17:44:15 222

转载 RabbitMQ消费者的几个参数

分布式消息中间件RabbitMQ是用Erlang语言编写的分布式消息中间件,常常用在大型网站中作为消息队列来使用,主要目的是各个子系统之间的解耦和异步处理。消息中间件的基本模型是典型的生产者-消费者模型,生产者发送消息到消息队列,消费者监听消息队列,收到消息后消费处理。在使用RabbitMQ做消息分发时,主要有三个概念要注意:Exchange,RoutingKey,Queue。Exch...

2019-01-11 11:05:01 1171

转载 表示不同文件类型的魔术数字

这里所说的表示不同文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别一个文件的文件类型所要花费的时间。比如,一个JPEG文件,它开头的一些字节可能是类似这样的”ffd8 ffe0 0010 4a46 4946 0001 0101 0047 ……JFIF…..G“,这里...

2018-12-07 10:47:09 250

转载 Java 并发编程:volatile的使用及其原理

 一、volatile的作用  在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题...

2018-08-21 10:12:18 242

转载 Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)

一、重量级锁  上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高,状态之间的转换需要相对比较长的时间,这就是为什么Synchron...

2018-08-21 10:02:40 301

转载 RabbitMQ服务之入门篇

RabbitMQ是一种消息中间件,能够很好的处理来自客户端的异步消息发送及请求,将消息发送放入到服务端的队列池中,而接收端可以根据RabbitMQ配置的转发机制接收和过滤服务端转发来的消息。RabbitMQ可以根据指定的消息转发规则进行消息的转发、缓冲和持久化操作,这也是其根身立命的地方,但是其诞生的主要目的是为了均衡线程耗时操作的压力,前提是这些操作要满足没有要求即时反应,因为其不适合用在要求即...

2018-07-31 15:59:18 308

转载 限流算法之漏桶算法、令牌桶算法

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引...

2018-07-31 14:20:09 3072

转载 Guava的RateLimiter限流器分析

RateLimiter 算法原理 RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。 参考http://ifeve.com/guava-ratelimiter/ 使用案例 RateLimiter.c...

2018-07-31 14:06:54 275

转载 接口限流实践

一、问题描述    某天A君突然发现自己的接口请求量突然涨到之前的10倍,没多久该接口几乎不可使用,并引发连锁反应导致整个系统崩溃。如何应对这种情况呢?生活给了我们答案:比如老式电闸都安装了保险丝,一旦有人使用超大功率的设备,保险丝就会烧断以保护各个电器不被强电流给烧坏。同理我们的接口也需要安装上“保险丝”,以防止非预期的请求对系统压力过大而引起的系统瘫痪,当流量过大时,可以采取拒绝或者引流等...

2018-07-31 14:02:28 167

转载 Guava RateLimiter在Web应用中的使用

Google的Guava是JDK补充的一个神器,值得好好学习。 一般Web系统的访问限制都可以用容器本身来实现,比如tomcat就可以在connector上面配置connection数目的限制,servlet thread限制。 有时候系统复杂后希望对不同服务提供不同的RateLimiter,例如对数据库操作要求比较大的速率小些,在内存可以处理的速率大写,还有可能对集群提供rate limit...

2018-07-31 14:00:52 363

转载 lua调用java java调用lua

Table of Contents luaj 主要特征 luaj 用法示例 luaj 实现原理 查找并调用指定的 Java 方法 检查调用结果,并从 Java 方法获取返回值 将 Lua function 作为参数传递给 Java 方法 在 Java 方法中调用 Lua function GL 线程和 UI 线程的协调 Lua function 的...

2018-07-31 10:17:05 6600

转载 Spring Cloud Netflix Eureka源码导读与原理分析

Spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究。本文主要分为四部分,一是对项目构建的简要说明;二是对程序入口点的定位,帮助大家找到阅读源码的起点;三是对Eureka实现机制的分析;四是与使用Zookeeper相比Eureka作为注册服务的区别。1. 源码1.1 源码获取、...

2018-07-26 14:07:52 219

转载 rabbitmq 实现延迟队列的两种方式

ps: 文章里面延迟队列=延时队列什么是延迟队列延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行一场处理。这是就可以使用延时队列将订单信息发送到延时队列。场景二:用户希望通过手...

2018-07-04 16:06:11 15609 3

转载 Java NIO底层实现技术的简介和NIO类库的简单介绍

Java的NIO底层使用的是I/O多路复用技术,让我们先回顾一下I/O多路复用技术。I/O多路复用技术——优势利用I/O多路复用技术单线程就可以同时处理多个客户端请求,与多线程/多进程模型相比,I/O多路复用系统开销小,不需要创建新的额外进程或者线程,节省了系统资源I/O多路复用技术——使用场景服务器需要同时处理多个套接字;服务器需要同时处理多种网络协议的套接字。I/O多路复用技术——实现方式Li...

2018-07-03 17:09:03 695

原创 dubbo什么时候会清除Attachments内容

@Activate(group = Constants.CONSUMER, order = -10000)public class ConsumerContextFilter implements Filter {    public Result invoke(Invoker&lt;?&gt; invoker, Invocation invocation) throws RpcException...

2018-07-03 17:06:18 1748 1

转载 Java NIO-MappedByteBuffer

一 前言           程序访问文件时,有RandomAccessFile随机访问文件内容,字节流访问,缓冲区读入。但是这三种都没有内存直接读取,这里介绍下MappedByteBuffer,可以以内存的速度进行访问文件内容,提高文件内容,提高系统性能。二 内存映射          内存映射是通过字节流的通道获取,然后由通道的map()方法来进行映射。          getChannel...

2018-07-03 14:24:21 145

转载 看mysql的like是否使用索引

mysql在使用like查询中,能不能用到索引?在什么地方使用索引呢?在使用like的时候,如果使用‘%%’,会不会用到索引呢?EXPLAIN SELECT * FROM `user` WHERE username LIKE '%ptd_%'; 上面的结果是全表扫描,并没有使用到索引。只是使用一个%的查询结果:EXPLAIN SELECT * FROM `user` WHERE username ...

2018-06-29 13:55:48 957

转载 全网把Map中的hash()分析的最透彻的文章,别无二家。

你知道HashMap中hash方法的具体实现吗?你知道HashTable、ConcurrentHashMap中hash方法的实现以及原因吗?你知道为什么要这么实现吗?你知道为什么JDK 7和JDK 8中hash方法实现的不同以及区别吗?如果你不能很好的回答这些问题,那么你需要好好看看这篇文章。文中涉及到大量代码和计算机底层原理知识。绝对的干货满满。整个互联网,把hash()分析的如此透彻的,别无二

2018-05-09 14:48:43 1292 2

转载 CORS 中的POST and OPTIONS 请求

var req = new XMLHttpRequest(); req.open('post', 'http://127.0.0.1:3001/user', true); req.setRequestHeader('Content-Type', 'application/json'); req.send('{"name":"tobi","species":"ferret"}');

2018-04-26 19:44:49 2282

转载 redis持久化之AOF(Append Only File)及其总结

1.是什么?以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作2.Aof保存的是appendonly.aof文件3.配置位置4.AOP启动、修复、恢复

2018-04-23 17:18:27 521

转载 dubbo泛化调用 http接口 随意调用dubbo服务

dubbo支持泛化调用 1、开发工程中 有时候想要测试dubbo接口 需要自定义用例,比较麻烦 2、无法调用服务器上的dubbo测试 3、无法随意调用多版本的服务 由于dubbo支持泛化调用 所以这些问题就迎刃而解了/* * Copyright 1999-2011 Alibaba Group. * * Licensed under the Apache License, Version ...

2018-04-19 15:03:43 3470

转载 mysql 读写分离驱动插件

MySQL读写分离又一好办法 使用 com.mysql.jdbc.ReplicationDriver在用过Amoeba 和 Cobar,还有dbware 等读写分离组件后,今天我的一个好朋友跟我讲,MySQL自身的也是可以读写分离的,因为他们提供了一个新的驱动,叫 com.mysql.jdbc.ReplicationDriver 说明文档:http://dev.mysql.com/doc/refm...

2018-03-29 15:32:30 372

转载 教你如何成为Java的OOM Killer

前言虽然事隔半年,当时排查线上OOM事故的过程记忆犹新,每一个步骤都历历在目,感谢业务组、系统部、压测组、监控与应急部对架构组的强力支持,得以让这个Java内存问题水落石出,经过半年多的全面的应用日志切割方式的改造,现在基本没有OOM的问题了,线上服务运行非常健康,对可用性的保障起到了很大的作用,如果你在经历OOM,读了这个文章会有很大的启发。Become OOM Killer我们都知道JVM的内...

2018-02-26 10:11:45 1094

TTS OCX控件!

待破解TTS OCX控件! 待破解TTS OCX控件! 待破解TTS OCX控件! 待破解TTS OCX控件!

2008-09-09

空空如也

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

TA关注的人

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