由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 说一个C的小窍门吧
相关主题
ask a question about compile shared library using libtool问个基本 C array 问题
求助!这段code如何使用?What is the difference between class and struct?
一道面试怪题C++. (转载)forward declaration
OpenGL能否方便实现自定义图形的移动,擦除和分层显示?C++ memcpy declaration use restrict keyword?
Any better way to declare a function?visual C++链接不同的第三方library的问题
class D:public B;Google got it wrong. The open-office trend is destroying the workplace.
C++ Template Question交互程序是怎么自动测试的?
recursive template?Re: javadoc for C++?
相关话题的讨论汇总
话题: flash话题: br话题: record话题: lib话题: 写入
进入Programming版参与讨论
1 (共1页)
T********i
发帖数: 2416
1
比如,我的设备,拿Sprinkler为例子。
整个MCU片内flash只有 512K。我自己自制的bootloader 64K。
固件能够无线升级。因此flash分两个区。每个区192K。升级的时候慢慢写入另外一个
区。全写完了,public key signature验证通过,最后擦除写入flag,reboot,进入新
固件。
如果这时候正在浇水怎么办?比如某个zone正在浇水。还剩10分钟。固件reboot以后,
需要恢复,继续浇水10分钟。事实上,reboot几毫秒,用户根本感觉不到任何障碍。
因此,某些数据和状态,也需要存储在flash里面。这个就很有趣了。我预留的flash数
据区不到64KB。flash每页2KB。只能写入和擦除。不能随机写入。擦除/写入是有寿命
的。还要考虑wear leveling均匀使用提高寿命。
我的代码里面:
写入一个状态:基本就是声明/写入,2行
// Declare variable
libre_sprinkler_saved_state state;
// Init/set state variable
FLASH_LIB_WRITE_SINGLE_RECORD(libre_sprinkler_saved_state, &state);
读取一个状态:1行 const libre_sprinkler_saved_state *
FLASH_LIB_GET_SINGLE_RECORD(libre_sprinkler_saved_state);
擦除一个状态:1行
FLASH_LIB_REMOVE_SINGLE_RECORD(libre_sprinkler_saved_state);
把flash当数据库用。除了单个record,还支持list, foreach etc
这些,都是开源你无论如何找不到的。我自己写的。小窍门而已。。。
而且,这是 C语法。C++语法是做不到的。也就是说用的是macro,不是template!
m******r
发帖数: 1033
2
请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?
现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,删除,
容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不是good
pratice ?
什么牌子比较好? 我用的是sandisk
T********i
发帖数: 2416
3
这种读出没寿命。
铁电存储器读写都有寿命。但是是10亿次以上那种级别的。这种flash只有几万次。
铁电的缺点就是贵。一般用在汽车的设备之类。我们的控温器有个8KB的铁电。
你说的那种是flash card。SD或者micro SD。内部带控制器做write rotation之类。我
这个是MCU上的raw flash。还是不一样。
写满了换,是good practice。但是放着也是有shelf life的。我记得好像10年。其它
的不知道了。我又不是卖这玩意儿的。
基本上,媒体密度越高,寿命越短。刻乌龟壳上石头上成千上万年。纸上几百年。
将来人类把自己炸回石器时代。运气就看还剩多少石头和纸媒体了。


: 请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?

: 现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,
删除,

: 容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不
是good

: pratice ?

: 什么牌子比较好? 我用的是sandisk



【在 m******r 的大作中提到】
: 请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?
: 现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,删除,
: 容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不是good
: pratice ?
: 什么牌子比较好? 我用的是sandisk

g****t
发帖数: 31659
4
数据库就算不处理并发,也要处理read/write冲突。例如防止对一个数组的写操作未完
成时,另一个进程进行了读操作。
这个部分你用flash怎么处理的?
或者因为启动模块是单机单进程单线程,所以不会出现读写冲突?


: 这种读出没寿命。

: 铁电存储器读写都有寿命。但是是10亿次以上那种级别的。这种flash只
有几万
次。

: 铁电的缺点就是贵。一般用在汽车的设备之类。我们的控温器有个8KB的
铁电。

