Java-相关
文章平均质量分 80
一灰灰blog
Java后端资深搬运工 Python爬虫新手 React前端客串开发 兼职IT/DBA
展开
-
实战小技巧19:List转Map List的几种姿势
今天介绍一个实用的小知识点,如何将List转为`Map`原创 2022-06-01 21:54:20 · 7559 阅读 · 0 评论 -
Guava HashMultimap使用及注意事项
guava基本上可以说是java开发项目中,大概率会引入的包,今天介绍的主角是一个特殊的容器 -- `HashMultmap`,可以简单的将它的数据结构理解为`Map<K, Set<V>>`原创 2022-05-25 20:10:57 · 688 阅读 · 0 评论 -
常见Bean拷贝框架下划线驼峰互转扩展支持
上一篇博文常见Bean拷贝框架使用姿势及性能对比 介绍了几种bean拷贝框架的使用姿势以及性能对比,主要适用的是属性名一致、类型一致的拷贝,在实际的业务开发中,经常会用到驼峰和下划线的互转,本文在之前的基础上进行扩展cglibhutool常见Bean拷贝框架下划线驼峰互转扩展支持I. 驼峰下划线拷贝支持上面的使用都是最基本的使用姿势,属性名 + 类型一致,都有getter/setter方法,我们实际的业务场景中,有一个比较重要的地方,就是下划线与驼峰的转换支持,如果要使用上面的框架,可以原创 2021-04-28 19:08:44 · 2621 阅读 · 0 评论 -
常见Bean拷贝框架使用姿势及性能对比
常见Bean拷贝框架使用姿势及性能对比Bean属性拷贝,主要针对几个常用的拷贝框架进行性能对比,以及功能扩展支持选用的框架cglib (直接使用Spring封装的BeanCopier)apacheMapStructSpringHuToolI.背景当业务量不大时,不管选择哪个框架都没什么问题,只要功能支持就ok了;但是当数据量大的时候,可能就需要考虑性能问题了;再实际的项目中,正好遇到了这个问题,不仅慢,还发现会有锁竞争,这特么就尼普了项目中使用的是Spring的 BeanUti.原创 2021-04-19 23:04:10 · 1539 阅读 · 1 评论 -
Java中两种分页遍历的使用姿势
Java中两种分页遍历的使用姿势在日常开发中,分页遍历迭代的场景可以说非常普遍了,比如扫表,每次捞100条数据,然后遍历这100条数据,依次执行某个业务逻辑;这100条执行完毕之后,再加载下一百条数据,直到扫描完毕那么要实现上面这种分页迭代遍历的场景,我们可以怎么做呢本文将介绍两种使用姿势常规的使用方法借助Iterator的使用姿势1. 数据查询模拟首先mock一个分页获取数据的逻辑,直接随机生成数据,并且控制最多返回三页public static int cnt = 0;pr.原创 2021-03-02 12:49:07 · 2765 阅读 · 0 评论 -
Spring 工具类之基本元素判断
Spring 工具类之基本元素判断实际业务开发中偶尔会遇到判断一个对象是否为基本数据类型,除了我们自老老实实的自己写之外,也可以借助 Spring 的 BeanUtils 工具类来实现// Java基本数据类型及包装类型判断org.springframework.util.ClassUtils#isPrimitiveOrWrapper// 扩展的基本类型判断org.springframework.beans.BeanUtils#isSimpleProperty这两个工具类的实现都比较清.原创 2021-01-17 20:31:58 · 1142 阅读 · 0 评论 -
Java实现AES ECP PKCS5Padding加解密工具类
Java 实现一个AES/ECB/PKCS5Padding 加解密算法工具类加密算法: AES模式: ECB补码方式: PKCS5Padding1. 工具类import lombok.Getter;import lombok.Setter;import lombok.extern.slf4j.Slf4j;import org.springframework.util.Base...原创 2020-05-01 08:15:40 · 827 阅读 · 0 评论 -
手把手教你实现一个方法耗时统计的 java agent
手把手教你实现一个方法耗时统计的 java agent前面有两篇铺垫博文,在博文《200303-如何优雅的在 java 中统计代码块耗时》,其最后提到了根据利用 java agent 来统计方法耗时博文《200316-IDEA + maven 零基础构建 java agent 项目》中则详细描述了搭建一个 java agent 开发测试项目的全过程本篇博文将进入 java agent ...原创 2020-03-18 14:50:56 · 841 阅读 · 0 评论 -
IDEA + maven 零基础构建 java agent 项目
200316-IDEA + maven 零基础构建 java agent 项目Java Agent(java 探针)虽说在 jdk1.5 之后就有了,但是对于绝大多数的业务开发 javaer 来说,这个东西还是比较神奇和陌生的;虽说在实际的业务开发中,很少会涉及到 agent 开发,但是每个 java 开发都用过,比如使用 idea 写了个 HelloWorld.java,并运行一下, 仔...原创 2020-03-16 12:19:22 · 1229 阅读 · 1 评论 -
如何优雅的在java中统计代码块耗时
如何优雅的在java中统计代码块耗时在我们的实际开发中,多多少少会遇到统计一段代码片段的耗时的情况,我们一般的写法如下long start = System.currentTimeMillis();try { // .... 具体的代码段} finally { System.out.println("cost: " + (System.currentTimeMillis...原创 2020-03-03 20:33:26 · 1349 阅读 · 0 评论 -
Ognl 使用实例手册
上一篇博文介绍了ongl的基础语法,接下来进入实际的使用篇,我们将结合一些实际的case,来演示ognl究竟可以支撑到什么地步在看本文之前,强烈建议先熟悉一下什么是ognl,以及其语法特点,减少阅读障碍,五分钟入门系列: 191129-Ognl 语法基础教程I. 基本使用1. 配置我们选用的是java开发环境,使用maven来进行包管理,首先在pom文件中添加依赖<!-- h...原创 2019-12-05 08:35:16 · 1016 阅读 · 0 评论 -
Ognl 语法基础教程
本文将力求用最简单的语言和实例,介绍一下 OGNL 的语法规则,文章主要内容参考自官方文档http://commons.apache.org/proper/commons-ognl/language-guide.html本篇主要是语法介绍篇,实战放在一下篇因为本篇文章将是后 quick-fix 2.0 版本支持 ognl 的前导篇,先提前放出1. 前言ognl,全称 Object G...原创 2019-12-04 20:21:07 · 536 阅读 · 0 评论 -
ProtoStuff无法反序列化Deprecated注解成员问题记录
在开发过程中,遇到一个鬼畜的问题,在DO的某个成员上添加@Deprecated注解之后,通过ProtoStuff反序列化得到的DO中,这个成员一直为null;花了不少时间才定位这个问题,特此记录一下原文 ProtoStuff无法反序列化Deprecated注解成员问题记录I. 全程实录1. 环境相关原项目中使用protostuff作为POJO序列化工具,对应的版本为<depen...原创 2019-08-22 22:01:16 · 598 阅读 · 0 评论 -
Java之HashMap迭代删除使用方法小结
map的迭代删除,和我们常见的list,set不太一样,不能直接获取Iteraotr对象,提供的删除方法也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?I. Map 迭代删除迭代删除,在不考虑并发安全的前提下,我们看下可以怎么支持1. 非常不优雅版本我们知道map并不是继承自Collection接口的,HashMap 也没有提供迭代支持,既...原创 2019-05-29 22:01:00 · 4432 阅读 · 2 评论 -
老哥你真的知道ArrayList#sublist的正确用法么
title: ‘190515-老哥你真的知道ArrayList#sublist的正确用法么’tags:JDKcategories:JavaJDK容器date: 2019-05-15 20:22:39keywords: Java,ArrayList,JDK,sublist,深拷贝,浅拷贝,System.copy我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列...原创 2019-05-25 20:34:00 · 178 阅读 · 0 评论 -
Quick-Fix 纯Jar应用及自定义扩展使用手册
博文原始链接: 190104-Quick-Fix 纯Jar应用及扩展手册目前Quick-Fix框架提供了两种类型,三中不同场景下的Fixer,一种是以Jar方式启动的,一个是基于Spring生态体系玩法的,下面主要介绍这jar方式,如何使用QuickFix来实现应用内服务调用和数据订正I. 环境使用maven可以很方便的引入依赖包,目前提供两种导入方式1. GitHub Rele...原创 2019-01-08 21:49:20 · 812 阅读 · 0 评论 -
Quick-Fix 从0到1构建一个应用内服务/数据访问订正工具包
博文原始链接: 190102-Quick-Fix 从0到1构建一个应用内服务/数据访问订正工具包I. 背景说明case1: 程序出bug了在我们的实际工作中,当我们遇到别人反馈代码出问题了吧,怎么返回的数据不对?当应用持续跑了一段时间之后,这个时候我们的第一个反应基本是确认能复现么?如果能复现,那么调用的姿势是不是对的?如果确认姿势没问题,那么就是请求参数不对了!!! 如果请求参数还...原创 2019-01-08 21:46:31 · 339 阅读 · 0 评论 -
Java学习之反射的使用姿势一览
日常的学习工作中,可能用到反射的地方不太多,但看看一些优秀框架的源码,会发现基本上都离不开反射的使用;因此本篇博文将专注下如何使用反射原创 2017-11-14 15:04:17 · 367 阅读 · 0 评论 -
Java学习之深拷贝浅拷贝及对象拷贝的两种思路
Java语言中的深拷贝、浅拷贝以及对象拷贝原创 2017-12-18 22:22:01 · 11164 阅读 · 0 评论 -
jvm调优实战笔记之基础知识简介
jvm调优实战笔记之基础知识简介原创 2018-01-03 21:17:30 · 534 阅读 · 0 评论 -
SpringMVC之请求参数的获取方式
SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数?一般最常见的请求为GET和POST,get请求的参数在url上可以获取,post请求参数除了url上还有可能在表单中,文件上传时,获取方式又和一般的参数获取不一样本篇则主要集中在不同请求方式下,获取参数的使用姿势首先需要搭建一个后端的请求,为了快速演示利用spring-boot创建了一个机器简原创 2018-01-15 09:48:03 · 636 阅读 · 0 评论 -
Redis实现分布式锁相关注意事项
Redis实现分布式锁相关注意事项 查看了不少关于redis实现分布式锁的文章,无疑要设计一个靠谱的分布式并不太容易,总会出现各种鬼畜的问题;现在就来小述一下,在设计一个分布式锁的过程中,会遇到一些什么问题I. 背景知识借助redis来实现分布式锁(我们先考虑单机redis的模式),首先有必要了解下以下几点:单线程模式setnx : 当不存在时,设置value,并返原创 2018-01-15 09:49:16 · 588 阅读 · 0 评论 -
SpringMVC支持跨域的几种姿势
SpringMVC支持跨域的几种姿势 跨域好像是一个前端的问题,通常是a域名下向b域名的服务发起请求,然后处于浏览器的安全原则,被拦截了,而这种场景,在实际的项目中并不少见,那么作为后端可以怎么去支持跨域的case呢?后端需要支持跨域,一个是支持jsonp请求;还有一个就是设置responseHeader中crossOrigin等相关参数I. Jsonp的支持json原创 2018-01-19 09:35:32 · 718 阅读 · 0 评论 -
SpringMVC返回图片的几种方式
SpringMVC返回图片的几种方式 后端提供服务,通常返回的json串,但是某些场景下可能需要直接返回二进制流,如一个图片编辑接口,希望直接将图片流返回给前端,此时可以怎么处理?I. 返回二进制图片主要借助的是 HttpServletResponse这个对象,实现case如下@RequestMapping(value = {"/img/render"}, metho原创 2018-01-19 09:36:10 · 20615 阅读 · 1 评论 -
JavaWeb三大组件之Filter学习详解
JavaWeb三大组件之Filter学习详解 Filter基本上可以说存在所有的JavaWeb项目中,比如最基本的一个请求参数的编码CharacterEncodingFilter,大家一般都会配置下,那么filter是干嘛的呢?本篇将主要集中在fitler的以下几个知识点:干嘛的怎么用多个Filter执行的先后顺序注意事项I. 基本知识Filter称之为过滤原创 2018-01-28 20:54:05 · 10469 阅读 · 1 评论 -
JavaWeb三大组件之Servlet学习
JavaWeb三大组件之Servlet学习 平时直接用springmvc较多,都没怎么接触底层的Servlet,导致对一些基本的知识点了解都不够,所以今天专门的抽出时间来学习一下带着问题出发,看下可以怎么玩如何自定义一个Servlet自定义的Serlvet如何工作servlet的优先顺序怎么判定 servlet匹配是怎样的 (url-mapping…)如何获取参数(ge原创 2018-01-28 20:54:55 · 999 阅读 · 0 评论 -
Java可以如何实现文件变动的监听
Java可以如何实现文件变动的监听应用中使用logback作为日志输出组件的话,大部分会去配置 logback.xml 这个文件,而且生产环境下,直接去修改logback.xml文件中的日志级别,不用重启应用就可以生效那么,这个功能是怎么实现的呢?I. 问题描述及分析针对上面的这个问题,首先抛出一个实际的case,在我的个人网站 Z+中,所有的小工具都是通过配置文件来动态新增和...原创 2018-02-08 19:23:19 · 7099 阅读 · 2 评论 -
Spring学习之事务使用的几种姿势
Spring + mybatis + mysql 使用事务的几种姿势主要记录下spring是如何支持事务的,以及在Spring结合mybatis时,可以怎么简单的实现数据库的事务功能更多相关博文可以查看一灰灰Blog: 一灰灰Blog 《Spring学习之事务的使用姿势》I. 前提case1:两张表的的事务支持情况首先准备两张表,一个user表,一个story表,结构如下...原创 2018-05-17 17:10:26 · 220 阅读 · 0 评论 -
Spring 事务管理与传播属性
更多相关博文欢迎查看一灰灰Blog:一灰灰Blog:《Spring 事务管理与传播属性》在博文 《Spring学习之事务的使用姿势》 中,演示了基于注解和xml的事务使用姿势,以@Transactional注解为例,其中很多的参数都没有详细说明本篇博文,则主要目的是弄懂这些参数有啥用,以及在实际项目中如何选择I. 事务的传播属性1. @Transactional注解实际...原创 2018-05-17 17:12:19 · 231 阅读 · 0 评论 -
180706-BigDecimal除法的精度问题
BigDecimal除法的精度问题在使用BigDecimal的除法时,遇到一个鬼畜的问题,本以为的精度计算,结果使用返回0,当然最终发现还是自己的使用姿势不对导致的,因此记录一下,避免后面重蹈覆辙I. 问题抛出在使用BigDecimal做高精度的除法时,一不注意遇到了一个小问题,如下@Testpublic void testBigDecimal() { ...原创 2018-07-06 19:42:29 · 1293 阅读 · 0 评论 -
使用Java Socket手撸一个http服务器
原文连接:使用Java Socket手撸一个http服务器作为一个java后端,提供http服务可以说是基本技能之一了,但是你真的了解http协议么?你知道知道如何手撸一个http服务器么?tomcat的底层是怎么支持http服务的呢?大名鼎鼎的Servlet又是什么东西呢,该怎么使用呢?在初学java时,socket编程是逃不掉的一章;虽然在实际业务项目中,使用这个的可能性基本为0,本篇...原创 2018-12-30 18:03:31 · 447 阅读 · 0 评论 -
Java 实现图片旋转及问题小结
图片旋转作为一个常见功能,实际使用中用处挺多,但是这次实现却遇到了个小问题,记录一二原创 2017-09-30 09:36:49 · 2778 阅读 · 2 评论