首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

统计文章阅读

如何精确地记录一篇文章阅读量是一个比较复杂的问题,不过对于我们的博客来说,没有必要记录的那么精确。...因此我们使用一种简单但有效的方式来记录博客文章阅读量:文章每被浏览一次,则其阅读量 +1,即所谓的文章页面 PV(Page View)数。虽然简单粗暴,但却高效实用。...增加新字段 为了记录文章的浏览量,需要在文章的数据库表中新增一个用于存储阅读量的字段。...你也许担心如果两个人同时访问一篇文章,更改数据库中的阅读量字段的值时会不会冲突?...一旦该视图函数被调用,说明文章被访问了一次,因此我们修改 detail 视图函数,让被访问的文章在视图函数被调用时阅读量 +1。

1.1K50
您找到你想要的搜索结果了吗?
是的
没有找到

TiDB 源码阅读系列文章(一)序

在 TiDB DevCon2018 上,我们对外宣布了 TiDB 源码阅读分享活动,承诺对外发布一系列文章以及视频帮助大家理解 TiDB 源码。...通过这项活动,我们希望能和大家做更深入的交流,通过源码阅读,让 TiDB 与大家 『坦诚相见』。 前言 学习一种系统最好的方法是阅读一些经典著作并研究一个开源项目,数据库也不例外。...从整体上分为两大部分,上半部分包括如下四篇文章: 第一篇文章介绍整体的架构,知道 TiDB 有哪些模块,分别是做什么的,从哪里入手比较好,哪些可以忽略,哪些需要仔细阅读。...希望大家阅读后能对 TiDB 有深入的理解,能够完全理解 TiDB 的代码。这部分会比上半部分多很多,具体数量尚未定。...另外这一系列文章的目的在于帮助读者更好的理解 TiDB 源码,而不是替代阅读源码的过程。希望读者能在阅读源码的时候,以这些文章为参考,而不是只读文章,不看代码。

1.1K70

开发 Django 博客文章阅读量统计功能

作者:HelloGitHub-追梦人物[1] 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库[2] 点击本文最下方的“阅读原文”即可获取 如何精确地记录一篇文章阅读量是一个比较复杂的问题...因此我们使用一种简单但有效的方式来记录博客文章阅读量:文章每被浏览一次,则其阅读量 +1,即所谓的文章页面 PV(Page View)数。虽然简单粗暴,但却高效实用。...增加新字段 为了记录文章的浏览量,需要在文章的数据库表中新增一个用于存储阅读量的字段。...你也许担心如果两个人同时访问一篇文章,更改数据库中的阅读量字段的值时会不会冲突?...一旦该视图函数被调用,说明文章被访问了一次,因此我们修改 detail 视图函数,让被访问的文章在视图函数被调用时阅读量 +1。

54710

TiDB Binlog 源码阅读系列文章(一)序

阅读 TiDB Binlog 源码之前,可以先从阅读 《TiDB Binlog 架构演进与实现原理》 入手。...内容概要 本篇作为《TiDB Binlog 源码阅读系列文章》的序篇,会简单的给大家讲一下后续会讲哪些部分以及逻辑顺序,方便大家对本系列文章有整体的了解。...小结 本篇文章主要介绍了 TiDB Binlog 源码阅读系列文章的目的和规划。下一篇文章我们会从 TiDB Binlog 的整体架构切入,然后分别讲解各个组件和关键设计点。...内容概要 本篇作为《TiDB Binlog 源码阅读系列文章》的序篇,会简单的给大家讲一下后续会讲哪些部分以及逻辑顺序,方便大家对本系列文章有整体的了解。...小结 本篇文章主要介绍了 TiDB Binlog 源码阅读系列文章的目的和规划。下一篇文章我们会从 TiDB Binlog 的整体架构切入,然后分别讲解各个组件和关键设计点。

58730

如何使叙事型落地页传达清晰有效

