File Name Length, 检查文件路径长度的小工具

之所以当时写这个小工具的目的,就是为了解决一些由某些软件生成的文件路径过长(尤其印象深刻的是npm中的资源嵌套),同时由于Windows系统的限制,这些文件可能无法被另外的一些应用所访问,所以就想通过这个小工具来预先检测出那些超过系统限制的文件,然后再逐步解决问题。 Tips: 在Windows系统中,目录名长度要小于248字符(最多247个字符),包括盘符“D:\”(3个字符),目录和目录之间“\”(1个字符,目录和文件之间的“\”不算长度),再加上文件名必须小于260字符(最多259个字符,目录名短,文件名就可以长,目录名长,文件名就要短,总共两者加在一起要小于260个字符) 这个小工具有以下几个功能: 较高的性能,IO访问一直是软件开发中的一个需要注意的性能瓶颈,为了克服这个问题,在这个小工具中,能够通过自定义线程数来提升访问IO的并发性能(建议可以设置成与CPU的核心数相同,超线程可以*2) 结果窗口会反馈满足条件的文件路径和当前长度 这个小工具的界面如下: 主界面 Submit,选择文件夹路径 点击OK,开始处理

Published
Categorized as Tools

Compactor 批量压缩小工具

在发表这个小工具之前,先说一段小故事。当年在某公司的软件框架组里,每当有新的Release要发布时,总是要将很多Components分别打包压缩上传(每个Component皆是独立的功能组件),实在是烦之又烦,于是乎狠心之下写了这样一个批量打包的工具。它具有以下几个功能: 支持按文件夹分别压缩打包(每个顶层文件夹会被压缩成一个压缩包,当然也可选择只生成一个压缩包) 支持两种压缩格式(7z和zip) 支持三种压缩级别(Normal, Fast 快但压缩比低, High 慢但压缩比高) 下面是操作界面: 假设现在的目录结构如下,我们需要将b、c两个文件夹分别压缩给不同的客户,并且还需要将b、c两个文件夹压缩在一起作个备份。 打开小工具主界面(原计划还要再添加几个其它独立功能,所以主界面上当时就设计成一个大大的打开Compactor的按钮) Compactor的主界面 需要打包的文件夹目录 选择需要打包的子目录 选择打包方式(每个子目录压缩成一个压缩包,还是所有子目录放在一起压缩成一个压缩包) 选择压缩包文件存放目录 选择压缩包文件格式(7z, zip) 选择压缩比 生成压缩包 生成压缩包,弹出处理信息 这是当选择将所有文件夹压缩在一个压缩包中的界面 最后,文件夹中的结果

Published
Categorized as Tools

DoubleColorBall 双色球号码预测小工具

那一年想发财,于是写了这样一个预测下一期双色球中奖号码的小工具。它具有以下几个功能。 每天自动同步最新的双色球中球号码到本地(也可以手工触发) 可以手工添加某一期的中奖号码到历史池,也可修改。 根据历史池中的所有中奖号码记录,计算下一期的可能中奖号码 每天自动将下期可能中奖号码发送到指定的邮箱列表(也可手动触发) 下面是工具界面: 主界面 查询最近号码,可以查看最近100期的中奖号码 手动添加某期中奖号码 修改某期中奖号码 预测可能中奖号码,可以预测5组。 修改邮件接收人:

Published
Categorized as Tools

Sql File Merging Tool 文本文件合并工具

这个工具是很久之前为做Sql Scripts的Daily Mirgration写的,记得当时Team Members经常将提交到SVN中的SQL Scripts使用好几种不同的编码方式进行存储(虽然再三叮嘱过),但仍然不统一(有的使用Ansi、有UTF8、还有Big5、GB2312),当时在UAT阶段每天都要将很多SQL Scripts文件合并在一个SQL文件中发给Customer,所以很不方便,于是便写了这个小工具,它具有以下几个功能: 在第一次给Customer时,选择Merge All,可以将指定文件夹下的所有指定类型的文件合并成一个文件(第一次是全量脚本) 在以后每一天,选择Daily Merge,将当天产生的所有文件合并成一个给Customer。 下面是操作界面:

