自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_46028606的博客

有的文章被自动设置为vip可见,联系我解决即可

  • 博客(577)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 win11获取最高权限(比管理员权限还要高)

获取 Windows 11 的 SYSTEM 权限是一个高风险操作,仅限合法技术研究使用。SYSTEM 账户拥有最高系统权限,误操作可能导致系统崩溃或安全漏洞。常见方法是使用微软官方工具 PsExec:下载 Sysinternals Suite,以管理员身份运行命令提示符,执行 psexec -s -i cmd.exe 命令即可获得 SYSTEM 权限的交互窗口(可通过 whoami 验证)。务必谨慎操作,严禁用于非法用途。

2025-08-01 15:15:01 592

原创 Java的依赖注入的理解

本文深入浅出地讲解了Java中的依赖注入(DI)概念。首先介绍了控制反转(IoC)的核心思想,指出传统方式下对象自己创建依赖会导致高耦合和测试困难的问题。然后详细阐述了依赖注入的三种主要实现方式:构造函数注入(推荐使用)、Setter方法注入和字段注入(通过注解实现),并分析了各自的优缺点。最后用一个餐厅点菜的生动比喻来说明DI的优势。文章强调在现代Java开发中,尤其是使用Spring框架时,依赖注入是必须掌握的关键概念,它能有效解耦代码,提高可测试性和灵活性。

2025-07-31 16:57:16 848

原创 AOF和RDB分别适用于什么场景 高读写场景用RDB还是AOF好

Redis持久化方式对比:RDB通过定时快照提供高效备份,适合容忍数据丢失的场景;AOF记录所有写命令,确保数据完整性但恢复较慢。对于高读写场景,推荐混合持久化(4.0+),结合RDB快速恢复和AOF数据安全的优势,实现性能与可靠性的最佳平衡。

2025-07-30 11:03:46 1042

原创 Http401和403什么意思

HTTP 401和403状态码都表示访问被拒绝,但有本质区别。401(未授权)意味着身份认证失败,服务器无法确认用户身份,需要重新提供有效凭证。403(禁止访问)则表示身份已确认但权限不足,即使重新认证也无法访问。简单来说,401是"无法验证你是谁",403是"知道你是谁但不允许访问"。两者的核心差异在于前者是认证问题,后者是授权问题。

2025-07-30 10:59:03 764

原创 某老牌大厂面试官:MySQL的Join和On哪个先执行?

SQL查询中,JOIN和ON是一个整体操作,先于WHERE条件执行。JOIN确定表的连接方式,ON定义连接条件,两者共同生成一个虚拟中间表。WHERE子句随后对该中间表进行过滤。在LEFT JOIN中,ON条件决定右表匹配方式(不匹配时保留左表行),WHERE则对所有结果行进行过滤,可能导致LEFT JOIN效果失效。理解这个执行顺序(FROM/JOIN→WHERE→GROUP BY等)对正确编写SQL查询至关重要,特别是在处理表连接和过滤条件时。

2025-07-30 10:58:00 884

原创 某老牌大厂面试官:MySQL的Join和On哪个先执行?

SQL查询中,JOIN和ON是一个整体操作,先于WHERE条件执行。JOIN确定表的连接方式,ON定义连接条件,两者共同生成一个虚拟中间表。WHERE子句随后对该中间表进行过滤。在LEFT JOIN中,ON条件决定右表匹配方式(不匹配时保留左表行),WHERE则对所有结果行进行过滤,可能导致LEFT JOIN效果失效。理解这个执行顺序(FROM/JOIN→WHERE→GROUP BY等)对正确编写SQL查询至关重要,特别是在处理表连接和过滤条件时。

2025-07-30 10:56:03 712

原创 server error - Ports are not available: exposing port bind: An attempt was made to access a socket

摘要:在配置Cassandra服务时发现7000和7001端口无法使用,但排查显示端口未被占用。通过执行netsh int ipv4 show excludedportrange protocol=tcp命令发现6986-7085端口范围被系统保留。解决方案是选择不在该保留范围内的其他端口进行配置。

2025-07-22 22:30:04 181

原创 SSE和WebSocket区别到底是什么

摘要:SSE(服务器发送事件)和WebSocket是现代Web实时通信的两大主流技术,核心差异在于通信方向:SSE仅支持服务器到客户端的单向推送,基于HTTP协议实现简单;WebSocket则支持双向全双工通信,能处理文本和二进制数据但实现复杂。SSE适合新闻推送、股票行情等单向场景,内置自动重连机制;WebSocket则适用于聊天室、在线协作等双向交互场景,需手动实现错误处理。技术选型应首先判断是否需要双向通信,SSE更轻量简单,WebSocket功能更强大全面。

