自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 APP抓包工具分类和技巧

如果APP检测代理 推荐使用Charles和HttpCanary。如果模拟器能打开 推荐用HTTP Debugger Pro。模拟器不能打开 使用真机Fiddler和Charles抓包。如果APP不走代理且习惯用FD 推荐配合Postern。

2023-07-11 17:36:56 349

原创 分布式CAP理论

CAP理论CAP理论又被称为布鲁尔定律,被证明成为分布式计算领域公认的定理CAP定理在一个分布式系统中(互相连接并且共享数据的节点集合)中,当涉及到读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。注:分布式系统中不一定都存在互联和共享数据,例如memcached集群相互间就没有存在连接和共享数据,这类分布式系统并不在CAP理论讨论的范围。一致性(Consistency)

2021-08-09 11:19:20 105

原创 redis分布式锁

分布式锁的奥义占坑一般使用setnx指令,只允许被一个客户端占坑,先来先占,用完了再del但是如果逻辑执行到中间除了异常,导致del操作没有被调用,就会陷入死锁,锁得不到释放可以在拿到锁之后,给锁加上一个过期时间但是如果在setnx和expire之间服务器进程突然关了,导致expire得不到执行,也会造成死锁根源setnx和expire不是原子指令Redis2.8中对set进行扩展,使得setnx和expire指令可以一起执行,解决了分布式锁的乱象set lock:codehole true

2021-07-21 23:34:35 114

原创 UnSafe类

UnSafe类JDK中的rt.jar包中的Unsafe类提供了硬件级别的原子性操作,Unsafe类中的方法都是native方法,他们使用JNI的方式访问本地C++实现库。一、内存管理(包括分配内存、释放内存等)该部分包括了allocateMemory(分配内存)、reallocateMemory(重新分配内存)、copyMemory(拷贝内存)、freeMemory(释放内存 )、getAddress(获取内存地址)、addressSize、pageSize、getInt(获取内存地址指向的整数)、g

2021-07-20 18:09:01 116

原创 布隆过滤器原理

布隆过滤器原理一个大型的位数组和几个不一样的无偏hash函数,图中f、g、h,就是把元素hash值算得比较均匀,让元素被hash映射到数组中的位置比较随机向布隆过滤器中添加key时,会使用多个hash函数对key进行hash,算得一个整数索引值,然后对位数组长度进行取模运算得到一个位置,巍哥hash函数都会算得一个不同的位置,再把位数组的这几个位置都置为1,就完成了add操作向布隆过滤器询问key是否存在时,跟add一样,也会把hash的几个位置都算出来,看看是否都为1,只要有一个是0,那么说明布隆

2021-07-20 18:03:38 40

原创 redis持久化

持久化Redis有两种持久化机制,第一种是快照RDB,第二种是AOF日志。快照是一次全量备份,AOF日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而AOF日志记录的是内存数据修改的指令记录文本。AOF日志在长时间运行会变很大,需要定期AOF重写,给AOF日志进行瘦身快照原理问题:1、在服务线上请求同时,Redis还要进行内存快照,内存快照要求Redis必须进行文件IO操作,可文件IO操作不能使用多路复用API2、为了不阻塞线上业务,Redis要一边持久化、以便响应客户

2021-07-19 23:39:34 71

原创 ReentrantReadWriteLock源码分析

ReentrantReadWriteLock对于ReentrantLock是独占锁,不允许多个线程同时获取锁。所以ReentrantReadWriteLock应运而生。ReentrantReadWriteLock采用读写分离的策略,下面我们看看它是如何实现的。结构public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable { private static final l

2021-07-19 18:07:02 51

原创 Vue中同步方法的实现

Vue中同步方法的实现情景:在实现登录功能的时候,通过表单的用户名,向后台发送请求,前端以为处理完成,继续执行,而还未等后台数据返回,前端获取到的用户数据为空。实现:等待请求方法返回数据在继续往下执行,及实现同步方法原代码data() { return { userInfo: { id: '', username: '', p

2021-06-13 21:35:20 6336

原创 redis五大数据类型

redis五大数据类型[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tx2Oq4gM-1620556205638)(E:\笔记整合\NoSQL\redis官网.png)]Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyp

2021-05-09 18:30:50 49

原创 java反射

反射Reflection是java语言被视为动态语言的关键,反射机制允许程序在执行期借助Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性和方法加载类的方法Class c = Class.forName("");加载完之后,在堆内存的方法区就会产生一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,通过这个镜子按到类的结构,所以,我们形象的称之为反射反射机制

2021-04-28 10:02:54 52

转载 SHIRO授权(源码分析,转)

SHIRO授权shiro支持两种两种访问控制方式,分别为:基于角色的访问控制、基于资源的访问控制。基于角色的访问控制:Subject subject = SecurityUtils.getSubject();subject.hasRole("tole1");subject.hasAllRoles("role1","role2");基于资源的访问控制:Subject subject = SecurityUtils.getSubject();subject.isPermitted("user:

2021-04-16 19:32:30 138

原创 多线程简单基础

多线程简单基础线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程的状态 /** * A thread can be in only o

2021-04-12 22:52:32 67

原创 Java位运算及简单应用

位运算1.位运算与移位运算细化符号描述运算规则按位运算&与两位都为1,那么结果为1|或有一位为1,那么结果为1~非~0 = 1,~1 = 0^异或两位不相同,结果为1移位运算<<左移各二进制位全部左移N位,高位丢弃,低位补0>>右移各二进制位全部右移N位,若值为正,则在高位插入 0,若值为负,则在高位插入 1>>>无符号右移各二进制位全部右移N位,无论正

2021-04-12 00:04:22 250

空空如也

空空如也

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

TA关注的人

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