我想创建一个稀疏文件,使得在我向它们写入数据之前,全零块不会占用实际的磁盘空间.可能吗?
在我的webapplication(C#,.Net 3.5)中,由一个核心类库(包含业务逻辑,数据层和几个实用程序类),一个Windows服务项目,一个Web服务项目和网站项目组成,我有一个所有其他项目使用的核心库中的几个静态类.这些类(例如Log类)需要一些初始化(它们具有Initialize方法)才能将它们设置为使用.例如,Log类的Initialize方法有一个目录路径参数,它告诉Log,将日志文件保存到的位置.另外,我正在考虑加载日志的"设置"静态构造函数中的配置文件中的类.缺点是,我需要在生产代码中进行单元测试的不同设置.
有没有更好的方法来设计它?这种方法的缺点是,静态类的所有使用者都将尝试调用Initialize.这不是一个真正的问题,因为一旦初始化,该方法将立即返回而不是再次执行Initialize代码,但设计对我来说似乎有点奇怪.
我希望我的英语足以解释我所追求的目标.不要犹豫,问问题是否不够明确.
我正在建立一个简单的SQLite数据库来保存传感器读数.表格看起来像这样:
sensors
- id (pk)
- name
- description
- units
sensor_readings
- id (pk)
- sensor_id (fk to sensors)
- value (actual sensor value stored here)
- time (date/time the sensor sample was taken)
Run Code Online (Sandbox Code Playgroud)
该应用程序将从大约30个不同的传感器每月捕获大约100,000个传感器读数,并且我希望尽可能长时间地将所有传感器读数保留在DB中.
大多数查询都在表单中
SELECT * FROM sensor_readings WHERE sensor_id = x AND time > y AND time < z
Run Code Online (Sandbox Code Playgroud)
此查询通常会返回大约100-1000个结果.
所以问题是,在上述查询变得太耗时之前,sensor_readings表有多大(在标准PC上超过几秒钟).
我知道一个修复可能是为每个传感器创建一个单独的sensor_readings表,但如果没有必要,我想避免这种情况.有没有其他方法来优化此数据库架构?
我不得不使用包含数十万个文件的目录,进行文本匹配,替换等等.如果我走标准路线,比如说
grep foo *
Run Code Online (Sandbox Code Playgroud)
我收到太多文件错误消息,所以我最终做了
for i in *; do grep foo $i; done
Run Code Online (Sandbox Code Playgroud)
要么
find ../path/ | xargs -I{} grep foo "{}"
Run Code Online (Sandbox Code Playgroud)
但这些并不是最优的(为每个文件创建一个新的grep进程).
这看起来更像是程序可以接收的参数大小的限制,因为for循环中的*可以正常工作.但是,无论如何,处理这个问题的正确方法是什么?
PS:不要告诉我做grep -r,我知道,我正在考虑没有递归选项的工具.
我的老板认为VS 2008 IDE窗口管理器(自动隐藏,解决方案资源管理器,属性等的对接)是自切片面包以来最好的东西.我找不到类似于工具箱中的功能的控件.有没有你知道的那样的控件?或者我应该继续自己实施吗?顺便说一下,我们正在使用VS 2008 Express.
我一直在尝试将Eclipse窗口的背景颜色更改为黑色并自定义字体颜色.似乎没有办法做到这一点,至少不是以明显的方式.我使用的是3.3版.
我该怎么做或者是否有任何可能有助于这样做的插件?
客户希望我对VB 6.0应用程序进行一些维护工作(迁移到.NET也在管道中),但他没有开发工具,因为他只收到源代码并运行原始程序员的应用程序,谁不再可用.
据我所知,微软不销售Visual Studio 6.0.如何在没有VB6的情况下修改和编译VB6应用程序的源代码?或者如果微软不销售Visual Studio 6.0,我将在哪里获得?
即使我将所有内容迁移到.NET而不发布新的VB6版本,我希望能够打开项目并看到它编译并运行以更好地理解它.
我有VS 2005和VB 2008.但我明白,如果我尝试打开项目,代码将转换为VB.NET,这不是我想要更好地了解项目之前的想法.
我在数据库中有一个表,我正在使用LINQ to SQL检索,作为我的处理的一部分,我想添加到此列表,然后使用新项目更新数据库+我所做的任何更改.
我以为我能做的就是:
var list = (from item in db.Table
select item).ToList();
[do processing where I modify items & add to the list]
list = list.Distinct();
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
发生的变化是修改发生(即SQL更新),但我添加到列表中的任何新项目都没有添加.
显然我做错了,修改和添加到DB实体列表的正确方法是什么,然后提交所有更新和插入?