自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis-对象

没错redis也有对象一说,前面介绍的数据结构,压缩链表、整数集合、跳表等并不是直接使用,而是根据具体情况选择使用的。其中对象主要五种,字符串对象(str)、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合对象(zset)其中每种对象都使用了最少一种数据结构,Redis会根据具体的使用情况,为对象设置多种不同的数据结构的实现,从而优化对象在不同场景的使用效率,提高服务质量和可用性。通过 TYPE msg 可以查看对象的类型。

2022-10-08 22:39:45 300 1

原创 Redis-跳跃表

redis-跳表

2022-09-08 23:40:57 301

原创 Redis-压缩列表

redis的压缩列表实现原理

2022-09-07 23:41:51 286

原创 Redis-整数集合

整数集合的底层和升级过程

2022-09-06 22:11:27 299 1

原创 BFF层的作用

BFF层的作用

2022-09-05 23:05:16 729

原创 Redis-字典

redis中字典的实现

2022-09-04 23:19:25 159

原创 Redis-链表

Redis链表的特点和实现

2022-06-21 22:59:46 148

原创 Redis-SDS

Redis字符串的实现

2022-06-21 22:56:42 225

原创 高并发解决方案

概述高并发是一个不可避免的问题,要从多个维度来解决高并发问题在并发中经常提及的两个常用名词TPS和QPSTPS秒级事务并发量 QPS秒级并发查询量解决高并发硬件从硬件方向下手单体应用垂直扩容CPU从32位提升为64内存提升磁盘提升机械硬盘到固态硬盘磁盘扩容千兆网卡提升为万兆网卡解决流量问题缓存做缓存也是解决高并发的一个很好的解决办法浏览器缓存第一次访问返回200之后访问 返回304表示页面没有被修改过 不需要再次请求 直接使用缓存把资源缓存到浏览器

2022-04-18 08:26:43 501

原创 仿写HashMap

