java
文章平均质量分 67
油光发亮的小猛
这个作者很懒,什么都没留下…
展开
-
Redis缓存穿透+解决(布隆算法)
一 Redis缓存穿透缓存穿透是怎么发生的?查询的数据在缓存数据库中没有命中,从而需要到数据库中寻找。如果缓存穿透只是偶尔发生, 那么无伤大雅,但是如果有人恶意攻击呢?假设这样一种场景:根据订单编号查询,系统的编号规则是从1开始,但是黑客故意输入-1等不可能命中的数据呢?那么必然会发生缓存穿透,如果发生大量诸如此类的恶意穿透,就会给数据库造成极大的压力,甚至崩溃。二 解决方法2.1 增加无意义热点数据即使查到的值为空,也将数据对保存进热点数据,但是这么做不仅会造成缓存中无意义数据增加,也不能从根原创 2022-04-19 12:16:50 · 833 阅读 · 0 评论 -
分布式缓存的切片模式-hash一致性切片
文章目录一 为什么使用缓存二 为什么使用分布式三 使用什么模式四 常规切片模式的弊端五 更加犀利的切片模式-hash一致性切片六 不完美的数据倾斜以及解决方案6.1 数据倾斜6.2 解决办法一 为什么使用缓存当前,我们通常使用Redis缓存,因为它有更多的数据类型,并且支持事物。之所以要使用缓存,是为了缓解查询数据库时的IO压力,我们将经常查的热点数据放到缓存里(内存中),当然比存在磁盘上的mysql数据库快了。二 为什么使用分布式那为什么要使用分布式架构呢?第一就是解决一台redis服务器容量不原创 2022-04-18 20:31:57 · 632 阅读 · 0 评论 -
java泛型
文章目录一 泛型&作用1.1 泛型是什么1.2 泛型的作用二 java泛型原理&泛型擦除2.1 泛型原理2.2 泛型擦除2.3 实例三 泛型问题3.1 重载3.2 catch3.3 泛型类包含静态变量一 泛型&作用1.1 泛型是什么java5中引入泛型,允许在定义类或者接口时使用类型参数1.2 泛型的作用拿List来说,如果没有泛型,我们想创建一种Integer链表类型,需要创建一个List类型,如果需要String链表呢?再建一个List类型,可以看出这样建立的方式非常繁原创 2022-04-05 19:38:14 · 195 阅读 · 0 评论 -
JAVA中的反射机制以及在Spring中的应用
文章目录一 反射机制二 反射机制的使用-Class类三 为什么要使用反射3.1 静态编译3.2 动态编译3.3 反射的好处3.4 反射的缺点四 Spring IOC中的体现4.1 Spring IOC的实现方式4.2 代码实现纯工厂模式4.3 反射+工厂模式4.4 配置文件+反射+工厂模式=Spring IOC一 反射机制反射机制,就是指程序可以获得自己的属性和方法。java中,只要知道类的名字,就可以通过反射机制获取类的所有属性以及方法二 反射机制的使用-Class类java中的反射机制,主要靠C原创 2022-04-03 21:38:50 · 4334 阅读 · 1 评论 -
IO五种模型详解
文章目录一 IO流-输入输出流1.1 IO是什么1.2 形式一 IO流-输入输出流1.1 IO是什么IO就是输入和输出的简称,从计算机组织架构理解,IO就是计算机核心(cpu和内存)与磁盘交互的过程。从磁盘读取数据到内存和把内存数据写回磁盘都是IO操作。应用程序的IO就是指将进程内部数据输出到外部,或将外部数据输入到进程内部1.2 形式字节流:操作byte类型数据,主要操作类是OutputStream、InputStream子类,不需要缓冲区,直接对文件进行操作字符流:操作char类型数据,主原创 2022-04-02 21:54:19 · 1651 阅读 · 0 评论 -
JAVA中常量池、运行时常量池和串池的区别
文章目录一 常量池的作用1.1 字面量1.2 符号引用二 运行时常量池三 字符串常量池一 常量池的作用每一个class文件都有一个常量池,常量池保存着class的常量信息:字面量和符号引用。通俗来说,常量池就是class文件中的资源仓库,保存了文件运行时需要的常量信息,这些常量都是开发者定义出来的。我们知道,每一个class文件都是javac编译来的,在编译过程中,java并没有保存方法、字段的内存布局,在运行时必须加载解析这些常量信息才能够将其翻译到具体的内存地址加以使用。1.1 字面量通俗的讲原创 2022-03-31 18:51:33 · 1667 阅读 · 0 评论 -
Integer的缓存机制
文章目录一 现象二 Integer的缓存机制2.1 自动装箱等效于valueOf2.2 valueOf2.3 IntegerCache三 为什么要有缓存机制3.1 原因3.2 其他包装对象的缓存一 现象在引入Integer的缓存机制前,可以先判断一下以下几种情况 # 一:自动装箱 Integer s1 = 2; Integer s2 = 2; System.out.println(s1 == s2); # 答案为true原创 2022-03-30 22:15:57 · 2710 阅读 · 4 评论 -
JAVA面向对象的五大基本原则
文章目录原则一:单一职责原则原则二:开放封闭原则原则三:LisKov替换原则原则四:依赖倒置原则原则五:接口隔离原则了解面向对象的思想时,之前仅仅了解了面向对象的三大特性,最近才发现原来面向对象在编程时还有五道金科玉律,这五大基本原则不必一定要遵守,但如《OOD启示录》中所说的:“你并不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看做警铃,若违背了其中的一条,那么警铃就会响起。”原则一:单一职责原则简单来说,我们所创建的每一个类的职责越单一,越专注最好,最好只做一件事。是面向对原创 2022-03-30 16:30:33 · 2259 阅读 · 0 评论 -
进程间的通信方式
文章目录一 进程通信概念二 进程间通信方式2.1 管道/匿名管道管道的实质局限2.2 有名管道(FIFO)2.3 信号来源2.4 消息队列特点2.5 共享内存2.6 信号量互斥同步信号量的实现2.7 Socket套接字套接字三个参数连接过程(类比于tcp三次握手)一 进程通信概念进程间为什么需要通信?计算机给进程在内存中分配的位置是不一样的,正是因为这种隔离,不像线程那样共享资源,因此需要通信。但是进程之间互相并不知道其他进程的位置,所以进程之间交换数据必须通过内核,在内核中开辟一块缓冲区,进程一把数据原创 2022-03-29 14:50:57 · 4111 阅读 · 0 评论 -
TCP如何保证传输可靠
文章目录一 ARQ(Automatic Repeat-reQuest )1.1 停止等待ARQ1.2 连续ARQ二 流量控制(滑动窗口RWND)场景目的手段三 拥塞控制(拥塞窗口CWND)场景和目的手段拥塞控制算法过程tcp是一种面向连接,可靠的传输控制协议,那么tcp是如何保证传输可靠的呢?本文只细数其三个策略一 ARQ(Automatic Repeat-reQuest )ARQ,自动重传请求。是传输层和数据链路层用来纠错的协议之一。顾名思义,会在传输出错时自动重传。ARQ使用确认和超时两个两个机制原创 2022-03-28 19:41:35 · 2265 阅读 · 0 评论 -
在浏览器中访问网页的全过程
文章目录一 表象1.1 输入url -> 跳转页面1.2 状态码二 实际过程2.1 输入url - > 解析url(应用层)2.2 建立连接(传输控制层)2.3 发送连接数据(网络层)2.4 请求在网络中游走(数据链路层)2.5 服务器处理请求2.6 服务器发回响应2.7 显示网页(应用层)三 访问过程中用到的协议或手段解析3.1 DNS(域名解析系统)3.2 TCP(传输控制协议)一 表象1.1 输入url -> 跳转页面我们浏览页面,通常分成两步:输入url:填入网址跳转页原创 2022-03-28 11:48:57 · 6918 阅读 · 0 评论 -
如何保证Redis缓存和数据库双写一致性
文章目录一 缓存和数据库双写有什么问题1.1 设置过期时间的策略一 缓存和数据库双写有什么问题想要知道如何解决问题,必须先知道问题是什么?那缓存和数据库双写会有什么问题?1.1 设置过期时间的策略一般来说,我们会选择设置过期时间的策略来保证最终一致性...原创 2022-03-27 14:16:23 · 1358 阅读 · 0 评论 -
Redis设置过期以及内存淘汰策略
文章目录一 Redis设置过期时间二 Redis过期回收机制定期删除惰性删除为什么不直接删除所有过期值三 Redis过期回收机制的问题四 解决Redis过期回收机制的问题(内存淘汰)内存淘汰策略volatile-lruvolatile-ttlvolatile-randomallkey-lruallkey-randomno-evictionvolatile-lfuallkey-lfu一 Redis设置过期时间Redis有一个很实用的功能,可以为数据库的值设置过期时间。这在很多场景下都有用,例如一定时限内有原创 2022-03-26 22:43:46 · 703 阅读 · 0 评论 -
Redis的线程模型和常用数据结构
文章目录一 Redis是个啥?二 为什么要用Redis?高性能高并发三 线程模型四 常用数据结构StringListSetMap一 Redis是个啥?要知道Redis的线程模型,首先要知道Redis是什么?其实很简单,Redis就是数据库。那Redis和MySQL有什么不一样呢?Redis是存在内存上的,MySQL是存在磁盘上的,因此Redis的读写速度很快。Redis常被用做缓存,为了适应不同的业务场景,还提供了多种数据类型:String,Set,ZSet,List,Map。除此之外,Redi原创 2022-03-26 21:17:20 · 1793 阅读 · 0 评论 -
SQL语句在MYSQL中如何执行
原创 2022-03-26 13:30:11 · 1818 阅读 · 0 评论 -
线程死锁的条件和解决死锁
原创 2022-03-26 10:53:46 · 408 阅读 · 0 评论 -
MYSQL事务和INNODB下的锁机制
文章目录一 什么是事务二 事务四大特性原子性一致性隔离性持久性三 事务四大隔离级别Read Uncommited(读未提交)Read Commited(读已提交)Repetable-Read(可重复读)SERIALIZABLE(可串行化)四 为什么要有事务隔离级别五 INNODB默认隔离级别六 INNODB锁机制record lockgap locknext-key lock一 什么是事务想要真正了解事务,首先要知道什么是事务。常见例子就是转账,A转账给B一共2000元,这个操作其实有两步,第一步要从A原创 2022-03-25 20:26:03 · 1430 阅读 · 0 评论 -
JAVA线程池归纳
文章目录线程池常见参数优势java常见线程池类型1 newCachedThreadPool2 newFixedThreadPool3 newSingleThreadPool4 newScheduledThreadPool选用什么线程池拒绝策略线程池常见参数当前线程数:线程池中实际工作者线程的数量核心线程池大小:核心线程数量最大线程池大小: 最大线程数量优势线程池已经创建好一部分线程待使用,因此节省了一部分线程创建和销毁的开销可以重复利用已经创建好的线程,节约了创建的时间更好的管理线程原创 2022-03-17 22:06:10 · 235 阅读 · 0 评论 -
排序算法的稳定性
文章目录稳定性体现稳定性应用各个算法的稳定性稳定性体现最初听到稳定性这个概念时,我认为稳定性是体现在时间复杂度上,例如快排的时间复杂度并不稳定,最差情况会退化到O(n^2),但实际定义并不是如此其实排序算法的稳定性体现在其相同键值的两个对象在排序后相对位置并不改变稳定性应用比如氪金的场景下,假设我们以充值费用的高低来决定玩家在游戏中享受进入副本的先后,当充值费用相同时,我们以需要以充值的先后来决定玩家进入副本的顺序,如果排序不稳定,则无法保证先充值的玩家先进入各个算法的稳定性冒泡:稳原创 2022-03-17 19:18:28 · 243 阅读 · 0 评论 -
JAVA常见知识点整理
目录一、JAVA==JAVA常数默认类型==== 访问权限控制符====成员变量、类变量、局部变量的区别====重载/重写====final====接口====线程====StringBuilder&StringBuffer====Object类中含有的常见方法====HashMap====JSP的9个内置对象====常见注解功能====JAVA并发编程的三个概念==二、算法三、数据结构四、计算机网络五、SPRING六、设计模式==单例模式==一、JAVAJAVA常数默认类型整数型默认为in原创 2022-02-25 22:48:58 · 1058 阅读 · 1 评论 -
Character和char Integer和int区别
文章目录新建栈出错区别新建栈出错学习java语言不久,在刷leecode时新建一个Char栈屡屡报错,代码如下:Stack<char> stack=new Stack<>();错误有点傻,因为新建Stack,栈中应该放的是类而不是基本数据类型,这和他的实现有关,因此去重刷了一遍Character和char Integer和int区别。正确代码如下:Stack<Character> stack=new Stack<>();区别Charact原创 2021-12-23 18:33:58 · 560 阅读 · 0 评论 -
JVM,JRE,JDK三者区别
文章目录jvm(java Virtual Machine)JRE(javaRuntimeEnvironment)JDK(java SE development kit)jvm(java Virtual Machine)java虚拟机是java能够实现跨平台运行的核心,功能是解释java字节码文件,不同平台的JVM向编译器提供相同的接口,编译器只需将java文件编译成与平台无关的字节码文件,可以让JVM识别。JRE(javaRuntimeEnvironment)java运行时环境,用于解释执行java原创 2021-12-19 17:07:49 · 577 阅读 · 0 评论 -
java学习栈笔记
文章目录栈的一个实际需求栈的介绍数组模拟栈的思路分析实现计算器思路实现栈的一个实际需求输入一个表达式计算:7*7*2-5+1-5+3-3计算机底层式如何运算得到结果的?不是简单的把算是列出运算,计算机是如何理解这个算式的(对计算机而言,它接受到的就是一个字符串),用栈栈的介绍stack是一个先入后出的有序列表栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一段,称为栈顶,另一端为固定的一端,称为栈底(Bottom)。根原创 2021-12-02 19:42:07 · 62 阅读 · 0 评论 -
java基本数据类型为何不可以用==与null判断
文章目录基本数据类型对象或引用类型基本数据类型基本数据类型就是数据。对象或引用类型对象或引用类型其实只是指向数据的指针,在存储变量的内存位置,所拥有的只是对数据实际位置的引用。...原创 2021-12-01 18:56:13 · 594 阅读 · 0 评论 -
JVM内存结构
文章目录内存结构1、程序计数器1.1、定义2、虚拟机栈2.1、定义问题辨析2.2、栈内存溢出2.3、线程诊断3、本地方法栈4、堆4.1、定义4.2、堆内存溢出4.3、堆内存诊断5、方法区5.1、定义5.2、方法区内存溢出5.3、常量池5.4、StringTable特性5.5、StringTable性能调优内存结构1、程序计数器1.1、定义Program Counter Register程序计数器(寄存器)作用:记住下一条jvm指令的执行地址物理上是通过寄存器来实现的特点:线程私原创 2021-11-30 20:27:42 · 263 阅读 · 0 评论 -
JVM简介
文章目录引言1、什么是JVM?定义:好处:比较:2、学习JVM有什么用引言1、什么是JVM?定义:Java virtual Machine-java程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行自动内存管理机制,垃圾回收功能数字下标越界检查多态(同一个行为具有不同表现形式或形态的能力,同一个接口不同的实例进行不同的操作)比较:jvm jre jdk比较2、学习JVM有什么用面试有效理解底层的实现原理中高级程序员的必备技能...原创 2021-11-30 13:57:20 · 334 阅读 · 0 评论 -
JSON数据和JAVA对象转换
文章目录JSON数据和JAVA对象转换JSON数据和JAVA对象转换Fastjson是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言中最快的JSON库,可以实现JAVA对象和json字符串的相互转换使用:导入坐标Java对象转JSON对象JSON字符串转Java对象<dependency> <groupId>com.alibaba</groupId> <art原创 2021-11-23 12:23:22 · 112 阅读 · 0 评论 -
HTML基础标签
文章目录一、基础标签一、基础标签标签描述<h1>-<h6>标题标签<font>定义文本字体,颜色,尺寸<b>定义粗体文本<i>定义斜体文本<u>定义文本下划线<center>定义文本居中<p>定义段落<br>定义折行<hr>定义水平线...原创 2021-11-22 19:44:40 · 163 阅读 · 0 评论 -
JAVA会话跟踪技术笔记
文章目录Cookie基本使用Cookie原理Cookie使用细节SessionSession原理Session使用细节小结Cookie基本使用Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问发送Cookie到客户端,使用response对象response.addCookie(cookie)获取客户端携带的所有Cookie,使用request对象Cookie[] cookies=request.getCookies();遍历数组,获取每一个Cookie原创 2021-11-21 22:38:49 · 377 阅读 · 0 评论 -
JSP学习笔记
文章目录JSP介绍JSP快速入门JSP原理JSP脚本JSP缺点EL表达式JSTL标签MVC模式和三层架构案例JSP介绍概念:Java Server Pages,Java服务端页面一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义java代码的动态内容JSP=HTML+JavaJSP快速入门导入JSP坐标<dependency> <groupId>javax.servlet.jsp</groupId>原创 2021-11-21 17:20:11 · 341 阅读 · 0 评论 -
Idea+mybatis+Servlet+mysql实现页面登录和注册
文章目录登录html登录servlet注册html注册servletpojo类mapper和mapperxmlpom.xmlmybatis.xml登录html<form action="/tomcat-demo2/loginDemo" method="get"> <div class="inputBox"> <input type="text" name="name" placehold原创 2021-11-20 20:59:40 · 1883 阅读 · 0 评论 -
Servlet学习笔记
文章目录一、Servlet简介&快速入门二、Servlet执行流程&生命周期1、Servlet执行流程2、Servlet生命周期3、urlPattern配置4、Request继承体系5、Request获取请求数据请求行请求头请求体通用方式获取请求参数中文乱码解决Request请求转发6、Response响应数据格式Response完成重定向路径问题Response响应字符数据Response响应字节数据一、Servlet简介&快速入门Servlet是Java提供的一种动态web原创 2021-11-20 17:57:08 · 718 阅读 · 0 评论 -
Tomcat-IDEA集成本地Tomcat
文章目录集成本地tomcat使用tomcat插件集成本地tomcat点击 Edit Configurations...点击+号选择tomcat填入下载好的tomcat路径在deployment中加入需要tomcat的项目使用tomcat插件pom.xml中配置插件 <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</grou原创 2021-11-19 15:56:34 · 407 阅读 · 0 评论 -
JDBC学习笔记
文章目录一、JDBC编写步骤(牢记)1、 注册驱动2、获取数据库连接3、获取数据库操作对象4、执行操作语句5、处理查询结果集6、释放资源二、连接数据库的信息统一写到配置文件1、创建配置文件2、获取配置文件信息三、实现一个登录功能一、JDBC编写步骤(牢记)1、 注册驱动通知java我们连接的是哪个品牌的数据库,本文是在idea中使用mysql数据库第一种:DriverManager.registerDriver(new com.mysql.jdbc.Driver());第二种:Class.for原创 2021-11-12 19:47:29 · 1123 阅读 · 1 评论 -
JAVA排序算法笔记
文章目录一、时间复杂度(判别排序算法优劣的尺度)1、时间频度介绍和特点2、时间复杂度计算3、常见的时间复杂度1)、O(1)2)、O(logn)3)、O(n)4、平均时间复杂度二、冒泡排序1、冒泡算法实现2、冒泡算法优化一、时间复杂度(判别排序算法优劣的尺度)1、时间频度介绍和特点时间频度:算法的时间复杂度与代码中语句执行次数成正比,例如计算1-100的和,代码:int total=0;int end=100;for(int i =1;i<=end;i++){ total+=i; }原创 2021-11-12 22:26:22 · 539 阅读 · 0 评论 -
JAVAWeb从入门到企业实战笔记
文章目录一、JAVAWeb介绍二、数据库数据库相关概念1、数据库(DB database)2、数据库操作系统(DBMS database manager system)3、SQL(structed query langugae)MYSQL安装MYSQL数据模型SQL1、SQL简介2、SQL通用语法3、SQL分类4、DDL5、DML6、DQL三、JDBC四、Maven1、Maven概述2、Maven安装配置安装步骤3、IDEA配置Maven一、JAVAWeb介绍Web:全球广域网,可通过浏览器访问的网站原创 2021-11-15 00:04:39 · 974 阅读 · 0 评论