阿里云验证码服务实践
在平时上网的时候,我们会见到很多不同的验证码,大多数都是图形验证码,有数字的,有大小写字母的,也有中文的等等。但是这些验证码往往特别容易被OCR技术识别,所以针对人的识别就显得没那么准确了。本文将借力阿里云的验证码服务,介绍一种滑动式的验证码服务实践。 传统验证码服务传统的验证码基本上都类似于下面这种:它的主要实现方式就是在一个图片上打印出一些文字,然后再添加一些噪声,起一个混淆的作用,主要是用
在平时上网的时候,我们会见到很多不同的验证码,大多数都是图形验证码,有数字的,有大小写字母的,也有中文的等等。但是这些验证码往往特别容易被OCR技术识别,所以针对人的识别就显得没那么准确了。本文将借力阿里云的验证码服务,介绍一种滑动式的验证码服务实践。 传统验证码服务传统的验证码基本上都类似于下面这种:它的主要实现方式就是在一个图片上打印出一些文字,然后再添加一些噪声,起一个混淆的作用,主要是用
本文主要介绍Drools6.4.Final版本与SpringMVC的整合。网上现有的教程大多数不能完整运行,本文将会提供具体的操作过程以及相应的注意事项,保证Demo代码是可以跑通的。 开发环境 macOS High Sierra Intellij IDEA 2017.2 Drools 6.4.0.Final SpringMVC 4.3.12.RELEASE JDK 1.8.0_144 搭建Ma
本章作为这个系列的最后一章,主要是讲如何在Java代码中运行Velocity模板引擎,还是一贯的套路,使用Maven项目来演示,主要从以下几个方面来讲: pom依赖 程序演示 结果展示 注意事项 总结 pom依赖在网站http://www.mvnrepository.com中搜索“velocity”,就可以得到这个依赖: 12345<dependency> <group
无论是哪种编程语言,都应该支持一些函数,VTL也不例外,只不过在Velocity中我们不叫它函数,叫它宏(Macro),宏允许我们定义一系列的动作,并且重复使用它。使用的时候主要是创造一些自定义的新命令,什么命令都可以,都可以通过#号来表示。 #macro命令来简单看一下Velocity宏的使用吧: 123#macro ( tr )<tr><td></td>&l
前面说了Velocity的VTL语法,关于Velocity的对象,引用等有了比较清晰的认识。但是,Velocity本身有哪些强大的功能呢?本章我们就来讨论一下Velocity中有哪些非常强大的命令(directives)和操作。 命令directives在Velocity中,我们重点需要了解的命令列举如下,以便于大家提前有一个简单的认识。 #set()[单行命令] #literal()[多行命令
Velocity模板引擎如何使用,语法是怎样的?本博客将会在变量的赋值,引用以及注释等三个方面来谈一谈Velocity的语法。但是在开始语法之前,我们快速地搞一个Hello World出来试下水。 123456<html><body>#set( $name = "Velocity" )Hello $name World!</body></html>
最近在看一个模板引擎工具Velocity,是Apache项目下面的一个子项目,已经非常出名了!不过我之前倒没有接触过这个模板引擎,我用的是另一个模板引擎freemarker,这也是Apache下面的一个项目。两者都非常优秀,原理都差不多,大家可以根据项目的需要选择其中一个学习。 什么是Velocity?先回答第一个问题,什么是Velocity?嗯,Velocity就是一个基于Java的模板引擎。它
在这篇博客里面我们将详细地讲解如何利用maven来创造一个fat jar。可能大家对于fat jar的概念还不是很熟悉,没关系,在开始进一步的讲解之前我会跟你说明fat jar是什么的。另外本文的环境是 123Maven 3.3.9JDK 1.8Joda-Time 2.5 大家根据相应的情况自己创建一个Maven项目。 什么是Fat Jar?什么是Fat Jar?简单地说就是胖Jar呗!哈哈!就是
Java面试中经常考查同学们的一个问题就是对象的初始化顺序。本文就重点说一说Java中的类和对象的初始化顺序。 初始化顺序我们都知道,在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。看看下面这个例子👇: 1234567891011121314151617181920212223242526class Win
垃圾回收与终结处理程序员都了解初始化的重要性,但是常常会忘记同样也重要的清理工作。毕竟。谁需要清理一个int呢?但是我们知道把一个对象用完了以后“不管不顾”总是不安全的。因为很容易导致内存泄漏。当然了,你可能会说,我们有Java内存回收器啊。需要说明白的是,Java内存回收器只知道释放哪些由new创建的对象。假如你的代码没有通过new创建对象而是通过别的途径(比如说,调用了JNI本地方法,C++里