Archive

Posts Tagged ‘Java’

Mybatis映射BigDecimal问题

November 9th, 2018 No comments

Mybatis映射数据库类型中使用numberic和decimal时,
如果需要使用String进行数据传递但是小数位很长或者整数位很长的话
Mybatis会把数据映射成BigDecimal来处理
但是如果Mybatis会傻傻的使用.toString()来转换,结果可能会被转成科学记数法
今天某数据库存储的超长订单号就出现了这个问题,不说了,我去改代码了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// MyBatis的做法,直接调用Bigdecmal的.toString()
// 浮点数的打印时正常
new BigDecimal("10000000000").toString()
// >>10000000000
 
// 普通的数字字符串,没关系,我们发誓订单号不会超过限度,用数字类型没关系
new BigDecimal("100.000").toString()
// >>100.000
 
// 去除末尾多余的0,我们用了保留订单号,订单号用123开头,然后补0,
new BigDecimal("100.000").stripTrailingZeros().toString()
// >>1E+2
 
// 避免输出科学计数法, 这才是正确的做法,MyBatis怎么搞得,这点转换都不做,MyBatis还能干啥?
new BigDecimal("100.000").stripTrailingZeros().toPlainString()
// >>100
Categories: 语言编程 Tags: ,

Windows/Linux 编译和配置Tomcat Native

September 20th, 2017 No comments

Tomcat Native 是利用 APR 来提升Tomcat性能的本地API。
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。

WIndows环境下安装Tomcat Native只需要到
http://tomcat.apache.org/download-native.cgi
下载Tomcat Native Connector的window版本,下载完毕后将
tcnative-1.dll (含32位和64位)
复制到tomcat目录下的bin目录即可使用。

Linux需要自行编译Tomcat Native Connector,具体步骤如下
Read more…

Categories: 系统管理, 零敲碎打 Tags: ,

[Linux]Java获取本机网卡IP地址

December 1st, 2016 No comments

应用程序服务器由Windows环境整体迁移到Linux环境,出现了不能获取本机IP地址的问题
原因是下面一段JAVA代码在Linux下直接返回127.0.0.1。Windows下有效的InetAddress貌似在linux下不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
public static String getLocalIP() {
    String ip = "";
        try {
            InetAddress address = InetAddress.getLocalHost();
            if(address != null) {
                ip = address.getHostAddress();
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    return ip;
}

原因在于Java使用的JNI代码调用的是Linux中的gethostname内核函数
这个函数在Linux主机没有绑定IP的情况下根据Host文件定义返回默认的localhost或者127.0.0.1。
Read more…

Categories: 系统管理, 零敲碎打 Tags: , ,

JSch连接SSH问题Exception:Algorithm negotiation fail

August 16th, 2016 No comments

使用Jenkins配置完远程SSH服务器,发生无法连接问题,查看Log后找到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[SSH] Exception:Algorithm negotiation fail
    com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:520)
    at com.jcraft.jsch.Session.connect(Session.java:286)
    at com.jcraft.jsch.Session.connect(Session.java:150)
    at org.jvnet.hudson.plugins.SSHSite.createSession(SSHSite.java:141)
    at org.jvnet.hudson.plugins.SSHSite.executeCommand(SSHSite.java:151)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.executePreBuildScript(SSHBuildWrapper.java:75)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.setUp(SSHBuildWrapper.java:59)
    at hudson.model.Build$BuildExecution.doRun(Build.java:154)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533)
    at hudson.model.Run.execute(Run.java:1754)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Finished: FAILURE

Read more…

Categories: 系统管理 Tags: , ,

MAC OS编译Android版Linphone SDK和APP

October 28th, 2015 No comments

之前在MAC OS折腾编译iOS版linphone-iphone SDK和APP成功,下一步继续编译Android版的linphone-android。Android版的文档更简单,一个README.TXT就结束,然后各种调查。

简单说明一下linphone
Linphone is an open source SIP Phone, available on mobile and desktop environments (iOS, Android, Windows Phone 8, Linux, Windows Desktop, MAC OSX) and on web browsers.
Linphone has inside a separation between the user interfaces and the core engine, allowing to create various kinds of user interface on top of the same functionalities.

Read more…

Categories: 移动互联, 语言编程 Tags: ,

Android强制使用WebView不调用系统或外部浏览器

October 21st, 2015 No comments

HTML5 HYBIRD混合APP需要在H5页面中打开第三方网站(例如:百度),android默认不在当前WebView中打开,反而会调用系统或外部浏览器,解决办法是自己重写WebViewClient,覆盖shouldOverrideUrlLoading并让其返回True。

实现代码

1
2
3
4
5
6
7
8
mWebView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url)
      {
            // webview自己加载URL,让后通知系统不需要HandleURL
            view.loadUrl(url);
            return true;
      }
});

Read more…

Categories: 语言编程, 零敲碎打 Tags: ,

Android开发之使用Ant命令行编译和APK签名

July 8th, 2013 No comments

最近在做Android开发时,需要引用第三方的代码进项目,一般情况下,直接在Eclipse下设置需要导入的代码的编译输出为library即可,但是很多代码在Eclipse下编译会出现很多莫名其妙的错误。因而只能使用命令行方式对代码进行编译。具体方法如下:

1.安装编译用的Java,安装Android Platform-tools,安装Ant,设置好各种环境变量。部分Linux下Ant已经默认集成,Windows下需要自行安装。
2.使用Android工具更新代码的编译配置。
3.使用Ant工具进行编译,可编译Debug版和Release版本。
4.生成代码签名用的私钥,并对APK进行签名。
5.对APK文件进行对齐,对大文件APK有不错的效果。
Read more…

Categories: 移动互联, 语言编程 Tags: , , , ,