小编5Yr*_*DBA的帖子

消息队列思考

我们使用C#实现了一个消息队列Queue.我们知道我们只有一个消费者从队列中取出可用消息以进行while循环处理.我们也知道只有一个生产者将消息放入队列.

我们有一个lock上面的消息队列,以确保消费者和生产者不能同时访问队列.

我的问题是lock必要的吗?如果在实际添加项目之后Queue增加其Count属性,并且如果消费者在检索之前检查,则消费者应该获得完整的消息项,即使我们没有.对?因此,我们不会面临部分邮件项目问题.那我们可以摆脱那个?Countlocklock

lock将减慢系统速度,偶尔我们可以看到检索线程被阻塞一段时间,因为我们有一个非常重的生产者.

编辑:

不幸的是我们正在使用.Net 3.5.

.net c# queue .net-3.5

5
推荐指数
1
解决办法
974
查看次数

uint是32位,无论系统是32位还是64位?

在C#中,uint是一种UInt32类型,因此无论操作系统是32位还是64位,它都将是32位长.我对吗?

c#

5
推荐指数
1
解决办法
1289
查看次数

浮点数减去后不是预期的数

我有以下声明:

float diff = tempVal - m_constraint.getMinVal();
Run Code Online (Sandbox Code Playgroud)

tempVal被声明为浮点型并且getMinVal()返回浮点值。

我有以下打印输出:

diff=0.099999905,tempVal=5.1,m_constraint.getMinVal()=5.0

我预计差异0.1,但不是上面的数字。怎么做?

java

5
推荐指数
1
解决办法
9557
查看次数

对于内部类的不同实例,hashCode可以是相同的吗?

我有一个自定义SwingWorker内部类.我发现他们的哈希码有几次对于它的不同实例是相同的.这是为什么?正常?

编辑:

我拥有的内部类是该类的子SwingWorker类.

java

5
推荐指数
1
解决办法
474
查看次数

如何避免许多#ifdef用于记录语句

在我们的应用中,我们创建了自己的日志系统.在此日志记录系统中,有几种不同的日志类型,调试,错误,警告,通信,性能和.... 有很多#ifdef#endif来禁用特定的日志类型.这些#ifdef#endif使代码难以阅读.

我们正在考虑删除这些#ifdef#endif,并在邮件写入文件之前进行检查.这意味着对日志系统有很多" 无用的 "调用.这些调用不会导致任何写作活动.

是否有更好的方法来打开/关闭日志类型,没有这些#ifdef#endif AND这些" 无用 "的调用?

c c++ logging

5
推荐指数
2
解决办法
1046
查看次数

Fedora 20如何在启动结束时运行脚本

我正在使用Fedora 20.我需要在启动结束时运行两行bash脚本.我想让它在每次机器启动时自动运行.我怎样才能做到这一点?

我试过"sudo crontab -e"来插入我的可执行脚本,但它总是给我错误,告诉我时间不对,无法修改文件.

linux bash fedora fedora20

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

如何使用占位符字符设置JFormattedTextField的值?

我有一个IP地址的格式化文本字段:

ipmask = new MaskFormatter("###.###.###.###");
ipmask.setPlaceholderCharacter(' ');
field = new JFormattedTextField(ipmask);
Run Code Online (Sandbox Code Playgroud)

field.setValue("111.222.333.444"); 工作,但

field.setValue(" 10.222.333.444"); 不起作用

field.setValue("10 .222.333.444"); 不起作用

field.setValue("10.222.333.444"); 不起作用

设定价值的正确方法是什么?

java

4
推荐指数
1
解决办法
6648
查看次数

如何手动编译C#项目?

刚刚加入了一个新项目,他们正在使用VC#2008构建一个应用程序.现在,在一个项目下有几个组件和许多文件.我被要求设置一台构建机器来开始每日构建.我被告知要做的第一件事是编写批处理文件来调用csc.exe来手动创建可执行文件而不安装VC#2008.

我是C#的新手,我不知道解决方案.我知道旧的VC++可以为我们创建一个makefile来进行手动构建.VC#2008是否具有类似的功能?任何信息和链接将不胜感激.

c# msbuild visual-studio

4
推荐指数
2
解决办法
2321
查看次数

如何删除dos控制台中的文件夹而没有列表删除所有内容?

在windowsxp中,我使用"del/s/q myfolder"删除一个大文件夹.它将列出要删除的所有文件和文件夹.有没有办法避免那个长显示列表?谢谢,

dos

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

我可以给C#参数一个默认值吗?

在C#中我们可以像C++一样执行以下操作吗?

public void myMethod(int i, MyClass obj, int value=100){

}
Run Code Online (Sandbox Code Playgroud)

另一个问题是MyClass是一个引用类型,如果ref之前没有它,它会将MyClass的副本传递给方法而不是引用?

谢谢,

c#

4
推荐指数
2
解决办法
715
查看次数

标签 统计

c# ×4

java ×3

.net ×1

.net-3.5 ×1

bash ×1

c ×1

c++ ×1

dos ×1

fedora ×1

fedora20 ×1

linux ×1

logging ×1

msbuild ×1

queue ×1

visual-studio ×1