自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入了解Redis内存淘汰策略中的LRU算法应用

LRU(Least Recently Used,最近最少使用)算法是一种常见的内存淘汰策略,它根据数据的访问时间来决定哪些数据会被淘汰。LRU算法的核心思想是:最久未被访问的数据,被认为是最不常用的数据,应该被优先淘汰。LRU 算法广泛应用在诸多系统内,例如 Linux 内核页表交换,MySQL Buffer Pool 缓存页替换,以及 Redis 数据淘汰策略。简单来说,可以认为LRU算法是在维护一个链表,每次操作某个数据,就把数据移到链表的头部。例如:向一个缓存空间依次插入三个数据 A/B/C,填满了缓

2024-04-24 08:37:59 708

原创 深入理解Redis的淘汰策略

Redis作为一款非关系型数据库,数据是存储到内存中的,和传统常规数据库相比,这给予可很高的并发访问量,但是相应的,存储空间就不如那些存储在磁盘中的数据库了。内存淘汰将Redis的存储空间由固态的变为了动态的,即数据对应的存储空间并非一成不变的。而内存淘汰就是为了应对Redis内存存储空间无法再放置新数据时,所设置的一种机制,即把老数据进行删除淘汰,来保证新数据的顺哪里插入。Redis 4.0 版本开始增加了 LFU 缓存淘汰策略,也采用数据随机筛选规则,然后依据数据的热度值排序,淘汰掉热度值较低的数据。

2024-04-22 22:00:56 703

原创 深入并广泛了解Redis常见的缓存使用问题

Redis 作为一门主流技术,缓存应用场景非常多,很多大中小厂的项目中都会使用redis作为缓存层使用。但是Redis作为缓存,也会面临各种使用问题,比如**数据一致性,缓存穿透,缓存击穿,缓存雪崩,数据倾斜(热点key(hot key),大key(big key),在集群中的数据倾斜),redis集群脑裂**等常见的缓存使用问题。

2024-03-29 20:19:32 1343 1

原创 深入理解Redis的Sentinel机制

由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。

2024-03-23 21:42:43 1096 2

原创 带大家深入理解redis的主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。复制,也就是我们说的主从复制,主机数据更新后根据配置和策略,自动同步到从机的master/slaver机制,Master以写为主,Slave以读为主。使用主从复制可以实现读写分离、容灾恢复。

2024-03-21 10:21:12 980

原创 Redis中的HyperLogLog以及HyperLogLog原理

Redis中的hyperLogLog数据结构及原理

2024-03-16 19:38:03 1060

原创 MySQL

MySQL1. 为什么要使用数据库 Java程序在运行的过程中对于数据进行存储操作,变量,对象,数组,集合,双边队列...数据是保存到内存中,数据存储是瞬时的,程序退出,电脑异常。都会导致数据丢失并且不可逆。 文件存储数据,XML,JSON,其他文件。可操作性比较差,API繁琐,不同的文件有不同的解析方式,而且在内存占用和效率问题上很难达到两全程度。 存在的一些问题: 1. 文件保存的...

2020-03-25 23:37:20 441

原创 Java知识点——MySQL

MySQL1. 为什么要使用数据库 Java程序在运行的过程中对于数据进行存储操作,变量,对象,数组,集合,双边队列...数据是保存到内存中,数据存储是瞬时的,程序退出,电脑异常。都会导致数据丢失并且不可逆。 文件存储数据,XML,JSON,其他文件。可操作性比较差,API繁琐,不同的文件有不同的解析方式,而且在内存占用和效率问题上很难达到两全程度。 存在的一些问题: 1. 文件保存的...

2020-03-24 23:44:17 385 11

原创 Java知识点——NIO完成一个TCP聊天室

1. NIO完成一个TCP聊天室1.1 NIO TCP聊天室客户端完成package com.qfedu.b_niochat;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SocketChannel;/...

2020-03-23 23:40:01 337

原创 Java知识点——NIO实现网络聊天室

NIO实现网络聊天室1. NIO完成网络编程1.1 Selector选择器老大Selector 选择器,网络编程使用NIO的大哥!!! 服务器可以执行一个线程,运行Selector程序,进行监听操作。 新连接, 已经连接, 读取数据,写入数据Selector常用方法: public static Selector Open(); 得到一个选择器对象 public int s...

