Welcome 微信登录

首页 / 操作系统 / Linux

Spring事务与消息队列

Spring事务与消息队列

在开发过程中,遇到一个bug,产生bug的原因是spring事务提交晚于消息队列的生产消息,导致消息队列消费消息时获取到的数据不正确。这篇文章介绍问题的产生和一步步的解决过程。一.问题的产生:场景还原:接口中的一个方法,首先修改订单状态,然后向消息队列中生产消息,消息队列的消费者获取到消息检测订单状态,发现订单状态未更改。代码:@Service(orderApi)public class OrderApiImpl implements OrderApi {...
Struts2数据校验

Struts2数据校验

一.为什么要进行数据校验 对于一个web应用而言,所有的应用数据都是通过浏览器收集的,用户的输入信息是非常复杂的,对于一些用户操作不熟练,输入出错,等网络传输不稳定,这些都有可能导致异常输入。 异常的输入,轻则导致系统非正常中断,重则导致系统崩溃,应用程序必须能正常处理表现层接收的异常数据,通常的做法是遇到非法数据,应用程序将相应的给出用户提示,提示用户必须输入要求的数据,也就是将那些异常输入过滤掉,我们说对异常数据的过滤就是数据校验。二.如何实现数据校...
Struts2数据验证机制

Struts2数据验证机制

1. 手动验证的实现只需要在继承ActionSupport类的情况下,直接重写validate()方法即可。使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是相同的。如果在一个Action类中编写了多个请求处理方法,而此Action重写了validate()方法,那么,默认情况下,在执行每个请求方法的过程中,都会经过validate()方法的验证处理。2. 验证文件的命名规则使用Struts2验证框架,验证文件的名称...
Spring的IOC和AOP之深剖

Spring的IOC和AOP之深剖

我们首先要知道,用Spring主要是两件事:1、开发Bean;2、配置Bean。对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例,并调用bean实例的方法完成“依赖注入”。Spring框架的作用是什么?有什么优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监...
Java Swing 去掉按钮文字周围的焦点框

Java Swing 去掉按钮文字周围的焦点框

闲来无事,写了个swing界面,运行后看到当点击按钮时,中间文字会出现一个刚好把文字围住的小方框,这是按钮获得焦点的标志,我是觉得一个字:丑!怎么去掉呢?万能的度娘告诉我,设置下button的setFocusPainted为false,我试了一下,果然ok。下面将代码分享给大家,可以将设置属性的那句话注掉,看看前后效果。import java.awt.event.ActionEvent;import java.awt.event.ActionListene...
Python使用Fabric模块实现自动化运维

Python使用Fabric模块实现自动化运维

简介:Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行、文件上传、下载及完整执行日志输出等功能。Fabric在Paramiko的基础上做了更高一层的封装,操作起来会更加简单。参考资料:刘天斯《Python自动化运维技术与最佳实践》 PDF下载见 http://www.linuxidc.com/Linux/2016-10/136025....
一段Golang代码引发的思考

一段Golang代码引发的思考

1.前言Golang有一些异于其他语言的特性,如果对这些特性不了解,看一些代码的时候经常就会感到莫名其妙。最近在看Kubernetes的一段代码时,由于没有深刻领会Golang的接口机制导致一脑袋雾水,当真正理解了之后,不得不佩服Golang的灵活性,堪称神一般的存在。2.分析这段代码的部分片段如下,详细内容在Kubernets github:https://github.com/kubernetes/kubernetes/blob/master/pkg/...
Golang 小技巧分享

Golang 小技巧分享

1.前言Golang 开发过程中的一些小技巧在这里记录下。2.内容1)包的引用经常看到Golang代码中出现 _ "controller/home" 类似这种的引用,这里的下划线有什么作用呢? 其实默认每个文件都有一个init函数,加下划线表示引入这个包,仅执行init函数,别的函数在外边是不能调用的。注意这里的几个说法:仅仅执行init函数,也就是说我们可以再init函数里面做一些操作,比如初始化一些东西。别的函数在外部是不能被调用的,强行调用会报错。这...
Java接口以及打包

