
java
文章平均质量分 71
liuluteng2333
Java软件开发
展开
-
防止数据库误操作被删,恢复方法
1、全量备份+增量备份全量备份:定期(例如一个月)将库文件全量备份增量备份:定期(例如每天)将binlog增量备份数据恢复:(1)将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用(2)将最近一次全量备份后,每一天的增量binlog找到,拷贝回来(文件较多),依次重放(3)将最近一次增量备份后,到执行“删全库”之前的binlog找到,重放2、1小时延时从增加一个从...原创 2020-03-31 17:50:43 · 1312 阅读 · 1 评论 -
开发问题:微信支付金额精度丢失
在做微信支付的时候,微信订单金额需要是以分单位传给微信支付金额的,需要对订单金额*100计算,在这个计算过程中,出现的精度丢失问题,就照成了实际支付的金额比订单金额少一分钱。支付宝是传入实际金额,不需要进行计算,所以没有这个问题。...原创 2020-03-24 17:53:58 · 1493 阅读 · 1 评论 -
支付订单超时处理
业务场景:一般电商下单流程中为了释放库存会针对用户下单做超时订单交易关闭的处理,这里一般都是15分钟,30分钟等。使用队列ActiveMQ处理超时订单在项目过程中遇到用户停留在支付页面15分钟之后再进行支付,就会出现用户付款,后台已经把订单当做超时处理为交易关闭的订单。其实针对这种情景,支付宝和微信已经给出了解决方案:支付宝:官方文档:支付宝设置绝对超时时间,设置一个时间点,如果拉...原创 2020-03-22 16:41:47 · 10421 阅读 · 2 评论 -
分布式事务解决方案(二)
最终一致性方案之ebay模式eBay在2008年公布了一个关于BASE准则提到一个分布式事务解决方案。eBay的方案其实是一个最终一致性方案,它主要采用消息队列来辅助实现事务控制流程,方案的核心是将需要分布式处理的任务通过消息队列的方式来异步执行,如果事务失败,则可以发起人工重试的纠正流程。人工重试被更多的应用于支付场景,通过对账系统对事后问题进行处理。比如一个很常见的场景:某个用户产生了一笔...原创 2019-12-02 20:19:24 · 1618 阅读 · 0 评论 -
使用队列ActiveMQ处理超时订单
背景:在商城项目中,有这样的需求:针对用户已下单但是一直未去付款的订单做超时处理,因为如果一个商品有库存数量的概念,在用户每次下单时做库存减操作,在用户取消订单时做库存返还操作。这时候为了防止恶意刷库存,就需要针对已下单但是长时间未支付的订单做超时处理,返还库存的操作,此时,就要涉及到了订单超时的处理。解决方式:方式一:定时任务思路:使用定时任务每分钟轮询数据库,查询出超时的订单,进行u...原创 2019-11-30 15:16:16 · 3804 阅读 · 1 评论 -
分布式事务解决方案(一)
为什么会出现分布式事务?当我们项目架构逐渐扩展增大,为了对服务器访问压力进行负载均衡,在框架层面开始使用分布式服务,数据库也开始进行分库分表操作,分库分表之后,一方面可以解决同时访问单库带来的性能压力,另一方面,又可以减少单库单表的数据量,解决了代码中SQL查询数据量比较大的表效率慢的问题。在此之前,数据库中的增改都是对单个数据库做的操作,在这种情况下,通过框架本身自带的事务@Transac...原创 2019-11-29 20:31:04 · 1060 阅读 · 0 评论 -
使用IDEA创建springboot项目
1.idea –> New Project2.在这里填写你的包名和项目名3.创建项目时,选择依赖可以选择web mysql myBtais(看个人需要,后续也可以在pom.xml中自己添加)创建好之后的项目目录结构,在这里配置文件的后缀是.properties,这里可以自行改成自己习惯的后缀这是idea自动生成的pom.xml<?xml version="1.0" e...原创 2019-01-17 17:50:47 · 211 阅读 · 0 评论 -
极光推送短信-工具类
极光短信通知工具类需要你注册极光账号的MASTER_SECRET 和 APP_KEY 两个参数(必须)。进入极光开发者平台,即可查看:/** * 极光推送 */@SuppressWarnings({"deprecation", "restriction"})public class JiguangPushUtil { protected static final Lo...原创 2019-04-24 14:39:26 · 634 阅读 · 0 评论 -
如何控制多线程执行顺序
static Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("线程1"); } }); static Thread thread2 = new Thread(n...原创 2019-06-19 18:18:22 · 3181 阅读 · 0 评论 -
java中的Volatile和synchronized的区别
1、JMM Java Memory Model (java内存模型)并发过程中如何处理可见性、原子性、有序性的问题使用多线程Runnable/ Thread并发编程中的两个关键问题线程之间如何通信 wait() notify() notifyall()a) 共享内存 – 隐式通信b) 消息传递 – 显式通信b. 线程之间如何同步在共享内存的并发模型中,同步是显式做的;s...原创 2019-06-25 14:21:08 · 797 阅读 · 0 评论 -
多线程并发编程问题梳理
线程和进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变...原创 2019-06-26 17:19:59 · 881 阅读 · 0 评论 -
MyBatis:自定义TypeHandler
a原创 2018-12-10 17:17:23 · 313 阅读 · 0 评论 -
spring事务管理笔记
spring事务事务:事务是访问并可能更新数据库中各中数据项的一个程序执行单元(unit)。主要是用来保证数据操作的一致性(执行单元),要么全成功,要么全失败。事务的4个特性:原子性、一致性、隔离性、持久性。特性描述原子性(Atomicity)事务最基本的操作单元,要么全部成功,要么全部失败,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状...原创 2018-11-30 22:40:43 · 139 阅读 · 0 评论 -
阿里云短信平台发送验证码
第一次做发送短信验证码的功能,以前没做的时候一直觉得很神秘,现在把功能开发完成,把代码记录一下,等下次再做的时候方便查阅。首先是引入maven坐标然后创建阿里云短信工具类再写自己具体的发送短信的业务代码。Maven坐标: <!-- 阿里云 短信 注:如提示报错,先升级基础包版,无法解决可联系技术支持--><dependency> <group...原创 2018-11-08 17:32:30 · 2110 阅读 · 0 评论 -
项目开发-Mapper错误问题
在使用SSM框架的时候,需要把sql写在单独的xml文件中,定义名为xxxMapper.xml 在Mapper中定义SQL查询,SQL语句:<select id="findPageBySite" resultType="" parameterType=""> select * from e_base_user where id = #{id}</select> 在这条语句中,SQL原创 2017-11-21 15:46:13 · 433 阅读 · 0 评论 -
日期选择器 当前日期之前不允许选择
日期选择器 当前日期之前不允许选择javaDate date= new Date();model.addAttribute("startTime", date);freemarker<@form.datetime id="time" name="time" nullmsg="请输入截止日期" startDate="${startTime?datetime}" placeholder="请输入截原创 2017-12-20 16:55:26 · 5674 阅读 · 0 评论 -
IDEA实用快捷键
记录一些开发中有用但之前不知道的快捷键:获取一个方法的返回值以及自动生成名称:ctrl + v (在当前行后使用) 获取main函数: psvm for循环:fori增强for循环:iter (在方法体内使用)复制多个内容到粘贴板:ctrl + shift + c在粘贴板选择复制的内容进行粘贴:ctrl + shift + vSystem.out.println: sout原创 2018-01-17 10:52:44 · 166 阅读 · 0 评论 -
Java 基础的东西
map.keySet() 获取map中所有key的值java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.Map:HashMapLinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时原创 2017-07-20 23:00:33 · 210 阅读 · 0 评论 -
freemarker相关
freemarker预编译 <@from.input> 宏 在页面上获取值:在controller中可以将查出的对象数据或页面上要使用到的数据put到model中public String form(Model model) { User user = new User(); model.addAttribute("id", id); model.addAttribute原创 2017-09-07 18:13:51 · 242 阅读 · 0 评论 -
点击确认弹出输入框js代码
使用场景:在审核一项申请时用于审核通过或驳回需要填写原因,点击确认弹出输入框,输入备注完成审核。1,使用自带的弹出框,只能定义弹出框的大小,不能定义输入框的大小,而且是必须输入。// layer.prompt({title: title, maxlength: 100, value:'', formType: 2}, function (remark, i) { $.ajax({ ...原创 2018-03-14 17:44:39 · 7253 阅读 · 0 评论 -
jsp相关:不能直接访问web-inf文件下下jsp文件
web-inf文件夹在正常情况下系统是不允许外界直接访问的,访问里面的文件就会出现404错误,但是系统可以自身进行访问,所有要使系统去访问的话就需要使用拦截控制器去接受外界命令,由控制器来转发访问请求,这样将网页放到web-inf下能降低网页的注入漏洞和BUG的出现概率,能很好的维护系统稳定!原创 2018-04-16 18:11:30 · 314 阅读 · 0 评论 -
shiro权限框架-(一)数据库表设计
使用shiro作为权限安全框架,主要用到的表就5个: 实体表: 用户表 角色表 权限表(菜单和按钮) 关系表: 用户角色关系表 角色权限关系表...原创 2018-09-05 11:55:01 · 16777 阅读 · 7 评论 -
java二十三种设计模式
首先引入shiro与Spring的依赖。Shiro和Spring整合的依赖&lt;dependency&gt; &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt; &lt;artifactId&gt;shiro-spring&lt;/artifactId&gt;原创 2018-09-14 11:02:39 · 200 阅读 · 0 评论 -
springMVC和三层架构
springMVCM:modelV:viewC:controller三层架构:Dao:数据访问层Service:业务处理层Web层(J2ee的内容)Request和response原创 2018-10-26 14:24:00 · 9462 阅读 · 0 评论 -
用select2做级联下拉选择
两个下拉框,通过选择年级下拉框进行查询该年级下的所有班级。 可以对select添加onchage事件,监控下拉事件,下拉选择年级,把年级id传入后台查询出该年级下属班级,把班级列表展示到下拉框。 js:$("#grade").change(function () { var grade= $("#grade").val(); $.ajax({ url:base +原创 2017-12-08 17:18:19 · 12802 阅读 · 0 评论