java
疾风de小羊
这个作者很懒,什么都没留下…
展开
-
设计模式学习笔记(1)
设计模式学习笔记(1)前言正文单例模式实现方式饿汉式单例优点缺点代码实现懒汉式单例优点缺点代码实现测试效果解决线程不安全问题1、加锁(synchronized)线程安全且不影响性能的懒汉式单例实现方式为什么静态内部类能实现线程安全呢?前言今天学习单例模式和原型模式。正文单例模式单例模式:主要是为了实现资源共享,只需要初始化一次,后续就能够重复使用,而不需要重新创建。实现方式饿汉式...原创 2018-11-30 17:18:46 · 378 阅读 · 0 评论 -
JAVA集合源码攻坚战(6)——AbstractList
前言前面我们已经分析过AbstractCollection和List这两个接口类了,接下来分析AbstractList。AbstractList的父母刚刚灵光一闪,想到一个不太恰当的比喻。比如AbstractList,继承了AbstractCollection,实现了List接口,那么AbstractCollection相当于是父亲,子承父业,List相当于母亲,百善孝为先,应该实现母亲的愿...原创 2018-10-10 18:00:46 · 219 阅读 · 0 评论 -
JAVA集合源码攻坚战(5)——AbstractCollection
前言前面讲到Collection后,把这个类给漏掉了。AbstractCollection是对Collection接口的一个直接实现,而像list和set集合的具体实现的抽象类,也都是通过继承它来实现的。正文根据官方文档:This class provides a skeletal implementation of the Collection interface, to minim...原创 2018-10-09 16:52:14 · 188 阅读 · 0 评论 -
JAVA集合源码攻坚战(4)——List
前言根据java 8 的官方文档,Collection接口类下面有三个子接口类,List、Set、Queue。List基础List接口是定义了一个元素有序的、可重复的、可为null的集合结构。为什么List中元素是有序的呢?根据官方文档描述The user of this interface has precise control over where in the list e...原创 2018-10-09 14:52:14 · 218 阅读 · 1 评论 -
JAVA集合源码攻坚战(2)——ListIterator
前言上一篇主要介绍了java集合框架的一个整体结构,并简单分析了下Iterator接口的源码,接下来分析ListIterator的源码ListIteratorListIterator也是一个接口类,继承了Iterator接口,对比于Iterator,它的方法如下:boolean hasNext() // 判断后面是否还有元素E next() // 返回下一个元素boolean ha...原创 2018-10-09 09:19:19 · 171 阅读 · 0 评论 -
JAVA集合源码攻坚战(1)——Iterator
前言工作了两年了,对JAVA集合框架部分,只知道怎么用,却不知道原理,不能说是一个合格的java程序员,深感知识的缺乏,所以趁最近有空,进行JAVA集合攻坚战,学习JAVA集合部分的源码,以jdk 1.8为准。整个JAVA集合框架的概图这里先看一张取自菜鸟教程的java集合框架图菜鸟教程的这张图已经包括了大部分类和接口之间的关系,不过还有一些遗漏的,而且也没有很好的表示出继承或实现的关系...原创 2018-10-08 17:04:59 · 230 阅读 · 0 评论 -
JAVA集合源码攻坚战(8)——AbstractSequentialList
JAVA集合源码攻坚战(8)——AbstractSequentialList前言正文简介构造函数get操作set操作add操作remove操作addAll操作前言前面已经初步介绍过了Arraylist了,那么后面就应该讲讲经常会拿来和ArrayList进行对比的LinkedList吧,不过因为这之间还有个区别,因为LinkedList并不是直接继承了AbstractList的,中间还有个抽象类...原创 2018-10-12 14:34:27 · 238 阅读 · 0 评论 -
JAVA集合源码攻坚战(7)——ArrayList
前言前面都是分析了一些接口或抽象类。是不是感觉很枯燥?那么今天就来看看十分常用的ArrayList,看看它到底是如何来实现前面说的那些接口或者抽象类的。ArrayList数据结构我们说一个集合,不得不提的就是他存储的数据结构到底是怎样的。ArrayList,通过名字就能看出,是Array + List,虽然不能等同,但是能从这方便去思考。ArrayList底层就是数组一个数组结构,但是...原创 2018-10-11 18:13:23 · 248 阅读 · 0 评论 -
java 利用common-httpclient包来实现post请求
项目中需要请求第三方接口,而且要求请求参数数据为json类型的。本来首先使用的是httpclient的jar包,但是因为项目中已经使用了common-httpclient的jar包,引起了冲突,所以不得不使用common-httpclient来实现。import java.io.BufferedReader;import java.io.FileOutputStream;import ja...原创 2018-06-15 18:06:01 · 5601 阅读 · 0 评论 -
jdk1.8 源码解读系列(三)——StringJoiner类
在看String类时,看到有使用StringJoiner类,所以顺便看了下StringJoiner类, 源码如下:/* * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license...原创 2018-05-22 14:13:57 · 498 阅读 · 0 评论 -
jdk1.8 源码解读系列(二)——String类
最近研究了java.lang.String类的代码。 如下: 本人才疏学浅,文中翻译有点乱,凑合着看看吧,多多包涵!/* * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to l...原创 2018-05-22 13:10:25 · 1002 阅读 · 0 评论 -
JAVA集合源码攻坚战(9)—— Vector
JAVA集合源码攻坚战(9)—— Vector前言正文Vector前言上一篇博文已经讲到了AbstractSequentialList这个接口类,本来是想先看LinkedList的源码的,但是发现LinkedList实现了队列相关接口,所以这里还是先把list的其他部分讲完。正文Vector...原创 2018-10-22 16:36:54 · 251 阅读 · 0 评论 -
JAVA集合源码攻坚战(11)—— Set
JAVA集合源码攻坚战(11)—— Set前言正文前言好,今天开始学Set,你说为什么?没有为什么!!W( ̄_ ̄)W正文原创 2018-10-26 11:35:13 · 292 阅读 · 1 评论 -
JAVA集合源码攻坚战(18)——AbstractQueue
JAVA集合源码攻坚战(18)——AbstractQueue前言正文前言正文原创 2018-11-05 10:08:32 · 269 阅读 · 0 评论 -
JAVA集合源码攻坚战(20)——BlockingQueue
JAVA集合源码攻坚战(20)——BlockingQueue前言正文什么是BlockingQueue?介绍方法注意点前言好,接下来看BlockingQueue。正文什么是BlockingQueue?BlockingQueue就是阻塞队列,它是继承了Queue的一个接口,它在检索和插入元素时,如果条件不满足,会阻塞等待,直到满足条件,继续执行。BlockingQueue的结构Inter...原创 2018-11-06 17:24:36 · 202 阅读 · 0 评论 -
JAVA集合源码攻坚战(19)—— Deque
JAVA集合源码攻坚战(19)—— Deque前言正文什么是Deque?前言今天任务完成,继续学习源码~~正文什么是Deque?根据官方文档,Deque是一种两端都支持插入和移除操作的线性集合结构。Deque是“double ended queue”的缩写,发音同“deck”。双端队列不仅支持固定容量的,也支持不固定容量的。一般来说,双端队列的容量大小都是不固定的。java.uti...原创 2018-11-06 13:02:31 · 227 阅读 · 0 评论 -
JAVA集合源码攻坚战(16)—— NavigableSet
JAVA集合源码攻坚战(16)—— NavigableSet前言正文源码分析查找操作查找并移除操作迭代器获得子集操作前言NavigableSet是对SortedSet的一个增强实现,能够进行数据的匹配。具体我们看分析代码。正文java.util Interface NavigableSet<E>参数类型 E - 由此集合维护的元素的类型 All Superinterf...原创 2018-10-30 15:00:11 · 550 阅读 · 0 评论 -
JAVA集合源码攻坚战(15)—— SortedSet
JAVA集合源码攻坚战(14)—— SortedSet前言正文标准源码解析子集操作元素操作比较器前言前面我们已经分析了HashSet这一个分支,今天我们来分析SortedSet这个分支。正文前面的HashSet实现是无序的,而这条线上的SortedSet,顾名思义,是有序的set集合。java.util Interface SortedSet&amp;lt;E&amp;gt;参数类型 E - 由...原创 2018-10-30 10:37:26 · 550 阅读 · 0 评论 -
JAVA集合源码攻坚战(17)—— Queue
JAVA集合源码攻坚战(17)—— Queue前言正文源码解析前言本篇开始我们来分析Collection的最后一个主要分支——Queue队列。正文源码解析package java.util;/** * 设计用于在处理之前保留元素的集合。 * 除了基础的Collection操作,队列提供了额外的插入、提取和检查操作。 * 这些方法中的每个都支持两种形式: * 1、如果操作失败...原创 2018-10-31 17:23:49 · 358 阅读 · 0 评论 -
JAVA集合源码攻坚战(10)——Stack
JAVA集合源码攻坚战(10)——Stack前言正文前言上篇我们简单介绍了下Vector,没有细讲,因为Vector和ArrayList实在没有什么很大的区别,最主要的就是一个是否是同步,一个扩容机制的区别。然后我们这篇就干脆把这一条支线讲完,接下来就是Vector的一个子类,有名的栈Stack。栈Stack作为学习数据结构只是的一个必学知识点,他的知名度比父亲Vector可要大的多了,正所...原创 2018-10-24 12:13:48 · 187 阅读 · 0 评论 -
JAVA集合源码攻坚战(12)—— AbstractSet
JAVA集合源码攻坚战(12)—— AbstractSet前言正文实现的方法equals方法hashCode方法removeAll方法无参构造器前言上一篇对Set接口的方法做了个简单的介绍,主要需要注意的,就是Set是不支持重复元素,并且,无法用索引来获取对应元素。因为可以看到,声明的方法里没有根据位置信息来查找元素的。正文这里我们来介绍Set的一个抽象实现类AbstractSet。ja...原创 2018-10-26 17:32:20 · 236 阅读 · 0 评论 -
JAVA集合源码攻坚战(14)—— LinkedHashSet
JAVA集合源码攻坚战(14)—— LinkedHahSet前言正文前言今天快下班了,简单看了下LinkedHashSet的相关源码 o(*^@^*)o正文通过源码,我们可以看到,LinkedHashSet的源码很少很少。/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. ...原创 2018-10-29 17:29:10 · 211 阅读 · 0 评论 -
JAVA集合源码攻坚战(13)—— HashSet
JAVA集合源码攻坚战(13)—— HashSet前言正文什么是HashSetHashSet如何存储数据属性解析方法解析构造方法迭代器基础操作前言前面介绍了Set这一分支的接口和抽奖类,今天来看看它的一个具体实现类——HashSet。正文HashSet层次结构java.util Class HashSet<E>java.lang.Object java.util.Abs...原创 2018-10-29 17:04:40 · 183 阅读 · 0 评论 -
jdk1.8 源码解读系列(一)——Object类
/* * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * */package java.lang;/** * Class {@code ...原创 2018-05-13 09:08:03 · 1089 阅读 · 0 评论 -
设计模式学习之旅(一)——基于菜鸟教程
原创 2018-05-09 12:17:39 · 708 阅读 · 1 评论 -
java 自己动手画图形验证码
最近在项目上,遇到一个问题,做一个验证码,本来很简单的事,直接使用kaptcha插件来生成就可以了。结果,不知道什么奇葩原因,至今还没找到问题根源。实在没办法,只能自己写了个验证码。 不多说,下面上干货:package com.hzseek.web.util;import java.awt.BasicStroke;import java.awt.Color;import jav...原创 2018-04-02 18:10:03 · 571 阅读 · 0 评论 -
java 使用kaptcha插件来生成图形验证码
使用kaptcha插件生成图形验证码最近在做维护一个项目时,客户提出以前的验证码过于简单,需要换一个相对复杂一点的验证码,所以这次就使用了kaptcha这个工具来生成图形验证码首先,下载jar包如果是maven项目,直接使用maven下载,<dependency> <groupId>com.github.penggle</groupId...原创 2018-03-27 16:19:05 · 2021 阅读 · 0 评论 -
git命令备注
git命令备注,以防忘记 步骤:若没有ssh相应配置 则先创建ssh私钥 git config –global user.name “xxxxxxx” git config –global user.email “xxxxx@xxxxx.com” ssh-keygen -t rsa -C “xxxxx@xxxxx.com” 然后到gitlab中将ssh.pub中的私钥添加到gitl...原创 2018-03-12 17:42:49 · 417 阅读 · 0 评论 -
关于前端ajax请求会缓存的问题
最近,在做公司的一个javaweb项目时,需要做成一个接触绑定的功能,就是简单的将一个字段的状态值在0和1之间做转换。 但是,遇到了很坑的问题,当用户登录的时候,将状态值更新为1,然后点击解除绑定按钮后,提示“解除绑定成功”,同时页面跳转到了登录页面,查看数据库,也是正常的,状态值已经更新为0了,但是再次登录后,成功,状态值也更新为1,结果去点击解除绑定按钮,提示“解除绑定成功”,但是页面竟然跳...原创 2018-03-12 10:53:45 · 3317 阅读 · 0 评论 -
关于springMVC中的使用拦截器interceptor问题
springmvc中的拦截器interceptor的使用最近在搭建一个前后端分离的后端ssm框架,想要实现一个接口加签验签过程,需要用到spring的拦截器来对请求进行验签处理。所以查找了些资料,总结了下spring中的拦截器intercept。概述springMVC中的拦截器是相当有用的,能够在用户进行请求后,进入具体的业务代码controller方法之前,进行相关操作,例如接口原创 2018-02-07 17:04:20 · 2520 阅读 · 0 评论 -
出现Insufficient space for shared memory file的解决办法
今天早上,想改bug,但是发现项目的后台进不去了,前台也进不去了。于是第一时间想到的是查看日志信息,但是发现日志信息一直没有反应,想到可能是工程挂了,于是想当然的去重启项目,但是出现了意象不到的错误。Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hspe...原创 2018-02-27 09:32:36 · 14599 阅读 · 1 评论 -
java springmvc 利用junit4和mockMvc对controller层进行单元测试
利用junit4和mockMvc进行springMVC的controller的接口单元测试一、概述自从用了springMVC后,对于service层和dao层的测试,已经很熟悉了,但是对于controller层,要知道controller层的逻辑是否正确,就必须启动服务,但是这样稍微有点改动,就必须启动服务,十分麻烦。还好,spring提供了mockMvc模块,可以模拟web请求来对con原创 2018-02-06 22:35:52 · 9717 阅读 · 2 评论 -
java中关于request.getSession()的几种获取方式
最近用到session来存储获取用户登录信息,使用过程中经常会出现获取不到session的情况。 所以对request.getSession()的几种情况查了相关资料,以作知识储备。 在javaweb项目中,用到request.getSession()一般是存储信息到session中或者从session中获取信息。 一般有三种参数设置方式: 1.request.getSession()原创 2018-02-01 09:41:02 · 56468 阅读 · 7 评论 -
【转】spring接口工程的Junit单元测试搭建
最近在找关于spring集成junit4进行纯后端接口测试的框架搭建方法,找到一篇较为全面的文章,所以转载过来,希望能对读者有所帮助。 原文链接:http://moon-walker.iteye.com/blog/2380229 正文:引言 前段时间对我们系统进行了微服务化拆分,最终出现几个单独的纯接口工程(没有web界面);最近又在搞一个基于国际化的纯接口转换工程。这些工程都有一个共同转载 2018-01-31 16:00:02 · 444 阅读 · 0 评论 -
利用mybatis-generator自动生成entity、dao和mapper.xml文件
利用mybatis-generator自动生成entity、dao和mapper.xml文件最近在业余时间自己闲着没事,开发开发项目,想简单的搭个javaweb项目的框架。所以把搭建过程中遇到的问题和所用的技术,记录下来。一来,是对自己学以致用过程的记录;二来,希望能够对遇到问题的朋友们有所帮助。 好,本文主要是对mybatis-generator的配置进行描述。主要目的还是为了一个记录。原创 2018-01-22 14:22:10 · 1195 阅读 · 0 评论 -
mysql 统计查询
按年汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, ‘%Y’); 按月汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by da...转载 2018-04-16 15:22:54 · 254 阅读 · 0 评论 -
用信鸽来解释 HTTPS
密码学是一门难以理解的学科,因为它充满了数学定理。但是除非你要实际开发出一套加密算法系统,否则你是没必要强制理解那些深奥的数学定理的。如果你阅读本文的目的是想设计下一套 HTTPS 协议,那我只能抱歉的说本文的知识还远远不够;如果不是的话,那么就煮杯咖啡,轻松愉悦的阅读本文吧。爱丽丝、鲍伯和 … 信鸽?你在互联网上从事的任何活动(阅读这篇文章、在亚马逊上购物、上传图片等)归结到底都...转载 2018-04-16 17:46:48 · 182 阅读 · 0 评论 -
数据库设计三大范式
前言最近在知乎上看要怎么才能打好java的基础,看到有大佬回答说对于数据库要懂得数据库设计三大范式。故此查询了一些资料,做了些整理。 一个好的数据库结构,能够有效减小数据冗余,减少增删改中出现的问题,提高开发人员对数据库的操作。深入理解数据库设计的三范式,对于设计“健壮的数据库“十分有必要。数据库三范式是设计数据库 时参考的准则,接下来做一个简单的介绍。第一范式数据的原子性数据库...原创 2018-04-24 17:08:44 · 283 阅读 · 0 评论 -
多线程之ThreadLocal分析
一、前言最近在项目中用到ThreadLocal,所以在此做个对ThreadLocal的分析总结。二、ThreadLocal是什么ThreadLocal看上去是一个线程,其实它并不是一个Thread,而是一个threadlocalvariable,即线程局部变量,它的功能很简单,就是为每一个使用该变量的线程提供一个副本,使得每一个线程都可以独立的改变自己的副本,而不用担心影响其他线程...原创 2018-05-02 10:49:14 · 257 阅读 · 0 评论 -
乐观锁和悲观锁的区别
定义悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整...原创 2018-04-19 22:49:33 · 629 阅读 · 0 评论