小编Jor*_*oba的帖子

常量与受保护的静态只读

我有一个包装类,它封装了一条需要作为字节数组传输的信息。

这样,该类将必要的标头(带有 DATA_LENGTH 或 MESSAGE_TYPE 之类的字段)封装到相应的字节位置。为此,我想在常量中定义位置和长度,例如:

HEADER_DATA_LENGTH_IX = 0;
HEADER_DATA_LENGTH_LENGTH = 2;
Run Code Online (Sandbox Code Playgroud)

这意味着 DATA_LENGTH 从 0 开始并占用两个字节。

但到目前为止,我正在努力使它们成为常量或静态只读字段。常量不能被保护,因此如果使用它们,我将无法派生新类并更改常量,另一方面,我可能会在派生类中声明新常量并使用它们。

你的方法是什么?

.net c#

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

ORM的当前状态是什么?

从历史上看,除了最基本的应用程序之外,我完全反对使用ORMS.

我的理由一直是,它是一个非常漏洞的抽象...主要是因为SQL提供了一种非常强大的方法来从关系源中检索数据,这通常会被ORM搞砸,这样你就会失去很多性能来获得没有关系后端的外观.

我一直以为DATA应该始终保存在数据库中,而不是吃掉那些无法扩展的应用程序内存.此外,对通用性能的影响是有害的.例如,如果我需要数据库的所有客户端的名称和地址,SQL在一个查询中为我提供了一种简单的方法来获取它.使用ORM我需要获取所有客户端,然后是每个名称和地址,即使它是懒惰加载它也会花费更多时间.

这就是我的想法,但上面的任何改变了吗?我看到很多ORMS,比如Entity Framework,NHibernate等.最近他们似乎有很多人气......他们值得吗?他们解决了我上面描述的问题吗?

performance orm

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

标签尺寸变化

我有一个标签,其内容通过 while 循环显示。当我在标签中显示文本时,它会正确显示。有时几分钟,相同的文本显示在相同的标签中,并且控件中的文本大小发生变化。

这是代码:

//Form_Load :

Thread t = new Thread(displaySentences);
t.Start();


//display sentences:
void displaySentences()
{
    while(true)
    {
       if(i>=5)
          i=0;

       label4.Text = textarray[i];
       i++;

    }

}
Run Code Online (Sandbox Code Playgroud)

第一次迭代(i=0)中的文本大小与第二次迭代中标签控件中的文本大小不同。

c# vb.net

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

访问TObjectList线程的不同索引是否安全?

我有一个需要由多个线程处理的TObjectList.由于内部TObjectList继承自TList,TList将其内部实现为数组,我想知道:

只要我们访问不同的索引,从不同的线程访问数组是否是线程安全的?

例如,有一个名为myObjectList的TObjectList:

start = 0; end = myObjectList.Count div 2;

线程1:

for i := 0 to end do
  Process(myObjectList[i]);
Run Code Online (Sandbox Code Playgroud)

线程2:

for i := end + 1 to myObjectList.Count - 1 do
  Process(myObjectList[i]);
Run Code Online (Sandbox Code Playgroud)

delphi multithreading thread-safety

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

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

不可变对象总是线程安全吗?

可以安全地假设使用或传递不可变对象总是线程安全的吗?

c# immutability thread-safety

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

KeyNotFoundException vs在Kotlin中返回null

我正在尝试确定Kotlin界面中的某个功能,该功能会根据一个Give键从配置中读取一个值。这两个选择是

/**
 * Reads a configuration value for the specified key.
 * @param key The key to the configuration value to retrieve
 * @return The configuration value if the key is present, exception otherwise
 */
fun readValue(key: String): String
Run Code Online (Sandbox Code Playgroud)
/**
 * Reads a configuration value for the specified key.
 * @param key The key to the configuration value to retrieve
 * @return The configuration value if the key is present, null otherwise
 */
fun readValue(key: String): String?
Run Code Online (Sandbox Code Playgroud)

如图所示,主要区别在于引发异常或返回空值。

考虑到我在Java和C#中的背景,我很自然地编写第二种形式,并要求调用者在访问该值之前检查null,但是我不确定这是否适用于Kotlin或是否有一般偏好以避免返回null值尽可能。

null design-patterns kotlin

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

问用户还是尽量不打扰他?

我有一个应用程序可能会收到来自另一台计算机的数据的网络请求.可以将数据分组为几个类别,以便可以对其进行过滤.

在这种情况下,可能会发生两件事:

  1. 我让用户能够过滤他想要发送的信息(从而减少带宽并为用户提供强大的功能)
  2. 尽量不要打扰用户,以便尽可能简单地使用应用程序,并事先决定将发送哪些信息.

基本上是Google UI与"您的应用UI"之间的争论.第二个选项太简单了,但它限制了用户准确决定他想要发送的数据的能力,第二个选项为用户带来了可能不需要的复杂性.

你有什么选择更好?

user-interface

0
推荐指数
1
解决办法
124
查看次数