线程崩溃、Java三大器、Sql慢查询

C#性能瓶颈三大罪魁祸首:对象分配、数据搬运与同步阻塞 在.NET开发中,'C#很慢'往往并非语言或运行时缺陷,而是由高频堆分配、冗余数据序列化/反序列化、以及同步IO滥用这三类基础性问题引发的性能退化。其底层原理涉及GC代际回收机制失衡、内存拷贝路径过长、线程池资源耗尽等系统级现象,技术价值在于通过零成本诊断工具(如dotnet-counters、PerfView)实现可复现、可量化、可优化的性能治理。典型应用场景覆盖报表导出卡顿、API响应毛刺、高并发下内存暴涨等生产常见问题,本文聚焦真实业务代码中的'慢写法',结合StringBuilder、Span<T> 阅读详情

1.线程崩溃为什么不会引起JVM崩溃?

原文地址:美团一面:为什么线程崩溃不会导致JVM崩溃

线程非法操作或访问内存会导致进程崩溃(进程下的多个线程共享代码段,文件,数据,内存等)
那进程是如何崩溃的? -信号量机制
kill pid -9 就是向目标进程发送了一个信号量 SIGKILL-对应9
如果自定义了信号量函数,可以再kill掉进程之前执行一些自定义方法
jvm正是自定义了信号量函数,如发生NPE或者stackoverflow时,JMV做了额外的内部处理,并将日志写入特定文件比如hs_err.log中

2.Java三大器 

1.过滤器(基于函数回调):一般用于资源访问权限控制(比如部分静态资源请求可以过滤不做验证)、敏感词汇过滤

2.拦截器(基于java反射机制,动态代理):实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter方法
应用:用户登录认证、权限验证等

过滤器与拦截器、切面执行顺序验证
-> 过滤器doFilter -> 前置拦截器preHandle
-> 环绕通知@Around开始 -> 前置通知@Before
-> UserController
-> 环绕通知@Around执行 ->环绕通知@Around结束
-> 后置通知@After -> 后置返回通知@AfterReturning
-> 处理拦截器postHandle -> 后置拦截器afterCompletion


3.监听器(基于事件):依赖于servletContextListener接口或HttpSessionListener抽象依赖接口
应用场景:清除过期session、统计网站在线人数

区别:
1.在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时调用一次。
2.拦截器是基于java反射机制来实现的,而过滤器是基于函数回调来实现的。

 3.数据库慢查询原因  转载地址:盘点数据库慢查询的12个原因_倾听铃的声的博客-优快云博客_慢查询。

第一类SQL写法原因原因:

1.没有用到索引(隐式类型转换、使用or、使用< >等符号、未遵守索引最左匹配原则、使用“%”开头的like通配符、索引列上使用内置聚合函数(加上聚合函数会导致mysql不知道如何搜索)、对索引列使用运算符号 +-*\ (和使用聚合函数同理)、左右连接的字符编码不一致),或者字段未创建索引

第二类MySql数据库原因:

1.被表锁、行锁锁住了

2.limit深分页问题 

例子:

select id,name,balance from account where create_time> '2020-09-19' limit 100000,10;

上述语句中limit 10000,10执行步骤:首先通过create_time索引字段查询到id后回表查询得到100010个数据后抛弃前10000行去最后10行。

limit深分页,导致SQL变慢原因有两个:

        limit语句会先扫描offset+n行,然后再丢弃掉前offset行,返回后n行数据。也就是说limit      100000,10,就会扫描100010行,而limit 0,10,只扫描10行。


        limit 100000,10 扫描更多的行数,也意味着回表更多的次数。

解决办法:延迟关联法(就是把条件转移到主键索引,减少回表。)

select  acct1.id,acct1.name,acct1.balance FROM account acct1 INNER JOIN (SELECT a.id FROM account a WHERE a.create_time > '2020-09-19' limit 100000, 10) AS acct2 on acct1.id= acct2.id;

3.数据量过大,B+树过深,读取较多次数IO,影响效率

4.刷新脏页 

更新语句执行步骤

 

rodo_log:

 

更新语句暂时更新到内存和redo log中,等数据库空闲时再更新到磁盘里,因此会出现脏页(内存和数据库数据不一致)。如果内存不够用,或者redo_log满了,导致数据库刷新脏页(刷新脏页时导致查询和更新性能降低)

