自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM调优

JVM调优,主要就是调整年轻代、老年代、元空间的内存空间大小及使用的垃圾回收器类型。

2025-03-27 19:03:56 855

原创 JVM--垃圾回收

JVM的垃圾回收

2025-03-15 22:22:53 851

原创 Java8的新特性

2.设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。1.非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。事实上,这并不是语言层面上的改变,更多的是编译器的技巧,底层的原理保持不变。

2025-03-14 23:05:36 882 1

原创 SQL注入攻击

SQL注入攻击

2025-03-03 19:50:12 800

原创 Redis分布式锁的实现

Redis分布式锁的实现

2025-03-02 16:22:11 829

原创 TCP传输过程中问题的检测和解决

TCP连接问题的检测

2025-03-02 10:23:32 811

原创 DNS域名解析原理及解析过程

DNS域名解析

2025-03-01 22:42:22 1002

原创 SYN Flood的攻击原理及防御

SYN Flood的攻击原理及防御

2025-03-01 21:47:10 809

原创 TCP的三握四挥

TCP的三次握手 四次挥手 相关的面试经典题

2025-03-01 18:40:53 1177

原创 MACC的实现原理详解

MACC的原理

2025-02-28 10:55:50 991

原创 SQL语句的执行过程

SQL语句的执行流程

2025-02-27 11:46:35 1023

原创 如何进行大表优化?

大表优化 雪花算法 美团的leaf分布式id生成系统

2025-02-27 09:55:16 962

原创 MySQL的锁机制和锁算法

mysql中的锁机制和锁算法

2025-02-26 21:03:23 1028

原创 MySQL的事务管理和隔离级别

mysql的事务管理 隔离级别 并发事务产生的问题

2025-02-26 21:01:35 1154

原创 MySQL的索引

MySQL的索引 联合索引 聚簇索引 非聚簇索引

2025-02-26 20:18:22 1309

原创 MySQL的存储引擎

主要介绍MySOL的存储引擎

2025-02-26 20:09:21 765

原创 布隆过滤器的原理及实现

位图和布隆过滤器的实现原理

2025-02-25 10:21:48 715

原创 LRU的原理以及实现

LRU的原理以及算法实现

2025-02-24 20:34:45 356

原创 Redis中SDS的数据结构

Redis中的SDS详解

2025-02-24 20:08:41 960

原创 Java并发编程13--ThreadLocal

ThreadLocal的set方法 清理流程

2025-02-19 17:21:48 602

原创 Java并发编程12--并发容器

并发容器详解

2025-02-19 16:18:14 942

原创 Java并发编程11--线程池

有助于避免 this 逃逸问题。this 逃逸:在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误。Executor 框架不仅包括了线程池的管理,还提供了线程工厂、队列以及拒绝策略等,Executor 框架让并发编程变得更加简单如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任务时:抛出 RejectedExecutionException来拒绝新任务的处理。:调用执行自己的线程运行任务,也就是直接在调用execute。

2025-02-18 22:15:08 1275

原创 Java并发编程10--AQS

AQS 的全称为(AbstractQueuedSynchronizer),这个类在包下面AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器。

2025-02-18 12:56:51 1013

原创 Java并发编程9--线程间的通信

类型的变量副本,每个线程对其副本的操作互不影响。首先获取对象的锁,然后调用对象的。方法,放弃锁并进入对象的等待队列。随后获取对象的锁,并调用对象的。为每个线程维护了一个独立的。

2025-02-18 10:04:39 851

原创 Java并发编程8--线程

进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而超时等待状态相当于在等待状态的基础上增加了超时限制,也就是超时时间到达时将会返回到运行状态。现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。通过调用线程的start()方法进行启动,随着run()方法的执行完毕,线程也随之终止。方法执行完毕),即便该线程在终结前被中断过,调用该线程对象的。

2025-02-17 21:58:24 371

原创 Java并发编程7--双重检查锁定