: 你说的那种是flash card。SD或者micro SD。内部带控制器做write
rotation之
类。我

: 这个是MCU上的raw flash。还是不一样。

: 写满了换,是good practice。但是放着也是有shelf life的。我记得好
像10年
。其它

: 的不知道了。我又不是卖这玩意儿的。

: 基本上,媒体密度越高,寿命越短。刻乌龟壳上石头上成千上万年。纸上
几百年。

: 将来人类把自己炸回石器时代。运气就看还剩多少石头和纸媒体了。

: 删除,



【在 T********i 的大作中提到】
: 这种读出没寿命。
: 铁电存储器读写都有寿命。但是是10亿次以上那种级别的。这种flash只有几万次。
: 铁电的缺点就是贵。一般用在汽车的设备之类。我们的控温器有个8KB的铁电。
: 你说的那种是flash card。SD或者micro SD。内部带控制器做write rotation之类。我
: 这个是MCU上的raw flash。还是不一样。
: 写满了换,是good practice。但是放着也是有shelf life的。我记得好像10年。其它
: 的不知道了。我又不是卖这玩意儿的。
: 基本上,媒体密度越高,寿命越短。刻乌龟壳上石头上成千上万年。纸上几百年。
: 将来人类把自己炸回石器时代。运气就看还剩多少石头和纸媒体了。
:

g****t
发帖数: 31659
5
有专门的industrial SD card


: 请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?

: 现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,
删除,

: 容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不
是good

: pratice ?

: 什么牌子比较好? 我用的是sandisk



【在 m******r 的大作中提到】
: 请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?
: 现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,删除,
: 容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不是good
: pratice ?
: 什么牌子比较好? 我用的是sandisk

T********i
发帖数: 2416
6
连OS都是几千行源代码编译进去的,这些当然不是事儿了。
其实我这是一个flash文件系统。而且是数据库文件系统。


: 数据库就算不处理并发,也要处理read/write冲突。例如防止对一个数组的写操
作未完

: 成时,另一个进程进行了读操作。

: 这个部分你用flash怎么处理的?

: 或者因为启动模块是单机单进程单线程,所以不会出现读写冲突?

:

【在 g****t 的大作中提到】
: 有专门的industrial SD card
:
:
: 请教老师傅, 这种闪存写入有寿命,这个我知道。 读出有没有寿命 ?
:
: 现在很多人包括我买个flash插手机里, 存一些照片 。 有人说如果经常读写,
: 删除,
:
: 容易坏。 我想如果我只往里写数据, 不删除, 写满了以后再买个flash, 是不
: 是good
:
: pratice ?
:
: 什么牌子比较好? 我用的是sandisk
:

m******r
发帖数: 1033
7
多谢。 还是老师傅说的有理。
A**********l
发帖数: 49
8
玩儿的真开心……
你这东西某些厂家提供的SDK就有类似的功能,Flash存状态和关键参数本就是routine
的东西,除非你自己在Macro里面做了什么额外好玩的东西,露点肉出来看看吧
g****t
发帖数: 31659
9
并不一定都有。MCU的tool chain很发散。另外从技术上来说,无线网络update fw系
统不容易的。有不少存量知识和技术细节。
我以前参与过某手机公司用无线网络,update 我当时公司生产的芯片里
的系统,这样的项目。


: 玩儿的真开心……

: 你这东西某些厂家提供的SDK就有类似的功能,Flash存状态和关键参数本
就是
routine

: 的东西,除非你自己在Macro里面做了什么额外好玩的东西,露点肉出来
看看吧



【在 A**********l 的大作中提到】
: 玩儿的真开心……
: 你这东西某些厂家提供的SDK就有类似的功能,Flash存状态和关键参数本就是routine
: 的东西,除非你自己在Macro里面做了什么额外好玩的东西,露点肉出来看看吧

