- 博客(53)
- 收藏
- 关注
原创 布隆过滤器
布隆过滤器是一种空间效率极高的概率型数据结构,通过位数组和多个哈希函数实现元素存在性查询。其核心原理是:插入元素时用哈希函数映射到位数组置1,查询时若所有对应位均为1则可能存在(可能误判),若有0则一定不存在。优势包括O(1)时间复杂度、不存储元素本身和节省空间,但存在误判率和无法删除元素的缺陷(删除会导致其他元素误判)。典型应用可通过Google Guava库实现,需预设容量和误判率参数。布隆过滤器适用于容忍假阳性但对空间和查询效率要求高的场景。
2025-07-17 20:16:34
970
原创 Redis
Redis是一款高性能的键值对内存数据库,主要用于缓存热点数据。相比MySQL等关系型数据库,Redis通过内存存储和单线程执行命令(Redis 6.0后引入多线程处理连接)确保了高性能。它支持多种数据结构(如字符串、列表、集合等),并提供持久化功能(RDB快照和AOF日志)防止数据丢失。Redis还支持事务(不保证原子性回滚)和分布式锁等特性。常见问题包括缓存穿透(解决方案:布隆过滤器)、缓存击穿(加锁或延长热点数据过期时间)和缓存雪崩(避免大量key同时过期)。
2025-07-17 19:54:53
886
原创 MySQL
索引是帮助mysql高效获取数据的排好序的快速查找的数据结构在向数据库中插入数据时,mysql自动会为主键创建一个索引树,通过主键查询时,先在主键索引树上查询,可以提高查询效率,找到主键后,就可以快速定位到数据.
2025-07-14 20:22:32
540
原创 Java进阶
摘要:设计模式是解决特定问题的经验总结,包括23种标准模式。学习设计模式能提高代码复用性、扩展性和可维护性。UML建模语言用于软件设计阶段的类关系分析。面向对象特征包括封装、继承和多态。7大设计原则(如开闭原则、单一职责)指导高质量程序设计。单例模式确保类只有一个实例,分为饿汉式和懒汉式实现。工厂模式(简单工厂、工厂方法、抽象工厂)解决对象创建问题,其中工厂方法遵循开闭原则,抽象工厂支持生产产品族。这些模式是构建可维护软件系统的重要基础。
2025-07-13 20:06:08
960
原创 并发编程
摘要: 本文系统梳理了Java多线程与并发编程的核心知识。首先介绍了线程基础概念、创建方式(Thread/Runnable/Callable/线程池)及常用方法(start/sleep/join等)。重点分析了多线程的同步问题(synchronized/ReentrantLock)、死锁场景及解决方案,并对比了wait()和sleep()的区别。在并发编程部分,深入探讨了volatile解决可见性与有序性问题、原子类解决原子性问题,以及Java锁的分类(乐观/悲观锁、可重入锁等)。
2025-07-11 21:01:48
742
原创 JVM
JVM是执行Java程序的核心,主要承担字节码翻译、内存管理等功能。它由类加载系统、运行时数据区、执行引擎、本地方法接口和垃圾回收系统组成。运行时数据区包括程序计数器、虚拟机栈、本地方法栈、堆和方法区,其中堆是垃圾回收的重点区域。垃圾回收采用可达性分析算法识别无用对象,并通过标记-复制、标记-清除、标记-压缩等算法清理内存。JDK提供了多种垃圾回收器,如CMS采用并发标记清除机制,减少程序停顿时间。JVM通过双亲委派机制保障类加载安全,同时支持方法区、堆等区域的动态内存管理,确保Java程序高效稳定运行
2025-06-01 13:46:22
859
原创 Java常见问题(二)
throw:用于在代码中显式抛出一个异常。throws:用于方法签名中,声明该方法可能抛出的异常类型。12. Java中的 interface 和 abstract class 有什么区别?在Java中,interface和都是用于实现抽象和多态的重要机制,但它们在设计和使用上有显著的区别。volatile关键字主要用于确保变量的可见性和防止指令重排序,适用于状态标志和双重检查锁定等场景,但不适用于需要原子性操作的场合。14. Java中的 synchronized 关键字有什么作用?
2025-02-20 20:33:53
1097
原创 Java常见问题(一)
final:用于定义不可变的变量、方法或类。finally:用于确保某些代码无论是否发生异常都会执行。finalize:用于对象销毁前的清理操作,但不推荐使用。2. Java中的== 和equals() 方法有什么区别?==:比较值(基本类型)或内存地址(引用类型)。equals():比较对象的内容(需重写equals()方法)。在大多数情况下,引用类型的比较应该使用equals(),而不是==。3.Java中的String为什么是不可变的?在 Java 中,String。
2025-02-20 19:22:48
797
原创 Mybatis的学习
MyBatis 是一个流行的 Java 持久层框架,它简化了数据库操作,通过将 Java 对象与 SQL 语句进行映射,使得开发者可以更方便地操作关系型数据库,同时避免了传统 JDBC 代码的复杂性。
2025-02-17 19:57:41
443
原创 学习Java的基础知识
变量是存储数据的容器,数据类型定义了变量可以存储的数据的种类和范围。Java 中的数据类型分为基本数据类型和引用数据类型。变量的作用域决定了变量在程序中的可见性。数据类型之间可以相互转换,但需要注意精度丢失的问题。条件控制结构:用于根据条件执行不同的代码块(如ifswitch循环控制结构:用于重复执行某段代码(如forwhiledo-while跳转控制结构:用于改变程序的正常执行流程(如breakcontinuereturn嵌套控制结构:可以在一个控制结构中嵌套另一个控制结构。类。
2025-02-17 13:26:54
1090
原创 飞机降落问题
int T;// 到达时间int D;// 剩余油料可以盘旋的时间int L;// 降落所需时间this.T = T;this.D = D;this.L = L;// 所有飞机都已安排i++) {if (!used[i]) {// 最早开始降落时间// 最晚开始降落时间// 当前飞机的降落开始时间// 检查是否可以在允许的时间范围内降落// 标记为已使用// 递归检查剩余飞机// 回溯// 没有找到合适的顺序// 测试数据组数// 飞机数量i < N;
2025-02-16 19:47:51
912
原创 JavaEE-前端与后台的搭建
在使用 IntelliJ IDEA 连接数据库时,可以按照以下步骤操作:### 1. 打开数据库工具窗口- 在 IntelliJ IDEA 中,点击右侧的 `Database` 工具窗口,或通过 `View -> Tool Windows -> Database` 打开。### 2. 添加数据源- 在 `Database` 工具窗口中,点击 `+` 按钮,选择 `Data Source`,然后选择你要连接的数据库类型(如 MySQL、PostgreSQL、Oracle 等)。
2025-02-11 20:39:30
1394
原创 JavaEE架构
VM架构通常指的是虚拟机(Virtual Machine)的架构。虚拟机是一种软件实现的计算机系统,它模拟了物理计算机的功能,允许在单一物理硬件上运行多个操作系统实例。虚拟机架构主要包括以下几个关键组件:1. 虚拟机监控器(Hypervisor):- 类型1 Hypervisor:直接运行在物理硬件上,也称为裸机Hypervisor。例如,VMware ESXi、Microsoft Hyper-V、Xen。
2025-02-10 20:56:38
1622
原创 node安装,npm安装,vue-cli安装以及element-ui配置项目
它使用,基于,提供模块化开发和丰富的,极大地加速了开发效率。1Node.js的核心特性包括事件驱动和非阻塞I/O模型,这使得它在处理大量并发连接时表现出色。尽管它是单线程的,但通过事件循环和异步操作,Node.js能够有效地处理并发任务。此外,Node.js的和使其能够实现轻量级和高并发处理能力,革新了后端开发。2Node.js的安装和使用也非常简便。用户可以从官方网站下载并安装适用于操作系统的版本,通过简单的命令即可创建一个简单的服务器。这些特性使得Node.js成为现代。
2024-12-20 19:25:47
1156
原创 数据库 一
数据库(DataBase,DB)是一个长期存储在计算系统中有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
2024-10-12 19:57:09
976
原创 Java---异常及处理
super(msg);super(msg);throw new MyException01("自定义异常继承Exception");throw new MyException02("自定义异常继承RuntimeException");test02();
2024-09-28 14:23:46
343
原创 并发编程---线程与进程
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。进程是可与其他程序并发执行的程序,在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立单位。大家打开windows的任务管理器就可以看到,系统运行的进程。1.1线程是程序执行的**最小单位\,而进程是操作系统分配资源的最小单位;1.2一个进程由一个或多个线程组成,线程是一个进程中代码的**不同执行路线\;1.3。
2024-09-27 20:44:06
727
原创 网络编程.
七层模型,也称为OSI(Open System Interconnection)参考模型,是国际标准化组织(ISO)制定 的一个用于计算机或通讯系统间互联的标准体系。它是一个七层的、抽象的模型体,不仅包括一系列抽 象的术语或概念,也包括具体的协议。定义设备标准,如*网线*的接口类型、*管线*的接口类型、*各种传输介质*的传输速率等。物理层的作用是尽可能地屏蔽掉底层的差异,透明的传输bit(比特)。
2024-09-18 15:26:26
845
1
原创 Java---面向对象
/当前对象的属性brand,值为传入的变量brand的值。(两只耳朵,一只尾巴,四条腿,一张嘴,毛发)----特征。2.属性、特征、域(field)、xxx变量。狗 ---> Dog ---> 抽象的。起身--》开门--》大量的逻辑判断。(陪伴(动作,行为))----职责。3.以冰箱(Fridge)为例。this ----- 当前对象。通过setXXX(参数)存储。通过getXXX()取出数据。Object-->东西(1.名字(Fridge)类 -----> 对象。3.方法、函数、动作。
2024-08-24 14:00:01
493
原创 Java---方法Method
封装代码,结构性比较好-----可复用(reusable)Java的官方名称---method (坊间:函数)f(x) = x + 1;函数---function。动作:完成某些功能-----单一。*void:不需要出口。2.method改变。
2024-08-20 12:41:08
232
原创 Java---继承与Object
Java语言的继承:单继承公司和员工,学校和学生学生和人对象被JVM回收的一定会自动调用。~当对象已满规则:当对象没有任何引用何其关联a = null;对象的一个唯一值,用来快速定位内存地址。
2024-05-26 10:04:21
1701
原创 Java---面向对象编程的三大特征
设计一个动物类(Animal),有一个move(),再写三种动物,Bird,Snake,Fish。private < 默认(不写):本包 < protected(继承) < public。1.父类引用指向子类对象 Animal a = new Dog();~ 类,不能不被实例化 AbstractA a = new 子类();在一个类中,方法名称完全一样,参数的类型或者个数不一样。实际上没有多大作用,被子类的方法重写。protected --继承(包)java的继承---》单继承,
2024-05-19 09:02:08
425
原创 Java---static以及访问控制符
/引用类型初始值null。static变成公共空间,有类产生的对象共享数据。符号常量,变量+final----》不可变的量。this.name:当前对象的name属性。对final修饰的变量使用大XXX_YYY。(3)输入一个浮点数--->double。类似于C语言const。出现早(进内存时)---只出现一次。(2)输入一个数字--->int。常量的缺点,不能表示具体的意思。this:当前对象的引用。基本类型---》包装类型。包装类型---》基本类型。引用永久绑定当前对象。对象版的八个数据类型。
2024-05-12 09:20:00
288
原创 Java---构造器
在一个类中方法名称完全相同,参数的个数或者类型不同,方法重载。有很多用户,每个用户有用户名、密码,现金,存储这些用户。构造器[默认,有参数(如果参数不超过5个,全参数)]八个基本数据类型意外-----null。...不定参数,编译器解析数组 a[]配合引用,没有和任何对象关联(绑定)系统刚开始启动时,输入用户的信息。【需求】计算机,能够进行加法计算。注册用户---》注册用户能够登录。编译器自动生成:你没有创建过。User[] =//对象数组。绑定对象变量(类似于指针)如何存储多个用户的信息。
2024-05-01 09:43:33
185
原创 Java---调试,数学运算和循环
continue跳过当前这个值。·return存储值,将方法返回。另:random(0~1)如何跟踪代码是否出现问题。·{ }---作用域。·break跳出当前循环。com.公司名.项目名。
2024-03-31 17:03:15
392
原创 Java---算法
String name = JOptionPane.showInputDialog(null, "请输入您的姓名");JOptionPane.showMessageDialog(null, "您的姓名"+ name);&&左边不成立,结果false。能被4整除,不能被100整除。核心:降级为两个数已排好序。结果:true/false。注意:判断奇偶数,判断偶数。判断一个字是否是数字。||只要左边成立即可。如果true进入分支。
2024-03-27 19:09:17
342
原创 栈区与堆区
不同类型的指针变量决定了对指针解引用时访问几个字节。&a,取到a变量在内存中分配空间的起始地址。float和int型在内存中存储的方式。1.内存有两个区分为栈区和堆区。
2024-03-24 10:15:54
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