pg 唯一性约束修复 标题的描述有点自相矛盾,唯一索引中怎么会有重复数据呢。先说一下背景,之前我用的 pg 镜像是 postgres:11.18-bullseye,后来被升级成了 postgres:11.20-alpine3.18,这个造成的其中一个后果简而言之是 pg 对字符串的排序发生了变化,比如原先认为 A > B,现在则变成了 A < B。由此,就有可能破坏数据的唯一性约束。不仅如此,只要索引列包含字符串类型的字段,也会有问题。为了方便继续描述,假设有个 test 表,结构如下。
数据存储闲聊 写哪算哪,有些地方不正确的,欢迎指正。逻辑混乱,不喜忽喷。工作中碰到过两类服务,一个是数据密集型的,一个是计算密集型的。计算密集型的是我工作的第一家公司,当时主要是处理信息流(包括图文和视频)的各种特征识别。每一种特征的识别都是一个独立的服务,这些服务没有自己的数据库。所有信息都存储在一个公共数据库里,用的是 hbase,在 hbase 的基础上加了缓存。数据密集型的系统就比较多了,各种工作台基本上都是数据密集型的,以数据为核心,负责接收数据,转换数据,写入数据。
MySQL 间隙锁 在辅助索引中,值的排序是先根据索引字段,然后再按主键排序,所以上面的顺序就是该索引值的顺序。所以对于 (16, 7) 这一值而言,他的左右间隙分别是 (12, 3)和(23, 5),若有查询语句如下。之前一直对间隙锁的锁定范围很迷糊,感觉不可控,最近又看了下相关文章,再加上测试,发现间隙锁真的只是顾名思义,间隙锁就是间隙锁。则 (12, 3) < x <= (23, 5) 的范围内都会被加锁,也就意味着,如下的组合是无法写入的。先说结论,间隙锁只会在语句用到的索引上添加,不管这个是辅助索引还是聚集索引。
postgresql 的递归查询 postgresql 的递归查询功能很强大,可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢?在递归查询中,我们一般会用到 union 或者 union all,他们两者之间的区别是什么呢?
NSQ 实现逻辑探秘 topic 中的消息会被复制到多个 channel 中,并将消息推送到其中一个消费这个 channel 的消费者手中。go sdk 中提供的 NewProducer 函数需要提供 nsqd 的地址,因此生产者会直连某个 nsqd,并向其投递消息。如果希望生产也能实现负载均衡,则需要我们自己做进一步的封装,大概逻辑是:向 nsqlookup 获取所有 nsqd 的信息建立多个 producer, 每个 producer 与不同的 nsqd 建立连接。
protobuf 编码探究 总体而言,pb 序列化后的字节数据,一个字段对应一个 key-value 对,整个二进制文件就是一连串紧密排列的 key-value 对,key也称为tag。采用这种key-value对的结构无需使用分隔符来分割不同的 field。key 是由 wire_type 和 field_number 两部分编码而成,具体地说wire_type 可以理解成数据类型的种类,类似 golang 中的 reflect.Kind。pb 的 wire_type 和数据类型的映射见下表TypeMeaning。
备战系统分析师——第2章经济管理部分 正在备考2023年5月底的软考--系统分析师。这次让我们聊一下第2章的经济管理部分。首先是会计常识,这是我第一次接触会计知识,很多东西还是很新奇的。会计计价有两种方式,历史成本计价和公允价值计价,我理解历史成本计价就是在做会计报表的时候,用原价对资产进行计价,而公允价值计价是用当时的市场价重新计价。另外,也提到了几种会计报表,包括资产负债表,利润表和利润分配表。所谓的资产负债表就是整理企业现有的资产和负债,分为“资产”和“负债+所有者权益”两部分。利润表用于计算企业的利润,有两种
Hadoop集群多用户部署 1 引言之前曾用一个管理员账号A在用户目录下部署了一个hadoop集群。但是当新建一个账号的时候,新账号B就不能使用Hadoop集群,理由很简单,B不能访问A下面的目录和文件。因此,正确的做法是将hadoop集群部署到公告目录下,如/usr/local目录下,让所有账号都能使用。本篇博客就是为了记叙hadoop迁移过程中遇到的问题。2 权限迁移过程中的一个核心问题就是权限问题,只要解决了这个问题,就
Neural Bag-of-Ngrams 简介前一段时间看的几篇有关文本建模的论文,如Mikolov的Doc2vec,Kiros的Skip-thought等都是侧重模型的创建,即通过怎样的神经网络方法,得到一个较理想的文本表示。其他的有关文本建模(句子和篇章)的论文,他们的注意力并不是集中在纯粹的文本建模上,而是在进行文本分类的时候,顺带的对文本进行了建模,用的方法基本上也都是深度学习,如DNN、RNN、CNN之类的。这些模型的一个共同点就
Reproducing and learning new algebraic operations on word embeddings using genetic programming 简介现在生成的词向量能够利用一些代数运算,如向量的加减,来捕获词之间的语义关系,典型的一个例子就是“King”-“Man” + “woman” = “queen”。在NLP中,也叫做类比实验(analogy test),其一般形式是“a is to b as c is to ?”。不过正如例子中展示的,现在一般使用的都是简单的加减法。但是,这并不表示不存在其他的运算也能捕获这种语义关系而且可能效果更
Java中文件流的关闭问题 问题引入之前写代码涉及到文件读写的时候,都没有关闭相关的文件流。对于小程序,并不会发生问题,但是当程序的读写数据大,频繁创建文件流的时候,就会出现一些问题,这里特整理了一些有关数据流关闭的事项。数据流关闭这里以如下所示的代码为例InputStreamReader in = new InputStreamReader(new FileInputStream(file));BufferedReader