java技术圈 为您找到相关结果 360

初识 NIO, 你了解io 和nio吗? 了解直接缓冲区和非直接缓冲区的区别吗?_兮家小二的博客

一、nio 是什么? 1、Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始) 2、Java NIO提供了与标准IO不同的IO工作方式。 3、nio 主要面向于网络编程 二、nio 和 io 的区别? 1、IO基于字节流和字符流进行操作的 2、NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 3、NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。 io 流实现过程 数据传递是单向的,写数据只管把数据往文件丢,读也是同理 并且 io 基本都是非直接缓冲区传递(速度慢) nio 实现过程 先...阅读全文

博文 2023-09-13 16:43:52 CSDN博客

Java集合浅学(一)Collection概述,新手不容错过!持续更新中

### 前言 这个系列是我在学习Java集合这部分时候,结合书籍和Java提供的api整理的部分知识,也参考了一些网络上的文章,如果错误,望大家指出。希望本系列文章对大家学习Java有所帮助,也可以回顾下这部分的基础知识,温故而知新。 ### 集合概述 #### 1.1 数组的特点 Java是一种面向对象语言,对一个事物的描述都是以对象的形式存在,为了方便操作这些对象,就需要把这些对象存储起来。为容纳一组对象,我们最适宜的选择就是Array数组;而且容纳一系列的基础数据类型的话,更是必须采用数组。 我们通过一个小案例来回顾一下之前的数组知识。数组不仅可以存放基本数据类型也可以容纳属于同一种类型的对象。 **数组案例:一个小班有三个学生,请打印学生的姓名和年龄?** 步骤: - 有三个学生,放...阅读全文

博文 2023-10-26 11:39:39 YDYXCODE

[新版16章+电子书]SpringBoot+Vue3 项目实战,打造企业级在线办公系统

