每次我写一些数据类时,我通常会花很多时间编写IEquatable实现.
我写的最后一堂课是这样的:
public class Polygon
{
public Point[] Vertices { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
实现IEquatable是非常有用的.当然C#3.0/LINQ有很多帮助,但顶点可以移位和/或以相反的顺序移动,这给Equals方法增加了很多复杂性.在经过多次单元测试和相应的实现后,我放弃了,并将我的应用程序更改为仅接受三角形,其中IEquatable实现只需要完全覆盖11个单元测试.
有什么工具或技术可以帮助实现Equals和GetHashCode吗?
我希望在Python中创建一个可以添加和删除属性和方法的类.我该怎么做呢?
哦,请不要问为什么.
有没有简单的方法来更改SQL Server Management Studio默认的"Project"文件夹?我在互联网上找到了一个注册表黑客,但我宁愿不打扰它.
我正在使用SQL Server 2005 Express.
在WPF/C#中,如何旋转"图形"以面向当前鼠标位置?
基本上我想要的是一个"轮"UI控件(如模拟音量表盘).我希望能够单击并拖动拨盘,它将旋转以跟随鼠标.然后,当我释放鼠标时,它将停止跟随(显然!).
我该如何创建其中一个?一个人已经存在吗?
我现在正在玩MySQLi,试图找出它是如何工作的.在我目前的项目中,我总是喜欢在编码时回显一个查询字符串,只是为了确保一切正确,并快速调试我的代码.但是......我怎么能用准备好的MySQLi语句做到这一点?
例:
$id = 1;
$baz = 'something';
if ($stmt = $mysqli->prepare("SELECT foo FROM bar WHERE id=? AND baz=?")) {
$stmt->bind_param('is',$id,$baz);
// how to preview this prepared query before acutally executing it?
// $stmt->execute();
}
Run Code Online (Sandbox Code Playgroud)
我一直在浏览这个清单(http://www.php.net/mysqli)但没有任何运气.
编辑
好吧,如果从MySQLi内部不可能,也许我会坚持这样的事情:
function preparedQuery($sql,$params) {
for ($i=0; $i<count($params); $i++) {
$sql = preg_replace('/\?/',$params[$i],$sql,1);
}
return $sql;
}
$id = 1;
$baz = 'something';
$sql = "SELECT foo FROM bar WHERE id=? AND baz=?";
echo preparedQuery($sql,array($id,$baz));
// outputs: SELECT foo …
Run Code Online (Sandbox Code Playgroud) 我必须为工作中的项目打印一些PDF.是否有提供动态填充的方法,IE.不使用格式字符串中的硬编码代码.而是基于List的计数.
防爆.
如果我的列表长度为1000个元素,我希望这样:
Part_0001_Filename.pdf ... Part_1000_Filename.pdf
如果我的列表长500个元素,我想要这个格式:
Part_001_Filename.pdf ... Part_500_Filename.PDF
原因是Windows如何命令文件名.它按字母顺序从左到右或从右到左对它们进行排序,所以我必须使用前导零,否则文件夹中的排序会混乱.
考虑到这两个结构:
struct point {
int x,y;
};
struct pinfo {
struct point p;
unsigned long flags;
};
Run Code Online (Sandbox Code Playgroud)
还有一个改变观点的功能:
void p_map(struct point &p);
Run Code Online (Sandbox Code Playgroud)
是否可以使用boost(例如boost :: bind或boost :: lambda)创建一个等效的函数:
void pi_map(struct pinfo &pi) { p_map(pi.p); }
Run Code Online (Sandbox Code Playgroud)
-edit:更新以获取更多信息:
这个函数的初衷是在for_each中使用它.例如,给定此功能:
void p_map(struct point &p)
{
p.x += 1;
p.y += 1;
}
Run Code Online (Sandbox Code Playgroud)
我可以写:
void foreach(std::vector<struct pinfo> &pi_vec)
{
for_each(pi_vec.begin(), pi_vec.end(), pi_map);
}
Run Code Online (Sandbox Code Playgroud)
正如在答案中建议的那样,可以使用boost :: lambda绑定成员变量,并创建替代的for_each版本:
void foreach2(std::vector<struct pinfo> &pi_vec)
{
boost::function<void (pinfo&)> pi_map2 = bind(&p_map, bind(&pinfo::p, _1));
for_each(pi_vec.begin(), pi_vec.end(), pi_map2);
}
Run Code Online (Sandbox Code Playgroud)
我对这种方法的问题是,gcc(v.4.3.2)没有内联foreach2版本的pi_map和p_map函数.
为foreach1函数生成的x86代码是:
0000000000400dd0 …
Run Code Online (Sandbox Code Playgroud) 我已经为自定义字符串实现了排序算法,该字符串表示田径事件的时间或距离数据.以下是格式
'10:03.00 - 10分3秒或10英尺3英寸
排序的结果是,对于场事件,最长的投掷或跳跃将是第一个元素,而对于运行事件,最快的时间将是第一个.以下是我目前用于现场活动的代码.我没有发布,running_event_sort
因为它与大于/小于交换的逻辑相同.虽然它有效,但它看起来过于复杂,需要重构.我愿意接受建议.任何帮助都会很棒.
event_participants.sort!{ |a, b| Participant.field_event_sort(a, b) }
class Participant
def self.field_event_sort(a, b)
a_parts = a.time_distance.scan(/'([\d]*):([\d]*).([\d]*)/)
b_parts = b.time_distance.scan(/'([\d]*):([\d]*).([\d]*)/)
if(a_parts.empty? || b_parts.empty?)
0
elsif a_parts[0][0] == b_parts[0][0]
if a_parts[0][1] == b_parts[0][1]
if a_parts[0][2] > b_parts[0][2]
-1
elsif a_parts[0][2] < b_parts[0][2]
1
else
0
end
elsif a_parts[0][1] > b_parts[0][1]
-1
else
1
end
elsif a_parts[0][0] > b_parts[0][0]
-1
else
1
end
end
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Apache Commons Config jar在Ubuntu Jaunty上编译一个非常简单的Java 1.6程序.我一直得到"包org.apache.commons.configuration不存在"错误,即使jar在同一目录中.有任何想法吗?
~/source/UpdateStockHistory$ ll total 304 -rw-r--r-- 1 crosse crosse 298829 2009-06-07 17:36 commons-configuration-1.6.jar -rw-r--r-- 1 crosse crosse 149 2009-06-07 17:16 UpdateStockHistory.config.xml -rw-r--r-- 1 crosse crosse 531 2009-06-07 17:46 UpdateStockHistory.java
~/source/UpdateStockHistory$ javac -version javac 1.6.0_13
~/source/UpdateStockHistory$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 9.04 Release: 9.04 Codename: jaunty
~/source/UpdateStockHistory$ javac UpdateStockHistory.java UpdateStockHistory.java:2: package org.apache.commons.configuration does not exist import org.apache.commons.configuration.*; ^ UpdateStockHistory.java:8: cannot find symbol symbol : class …
开发时,我将user.agent
属性设置为单个值,以减少编译时间.发布时,我有一个为所有用户代理构建的WAR文件.
遗憾的是,我似乎一直忘记切换财产:
我希望自动执行此操作,最好使用maven-release-plugin.
c# ×3
.net ×1
algorithm ×1
boost ×1
c++ ×1
command-line ×1
compilation ×1
controls ×1
equals ×1
formatting ×1
gcc ×1
gethashcode ×1
gwt ×1
iequatable ×1
java ×1
linux ×1
maven-2 ×1
mysqli ×1
performance ×1
php ×1
python ×1
refactoring ×1
reflection ×1
ruby ×1
runtime ×1
sorting ×1
sql-server ×1
string ×1
wpf ×1