草庐IT

馊主意

全部标签

c# - 在 Linux 上使用 .NET/Mono 来提供大容量 Web 服务,是个好主意吗?

我们有一个流量相当大的网络服务,可以帮助您根据收到的电子邮件确定您的首选联系人。此服务最初是在C#/.NET中实现的,目的是利用我们已经在Windows主机上运行的一些代码。此服务不使用ASP.NET,但它是一个简单的C#服务,使用来自.NET的基本HTTP监听器。服务执行正常,但偶尔MONO会完全阻塞并停止响应任何请求。性能还可以,但不是很好,而且我们花了很多时间来弄清楚MONOCLR和WindowsCLR之间的区别。我必须承认,我有Java背景,Java端的服务器端生态系统似乎比Linux上的MONO生态系统大得多。所以现在,我正在寻找有关在Linux上使用Mono来为高流量Web

php - 为什么在函数中避免嵌套 block 是个好主意? (PHP)

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭9年前。Improvethisquestion我安装了Netbeans7.4beta,有一个新提示说“函数声明中的嵌套block过多-引入新函数是一种很好的做法...”。为了更好的可读性,我确实尝试避免在函数中嵌套block,但如果这很重要,是否有任何其他原因可以说明这是一个更好的“想法”,特别是对于PHP。 最佳答案 它的正式名称是CyclomaticComplexity.这是根据

php - 为什么 MD5'ing UUID 不是一个好主意?

PHP有一个uniqid()生成各种UUID的函数。在使用示例中,显示如下:$token=md5(uniqid());但在评论中,someonesaysthis:GeneratinganMD5fromauniqueIDisnaiveandreducesmuchofthevalueofuniqueIDs,aswellasprovidingsignificant(attackable)strictureontheMD5domain.That'sadeeplybrokenthingtodo.ThecorrectapproachistousetheuniqueIDonitsown;it'sal

php - Gettext:消息 ID 是英文文本是个好主意吗?

我们正准备将我们的PHP网站翻译成各种语言,PHP中的gettext支持看起来是可行的方法。我看到的所有教程都建议使用英文文本作为消息ID,即gettext("你好!")但这真的是个好主意吗?假设营销人员想要将文本更改为“Hithere,y'all!”。那么您是否不必更新所有语言文件,因为该字符串(实际上是消息ID)已更改?拥有某种通用ID(如“hello.message”)和英文翻译文件会更好吗? 最佳答案 哇,我很惊讶没有人提倡使用英语作为key。我在几个软件项目中使用了这种风格,恕我直言,效果很好。代码可读性很好,如果您更改一

Android:将身份验证 token 存储在共享首选项中是个好主意吗?

我有一个与服务器通信的应用程序。当用户登录到应用程序时,会在服务器上创建一个身份验证token并存储在应用程序的SharedPreferences中,并且每当应用程序从Web服务请求数据时,身份验证token就会被验证。我的问题是,将身份验证token存储在SharedPreferences中是否安全?我问是因为具有root权限的用户可以访问首选项、提取token并使用它。在这方面是否有更高的安全性? 最佳答案 简而言之,是的,这是一件非常合理的事情。除此之外,您能做的最好的事情就是混淆。如果您将token保存在内存中,root用户

android - 在 MVP 模式中,了解 Activity/上下文的演示者是不是一个坏主意?

我已经用MVP模式玩了几个星期了,现在我已经到了需要上下文来启动service和访问SharedPreferences.我读过MVP的目的是将View与逻辑分离,并且在Presenter中包含context可能会破坏该目的(如果我'我错了)。目前,我有一个如下所示的LoginActivity:LoginActivity.javapublicclassLoginActivityextendsActivityimplementsILoginView{privatefinalStringLOG_TAG="LOGIN_ACTIVITY";@InjectILoginPresentermPrese

c++ - C 回调中的 try{ } catch(...) { } - 坏主意?

我正在用C++实现回调,它将从普通C代码中调用。我的main()函数已经是C++,但C代码将负责创建最终会调用我的回调的线程。现在我的回调看起来像inthandle_foo(void*userdata){try{MyCPPClass*obj=static_cast(userdata);obj->doStuff();return0;//noerror}catch(...){LogError("doStufffailed");return-1;//error}}这工作正常,但对我来说似乎很奇怪。此外,我失去了一些有用的功能,例如找出what被抛出的能力(无需为我的每个回调添加大量额外的ca

c++ - g++ - 使用 "-g"标志进行生产是一个好主意吗?

只是为了提供一些上下文,我在这里谈论的是使用g++编译C++代码。我可以看到在生产构建中包含-g标志将如何方便维护:如果程序意外崩溃,调试起来会容易得多。我的问题是,包含-g标志是否会以任何其他方式影响输出可执行文件,而不是增加其大小?它能否以某种方式使代码变慢(例如通过关闭某些优化)?据我了解,它不应该(文档只提到包含调试符号),但我不确定。 最佳答案 -g标志不影响代码生成,仅更改符号表和调试元数据。这些并不存在于可执行代码部分,因此当代码在hte调试器之外运行时,它们甚至不会影响性能。

c++ - 减少 cpp 翻译单元的数量是个好主意吗?

我发现如果有很多类,当我为每个类使用一个*.h和一个*.cpp文件时,编译时间会显着增加。我已经使用了预编译的头文件和增量链接,但是编译时间仍然很长(是的,我使用了boost;)于是我想出了以下技巧:将*.cpp文件定义为不可编译将*.cxx文件定义为可编译为每个应用添加了一个*.cxx文件模块,并在其中#include了该模块的所有*.cpp文件。所以我最终只得到了8个翻译单元,而不是100多个翻译单元。编译时间缩短了4-5倍。缺点是您必须手动包含所有*.cpp文件(但这并不是真正的维护噩梦,因为如果您忘记包含链接器会提醒您的内容),并且某些VSIDE便利性无法使用这个方案,例如转到

c++ - 什么时候在其他std::thread机制上使用std::promise是个好主意?

我正在尝试建立一些启发式方法,以帮助我确定要使用的适当std::thread类。据我了解,从最高级别(使用最简单,但最不灵活)到最低级别,我们有:std::asyncwith/std::future(std::shared_future)(当您想一次性使用生产者线程异步执行时)std::packaged_task(当您想分配生产者,但将调用推迟到线程时)std::promise(???)我认为我在前两个何时使用时对有一定的了解,但是对于std::promise仍然不清楚。std::future和std::async调用有效地将产生的回调/functor/lambda转换为异步调用(根据