T********i
发帖数: 2416
10
基本大厂的库都必须有。没有的话让用户怎么用呢?
首先我所有行业都是外行进去胡搞一把。大厂的库也没见识过几个,也就2-3家吧。
其次我反正也不打算用大厂的库。都是从FreeRTOS开始改,每行代码都自己写一遍。
再次,这就是一个小窍门。我愿意自己发明一些自己的语法语义之类的。俺赶脚我这个
唯一的不一样就是直接操作in-place的指针。读写都直接返回flash的物理地址。不需
要额外缓存。
还有就是简单,自己declare任意struct,都能当 single或者list record存储到flash
数据库里面。list record内置row_id。
比如declare代码
DECLARE_FLASH_DB()
DECLARE_FLASH_RECORD_DB(struct1)
DECLARE_FLASH_RECORD_DB(struct2)
DECLARE_FLASH_LIST_RECORD_DB(struct3)
DECLARE_FLASH_LIST_RECORD_DB(struct4)
END_FLASH_DB()
读写代码:
FLASH_LIB_GET_SINGLE_RECORD
FLASH_LIB_WRITE_SINGLE_RECORD
FLASH_LIB_REMOVE_SINGLE_RECORD
FLASH_LIB_ADD_LIST_RECORD
FLASH_LIB_SET_LIST_RECORD
FLASH_LIB_REPLACE_LIST_RECORD
FLASH_LIB_REMOVE_LIST_RECORD
FLASH_LIB_FIND_LIST
FLASH_LIB_FOR_EACH_LIST
我个人认为,这个世界到处都有创新的空间。
一个系统的设计,能够看出设计者的价值观,人生观,和方法论!

routine

【在 A**********l 的大作中提到】
: 玩儿的真开心……
: 你这东西某些厂家提供的SDK就有类似的功能,Flash存状态和关键参数本就是routine
: 的东西,除非你自己在Macro里面做了什么额外好玩的东西,露点肉出来看看吧

相关主题
C++ Template QuestionWhat is the difference between class and struct?
recursive template?forward declaration
问个基本 C array 问题C++ memcpy declaration use restrict keyword?
进入Programming版参与讨论
T********i
发帖数: 2416
11
我非常喜欢这种方式。简直就是用类型来访问数据。
比如上面那个struct1,随意定义:
typedef struct1 {
....
....
}
然后declare到数据库
DECLARE_FLASH_RECORD_DB(struct1)
然后
struct1 *p = FLASH_LIB_GET_SINGLE_RECORD(struct1);
就直接返回flash上面的存储地址了。当然,如果从来没写过,或者已经删除了,返回
NULL。
写入也很省事:
struct1 s;
s.a = XXXX;
s.b = XXXX;
写入:
FLASH_LIB_WRITE_SINGLE_RECORD(struct1, &s);
p***o
发帖数: 1252
12
有点意思,别人是key-value你这儿是type-value,LIST最大元素个数你怎么搞?

【在 T********i 的大作中提到】
: 我非常喜欢这种方式。简直就是用类型来访问数据。
: 比如上面那个struct1,随意定义:
: typedef struct1 {
: ....
: ....
: }
: 然后declare到数据库
: DECLARE_FLASH_RECORD_DB(struct1)
: 然后
: struct1 *p = FLASH_LIB_GET_SINGLE_RECORD(struct1);

T********i
发帖数: 2416
13
还是key-value,反正规矩都是我来定。
LIST最大是2048,row_id可复用,可强制指定。
其实,我的use case都是需要强制指定list row_id的。基本就是replace record at
index。

【在 p***o 的大作中提到】
: 有点意思,别人是key-value你这儿是type-value,LIST最大元素个数你怎么搞?
T********i
发帖数: 2416
14
我认为我的wireless stack异常强大,其实和这个不扯蛋的小窍门有很大关系的!
g****t
发帖数: 31659
15
你的find用什么算法?自己写b-tree之类的东西吗?


: 我认为我的wireless stack异常强大,其实和这个不扯蛋的小窍门有很大关系的!



【在 T********i 的大作中提到】
: 我认为我的wireless stack异常强大,其实和这个不扯蛋的小窍门有很大关系的!
T********i
发帖数: 2416
16
只有几十K flash。RAM也就10-20K。
谁上btree啊。
从头搜到尾,worst case都不到1ms。


