java
文章平均质量分 65
Niubist_
这个作者很懒,什么都没留下…
展开
-
基于表达式引擎SPEL的数据权限控制
Java 表达式引擎选型调研分析。原创 2023-12-29 09:45:28 · 959 阅读 · 0 评论 -
apache pdfbox setValue报错 UnsupportedOperationException
【代码】apache pdfbox setValue报错 UnsupportedOperationException。原创 2022-10-26 09:35:41 · 503 阅读 · 0 评论 -
apache pdfbox文本填充中文
使用Apache PDFbox实现中文文本填充,并解决乱码问题原创 2022-10-26 09:35:03 · 5635 阅读 · 6 评论 -
RestTemplate设置固定的url参数
在使用RestTemplate请求三方接口时:三方接口一般都要求在url后面拼接上固定的几个参数,一般如accessToken进行权限校验。而我们在开发时,请求这些地址,如何避免在url拼接accessToken这种重复固定的编码操作呢。方法当然有很多,本文提供一种通过反射偷梁换柱的写法来实现。以微信小程序服务端接口请求作为请求对象。微信小程序要求在请求时带上?accesss_token=ACCESS_TOKEN如何实现…?# 基础配置微信小程序配置类/** * 微信..原创 2020-10-30 17:46:41 · 3251 阅读 · 0 评论 -
使用RabbitMQ实现未支付订单在30分钟后自动过期
延迟队列可以实现消息在投递到Exchange之后,经过一定的时间之后再投递到相应的Queue。再被消费者监听消费。即:生产者投递的消息经过一段时间之后再被消费者消费。业务场景:订单在30分钟内还未支付则自动取消。该业务的其他实现方案:使用Redis,设置过期时间,监听过期事件。使用RabbitMQ的过期队列与死信队列,设置消息的存活时间,在设置的时间内未被消费,即会投递到死信队...原创 2020-04-17 12:24:33 · 2754 阅读 · 1 评论 -
RabbitMQ死信队列在SpringBoot中的使用
死信队列可以实现消息在未被正常消费的场景下,对这些消息进行其他处理,保证消息不会被丢弃。# 概念:消息会变成死信消息的场景:消息被(basic.reject() or basic.nack()) and requeue = false,即消息被消费者拒绝签收,并且重新入队为false。1.1 有一种场景需要注意下:消费者设置了自动ACK,当重复投递次数达到了设置的最大retry...原创 2020-04-09 17:34:57 · 981 阅读 · 0 评论 -
SpringBoot RabbitMQ实现消息可靠投递
消息投递时 可能发生丢失的场景:生产者------msg------> MQ 。可开启消息投递结果回调,确保每条消息都收到了回调。MQ。将Queue与消息设置成可持久化,搭建镜像集群队列。MQ-------callback---->生产者。回调时失败,某条消息在一段时间内未收到回调,则默认投递失败,生产者需要再次投递该消息到MQ。(该场景下会导致同一条消息被重复投递,消费者端...原创 2020-04-04 14:47:32 · 611 阅读 · 0 评论 -
SpringBoot2.0统一返回Rest风格数据结构与统一异常处理
一,统一返回数据结构定义返回的数据结构package com.futao.springmvcdemo.model.system;import org.joda.time.DateTime;import java.sql.Timestamp;/** * @author futao * Created on 2018/9/22-21:47. * 统一返回Rest风格的数据结构...原创 2018-09-24 01:04:16 · 5291 阅读 · 5 评论 -
[原创]SpringBoot的自动配置原理与自定义SpringBootStarter
以SpringBootAdmin的实现方式作为参考实现的效果:添加相关的依赖,再在启动类上加上@EnableXXX就可以使用相关的功能了。原理-SpringBootAdmin为例在启动类上标记注解@EnableAdminServer@EnableAdminServer@SpringBootApplicationpublic class AdminApplica...原创 2019-11-02 12:20:44 · 581 阅读 · 0 评论 -
SpringBoot服务监控-SpringBootAdmin
github地址: https://github.com/codecentric/spring-boot-admin文档地址:https://codecentric.github.io/spring-boot-admin/current/在项目中使用SpringBootAdmin分为两部分: 服务端与客户端。客户端通过http的方式向服务端提供自生的运行状况版本: 2.1.6...原创 2019-11-02 10:12:49 · 571 阅读 · 0 评论 -
SpringBoot 2.x Redis缓存乱码问题/自定义SpringBoot-Cache序列化方式
代码 @Cacheable(cacheNames = "article", cacheManager = "cacheManager", keyGenerator = "keyGenerator", condition = "#id!=null && #id!=''", unless =...原创 2019-10-25 11:51:09 · 1229 阅读 · 0 评论 -
不写mybatis的@Param有的报错有的却不报错问题
同样的代码,有的同事报错,有的同事不报错,错误如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘uid’ not found. Available parameters are [arg1, arg0, pa...原创 2019-09-24 18:31:55 · 3490 阅读 · 4 评论 -
DispatcherServlet
路径 org.springframework.web.servlet.DispatcherServlet继承关系重点关注doService()方法该方法重写了父类FrameworkServlet的方法FrameworkServlet在processRequest()方法中调用了doService()方法而processRequest()方法是在FrameworkServlet(继承...原创 2019-08-28 22:08:47 · 258 阅读 · 0 评论 -
上海降温了(OW)
上海降温了(OW)原创 2019-08-27 22:52:19 · 1103 阅读 · 0 评论 -
AMQP-RabbitMQ/6/RPC模式/关注消息处理结果
6. RPCBut what if we need to run a function on a remote computer and wait for the result? Well, that’s a different story. This pattern is commonly known as Remote Procedure Call or RPC.大概意思是说,上面几...原创 2019-06-08 08:27:06 · 234 阅读 · 0 评论 -
AMQP-RabbitMQ/5/主题模式
5. 主题模式 Topics根据主题接收消息routing_key - 它必须是由英文点.分隔的单词列表*可以替代一个单词。#可以替换零个或多个单词。图示# 个人理解与路由模式基本相同,不同的点只是路由模式需要Queue订阅的路由键与消息的路由键完全匹配,Exchange才会将消息发送给Queue。而主题模式(Exchange类型为topic),消费者在将Ex...原创 2019-06-08 08:26:34 · 283 阅读 · 0 评论 -
AMQP-RabbitMQ/4/路由模式
4. 路由模式 Routing图示# 个人理解生产者定义Exchange,设置类型为direct。将消息发送给Exchange之前,为每条消息指定路由键消费者定义队列Queue,并将队列与Exchange进行绑定,在绑定的时候需要告诉Exchange,当前这个Queue接受的路由键。消息由Exchange发送给Queue时,消息的routingKey必须与该队列订阅...原创 2019-06-08 08:26:03 · 304 阅读 · 0 评论 -
AMQP-RabbitMQ/3/发布订阅模式
3. 发布订阅模式 Publish/Subscribe - 全集监听fanout一次向多个消费者发送消息图示# 个人理解生产者定义Exchange,同时将Exchange的类型定义为fanout,并向该Exchange发送消息。消费者定义队列Queue,并将队列与该交换机进行绑定。之后交换机付负责将消息全量推送给每一个与之绑定的QueueRabbitMQ中消息传递模型...原创 2019-06-08 08:25:32 · 802 阅读 · 0 评论 -
springboot整合druid连接池
依赖 //mysql 驱动 compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.21' //druid compile group: 'com.alibaba', name: 'druid', version: '1.1.10'# 1. 新建druid配置信息类Druid...原创 2018-10-11 20:26:16 · 700 阅读 · 0 评论 -
将jar包发布到本地maven仓库
项目中在对接第三方服务时经常需要引用第三方的jar包依赖,比如腾讯的短信服务https://cloud.tencent.com/document/product/382/13613这种场景还是非常多的,如何将第三方的jar包发布到本地,This is a question现以发布腾讯的短信服务SDK为例子,发布到本地仓库下载腾讯短信服务源代码编译源代码,生成jar包mvn packa...原创 2018-09-27 13:25:23 · 6627 阅读 · 0 评论 -
IntelliJ IDEA个人配置
# 主题# 字体推荐DejaVu Sans Mono,这个字体绝对爽翻第二推荐Courier 或者 Courier NewIDEA应用字体代码字体预览# 常用插件Alibaba Java Coding Guidelines阿里巴巴编程规范,可以检查自己的java命名规范编程规范以及bug,并会给出相应的解决方案Grep Console对控制台输出...原创 2018-10-19 21:04:06 · 341 阅读 · 0 评论 -
SpringBoot 发送邮件
# 依赖compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail'# 配置spring: # 发邮件 mail: host: smtp.qq.com port: 587 username: 1185172056@qq.com password: 不是qq邮...原创 2018-10-19 22:19:53 · 247 阅读 · 0 评论 -
RocketMQ消息队列还没入门就想放弃
题外话什么情况下的异步操作需要使用消息队列而不是多线程?消息队列和多线程两者并不冲突,多线程可以作为队列的生产者和消费者。使用外部的消息队列时,第一是可以提高应用的稳定性,当程序fail后,已经写入外部消息队列的数据依旧是保存的,如果使用两步commit的队列的话,可以更加提高这个项目。用线程的话,会占用主服务器资源, 消息队列的话, 可以放到其他机器上运行, 让主服务器尽量多的服...原创 2018-10-19 22:20:19 · 2537 阅读 · 0 评论 -
Springboot整合redis从安装到FLUSHALL
语言: java+kotlin# windows下安装redis参考 https://www.cnblogs.com/jaign/articles/7920588.html# 安装redis可视化工具 Redis Desktop Manager参考 https://www.cnblogs.com/zheting/p/7670154.html# 依赖 compile('org....原创 2018-10-17 17:24:14 · 340 阅读 · 0 评论 -
springboot整合elasticsearch全文检索入门
只是简单的整合介绍# 安装下载elasticsearch与kibana https://www.elastic.co/start# 依赖springBootVersion = '2.0.5.RELEASE'compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch'...原创 2018-10-23 21:17:04 · 381 阅读 · 0 评论 -
Springboot 国际化
# 定义国际化资源resources下新建i18n文件夹新建xx.properties文件中文:新建xx_zh_CN.properties文件存放对应的中文英文:新建xx_en_US.properties文件存放对应的英文效果是这样的:定义需要国际化的内容在application.yml中配置spring: messages: # 定义国际化文件的文件地址,...原创 2019-01-23 17:40:46 · 289 阅读 · 0 评论 -
【牛】使用Redis作为Mybatis的二级缓存MybatisCacheRedis
看过市面上其他人写的相关的文章,基本上都是没有深入思考与实际使用的。大都问题是clear()的时候将整个redisDB全部删除了,而没有做到只将单前某个mapper对应的缓存删除。package com.west.lake.blog.foundation;import com.west.lake.blog.model.RedisKeySet;import com.west.lake.bl...原创 2019-04-12 12:42:48 · 229 阅读 · 0 评论 -
单例设计模式
# 单例模式需要满足:私有的构造函数懒加载线程安全通过静态方法来访问实例无法通过反射来实例化对象无法通过反序列化来实例化对象1. 饿汉模式package com.futao.springbootdemo.design.pattern.gof.a.singleton;/** * 单例模式1-饿汉模式,即在类加载的时候就实例化对象。 * * @author futao ...原创 2019-04-03 11:10:30 · 161 阅读 · 0 评论 -
【注解驱动开发】- 注册Bean的4种方式
1-1.传统xml方式Xml配置文件的方式定义bean<beans> <bean id="user" class="com.futao.springmvcdemo.model.entity.User"> <property name="address" value="杭州"/> </bean></beans>...原创 2019-04-12 21:22:10 · 307 阅读 · 0 评论 -
ActiveMQ基础与SpringBoot整合
ActiveMQ实现了JMS规范。# ActiveMQ中相关概念术语Destination目的地消息将要发送的地方,包括:Queue和Topic,它们都对Destination接口进行了实现PTP模式 - Queue发布订阅模式 - TopicMessageProvider需要指定Destination才能发送消息,MessageConsumer需要指定Destination才能接...原创 2019-06-07 22:19:14 · 390 阅读 · 0 评论 -
AMQP-RabbitMQ/1/概念/一对一简单模型
# JMS,AMQP,MQTT的区别与联系JMSJava消息传递服务(Java Messaging Service )AMQP高级消息队列协议(Advanced Message Queueing Protocol )MQTT消息队列遥测传输(Message Queueing Telemetry Transport )简单理解:*JMS是专门为Java设计的一套消息服务API,像...原创 2019-06-08 08:24:27 · 644 阅读 · 0 评论 -
AMQP-RabbitMQ/2/工作队列
2. 工作队列 Work queuesDistributing tasks among workers消息将发送给c1或者c2# 个人理解生产者定义Queue,并向该队列发送消息多个消费者可以从指定的同一个Queue中读取消息。每条消息只会发送给其中某一个消费者。生产者package com.futao.springmvcdemo.mq.rabbit.workq...原创 2019-06-08 08:24:55 · 251 阅读 · 0 评论 -
@ConfigurationProperties注解的使用与@Value的使用
读取的配置文件application.yml:jianshu: id: futaosmile# 1. 使用@ConfigurationProperties注解注入@RunWith(SpringRunner.class)@SpringBootTest@ConfigurationProperties(prefix = "jianshu")public class Springmvc...原创 2018-10-11 20:02:10 · 2693 阅读 · 0 评论