自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (4)
  • 收藏
  • 关注

原创 实时触达体系建设

实时触达中台是一个能对潜在高价值用户进行实时运营的工具,通过用户行为采集中心、规则计算中心、用户触达中心构建实时触达体系,有效提升运营时效性,提高客户留存及下单转换率。

2024-03-12 17:13:39 443

原创 Redis内存空间节省小技巧

背景:为提升会员对当前等级的权益感知,需对用户仍未领取的权益进行弹框或消息位置推荐,会员需推荐权益有10+项,且项权益均需需校验当日推荐次数并做推送限制,推荐次数记入Redis缓存,会员数据庞大,将占用大量内存空间。压缩设计:key键 = 前缀(RECOMMONE) + 会员号(USERID) ,采用同一用户只记录一条权益推荐记录,提前确认权益推荐次数的最大值并分配占位位数,每项权益通过占位标识来获取。,前两位01标识生活权益,后两个01标识注册有礼。* @param key redis的key。

2024-01-25 15:02:56 794

原创 mybatisplus saveBatch版本问题导致CPU打满生产问题定位

如果用使用MybatisPlus的saveBatch时,如果插入的集合存在多线程共享,同时对象中存在null的属性,最好不要用saveBatch方法,自己手写xml操作批量插入,官方建议一个批次 50~100时插入效率最高。

2023-12-13 10:36:33 1114

原创 Redis实现排行榜

写入分数汇总表使用了INSERT ON DUPLICATE KEY UPDATE的操作,第一次写入是插入操作,后续同一个用户在同一个榜单内的数据都是update sum_score字段的操作,并判断是否更新last_incom_time字段。子榜单也视为一个独立的榜单,相较于总榜单,使用的用户分数明细数据是相同的一份数据,只不过是统计的时间维度不同,所以根据分数的类型去找关联的榜单列表时,需要将时间因素加进去,对找出来的所有榜单同时去写排名相关的数据,就可以实现子榜单的玩法。

2023-12-06 11:36:00 2006

原创 基于LiteFlow构建实时会员权益体系

通过LiteFlow规则引擎构建会员权益体系,实现权益节点可插拔,可编排,可复用的特性。完成会员权益数据底盘建设,将分散的权益数据集中,提升权益查询及管理水平。

2023-11-24 17:06:44 861

原创 代码重构 复用+扩展

提升代码复用性

2023-04-16 09:59:39 286

原创 亿级数据迁移 从Oracle到Mysql

目的:此处通过给scsActivityEventMapper和scsBaseActivityEventMapper标注不同的数据源,通过DynamicDataSrouce切换数据源双写Oracle和MySQL。执行带事务注解saveActivityEventOut方法时会被TransactionInterceptor拦截,此时未调用mapper接口,则获取默认oracle数据源并绑定在当前线程的resources线程变量上并激活当前事务(actualTransactionActive设置true)。

2023-04-07 09:47:06 1168

原创 【JAVA】VO、DTO的12种转换哪种效率最高?