Published
Categorized as Tools

Duplicate file cleaner 重复文件清除器

上周六晚上,看到自己的OneDrive空间已经使用了30G中的90%,所以就在网上找一些清理重复文件的工具,以期删除OneDrive中存在的那些重复文件。在很久很久以前,我曾经收藏了一些删除重复文件的工具,有破解的,有绿色的,但是这次在网上搜索了一下,大部分都出现了问题(说明现在网上的下载资源已经干净多了,没以前那么乱了)。要么就是下载失效,要么就是需要License,要么就是功能没有达到我的需求,遂决定自己写一个简单的工具,所以就有了这个工具,这个工具目前能够满足我的以下需求(因为是个人小工具,就没有作任何Validation,所以输入数据请一定按套路出牌): 检索出重复的文件,并报告重复了多少次、文件大小、创建时间、文件路径等 批量的删除重复文件,并且默认会为你保留一个备份(总不能把相同文件全删了,得留一个对不对?) 如果遇到无法处理的文件,报告异常,并继续处理后面的文件 操作界面如下:

Published
Categorized as Tools

SQL Server优化50法

原文出处 查询速度慢的原因很多,常见如下几种: 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。 内存不足 网络速度慢 查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 返回了不必要的行和列 查询语句不好,没有优化

SQL Server T-SQL Samples

Ø 基本常用查询 –select select * from student; –all 查询所有 select all sex from student; –distinct 过滤重复 select distinct sex from student; –count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; –top 取前N条记录 select top 3 * from student; –alias column name 列重命名 select id as 编号, name ‘名称’, sex… Continue reading SQL Server T-SQL Samples

SQL Server中的加密

原文出处 简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在的机房,而是作为当数据库被破解或是备份被窃取后的最后一道防线。通过加密,使得未被授权的人在没有密钥或密码的情况下所窃取的数据变得毫无意义。这种做法不仅仅是为了你的数据安全,有时甚至是法律所要求的(像国内某知名IT网站泄漏密码这种事在中国可以道歉后不负任何责任了事,在米国妥妥的要破产清算)。 SQL Server中的加密简介 在SQL Server2000和以前的版本,是不支持加密的。所有的加密操作都需要在程序中完成。这导致一个问题,数据库中加密的数据仅仅是对某一特定程序有意义,而另外的程序如果没有对应的解密算法,则数据变得毫无意义。 到了SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数 SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。

SQL Server死锁总结

  原文出处 http://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。死锁的四个必要条件: 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。 对应到SQL Server中,当在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁;这些资源可能是:单行(RID,堆中的单行)、索引中的键(KEY,行锁)、页(PAG,8KB)、区结构(EXT,连续的8页)、堆或B树(HOBT) 、表(TAB,包括数据和索引)、文件(File,数据库文件)、应用程序专用资源(APP)、元数据(METADATA)、分配单元(Allocation_Unit)、整个数据库(DB)。一个死锁示例如下图所示: 说明:T1、T2表示两个任务;R1和R2表示两个资源;由资源指向任务的箭头(如R1->T1,R2->T2)表示该资源被改任务所持有;由任务指向资源的箭头(如T1->S2,T2->S1)表示该任务正在请求对应目标资源; 其满足上面死锁的四个必要条件: (1).互斥:资源S1和S2不能被共享,同一时间只能由一个任务使用; (2).请求与保持条件:T1持有S1的同时,请求S2;T2持有S2的同时请求S1; (3).非剥夺条件:T1无法从T2上剥夺S2,T2也无法从T1上剥夺S1; (4).循环等待条件:上图中的箭头构成环路,存在循环等待。