![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 86
purple.taro
想生活的更好,希望得到你的帮忙。
展开
-
java之PO,VO,TO,QO,BO等
,本身还有部分业务逻辑的处理。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。但应是抽象出的业务对象, 可以和表对应, 也可以不 ,这根据业务的需要,个人觉得同 DTO( 数据传输对象 ),在 web 上传递。封装业务逻辑的 java 对象,通过调用 DAO 方法,结合 PO,VO 进行业务操作。在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。我们可以把教育经历对应一个 PO ,工作经历对应一个 PO ,社会关系对应一个 PO。原创 2023-04-15 07:10:57 · 858 阅读 · 1 评论 -
使用Guava retryer优雅的实现接口重调机制
Guava retryer在支持重试次数和重试频度控制基础上,能够兼容支持多个异常或者自定义实体对象的重试源定义,让重试功能有更多的灵活性。当发生重试之后,假如我们需要做一些额外的处理动作,比如发个告警邮件啥的,那么可以使用RetryListener。每次重试之后,guava-retrying会自动回调我们注册的监听。RetryerBuilder是一个factory创建者,可以定制设置重试源且可以支持多个重试源,可以配置重试次数或重试超时时间,以及可以配置等待时间间隔,创建重试者Retryer实例。转载 2022-10-09 10:49:43 · 344 阅读 · 0 评论 -
Java中 BigDecimal,80%的人都用错了....
一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用B转载 2022-04-14 15:24:10 · 219 阅读 · 0 评论 -
JAVA进阶之Agent
1、什么是 Java Agent笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门,通过这套后门可以对虚拟机方方面面进行监控与分析,甚至干预虚拟机的运行。Java Agent 又叫做 Java 探针,是在 JDK1.5 引入的一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能。2、Instrumenta转载 2022-04-12 12:25:51 · 2241 阅读 · 0 评论 -
深入剖析 Java 反序列化漏洞(下
简介: 在上篇文章中,小编有详细的介绍了序列化和反序列化的玩法,以及一些常见的坑点。 但是,高端的玩家往往不会仅限于此,熟悉接口开发的同学一定知道,能将数据对象很轻松的实现多平台之间的通信、对象持久化存储,序列化和反序列化是一种非常有效的手段,例如如下应用场景,对象必须 100% 实现序列化。 DUBBO:对象传输必须要实现序列化 RMI:Java 的一组拥护开发分布式应用程序 API,实现了不同操作系统之间程序的方法调用,RMI 的传输 100% 基于反序列化,Java RMI 的默认端口是 1099 .转载 2022-02-16 12:02:10 · 247 阅读 · 0 评论 -
深入剖析 Java 反序列化漏洞(上)
简介: 在上篇文章中,小编有详细的介绍了序列化和反序列化的玩法,以及一些常见的坑点。 但是,高端的玩家往往不会仅限于此,熟悉接口开发的同学一定知道,能将数据对象很轻松的实现多平台之间的通信、对象持久化存储,序列化和反序列化是一种非常有效的手段,例如如下应用场景,对象必须 100% 实现序列化。 DUBBO:对象传输必须要实现序列化 RMI:Java 的一组拥护开发分布式应用程序 API,实现了不同操作系统之间程序的方法调用,RMI 的传输 100% 基于反序列化,Java RMI 的默认端口是 1099 .转载 2022-02-16 11:57:28 · 193 阅读 · 0 评论 -
Servlet之Servlet Filter学习
Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。下面来详细介绍一.原创 2021-11-17 14:07:45 · 474 阅读 · 0 评论 -
spring security动态配置url权限认证
本文介绍的spring security动态配置url权限认证基于的是spring-boot-2.0.0、spring-security 5.X来编写的。笔者浏览完spring security官方文档之后,发现并没有详细的介绍说明如何动态的配置我们的url权限认证。spring security默认的权限配置确只会在启动工程的时候初始化一次url权限配置。但是实际情况我们项目的权限会随时动态的更改,这样我们就需要重新启动项目以便新配置的权限生效。这样的处理显然不合理。当然spring是具有非常好的拓展转载 2021-10-24 06:21:53 · 3232 阅读 · 0 评论 -
SpringSecurity + JWT 实现单点登录
本文我们来看下 SpringSecurity + JWT 实现单点登录操作,本文 2W 字,预计阅读时间 30 min,文章提供了代码骨架,建议收藏。一、什么是单点登陆单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统二、简单的运行机制单点登录的机制其实是比较简单的,用一个现实中的例子做比较。某公园内部有许多独立的景点,游客可以在各个景点门口单独买票。对.转载 2021-10-24 06:11:35 · 1147 阅读 · 0 评论 -
Java 压缩20M文件从30秒到1秒的优化过程,真不相信?
有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。 public static void zipFileNoBuffer() { File zipFile = new File(ZIP_FILE);转载 2021-10-19 10:55:12 · 135 阅读 · 0 评论 -
万字精美图文,带你掌握 JVM 内存布局及细节分析
前言本JVM系列属于本人学习过程当中总结的一些知识点,目的是想让读者更快地掌握JVM相关的知识要点,难免会有所侧重,若想要更加系统更加详细的学习JVM知识,还是需要去阅读专业的书籍和文档。本文主题内容:1、JVM 内存区域概览2、堆区的空间分配是怎么样?堆溢出的演示3、创建一个新对象内存是怎么分配的?4、方法区 到 Metaspace 元空间5、栈帧是什么?栈帧里有什么?怎么理解?6、本地方法栈8、程序计数器9、Code Cache 是什么?注:请 区分 JVM内存结构(内存布局) 和 J转载 2021-10-19 05:29:02 · 100 阅读 · 0 评论 -
彻底服了:HashMap 夺命二十一问,顶不住了!
如果在看这篇文章时,对HashMap的结构还不是很了解,可能下面提及到知识点对你会有些帮助。1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table;2:HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry<K,V>接口)实现,Ha转载 2021-10-17 06:23:51 · 92 阅读 · 0 评论 -
SpringBoot 总结:核心功能和优缺点
SpringBoot 核心功能1、独立运行Spring项目SpringBoot 可以以jar包形式独立运行,运行一个SpringBoot项目只需要通过java -jar xx.jar来运行2、内嵌servlet容器SpringBoot可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目3、提供starter简化Maven配置spring提供了一系列的start pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web,会转载 2021-10-17 06:01:37 · 1119 阅读 · 0 评论 -
MyBatis 的执行流程,写得也太全了吧!
前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandlerPS:本文基于MyBatis3.5.5版本源码注 意文末有:7701页互联网大厂面试题概要在MyBatis中,利用编程式..转载 2021-10-17 05:59:29 · 95 阅读 · 0 评论 -
死磕18个Java8日期处理,工作必用
Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。示例1:Java 8中获取今天的日期Java 8 中的 LocalDate 用于表示当天日期。和java.util.Date不同,它.转载 2021-10-17 05:57:39 · 90 阅读 · 0 评论 -
Java14 处理 NullPointerException 新方式,真的太香了!
在Java语言中,处理空指针往往是一件很头疼的事情,一不小心,说不定就搞出个线上Bug,让你的绩效考核拿到3.25。最近新出的Java14,相信大家都有所耳闻,那么今天就来看看,面对NullPointerException,Java14有哪些更好的处理方式呢?1.传统的 NullPointerException我们编码过程中呢,经常会使用链式调用的方式来写代码,这样写起来很方便,也很清晰,但是,一旦出现NullPointerException,那就头大了,因为你很难知道异常是在什么时候开始发生的。举转载 2021-10-17 05:50:11 · 133 阅读 · 0 评论 -
使用 Stream API 高逼格 优化 Java 代码!
Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读放大招,流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 菜肴:Dish.ja public class Dish { private String name; private转载 2021-10-17 05:41:57 · 72 阅读 · 0 评论 -
JAVA性能优化:35个小细节让你提升代码的运行效率
1.鼓励使用java8的函数式进行开发,主意其不变性特性。说明:函数式开发在多核服务器上运行效率跟核数呈正相关,而传统java代码是没有此特性的。2.推荐使用IDEA作为开发工具,git作为版本控制工具。说明:IDEA作为当前最强大的java开发工具,其效率,性能,智能都是目前顶尖的,开发人员需要克服一下由传统的eclipse,sts,myeclipse转变到idea的不适应。3.IDEA安装lombok插件,在每个实体类上加上lombok的注解:@Data, @Builder,@NoA转载 2020-10-26 06:44:51 · 1145 阅读 · 0 评论 -
Java进程CPU占用高导致的网页请求超时的故障排查
一、发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多。二、定位故障 根据这种故障的一般处理思路,先找出问题进程内CPU占用率高的线程,再通过线程栈信息找出该线程当时在运行的问题代码段,操作如下:2.1、根据思路查看高占用的“进程中”占用高的“线程”,追踪发现7163的进程中16298的线程占用较高,使用命令:top-Hbp7163|awk'/java/...转载 2021-09-21 00:17:55 · 382 阅读 · 0 评论 -
大意导致Java访问DB2库时导出SQLCODE=-301, SQLSTATE=07006错误
本人在写一个java模块,目的是把数据插入到DB2库中,由于自己在建模时不知何时将表中一个字段由varchar修改成decimal,并且将此表重新建到开发库中,为此导致以前写好的功能模块报错,本人很纳闷,但又不知道什么原因,虽然知道可能是自己造成的,但具体原因却无论如何也想不起来原创 2011-07-17 12:41:08 · 5513 阅读 · 0 评论 -
用BAT运行java Application
新建一个目录,作为打包的目录,比如ring目录,在这个目录里建一个java的目录,把jre目录下的bin和lib复制到该目录,然后在ring目录下再新建一个lib的目录,把你的项目用到的jar和你自己写的jar都放到该目录,下面在ring目录下建二个bat文件第一个命转载 2011-08-20 16:19:25 · 495 阅读 · 0 评论 -
Java Annotation手册
作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原文:http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html关键字:java,annotation,reflect前言:在上篇文章《Java Annot转载 2012-01-29 21:05:37 · 304 阅读 · 0 评论 -
HttpURLConnection与HttpClient浅析
转自:https://blog.csdn.net/u012838207/article/details/828677011. GET请求与POST请求HTTP协议是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。在介绍HttpURLConnection前,我们还是再来说一下URL请求最常用的两种方式:GET请求与POST...转载 2019-03-31 21:05:54 · 95 阅读 · 0 评论 -
这份Java开发规范,让你100%受益!
今天跟大家分享下Java开发规范的知识。基于阿里巴巴JAVA开发规范整理:https://github.com/alibaba/p3c1命名风格【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal...转载 2019-09-22 06:59:57 · 81 阅读 · 0 评论 -
Java Web前端到后台常用框架介绍
今天跟大家分享下Java Web前端到后台常用框架介绍的知识。1 SpringMVC参考博文:http://blog.csdn.net/evankaka/article/details/45501811基本原理流程,3个线程以及之间的关联;Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将w...转载 2019-09-22 07:31:32 · 175 阅读 · 0 评论 -
到底如何设置 Java 线程池的大小?
今天来跟大家分享一下Java线程池的大小设置。0前言在我们日常业务开发过程中,或多或少都会用到并发的功能。那么在用到并发功能的过程中,就肯定会碰到下面这个问题并发线程池到底设置多大呢?通常有点年纪的程序员或许都听说这样一个说法 (其中 N 代表 CPU 的个数)1.CPU 密集型应用,线程池大小设置为 N + 1 2.IO 密集型应用,线程池大...转载 2019-09-26 18:11:30 · 154 阅读 · 0 评论 -
tomcat中ServerSocket监听一个端口的探讨
<br />此文中例子为:一个在B/S应用,应用中,需要对远程请求进行连接,并接收他传来的数据。应用中使用了一个ServerSocket建立一个侦听端口,远程请求向此端口发出信息,并建立连接,接收数据。侦听是在应用中配置一个listener,tomcat启动时,就打开一个线程来侦听端口,程序代码如下:<br />import java.net.*;import java.io.*;import javax.servlet.ServletContextEvent;import javax.serv原创 2011-05-19 22:46:00 · 6942 阅读 · 4 评论