2025-07-20 21:16:30 557

原创 长轮询和WebSocket的区别到底在哪里?为什么说长轮询会维护大量连接,但又说WebSocket连接持续,无需反复建立/关闭,减少资源消耗??这不矛盾吗?到底改进了哪里??

长轮询和WebSocket的关键区别在于连接性质不同。长轮询通过频繁建立短暂连接模拟持久连接,每次请求都需完整HTTP握手过程,消耗大量资源。而WebSocket建立真正的持久化全双工连接,仅需一次HTTP升级握手,后续通信使用轻量级数据帧。WebSocket从根本上解决了长轮询重复握手和头部臃肿的问题,显著降低了服务器负载,实现了真正高效的实时通信。二者的"连接"概念本质不同,因此并不矛盾。

2025-07-20 20:18:27 514

原创 Public Key Retrieval is not allowed

摘要:本文介绍了在Spring Boot的yml配置文件中添加MySQL连接参数allowPublicKeyRetrieval=true的方法,该参数用于解决JDBC连接时的公钥检索问题。配置方式是在数据库URL后追加参数,并附有截图说明。这个设置适用于需要绕过SSL公钥验证的特殊场景,但需注意安全性考量。

2025-07-19 19:56:53 221

原创 div和span区别

本文通过Vue组件演示了HTML中DIV和SPAN标签的核心区别:1)DIV是块级元素,独占一行;SPAN是行内元素,可同排显示;2)DIV可设置宽高,SPAN尺寸由内容决定;3)DIV适合布局容器,SPAN适合文本样式控制。示例包含基础对比、尺寸设置差异、实际应用场景(DIV用于页面结构,SPAN用于文本修饰)及混合使用案例,通过可视化样式直观展示了二者的不同特性和适用场景。

2025-07-18 17:15:26 919

原创 This model provider doesn‘t serve your region. Visit https://docs.cursor.com/account/regions for mor

cursor禁用了中国区IP解决方案

2025-07-17 18:01:17 685

原创 既然扩容,那新分配的空间必然是两个不一样的数组空间,理论上应该都是要拷贝回去新数组,这与jdk7的rehash应该只是方式不一样,但是效率一样的吧,优化了个寂寞?

摘要: JDK 8在HashMap扩容(rehash)时优化显著优于JDK 7。JDK 7采用头插法,需为每个元素重新计算索引,易导致链表倒序和并发死循环;而JDK 8通过智能拆分(利用hash & oldCapacity判断)和尾插法,无需逐个重算索引,直接拆分链表到新位置,保持元素顺序,效率更高且避免并发问题。核心差异在于JDK 8的算法设计更高效(减少计算量)和更安全(杜绝环形链表),整体性能优于JDK 7。

2025-07-14 23:48:54 851

原创 TCP和UDP区别

TCP与UDP是网络传输层的两大核心协议,主要区别体现在: 连接方式:TCP需三次握手建立连接,UDP无连接; 可靠性:TCP提供确认重传机制保证可靠传输,UDP不保证数据必达; 有序性:TCP确保数据有序,UDP不保证顺序; 性能:TCP因复杂控制机制速度较慢,UDP轻量高效; 头部开销:TCP头部至少20字节,UDP仅8字节。 典型应用场景: TCP适用于网页、文件传输等可靠性优先的场景 UDP适用于直播、视频通话等实时性优先的场景

2025-07-13 23:34:03 1956 3

原创 京东面试官:WebSocket 和 HTTP 有什么区别?

WebSocket与HTTP协议对比摘要(149字): HTTP协议采用单向请求-响应模式,每个请求需附带完整头部信息,通信开销较大,适用于传统网页浏览等场景。WebSocket通过HTTP完成握手后升级为全双工通信,建立持久化连接,仅需2-10字节帧头,实现服务器主动推送,适合实时聊天、在线游戏等高频交互场景。两者关键差异在于:HTTP无状态、短连接、高开销;WebSocket有状态、长连接、低延迟,分别对应"寄信式"和"通话式"通信模型。WebSocket弥补了H

2025-07-13 23:19:04 543

原创 讲一下LongAdder

摘要:文章通过超市收银台的比喻,对比了Java中的AtomicLong和LongAdder两种并发计数实现。AtomicLong在高并发时因CAS重试导致性能下降,而LongAdder采用"分散热点"策略,通过主账本(base)和分账本(Cell[])实现高效写入。LongAdder适用于读少写多的场景(如访问量统计),以空间换时间提升性能;AtomicLong则更适合低并发或需精确原子更新的场景。主要差异体现在高并发写入性能、读取耗时和内存占用等方面。

