在Spring+FreeMarker中使用Shiro的Tag标签

目前Freemarker对Shrio的标签还不支持,不过已经有人贡献出来第三方面解决方案,如下:

1、下载shiro-freemarker-tags

GitHub地址:https://github.com/jagregory/shiro-freemarker-tags
可以先看一下他的说明文档,有一个初步的了解。

Read More

一些开源项目推荐

早上打开邮件就受到了开源中国的邮件,是一个目前互联网公司开源项目的导航页 http://www.oschina.net/company , 去里面把所有的开源项目都大致看了下,找到了几个我比较感兴趣的,在这儿mark下。

    Read More

    Spring之JdbcTemplate进行查询的三种回调方式的比较

    我们做过的很多项目中都会使用spring的JdbcTemplate进行结果集的查询操作,以前在使用的时候一直都是“拿来主义”,功能实现了就OK了,没有深究什么内容,特别是查询接口的回调内容方法,没有过多的研究过细节内容。最近一次使用JdbcTemplate进行查询操作,发现了一些有规律的内容,所以就深入学习了一下。和大家一起探讨一下:对于spring的JdbcTemplate进行结果集查询操作,spring给我们开发的是一系列的query方法,这些查询的方法中回调的接口主有三种:ResultSetExtractor,RowCallbackHandler,RowMapper。

    Read More

    Java获取照片信息(照片的照相机、时间等一系列数据)

    首先介绍一下什么是EXIF,EXIF是 Exchangeable Image File的缩写,这是一种专门为数码相机照片设定的格式。这种格式可以用来记录数字照片的属性信息,例如相机的品牌及型号、相片的拍摄时间、拍摄时所设置的光圈大小、快门速度、ISO等等信息。除此之外它还能够记录拍摄数据,以及照片格式化方式,这样就可以输出到兼容EXIF格式的外设上,例如照片打印机等。

    Read More

    IDEA-Error-java- Compilation failed-internal java compiler error

    编译时问题如下:

    明显是版本问题,按照如下更改即可:

    Read More

    Spring Boot Hello World!

    在一些开源项目的介绍上看到过很多次的spring boot字眼,可一直没具体去看过,今天先简单上手跑通一下流程 :p

    回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少。然后继续使用tomcat或者jetty作为容器来运行这个工程。基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一个Spring web工程来测试一些东西,或者是希望能节省时间。

    Read More

    使用SfntTool对字体文件瘦身

    在做移动端的H5页面时经常遇到一些特殊字体,往往动辄就4-5M,大的有的20多M,这文件要是扔到web上肯定就直接歇菜了。所以这时候就得想下怎么对字体文件瘦身呢?无外乎是对字体文件中没有用到的字体进行剔除,一个字体文件中少说也有3500个字根,我们一个页面用到的也就100-200字最多了,所以有很多冗余的字根我们可以去掉。

    Read More

    Java原生API获取网页源码

    今天遇到一个需求就是对一个动态的html页面(ajax获取数据进行填充)进行读取源代码然后使用nodejs的npm进行编译,最佳方式是使用httpclient来实现获取源码,但为了最快速来验证下这个需求流程所以下文用Java原生API来实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    public class Test {
    public static String getHtmlContent(URL url, String encode) {
    StringBuffer contentBuffer = new StringBuffer();
    int responseCode = -1;
    HttpURLConnection con = null;
    try {
    con = (HttpURLConnection) url.openConnection();
    con.setRequestProperty("User-Agent",
    "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");// IE代理进行下载
    con.setConnectTimeout(60000);
    con.setReadTimeout(60000);
    // 获得网页返回信息码
    responseCode = con.getResponseCode();
    if (responseCode == -1) {
    System.out.println(url.toString()
    + " : connection is failure...");
    con.disconnect();
    return null;
    }
    if (responseCode >= 400) // 请求失败
    {
    System.out.println("请求失败:get response code: " + responseCode);
    con.disconnect();
    return null;
    }
    InputStream inStr = con.getInputStream();
    InputStreamReader istreamReader = new InputStreamReader(inStr,
    encode);
    BufferedReader buffStr = new BufferedReader(istreamReader);
    String str = null;
    while ((str = buffStr.readLine()) != null)
    contentBuffer.append(str);
    inStr.close();
    } catch (IOException e) {
    e.printStackTrace();
    contentBuffer = null;
    System.out.println("error: " + url.toString());
    } finally {
    con.disconnect();
    }
    return contentBuffer.toString();
    }
    public static String getHtmlContent(String url, String encode) {
    if (!url.toLowerCase().startsWith("http://")) {
    url = "http://" + url;
    }
    try {
    URL rUrl = new URL(url);
    return getHtmlContent(rUrl, encode);
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }
    public static void main(String argsp[]) {
    System.out.println(getHtmlContent("www.k-run.cn", "utf-8"));
    }
    }

    Read More

    图片Base64格式转文件

    图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。

    这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个http请求下载而来的(所有才有了csssprites技术的应运而生)。

    Read More

    error while loading shared libraries: xxx.so.x

    在使用ffmpeg以及soundtouch的过程中遇到了这个错误,字面意思应该是某个共享库的问题.

    已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.

    所以安装共享库后要注意共享库路径设置问题, 如下:

    1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令

    Read More