数据结构与算法

微信为什么使用 SQLite 保存聊天记录?

SQLite 是一个被大家低估的数据库,但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上,SQLite 是一个非常可靠的数据库,它可以处理 TB 级的数据,但它没有网络层。接下来,本文将与大家共同探讨 SQLite 在过去一年中最新的 SQL 功能。 SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。但是,在相当多的其他场合,它却是最合适的选择

大型互联网公司分布式ID方案总结

ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个

完善系统的最后一公里,增加系统日志功能

当我们在开发一个系统的时候,随着规划的功能越来越多,按照复杂度和稳定性相反的原则,为了保证系统能够按照我们设想的目标运行,我们需要对系统的运行状况进行监控。 那么什么时候介入监控比较好?在系统功能开发的前期(还没有任何实质性的功能),似乎不太合适,那么在系统一切功能开发接近尾声的时候好像也不太合适,最好在这中间,选择一个迭代不是很紧急的阶段,系统已经有那么一个成熟的功能在用的时候,并且随着用户量的

zabbix关键表解释

zabbix中所有clock字段都是用时间戳类型表示时间,在SQL查询中可以通过FROM_UNIXTIME(value, '%Y%m%d' )函数实现时间戳格式和时间格式的转换。 alerts 表记录了报警相关的历史记录 triggers 保存报警trigger的相关信息。其中priority字段的值分别对应web前端中显示的六种级别的报警: 0:Not classified 1:In

数据库同步中间件

一、背景 有个项目的数据量高达五千万,但是因为报表那块数据不太准确,业务库和报表库又是跨库操作,所以并不能使用 SQL 来进行同步。当时的打算是通过 mysqldump 或者存储的方式来进行同步,但是尝试后发现这些方案都不切实际: mysqldump:不仅备份需要时间,同步也需要时间,而且在备份的过程,可能还会有数据产出(也就是说同步等于没同步) 存储方式:这个效率太慢了,要是数据量少还好,我们使

mybatis-generator-gui复合主键时生成实体类会两个,一个xxx和一个xxxKey,想生成一个怎么配置,配置方法。

今天使用mybatis-generator-gui生成实体类和mapper的时候,发现有一个表生成的实体类成了两个,其中一个叫XXXKey,另一个是表名对应的XXX,其中XXXKey中的字段是表中的几个主键,而XXX继承了XXXKey,并加上表里面除了主键的其他属性。 但是这并不是我想要的效果,我只想生成一个实体类,怎么办呢?加一条配置就好。 之前的mybatis-generator是在xml里面

钉钉小机器人开发

一:适用人群(需要用发布定时消息的懒人) 考勤负责人 打字负责人 提醒简书负责人 提醒周报负责人等等 二:开发背景 学习完了go语言的gin框架,看了学长的发的go进阶视频,大概掌握了gin的知识,但是一直没有时间去练手。再加上在学校505机房里面学习的时候,二期的学长总是不差考勤,学长那里经常忙于项目甚至三期的一些同学也会忘记考勤,加上大家确实需要一个定时定点@特定的人去做某一件事情,所以我

MySql分片规则·求模分片

一、求模分片规则(mod-long) 表中必须有名叫id的表头 根据id表头与设定数字取余的结果存储数据 余数是 0 数据存储到 dn1 余数是 1 数据存储到 dn2 余数是 2 数据存储到 dn3 二、相关配置 schema.xml文件中设置mod-long规则 # 查看使用mod-long分片规则的表名: [root@maxscale56 ~]# vim /usr/loc

Vite多环境配置

多环境配置的实现方式 使用vite创建的项目,相比原来的webpack项目确实在性能上带来了非常大的提升,我自己练手的一个项目也是使用vite+typescript+vue3来构建的。在实际开发场景中,我们很多时候会用到多环境配置,一般项目至少会区分dev和prod环境,然后在不同的环境下给相同参数设置一个不一样的值。在vite中也提供了这种能力,在官方文档中给出了一个示例: .env