小编Eri*_*ikE的帖子

如何处理SQL记录的很多标志

我需要有关如何处理SQL2k8表中相对较大的标志集的建议.

两个问题,请跟我说:)

假设我有20个标志,我想存储一个记录.

例如:

CanRead = 0x1 CanWrite = 0x2 CanModify = 0x4 ......依此类推到最后的标志2 ^ 20

现在,如果我设置一个记录的以下组合:Permissions = CanRead | CanWrite

我可以通过执行WHERE(权限和CanRead)= CanRead来轻松检查该记录是否具有所需权限

这样可行.

但是,我还想检索所有可以写或修改的记录.

如果我发出WHERE(权限和(CanWrite | CanModify))=(CanWrite | CanModify)我显然不会得到我的权限设置为CanRead的记录 CanWrite

换句话说,我怎样才能找到与我发送给程序的面具中的任何标志相匹配的记录?

第二个问题,SQL 2008中的性能如何?创建20位字段实际上会更好吗?

谢谢你的帮助

sql bit-manipulation sql-server-2008

7
推荐指数
3
解决办法
4020
查看次数

在Char中将CharSequence的第一个字母改为大写

它可能看起来很简单,但它有很多错误,我试过这种方式:

 String s = gameList[0].toString();
s.replaceFirst(String.valueOf(s.charAt(0)),String.valueOf(Character.toUpperCase(s.charAt(0))) );
Run Code Online (Sandbox Code Playgroud)

它会引发异常

我的另一个尝试是:

String s = gameList[0].toString();
char c = Character.toUpperCase(gameList[0].charAt(0));
gameList[0] = s.subSequence(1, s.length());
Run Code Online (Sandbox Code Playgroud)

这个也引发了例外

java string android uppercase

7
推荐指数
2
解决办法
1万
查看次数

.Net TableLayoutPanel - 清除控件非常慢

这很简单.

我有一个TableLayoutPanel,它基于数据库查询填充了控件(只有标签,按钮和一些带按钮的面板).当需要刷新数据时,我使用TableLayoutPanel.Controls.Clear().不幸的是,这是一个非常缓慢的操作.我希望它比填充表格的代码更快,但它至少慢3或4倍.

我明确地证明了缓慢是在执行Controls.Clear()时执行此操作,因为在显示消息框之后对TableLayoutPanel执行了单一操作(然后过程返回).控件从下往上明显消失.当记录集用于重新填充TableLayoutPanel时,从上到下显示的控件的速度几乎比我看到的快.

我已经在做TableLayoutPanel.SuspendLayout()和ResumeLayout().

this.DoubleBuffered = true在表单上使用似乎没有做任何事情.

我可以通过代码处理整个控件并重新创建它,但这是一个很大的痛苦,并使一个漂亮的表单设计器GUI毫无意义.我将不得不深入研究我在控件上设置的每个属性并为其创建一行代码(虽然我想我可以从设计器代码本身中获取它,但它仍然感觉不对).

关于如何更快地完成工作的任何想法?我甚至愿意使用除TableLayoutPanel之外的其他方法...我只需要自由地为每个单元格放置多个按钮或禁止它能够跨越表头中的列.

C#在重绘时能否至少冻结整个表格,然后立即全部绘制?

.net c# performance tablelayoutpanel

7
推荐指数
2
解决办法
6724
查看次数

我的png有什么膨胀?

背景:

我正在努力制作尽可能小的PNG.我正在玩PngOut,PngCrush和OptiPng等工具.

问题:

我遇到了一个1434 KB大小的文件,但它只有230 x 230像素.当我在Paint.Net中打开文件并将其另存为新文件时,新文件只有77 KB.这是一个高达1.325 MB的额外垃圾!

目标:

我想了解究竟是什么可能膨胀文件,以及如何在遇到这种膨胀时自动摆脱这种膨胀,并且无法完成这些目标中的任何一个.OptiPng不会删除元数据.

进展:

我发现exiftool似乎全能,但它没有显示任何疯狂的标签.

RIOT可以在没有额外数据的情况下生成图像的新版本,但它没有给我任何关于膨胀是什么的坚实线索 - 它绝对不是XMP信息或评论(我可以选择包含的唯一元数据).但RIOT会自动并强制删除IPTC信息和EXIF配置文件 - 它可能是其中之一吗?

期望的反馈

您对如何以编程方式或自动无损地粉碎和从PNG(以及其他图像类型)中删除元数据的想法表示赞赏.但是,我不想在没有先了解它的情况下将信息丢弃在文件中.

更新

我找到了Steel Bytes Jpeg和PNG Stripper,它确实从文件中删除了元数据(并且有一个命令行模式),产生了一个84 KB的文件然后我可以进行PNG优化,但这仍然无法帮助我理解什么我正在删除,我觉得我需要先了解才能继续.我不需要获得对生产面向公众的网站中使用的这些图像进行优化的许可,但我确实需要对进行此类更改之前所做的事情充满信心.

更新2

我没有注意到OptiPng有一个选项-strip all,它可以删除元数据.这远远比Steel Bytes Stripper好,因为它有更多的备份处理原始文件的选项 - 保留备份,或将优化文件输出到新位置.它还可以同时优化PNG的图像数据,只需要一个工具而不是两个工具.

附录

这是exiftool -a -G [file.png]显示:

[ExifTool]      ExifTool Version Number         : 9.60
[File]          File Name                       : file.png
[File]          Directory                       : .
[File]          File Size                       : 1446 kB
[File]          File Modification Date/Time     : 2014:03:31 16:37:20-07:00
[File]          File Access Date/Time           : 2014:05:15 …
Run Code Online (Sandbox Code Playgroud)

png metadata

7
推荐指数
1
解决办法
989
查看次数

