Linux:在执行umount时哪个进程导致"设备忙"?
我们有一个包含大约500,000行代码的项目,使用git进行管理,其中大部分已经使用了几年.我们即将进行一系列修改,以使旧代码符合开发人员社区的当前标准和最佳实践,包括命名约定,异常处理,缩进等.
你可以把它想象成漂亮的印刷和低级/机械重构之间的东西.
这个过程很可能触及代码库中的几乎所有代码行(~85%),并且一些行将受到多达五次修改.所有更改都旨在在语义上保持中立.
我听过的反对函数式语言的一个论点是,单个赋值编码太难了,或者至少比"普通"编程要难得多.
但是通过我的代码,我意识到如果你用一种合理的现代语言写作,我真的没有很多(任何?)使用模式,使用单一的赋值形式也无法编写.
那么变量的用例有哪些在一个单独的范围调用中变化?请记住,在这种情况下,调用之间不同的循环索引,参数和其他范围限制值不是多个赋值(除非您出于某种原因必须在正文中更改它们),并假设您正在编写某些内容远远高于汇编语言级别,在那里你可以编写类似的东西
values.sum
Run Code Online (Sandbox Code Playgroud)
或(如果没有提供金额)
function collection.sum --> inject(zero, function (v,t) --> t+v )
Run Code Online (Sandbox Code Playgroud)
和
x = if a > b then a else b
Run Code Online (Sandbox Code Playgroud)
要么
n = case s
/^\d*$/ : s.to_int
'' : 0
'*' : a.length
'?' : a.length.random
else fail "I don't know how many you want"
Run Code Online (Sandbox Code Playgroud)
当你需要,并有列表推导,地图/收集等等.
您是否发现在这样的环境中仍然需要/需要可变变量,如果是,那么对于什么?
澄清一点,我不是要求对SSA表格的异议进行背诵,而是要求适用这些异议的具体例子.我正在寻找具有可变变量的清晰简洁的代码,如果没有它们就无法编写.
到目前为止我最喜欢的例子(以及我对他们的最佳反对意见):
保罗约翰逊的Fisher-Yates算法答案,当你包含大O约束时,它非常强大.但是,正如catulahoops指出的那样,big-O问题与SSA问题无关,而是与可变数据类型相关联,并且在预留的情况下,可以在SSA中清楚地编写算法:
shuffle(Lst) ->
array:to_list(shuffle(array:from_list(Lst), erlang:length(Lst) - 1)).
shuffle(Array, 0) -> Array;
shuffle(Array, N) ->
K = random:uniform(N) …Run Code Online (Sandbox Code Playgroud)variables haskell functional-programming ssa modern-languages
两个维度中的正则表达式是否有任何好的(或至少有趣但有缺陷的)类似物?
在一个维度上,我可以编写类似于/aaac?(bc)*b?aaa/快速拉出交替bs和cs 的区域,其边界至少为3 a秒.也许同样重要的是,我可以在一个月后回来,一目了然地看到它在寻找什么.
我发现自己在2d中编写类似问题的自定义代码(一些更复杂/受限制),并且有一个更简洁和标准化的符号会很好,即使我必须自己编写引擎.
第二个例子可能被称为"找到+".目标是找到一个3或更多as 的列,一个b括号为3或更多的as,a下面有三个或更多s.它应该匹配:
..7...hkj.k f
7...a h o j
----a--------
j .a,g- 8 9
.aaabaaaaa7 j
k .a,,g- h j
hh a----? j
a hjg
Run Code Online (Sandbox Code Playgroud)
并且可能写成[b ^(a {3})v(a {3})>(a {3})<(a {3})]或......
建议?
什么限制了内存映射文件的大小?我知道它不能超过最大的连续未分配地址空间块,并且应该有足够的可用磁盘空间.但还有其他限制吗?
假设我有一个带有3个模型的rails应用程序,Person,Place和Thing.假设Thing使用单表继承,因此有FancyThing和ScaryThing子类.然后有定义的路线map.resources :people, :places, :things.所以没有FancyThings和ScaryThings的控制器,ThingsController处理任何类型.
现在说我需要有代码,显示任何有链接的列表.如果我在我的视图中有这个代码:
<% @items.each do |item| %>
<%= link_to item.name, item %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如果item是Person或Place,则工作正常,polymorphic_path负责生成正确的路由.但是如果item是FancyThing或ScaryThing,这会爆炸,因为它会尝试使用fancy_thing_path,没有路由.我想以某种方式使它使用thing_path.理想情况下,Thing和/或其子类上会有一个方法以某种方式指示子类应该使用基类来生成路由.有一个优雅的解决方案吗?
到目前为止我最好的一击:
交付工具需要进行一系列交付(d 1,d 2,... d n),并且可以按任何顺序进行交付- 换句话说,集合的所有可能排列D = {d 1, d 2,... d n }是有效的解决方案 - 但是特定的解决方案需要在路由器的一端离开基站之前确定(想象一下这些包需要加载到车辆LIFO中,例如).
此外,各种排列的成本也不相同.它可以计算为d i -1和d i之间行进距离的平方和,其中d 0被认为是基站,需要注意的是任何涉及方向变化的段都要花费3倍的时间(想象一下,这是在铁路或气动管上进行的,备份会破坏其他交通).
鉴于交付的集合
D表示为它们与基站的距离(因此abs(di-dj)是两个交付之间的距离)和迭代器permutations(D)将连续产生每个排列,找到一个成本小于或等于任何排列的排列其他排列.
现在,从这个描述直接实现可能会导致这样的代码:
function Cost(D) ...
function Best_order(D)
for D1 in permutations(D)
Found = true
for D2 in permutations(D)
Found = false if cost(D2) > cost(D1)
return D1 if Found
Run Code Online (Sandbox Code Playgroud)
哪个是O(n*n!^ 2),例如非常糟糕 - 特别是与O(n log(n))相比,有洞察力的人会通过简单地排序D.
我的问题:你能否提出一个似乎合理的问题描述,这自然会导致粗心大意进入排序算法的更糟(或不同的可怕)实现?
我正在寻找一个良好的数据结构来在树的节点上构建等价类.在理想的结构中,以下操作应该是快速的(适当的O(1)/ O(n))和容易(没有神秘代码的段落):
到目前为止,我已经考虑过(其中一些可以组合使用):
我错过了一个甜蜜的选择吗?
language-agnostic algorithm tree equivalence-classes data-structures
是否有一个默认方法或类访问器,我可以添加到一个Ruby类,如果一个访问器(类似Ruby的属性)没有退出?然后,我可以编写一些自定义代码来回复,就像从数据库中读取的数组列表一样,可以像访问者一样访问值,而无需编写访问者代码(因为如果从数据库中读取它的未知数).
使用Ruby MRI 1.9
谢谢!
符号表上的维基百科条目是一个很好的参考:
http://en.wikipedia.org/wiki/Symbol_table
但是当我尝试理解Ruby中的符号以及它们如何在符号数组中表示时(由Symbol.all_symbols方法返回),
我想知道Ruby的符号表方法是否与其他语言有任何重要的区别?
我在SQL Server中有一个varchar()字段,它在段落标记之间有一些回车符/换行符.
我想把它变成格式正确的HTML.
例如:
----------之前----------
快速的棕色狐狸跳过懒狗.然后他感到无聊并上床睡觉.之后,他和他的朋友一起玩.
第二天,他和他的朋友举行了一个盛大的聚会.
---------- -----------之后
<p>快速的棕色狐狸跳过懒狗.然后他感到无聊并上床睡觉.之后,他和他的朋友一起玩.</ p>
<p>第二天,他和他的朋友举行了一个盛大的聚会.</ p>
这样做的正确方法是什么?显然正则表达式是一个很好的方法,但我无法弄清楚如何以理智的方式捕获字段的开头以及crlf(回车/换行)组合.
那里有任何正则表达式的天才?会爱一些帮助.谢谢,如果是的话
这是一个抽象的bug形式,它引导我进入构成我之前问题基础的代码.很明显,一旦你看到了它,但是一些熟悉原始问题和原始语言的专业程序员会查看代码并在我们捕获它之前忽略它(不可否认,在它的原生环境中它接近三页长).
请混淆你的回答,以便后来者也能玩得开心.
most_bang_for_buck_score = 0.0
most_bang_for_buck_order = []
for appetizer in appetizers
total_cost = appetizer.cost
total_calories = appetizer.calories
for salad in salads
total_cost = total_cost + salad.cost
total_calories = total_calories + salad.calories
for entree in entrees
total_cost = total_cost + entree.cost
total_calories = total_calories + entree.calories
for desert in deserts
total_cost = total_cost + desert.cost
total_calories = total_calories + desert.calories
if total_calories/total_cost > most_bang_for_buck_score
most_bang_for_buck_score = total_calories/total_cost
most_bang_for_buck_order = [appetizer,salad,entree,desert]
print "You'll get the most food …Run Code Online (Sandbox Code Playgroud)