2020-03-23 23:38:22 192 11

原创 Java知识点——第六周总结

第六周总结TCP多人聊天室实现分析客户端功能:1. 数据发送2. 数据接收技术:1. socket2. 输入流和输出流3. 多线程,客户端功能模块有两个线程聊天:1. 群聊2. 私聊私聊前缀 @服务器用户ID号:msg服务器功能:1. 数据转发2. 用户注册技术:1. ServerSocket2. 每一个用户对应的Sokcet对象3. 多线程同时在线...

2020-03-22 21:30:04 220 1

原创 Java知识点——第六周思维导图

2020-03-22 21:28:10 120

原创 Java知识点——NIO和BIO

NIO和BIO1. NIO和BIO1.1 BIO概述BIO BIO ==> Basic IO (基本IO), Block IO(阻塞IO) Scanner操作,文件读写操作,Socket数据传输操作... 都是BIO 比如TCP群聊,私聊聊天室 Socket涉及到的IO,也是BIO 资源浪费: 1. 多线程,每一个Socket会对应一个线程,如果用户量巨大,会导...

2020-03-22 21:13:24 189

原创 Java知识点——单例模式

单例模式1. 单例模式1.1 要求 当前类有且只有一个对象,一旦当前类存在一个对象之后,无法在重新创建当前类的对象。就算是你要创建,代码返回的对象依然是上一次创建的对象。 懒汉模式,饿汉模式 1.2 单例模式推导【懒汉】package com.qfedu.a_single;import java.util.concurrent.locks.Lock;import java.ut...

2020-03-22 15:46:07 93 1

原创 Java知识点——方法引用

