如果我正在创建一个接收两个必需参数的函数,一个是回调函数,另外一个是可选的,我可以如何对它进行编码,这样当我只用它的2个必需参数调用它时.
例如:
功能保存(颜色,大小,重量,回调){...}
颜色和回调是强制性的,尺寸和重量是可选的.因此,如果有人想要仅使用颜色和回调来调用此函数...
save('blue',function(...){...}){...}
save('blue', 56, function(...) { ... }) { ... }
Run Code Online (Sandbox Code Playgroud)
但这会将回调函数分配给大小和重量,我该如何解决这个问题呢?
我在C#中创建一个应用程序,它使用winform作为GUI和一个在后台运行的独立线程自动更改东西.例如:
public void Run()
{
while(true)
{
printMessageOnGui("Hey");
Thread.Sleep(2000);
// Do more work
}
}
Run Code Online (Sandbox Code Playgroud)
如何让它在循环中的任何位置暂停,因为循环的一次迭代大约需要30秒.所以我不想在完成一个循环之后暂停它,我想按时暂停它.
我有一张桌子
id | message | date_posted
1 | testing | 2011-03-08 03:15:13
2 | testing | 2011-03-06 03:15:13
3 | testing | 2011-03-08 03:15:13
Run Code Online (Sandbox Code Playgroud)
并且需要一个查询,我以desc顺序返回不同日期的列表.我试着像这样制定一个查询
SELECT DISTINCT CAST(`date_posted` AS DATE) AS dateonly FROM table
Run Code Online (Sandbox Code Playgroud)
这给了我约会,但它们并不明显,并且有重复.
有任何想法吗?(使用php/mysql)
主要编辑:
忘了重要的一条信息.我试图根据月份和年份获得独特的日期.
2011-03-08 03:15:13
2011-03-06 03:15:13
2011-03-02 03:15:13
2011-03-01 03:15:13
2011-02-01 03:15:13
Run Code Online (Sandbox Code Playgroud)
所以运行查询只会返回[2011-03-dd,2011-02-01](dd是任何一天)
为没有说明这一点而道歉.
我正在编写一个内核模块来监视一些想要在调用成功时将函数参数返回到user-land(通过netlink socket)的系统调用.
jprobe.kp.symbol_name = "rename";
jprobe.entry = rename_handler;
kretprobe.kp.symbol_name = "rename";
kretprobe.handler = rename_ret_handler;
static rename_obj_t _g_cur_rename = NULL;
static void _rename_handler(const char *oldpath, const char *newpath)
{
_g_cur_rename = create_rename(oldpath, newpath);
jprobe_return();
}
static void _rename_ret_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
{
/* Send only if successful */
if (regs_return_value(regs) == 0) {
add_send_queue(_g_cur_rename);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我担心另一个重命名系统调用可以抢占[1] jprobe之后的当前一个,我将发送错误的返回码和参数.
jprobe: rename(a, b)
jprobe rename(c, d)
kretprobe
kretprobe
Run Code Online (Sandbox Code Playgroud)
编辑:本文[2]指出在kprobe处理程序期间禁用了中断.但这是否意味着整个链中断(jprobe - > kprobe - > kretprobe)或仅针对那个单独的kprobe中断?
老实说,这是一个任务问题,但我无法找到解决方案.请记住,我不是要求答案,只是一些指导.
问题:设计一个在O(n)时间(线性)运行的算法,该算法可以在2D网格上定位单个可疑房屋(点).如果消耗等于或大于其两个垂直和两个水平邻居的电力消耗是可疑的.注意:只想要一个可疑的房子被退回
解决方案:甚至不确定如何实现这样的解决方案.如果你检查n个房子,你也可以检查周围的四个邻居.4n/n ^ 2,简化为4/n.这意味着随着网格的扩展,它不太可能找到可疑的房子.
我尝试过: - 不同的数据结构(大多数是nlogn) - 折叠网格(再次nlogn)
提前致谢.
编辑:
我的错误,网格是(nxn)使房屋数量n ^ 2,抱歉混乱.
EDIT2:
这确实是个问题,也许我读错了?
警方正在寻找电力消耗特别大的房屋.为了简化问题,想象一下他们正在调查在n×n网格上布置的房屋.电网上的每个房屋都有一些耗电量e(i,j).如果房屋的电力消耗等于或大于其垂直和水平邻居的每一个,警察会认为该房屋是可疑的.设计一个在O(n)时间内运行并返回可疑房屋位置的算法.
我想制作一个进度条来跟踪我正在做的每个事件的状态,而不是一个静音程序或一个带控制台的程序.
事件:
等...
现在,在我完成其中一个任务之后,我将增加进度条以指示它已完成,并且我写入DataGridTable,状态已从"正在计算..."更改为"完成".
为简单起见,我说我有一个文件compute.cs和form.cs. 我的表单启动了,我按下'execute'运行compute.cs脚本,该脚本通过以下方式将其状态转发回表单:
compute.cs
form.SetStatus(eventId,eventStatus);
form.cs
委托void SetMetricStatusDelegate(字符串度量,字符串状态);
public void SetMetricStatus(字符串度量,字符串状态){...}
最后,问题.我运行我的程序,每个任务大约需要三秒钟才能完成,但进度条和表格没有更新.完成所有事件后,进度条和表格将正确更新.
使用C#表单上的进度条记录进度的正确方法是什么?
c# ×2
algorithm ×1
asynchronous ×1
c ×1
callback ×1
javascript ×1
kernel ×1
linux ×1
linux-kernel ×1
mysql ×1
progress-bar ×1
sql ×1
suspend ×1
winforms ×1