草庐IT

java - 为什么 ADT 好而继承不好?

我是一名长期的OO程序员和函数式编程新手。从我的小曝光来看,代数数据类型对我来说只是一种特殊的继承情况,你只有一个层次结构,父类(superclass)不能扩展到模块之外。所以我的(可能是愚蠢的)问题是:如果ADT就是这样,继承的一个特殊情况(同样,这个假设可能是错误的;在这种情况下请纠正我),那么为什么继承会受到所有批评而ADT会得到所有的赞美?谢谢。 最佳答案 我认为ADT是继承的补充。它们都允许您创建可扩展的代码,但可扩展性的工作方式不同:ADT可以轻松添加新功能以处理现有类型您可以轻松添加与ADT一起使用的新功能,它有一组固

Java:线程中的 `while (true) { ... }` 循环不好吗?有什么选择?

线程中的while(true){...}循环是否不好?有什么办法?更新;我想要...我有大约10,000个线程,每个线程都使用来自其私有(private)队列的消息。我有一个线程一一生成消息并将它们放入正确的消费者队列中。每个消费者线程无限循环,检查是否有消息出现在他们的队列中并处理它。Consumer.java内部:@Overridepublicvoidrun(){while(true){Messagemsg=messageQueue.poll();if(msg!=null){...//dosomethingwiththemessage}}}生产者正在快速将消息放入消费者消息队列中(

java - 为什么 Thread.sleep 不好用

对于这个重复的问题,我深表歉意,但我还没有找到任何令人满意的答案。大多数问题都有自己的特定用例:Java-alternativetothread.sleepIsthereanybetteroralternativewaytoskip/avoidusingThread.sleep(1000)inJava?我的问题是针对非常通用的用例。等待条件完成。做一些操作。检查一个条件。如果条件不成立,等待一段时间再做同样的操作。例如考虑一种通过调用其createAPI表来创建DynamoDB表的方法。DynamoDB表需要一些时间才能变为Activity状态,因此该方法将调用其DescribeTab

java - 在 Java 中使用轮询不好吗?

我有几个ArrayLists作为数据队列工作。每个队列都链接到一个单独的thread,该线程检查该ArrayList中是否有一些数据。while(array.size==0){//nothing}//dostuffwithoneelementofthearray//removeelementfromarray//andcalltheloopagain我在嵌入式系统编程中做过类似的事情,但是在Java中使用它是否安全?问题在于通过非常快速地围绕该while循环进行迭代来浪费进程功率。可以通过添加Thread.sleep(100)并每100毫秒检查一次来解决,但又一次-响应时间变慢。问题是

mysql - 在 MySQL 中, "Overhead"是什么意思,它有什么不好的,以及如何修复它?

一个简单的问题,但它一直困扰着我一段时间......什么是MySQL中的“开销”,我应该担心吗?点击“优化表”真的可以解决问题吗? 最佳答案 似乎开销是数据库用来运行某些查询的临时磁盘空间,所以你应该只担心它变得非常高。您可以将“优化表”与硬盘碎片整理进行比较。我引用:Everydatabasewill,overtime,requiresomeformofmaintenancetokeepitatanoptimalperformancelevel.Purgingdeletedrows,resequencing,compressing

android - 在 Android 中使用负边距是一种不好的做法吗?

负边距演示:                        场景通过为其中一个View设置负边距来重叠View,以便它侵入另一个View的边界框。想法如果它们应该重叠布局,它似乎可以按照您期望的方式工作。但我不想因为在不知不觉中做错事而遇到更大的问题。仿真器、物理设备等等,当您使用负边距时,一切似乎都正常工作,一个View会侵入另一个View的边界框,并且取决于它在布局中的声明方式,它将位于另一个View的上方或下方。我还知道,从API21开始,我们可以设置translationZ和elevation使View出现在其他View之上或之下的属性,但我的担忧基本上来自inthedocum

mongodb - 为什么 serverstatus 对 mongod 写操作有不好的影响?

我有1个mongos、3个mongod和3个配置服务器。当我写一些文件时,有时一个mongod的插入速度很慢,mongod日志文件中有“serverstatuswasveryslow”。为什么?版本是2.0.4 最佳答案 该消息实际上反射(reflect)了您的服务器运行缓慢这一事实,而不是serverStatus导致了问题。如果serverStatus命令(例如由MMS代理定期运行)速度很慢,它将记录该警告-这是一种症状而不是原因。它作为一个命令是相当轻量级的,所以如果它返回的速度足够慢以警告你,那么主机可能在那个时候很忙。寻找负

ruby-on-rails - 将 MongoDB 中的 _id 类型更改为整数是否不好?

MongoDB使用ObjectId类型作为_id。如果我将_id设为递增整数会很糟糕吗?(如果您有兴趣,请使用thisgem) 最佳答案 不,它一点也不差,事实上内置的ObjectId在索引中相当大,所以如果你认为你有更好的东西,那么非常欢迎你更改默认值_id字段的任何内容。但是,这是一个很大的但是,在决定放弃默认制定的ObjectId时有一些注意事项,尤其是在使用如图所示的自动递增_id时这里:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-fi

c++ - 混合调试和发布库/二进制文件 - 不好的做法?

在调试二进制文件中使用3rd方库的发布版本是一种不好的做法吗?我正在使用第3方库并编译了发布.lib库。我的exe处于Debug模式开发。然后我得到了:errorLNK2038:mismatchdetectedfor'_ITERATOR_DEBUG_LEVEL':value'0'doesn'tmatchvalue'2'intest1.obj经过一番谷歌搜索后,我发现这是因为我试图将发布与调试混合在一起,我可能应该在Debug模式下编译库,否则会混淆_ITERATOR_DEBUG_LEVEL宏。但我只是好奇这是否是推荐的方式以及为什么。我需要为我打算使用的每个3rd方库编译并记录发布和调

c++ - eof() 不好的做法?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whyisiostream::eofinsidealoopconditionconsideredwrong?所以我一直在我的很多需要文件输入的程序中使用eof()函数,我的教授说它很好用但是SO上的一些人说我不应该在没有真正说明原因的情况下使用它。所以我想知道,有什么好的理由吗? 最佳答案 您可以使用eof来测试它报告的确切情况-您是否尝试过读取文件末尾。你不能用它来测试是否有更多的输入要读取,或者读取是否成功,这是更常见的测试。错误:while(!cin