2025-07-12 11:09:49 365

原创 蔚来测开一面:HashMap从1.7开始到1.8的过程,既然都解决不了并发安全问题,为什么还要进一步解决环形链表的问题?

蔚来测开一面面试总结

2025-07-11 23:41:10 726

原创 千辛万苦3面却倒在性格测试?这太离谱了吧!

一位求职者在多轮测开面试表现优异,却因性格测试被拒。痛定思痛后,他总结出四大答题策略:强烈建议选择体现"积极主动"和"团队协作"的选项;中性题目可随意作答;坚决避开"消极被动"类答案。企业最青睐的性格特质包括责任心、抗压能力和目标导向。文章以红字突出关键建议,辅以图片说明,为求职者提供了一套实用的性格测试通关指南。

2025-07-11 23:13:55 200

原创 (生活比喻-图文并茂)http2.0和http3.0的队头阻塞,http2.0应用层解决,TCP层存在,3.0就是彻底解决,到底怎么理解区别???

本文通过收费站与高速公路的比喻,生动解析了HTTP协议不同版本的队头阻塞问题。HTTP/1.1因单车道模式导致严重阻塞;HTTP/2通过多路复用解决了应用层阻塞,但TCP层的丢包仍会阻塞整个连接;HTTP/3采用QUIC协议实现多车道独立传输,彻底解决了队头阻塞问题。文章用直观的类比清晰展示了各版本协议的核心差异与改进原理,帮助读者深入理解网络协议的发展演进。

2025-07-08 16:39:53 1291

原创 HTTP/3.0的连接迁移使用连接ID来标识连接为什么可以做到连接不会中断

HTTP/3通过QUIC协议的"连接ID"实现了网络切换时的无缝连接迁移,与HTTP/2的TCP连接形成鲜明对比。传统HTTP/2基于四元组(IP+端口)标识连接,网络切换时连接会中断;而HTTP/3通过固定不变的连接ID识别会话,即使IP地址变化也能保持连接不中断。这就像从固定电话(认号码)升级到微信通话(认房间号),移动设备切换Wi-Fi和蜂窝网络时,视频、下载等传输不会中断。图文对比显示:HTTP/2需要重新建立连接,HTTP/3则可自动恢复,显著提升了移动网络体验。

2025-07-08 16:07:12 635

原创 字节二面(狠狠拷打系列):什么是http1.1,2.0,3.0,分别在什么场景里面用的多

http1.1,2.0,3.0

2025-07-08 14:22:14 576

原创 golang的defer

本文用通俗易懂的方式解释了Go语言中的defer机制。将defer比作"临时便签",即在函数执行时记录需要延迟执行的操作,待函数结束前按后进先出的顺序执行。通过回家关灯锁门、文件操作等生活化示例,对比展示了使用defer可以简化资源清理代码,确保无论函数如何退出都能执行必要操作。关键点包括:defer的执行时机是在包含它的函数返回前,执行顺序是后进先出,且适用于各种退出情况(正常返回、panic等)。这种"便签"类比帮助开发者直观理解defer的作用机制。

2025-07-06 12:27:52 350

原创 字节二面:进程,线程,协程区别

进程、线程和协程是三种并发编程模型,主要区别在于资源占用、切换开销和调度方式。进程拥有独立的内存空间,资源消耗大但稳定性高;线程共享进程资源,切换开销较小;协程由用户态控制,切换开销最小且适合高并发场景。进程适用于资源隔离,线程适合共享数据,协程则针对I/O密集型任务。三者在调度方式、通信机制和应用场景上各有特点,选择合适模型可优化程序性能。

2025-07-06 11:54:43 1562

原创 JWT鉴权的流程和原理

JWT鉴权流程与原理详解 JWT(JSON Web Token)是一种无状态认证机制,由Header、Payload和Signature三部分组成,通过Base64Url编码后用点连接。其核心原理是服务器用密钥对前两部分签名生成令牌,客户端存储后每次请求携带,服务器只需验证签名和时效而无需查询数据库。 鉴权流程包含:用户登录→服务器验证并签发Token→客户端存储→后续请求携带→服务器验证。JWT自带用户信息,适合跨域和微服务场景,但存在无法主动失效、体积较大等缺点。关键优势是无状态扩展性强,但需妥善保管签

2025-07-01 01:43:04 885

原创 RocketMQ 消息长轮询

