- 浏览: 255106 次
- 性别:
- 来自: 成都
最新评论
-
gzu_mcl:
讲的清晰明了通俗易懂,大赞博主!
Spring MVC中的CSRF攻击防御 -
bart233:
java Cloneable—从原型模式说起 -
bart233:
引用
java Cloneable—从原型模式说起 -
moon_walker:
果粒儿我是 写道“切面方法里只能接收到方法的入参,也就是你这里 ...
一种基于kafka+storm实现的日志记录方法 -
果粒儿我是:
“切面方法里只能接收到方法的入参,也就是你这里的UserDTO ...
一种基于kafka+storm实现的日志记录方法
文章列表
前言
最近在做的项目其实是对老系统的一个深度改造,在老系统里缓存使用这块感觉有些瑕疵。在老系统里不管是“配置数据”还是“业务数据”都统一使用redis作为缓存。
“业务数据”使用redis作为缓存无可厚非,但“配置数据”使用使用redis就感觉不是很妥。
首先:过渡依赖redis,一些开关配置都依赖redis,如果redis服务挂掉整个服务瘫痪;
其次:增加redis服务的存取压力,几乎每个流程都会判断各种开关是否开启,对应的每个请求都会有数次redis读取请求。
最后:性能上也不好(与“本地jvm缓存相比”),读取redis是毫秒级的开销。
目录
一、初识事务
二、mysql数据库的事务处理
三、JDBC封装mysql的事务处理
四、spring中的事务处理
五、分布式事务
一、初识事务
事务其实是针对的具体的数据库操作,以电商平台中的提交订单、扣减库存为例,这里会同时操作两张表写订单表、修改库存表:如果提交订单成功,但扣减库存失败,就会导致订单中的商品数大于库存的实际商品数,导致部分订单因为没有库存而无法出库;如果提交订单失败,但扣减库存成功,会导致实际库存大于0,但库存表显示为0的情况,导致实际有库存,但用户无法下单。这时就必须借助事务控制,把提交订单、扣减库存两个操作封装为一个原子操作,即要 ...
目录:
1、spring boot 整合thymeleaf
2、spring boot 整合mysql
3、spring boot 整合mongodb
4、spring boot 整合其它
5、读取配置文件处理
在最近的新项目开发环境搭建过程中,经常会对比较独立的业务进行单独服务化部署。一个项目动辄会被拆分成十多个子系统(子服务),每个子系统都需要进行spring相关配置,无论是采用xml还是java配置方式,都比较繁琐有大量重复copy工作。
采用Srping boot可以大幅度减少依赖包配置,以及版本配置,部分bean可以根据约定的规则自动注入到sprin ...
引言
接上一篇《一种基于kafka+storm实现的日志记录方法(二)》,讲述了java服务端向kafka怎么推送日志消息代码实现。本篇继续整理通过storm怎么消费kafka日志消息,并将日志内容存储到hbase。
主要过程分为三部分:
1、storm从kafka消费日志消息。
2、对日志消息按照系统标识进行过滤分组。
3、把不同的分组的日志消息,批量写入hbase。
初识Storm
在讲述这个三个过程之前,先简单了解下storm:storm是一个分布式的实时计算框架,相对其他实时计算框架,具备高容错、低延时等特点,实际上storm可以做到近实时。相对 ...
引言
上一篇分享博文《一种基于kafka+storm实现的日志记录方法》,讲述了一种基于大数据实时运算实现的日志记录方式。在文中只是提出了一种技术实现思路,以及整体架构,并且在我所在的项目中已经进行了实践,感兴趣的朋友,可以进一步完善,比如添加权限等,实现一种新日志平台的搭建。
博文发布后,有网友留言希望公开部分源码。今天准备整理下我们已经实现的代码,去掉公司业务部分,做一个简单share,以回应网友要求。本文不再对整体实现流程进行讲解,感兴趣的朋友请直接前往上一遍博文。
代码实现主要分两部分:第一部分是java客户端往kafka写日志消息(生产者);第二部分是sto ...
背景:
在我们系统中,每逢大促经常会遇到活动页面莫名被篡改的情况,有些操作是人为故意修改,比如大促时把某些坑位的商品全部换为某个商家的商品,这里就存在恶意修改页面的问题。每次遇到这种问题,内控合规部 需要找我们提取操作日志,追溯所有篡改记录,查找元凶。
由于活动页面装修可以通过授权给多人装修,我们mysql表里的操作日志只有最后一次修改的状态记录,没有操作流水日志。无法从技术上排除每个被授权人的嫌疑。
当然你可以会觉得解决这个问题很简单,可以首先通过传统的打印日志的方法。但这个种方式有如下缺陷:
1、日志散落在各台应用服务器,要收集齐所有相关日志非常麻烦。
2、由 ...
引言
在我的项目中有这样一个场景:页面链接是同一个,但是可以有多个子页面,不同的时间要展示不同子页面,类似一个页面排期功能。也许你们觉得要实现这个功能比较简单,实现过程为:获取所有子页面的生效时间 ...
引言
最近我的同事分享了一个页面渲染过程中,字符串拼接的优化处理。我们系统的页面渲染是分模块渲染,每个模块渲染完成后都是一个String型的html片段,最终我们需要把所有模块的html片段拼接成一个完整html页面。老 ...
引言
在我上一篇《微服务化之----熔断和隔离》 中,使用责任链模式来进行熔断和限流。其中的并发访问计数器使用的是AtomicInteger,来统计当前服务器的并发数,关键代码如下:
private static AtomicInteger count = new Atom ...
前言
Spring 的aop技术,个人理解 主要解决代码复用,避免重复性编写类似代码问题。比较典型的三种场景就是 日志打印、权限验证、事务处理。其实远不至于这三种场景,在编码过程中如果发现某些类似的代码频繁的出现在各个方法中,就可以考虑是否可以用aop统一进行处理,而不是在每个方法都进行一次。
Spring aop相关术语
连接点:判断是否需要使用spring aop技术,首先提取某一类的业务方法进行分析,所有这些方法就是连接点。
切点:进一步在所有的连接点中进行分析,提取出需要进行统一处理的方法,是连接点的子集。解决 where的问题,主要通过切点表达式进行 ...
引言
前段时间对我们系统进行了微服务化拆分,最终出现几个单独的纯接口工程(没有web界面);最近又在搞一个基于国际化的纯接口转换工程。这些工程都有一个共同的特点,就是没有web界面,只是单纯的对外提供服务 ...
引言
由于Spring MVC自带的@NumberFormat和@DateTimeFormat格式化不能很好的支持国际化,在《java国际化之---springMVC+Freemaker demo(三)》http://moon-walker.iteye.com/blog/2379940的demo中我们实现了自定的formatter:
概述
上一篇通过Spring MVC+Freemaker整合一个国际化实现demo,同时demo里还整合了Spring MVC自带的bean验证Validator,需要自己去实现验证逻辑。本篇主要内容Spring MVC+hibernate-validator bean实现国际化表单验证,相关代码已上传Githut,地 ...
概述
前面两章收集了一些java 国际化相关api用法,以及spring MVC对国际化的支持。今天打算采用spring MVC搭建一套支持国际化的demo环境(采用的Spring MVC版本为:4.3.1.RELEASE),代码已经放到github,地址请见文章结尾。
主要整合内容包括:
1、view层采用的Freemaker。
2、使用自定义的formatter,对日期、货币等进行转化。
springMVC 相关配置
web.xml
ResourceBundle类
上一章《java国际化之(一)---jdk相关api》,主要对jdk中对国际化支持的API进行了讲解。在jdk国际化api中还有一个重要的类上一章没讲---ResourceBundle类,该类会在spring MVC国际化读取配置的时候用到,所以放到这次讲解。
现在来看下ResourceBundle类,它能轻松的选择和读取特定用户语言区域配置文件,并根据指定key查询对应的属性值。ResourceBundle是个抽象类,要想创建它的实例对象,只能通过调用其静态工厂方法getBundle方法实现。通过阅读该方法的源码可以发现,其最终会创建一个Pr ...