叙事化是描述一件事物的语言结构逻辑的行为,信息结构是一个网站所有数据元的内容逻辑。本文适合常规的说服性落地页设计的交互设计入门以及内容策划的信息组织入门。...如何高效并有效地在解决产品增长诉求的基础上,更好为我们的用户提供清晰有效的产品服务信息传达以及恰当的阅读体验呢?我希望本文可以提供另一种思路的可能性。...我认为,叙事化是对信息进行分析,加工,处理,通过不同载体和空间,以易理解的方式并递进引导用户的方式完成认知共识的一种方式。...然后,设计师可以通过叙事化方式,即以目标用户容易理解的方式传递信息。...接收文档后我会进行反复阅读理解,初步判断所需传达信息的广度范围以及深度范围,并且尝试梳理内容内容之间关系。然后,我会与业务方初步面对面或远程电话沟通后,获得业务的传达目标以及传达核心信息要素。

43721

TiDB 源码阅读系列文章(四)Insert 语句概览

本文为 TiDB 源码阅读系列文章的第四篇。上一篇文章简单介绍了整体流程,无论什么语句,大体上是在这个框架下运行,DDL 语句也不例外。...本篇文章会以 Insert 语句为例进行讲解,帮助读者理解前一篇文章,下一篇文章会介绍 Select 语句的执行流程。...这两条是最常用的读、写语句,其他的语句相信读者能触类旁通,可以自行研究或者是等待后续的文章。...另外本文会重点介绍每个语句在执行框架下面的具体执行逻辑,请读者阅读前先了解 Insert 语句的行为。 表结构 这里先给一个表结构,下面介绍的 SQL 语句都是在这个表上的操作。...要理解这段代码,需要了解一下 TiDB 是如何将 SQL 的数据映射为 Key-Value,可以先读一下我们之前写的一些文章,比如这一篇。

1.1K50

TiDB 源码阅读系列文章(十六)INSERT 语句详解

在之前的一篇文章 《TiDB 源码阅读系列文章(四)INSERT 语句概览》 中,我们已经介绍了 INSERT 语句的大体流程。为什么需要为 INSERT 单独再写一篇?...Basic INSERT 语句 几种 INSERT 语句的最大不同在于执行层面,这里接着 《TiDB 源码阅读系列文章(四)INSERT 语句概览》 来讲语句执行过程。...不记得前面内容的同学可以返回去看原文章。 INSERT 的执行逻辑在 executor/insert.go 中。其实前面讲的前四种 INSERT 的执行逻辑都在这个文件里。...batchChecker 中,首先,拿待插入的数据,将其中可能冲突的唯一约束在 getKeysNeedCheck 中构造成 Key(TiDB 是通过构造唯一的 Key 来实现唯一约束的,详见 《三篇文章了解...INSERT 语句自身都可以连接一个 SELECT 语句作为待插入数据的输入,因此,其又受到了来自 planner 的影响(关于 planner 的部分详见相关的源码阅读文章: (七)基于规则的优化 和

1.3K30

TiDB 源码阅读系列文章(十五)Sort Merge Join

什么是 Sort Merge Join 在开始阅读源码之前, 我们来看看什么是 Sort Merge Join (SMJ),定义可以看 wikipedia。...readerIterator.nextSelectedRow 中完成, 这里会通过 ri.reader.NextChunk 每次读取一个 Chunk 的数据,关于 Chunk 的相关内容,可以查看我们之前的文章...TiDB 源码阅读系列文章(十)Chunk 和执行框架简介 。...具体关于 resultGenerator, 可以参考之前的文章:TiDB 源码阅读系列文章(九)Hash Join rowsWithSameKey 通过 nextSelectedRow 不断读取下一行数据...关于 memory.Tracker 我们不在此展开,可以留意我们后续的源码分析文章。 后续我们还会在 Merge-Join 方面做一些优化, 比如我们可以做多路归并,中间结果存外存等等,敬请期待。

83000
领券