RocketMQ通过长轮询机制(Pull+Hold)实现高效消息消费,平衡了实时性和资源消耗。当消费者请求消息时,Broker会检查队列:有消息立即返回,无消息则挂起请求(最长15秒),期间若有新消息到达立刻响应。这种方法减少了无效请求,实现准实时消费,同时保持流量控制。关键参数包括Broker挂起时长(15秒)和消费者拉取超时(20秒)。RocketMQ的PushConsumer实际是基于长轮询的拉取模型,封装了复杂逻辑,提供简单高效的推送体验。

2025-06-27 23:52:49 599

原创 windows部署Kafka

本文介绍了Windows环境下Kafka的安装配置过程:从官网下载2.13-2.8.1版本,解压到短路径目录避免报错;确保Zookeeper服务正常启动后,修改server.properties配置文件。通过命令行启动Kafka服务,创建测试主题,并分别开启生产者和消费者进行消息收发测试。整个过程需要注意路径深度限制和配置文件调整,最终实现本地Kafka环境搭建与基础功能验证。

2025-06-16 00:08:06 605

原创 用锁的方式对生产消费者模式进行实现

本文介绍了两种Java实现生产者-消费者模型的方法。第一种传统解法使用synchronized和wait/notifyAll机制,通过共享对象锁实现线程同步,但存在"惊群效应"导致效率较低。第二种多条件解法则采用ReentrantLock和Condition接口,创建独立的等待队列(notFull和notEmpty),能精准唤醒特定类型的线程,避免不必要的唤醒。两种方法都通过缓冲区大小检查、等待机制和唤醒机制来协调生产者和消费者的运作,但多条件解法在性能上更优,适合高并发场景。

2025-06-15 20:06:54 937

原创 独立的异步任务A、B、C。任务B的执行依赖于任务A的结果,任务C的执行依赖于任务B的结果。如果这三个任务分别在不同的线程中执行,你如何设计一个方案来保证这个依赖关系一定成立?

摘要:通过Java多线程示例展示如何实现线程顺序执行。代码创建了三个线程t1、t2、t3,每个线程执行简单的打印操作。关键点在于使用Thread.join()方法,使主线程等待每个子线程完成后再启动下一个线程,从而确保线程按t1→t2→t3的顺序执行。这种技术常用于需要线程间顺序执行的场景,如任务依赖等。代码简洁明了地演示了多线程顺序控制的基本实现方式。

2025-06-15 17:18:10 118

原创 多线程对共享变量交替打印到100

摘要 两种Java线程同步方案实现交替打印奇偶数到100: synchronized方案:使用共享对象锁和wait/notify机制,两个线程竞争同一个锁,通过判断当前数值的奇偶性决定是否等待,确保交替打印。 ReentrantLock双Condition方案:采用更精细的线程控制,为奇偶线程分别设立Condition条件,通过await/signal实现定向唤醒。核心特点是先唤醒对方线程再执行打印操作,避免无效竞争。 两种方案都通过循环检查和线程间协作实现交替打印,Lock方案提供了更灵活的线程控制能力。

2025-06-15 17:03:37 478

原创 AQS源码解析

AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,采用分工思想:开发者只需定义资源状态(state)和获取/释放逻辑(tryAcquire/tryRelease),AQS则负责线程排队、阻塞唤醒等复杂操作。其核心分为模板方法(需子类实现)和框架方法(可直接调用),支持独占和共享两种资源访问模式。内部类Node构成等待队列,ConditionObject实现精准线程通信。通过这种分工,AQS简化了同步器的实现,开发者只需关注核心逻辑,框架处理其余细节。

2025-06-15 00:17:17 905

原创 CyclicBarrier入门代码解析

摘要:CyclicBarrier线程同步机制 CyclicBarrier是Java中的线程同步工具,其核心思想类似于"组队出行"模式:所有线程(队员)必须到达集合点(屏障)后才能一起继续执行。关键特点包括: 设定固定数量的线程需到达屏障 先到线程会阻塞等待 最后一个线程到达时触发所有线程继续执行 屏障可循环使用,适用于多阶段任务 典型应用场景: 数据并行处理的阶段同步(ETL) 高并发压力测试 多线程计算结果的汇总 与CountDownLatch的主要区别在于:CyclicBarrier

2025-06-14 20:03:10 945

原创 CountDownLatch入门代码解析

摘要: CountDownLatch是Java多线程中的同步工具,适用于主线程需等待多个子任务完成的场景。其核心机制是初始化计数器(如new CountDownLatch(3)),每个子线程完成任务后调用countDown()使计数器减一,主线程通过await()阻塞等待,直到计数器归零后继续执行。例如火箭发射前需等待燃料、引擎、导航三个系统检查完成,主线程(控制中心)在所有子线程(检查员)报告完成后才执行发射指令。代码示例展示了三个并行检查任务通过countDown()递减计数器,最终触发主线程唤醒的完整

