Java中 goto

Java中 goto http://lavasoft.blog.51cto.com/62575/178997/ Java语言中goto是保留关键字,没有goto语句,也没有任何使用goto关键字的地方。 Java中也可在特定情况下,通过特定的手段,来实现goto的功能。显然Java不愿意开发者随意跳转程序。下面解释两个特定: 特定情况: 只有在循环体内,比如for、while语句 (含do…while语句) 中。 特定手段: 语句标签和循环控制关键字break、continue,语法格式是: break/continue 语句标签。 一、break、continue和语句标签 语句标签 语句标签的语法是: 标签名: 语句标签可以定义在方法体内的最后一条语句之前即可。但是语句标签实际使用的机会是与break和continue结合使用的,而break和continue是和循环语句结合使用的,因此实际上语句标签的使用也是和循环紧密结合的。 语句标签在被使用的情况,只能定义在循环迭代语句之前,否则编译出错! 因此,有意义、可使用的标签含义是: 指定循环语句的标识! break、continue语句单独使用 单独使用情况下: break语句作用是结束当前的循环迭代体,进而执行剩余的语句。 continue语句的作用是结束本次迭代过程,继续执行下一轮迭代。 break、continue语句结合语句标签的使用 为什么需要语句标签呢? 原因是因为程序可能有循环的嵌套,当多层循环嵌套时候,有时候需要一次跳出多级循环,这种情况下就需要结合语句标签才能实现此功能了。 带标签使用情况下: break中断并跳出标签所指定循环,continue跳转到标签指定的循环处,并继续执行该标签所指定的循环。 为了说明情况,看看下面的例子: import java.util.Random; /** 语句标签测试 @author leizhimin 2009-7-16 11:43:08 */ public class TestLable { public static void main(String[] args) { outer: for (int i = 0; i < 10; i++) { System.out.println("\nouter_loop:" + i); inner: for (int k = 0; i < 10; k++) { ...

2014-04-11 · 2 min · 359 words · -

花指令

花指令 花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令: jmp, call, ret的一些堆栈技巧,位置运算,等等。花指令生成器 编辑 一、写花指令生成器必备知识 花指令原理 花指令是程序中的无用代码,程序对它没影响,少了它也能正常运行。加花指令后,杀毒软件对木马静态反汇编时,木马的代码就不会正常显示出来,加大杀毒软件的查杀难度。 如何写花指令 下面我们先看看一段花指令,分析理解它的原理: PUSH EBP MOV EBP,ESP push edx pop edx inc ecx dec ecx add esp,21 add esp,-21 add esp,10 sub esp,10 JMP 附近空地址随便乱跳 JMP 原入口点 花指令一般有三部分,开头就是PUSH EBP和MOV EBP,ESP这两句在大部分程序开头可以经常看到。PUSH EBP是把EBP压入堆栈,MOV EBP,ESP是把ESP的值赋给EBP,不懂没关系,只要知道PUSH EBP和MOV EBP,ESP这两句经常出现在文件开头就可以了,随便用OllyDbg打开一个不加壳的文件载入后经常停在PUSH EBP MOV EBP,ESP。 接下来就是花指令啦,push edx是把通用寄存器EDX压入堆栈,pop edx是把通用寄存器EDX弹出堆栈,这两句和起来就相当于什么也没做。接下来的inc ecx,ecx用来保存计数值,也是寄存器,INC是加1;下面的dec ecx中的dec是减1,加1减1相抵消,又是什么也没做。add esp,21这是寄存器esp加21,add是加上,下面一句add esp,-21是寄存器esp加-21,小学知识,+21+ (-21) =0,还是什么也没做。再下来add esp,10寄存器esp加21,sub esp,10寄存器esp减10,sub是减去。一个+10,一个-10相互抵消了。 最后是跳转语句,我用两句JMP,第一句在花指令附近随便跳到个空地址,第二个JMP是从空地址跳回文件的原入口点。 如何写入花指令 我们来看看加花指令的一般步骤: 准备好要加的花指令; 准备未加壳的黑客软件; 用OllyDbg打开这个黑客软件,记下入口点的内存地址; 找到零地址,一句一句写入花指令,再用JMP跳回程序入口点; (如果找不到空白地址,我们可以用zeroadd加区段,英文软件,我汉化好的,操作简单就不演示了。) 保存后用Peditor修改文件入口点为开始写花指令的地址。这样运行程序就先运行花指令再跳回程序的原始开头执行程序了; 检测程序是否正常运行和免杀效果。 http://baike.baidu.com/view/592213.htm http://www.blogjava.net/Todd/archive/2010/05/20/321429.html

