基于 Redis 的分布式锁对大家来说并不陌生,可是你的分布式锁有失败的时候吗?在失败的时候可曾怀疑过你在用的分布式锁真的靠谱吗?以下是结合自己的踩坑经验总结的一些经验之谈。
你真的需要分布式锁吗?
用到分布式锁说明遇到了多个进程共同访问同一个资源的问题。一般是在两个场景下会防止对同一个资源的重复访问:
- 提高效率。
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有些是硬件层面的,有些则是软件层面的,它们共同构成了苹果手机完整的身份标识系统。
2025年05月10日
ULID、UUID 和雪花 ID 各有优劣,哪个更好取决于你的具体用例和需求。以下是几个需要考虑的关键点:
- ULID:
- ULID 是 Universally Unique Lexicographically Sortable Identifier 的缩写。
- ULID 是一个 128 位的标识符,旨在相对紧凑、URL 安全和词典排序。
2025年05月10日
Xingyu Cheno4分钟前
Audience Network是 Facebook 新发布的一个跨应用移动广告服务,以用户在社交网络上留下的信息作为基础,内容提供方可以在不同软件中识别用户并根据他们的资料有针对性地发放推广内容。
举例来说,你在 Facebook 上赞了某品牌的商品,那么当你在使用有关的第三方应用时就有可能看见该品牌向你投放的广告内容,与 Facebook 的其它移动广告服务一样,这些内容可能以横幅、弹窗或者原生的形式出现。
了解用户 - 识别用户 - 在第三方应用中投放广告,从表面上看,这无疑将移动端广告投放的个人定位精准度提高到了一个新高度。
2025年05月10日
在分布式环境下,如何对某对象做唯一标识是个很常规的问题。本文讨论几种常见做法,供大家参考。
1. UUID
UUID是可以生成时间、空间上都独一无二的值,其本质是随机+规则组合而成的。即使在两个独立的服务器上生成UUID,其预期值也是不同的。以MySQL为例,说明下UUID。
格式
在MySQL中,UUID值是一个128位的数字,表示为以下格式的十六进制数字的utf8字符串:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee。其得到的随机值由5个部分组成,且分隔符位为:中划线。其各部分含义如下: