分类:: Java

0

Tomcat从Nginx服务器获取客户端IP

这篇文章的信息量有点多,因为需要从这一点衍生出不少容易踩的坑。先说说标题中的问题,主要是使用了Nginx做反向代理服务器,然后后端Tomcat服务器无法获取用户真实的IP地址,使用httpServletRequest.getRemoteAddr()一直都是127.0.0.1。我们先来说一说为什么是这样? 为什么getRemoteAddr()一直是127.0.0.1?首先需要明白整体的架构图,如下

0

Quartz定时任务注入Spring服务

前两天完成了Quartz和Spring的整合,见《Spring与Quartz整合实践》,但是当时给出的例子中并没有使用Spring的Service来实现一些功能,今天调试的时候问题就出现了。Quartz中的Job居然无法识别Spring的Service Bean对象?! 在各大论坛找了很久,发现一点问题了。原因是Job类是由Quartz的Job工厂来加载的,而在Spring中,这个Job工厂加载的

0

Spring与Quartz整合实践

什么是Quartz?Quartz是一款基于Java语言的作业调度框架。一般用来创建或简单或复杂的调度时间表,执行Java下任意数量的作业。 可以通过CronTrigger定义Quartz的调度时间表(例如0 0 12 ? * WED表示“每周三上午12:00”)。此外,时间表也可以通过SimpleTrigger,由Date定义触发的开始时间、毫秒的时间间隔和重复计数(例如“在下周三12:00,然

0

阿里云验证码服务实践

在平时上网的时候,我们会见到很多不同的验证码,大多数都是图形验证码,有数字的,有大小写字母的,也有中文的等等。但是这些验证码往往特别容易被OCR技术识别,所以针对人的识别就显得没那么准确了。本文将借力阿里云的验证码服务,介绍一种滑动式的验证码服务实践。 传统验证码服务传统的验证码基本上都类似于下面这种:它的主要实现方式就是在一个图片上打印出一些文字,然后再添加一些噪声,起一个混淆的作用,主要是用

0

Drools与SpringMVC整合

本文主要介绍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

0

使用Maven生成Fat Jar

在这篇博客里面我们将详细地讲解如何利用maven来创造一个fat jar。可能大家对于fat jar的概念还不是很熟悉,没关系,在开始进一步的讲解之前我会跟你说明fat jar是什么的。另外本文的环境是 123Maven 3.3.9JDK 1.8Joda-Time 2.5 大家根据相应的情况自己创建一个Maven项目。 什么是Fat Jar?什么是Fat Jar?简单地说就是胖Jar呗!哈哈!就是

0

Java编程思想之初始化顺序(七)

Java面试中经常考查同学们的一个问题就是对象的初始化顺序。本文就重点说一说Java中的类和对象的初始化顺序。 初始化顺序我们都知道,在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。看看下面这个例子👇: 1234567891011121314151617181920212223242526class Win

0

Java编程思想之GC与finalize()(六)

垃圾回收与终结处理程序员都了解初始化的重要性,但是常常会忘记同样也重要的清理工作。毕竟。谁需要清理一个int呢?但是我们知道把一个对象用完了以后“不管不顾”总是不安全的。因为很容易导致内存泄漏。当然了,你可能会说,我们有Java内存回收器啊。需要说明白的是,Java内存回收器只知道释放哪些由new创建的对象。假如你的代码没有通过new创建对象而是通过别的途径(比如说,调用了JNI本地方法,C++里

0

Java编程思想之this关键字(五)

大家可能都知道this关键字,而且平时在工作中也用的非常多,那么你是真正知道this关键字的作用吗?如果一个类有两个实例a和b,那么你可能想知道如何让这两个实例都能调用work()方法呢? 12345678910class Person { void work(){ /** something **/ } }public class PersonWorker

0

细说Java8之新增API下

Streams流这里不得不说一下Java8中新出来的一个神器java.util.Stream。那么java.util.Stream是什么呢?我们说java.util.Stream表示一个可以对其中的元素进行一项或多项操作的序列。具体是什么呢?我们先说说这些操作可以是什么?这些操作可以是直接取得结果的,也可以只作为某一个中间过程。比如说针对list或者是set,这些Stream操作可以每次只对其中一