2014-04-11 · 1 min · 68 words · -

apk Decompiler

apk Decompiler 下载dex2jar:https://code.google.com/p/dex2jar/ 当前版本dex2jar-0.0.9.15 用dex2jar把apk转换为.jar文件 解压apk文件得到classes.dex 把classes.dex转成.jar: 在命令行中执行d2j-dex2jar.bat classes.dex 得到jar文件classes-dex2jar.jar

2014-04-10 · 1 min · 10 words · -

dex2jar

dex2jar https://code.google.com/p/dex2jar/ http://blog.csdn.net/kesenhoo/article/details/6544094 dex2jar contains following compment dex-reader is designed to read the Dalvik Executable (.dex/.odex) format. It has a light weight API similar with ASM. An example here dex-translator is designed to do the convert job. It reads the dex instruction to dex-ir format, after some optimize, convert to ASM format. dex-ir used by dex-translator, is designed to represent the dex instruction dex-tools tools to work with .class files. here are examples: Modify a apk DeObfuscate a jar d2j-smali [To be published] disassemble dex to smali files and assemble dex from smali files. different implementation to smali/baksmali, same syntax, but we support escape in type desc “Lcom/dex2jar\t\u1234;” dex-writer [To be published] write dex same way as dex-reader.

2014-04-10 · 1 min · 118 words · -

OutOfMemoryError, StackOverflowError

OutOfMemoryError, StackOverflowError 这是IGT笔试的题目,分别写出可以造成两种错误的代码。由于之前测试过HashMap的容量的时候出现过内存不足的错误,所以能写出来,但StackOverflowError没什么印象了。 回来查了下StackOverflowError的资料,在德问社区上有人发帖子java产生StackOverflowError的原因是什么?询问: 请问java.lang.StackOverflowError产生的原因有什么? 已知的有死循环,循环的嵌套层数达到了环境的设定值 谢谢 有人回复说: 死循环本身是不会StackOverflow的,只有无限递归的时候会出现。原则上循环嵌套次数本身是没有限制的,限制的是占用的栈空间,如果你的函数里定义了很多很多变量,栈空间就会用完得比较快。 还有人讲的更详细: JVM里会有两种StackOverflowError, 一种是对应JVM stack, 一种是对应Native Method stack. 我们一般说的都是JVM stack. 每一个JVM线程维护自己的JVM stack. JVM stack里面存放 JVM栈帧. 栈帧中存放 数据和中间结果(本地变量数组, 操作符栈, 和对runtime 常量池的引用). 这些数据都比较小(对象都在堆中, 栈帧仅存放对象引用), 所以想单纯通过 在栈帧中存放大数据的方法 去引入StackOverflowError, 基本是不现实的.一般都是因为方法调用嵌套层数过大. http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.2 JVM stack的大小是可以调节的, sun的windows jvm6 x64,jvm栈默认大小为1024k.可以通过-Xss1024k来调节. http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#threads_oom 另外,在oracle的docsChapter 2. The Structure of the Java Virtual Machine中,有如下解释: Java Virtual Machine Stacks The following exceptional conditions are associated with Java Virtual Machine stacks: If the computation in a thread requires a larger Java Virtual Machine stack than is permitted, the Java Virtual Machine throws a StackOverflowError. ...

2014-04-09 · 2 min · 379 words · -

第三人称单数, third person singular

第三人称单数, third person singular 第三人称单数是语言中对对话双方外其它某一个人指示时使用的代词。(简称三单)第三人称是相对于对话时,某一句话中,言语发出方(第一人称)和言语的听受方(第二人称)以外的其它人称。单数是指该句中提到的其它人是一个人,相对于两个人(双数,在太平洋岛屿土著语言中广泛存在人称代词的双数)或更多人(复数)。如汉语中的“他”“她”“它”,英语中的he\she\it\him\her。 要搞清楚第一、第二、第三人称各是什么。第一人称就是“我”和“我们”。第二人称是“你”和“你们”。第三人称单数是“他”、“她”和“它”,复数则是“他们”、“她们”和“它们”。 动词第三人称单数变化规则有: 大多数实义动词在词尾加 s 在清辅音后发音为 /s/;在浊辅音及元音音素后发音为 /z/。如 speak > speaks / s /; come→comes / z / ; play→plays /z/ 。 以辅音字母加 y 结尾的动词,要先将 y 变为 i 然后再加 es 读/ iz /。如study→studies / iz / ; fly→flies / iz /。 以“s、x、ch、sh”结尾的动词在词尾加“es”发音为/ iz / 。如teach→teaches / iz / ; watch→watches / iz /。 以“o”结尾的动词,在词尾加“es”。常出现的两个以“o”结尾的动词go和do后加“es”读/ z / 。如go→goes / z / ; do→does / z /。 记住最为特别的be的三单is ,have的三单是has。 注意: ...

