BK的博客

记录成长的轨迹

使用jersey框架时遇到了如下错误”The ResourceConfig instance does not contain any root resouce classes”. 下面是这个错误的几种解决办法.

  1. 确认要发布出去的类被@Path注解修饰.
  2. 确认这些在类加载路径里.
  3. 确认web.xml中配置的包名正确.
  4. 这些类需要以class文件的方式放到类路径里, 而不是jar包的方式. 否则可能在Windows上可以正常运行, 到Linux上就无法正常运行了.

ps: 其实官方文档有这方面的描述, 但是目前还没有看出来需要对jar包做怎样的特殊处理. 等试出来之后再添加上来.

由于项目需要, 学习了一下tomcat配置https访问. 这里简单聊一下tomcat配置https访问的步骤.

生成证书

在浏览器通过https访问网站时, 网站需要出示一个证书证明自己的身份. 因此在配置https访问之前, 我们需要生成一个密钥对. 我们为了省事, 只是简单的自己生成一个密钥对.

生成密钥对的命令如下:

1
keytool -genkey -alias apple -keyalg RSA -sigalg SHA256withRSA -keysize 1024 -validity 36500 -keystore ./keystore
阅读全文 »

由于项目需要将pdf转成图片, 所以学习了使用java将pdf文件转成图片的方法. 这里记录下方法, 方便以后查阅.

目前pdf转图片比较常用的类库有如下几个:

  • PDFRenderer: 开源, 是Swinglabs的一个子项目. 效率较高, 但是无法处理中文.
  • pdfbox: apache的一个开源项目, 部分支持中文, 有些中文pdf可以正常转换, 有些则完全无法转换, 比较消耗内存.
  • jpedal: 据说有开源和商业版本, 但是我只找到了商业版本, 而且价格不菲, 所以并没有试过…
  • ICEPDF: 有开源和商业版本. 开源的也是部分支持中文, 商业版的没有尝试过.

上面所说的四种工具, 只有pdfbox能支持项目中用到的中文pdf. 所以我使用的是pdfbox. 但是在解决过问题以后, 我使用其他的pdf文件测试时, 有些中文pdf文件转换过之后就只剩下乱码了. 如果需要完美的中文支持, 可能只有使用 jpedal 或者 ICEPDF 的商业版才行吧?

阅读全文 »

在合适的地方使用缓存可以 简化程序逻辑 或者 提高程序的效率. 比如前面的发送短信部分中限制发送频率限制日发送次数就可以使用缓存机制实现.这里我们自己实现一个简易版的缓存类. 该类提供如下功能:

  • 可以添加键值对
  • 根据键获取对应的值
  • 超时的键值对会被删除
  • 可以限制缓冲区的大小
阅读全文 »

junit是最常用的java单元测试框架之一. 目前junit5已经推出了5.0.0 Alpha版, 那么junit5相对于junit4有什么变化呢? 有什么新特性呢? 在这里我们聊一下junit5的变化和新特性.

概述

junit 5主页

在介绍junit 5的新特性之前先给出几个链接. 有兴趣的朋友可以去看看:

阅读全文 »

在前几篇文章中, 我们介绍了限制发送短信频率, 限制日发送次数等功能. 但是后来z-oneC说用Redis实现会更简单. 于是这几天我大致学了一下Redis, 然后使用Redis重新实现了一次. 当然由于刚接触Redis, 或许有些地方并不合适, 还请您在留言区留言, BK在这里先谢过了.

其实使用Redis确实挺简单, 至少没有过于复杂的概念, 庞大的命令集. 基本上入门挺快的. 剩下的就是创造力和经验了. 这里我们使用Redis来完成前两篇:《发送短信–限制发送频率》、《发送短信–限制日发送次数》完成的功能.

当然, 如果读者并没有学过Redis, 可以参见《The Little Redis Book》快速入门,这本”书”基本上半个上午就可以看完.

阅读全文 »

在前两篇文章中, 我们实现了同步/异步发送短信以及限制发送短信频率.这一篇, 我们介绍一下限制每日向同一个用户(根据手机号和ip判断)发送短信的次数

数据表结构

由于需要记录整天的发送记录, 因此这里我们将数据保存到数据库中. 数据表结构如下:

阅读全文 »

本篇是发送短信的第二部分, 这里我们介绍一下如何限制向同一个用户(根据手机号和ip)发送短信的频率

使用session

如果是web程序, 那么在session中记录上次发送的时间也可以, 但是可以被绕过去. 最简单的, 直接重启浏览器 或者 清除cache等可以标记session的数据, 那么就可以绕过session中的记录. 虽然很多人都不是计算机专业的, 也没学过这些. 但是我们需要注意的是, 之所以限制发送频率, 是为了防止”短信炸弹”, 也就是有人恶意的频繁的请求向某个手机号码发送短信. 所以这个人是有可能懂得这些知识的.

阅读全文 »

本篇本章是发送短信的第一部分, 说一下同步/异步发送短信的代码, 以后几篇我们稍微完善一下功能, 添加发送频率的限制和日发送次数的限制.

发送短信的方法可能不少, 我们的方法是使用服务商提供的服务. 一般来说, 这些服务都是和语言无关的, 这里我们使用java写示例程序.

阅读全文 »

由于最近在学习hadoop, 需要ssh免密码登录, 所以学习了一下ssh免密码安装. 在这里记录一下ssh免密码登录的方法和使用场合.

单机免密码登录

如果要ssh免密码登录本机, 比如是伪分布模式安装hadoop的话, 就需要ssh免密码登录本机. 那么我们可以使用如下的方式实现免密码登录:

1
2
3
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''            # 生成公私钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 共享授权密钥
chmod 600 ~/.ssh/authorized_keys # 修改文件权限
阅读全文 »
0%