: 你的find用什么算法?自己写b-tree之类的东西吗?



【在 g****t 的大作中提到】
: 你的find用什么算法?自己写b-tree之类的东西吗?
:
:
: 我认为我的wireless stack异常强大,其实和这个不扯蛋的小窍门有很大关系的!
:

g****t
发帖数: 31659
17
MicroPython好像有b tree


: 只有几十K flash。RAM也就10-20K。

: 谁上btree啊。

: 从头搜到尾,worst case都不到1ms。



【在 T********i 的大作中提到】
: 只有几十K flash。RAM也就10-20K。
: 谁上btree啊。
: 从头搜到尾,worst case都不到1ms。
:
:
: 你的find用什么算法?自己写b-tree之类的东西吗?
:

T********i
发帖数: 2416
18
我也有btree。不过不是干这个用的而已。


: MicroPython好像有b tree



【在 g****t 的大作中提到】
: MicroPython好像有b tree
:
:
: 只有几十K flash。RAM也就10-20K。
:
: 谁上btree啊。
:
: 从头搜到尾,worst case都不到1ms。
:

g****t
发帖数: 31659
19
我还是不知道你怎么解决读写冲突什么的。例如一个线程读list,一个写list。没写完
,读的那边读走了,怎么办。这是数据库核心问题之一。自己搞很麻烦。


: 我也有btree。不过不是干这个用的而已。



【在 T********i 的大作中提到】
: 我也有btree。不过不是干这个用的而已。
:
:
: MicroPython好像有b tree
:

T********i
发帖数: 2416
20
我的MCU也是有OS和读写锁的。这些都不是问题。


: 我还是不知道你怎么解决读写冲突什么的。例如一个线程读list,一个写list。
没写完

: ,读的那边读走了,怎么办。这是数据库核心问题之一。自己搞很麻烦。

:

【在 g****t 的大作中提到】
: 我还是不知道你怎么解决读写冲突什么的。例如一个线程读list,一个写list。没写完
: ,读的那边读走了,怎么办。这是数据库核心问题之一。自己搞很麻烦。
:
:
: 我也有btree。不过不是干这个用的而已。
:

相关主题
visual C++链接不同的第三方library的问题Re: javadoc for C++?
Google got it wrong. The open-office trend is destroying the workplace.c++ linking problem
交互程序是怎么自动测试的?Questions about MAKEFILE
进入Programming版参与讨论
w********m
发帖数: 1137
21
这就是微缩版的document store
实现了get和set
T********i
发帖数: 2416
22
这个主要是针对MCU片内flash的。
Flash不是你想怎么写就怎么写的。只支持擦除和写入。
另外,flash只有几十K。RAM 10几K。要存储管理几十种data type。我每个record的
overhead只有4 bytes。
语法要简单直观,just works。实现要能够在螺丝壳里做道场。


: 这就是微缩版的document store

: 实现了get和set



【在 w********m 的大作中提到】
: 这就是微缩版的document store
: 实现了get和set

T********i
发帖数: 2416
23
其实,这个算法里面有flash GC的。
如果频繁写入删除。算法需要在必要的时候,重新组织数据,释放掉效率低的flash
pages。
写几万行C代码,编译以后也就100多KB。里面几十个小窍门是可以有的。
几十万行代码里面可以有上百个各种窍门了。
T********i
发帖数: 2416
24
一个人干过没干过,是没法说谎的。
好比小菊花。我就可以肯定他扯蛋的那些东西,连入门都没有。在我手下做不过5分钟
的。
当然,我是不会告诉他他都错在哪里了。
g****t
发帖数: 31659
25
没错。不教他。你管他死活呢。让他去练功增长视力。

【在 T********i 的大作中提到】
: 一个人干过没干过,是没法说谎的。
: 好比小菊花。我就可以肯定他扯蛋的那些东西,连入门都没有。在我手下做不过5分钟
: 的。
: 当然,我是不会告诉他他都错在哪里了。

