- 博客(120)
- 收藏
- 关注
原创 【JVM】JVM调优原理、思路、真正意义上解决性能瓶颈(附实际调优案例)
在 JVM 上,最初是通过 JNI 调用来实现方法的反射调用,当 JVM 注意到通过反射经常访问某个方法时,它将生成字节码来执行相同的操作,称为膨胀(inflation)机制。默认是15次,可通过参数 -Dsun.reflect.inflationThreshold 进行控制,在小于该次数时会使用 JNI 的方式对方法进行调用,如果调用次数超过该次数就会使用字节码的方式生成方法调用。分析问题、定位问题、解决问题,三个角度去描述,描述你具体怎么做的。所以对这个问题分析,我们就要看gc的日志进行分析。
2024-09-26 11:02:41 979
原创 【JVM】一篇聊透内存泄露,栈内存溢出,JVM中的垃圾回收器超详细
为啥要有这个东西:在这里,先想一下,如果没有双亲委派,那么用户是不是可以自己定义一个java.lang.Object的同名类,java.lang.String的同名类,并把它放到ClassPath中,那么类之间的比较结果及类的唯一性将无法保证,因此,为什么需要双亲委派模型?:老年代的垃圾回收通常较少且耗时,因为老年代的对象通常较大,且需要全堆扫描。:在堆内存中,老年代的空间通常比新生代更大,适合存放长期存在的对象。:比软引用更弱,当垃圾回收器工作时,如果一个对象只被弱引用引用,就会被回收。
2024-09-26 08:35:48 1036
原创 【JVM】一篇文章彻底理解JVM的组成,各组件的底层实现逻辑
java文件通过java源码编译器进行编译为.class文件,存储的是字节码(二进制数据),类加载器,通过验证、准备、解析、初始化流程、将字节码数据读到方法区中,并在堆中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,通过编译器,将字节码翻译成底层系统指令,再交由 CPU 去执行。对于java来说,类加载器将.class文件(字节码二进制的数据),装载到jvm中,并将类的结构封装成一个class对象放到堆中。`.class文件,存储的是字节码(二进制数据)。
2024-09-24 14:20:10 761
原创 【JAVA】自动生成常量类、自动生成所需代码(附源码)
思路:选择一个想操作的表单或者页面,然后可选择所选择表单的字段及表名,制作两个按钮,一个按钮是去自动生成一个文本,在页面展示可复制,另一个按钮是生成一个java文件,这样对于开发者不管是直接使用java文件还是拷贝这个文本都比较方便,详细可看下方代码。在一个阳光明媚的下午,接到一个需求,大家都觉得自己去定义全局变量比较麻烦,后期维护也比较麻烦,所以能不能自动生成一下。
2024-09-18 17:13:27 933
原创 【JAVA】多线程的创建、线程池创建线程的方式(超详细)
当应用程序希望在任务提交失败时立刻知道,并进行错误处理或日志记录时,这种策略是合适的。例如,当任务的失败可能意味着系统的严重问题,开发者希望程序能立刻响应并处理这些异常情况时,可以使用。:当任务丢失是可以接受的,或者任务的重要性相对较低时,可以使用这个策略。:当系统希望优先处理最近提交的任务,并丢弃最早的任务以腾出空间时,可以使用这个策略。即,任务不会被丢弃或丢失,而是会由提交任务的线程自己执行。:这个策略会丢弃任务队列中最旧的任务,然后尝试提交新的任务。,即立即终止任务提交,并通知提交者任务提交失败。
2024-09-18 08:23:46 988
原创 【JAVA】一篇聊透百万级数据导入导出场景问题、大数据处理策略及优化方案、EasyExcel 和 EasyPOI的玩法详解
EasyExcel 是阿里巴巴开源的 Java 库,用于高效地处理 Excel 文件。它在处理大数据量时表现优异,具有低内存占用和高性能的特点。EasyPOI 是另一个流行的 Java 库,旨在简化 Excel 文件的操作。虽然它也提供了良好的性能,但在处理大数据量时,可能不如 EasyExcel 高效。
2024-09-14 09:57:24 778
原创 【JAVA】Spring Security框架三万字详解,看这一篇就够了
可以在SpringSecurity中创建自定义配置文件Java自定义配置用来管理用户信息,是UserDetailsService的一个实现,用来管理基于内存的用户信息。创建一个WebSecurityConfig文件:定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDetailsManager@EnableWebSecurity//Spring项目总需要添加此注解,SpringBoot项目中不需要@Bean。
2024-09-13 09:12:10 871
原创 【JAVA】数据脱敏技术(对称加密算法、非对称加密算法、哈希算法、消息认证码(MAC)算法、密钥交换算法)使用方法
数据脱敏(Data Masking)是指对数据进行处理,替换或掩盖其真实内容,以防止敏感信息被未经授权的用户访问。脱敏后的数据仍然能够保留原数据的格式和某些特征,但无法反映真实的敏感信息。其主要目的是保护隐私、遵守法律法规、以及降低数据泄露的风险。
2024-09-12 08:49:09 1418
原创 【数据库】瀚高数据库Windows/Linux、下载安装、高级用法、数据迁移(保姆篇)
在当今数据驱动的世界中,数据库系统的选择对企业和开发者至关重要。瀚高数据库(HangoDB)作为一种新兴的数据库解决方案,结合了高性能、易用性和灵活性,为各种应用场景提供了强大的支持。
2024-09-11 08:44:21 1264 1
原创 【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比
在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。所以,如果是高并发的业务系统,Undertow 是最佳选择。在SpringBoot应用的application.properties或application.yml中,可以调整Undertow的线程池设置。当你进行Tomcat调优发现在怎么调都无法满足需求的时候,Undertow容器在性能和内存上都优于Tomcat容器,因此选择Undertow容器并进行调优是更好的选择。所以只需更换一个依赖即可使用,还是很方便的。
2024-09-10 09:34:56 1134
原创 【JAVA】Tomcat性能优化、安全配置、资源控制以及运行模式超详细
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。
2024-09-09 11:25:27 1955
原创 【JAVA】影响及解决Spring Boot 依赖下载慢的问题
在使用 Spring Boot 开发应用程序时,依赖下载速度慢可能会成为一个常见的痛点。较长的下载时间不仅影响开发效率,还可能导致生产环境中的构建延迟。利用增量构建或增量编译来减少每次构建所需的时间。例如,Gradle 的增量构建和 Maven 的增量编译都能显著提升构建速度。配置构建缓存以减少重新下载和构建的时间。例如,Gradle 提供了构建缓存功能,可以通过。对于 Maven 和 Gradle,可以配置并行下载来加快依赖获取速度。Maven 可以通过。来分析和优化依赖项,找出不必要的或过时的依赖。
2024-09-04 09:41:38 761
原创 【数据库】达梦数据库下载、安装、基础与高级语法,以及与其他数据库的区别(保姆篇)
达梦数据库是由中国达梦数据库有限公司开发的关系型数据库系统,广泛应用于政府、金融等领域。它支持多种 SQL 标准,提供了高性能和高可用性,适合大规模数据处理和复杂查询。
2024-09-04 09:40:38 947
原创 【Protobuf】xml、json与protobuf有什么区别,protobuf详解(保姆篇)
Protocol Buffers(简称 Protobuf)是 Google 开发的一种语言中立、平台中立、可扩展的序列化结构数据的机制。它主要用于将数据结构序列化为二进制格式,以便于高效传输和存储。Protobuf 在性能、文件大小和数据兼容性方面有着显著的优势。Protobuf 适用于多种编程语言,包括 C++、Java、Python、Go 和 C# 等。本文将详细介绍 Protobuf 的工作原理、如何定义消息结构、生成代码及其在实际应用中的使用。Protobuf 使用.proto文件定义数据结构。
2024-09-02 18:07:17 900
原创 【JAVA】Log4j、Logback、JUL日志文件详解(保姆篇),以及如何去掉控制台没用的日志案例分享
log.configLog4j 是 Apache 提供的一个日志框架,它允许开发者根据需要配置日志输出。Log4j 的配置文件通常是 XML、JSON 或者 Properties 格式。
2024-09-02 08:55:03 798
原创 【Denuvo加密】黑神话悟空为什么没有破解版?Denuvo加密技术的详细解析与代码示例
加密技术的目的是保护数据免受未授权访问。对称加密:使用相同的密钥进行加密和解密。对称加密的优点在于其加密和解密速度较快,但密钥的分发和管理是一个挑战。非对称加密:使用一对密钥(公钥和私钥),公钥用于加密,私钥用于解密。非对称加密提供了更高的安全性,但加密和解密速度较慢。D加密技术是一种现代化的加密方法,它综合了对称加密和非对称加密的优点,用于保护游戏中的各种数据。这种技术不仅能高效地加密数据,还能保证数据的安全性,防止被非法访问和篡改。D加密技术在《黑神话:悟空》中的应用展示了现代游戏数据保护的先进方法。
2024-08-28 08:16:27 1123
原创 【PL/pgSQL】华为数据库GaussDB及PostgreSQL 数据库系统的过程语言
PL/pgSQL(Procedural Language/PostgreSQL Structured Query Language)是 PostgreSQL 数据库系统中的一种过程性编程语言。作为 PostgreSQL 的一种扩展,它允许用户编写复杂的存储过程、触发器和函数,实现数据库的高级功能。与存储过程不同,函数会返回一个值。BEGINEND;
2024-08-26 13:44:06 2292
原创 【笛卡尔积】深入理解笛卡尔积及其在SQL中的应用
笛卡尔积,或称为直积,是集合论中的一个基本概念。给定两个集合 ( A ) 和 ( B ),它们的笛卡尔积 ( A \times B ) 是一个包含所有可能的有序对的集合。形式化定义如下:例如,假设 ( A = {1, 2} ) 和 ( B = {x, y} ),那么 ( A \times B ) 将是:这个结果是所有可能的有序对组合,包含了每个元素的所有可能配对。
2024-08-26 09:50:56 1203
原创 【数据库】MySql基本引擎InnoDB、MyISAM、MEMORY、CSV、ARCHIVE(详细说明)
合理选择数据库存储引擎对于系统的性能、数据完整性、维护成本等方面都具有重要影响
2024-08-23 10:53:36 1042
原创 【JVM】JVM 实战调优指南赋案例(保姆篇)
即时编译器(JIT)将字节码编译为机器码,以提高运行时性能。热点编译(HotSpot Compilation):编译热点代码,提高执行效率。逃逸分析(Escape Analysis):优化对象的内存分配和回收。
2024-08-16 17:26:15 1255
原创 【JAVA】阿里巴巴 EasyExcel:高效的Excel处理解决方案
EasyExcel 是阿里巴巴开源的一个 Java 库,旨在提高 Excel 文件处理的性能。它是基于 POI 的封装,主要用于简化 Excel 文件的读写操作,并且在处理大数据量时表现出色。我们可以实现自定义转换器来处理特殊的数据格式,例如将日期格式化为特定的字符串格式。
2024-08-16 17:12:26 1128
原创 【JAVA】深入理解守护线程与非守护线程:概念、应用及示例
在多线程编程中,线程的管理是至关重要的。Java 提供了两种主要的线程类型:守护线程和非守护线程。理解它们的区别以及如何在实际应用中使用它们,对编写高效和稳定的程序至关重要。本文将深入探讨这两种线程的概念、应用场景,并通过实际代码示例帮助你掌握如何使用它们。守护线程是一种特殊类型的线程,它的存在不会阻止 JVM 退出。守护线程一般用于后台任务,如垃圾回收、监控任务等。当所有非守护线程都结束时,JVM 会退出,即使守护线程仍在运行。非守护线程是普通线程,它会阻止 JVM 退出,直到它们完成执行。
2024-08-15 08:31:21 1235
原创 【JAVA】阿里巴巴的 FastJson 深入解析与应用实例
FastJson是阿里巴巴开发的一个高性能的JSON库,它提供了快速的JSON序列化和反序列化功能。与其他JSON处理库相比,FastJson具有更快的解析速度、更低的内存占用和更高的灵活性。它能够轻松处理Java对象与JSON字符串之间的转换,并支持自定义序列化和反序列化。FastJson允许开发者通过实现和接口来自定义序列化和反序列化过程。return;} }return;} }
2024-08-14 08:37:35 967
原创 【JAVA】阿里巴巴的Arthas:Java应用诊断的利器
Arthas是阿里巴巴开源的Java诊断工具,主要用于动态分析和调试Java应用。它通过Java Agent技术,将自身注入到运行中的JVM中,从而实现对JVM内部状态的实时监控和操作。Arthas不仅可以帮助开发者定位性能瓶颈,还能实时监控应用的健康状况,是处理复杂生产环境问题的利器。主要功能包括:实时监控:提供应用的实时状态和性能数据。线程分析:查看线程堆栈信息,分析线程状态。堆转储分析:生成堆转储文件,帮助识别内存泄漏。方法调用跟踪:动态地跟踪方法的调用链,了解方法执行的详细信息。脚本支持。
2024-08-14 08:37:17 702
原创 【Regex】正则表达式详解:从基础到高级应用(保姆篇)
正则表达式是一种由特殊字符组成的字符串,用于描述文本模式。它可以匹配符合模式的文本、从文本中提取信息或替换文本中的匹配内容。
2024-08-09 16:59:44 1346
原创 【JAVA】深入理解 JEXL:Java 中的表达式语言
在现代软件开发中,动态计算和执行表达式是一项非常重要的能力。特别是在需要动态规则评估、配置文件解析以及灵活的业务逻辑实现等场景下,使用一种能够在运行时解析和执行表达式的工具显得尤为重要。JEXL(Java Expression Language)就是这样一种工具,它为 Java 开发者提供了强大的表达式解析和执行能力。JEXL 是一个基于 Java 的表达式语言,它允许开发者在运行时动态解析和执行字符串形式的表达式。
2024-08-09 08:47:32 1423
原创 【算法设计】深入理解波兰表达式与逆波兰表达式
在计算机科学与数学领域中,波兰表达式(Prefix Notation)和逆波兰表达式(Postfix Notation)是两种重要的表达式形式,它们在编程语言、计算器设计以及算法实现中有着广泛的应用。本文将详细探讨这两种表达式的定义、优势以及实际应用。
2024-08-09 08:44:55 847
原创 【Python脚本】定时任务脚本实现、自动关机等功能脚本实现(保姆篇)
这段代码利用多线程的方式提高了任务执行的效率,特别适合需要并发执行多个独立任务的场景,如发送多个通知或处理多个独立的数据处理任务。模块实现了根据时间注册和执行定时任务,并提供了实时的时间信息反馈和等待功能,使得任务的执行更加自动化和精确。它使用了多线程的方式,同时启动了多个线程来执行不同的任务,然后等待所有线程执行完毕后输出完成信息。这段代码的目的是确保输入数据的格式正确,以便后续的处理能够顺利进行。,用于检查输入数据的有效性。这段代码是一个并发执行多个任务的函数。,用于注册和执行定时任务。
2024-08-05 11:51:58 955
原创 【Pyinstaller】Python 项目打包为可输入参数的exe可执行文件(保姆篇)
PyInstaller 是一个用于将 Python 程序打包成独立可执行文件(executable)的工具。它能够将 Python 脚本和依赖的库、资源文件等打包成一个单独的可执行文件,适用于 Windows、macOS 和 Linux 等操作系统。主要特点和优势:PyInstaller 支持在多个操作系统上打包和生成可执行文件,包括 Windows、macOS 和各种 Linux 发行版。
2024-08-05 11:35:15 1162
原创 【Python脚本】编写一个自动化脚本来模拟在华为商城的操作图解示例(附源码)
这里自己输入一个时间,到了一定时间会自动去执行脚本,例如八点开抢可以设置7:59就开始疯狂点击。这里需要手动去输入验证码,因为验证码一天发很多次会上限,还是人为控制比较好。自动输入账号密码,并自动点击登陆按钮。跳转商品页面,并点击立即购买按钮。手动输入地址,并点击提交订单按钮。自动打开index页面。
2024-08-01 10:03:40 1589 2
原创 【Python】从0开始写脚本、Selenium详细教程、附源码案例(保姆篇)
Selenium是一个用于自动化浏览器操作的开源工具套件。它最初是为Web应用程序测试而创建的,但后来也被广泛用于网页数据抓取等任务。Selenium支持多种浏览器(如Chrome、Firefox、Safari等)和操作系统(Windows、Mac、Linux等),并提供了灵活的API来模拟用户在浏览器中的操作。
2024-07-31 10:27:45 1488
原创 【Python/PyCharm】卸载、安装、配置环境、及错误解决(保姆篇)
卸载Python,建议去控制面板,找到Python.exe和python.launcher,右键卸载即可。如果在安装的时候并未选择自动配置,或者下载错位置想要修改的,把以下两个变量新增或者修改一下即可。安装完如果双击应用出现这个,去官网重新下载32位,这是因为你之前安装过可能没清理干净的问题。下载完安装包双击安装即可,下面如图全部勾选,其他无脑next即可。双击安装包按图示安装即可,按照如图勾选即可自动配置环境变量。我这里为了稳定,没有下载最新的,下载的2023的64位。根据图示内容填入所需内容。
2024-07-30 10:41:01 1155
原创 【Jmeter】压力测试工具下载、安装、配置环境变量、中文设置、压测实战教程(超详细)
找到language=en 改为language=zh_CN,去掉注释。右键我的电脑-属性-高级系统设置-环境变量-path-新建bin路径。我这里下载的最新版5.6,java1.8是支持的。KB/sec:每秒从服务器端接收到的数据量;cmd测试,输入jmeter后会自动打开。直接解压即可,解压后的目录如下。配置(根据自己的请求地址配置)
2024-07-29 09:06:45 1244
原创 【微信小程序开发】API使用、自定义组件、页面实现图解超详细
个人理解是相当于在页面中有一小块是封装好的直接拿过来用类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成的component。看下面的代码知道怎么走的就行component代码json文件用来说明自己是一个组件代码js文件来构建这个组件的内容、数据、方法//js文件// 这里定义了innerText属性,属性值可以在组件使用时指定value: '我是自定义组件',},data: {// 这里是一些组件内部数据},methods: {// 这里是一个自定义方法。
2024-07-27 09:33:49 1141
原创 【微信小程序开发】从0-1注册、下载、安装、开发保姆篇教程(附Demo源码)
进入微信公众平台注册,选择小程序即可进行邮箱注册以及一系列的信息填入,这里选择个人,即可注册完成根据自己的操作系统下载对应的安装包进行安装即可(我的是64位):微信开发者工具下载地址下载完安装包双击解压无脑下一步即可,微信扫码打开,点击如图加号即可创建项目进入刚才注册页面,找到对应的AppID点击+号创建项目
2024-07-25 08:19:45 1260
原创 【Java常用设计模式】通俗易懂的玩转模板方法、责任链、代理、适配器、观察者模式(保姆篇)
又是一个大雨倾盆的清晨,继继续玩设计模式,让代码越来越优雅。
2024-07-24 08:24:36 1305
原创 【2024最新版】JavaScript前端面试篇,看这一篇就够了
在 JavaScript 中,当一个函数(我们称之为外部函数)返回另一个函数(内部函数)时,内部函数会保留对外部函数作用域的引用,这样即使外部函数已经执行完毕,内部函数仍然可以访问到外部函数的作用域,这就形成了一个闭包。闭包有很多用途,比如:创建私有变量:JavaScript 中没有原生的私有变量概念,但我们可以使用闭包来模拟私有变量。实现持久化的局部变量:正常情况下,函数的局部变量在函数执行完毕后就会被销毁,但如果我们将这个局部变量通过闭包暴露出去,那么这个局部变量就会一直存在。
2024-07-22 09:40:51 1112
原创 【2024最新版】Vue前端面试篇,看这一篇就够了
输入URL:用户在浏览器的地址栏中输入网页的URL。DNS解析:浏览器会通过DNS(域名系统)将网页的域名解析为对应的IP地址。如果浏览器或操作系统已经缓存了这个域名的IP地址,则可以跳过这一步。建立TCP连接:浏览器与服务器建立TCP连接,进行三次握手,确认连接已建立。发送HTTP请求:浏览器向服务器发送HTTP请求,请求中包含了要访问的网页文件,如HTML文件。服务器处理请求并返回HTTP响应:服务器处理浏览器的请求,然后返回一个HTTP响应,响应中包含了网页的HTML内容。浏览器解析HTML。
2024-07-20 10:54:49 1416
原创 【Linux/Windows】Wireshark抓包工具下载、安装、使用、数据分析、常用知识点
在一个阳光明媚的周五清晨,一起快乐的玩耍一下Wireshark。
2024-07-19 13:17:16 1923
空空如也
vue项目启动问题报错
2024-07-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人