JAVA进阶
文章平均质量分 73
基于JAVA开发语言的一些常用编程实践
心心念念的小鼠标
为梦想而疯狂!
展开
-
利用AOP+Swagger注解实现日志记录功能
今日接到一个需求,是关于对项目的一个操作记录,想记录所有的增删改查,也就是所有的操作?想想该如何实现呢?首先肯定就想到了spring的AOP。那么如何能够更加页面化呢?如果对于项目中已经使用了swagger,那么利用起来就是一个很好的方式。...原创 2022-06-05 22:45:20 · 1044 阅读 · 1 评论 -
IDEA自带plantUML绘制时序图
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。原创 2022-05-29 20:44:34 · 2590 阅读 · 2 评论 -
jakarta.mail 附件名(MimeUtility.encodeText实现)乱码问题解决
最近用到了使用jakarta.mail发送邮件,带有附件的模式,整体流程都没问题,但是收到的附件名称有时候会乱码。原创 2022-05-22 21:01:24 · 3348 阅读 · 0 评论 -
谈谈对<统计需求>的一些想法
最近在做统计,大家有什么想法呢?如何才能保证性能?我看之前的一版代码,是一个统计方法里,无数操作数据库的,抛开sql的性能,光这次数都让人头疼啊。那么如何能减少这种网络传输,提高响应速率呢?版本一:加入redis缓存使用场景:如果对实时性没有很敏感的场景,我觉得用redis还是一个很不错的方式的。比如半天更新一次或者更久的时间更新一次,就很赞。缺点:实时性不好确定。版本二:减少网络传输将数据通过sql查询出来,然后通过lambda表达式实现场景需求拆分。目前我就用的这种方式,尽可能少的操作原创 2022-05-15 21:25:51 · 422 阅读 · 0 评论 -
SpringBoot jar包瘦身操作 -Dloader.path使用
一、博客来由公司有很多项目,各种各样的搭建模式。旁边同事接到了一个优化的功能,开发结束后,问我说,打包总是不生效,依赖找不到。但是本地确实没有问题。然后我看项目结构是一个依赖的关系。root项目依赖其他的子项目,通过在maven中配置子项目信息,进而形成依赖关系。打包方式就是直接通过maven生成jar包的,还特意clean了一下。但是生成的jar包也就2M,当时我还怀疑了一下怎么这么小??运维说线上也是2M。然后我就打消了我的疑虑。总不能线上也有问题吧。二、-Dloader.path使用三、原创 2022-04-17 21:45:43 · 4560 阅读 · 0 评论 -
spring-data-redis 实现用户登录次数限制以及冻结时间重试机制
本周收到一个优化请求,是对一个web项目实现登录用户的安全性校验,也就是实现登录次数的限制以及重试次数用完之后间隔时间再次恢复登录的功能。原创 2022-04-10 15:37:01 · 1651 阅读 · 0 评论 -
深入理解Java中的字符串
如果要操作少量的数据用 String 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer原创 2022-01-24 16:50:10 · 353 阅读 · 0 评论 -
Arthas在mac系统的安装与使用
Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas原创 2022-03-02 21:52:09 · 9884 阅读 · 0 评论 -
并发编程--线程池源码解析
项目中经常会用到线程池来解决一些异步任务,本篇则主要从源码角度来分析一下其执行的过程。使用过程如下:private static final ThreadPoolExecutor executor = new ThreadPoolExecutor( threadSize+1, threadSize+1, 10, TimeUnit.SECONDS ,new SynchronousQueu原创 2022-02-26 22:53:09 · 635 阅读 · 0 评论 -
java.lang.reflect.AccessibleObject
java.lang.reflect.AccessibleObject类是Field,Method和Constructor类对象的基类。 它提供了将反射对象标记为在使用它时抑制默认Java语言访问控制检查的功能。 当使用Fields,Methods或Constructors类对象来设置或获取字段,调用方法,或创建和初始化新的类实例时,执行访问分别检查(对于public,默认(包)访问,protected和private成员) 。 在反射对象中设置可访问标志允许具有足够权限的复杂应用程序(如Java对象序列化原创 2022-02-04 15:11:50 · 709 阅读 · 0 评论 -
Field setAccessible()方法的作用及应用场景
设置了setAccessible为true表示反射在使用时应禁止java语言访问检查,值为false表示反射对象应强制执行java语言访问检查。原创 2022-01-31 09:57:20 · 1917 阅读 · 2 评论 -
详解JAVA -SPI机制
一、为何写这篇文章?在看源码的过程中,总是会遇到SPI机制的源码实现,比如Dubbo,sharding-jdbc ,SpringBoot等源码都涉及到了SPI机制。今天主要是分析一下Java SPI的原理。二、 何为SPI?SPI全称(Service Provider Interface)是JDK内置的一种 服务提供发现机制。简单的理解,我觉得他就是一种动态的服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。Java中SPI原创 2022-01-09 19:43:39 · 782 阅读 · 0 评论 -
排序系列【比较排序系列之】冒泡排序
冒泡排序属于交换排序的一种典型的交换排序。交换排序的基本思想是:两两比较待排序的关键码,发现记录逆置则进行交换,知道没有逆置对位置。对于冒泡排序而言,则就是单纯的两两进行比较,知道不能再继续冒泡为止。 我们通过【45,34,78,12,34’,32,29,64】数组为例,进行讲解。 i值 过程 i=0 j=7 A【7】和A【6】;64>29,不逆置;j=6 A...原创 2018-07-27 17:42:06 · 289 阅读 · 1 评论 -
编程题 - 链表合并(递归)
题目:将两个有序链表合并为一个新的有序链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。比如两个链表: 1->3->4 2->5->6最后输出变成: 1->2->3->4->5->6思路:定义一个链表结构合并链表,一对一比较大小,将合并的链表放入新创建的链表中代码:/** * @description:链表结构 * @author: huoyajing * @time: 2021/6/6 6:01 下午 */原创 2021-10-12 09:02:25 · 138 阅读 · 0 评论 -
并发编程--CountdownLatch && CyclicBarrier
Semaphore,CountdownLatch,CyclicBarrier都是java提供的同步辅助类。上一篇对Semaphore有了一定的了解,本篇则针对CountdownLatch以及CyclicBarrier进行一定的总结。一、CountdownLatch1)CountdownLatch是什么?CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)能够使一个线程等待其他线程完成各自的工作之后再执行。例如zookeeper分布式锁的实现。而Semaphore原创 2021-10-09 09:45:16 · 136 阅读 · 0 评论 -
并发编程--Semaphore
一、Semaphore是什么?semaphore一般指信号灯,在Java层面称之为信号量。顾名思义,在使用场景方面就很容易理解,比如用于流量控制,车库停车等一系列,就是资源有限,排队等待。semaphore用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。是一个线程同步的辅助类。二、常见方法创建具有给定数量的许可和非公平公平设置的SemaphoreSemaphore(int permits)使用给定的许可数量和给定的公平设置创建一个SemaphoreSemapho原创 2021-10-03 19:37:18 · 231 阅读 · 0 评论 -
并发编程--线程同步之 synchronized关键字(一)
线程同步主要就是两种实现:ReentrantLock 显示锁Synchronized 隐式锁一、对synchronized的一个整体认知1、JDK1.6之前整体了解那肯定就得从synchronized升级前后开始了解,正所谓士别三日当刮目相待,JDK1.6之前,synchronized确实很笨重,因为他是强依赖于操作系统的,不管你多少个线程,他都默认你竞争激烈,直接上重头戏,哈哈。2、JDK1.6后,包含1.6但是JDK1.6则对synchronized做了重大优化,引入了锁粗化,锁消除,原创 2021-09-26 14:07:13 · 107 阅读 · 0 评论 -
面试题:try catch finally执行顺序
一、程序无异常public class TestCatch { public int getCatch(String number) { try { Integer.parseInt(number); } catch (Exception e) { System.out.println("catch block"); return 1; } finally { System.out.println("final block"); return 2; }原创 2021-09-02 20:38:02 · 252 阅读 · 0 评论 -
Java-BufferedImage动态生成一个表格图片
需求:一个word模板,里边有一个表格,需要根据需求动态填充数据,需要转成pdf,但是我发现转成pdf的方式并不方便,想着还不如将动态的部分生成图片,然后由前端整合其他部分用于展示,也满足了需求。生成完之后的图:(ps:字体大小和颜色啥的都可以自己变动,此仅仅是完成了功能)public String actionExportReport(HttpServletRequest request, List<Map<String, String>> mapList, D原创 2021-03-17 11:24:50 · 1662 阅读 · 5 评论 -
Java-POI动态生成word(根据模板)
需求:一个word模板,里边有一个表格,需要根据需求动态填充数据word模板部分截图如下,这主要是往如下表格动态添加数据:有几条数据则填充几条,最后进行金额统计:直接上代码:public Map<String, String> templateWord(String remark, HttpServletRequest request, List<OrderPrice.Request> priceReqs) throws IOException {原创 2021-03-17 10:57:18 · 1376 阅读 · 2 评论 -
Spring Boot(十)swagger-生产环境展示部分接口,测试环境展示所有
前段时间讲述了如何配置swagger以及如何禁用swagger。主要还是为了安全起见。但是总会出现事与愿违或者某种突发状况。所以就会出现一种新的场景,测试环境需要展示全部接口,线上由于某种原因需要展示一小部分,这种情况该如何配置展示呢???主要的思路则是:swagge2多包扫描实现。API接口类是可以放在不同的包名下的,我们可以将线上展示的部分接口独立到一个包下边,通过读取环境来判定展示几个包名。具体实现方式: /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内原创 2020-09-20 16:55:54 · 836 阅读 · 0 评论 -
反射 getDeclaredField 报错java.lang.NoSuchFieldException
今日需求上除了需要导出excel,方便运营的统计与数据整理,对于导出,当然是做了无数个了,今日则主要说一个小细节,关于getDeclaredField的知识。先说一下场景使用: 1. 需要将信息和所需字段一一对应,然后放入excel,并找位置存储; 2. 将路径存储到服务器,便于调用方直接读取;原创 2020-06-16 17:13:12 · 5714 阅读 · 0 评论 -
java-小程序订阅消息改版
年前收到一波修改小程序订阅消息的需求,通过去看小程序最新开发文档才有了一个大概的理解。年前刚收到的改版需求,2020年1月10日原小程序模板消息接口则下线。原创 2020-02-11 16:08:05 · 1722 阅读 · 2 评论 -
【算法总结】-蛮力,贪心,动态规划 话谈背包问题
最近在和小伙伴们研究背包问题,对于背包问题的存在,相信已经算是一个经典问题了。本篇我们则从多方面来对背包问题有一个宏观的了解。首先我们来简要描述一下何为背包问题?经典问题&amp;amp;amp;amp;amp;...原创 2018-12-11 19:06:15 · 2137 阅读 · 0 评论 -
深入分析Synchronized原理
添加链接描述转载 2019-07-22 14:25:25 · 271 阅读 · 0 评论 -
Graphics2D基本图形合成
最近这个版本迭代,竟然很有缘分的和Graphics2D有了很严重的交集,请问这是好事还是坏事呢?其实说实话,对于自己整合的图形并不是很满意,但是Graphics2D的功能还是很强大的,通过博客来记录我与它的美妙的交集。Graphics2D构造方法详细信息:构建一个新的 Graphics2D 对象。由于 Graphics2D 是一个抽象类,而且它必须由不同输出设备的子类定制,所以无法直接创建 Grap原创 2017-12-22 18:45:25 · 4829 阅读 · 7 评论 -
POI+EL表达式 Excel导出功能
在做项目的过程中,用Excel来导入导出数据是很常见的事情,这次负责的项目就有这么一个功能,用户想要的需求就是根据不同的查询条件来实现不同的导出效果,已便于读取与保存。界面的效果如下:在界面上可以看到有很多的查询条件,实现的目标就是我点击搜索出现什么信息,那么你就必须得导出什么信息,其实蕴含的意思就是前期方向,搜索和导出Excel实现的功能是一样的。那么在项目中我们是如何应用的原创 2015-12-08 17:58:57 · 3869 阅读 · 23 评论 -
Spring Boot(九)如何在生产环境禁用swagger
上篇主要是介绍了再SpringBoot框架下swagger的应用,感觉其中最大的一个障碍则是版本之间的冲突问题,希望使用的小伙伴们可以注意。本篇则主要是针对生产环境如何禁用swagger进行一下总结,来保证生产环境的安全。方法一:Spring Profiles功能Spring Profiles提供了一种隔离应用程序配置部分并使其仅在特定环境中可用的方法。任何@Component或@Config...原创 2018-12-10 18:39:43 · 4213 阅读 · 0 评论 -
【算法总结】-字符串匹配技术(一)
&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;字符串匹配是计算机科学中最古老、研究最广泛的问题之一。它是字符串算法中的一类,用以试图在一长字符串或文章中原创 2018-12-14 18:56:43 · 484 阅读 · 0 评论 -
Spring Boot(八)集成swagger
之前一直维护wiki,不是用测试用例就是用postman工具,偶然的机会相遇了swagger,感觉很是试用。所以决定将其配置流程乃至中间遇到的坑记录下来。一、何为swagger?Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许...原创 2018-12-06 17:23:46 · 499 阅读 · 0 评论 -
varchar && bigint 执行效率及区别
在数据库表设计的过程中,总会遇到某个字段到底使用何种类型的困惑?比如身份证11位,我如果使用int类型的话,肯定不行,个数都超额了;所以一般采用的办法就是使用varchar,自定义使用长度,很好的办法。不过最近发了bigInt的使用,下边通过测试来对比一下两者的性能使用情况: 第一种情况:idcardno为varchar类型的时候 查询整体使用的耗时: 如图:执行时间0.001sec原创 2016-08-31 20:32:39 · 10239 阅读 · 4 评论 -
equalsIgnoreCase()方法与equals()的区别是什么?
今天在新项目上发现了一个很有趣的函数–equalsIgnoreCase()。那么它到底起到什么作用呢?简单点而言就是两个string类型的变量进行对比,看是否相等的功能,但是在对比是否相等的需求下,我们常用的还是equals()方法,相比equals而言,equalsIgnoreCase()有其自己的功能,可以忽略大小写,只要两个类型字母组成一样,那么就可以核对成功。 看如下的一个小demo,直接原创 2016-08-28 14:18:36 · 8597 阅读 · 2 评论 -
Chrome插件-postman安装图解
新公司新环境,其实对于测试而言,之前还是偏向于写测试用例,或者建立单独的测试类。但是对于谷歌的postman使用起来是着实方便。Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。下边来看看具体的安装过程:安装过程一:直接拖放安装将下载的软件直接解压,将crx文件直接拖放,如下图: 看到这个图,还以为自己软件下载错了呢,幸亏没有删,百度查阅才知道有解决办法安原创 2016-08-28 12:04:50 · 836 阅读 · 0 评论 -
【Java 基础三】transient关键字
最近在项目的开发过程中,涉及到了这么一个关键字-"transient",不知道大家有没有使用过,我这算是头一回吧!还是因为需求需要,在旁边的大牛的指引下巧妙的使用了一下。原创 2016-07-18 10:50:07 · 601 阅读 · 1 评论 -
【Java基础三】InputStream获取文件并保存
最近在项目的开发过程中,有这样的一个需求:通过上游传送一个路径,通过文件获取的方式将其存取到自己想存取的地方,传送文件的类型不定,有可能是PDF,有可能是txt等。构建代码思路:通过inputStream获取,再将其转换存入本地。遇到问题:类型不同该如何存储?---解决办法:通过截图路径字符串的方式将获取的文件名称截图直接存储。这样就会避免存储类型的单一化。原创 2016-06-18 10:27:23 · 14385 阅读 · 1 评论 -
Laydate日期乱码
在做项目的过程中,遇到了这么一个问题,就是在分页的基础上,按照日期查询的时候,点击第一页之外的每一页,日期控件显示乱码问题,如图:第一页:第二页: 在初步做这个功能的时候,点击按照日期查询,或者其他条件查询第一页都没有问题,也就没有注意当点击第二页或者更多页的时候,按照条件查询的正确与否。当测试人员将此Bug指派给我的时候,我立马想到的就是Laydate控件的问原创 2015-12-25 09:42:06 · 4597 阅读 · 23 评论 -
【Java】<一> 语言环境
由于要进行软考了,所以需要提前了解一下Java的语言环境原创 2014-09-06 23:48:41 · 1254 阅读 · 18 评论 -
J2EE-13个常用规范
J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE组件和“标准的”Java类的不同点在于:它被装配在一个J2EE应用中,具有固定的格式并遵守J2EE规范,由J2EE服务器对其进行管理。简单点,J2EE就是一套标准。对于13个规范相比.net中的知识进行对比了解:JDBC(Java Databas原创 2015-07-31 21:21:41 · 982 阅读 · 16 评论 -
Java -- XML解析工具dom4j
前言 XML现已成为一种通用的数据交流方式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便,对于XML的解析有四种方式:DOM生成和解析XML文档,SAX生成和解析XML文件,JDOM生成和解析XML以及dom4j生成和解析XML,本篇只是简单介绍一下dom4j的使用。dom4j是什么? dom4j是一个Java的XML API,其实和原创 2015-08-23 00:31:52 · 1990 阅读 · 17 评论 -
Tomact运行环境搭建
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 --百度百科所以我们的小项目必须得在Tomact的环境下才能够运行起来,但是当自己手动点击启动项的时候,只是一闪而过:后来查阅资料得知:Tomact就是一个轻量级的容器,他属于第三方软件,所以虽然好用,但是还是得原创 2015-07-31 17:19:33 · 1279 阅读 · 22 评论