摘要:
最近所做的多文件数据库是受(C#实现文件数据库)的启发。后来又发现了(LiteDB),看到了单文件数据库和分页、索引、查询语句等的实现方式,大受启发。不过我仍旧认为LiteDB使用起来有些不顺畅,它的代码组织也不敢完全苟同。所以,我重新设计了一个小型的单文件数据库SharpFileDB:
无需配置服务器。
无需SQL。
100%纯C#开发的一个不到50KB的DLL。
支持事务ACID。
写入失败后可恢复(日志模式)。
可存储任意继承了Table且具有[Serializable]特性的类型(相当于关系数据库的Table)。类型数目不限。
可存储System.Drawing.Image等大型对象。
单文件存储,只要你的硬盘空间够大,理论上能支持的最大长度为long.MaxValue = 92233 阅读全文
摘要:
在项目中,我们常常有统计代码行数的需要,但是如果不利用第三方工具的话,面对一个项目(甚至一个工程或解决方案中若干个项目)中成百上千的代码文件,实在有一种力不从心的感觉。
我们期望能够用最简单的方法完成这些重要却细微的需求。下面我给大家介绍一种无需借助第三方工具,无需复杂操作,无需人工统计计算的方法解决这个问题。 阅读全文
摘要:
我需要找一个能够在同一文件中序列化多个对象,并且能随机进行反序列化的工具。随机反序列化的意思是,假设我在文件里依次序列化存储了a、b、c三种不同类型的对象,那么我可以通过Stream.Seek(,);或者Stream.Position来仅仅反序列化b。当然,这可能需要一些其它的数据结构辅助我找到Stream.Seek(,);或者Stream.Position所需的参数。
我找到了BinaryFormatter、SoapFormatter、XmlSerializer和BinaryReader这几个类型,都是.NET Framework内置的。但是它们并非都能胜任但文件数据库的序列化工具。 阅读全文
摘要:
我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader。这时在vs里直接编辑shader就会显得很方便。但是vs默认是不支持GLSL的语法着色的,我们只好自己动手创造。最简单的实现自定义语法着色的方法就是创建一个VSIX插件包,我们只需要安装Visual Studio SDK,使用内置的模版就可以构建一个插件项目。 阅读全文
摘要:
我决定做一个以支持小型应用(万人级别)为目标的数据库。既然是小型的数据库,那么最好不要依赖其它驱动、工具包,免得拖泥带水难以实施。完全用C#编写成DLL,易学易用。支持CRUD(增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete))。不使用SQL,客观原因我不擅长SQL,主观原因我不喜欢SQL,情景原因没有必要。直接用文本文件或二进制文件存储数据。简单来说,就是纯C#、小型、无SQL。此类库就命名为SharpFileDB。 阅读全文