2014-04-09 · 1 min · 205 words · -

在MySQL中修改表名的sql语句

在MySQL中修改表名的sql语句 http://blog.csdn.net/xrt95050/article/details/2441458 在使用MySQL时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢? 可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦。 能否简单使用一个SQL语句就搞定呢?当然可以,MySQL5.0下我们使用这样的SQL语句就可以了。 ALTER TABLE table_name RENAME TO new_table_name 例如 ALTER TABLE admin_user RENAME TO a_user

2014-04-09 · 1 min · 18 words · -

MySQL的大小写敏感性 lower_case_table_names

MySQL的大小写敏感性 lower_case_table_names MySQL的大小写敏感性 lower_case_table_names 在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。 奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。 要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。 或者也可以强制以 -O lower_case_table_names=1 参数启动 MySQLd (如果使用 -defaults-file=…\my.cnf 参数来读取指定的配置文件启动 MySQLd 的话,你需要在配置文件的 [MySQLd] 区段下增加一行 lower_case_table_names=1) 。这样MySQL 将在创建与查找时将所有的表名自动转换为小写字符 (这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名) 。 当你更改这个选项时,你必须在启动 MySQLd 前首先将老的表名转换为小写字母。 换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置: lower_case_table_names=0 。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样 (在Windows下所有的大写字符都变成小写了) 。 值 含义 使用CREATE TABLE或CREATE DATABASE语句指定的大写和小写在硬盘上保存表名和数据库名。名称比较对大小写敏感。在Unix系统中的默认设置即如此。请注意如果在大小写不敏感的文件系统上用-lower-case-table-names=0强制设为0,并且使用不同的大小写访问MyISAM表名,会导致索引破坏。 1 表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows和Mac OS X系统中的默认值。 2 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。注释: 只 在对大小写不敏感的文件系统上适用! InnoDB表名以小写保存,例如lower_case_tables_name=1。 MySQL的大小写敏感其实是根据用户的操作系统来的, 可以强制以 -O lower_case_table_names=1 参数启动 MySQLd (如果使用 -defaults-file=…\my.cnf 参数来读取指定的配置文件启动 MySQLd 的话,你需要在配置文件的 [MySQLd] 区段下增加一行 lower_case_table_names=1) 。 ...

2014-04-09 · 1 min · 171 words · -

ByteArrayInputStream ByteArrayOutputStream

ByteArrayInputStream ByteArrayOutputStream http://blog.csdn.net/rcoder/article/details/6118313 bytejdkclassstream存储socket 第一次看到ByteArrayOutputStream的时候是在Nutch的部分源码,后来在涉及IO操作时频频发现这两个类的踪迹,觉得确实是很好用,所以把它们的用法总结一下。 ByteArrayOutputStream的用法 以下是JDK中的记载: public class ByteArrayOutputStream extends OutputStream 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。 关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。 我的个人理解是ByteArrayOutputStream是用来缓存数据的 (数据写入的目标 (output stream原义) ) ,向它的内部缓冲区写入数据,缓冲区自动增长,当写入完成时可以从中提取数据。由于这个原因,ByteArrayOutputStream常用于存储数据以用于一次写入。 实例: 从文件中读取二进制数据,全部存储到ByteArrayOutputStream中。 FileInputStream fis=new FileInputStream(“test”); BufferedInputStream bis=new BufferedInputStream(fis); ByteArrayOutputStream baos=new ByteArrayOutputStream(); int c=bis.read();//读取bis流中的下一个字节 while(c!=-1){ baos.write(c); c=bis.read(); } bis.close(); byte retArr[]=baos.toByteArray(); ByteArrayInputStream的用法 相对而言,ByteArrayInputStream比较少见。先看JDK文档中的介绍: public class ByteArrayInputStreamextends InputStreamByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。 关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。 构造函数: ByteArrayInputStream(byte[] buf) 注意它需要提供一个byte数组作为缓冲区。 与大部分Inputstream的语义类似,可以从它的缓冲区中读取数据,所以我们可以在它的外面包装另一层的inputstream以使用我们需要的读取方法。 个人认为一个比较好的用途是在网络中读取数据包,由于数据包一般是定长的,我们可以先分配一个够大的byte数组,比如byte buf[]=new byte[1024]; 然后调用某个方法得到网络中的数据包,例如: Socket s=…; DataInputStream dis=new DataInputStream(s.getInputStream()); ...