x****u
发帖数: 44466
26
你这种几十万代码yy的,让我老回忆起了小学同学
大脑能几十年保持12岁状态也是好事

【在 T********i 的大作中提到】
: 一个人干过没干过,是没法说谎的。
: 好比小菊花。我就可以肯定他扯蛋的那些东西,连入门都没有。在我手下做不过5分钟
: 的。
: 当然,我是不会告诉他他都错在哪里了。

T********i
发帖数: 2416
27
LOL。几十万行代码没啥可吹的。
几十万行,10多个platform,都是高质量代码,最后越写越少,flat the curve。才值
得偶尔提一下。。。

【在 x****u 的大作中提到】
: 你这种几十万代码yy的,让我老回忆起了小学同学
: 大脑能几十年保持12岁状态也是好事

x****u
发帖数: 44466
28
你猜有没有认为自己代码质量差的小学生

【在 T********i 的大作中提到】
: LOL。几十万行代码没啥可吹的。
: 几十万行,10多个platform,都是高质量代码,最后越写越少,flat the curve。才值
: 得偶尔提一下。。。

T********i
发帖数: 2416
29
先写几十万行。做个复杂系统大项目。才能评价代码差不差?

【在 x****u 的大作中提到】
: 你猜有没有认为自己代码质量差的小学生
n******t
发帖数: 4406
30
這種其實就是用什麼寫什麼的思路。反正和瞎堆的程序員說不到一塊去。
哦,全堆程序員說的不是小菊花,他連全堆這個稱號都不配,因爲丫啥都沒寫過。

【在 T********i 的大作中提到】
: 比如,我的设备,拿Sprinkler为例子。
: 整个MCU片内flash只有 512K。我自己自制的bootloader 64K。
: 固件能够无线升级。因此flash分两个区。每个区192K。升级的时候慢慢写入另外一个
: 区。全写完了,public key signature验证通过,最后擦除写入flag,reboot,进入新
: 固件。
: 如果这时候正在浇水怎么办?比如某个zone正在浇水。还剩10分钟。固件reboot以后,
: 需要恢复,继续浇水10分钟。事实上,reboot几毫秒,用户根本感觉不到任何障碍。
: 因此,某些数据和状态,也需要存储在flash里面。这个就很有趣了。我预留的flash数
: 据区不到64KB。flash每页2KB。只能写入和擦除。不能随机写入。擦除/写入是有寿命
: 的。还要考虑wear leveling均匀使用提高寿命。

相关主题
大家在linux下面用什么C++的IDE呢?求助!这段code如何使用?
新手弱问:怎么让VC记住新添加的库文件?一道面试怪题C++. (转载)
ask a question about compile shared library using libtoolOpenGL能否方便实现自定义图形的移动,擦除和分层显示?
进入Programming版参与讨论
x****u
发帖数: 44466
31
浇个水需要512K。。。
你丫能不能别这么容易被人钓鱼,查查阿波罗用了多少字节就登上了月球

【在 n******t 的大作中提到】
: 這種其實就是用什麼寫什麼的思路。反正和瞎堆的程序員說不到一塊去。
: 哦,全堆程序員說的不是小菊花,他連全堆這個稱號都不配,因爲丫啥都沒寫過。

x****u
发帖数: 44466
32
没错,小朋友看完动画片的第一直觉都这样
几十万嵌入式代码可以吊打土星五号导航计算机了,我看可以去火星
同是老将,你何苦非要钓鱼躲在屏幕后面看热闹

【在 T********i 的大作中提到】
: 先写几十万行。做个复杂系统大项目。才能评价代码差不差?
T********i
发帖数: 2416
33
你已经没有救了。鉴定完毕。

【在 x****u 的大作中提到】
: 浇个水需要512K。。。
: 你丫能不能别这么容易被人钓鱼,查查阿波罗用了多少字节就登上了月球

x****u
发帖数: 44466
34
是阿波罗计划没有救,我只是搬运工。。。

【在 T********i 的大作中提到】
: 你已经没有救了。鉴定完毕。
T********i
发帖数: 2416
35
既然我说过今后不会指出你错在哪里。
我更不会去教你怎么做人了。这个版面这么多人。让大家都看着你丢人好了。。。

