我目前遇到的问题是我有一个(部分)程序试图加载一个类但失败,因为它找不到这个类.查看堆栈跟踪,我看不出任何特定原因导致 VM首先尝试加载此特定类.是否有任何工具可以让我弄清楚为什么要加载特定的类?
提示:我已经在JVM尝试加载类(通过代理)的确切位置获取堆栈跟踪.但是,堆栈跟踪不包含行号.因此我只知道哪个方法触发了正在加载的类,而不是哪个语句.然后,即使知道该陈述可能还不够.单个语句可以导致以多种方式加载类,因为有时VM需要加载类的传递闭包的一部分.
这里有一些争论,哪个更适合从其他项目引用我们的公共代码库:通过项目或汇编.我赞成引用该项目,特别是因为我们有自动化的单元测试,证明公共代码能够满足它的需要.
另一个阵营的想法是锁定那些项目,每月只发布一次或类似的东西.然后强制所有项目引用程序集.他们认为这将保护他们免于部署未经测试的代码.他们"太忙"无法编写自动化单元测试并将其项目配置为持续集成,我对此没有任何影响,所以请不要关注这方面.
这就是我能想到为什么项目参考是更好的解决方案的原因.我也在寻找其他意见.
优点:
缺点:
我正在测试我的配置文件以获取win表单应用程序.在LocalTestRun.testrunconfig中,我将其设置为复制app.config.我已经检查了Environment.CurrentDirectory
测试运行的时间,文件也没有这个额外的连接字符串.这是测试方法:
[TestMethod]
public void Configuration_ConnectionStrings_Connect()
{
Console.WriteLine(Environment.CurrentDirectory);
Assert.IsTrue(System.IO.File.Exists("App.Config"));
var configFileMap = new ExeConfigurationFileMap(){ ExeConfigFilename = "App.Config"};
var config= ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
foreach (ConnectionStringSettings connectionString in config.ConnectionStrings.ConnectionStrings)
{
//Assumes all connections are to Sql server, test must be updated if not
Assert.AreEqual("System.Data.SqlClient",connectionString.ProviderName,"Test was only designed for SQL clients");
using (var cn=new System.Data.SqlClient.SqlConnection(connectionString.ConnectionString))
{
cn.Open();
Assert.AreEqual(System.Data.ConnectionState.Open,cn.State);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我迭代时,config.ConnectionStrings.ConnectionStrings
我有一个不在文件中的额外配置字符串:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
Run Code Online (Sandbox Code Playgroud)
这不是,也从来不是一个asp.net项目.
这是配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" …
Run Code Online (Sandbox Code Playgroud) 在我的基于TabBar的iPhone应用程序中,我想在实际应用程序加载之前显示全屏欢迎页面(带有一些日志),如何从xib文件加载UIView作为欢迎屏幕,然后从那里我可以加载我的TabBar基础申请.
我正在处理我希望在处理它们时读入缓冲区的小文本文件,所以我想出了以下代码:
...
char source[1000000];
FILE *fp = fopen("TheFile.txt", "r");
if(fp != NULL)
{
while((symbol = getc(fp)) != EOF)
{
strcat(source, &symbol);
}
fclose(fp);
}
...
Run Code Online (Sandbox Code Playgroud)
这是将文件内容放入缓冲区还是滥用的正确方法strcat()
?
然后我遍历缓冲区:
for(int x = 0; (c = source[x]) != '\0'; x++)
{
//Process chars
}
Run Code Online (Sandbox Code Playgroud) 我想写一个java while循环,它将迭代15秒.我认为这样做的一种方法是存储当前系统时间+ 15秒,然后将其与while循环签名中的当前时间进行比较.
有没有更好的办法?
我已经告诉System.IO.MemoryStream不必在被包装使用的块,因为没有基本的资源,这有点违背我一直都告诉流("如有疑问,请使用使用 ") .
这是真的?为什么MSDN示例使用一个(总结如下)?
using(MemoryStream memStream = new MemoryStream(100))
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud) 我不确定这是正确的行为还是我身边的错误:
我有一个非常简单的亲子关系
public class SubmittedBatch
{
public virtual Guid Id { get; set; }
public virtual IList<SubmittedBatchParameter> Parameters { get; private set; }
}
public class SubmittedBatchParameter
{
public virtual string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并使用FluentNH配置如下:
mapping.HasMany<SubmittedBatchParameter>(sb => sb.Parameters).Cascade.All();
Run Code Online (Sandbox Code Playgroud)
我做了一些简单的事情,比如在Parameters
集合中添加一个新元素,然后调用SaveOrUpdate
父元素.
查看SQL语句的跟踪,我得到一个插入:
INSERT INTO [SubmittedBatchParameter]
(Value)
VALUES ('Disabled' /* @p0 */)
select SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
然后更新:
UPDATE [SubmittedBatchParameter]
SET SubmittedBatch_id = '209971b7-c311-46bd-b989-9cf80113654c' /* @p0_0 */
WHERE Id = 39 /* @p1_0 */
Run Code Online (Sandbox Code Playgroud)
为什么NH只是在指定Guid的情况下进行插入?这是正确的,还是我做错了什么?
谢谢西蒙娜
我有一个Hashtable类型的Hashtable
我已经加载了几个字符串作为键,其中一个是"ABCD"
但是,稍后当我去查找"ABCD"时,Hashtable返回null而不是关联的对象.此外,密钥集包含"ABCD",但对containsKey("ABCD")的请求返回false.
这是因为String对象本质上是不同的对象吗?
如果是这样,如果我想使用字符串作为键,那么在Hashtable中存储信息的写入方式是什么?
public class Field {
private String name;
private DataType dataType;
public Field(String name, DataType dataType) {
this.name = name;
this.dataType = dataType;
}
public String getName() {
return name;
}
public DataType getDataType() {
return dataType;
}
public String toString() {
return name;
}
}
public class Record {
private Hashtable<String, Data> content;
public Record(Field[] fieldList) {
this.fieldList = fieldList;
content = new Hashtable<String, Data>();
System.out.println(fieldList.length);
for(Field f : fieldList) {
content.put(f.getName(), new Data());
} …
Run Code Online (Sandbox Code Playgroud) java ×3
.net ×2
c ×2
c# ×2
app-config ×1
assemblies ×1
buffer ×1
hashtable ×1
input ×1
ios ×1
iphone ×1
jvm ×1
nhibernate ×1
project ×1
reference ×1
sql ×1
stream ×1
string ×1
time ×1
unit-testing ×1
while-loop ×1