SQL Server未使用,但已分配表空间

我有ms sql数据库,它们变得非常大.经过检查,我发现某些表中有一堆未使用的空间.我没有做很多物理删除,所以我不认为它只是删除了记录.DBCC SHRINK不会使文件变小.但是,如果我将表转储到一个新的空数据库,则大小会下降大约80%.而不是我在当前数据库中的这个表中的7gb,我最终在新数据库中大约1.5gb.它好像sql server分配了太多的内存.以前遇到过这个人吗?我希望能够通过删除未使用的已分配空间来缩小表,而无需创建全新的数据库.

附加信息:

使用完全恢复模型.我会尝试重建索引,我想它已经有一段时间了.ldf每天都会使用一些古怪的存储过程来缩小它们.

sql-server

6
推荐指数
1
解决办法
2万
查看次数

BULK INSERT列数不一致

我试图使用BULK INSERT从平面文件加载SQL服务器中的大量数据.但是,我的文件具有不同数量的列,例如第一行包含14,第二行包含4.这没关系,我只想创建一个具有最大列数的表,并将文件加载到其中,其中包含NULL缺少列.从那时起我就可以玩它.但似乎SQL Server在到达行尾并且有更多列填充目标表中的同一行时,只是转到下一行并尝试将该行上的数据放到错误的列中桌子.

有没有办法获得我正在寻找的行为?有没有可以用来指定它的选项?有没有人遇到过这个?

这是代码

BULK INSERT #t
FROM '<path to file>'
WITH 
(
  DATAFILETYPE = 'char',
  KEEPNULLS,
  FIELDTERMINATOR = '#'
)
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2008

6
推荐指数
1
解决办法
2万
查看次数

根据SQL Server中多个先前行的值提取行

我有一个包含这样的示例数据的表:

ID  Key   User
--  ----  -----
1   a     test
2   ab    test
3   abc   test
4   abcd  test
5   e     test1
6   ef    test1
7   efg   test1
8   efgh  test1
9   t     test1
10  ty    test1
11  tyu   test1
12  tyui  test1
Run Code Online (Sandbox Code Playgroud)

数据由用户构造的值的顺序"快照"组成.我想为每个用户实例返回最后一行,构建一个不同的最终Key值.注意大多数行Key包含整个前一行Key加上一个额外的字母?我只想要终止这样一个序列的行,并且是每个链中可能的最长值,Keys它们依次包含前一个Key值.

以上示例数据应返回以下内容:

ID  Key   User
--  ----  -----
4   abcd  test
8   efgh  test1
12  tyui  test1
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

sql t-sql

6
推荐指数
2
解决办法
1655
查看次数

如何在数字范围和排序结果上进行Pivot查询?

我正在寻找一个MS SQL查询(用于SQL Reporting Services)给我以下结果:

JobCode   0-10     11-20     21-30    31-40    41-50
A           1        2         0        0        2
B           0        2         2        0        0
C           3        0         1        1        0
Run Code Online (Sandbox Code Playgroud)

当前查询:

SELECT  RecordID
    , CAST(GETDATE() - JobStartDate AS Int) AS DaysSinceStart
    , Code
FROM    tblJobs
Run Code Online (Sandbox Code Playgroud)

返回这些结果:

RecordID | DaysSinceStart | Code
158987    11    A
158968     3    A
158972     4    C
158973    16    B
158974    23    C
158975    13    B
158976    45    A
158977    32    C
158985     9    C
158981    25    B
158982 …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2012

6
推荐指数
1
解决办法
2987
查看次数

C#我有50多个其他if卡的声明,有没有办法缩短它或一次性完成所有操作?

我有一个加载并生成7个不同随机数的表单,从1到13,1是Ace,13是King.在生成7个不同的随机数后,它将每个随机数放入7个图像框中.我正在使用if语句显示图片框.

它还循环通过一系列"黑桃,心,俱乐部和钻石",13次.

我的if语句如下:

if (cardNum == 1 && cardType ==  "Spades")
{
    pictureBox1.Image = ace_of_spades;
}
else if (cardNum == 1 && cardType == "Hearts")
{
    pictureBox1.Image = ace_of_hearts;
}
else if (...)
{
    //change picture box
} //repeat it like 50 times
Run Code Online (Sandbox Code Playgroud)

是否有一种简单,容易的方法来挑选7张随机卡并在图片框中显示它们?

这是非常耗时的,就像我这样做.

c# if-statement

6
推荐指数
2
解决办法
170
查看次数

允许派生类型转换为父类型以返回`object`,但使用派生类型的方法

鉴于以下代码(我知道不会编译并且不正确):

public abstract class Fetcher {
   public abstract IEnumerable<object> Fetch();
}

public class Fetcher<T> : Fetcher {
   private readonly Func<IEnumerable<T>> _fetcher;
   public Fetcher(Func<IEnumerable<T>> fetcher) { _fetcher = fetcher; }
   public IEnumerable<T> Fetch() => _fetcher(); // override or new
}
Run Code Online (Sandbox Code Playgroud)

这个示例设置:

var myFetchers = new List<Fetcher> {
   new Fetcher<string>(() => new List<string> { "white", "black" })),
   new Fetcher<int>(() => new List<int> { 1, 2 }))
};
Run Code Online (Sandbox Code Playgroud)

如何构建我的代码以便这可以工作?

IEnumerable<IEnumerable<object>> fetcherResults =
   myFetchers.Select(fetcher => fetcher.Fetch()); // get objects from derived method
Run Code Online (Sandbox Code Playgroud)

TLDR; 我已经考虑过这个了.陈述我的问题的另一种方式是:如何 …

c# generics inheritance

6
推荐指数
1
解决办法
84
查看次数