搜索到关键字为 Java 的相关日志 59 篇: ("[空格]和"+"[加号] 可作搜索分隔符号使用.)

CentOS 删除自带的OpenJDK 和 安装SunJDK suny

卸载OpenJDK:
[root@WX32 local]# java -version
java version "1.6.0"
OpenJDK  Runtime Environment (build 1.6.0-b09)
OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)

[root@WX32 local]# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
...

JMF 播放MP3文件以及获取音轨长度 suny

JMF核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。详细介绍

   java代码
  1. import java.io.File;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Calendar;  
  4.  
  5. import javax.media.Format;  
  6. import javax.media.Manager;  
  7. import javax.media.Player;  
  8. import javax.media.PlugInManager;  
  9. import javax.media.format.AudioFormat;  
  10.  
  11. public class MyTest {  
  12.  
  13.     /**  
  14.      * @param args  
  15.      * @throws Exception  
  16.      */ 
  17.     public static void main(String[] args) throws Exception {  
  18.         MyTest.Play("D:\\test.mp3");  
  19.     }  
  20.  
  21.     // 播放音频文件  
  22.     public static void Play(String fileurl) {  
  23.         try {  
  24.             Format inMp3 = new AudioFormat(AudioFormat.MPEGLAYER3);  
  25.             Format outLinear = new AudioFormat(AudioFormat.LINEAR);  
  26.  
  27.             PlugInManager.addPlugIn(  
  28.                     "com.sun.media.codec.audio.mp3.JavaDecoder",  
  29.                     new Format[] { inMp3 }, new Format[] { outLinear },  
  30.                     PlugInManager.CODEC);  
  31.  
  32.             File file = new File(fileurl);  
  33.             Player player = Manager.createPlayer(file.toURI().toURL());  
  34.             player.start();  
  35.             Thread.sleep(500);  
  36.  
  37.             double seconds = player.getDuration().getSeconds();  
  38.             System.out.println("MediaTime:" + seconds);  
  39.             System.out.println("MediaTime:" + getTime(seconds));  
  40.         } catch (Exception e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.     }  
  44.  
  45.     public static String getTime(double time) {  
  46.         int millis = Integer.parseInt(String.valueOf(Math.round(time)));  
  47.         Calendar cal = Calendar.getInstance();  
  48.         cal.set(00000, millis);  
  49.  
  50.         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");  
  51.         return sdf.format(cal.getTime());  
  52.     }  
  53.  

Eclipse快捷键大全(转载) cloud

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
...

不受支持的 SQL 类型 1111 rainy

Sybase 的官方驱动 jConnect4 (链接字符串:jdbc:sybase:Tds:127.0.0.1:5000/xxx) 结合myBatis使用时,发现如下问题,当insert或者update语句的变量含有null值,会报错:

 ### Cause: java.sql.SQLException: JZ006: 捕获到 IO 例外:java.io.IOException: JZ0SL: 不受支持的 SQL 类型 1111。

Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.

由于参数出现了null值,myBatis进行操作的时候,指定jdbcType类型的参数时,mybatis默认设置为jdbcType.OTHER,导致Sybase数据库无法识别此格式。

解决方法:给参数加上jdbcType可解决(注意大小写) 。

比如:
insert into xxx(a,b) values(#{a,jdbcType=VARCHAR}, #{b,jdbcType=DATE})
update xxx set a=#{a,jdbcType=VARCHAR} where id=#{id}

目前jdbcType含有以下类型:

ARRAY(Types.ARRAY),
BIT(Types.BIT),
...

Spring 打包成jar 在Linux下运行的问题 suny

在本地Eclipse开发和调试是没问题的,打包成jar放到Linux下无法启动,报错:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mainThead' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
...

myBatis 存储过程返回值的问题 cloud

今天在调试myBatis调用Sybase数据库的存储过程的时候,出现了如下错误:

org.apache.ibatis.binding.BindingException: Mapper method 'getNextKey' (interface com.xxxxxxx.PackHandleMapper) attempted to return null from a method with a primitive return type (long).
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
at $Proxy17.getNextKey(Unknown Source)
....

报错信息言下之意是返回值为空,可是我的存储过程明明是返回了一个记录集,存储过程如下:

   sql代码
  1. CREATE PROCEDURE prc_seq(@seq_name varchar(20)) 
  2. AS 
  3. BEGIN
  4.     UPDATE seq SET val=val+1 WHERE [name]=@seq_name 
  5.     SELECT val from seq WHERE [name]=@seq_name 
  6. END 
  7. GO 

而且在数据库终端,可以成功执行和返回数据:
exec prc_seq 'xxx'

--------------------------------------------------------------------------------------------------------

经过排查得知,故障是由于update语句引起的,执行上面的语句,会产生两条执行记录,myBatis获取了update语句的执行情况:

1 record(s) affected
1 record(s) selected  [Fetch MetaData: 0/ms]  [Fetch Data: 0/ms] 

解决方法,去掉update语句的执行情况返回,即增加语句:SET NOCOUNT ON

   sql代码
  1. CREATE PROCEDURE prc_seq(@seq_name varchar(20)) 
  2. AS 
  3. BEGIN 
  4.     SET NOCOUNT ON 
  5.     UPDATE seq SET val=val+1 WHERE [name]=@seq_name 
  6.     SELECT val from seq WHERE [name]=@seq_name 
  7. END 
  8. GO 

...

jQuery ajax 返回json数据格式的问题 suny

 今天在使用如下代码的时候,

   javascript代码
  1. $.get("/ajax", {"ran":Math.random(),"act":act,"id":id}, function(d) {  
  2.         alert(d.ret); 
  3.     },"json"); 

返回的数据是:{ret:0} ,发现无法直接把返回的数据转换为 json 对象,需要使用

var d = eval("("+data+")");  转换一下对象才可以。

...

[转]图片延迟加载技术(ImageLazyLoad) cloud

 ImageLazyLoad技术,就是在下拉滚动条的时候加载图片,这种比较适合一个网页上有很多图片的情况,例如某个页面都是图片,那么如果用户访问的时候,会在加载完整个页面等待很长时间,而用第一眼看到的只是第一屏的内容,所以第二屏、第三屏等的内容加载时间其实是在浪费时间!如果用户只看了第一屏,而不翻屏就关掉了浏览器,那么第二屏第三屏下载的资源也是一中流量的浪费! 并且加载用户体验也不好!那么这就有了这个小技巧,使用javascript来实现图片缓冲,只加载用户要看的屏幕的资源,这个小技巧的好处是提高访问速度,提高用户体验,对seo没有什么帮助!,不废话,说做法: 

一、使用JQuery插件 ,插件名: jquery.lazyload(7kb大小),压缩后(3kb大小):

1.导入JS插件,请自行到jquery官方下载js文件
<script src="http://jianzi0307.blog.163.com/blog/jquery.js" type="text/javascript"></script>
...

jQuery.getJSON 跨域访问远程数据源“拒绝访问”的解决方法 cloudy

昨天在开发一个腾讯微博API的时候,遇到jQuery.getJSON跨域名远程访问json数据源的时候,报“拒绝访问”的脚本错误。

修改前:

   javascript代码
  1. $.getJSON(apiURL+"gethtlist.jsp"
  2.       {"page":page,"pageSize":pageSize,"pageinfo":pageinfo}, 
  3.       function(json){ 
  4.             alert(json); 
  5.       }); 

修改后:

   javascript代码
  1. $.getJSON(apiURL+"gethtlist.jsp?jsoncallback=?"
  2.       {"page":page,"pageSize":pageSize,"pageinfo":pageinfo}, 
  3.       function(json){ 
  4.             alert(json); 
  5.       }); 

URL后面多了:?jsoncallback=?

当然,jsoncallback可以改为其它你想要的名字,然后在服务端(本例指gethtlist.jsp)应该获取这个参数,并且封装一下json数据。

修改前只是一个json数据对象:
{"data":{id:1,title:'javawind'},msg:"ok",ret:0}

那么我们应该修改成:
jsoncallback({"data":{id:1,title:'javawind'},msg:"ok",ret:0})

其中jsoncallback是获取的jsoncallback的参数,这里是jsp,所以应该是:
<%=request.getParameter("jsoncallback")%>({"data":{id:1,title:'javawind'},msg:"ok",ret:0})

jsoncallback=? 表示参数由jQuery自动生成,最终它会生成一个jsonp1294882912998这样格式(jsonp+时间戳)的参数,你也可以指定jsoncallback=xxxyyy参数给他,服务器端就可以不用动态获取了。

参考文档:
jQuery 1.3 API 参考文档中文版
Remote JSON - JSONP


...

jSQL Manager Version 1.0.0 Beta(测试版)低调发布 cloudy

什么是jSQL Manager?

      笔者从事JAVA开发2年多,期间开发和维护了不少项目,深知数据库管理的重要性。程序排错、系统更新、日常维护都和数据库管理息息相关。特别是一些在Linux系统部署的系统维护更为头疼,由于采用SSH远程连接,直接在控制台敲命令。SSH没有图形化可视操作,而且对中文的支持也很不友好,数据库管理很不方便。而且大部分系统为了安全考虑,并没有开放数据库和SSH的外网远程访问权限,常常需要使用QQ的远程协助功能和其系统内部的一些技术员进行远程控制操作,受网络传输影响,常常卡得心烦气躁,头疼不已。

      因此,我开始有了开发一个在线管理数据库的软件的想法,jSQL Manager应运而生。

      jSQL Manager是一款基于Java/jsp语言开发的在线管理数据库的软件,适用于MySQL、MSSQL、Oracle的数据库在线管理。(目前测试版仅支持MySQL5)。

...

Total:591234566 Pages