在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时,程序员可能会采用迟。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。在早期的JVM中,(甚至是无竞争的)存在巨大的性能开销。因此, 人们想出了一个聪明的技巧:双重检查锁定(人们想通过双重来降低同步的开销。假设A线程执行代码1的同时B线程执行代码2。此。

2025-02-17 21:21:57 695

原创 Java并发编程6--重排序

重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。

2025-02-17 20:33:08 196

原创 Java并发编程5--Java内存模型的基础

JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性。​​​​​面试题:什么是JMM?JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性JMM把内存分为两块,一块是私有线程的工作区域(工作内存),一块是所有线程的共享区域(主内存)

2025-02-17 19:31:33 478

原创 Java并发编程4--Java并发机制的底层实现原理

JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性。在不同的硬件和不同的操作系统下,内存的访问是有一定的差异的,这种差异会导致相同的代码在不同的硬件和不同的操作系统下有着不一样的行为,而 Java 内存模型就是解决这个差异,统一相同代码在不同硬件和不同操作系统下的差异的。所有的变量(实例变量和静态变量)都必须存储在主内存中,每个线程也会有自己的工作内存。

2025-02-13 19:59:02 925

原创 JVM的类加载器

JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而Java程序能够启动起来。加载某一个类,先委托上一级的加载器进行加载,如果上级加载器也有上级,则会继续向上委托如果该类委托上级没有被加载,子加载器尝试加载该类加载:查找和导入class文件验证:保证加载类的准确性准备:为类变量分配内存并设置类变量初始值解析:把类中的符号引用转换为直接引用初始化:对类的静态变量,静态代码块执行初始化操作使用:JVM 开始从入口方法开始执行用户的程序代码。

2025-02-12 20:58:11 1359

原创 JVM组成

Java堆是一个线程共享的区域:主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError的异常保存类信息,静态变量,常量,编译后的代码。Java Virtual machine Stacks(java 虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈,先进后出每个栈由多个栈帧(frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法方法区(Method Area)

2025-02-12 19:55:46 1282

原创 Java并发编程3--多线程程序的创建及安全性问题

这段 Java 代码主要的功能是创建 10000 个线程,每个线程会计算从 0 到 1000 的整数之和,然后将这个和累加到类的静态变量result中。最后,主线程等待 10 秒后输出result的值。

2025-02-11 21:45:42 652

原创 Java并发编程2--死锁和银行家算法

是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。称此时系统处于死锁状态或系统产生了死锁。称这些永远在互相等待的进程为死锁进程。

2025-02-11 18:46:36 1082

原创 Java并发编程1--并发的挑战+任务调度算法

综合考虑了等待时间和运行时间,当等待时间相同时,要求服务时间短的优先(SJF 算法的优点);当要求服务时间相同时,等待时间长的优先(FCFS 算法的优点)。对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题。

2025-02-11 17:00:40 1146

原创 Lambda表达式以及Steam操作

在Java中,Steam流是一种强大的数据处理工具,它允许我们对集合进行各种操作,如筛选、过滤、映射、分组等。这些操作可能是中间操作,返回一个Steam流,也可能是终端操作,返回一个结果。与传统的集合操作相比,Steam流具有一些独特的优势。首先,Steam流的操作不会影响原始集合,也不会存储数据。这意味着我们可以在不改变原始数据的情况下对数据进行处理。在传统的集合操作中,我们通常需要将数据复制到另一个集合中,这可能会导致额外的内存开销。

2025-02-11 08:21:13 840

原创 Comparable接口 VS Comparator接口

1)首先这两个接口一般都是用来实现集合内的排序,comparable还可以用于两个对象大小的比较。2)Comparable接口在java.lang包下面。里面有一个compareTo(T)接口方法。当一个类需要比较的时候,需自行实现Comparable接口的CompareTo方法。当调用集合排序方法的时候,就会调用对象的compareTo()方法来实现对象的比较。3)Comparator接口在java.util包下面。

2025-02-10 21:50:51 668

原创 Java中的值传递和引用传递

Java不管是基本类型还是引用类型,参数传递的方式只有一种:值传递而有两种表现:值传递和引用传递,是因为对象的属性不同。

2025-02-10 20:33:31 796

原创 Java值传递的典型案例

java中值传递的经典案例

2025-02-09 17:35:47 361

原创 super关键字

super主要存在子类的方法中,用于指向子类对象中的父类对象。

2025-02-09 17:24:46 357

原创 final关键字

final修饰的全局变量必须赋值,因为final只能赋值一次定义的时候可以不赋值,使用必须赋值//全局变量,定义时必须赋初始值//全局变量是由默认值的。//如果是引用数据类型的话,null//整形---------》0//浮点型----------》0.0//布尔型----------》false//字符型------------》 (什么都不写,代表空)//定义的时候可以不赋值//使用的话,必须赋值(加不加final无影响)System.out.println("这是A");

2025-02-09 17:17:38 206

空空如也

空空如也

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

TA关注的人

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