我最近接受采访,要求写mystrcat(*s1, *s2, *s3)在那里s1,并s2在源字符串和串联的结果给出s3.我被告知,不要担心内存分配s3和假设s1,s2并且不是空/无效字符串.所以我写了下面的蹩脚(粗)程序.我被告知有问题s3或出现问题s3.你能告诉它它是什么/可能是什么?
void mystrcat(char *s1, char *s2, char *s3)
{
if (! (s1 || s2 || s3)) return; // one/more pointers are invalid
// copy string s1 into s3
while(*s1) {
*s3 = *s1;
s1++;
s3++;
}
// concatenate string s2 into s3
while(*s2) {
*s3 = *s2;
s2++;
s3++;
}
*s3 = '\0';
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我这里有什么问题吗?做什么会更专业呢?
我一直在python中做一些工作,但这完全适用于独立应用程序.我很想知道python的任何分支是否支持Web开发?
有人会建议一个很好的教程或网站,我可以从中获取一些使用python进行Web开发的基础知识吗?
任何人都可以通过区分大小写来确定一个很好的案例(:-))吗?
C#:区分大小写的VB.NET:不区分大小写的C++:区分大小写......
更糟糕的部分:这是用来里面像VB.NET语言XML 是区分大小写.
我正在做一个很荒谬的,只能造成伤害,我们发现在我们的系统中的错误是由于一个事实,即XML有后两者的情况下V ALUE和v ALUE节点...
我在评论中一遍又一遍地被问到
"也许你可以提出一个论证,为什么不区分大小写是这样一个世界的正确选择?"
这是一个例子:我认为它类似于以下问题:URL应该区分大小写?www.cnn.com <> www.nN.com.cn 当然他们应该是一样的,ID盗窃天堂!因为人类并没有把那么多的注意力放在相同但可能有不同外壳的2根弦上.程序员是人类.所以getAge()和getage()在大多数人的脑海中都是一样的.
请注意:我认为我们不希望代码实际上有一个定义为getAget()的函数,然后让代码调用它getage(),VS(vb.net)会自动纠正getaget到getAge.所以代码很清楚,程序员知道正确的大小写.我的观点是:良好的IDE使问题不相关,但它在vb.net这样的非案例性语言中效果更好,然后让我们说c#.参考:这里
我已经将java配置为将垃圾收集信息转储到日志中(详细GC).我不确定日志中的垃圾收集条目是什么意思.这些条目的样本发布在下面.我在Google上搜索过,并没有找到可靠的解释.
我有一些合理的猜测,但我正在寻找答案,这些答案提供了条目中数字的严格定义,并由可靠的消息来源支持.对所有引用sun文档的答案自动+1.我的问题是:
8109.128:[GC [PSYoungGen:109884K-> 14201K(139904K)] 691015K-> 595332K(1119040K),0.0454530秒]
8112.111:[GC [PSYoungGen:126649K-> 15528K(142336K)] 707780K-> 605892K(1121472K),0.0934560 secs]
8112.802:[GC [PSYoungGen:130344K-> 3732K(118592K)] 720708K-> 607895K(1097728K),0.0682690 secs]
我有两个.NET应用程序通过命名管道相互通信.第一次通过时一切都很好,但是在发送第一条消息之后,服务器将再次监听,该WaitForConnection()方法抛出一条System.IO.Exception消息管道已损坏.
为什么我在这里得到这个例外?这是我第一次使用管道,但类似的模式在过去使用套接字对我有用.
代码啊!
服务器:
using System.IO.Pipes;
static void main()
{
var pipe = new NamedPipeServerStream("pipename", PipeDirection.In);
while (true)
{
pipe.Listen();
string str = new StreamReader(pipe).ReadToEnd();
Console.Write("{0}", str);
}
}
Run Code Online (Sandbox Code Playgroud)
客户:
public void sendDownPipe(string str)
{
using (var pipe = new NamedPipeClientStream(".", "pipename", PipeDirection.Out))
{
using (var stream = new StreamWriter(pipe))
{
stream.Write(str);
}
}
}
Run Code Online (Sandbox Code Playgroud)
对sendDownPipe的第一次调用让服务器打印我发送的消息就好了,但是当它再循环回来再次监听时,它就会大便.
我正在开发一个Django应用程序,它有相当复杂的模型(它模拟大学 - 课程,模块,讲座,学生等)
我已将项目分为应用程序,以使整个事情更有条理(应用程序是课程,学校,人员,模块和时间段).我有一个问题,即一个应用程序中的模型可能依赖于另一个应用程序中的模型 - 所以我必须导入它.然后第二个应用程序依赖于第一个应用程序中的模型,因此有一个循环并且Python会引发错误.
人们如何处理这个问题?我知道应用程序应该相对"独立",但在这样的系统中,例如,使用ContentTypes将学生链接到模块是没有意义的.
有没有人有类似的项目可以评论这个案例?
这是我正在使用的C程序,在头文件中我定义了一个偏移量:
#define LDR_DATA_PATHFILENAME_OFFSET 0x24 // MODULE_ITEM.PathFileName
Run Code Online (Sandbox Code Playgroud)
在程序的后面我使用它如下:
pImageName = (PUNICODE_STRING)( ((DWORD)(pUserModuleListPtr)) +
(LDR_DATA_PATHFILENAME_OFFSET-dwOffset));
Run Code Online (Sandbox Code Playgroud)
检查LDR的值时,我得到一个CXX0017:错误:找不到符号"LDR_DATA_PATHFILENAME_OFFSET". 嗯,它的定义,它编译,但它无法访问价值!我究竟做错了什么?
我需要能够将RichTextBox滚动到底部,即使我没有附加文本也是如此.我知道我可以附加文本,然后使用它来设置选择开始.但是我想确保它在底部是出于视觉原因,所以我没有添加任何文本.
我正在检查iPhone应用程序 -
int var;
if (var != nil)
Run Code Online (Sandbox Code Playgroud)
它可以工作,但在X-Code中,这会生成警告"指针和整数之间的比较".我如何解决它?
我来自Java世界,在那里我很确定上面的陈述会因为赞美而失败.
我正在构建一个应用程序,我试图允许用户提交公司和日期对的列表,并找出该日期是否有新闻事件.新闻事件存储在具有公司标识符和日期作为关键字的字典中.
newsDict('identifier','MM/DD/YYYY')=[list of news events for that date]
Run Code Online (Sandbox Code Playgroud)
这本字典比我想象的要大得多 - 甚至在内存中构建它也是如此,所以我把它分成三部分,每部分都限于特定范围的公司标识符.
我的计划是使用用户提交的列表并使用字典组来查找公司标识符的用户列表,以匹配预期将找到公司事件的特定newsDict,然后一个接一个地加载newsDicts以获取值.
那么现在我想知道将新闻事件保存在列表中是不是更好,列表中的每个项目都是元组的子列表和另一个列表
[('identifier','MM/DD/YYYY'),[list of news events for that date]]
Run Code Online (Sandbox Code Playgroud)
我的想法是,我会有一个字典,其中包含每个公司标识符的列表范围
companyDict['identifier']=(begofRangeinListforComp,endofRangeinListforComp)
Run Code Online (Sandbox Code Playgroud)
我会使用用户输入来查找我需要的范围,并构建一个按范围排序的标识符和范围列表.然后我会读取列表的相应部分以获取数据并构造输出.
我看到的最大原因是,即使将字典分成三部分,每个部分大约需要两分钟才能加载到我的机器上,字典最终需要大约600到750 mb的ram.
我很惊讶地注意到,一个包含800万行的列表只需要大约15秒的时间来加载并使用大约1/3的字典内存的1/3.
此外,由于我在列表中工作时可以丢弃列表中的行,因此当我处理用户列表时,我将释放内存.
我很惊讶,因为我认为字典是最有效的方法.但是我的嘲笑表明字典需要比列表更多的内存.我在SO和其他地方阅读其他帖子表明,任何其他结构都需要比列表指针更昂贵的指针分配.我在这里遗漏了什么,是否有更好的方法来做到这一点?
在阅读了Alberto的回答并回复我的评论后,我花了一些时间试图弄清楚如果我使用数据库如何编写该函数.现在我可能会陷入困境,因为我对db编程知之甚少
我认为使用数据库实现的代码会比以下复杂得多:
outList=[]
massiveFile=open('theFile','r')
for identifier in sortedUserList
# I get the list and sort it by the key of the dictionary
identifierList=massiveFile[theDict[identifier]['beginPosit']:theDict[identifier]['endPosit']+1]
for item in identifierList:
if item.startswith(manipulation of the identifier)
outList.append(item)
Run Code Online (Sandbox Code Playgroud)
我必须将它包装在一个函数中,如果我将列表转换为数据库,我没有看到任何相对简单的函数.
当然,更简单的不是把我带到这个论坛的原因.我仍然没有看到使用其他结构将花费更少的内存.我有30000个公司标识符和大约3600个日期.我列表中的每个项目都是OOD用语中的对象.这就是我在挣扎的地方,今天早上我花了六个小时来组织字典的数据,然后才放弃.花费一定的时间来实现一个数据库,然后发现我正在使用半个或更多别人的内存加载它似乎有问题
python ×3
c ×2
c# ×2
.net-3.5 ×1
c++ ×1
dependencies ×1
dictionary ×1
django ×1
iphone ×1
java ×1
list ×1
logging ×1
named-pipes ×1
objective-c ×1
performance ×1
primitive ×1
richtextbox ×1
scroll ×1
string ×1
winforms ×1