问题标签 [vfs]

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.

0 投票
8 回答
1132 浏览

java - 在 jvm 中缓存一个 tar 以获得更快的文件 I/O?

我正在开发一个 Java Web 应用程序,该应用程序使用数千个小文件来构建工件以响应请求。我认为如果我们可以将这些文件映射到内存而不是在整个磁盘上运行以一直查找它们,我们的系统可以看到性能改进。

我听说过 linux 中的 mmap,我对这个概念的基本理解是,当从磁盘读取文件时,文件的内容会缓存在内存中的某个位置,以便更快地进行后续访问。我的想法类似于这个想法,除了我想将整个可 mmap 的文件集读入内存,因为我的 Web 应用程序正在初始化以实现最小的请求时间响应。

我的思路的一个方面是,如果将文件全部打包并以某种方式作为虚拟文件系统安装在 JVM 中,我们可能会更快地将文件放入 jvm 内存。就目前而言,我们当前的实现可能需要几分钟才能遍历源文件集并找出磁盘上的所有内容。这是因为我们实际上是在对超过 300,000 个文件进行文件统计。

我找到了可以从 tar 文件中读取信息的 apache VFS 项目,但是我不确定他们的文档中是否可以指定诸如“另外,将整个 tar 读入内存并将其保存在那里..”之类的内容。

我们在这里谈论的是一个多线程环境,该环境服务于通常将一整套 300,000 多个源文件中的大约 100 个不同文件拼凑在一起以做出一个响应的工件。所以无论虚拟文件系统解决方案是什么,它都需要是线程安全的和高性能的。我们在这里只讨论读取文件,没有写入。

此外,我们正在运行具有 32 GB RAM 的 64 位操作系统,我们的 300,000 个文件占用大约 1.5 到 2.5 GB 的空间。我们肯定可以将 2.5 GB 的文件读入内存比 300K 的几 KB 大小的小文件快得多。

感谢您的输入!

  • 杰森
0 投票
1 回答
122 浏览

c# - 实用/应用应用安全

好吧,这是我的问题。我正在开发一个最终将是多层的游戏引擎。该引擎允许使用 .Net 语言或 Lua(内置脚本引擎)编写游戏。但是为了安全起见,我想阻止人们查看这些文件,当然也阻止他们编辑它们。我的解决方案是制作一个带有加密标头的虚拟文件系统。这样就很难发现游戏数据文件的内容,如果有人这样做了,他们将无法在没有密钥的情况下对其进行编辑,否则将无效。

当前游戏的另一个问题是它连接到 SQL 数据以获取某些数据,这意味着数据库连接字符串和密码存储在应用程序中。

但是,您如何处理将密码存储在 .Net 应用程序中?我知道它们可以被反编译,并且将密钥存储在可读的配置文件中是没有意义的,那么大多数专业人员是如何做到的呢?

0 投票
3 回答
1040 浏览

powershell - Is there a way in Powershell to provide virtual file systems in other file systems?

I know you can write support for custom PSDrives. But those are always a root of a file system. What would be nice if there was a way to allow for VFS start at arbitrary nodes of the file system, such as using Set-Location to enter archive file maybe and use them as if they were folders. (Kinda like Far does this).

Is there any way to achieve this? I know, it would be some work to get it right and working, but at the moment I am more interested whether it would be possible at all.

ETA: What I don't want is a new PSDrive for every archive I enter, so the following isn't actually what I'm after:

but rather

0 投票
6 回答
2347 浏览

sql-server - 将 SQL Server 数据库对象公开为文件系统中的文件

有不止一个文件系统

大多数版本控制工具在本地磁盘文件系统上运行。

大多数关系数据库系统的数据库对象确实存在于文件系统中,因为存在标识对象的文本名称,并且可以检索或至少使用该名称生成创建脚本。

但它不是本地磁盘文件系统,因此对于严格在本地磁盘文件系统上运行的 CVS 或 SVN 等工具来说,它们是不可见的。

为了将 SVN 应用于数据库对象,必须将它们复制到本地磁盘文件系统中,并且必须将本地磁盘文件系统的更改复制到数据库中。

不同的使用方式

与每个开发人员维护一个私有工作副本的源代码不同,开发人员倾向于在网络某处的服务器上的共享数据库上工作。虽然 Visual Studio 为数据库的按需安装项目本地副本提供直接支持,但开发人员已避开此功能,因为没有方便且可靠的方法来合并更改。

但是,一旦数据库结构的更改由 CVS 或 SVN 等复制合并版本控制系统管理,传播和合并将大部分是自动的(条冲突),不再有任何理由共享数据库。

排除 SCC 作为选项

Microsoft SQL Management Studio 支持任何实现 SCC 规范的版本控制。微软只列出了 VSS (blech),但谷歌显示了过多的选项。然而,SCC 完全是关于锁定 - 双 blech。

在文件系统之间复制

整个问题现在转移到文件系统之间的复制之一。CodePlex 包含 VS2005/SQL2005 的实现,但它不适用于 VS2008/SQL2008。

在这一点上,我认为“我应该如何解决这个问题”的基本问题已经得到了令人满意的解决,尽管我不确定如何奖励积分。

感谢所有相关人员的意见。

