我有一个for循环,我不知道它是如何工作的.我熟悉:
for(int i = 0; i <= 9; i++)
{
/* implementation */
}
Run Code Online (Sandbox Code Playgroud)
我对以下形式的for循环感到困惑:
String[] myString = new String[] {"one", "two", "three", "some other stuff"};
String str1 = "", str2 = "";
for (String s : myString)
{
/* implementation */
}
Run Code Online (Sandbox Code Playgroud)
这些类型的for循环如何工作?它们与常规for循环有什么不同?
我之前听过"反编译"这个术语几次,我开始对它的工作原理感到非常好奇.
我对它是如何工作有一个非常笼统的想法; 对应用程序进行逆向工程以查看它使用的功能,但除此之外我不太了解.
我也听过" 反汇编程序 " 这个术语,反汇编程序和反编译程序有什么区别?
总结一下我的问题:反编译过程究竟涉及到什么?通常怎么做?流程有多复杂/简单?它可以产生确切的代码吗?反编译器和反汇编程序有什么区别?
我最近发现了scss,以及它有能力使用数学运算符的事实.我想知道的是:**我有没有办法动态检索用于设置不同元素尺寸的元素的尺寸?
我想做的一个例子如下(用jQuery编写):
$("#myparagraph").height($("#page").height() / 6);
Run Code Online (Sandbox Code Playgroud)
有没有办法用scss做到这一点?
在我正在编写的应用程序中,有一部分可以让您更改窗帘设置.问题是,在重新创建活动之前,此设置不会生效.有没有办法告诉应用程序使用onResume()方法重新启动(希望允许它保存onSaveInstanceState()中的所有内容)?
以下是某人给我的练习面试问题,我不确定最佳解决方案是什么:
给定一组范围:
(例如S = {(1, 4), (30, 40), (20, 91) ,(8, 10), (6, 7), (3, 9), (9, 12), (11, 14)},并给予目标范围R(例如R = (3, 13)-这意味着会从3到13的范围内)写一个算法来找到最小的范围集合覆盖你的目标范围内的所有在该范围内的. set必须重叠才能被视为跨越整个目标范围.(在这个例子中,答案是{(3, 9), (9, 12), (11, 14)}.
解决这个问题的最佳方法是什么?我以为这将使用贪婪算法完成.在上面的示例中,我们将查找与3相交的所有数字,并从具有最高max的数字中选择.然后我们会用我们刚刚选择的那个做同样的事情.所以,既然我们选择了(3,9),我们现在想要找到所有与9相交的范围,其中我们选择具有最高最大值的范围.在那次迭代中,我们选择了(9,12).我们对那个做同样的事情,我们发现与12相交的下一个范围,最高的最大值是(11,14).
在那次迭代之后,我们看到14大于13(我们的范围的最大值),所以我们可以停下来.
我对这个算法的问题是,如何有效地查询相交的范围?如果我们尝试线性搜索,我们最终会得到一个算法O(n^2).我的下一个想法是每次运行循环时从我们的列表中删除任何相交的范围.所以在第一次迭代中,我们交叉(1,4)和(3,9).在我们的下一次迭代中,我们交叉(9,12),(3,9)和(8,10).所以在最后一次迭代中,我们所要看的只有{(30,40),(20,91),(6,7)}.我们可以通过删除min> 13和max <3的所有内容来提高效率.问题是这仍然可能还不够.在我们的范围范围内存在大量重复序列的潜在问题.如果我们的范围列表中包含类似{(6,7),(6,7),(6,7),(6,7),(6,7)},我们将不得不通过这些每次都看,甚至虽然它们对我们没用.即使我们只存储唯一值(通过把它们放在一个集),我们可能有一个非常大的范围内,有一堆,这是我们的目标范围内的范围,但我们也有一个范围内,跨越几乎整个目标范围.
什么是查询我们的范围的有效方法?或者可能,解决这个问题的更有效算法是什么?
我在Ruby On Rails应用程序中有一个方法,我想同时运行.该方法应该创建一个包含来自站点的报告的zip文件,其中zip中的每个文件都是PDF.从html到PDF的转换有点慢,因此需要多线程.
我想使用5个线程,所以我想我会在线程之间有一个共享的枚举器.每个线程都会从Enumerator中弹出一个值,然后运行do stuff.这就是我认为它会起作用的方式:
t = Zip::OutputStream::write_buffer do |z|
mutex = Mutex.new
gen = Enumerator.new{ |g|
Report.all.includes("employee" => ["boss", "client"], "projects" => {"project_owner" => ["project_team"]}).find_each do |report|
g.yield report
end
}
5.times.map {
Thread.new do
begin
loop do
mutex.synchronize do
@report = gen.next
end
title = @report.title + "_" + @report.id.to_s
title += ".pdf" unless title.end_with?(".pdf")
pdf = PDFKit.new(render_to_string(:template => partial_url, locals: {array: [@report]},
:layout => false)).to_pdf
mutex.synchronize do
z.put_next_entry(title)
z.write(pdf)
end
end
rescue StopIteration
# …Run Code Online (Sandbox Code Playgroud) 可以说我有一个我创建的对象.我在其中编辑了一些值,因此它与我引用的新对象()不同.让我们调用该对象f1.现在我想叫F2另一个目的是F1而不是一个指针的副本,所以,当我改变F2的值,它不会也随之变化F1.我将如何在java中执行此操作?
我有一个带有用户模型的rails应用程序,它可以有多个角色.我使用像这样的位掩码实现了这个:
class User < ActiveRecord::Base
DEFAULT_ROLES = %w[developer entrepreneur]
ROLES = ['admin', 'entrepreneur', 'developer']
def has_role?(role)
roles.include?(role.to_s)
end
def is?(role)
has_role?(role)
end
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
end
def roles
ROLES.reject do |r|
((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?
end
end
end
Run Code Online (Sandbox Code Playgroud)
在应用的注册页面中,我希望用户选择他们是"企业家"还是"开发者".但是,我想确保他们无法为自己(或任何其他人)分配任何其他角色,除非他们已经是管理员.
我的第一个想法是在roles=方法中通过改变它看起来像这样做
def roles=(roles)
unless current_user.is?(:admin)
validates_inclusion_of roles, :in => DEFAULT_ROLES
end
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
end
Run Code Online (Sandbox Code Playgroud)
但是,正如我发现的那样,你无法current_user从模型内部进行访问(如果你考虑它我觉得有意义......)
我的下一次尝试是看看我是否可以使用强参数来做到这一点.
我期待它看起来像这样(我正在使用设计,覆盖RegistrationsController) …
validation ruby-on-rails strong-parameters ruby-on-rails-4.2
我正在用Java创建一个程序,该程序读取文件的输入流,根据密码是通过更改字节数来对其进行加密,然后创建一个新的加密文件。
例如:
我创建了一个包含以下单词的测试文件:
This is a test to see if the encrypter project works.
当我读取java中的字节时,我得到:
[84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 116, 111, 32, 115, 101, 101, 32, 105, 102, 32, 116, 104, 101, 32, 101, 110, 99, 114, 121, 112, 116, 101, 114, 32, 112, 114, 111, 106, 101, 99, 116, 32, 119, 111, 114, 107, 115, 46, 10]
因此,我取了每个字节的值,然后减去密码的unicode值,并获得该值的绝对值。 。然后,我将其写入文件。
我正在尝试使用不同的算法对其进行加密,然后开始在测试文本文件中对其进行测试。我正在使用Linux,因此没有文件扩展名(例如.txt,.pdf等),经过几次加密后,我注意到计算机不再将其识别为文本文件,而是,作为图像文件!(这意味着,当您单击它时,默认情况下,它将尝试在图像编辑器中打开文件)
所以这是我的问题:
.pdf …可能重复:
检查Android手机上的方向
我正在编写一个应用程序,要求我的程序知道它是横向模式还是纵向模式之间的区别.我怎么会发现这个.目前我正在使用getRequestedOrientation(),但这总是返回数字2,这基本上只是意味着它会根据手机的转动方式而改变(因为它是0,即横向,或1是纵向). )有更好的方法吗?
android ×4
java ×3
orientation ×2
algorithm ×1
byte ×1
decompiling ×1
element ×1
enumerator ×1
file-type ×1
for-loop ×1
lazy-loading ×1
linux ×1
object ×1
onresume ×1
pointers ×1
range ×1
restart ×1
ruby ×1
sass ×1
validation ×1