2025-06-14 19:48:19 483

原创 Semaphore入门案例

摘要: Semaphore(信号量)通过许可证机制控制线程并发访问资源,类似停车场管理。初始化时设定许可证数量(如3个车位),线程调用acquire()获取许可(车辆进入),若无许可则阻塞排队;release()释放许可(车辆离开),唤醒等待线程。代码模拟8辆车竞争3个车位,仅3辆车可同时停放,其余车辆需等待车位空出。关键点在于:获取/释放许可必须成对出现,且release()需置于finally块以确保资源释放。该机制有效限制资源并发访问量,适用于流量控制等场景。

2025-06-14 19:38:07 387

原创 StampedLock入门教程

StampedLock通过引入"戳"(Stamp)机制和乐观读模式大幅提升读性能。其核心设计在于: 所有锁操作都伴随版本号戳,写锁会改变版本号,读锁不会; 创新性地提供了乐观读模式,允许无锁读取数据,仅需最后验证版本号是否变化; 读多写少场景下,多数乐观读能成功,避免线程阻塞和上下文切换; 性能测试表明乐观读比传统读写锁快5-6倍。 这种设计在保持线程安全的同时,极大降低了读操作的开销,特别适合读多写少的并发场景。

2025-06-14 19:24:37 846

原创 Java线程状态转换图以及状态转换的情况

本文总结了Java线程状态的10种转换场景:1)NEW通过start()进入RUNNABLE;2-4)通过wait/join/park在RUNNABLE与WAITING间转换;5-8)带超时参数的wait/join/sleep/park导致RUNNABLE与TIMED_WAITING转换;9)锁竞争失败从RUNNABLE到BLOCKED;10)运行完毕进入TERMINATED。所有转换均由特定方法调用触发,涉及锁竞争、中断或超时机制,完整呈现了Java线程生命周期状态变化路径。

2025-06-14 12:09:42 1007

原创 Thread的join方法

本文简明扼要地介绍了Java多线程编程中的join()方法。join()让调用线程等待目标线程执行完毕,常用于确保线程间有序执行。通过代码示例展示了未使用join()导致的数据错误,以及使用join()正确获取计算结果的过程。文章还介绍了带超时的join(long millis)方法,避免无限等待。关键点是:join()会阻塞当前线程,直到目标线程结束;适用于线程间存在依赖关系的场景;是Thread类的基本方法之一。

2025-06-14 12:03:32 628

原创 街边大婶都能看懂的notify-wait和Condition入门教程

本文对比了两种线程同步方式的差异。第一种方案未使用wait-notify机制,导致线程必须等待固定时间(2秒)才能继续执行,即使资源提前到达也无法及时响应,且其他线程被长时间阻塞。第二种方案采用wait-notify机制后: 小南线程在发现无烟时调用wait()释放锁并等待 其他线程可以立即获得锁并执行任务 当送烟线程获得锁并更新状态后,通过notify()唤醒等待线程 小南线程被唤醒后重新检查条件并继续执行 改进后的方案解决了固定等待时间的问题,实现了资源到达即时响应,显著提高了线程协作效率。关键点在于w

2025-06-14 11:48:23 1322

原创 ReentrantLock的lockInterruptibly有什么用

ReentrantLock的lockInterruptibly有什么用

2025-06-13 16:03:30 970

原创 什么是park和unpark

摘要:park和unpark是Java底层线程控制的工具,位于LockSupport类中。park阻塞当前线程,unpark唤醒指定线程,基于"许可证"机制(0或1状态)。相比wait/notify,它们不依赖锁、支持精确唤醒且允许先unpark后park,避免信号丢失。主要应用于AQS框架(如ReentrantLock),实现高效线程阻塞/唤醒。底层通过Unsafe类调用操作系统原语(如Linux的futex),性能优于传统同步机制。虽然开发者极少直接使用,但理解其原理对掌握Java并

2025-06-13 00:46:08 931

原创 说一下Java里面线程池的拒绝策略

说一下Java里面线程池的拒绝策略

2025-06-12 22:37:37 1409

黑龙江大学操作系统实验一

2019级和2018级是通用的,但是需要管理头文件,完全按照实验讲义做的,附加题也做了

2021-05-22

C库源码,含atoi,各种实现都有在.c文件

atoi,printf啥的都有,不是声明,是函数定义!!

2021-01-08

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

TA关注的人

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