【在 x****u 的大作中提到】
: 是阿波罗计划没有救,我只是搬运工。。。
x****u
发帖数: 44466
36
老邢哭死了,今天本站除了机器人也只剩几个老将天天驴唇不对马嘴的相互吹捧了
你是明显完全没接触过嵌入式。随便去个嵌入式论坛,吹size都是典型的找抽行为。嵌
入式环境恨size大的一切东西。。。
比尔盖茨起家的BASIC解释器只有数KB,后来日韩中国的山寨版有32KB,这才是好的嵌
入式程序。

【在 T********i 的大作中提到】
: 既然我说过今后不会指出你错在哪里。
: 我更不会去教你怎么做人了。这个版面这么多人。让大家都看着你丢人好了。。。

T********i
发帖数: 2416
37
我不懂嵌入式,我做的嵌入式是给今后几十亿人用的,你祖宗八代加起来都做不了一个
零头。
你不是还说过我不懂图灵完备么?我图灵完备的专利都拿到手了。。。LOL

【在 x****u 的大作中提到】
: 老邢哭死了,今天本站除了机器人也只剩几个老将天天驴唇不对马嘴的相互吹捧了
: 你是明显完全没接触过嵌入式。随便去个嵌入式论坛,吹size都是典型的找抽行为。嵌
: 入式环境恨size大的一切东西。。。
: 比尔盖茨起家的BASIC解释器只有数KB,后来日韩中国的山寨版有32KB,这才是好的嵌
: 入式程序。

x****u
发帖数: 44466
38
哈哈,赞~~~~

【在 T********i 的大作中提到】
: 我不懂嵌入式,我做的嵌入式是给今后几十亿人用的,你祖宗八代加起来都做不了一个
: 零头。
: 你不是还说过我不懂图灵完备么?我图灵完备的专利都拿到手了。。。LOL

T********i
发帖数: 2416
39
你这种家教的真是奇葩。我在美国就没见过这样的。
不知耻。至贱无敌了!

【在 x****u 的大作中提到】
: 哈哈,赞~~~~
x****u
发帖数: 44466
40
从你骂街娴熟度看,家教令人羡慕啊

【在 T********i 的大作中提到】
: 你这种家教的真是奇葩。我在美国就没见过这样的。
: 不知耻。至贱无敌了!

相关主题
Any better way to declare a function?recursive template?
class D:public B;问个基本 C array 问题
C++ Template QuestionWhat is the difference between class and struct?
进入Programming版参与讨论
T********i
发帖数: 2416
41
我最习惯的是实名当面骂。从来不管丫是谁。
对你这样的蒙面渣滓,只是发感慨。你还不配被我骂。


: 从你骂街娴熟度看,家教令人羡慕啊



【在 x****u 的大作中提到】
: 从你骂街娴熟度看,家教令人羡慕啊
x****u
发帖数: 44466
42
你把时间都花在匿名论坛造谣上了,恐怕没空实名骂人

【在 T********i 的大作中提到】
: 我最习惯的是实名当面骂。从来不管丫是谁。
: 对你这样的蒙面渣滓,只是发感慨。你还不配被我骂。
:
:
: 从你骂街娴熟度看,家教令人羡慕啊
:

w********m
发帖数: 1137
43
对的,这其实是个有意思的话题。
在没有random access只有sequential access的情况下,如何设计一个数据库。
要是我设计的话,可能会搞个乞丐版的LSM tree。
三个function
write() sort一下,直接append到flash里去。flash相当于WAL
read() 就是tail -n1
compact() 写满了,就做merge sorted arrays,把老的log删掉

【在 T********i 的大作中提到】
: 这个主要是针对MCU片内flash的。
: Flash不是你想怎么写就怎么写的。只支持擦除和写入。
: 另外,flash只有几十K。RAM 10几K。要存储管理几十种data type。我每个record的
: overhead只有4 bytes。
: 语法要简单直观,just works。实现要能够在螺丝壳里做道场。
:
:
: 这就是微缩版的document store
:
: 实现了get和set
:

