这是计算整数平方根的简单方法:
int isqrt(int num)
{
int root=0;
int b = 0x8000;
int a=0, c=0;
while (b) {
c = a|b;
if (c*c <= num)
a |= b;
b >>= 1;
}
}
Run Code Online (Sandbox Code Playgroud)
巧妙地(感谢维基百科),这可以像这样进行优化:
int sqrt(short num)
{
int op = num;
int res = 0;
int one = 1 << 30;
while (one > op)
one >>= 2;
while (one != 0) {
if (op >= res + one) {
op -= res + one;
res = (res …Run Code Online (Sandbox Code Playgroud) 我正在尝试在自定义中实现搜索功能,ListView因此我隐藏Items了一个ObservableCollection允许的自定义AddRange,类似于在damonpayne.com上定义的那个(对于tl; dr-ers在那里基本上它会抑制触发OnCollectionChanged事件,同时添加多个项目随后发射NotifyCollectionChangedAction.Reset):
public new MyCollection<ListViewItem> Items { get; protected set; }
Run Code Online (Sandbox Code Playgroud)
该MyCollection_CollectionChanged()填充base.Items:
this.BeginUpdate();
base.Items.Clear();
base.Items.AddRange(this.Items.ToArray());
this.EndUpdate();
Run Code Online (Sandbox Code Playgroud)
这个想法是,当项目不满足搜索条件时,它们将从base.Items(即System.Windows.Forms.ListView)中删除,但保留在this.Items(即My.Name.Space.MyListView)中.取消搜索或更改条款时,base.Items可以重新填充this.Items.
除了一个小但重要的警告之外,这个工作正常并且符合预期:
问题是,ListViewItemS' Group是不是一直被从携带this.Items到base.Items,因此所有的项目出现在组'默认’.
关于为什么会发生这种情况以及如何解决问题的任何想法?
我仍然坚持这个.肯定做的.ToArray()只是创建一个浅的副本,Items所以Group应该保留?Maverik已经证实了这一点:
好的,经过一些调查我发现它发生了什么.
将ListViewItems 添加到MyCollection<ListViewItem>: …
我有一个名为的主类theGarage,它包含我们的客户,供应商和工作类的实例.
我想将程序数据保存到XML文件,我使用了下面的代码(只是一个片段,我有其他类的匹配代码).我想知道是否有一种更简单的方法来执行此操作,例如将整个theGarage类写入XML文件并将其读入,而不必像下面那样编写所有这些代码.
public void saveToFile()
{
using (XmlWriter writer = XmlWriter.Create("theGarage.xml"))
{
writer.WriteStartDocument();
///
writer.WriteStartElement("theGarage");
writer.WriteStartElement("Customers");
foreach (Customer Customer in Program.theGarage.Customers)
{
writer.WriteStartElement("Customer");
writer.WriteElementString("FirstName", Customer.FirstName);
writer.WriteElementString("LastName", Customer.LastName);
writer.WriteElementString("Address1", Customer.Address1);
writer.WriteElementString("Address2", Customer.Address2);
writer.WriteElementString("Town", Customer.Town);
writer.WriteElementString("County", Customer.County);
writer.WriteElementString("PostCode", Customer.Postcode);
writer.WriteElementString("TelephoneHome", Customer.TelephoneHome);
writer.WriteElementString("TelephoneMob", Customer.TelephoneMob);
//begin vehicle list
writer.WriteStartElement("Vehicles");
foreach (Vehicle Vehicle in Customer.Cars)
{
writer.WriteStartElement("Vehicle");
writer.WriteElementString("Make", Vehicle.Make);
writer.WriteElementString("Model", Vehicle.Model);
writer.WriteElementString("Colour", Vehicle.Colour);
writer.WriteElementString("EngineSize", Vehicle.EngineSize);
writer.WriteElementString("Registration", Vehicle.Registration);
writer.WriteElementString("Year", Vehicle.YearOfFirstReg);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
}
}
}
Run Code Online (Sandbox Code Playgroud) 反正有没有做LINQ2SQL查询做类似的事情:
var result = source.GroupBy(a => new { a.Column1, a.Column2 });
Run Code Online (Sandbox Code Playgroud)
要么
var result = from s in source
group s by new { s.Column1, s.Column2 } into c
select new { Column1 = c.Key.Column1, Column2 = c.Key.Column2 };
Run Code Online (Sandbox Code Playgroud)
但忽略了分组列内容的情况?
我四处搜索,但在VS2012中#region之后我找不到改变"name"颜色的选项.
例如,如果我有以下代码:
#region Test some code
CallSomeCode();
#endregion
Run Code Online (Sandbox Code Playgroud)
我该如何改变颜色Test some code?
我正在使用jQuery提交我的表单变量,我试图阻止表单通过常规方式提交(单击提交按钮或按其中一个字段输入)
我有这个:
$('#form').submit(function(){
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
但它似乎没有工作我的表格仍在提交,转到process.php页面..
我有一个第三方库返回一个对象数组的对象数组,我可以填充到一个对象[]:
object[] arr = myLib.GetData(...);
Run Code Online (Sandbox Code Playgroud)
结果数组由object []条目组成,因此您可以将返回值视为某种记录集,其中外部数组表示行,而内部数组包含可能未填充某些字段的字段值(锯齿状数组) .要访问各个字段,我必须像:
int i = (int) ((object[])arr[row])[col];//access a field containing an int
Run Code Online (Sandbox Code Playgroud)
现在因为我很懒,我想要访问这样的元素:
int i = (int) arr[row][col];
Run Code Online (Sandbox Code Playgroud)
为此,我使用以下Linq查询:
object[] result = myLib.GetData(...);
object[][] arr = result.Select(o => (object[])o ).ToArray();
Run Code Online (Sandbox Code Playgroud)
我尝试使用简单的强制转换,object[][] arr = (object[][])result;但失败并出现运行时错误.
现在,我的问题:
编辑:
谢谢大家的快速回答.
@James:我喜欢你在新课程中结束罪魁祸首的答案,但缺点是我在接受源数组时总是要做Linq包装,而索引器需要row和col值int i = (int) arr[row, col]; (我需要得到一个完整的行也很喜欢object[] row = arr[row];,抱歉没有发布在开头).
@Sergiu Mindras:像James一样,我认为扩展方法有点危险,因为它适用于所有object[]变量.
@Nair:我为我的实现选择了你的答案,因为它不需要使用Linq包装器,我可以int i = (int) arr[row][col];使用object[] row = arr[row];
@quetzalcoatl和@Abe Heidebrecht 使用或整行访问两个单独的字段:感谢提示Cast<>(). …
这似乎很简单,但我找不到办法.我需要显示整数的立方根是否为整数.我is_integer()在Python 3.4中使用了float方法但是没有成功.如
x = (3**3)**(1/3.0)
is_integer(x)
True
Run Code Online (Sandbox Code Playgroud)
但
x = (4**3)**(1/3.0)
is_integer(x)
False
Run Code Online (Sandbox Code Playgroud)
我想x%1 == 0,x == int(x)并isinstance(x,int)没有成功.
我很感激任何评论.
我正在编写一个Action Filter(继承自ActionFilterAttribute),它用于HttpClient将数据POST到方法中的外部服务器OnResultExecuted.HttpClient有一个PostAsync返回等待的方法Task<HttpResponseMessage>.
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
using (var client = new HttpClient())
{
var task = client.PostAsync(GetUri(), GetContent());
var result = task.Result; // blocking
}
}
Run Code Online (Sandbox Code Playgroud)
MVC 4中对Async动作过滤器的接受答案表明它在MVC 4中是不可能的.
这在MVC 5中是否仍然如此,如果是这样,在不阻塞线程的情况下调用此异步方法的最佳方法是什么?
我正在使用MagicalRecord 2.0.3,我无法弄清楚如何在后台保存数据.
根据文档,这样的东西应该工作:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
// Do this hundreds of times
[MyObject createInContext:localContext];
}];
Run Code Online (Sandbox Code Playgroud)
但是,没有任何内容保存到数据库中.我见过多个人发布类似这样的解决方案:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
// Do this hundreds of times
[MyObject createInContext:localContext];
} completion:^{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[[NSManagedObjectContext defaultContext] saveNestedContexts];
}];
}];
Run Code Online (Sandbox Code Playgroud)
这确实将我的数据保存在数据库中,但是由于保存发生在主线程上,我的应用程序暂时没有响应(使用我的数据集,大约3秒,这太长了).
我也尝试过这个,但它在保存时也会阻塞:
self.queue = [[NSOperationQueue alloc] init];
[self.queue addOperationWithBlock:^{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
// Do this hundreds of times
[MyObject createInContext:localContext];
[localContext saveNestedContexts];
}];
Run Code Online (Sandbox Code Playgroud)
最后,与此代码相同的阻止效果:
dispatch_queue_t syncQueue = dispatch_queue_create("Sync queue", NULL);
dispatch_async(syncQueue, ^{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
// Do …Run Code Online (Sandbox Code Playgroud) c# ×6
linq ×2
.net-3.5 ×1
algorithm ×1
arrays ×1
asp.net-mvc ×1
async-await ×1
core-data ×1
file ×1
forms ×1
ios ×1
jquery ×1
linq-to-sql ×1
listview ×1
math ×1
optimization ×1
python ×1
python-3.x ×1
submit ×1
winforms ×1
xml ×1