自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 mybatis批量插入oracle并返回主建ID

前言很多时候我们都需要对数据进行批量插入,然后希望返回对应的主建ID,以便执行后续逻辑。如果是mysql数据库,mybatis有很好的支持,这种例子网上很多,此处不再赘述。今天我们主要探讨的是关于mybatis操作oracle数据库时,如何实现批量插入并返回主建ID,当然,此处的主建ID一般使用的是oracle的序列生成的。灵感来源之前晚上搜索了很多oracle批量插入的例子,但是都无法将主建ID返回,多次尝试后发现oracle批量插入有一个特性:可以将查询到的集合插入至表中,也就是使用inse

2021-03-01 17:38:41 1684 2

原创 连续记录统计查询

最近在做一些运营活动时,发现经常希望查询连续操作行为,例如对于下单业务,希望查询近一周连续下单的用户ID,用户下单天数,共下单数,最大连续下单天数,当前已连续下单天数。针对这样的需求,之前一值很头疼,根本不知道如何捕捉连续性,为了满足这样的需求,有时甚至引入缓存来去重记录每个用户每日的下单,然后根据缓存值判断连续,但这种做法相当消耗成本,很多时候运营在策划时看到需要的成本如此之大,往往便舍去了这个活动方案。后来在一些大神的指引下,对于连续性了解到一种比较巧妙的SQL查询方式,以oracle查询举例

2021-02-07 10:36:33 609

原创 软件设计原则

目录前序具体原则一、开闭原则描述:作用:实施:二、里氏替换原则描述:作用:实施:三、依赖倒置原则描述:作用:实施:四、单一职责原则描述:作用:实施:五、接口隔离原则描述:作用:实施:六、迪米特法则描述:作用:实施:七、合成复用原则描述:作用:实施:前序本文完全是为了自己方便后续查看学习使用,对于一些设计模式学习之后的整理。学习原文:http://c.biancheng.net.

2021-02-05 14:23:36 202

原创 synchronized使用

最近在查阅一些源码时,看到里边频繁用到了synchronized这个锁,从而在此重新理解并分析下这个锁的用法首先先明确一个点:锁的出现一定是为了解决共享资源的获取问题,若不存在共享资源,则没有锁的必要。在下文中,我们将RESOURCES假定为一个共享资源,我们以下所有的用法都来解决RESOURCES中某个元素的获取,若不存在,则创建该元素并放入共享资源RESOURCES。我们看具体用法1、 public synchronized Resource getResource(Stri

2021-02-01 16:37:30 103

原创 分布式事务方案初涉

背景网上查看了很多关于分布式事务的文章,比如TCC事务补偿方案,MQ的一致性解决方案等等,也有一些自己提出的设想,在看了之后,自己思考并尝试设计了一套分布式事务处理方案。大致思想对事物提交进行暂停(类似于二段提交),即在一次操作中出现的多个事务,各自完成自有逻辑后不直接提交事务,此时去等待并轮询其他事务的结果,若成功则提交,失败或超过一定时长则进行回滚。具体实现逻辑如上图:1、在业务处理层生成tranId,作为此次处理的唯一标识,并根据次标识生成多个事务key存入redis,每个

2020-08-10 19:48:52 106

原创 分布式锁的分析及java实现

背景由于公司业务体量提升,用户体量同样暴增,之前的老项目暴露了很多性能问题,因而决定开始进行整体重构。重构方向即微服务架构方向,将原来的冗杂,庞大单项目进行N块拆分,具体架构这里不做赘述。此处要介绍的是拆分过程使用的一个技术点:分布式锁。分布锁使用场景分析场景一第一个给大家介绍的场景是我们在服务拆分过程中实际遇到的问题。先看下我们在拆分前的一个业务处理,如下图:老代码在一个事务方法里先后对A,B两个不同的账户进行了操作,在操作B账户时会从A账户读取相关信息,此处理并没有问题。但是拆分

2020-08-03 18:40:15 177

原创 oauth授权登陆

背景公司做平台产品,很早之前就想着要做类似于微信,QQ那种的授权登陆系统,用来统一授权子系统。于是在网上搜罗很多大神的讲解后,根据自己想法写出一套完整的oauth授权登陆系统Oauth2.0简介oauth2.0是OAuth协议的延续版本,是一个互联网标准的用户验证和授权协议,通俗讲就是前人想出的一套用于用户验证和授权的方案,其大致流程如下: (A)用户打开客户端以后,客户端要求用户给予授权。  (B)用户同意给予客户端授权。  (C)客户端使用上一步获得的授权,向认证服务...

2020-07-30 20:37:58 2973 1

原创 java金额计算归整

背景在项目开发中,经常遇到关于金额的计算,下单逻辑中,账务报表中等等一系列和金额相关的业务都会存在。当前的经济社会,最让人敏感的也莫过于这些金额数字,如果这些地方出问题,带来的后果可想而知。君欲善其事必先利其器,作为一个开发人员,一定要经常性的创建与收集一些可靠的工具来帮助我们~目的分享与整理,望曾经在此处跌倒过的人共勉方式千里之堤溃于蚁泬,一个工具类的整理,虽然简单,确能保证系统中关于金额的准确性与有效性直接上代码 /** * 两个double类型的数值相

2020-07-24 15:44:34 342

原创 Linux防止SSH爆破

技术背景由于Linux系统的天然优势,我们很多项目的服务都使用了Linux,但同时也会经常遇到一些安全隐患。比如SSH爆破行为,即被人利用SSH远程链接,恶意尝试我们系统的账号密码,进而进行服务入侵行为。为此本文提供一种防止SSH爆破行为的方案及技术- fail2banfail2ban是一款实用软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作。网上大部分教...

2019-05-19 09:57:24 2667 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除