自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 在spring项目中配置跨域访问

跨域是老生常谈的问题了,不同域名或者相同域名不同端口都会产生跨域访问的问题。解决方案1、在前端用jsonp的方式请求 2、后端设置响应头header 3、用Spring MVC 4.2+的版本,已经内置提供跨域支持(@CrossOrigin注解方式 或者 自己配置下 )我用的spring mvc4.0所以这里给出第二种方式根据拦截器来实现设置响应头:import javax.servlet.*;

2017-01-31 16:15:33 3551 1

原创 Spring在多线程下@Resource注入为null

前情叙述记录以下这个坑,我的情况大致是这样的,我在用webmagic写爬虫,在类中通过@Resoource(@Autowired也一样)注入dao接口实例。然后我在process方法中引用这个实例发现这个实例在这里一直为null,然后我在测试类或者当前类的main函数中引用dao实例就没问题,一切正常(当时 黑人问号脸???)几经波折,发现原因是spring和多线程安全的问题,不让注入。因为我也没研

2017-01-30 23:34:31 3149

原创 javax.mail 与 Spring Mail 俩种方式发送简单的QQ邮件

jdk1.8的版本发送邮件可能会有我上篇博客中提到的问题,请参考 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failurejavax.mail方式package com.healist.email;import javax.mail.*;import javax.mail.internet.Intern

2017-01-29 16:09:35 899

原创 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

在用java发送邮件的时候遇到了这个问题: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure坑了我好久,解决方案就是: 在oracle这个网站上下载那个压缩文件,然后将其中的jar包替换到tomcat对应的 %JAVA_HOME%\jre\lib\security里的local_policy.

2017-01-29 01:52:06 4571

转载 URL去重思路

所谓的Url去重(我一直没找到对应的英文,URL Filtering ?),就是爬虫将重复抓取的URL去除,避免多次抓取同一网页。爬虫一般会将待抓取的URL放在一个队列中,从抓取后的网页中提取到新的URL,在他们被放入队列之前,首先要确定这些新的URL没有被抓取过,如果之前已经抓取过了,就不再放入队列。最直观的做法 – hash表为了尽快把整个爬虫搭建起来,最开始的URL去重采用方案是一个内存中的H

2017-01-28 22:07:26 4556

原创 java原生实现定时任务 与 Spring自带的定时任务

