我正在拨打以下电话:
result = RegOpenKeyEx(key, s, 0, KEY_READ, &key);
Run Code Online (Sandbox Code Playgroud)
(C++,Visual Studio 5,Vista 64bit).
它失败了,错误代码2("找不到文件"),即使" regedit
"表示密钥存在.这段代码一直在32位XP上运行.当它显然存在时,为什么它"找不到文件"?
我在C++中使用GDI +.(此问题也可能存在于C#中).
我注意到每当我调用Graphics :: MeasureString()或Graphics :: DrawString()时,字符串都会在左侧和右侧填充空格.
例如,如果我使用Courier字体(不是斜体!)而我测量"P"我得到90,但"PP"给我150.我希望等宽字体给出"PP"的两倍宽度.
我的问题是:这是有意或记录的行为,我该如何禁用它?
RectF Rect(0,0,32767,32767);
RectF Bounds1, Bounds2;
graphics->MeasureString(L"PP", 1, font, Rect, &Bounds1);
graphics->MeasureString(L"PP", 2, font, Rect, &Bounds2);
margin = Bounds1.Width * 2 - Bounds2.Width;
Run Code Online (Sandbox Code Playgroud) 我的公司已经使用XML-RPC一段时间了,但最近我想知道XML-RPC与普通XML相比有什么好处.首先,它是可怕的"肥胖",考虑:
<struct>
<member>
<name>ROOM_ID</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>CODE</name>
<value>
<string>MR-101</string>
</value>
</member>
<member>
<name>NAME</name>
<value>
<string>Math Room</string>
</value>
</member>
<member>
<name>CAPACITY</name>
<value>
<int>30</int>
</value>
</member>
</struct>
Run Code Online (Sandbox Code Playgroud)
与此相比:
<room><ROOM_ID>1</ROOM_ID><CODE>MR-101</CODE>
<NAME>Math Room</NAME><CAPACITY>30</CAPACITY></room>
Run Code Online (Sandbox Code Playgroud)
甚至这个:
<room ROOM_ID=1 CODE=MR-101 NAME=”Math Room” CAPACITY=30 />
Run Code Online (Sandbox Code Playgroud)
其次,XML-RPC似乎相当普遍,但并不是普遍存在,我对C++和PHP中对它的支持印象不深.我在两种语言中尝试过的所有库都遇到了问题.
第三,在我看来,我可以像使用XML-RPC一样使用纯XML进行远程过程调用.{(9/9/2009):每种语言都有用于将语言级对象序列化为XML的库.XML和XML-RPC都需要定义应用程序级模式,例如,字段应如何拼写,但不需要定义任何其他模式.许多人使用纯XML进行RPC调用.}
那么XML-RPC的增值是什么?
我发现std::string
与老式的以null结尾的字符串相比,s非常慢,速度非常慢,以至于它们将整个程序的速度降低了2倍.
我预计STL会变慢,我没有意识到它会慢得多.
我正在使用Visual Studio 2008,发布模式.它显示字符串的char*
赋值比赋值慢100-1000倍(测试char*
赋值的运行时非常困难).我知道这不是一个公平的比较,指针赋值与字符串复制,但我的程序有很多字符串赋值,我不确定我可以在所有地方使用" const引用 "技巧.通过引用计数实现,我的程序可以很好,但这些实现似乎不再存在.
我真正的问题是:为什么人们不再使用引用计数实现,这是否意味着我们都需要更加谨慎地避免std :: string的常见性能缺陷?
我的完整代码如下.
#include <string>
#include <iostream>
#include <time.h>
using std::cout;
void stop()
{
}
int main(int argc, char* argv[])
{
#define LIMIT 100000000
clock_t start;
std::string foo1 = "Hello there buddy";
std::string foo2 = "Hello there buddy, yeah you too";
std::string f;
start = clock();
for (int i=0; i < LIMIT; i++) {
stop();
f = foo1;
foo1 = foo2;
foo2 = f;
}
double …
Run Code Online (Sandbox Code Playgroud) 我正在使用Google AppEngine和Java.当我使用一些数据存储功能时,我收到一条错误消息:
Object with id "edvaltt.Teacher@64064b" is managed by a different Object Manager
Run Code Online (Sandbox Code Playgroud)
我不知道这意味着什么或如何解决它或在哪里寻找有关此错误的文档.谁能帮我?我正在使用的代码是:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class School {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String shortname;
@Persistent
private String fullname;
@Persistent
@Order(extensions = @Extension(vendorName="datanucleus", key="list-ordering", value="code asc"))
private List<Teacher> Teachers;
...
public Teacher FindOrCreateTeacher(String code)
{
// Can we find the teacher without any database code?
Teacher newTeacher = FindTeacher(code);
if (newTeacher != null)
return newTeacher;
// Create the teacher:
PersistenceManager pm = PMF.get().getPersistenceManager();
Transaction tx = pm.currentTransaction(); …
Run Code Online (Sandbox Code Playgroud) 我在IntelliJ中运行GWT.(普通GWT,IntelliJ v9).我能够通过我的"GWT开发模式"配置运行我的应用程序,但是当我尝试通过我的"本地tomcat"配置运行它时,我得到了一堆难以理解的错误消息,引用了Oracle和各种奇怪的东西,我没有使用,接着是这个错误,它被排序到所有其他的底部:
错误:内存不足; 要增加内存量,请在启动时使用-Xmx标志(java -Xmx128M ...)
我猜这个错误是根本原因.
根据我的理解,有一个GWT编译步骤,它在一个独立于IntelliJ和tomcat的JVM中运行,所以我不确定在哪里设置-Xmx参数.
我的问题是:我在哪里找到这个-Xmx参数?(而且:我是在正确的轨道上,从表面上看这个错误信息,还是更深层次问题的症状?)
在我的公司,我们今天遇到了严重的问题:我们的生产服务器出现故障.大多数通过浏览器访问我们软件的人无法获得连接,但是已经使用该软件的人能够继续使用它.甚至我们的热备用服务器也无法与生产服务器通信,它使用HTTP进行通信,甚至无法访问更广泛的互联网.服务器可以通过ping和ssh访问的整个时间,实际上是非常负载 - 它通常以5%的CPU负载运行,此时甚至更低.我们几乎没有磁盘i/o.
问题开始几天后,我们有了一个新的变化:端口443(HTTPS)正在响应,但端口80停止响应.服务器负载非常低.重启tomcat后,端口80立即开始响应.
我们使用tomcat7,maxThreads ="200",并使用maxConnections = 10000.我们从主内存中提供所有数据,因此每个HTTP请求都很快完成,但是我们有大量用户进行非常简单的交互(这是高中科目选择).但我们似乎不太可能拥有10,000个用户,同时他们的浏览器在我们的页面上打开.
我的问题有几个部分:
但主要问题是,"我们如何修复我们的服务器?"
按照Stefan和Sharpy的要求提供更多信息:
更多信息:当我们意识到我们使用的是BIO的默认Tomcat7设置(每个连接有一个线程,并且我们有maxThreads = 200)时,看起来我们已经解决了问题.实际上'netstat -an'显示了大约297个连接,它们匹配200 + 100的队列.所以我们将其更改为NIO并重新启动了tomcat.不幸的是,第二天发生了同样的问题.我们可能错误配置了server.xml.
来自catalina.out的server.xml和摘录可在此处获取:https://www.dropbox.com/sh/sxgd0fbzyvuldy7/AACZWoBKXNKfXjsSmkgkVgW_a?dl = 0
更多信息:我做了负载测试.我可以从我的开发笔记本电脑创建500个连接,并且每个都进行3次HTTP GET,没有任何问题.除非我的负载测试无效(Java类也在上面的链接中).
我有一些示例代码使用OpenCV(Java包装器)将2个图像拼接在一起.它引用了一个不推荐使用的类"DescriptorExtractor".我在官方网站文档或源代码中找不到任何关于我应该使用的信息.当某些东西被弃用时,我总是很生气,而且它并没有告诉你应该使用什么.
谁能帮我?
我正在使用OpenCV 3.4.1和预构建的Windows库.
该课程的官方文档似乎在这里.
"FeatureDetector"类同样被弃用,同样没有任何关于使用什么的提示.
我在java中使用RandomAccessFile:
file = new RandomAccessFile(filename, "rw");
...
file.writeBytes(...);
Run Code Online (Sandbox Code Playgroud)
如何确保将此数据刷新到操作系统?没有file.flush()方法.(请注意,我实际上并不期望它是物理写入的,我很满意它被刷新到操作系统,因此数据将在tomcat崩溃中存活,但不一定是意外的服务器断电).
我在Linux上使用tomcat6.
我一直在比较流行的XmlRpc库的STL实现与主要避免STL的实现.STL实现速度要慢得多 - 我将47s降低到4.5s.我已经诊断出一些原因:部分原因是由于std :: string被误用(例如作者应该尽可能使用"const std :: string&" - 不要只使用std :: string's,就好像他们一样是Java字符串),但它也是因为每次向量超出其边界时都会不断地调用复制构造函数,这是非常频繁的.复制构造函数非常慢,因为它们执行了树的深层复制(XmlRpc值).
StackOverflow上的其他人告诉我,std :: vector实现通常会在每次超出缓冲区时将缓冲区的大小加倍.在VisualStudio 2008上似乎并非如此:向std :: vector添加50个项目需要对复制构造函数进行177次调用.每次加倍应该调用复制构造函数64次.如果你非常担心保持较低的内存使用率,那么每次增加50%应该调用复制构造函数121次.那么177来自哪里?
我的问题是:(a)为什么复制构造函数经常被调用?(b)如果您只是将一个对象从一个位置移动到另一个位置,是否有任何方法可以避免使用复制构造函数?(在这种情况下,实际上大多数情况下memcpy()就足够了 - 这会产生很大的不同).
(注意:我知道vector :: reserve(),我只是有点失望,应用程序员需要实现加倍技巧,这样的东西已经是任何好的STL实现的一部分.)
我的测试程序:
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int constructorCalls;
int assignmentCalls;
int copyCalls;
class C {
int n;
public:
C(int _n) { n = _n; constructorCalls++; }
C(const C& orig) { copyCalls++; n = orig.n; }
void operator=(const C &orig) { assignmentCalls++; n = orig.n; }
};
int main(int …
Run Code Online (Sandbox Code Playgroud)