Java接口以及打包

接口:现实世界中不同事物的共同行为(方法)的特征是一个特殊的类,interface修饰符 interface 接口名{//属性--常量//方法--抽象方法}接口中所有的方法为抽象方法。属性:public static final方法:public abstract1.不能被实例化;2.子类实现(implement)接口,子类需将接口中的方法全部实现 ,才能建立对象3.子类可以实现多个接口,子类需要接口的方法实现才能创建对象应用方式:1.抽象类--imple...
Java静态访问和抽象类

Java静态访问和抽象类

static: 成员修饰符 静态的意思 修饰属性和方法修饰的属性:静态变量或者类变量 因为类变量是随着类的加载而加载。类加载优先于对象 类变量相对于实例变量特点:1.类变量被所有实例对象共享2.访问方式 类名.类变量 直接访问。修饰方法:静态方法/类方法(实例方法)访问方式:类名.静态方法通过类.方法名调用能够简单 static修饰属性或者方法 会一直无法释放类变量 导致内存空间 被占用。实例成员与静态成员互访:静态成员可以访问静态 不能访问非静态非静态可...
Spring 事务回滚

Spring 事务回滚

1、遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误。伪代码如下:public method() {Dao1.save(Person1);Dao1.save(Person2);Dao1.save(Person2);//假如这句发生了错误,前面的两个对象会被保存到数据库中Dao1.save(Person2);} 期待的情况:发生错误之前的所有数据库保存操作都回滚,即不保存 正常情况:前面的数据库操作会被执行,而发生数...
Log4j1.x初步认识

Log4j1.x初步认识

初识log4j1.x研究源码首先要对项目要有整体的认识,这一章节主要让大家对log4j1.x有一个整体的认识,并以此为切入点,认识log4j1.x的真个框架1 整体认识先整体上对log4j1有一个整体的认识,然后再在后面对log4j的研究中逐渐加深对其的理解。先不必纠结在整体的类图和流程图中。(这里类图和流程从简,能够表达内容即可)1.1 打印日志流程图流程说明:-第一步: 初始化Logger容器LoggerRepository,默认为Hierachy,...
经典排序——快速排序

经典排序——快速排序

快速排序:快速排序是经典的排序算法之一,它是冒泡排序的升级版。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。首先观察每一趟排序的效果:原始序列:[84, 17, 26, 30, 62, 83, 5, 79, 45, 85][45, 1...
图解直方图均衡化及其Python实现

图解直方图均衡化及其Python实现

在理解直方图均衡化的过程中,参考了一些书籍和博客,让人困惑的是,笔者对于直方图的理解还是停留在表面,并没有深入理解其内涵。因此,本文拟结合图片对直方图的概念进行阐述,并给出其Python实现,最后对她背后所蕴含的一些科学思维,谈谈自己的一些看法。什么是直方图?对于一副灰度图像I,她的每一个像素点I(x,y)都有一个灰度值,一般情况下可能的灰度取值有2^8=256个(0,1,...,255)。如果我们统计出灰度值r在I中出现的次数n,并对其进行归一化(n/N...
用Python的turtle模块画国旗

用Python的turtle模块画国旗

最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle。这里面有turtle的各类指令。turtle画国旗主要用到两个函数:draw_rentangle和draw_star。至于函数的调用就和我们学的C,C++是一样的。对于turtle画国旗的程序中,首先是查找国旗的画法,才能用程序实现。自己在实现的过程中主要是对turtle.circle()没有准确掌握,...
快速平方根算法

快速平方根算法

在3D图形编程中,经常要求平方根或平方根的倒数,例如:求向量的长度或将向量归一化。C数学函数库中的sqrt具有理想的精度,但对于3D游戏程式来说速度太慢。我们希望能够在保证足够的精度的同时,进一步提高速度。Carmack在QUAKE3中使用了下面的算法,它第一次在公众场合出现的时候,几乎震住了所有的人。据说该算法其实并不是Carmack发明的,它真正的作者是Nvidia的Gary Tarolli(未经证实)。//// 计算参数x的平方根的倒数//float...
<< 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 >>