Backend
文章平均质量分 71
赖小明
就算红尘劫数都是空幻, 也必须经历一遍才能领悟
展开
-
分布式事务-基于可靠消息的最终一致性实现
CAP与BASE我们都知道,传统数据库事务具有ACID的特性,但在分布式环境下,追求强一致性在大多数情况下无法满足高性能需求。分布式系统的CAP理论告诉我们,一致性、可用性、分区容忍性无法同时满足,最多只能满足其他两项。CAP理论描述如下:一致性(Consistency):所有节点在同一时间读到同样的数据;可用性(Availability):无论是成功还是失败,每个请求都能收到一个反馈。可用性强调的是服务可用,不保证数据的正确性;分区容忍性(Partition-Tolerance):即使系统中有原创 2020-06-06 20:32:04 · 925 阅读 · 0 评论 -
分布式事务 -两阶段提交及Atomikos在Spring Boot的使用
基于XA规范的两阶段提交方式事务在业务的开发中有着至关重要的作用,事务具有的ACID的特性能保证业务处理前后数据的一致性:原子性(Atomicity): 事务执行的所有操作,要么全部执行,要么全部不执行;一致性(Consistency): 事务的执行前后,数据的完整性保持一致;隔离性(Isolation): 两个或多个事务并行执行时是互不干扰的;持久性(Durability): 事务执行完成后,其对数据库数据的更改会被永久保存下来;在单机环境下,数据库系统对事务的支持是比较完善的;但当对数据进行原创 2020-05-24 01:29:35 · 1306 阅读 · 0 评论 -
JavaWeb项目:Shiro实现简单的权限控制(整合SSM)
该demo整合Shiro的相关配置参考开涛的博客数据库表格相关设计 表格设计得比较简单,导航栏直接由角色表auth_role的角色描述vRoleDesc(父结点)和角色相关权限中的权限描述(标记为导航结点)vPermissionDesc(展开子项)组成。 Shiro相关设置密码输入错误次数限制//密码重试5次次数限制 public class RetryL...原创 2017-07-27 22:06:40 · 29320 阅读 · 37 评论 -
IDEA下,Spring Boot项目启用热部署功能
热部署的功能可以使我们在修改了源代码之后,在不重启服务器的情况下就可以实现项目的重新编译/部署,让修改生效。 下面是IDEA下,Spring Boot项目启用热部署的设置 1、File-Settings-Compiler,勾选Build project automatically: 2、Ctrl+Shift+Alt+”/”,选择Registry,勾选compiler.automake.a...原创 2018-07-29 11:39:53 · 234 阅读 · 0 评论 -
IDEA下,打包Spring Boot项目
一、以jar包形式发布 pom.xml配置<!-- ... --><packaging>jar</packaging><!-- 以jar包形式打包 --><build> &原创 2018-07-29 17:30:52 · 890 阅读 · 0 评论 -
Spring Boot统一异常处理
Java异常分为非检查异常(Error和RuntimeException以及它们的子类)以及检查异常(除Error 和 RuntimeException的其它异常),检查异常需要我们显式地进行try,catch处理或者throws,而非检查异常则不需要。 程序中出现异常通常是我们不希望看到的,但合理地定义和处理Java异常,却可以给编程带来很大的便利。比如,合理地定义业务异常,结合Spring提...原创 2018-08-27 23:00:39 · 536 阅读 · 0 评论 -
实现延时任务可以有几种方式
在开发中,延时任务属于比较常见的需求,比如,订单在限定时间内未支付则自动取消并释放库存;外卖的商家端在设置特定时间后仍未接单时则自动接单等这都需要延时任务来完成。实现延时任务的方式可以有许多种:1 DelayQueue(JDK提供实现)2 ScheduledExecutorService(JDK提供实现)3 Redis(使用ZSET数据结构实现)4 RabbitMQ实现下面我们来简单看...原创 2019-01-18 00:05:30 · 1078 阅读 · 0 评论 -
JWT的使用:Spring Cloud微服务接口鉴权
0 JWT是什么JWT(JSON Web Token)是一种开放标准,它以一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息。其认证原理是,客户端向服务器申请授权,服务器认证以后,生成一个token字符串并返回给客户端,此后客户端在请求受保护的资源时携带这个token,服务端进行验证再从这个token中解析出用户的身份信息。0.1 JWT的结构一个JWT是一个字符串,其由H...原创 2019-01-13 18:46:07 · 11247 阅读 · 8 评论 -
Shiro扩展:添加验证码支持(整合Spring Boot)
1 新建Spring Boot项目,添加Shiro依赖 <!-- shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifac转载 2019-02-26 10:38:36 · 518 阅读 · 0 评论 -
Hiberante3.6的使用入门
1、Hibernate3.6的主要AIP组件1.1 Configuration:用于配置并且启动Hibernate框架每个Hibernate配置文件对应一个Configuration对象。Hibernate通过Configuration实例的configure()方法读取配置文件Hibernate.cfg.xml,在通过Configuration实例的buildSessionFactory()方法创转载 2016-12-19 18:01:57 · 449 阅读 · 0 评论 -
Struts2的使用入门
本示例使用的是struts-2.3.24.1 1、导入基本jar包将Struts 2的lib的文件夹下的commons-fileupload-1.3.1.jar、commons-io-2.2.jar、 Freemarker-2.3.22.jar、javassist-3.11.0.ga.jar、ognl-3.0.6.jar、struts2-core-2.3.24.1.jar和xwork-原创 2016-12-13 09:49:40 · 349 阅读 · 0 评论 -
Struts2:stream和json类型的返回
Action代码片段public class AjaxAction extends ActionSupport{ private User user; private InputStream result; public User getUser() { return user; } public void setUser(User user)原创 2017-06-21 16:36:58 · 1177 阅读 · 0 评论 -
Struts2拦截器的应用:文件上传
1、单文件上传1.1 处理文件上传的Action类public class UpLoadAction extends ActionSupport{ private File upload; //封装上传文件 private String uploadContentType; //封装上传文件类型 private String up转载 2016-12-18 21:33:32 · 513 阅读 · 0 评论 -
Struts2:表单输入校验
1、普通属性的校验1.1 使用的表单<s:form action="login"> <s:textfield name="name" label="用户名:"></s:textfield> <s:password name="pass" label="密 码:"></s:password> <s:submit value="登录"></s:submit></s:fo原创 2016-12-18 20:42:09 · 343 阅读 · 0 评论 -
Struts2拦截器的应用:未登录用户拦截(同时拦截ajax请求)
1、添加留言Action,继承自ActionSupport//对留言进行登录拦截public class MessageAction extends ActionSupport{ private String msg; public String getMsg() { return msg; } public void setMsg(String msg原创 2016-12-18 21:06:44 · 707 阅读 · 0 评论 -
过滤器Filter的应用:登录验证
《Java Web 开发实战经典》 java源码import java.io.* ;import javax.servlet.* ;import javax.servlet.http.* ;public class LoginFilter implements Filter {public void init(FilterConfig config) throws Servl转载 2016-12-12 10:53:24 · 339 阅读 · 0 评论 -
过滤器Filter的应用:编码过滤
《Java Web开发实战经典》 java源码import java.io.* ;import javax.servlet.* ;public class EncodingFilter implements Filter {private String charSet ;public void init(FilterConfig config) throws ServletExc转载 2016-12-12 10:47:22 · 442 阅读 · 0 评论 -
jsp中几种包含页面的方式区别
<%@ include file="文件路径"%>file属性值不支持jsp表达式,包含的文件统一编译,为静态包含。<jsp:include>不传递参数:<jsp:include page="文件路径" flush="true|false"/>传递参数:<jsp:include page="文件路径" flush="true|false"> <jsp:param name="参数名称" v原创 2016-12-12 00:57:29 · 765 阅读 · 0 评论 -
jsp中几种实现跳转的方式的区别
服务端跳转通过标签跳转<jsp:forward page="文件路径"> <jsp:param name="参数名" value="值"/> ....</jsp:forward>该跳转属于服务器跳转,地址栏不变化,用于将请求转发到另一个目标页面。当该标识被执行后,当前的页面不在被执行,而是去执行目标页面。page属性指定了目标文件的路径。如果该值是以“/”开头,表示在当前应用的根原创 2016-12-12 09:06:01 · 490 阅读 · 0 评论 -
jsp中路径获取的几个方法的使用区别
测试的页面:http://localhost:8080/XiangYingCinema/index.jsprequest.getRealPath(String path);//获取path在服务器上的绝对路径,方法已被弃用request.getRealPath("/");//获取应用根目录的绝对路径 输出: D:\Workspaces\Eclipse\Webs.metadata.plugi原创 2016-12-12 10:08:02 · 395 阅读 · 0 评论 -
jsp页面中几种注释的区别
HTML中的注释<!--HTML中的注释,客户端浏览器查看源码时可见-->带有JSP表达式的注释<!--<%=expression%>支持JSP表达式-->隐藏注释<%--客户端浏览器查看源码时不可见--%>脚本程序中的注释单行注释 //注释内容,客户端查看源码不可见多行注释 /* 注释内容,客户端查看源码不可见*/提示文档注释 /**该种注释会被Javadoc文档工具生成文档时所读取,原创 2016-12-11 23:54:54 · 1515 阅读 · 0 评论 -
jsp页面中用于传值输出的一些方式
1、登录页面 //login.jsp <h2>用户登录</h2> <s:form action="login"> <s:textfield name="user.name" label="登录名"></s:textfield> <s:password name="user.password" label="密码"></s:pa转载 2016-12-15 10:44:10 · 981 阅读 · 0 评论