扩展:为什么要二阶段提交(将redo_log分成两阶段,一个prepare和commit阶段,中间穿插着写入binglog日志操作)?

未使用二阶段提交,先写redo_log后写binglog:比如数据库在写redo_log日志时crash了,没有及时写入binglog,此时数据库恢复时redo_log会记录保存这个修改,而后续使用binglog备份或者恢复临时库时,这次更新修改不会记录下来,这样就出现了脏数据。

二阶段提交:写redo_log prepare状态->写入binglog日志->写入 redo_log commit状态,此时写入binglog后crash了,数据库恢复时由于不是commit状态,不保存修改,这样后续使用binglog日志恢复时不会出现脏数据。

4.order by 文件排序(一般利用到sort_buffer, 首先找到无序结果集,单独将排序的字段和主键放入缓存,进行排序,后回表取出结果集)

rowid排序:当数据行超过排序缓存字段最大值时

全字段排序:和rowid相比,无需排序后的回表(因为未超过排序字段允许的最大值,所以不需要单独对排序字段进行排序)

且sort_buffer_size过小会借助磁盘进行排序

优化方案就是使用合适的sort_buffer_size和max_sort_data字段大小,或者对排序字段建立索引等加快排序速度

5.group by 临时表

group by执行步骤: 创建临时表->取出分组字段并统计,对分组字段进行排序(此时参照上面的order by排序步骤,有可能走rowid排序,有可能走全字段排序)->取结果集

注意group by有会进行排序

解决方案,1.后加 order by null 指定不排序

                  2.对group by利用索引字段,即可不用临时表(索引是有序的,可以顺序读取或统计)

 

3.(比较少见):查询数据行有巨量的历史回滚版本,需要一致性读(可以增加读锁,当前读)

程序员成长契约:从编码到技术主权的三层跃迁 在软件工程实践中,‘程序员’不仅是写代码的角色,更是系统可靠性、业务可维护性与技术决策伦理的共同承担者。理解.NET运行时底层机制(如async/await状态机、ThreadPool调度、GC行为)是构建高可信度系统的前提;掌握源码级溯源能力与跨栈穿透分析方法,则能突破框架黑盒依赖,实现真正可控的技术选型。这种深度能力支撑起‘技术主权’——即对系统行为可解释、可验证、可演进的掌控力。它广泛应用于金融交易、政务云、电商秒杀等强一致性与高可用场景,并为中级开发者提供从‘能干活’到‘懂设计、敢决策’的职业升级路 阅读详情

相关推荐

应用层DoS攻击漏洞挖掘与防御:从攻击视角构建系统健壮性

拒绝服务攻击(DoS)是网络安全领域的基础性威胁之一,其核心原理是通过耗尽目标系统的关键资源(如CPU、内存、连接池、磁盘I/O),使其无法为正常用户提供服务。从技术价值看,深入理解DoS攻击机制,不仅能提升系统抗压能力,更是构建纵深防御体系的关键环节。在应用层,DoS漏洞常潜藏于业务逻辑深处,例如通过精心构造的请求触发正则表达式回溯爆炸、哈希表碰撞或利用缓存穿透等设计缺陷,实现资源耗尽。这些攻击手法在API滥用、文件上传、XML解析等常见场景中尤为突出。本文聚焦于应用层DoS的实战挖掘,系统梳理了资源耗尽

weixin_34268310的博客 402

java 执行sql 停住了_JAVA程序卡在sql语句不执行了