2014-04-04 · 1 min · 85 words · -

Jackson

Jackson Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 前面有介绍过json-lib这个框架,在线博文: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。 一、准备工作 下载依赖库jar包 Jackson的jar all下载地址: http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar 然后在工程中导入这个jar包即可开始工作 官方示例: http://wiki.fasterxml.com/JacksonInFiveMinutes 因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8 如果你需要转换xml,那么还需要stax2-api.jar 测试类基本代码如下 package com.hoo.test; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.codehaus.jackson.JsonEncoding; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.JsonNodeFactory; import org.codehaus.jackson.xml.XmlMapper; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.hoo.entity.AccountBean; /** function:Jackson 将java对象转换成JSON字符串,也可以将JSON字符串转换成java对象 jar-lib-version: jackson-all-1.6.2 jettison-1.0.1 @author hoojo @createDate 2010-11-23 下午04:54:53 ...

2014-04-04 · 9 min · 1809 words · -

java 内部类, 静态内部类, inner class

java 内部类, 静态内部类, inner class 内部类 public class OuterClass { private String name; private int age; class InnerClass { public InnerClass(){ name = "mark"; age = 20; } public void echo() { System.out.println(name + " " + age); } } } 问题思考 上面这个很简单的例子中,也包含了很多应该思考的问题: 内部类如何被实例化? 内部类能否改变外围类的属性,两者之间又是什么一种关系? 内部类存在的意义是什么? 在回答这三个问题之前,必须要明确一个点,那就是内部类是依附于外围类而存在的,其实也就是内部类存在着指向外围类的引用。明白了这个之后,上面的问题就好解答了。 实例化与数据访问 内部类与外围类之间形成了一种联系,使得内部类可以无限制地访问外围类中的任意属性。 正如上面的例子中,InnerClass内部可以随意访问OuterClass中的private属性。 同样的,因为内部类依赖与外围类的存在,所以无法在外部直接将其实例化,而是必须先实例化外围类,才能够实例化内部类 (注意,在外围类的成员方法里仍然是可以直接实例化内部类的): public static void main(String[] args) { InnerClass inner = new OuterClass().new InnerClass(); inner.echo(); } 复制代码使用外围类的.new来创建外部类。 我们也知道,内部类和外围类的联系是通过内部类所持有的外部类的引用来实现的,想要获取这个引用,可以使用外围类的.this来实现,可以参考下面这个测试用例 public class OuterClass { private String name; private int age; class InnerClass { public InnerClass(){ name = “mark”; age = 20; } public void echo() { System.out.println(name + " " + age); } public OuterClass getOuter() { return OuterClass.this; } } ...

2014-04-04 · 5 min · 876 words · -

XML CDATA

XML CDATA 所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段 (CDATA section) 中的文本会被解析器忽略。

2014-04-03 · 1 min · 11 words · -

HashMap遍历

HashMap遍历 HashMap 遍历 // 1 Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); } // 2 Map map = new HashMap(); Iterator iter = map.keySet().iterator(); while (iter.hasNext()) { Object key = iter.next(); Object val = map.get(key); } 前一种性能好些. 第一种可以把 key value 同时取出,第二种还得需要通过 key 取一次 value,效率较低。 ...

2014-04-02 · 1 min · 170 words · -

JAVA获取时间戳

JAVA获取时间戳 http://tangmingjie2009.iteye.com/blog/1543166 JAVA时间戳 目前获取毫秒值大概有下面三种方法 Java代码 收藏代码 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime(); 最近做监控系统,发现代码中有前两种方法,然后突然有了一个想法,到底哪个更快呢? 然后做了如下实验: Java代码 收藏代码 import java.util.Calendar; import java.util.Date; public class TimeTest { private static long _TEN_THOUSAND=10000; public static void main(String[] args) { long times=1000*_TEN_THOUSAND; long t1=System.currentTimeMillis(); testSystem(times); long t2=System.currentTimeMillis(); System.out.println(t2-t1); testCalander(times); long t3=System.currentTimeMillis(); System.out.println(t3-t2); testDate(times); long t4=System.currentTimeMillis(); System.out.println(t4-t3); } public static void testSystem(long times){//use 188 for(int i=0;i<times;i++){ long currentTime=System.currentTimeMillis(); } } public static void testCalander(long times){//use 6299 for(int i=0;i<times;i++){ long currentTime=Calendar.getInstance().getTimeInMillis(); } } public static void testDate(long times){ ...

2014-04-01 · 1 min · 107 words · -

SAX 解析和生成XML文档

SAX解析和生成XML文档 SAX解析和生成XML文档 分类: 【xml】 2013-09-24 22:37 2207人阅读 评论(6) 收藏 举报 生成解析xmljavasax 目录? 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui0317/article/details/11990891 一、前言 SAX操作xml是基于事件来完成的,自己只负责调用解析的方法,然后具体解析操作都是交给DefaultHandler处理者来完成的,总的来说使用SAX解析和生成xml文档还是比较方便的 。 二、准备条件 因为SAX是jdk自带的解析方式,所以不用添加jar包引用。 三、使用SAX实战 解析xml文档 实现思路: <1>先由SAXParserFactory这个工厂的实例生产一个SAXParser解析器; <2>然后根据读取的xml路径,传递给SAXParser这个解析器,再调用parse()方法; <3>在parse()方法中需要传递DefaultHandler这个类的扩展类的实例,因为它才会真正去一步步去解析xml文档的; <4>在DefaultHandler扩展类中需要重写startDocument(),endDocument()等等方法,因为他们方法内部有返回的具体文档的结果。 具体代码如下: print? import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Result; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; import org.xml.sax.Attributes; ...

2014-04-01 · 7 min · 1333 words · -

4款json的java类库, FastJson

4款json的java类库, FastJson JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。 下面介绍四款处理json的java类库: Json-lib、Gson、Jackson、Fastjson FastJson Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。网址: https://github.com/alibaba/fastjson maven依赖配置: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version> </dependency> 示例: 复制代码 public static String bean2Json(Object obj){ return JSON.toJSONString(obj); } VO vo = JSON.parseObject("...", VO.class);``` Json-lib JSON-lib is a java library for transforming beans, maps, collections, java arrays and XML to JSON and back again to beans and DynaBeans. 官网: http://json-lib.sourceforge.net/ ...

2014-03-31 · 5 min · 923 words · -

audio, 音量, 静音, ALSA

audio, 音量, 静音, ALSA ubuntu系统的声音太小,通过终端调高 alsamixer linux audio, 音量,静音 # archlinux+kde 不需要手动修改默认静音设置, 安装alsa-utils, plasma-pa后重启即可。 sudo pacman -S alsa-utils #kde sudo pacman -S plasma-pa # gnome sudo pacman -S gnome-alsamixer 调音量 alsamixer ArchLinux 安装完没有声音 解除静音 amixer -c 0 sset 'Master',0 100%,100% unmute http://blog.csdn.net/weed_hz/article/details/9226055 ALSA https://segmentfault.com/a/1190000002918394 高级 Linux 声音体系 (Advanced Linux Sound Architecture,ALSA)是Linux中提供声音设备驱动的内核组件,用来代替原来的开放声音系统 (Open Sound System,OSSv3)。除了声音设备驱动,ALSA还包含一个用户空间的函数库,以方便开发者通过高级API使用驱动功能,而不必直接与内核驱动交互。 Arch 默认的内核已经通过一套模块提供了 ALSA,不必特别安装。 udev 会在系统启动时自动检测硬件,并加载相应的声音设备驱动模块。这时,你的声卡已经可以工作了,只是所有声道默认都被设置成静音了。

2014-03-30 · 1 min · 59 words · -

linux sha1sum

linux sha1sum Print or check SHA1 (160-bit) checksums. With no FILE, or when FILE is -, read standard input. sha1sum {file} If you want to send the file together with its sha1sum output redirect the output to a file: sha1sum {file} > {file}.sha1 Send both files and the other party can do a… sha1sum -c {file}.sha1 It should show OK if the sha1 is correct.

2014-03-22 · 1 min · 65 words · -

apache commons StringUtils

apache commons StringUtils http://vipcowrie.iteye.com/blog/1513017 org.apache.commons.lang.StringUtils StringUtils是apache commons lang库 (http://commons.apache.org/lang)旗下的一个工具类,提供了很多有用的处理字符串的方法,本文不打算把所有的方法都介绍一遍,我会介绍一些精选的常用的给大家。 目前StringUtils有两个版本可用,分别是较新的org.apache.commons.lang3.StringUtils和较老的org.apache.commons.lang.StringUtils,他们有比较大的区别,前者需要JAVA 5,我想这个应该是我们希望使用的。 public static boolean equals(CharSequence str1,CharSequence str2) 我们就先从最简单的方法equals开始,和你想的一样,他需要两个字符串参数,当相同的时候返回true,否则返回false。 但是java.lang.String已经有现成的比较完美的equals方法了,为何我们还需要一个第三方的实现呢? 这个问题很好,让我们来看看下面这些代码,看看有何问题? Java代码 收藏代码 public void doStuffWithString(String stringParam) { if(stringParam.equals(“MyStringValue”)) { // do stuff } } 这个可能有NullPointerException出现,那么有几个办法处理: Java代码 收藏代码 public void safeDoStuffWithString1(String stringParam) { if(stringParam != null && stringParam.equals(“MyStringValue”)) { // do stuff } } public void safeDoStuffWithString2(String stringParm) { if(“MyStringValue”.equals(stringParam)) { // do stuff } } 我本人不喜欢上面的两个方法,第一个看起来太臃肿,第二个看起来像错误的。这里我们就可以用一些StringUtils类了,这个类提供的equals方法是空指针安全的,不用担心传递给他的是什么参数,他不会抛出空指针异常,这样写: Java代码 收藏代码 public void safeDoStuffWithString3(String stringParam) { if(StringUtils.equals(stringParam,“MyStringValue)) { // do stuff } } 这个是我个人的喜好,但是这个确实看起来比较简单易读。前面的两个方法虽然么有什么问题,但是我想StringUtils.equals还是值得考虑的。 isEmpty,isNotEmpty,isBlank,isNotBlank 和前面一样,这些方法相对于jdk提供的isEmpty方法来说,多了一个"空指针安全”,即不用考虑传递参数的空值问题,让我们来看一个例子: Java代码 收藏代码 if(myString != null && !myString.isEmpty()) { ...

2014-03-21 · 1 min · 176 words · -

excel vlookup

excel vlookup http://www.utosee.com/post/vlookup.html 今天在百度知道的时候,看到旁边有人问excel中条件查找vlookup的问题,有几位高手都知道使用vlookup作答,可惜都是没有经过测试,直接复制别人的答案,让所有的读者都无法实施,一头雾水。今天我们详细解答一下vlookup函数的实际应用问题: 问题: 如下图,已知表sheet1中的数据如下,如何在数据表二 sheet2 中如下引用: 当A列学号随机出现的时候,如何在B列显示其对应的物理成绩? vlookup-excel数据引用 首先我们知道需要用到vlookup函数,那么先介绍一下使用 vlookup函数的几个参数,vlookup是判断引用数据的函数,它总共有四个参数,依次是: 判断的条件 跟踪数据的区域 返回第几列的数据 是否精确匹配 根据以上参考,和上述在sheet2表的B列显示问题的实际需求,在sheet2表的B2单元格输入这个公式是: =vlookup(a2,sheet1!$a$2:$f$100,6,true) 详细说明一下,在此vlookup函数例子中各个参数的使用说明: a2 是判断的条件,也就是说sheet1表和sheet2表中学号相同者,即sheet2表a列对应的数据和sheet1表中学号列a列的数据相同方能引用; sheet1!$a$2:$f$100 是数据跟踪的区域,因为需要引用的数据在f列,所以跟踪的区域至少在f列,sheet1!是不同表间引用所用的表名称,和标志是表间引用的!符号,$是绝对引用 (关于绝对引用可以参考这里) ,$a$2:$f$100 表明从A2到F100单元格的数据区域,如果数据区域不止100,那么可以直接使用A:F,这样虽然方便但是有风险,因为如果sheet1表的下方还有其它数据,就有可能出现问题; 6 这是返回什么数的列数,如上图的物理是第6列,所以应该是6,如果要求英语的数值,那么此处应该是5 是否绝对引用,如果是就输入 true 如果是近似即可满足条件 那么输入false (近似值主要用于带小数点的财务、运算等) vlookup是垂直方向的判断,如果是水平方向的判断可使用Hlookup函数 结果如下图: vlookup-excel数据引用 不知道你是否已经会使用vlookup这个条件查找函数,如果你有兴趣可以试试本例。与本例结合紧密的是excel数据引用,更多的excel可以参考这里。 本文是 有图小站 原创,原地址 http://www.utosee.com/post/vlookup.html 转载请保留。

2014-03-21 · 1 min · 42 words · -