数据结构与算法

JPA 百万级数据量动态分页查询的优化

分页查询是业务中再常见不过的操作了,在数据量比较小,索引使用得当的情况下,一般的动态查询都没啥性能问题。然而当数据量比较达到百万,千万级,常规的分页查询一般都会出现性能问题。本文不会介绍什么分库分表,缓存之类的优化方案,这些东西在网上千篇一律,不值得在此处拿来讨论。本文将通过具体的案例来讲讲当数据量到达百万量级后,分页到底该怎么做,代码该怎么写。 前言 分页查询是业务中再常见不过的操作了,在数

MySQL悲观锁与乐观锁的实现方案

我们知道Mysql并发事务会引起更新丢失问题,解决办法是锁,所以本文将对锁(乐观锁、悲观锁)进行分析 悲观锁和乐观锁是用来解决并发问题的两种思想,在不同的平台有着各自的实现。例如在Java中,synchronized就可以认为是悲观锁的实现(不严谨,有锁升级的过程,升级到重量级锁才算),Atomic***原子类可以认为是乐观锁的实现。 悲观锁 具有强烈的独占和排他特性,在整个处理过程中将数据处于锁

Python 使用SQLite数据库

1. Sqlite3模块 - 不需要单独的服务器 sqlite3 模块由 Gerhard Häring 编写。 要使用该模块,您必须首先创建一个 Connection 对象连接数据库。 这里数据将存储在 PrintAndersonLaser.db 文件中: import sqlite3 conn = sqlite3.connect('PrintAndLaser.db') 创建数据表,增加数据到数

Yao 折腾手记:如何快速创建一套管理系统

文章首发于个人公号:阿拉平平 有开发经验的小伙伴肯定知道,要独立开发一套管理系统并非易事。从设计数据库,到开发接口,再到编写前端页面,想想就让人头大。如果需求不是很复杂,我们可以借助低代码应用引擎来快速开发。 项目介绍 Yao[1] 是一款 Go 语言驱动的低代码应用引擎,通过编写 JSON 文件即可快速制作 API 接口,数据管理系统 ,命令行工具等应用程序,应用可以运行在本地、云端和物联网

组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate

组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate 背景 近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。 组件基本信息 组件:dbmate 开源协议:MIT license 内容 本节我们分享一个基于Golang实现的数据库迁移工具dbmate,可

面试官,不要再问我三次握手和四次挥手

三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。 见过比较典型的面试场景是这样的:        面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文

Apache Doris 系列: 入门篇-创建数据表

本文档我们介绍 Doris 怎么创建表及其他的相关操作。 连接 Doris 我们在成功部署完成 Doris 之后,我们可以通过任意 MySQL 客户端来连接 Doris ,下面我们的示例是通过 MySQL 客户端命令行工具来进行操作。 注意: 这里连接 Doris ,指的是连接 Doris FE, 连接的 IP 地址就是 FE 节点 IP 地址,端口是 FE 的 query_port 默认是90

SpringBoot——动态数据源(多数据源自动切换)

前言 日常的业务开发项目中只会配置一套数据源,如果需要获取其他系统的数据往往是通过调用接口, 或者是通过第三方工具比如kettle将数据同步到自己的数据库中进行访问。 但是也会有需要在项目中引用多数据源的场景。比如如下场景: 自研数据迁移系统,至少需要新、老两套数据源,从老库读取数据写入新库 自研读写分离中间件,系统流量增加,单库响应效率降低,引入读写分离方案,写入数据是一个数据源,读取数据是另

Clickhouse(流量分析(二).留存分析案例)

1. 留存分析定义 神策用户分析模型——留存分析的使用方法 2. 留存分析 ClickHouse留存分析工具十亿数据秒级查询方案 高效压缩位图RoaringBitmap的原理与应用 留存函数(retention) 方案一. Roaringbitmap 一般来说,求留存率的做法就是两天的用户求交集,join的速度会比较慢。假若每一个用户都可以表示成一个32位的无符号整型,用bitmap的形式去存储,