首页 > 代码库 > 2017.2.7

2017.2.7

一.log4j配置及使用
1.导入log4j jar包,add to build path,,,add to build path后Eclipse会自动生成“referenced libraries”这个文件夹,里面包含了引入的jar包
2.添加log4j的配置文件,log4j.properties,自己创建。可以创建在任何地方。
3.log4j.properties创建书写完后,要加入项目的classpath或者buildpath。否则项目不会读取到这个配置文件。

二.log4j报错“log4j:WARN No appenders could be found for logger (com.ZZgjs.Access.AppMain).
log4j:WARN Please initialize the log4j system properly.”
原因:项目找不到log4j.properties配置文件,要将log4j.properties添加到classpath或者项目的启动路径里。

三。怎样将创建的配置文件或者自己创建的文件夹添加进项目的启动路径或者classpath?
答:1.config build path->source->add folder,选择你创建的文件夹,这样这个文件夹就被导入的项目的启动路径里了
或2.It looks like you need to add the location of your log4j.properties file to the Classpath in Eclipse.
Make sure your project is open in Eclipse, then click on the "Run" menu at the top of Eclipse and click on the following:
Run
Run Configurations
Classpath (tab)
User Entries
Advanced (button on the right)
Add Folders
then navigate to the folder that contains your log4j.properties file
Apply
Run
The error message should no longer appear.

2.Juint的配置和使用
1.下载juint.jar包并且add to build path.
2.生成JUnit测试框架:在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择“New à JUnit Test Case”。
选择class under test,写上你要测试的类。选择你要测试的方法,
3.第四步,运行测试代码:按照上述代码修改完毕后,我们在CalculatorTest类上点右键,选择“Run As à JUnit Test”来运行我们的测试,会一次性运行所有的测试类。并显示runs,erros,fails
http://blog.csdn.net/chenleixing/article/details/44259453


3.Eclipse项目中,自己创建的文件夹,一定要add to source里面,否则是没办法在这个文件夹下创建类的。
比如常用的,testcase测试用例,我们常常创建一个单独的test的文件夹,在里面写上测试用例。但是你如果不把test文件夹add to source的话,是没办法添加进类的在这里面。

4.常用的日志库有;很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。
5.log4jshi apache的。java util包夜提供了logging,日志类的使用。
6.使用SLF4J比log4j或者java.util.logging要优秀。
7.SLF4J不同于其他日志类库,与其它有很大的不同。SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志类库。如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。

8.如果一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active
MQ使用了SLF4J,你可以继续使用你的日志类库而无语忍受加载和维护一个新的日志框架的痛苦。

9.注意:你使用的每个外来的jar包,如果这个外来jar包又引用了其他的jar包,你就需要把这个外来的jar也要引入进来。否则无法运行,所以下载jar包是个很悲催的事情。
10.怎么用SLF4J做Log4J的日志记录

除了以上好处,我想还有一个告诫,就是为了使用SLF4J,你不仅需要包含SLF4J的API jar包,例如 slf4j-api-1.6.1.jar,还需要相关Jar包,这取决于你在后台使用的日志类库。如果你想要使用和Log4J 一起使用SLF4J ,Simple Logging Facade for Java,,你需要包含以下的Jar包在你的classpath中,取决于哪个SLF4J和你在使用的Log4J的版本。例如:

slf4j-api-1.6.1.jar – JAR for SLF4J API
log4j-1.2.16.jar – JAR for Log4J API
slf4j-log4j12-1.6.1.jar – Log4J Adapter for SLF4J
如果你在使用Maven去管理你的项目依赖,你只需要包含SLF4J JAR包,maven会包含它的依赖的相关包。为了和SLF4J一起中使用Log4J,你可以包含以下的依赖在你项目中的pom.xml。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>

5.怎样使用slf4j?:引入正确的slf4j即可,包括slf4ja-api.jar包和slf4j-log4j.jar包即可。这俩包。然后下载相应的log4j.jar包
6.之后你代码是用的就是slf4j的logger类和方法,但依然会将log信息输出到log4j配置文件的输出log文件。
private static org.slf4j.Logger logger = LoggerFactory.getLogger(APPMain.class);

7.static用法:类加载时期,就要初始化的一些类的东西。比如常用的日志logger,就要弄成静态的,让它在类加载时就创建了logger,方便运行时使用。同事也方便这个类的静态方法使用这个logger。如果logger设置成非静态的,那么这个类里的静态方法是不能使用这个logger的。
8.说白了就是,静态static作用是在类的加载时期就学要初始化的一些数据和对象。
9.采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到,算是起到一个加密的作用。
Base64使用A--Z,a--z,0--9,+,/ 这64个字符
10.Base64并不是一种用于安全领域的加密解密算法(这类算法有DES等),尽管我们有时也听到使用Base64来加密解密的说法,但这里所说的加密与解密实际是指编码(encode)和解码(decode)的过程,其变换是非常简单的,仅仅能够避免信息被直接识别。

11.示例代码:

String类型 进行Base64编码
String encoded = Base64.encode("Hello, world!");

String类型 进行Base64解码
String decoded = Base64.decode(encoded);

指定字符编码方式
String encoded = Base64.encode("Hello, world!", "UTF-8");
String decoded = Base64.decode(encoded, "UTF-8");
对文件进行编码:
如果文件比较小,可以通过以下方式,直接读取到内存中进行编码处理
byte[] source = ...; // load your data here
byte[] encoded = Base64.encode(source);
byte[] decoded = Base64.decode(encoded);

如果大件比较大,则建议使用stream:
代码示例Base64编码:
InputStream inputStream = new FileInputStream("source.jpg");
OutputStream outputStream = new FileOutputStream("encoded.b64");
Base64.encode(inputStream, outputStream);
outputStream.close();
inputStream.close();
代码示例Base64解码:
InputStream inputStream = new FileInputStream("encoded.b64");
OutputStream outputStream = new FileOutputStream("decoded.jpg");
Base64.decode(inputStream, outputStream);
outputStream.close();
inputStream.close();

base64编码解码,java中base64使用,base64编码介绍与原理,base64加密与解密

20.先以“迅雷下载”为例: 很多下载类网站都提供“迅雷下载”的链接,其地址通常是加密的迅雷专用下载地址。
其实迅雷的“专用地址”也是用Base64"加密"的,其过程如下:
一、在地址的前后分别添加AA和ZZ
二、对新的字符串进行Base64编码
另: Flashget的与迅雷类似,只不过在第一步时加的“料”不同罢了,Flashget在地址前后加的“料”是[FLASHGET]
而QQ旋风的干脆不加料,直接就对地址进行Base64编码了

21.将二进制转换为可视化又不可读的string,就是base64的目的,base64是转换二进制用的!!!!
在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
22.base64是转换二进制用的!!!!将二进制转换为可视化又不可读的string,就是base64的目的,

23.标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它不仅在末尾填充‘=‘号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。


24.方法参数为多个时,可以用一个hashmap参数来代替

2017.2.7