- 博客(43)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 去中心化的分布式websocket通信架构演进
#去中心化的分布式websocket通信架构演进概念:cluster:代表一个集群,集群中有多个节点,集群是去中心化的,字面上理解就是无中心节点,与任何节点连接websocket来通信都是等价的node: 代表一个节点,是集群中的一个组成元素,也是用户websocket长连接状态下的某个实例roomId: 房间ID,将用户分组,实现组内用户的消息广播clientId: 用户ID,用户身份的唯一标识channelId: node在分布式环境下的唯一标识需求:房间内消息广播,类似群聊
2021-01-19 17:15:21
2910
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 如何实现1分钟写一个API接口
Rocket API第一步,创建接口第二步,定义接口第三步,接口逻辑第四步,接口访问测试官方文档地址:[https://gitee.com/mihuajun/rocket-api-doc/wikis/pages]
2020-08-24 12:39:47
45763
6
原创 Doris画像存储实践系列二
通过doris聚合模型+REPLACE_IF_NOT_NULL 聚合函数实现。“画像宽表” + bitmap倒排表方案,在。
2024-03-08 14:16:20
604
原创 Doris 实时数仓建设实践
Drois 从早期的百度项目,到开源Apache Doris,到商业化的StarRocks,到各大云服务商,陆续上线,作为新一代的OLAP解决方案,在应用场景上表现得非常好整理对近期对Doris实时数仓建设的一些思考建立外表 - 实现跨库连表分析数据导入 - 减少业务库性能压力对数据导入的表进行表结构优化 - 增加查询性能对数据导入的表建立物化视图 - 增加查询性能维度模型规划维度表与事实表 - 增加查询性能对通过建模生成的事实表做物化视图 - 增加查询性能。
2023-01-13 17:55:05
3134
原创 判断一个时间段是否经过了另一个时间段
判断一个时间段是否经过了另一个时间段如查询2022-10-10 15:00:00 - 2022-10-10 23:00:00 之间存在离线的记录,需要命中id=1的数据。IOT设备存在离线与恢复时间记录,每一次离线和恢复记为一个周期即一条数据, 现在需要统计出在某个时段存在离线记录的数据,如果目前未恢复,没有恢复时间,恢复时间置为9999-01-01 00:00:00。在时间区间2022-10-10 15:00:00 至 2022-10-10 23:00:00之间的上班时段8点-20之间经历过离线的数据。
2022-11-25 18:53:47
714
转载 Kimball 维度建模理论
雪花模型指的是在星型模型的基础上,维度表再关联维度表,这种结构应该在OLTP场景下会用这样的结构,在数仓下基本没人使用。如果业务数据存储为这样的结构,常常将数据打平,即合并成一张维度表,这样它将会上级为星型模型。kimball 维度建模,星型和星座 模型核心在于将事实表(过程数据通常不变的数据)与主体信息表(常更新的数据,有维度信息)逻辑进行拆分。在实际业务中,星座模型才是数仓建设的最终归属,它也是建立在星型模式下,不同的是只是和其他事实表共享了维度表,即存在多张事实表,共享一张维度表的情况。
2022-11-15 18:54:34
1485
原创 springboot ObjectId 序列化 反序列化
springboot mongodb ObjectId 序列化,反序列化import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.DeserializationContext;import com.fasterxml.jackson.databind.JsonDeserializer;import com.fasterxml.jackson.databind.ObjectMapper;imp
2022-05-26 21:31:37
608
原创 springboot 2.6.x 自定义注册 RequestMapping
springboot 2.6.x以上版本自定义RequestMapping问题:Expected lookupPath in request attribute "org.springframework.web.util.UrlPathHelper.PATH".
2022-01-19 09:41:13
4332
3
原创 第几次行为数据清洗
产品需求:显示用户的行为记录上第几次访问: 比如:『张三第3次访问了这篇文章』想法1:实现:首先想到的是去数据库『明细』表中查询一下历史数量,然后本次入库+1问题:很明显,性能差到爆想法2:实现: 在数据库中维护字典,描述为『最后的次数』问题:性能好是好点了,但抗不住并发,抗不住高峰(不用高,低的并发也抗不住)想法3:实现: 将字典缓存在Redis中,使用inc自增,进行缓存问题:redis字典数据的生命周期,时间越久,数据越大,总有一天能占满,或者更换redis时次数字
2021-11-17 19:09:18
1282
原创 Doris 画像标签存储实践
根据画像标签的需求场景,我们常常将画像存储分为两部份,分别是:画像基本信息的存储用户画像人群的筛选需求的存储常见画像标签存储方式:根据类目创建宽表,或者根据更新的频率创建宽表创建竖表-每个用户+每个标签=一条记录竖表+横表=》分开计算,定时聚合ES 标签对象存储,rowKey为user_id,HBASE存储用户明细,通过user_id关联倒排表,标签-》多个用户Id,bitmap方案一、根据类目创建宽表,或者根据更新的频率创建宽表1. 这是最容易想到的方式,同时也是最直观的方式,
2021-09-23 11:15:29
3990
12
原创 数据开放平台
数据开放平台介绍数仓,数据湖,数据中台,都是对于数据资产的管理,而对于管理起来的数据如何对业务系统快速赋能,一直是数据团队需要深入考虑的问题对业务系统赋能,一般有两种方式,一是提供API供业务系统调用,二是将数据推送给业务系统。这里描述的是第一种API形式供业务系统访问的平台 『数据开放平台』在以往,要以API形式提供给业务方,需要数据团队独立开发以周为版本的迭代使用过BI的同学知道,一些报表,和统计结果,只需要几条Sql就能完成大部份的业务需求,很快捷。那么如果我为这些SQL配一个API访问地址
2021-09-22 13:52:50
924
原创 Rocket-API 集群模式部署
1. 问题?当Rocket-API需要多实例部署,以达到负载和并发访问的目的时,任意一个实例API信息的修改,动态数据源配置的变更等,带有实例属性的信息时,变更无法广播给所有实例,就会导致信息不一致的问题在以往需要以重启整个集群所有实例为代价,让各实例去获取到最新信息,极大的影响到线上用户的访问在Rocket-API 2.4.0.RELEASE中提交了此功能,变更实例之间实时同步,无需重启2. 配置方式如下:在yml中配置集群模式如下:默认值为none表示单机模式。redis表示以Redis
2021-07-30 12:02:02
2783
原创 Rocket-API-Platform 统一接口平台
Rocket-API-Platform项目介绍:1.基于Rocket-API2.允许在提供的UI页面上完成多数据源以及springboot application.yml的一系列动态配置,保存即刷新配置能做什么:1.统一的数据接口平台2.统一的数据处理中心3.开发中前端同学的测试数据来源4.报表,统计信息查询以及导出项目截图:目前情况:内置常用的数据库驱动:SqlserverPostgreSQLSqliteDerbyH2HSQLDBMySQLOracleSybase
2020-11-30 09:28:21
2977
原创 Rocket-API 的前世今生
大家好,我是一名资深搬砖工程师,常常忙碌于增查删改中,无法自拔。后来幸得大师指点,转行做了一名杀手,作为一名杀手,需要一套武器装备我曾:经历过APIJSON的暧昧经历过GraphQL的诱惑经历过DataWay的熏陶后得大师点醒,为什么不直接搞SQL呢为什么不直接搞SQL呢…为什么不直接搞SQL呢…为什么不直接搞SQL呢…这来自灵魂的三大暴击,一下子打动了我那就搞一个? 那就搞一个!https://gitee.com/alenfive/rocket-api第一版本画了个页面,可.
2020-11-19 22:56:10
3055
1
原创 与第三方系统打通的N种进阶方式
第一级别使用HTTP协议,来进行交互,对失败的请求进行内存重试3次,3次后丢弃第二级别对失败的数据进行持久化重试,存放于数据库中,用定时任务来对失败的数据进行重新处理,重试3次以后丢弃,3次的间隔时间固定第三级别优化重试策略,考虑到如果重试时间间隔设置得太短,第三方宕机短时间内无法恢复,会跳过3次重试时间隔离。如果重试次数太多,比如设置10次,1是耗资源(对方服务短时间内能恢复的就已经恢复了,恢复不了的,短时间内重试这么多次也没有意义),2是定时任务不能很快的处理到新产生的数据如果重
2020-11-12 14:38:38
980
2
原创 ScriptEngineManager groovy 内存泄露
业务场景:使用java8提供的ScriptEngineManager 加载并运行groovy脚本,每次运行从数据库中获取脚本来实现动态编译运行运行一段时间后初始用户量少,没感觉,偶尔一次内存溢出重启就好(话外音:搞不清楚状况先重启 总是没错的)后来用户量越来越大,溢出的次数就越来越频繁 java.lang.OutOfMemoryError: GC overhead limit exceeded通过导出headdump分析发现非堆内存一直在持续增加,不能释放,网上查询的资料也说明了这一点
2020-10-20 12:09:33
3020
1
原创 springboot 服务最终一致性方案
目前市面上现有的最终一致性方案有:1.分布式事务一致性第一个想到的方案,但性能低下,数据源限制,等等问题,基本没用2.RPC直调最便宜,最省事,也是最没有保障的一种方案3.MQ,KAFKA中间件使用得最多,也是最容易入坑的方式,看看你的项目中是否有注意以下问题:0.埋点问题,在一个复杂的业务中,是写个拦截器呢还是所有地方都来埋个点呢?1.发送端埋点上报与数据库事务非原子性操作问题,先操作数据库,还是先上报MQ?2.发送端发送消息是否有确认机制?3.发送端发送消息在内存重试过程中
2020-09-22 16:12:01
1570
原创 Rocket-API 快速开始
快速开始#1. 添加依赖<dependency> <groupId>com.github.alenfive</groupId> <artifactId>rocket-api-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>版本查看: https://gitee.com/mihuajun
2020-08-21 16:09:05
3717
2
原创 您还在用mybatis plus和jpa吗
Rocket API摘要用于快速开发API接口。不再定义Controller,Service,Dao,Mybatis,xml,Entity,VO等对象.可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库SQL执行语句,非关系型MONGODB查询语句.完全基于springboot2.x,无侵入性,新老项目都能快速集成无需编写一行代码即可完成大部分的需求开发,使用难度级别(测试 or 运维)也可参与开发动态编译,无需重启,即时生效快速开始#1. 添加依赖<depende
2020-07-08 11:13:24
5518
原创 dataway header传参
import 'net.hasor.dataql.fx.web.WebUdfSource' as webData;return webData.getHeader("name");
2020-05-06 12:07:09
730
原创 拜托 别再搞逻辑删除了
拜托 别再搞逻辑删除了基于领导的一句话:”产生的数据都是有价值的数据“,因此第一个想到的就是假删(”逻辑删除“),还将其定义为了一个标准,所有表都要有 逻辑删除字段is_validate,从此开始了不幸的旅途自从有了逻辑删除,唯一索引再也与我没有了缘分自从有了逻辑删除,所有的单表查询,连接查询,更新,带where的我都得带上他自从有了逻辑删除,我再也分不清别人设计的表是一对一,一对多,还...
2020-04-29 19:14:12
998
4
原创 单表操作API依赖包
<dependency> <groupId>com.github.alenfive</groupId> <artifactId>common-api-boot-starter</artifactId> <version>1.0.0.RELEASE</version> &l...
2020-04-22 15:13:37
291
原创 Mybatis 扫描依赖包中的mapper
业务场景1/提取公共mapper文件配置2/集成springboot starter特性,依赖即生效方法1/引入依赖后包,再使用@MapperScan 在配置类中添加注解,完成扫描指包定的mapper文件2/在依赖包中复制类 org.mybatis.spring.mapper.MapperScannerConfigurer 为 CustomMapperScannerConfigurer...
2020-04-21 15:37:46
3587
原创 Mysql 通用任意单表查询API设计
应用场景1/数据库任意单表查询的重复劳动2/数据库任意单表多业务需要不同字段的重复劳动#说明1/黑名单设计,解决敏感表和敏感字段拦截2/防SQL注入处理,对key,value的合法性进行验证3/对于表名暴露给前端,有两种处理方式,一种由node层来传参,一种服务器添加一个表名映射,实现逻辑表与物理表的联系4/为了性能考虑,fields与filter为必填项5/可扩展:加入分页查询,...
2020-04-16 14:49:13
636
2
原创 一篇,快速搞懂各种重试策略
#数据同步,通过指数级重试业务场景:1、第三方系统的用户在我方系统产生了订单记录,我方系统需要将订单信息同步给第三方系统2、考虑到网络等不可抗力因素,希望失败的时候能够重试,又不希望无限重试,比如希望只重试3次3、因为三方系统一旦发生故障,短时间内不一定能恢复,所以重试的时候能够有一 where count <= #{count} and sync = ...
2020-03-22 16:33:52
838
原创 mybatis-plus 我不用了
优点一键生成controller/service/mapper/entity/xml提供通用针对单表的增查删改提供Wrapper 针对相对复杂及自定义的查询操作内置多种数据库的分页查询支持ID主键生成器还有其他从这里看功能还是相当完美,很吸引人经常面试的时候问数据库的优化方案:,其中一项是select * 返回所有字段不可使用,要求只返回业务需要的字段。plus下我需要这...
2020-03-09 19:43:54
7075
12
原创 springboot @RequestHeader 实体对象接收header json参数
构建ReplaceRequestHeaderMethodArgumentResolver @PostMapping("/test") public void listProject(@RequestHeader UserInfo userInfo){ System.out.println(curUserInfo); }curl --location --r...
2020-03-05 18:53:41
4815
原创 springboot2 oauth2授权重定向匹配版本问题
"At least one redirect_uri must be registered with the client"从springboot1.x升到2.x 出现如下异常:原因: `DefaultRedirectResolver.resolveRedirect`springboot 1.xspringboot 2.X解决方法从springboot1.x升到2.x 出现如下异常:OAuth...
2019-08-22 00:45:52
5043
翻译 springboot 禁用某项健康检查
springboot 禁用某项健康检查management.health.mail.enabledmanagement.health.mongo.enabledmanagement.health.redis.enabledmanagement.health.solr.enabledmanagement.health.elasticsearch.enabledhttp://docs.s...
2019-05-23 16:54:54
14873
原创 springboot 长轮询实现
springboot 长轮询实现基于 @EnableAsync , @Sync@SpringBootApplication@EnableAsyncpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.cla...
2019-02-22 19:10:05
9301
2
原创 基于线程池的事件通知的生产者与消费者
基于线程池的事件通知的生产者与消费者/** * 基于线程池的事件通知的生产者与消费者 * @Author: mihuajun 【kobe96688@126.com】 * @Date: 12/9/2018 10:22 AM */public class ThreadPoolProducerConsumerDemo { public static void main(String[...
2019-02-18 16:56:53
327
原创 Java 匹配括号中的值
代码String str = "首单${name}典可升级为高${phone}品无损音质";Pattern pattern = Pattern.compile("(?<=\\$\\{)[^\\}]+")Matcher m = pattern.matcher(str);while(m.find()){ System.out.println(m.group());}输出Connected t
2016-12-16 11:19:23
1621
原创 java 文件、文件夹 递归复制、移动
package com.freedom.utils;import java.io.*;/** * 文件、文件夹 递归复制、移动 * @Author: mihuajun 【kobe96688@126.com】 * @Date: 12/9/2016 10:22 AM */public class FileUtils { public static void copy(File sour
2016-12-09 13:02:03
716
原创 spring mvc 异步请求
需要环境:servlet >3.0 and Spring MVC>3.2和普通的new Thread 进行能异步处理却无法返回异步处理的结果不同,spring 提供的异步支持异步处理的同时还能对异步处理的结果进行返回他有三种实现方式第一种:直接返回Callable< T>对象 @RequestMapping("/async") public Callable<String> asy
2016-11-23 16:36:01
690
原创 nexus3.1.x安装后无法用初始密码登录
从官网下载nexus最新版3.1.0 https://www.sonatype.com/oss-thank-you-tar.gz 下载解压后有两个文件夹,分别是nexus-3.1.0-04 sonatype-work 将sonatype-work目录删除后,才能通过初始密码admin|admin123登录
2016-11-23 10:11:57
2238
原创 hive自定义函数 将查询统计结果输出到指定的jdbc数据源
如题: 1、自定义类继承抽象类GenericUDF 2、实现抽象类的三个方法 3、将其打成jar包(打成jar包时不需要指定main)eg: dop-udfdb.jar 4、进入hive命令行执行下面的命令 将该ja包加入到hive环境 hive>add jar dop-udfdb.jar;5、添加jdbc驱动支持,这里mysql 驱动,不同的数据源添加各自的驱动包hive>add jar
2016-11-22 18:40:00
693
原创 ubuntu搜索源中的软件
ubuntu中能使用apt-get install 方式安装软件,但前提得知道软件名称,使用下面的方式sudo apt-cache search mysql根据关键字“mysql”查询软件名称中和软件介绍中包含此关键字的软件,并且支持正则表达式匹配例如查询以mysql-server开头的软件包:sudo apt-cache search "^mysql-server*"支持显示包的详情,例:sudo
2016-11-22 17:48:27
636
原创 将任意json转二维表 不限级
/**限制: * {}直接下级不能有{} * []直接下级不能有[] * []的直接下级类型一致,要么都是int,要么都是string,要么都是{} * * 操作方式: * 1、第一步:处理json对象,保证同一级中不存在多个集合,多余的集合放到第一个集合中的每一个子元素中 * 2、第二步:深度递归 * */ * package com.wanxiaobao.d
2016-11-18 10:24:40
1851
原创 单例设计
通过内部类加载的互斥原理,实现懒加载和线程安全的单例/** * @Author: mihuajun 【kobe96688@126.com】 * @Date: 11/16/2016 10:04 AM */public class JdbcPropertiesLoader { static class newInstance{ private static JdbcProp
2016-11-16 10:52:02
206
转载 java 重启路由器
思路:模拟http请求,调用路由器重启命令说明:路由器的密码是base64编码后的结果,所以需要转一下。重启命令:http://192.168.2.1/userRpm/SysRebootRpm.htm?Reboot=重启路由器request.addHeader("Referer", "http://192.168.2.1/");//没它不行,估计这里做了限制,以前没有是可以的(据资料说
2015-01-27 21:36:37
1725
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人