在bash中给出这样的命令:
echo -e "a b "{1..3}" d e\n"
a b 1 d e
a b 2 d e
a b 3 d e
Run Code Online (Sandbox Code Playgroud)
第2行的输出......以空白开头.这是为什么?它从何而来?我怎么能避免呢?
我知道如何用sed或其他东西摆脱它,但我宁愿首先避免它.
我只提到它,和{..}一起使用 - 语法.还有其他相似的案例吗?
一个有用的解决方法是,使用退格键删除第一个字母:
echo -e "\ba b "{1..3}" d e\n"
Run Code Online (Sandbox Code Playgroud)
或者,正如Jared Ng所说:
echo -e "\ra b "{1..3}" d e\n"
Run Code Online (Sandbox Code Playgroud)
我们摆脱了领先的新行:
echo -e "\na b "{1..4}" d e" | sed '1d'
echo -e "\na b "{1..4}" d e" | tail -n +2
Run Code Online (Sandbox Code Playgroud)
或尾随:
echo -e "\ba b "{1..3}" d e\n" | sed '$d' …Run Code Online (Sandbox Code Playgroud) 众所周知decimal fractions(如0.1),当存储为floating point(如double或float)时,将在内部以"二进制格式"(IEEE 754)表示.并且一些小数部分不能直接以二进制格式表示.
我还没有理解的是这种"转换"的精确度:
1.)浮点本身可以具有精度(即"重要")?
2.)但是从小数部分到二进制部分的转换也有精度损失?
题:
从十进制分数转换为浮点分数时,最坏情况精度损失("所有"可能的小数部分)是多少?
(我想知道这个的原因是,当比较十进制分数与二进制/浮点分数时,我需要考虑精度...以确定两个数字是否相同.我希望这个精度是紧密/精确的尽可能 (decimal fraction == binary fraction +/- precision)
示例(仅假设)
0,1 dec => 0,10000001212121212121212 (binary fraction double) => precision loss 0,00000001212121212121212
0,3 dec => 0,300000282828282 (binary fraction double) => precision loss 0,000000282828282
Run Code Online (Sandbox Code Playgroud) 我计划在我的应用程序中显示 Android 日历。我想选择一个在我的申请中使用的日期。我需要知道是否有algorithm for a calendar.
我不得使用任何开源应用程序。
该malloc函数使用两者sbrk和mmap函数.现在该sbrk函数增加或减少数据段.所以它线性增长.现在我的问题是,是否始终保持线性,或者例如,mmap调用可以分配与数据段重叠的内存?
我在谈论在多核系统上运行的多线程程序.此博客谈到的一些严重缺陷sbrk的多线程程序,并指出有可能与分配的内存sbrk可以存储与alloacted间杂mmap(的sbrk,因为堆可能变得不连续mmaped区域或一个共享对象阻碍堆的增长).
我们正在使用传统的Swing客户端开发一个相当大的Java企业应用程序。
时不时地,我们面临一个问题,即随机的JDialogs和JFrames会打开并获得焦点,但隐藏在其父窗口的后面。
不幸的是,这种现象是不可复制的,有时会发生。到目前为止,已在安装Win7和WinXP的计算机上识别出该错误。由于所有开发人员都在运行Windows操作系统,所以这不一定意味着此问题特定于Windows。
我不知道如何解决该问题。也许那里有Swing专家可以解决此问题?(我们仍在使用Java 6)。
所以,我正在构建一个将.flv文件转换为其他格式的程序.为此,我正在使用ffmpeg,它在通过命令行执行时完美地完成了它的工作.例如:
ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3
Run Code Online (Sandbox Code Playgroud)
这个例子就像一个魅力 - 执行命令时没有一个问题.
但是当我尝试从Java类中执行相同的命令时会出现问题.我在try-catch块中执行此操作:
System.out.println("Start");
Process p = Runtime.getRuntime().exec("cmd /c ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3");
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)
控制台打印"开始".它开始转换,但没有完成.
有人能帮助我吗?
在Java util日志记录中,我在init()上启动处理程序,并在destroy()处关闭处理程序,它完全正常:创建了一个日志文件等.如果用户正常刷新页面,它仍然只创建一个日志文件.
但是,如果用户快速刷新applet的页面几次,看起来似乎没有调用destroy()或者没有完成任务,并且因为init()再次被调用,它会假定前一个文件仍然被锁定并创建一个新的日志文件.
我试图使用destroy()和finalize()来关闭处理程序,但它不起作用.任何人都知道如何解决这个问题?
另一个小问题是:如果init()尚未完成并且页面被刷新,实际发生了什么.它是否会继续这个过程并最终导致调用destroy()或它是否只是停在那里?
我正在使用下面显示的java代码在连接到我的计算机的HP DeskJet1000 USB打印机上打印文本文件.每当我运行此代码时,都会发送打印作业,但打印机不会打印任何内容.状态显示打印机正在打印,但它甚至没有进入页面.请帮忙!我的代码如下:
package printing;
import java.io.FileInputStream;
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
/** @author Majid */
public class Printing {
public static void main (String [] args) {
// TODO code application logic here
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet ();
/* locate a print service that can handle it */
PrintService [] pservices = PrintServiceLookup.lookupPrintServices (flavor, aset);
/* create a print job for the chosen service */
int printnbr = 0;
DocPrintJob pj = pservices …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种算法,给定一组数字{0,1,2,4,5 ...}和一组关于每个元素的相对位置的条件,将检查是否存在有效的排列.条件总是类型为"原始数组中的位置i中的元素必须与位置j或z中的元素相邻(相邻)".
置换中的最后一个元素和第一个元素被认为是相邻的.
这是一个简单的例子:
假设数字为{0,1,2,3}
和一组条件:a0必须紧挨着a1,a0必须紧挨着a2,a3必须紧挨着a1
这个例子的有效解是{0, 1,3,2}.
请注意,此解决方案的任何旋转/对称也是有效的解决方案.我只需要证明存在这样的解决方案.
另一个使用相同集合的示例:
a0必须在a1旁边,a0必须在a3旁边,a0必须在a2旁边.
此示例没有有效的解决方案,因为数字只能与2个数字相邻.
我现在能想出的唯一想法就是使用某种回溯方式.
如果存在解决方案,则应该快速收敛.如果没有解决方案,我无法想象有任何方法可以避免检查所有可能的排列.正如我已经说过的,旋转或对称不会影响给定排列的结果,因此应该可以减少可能性的数量.
序言:我知道使用列表或其他集合来返回结果但是我必须通过列表来获取结果:参见第2个示例
序言-2:我正在寻找一个超出"Java不支持......"的答案.
我正在寻找一种从Java方法调用返回多个对象的便捷方法.
有点像PHP:
list ($obj1, $obj2, ...) foobar();
Run Code Online (Sandbox Code Playgroud)
我真的厌倦了在参数中传递持有者对象,例如:
class Holder {
int value;
}
Holder h1=new Holder();
Holder h2=new Holder();
Run Code Online (Sandbox Code Playgroud)
然后:
o.foobar(h1,h2);
Run Code Online (Sandbox Code Playgroud)
如果有人想出一个优雅的方法来解决这个问题,那将会非常感兴趣.
使用列表
List<String> = foobar();
Run Code Online (Sandbox Code Playgroud)
这有两个缺点:
我必须首先打包房子里面的名单:
// this is on the callee side of the house
ArrayList<String> result = new ArrayList<String>
result.add("foo");
result.add("bar");
Run Code Online (Sandbox Code Playgroud)
然后在调用者方面我必须得出结果:
// This is on the caller side
List<String> result = foobar();
String result1 = result.get(0);
String result2 = result.get(1); // this is not as elegant as the PHP equivalent
Run Code Online (Sandbox Code Playgroud)
此外,假设我想返回不同类型的对象,比如String,Integer我将不得不返回一个对象列表,然后转换每个对象...不漂亮
谢谢.