- 博客(24)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 SpringDataMongoDB, repository.save(entity) 不返回自增主键的问题排查
今天遇到这个坑,排查了半天发现是repository.save(entity) 这里的entity传入的id是个空字符串的原因深入跟踪到源码里,发现这里isNew的判断对非原型类的id只是判断了null,而我传入的事空字符串。所以会走更新的流程。...
2020-03-23 23:55:13 1671
原创 ThreadLocal的理解
本文主要准备通过以下四个方面对ThreadLocal进行分析和说明概要说明 ThreadLocal使用 原理 GC回收1. 概要说明举个不是很恰当的例子,如果把线程比作一个人,那么ThreadLocalMap就是他身上的所有口袋,每个口袋(ThreadLocal)可以放不同的工具(数据),无论这个人走到哪儿,他都可以使用自己口袋里面的工具看一下代码Thread.java内部...
2020-01-11 18:32:08 277
原创 Spring AOP的理解
根据https://blog.csdn.net/qukaiwei/article/details/50367761做了一张图,便于自己更好的理解AOP的概念。
2020-01-10 22:45:32 202
原创 Java中String的简单理解
带着一些问题简单看一下1. String存在堆上还是常量池?2. a = "hello", b= new String("hello"), c = "hello" c == a 吗?c == b 吗? a.hashCode == b. hashCode吗?3. 怎么理解String是不可变的?import org.junit.Test;/**...
2020-01-01 16:49:55 118
原创 关于TCP3次握手4次挥手的理解
TCP为什么要3次握手4次挥手 TCP网络是全双工的,服务器端和客户机端可以互发消息,发送消息,需要两台服务器之间 建立连接,并确认消息的初始序号。 3次握手 1. A:SYN(我有话要说,我从12345开始说,你记一下[seq=12345]) 2. B:ACK+SYN(好的,我记住了,你下面要说123...
2019-12-11 22:36:59 112
原创 学习ElasticSearch 常用命令记录
环境elasticsearch-7.4.2 + openjdk-11自己在windows机器测试命令记录最新文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyze.html#search-analyze1. 安装浏览器ElasticSearch插件(chrome):...
2019-12-10 17:58:59 162
原创 Spring源码2 - Bean的加载1
愿你归来时,仍是少年Spring的模块划分参考上一篇:Spring源码1 -Spring模块总览有些书籍在开篇时,会让我们去下载Spring的源码,不过我觉得用maven直接创建项目,然后再引入需要的包,用maven下载源码也挺方便的,这里就不介绍怎么去下整个源码了,带着一些问题从一个最简单的例子开始。1. 第一个例子测试功能:先定义一个最简单的javaBean,然后通过xml...
2019-08-16 21:53:09 123
原创 Spring源码1 -Spring模块总览
总有些梦想,会变成现实。Spring官方文档地址目前github上面最新的Spring版本是5.x,先列出官方文档地址:https://docs.spring.io/spring/docs/5.1.9.RELEASE/spring-framework-reference/但是我觉得4.x版本的文档看起来更舒服:https://docs.spring.io/spring/...
2019-08-10 23:18:31 220
原创 java类加载机制
一、类加载过程概述虚拟机描述类的数据从Class文件(不止是文件系统上的class文件,而是一串二进制的字节流,以任何形式存在都可以)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。类从被加载到虚拟机内存,到卸载出内存,总共有以下7个阶段:1. 加载 2.验证 3. 准备 4. 解析 5. 初始化 6.使用 7...
2019-08-02 00:22:16 95
原创 Hibernate Validator的使用
前言:最近项目里面用到了hibernate-validator做接口的参数校验,第一感觉很好用,但是返回的提示还不够友好,这里全面了解一下这个项目的用法和功能。此工具的中文文档我有传到我的下载中 可以在这里下载https://download.csdn.net/download/zhanjunpeng01/11217481什么是Hibernate validator呢?它是基于JSR-3...
2019-06-01 01:34:51 863
原创 关于5种I/O模型的理解
在读《Netty权威指南》时,关于I/O模型的描述,个人感觉还是不是很容易理解。这里想用通俗一点的方式表达清楚。关于I/O模型的发展这里不再描述,简要说明现在的几种I/O模型:根据UNIX网络编程对I/O模型的分类,UNIX提供了5中I/O模型,分别如下:1. 阻塞I/O模型2. 非阻塞I/O模型3. I/O复用模型4. 信号驱动I/O模型5. 异步I/O模型具体的...
2019-02-21 00:37:07 1338
原创 设计模式-工厂方法(Factory Method)模式
工厂方法模式和模板方法模式很相似,模板方法(Template Method)是将具体的实现交给子类,而工厂方法(Factory Mehod)是将具体类的创建交给了子类。在工厂方法模式中,父类只负责定义生成实例的方式,但并不决定要生成具体的类,具体的类的创建都交给子类去实现。这样就可以将生成实例的框架和具体生成实例的类解耦。下面是一个简单的示例:1. Product类和Factory类属...
2019-01-07 23:15:36 135
原创 设计模式-模板方法模式、建造者模式
定义:在父类中定义处理流程的框架,在子类中实现具体的处理就成为模板方法模式(Template Method),假设我们制定一个木偶的流程,我们想要一个做胖木偶的类,还有一个做瘦木偶的类,每个类的方法都差不多,只是具体的实现有所不同,这时我们就可以用模板方法模式,类图如下:我们在AbstractPerson类中定义了制作玩偶的流程(在createPerson中去调用abstract方法h...
2019-01-04 22:18:16 186
原创 设计模式-适配器模式
看完适配器模式,我想起一个成语“亡羊补牢”为什么呢?我们通常设计一个类,入参和返回值都是为了符合当前的需要,比如某个请求相册数据的接口我们直接返回了List<ImgVO>,但是有一天前端也想用这个接口,但是和他们定义的通用返回结构是Result这样子的结构Result.class Integer code; String msg; Object dat...
2019-01-03 23:00:27 178
原创 设计模式-Iterator(迭代器)模式
·设计模式篇均为读《图解设计模式》学习记录迭代器模式,见名知意,遍历一个集合中的元素,下面让我们看看我们常用的数组遍历for(int i = 0; i < arr.length; i++) { System.out.println(arr[i]);}那么使用迭代器的遍历应该怎么做呢?先让我们看一下迭代器模式的类图:Aggregate 这个词是集合的意思...
2019-01-02 23:48:52 200
原创 一、JVM篇,认识运行时数据区、垃圾回收算法、以及垃圾回收器
1. 运行时数据区 java虚拟机在执行java程序时会把它锁管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。下图是java的运行时数据区程序计数器:它是一块较小的内存空间,用于记录当前线程执行的行号。字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能。 这个区域是线程...
2018-04-29 20:42:18 360
原创 二、java集合类、深入理解Hashtable以及和HashMap的对比
上一节认识了HashMap,作为经常和HashMap对比的Hashtable,这里我们也来探讨一下。首先打开了Hashtable的源码,类图如下:和HashMap不同的是,Hashtable继承了Dictionary类,而HashMap继承了AbstractMap类。分别打开AbstactMap类和Dictionary类查看,发现,AbstactMap类虽然是个虚类,但是也提供了很多已实现的方法,...
2018-04-21 17:12:44 236
原创 一、JAVA集合类、深入理解HashMap
HashMap作为我们最常用的一个类,而且在面试题中频频出现,让我们来一探究竟吧。HashMap类图:实现了Map、Cloneable和Serializable类,继承了AbstractMap类。HashTable维护了一个Entry的数组,初始值为长度为0的空数组,如下:先看一段简单的代码:构建函数如下:默认值定义如下:由上面的构造函数可知,初始化对象主要设置了HashMap的两个属性:load...
2018-04-21 15:59:02 635
原创 一、学习MongoDB、认识、安装、简单操作
1.什么是MongoDB?基于分布式文件存储的开源数据库系统为WEB应用提供可扩展高性能的数据存储解决方案将数据存储为一个文档,数据结构是(key-value)组成,类似于JSON对象。字段可以包含其它文档,数组以及文档数组。2. 主要特点你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。你...
2018-04-12 11:04:36 306
原创 四、学习Zookeeper笔记,安装以及简单操作Zookeeper
Zookeeper开始向导目录树·开始:用Zookeeper协调分布式应用 · 前期准备 · 下载 · 单机操作 · 管理Zookeeper存储 · 连接Zookeeper · Zookeeper编程 · 运行复制Zookeeper · 其它优化-----------------------------------------------------...
2018-04-08 00:19:07 287
原创 三、学习Zookeeper笔记,Zookeeper架构概览
篇幅目录:Zookeeper:一个分布式应用的分布式协调服务 设计目标 数据模型和分级命名空间 节点和临时节点 条件更新和监控 保证 简单的API 使用 性能 可靠性 Zookeeper项目--------------------------------------------------------------------Zookeep...
2018-04-05 16:56:46 961
原创 二、学习Zookeeper笔记之 Zookeeper文档
Zookeeper:Because Coordinating Distributed Systems is a Zoo(为什么有这么一句?协调分布式系统是一个动物园?)Zookeeper是一个高性能的分布式应用协调服务。它实现了通用的服务-例如命名空间、配置管理、同步、还有分组服务(naming,configuration management synchronization,and group ...
2018-04-05 11:12:04 351
原创 一、学习Zookeeper笔记,什么是Zookeeper?
1. 什么是Zookeeper? zookeeper致力于开发和维护一个开源服务器,从而实现高度可靠的分布式协作。 zookpeeper是一个集中是的服务,以维护配置信息、命名空间、提供分布式同步和分组服务。在各种分布式应用中提供这些服务。每次实现这些功能(指不用zk,自己开发)都不可避免的需要花费很大的工作量去修复bug和竞争条件。因为实现这种服务是困难的,应用程序最早通常会跳过这些服务,...
2018-04-05 10:12:36 279
Hibernate_Validator_reference中文版@www.java1234.com.pdf
2019-05-30
Redis-x64-3.2.100.zip
2019-05-23
springMVC支持ajax的jar包
2015-05-13
jFreeChart中的ringChart有点细啊。怎么设置粗一点。
2014-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人