自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

持之以恒

学而不思则罔 思而不学则殆

  • 博客(32)
  • 收藏
  • 关注

转载 深刻理解密码学

对称加密,非对称加密。数字摘要

2022-08-11 12:12:40 727

转载 浅谈时间轮算法

时间轮在计算机世界中,只有待解决的问题变得大规模后,算法的价值才能够最大化的体现。时间轮算法可以将插入和删除操作的时间复杂度都降为 O(1),在大规模问题下还能够达到非常好的运行效果。如果我们要实现一个定时任务该如何实现呢?最简单的方式就是使用一个任务队列来完成定时任务。具体实现细节下面详细展开。

2022-05-10 20:32:11 5157 6

原创 如何做好业务监控

系列文章目录文章目录系列文章目录一、什么是监控?1.1. 定义1.2. 目标二、监控的指标2.1.指标硬件层系统层(容器层)应用层业务层2.2 精度秒级分钟级2.3 统计方式三、怎么做3.1 监控痛点3.2 痛点解决3.3 监控大盘四、工具推荐4.1 监控工具总结一、什么是监控?1.1. 定义 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。1.2. 目标实时&持续的反馈系统情况保证业务持续稳定&安全

2021-03-26 15:15:27 3383 1

原创 基于服务端状态的负载均衡策略

服务状态数据的统计,指标包含:请求数总数,rt,异常数然后可以计算出 error_percent 和 avg_rt负载均衡策略思路都是减少问题机器的流量,当机器恢复时,恢复流量。并且要规避以下两个问题:抖动:分摊到各个机器的流量比例一直在变化,不确定的东西对系统来说是不好的。相对比较耗费cpu计算雪崩:减少问题机器的流量,导致其他机器因为流量过高而崩溃,进而导致集群崩溃。响应时间权重算法...

2021-02-25 11:06:49 350

转载 聊聊接口安全性问题

