自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 漏桶算法详解

限流主要有以下几种算法:固定窗口计数法滑动窗口算法漏洞算法令牌桶算法本篇介绍漏桶算法,具体的漏桶算法概念如下:漏桶算法跟令牌桶比较类似,但实际上是两种策略。想了解令牌桶算法的可以看之前的文章。下面我们看一下维基百科的图片:如图所示,我们可以看到,整个算法其实十分简单。首先,我们有一个固定容量的桶,有水流进来,也有水流出去。对于流进来的水来说,我们无法预计一共有多少水会流进来,也无法预计水流的速度。但是对于流出去的水来说,这个桶可以固定水流出的速率。而且,当桶满了之后,多余的水将会溢出。当使用了

2020-07-21 17:18:26 5843 2

原创 令牌桶算法详解

RateLimiter 有两个实现类:SmoothBursty 和 SmoothWarmingUp,其都是令牌桶算法的变种实现,区别在于 SmoothBursty 加令牌的速度是恒定的,而 SmoothWarmingUp 会有个预热期,在预热期内加令牌的速度是慢慢增加的,直到达到固定速度为止RateLimiter 是用来控制访问资源的速率(rate)的,它强调的是控制速率。比如控制每秒只能有 100 个请求通过,比如允许每秒发送 1MB 的数据。它的构造方法指定一个 permitsPerSecond .

2020-07-17 15:20:15 2589

原创 设计模式-单例模式详谈

前言:为什么会有设计模式?个人觉得就是为了代码看起来更加清晰,让人舒服,最好的描述就是代码简洁、生动、易懂。单例模式是最常见的一种设计模式,雪花算法、spring源码中都有用到,下面我会详细解释单例模式的几种情况,以及涉及到的提问点。下面我将从两方面讲解:(前提需要了解jvm相关知识点,指令重排、可见性等)1.单例模式定义及作用2.单例模式几种基本实现方式1 单例模式定义及作用单例模式主要是为了确保实例只有一个,尤其是在多线程环境下。排除反射的条件下,正常的调用静态方法,每次的返回的数据是唯一的.

2020-05-28 18:08:49 229

原创 事务回滚@ Transactional 详谈

