
java
文章平均质量分 76
cmlbeliever
改变世界需要你,行动吧!骚年!先改变自己...
展开
-
Groovy安全高效的执行(死循环,休眠,危险方法)
在很多场景下有需要执行异步任务,或者执行用户的自定义任务时,通常我们会使用Groovy脚本能力来完成任务。通过groovy动态脚本能力,在业务执行过程中动态执行不同业务线或者用户的脚本,来满足不同需求。这样可以非常方便的进行业务拓展,但是也会带来一系列安全问题,1 比如在脚本中调用了系统危险的方法,如System.exit 会导致整个服务停止2 触发了死循环等场景,会导致任务卡死,使用多线程的话线程也很块就被占完。3 使用Thread.sleep 将线程进行休眠。原创 2022-12-26 17:13:24 · 4007 阅读 · 1 评论 -
Emoji表情插入DB问题调查总结
最近项目开发的时候发现插入emoji表情的时,会报如下错误:Caused by; com. ibatis。common. j dbc。except ion .NestedSQLExcept ion:The error occurred while applying a parameter map. Check the MS -RESERVATION RECORD UPDATE- Inline...原创 2019-11-24 20:56:16 · 624 阅读 · 0 评论 -
Redisson lua脚本执行踩坑之神秘的引号
最近项目需求,在redis中需要执行批量删除指定key,并且要支持原子操作,那么当然只有自己写lua脚本了。项目中使用的是redisson作为redis连接工具,首先先定义好lua脚本: private static final String BATCH_DEL_SCRIPT = "for k,v in pairs(ARGV) do \n " + "redis.c...原创 2018-11-20 21:15:07 · 9121 阅读 · 3 评论 -
SLB优雅的滚动发布
又是新的一年了,距离上一次写文章已经过了2个多月了,作为新年的第一篇文章,对最近使用SLB的心得进行总结,作为以后备注,也可以让各位读者少走一点坑。SLB使用的是阿里云的服务,服务A有多个实例部署在不同服务器上的docker容器中。对外通过SLB进行负载,调用方只需要通过访问SLB就可以将请求均匀的分布到不同服务器的A服务中。阿里云同时还提供接口的方式操作SLB,可以动态的上下线服务,官方文档...原创 2019-01-24 21:09:07 · 1708 阅读 · 1 评论 -
Mockito单元测试自定义mock返回
在上篇博客https://blog.youkuaiyun.com/cml_blog/article/details/82820753介绍了SpringBoot中进行单元测试各种小技巧后,发现还有个遗漏的case,那就是在使用的mock的时候,可能需要根据不同的参数返回不同的数据。比如传入aa返回true,传入bb返回false等情况,这里再补充一篇进行说明。首先还是在AService中新增doSmthing...原创 2019-04-17 22:39:13 · 7467 阅读 · 2 评论 -
【课程免费分享】1-SpringBoot入门导读
SpringBoot入门导读目前Spring与SpringBoot在Java项目中基本是标配了,极大简化了开发的时间和难度。尤其是SpringBoot,各种框架整合SpringBoot都非常方便。在享受完方便的开发后,是时候来学习下背后的机制了。对于框架的学习,学会使用只是入门的第一步,掌握其工作原理这才是需要更加深入学习的,技术类框架都是大同小异的,只要掌握了一种框架,这样即使再多类似的框架...原创 2019-10-06 16:06:03 · 337 阅读 · 0 评论 -
【课程免费分享】2-如何在Bean初始化回调前后进行自定义操作
2、如何在Bean初始化回调前后进行自定义操作在Spring环境中,如果需要在bean自动装配(属性都注入ok)完成后进行自定义操作,通常只需要实现接口InitializingBean,在afterPropertiesSet方法中执行操作即可。在这个接口回调时,bean中所有的属性已经注入完成了。比如在bean初始化完成后添加一段log:@Componentpublic class MyBe...原创 2019-10-06 16:07:18 · 675 阅读 · 0 评论 -
【课程免费分享】3-@ConfigurationProperties实现原理与实战
3、@ConfigurationProperties实现原理与实战在SpringBoot中,当需要获取到配置文件数据时,除了可以用Spring自带的@Value注解外,SpringBoot提供了一种更加方便的方式:@ConfigurationProperties。只要在bean上添加上这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到bean中。举个栗子,现在有如下配置:my...原创 2019-10-06 16:08:23 · 1114 阅读 · 0 评论 -
【课程免费分享】4 Spring各种Aware注入的原理与实战
4、Spring各种Aware注入的原理与实战Spring通过接口回调的方式提供了多个非常方便的XXAware接口,方便在开发过程中获取到Spring上下文核心组件,而且这些XXAware都有一个共同的父接口Aware。Aware都是在bean初始化回调前就进行回调的。在官方文档中列出了常用的Aware:举个例子:当我们需要获取Application和BeanFactory时,只需要实现对应...原创 2019-10-06 16:09:45 · 466 阅读 · 0 评论 -
【课程免费分享】5-@EnableAutoConfiguration原理实战
5、@EnableAutoConfiguration原理实战在SpringBoot项目中集成其他框架是非常简单的,如果需要添加WebMvc,只需要引入对应的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-...原创 2019-10-06 16:10:48 · 401 阅读 · 0 评论 -
【课程免费分享】6-Spring中Bean扫描实战
6、Spring中Bean扫描实战当需要扫描bean可以使用@ComponentScan(basePackages="")对指定包下添加的Spring支持的注解的类。SpringBoot是默认会扫描@SpringBootApplication注解所在包和所有子包的类。这样使用的话对于单纯的业务逻辑实现是没有问题的,但是如果想要把共通实现抽取出来作为公共项目,或者自定义拓展自己的注解,这时该如何扫...原创 2019-10-06 16:11:33 · 437 阅读 · 0 评论 -
SpringBoot 优雅的进行单元测试
随着项目的功能不断增多启动项目需要的时间就越来越长,如果每个功能都从Controller入口进行测试,不仅费时而且费力。那么这时候单元测试就体现出非常大的优势了,对所有的接口进行测试,可以非常快速的发现问题,而且方便调试。而且通过编写单元测试来发现代码结构的不合理性,通常来说代码结构越合理,单元测试写的越方便。假设有这个场景,我们的项目启动需要30s,共有A、B、C、D这四个service,A...原创 2018-09-23 11:05:40 · 44369 阅读 · 7 评论 -
SpringCloud2.0.1--Ribbon 重试监听
在SpringCloud中,通常使用的是客服端发现作为负载均衡。SpringCloud全家桶中提供了Ribbon作为客户端负载的优秀框架。 服务器之间的调用直接使用Feign进行调用。Feign默认使用了Ribbon作为负载的实现。 通常来说,进行服务拆分后,每个服务之间都需要支持幂等性,因为可能由于网络的原因,一个接口可能会被重试多次,如果没有做好幂等性控制的话,容易出现数据重复等异常情况。...原创 2018-08-19 16:06:40 · 1249 阅读 · 0 评论 -
struts2 json请求的校验失败获取返回信息
在struts2中如果校验失败则会添加fieldError然后自动跳转到input视图中,想要在json中获取错误的信息则在action中添加 fieldErrors原创 2013-09-02 20:43:21 · 1513 阅读 · 0 评论 -
struts2 ActionContext获取session对象有时为null
最近开发的时候发现了一个很奇怪的问题,使用ssh框架! 在service层获取session中数据的时候:ActionContext.getContext().getSession().get("user");用户登录后信息保存在session中key值为user!但是有的时候访问服务器却获取不到session中user的值!重新登录后又可以了!纠结。。。。原创 2013-09-03 22:32:03 · 2090 阅读 · 0 评论 -
java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie
当项目中使用单点登录功能时,通常会使用cookie进行信息的保存,这样就可以在多个子域名上存取用户信息。 比如有三个domain分别为test.com,cml.test.com,b.test.com这三个域名下的cookie是需要互相访问的。这时会在response上写入cookie信息 Cookie cookie = new Cookie("testCookie", "test"原创 2016-08-06 11:12:12 · 15837 阅读 · 3 评论 -
Springboot Mybatis 打包jar扫描bean与mapper问题研究与解决
SpringBootLean 是对springboot学习与研究项目,是根据实际项目的形式对进行配置与处理,欢迎star与fork。 地址:点我进入项目地址最近在项目中集成以全注解的方式Mybatis,配置了自动bean包与mapper所在包db.mybatis.mapperLocations=classpath*:com/cml/springboot/sample/db/resource/*d原创 2016-11-12 11:24:55 · 36422 阅读 · 6 评论 -
SpringMVC中一个超好用的参数缓存框架
在上篇博客(http://blog.youkuaiyun.com/cml_blog/article/details/78928693)已经分析了页面参数保存的方法以及各种方法。但是是基于AOP的实现方式,既然使用SpringMVC,那么就应该使用框架提供的接口进行使用。现在将SpringMVC的实现方式抽取出来,封装成一个支持自定义拓展的参数缓存框架。已经提交到了maven仓库。 下面对框架进行简单的介绍:...原创 2018-02-11 09:57:53 · 1618 阅读 · 1 评论 -
关于页面查询条件保持的思考(一)
在项目中,查询条件保持是经常使用到的,特别是管理后台。对于前台页面来说,通常为了访问的方便会使用get的方式进行表单提交,这样进行页面分享或者发送给好友时可以直接打开对于的页面。但是对于管理后台来说,地址栏上的一大串url参数是不允许的,不美观也不安全。 比如在用户查询页面,可以根据用户的年龄,姓名,昵称,等等参数进行查询,而且可能客户已经翻到了第n页上,此时点击某个用户详细,页面跳转到用户详细...原创 2017-12-29 10:15:00 · 4278 阅读 · 0 评论 -
Spring Async不得不知的用法
在Spring中使用需要对方法进行异步操作的时候,只需要在对应的方法上加上 @Async 注解就好了,如果想要获取返回值或者进行监听呢? 首先,整合异步框架需要在SpringBoot入口类中添加@EnableAsync注解,表明开启异步框架。 从@Async类的注释上得知In terms of target method signatures, any parameter ty...原创 2018-06-28 22:10:24 · 3309 阅读 · 0 评论 -
一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知识仅够应付面试使用的。前一段时间,线上服务器的FullGC非常频繁,平均一天40多次,而且隔几天就有服务器自动重启了,这表明的服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。未调优前的服务器GC数据,FullGC非常频繁。 首先服务器的配置非常一般(2核4G),总共4台服务器集群。每...原创 2018-07-15 22:28:35 · 33316 阅读 · 28 评论 -
Eureka 优雅下线,上线
项目中使用SpringCloud时,Eureka作为注册中心基本是标配了,作为AP的一个实现策略,基本能够满足项目的需要。在微服务的世界中,每个模块发布是常有的事,那么如何安全地发布呢?直接关闭服务这种方式简单粗暴,直接造成的影响就是部分模块调用时出错,如果有多台服务器的话,一台一台地重启还是可以的,前提是调用端得有自己的重试策略,比如使用Feign作为客户端调用接口的话可以配置rib...原创 2018-08-04 14:58:17 · 10348 阅读 · 2 评论 -
java线程的暂停与唤醒测试
终于有点理解了,对于java中线程的暂停与唤醒(希望对大家有点帮助)package ThreadStop;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;im原创 2012-06-07 18:14:08 · 1413 阅读 · 0 评论