自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解HashMap 的工作原理及代码实现,什么时候用到红黑树

GitHub:https://github.com/JDawnF一.HashMap的内部结构(线程不安全,基于jdk1.7):hashmap是无序的,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序 HashMap 底层是基于数组和链表实现的,如图所示,其中两个重要的参数:容量和负载因子;容量的默认大小是 16,负载因子是 0.7...

2018-11-30 16:10:33 12329

原创 深入理解TCP、UDP协议及两者的区别

一、TCP协议:位于传输层, 提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。所以,TCP连接相当于两根管道(一...

2018-11-14 13:03:24 197437 9

原创 使用RedisTemplate操作Redis数据库

GitHub:https://github.com/JDawnF目录一.什么是Redis二.RedisTemplate及其相关方法三.RedisTemplate操作Redis数据库的具体例子四.RedisTemplate和StringRedisTemplate的区别一.什么是RedisRedis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数...

2018-11-05 13:06:54 32370 5

原创 深入理解LinkedHashMap 源码分析

一、LinkedHashMap结构 这是一个有序的,底层是继承于 HashMap 实现的,由一个双向链表所构成,具有和 HashMap 一样的快速查找特性。 LinkedHashMap 的排序方式有两种: 根据写入顺序排序。 根据访问顺序排序,每次 get 都会将访问的值移动到链表末尾,这样重复操作就能得到一个按照访问顺序排序的链表。 数据结构,通过以下代码调试可以看...

2018-11-30 16:54:03 226 1

原创 dubbo入门

前言:在目前火热的微服务开发中,有两种比较有名的开发方式,一种是spring cloud,另一种则是通过dubbo。本文主要介绍一下dubbo的相关知识。dubbo是一种rpc,即远程调用框架的实现,主要提供了服务注册,服务消费,服务管理中心等功能。一、什么是dubbo?dubbo是一种rpc,即远程调用框架的实现,主要提供了服务注册,服务消费,服务管理中心等功能。我们先来看dubbo的架...

2018-11-30 10:48:48 145

原创 HTTP请求的GET与POST方式的区别

一、两者的各自特点:使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器,有以下特点: GET请求能够被缓存 GET请求会保存在浏览器的浏览记录中 以GET请求的URL能够保存为浏览器书签 GET请求有长度限制,最多只能1024字节 GET请求主要用以获取数据 可能不是很安全,请求数据会暴露在url中 get将表单中数据按照name=value...

2018-11-29 16:38:16 306

原创 动态代理,反射的用途及实现

一、反射: 反射的概念:动态加载对象,并对对象进行剖析。在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制 反射的功能:利用Java反射机制我们可以加载一个运行时才得知名称的class,获悉其构造方法,并生成其对象实体,能对其fi...

2018-11-29 14:51:45 3007

原创 谈一谈web.xml中的context-param和init-param

web.xml是web项目的一个配置文件,主要就是用来配置Listener、Filter、Servlet等。web.xml文件包括xml文件头,DOCTYPE声明,web-app元素。就是配置一些监听器,过滤器还有做一些servlet的映射。关于servlet可以看看这个。接下来主要就是看看<context-param>和<init-param>分别是有什么,有什么作用...

2018-11-26 22:43:24 532 1

原创 后端程序员需要了解的前端知识(持续更新中)

一、FastJson1.对于JSON格式字符串、JSON对象及JavaBean之间的相互转换JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。JSONObject:fastJson提供的json对象。JSONArray:fastJson提供json数组对象。参照:https://www.cnblogs.com/cdf-open...

2018-11-24 18:37:47 5317 1

原创 angularJS要点记录,$location,$http等等

前言:只是对angular的一些知识点的记录,不做深入研究。一、AngularJS四大特征AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。1.MVC 模式Angular遵循软件工程的MVC模式,并鼓励展现,数据,和逻辑组件之间的松耦合.通过依赖注入(dependency injection),Angular为客户端的Web应用带来了传...

2018-11-24 00:03:30 587

原创 HTTP1.0和HTTP2.0的区别,以及HTTP和HTTPS的区别

一、HTTP1.0和HTTP2.0的区别总的区别就是:HTTP/2采用二进制格式而非文本格式 HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行 使用报头压缩,HTTP/2降低了开销 HTTP/2让服务器可以将响应主动“推送”到客户端缓存中1.多路复用和二进制帧HTTP/1.x 有个问题叫线端阻塞(head-of-line blocking), 它是指一...

2018-11-19 10:36:24 19998 1

原创 浅谈Fork/Join框架

前言:本文基于jdk1.7,jdk1.8与jdk1.7还是有些差别。一、什么是Fork/Join框架Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。简单来说,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+...

2018-11-16 17:03:23 932

原创 ConcurrentHashMap 的工作原理及源码分析,如何统计所有的元素个数

1.ConcurrentHashMap(线程安全):ConcurrentHashMap采用了非常精妙的"分段锁"策略,ConcurrentHashMap的主干是个Segment数组。 final Segment<K,V>[] segments;Segment继承了ReentrantLock(参照:https://blog.csdn.net/striveb/article/...

2018-11-15 16:38:38 3777 2

原创 HTTP协议常见的状态码

常见的状态码PS:有时候会出现状态码和状况的不一致的情况,即不少返回的状态码响应都是错误的, 但是用户可能察觉不到这点。比如 Web 应用程序内部发生错误, 状态码依然返回 200 OK, 这种情况也经常遇到。常见的状态码规则 返回的状态码和状态不一致的情况是有可能发生得 比如Web应用程序内部错误,但仍然返回 200 OK 200 OK 请求正常处理完毕 204 N...

2018-11-14 17:28:55 919

原创 图解HTTP,状态码,TCP、UDP等网络协议相关总结(持续更新)

前言:主要是记录学习《图解HTTP》这本书的知识,此外,还会夹杂一些平时整理的网络相关的笔记。一、TCP/IP 的分层管理1.首先分为4层:应用层,传输层,网络层,链路层。应用层:决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。 比如, FTP(FileTransfer Protocol, 文件传输协议) 和 DNS(Domain Name Sy...

2018-11-14 13:06:22 6177

原创 Java多线程之Executor框架

在前面的这篇文章中介绍了线程池的相关知识,现在我们来看一下跟线程池相关的框架--Executor。一.什么是Executor1.Executor框架的两级调度模型在HotSpot VM的线程模型中,Java线程(java.lang.Thread)被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当该Java线程终止时,这个操作系统线程也会被回收。操作系统会调...

2018-11-13 11:30:35 237

原创 Java中的线程池及其实现类ThreadPoolExecutor

前言:像我们连接数据库一样,需要不断地创建连接,销毁连接,如果都是人为地一个个创建和销毁的话会很费劲,所以就诞生了数据库连接池,线程池的产生也是同样的道理。线程池预先创建了若干数量的线程,并且不能由用户直接对线程的创建进行控制,在这个前提下重复使用固定或较为固定数目的线程来完成任务的执行。一.线程池的实现原理首先,我们先来看看线程池是怎么实现的。先来看下面这个图:这是线程池的工作流...

2018-11-09 17:47:46 1119

原创 深入理解java虚拟机之Java对象头

一.对象头包含的信息1.Mark Word:这一部分主要包括 存储对象自身的运行时数据,如哈希码(HashCode)、 GC分代年龄、 锁状态标志、 线程持有的锁、 偏向线程ID、 偏向时间戳等。注意这里的1bit,主要是表名是否是偏向锁,如果是0的话,表示是无锁,如果是1的话,表示是偏向锁。由于对象需要存储的运行时数据很多,其实已经超出了32位、64位Bitmap结构所能记录...

2018-11-08 16:47:11 1008

原创 深入理解Java虚拟机之创建对象,即创建一个类的过程

一.对象的创建1.类加载检查和分配内存虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。 对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Ja...

2018-11-08 16:18:30 761

原创 深入理解Java虚拟机之运行时数据区域

一.运行时数据区域有哪些?首先,我们先来看一张图:如上面的图所示,运行时内存区域主要分为:1.程序计数器,2.Java虚拟机栈,3.本地方法栈,4.Java堆,5.方法区等等,下面就一个个来剖析一下。二.这些区域都有哪些作用?首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运...

2018-11-03 12:18:13 203

Java开源项目

提高个人技术的开源项目,可以自己下下来好好研究一下,提高自己的技术

2018-11-11

空空如也

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

TA关注的人

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