HashMap下面是对HashMap的部分方法的仿写public class HashMapDemo<K,V> { // 数组初始长度 private static int tar = 16; // 阈值 static final float threshold = 0.75f; // static int size = 0 ; // 初始化参数 public HashMapDemo() { } //

2022-04-12 23:32:31 212

原创 力扣:消失的数字

力扣:消失的数字数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?**注意:**本题相对书上原题稍作改动输入:[3,0,1]输出:2题目要求用O(n)的时间复杂度解决 如果排序 时间复杂度对低为O(nlogn)这道题可以用或运算来解决 ^我们知道 1^1=0那么 从1-n(数的最大值)中都 ^ 起来就可以得出 消失的数组 public int missingNumber(int[] nums) { in

2022-04-11 22:05:15 191

转载 布隆过滤器

布隆过滤器布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。主要用于判断一个元素是否在一个集合中。通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间也会呈现线性增长,最终达到瓶颈。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为O(n

2022-04-11 21:51:17 169 1

原创 从输入网址到浏览器显示的过程

从输入网址到浏览器显示的过程DNS解析:将域名解析成IP地址先去浏览器缓存检查浏览器会首先搜索浏览器自身的 DNS 缓存,缓存时间比较短,大概只有1分钟,且只能容纳 1000 条缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有且没有过期则解析到此结束。操作系统缓存检查 + hosts 解析如果浏览器的缓存里没有找到对应的条目,操作系统也会有一个域名解析的过程,那么浏览器先搜索操作系统的 DNS 缓存中是否有这个域名对应的解析结果,如果找到且没有过期则停止搜索,解析到此结束。

2022-04-09 11:23:47 2290

原创 Redis基本类型和操作

Redis常用命令select 2 //切换到2号数据库keys * //查看所有key值set name zhangs //设置kvget name //查看Vmove name //删除EXPIRE name 10 //设置过期时间为10秒ttl name //查看过期时间EXISTS name //判断key是否存在type name //查看key数据类型Redis五大数据类型StringString类型基本命令127.0.0.1:6379&g

2022-04-04 18:35:09 1152

原创 Java面向对象

面向对象和面向过程的区别面向过程:优点:性能比面向对象高,缺点:不如面向对象易维护、易复用、易扩展面向对象:优点:容易维护、扩展、复用。有封装、继承、多态的特性可以设计出低耦合的系统缺点:性能比面向过程低面向对象的底层其实还是面向过程,把面向过程抽象成类然后封装,方便我们使用就是面向对象面向对象三大特性 封装、继承、多态封装:封装是吧一个对象的属性私有化,隐藏内部的实现细节,同时提供一些可以被外界访问属性的方法,通过封装可以使程序便于使用,提高复用性和安全性继承:以已存在的类的定义为基础

2022-03-22 20:17:30 511

原创 Java基础面经整理

java概述跨平台一次编写,到处运行,的跨平台性是由于JVM的存在,C/C++编程是面向操作系统的。需要开发者极大的关心不同操作系统之间的差异;但是Java平台通过虚拟机屏蔽了操作系统的底层细节,让开发人员不需要关心操作系统之间的差异通过中间件达到“解耦”是计算机的“艺术手法”JVM、JRE、JDK之间的关系JVMJava程序需要运行在虚拟机上,不同的平台有自己的虚拟机。所以Java语言可以实现跨平台JREJRE = JVM+Java程序所需的核心类库 主要是ja

2022-03-22 20:16:26 1456

原创 JVM-GC部分整理

JVM JRE JDK之间的关系JVM:java虚拟机 能识别.class文件,并且能够解析他的指令,最终调用操作系统上的函数,完成对应的操作JRE: Java运行时环境,JVM标准上加上实现的一大堆基础类库 就组成了JREJDK:除了包含JRE,提供了一些工具 javac(编译)jar(打包)java p(反编译)JVM的区域划分虚拟机栈:在JVM运行过程中存储当前线程运行方法所需的数据,指令,返回地址(存储java方法运行)本地方法栈:本地方法栈是和虚拟机栈非常相似的一个区域,他的服务对象是

2022-03-16 22:46:00 640

原创 HTTP和HTTPS区别

HTTP和HTTPS区别端口不同 :HTTP的URL为"http://"默认端口为80,而HTTPS的URL由"https://"默认端口为443安全性和资源的消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文传输,客户端和服务端都无法验证对方的身份。而HTTPS运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的秘钥用服务器放的整数进行了非对称加密,所以说,HTTP安全性没有HTTPS搞,但是HTTPS比HTTP

2022-03-15 21:19:43 648

原创 JUC整理(三)

阻塞队列 BlockingQueue方式抛出异常有返回值阻塞等待超时等待添加addofferputoffer(,)移除removepolltakepoll(,)判断队列首elment抛出异常 出现异常直接抛出 public static void test1(){ //初始化是写入最大容量 ArrayBlockingQueue arrayBlockingQueue = new ArrayBlock

2022-03-13 22:59:00 317

原创 TCP三次握手四次挥手

TCP三次握手四次挥手TCP通过三次握手来建立服务端与客户端的连接,通过四次挥手断开连接的那么以下来详细说说是怎么进行操作的三次握手第一次握手:发送请求 服务器接收请求后新建套接字,绑定地址信息开始进行监听状态,同时客户端绑定地址信息后调用connect(连接),发送SYN=1,并且等待服务器确认第二次握手: 服务器监听到连接请求,就会将连接放入内核等待队列中,并想客户端发送SYN和确认报文段ACK,进入SYN_RECD状态第三次握手: 客户端接收到SYN+ACK报文后想服务器确认报文段ACK

2022-03-12 22:52:29 3015

原创 TCP和UDP区别

TCP和UDP区别类型是否面向连接传输可靠性传输形式传输效率所需资源应用场景首部字节TCP面向连接可靠字节流慢多要求通信数据可靠(文件传输)20-60UDP无连接不可靠数据报文段快少要求通信速度搞8字节TCP提供面向连接的服务,在数据传送之前建立连接,数据传送结束之后要释放连接,TCP不提供广播或多播服务。TCP可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完

2022-03-11 22:40:01 3297

原创 JUC整理(二)

Callable可以有返回值可以抛出异常方法不同 为 call() 方法callable 的使用public class CallableTest implements Callable<String> { @Override public String call() throws Exception { return null; }}class Test00{ public static void main(String[] a

2022-03-08 23:13:38 118

原创 JUC整理(一)

什么是JUCjava.util .concurrent 工具包线程和进程进程 :运行起来的程序一个进程最少包含一个线程线程: java默认有几个线程 2个 main 和GCJava真的能够开启一个线程吗?是不能的 他是调用的本地的方法去开启一个线程 public synchronized void start() { /** * This method is not invoked for the main method thread o

2022-03-02 22:41:20 204

原创 Dubbo整理

Dubbo整理什么是分布式框架分布式系统是若干个独立系统的集合,但是用户使用起来像是在使用一套系统为什么要是用分布式系统整体规模太大,其中某个模块并发量较高应用架构的发展和演变单一架构将所有业务放在一台服务器上开发简单不易于扩展和维护垂直应用架构按照业务拆分根据业务需求不同来部署服务器扩展更容易前端一改就可能造成整个项目的重新部署分布式架构将业务拆分后,用某种方式实现各个业务模块的远程调用和复用解决了分布式系统中互相调用的问题要求有统一的管理调

2022-03-01 22:42:52 158

原创 多线程基础

多线程Java.Thread线程之间交替执行多线程使用方法一 继承Thread类public class TestThread extentds Thread{ private String url; private String name; public TestThread(String url,String name){ this.url = url; this.name = name; } @Override

2022-02-20 22:27:14 417

原创 计算机网络结构

计算机网络结构体系五层协议: 应用层、运输层、网络层、数据链路层、物理层由来: OSI的体系结构为7层 TCP/IP的体系结构为4层应用层:通过应用进程间的交互来完成特定网络的应用应用层对应用程序的通信提供服务应用层协议指在主机运行的程序间的通信和交互的规则 其中在应用层的协议有很多如 域名系统DNS HTTP协议域名系统DNS域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个

2022-02-18 20:50:37 412

原创 数据库——事物隔离级别

数据库——事务隔离级别事务是啥子?含义:事务由单独单元的一个或者多个sql语句组成,在这个单元中,每个mysql语句时相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条sql语句一旦执行失败或者产生错误,整个单元将会回滚,也就是所有受到影响的数据将会返回到事务开始以前的状态;如果单元中的所有sql语句均执行成功,则事务被顺利执行事务的特性(ACID)原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性: 执行事务前后,数据保持一致,

2022-02-12 20:50:59 82

原创 关于在数据库中如何存储时间这件事

我们在开发当中避免不了的就是存储时间,比如消息产生的时间,日志产生的时间等等,存储时间可以说是在任何开发中基本都会存在的,但是如何正确的存储时间呢?数据库中有存储时间的字段Datetime和Timestamp如果你还在用字符串来存储时间就赶紧醒醒吧 ,虽然使用起来简单粗暴,但是对程序的性能的影响是一个很大的开销特别是在访问量增大的时候!!字符串类型占用的空间比较大 , 而且在进行时间对比时的开销也比较大所以应该在Datetime和Timestamp中做出抉择或者根据实际条件选择最优的字段区别如下

2022-02-12 20:39:29 1924

原创 128陷阱

128陷阱

2022-01-15 13:38:16 76

原创 拦截器 Interceptor + Springboot

拦截器

2022-01-14 17:24:31 42

原创 kibana-安装+汉化

kibana的安装和汉化

2022-01-04 22:49:15 189

原创 elasticsearch安装

elasticsearch 弹性搜索结构化数据SQL等数据库扩展性不好非结构化数据图表等半结构化数据结构内容混在一起 .xml .html等ELK 华为镜像ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=Dlogstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=Dkibana: https://mirrors.h

2022-01-02 21:42:14 911

原创 Spring

ioc:控制反转理论思想概念: 指导开发人员在容器中,代码之外管理对象,给属性赋值,管理依赖ioc技术实现使用的di(依赖注入):开发人员在项目中只需要提供对象的名称,对象的创建,查找,赋值都由 容器来完成spring使用的di的技术,底层使用的是反射机制di给属性赋值1 set注入:spring调用类的set方法实现属性赋值2 构造注入: spring调用有参数构造方法spring简介spring - 春天 给软件行业带来了春天2002 , 首次推出了sp

2021-11-21 19:01:51 314

原创 Servlet规范

请求对象和响应对象生命周期在http服务器接收到浏览器发送的【http请求协议包】之后 自动为当前的【HTTP请求协议包】生成一个【请求对象】和一个【响应对象】在HTTP服务器调用doGet/doPost方法时,负责将【请求对象】和【响应对象】作为实参传递到方法,确保doGet/doPost正确执行在HTTP服务器准备推送http响应协议包之前,负责将本次请求关联的【请求对象】和【响应对象】销毁【请求对象】和【响应对象】生命周期贯穿一次请求的处理过程中【请求对象】和【响应对象】相当于用户在服务端

2021-11-21 18:59:04 614

原创 Ajax笔记

Ajax全局刷新:整个浏览器被新的数据覆盖,在网络中传输大量的数据,浏览器需要假造,渲染页面局部刷新:在浏览器的内部,发起请求,获取数据,改变页面中的部分内容 其余的页面无需加载和渲染,网络中数据传输量少,给用户的感受好ajax用来局部刷新局部刷新使用的核心对象是异步对象 (XMLHttpRequest)这个对象是存在浏览器内存中的,js语法创建和使用ajax:Asynchronous JavaScript and xmlAsynchronous:异步的意思json替换了xmlv

2021-11-21 18:54:20 457

原创 互联网通信流程

互联网通信流程互联网通信:两台计算机通过网络实现文件共享行为 ,就是互联网通信互联网通信的角色化分客户端计算机: 用于发送请求,来索要资源文件的计算机服务端计算机: 用于接收请求,并提供对应的资源文件计算机互联网通信模型C/S通信模型:C client software 客户端软件:客户端软件专门安装在客户端计算机上帮助客户端计算机向指定服务端计算机发送请求帮助客户端计算机将服务端计算机发送回来的【二进制数据】进行解析包括【文字,数字,图片,视频,命令】S ,serv

2021-11-21 18:53:38 582

原创 mysql笔记

SQLSQL属于高级语言,标准的SQL适合于所有的数据库产品SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行SQLDBMS 负责执行SQL语句 ,通过执行SQL语句来操作DB当中的数据DBMS(执行)——》SQL——》 操作DB表 table表示数据库的基本组成单元 所有的数据都是表的形式组织非常直观行: 被称为数据/记录(data)列: 被称为字段(column)每一字段属性字段名 数据类型 相关的约束SQL 语句分类DQL (数据查询语言): 查询语

2021-11-21 18:49:59 582 1

原创 Java-List数组排序的使用—Collections.sort()

Java-List数组排序的使用—Collections.sort()在编码中 经常用到对对象数组或者map等集合的排序下面就让我们来学习一下Collections.sort()的使用场景力扣692题前K个高频单词 public List<String> ass(String[] words, int k){ //分析题意 将单词出现的频率进行从高到低的排序 /** * 首先想到的是遍历字符串数组words 放进map里面从而获取各个单词的数量 然后将map进

2021-11-16 21:49:05 874 1

原创 CSP202109-1数组推导

CSP202109-1数组推导很简单的一个水题 public static void main(String[] args) { //输入 Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int summin=0; int summax=0; int min = 0; int max = 0; for(int i = 0;i<n;i++) { int x = sca

2021-11-15 14:31:58 243

原创 动态代理概述

动态代理代理代购中介等等代理的作用功能增强: 在原有的功能上增加了额外的功能,新增加的功能,叫做功能增强控制访问: 代理类不让你访问目标,例如商家不让访问厂家、实现代理方式静态代理:代理类是手工实现的,自己创建一个java类,表示代理类,同时你所需要代理的目标类是确定的实现简单容易理解代理类完成的功能:功能增强目标方法调用缺点: 当代理目标增加了 代理类会成倍增加 一旦被代理的接口修改会影响众多的实现类动态代理:在静态代理中目标类很多时候,

2021-11-15 11:47:42 384

空空如也

空空如也

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

TA关注的人

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