问题标签 [storage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
storage - 视频游戏如何有效地存储/检索大量数据?
例如,在辐射 3 中,保存游戏存储游戏中每个对象和 NPC 的状态和位置,并且只占用几 MB。他们是怎么做到的!?!?
然后,在玩游戏的过程中,如何在内存中/从内存中添加/检索这些数据,以便实时显示给玩家?
更新:(我会让你为你的答案工作:P)
根据凯文克劳威尔的回答......所以我想你会有一个适用于对象和 NPC 的渲染距离,你会在给定范围内“选择”对象和 NPC。但是,您将使用什么类型的数据存储来获取这些对象?
换句话说,你会拥有一个包含游戏中每个对象的巨大数组,并不断更新一个较小的列表来保存要渲染的可见对象吗?
另外,根据 Chaos 的回答……如果您最终触摸了游戏中的每个对象,会发生这种情况吗?你的存档游戏会越来越大吗?在辐射 3 的情况下,我很确定没有“阶段”,过去的数据可能会被丢弃。当您离开/返回某个位置时,一切都会保留。那么您认为这个具体案例是如何实现的呢?
c# - Convert.FromBase64String()
Q1 - 如果字符“C”被保存到视图状态中,那么就在呈现页面之前,Asp.Net 将“C”(连同其他数据)序列化为 Base64 字符串。如果在回发时,我发出以下代码:
,然后 FromBase64String() 应该将序列化数据转换回其原始格式。因此,“stringBytes”字段之一应包含十进制值 67(表示 ASCII 字符 C)。但似乎并非如此。任何想法我做错了什么?
Q2 - 由于 String 表示一组 Unicode 字符,我假设在上面的示例中,当“ABCDEF”从视图状态反序列化时,“ABCDEF”字符串中的每个字符都由“stringBytes”数组的两个元素表示?
再见
编辑:
我必须为没有提到我确实在 Page 标记中将 enableViewStateMac 设置为 false 表示歉意,但它仍然不起作用
c# - 将图像保存到数据库
我可以使用下面的代码将图像保存到数据库,将其流式传输到字节数组,但是当它回来时,它已经失去了图像周围的 alpha 混合并显示出块状的蓝色边框。
怎样才能把原图放回去?
passwords - 为小组存储生产密码的最佳实践
这不是一个技术问题。小型组织如何保护必须在几个人之间共享的敏感信息的安全,例如生产服务器的 root 密码?并非所有需要访问权限的人都在同一个位置工作。新密码可以通过电话分发,但是在存储密码时应该为团队成员强制执行哪些规则?
更新:这个问题与正确使用 root 密码无关——这只是一个例子。也许更好的例子是 SSL 密码或任何其他必须在执行管理任务的人之间共享的密码。事实是,需要生成和存储 root 密码等,并且通常需要不止一个人访问,有时这些人在不同的位置工作。问题是关于存储协议的。谢谢。
javascript - 如何在客户端存储持久数据
我需要以编程方式在客户端存储数据,而不必在每次页面加载时从服务器传输数据。我考虑为用户当前会话生成一个包含所需数据的动态 JavaScript 文件,并确保它被缓存,但这看起来真的很混乱,而且我可以想到这种方法有一些缺点。
如何在客户端存储持久数据?
.net - 在 .net 应用程序中存储用户相关信息
为 .NET 应用程序存储用户级信息的首选方式是什么?
我可以使用注册表或配置文件——但有些用户没有足够的权限来保存/加载这些文件。
我听说过有关组装私人存储或类似的东西,这是一种方法吗?
我主要关心的是确保即使具有最低权限的用户也能够访问这个存储位置。
java - 在 Java 中真正强制文件同步/刷新
Java如何真正将写入文件的数据与块设备刷新/同步。
我用 NIO 尝试了这段代码:
我认为 c.force(true) 与 s.getFD().sync() 应该就足够了,因为力状态的文档
强制将此通道文件的任何更新写入包含它的存储设备。如果此通道的文件驻留在本地存储设备上,则当此方法返回时,可以保证自创建此通道或自上次调用此方法以来对文件所做的所有更改都已写入该设备。这对于确保在系统崩溃时不会丢失关键信息很有用。
要同步的文档指出:
强制所有系统缓冲区与底层设备同步。此方法在此 FileDescriptor 的所有修改数据和属性都已写入相关设备后返回。特别是,如果此 FileDescriptor 指的是物理存储介质,例如文件系统中的文件,则在与此 FileDesecriptor 关联的所有内存中修改的缓冲区副本都已写入物理介质之前,同步将不会返回。同步旨在供需要物理存储(例如文件)处于已知状态的代码使用。
这两个调用应该足够了。是吗?我猜他们不是。
背景:我使用 C/Java 做了一个小的性能比较(2 GB,顺序写入),Java 版本的速度是 C 版本的两倍,并且可能比硬件(单个 HD 上 120 MB/s)快。我还尝试使用 Runtime.getRuntime().exec("sync") 执行命令行工具同步,但这并没有改变行为。
导致 70 MB/s 的 C 代码是(使用低级 API(打开、写入、关闭)并没有太大变化):
没有最后的同步调用;我得到了不切实际的值(超过 1 GB 又名主内存性能)。
为什么C和Java之间有这么大的区别?有两种可能性:我没有在 Java 中正确同步数据,或者 C 代码由于某种原因不是最理想的。
更新:我已经使用“strace -cfT cmd”完成了 strace 运行。结果如下:
C(低级 API):MB/s 67.389782
C(高级 API):MB/s 61.796458
Java(1.6 SUN JRE、java.io API):MB/s 128.6755466197537
Java(1.6 SUN JRE、java.nio API):MB/s 127.45830221558376
时间值似乎只是系统时间,因此毫无意义。
更新 2:我切换到另一台服务器,重新启动,并使用全新格式化的 ext3。现在,Java 和 C 之间只有 4% 的差异。我根本不知道出了什么问题。有时事情很奇怪。在写这个问题之前,我应该用另一个系统尝试测量。对不起。
更新 3:总结答案:
- 使用 c.force(true) 后跟 s.getFD().sync() 用于 Java NIO 和 s.flush() 和 s.getFD().sync() 用于 Java 的流 API。对于 C 中的高级 API,不要忘记同步。fflush 将数据提交给操作系统,但不会将您的数据带到块设备。
- 使用 strace 分析命令完成的系统调用
- 在发布问题之前交叉检查您的结果。
更新 4:请注意以下后续问题。
mysql - 大量写入,但很少读取 - 使用什么 Mysql 存储引擎?
我想知道是否有人对使用哪种存储引擎有建议。程序需要对数据库执行大量写入,但读取很少。
[编辑] 不需要外键。数据很简单,但它需要非常快速地执行写入。
storage - 关系数据库 - 必须有更多的权利?
我真的很喜欢数据库设计和语义管理数据的整个概念以及随之而来的所有逻辑。
然而,我在数据库方面的知识水平(我猜)非常基础——我可以使用 ER 图、连接表、处理多对多、一对多等正确建模数据关系。我有经验当谈到一般的编程时,我认为我的数据库知识就像了解面向对象编程的基础知识,即如何建模汽车类,从车辆类继承,包含车轮对象等等。
现在我想进一步了解关系数据库,以便我可以自信地向雇主说我可以在专业水平上处理该主题。
我现在所能处理的可能是我个人网站后端的电影数据库,如果我是亚马逊并且必须存储数百万部电影,它可能会崩溃。那么有可扩展性的主题吗?我敢肯定,如果您要在专业水平上使用数据库,那么您必须理解并能够在现实生活中应用数据库设计中的一系列非常“标准”的主题/概念。
因此,如果该领域的任何数据库专家能够命名一些领域、概念、案例研究或任何有益于学习以真正擅长数据库的东西,我将非常感激。我确信这里潜伏着大量的科学,我想要它。
提前致谢!
xna - 在 XNA 游戏中我应该把我的自定义关卡文件夹放在哪里?
我对在我的游戏中存储 *.txt 级别文件的位置和方式感到非常困惑。
在我的游戏中,我想要的是一些随游戏安装的“预烘焙”关卡的可用性,以及用户创建自己的 OWN 关卡的能力。
所以我所做的是在 Visual Studio 中的“内容”中创建一个名为级别的新目录,并在其中放置一个“level1.txt”。但是我可以访问级别 *.txt 文件的唯一方法是使用完整路径,并且我不能在我的 Visual Studio 解决方案中包含它们,因为它没有构建:
- 我是否将这些“预烘焙”地图放入可执行文件附近的某个目录中?在编译项目之前,如何在 /bin 目录中创建一个目录?
如何禁止用户删除随游戏安装的“预烘焙”关卡?
(我不再需要这个)- 另外,我在哪里存储用户自定义创建的级别?我认为应该使用 StorageDevice 来完成。但这与第一个问题有关如何在游戏部署后创建目录。
欢迎任何指点!谢谢
编辑:回复:自定义内容处理器。这似乎比我需要的要复杂得多。但是我还需要将我的游戏部署到 xbox360,那么存储设备可以工作吗?