V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  extreme  ›  全部回复第 1 页 / 共 24 页
回复总数  478
1  2  3  4  5  6  7  8  9  10 ... 24  
2021-01-06 17:09:52 +08:00
回复了 zxCoder 创建的主题 数据库 像 InnoDB 这种底层存储结构,在代码层面是如何实现的呢
@carlclone 那为什么事务这里还没删除呢?那一段英文需要翻译成中文给你吗?
2021-01-06 02:11:57 +08:00
回复了 zxCoder 创建的主题 数据库 像 InnoDB 这种底层存储结构,在代码层面是如何实现的呢
@carlclone
https://dev.mysql.com/doc/refman/5.6/en/innodb-purge-configuration.html

InnoDB does not physically remove a row from the database immediately when you delete it with an SQL statement. A row and its index records are only physically removed when InnoDB discards the undo log record written for the deletion. This removal operation, which only occurs after the row is no longer required for multi-version concurrency control (MVCC) or rollback, is called a purge.

需要翻译成中文给你吗
2021-01-05 23:44:38 +08:00
回复了 zxCoder 创建的主题 数据库 像 InnoDB 这种底层存储结构,在代码层面是如何实现的呢
@zxCoder 具体如何读写其内存中的数据,还得看那种类型的具体实现。
例如说 NULL 值其实 InnoDB 是通过 bitmap 储存的,就通过指针读取那一行用来记录 NULL 列的 bitmap,通过位运算进行 NULL 值的读写
反正,都是通过指针,在内存中对数据进行读写,也就是你所说的“在字节数组里操作”,涉及的只有指针类型的转换,一般不会发生值的转换
2021-01-05 23:28:28 +08:00
回复了 zxCoder 创建的主题 数据库 像 InnoDB 这种底层存储结构,在代码层面是如何实现的呢
对的,把数据从硬盘读取到内存当中,有一个指针存了那份内存的起始地址。
那个指针在 C 语言里面一般是个“uint8 *”类型的指针,可以当作一个 uint8 数组来操作,也就是你 Java 里面的“字节数组”。
后面要读写那份在内存里面的数据,就通过 uint8 的指针去操作。

至于你说的往后读 4 个字节,转成一个整数,其实转换的只是类型,直接用一个 int32 类型的指针指向那个内存地址,就可以读出一个整数了,例如 bytes[x]是你说的一个 32 位的整数,假设它是无符号的,直接*(unit32 *) (bytes + x)就能把这个 uint32 读取出来,转的只是指针的类型,而不是值:
uint8_t *bytes = ...; // 指向“页”所在的内存地址
uint32_t x = ...; // 你那个 32 位整数的在这个页里面的偏移量
uint32_t *uint32_pointer = (uint32_t *) (bytes + x);
printf("%d\n", *uint32_pointer); // 输出那个整数的值

*uint32_pointer = 0x0A0B0C0D; // 更改整数的值
printf("%x, %x, %x, %x\n", bytes[x + 0], bytes[x + 1], bytes[x + 2], bytes[x + 3]); // 输出 d, c, b, a
2021-01-05 19:29:31 +08:00
回复了 zxCoder 创建的主题 数据库 像 InnoDB 这种底层存储结构,在代码层面是如何实现的呢
如何实现,看你需求
例如你有 32 个 bool 值
假如你想省储存空间,当然可以用 bitmap,例如你用一个 int32 就能储存这 32 个 bool 值
当然你也可以直接选择使用 32 个 int8 去表示,操作起来方便,但是耗空间

如果要你储存十亿个 IPv4 地址,你打算咋存呢?
直接存 int32 你需要接近 4GB 储存空间,用 bitmap 只需要 120MB
2021-01-02 23:46:54 +08:00
回复了 AAASUKA 创建的主题 Java Spring 里 Service 层分成接口+Impl 的好处是什么?
面向接口而不是具体实现进行开发
一方面解耦
另一方面,我觉得也是最重要的一方面,就是方便单元测试
2020-12-26 03:10:42 +08:00
回复了 MasterCai 创建的主题 Linux ubuntu 18.04 使用魔改 xrdp 后无法进入桌面
是不是帮你把 gdm 停用了,systemctl restart gdm3 试试
另外,Cygwin/X 的方案其实也不错的
2020-02-26 10:37:45 +08:00
回复了 shenyuzhi 创建的主题 DNS 为什么有的域名的 ns 记录,可以是自己的子域名?
qq.comns1.qq.com 查。
你大概想问查 ns1.qq.com 怎么查?问 ns1.qq.com ?肯定不是,ns1.qq.com 的记录在根服务器。
2019-11-22 09:00:57 +08:00
回复了 CSGO 创建的主题 问与答 二级路由器使用 AP 模式与普通模式哪个更耗一级路由器资源?
请问,普通模式是什么模式……
@ganwen 用了几天,发现 kcp-go 带的 fec 好像效果不太好,不确定是我实现的问题还是 kcp-go 的问题,最近在纠结咋解决……
@whywhywhy 汗,这个大概可以通过 hook 实现,不过我觉得如果你想简单点,可以考虑 rip 或者 ospf。
咋提交不了评论:

CSRF 验证失败
无法验证 CSRF (请求来源验证),请稍后重试或联系管理员。
东莞电信:
![]( http://ww1.sinaimg.cn/large/69b07983gy1fz3pbx3540j21hb0gi40c.jpg)

大家不介意的话,顺便帮我看看我的博客加载速度如何吧: https://zhensheng.im
2018-05-23 12:55:25 +08:00
回复了 wsds 创建的主题 Python Python 如何执行纯 shell 脚本
2018-05-18 11:33:52 +08:00
回复了 yj10110 创建的主题 程序员 看来大家对迅雷的 XLServicePlatform 服务有一些误解
浏览器是 Chrome
2018-05-18 11:33:40 +08:00
回复了 yj10110 创建的主题 程序员 看来大家对迅雷的 XLServicePlatform 服务有一些误解
还有就是,即时我在设置里面取消了监视浏览器等的功能,在浏览器上点文件链接,还是会调起迅雷,除非我停掉 XLServicePlatform。
2018-05-18 11:24:08 +08:00
回复了 yj10110 创建的主题 程序员 看来大家对迅雷的 XLServicePlatform 服务有一些误解
有个问题比较好奇:
我把 XLServicePlatform 改成手动,重启后,XLServicePlatform 会变回自动并且已处于运行中,更改服务不是需要管理员权限吗?请问还有哪个组件负责每次系统启动,更改这个服务的状态?
2018-05-03 09:51:27 +08:00
回复了 whatisnew 创建的主题 问与答 如何保证内存里的数据永不丢失?
@xman99 问题是,你调用 write()写到硬盘,难道可以跳过内存?
2018-04-06 17:47:08 +08:00
回复了 extreme 创建的主题 全球工单系统 iOS, Gboard 最新版,这是 feature 抑或是 bug?
1  2  3  4  5  6  7  8  9  10 ... 24  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4254 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 07:25 · PVG 15:25 · LAX 00:25 · JFK 03:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.