我需要提高数据加载的性能.当前的algorythm从表中完整选择:
select Field1, Field2,...,FieldN from Table1 order by FieldM
Run Code Online (Sandbox Code Playgroud)
从文本文件(例如,每个数据表行的文本文件行)读取新数据.该表有一个主键,包含两个字段.对于文本文件的每一行,它通过这两个字段(即主键)定位必要的行.
query.Locate('Field1;Field2',VarArrayOf([Value1,Value2]),[]);
Run Code Online (Sandbox Code Playgroud)
如果Locate返回True,则编辑该行,否则添加新行.
因此,只要该表包含大约200000行,每个Locate操作都需要一定的时间...因此它设法每秒更新大约5-6行.
我应该考虑采取哪些措施来改善它?
可能通过单独的查询替换通过这个伟大的选择定位?
说,我有一个界面
public interface ISomeControl
{
Control MyControl { get; }
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以像这样定义smth:
public static implicit operator Control(ISomeControl ctrl)
{
return ctrl.MyControl;
}
Run Code Online (Sandbox Code Playgroud)
或者更确切地说,为什么我不能在C#中这样做?
我有一个函数有两个固定的参数.但是下一个论点并不固定,可能有两个或三个或四个.
这是一个运行时参数,那么如何定义该函数呢?
我的代码看起来像:
public ObservableCollection<ERCErrors> ErrorCollectionWithValue
(string ErrorDode, int MulCopyNo, dynamic arguments comming it should be 2 or 3)
{
return null;
}
Run Code Online (Sandbox Code Playgroud) 我想做这样的事情
void DoSomething<T>(T param)
{
if param is IEnumerable<?>
{
loop param and do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道在问号的位置做什么.它有可能吗?
我需要打开一个FrmEscalacao,它将FrmAdmin的信息发送到FrmEscalacao,并带有一个名为"time"的字符串
这是FrmAdmin的代码
public partial class FrmAdmin : Form
{
private string time;
public FrmAdmin(string time)
{
InitializeComponent();
this.time = time;
}
public void btnEscalar_Click(object sender, EventArgs e)
{
this.Hide();
FrmEscalacao f1 = new FrmEscalacao();
f1.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
}
这是FrmEscalacao的代码
public partial class FrmEscalacao : Form
{
public string time;
private void FrmEscalacao (string time)
{
InitializeComponent();
this.time = time;
SQLiteConnection ocon = new SQLiteConnection(Conexao.stringConexao);
DataSet ds = new DataSet();
ocon.Open();
SQLiteDataAdapter da = new SQLiteDataAdapter();
da.SelectCommand = new SQLiteCommand("Here is the …Run Code Online (Sandbox Code Playgroud) 在我的脑海中提出的问题是否可以从List中访问结构的引用以进行更改?由reza线程.
所以,请考虑以下struct和interface(definetely不是非常有用,但只是为了显示这个问题):
public interface IChangeStruct
{
int Value { get; }
void Change(int value);
}
public struct MyStruct : IChangeStruct
{
int value;
public MyStruct(int _value)
{
value = _value;
}
public int Value
{
get
{
return value;
}
}
public void Change(int value)
{
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
MyStruct实现IChangeStruct,所以我们可以在堆中更改它的盒装副本,而不用拆箱并替换为新的.这可以通过以下代码演示:
MyStruct[] l1 = new MyStruct[]
{
new MyStruct(0)
};
Console.WriteLine(l1[0].Value); //0
l1[0].Change(10);
Console.WriteLine(l1[0].Value); //10
Run Code Online (Sandbox Code Playgroud)
现在,让我们将数组更改为List<T>,即: …
我永远按下Ctrl + S是一个相当矛盾的习惯.否定的一面是delphi在保存时删除了空函数/过程.
有没有办法防止IDE在保存时删除空体的函数/过程?
我需要创建一对/三元组的东西并存储在某个地方.我该怎么做?
我试过了:
for (int i = 0; i < 100; i++)
{
var item=new { a=i , b="lala" ,c=4.5m}; //anonymous type
}
Run Code Online (Sandbox Code Playgroud)
但后来我想:List<what>?
我可以使用动态,但我想要Intellisense.
(我也可以使用,Tuple<int,string,decimal>但如果我已经拥有我需要的东西(=new { a=i , b="lala" ,c=4.5m};),我为什么要使用其他类型(元组)?)
这有什么解决方案吗?
假设我们有两个类:
public class ParentEntity
{
public ChildEntity Child { get; set; }
}
public class ChildEntity
{
public byte? NullableValue { get; set; }
public byte Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
任务是在linq表达式中表达以下代码:
parent.Child == null ? null : parent.Child.NullableValue
Run Code Online (Sandbox Code Playgroud)
为此,我尝试使用以下代码:
public static Expression GetCondition<TParent, TChild, TChildKey>(
Expression<Func<TParent, TChild>> pe,
Expression<Func<TChild, TChildKey>> ce)
{
var test = Expression.Equal(pe.Body, Expression.Constant(null));
var ifTrue = Expression.Constant(Activator.CreateInstance<TChildKey>());
var ifFalse = Expression.Property(pe.Body,
(ce.Body as MemberExpression).Member.Name);
return Expression.Condition(test, ifTrue, ifFalse);
}
Run Code Online (Sandbox Code Playgroud)
运行此代码
Expression<Func<ParentEntity, ChildEntity>> pe = …Run Code Online (Sandbox Code Playgroud) 据我了解,在大多数情况下,此异常表明证书所有者 CN(公用名)与 url 中的主机名不匹配。然而就我而言,它们确实匹配,但异常仍然出现。
远程服务器证书层次结构是:
CN=sms.main.ruCN=client.sms.main.ru我的 java 客户端在 apache-tomcat 6 下启动并尝试连接https://client.sms.main.ru/并抛出以下异常:
No name matching client.sms.main.ru found
Run Code Online (Sandbox Code Playgroud)
这两个证书都添加到$JAVA_HOME/jre/lib/security/cacertsvia中,如unixtippse 的答案中的How do you configure Apache/Tomcat to trust服务器到服务器 https 请求的内部证书颁发机构$JAVA_HOME/bin/keytool所示。
Java 代码非常简单:
URL url = new URL(strurl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Connection", "close");
con.setDoOutput(true);
con.connect();
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
有趣的是,当我尝试在 Windows PC 上使用浏览器访问此 url 时,它说该证书不受信任,我将其添加到浏览器例外列表中,并且工作正常。所以看起来我cacerts错误地添加了这些证书,因此 java 无法使用它们。但我可以通过别名或 CN 轻松找到它们:
$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts | less
Run Code Online (Sandbox Code Playgroud)