前言
分布式ID,在我们日常的开发中,其实使用的挺多的。
有很多业务场景在用,比如:
- 分布式链路系统的trace_id
- 单表中的主键
- Redis中分布式锁的key
2025年05月10日
分布式ID,在我们日常的开发中,其实使用的挺多的。
有很多业务场景在用,比如:
2025年05月10日
如图是17年6月在db-engines上时序数据库的排名,我会挑选开源的、分布式的时序数据库做详细的解析。前十的排名中,RRD是一个老牌的单机存储引擎,Graphite底层是Whisper,可以认为是一个优化的更强大的RRD数据库。kdb+、eXtremeDB和Axibase都未开源,不做解析。InfluxDB开源版和Prometheus的底层都是基于levelDB自研的单机的存储引擎,InfluxDB的商业版支持分布式,Prometheus的roadmap上也规划了分布式存储引擎的支持计划。
2025年05月10日
以下文章来源于程序员内点事 ,作者程序员内点事
在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?
拿MySQL数据库举个栗子:
在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。
2025年05月10日
基于 Redis 的分布式锁对大家来说并不陌生,可是你的分布式锁有失败的时候吗?在失败的时候可曾怀疑过你在用的分布式锁真的靠谱吗?以下是结合自己的踩坑经验总结的一些经验之谈。
用到分布式锁说明遇到了多个进程共同访问同一个资源的问题。一般是在两个场景下会防止对同一个资源的重复访问:
2025年05月10日
1.使用场景: 公司的小程序需要实现一个功能:在原有小程序上,有一个优惠券活动表。 存储着活动产品数据,但因为之前没有做约束,导致数据的不唯一,这会使打开产品详情页时,可能会出现随机显示任意活动问题。 因此需要把它删除掉。
2.那么如何删除呢? 通过翻阅资料发现我们可以通过使用Row_Number()与Partition By 来实现这个功能,我们先看看Row_Number()如何使用,它的语法是:
2025年05月10日
基于SparkCore,大规模、高吞吐量、容错的实时数据流的处理
<dependency>
2025年05月10日
古人有云,“一言既出,驷马难追。”可见,对说出口的话是多么重视。可是,人总有说错话的时候啊~为了解决这个问题,微信就有了“撤回”的功能,对于发出2分钟以内的信息提供撤回选项:
用户长按发出的消息(包括图片),在菜单中选择撤回。
那么问题来了……为什么发出去的消息可以轻松撤回?微信是如何同时从双方手机上实现信息撤回的呢?
以MobleA给MobileB发送消息与消息撤回为例:
2025年05月10日
今天本能是想测试一个PDO持久化,会不会带来会话混乱的问题 先贴一下PHP代码, 代码丑了点,但是坚持能run就行,反正就是做个测试。
<?php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$user = 'root';
$password = 'root';
// 设置 PDO 选项,启用持久化连接
$options = [
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
try {
// 创建持久化连接
$pdo = new PDO($dsn, $user, $password, $options);
$stmt = $pdo->prepare("INSERT INTO test_last_insert_id (uni) VALUES (:uni);");
$uni = uniqid('', true);
$stmt->bindValue(':uni', $uni);
$aff = $stmt->execute(); //
if ($aff === false) {
throw new Exception("insert fail:");
}
$id = $pdo->lastInsertId();
function getExecutedSql($stmt, $params)
{
$sql = $stmt->queryString;
$keys = array();
$values = array();
// 替换命名占位符 :key with ?
$sql = preg_replace('/\:(\w+)/', '?', $sql);
// 绑定的参数可能包括命名占位符,我们需要将它们转换为匿名占位符
foreach ($params as $key => $value) {
$keys[] = '/\?/';
$values[] = is_string($value) ? "'$value'" : $value;
}
// 替换占位符为实际参数
$sql = preg_replace($keys, $values, $sql, 1, $count);
return $sql;
}
$stmt = $pdo->query("SELECT id FROM test_last_insert_id WHERE uni = '{$uni}'", PDO::FETCH_NUM);
$row = $stmt->fetch();
$value = $row[0];
if ($value != $id) {
throw new Exception("id is diff");
}
echo "success" . PHP_EOL;
} catch (PDOException $e) {
header('HTTP/1.1 500 Internal Server Error');
file_put_contents('pdo_perisistent.log', $e->getMessage() . PHP_EOL);
die('Database connection failed: ' . $e->getMessage());
} catch (Exception $e) {
header('HTTP/1.1 500 Internal Server Error');
file_put_contents('pdo_perisistent.log', $e->getMessage() . PHP_EOL);
die('Exception: ' . $e->getMessage());
}
2025年05月10日
苹果手机ID概述
什么是ID
在现代科技发达的时代,各种电子设备无处不在,手机作为人们日常生活中不可或缺的一,更是如此。而苹果手机作为智能手机领域的佼佼者,其独特的ID设计更是引人注目。什么是ID呢?
ID(Identifier即识别码,是用于唯一标识某个特定对象的一串字符或数字。在苹果手机中,每一部手机都被赋予了多个不同的ID,用于识别该设备的身份、所有权、使用情况等,以实现各种功能和服务。这些ID有些是硬件层面的,有些则是软件层面的,它们共同构成了苹果手机完整的身份标识系统。