java
ah_ty
希望大家多多关照。
展开
-
linux 注册 系统服务
程序开机自启,程序守护进程,最简单的办法就是直接把程序注册成系统服务。原创 2022-08-12 17:43:31 · 715 阅读 · 0 评论 -
java 调用命令行
主要针对win下java调用命令行操作基于java17开发,请注意jdk版本核心功能:执行基础的命令,建议批量命令写成bat,然后直调用。拓展功能:有些命令行执行复杂牵扯到第三方调用,可能会卡住(无限期等待),因此需要配置执行超时时间,执行过程中,没有任何输出完全不响应时需要杀掉脚本进程完整代码:...原创 2022-06-17 17:16:29 · 2982 阅读 · 0 评论 -
Java 日志 时间戳替换成时间
日志中的时间戳替换成时间,不经常用,但是用到的时候又找不到,想简单解用notepad++的正则替换好像又行不通。上例子:想必大家看到这样的日志要奔溃的,什么鬼,只有一个时间戳,这怎么看。。。。有的时候物联网相关行业会遇到,因为设备为了节约发送数据的成本可能只会携带很少量的信息,因此会出现一系列的麻烦,好了言归正传,上代码了。上代码: //定义正则表达式(待匹配的时间) String reg = "[0-9]{10}";//正则表达式这里是根据时..原创 2021-03-28 11:33:34 · 534 阅读 · 1 评论 -
spring cloud gateway 之 内部鉴权
关于spring cloud gateway 的routes的方式使用本文不再涉及,可以百度查到很多资料,这里主要说spring cloud gateway网关服务内部的接口鉴权方式由于很多原因,不得不将一些访问量很低,性能优异的接口写在网关内部,这其实是不好的做法,但是有的时候相比其他做法却又是最佳的,此时我们会面临一个问题,那就是这些接口如何鉴权的问题,这里比较麻烦,可能多数小伙伴对webflux 了解不多,我也是,因此花了很多时间,走了很多冤枉路,最后感谢大佬的帮助才得以了解这个关键字以此来.原创 2020-12-16 17:49:06 · 4318 阅读 · 0 评论 -
MyBatis mysql 字符串拼接
MyBatis 中拼接字符串有两种方式。推荐使用:1、 使用CONCAT 函数SELECT*FROMuserWHEREnameLIKECONCAT(CONCAT('%', #{name}), '%')不推荐使用:2、 使用${ } 代替 #{ }因为${ }直接传入SQL,而#{ }传入的是字符串带有引号SELECT*FROMuserWHEREnameLIKE'%${name}%'第二种方式不推荐使用不仅仅是因为它使用了$符,一定要注意...原创 2020-09-18 17:29:31 · 5560 阅读 · 0 评论 -
@validated 验证 List
经常遇到一些参数需要验证,用@validated 的分组验证方式很棒,可以解决大量的冗余代码,提升美观性。但是我们平时会遇到入参为list的校验,@validated 的分组验证就无法使用了,非常麻烦,各大搜索引擎一查,总结一下比较推荐的方法:反面例子:@***Mapping("/**")public *** apiName(@RequestBody @Validated(Add.class) List<AClass> aObject)正常情况下这个例子是无法使用的,不.原创 2020-08-27 09:55:41 · 6334 阅读 · 2 评论 -
Java Bean ?Spring Bean?
一开始没有了解Spring Bean的时候,接触了Spring Bean,导致我对Java Bean的概念越来越疑惑,曾经一度以为spring容器中的bean就是java bean(谁让它叫bean呢。。。),后来闲时认真了解了一下,他们俩是有本质区别的。什么是JavaBean:JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公...原创 2020-03-26 11:17:42 · 290 阅读 · 0 评论 -
feign client feignClient 熔断
feignclient 有着很多的优势,代码简洁、可以均衡调用(内置ribbon)nclient 有着很多的优势,代码简洁、可以均衡调用(内置ribbon),等等。。。。但是用feignclient 去调用外部接口时,绝大数小伙伴都会遇到熔断这个问题,而且没有任何报错信息,结果让人无从查起,无迹可寻!!!!这是最让人困扰的,也是很多老程序员不愿意使用的原因之一(本来一个httpclien...原创 2020-03-02 14:19:29 · 2854 阅读 · 0 评论 -
消灭 Java 代码的“坏味道”
消灭 Java 代码的“坏味道”原创:王超阿里巴巴中间件昨天导读明代王阳明先生在《传习录》谈为学之道时说:私欲日生,如地上尘,一日不扫,便又有一层。着实用功,便见道无终穷,愈探愈深,必使精白无一毫不彻方可。代码中的"坏味道",如"私欲"如"灰尘",每天都在增加,一日不去清除,便会越累越多。如果用功去清除这些"坏味道",不仅能提高自己的编码水平,也能使代码变得"...转载 2019-12-10 14:03:31 · 137 阅读 · 0 评论 -
spring boot 2.x mybatis 懒加载导致json数据对象传输异常
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.apache.ibatis....原创 2019-09-09 15:50:21 · 976 阅读 · 2 评论 -
spring cloud gateway Response 修改bug
spring cloud gateway Response修改后,返回值中及个别字符乱码。相信很多人接触了spring cloud gateway,但是少数人会真正把它直接用在项目上,我们的新项目快上线了,整个开发过程中遇到了很多问题,简单说一下感受,现阶段spring cloud gateway相关资料太少,很多东西查不到,很多时候需要自己去看源码自己去仿照源码重新去写,而且大坑往往更是查不...原创 2019-08-07 16:21:39 · 1612 阅读 · 11 评论 -
java N级 级联
继上一次的递归菜单排序,这次又进行改进极大的降低了算法复杂度,基本上最低,以及完美兼容各种N级联体各种类。实现方式也更加简单。不再使用递归策略!!!这次算法很精妙,可能使某些人怀疑人生。两个条件:1.入参是完全平铺的形式,在一个list中。2.实现类实现接口Cascadable看代码:==============================我是分割线====...原创 2019-08-09 10:28:32 · 1954 阅读 · 0 评论 -
历史数据 高效 跨表分页
由于历史数据会随着时间的推移越来越多,因此查询的速度会越来越慢,所以大多数人都会想到分表。而百度跨表分页后,会发现主要有两种想法。一种是将可能需要查询的表内所有的历史数据查出来,然后在内存中进行时间排序还有一种的主要思路是查询时建立临时表,将数据插入临时表中,然后从临时表内分页查询。这两种思路都比较。。。。慢而且浪费内存和cpu。因此我想了一种比较优秀的...原创 2019-07-10 14:27:52 · 564 阅读 · 0 评论 -
spring cloud 复杂类型 FeignClient 避免linkedHashMap
项目使用spring cloud后,各种服务被独立开,功能被分开。因此,会开发中我们往往会遇到一些问题,服务间的互相调用需要更为复杂的方式。调用方式主要有两种一种是http请求方式,结合常说的restful风格,来传递信息,基于tcp的短暂通讯方式(伪RPC)。另一种就是基于socket的长连接,底层同样基于tcp的RPC方式调用。这两种方式,可能RPC效率更高,因为他...原创 2019-07-10 13:40:55 · 3462 阅读 · 0 评论 -
多个域名,一台主机,多个项目,不同域名对应不同项目
多个域名,一台主机,多个项目,不同域名对应不同项目相信这个问题对于大家会比较棘手,一开始想到的就是使用多个tomcat服务器,但是你只有一个80端口啊!!!不要急,先分析一下,想到这里我想肯定会有人想到用代码判断,然后进行跳转,是的你可以单独做一个项目放在80端口没然后进行判断跳转,但是这样做太麻烦!!!下面我告诉大家一个简单的方法:tomcat的Server.xml详解和Host的配置 你可...原创 2018-04-23 18:39:34 · 2028 阅读 · 0 评论 -
Java三大器之拦截器(Interceptor)的实现原理及代码示例
写的不错,转来瞅瞅,贴上链接:https://blog.csdn.net/reggergdsg/article/details/52962774。1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。在AO...转载 2018-04-23 18:52:10 · 228 阅读 · 0 评论 -
java 递归实现N级菜单
算法已经改进,请看最新:https://blog.csdn.net/u011060906/article/details/98942421这个是单一根节点的,如果需要多根节点的参考:https://blog.csdn.net/u011060906/article/details/88549862最近需要做一个N级菜单的查询,所以想到了递归,这里就简单写一下思路首先退出条件就...原创 2018-06-20 15:09:24 · 2893 阅读 · 2 评论 -
java DelayQueue 关联redis
关联redis的DelayQueue java 的延时队列相信很多人都用过,因为这东西应用场景太多了,但是有一点,就是如果重启服务器,那么延时队列里的东西都没了,特别是超多数据量的延时队列,这就是个大问题。 因此,有很多解决方案,比如出现了所谓的"redis延时队列",但是此延时队列并非我们想要的,因为他还是需要一个定时任务来执行,而我们真正想要的是这么个队列,有任务的时候,立刻以...原创 2018-09-24 10:11:28 · 681 阅读 · 2 评论 -
Spring Cloud CAP 简述
在Spring Cloud中,环境搭建的选用主要是取决于CP还是AP系统,而CAP 是一个完全绕不开的东西,大家应该早就非常熟悉,这里简单的再次说明一下:CAP定理: 指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。C:一致性,也就是通常说的线性...原创 2019-02-21 13:31:45 · 3329 阅读 · 1 评论 -
spring boot jsp 加载不出来js、css等静态资源文件
找遍全网,很难发现,废了很多力气,路径没有问题,拦截器也放行了,结果就是找不到静态资源,万念俱灰 最终查到,是因为@EnableWebMvc这个注解 我们的项目是使用springMVC后改的spring boot ,系统比较庞大,使用了websocket当初搭环境网上的教程只教你怎么搞,不告诉你为什么,这是最坑的!!! @EnableWebMvc这个注解主要是继承了Dele...原创 2019-02-20 16:42:39 · 3238 阅读 · 0 评论 -
java 递归实现N级菜单二(多根)
算法已经改进,请看最新:https://blog.csdn.net/u011060906/article/details/98942421继上一次的递归菜单排序,这次又进行改进,实现多根节点的菜单排序(也可以单个根使用)java中实现递归,一般使用入参做返回值可以简单一点。这次优化思路,逻辑更加清晰:0.将待整理的菜单进行排序!!!(一定要按照菜单的父级id排序,...原创 2019-03-14 13:31:49 · 677 阅读 · 0 评论 -
消息队列动态负载
关于reids中的消息队列,以及其他的队列的处理方式。(底层一定要是队列,而不是伪队列。)1.Reid中的消息队列的长度控制原理对于一个队列,他的长度会随着放入数据而增加,随着取出数据而减少,那么放入的速度不变的前提下,取出的速度增加则会导致队列的长度变短。依据这个原理可以实现动态调整队列的长度。 而放入和取出随着调整取出占用cpu时间片的变化就一定可以维持在一个稳定的范围内。...原创 2019-03-25 18:00:14 · 1271 阅读 · 0 评论 -
springboot2.0.x整合swagger2
先说明一下,swagger2.2版本和FeignClient有冲突,会报空指针异常!!!亲测,方便的解决办法就是集成更高版本的swagger!!!1.pom.xml加依赖下载有点慢,耐心等待。。。 <!-- Swagger2 --> <dependency> <groupId>io.spring...原创 2019-04-01 17:09:53 · 484 阅读 · 0 评论 -
微信登陆 , 简单的demo , java
这几天简单的做了一下微信登陆的demo,希望对大家有帮助不多说,直接上代码:/** * * @author TY * */@Controller@RequestMapping("/wechatlogin")public class WechatLoginController { /** * 请求CODE * * @param response * @throw...原创 2018-02-24 14:42:50 · 1216 阅读 · 0 评论