存档在 ‘JAVA WEB’ 分类

关于The APR based Apache Tomcat Native library警告

2017年9月1日

今天在Eclipse上配置Tomcat8,启动时看到如下警告信息:

The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

感到很不舒服,于是在网上找了些解决办法。

 

以下内容来自:http://cooliron.blog.163.com/blog/static/124703138201112211571276/

 

在eclipse中,启动tomcat时会出现如此信息:The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path,它其实不影响程序的正常运行,但看到了,感觉实在别扭。其解决办法如下:

http://archive.apache.org/dist/tomcat/tomcat-connectors/native/下载tcnative-1.dll,然后放到你的JDK路径下的bin目录下。重新启动tomcat,就没有问题了。

这个tcnative-1.dll 他的作用如下:

tomcat整合本地apr会使效率提升:
一是,处理静态资源的时候速度更快,(注:有人用jmeter,对使用apr前后的tomcat进行压力测试,结果显示,性能是有一定的提升,但是没有想象中多,只有一点点,当然,这与运行的逻辑有关,但是我个人认为在大多数情况下这部分性能提升甚微)。
二是,我认为提升比较多的是对ssl的处理效率,当tomcat处理https的请求是,如果使用本地的openssl库,肯定会比前面提升的效率高。(虽然没有实际测试数据,但我推测这里的性能提升比例上要比第一点多得多)。

 

原因上面已经说得很清楚了,下面说下我的解决办法。

首先,tcnative-1.dll不需要下载,至少对于Tomcat7来说是这样,我们可以在其bin目录下找到这个dll;

其次,tcnative-1.dll放在哪儿不要紧,只要在系统的PATH中可以找到就行。

 

解决:

在系统的环境变量中添加CATALINA_HOME,它指向你的Tomcat根目录,接着在PATH路径中添加%CATALINA_HOME%\bin;

这样就可以解决了,对了,设置完成后,可能需要重启下Eclipse。

Tomcat启动时org.apache.catalina.startup.VersionLoggerListener. INFO

2017年9月1日

解决办法:

打开Tomcat安装后目录,进入conf文件夹,找到配置文件server.xml,将注释掉。
817863-20161012191816703-608550536

Eclipse导入git上的maven web项目 部署

2017年3月23日

(1) Eclipse中从github导入maven项目 参考可以得到一个maven项目

(2) 使用Eclipse构建Maven的Web项目 参考2.3节
(3)http://www.cnblogs.com/lpshou/p/3199243.html

java web相关环境安装

2016年1月13日

分发的几个rar包只是针对64位机器。

将这这几个文件复制到你电脑中:
1.在D:\Program Files\目录下解压Java.rar,eclipse.rar,MySQL.rar
2.在系统环境变量中设置
【进入方法:我的电脑(或计算机)->右键后选择属性->高级系统设置->高级->环境变量】
11
22
点击新建:
JAVA_HOME

D:\Program Files\Java\jdk1.7.0_75

33
新建
CLASSPATH

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

44

修改PATH,在后面追加

;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

55
3.mysql用法
在开始里输入cmd,启动控制台
输入cd /d D:/
然后依次使用cd和tab键依次进入Program Files,MySQL目录,输入./mysqld 即可运行mysql数据库
workbench在MySQL目录下的MySQL Workbench 6.3 CE目录里

eclipse gradle配置与使用

2015年12月16日
  • 1.上Grandle官网下载Gradle,地址:http://www.gradle.org/downloads
  • 2.下载完毕,直接把zip解压,放到你电脑的软件安装目录下,例如:D:\Program Files
  • 3.我的电脑设置环境变量,如果你下载了all,需要添加GRADLE_HOME指向gradle的安装目录的跟目录,例如:D:\Program Files\gradle-2.0。然后需要在Path环境变量中加上gradle的bin目录,例如:D:\Program Files\gradle-2.0\bin

  • 4.以上步骤设置完毕,打开cmd,运行gradle -v就可以看到gradle的版本信息,标志配置完成。

  • 5.打开eclipse,Help–>Install new software,输入http://dist.springsource.com/release/TOOLS/gradle

  • 如果提示找不到地址,估计是被墙掉了,需要翻墙。如果找得到地址,选现实出来需要安装的项,然后一直按下一步,安装完毕,重启eclipse就可以了。
  • » 阅读更多: eclipse gradle配置与使用

避免Gson自动Unicode转义

2015年8月11日

服务器端待发送的字符串为:”我是中国人==ABCD==我是四川人” 。
Json化的代码为:

	Gson  gson = new GsonBuilder().setPrettyPrinting().create();
	    String json = gson.toJson(topics);
	    renderText(json);

浏览器中接收到的字符串为:
“我是中国人\u003d\u003dABCD\u003d\u003d我是四川人”。
可以看出一些特殊字符被unicode转义了。

可以采用如下增加disableHtmlEscaping方式避免转义:

		Gson  gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
	    String json = gson.toJson(topics);
	    renderText(json);

JAVA UUID生成

2015年8月11日

UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID,GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

package com.mytest;
import java.util.UUID;
public class UTest {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid);
    }
}

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
» 阅读更多: JAVA UUID生成

Java加密算法-HMAC

2015年8月11日

如基本的单向加密算法:

  • BASE64 严格地说,属于编码格式,而非加密算法
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)

复杂的对称加密(DES、PBE)、非对称加密算法:

  • DES(Data Encryption Standard,数据加密算法)
  • PBE(Password-based encryption,基于密码验证)
  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
  • DH(Diffie-Hellman算法,密钥一致协议)
  • DSA(Digital Signature Algorithm,数字签名)
  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

 
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

/**
     * 初始化HMAC密钥
     * 
     * @return
     * @throws Exception
     */
    public static String initMacKey() throws Exception {
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
 
        SecretKey secretKey = keyGenerator.generateKey();
        return encryptBASE64(secretKey.getEncoded());
    }
 
    /**
     * HMAC加密
     * 
     * @param data
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
 
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        mac.init(secretKey);
 
        return mac.doFinal(data);
 
    }