![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 65
小池先生
这个作者很懒,什么都没留下…
展开
-
记录一次nginx转发代理skywalking白屏 以及nginx鉴权配置
nginx跟后端服务器连接超时时间(代理连接超时)默认60s。#连接成功后,后端服务器响应时间(代理接收超时)默认值。#后端服务器数据回传时间(代理发送超时)默认值60s。# 允许请求的方式 比如常用的Restful GET/PUT/POST/DELETE。#这里是代理本地8085转发到本地8081 skywalking服务 增加超时配置以及。nginx鉴权弹窗 因为之前登录过 这里修改下nginx代理端口 重启nginx后。原创 2023-03-02 21:06:05 · 2185 阅读 · 2 评论 -
写出漂亮代码的45个小技巧
写出漂亮代码的45个小技巧转载 2023-02-17 09:36:56 · 92 阅读 · 0 评论 -
LODOP打印pdf文件
else dataArray = window.VBS_BinaryToArray(data).toArray() // 兼容IE低版本。//横向时的正向显示。xhr.open('GET', url, false) // 同步方式。LODOP.PRINT_INIT("单据打印");原创 2023-01-09 16:08:09 · 879 阅读 · 0 评论 -
SpringBoot 还在用 if 校验参数?那你真的太low了,老司机都是这么玩的!
在项目开发中我们经常会遇到各种参数校验,尤其是表单参数的校验。当参数不多时我们可以在控制器中手动校验,但是一旦遇到需要校验的参数较多的post接口时,还去一个个的校验的话那会累死个人。其实,Spring框架给我们提供了对象校验的API,可以帮助我们省去逐一手动校验接口参数的烦恼。本文就和大家一起系统学习一下Spring Validation的使用,并搞懂其中的原理。规范(JSR303)定义了Bean校验的标准,但没有提供实现。是对这个规范的实现,并增加了校验注解如、等。是对的二次封装,用于支持spring转载 2022-12-08 10:33:40 · 117 阅读 · 0 评论 -
从阿里跳槽来的工程师,分享了三套干掉 “重复代码”方式,真的太绝了!
软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。业务同学抱怨业务开发没有技术含量,用不到设计模式、Java 高级特性、OOP,平时写代码都在堆 CRUD,个人成长无从谈起。其实,我认为不是这样的。设计模式、OOP 是前辈们在大型项目中积累下来的经验,通过这些方法论来改善大型项目的可维护性。反射、注解、泛型等高级特性在框架中大量使用的原因是,框架往往需要以同一套算法来应对不同的数据结构,而这些特性可以帮助减少重复代码,提升项目可维护性。在转载 2022-12-08 09:58:53 · 178 阅读 · 0 评论 -
Spring security 多认证方式
我是这样使用SpringBoot(多认证方式) - 简书转载 2022-12-02 15:09:14 · 382 阅读 · 0 评论 -
Spring Boot 如何快速过滤出一次请求的所有日志?MDC的运用
本文讲述了如何使用MDC工具来快速过滤一次请求的所有日志,并通过装饰器模式使得MDC工具在异步线程里也能生效。有了MDC,再通过AOP技术对所有的切面植入requestId,就可以将整个系统的任意流程的日志过滤出来。使用MDC工具,在开发自测阶段,可以极大地节省定位问题的时间,提升开发效率;在运维维护阶段,可以快速地收集相关日志信息,加快分析速度。转载 2022-11-22 09:39:06 · 401 阅读 · 0 评论 -
妙用Java 8中的 Function接口,消灭if...else(非常新颖的写法)
的函数式接口,接口的参数一个为Consumer接口。的函数式接口,接口的参数为两个Runnable接口。Function函数式接口是java 8非常重要的特性,利用好Function函数可以极大的简化代码。创建工具类VUtils并创建一个isTure方法,方法的返回值为刚才定义的函数式接口-创建一个名为isTureOrFalse的方法,方法的返回值为刚才定义的函数式接口-定义一个抛出异常的形式的函数式接口, 这个接口只有参数没有返回值是个消费型接口。的方法,方法的返回值为刚才定义的函数式接口-转载 2022-11-17 11:02:39 · 143 阅读 · 0 评论 -
阿里的项目到处都是Google Guava工具包!
Google Guava工具包!转载 2022-11-17 09:45:33 · 183 阅读 · 0 评论 -
多次读取HttpServletRequest的inputstream方法 问题解决
原因:我要收集所有来自前台请求的参数信息,无论在任何地方的。当前请求参数都是json格式,都写在httpservlet的body中。这个只能通过流进行获取。然后问题来了,HttpServletRequest的inputstream只能读取一次。。。。解决:重写request的inputstream方法。。然后在需要部署应用中加上过滤器,在过滤器中加上这个重写的request的方法,问题解决。1、读取流信息的工具类:HttpUtil.java/**获取请求Body *转载 2022-01-11 16:24:03 · 2602 阅读 · 0 评论 -
JDK Base64编解码1.7和1.8的坑
场景对接一个第三方api接口,其中签名部分用的是JDK8的编码。我们线上采用JDK7,导致项目无法编译 替换编解码部分为1.7的代码,然后签名又不对 所以坑就在这里,结论,1.7的编解码有换行符导致签名失败贴代码import sun.misc.BASE64Decoder;import java.security.KeyFactory;import java.security.PrivateKey;import java.security.Signature;import java.s转载 2021-11-29 17:44:35 · 2690 阅读 · 1 评论 -
@RequestBody的使用
https://blog.csdn.net/justry_deng/article/details/80972817/原创 2021-06-22 17:24:45 · 79 阅读 · 0 评论 -
Spring中的@Transactional(rollbackFor = Exception.class)属性详解
https://www.cnblogs.com/clwydjgs/p/9317849.html序言今天我在写代码的时候,看到了。一个注解@Transactional(rollbackFor = Exception.class),今天就和大家分享一下,这个注解的用法;异常如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常error是一定会回滚的如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是..转载 2021-05-18 11:41:23 · 356 阅读 · 0 评论 -
Spring Boot模板引擎FreeMarker集成
一、FreeMaker介绍FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT、电子邮件、配置文件、源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组件。FreeMarker最初设计是用来在MVC模式的Web开发中生成HTML页面的,所以没有绑定Servlet或任意Web相关的东西上,所以它可以运行在非Web应用环境中。发展史FreeMarker第一版在1999年未就发布了,2002年初使用JavaCC(Java Compiler Compil转载 2021-03-10 17:58:35 · 726 阅读 · 0 评论 -
TemplateDirectiveModel模板标签的使用
/** * Freemarker额外标签载入 * @author LOpSSh */@Componentpublic class FreemarkerPostConfiguration { private final freemarker.template.Configuration configuration; @Autowired public FreemarkerPostConfiguration(Configuration configuration) { .原创 2021-03-10 17:21:33 · 656 阅读 · 0 评论 -
拦截器和过滤器的区别
过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一转载 2021-03-10 16:08:00 · 78 阅读 · 0 评论 -
SpringMVC自定义基于注解的参数解析器
import java.lang.annotation.*;自定义注解/** * 该注解用于绑定请求参数(JSON字符串) * * @author Zhang Kaitao */@Target(ElementType.PARAMETER)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RequestJsonParam { /** * 用于绑定的请求参数名字 */ St.原创 2021-03-10 15:57:28 · 399 阅读 · 0 评论 -
WebMvcConfigurer使用HttpMessageConverter实现HTTP的序列化和反序列化
https://blog.csdn.net/lmb55/article/details/90676823转载 2021-03-10 11:35:33 · 446 阅读 · 0 评论 -
ConcurrentHashMap put与putIfAbsent区别
put与putIfAbsent区别:put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,而putIfAbsent在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。putIfAbsent如果传入key对应的value已经存在,就返回存在的value,不进行替换。如果不存在,就添加key和value,返回null...转载 2021-02-07 11:49:26 · 759 阅读 · 0 评论 -
把多个file文件导出zip
public void exportZipFile (List<File> fileList, String zipName) {// File target = new File(StorageTypes.IMAGE.getPath()+"/"+zipName); File target = new File(StorageTypes.ROOT.getPath()+"/"+zipName); try (ArchiveOutputStr...原创 2021-02-05 15:19:02 · 280 阅读 · 0 评论 -
@RequestBody和@RequestParam区别
@RequestParam注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。RequestParam可以接受简单类型的属性,也可以接受对象类型。@RequestParam有三个配置参数:required表示是否必须,默认为true,必须。 defaultValue可设置请求参数的默认值。 value为接收url的参数名(相当于key值)。@RequestParam用来处理Content-Type为application/x...转载 2021-02-04 15:04:03 · 2537 阅读 · 0 评论 -
Spring Boot使用Redis进行消息的发布订阅
/** * Redis 相关的配置,包含推送,以及对象编码的定义 */@Configurationpublic class RedisConfig { public @Bean RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> template = new .原创 2021-02-03 11:32:49 · 132 阅读 · 0 评论 -
Java实现CORS跨域请求
使用前后端分离模式开发项目时,往往会遇到这样一个问题 -- 无法跨域获取服务端数据这是由于浏览器的同源策略导致的,目的是为了安全。在前后端分离开发模式备受青睐的今天,前端和后台项目往往会在不同的环境下进行开发,这时就会出现跨域请求数据的需求,目前的解决方案主要有以下几种:JSONP、iframe、代理模式、CORS等等前面几种方式在这里不讲,网上有很多资料。在这里我主要分享一下CORS这种解决方式,CORS即“跨域资源共享”,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从转载 2021-02-02 18:13:36 · 330 阅读 · 0 评论 -
44个Java代码性能优化总结
代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了解决这个错误,我们需要先自验证、再打包出待替换的class文件、暂停业务并重启,对于一个成熟的项目而言,最后一条其实影响是非常大的,这意味着这段时间用户无法访问应用。因此,在写代码的时候,从源头开始注意各种细节,权衡并使用最优的选择,将会很大程度上避免出现未知的错误,从长远看也极大的降低了工作量。代码优化的目标是:1转载 2021-02-02 17:47:15 · 304 阅读 · 0 评论 -
idea以补丁方式将本地代码迁移至其他版本
勾选需要的补丁文件生成补丁然后去其他版本里运行补丁原创 2020-11-06 17:13:59 · 297 阅读 · 0 评论 -
volatile和synchronized到底啥区别?多图文讲解告诉你
之前写了几篇 Java并发编程的系列 文章,有个朋友微群里问我,还是不能理解volatile和synchronized二者的区别, 他的问题主要可以归纳为这几个: volatile 与 synchronized 在处理哪些问题是相对等价的? 为什么说 volatile 是 synchronized 弱同步的方式? volatile 除了可见性问题,还能解决什么问题? 二者我要如何选择使用? 如果你不能回答上面的几个问题,说明你对二者的区别还有一些含混。本文就通过...转载 2020-08-05 16:43:29 · 228 阅读 · 0 评论 -
Java中常用的设计模式
一、什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛转载 2020-08-05 15:56:30 · 264 阅读 · 0 评论 -
StackOverflow和OutOfMemory
1、stackoverflow: 每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。 如果方法的嵌套调用层次太多(如递归调用),随着java栈中的帧的增多,最终导致这个线程的栈中的所有栈帧的大小的总和大于-Xss设置的值,而产生生S...转载 2020-05-06 10:39:46 · 1082 阅读 · 0 评论 -
面试官:消息队列这些我必问
消息队列连环炮项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? kafka,activemq,rabbitmq,rocketmq 都有什么去呗? 如何保证消息队列高可用? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性? 写一个消息队列架构设计?消息队列技术选型解决的问题:解耦 异步 削峰不用 MQ ...转载 2020-05-06 10:26:29 · 146 阅读 · 0 评论 -
Spring使用的注解大全和解释
Spring使用的注解大全和解释注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。 @Service 组合注解(组合了@Component注解),应用在service层(业务逻辑层)...转载 2020-04-26 17:40:56 · 180 阅读 · 0 评论 -
外行人都能看得懂的WebFlux,错过了血亏!
本文知识点架构:如果有关注我公众号文章的同学就会发现,最近我不定时转发了一些比较好的WebFlux的文章,因为我最近在学。我之前也说过,学习一项技术之前,先要了解为什么要学这项技术。其实这次学习WebFlux也没有多大的原生动力,主要是在我们组内会轮流做一次技术分享,而我又不知道分享什么比较好...之前在初学大数据相关的知识,但是这一块的时间线会拉得比较长,感觉赶不及小...转载 2020-04-10 18:20:32 · 522 阅读 · 0 评论 -
技术资料网站收集
1.https://blog.csdn.net/forezp/article/details/81040925 spring cloud篇2.http://php-note.com/原创 2020-03-18 14:22:03 · 243 阅读 · 0 评论 -
Java 8 Steam 例子整理
为什么需要SteamJava 8 中的Steam是对集合 (Collection) 对象功能的增强, 他专注于对集合对象进行各种非常便利,高效的聚合操作(aggregate operation), 或者大批量数据操作 (bulk data operation).Steam API借助于同样新出现的Lambda 表达式, 极大的提高编程效率和程序可读性. 同时他提供穿行和并行两种模式进行汇聚操...转载 2020-03-16 14:24:39 · 632 阅读 · 1 评论 -
如果你的shiro没学明白,那么应该看看这篇文章,将shiro整合进springboot
最近在做项目的时候需要用到shiro做认证和授权来管理资源在网上看了很多文章,发现大多数都是把官方文档的简介摘抄一段,然后就开始贴代码,告诉你怎么怎么做,怎么怎么做相信很多小伙伴即使是跟着那些示例代码做完配完,并且成功搭建,估计也是一头雾水,可能会不理解,为什么要这么做本人也是在看了大量文章之后,然后又自己动手搭了一便,得出如下使用的感悟,特此分享给大家依照程序,我要在这里对...转载 2020-03-06 15:07:25 · 116 阅读 · 0 评论 -
NumberFormat(数字格式化类)
前言在工作当中,可能经常会遇到比如数据保留两位小数显示,去除后面多余0,按指定格式输出数据这种需求,有时隔得时间久了也难免会忘记,所以就稍作总结方便今后查看,同时最后提供一个工具类方便今后使用。NumberFormatNumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat 还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名...转载 2019-12-04 17:03:42 · 4966 阅读 · 0 评论