自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习笔记。

学习笔记。

  • 博客(221)
  • 收藏
  • 关注

原创 HashMap知识点总结

JDK7之前HashMap源码分析1.与HashMap相关的数据结构数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)线性链表:对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂

2022-03-28 08:59:14 3173 1

原创 JVM总结

1.JVM运行时数据区线程私有和线程共享共分为5大区域1.线程私有内存:程序计数器、虚拟机栈、本地方法栈线程私有:指的是这三块区域生命周期与线程的生命周期相同,随着线程的创建而创建,线程的销毁而销毁,不同线程间的这三块内存彼此隔离。1. 程序计数器可以当做是当前线程正在执行的字节码行号指示器,这是唯一一块不会产生类OOM(OutOfMemoryError) 异常的区域。如果当前线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址。可以理解为:是用来记录线程执行到

2022-03-14 15:15:38 719

原创 Redis知识点总结

Redis介绍Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。Redis支持的数据结构Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs、带

2022-01-20 17:55:42 1240

原创 Java多线程知识点总结

一、进程与线程程序:程序是指令和数据的有序集合,本身没有任何运行的含义,是一个静态概念进程:是执行程序的一次执行过程,是一个动态概念。是系统资源分配的单位。(程序执行起来就变成了进程)线程:通常一个进程中可以包含多个线程。线程是CPU调度和执行的单位。二、线程如何创建有三种创建模式1.继承Thread类本质上Thread类实现了Runnable接口。使用调用run方法与调用start方法的不同,run方法是被当做普通方法,按照程序执行顺序在主线程(main)中正常执行,但是start

2021-05-28 15:14:08 506 1

原创 Java优雅判空——Optional

empty返回一个空的Optional对象。of遇到空会报错,但是使用Optional的目的就是防止空指针,所以一般使用ofNullable较多。

2023-11-06 20:58:45 326

原创 idea无maven选项

无法被识别为Maven项目,pom是橙色则当前项目未被识别为Maven项目。选中当前项目,点击help中的find action。搜索add as maven project。

2023-04-07 12:22:40 513 1

原创 回溯——排列组合

需要startindexstartindex为i例:lc39[组合总和] 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:示例 1: 输入:candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3]示例 2: 输入:candidates = [2,3,5], target = 8, 所求解集为:

2023-01-21 11:56:58 1492

转载 SQl语句——Join

join等同于inner join

2022-12-06 12:29:51 124

原创 01背包问题

定义dp数组:dp[j]表示背包容量为j时,能获得的最大价值

2022-11-17 16:37:49 148

原创 OKHTTP3

