- 博客(109)
- 收藏
- 关注
原创 四个主要的函数式接口
函数式接口是Java中支持Lambda表达式的关键,它要求接口只能有一个抽象方法,但可以包含默认方法、静态方法和Object类方法重写。Java提供了四个核心函数式接口:Consumer(消费型,有入参无返回值)、Supplier(供给型,无入参有返回值)、Function(函数型,有入参有返回值)和Predicate(断言型,有入参返回布尔值)。使用@FunctionalInterface注解可显式标记,编译器会强制检查。这些接口简化了代码,如用Lambda替代匿名内部类实现,使函数式编程更简洁高效。
2026-03-29 22:28:46
238
原创 线程池的三个方法,七个参数,四个拒绝策略
后面92个任务不断触发拒绝策略,挤掉了队列中的老任务 最后执行的 99、98、97 等,是最后被保留的新任务 拒绝任务时静默丢弃,不会抛出异常。当提交一个新任务时,如果当前运行的线程数少于 corePoolSize,即使有空闲线程,线程池也会创建一个新线程来处理该任务。用于存放等待执行的任务的阻塞队列,当线程池中的线程数已达到corePoolSize时,新提交的任务会先被放入这个队列中等待。我们创建了一个核心线程2,最大线程5,阻塞队列容量3 ,空闲线程存活5s 和使用默认的线程工厂和拒绝策略的线程池。
2026-03-29 22:25:06
690
原创 Docker部署在线会议jitsi-meet
本文介绍了基于Docker部署Jitsi视频会议系统的完整流程。首先从GitHub下载安装包并解压,通过配置.env文件和生成密码完成基础设置。详细说明了创建配置文件目录、解决Docker镜像拉取问题、处理端口冲突等关键步骤。针对摄像头权限、会议连接失败等常见问题提供了解决方案,包括防火墙设置和公网IP配置。最后汇总了常用的Docker管理命令,包括服务状态查看、日志监控和启停操作等。整个过程涵盖了从环境准备到问题排查的完整部署指南。
2026-03-26 20:57:18
667
1
原创 JUC读写锁和阻塞队列
摘要:本文介绍了Java并发编程中的读写锁和阻塞队列。读写锁通过区分读锁(共享)和写锁(独占)实现高效并发控制,适合读多写少场景。文中提供了缓存类示例,展示了不加锁和加读写锁版本的区别。阻塞队列部分对比了四种处理方式:抛出异常(add/remove)、返回特殊值(offer/poll)、阻塞等待(put/take)和超时等待(offer/poll with timeout),并通过ArrayBlockingQueue演示了各种操作的行为差异。这些机制能有效解决多线程环境下的同步问题。
2026-03-25 22:56:09
206
原创 JUC当中的几个计数类
摘要:CountDownLatch、CyclicBarrier和Semaphore是Java中的三种同步工具。CountDownLatch通过计数器实现线程等待,当计数归零时释放阻塞线程;CyclicBarrier让一组线程在屏障点互相等待,可重复使用;Semaphore通过许可机制控制资源访问,限制同时访问的线程数量。三者分别适用于不同的多线程同步场景,CountDownLatch用于主线程等待子线程完成,CyclicBarrier用于线程组协同,Semaphore用于资源访问控制。
2026-03-24 22:44:17
313
原创 Java 并发编程(1)
本文介绍了Java并发编程中的关键概念和技术。主要内容包括:1)进程与线程的区别,线程的六种状态(NEW、RUNNABLE等);2)wait()与sleep()的区别,包括锁释放和使用场景;3)synchronized和Lock锁的实现与对比,演示了售票案例;4)生产者消费者问题的两种实现方案(synchronized和Lock+Condition),重点分析了虚假唤醒问题及其解决方案。文章通过代码示例展示了多线程同步控制的常见模式,并比较了不同同步机制的优缺点。
2026-03-16 22:31:30
443
原创 Mysql的索引以及底层的数据结构(面试)
摘要:索引是帮助MySQL高效获取数据的有序数据结构,通过特定算法(如B+树)实现快速查询。无索引时需全表扫描,效率低下。索引底层结构包括二叉搜索树(可能退化为链表)、红黑树(高度问题)、B树(多路平衡树)和B+树(InnoDB采用)。B+树相比B树优势明显:非叶子节点仅存储指针减少磁盘IO;查询效率稳定;叶子节点双向指针便于范围查询。索引能提升检索效率、降低IO成本,并通过预排序减少CPU消耗。
2026-03-14 15:58:57
238
原创 Ubuntu当中的Docker安装和镜像管理
systemctl命令用来控制Ubuntu系统中的各项服务,start命令用于启动某项具体的服务,而status命令则可以查看某项服务的状态。docker run 表示启动一个docker容器, -i表示采用交互的方式, -t表示为当前用户分配一个虚拟终端。使用docker pull可以从docker hub下载镜像,name是镜像名称,tag是镜像版本。一般镜像的构建都是基于一个已有的基础镜像(Ubuntu或者CentOS等)来构建新的镜像。如果看到了配置的镜像地址,就说明加速器配置成功了。
2026-03-10 15:12:28
432
原创 MongoDB的安装和整合SpringBoot
MongoDB是一个开源的NoSQL文档数据库,使用类似JSON的BSON格式存储数据。本文介绍了MongoDB的基本概念、安装方法,并详细讲解了如何在SpringBoot项目中整合MongoDB。主要内容包括:MongoDB特点(文档存储、动态模式、高可用性等);安装步骤及GUI界面使用;SpringBoot项目创建与配置(依赖引入、yml配置);实体类定义和Repository接口实现;通过Controller实现增删改查等操作;最后提供了完整的测试用例。文章通过具体代码示例展示了MongoDB与Spr
2026-03-08 15:47:15
476
原创 Lean 4的安装和项目创建
Lean4是由微软研究院开发的功能性编程语言和交互式定理证明器,2023年正式发布。安装需通过VSCode安装Lean4扩展,并使用Elan版本管理器。项目创建提供两种方式:独立项目适合编程学习,基于Mathlib的项目适合数学形式化验证。Mathlib是包含150万行验证代码的核心数学库。项目结构包含Lake构建系统目录、源代码目录及配置文件(lakefile.toml),可管理依赖和构建选项。
2026-03-06 00:46:08
642
原创 WorldQuant BRAIN Alpha
在WorldQuant BRAIN平台中,Alpha是一个可预测资产未来价格走势的数学模型或数学表达式。输入:某只股票当前及历史的市场数据(价格、成交量、财务指标等)输出:一个预测信号值,通常介于-1到1之间,代表对股票未来表现的预期正数:预测股票将跑赢大盘(买入或做多)负数:预测股票将跑输大盘(卖出或做空)数据字段是Alpha的“原材料”,指的是一个命名的数据集合。平台提供数百种数据字段,涵盖价格、成交量、财务指标等多个维度。
2026-03-02 00:41:24
2441
1
原创 Nginx(2)
本文摘要:Nginx配置指南详解了location指令的多种匹配模式(精确匹配、正则匹配等)及其优先级规则,并解释了Nginx采用master-worker多进程架构的原因。同时对比了root与alias指令的区别,重点介绍了通过Nginx解决跨域问题的方案,包括保持域名端口一致、设置响应头和使用API网关等方法。核心解决思路是确保页面访问地址与请求的域名、端口和协议一致,可通过Nginx配置、微服务网关或响应头设置等方式实现。
2026-02-28 15:48:15
606
原创 Mysql慢查询
摘要:慢查询常见于页面加载慢或接口响应超1秒的情况,主要包括聚合查询、多表查询、大数据量查询和深度分页。解决方案:1)使用Arthas、Prometheus等工具调试;2)开启MySQL慢日志(测试阶段),配置slow_query_log=1和long_query_time=2秒。分析慢查询可使用EXPLAIN命令,关注key(命中索引)、type(连接类型,避免ALL全盘扫描)和Extra(优化建议)等字段,检查索引是否失效或需要优化。生产环境慎用慢日志以免影响性能。
2026-02-27 21:55:04
617
原创 Nginx(1)
本文摘要:Nginx是一款高性能的HTTP和反向代理服务器,支持负载均衡、静态资源服务和邮件代理等功能。文章介绍了DNS域名解析原理、InetAddress类的使用方法,详细讲解了Nginx的安装配置(包括Windows和Linux环境)以及实际应用场景,如反向代理、负载均衡策略(轮询、权重配置等)和故障转移机制。同时演示了如何基于Nginx实现静态资源存放、业务分域名管理,以及通过配置实现服务器集群的高可用性。Nginx凭借其稳定性、低资源消耗等优势,被百度、京东等大型网站广泛使用。
2026-02-27 20:02:07
805
原创 面试-Redis缓存三兄弟(击穿、穿透、雪崩)
摘要:Redis缓存问题及解决方案:1.缓存击穿(热点key失效):采用互斥锁(强一致性)或逻辑过期(高可用性)解决;2.缓存穿透(查询不存在数据):通过缓存空结果或布隆过滤器(需预热数据)处理,后者有误判可能;3.缓存雪崩(大量key同时失效或服务宕机):设置差异化过期时间、集群部署、限流策略或多级缓存。每种方案需权衡性能与一致性。
2026-02-26 20:19:42
634
原创 Redis的集群搭建
Redis集群(Redis Cluster)是Redis官方提供的分布式部署方案,通过将数据自动分片(hash slot)到多个主节点实现横向扩展,每个主节点可配备从节点实现故障自动转移;它采用去中心化架构,所有节点通过Gossip协议相互通信,客户端可直连任意节点进行路由,并且支持在部分节点故障或网络分区时继续提供服务,是应对海量数据和高并发场景的官方原生分布式解决方案。
2026-02-12 13:27:46
386
原创 Redis的主从复制和哨兵机制
Redis主从复制与哨兵机制实现高可用 主从复制通过数据副本解决单点故障问题,主库数据实时同步到从库,支持读写分离且不阻塞主库操作。配置时需修改主从库的bind、requirepass等参数,并通过replicaof指定主库。 哨兵机制提供自动故障转移功能,包含监控、故障切换和通知三大核心功能。其选举过程分为客观下线和两阶段选举:先由哨兵集群确认主库宕机,再通过Raft协议选举领导者哨兵,最后按优先级选择新主库。建议部署至少3个奇数哨兵,quorum设为半数+1。配置哨兵需指定监控的主库、quorum值及超
2026-02-08 19:15:30
747
原创 Redis的几个数据类型及操作(RedisTemplate和Linux命令)
本文介绍了Redis五种数据类型的操作方法和Java实现,包括String、Hash、List、Set和Sorted Set。详细讲解了各类型的特点、常用命令及对应的Java代码示例:String类型支持二进制安全存储;Hash适合存储对象属性;List实现双向链表操作;Set保证元素唯一性;Sorted Set通过分数实现有序集合。文章还提供了Spring Data Redis模板类的具体使用方法,包括批量操作、分页查询、元素排名等实用功能,并展示了与Redis服务器的交互验证过程。
2026-02-01 23:07:39
672
原创 智慧社区:居民信息Excel导入数据库
本文介绍了Excel导入导出的技术实现方案。首先对比了5种技术选型:Apache POI(官方底层库)、EasyExcel(阿里流式方案)、Easy-POI(注解驱动)、JXL(轻量级旧版)和前后端协作方案,最终选择Apache POI实现。具体实现分为上传模板文件和导入数据两部分:上传时使用UUID重命名文件并保存到指定目录;导入时通过POI读取Excel数据到二维数组,验证小区信息后,将数据存入数据库。代码实现包括初始化POI对象、读取数据、验证导入等步骤,重点处理了数据格式转换和异常情况,确保数据准确
2026-01-12 23:03:09
1183
原创 eNSP中划分vlan
本文介绍了网络分层架构、冲突域与广播域的概念,以及集线器与交换机的区别。网络分为接入层(终端接入)、汇聚层(策略执行)和核心层(高速转发)。冲突域指信号冲突的范围,广播域指广播帧传播的范围。集线器是物理层设备,所有端口共享带宽;交换机是数据链路层设备,基于MAC地址转发,端口独享带宽。文章还介绍了VLAN配置实例和交换机接口的三种模式:Access(单一VLAN)、Trunk(多VLAN带标签)和Hybrid(灵活配置标签)。
2026-01-12 17:36:28
848
原创 Docker(C/S架构软件)
本文全面介绍Docker容器技术,包括其核心概念、优势及使用场景。Docker通过容器化实现应用及其依赖的打包部署,解决环境一致性问题。文章详细讲解Docker三要素(仓库、镜像、容器)、与虚拟机的区别、安装配置方法及常用命令。同时涵盖Dockerfile编写规范、镜像原理、数据卷管理,以及实战部署Tomcat、Nginx、MySQL等应用。最后介绍DockerCompose多容器编排工具,提供从单机到集群的完整容器化解决方案。
2026-01-03 22:56:11
1712
原创 智慧社区:调用腾讯云的人脸识别接口完成人脸采集的功能
随后回到接口方法,生成图片的访问路径faceUrl,然后存到数据库中,因为上传的图片和此处生成的图片名字都由faceId拼接,所以能够访问到,urlPrefix和savePath同理,都在yaml配置文件中配置。在进行完严谨性校验之后,如果启用了人脸识别功能,会调用personVal方法来调用工具类当中的添加人员的方法,执行成功之后会返回这个用户在人员库当中的id。person-id-pre:人员库当中人员id的前缀,我加上了user_,假如入库的人员id=9,那么这个人在我的人员库id就是user_9。
2025-12-30 22:41:14
1340
原创 SpringMVC的单文件上传
我们实现文件上传时使用到了MultipartFile,它是 Spring Framework 提供的一个接口,用于处理 HTTP 请求中的文件上传。它是 org.springframework.web.multipart 包的一部分。它的主要用途是接收客户端上传的文件,获取文件信息(名称、大小、类型等),将文件保存到服务器或处理文件内容等等。
2025-12-30 16:47:13
896
原创 Ollama在Windows11部署大模型
Ollama 是一个开源平台,让开发者能够在个人电脑上轻松运行、管理和部署大型语言模型。它将复杂的AI模型部署简化为几个简单的命令,实现了"AI民主化"——让每个人都能在本地享受大语言模型的能力。
2025-12-29 20:37:49
1000
原创 RuoYi-Vue3的项目搭建
找到ruoyi-admin当中配置数据库的配置文件application-druid.yaml文件。项目初始化需要一点时间,等待右下角进度条完成即可。完成之后用vscode打开。
2025-12-29 15:11:18
618
原创 前后端分离项目在云服务器上的部署(Spring Boot + Vue)
这个命令可以让springboot项目在后台运行,并且日志产生到该目录下的nohup.out当中。修改vue.config.js当中的url:按照自己的ip和后端的springboot端口修改。运行完这行命令之后,会在/usr/local/目录产生一个nginx文件夹。命令执行无误之后会在项目根目录下生成target文件夹,jar包就在里面。在云服务器中创建目录:/usr/local/src/myLibrary/运行成功之后会在项目文件夹目录里面生成打包好的文件夹dist。
2025-12-28 17:51:19
1107
1
原创 在云服务器上配置redis环境(OpenCloudOS)
官网的下载速度较慢,我在华为云镜像网站下载的redis包,根据自己的需要下载就行下载好之后移动到服务器里面并且解压:解压命令:tar -zxvf 文件名解压缩完进入文件夹。
2025-12-27 18:59:16
469
原创 Java的Stream流
Stream是一种高级迭代器,用于对数据源进行函数式操作。filter用于条件筛选sorted支持自然排序和自定义比较器limit和skip控制元素数量distinct依赖equals和hashCode实现去重map实现元素转换可合并多个流。
2025-12-18 17:14:09
920
原创 线程的常用方法
不能手动设置为守护线程后再启动(setDaemon() 必须在 start() 前调用)子线程:"Thread-0", "Thread-1", ...interrupted():检查并清除中断标志(静态方法)isInterrupted():检查中断标志。可以在任何地方调用,获取当前执行环境的线程。不会释放锁:如果持有锁,休眠期间仍然持有。当所有用户线程结束时,守护线程自动结束。interrupt():设置中断标志。静态方法:让当前线程休眠指定时间。主线程结束后,守护线程会自动结束。
2025-12-17 23:04:50
766
原创 Java线程的三种创建方式
Callable实现类 → FutureTask包装 → Thread包装 → start()启动 → get()获取结果。start() 会启动新线程,同时调用 run() 方法。直接调用 run() 只会普通方法调用,不会创建新线程。启动方式:创建对象后调用 start() 方法。run() 方法没有返回值,不能抛出检查异常。阻塞获取:get() 方法会等待线程执行完成。重写方法:必须实现 call() 方法。重写方法:必须重写 run() 方法。重写方法:必须实现 run() 方法。
2025-12-17 22:21:16
381
原创 SpringAOP的介绍和入门
什么是AOP的技术?在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构AOP最早由AOP联盟的组织提出的,制定了一套规范.Spring将AOP思想引入到框架中,必须遵守AOP联盟的规范SpringAOP是通过预编译方式或者运行期动态代理实现程序功能的统一维护的一种技术AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
2025-12-15 15:12:41
1048
原创 SpringIOC的注解开发
我们在实现类上面加了@Component注解,它的作用是把当前类使用IOC容器进行管理,value指定Bean的名称,如果没有指定名称,默认使用当前类名userServiceImpl。纯注解的方式是微服务架构开发的主要方式,所以也是非常的重要。但是需要编写配置类。@Import注解Spring的配置文件可以分成多个配置的,编写多个配置类。@Bean注解只能写在方法上,表明使用此方法创建一个对象,对象创建完成保 存到IOC容器中。@Qualifier和@Autowired一起使用,强制使用名称注入 。
2025-12-13 22:46:41
1040
原创 Spring的DI依赖注入(配置文件方式)
测试代码首先读取配置文件(第一行代码),获取到了orderServiceImpl这个Bean(第二行代码),最后调用对象的saveOrder方法。通过无参构造方法创建OrderServiceImpl实例,再通过setOrderDao、setMsg和setAge方法来获取值,也就是依赖注入。DI:DependencyInjection,依赖注入,在Spring框架负责创建Bean对象时, 动态的将依赖对象注入到Bean组件中。然后创建OrderServiceImpl。新建CollectionBean类。
2025-12-12 22:40:35
742
原创 Spring的Bean
在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由Spring IoC 容器实例化、组装和管理的对象。
2025-12-12 16:24:18
799
原创 Spring框架的介绍和IoC入门
Spring 是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的 松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由RodJohnson创建。简单来说,Spring 是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
2025-12-12 15:45:09
978
原创 SpringBeanFactory
XmlBeanDefinitionReader:用于读取 XML 格式的 Bean 配置文件,并将配置信息加载到 Bean 工厂中。DefaultListableBeanFactory:Spring 的核心 Bean 工厂,负责创建和管理 Bean 实例。通过读取器加载bean.xml配置,将userDao和userService的 Bean 定义注册到工厂中。创建UserService和它的实现类UserServiceImpl。从工厂中获取 id 为userService的 Bean 实例。
2025-12-11 20:25:32
426
原创 vue目录文件夹的作用
运行npm run build:prod时,会产生/dist目录(生产环境打包结果),然后运行npm run preview会执行 build/index.js,启动一个本地服务器来预览 dist/ 目录中的内容。如:node_modules/, dist/, .env.local 等。.eslintignore - 忽略检查的文件/目录。.env.development - 开发环境配置。.env.production - 生产环境配置。.env.staging - 预发布环境配置。
2025-12-08 15:17:32
904
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