我在回顾Knuth的"计算机编程艺术"时阅读了以下内容:
"非常'实用性'意味着想成为CS的专业人员必须学习Kernighan在设计C时的错误,特别是一个臭名昭着的事实,即for循环反复评估for条件,这与大多数其他语言的行为重复并且无法匹配它实现了for循环."
(http://www.amazon.com/review/R9OVJAJQCP78N/ref=cm_cr_pr_viewpnt#R9OVJAJQCP78N)
这家伙在说什么?你怎么能实现一个for循环不仅仅是一个while循环的语法糖?
随着我对计算机科学,人工智能和神经网络的了解越来越多,我不断对计算机可以做和学习的很酷的东西感到惊讶.我一直对新旧项目着迷,而且我对其他SO用户遇到的有趣项目/应用感到好奇.
我最近对硬件编程感兴趣,我想知道什么是我作为电子业余爱好者的最佳选择.我不是在寻找汇编程序和创建电路板的低级编程.
相反,我想要一些API用于高级语言,最好是C#和预制组件,如USB接口板,我可以插入简单的传感器,电机等,并构建一些"小工具",也许是一个简单的机器人等等. ..
到目前为止,我已经找到Phidgets,但只有少数传感器,而且它也非常昂贵.
因此,问题是:您是否了解具有良好API和大量传感器的任何其他"平台"?
根据这个:
IronPython(Python for .Net)在同一台机器上比常规Python(cPython)更快.为什么是这样?我认为编译的C代码总是比等效的CLI字节码快.
我需要一个经过良好测试的正则表达式(.net样式首选),或其他一些简单的代码,它们将美国/加拿大电话号码解析为组件部分,因此:
等等...
所有解析成:
我正在使用并行linq,我正在尝试使用这样的必要代码同时下载许多url:
int threads = 10;
Dictionary<string, string> results = urls.AsParallel( threads ).ToDictionary( url => url, url => GetPage( url );
Run Code Online (Sandbox Code Playgroud)
由于下载网页是网络绑定而不是CPU绑定,因此使用比我的处理器/内核数量更多的线程是非常有益的,因为每个线程中的大部分时间都花在等待网络赶上.但是,从我的双核机器上运行上面的thread = 2与thread = 10相同的事实判断,我认为发送到AsParallel的踏板仅限于核心数量.
有没有办法覆盖这种行为?是否有类似的库没有此限制?
(我已经为python找到了这样的库,但需要在.Net中运行的东西)
我最近读了很多关于如何编写多线程应用程序是一个巨大的痛苦,并已经足够了解该主题,至少在某种程度上,为什么会这样理解.
我已经读过使用函数式编程技术可以帮助缓解一些痛苦,但我从未见过一个简单的并发功能代码示例.那么,使用线程有哪些替代方案呢?至少,有哪些方法可以将它们抽象出来,这样你就不必考虑锁定之类的事情以及特定库的对象是否是线程安全的.
我知道谷歌的MapReduce应该可以解决问题,但我还没有看到它的简洁解释.
虽然我在下面给出一个具体的例子,但我对一般技术比对解决这个特定问题更感兴趣(使用这个例子来帮助说明其他技术会有所帮助).
当我写一个简单的网络爬虫作为学习练习时,我提出了这个问题.它工作得很好,但速度很慢.大部分瓶颈来自下载页面.它目前是单线程的,因此一次只下载一个页面.因此,如果可以同时下载页面,即使爬虫在单个处理器计算机上运行,也会大大加快速度.我考虑使用线程来解决问题,但他们吓到了我.关于如何在不释放可怕的线程噩梦的情况下为这类问题添加并发性的任何建议?
在VBScript中,一些内置对象使用未命名的属性.一些例子:
Set Dict = Server.CreateObject("Scripting.Dictionary")
Set RS = GetEmloyeesRecordSet()
Dict("Beer") = "Tasty" ' Same as Dict.Item("Beer") = "Tasty"
Dict("Crude Oil") = "Gross" ' Same as Dict.Item("Crude Oil") = "Gross"
Response.Write "The First Employee Is: " & RS("Name") ' Same as RS.Fields("Name")
Run Code Online (Sandbox Code Playgroud)
如何在我自己的类中使用相同的语法?
UPDATE
这是一个如何执行此操作的独立示例,它是Scripting.Dictionary的简单包装器.注意使用"Let"来允许d("key")="value"语法.当然,Thom会提供答案.
<%
Class DictWrapper
Private Dict
Private Sub Class_Initialize()
Set Dict = Server.CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
Set Dict = Nothing
End Sub
Public Property Get Count
Count = Dict.Count
End Property
Public Default Property Get …Run Code Online (Sandbox Code Playgroud) 所以我在下面的代码中修复了一个有趣的错误,但我不确定我最好的方法:
p = 1
probabilities = [ ... ] # a (possibly) long list of numbers between 0 and 1
for wp in probabilities:
if (wp > 0):
p *= wp
# Take the natural log, this crashes when 'probabilites' is long enough that p ends up
# being zero
try:
result = math.log(p)
Run Code Online (Sandbox Code Playgroud)
因为结果不需要精确,我通过简单地保持最小的非零值来解决这个问题,并且如果p变为0则使用它.
p = 1
probabilities = [ ... ] # a long list of numbers between 0 and 1
for wp in probabilities:
if (wp > …Run Code Online (Sandbox Code Playgroud) 我编写了一个函数,从列表中获取给定数量的随机记录.目前我可以这样做:
IEnumerable<City> cities = db.Cites.GetRandom(5);
Run Code Online (Sandbox Code Playgroud)
(其中db是我的DataContext连接到SQL Server数据库)
目前,我在每个需要随机记录的实体中都有这样的函数:
public partial class City
{
public static IEnumerable<City> GetRandom(int count)
{
Random random = new Random();
IEnumerable<City> cities = DB.Context.Cities.OrderBy( c => random.Next() ).Take(count);
return cities;
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我希望它是通用的,所以它可以适用于任何表,甚至任何项目列表.我尝试了一种扩展方法,如:
public static IEnumerable<T> GetRandom<T>( this Table<T> table, int count)
{
Random random = new Random();
IEnumerable<T> records = table.OrderBy(r => random.Next()).Take(count);
return records;
}
Run Code Online (Sandbox Code Playgroud)
但我得到:
Error 1 The type 'T' must be a reference type in order to use it as parameter 'TEntity' …
在这篇博客文章中,他们使用了构造:
@measured
def some_func():
#...
# Presumably outputs something like "some_func() is finished in 121.333 s" somewhere
Run Code Online (Sandbox Code Playgroud)
该@measured指令似乎不适用于原始python.它是什么?
更新:我从Triptych看到它@something是有效的,但我可以在哪里找到@measured它,是在某个地方的某个库中,还是这个博客的作者使用他自己的私有代码库中的东西?
我正在尝试编写一个简单的SQL解析器来将sql语句分解为其基本部分.但是,我遇到嵌套查询的问题.一个例子说明最好的:
sql = "select * from Customers where id in (select customer_id from Orders where 1=1)"
Set re = New RegExp
re.IgnoreCase = True
re.Pattern = "^(.*)\swhere\s(.*)$"
re.Global = True
Set matches = re.Execute( sql )
If matches.count > 0 Then
Set submatches = matches(0).Submatches
where_part = Trim(submatches(1))
everything_else = Trim(submatches(0))
End If
Response.Write where_part & "<br>"
Response.Write everything_else & "<br>"
Run Code Online (Sandbox Code Playgroud)
在这里,我希望where_part包含"id in(从订单中选择customer_id,其中1 = 1)"和everything_else包含"select*from Customers".也就是说,我希望它尽可能地贪婪,第二个(.*)和第一个无私.换句话说,我希望everything_else不包含任何地方.
但是,我得到everything_else ="select*from customer in id in(select order_id from Orders"and where_part ="1 = 1)"
如何在不诉诸凌乱的非regexp字符串解析的情况下解决这个问题?
我不确定如何描述我想做什么,所以我将使用一个人为的例子
在SQL Server 2005上,假设我有一个像这样的行的视图,称之为vwGrades:
ID AssnDate AssnTxt Sally Ted Bob
----------- ----------------------- ------------- ----------- ----------- -----------
2999 2007-09-22 00:00:00 Homework #1 20 NULL NULL
2999 2007-09-22 00:00:00 Homework #1 NULL 0 NULL
2999 2007-09-22 00:00:00 Homework #1 NULL NULL 24
2999 2007-09-22 00:00:00 Final Exam 57 NULL NULL
2999 2007-09-22 00:00:00 Final Exam NULL 0 NULL
2999 2007-09-22 00:00:00 Final Exam NULL NULL 35
Run Code Online (Sandbox Code Playgroud)
我如何查询它,以便我得到这个,摆脱所有恼人的空值和重复的行?
ID AssnDate AssnTxt Sally Ted Bob
----------- ----------------------- ------------- ----------- ----------- -----------
2999 2007-09-22 00:00:00 …Run Code Online (Sandbox Code Playgroud) c# ×2
linq ×2
parsing ×2
python ×2
vbscript ×2
c ×1
c++ ×1
class ×1
concurrency ×1
decorator ×1
embedded ×1
generics ×1
hardware ×1
ironpython ×1
knuth ×1
performance ×1
phone-number ×1
regex ×1
regex-greedy ×1
sql ×1
sql-server ×1