![1.png](http://static.itsharecircle.com/231221/b18ef7e51c2b5d7d0fdbedbfa409a057.png) 一个完整的在线办公系统具备哪些功能: 1、线下会议管理功能 2、审批会议申请功能 3、 TRTC在线视频会议功能 4、罚款模块 5、请假管理 6、报销管理 那么,如何去开发这样一个在线办公的系统,这样的系统用到哪些技术才能实现?接下来,我将带着大家一步步来开发这样的办公系统。 这个项目我用的技术有:SpringBoot 2.4.1,SpringMVC 5.3.1,MyBatis 3.5.7,VUE 3.0.3,ElementUI plus 1.0.2。 第一步,环境搭建 数据库mysql我用的是8.0版本,使用Navica...阅读全文

博文 2023-12-21 11:39:37 giadnbhaytgw

Java并发编程指南15:Fork/join并发框架与工作窃取算法剖析

创文章,转载请注明: 转载自并发编程网 – ifeve.com 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和,最终汇总这10个子任务的结果。Fork/Join的运行流程图如下: 2. 工作窃取算法 工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来...阅读全文

博文 2023-12-01 10:42:03 阿里云开发者社区

[完结13章]一课掌握Java并发编程精髓

![1.png](http://static.itsharecircle.com/231222/68e5919d4e1d238e765721ce81d62439.png) Java并发编程从入门到进阶 多场景实战,众所周知,并发编程是优秀工程师的标准之一,但知识庞杂,复杂性高,常常让人望而却步。但如果没有掌握背后的核心原理,你开发的代码可能会成为难以调试和优化的头疼问题。在此,我将通过上百个案例场景驱动教学+动画直观演示,帮助大家深入、直观地理解并发编程核心概念和底层原理。助力大家在实际工作和面试中都能尽早脱颖而出。 首先,我们先来了解关于并发的基本概念。 并发情况主要会引出三个基本概念,分别是原子性、可见性、有序性三个基本概念 Java中线程的状态分为6种: 1. 初始(NEW):新创建了...阅读全文

博文 2023-12-22 10:15:14 udbmaidns

双列集合Map不再难懂:轻松掌握这些知识点!

## 1 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,学号与学生等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 Map 接口下的集合与Collection 接口下的集合,他们的存储形式有所不同,如下图: ![image.png](http://static.itsharecircle.com/231205/ebb5393154fd764d6d07353910a6296c.png) Collection 集合,元素是独立的,存储的元素是一个一个的存储。Map中的集合,元素是成对出现。每个元素由键与值两部分组成,通过键可以找到所对应的值。所以我们前面所说 Collection是单列集...阅读全文

博文 2023-12-05 10:47:07 YDYXCODE

【Java】使用fastjson进行序列化时出现空指针异常问题研究 - shanml

最近在使用fastjson的JSONObject.toJSONString()方法将bean对象转为字符串的时候报如下错误: com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.58, class com.sun.proxy.$Proxy395, fieldName : 0 at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:523) at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSe...阅读全文

博文 2024-02-05 16:14:20 博客园

Java可视化UML工作流系统(Activiti7+SpringBoot)

下载地址:百度网盘第1章 清晰的学习目标,让学习更轻松首先项目演示了解项目整体情况,便于小伙伴通过本课程学习,能够最终做出的怎样的项目效果。同时,明确学习activiti工作流对今后工作的重要性,确立学习目标。1-1 玩转黑马项目,“技术+业务”能力齐飞试看第2章 开发前准备:环境搭建篇【选修】所谓“君欲善其事,必先利其器”,因此本章带着小伙伴们将课程所需环境一一构建起来,小伙伴们可以结合自己情况,有选择有重点的去学习。注意:MySQL安装时讲解了如何开启远程访问、设置电脑防火墙;Maven国内镜像仓库修改等。...2-1 JDK安装2-2 Maven安装2-3 MySQL安装2-4 SpringBoot项目创建2-5 BPMN插件第3章 项目从git下载与打包部署很多小伙伴在别的实战课程中...阅读全文

博文 2020-08-11 19:58:16 jmterorh

一课掌握Java并发编程精髓(完结13章)

一课掌握Java并发编程精髓(完结13章) 分享一套Java课程——一课掌握Java并发编程精髓(完结13章),附源码+PDF课件下载。 并发编程 1.多线程 Java 是最先支持多线程的开发的语言之一,Java 从一开始就支持了多线程能力。由于现在的 CPU 已经多是多核处理器了,是可以同时执行多个线程的。 多线程优点 多线程技术使程序的响应速度更快 ,可以在进行其它工作的同时一直处于活动状态,程序性能得到提升。 性能提升的本质 就是榨取硬件的剩余价值(硬件利用率)。 并行与并发 单核 cpu 下,线程实际是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片,分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。 总结为一句话就是...阅读全文

博文 2023-12-20 16:06:06 woaiwodejia333

InitiatingHeapOccupancyPercent介绍--转载

参数简介InitiatingHeapOccupancyPercent,简称IHOP。我们都知道在G1中,主要的收集方式是Minor GC(回收整个年轻代Young Region)和Mixed GC(回收整个年轻代Young Region & 部分老年代Old Region)。什么?你跟我说还有Full GC。其实在G1设计之初,Oracle认为G1依托Minor GC和Mixed GC就够了,如果你出现了Full GC那说明你的参数设置的不正确。所以在早期版本(JDK10之前)的G1实现中,Oracle只设计了串行的Full GC来擦**(单线程的Mark-Compact)。但是程序总是复杂的,尽管我们极力避免,在一些特殊的情况下如并发回收的速度跟不上分配的速度等,我们依然会面临Full G...阅读全文

博文 2024-01-20 19:03:47 知乎

高效计算 TP99 的方法:从排序到优化

在高性能计算和大数据处理中,TP99(第99百分位响应时间)常被用来衡量系统的稳定性和性能表现。本文将介绍几种计算TP99的常用方法,并讨论如何对算法进行优化,以提高计算效率。1. 什么是 TP99?TP99 是第99百分位响应时间,表示排在前99%的请求时间。在实际应用中,它用于衡量系统在高负载下的稳定性。换句话说,TP99 计算的是一组数据中排在第99%的那个值。2. 使用排序算法计算 TP99最直接的方法是将数据集进行排序,然后选择位于第 99% 处的元素。示例代码import java.util.List; import java.util.stream.Collectors; public class PercentileCalculator { /** * 计算百分位 * * @...阅读全文

博文 2024-06-26 19:57:04 zhidiantech

【完结26章】Java主流分布式解决方案多场景设计与实战

【完结26章】Java主流分布式解决方案多场景设计与实战 给大家分享一套java课程——Java主流分布式解决方案多场景设计与实战,已完结26章,附源码+文档下载。 Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下: Client客户端:负责存储协议的接入,节点负载均衡 MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map MDS元数据服务:负责保存文件系统的元数据,管理目录结构 OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。 分布式文件系统(D...阅读全文

博文 2023-12-22 11:30:36 woaiwodejia333

基于C++从0到1手写Linux高性能网络编程框架-15章

参考资料地址1:https://pan.baidu.com/s/1i8FuLluEUV3BJFphjKWvhQ 提取码:zvet 参考资料地址2:https://pan.baidu.com/s/1MgD4BdeD6V6HfXkoMAZ5Hw 提取码:l5t4 网络编程概述 管道(父子进程)、消息队列(内核经营消息队列)、共享内存(创建一个空间)、信号(通过pid号通信)、信号量(对临界资源,共享内存做P、V控制) 。 特点:依赖于Linux内核 A B两个通信基于内核。缺陷:无法多机通信 (不适用与两台不同的电脑) TCP和UDP对比: TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前 不需 要建立连接 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无...阅读全文

博文 2023-12-06 15:18:14 giadnbhaytgw

java使用nio读写文件_使用nio读取文件_小码农叔叔的博客

IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作。2) 内核空间与用户空间。3) 虚拟内存。4) 分页技术 一,虚拟存储器 虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 虚拟存储器的三大能力: ①将主存看成是一个存储在磁盘上的地址空间的高速缓存。 ②为每个进程提供了一个一致的地址空间。 ③保护每个进程的地址空间不被其他进程破坏。 虚拟内存的两大好处: ① 一个以上的虚拟地址可指向同一个物理内存地址。 ② 虚拟内存空间可大于实际可用的硬件内存。 二,用户空间与内核空间 设虚拟地址为32位...阅读全文

博文 2023-05-15 10:50:14 CSDN博客

JDBC快速入门:看我如何用JDBC数据库连接池,轻松解决大量并发请求问题!

我们已经知道JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,也是大多数Java开发者与数据库打交道的必备工具。但是,你是否知道,JDBC在处理大量并发请求时,可能会遇到一些问题?这就是我们今天要讨论的主题——JDBC数据库连接池。 首先,让我们来了解一下什么是数据库连接池。 ## 一、数据库连接池简介 JDBC连接池,全称为Java多线程数据库连接池,是一种用于管理数据库连接的技术。其主要作用是减少每次请求时创建和释放数据库连接的开销,以此提高系统性能。 在应用程序和数据库之间,JDBC连接池会建立一个连接池,当需要访问数据库时,无需每次都重新创建连接,而是直接从池中获取已有的连接。 ![image.png](http://static.itsharecircle.c...阅读全文

从入门到精通:集合工具类Collections全攻略!

>在之前的文章中,我们学习了单列集合的两大接口及其常用的实现类;在这些接口或实现类中,为我们提供了不少的实用的方法。 本篇文章我们来介绍一种java开发者为我们提供了一个工具类,让我们更好的来使用集合 ## Collections 工具类 ### 介绍 Collections 是一个操作Set,List,Map等的集合工具类。它提供了一系列静态的方法对集合元素进行排序、查询和修改等的操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 ### 常用功能 通过java的api文档,可以看到Collections了很多方法,我们在此就挑选几个常用的功能,为大家演示一下使用: - public static void shuffle(List list) 打乱顺序:打乱集合顺序...阅读全文

博文 2023-11-28 14:20:48 YDYXCODE

数据库连接神器:JDBC的基本概述、组成及工作原理全解析!

>JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的 Java API,是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够交给数据库执行SQL语句。 在信息化时代,数据库已经成为了存储和管理数据的重要工具。而Java作为一种广泛使用的编程语言,其与数据库的交互就显得尤为重要。JDBC就是为了解决这个问题而生的。通过JDBC,我们可以在Java程序中轻松地执行SQL语句,实现对数据库的增删改查操作。今天我们就来聊一聊JDBC的相关概念。 ## 一、JDBC简介 #### 概念: - JDBC(Java DataBase Connectivity) :Java数据库连接技术。 - 具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删...阅读全文

博文 2023-12-22 10:24:27 YDYXCODE

【小家java】Java线程池之---ForkJoinPool线程池的使用以及原理_forkjoinpool自定义线程池

相关阅读 【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(简述十大新特性) 饱受赞誉 【小家java】java9新特性(简述十大新特性) 褒贬不一 【小家java】java10新特性(简述十大新特性) 小步迭代 【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本 【小家java】Java中的线程池,你真的用对了吗?(教你用正确的姿势使用线程池) 小家Java】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 【小家java】BlockingQueue阻塞队列详解以及5...阅读全文

博文 2023-12-01 10:52:18 CSDN博客

Java开发者必备:Maven简介及使用方法详解!

今天我们来介绍一个在Java开发中非常重要的工具——Maven。如果你是一名Java开发者,那么你一定不会对Maven感到陌生。但是,对于一些新手来说,可能还不太了解Maven是什么,它有什么作用,以及如何使用它。接下来,就让我们一起来深入了解一下Maven吧! ## 一、maven简介 ### Maven是什么 Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。maven是基于Ant 的构建工具,Ant 有...阅读全文

博文 2023-12-07 16:23:53 YDYXCODE

Maven依赖排除 禁止依赖传递 取消依赖的方法

大家都知道Maven的优点是依赖管理,特别是前期使用ANT的开发者都有很多感触。最近要开发一个java工程,定的要使用maven,会使用hadoop和hbase的客户端,而引入一个hadoop-client的jar或者hbase的jar包,会依赖十几个其他的jar包,而这些jar包的功能我又用不上,所以这种依赖反倒成了工程瘦身的负担。关键我还有强迫症,见到这些对工程无用的包,我就抓狂。所以在网上百找千寻,找到了几个方法: 1. 项目间传递 如果我的当前项目是project1,project1要依赖project2,project1依赖project2的配置中加上true,表示依赖可选, com.projec...阅读全文

博文 2024-01-25 20:20:13 CSDN博客

告别繁琐操作!Maven常用命令一网打尽,让你的项目开发事半功倍!

Maven作为一款强大的项目管理工具,已经成为了Java开发者的必备技能。那么,如何才能更好地利用Maven来管理我们的项目呢?本文将为你介绍Maven的常用命令,让你的项目构建更轻松! ## 一、maven 的概念模型 Maven 包含了一个项目对象模型 ,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 ![image.png](http://static.itsharecircle.com/231216/2df7096d761d101ecc0f27e0f0c7beb7.png) #### 项目对象模型 (Project Object Model) 一个 maven 工程都有一个 pom.xml 文...阅读全文

博文 2023-12-16 16:38:44 YDYXCODE

[升级16章+电子书]SpringBoot+Vue3 项目实战,打造企业级在线办公系统

![1.png](http://static.itsharecircle.com/231221/63b4e56185c6b291f708be52646cf255.png) SpringBoot+Vue3 项目实战,打造企业级在线办公系统,2023年升级版16章,附电子书!未来,在线协同办公将成为企业常态化的工作方式,今天就给大家讲讲关于在线办公的一个项目,项目采用了当下最流行的前后端分离架构及技术( Java、SSM、Vue3.0、工作流 )。 我将以业务为基础,贯穿前后端技术栈,获得企业级项目开发经验,结合Vue3、SSM、ElementUI等主流技术栈,打造流程完整、功能齐全、模块多样,真实可用的在线办公系统,喜欢大家会喜欢这样的一个项目。 下面我们就开始代码实践,感兴趣的朋友可以跟着一...阅读全文

博文 2023-12-21 10:10:26 muandhbw

JAVA互联网架构师专题/分布式/高并发/微服务

点击下载:JAVA互联网架构师专题/分布式/高并发/微服务课程目录JAVA架构课开班典礼【录播】致新加入同学的学习计划-诸葛(34分钟)【回放】IOC容器设计理念与核心注解的使用(6月5日 20:10-22:00)源码框架专题【回放】Spring Ioc容器源码解析(上)(6月12日 20:10-22:00)【回放】Spring Ioc容器源码解析(下)(6月14日 20:10-22:00)【回放】Spring Ioc容器解决循坏依赖(6月16日 20:10-22:00)【回放】Spring AOP 源码深度解析(一)(6月19日 20:10-22:00)【回放】Spring AOP 源码深度解析(二)(6月21日 20:10-22:00)【回放】Spring事务管理源码深度解析(6月23日...阅读全文

博文 2020-08-01 19:36:20 jmterorh

基于SpringBoot3.x+Vue3.x整合从0到1一步一步实现酒店管理系统

基于SpringBoot3.x+Vue3.x整合从0到1一步一步实现酒店管理系统 给大家分享一套课程——基于SpringBoot3.x+Vue3.x整合从0到1一步一步实现酒店管理系统,附源码+笔记+数据库脚本下载。 Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架...阅读全文

博文 2023-12-28 19:44:41 woaiwodejia333

浅谈下Fastjson的autotype绕过

前言继去年1.2.47 Fastjson被绕过之后,最近的1.2.68又出现了绕过。 正好前段时间翻了一遍Fastjson的源码,对整体逻辑有了一些了解,就尝试分析下autotype的校验过程,以及这两次绕过的思路。若有错误,还望指出。 autotype的校验为什么校验一直被绕过?1.2.24之后,fastjson对反序列化的类型进行了校验,主要就体现在ParserConfig.checkAutoType函数中 里面会对反序列化的类型进行黑白名单和校验,然后获取对应的Java类。 至于为什么没开启SupportAutoType属性依然会存在反序列化的危险呢? 可以看到在解析过程中,只要key值为@type时,就会进入checkAutoType函数尝试获取类。 而且校验SupportAutoT...阅读全文

博文 2024-03-18 11:16:58 Kingkk's Blog

MyBatis实战指南(一):从概念到特点,助你快速上手,提升开发效率!

>MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程。 大家好,今天我们要来聊聊一个在Java开发中非常实用的框架——MyBatis。你是否曾经因为数据库操作而感到困扰?是否曾经因为SQL语句的编写而烦恼?那么,MyBatis或许就是你的救星。 接下来,让我们一起来了解一下MyBatis的概念与特点吧! ## 一、MyBatis基本概念 - MyBatis 是一款优秀的半自动的ORM持久层框架,它支持自定义 SQL、存储过程以及高级映射。 - MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 - MyBatis 可以通过简单的 XML 或注解来配置和映射原...阅读全文

博文 2024-01-08 15:23:26 YDYXCODE

MyBatis实战指南(二):工作原理与基础使用详解

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。 ## 一、MyBatis的工作原理 ### 1.1 MyBatis的工作原理 工作原理图示: ![image.png](http://static.itsharecircle.com/240111/fb3da40016d1dcdc2b11db5767113d68.png) **1、读取MyBatis配置文件** mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息。 **2、加载映射文件(SQL映射文件,一般是XXXMapper.xml)** ...阅读全文

博文 2024-01-11 14:49:32 YDYXCODE

Java集合浅学(二)了解集合的框架体系结构及常用实现类,从入门到精通!

### 前言 通过Java基础的学习,我们掌握了主要的Java语言基本的语法,同时了解学习了Java语言的核心-面向对象编程思想。 从集合框架开始,也就是进入了java这些基础知识及面向对象思想进入实际应用编码的过程,通过jdk中集合这部分代码的阅读学习,就能发现这一点。 本计划在这篇中把框架体系和一些集合的常用方法一起编写。仔细考虑之后,本着不让突出重点,结构清晰的思路,所以把框架体系单独拉出来,为让各位看官对java的集合框架有个清晰的认识,最起码记住常用的几种常用实现类! 好的,我们进入正题。 ### 集合的框架体系结构 可以在很多书籍或者教程中看到,JAVAEE进阶知识的学习,JDK中提供了满足各种需求的API,主要是让我们去学习和了解它提供的各种API,在使用这些API之前,我们往...阅读全文

博文 2023-10-30 10:38:22 YDYXCODE

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题_arthas cpuusage

Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿 作者 | 张云翔 最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用 top -Hp 加 jstack 命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。CPU 负载过高一般是某个或某几个...阅读全文

博文 2024-03-13 11:20:01 CSDN博客

Java集合:双列集合HashMap的概念、特点及使用

HashMap是Java中的一个集合类,它实现了Map接口,提供了一种存储键值对的方式。你可以把它想象成一个没有固定大小和形状的储物柜,你可以随时往里面放东西,也可以随时取出东西。而且,这个储物柜还有一个神奇的功能,那就是无论你放进去的是什么,取出来的总是你放进去的那个。 上篇文章讲了Map接口的概念,以及Map接口中的常用方法和对Map集合的遍历,本篇文章我们将继续介绍另一个十分重要的双列集合—HashMap。 ## HashMap 概念 HashMap集合是Map接口的一个实现类,它用于存储键值映射关系,该集合的键和值允许为空,但键不能重复,且集合中的元素是无序的。 #### 特点 HashMap底层是由哈希表结构组成的,其实就是“数组+链表”的组合体,数组是HashMap的主体结构,链...阅读全文

博文 2023-12-12 10:40:31 YDYXCODE

Hive中rlike,like,not like,regexp区别与使用详解_hive rlike

1.like的使用详解 1.语法规则: 格式是A like B,其中A是字符串,B是表达式,表示能否用B去完全匹配A的内容,换句话说能否用B这个表达式去表示A的全部内容,注意这个和rlike是有区别的。返回的结果是True/False.B只能使用简单匹配符号 _和%,”_”表示任意单个字符,字符”%”表示任意数量的字符like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同都不行。 2.操作类型: strings3.使用描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B 的正则语法,则为TRUE;否则为FALSE。尤其注意NULL值的匹配,返回的结果不是FALSE和TRUE,而是null,其实除了is null ,is not...阅读全文

博文 2024-03-14 10:38:02 CSDN博客

MyBatis实战指南(三):常用注解及使用方法

在前面的两篇文章中,我们已经详细介绍了MyBatis的工作原理和基本使用。今天,我们将深入探讨MyBatis的一个重要特性——注解。如果你对MyBatis的注解还不熟悉,那么这篇文章将为你打开一扇新的大门。 ## 一、什么是注解(Annotation) 首先,我们需要明白什么是注解。注解 Annotation 是从JDK1.5开始引入的新技术。 在Java中,注解是一种用于描述代码的元数据,它可以被编译器、库和其他工具读取和使用。MyBatis的注解就是用来简化XML配置的,它们可以让你的代码更加简洁、易读。 **注解的作用:** - 不是程序本身,对程序作出解释 - 可以被其他程序读取到 **Annotation格式:** 注解是以@注解名的方式在代码中实现的,可以添加一些参数值 如:@S...阅读全文

博文 2024-01-18 16:18:24 YDYXCODE

Java 8 将List转换为Map_java stream流list转map

(3)确认好系统应用的专业技术,开展线上确定系统所划分的用户角色,而且依据用户角色划分明确所要构思的功能模块,对考试成绩分析系统系统设计关键划分别为管理人员和用户角色,并所采用的功能模块也随之不一样,可是系统的数据库系统完成内容就是互动的,用户随时都可以根据自己的喜好开展课程内容信息,针对系统工作员要根据自己的主抓信息进行线上信息的处理方法及实际操作,管理人员掌握到全部用户的基本数据信息,并依据实际需求第一时间处理处理。该系统的设计执行为成绩分析系统的运转打好基础,为成绩分析系统提供更好的标准...阅读全文

博文 2024-03-05 14:04:52 CSDN博客

Java序列化框架Kryo

Kryo 是一个Java序列化框架,它以其高效和快速的性能而闻名,通常用于高性能场景如网络通信、缓存、持久化存储以及大数据处理等。Kryo 通常比 Java 内置的序列化机制更快并且产生的序列化数据更小。以下是 Kryo 序列化库的一些关键特性:高效的性能:Kryo 是为了高性能而设计的,它在速度和序列化结果的尺寸上通常优于许多其他序列化库。易用性:Kryo 提供了一个简单的API,这使得进行序列化和反序列化操作变得容易。灵活的配置:Kryo 允许用户对序列化过程进行自定义配置,例如可以选择是否注册类,是否使用字段名进行序列化等。可插拔的序列化策略:可以为不同的类型指定不同的序列化器,也可以自定义序列化器。前向/后向兼容的版本控制:通过配置,可以允许不同版本的类之间相互序列化。Kryo 在 ...阅读全文

博文 2024-05-12 12:31:11 zhidiantech

【Java实战项目】SpringBoot + Vue3打造你的在线电子书平台!

今天给大家分享一个基础的Java实战项目,用SpringBoot和Vue3开发一个电子书平台,大家可以尝试做一下这个项目,以此来检验这段时间的学习成果!废话不多说,下面正式进入项目: ### 一、项目介绍 #### 1. 项目简介 在线电子书微实战项目是一个实践性的基础项目,主要目的是通过开发一个在线电子书网站来帮助入门学习和实践相关的技术。 预览链接:https://www.ydcode.cn/onLineBookList ![image.png](http://static.itsharecircle.com/240302/3d9959ac8a62edceb0f5d99d72c2ce82.png) 该项目涵盖了以下主要功能: - 电子书管理:主要包括电子书的基本信息、电子书的章节管理、章...阅读全文

博文 2024-03-02 15:33:39 YDYXCODE

Linux新手村必备!这些常用操作命令你掌握了吗?

在计算机的世界里,Linux操作系统以其强大的功能和灵活性受到了广大程序员和IT爱好者的喜爱。然而,对于初学者来说,Linux的操作命令可能会显得有些复杂和难以理解。 今天,我们就来一起探索一些Linux常用操作命令,让你的计算机操作更加流畅。 ### 一、目录操作 首先带大家了解一下Linux 系统目录: ``` ├── bin -> usr/bin # 用于存放二进制命令 ├── boot # 内核及引导系统程序所在的目录 ├── dev # 所有设备文件的目录(如磁盘、光驱等) ├── etc # 配置文件默认路径、服务启动命令存放目录 ├── home # 用户家目录,root用户为/root ├── lib -> usr/lib # 32位库文件存放目录 ├── lib64 -> ...阅读全文

博文 2024-01-25 15:09:28 YDYXCODE

maven-shade

[TOC] 一、 缘起编写java agent插件的时候,用到javassist修改字节码,插件用来记录调用链的,需要在方法的前后插入代码。突发奇想,用来看看javassist是怎么调用的,结果达不到预期效果,因为java agent中,javassist的代码已经加载过了,没插入记录调用链的代码,刚好看到guava中有介绍用maven-shade-plugin将guava repackage重命名包名,因此记录下。 二、maven-shade-plugin介绍maven-shade-plugin是一个maven打包插件,提供的功能比较丰富,使用也简单易懂。 1、简单打包简单打包只需要增加execution, 指定执行package的phase,为这个phase绑定global shade就...阅读全文

博文 2024-01-25 20:15:46 plugin介绍 | ZhengRun's Blog

使用 dmesg 和 gdb 诊断 Java 应用的 Core Dump 问题

## 引言 在 Java 应用中,尤其是在使用本地库(如通过 JNI 接口调用)的场景下,崩溃和 core dump(核心转储)的问题时有发生。这样的崩溃不仅会中断应用的正常运行,还会带来大量调试和排查的工作。本文将介绍如何使用 dmesg 和 gdb 工具分析和诊断 Java 应用的 core dump 问题,特别是在使用 Snappy 库时遇到的问题。 ## 使用 dmesg 检查 core dump 信息 当一个应用崩溃时,首先应该查看内核消息日志。dmesg 命令可以帮助我们快速获取内核日志并查看崩溃的详细信息。 示例 运行 dmesg 命令来查看最新的内核消息: dmesg | grep -i "segfault" 输出中可能包含类似以下信息: 123456.789012] mya...阅读全文

博文 2024-06-23 22:07:49 zhidiantech

使用CompletableFuture优化你的代码执行效率 - 冬至饮雪

这篇文章详细讲解java8中CompletableFuture的特性,方法以及实例. 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值,这时候,大家可能会去尝试使用Callable中的call方法,然后用Future返回结果,如下: public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); Future stringFuture = executor.submit(new Callable阅读全文

博文 2024-04-12 15:39:19 博客园

Content type 'application/json;charset=UTF-8' not supported异常的解决过程 - 背着泰山找黄河

首先说一下当时的场景,其实就是一个很简单的添加操作,后台传递的值是json格式的,如下图 ,后台对应的实体类, @Data @EqualsAndHashCode(callSuper = false) public class Route implements Serializable { private static final long serialVersionUID = 1L; /** * id */ private String id; /** * 设备id */ private String deviceId; /** * 路由地址 */ private String destNetwork; /** * 下一跳 */ private String nextHop; /** * 路...阅读全文

博文 2024-05-22 11:28:55 博客园

javaagent是什么

-javaagent 是 JVM 的一个命令行参数,用于指定一个或多个 Java 代理(Java Agent)JAR 文件,这些代理可以在 JVM 启动时或运行时动态地插入到应用程序中,以监控或修改其行为。Java Agent 的基本概念Java Agent 是一种特殊的 Java 程序,它利用 JVM 提供的 Instrumentation API 进行字节码操作,可以在以下方面发挥作用:性能监控:通过插桩监控代码执行的性能。AOP(面向切面编程):动态地修改类的字节码,添加横切关注点。调试和分析:在运行时收集和分析应用数据。安全管理:增加 Java 安全管理功能。使用 -javaagent 参数-javaagent 允许你在 JVM 启动时加载一个或多个 Java Agent。它的基本语...阅读全文

博文 2024-06-20 16:51:17 zhidiantech

6种常用Bean拷贝工具一览|Java 刷题打卡

本文正在参加「Java主题月 - Java 刷题打卡」,详情查看 活动链接 在我们日常的工作中,经常需要做对象的拷贝或转化,例如在传递参数时,把入参的DTO转化为PO存入数据库,在返回前端时把PO再转化为VO。如果再分的细一点,可能还会有DO(Domain Object),TO(Transfer Object) ,BO(business object)等对象,随着业务的划分越来越细,对象的拷贝工作也越来越频繁,所以本文就来梳理一下常用的对象拷贝工具和它们的差异。 常用的工具大概有以下几种: Apache BeanUtils Spring BeanUtils cglib BeanCopier Hutool BeanUtil Mapstruct Dozer 准备工作,创建两个类PO和DTO: @...阅读全文

博文 2024-03-29 14:40:30 掘金

Java如何打印Hbase rowkey

步骤1: 设置HBase环境与连接确保已经正确配置了HBase的客户端依赖(如hbase-client、hbase-common等),并设置了HBase的ZooKeeper地址。以下是一个简化的示例,假设您已经有了一个配置好的Configuration对象(conf)和表名(tableName):import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;// 创建...阅读全文

博文 2024-05-12 12:49:11 zhidiantech

说说 Spring 表达式语言(SpEL)中的各种表达式类型

1 文本表达式 文本表达式支持字符串、 日期 、 数字(正数 、 实数及十六进制数) 、 布尔类型及 null。其中的字符表达式可使用单引号来表示,形如:'Deniro'。如果表达式中包含单引号或者双引号字符,那么可以使用转义字符 /。 ExpressionParser parser = new SpelExpressionParser(); //字符串解析 String str = (String) parser.parseExpression("'你好'").getValue(); System.out.println(str); //整型解析 int intVal = (Integer) parser.parseExpression("0x2F").getValue(); System...阅读全文

博文 2024-02-23 16:15:35 掘金

Java异常与调优一站式解决方案

download:Java异常与调优一站式解决方案function dealDate(date1,date2){ date1 = new Date(date1);//如果传进来的是"yyyy-MM-dd"形式的字符串 date2 = new Date(date2); var year1 = date1.getFullYear(); var month1 = date1.getMonth()+1; var day1 = date1.getDate(); var dateMax1 = new Date(year1,month1,0); var dayMax1 = dateMax1.getDate(); var year2 = date2.getFullYear(); var month2 = d...阅读全文

博文 2021-06-25 18:19:23 kakayin123

理解 Java类加载器与Agent字节码插桩中的类加载问题

引言在 Java 编程中,理解类加载器的机制对开发复杂的应用和工具非常重要,尤其是在涉及 Java Agent 这样高级技术时更是如此。在本文中,我们将深入探讨 Java 类加载器的工作机制,并通过一个实际的 Java Agent 示例来展现如何解决类加载的问题。类加载器概述Java 的类加载器是负责将类文件加载到 JVM 中的组件。类加载器的工作分为三个主要的过程:加载、链接和初始化。类加载器通常按以下层次结构工作:引导类加载器(Bootstrap ClassLoader):JVM 自带的类加载器,用于加载核心类库如 java.lang.*。扩展类加载器(Extension ClassLoader):加载扩展目录中的类库应用类加载器(App ClassLoader):加载应用的类路径中的类...阅读全文

博文 2024-06-22 00:09:04 zhidiantech

javaagent使用指南 - rickiyang

今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到 字节码插桩,bTrace,Arthas后面才逐渐了解到Java还提供了这么个工具。 JVM启动前静态Instrument Javaagent 是什么? Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的 MANIFEST.MF 文件必须指定 Premain-Class 项。 Premain-Class 指定的那个类必须实现 premain() 方法。 premain 方法,从字面上理解,就是运行在 main 函数之前的的类。当Java 虚拟机启动时,在执行 main 函数之前,JVM 会先运行-javaa...阅读全文

博文 2024-06-24 10:37:14 博客园