前言:事务回滚我们总是在用到,但是有可能不太了解具体的细节,接下来我会通过源码解读以及真实的案例测试,来说明。接下来我会从三方面来讲述事务的运用:源码解读事务使用事务的失效场景1.源码解读/** 描述事务的属性在一个方法或者类上(个人觉得应该是使用事务的属性在方法或者类上) *<p> 这种注释类型通常可以直接与Spring的注释类型进行比较, 实际上将直接将数据转换为后者,因此Spring的事务支持代码不必知道注释。 如果没有规则与异常相关,则将其视为回滚运行时异.

2020-05-26 17:10:43 1318 1

原创 抓包工具 charles 安装使用

mac 下载地址https://www.charlesproxy.com/download/latest-release/ 安装好之后 配置总共三部 取消勾选macos proxy 防止抓本地电脑的包 proxy settings 设置 ssl proxying setting 设置 防止乱码 配置 *:443 可以抓取所有的请求 安装电脑证书和手机证书 1是安装电脑证书 点击即可 按照步骤安装 2是手机安装证书 需...

2020-05-25 16:33:23 395

原创 HashMap总结(下)

HashMap的总结总算到了最后一期,目前就自己了解到的来说关于hashmap的最后三点。其实还是会说很多废话,因为所有的答案在源码中都已经有了解读,在这里我只能说做一些自我的理解,方便大家理解hashMap。废话不多说,进入到我们今天的总结: hashMap为什么会死循环? 头插入和尾插入区别 1.hashMap为什么会死循环?很多人都说hashMap会死循环,死循环主要...

2020-04-28 15:56:03 213

原创 HashMap总结(中)

​上文提到了hashMap的原理,这章我们决定好好系统研究一下他的默认值以及hashcode的比较。(理解一个东西最好的办法就是阅读源码以及源码注释)全文会主要讲解以下几个问题?1.为什么默认值是16?2.什么时候扩容?3.为什么加载因子是0.75?##### 为什么默认值是16?什么时候扩容?首先需要知道hashmap的底层数据结构,是数组加链表。既然这...

2020-04-18 14:25:15 165

原创 HashMap总结(上)

了解hash碰撞需要先知道,HashMap 的存储方式,hash是由链表和数组为结构的底层实现,HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突.java1.7时存储如上图所示,但是在1.8时候就变成了红黑树存储。...

2020-04-10 23:32:28 206

原创 微信短链接生成java版本(短链接如何自主切换以及防止被封)淘客专享

写在之前,之前一直在好奇短链接是什么,最近研究了一下,发现还是挺好玩的。本文只是做一个简单技术的讲解,技术没有好坏,只看使用的人怎么掌握。1.什么是短链接短网址,Short URL,可能也叫短链接、短URL,是指短网址服务器为某个链接生成的中间链接。短链接并不是绝对的就比原链接短。2.整体的构思第一步,需要有注册的服务号,长链接转短链接每天会有10万次请求次数,超过之后会被封禁,具体生成...

2019-12-25 15:14:21 649

原创 python邮件发送(超全详细版本)

由于最近在搞数据统计和日报的东西,所以专门整理了一下python发送邮件的整个流程以及测试规范,废话不多说,直接进入操作。1.前期准备 :开启邮箱smtp权限、安装python 所需模块(记住python命名不要叫email.py 会和原有的有冲突)2.源码直接上:# -*- coding: utf-8 -*-import smtplibfrom email.mime...

2019-12-23 14:46:25 1507 1

原创 mysql表百万级数据优化limit分页(自己建的数据 只有一百多万)

1.问题前几天老大在群里抛出这个问题说:问个问题,千万级的表查询分页,怎么优化查询select*fromuserlimit10000000,10select*fromuserwherename="a"limit10000000,102.实验经过验证发现以上语句在数据库中执行 (100万条数据时候)至少需要2.7s ,这简直不符合规范,当然为了完成这个难题所以...

2018-08-23 10:42:46 5700

原创 部署服务器 搭建tomcat项目

一、基本项 1.下载jdk tomcat war包(https://pan.baidu.com/s/1nxab2Sp) 1.1xshell快捷生成建 tab 输入一段自己想要的命令 剩下按tab就可以出现 1.2 shift +insert 是快捷键粘贴 2.通过FileZilla 把jdk tomcat上传到服务器中的/home/新建文件夹里面 3.tar -z

2018-02-01 18:30:53 313

原创 查找某个整数是否在数组中(数组为有序)

针对本题,首先数组是有序的 例如: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 输入任意一个整数 看这个整数是否在数组中,在返回true,否则返回falsepackage com.cn.hnust.TestPoj;/** * @author dark * @date 2018.1.24 * 求一个有顺序的二维数组,任意一个值,

2018-01-24 17:51:53 2283

原创 简单的字符串替换

1.先来简单说说String StringBulider StringBuffer区别,简单来说 就是 String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。 StringBulider针对于非线程安全的,用于单线程下在字符缓冲区进行大量操作的情况。 StringBu

2018-01-23 15:31:49 2131

原创 栈与队列

什么是栈?个人理解栈就好比手枪的子弹夹,“后进先出”,有很多应用栈的地方,例如浏览器中的后退,最经典的应该是逆波兰算法。 什么是队列?个人理解队列就像你打客服电话,由于是高峰时段,你必须先等等待,一个人结束另一个人才能开始,也就是所谓的“先进先出”。 栈都有顺序栈、链栈,队列都有顺序队列、循环队列、链队列。下面就用逆波兰算法来简单说明栈的应用: 简单说明逆波兰原理 逆波兰算法的核心步骤

2017-12-22 17:52:25 213

原创 经典消费者生产者问题

首先你需要了解多线程的流程以及实现多线程的几种方法,同时你要理解什么是并行、并发,以及线程和进程的区别,这里做简要的区别。 线程:一个进程包括多个线程 并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。 并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QP

2017-12-21 16:09:44 20620 4

原创 windows命令行

打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口...# 控制台命令窗口中一些技巧复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可粘贴内容:右键弹出快捷菜单,选择“粘贴(P)”在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到“在此处打开命令行窗口”使用上下方向键,翻看使用过的命令tab补

2017-12-19 10:35:38 224

原创 数据结构之链表与顺序表(基础)

一、顺序表1.顺序表是基于一维数组实现的2.顺序表的长度(length)应该比数组长度(maxsize)小3.顺序表的插入、删除、查找(1.)插入在表中第i个位置插入一个新的元素x,表的长度加1,最后的元素像后移。知道把第i个位置空出来,把新元素插入进去。如图所示(2.)删除在表中第i个位置删除一个元素x,表的长度减1。如图所示(

2017-12-18 17:26:09 689

原创 Intelij idea 运行tomcat项目教程

1.运行tomcat项目 (1.)点击run 进入edit configurtions (2.)如图所示 点击+号 (3.)点击configuratione… 选择自己的tomcat版本(7.0或者8.0) (4.) 点击deployment 选择 如图 绿色+号 (5.) 选择 artifact 选择自己项目的war exploded包, (6.)点击apply 然后ok

2017-12-14 17:21:07 379

原创 git 常用命令

1.提交代码前,查看当前有哪些文件被修改过  git  status2. 一般提交代码都不会直接合并到master上 而是会建立自己的分支,为了避免出现错误(1.) git branch  查看自己所在分支(2.)git checkout  -b dev  创建名称为dev的分支并且进入(3.) git checkout  master  切换到master分支3.提交代码流程

2017-12-13 14:38:16 149

原创 TCP/IP 三次握手协议与四次放手协议

TCP/IP 三次握手协议与四次放手协议三次握手协议 三次握手协议主要有以下几点: 1、客户端发送连接请求,发送SYN建立连接请求。 2、服务器端(server)连接允许,做一个响应(ACK),同时s客户端的序列号(seq)+1。 3、客户端响应,给服务端发送一个响应,序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。 例如图片所示: (上图

2017-08-08 00:01:29 520

空空如也

空空如也

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

TA关注的人

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