T********i
发帖数: 2416
44
我老一直是实名。你有种就别蒙面。否则别怪没人把你当人。

【在 x****u 的大作中提到】
: 你把时间都花在匿名论坛造谣上了,恐怕没空实名骂人
T********i
发帖数: 2416
45
写sequential。其实也不是,只能把1写成0,不能把0写成1。只有擦除整页才能变成全
1。
读是random。其实这个问题想成tree就偏了。假定data structure有大约10种single,
10种list。要求RAM占用是0。每种structure有integer ID。要求read/write/erase/
iterate。
这种写入非常不频繁。flash写入成本太高。擦除1页70ms。而且有寿命。这种片内的是
2000次。你买的SD卡才1000次。因此绝大多数是读。
大多数用户设备,全寿命周期,flash平均也就写入1-2次。

【在 w********m 的大作中提到】
: 对的,这其实是个有意思的话题。
: 在没有random access只有sequential access的情况下,如何设计一个数据库。
: 要是我设计的话,可能会搞个乞丐版的LSM tree。
: 三个function
: write() sort一下,直接append到flash里去。flash相当于WAL
: read() 就是tail -n1
: compact() 写满了,就做merge sorted arrays,把老的log删掉

n******t
发帖数: 4406
46
傻逼,給你512GB你丫也寫不出來任何能用的東西啊。他用了512K,512byte,512MB,
和你這個廢柴有一毛錢關係嗎?

【在 x****u 的大作中提到】
: 浇个水需要512K。。。
: 你丫能不能别这么容易被人钓鱼,查查阿波罗用了多少字节就登上了月球

n******t
发帖数: 4406
47
這是典型的現在某一類技術人員的思路:
1.不去瞭解硬件的具體特性,而是憑猜測。raw flash並不是sequential access media
,所以這出發點就錯了。
2.不是通過問題來設計相應的算法,而是讓問題來適應自己知道的某個東西。這個use
case,和lsm tree沒有什麼關係。
這樣寫出來的東西,可以各種東西齊全,但是拿出來基本上不能用。
這並不是抓他一個人,只是拿來當個例子而已。

【在 w********m 的大作中提到】
: 对的,这其实是个有意思的话题。
: 在没有random access只有sequential access的情况下,如何设计一个数据库。
: 要是我设计的话,可能会搞个乞丐版的LSM tree。
: 三个function
: write() sort一下,直接append到flash里去。flash相当于WAL
: read() 就是tail -n1
: compact() 写满了,就做merge sorted arrays,把老的log删掉

T********i
发帖数: 2416
48
也可能是误会了。外置flash都是serial的。算法肯定不一样。
这就涉及到index建立在什么地方的问题?
我的remote就带外置1MB flash。存储UI用。

media
use

【在 n******t 的大作中提到】
: 這是典型的現在某一類技術人員的思路:
: 1.不去瞭解硬件的具體特性,而是憑猜測。raw flash並不是sequential access media
: ,所以這出發點就錯了。
: 2.不是通過問題來設計相應的算法,而是讓問題來適應自己知道的某個東西。這個use
: case,和lsm tree沒有什麼關係。
: 這樣寫出來的東西,可以各種東西齊全,但是拿出來基本上不能用。
: 這並不是抓他一個人,只是拿來當個例子而已。

1 (共1页)
进入Programming版参与讨论
相关主题
c++ linking problemAny better way to declare a function?
Questions about MAKEFILEclass D:public B;
大家在linux下面用什么C++的IDE呢?C++ Template Question
新手弱问:怎么让VC记住新添加的库文件?recursive template?
ask a question about compile shared library using libtool问个基本 C array 问题
求助!这段code如何使用?What is the difference between class and struct?
一道面试怪题C++. (转载)forward declaration
OpenGL能否方便实现自定义图形的移动,擦除和分层显示?C++ memcpy declaration use restrict keyword?
相关话题的讨论汇总
话题: flash话题: br话题: record话题: lib话题: 写入