同步:```javaOkHttpClient client = new OkHttpClient();String run(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { re

2022-09-05 14:33:08 341

原创 java延迟一段时间执行任务

public class Main { public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("当前线程:" + Thread.currentThread().getName() + " 当前时间"

2022-08-18 21:52:40 1949

原创 网络-存档

Quic 使用可插拔的拥塞控制,相较于 TCP,它能提供更丰富的拥塞控制信息。比如对于每一个包,不管是原始包还是重传包,都带有一个新的序列号(seq),这使得 Quic 能够区分 ACK 是重传包还是原始包,从而避免了 TCP 重传模糊的问题。Quic 同时还带有收到数据包与发出 ACK 之间的时延信息。这些信息能够帮助更精确的计算 rtt。QUIC 的传输控制不再依赖内核的拥塞控制算法,而是实现在应用层上,这意味着我们根据不同的业务场景,实现和配置不同的拥塞控制算法以及参数。无队头阻塞。...

2022-08-04 10:42:05 292

转载 group by

https://blog.csdn.net/u014717572/article/details/80687042?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165468855816781483718730%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165468855816781483718730&biz_id=0&utm_mediu

2022-06-08 19:46:45 72

转载 3种实现分布式锁的方法

https://blog.csdn.net/wuzhiwei549/article/details/80692278?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165181781516781435473710%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165181781516781435473710&biz_id=0&a

2022-05-20 10:48:14 70

原创 try/finally的return问题

如果try和finally里都有return,则以finally中的为主。如果try里有return,finally里没有,但是finally能影响到try的返回结果,那么就用一个临时的值存储return结果避免受到finally里操作的影响。

2022-05-16 11:00:26 232

转载 RabbitMQ

RabbitMQ详解SpringBoot整合RabbitMqRabbit 5大模式

2022-05-05 21:06:01 60

转载 MySQL索引

索引是对数据库表中一列或多列的值进行排序的一种结构。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。1. 索引的优缺点索引可以大大提高MySQL的检索速度,为什么不对表中的每一个列创建一个索引呢?1. 优点索引大大减小了服务器需要扫描的数据量,从而大大加快数据的检索速度,这也是创建索引的最主要的原因。索引可以帮助服务器避免排序和创建临时表

2022-04-18 00:38:16 474

原创 Java volatile关键字总结

volatile变量的特殊规则:关键字volatile可以说是JVM提供的最轻量级的同步机制1. 保证此变量对所有线程的可见性,这里的"可见性"是指 : 当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。普通变量做不到这一点,普通变量的值在线程间传递均需要通过主内存来完成。例如:线 程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成之后再从主内存进行读取操作,新值才会对线程B可见。注:由于volatile关键字只保证可见性,在不符合以下两条规则的运算场景中

2022-03-15 15:25:17 580 2

转载 新建的web项目为什么默认访问index.jsp

tomcat自带的web.xml配置了welcome-file-list节点,该节点的子节点即为默认访问页面(welcome-file),welcome-file配置的顺序会影响到实际的默认访问,我们可以在自己的web.xml文件中配置welcome-file-list节点以覆盖tomcat自带的,tomcat自带的web.xml中配置的welcome-file-list节点如下<welcome-file-list> <welcome-file>index.html<

2022-03-02 21:16:54 854

转载 RPC/Thrift总结

https://www.bilibili.com/video/BV1eF411E7SR?p=161.Thrift介绍1.1Thrift定义Thrift是一个轻量级、跨语言的RPC框架,主要用于各个服务之间的RPC通信。1.2Thrift架构Thrift技术栈分层从下向上分别为:传输层(Transport Layer)、协议层(Protocol Layer)、处理层(Processor Layer)和服务层(Server Layer)。传输层(Transport Layer):传输层负责直接从

2022-02-24 12:25:36 553

原创 IDEA 快捷键

Ctrl + Alt + B 查看实现

2022-02-23 19:23:58 69

原创 springJUnit4ClassRunner与JUnit4区别

一句话:pringJUnit4ClassRunner可以使用Spring中的注解,获取到在Spring中注册的Bean对象等功能,其他没有区别。参考:@RunWith和 SpringJUnit4ClassRunner ---->junit4和Spring一起使用

2022-02-16 15:46:40 331

转载 Lucene介绍与使用

https://blog.csdn.net/weixin_42633131/article/details/82873731?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164480992916781683968937%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164480992916781683968937

2022-02-14 14:59:03 61

转载 MySQL

数据库架构说说MySQL 的基础架构图,给面试官讲一下 MySQL 的逻辑架构,有白板可以把下面的图画一下Mysql逻辑架构图主要分三层:(1)第一层负责连接处理,授权认证,安全等等(2)第二层负责编译并优化SQL(3)第三层是存储引擎。一条SQL查询语句在MySQL中如何执行的?先检查该语句是否有权限,校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据。如果没有权限,直接返回错误信息,如

2022-02-09 14:41:08 446

原创 RateLimiter实例

Guava是Java领域优秀的开源项目,它包含了Google在Java项目中使用一些核心库,提供了令牌桶算法实现平滑突发限流使用 RateLimiter的静态方法创建一个限流器,设置每秒放置的令牌数为5个。返回的RateLimiter对象可以保证1秒内不会给超过5个令牌,并且以固定速率进行放置,达到平滑输出的效果。public static void testSmoothBursty2() throws InterruptedException { //1s创建2个令牌

2022-02-08 17:59:45 418

转载 【限流】令牌桶与漏桶

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可

2022-02-07 17:11:57 396

原创 Redis问题总结

00.什么是redis?redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。00.Reids的特点性能极高 - Redis 读速度 110000次/s,写的速度是 81000次/s。丰富的数据类型 - Redis 支持的类型 String, Hash 、List 、Set 及 Ordered Set 数据类型操作。原子性 - Redis

2022-01-20 19:14:18 302

原创 网络全部总结

1. 说说HTTP常用的状态码及其含义?不管是不是面试需要,我们都要知道,日常开发中的这几个状态码的含义哈:2. HTTP 常用的请求方式,区别和用途?3. 请简单说一下你了解的端口及对应的服务?4. 说下计算机网络体系结构思路: 这道题主要考察候选人,计算机网络体系结构这个基础知识点。计算机网路体系结构呢,有三层:OSI七层模型、TCP/IP四层模型、五层体系结构。大家可以记住这个图,如下4.1 ISO七层模型ISO七层模型是国际标准化组织(International Organiz

2022-01-20 15:23:15 386

原创 MySQL事务的特性及实现原理

原子性:事务中的SQL语句要么全部执行成功要么全部失败,不会部分成功部分失败。实现原理:主要是使用了undolog来实现原子性,undolog记录了事务的执行过程,当事务未能成功执行或是回滚时,根据undolog中的记录,反向执行SQL。undolog与redolog的区别:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。2.undo用来回滚行记录到某个版本。undo l

2022-01-20 14:40:22 457

转载 URL编码 utf-8 gb2312的区别

url编码借助了两种编码方式utf-8或gb2312把中文转换成字符,再在此基础上结合%完成了url的编码。具体可参考以下链接。https://www.cnblogs.com/ylcms/p/7273607.html

2022-01-18 21:40:23 319

原创 异或符号交换元素

不要用异或符号交换元素!《linux多线程服务端编程》501页分析了,用异或运算交换变量,是错误的行为。并不能加快运算,也不能节省内存。同时如果两个需要交换的元素一样,就会把两个元素都变成0。...

2022-01-07 17:07:01 177

转载 Java int取值范围原理

一直知道java中int范围是-2147483648到2147483647,但是不知道为什么今天研究了一下:首先回忆了一下计算机中原码反码补码正数的原码反码补码相等;负数而反码等于原码符号位不变,其余各位取反,补码等于反码加1计算机中32位int类型变量的范围,其中int类型是带符号整数。正数在计算机中表示为原码,最高位为符号位:正整数1的原码为0000 0000 0000 0000 0000 0000 0000 0001正整数最大原码为0111 1111 1111 1111 1111

2022-01-06 20:38:46 798

转载 CNAME与A记录

https://blog.csdn.net/DD_orz/article/details/100034049

2022-01-06 11:25:31 85

转载 接口 对象=new 实现类 父类 对象=new 实现类

接口 对象=new 实现类父类 对象=new 实现类好处:定义一个animal抽象类, 里面有两个方法。接下里定义两个类(cat和dog)去继承animal,cat和dog分别重写了animal中的方法。我们在调用dog里面的方法之后,想修改为调用cat的方法。只需要将Animal animal=new Dog()改成Animal animal=new Catl(), 只改变了一个对象。接着继续调用animal.sing(),animal.run()。实际的开发过程中要维护大量的代码量,如果要换

2021-12-17 17:41:11 172

原创 职业晋升答辩,面试技巧

前言:阅读提示晋升答辩,是一个关于技术的非技术话题,本文将按照答辩活动的开展顺序,对答辩前,答辩中,答辩后的各环节展开逐层剖析,以期改善大家的阅读体验,并尽力提供一个贴近实操的行动指南(个人建议)。主要包括:需求理解(是什么)、素材的收集(有什么)、ppt设计(讲什么)、现场把控(怎么讲)、心态调整(获得什么)、其他绝招、评语赏析(评委怎么看)、案例分析(知己知彼)等8个部分。其中ppt设计部分,则按照ppt在实际中的一般组织顺序进行逐页剖析,以便尽量能直接翻译为答辩所需材料。一 需求理解:答辩是什.

2021-11-08 15:01:35 3632

转载 nodejs和npm的关系

node.js是javascript的一种运行环境,是对Google V8引擎进行的封装。是一个服务器端的javascript的解释器。包含关系,nodejs中含有npm,比如说你安装好nodejs,你打开cmd输入npm -v会发现npm的版本号,说明npm已经安装好。引用大神的总结:其实npm是nodejs的包管理器(package manager)。我们在Node.js上开发时,会用到很多别人已经写好的javascript代码,如果每当我们需要别人的代码时,都根据名字搜索一下,下载源码,解压,再

2021-09-13 11:31:46 281

原创 正则表达式^ + $ () {} [] 作用

. - 除换行符以外的所有字符。^ - 字符串开头。$ - 字符串结尾。? - 0 次或 1 次匹配。* - 匹配 0 次或多次。+ - 匹配 1 次或多次。{}一般是用来匹配的长度。{n} - 匹配 n次。{n,} - 匹配 n次以上。{m,n} - 最少 m 次,最多 n 次匹配。() - 为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串.可以理解为数学计算中的()[] 是定义匹配的字符范围。比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符和数字。以哈

2021-08-30 16:12:30 1548

转载 23种设计模式——通俗版

在网络上流畅很广的一篇旧文,暂时没找到原作者,目前所看到的最早转载时间是 2005 年 2 月 28 日。作者用轻松的语言,形象解释了 23 种模式,有很好的启发作用。创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺

2021-07-19 15:36:44 145

原创 SpringMVC的参数绑定,也就是如何把前台传递过来的参数接收到并且封装起来给程序使用。

SpringMVC的参数绑定,也就是如何把前台传递过来的参数接收到并且封装起来给程序使用。请求参数的绑定说明绑定机制表单提交的数据都是k=v格式的 username=haha&password=123SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的要求:提交表单的name和参数的名称是相同的支持的数据类型基本数据类型和字符串类型实体类型(JavaBean)集合数据类型(List、map集合等)基本数据类型和字

2021-07-13 10:34:15 241

原创 设计模式学习总结

代理模式静态代理模式/** * @author fengweibo * @version 1.0 * @date 2021/5/19 19:34 */public interface Wedding { void happy();}/** * @author fengweibo * @version 1.0 * @date 2021/5/19 19:32 *///真实对象和代理对象都需要实现一个共同的接口,代理对象可以对真实对象做一个很大的增强public c.

2021-06-11 15:25:27 138

MK笔记.zip

MK笔记.zip

2023-10-12

空空如也

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

TA关注的人

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