- 博客(134)
- 资源 (1)
- 收藏
- 关注

原创 写在前面的话(java源码品读目录)
也许是耐不住一颗躁动的心,突发奇想写一些东西,或许头脑愚钝,有些理解有待考究,总归写出来聊以自慰。 希望能够以这种方式把一些好的东西保持下去,也希望能在与更多同行人士的交流中让自己更快的成长,如此于自己于家庭于社会都有益。专题的内容会从简单到复杂,也许会有一定的跳跃性,这也跟博主的工作内容会有一些关系,还望诸位能够理解。专题的更新不定时,刚开始可能快一些,后来可能慢一些,但是不会停机。本...
2018-04-11 14:28:54
391
转载 filter,interceptor,controllerAdvice,aspect,controller执行顺序
1、filter,这是java的过滤器,和框架无关的,是所有过滤组件中最外层的,从粒度来说是最大的。配置方式,有直接实现Filter+@component,@Bean+@configuration(第三方的filter)2、interceptor,spring框架的拦截器配置方式,@configuration+继承WebMvcConfigurationSupport类添加过滤器。3、asp...
2019-03-14 10:04:38
4849
原创 java源码品读(13)— LinkedList
概述之前说过了LinkedList的相关的父类,今天我们来看看LinkedList本身的内容。 众所周知,ArrayList和LinkedList是我们工作中经常用到的两种集合,这两兄弟也经常会被拿到一起来做比较,ArrayList因其底层的数组结构,所以其改和查的效率相当高,但是增和删的效率就相对较低,而LinkedList则正好相反,增和删都因其底层的链式结构,效率很高,而改和查就需要先...
2018-09-21 17:15:23
331
原创 错误:Maven创建An internal error occurred during
场景使用myeclipse创建maven项目出现错误具体错误信息:错误原因:myeclipse的gc的内存占用超过限制,或者换句话说就是内存不足。解决方案:修改eclipse.ini或者myeclipse.ini文件中的一下配置:-Xms512m-Xmx1024m亲着是最小的初始化内存,第二个是最大的战友内存...
2018-09-21 15:50:58
1417
原创 Docker
Docker简介Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。 Docker支持将软件编译成一个镜像;然后在镜像中各种软件做...
2018-09-12 16:09:54
207
原创 No qualifying bean of type RedisTemplate available
错误场景 springboot项目使用redisTemplate进行自动注入的时候失败具体的堆栈信息2018-08-23 16:49:10.490 [ main ] [ERROR] - o.springframework.test.context.TestContextManager:250 - Caught exception while allowing TestExecuti...
2018-08-23 16:52:58
5683
原创 YAML基本语法
YAML:以数据为中心,比json、xml等更适合做配置文件1、基本语法规则:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可2、支持的数据结构对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(seq...
2018-08-15 18:27:57
11998
6
转载 eclipse安装git插件
一、从官网选择系统版本下载Git并安装 地址:https://git-scm.com/downloads/二、打开Eclipse 1. 第一种安装方法: help–>Install New SoftWare… 点击Add–>分别输入EGit,http://download.eclipse.org/egit/updates/ ...
2018-08-01 18:33:14
411
转载 解决Spring Boot 使用Maven打包之后运行jar找不到主属性清单的问题
环境:使用springboot搭建环境使用官方配置打包 错误信息:没有主清单属性错误原因: 采用的是官方配置,但是去除了parent标签改为自己引入,打包的插件没有做相应的修改<plugin> <groupId>org.springframework.boot</groupId> &
2018-07-31 19:30:17
1358
原创 java源码品读(12)— Deque
Deque 继承队列Queue,也是一个线性的结构,但与队列不同的一点是,Deque是一个双向的队列。 详细一点,按作者的话说,就是一个支持两端添加和删除的队列,大多数Deque的实现没有固定的大小界限, 当然也同样支持容量限制的实现。Deque中的方法为我们提供了添加、删除和检查的方法,当然也是双向的,同时也会像Queue中的方法一样,未成功的处理防止一类直接抛出异常,一类是返回特殊值,...
2018-07-26 18:01:21
280
原创 java源码品读(11)— Queue
前面看了linkedList的父类,下面两次文章我们看它的两个实现类,Deque和Queue。linkedList是一个链式的集合,要想了解它就要先了解一下队列Queue。Queue是Java Collections Framework中的一员,为了顺序处理前保存元素所做的集合。 除了集合的基本操作之外,Queue提供了额外的插入、提取和检查的方法。 而每一种方法都有两种情况:一种是错...
2018-07-24 19:16:22
201
原创 linuxs实现ssh无密码直接登录
首先你需要知道你想要登录的机器的ip及相应的账户名密码,当然实现这个功能可能不是必须的,但是实现了这个功能之后能够在工作中省去很多比较繁琐的小步骤。假设你要登录的是192.168.1.100机器上的root用户(两个机器以下分别称为本机和目标机器):在本机上生成密钥//-P设置的是本机私钥取消密码 -f设置的是生成的公钥和私钥放的文件路径ssh -keygen -t rsa ...
2018-07-10 18:40:07
272
2
原创 java源码品读(10)— AbstractSequentialList
之前看了ArrayList的一些内容,而说起ArrayList就会想起另一个比较常用的类:LinkedList。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Se...
2018-07-05 11:05:05
331
原创 大数据中的一些名词
TF(Term Frequency) 表示某个关键词在整篇文章中出现的频率。IDF(InversDocument Frequency) 表示计算倒文本频率。文本频率是指某个关键词在整个语料所有文章中出现的次数。倒文档频率又称为逆文档频率,它是文档频率的倒数,主要用于降低所有文档中一些常见却对文档影响不大的词语的作用。...
2018-06-26 15:36:51
1121
转载 eclipse 设置默认编码为Utf-8
需要设置的几处地方为:Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8Window->Preferences->General->Workspace 面板Text file encoding 选择UTF-8Window->Preferences-...
2018-06-26 13:50:13
157
原创 java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>(Unknown Source)
问题场景 学习lucene搭建spring出现,环境 spring3.2,jdk1.8,tomcat8。具体堆栈信息java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springframework.as...
2018-06-26 11:04:53
1229
转载 大数据学习路线
java(Java se,javaweb) Linux(shell,高并发架构,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 机器学习(R,mahout) Storm(Storm,kafka,redis) Spark(scala,spark,spark core,spark...
2018-06-23 17:14:47
284
转载 Hadoop简单了解
Hadoop是一个开源、高可靠、可扩展的分布式计算框架,主要用来解决海量数据的存储(HDFS)、海量数据的分析(MapReduce)、分布式资源调度(Yarn)等。Hadoop可以用于日志分析、基于海量数据的在线应用、推荐系统、计算广告、复杂算法、网盘和搜索引擎等。Hadoop的起源是Lucence,Lucence是用java编写的,用于实现和Google类似的全文检索功能,Hadoop是2005...
2018-06-23 17:00:18
579
原创 java源码品读(9)— Spliterator
Spliterator接口是1.8新加的接口,字面意思可分割的迭代器,不同以往的iterator需要顺序迭代,Spliterator可以分割为若干个小的迭代器进行并行操作,既可以实现多线程操作提高效率,又可以避免普通迭代器的fail-fast机制所带来的异常。Spliterator可以配合1.8新加的Stream进行并行流的实现,大大提高处理效率。
2018-05-28 16:45:41
3846
1
转载 jdk1.8 新特性
JDK1.8十个新特性 本日记将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API“Java is still not dead—and people are starting to figure that out.”本...
2018-05-21 15:06:24
417
原创 java源码品读(8)— ArrayList(二)
紧接上一篇,ArrayList中已经指定存放数据的方式是数组,那么迭代器的实现就可以更加的具体,下面我们就来看看ArrayList中的这些具体实现。首先是获取迭代器的几个方法iterator()listIterator()、listIterator(final int index) 获取的方法跟AbstractList的获取方式几乎一致,这里源码就不再贴出,稍有不同的是ListItr...
2018-05-15 15:03:07
252
原创 java源码品读(7)— ArrayList(一)
ArrayList是list的一个重要的实现,是经常会在代码中见到的一个几个,值得我们仔细的看一看。ArrayList继承AbstractList类,实现List、RandomAccess,、Cloneable、java.io.Serializable等接口,AbstractList、List、RandomAccess在之前的博文中都有说道,Cloneable、Serializable接口跟R...
2018-05-09 17:00:41
209
原创 java源码品读(6)— AbstractList
读完了List接口和AbstractCollection,我们来看AbstractList,AbstractList继承AbstractCollection并实现List接口,是ArrayList、Vector和Stack等重要类的超类。它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换。还是老规矩,只看重...
2018-05-04 11:08:01
229
原创 java源码品读(5)— List
List可能是大部分使用者最先接触到的集合类型,提供了较为简单的实现,实现数据的处理。List是有顺序的、可重复的、元素可为null的集合。存储内容时直接在内存中开辟一块连续的空间,然后将空间地址与索引相对应。下面是List中较之Collection新定义的一些方法:replaceAll方法 default void replaceAll(UnaryOperator&...
2018-04-28 11:32:53
232
原创 java源码品读(4)— AbstractCollection
Collection读完我们大致上知道这个接口为我们规划处那些接口,下面的几个篇目,就看一看Collection的一些实现,捋一捋大神的代码思路(手动滑稽)。AbstractCollection是Collection的一个一级实现,具体实现了Collection中的几个通用的方法,之前Collection中说过的方法属性就不再赘述,只看那些新增的东西。构造器protected Ab...
2018-04-23 17:56:40
299
原创 java源码品读(3)— Collection
看完了Iterable接口,接着来看Collection接口,接口中为子集合定义了各种基础的方法,方便我们使用。这是一个经常在工作中使用到的接口,Collection接口也有很多比较重要的实现,比如AbstractCollection,List,Set,Queue,CollectionView等都是比较经典的实现,值得好好的研究。一个一个来看:Collection,全称java.uti...
2018-04-19 19:51:50
222
原创 java.sql.SQLException: Generated keys not requested.
问题场景:使用jdbc访问mysql想要实现主键的返回,出现错误具体堆栈信息:java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate(), Statement.executeLa...
2018-04-19 11:15:37
1969
原创 java源码品读(2)— Iterable
在java中,日常运用比较多的就是各式各样处理数据的集合类,近段时间的java源码品读会更多地从这方面的源码读起。 说起集合,大家可能首先会想到的是用的比较多的list和map,而他们有一个共同的父接口Iterable,在1.8中Iterable接口中又为我们带来了一些新的东西,经过这两天的了解也算是略知一二,在这里写一写,如果有写错的地方还望大佬指出。Iterable接口是从jdk1.5才...
2018-04-16 16:28:16
416
原创 java源码品读(1)— Object
java是一门面向对象的语言,那么就从一切对象的根本Object读起吧。位置:java.lang.Object * Class {@code Object} is the root of the class hierarchy. * Every class has {@code Object} as a superclass. All objects, * including ar...
2018-04-11 19:28:38
360
原创 如果一个接口有2个不同的实现, 那么怎么来一个指定的实现
就目前的理解来说,两个不同实现的区分可以通过两种途径来进行区分: 1、是比较老的方法,声明bean的时候指定不同的名字,注入的时候直接使用 2、采用注解之间的不同点进行注入,这里涉及到两个注解,@Autowired和@Resource@Autowired根据类型来进行自动注入,因为是类型相同的两个实现,需要配合@Qualifier才能达到目的@Resource根据名字来进行自动注入...
2018-04-11 11:54:58
2844
1
原创 Tomcat启动参数总结
目前见到的tomcat的一些使用参数,再遇到继续补充-Xmx1g 设置tomcat的最大使用内存,32位系统因为系统原因有最大限制,64位系统则受限于计算机的物理内存。-Xmx1g 设置tomcat的初始内存大小,此值可设置与-Xmx一致,以免jvm在每次垃圾回收之后重新分配内存。-Xmn512m 设置jvm的年轻带大小。-XX:PermSize64m 设置jvm的永久带大小...
2018-04-09 17:29:20
2266
转载 java.lang.IllegalArgumentException: Comparison method violates its general contract!
背景 16号为了统一线上服务器运行环境,将两台服务器的Tomcat6+JDK6升级到Tomcat7+JDK7,本以为很简单的事情,升级后自己验证也没问题,没想到却悲剧了。升级后,过了半小时运营就找过来反馈问题,部分角色无法登陆系统,由于异常日志没有输出,没有找到问题,无奈回滚。今天我们就来说说JDK6升级到JDK7会遇到的坑。本文为了方便搜索,就直接以异常信息作为文章标题了。复现 回滚后,...
2018-04-09 11:04:39
902
原创 1215 - Cannot add foreign key constraint
问题场景:MySQL两张表想要进行外键关联,sql语句正确,但出现上述错误原因分析: 创建外键错误的原因大概有一下几个原因: 1、关联的两个字段的字段的类型不一致 2、设置外键删除时set null 3、两张表的引擎不一致解决方式: 1、保证关联的两个字段的字段类型一致,当然字段约束不同时也不能创建成功,但报的不是这个错误 2、默认即可 3、查看两张表的引擎是否相同,有两种方式...
2018-04-03 15:01:19
21375
6
转载 mybatis的mapper代理方法来实现
mapper代理方法来实现(实际开发用到的) 1、pom.xml文件一样 2、SqlMappingConfig.xml一样 3、开发规范:编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。接口UserMapping.xml文件(可能有点多、挑着看就好) (注意在SqlMappingConfig.xml文件中已经引用它)<...
2018-03-31 11:02:19
920
转载 传统的方式写mybatis的应用程序
1、环境搭建pom.xml文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache...
2018-03-31 10:38:55
230
转载 MyBatis入门
MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括S...
2018-03-31 10:34:35
128
原创 mybatis的一些零碎笔记
1、MyBatis的大致流程 通过mybatis的xml文件,获取mybatis的sqlsessionFactory 使用sqlsessionFactory打开一个连接sqlsession 使用sqlsession对象获取mapper文件的实现类代理对象 使用代理对象调用相应的增删改查方法 关闭sqlsess...
2018-03-29 16:47:37
184
原创 mybatis中#{}和${}的区别
在MyBatis的使用过程当中,使用参数进行sql拼装经常会使用到#{var}和${var}这两种参数的设置方式。 两种情况在sql拼装的过程中都会使用的到,下面是两种方式的不用之处:#{var}:使用预编译的方式将参数设置到sql语句当中(相当于占位符 ?)使用的是原生jdbc中的prepareStatrment能够在一定程度上防止sql注入的风险(无法避免%的问题)${v...
2018-03-29 16:29:01
941
原创 关于Spring中bean的一些细节
1、属性的set方法注入<property>标签2、对象的构造器注入<constructor-arg>标签 1)构造器方式注入属性的时候可以使用类型和位置进行不同构造器的匹配 2)如果参数个数相等,参数类型也一直得构造器,则会匹配位置靠前的构造器 3)属性值可以使用<value>子节点进行赋值如果字面...
2018-03-21 10:17:08
234
数据库系统概论第五版课后习题答案王珊.pdf
2019-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人