1. 方法引用1.1 Lambda冗余问题以及方法引用初识package com.qfedu.d_methodreference;/** * 函数式接口 * * @author Anonymous */@FunctionalInterfaceinterface PrintMethod { void print(String str);}/** * Lambda冗...

2020-03-22 13:43:52 141 11

原创 Java知识点——Stream流

Stream1. Stream流1.1. Stream流引入 Stream流完全不是I/O流,按照流水线处理方式来考虑代码中的思想。 JDK1.8 之后,我们拥有了Lambda表达式,让代码的中心偏向解决实际问题,直到重点,可以提高效率。 Stream流中使用了大量Lambda表达式,利用Lambda操作方式,提供开发效率1.2 传统遍历方式和Stream类处理方式对比packag...

2020-03-22 13:38:39 156

原创 IDEA操作知识点——使用idea生成注释文档JavaDoc出现错误

我在使用idea生成注释文档时,遇到了这个错误Cannot generate JavaDoc - JDK path is not specified什么意思呢?就是说 无法生成JavaDoc-未指定JDK路径这是由于idea自带的jdk的版本低,需要我们更改成自己的jdk版本.方法如下:找到idea上方工具栏 File–>Project Structure可以看到默认版本是1...

2020-03-21 21:56:23 1601

原创 IDEA操作知识点——如何使用idea生成注释文档JavaDoc

如何使用idea生成注释文档JavaDoc方法:生成的注释文档所需要的类必须符合JavaBean规范双击shift键索引栏中输入JavaDoc选择第一个出来的界面是这样的在界面选择Custom scope然后Output directory 选择生成文件的存放路径下边的看情况勾选,一般全部勾选在Other Command Line Arguments 中填入:-enc...

2020-03-21 21:55:41 1282 1

原创 Java知识点——函数式接口

函数式接口1. 函数式接口1.1 概述 如果说一个接口内有且只有一个方法,而且该方法是一个缺省属性为public abstract方法,该接口可以称之为是一个函数式接口。 自定义函数式接口,还有系统中提供的函数式接口 Comparator<T> Runnable 可以直接理解JDK1.8的新特征,Lambda表达式来使用。 Lambda表达式对比匿名内部类使用 ...

2020-03-21 21:16:52 126

原创 IDEA操作知识点——如何设置代码注释模板

在用IDEA编写代码时,在类前,方法前都需要添加文档注释,达到更好的的阅读性,也是最基本的代码规范。但是在新创建一个.Java文件时,我们也可以更改添加头注释,来使代码更具有阅读性和标识性。方法打开IDEA这个应该不用说找到上方工具栏的File–>Settings在左侧栏里选择Editor->File and Code templates在files 页选择cla...

2020-03-21 17:23:15 550

原创 注解总结

注解1. 注解概述1.1 注解解释注释: 解释代码,给程序员看注解: Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义Java标注 JDK1.5之后的特征 用于说明程序 一般在框架中使...

2020-03-21 08:29:10 154 11

原创 Java知识点——JSON文件

JSON1.1 JSON格式概述JSON JavaScript JavaScript Object Notation (JavaScript Object Notation,JavaScript对象表示法,读作/ˈdʒeɪsən/)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是J...

2020-03-21 08:19:59 204

原创 TCP多人聊天室实现简单思路

TCP多人聊天室实现1.1 分析客户端 功能: 1. 数据发送 2. 数据接收 技术: 1. socket 2. 输入流和输出流 3. 多线程,客户端功能模块有两个线程 聊天: 1. 群聊 2. 私聊 私聊前缀 @服务器用户ID号:msg 服务器 功能: 1. 数据转发 2. 用户注册 技术: 1. ServerSocket 2....

2020-03-20 21:20:35 1645

原创 Java第五周总结

Java第四周lambda表达式思想 “说重点”lambda表达式的核心即在于说重点以线程代码为例,他需要的是什么?最核心的东西是什么?就是run方法!!!runnable接口中重写实现的就一个run方法!!!接口只是run方法的载体,装黄桃的罐头盒子!!!核心只要run方法。我们为什么要写runnable接口的实现类?就是为了重写run方法,并且让线程去执行run方法。所以,现在...

2020-03-20 17:59:55 240 10

原创 java第五周知识点思维导图

写错了,是第五周…

2020-03-20 14:30:20 131

原创 Java知识点——注解补充

1. Java中自定义注解1.1 Java中自定义注解的方式格式: public @interface AnnotationName { 属性列表; } Annotation注解是可以编译得到对应的.class字节码文件,验证了注解是可以参与编译过程的通过反编译工具可以得到一下内容【Annotation本质】public interface MyAnnotation1 ex...

2020-03-19 23:47:13 169 10

原创 java知识点——注解概述

注解概述1. 注解解释注释: 解释代码,给程序员看注解: Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义Java标注 JDK1.5之后的特征 用于说明程序 一般在框架中使用 格式:...

2020-03-18 23:19:43 134 10

原创 Java知识点——Comparator比较器

Comparator接口包含很多方便的静态方法来创建比较器。这些方法可以用于lambda达式或方法引用。静态comparing方法取一个“键提取器”函数,它将类型T映射为一个可比较的类型(如String)对要比较的对象应用这个函数,然后对返回的键完成比较。例如,假设有一个Person对象数组,可以按名字对这些对象偶排序:Array.sort(people, Comparator.compa...

2020-03-17 23:58:33 537 10

原创 java知识点——xml补充

1. XML解析1.1 XML解析思路DOM解析 Document Object Model 文件对象模型 把XML整个文件看做一个Document对象,每一个节点看做一个Element,节点中有Attribute,或者当前节点中存在Text文本内容。 DOM是将整个XML文件读取到计算机内存中,可以进行CRUD操作。 缺点: 占用了大量内存空间 适用的环境: 服务器对于XM...

2020-03-16 23:08:27 157 11

原创 Java知识点——xml概述

XML1. XML概述Extensible Markup Language可拓展标记语言用途: 1. 数据存储,小型数据库,存在一定的CRUD操作可行性 2. 网络端数据的传输 3. JavaWEB框架项目配置文件 Spring Druid ....w3c万维网联盟指定的规范2. 基本语法1. XML文件后缀名是.xml2. XML第一行是对于当前文件的定义声明3...

2020-03-15 22:17:43 226 10

原创 Java知识点——反射初识以及基本API

1. 反射概述1.1 Java文件和.class文件的关系Java文件Java文件中包含代码的所有内容,类,接口,成员变量,成员方法….class字节码文件.java文件 通过 javac编译工具生成对应的.class字节码文件使用JDK中提供的反编译工具,可以看到.class文件中包含Class 完整的包名.类名Field 成员变量,成员变量的名字和成员变量的数据类型[如果是引用...

2020-03-14 12:42:16 637 12

原创 Java知识点——网络编程(如何网络编程和多线程实现tcp基础多文件交换功能)

1. 网络编程概述1.1 C/S和B/SC/S客户端 服务器软件结构服务提供商给予用户服务需要准备的内容 1. 各大平台的客户端 Android iOS PC Windows Linux macOS QQ 微信 淘宝 JD 剑与远征 2. 服务器提供服务软件更新: LOL服务器版本更新,同时本地软件也要进行更新操作。这个操作非常耗时。 热更新B/S浏览器 服务器软...

2020-03-13 20:10:29 1336 10

原创 Java中的小知识——lambda表达式

从匿名内部类引入Lambda表达式在线程池那篇博客中,我们通过使用匿名内部类来作为参数传入submit方法中。但是我们发现,这样虽然在步骤上简单了许多,但是在空间上看着并不简单,甚至显得比较复杂。那我们就用更简单的lambda表达式来代替匿名内部类。package executors;import java.util.concurrent.ExecutorService;impor...

2020-03-13 07:57:14 234

原创 Java中的小知识——线程池补充

在我的线程池博客中我已经粗略的说过了线程池。线程池但是我只说了一种创建线程池对象的方法public static ExecutorService newFixedThreadPool(int nThreads);但是我在使用中,发现这种方式并不受阿里巴巴欢迎。因为使用Executor,都是默认的初始化参数。如果项目场景复杂的话,可能不好控制。所以我又学习了其他方法。创建和销毁线程是...

2020-03-12 20:02:15 182 1

原创 Java知识点——线程池

我们在之前的线程学习中,都是之间创建新的线程,显性线程,用的时候开启,用完销毁,效率低且不安全而且我们看到在阿里巴巴代码规范规约中也是不建议显式创建线程,建议使用线程池。不管是继承Thread还是遵从Runnable接口,都需要重写Run方法,而且每一个线程对象有且只能执行一次,之后就会被销毁。利用Runnable接口来提供执行目标,而且借助于Thread执行线程。用生活中的例子来理解:...

2020-03-12 18:14:57 463 11

原创 Java知识点——线程通信(线程之间的联系)

1. 生活化例子预约 --> 抢购消费者 <–> 商品 <–> 生产者消费者1. 购买商品2. 等待,不过在等待之前,需要告知生产者快点生产生产者:1. 生产商品2. 休息,在休息之前,要告知消费者你快来买啊商品:就是两个独立线程之间的共享资源。2. 共享资源处理问题现在存在两个完全无关的线程:生产者和消费者,但是商品会作为他们两者之间的共享资...

2020-03-12 17:33:29 170

原创 知识点——java中线程的状态简说

六种线程状态线程有如果按照java.lang.Thread.State枚举方式来考虑,一共提供了6中状态状态导致状态的发生条件NEW(新建)线程刚刚被创建,没有启动,没有调用start方法RUNNABLE(可运行)线程已经可以在JVM中运行,但是是否运行不确定,看当前线程是否拥有CPU执行权BLOCKED(锁阻塞)当前线程进入一个同步代码需要获取对应的锁对...

2020-03-12 17:25:05 129

原创 知识点——Java中线程安全问题(共享资源冲突问题)和守护线程

1. 线程安全问题–共享资源能使用问题例如:<<湄公河行动>>100张票淘票票CGV 美团 猫眼三个销售渠道,100张票是一个共享资源!!!三个销售渠道,可以认为是三个销售线程!!!问题一:100张票共享资源问题,选什么来保存?局部变量:在方法内,如果run方法执行,存在,run方法当前执行完毕,销毁。每一个线程对象中都有run方法,无法满足共享问题...

2020-03-12 12:31:25 311

原创 java中的基础知识点——什么叫做实例化

何为实例化?我们都知道Java其实就是类的集合,而类和对象的关系也不必多说,就是一类事物和一个事物的关系,比如狗与八公,人与我,国家与中国。创建对象的过程就叫实例化有时候也将对象叫做一个类的实例。创建对象创建对象过程详解:Person person = new Person();这句话可以用四步来解释1.第一步,右边的“new Person”,是以Person类为模板,在堆空间里创...

2020-03-11 20:18:15 543 1

原创 java中for each循环的用法

定义和用法foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。注意: forEach() 对于空数组是不会执行回调函数的。简单来说,foreach语句就是一个加强的for循环语句,用来遍历数组或对象集...

2020-03-11 20:04:22 880

空空如也

空空如也

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

TA关注的人

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