publicclassTest{publicstaticvoidmain(String[]args){Connectionconn=null;Statementstm=null;ResultSetrs=null;try{System.out.println("开始连接");conn=DBManager.getConnection(...public class Test {public stati...

weixin_42139042的博客 1441

微服务落地实战:从单体切口到服务边界的12个关键决策

微服务架构是一种将单体应用按业务能力拆分为独立部署、松耦合服务的技术范式,其核心原理在于通过明确的服务边界、进程隔离与轻量通信实现弹性伸缩与快速迭代。技术价值体现在故障隔离增强、团队自治提升及持续交付加速,广泛应用于云原生IaaS平台、企业级中台系统和高并发SaaS产品等场景。本文聚焦真实生产环境下的微服务演进路径,不依赖理想化DDD建模或前沿框架,而是基于编译熵、部署熵、测试熵识别单体临界点,并以租户配额服务为切口,详解服务边界定义、HTTP/1.1通信取舍、最终一致性落地及F5+Consul混合服务发现

SailingAptech的专栏 449

怎么看java请求耗时_使用Filter计算请求耗时

使用Filter计算请求耗时有时为了更详细的检测web系统性能,需要计算每次请求到响应所耗费的时间,然后看看哪些请求耗时较多,从而有针对性的进行优化操作,此时可以使用Filter过滤器自己实现一个请求响应耗时计算的功能。每个请求在到达目标资源之前都会被Filter过滤器拦截,我们可以在请求到达之前获取系统当前的时间,每个响应也会先被Filter过滤器拦截,我们在此时也获取一下系统的当前时间,之后将...

weixin_39742065的博客 1205

CentOS 7 + Packetbeat + ELK 网络可观测性实战部署指南

网络可观测性是现代运维与安全分析的基础能力,其核心在于从原始流量中提取结构化、语义化的协议层指标。Packetbeat 作为轻量级网络数据包分析器,工作在 OSI 四层及以上,可深度解析 HTTP、DNS、MySQL 等协议载荷,提供远超 Metricbeat 的穿透式可见性;而 CentOS 7 凭借稳定内核(3.10)、成熟 SELinux 策略及 ELK 官方强兼容性,仍是政企生产环境中最可靠的操作系统基线。该方案不依赖 Docker,规避容器网络与权限陷阱,适用于 VMware 虚拟机、物理服务器等

a1311010193的博客 430

Vibe Coding:AI时代工程师的意图驱动开发范式

Vibe Coding 是一种以人类意图为核心、由AI承担语法实现的新型软件工程范式,其本质是开发者角色从代码编写者向系统设计者、边界定义者与质量守门人的跃迁。它依托多模态上下文理解、项目级语义锚定与迭代式提示工程等关键技术,显著降低boilerplate劳动消耗,释放认知带宽用于架构设计、安全合规与可观测性建设。该范式已在政务系统、微服务升级、IoT平台等强约束场景中验证可行性,成为中级开发者能力进阶、技术管理者决策支撑及高校课程革新的关键抓手。

dicui3114的博客 407

慢sql可能导致的异常记录

3.连接池耗尽,全库查询变慢1. Broken pipe问题分析。

weixin_33387378的博客 313

当NetApp 7-mode遇到单控制器故障:HA模式手动修复全记录

本文详细记录了NetApp 7-mode存储系统在单控制器故障时的应急修复过程,包括HA配置重建、磁盘初始化和业务恢复等关键步骤。通过实战案例解析如何解决`VIA Interconnect is down`等典型问题,为企业级存储系统的高可用保障提供实用指南。

yolo5detector的博客 246

filter造成的性能问题

filter这个词总让人很费解,它下一级可以挂 一个子节点,二个子节点,三个子节点...。      挂一个子节点意思过滤,如对全表进行扫描后,按照条件过滤,丢弃不满足条件的数据。      挂二个子节点类似是nest loop。      挂三个子节点类似1和2做nest loop,结果集再与3做nest loop(这个是我推测的)。 SQL> set linesize 300 SQL

关注系统性能调优 3919

统计信号处理基础 习题解答1-1

1-1:在雷达习题中,双程延时时间的估计量具有PDF τ0~Nτ0,στ02,其中τ0是真值。假如要估计距离请提出一种估计量R,并求它的PDF。然后,确定标准偏差στ0,使得距离估计值的99%在真值的100m以内,对电磁波传播速度取c=3×108m/s。 解答: 问题1: 由于电磁波传播速度c,信号可观察的双程传播延时τ0和双程传播距离τ0满足关系: R=cτ02 因此可采用如下估计量: R=cτ02 问题2: 由于τ0满足正态分布,且: Eτ0=τ0 varτ0=στ02 那么: E

weixin_43270276的博客 2806

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1446

Stream如何提高遍历集合效率?

什么是 Stream? 现在很多大数据量系统中都存在分表分库的情况。例如,电商系统中的订单表,常常使用用户 ID 的 Hash 值来实现分表分库,这样是为了减少单个表的数据量,优化用户查询订单的速度。 但在后台管理员审核订单时,他们需要将各个数据源的数据查询到应用层之后进行合并操作。 例如,当我们需要查询出过滤条件下的所有订单,并按照订单的某个条件进行排序,单个数据源查询出来的数据是可以按照某个条件进行排序的,但多个数据源查询出来已经排序好的数据,并不代表合并后是正确的排序,所以我们需要在应用层.

木卯的专栏 711

Kali Linux实战:Aircrack-ng破解Wi-Fi密码的完整流程与常见问题解决

本文详细介绍了在Kali Linux中使用Aircrack-ng套件进行Wi-Fi密码破解的完整流程,包括环境准备、无线网卡配置、网络扫描、握手包捕获与字典破解等关键步骤。同时针对无线网卡不支持监听模式、无法捕获握手包等常见问题提供了实用解决方案,帮助安全研究人员有效评估无线网络安全性。

weixin_29323049的博客 296

GPT-4o作为程序员第二大脑的实战定位与工作流

在AI编程工具快速普及的今天,'AI辅助编程'已从概念走向工程落地。理解大语言模型(如GPT-4o)的本质,关键在于区分其与传统代码补全、搜索引擎或自动化脚本生成器的根本差异——它是一种上下文感知的工程知识压缩器,能将海量生产实践沉淀为可即时调用的技术决策支持。其核心价值不在于替代编码,而在于加速认知闭环:从模糊需求→结构化分析→跨层根因推理→可验证方案输出。尤其在高并发架构设计、OOM级Bug定位、API文档同步、新技术路径规划及跨角色协作等场景中,GPT-4o正成为程序员提升技术判断力与知识复用效率的关

chuanao8829的博客 389

对比学习损失函数避坑指南:为什么你的自监督模型不收敛?

本文深入剖析对比学习损失函数中的关键陷阱,揭示自监督模型不收敛的根本原因。通过分析温度系数选择、负样本采样策略和特征归一化等核心因素,提供实用解决方案。实验数据表明,正确设置温度系数τ(建议0.07起)可提升30%性能,而MoCo风格的负样本队列比SimCLR方案在小批量时准确率高6-8%。

nokia的博客 922

SHAP图全解析:从理论到实践,教你如何读懂和优化模型特征

本文全面解析SHAP图,从博弈论基础到实战应用,指导读者如何解读和利用SHAP值优化机器学习模型。通过详解特征重要性条形图、小提琴图、依赖图及决策图等关键可视化工具,帮助数据科学家精准诊断模型、识别特征交互,并将洞见转化为特征工程与模型调试的实际行动,有效提升模型可解释性与性能。

svm4gardener的博客 188

后端工程师的技术栈进阶笔记:从基础到实战

你写的每个查询都该用参数绑定,每个用户操作都该校验资源归属,每个上传文件都该做类型检查和大小限制。至于性能和安全的交叉点,最典型的就是认证令牌:JWT虽然好用,但如何在签名算法、过期时间、刷新策略之间取得平衡?缓存登录状态能提升速度,但如何在防渗透时快速失效?这些都需要你从架构层面思考,而非简单调用一个库。性能调优同样是硬功夫。不要一上来就调JVM参数,先看你的代码有没有做无意义的对象拷贝,有没有不必要的锁竞争。

2501_90410679的博客 9

Cortex-M TrustZone实战:从硬件隔离到安全交互的嵌入式开发指南

在嵌入式系统开发中,硬件安全隔离是构建可信执行环境(TEE)的核心技术。其原理是通过处理器硬件机制,将系统资源划分为安全与非安全域,实现内存、外设和代码的强制访问控制。这项技术的核心价值在于,它能在单一芯片上为资源受限的物联网(IoT)设备、智能传感器等提供芯片级的安全基础,无需依赖外置安全元件,从而降低BOM成本并简化设计。典型的应用场景包括保护设备密钥、实现安全启动、构建安全服务(如加密、密钥管理)以供应用程序调用。本文聚焦于Arm Cortex-M系列微控制器上的TrustZone技术实现,针对开发中

weixin_42639246的博客 300

Python连接Neo4j实战:图数据库建模、Cypher查询与性能优化

图数据库是一种以‘关系’为一等公民的新型数据存储范式,其核心原理在于将实体间关联直接映射为原生存储结构,支持高效路径遍历与图算法计算。相比关系型数据库依赖JOIN和递归应用层处理,图数据库通过Cypher查询语言和Bolt协议实现低延迟、高表达力的关系推理,技术价值体现在复杂网络分析、实时推荐、故障传播追踪等强关联场景。典型应用包括社交人脉挖掘、物流路径优化、风控关系链识别等。本文聚焦Python生态下Neo4j驱动选型、连接池配置、Cypher参数化查询、UNWIND批量导入及gds图算法集成等关键实践,

weixin_34323858的博客 369

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1195

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AI时代程序员生存指南:识别代码洼地与决策高地

在人工智能加速渗透软件开发的背景下,'程序员是否会被取代'本质是工程能力坐标的重构问题。AI已能稳定生成标准化CRUD、单元测试、日志埋点等模式化代码,但其核心局限在于缺乏业务上下文理解、多目标权衡和模糊信息处理能力。真正不可替代的是架构权衡决策、需求模糊澄清、故障根因定位等高阶工程实践。技术价值不在于替代人力,而在于将人类从重复劳动中解放,聚焦于定义约束规则、设计提示词边界、构建LLM输出校验流水线等AI治理工作。本文基于真实项目日志与事故复盘,系统梳理AI已接管的六大代码洼地与人类必须坚守的三大决策高地

angzhan5306的博客 322

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

高并发社交关系系统中的读写一致性设计实践

分布式缓存与数据库双写一致是高并发系统的核心挑战,其本质在于协调数据在多个副本间的可见性、时序与语义一致性。传统方案依赖强同步或分布式锁,但易引发性能瓶颈与故障放大;现代工程实践更倾向通过版本控制、异步批量、数据亲和性等机制,在可控不一致窗口内达成最终一致。本文聚焦好友关系等典型社交场景,深入解析基于用户ID路由、CAS版本校验、BatchTask聚合写入与Notification驱动同步的轻量级协调架构,覆盖从请求路由、缓存写入、DB落库到灾备重建的全链路设计,并强调可验证、可回滚、可归因的工程落地原则。

unixboy 432

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

编程能力提升的9个核心方法:从刻意练习到工程思维

编程能力的本质是解决问题和工程化实现的能力,这需要系统性的方法而非零散的知识点。从概念上讲,编程能力的提升依赖于刻意练习、深度学习和项目驱动等核心原理。刻意练习强调走出舒适区,通过设定明确目标、主动寻求代码审查和重构代码来获得有效反馈;深度学习则主张先深入掌握一个技术栈,建立知识锚点,理解其底层原理而非仅仅停留在使用层面。这些方法的技术价值在于能将编程从一项技能转化为可复用的能力,显著提升代码质量和开发效率。在实际应用场景中,无论是应对复杂业务逻辑、进行系统设计,还是排查线上问题,这些方法都能帮助开发者更从

weixin_34302561的博客 328

软件测试面试:从理论到实战的思维跃迁与高频考点解析

软件测试是保障软件质量的关键环节,其核心在于通过系统化的方法验证软件行为是否符合预期。从测试生命周期、黑盒白盒等基础方法,到功能、性能、安全等测试类型,构成了完整的质量保障体系。掌握这些原理能高效发现缺陷,其技术价值在于提升交付效率与产品可靠性。在Web、App等应用场景中,测试人员需将理论转化为解决实际问题的能力。本文聚焦软件测试面试,深入剖析面试官考察的**解决实际问题的思维过程**与**知识体系完整度**,通过解读高频问题背后的意图,帮助候选人完成从背题到解题的思维转变,从容应对从用例设计到缺陷排查等

weixin_30301449的博客 544

java中执行sql很慢_JavaEE后台开发过程中,为什么会有慢SQL问题?如何解决?

我昨天刚好碰到一个问题,应用服务器隔一小段时间就自动重启,最后才定位到是慢查询的问题,生产环境停摆了半天!慢查询:超过指定时间的SQL查询。慢查询的危害:轻者影响整个系统性能,重者直接导致服务重启或死机。开始慢查询记录日志:使用set global slow_query_log=on;开启慢查询日志记录。然后使用show variables like 'slow%';查找慢查询相关情况,除了能看到...

weixin_42501688的博客 1845

JAVA三大器介绍

JAVA三大器

weixin_69292345的博客 999
上一篇: idea java 乱码 问号
Parachutist-One
博客等级 码龄10年 2粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值