确实会出现一些具体的问题,主要与如何编写各种类型的模式对象有关。

  • 如何按依赖顺序 提取create和脚本alter
    • 桌子
    • 看法
    • 存储过程
    • 功能
    • 扳机
    • 指数
    • 外键
  • 如何按依赖顺序提取表填充脚本
  • 如何有效地检测模式的更改(在没有触发器的情况下,sys.objects将需要轮询;这最好快速且便宜)

检测变化

我注意到可以使用策略将操作绑定到模式中的更改。仍然存在依赖排序和如何编写表创建语句脚本的问题

0 投票
3 回答
11548 浏览

c - statvfs() 和 statfs() 系统调用的区别?

为什么statfs()andstatvfs()调用在它们如此相似时都存在?

在什么情况下我会更喜欢其中一种?

0 投票
1 回答
1164 浏览

java - Ideas for implementing a VFS

I have multimedia files and its metadata stored in a RDBMS (actually, the actual media files are stored in the FS, but let's not dwell on that).

I would like to present a filesystem view of this information, so that users can work using Windows Explorer and similar stuff on the database. I intend this access to be read-only, which I believe will simplify things greatly.

Basically, what I want to achieve is:

  • Have different views using different metadata criteria (i.e. have /by_author/{artist}/{record}/{audiofiles} and /by_record/{record}/{audiofiles}, for instance).
  • Have transparent reencoding (possibly cached) of media files (i.e. /wav/{wavfile}, /mp3/192/{mp3file), /mp3/320/{mp3file}, etc.)
  • Transparent generation of metadata in different formats (say, Excel, XML in different schemas, etc.)

I'm doing this in Java, btw.

My problems here are two-sided:

1)

What is a good way to implement the "model"? I've dabbled with some Repository, Asset, FileAsset, ContainerAsset interfaces and implementations, but they don't end up feeling quite right.

I'm interested in being able to delegate different parts of the filesystem to separate code (i.e. /{artist}/{record} and /{record} parts of the FS are implemented with different code and they both delegate to the same code to create the {record}/xxx stuff).

2)

What's the best alternative to "expose" this model? As I see, there are some alternatives:

  • Fuse for Java and Dokan for Java. I would need to implement two different wrappers, so it's a bit more work...
  • Use Alfresco's SMB implementation and just expose the VFS as a Samba share
  • Use Milton (a WebDAV implementation for servlet containers) and either use OS'es builtin WebDAV support or use something like a Fuse DAV FS to re-expose it as a FS

Of those, Fuse/Dokan seem the most work. Alfresco looks very nice but very complicated to get it working. Milton seems simpler, and WebDAV's semantics might even work better... but I'm not entirely sure.

Thoughts, ideas?

Alex

edit: The project is semi-abandonded now (meaning, it would be cool to do it, but no time for it right now). I think I'd write my VFS as an extension to commons-vfs and then adapt commons-vfs to Milton, Dokan, Fuse, etc.

0 投票
3 回答
2375 浏览

linux - Implementing symlinks in a virtual file system

I'm working on a virtual file system which isn't disk based, kind of like /proc. Now I want to create a symlink within it to a target on a ext3 file system. I haven't found any standard documentation on ways to achieve this. What I've guessed so far is that I have to write a function to put in for symlink in struct inode_operations. But frankly I'm at a loss even with the function parameters.

If it matters, I started off with this tutorial on LWN: http://lwn.net/Articles/13325/

EDIT: I'm working with libfs, not FUSE at the moment

0 投票
1 回答
267 浏览

coldfusion - ColdFusion 9 虚拟文件系统和集群

VFS 是否在集群场景中工作?

0 投票
2 回答
11399 浏览

fuse - 什么是虚拟文件系统或用户空间中的文件系统?

我刚刚在用户空间中遇到了一个 VFS 和一个文件系统,比如FUSE

现在,据我了解,它模拟文件系统,以便应用程序可以具有标准的文件系统层次结构。但我不明白,为什么我们需要一个单独的文件系统呢?我们不能只创建一个常规的文件夹结构并放置应用程序将使用的文件吗?

所以,我的问题是:

  1. 什么是 VFS?

  2. 您能否给出一些真实世界的示例,使用 VFS 的用例。

  3. 使用 VFS 有什么好处?

任何基于 Java 的 VFS?

0 投票
1 回答
576 浏览

java - 为什么 DefaultFileMonitor 不断在循环中列出我的 FTP 位置中的文件?

java代码的编辑版本:

我监控了网络流量,似乎当 FTP 位置添加到监控器时,它会将 PORT 和 LIST 命令发送到服务器上的两个文件夹。问题是它一直在这样做(大概直到它用完客户端端口来调用?。

以下是 FTP 网络流量的摘录:

该部分是来自 LIST 命令的响应。请注意,对于相同的文件夹重复这些命令,但端口每次都会更改。当这些位置没有文件时,不会发生这种情况。

是什么导致了这种行为,我该如何改变它,以便只发送一次检索列表?

编辑:我已将问题缩小到 FileObject 上的 getChildren() 方法。

这是我能找到的唯一互联网参考:http: //mail-archives.apache.org/mod_mbox/commons-user/201005.mbox/%3C4c03ed10.0d01df0a.53c3.059c@mx.google.com%3E