VO、DTO的12种转换哪种效率最高1. get\set@ComponentpublicclassGetSetAssemblerimplementsIAssembler<UserVO,UserDTO>{@OverridepublicUserDTOsourceToTarget(UserVOvar){UserDTOuserDTO=newUserDTO();userDTO.setUserId(var.ge...

2021-11-03 11:15:55 3962

原创 Maven项目脚手架

使用Maven Archetype Catalogs插件,根据已有项目,创建Maven项目脚手架,步骤如下:1、idea中安装插件Maven Archetype Catalogs2、在一个已有的项目(作为模板的项目)中运行 mvn archetype:create-from-project,会在target目录下生成一个archetype目录,这其实是一个脚手架的maven项目3、提取该文件,用idea打开。app文件下即为脚手架文件结构,archetype-metadata.xml文件

2021-06-08 15:08:50 635 1

原创 亿级任务中台设计实战 【策略模型+Saturn+Mycat】

背景:用户群体不断增加,部门不断扩展,产品经理提出越来越多的活动运营需求,程序员不堪重负。但是这些活动做多做久了,很容易发现这些活动往往都有相同的触达体系、任务体系及奖励体系。 为加快产品迭代,减轻技术人员负担,提示系统安全稳定性。独立活动中台、任务中台、营销触达中心迫在眉睫。本文主要阐述任务中台搭建流程。解决问题: 1 构建更易扩展的任务场景数据库设计及代码设计; 2 庞大会员体系(4亿+)快速支撑任务开启、任务校验所涉及的并发及压力问题;...

2021-02-04 20:21:05 1279

原创 Fork/Join WORK 实操 切分百万数据分片执行积分赠送

Forkjoin 将一个任务拆分成小任务时才有用处。fork-join池是是一个work-stealing工作窃取线程池。每个工作线程维护本地任务dequeue。当执行新的任务时它可以将其拆分分成更小的任务执行,如果它是足够小,但是dequeue没有本地线程了,它的会“偷”,从一个随机线程的队列中偷窃一个并把它放在自己的队列中。但是如果任务还没有拆,他还是得完成手上一些工作。public void execJob() { // 数据库控制并发 long start = System

2020-11-18 15:07:32 284

原创 生产环境亿级用户并发发券记录

背景:产品需要,需消耗原有卡积分,转移到新卡。进行积分抽奖活动,其中用户可使用批量抽奖功能(10次)【单次请求第三方接口发送积分】。分析:1 方法需进行防并发校验。【已有自定义注解,采用userId为key,redis进行防并发处理 ttl 获取-1 key没有设置失效时间; -2 key不存在; 正数 key的失效时间 】 2 采用单线程循环及多线程两种方法进行积分发放,redis中做开关切换 3 用户当日抽奖次数记redis,incry关键代码实...

2020-09-15 20:02:22 219

转载 线程池子 冲冲凉

为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销 线程并发数量过多,抢占系统资源从而导致阻塞 我们知道线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统资源不足而产

2020-08-17 16:38:13 94

原创 Zookeeper 作用及原理

Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单的说,zookeeper=文件系统+通知机制。一、作用命名服务 在zookeeper的文件系统里创建一个目录,即有唯一的path。在我们使用tborg无法确定上游程...

2020-04-01 19:10:34 11110 1

转载 BIO NIO AIO

BIO是一个连接一个线程。同步阻塞的BIONIO是一个请求一个线程。同步非阻塞AIO是一个有效请求一个线程。异步非阻塞BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。Java对BIO、NIO、AIO的支持:Java BIO : 同步并阻塞,服务器实现模式为一个...

2018-08-06 11:30:33 988

原创 java Timetask 访问service 抛空指针异常解决方案

java Timetask 访问service 抛空指针异常解决方案           错误原因: 创建自己的timetask 定时器继承了TimerTask之后,当执行run时还未进行service的注入。此时抛出空指针异常;以下为最终解决方案        // 自定义的TimerTask         public class WXFocusTask extends Ti

2017-11-09 17:33:55 2060 1

原创 Nosql 理解篇+实战篇 五 NoSQL一致性解决方案

五 NoSQL一致性解决方案                   更新一致性,读取一致性,放宽一致性约束,放宽持久性约束,CAP定理,仲裁    先来一个案例Tom和jarry在同一家公司上班,有一天,他们发现公司网页显示的电话有误,于是进入后台系统同时修改电话。我们假定他们输入的电话号码格式稍有差别,那么,他们提交的新号码就会略有不同,此时将产生“写冲突”问题:两人在同一时刻更新同一

2017-04-01 12:40:39 1578

原创 Nosql 理解篇+实战篇 四 分布式模型

四 分布式模型                  为什么要引入分布式?分布式的优缺点?分布式的方法?常用分布式技术详解         1 分布式要解决的问题。随着数据量指数级的爆发式增长。用来购买更大服务器来运行数据库的纵向扩展(scale up)方式会变得越发困难和昂贵。与之相比,将数据库运行在服务器集群上的横向扩展(scale out)方式,由于技术的愈发成熟,逐渐成为了众多

2017-03-03 12:32:29 894

原创 Nosql 理解篇+实战篇 三 数据模型Ⅱ 聚合数据库关系处理及图数据库

三 数据模型Ⅱ 聚合数据库关系处理及图数据库                            聚合数据库中的关系?为什么引入图数据库? 1)  关系        目前为止,我们知道大多数的NoSQL数据库的关键特征在于它们都使用了聚合,而各种面向聚合的数据库对聚合的建模方式不同。聚合是NoSQL的核心内容。        前面我们知道,聚合的方便之处在于能把经常

2017-02-22 09:41:51 1636

原创 初探angularJS 二

初探angularJS 二1 禁用 disabled指令         点我!2 显示和隐藏指令 ng-show=""   ng-hide=" "                  隐藏/显示                  名:          姓:          姓名:{{person.firstName + " " +

2017-02-13 11:55:34 298

原创 初探angularJS 一

初探angularjs 一 1  指令      ng-app  指令告诉AngularJS,div 元素是 AngularJS 应用程序的"所有者"。     ng-init       指令初始化应用程序数据。     ng-model  指令用于绑定应用程序数据到 HTML 控制器(input,select, textarea)的值。        在输入框中

2017-02-10 12:28:49 291

原创 令人头疼的java Tree整合bootstrap ace tree

Java  递归菜单Tree并整合bootstrap ace tree  1 bootstrap ace tree Demo 的 json格式为var tree_data = {    'for-sale' : {name: 'For Sale', type: 'folder'}    ,    'vehicles' : {name: 'Vehicles', type: 'fold

2016-12-12 18:04:30 3187 1

原创 Nosql 理解篇+实战篇 二 NoSQL的数据模型Ⅰ

二  NoSQL的数据模型Ⅰ NoSQL的核心数据模型思想?NoSQL模型的模型分类及其常用模型结构思想?我的项目应该选用哪种NoSQL数据库?1)  正如C演变到C++那样,其所演变的核心思想是将面向过程演变为面向对象。而关系型数据库演变到NoSQL非关系型数据库的核心思想为“面向行”转变为“面向聚合” 关系型数据库的瓶颈在于,每张表的行可以存储value,但并不能存储包含类

2016-11-23 11:32:26 4701

原创 Nosql 理解篇+实战篇 一 了解nosql

一 了解nosql1 什么是nosql  你的项目是否需要nosql   nosql能干什么  与传统的关系型数据库有何区别?在hadoop大数据集群运用中所处的位置及作用;NoSQL常用的几种数据库 NoSQL名称阐议:1)   是“Not Only SQL”的缩写,不仅仅是sql,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准、ACID属性、表结构等等。2)

2016-11-22 12:39:07 8027

原创 Linux 基本操作指令

linux 基本操作指令备忘录删除rm -rf ./*解压unzip WebRoot.zip -d ./test.erong366.com/移动mv ./*..查看端口使用情况ps -aux | grep tomcat杀掉当前进程kill -9 软链接ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际

2016-11-21 10:10:59 268

原创 Linux环境下自动任务sql备份

linux 自动任务(线上环境(centos 6.5)没有crontab 先安装执行yum install crontabs)准备 # chkconfig crond on   //开机自启动# service crond start  //启动# /etc/init.d/crond restart //重载备注: sql文件备份路径为 /backups/dumpups.s

2016-11-04 14:06:07 349

原创 Oracle 由易到难源代码五 触发器使用大全

Oracle 五 触发器 TRIGGER--------DML—before 行级触发器1------------------create or replace trigger tr_emp_addsalbefore update of sal on empfor each rowdeclare  v_scale number;begin  v_scale:=(:n

2015-09-17 14:56:54 295

原创 Oracle 由易到难源代码四 子查询 深度查询 简单分页

Oracle  查询方法子查询1 select * from emp where sal2 select (select dname form dept where deptno = e.deptno),ename,job from emp;3  select * from (select * from emp where deptno = 20)e where job = 'ma

2015-09-17 14:48:53 332

原创 oracle 由易到难源代码三

三 oracle   数据库distinct,like, 排序,分组,及一些常用算法和别名1   为数据库中的列起别名

2015-09-09 09:02:27 354

原创 oracle由易到难源代码二

oracle 二   oracle基础语发1、创建一个新用户test,在其下创建表studentconn system/orcl;create user test identfied by test123;grant connect,resource to test;conn test/test123;create table student>,password varch

2015-09-08 20:23:54 307

原创 oracle 由易到难源代码一

一  oracle  基础     表空间,用户,常用语句复习    刚刚从校园生活步入职场,在实习的这段时间,使用的都是公司的框架,就连数据库的操作也是做很简单的增删改查。近期闲暇时,正好重新整理下以前的笔记,复习一下以前的oracle数据库知识,希望对以后的工作和发展有帮助1、 Oracle数据库的启动a) 启动两个服务***Listener/***Serviceb) “开

2015-09-08 16:40:07 428

项目管理5大过程-十大知识领域.xlsx

项目管理5大过程-十大知识领域

2021-09-28

项目管理十大领域47个过程详解.xlsx

软考高项项目十大管理五大过程资料(全),软考备考,学习

2021-09-28

FileZilla_3.42.1_macosx-x86.app.tar.bz2

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件...

2019-06-21

空空如也

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

TA关注的人

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