总结:我们写过很多接口,有没有想想接口的安全性呢?jwt,openid 侧重 于 认证(就是用户是谁),OAuth2 侧重于授权(就是说这个东西是否有权限访问),接口签名呢 侧重于安全请求来源(身份)是否合法?请求参数被篡改?请求的唯一性(不可复制)           签名介绍: AccessKey&SecretKey (开放平台)请求身份为开发者分配AccessKey(开发者标识...

2020-09-06 15:59:19 1861

原创 数据库中的时间类型(timestamp ,datatime ,bigint),你选对了吗?

1、timestamp占用4个字节,时间范围为1970-01-01 08:00:01到2038-01-19 11:14:07。2038年以后的时间,是无法用timestamp类型存储的。但是它有一个优势,timestamp类型是带有时区信息的。一旦你系统中的时区发生改变,例如你修改了时区,该字段的值会自动变更。这个特性用来做一些国际化大项目,跨时区的应用时,特别注意!2、datetime占用8个字节,时间范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。显然,

2020-06-13 23:08:18 3715 1

原创 解决Mac系统 "Navicat for MySQL.app"已损坏,打不开。 您应该推出磁盘映像。

今天网上下载了一个 Mac 版的 Navicat ,结果发现双击运行时弹出了如下错误:“Navicate Premium” is ...

2020-03-16 18:11:27 3382 2

原创 metrics 指标分析——你不在意的p99和p999

http://www.strolling.cn/category/metrics/metrics 统计值。

2019-09-27 12:07:27 19412 4

原创 ifeve并发编程网——深入理解java内存模型

深入理解java内存模型——基础深入理解java内存模型——重排序深入理解java内存模型——顺序一致性深入理解java内存模型——volatile深入理解java内存模型——锁深入理解java内存模型——final深入理解java内存模型——总结...

2019-08-19 21:06:19 247

转载 Guava RateLimiter限流使用

前言在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存 缓存的目的是提升系统访问速度和增大系统处理容量降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理常...

2019-05-24 14:35:05 614

原创 时间复杂度 O(1),O(n),O(n^2),O(logn),O(nlogn) 详解

在描述算法复杂度时,经常用到O(1), O(n),O(n^2), O(logn), O(nlogn)来表示对应算法的时间复杂度, 下面解释下他们的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 比如时间复杂度为O(n),就代...

2019-03-17 10:07:13 11863

转载 HybridDB数据库存在的价值

最近在考虑解决打点问题的数据库选型。希望阿里云上能提供一些TiDB类似的产品,同时支持OLTP和OLAP的,因此找到了HybridDB。分享一下下面文章       在大数据火遍 IT 界之前,大家对数据信息的挖掘通常聚焦在 BI(Business Intelligence)之上。BI 具有着明确的分析需求,清晰地知道需要处理哪些信...

2019-03-16 15:36:36 2370

原创 TCP的KeepAlive机制

一直以来对于KeepAlive不是很清楚,看到某些框架自己手写了心跳机制,但是一直不明白问什么,设置下keepAlive 不就可以了吗?为什么还要自己维护。最近研究了下才发现我还是太年轻了。下面看下原因。1、首先 KeepAlive 机制是TCP 中的概念。KeepAlive 并不是 TCP 协议的一部分,而是大多数操作系统都实现了这个机制,所以一些参数需要我们在操作系统层面设置 。Keep...

2019-01-10 16:38:24 3725 3

转载 Java toString 性能优化方案比较

谁在关心toString的性能?没有人!除非当你有大量的数据在批量处理,使用toString产生了许多日志。然后,你去调查为何如此之慢,才意识到大部分的toString方法使用的是introspection,它其实是可以被优化的。不过,首先让我们一起看看Javadoc回忆下Object.toString应 当做什么:“返回该对象的字符串表示,该结果必须简明但表述详实易懂。建议所有子类重写该方法”...

2018-10-30 18:42:08 1107

转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

一.class文件简介及加载  Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的Class对象:  class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件是怎样组织...

2018-08-20 14:17:21 352

原创 jmap分析堆内存飙升频繁fullgc

处理问题: 1、对内存使用异常和频繁fullgcjmap用于打印共享对象的内存映射或堆内存的详细信息 语法格式如下: [option] [option] executable [option] [server-id@]remote-hostname-or-ip1、使用jmap -heap pid查看进程堆内存使用情况jmap -heap {pid}2、使用jm...

2018-08-16 14:00:45 4562

转载 JVM即时编译JIT

在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。 1. 动态编译(...

2018-08-16 13:32:19 724

转载 Java工程师成神之路

一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头HotSpot 即时编译器、编译优化类加载机制 classLoad...

2018-08-16 12:20:31 261 1

原创 jstack分析系统cup使用飙升

处理问题:java 进程启动后系统cpu使用飙升jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码 1、查询java进程,获取进程id ps -ef | grep java 2、查看该进程内的线程使用情况 top -Hp {pid} 找到cpu使用排名前几的线程3、打印对应线程的十六进制(jstack 内部显示的是十六进制数据 例如:nid=x54ee) ...

2018-08-16 11:15:08 293

原创 top命名使用详解

top 命令top是linux/unix系统自带的系统排查命令,但是你真的了解其中的意义吗? 每一行都显示了不同的系统信息。第一行分表代表 系统时间、机器的运行时间、目前系统登陆的用户数(可以使用who查看)、load average(从左到右分别为 Load1 Load5 Load15 ,解释为 一分钟,五分钟,十五分钟 Load 的平均值) load :通常表明了目前系统...

2018-08-12 17:21:31 869

转载 java codeCache

1.问题随着系统不断变大,访问量不断增加,出现了启动后的负载很高的问题。关于启动后负载高的原因,网上很多文章都说是由于启动后随着代码的执行,jvm的jit编译器将部分热点代码编译为目标机器代码,由于编译线程占用了大量的cpu导致系统负载高。为了验证这个说法,在系统启动后使用jstack获取线程dump,并通过top –H –p查看当前进程中哪些线程在大量消耗cpu。结果发现,编译线程...

2018-08-12 14:16:11 1465 4

转载 RateLimiter源码阅读

    俗话说得好,缓存,限流和降级是系统的三把利剑。刚好项目中每天早上导出数据时因调订单接口频率过高,订单系统担心会对用户侧的使用造成影响,让我们对调用限速一下,所以就正好用上了。     常用的限流算法有2种:漏桶算法和令牌桶...

2018-03-13 14:52:55 421

原创 spring mvc 处理Controller返回结果和HandlerMethodReturnValueHandler使用

spring mvc 处理Controller返回结果 我们总有这样的需求,例如想动态的处理controller(或是一部分)的返回结果,增加某些字段,或是格式化返回结果。这就让我们想到了拦截器HandlerInterceptorAdapter和AOPAspect。当时使用AOPAspect可以实现,并且方便简单。网络上一大堆的使用方式,在此不做详细解释了。下面我们来说使用MVC拦截器的方...

2018-03-03 21:41:00 6289 2

转载 抓包分析TCP的三次握手和四次握手

问题描述:       在上一篇《如何对Android设备进行抓包》中提到了,服务器的开发人员需要我bug重现然后提供抓包给他们分析,所以抓好包自己也试着分析了一下。发现里面全是一些TCP协议和HTTP协议。所以要想进行抓包分析,必须先了解TCP的原理。这里介绍了TCP的建立连接的三次握手和断开连接的四次握手。问题分析:1、TCP建立连接的三次握手1、1前言:介绍三次握手之前,先介绍TCP层的几个

2018-01-02 15:08:16 1460

原创 mysql:Specified key was too long; max key length is 767 bytes

Specified key was too long; max key length is 767 bytes这个报错是因为mysql的“字符串类型”(varchar、char等)字段作为索引时,有一个约束单个索引字段存储长度不能超过767字节。按照表为utf8mb4字符集时,一个字符需要4个字节存储。那么最大定义索引前缀为 767/4=191.即字段a varchar(500)要建立索引时需要定义

2017-11-17 11:22:44 557 1

转载 使用ImageMagick对图片进行全面压缩

imageMagick

2017-08-07 16:19:55 11704

原创 Spring 事务失效那点事

spring 事务不生效AOPAopContext

2017-08-03 10:22:26 9558 3

原创 关于参数签名的总结

刚刚工作2~3年,我们搞java或是php(这里省略很多语言)开发年轻人,前几年开发的时候总会碰到一些和第三方对接的任务,例如第三方交易的支付宝、微信(心累,文档里面有很多排序和参数大小写错误的问题),再或是聊天软件的融云、环信,再或是地图的高德等。 他们虽然说大部分功能都提供SDK,简化接入者的工作量,让接入者只关系调用(自己只需要组织业务),不需要太过关心安全方面的问题,但是有些功能(接口)还

2017-04-18 11:54:40 8246 4

原创 MQ PUSH/PULL

作为一个消息系统,消息的传递是一块核心内容,最近在看amq的consumer消费的时候,突然想分析下推拉模式的优劣。好,闲话不多说,来点干货。消息系统必不可少的就是消息的 push 和 pull了。事实上,push模式和pull模式各有优劣。比如Facebook的Scribe和Cloudera的Flume,AMQ 采用push模式。Kafka这种新型的消息队列采用2种模式,选择由Produ

2016-10-14 17:10:16 3656

原创 AMQ consumer clusters 理解

最进公司负责新的业务,使用了amq。写完后再部署consmuer的时候,产生了疑问。到底这个consumer 的高可用策略是怎么样的?启动多个到底行不行?问了公司的几个老人,也没说出个所以然来。fuck!自己google,官方文档。终于看到了些眉目,下面总结下:基于amq的高可用方案分为 3个层次。1、生产者的高可用生产者的高可用和负载均衡,一般是靠外围程序控制。比如,基于Tomc

2016-10-14 15:46:52 964

原创 ed exception is redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: O 异常处理记录

nested exception is redis.clients.jedis.exceptions.JedisConnectionException:

2016-07-14 17:14:31 15963

原创 linux新机维护开始——重头再来

#恭喜你终于舍得花钱,购买了自己的主机(这才是你迈向服务器人生巅峰的第一步)!但是这可能这才是你服务器生涯的起步,慢慢来吧一步一个脚印的学习linux下的配置和部署程序。相信总会有一天它(linux)会是你的菜。好了长话短说下面我们来开始一步一步的学习吧……

2015-07-13 16:46:39 1640

空空如也

空空如也

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

TA关注的人

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