java原生实现定时任务:第一种基于无限循环的的Thread线程方法:public class ThreadExample { public static void main(String[] args) { final long timeInterval = 2000; Runnable runnable = new Runnable() {

2017-01-28 20:01:55 737

转载 设计模式之代理模式(java)

文章转自阿福的博客原本想自己找例子讲解的,但是看了他发现还是老司机讲的好听,下面看看人家高能的生动解释:应用场景举例:比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时是这样的体现的先说说这个场景中的要素:一种类型的女人,潘金莲,王婆,西门庆,后来扩展的贾氏也和西门庆勾上了,我们是假设的,然后西门庆找潘金莲happy,但潘金莲不好意思直接,就找个王婆代理呗。我们看看

2017-01-25 22:32:49 400

原创 JAVA设计模式之状态模式

状态模式,从名字就能看出来是对状态的一些封装操作。状态模式三个要素是: 环境角色: 上下文(context),提供容器环境,持有抽象状态的接口引用,进而根据条件控制状态的变化。 抽象状态角色: 定义接口以及行为。 具体状态角色: 每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。 对开发中经常需要来判断状态的业务逻辑,我们应该把其封装成状态的类,看看一

2017-01-25 22:08:20 409

原创 设计模式之迭代器与组合模式(java)

迭代器模式与组合模式在这里我们继续引用head first中例子来进行说明:看看下面饭馆中俩种菜单的实现(一种基于ArrayList,另一种基于数组)public class MenuItem { String name; String description; boolean vegetarian; double price; public MenuItem(

2017-01-25 19:30:36 375

原创 java自定义注解

看到一个讲解相对比较全面的博客,链接如下:注解(Annotation)自定义注解入门 注解(Annotation)–注解处理器java注解应用先占个坑。。

2017-01-23 01:29:46 317

原创 选择排序(java)

假如按照从小到大的顺序排列,先拿第一个元素a,然后将其与其它的元素一一对比如果之后的元素比a大,那么就将俩个元素的值对调,每次遍历出一个元素在其对应的位置。所以时间复杂度固定为O(n2)。public class Bubbling { public static void main(String[] args) { int data[] = {6, 5, 9, 7, 2, 8

2017-01-22 02:09:32 321

原创 冒泡排序(java)

对数组进行遍历,从头依次相邻的俩俩比较,根据比较结果按照自己的排序意愿进行调换,每次遍历都会将最大或者最小的元素排序到其排序后应该在的位置。最差的情况时间复杂度为O(n2),最好的情况为O(n),所以冒泡排序适合数据量小且部分数据已经经过排序了的情况。public class Bubbling { public static void main(String[] args) {

2017-01-22 01:50:25 289

原创 八皇后问题——堆栈的应用

八皇后问题也是堆栈的典型应用场景,里面也涉及递归的使用,简单来说就是皇后棋子可以吃掉横竖方向和对角斜方向的其它皇后棋子,棋盘是8X8大小且下八个棋子的就是八皇后(以此类推)解题思路就是可以每一行(或每一列)依次放一个棋子,之后在下一行(或下一列)再放棋子的时候需要比较之前已经放了的棋子是否会有冲突(被其他皇后攻击),依次放棋子直至完成八个棋子的存放就是一种解决方案。上代码,我这里是按照行的顺序依次放

2017-01-21 22:48:09 1176

原创 深度优先遍历DFS 与 广度优先遍历BFS(java实现)

图的遍历方式有俩种: 深度优先遍历(DFS) 广度优先遍历(BFS) (1)深度优先遍历(利用栈和递归来实现) 思路:先以一个点为起点,这里假如是点A,那么就将A相邻的点放入堆栈,然后在栈中再取出栈顶的顶点元素(假如是点B),再将B相邻的且没有访问过的点放入栈中,不断这样重复操作直至栈中元素清空。这个时候你每次从栈中取出的元素就是你依次访问的点,以此实现遍历。class Nod

2017-01-21 19:40:02 5466

原创 图的表示(java)

图的表示常见到的有: 相邻矩阵法 相邻表法 (1)相邻矩阵法 有多少个顶点(n)就用多少长度的二维数组(arr[n][n])来表示图,某个点arr[x][y]值为1则表示对应顶点有边存在,为0则表示对应顶点无边存在。 一个简单的例子展示:public class NeighburArr { public static void main(String[] args)

2017-01-21 00:12:45 2853 1

原创 二叉搜索树(java)

二叉搜索树可以算是基于二叉排序树的,差别在于其中有个查找(其实也就是递归遍历),所以可以说跟二叉排序是基本一致的。上代码:class TreeNode { int value; TreeNode left_node; TreeNode right_node; public TreeNode(int value) { this.value = value

2017-01-20 20:10:05 243

原创 二叉排序树(java)

上一篇的二叉树遍历中代码其实我就是二叉排序树的写法,所谓二叉排序树基于树根为准,小于树根则置于左子树,大于树根置于右子树依次递归到结束。class TreeNode { int value; TreeNode left_node; TreeNode right_node; public TreeNode(int value) { this.value

2017-01-20 19:39:24 478

原创 二叉树的遍历(java)

二叉树的遍历分为中序,前序,后序;就是利用函数递归来实现的遍历,没啥好说的,直接上代码:class TreeNode { int value; TreeNode left_node; TreeNode right_node; public TreeNode(int value) { this.value = value; this.le

2017-01-20 18:05:55 327

原创 算术表达式求解——堆栈的应用

算术表达式的求值也是栈的典型应用场景,通常求值方法分为以下三种: 中序法 (eg:2+3) 前序法 (eg:+23) 后序法 (eg:23+) 下面分别介绍一下如何运用栈来实现这三种求值中序求值:(1)在读取表达式的时候建立俩个栈分别存放运算符和操作数(2)在读取过程中若读取到运算符,必须与运算符栈顶的运算符比较优先级,若栈顶的优先级更高,则先计算堆栈的运算符的值。(3

2017-01-20 16:48:57 850

原创 设计模式之模板方法模式(java)

其实有些设计模式在潜移默化的编码当中你是已经掌握的了,只不过你没系统的去学习设计模式之前你不知道它统一的名称叫什么,统一概念和名词的好处就是减少沟通的成本,并能过滤掉一些小白。模板方法模式说起来非常简单,本身概念也很容易掌握,就是把通用的代码部分封装好一个模板,方便之后重复利用。这里还是引用head first中的例子,coffee和tea的制作过程分别是:coffee (1)把水煮沸 (2)用

2017-01-18 20:48:57 269

原创 设计模式之设配器模式

适配器模式的作用相当于一种中间件,让俩个对接有冲突的模块很好的捏合在一起从而发挥作用,适配器在其中就是胶水的作用。看一下代码实例,现在有绿头鸭和火鸡俩种动物,但假如现在你缺少了鸭子对象想用火鸡对象来冒充鸭子,看一下如何通过适配器模式来解决。俩种动物的功能接口public interface Duck { public void quack(); public void fly();

2017-01-18 20:47:23 455

原创 设计模式之命令模式(java)

命令模式,其实就是进一步封装,把方法调用封装起来,head first中举了一个很生动的例子,饭店中点餐的流畅如下:客户点了订单并交给服务端,然后女招待把订单交给大厨的师傅,大师傅最后呈现出一道可口的菜肴。 在这个过程中,客户只需要知道来饭店点好菜单就可以等吃饭了,服务员也是只需要知道把订单交给大厨,而大厨也只需要如何根据订单来做错了事情。实现一个打开电灯的命令public interface C

2017-01-12 04:27:20 322

原创 设计模式之单例模式(java)

单例模式,顾名思意就是就是单独唯一的对象实例。通过java本身的访问修饰符(static)其实很容易就控制实例唯一。但是有的时候设计的更规范的略复杂的模式会让你更加贴合实际的需求。看一个经典又简单(但不一定正确)的例子:public class Singleon { private static Singleton uniqueInstance; public Singleton()

2017-01-12 01:18:05 400

javax.mail的jar包

发送邮件的jar包

2017-01-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除