自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ConcurrentHashMap扩容原理

前言 ConcurrentHashMap从名称是可以看出,它是一个HashMap而且是线程安全的。在多线程编程中使用非常广泛。ConcurrentHashMap的实现方式,在jdk6,7,8中都不一样。本文只针对jdk8中的实现作一些说明。ConcurrentHashMap实现原理 先来看看ConcurrentHashMap底层是发何实现的。总的来说,它是...

2019-03-02 00:06:04 9796 1

原创 SpringMVC源码分析(二)

前言 上一节,已经分析了获取执行链HandlerExecutionChain的过程,接下来继续分析DispatcherServlet的doDispatch方法下面要执行的内容。源码分析HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());从获取处理器的适配器接着分析,为什么还需要这个适配器...

2019-02-28 17:57:14 303

原创 SpringMVC源码分析(一)

前言 上一节,我们只是从总体上分析了springMVC的请求处理流程,但针对每一步的细节,具体还有哪些操作并没有说明,这一节,就请求过程中的很一步处理给出相应的分析说明。源码分析 假设在服务器部署了一个工程project,其中有一个业务是根据用户ID获取用户的详细信息,GET请求的URL是:http://localhost:8080/project/userCont...

2019-02-27 18:18:20 324

原创 SpringMVC对请求的处理流程

 前言        在没有这些开发框架的传统项目中一般都是使用jsp+Servlet的实现方式,基本上是一个url对应一个Servlet,如果项目比较大的时候就会出现很多的问题,所以,后来出现了strusts、SpringMVC等等一些框架,SpringMVC是我们经常使用到的开发框架,MVC(Model/View/Controller)它是一种设计模式,简化了web开发的工作量,并且很...

2019-02-27 15:56:36 3032

原创 Spring Bean的生命周期分析

前言        Spring作为当前最流行的框架,受到广泛的关注和使用。它具有组件化的结构,在使用时可以根据应用的不同使用不同的模块而不必加载所有的组件。同时,spring具有很强的扩展性,在使用时根据业务扩展自己的执行方法。 加载bean的过程      spring加载的过程定义在AbstractApplicationContext的refresh方法中,我们先来看一下 这...

2019-02-26 16:59:57 14084 1

转载 笛卡尔心形线的画法

转载原文:[https://blog.csdn.net/FE_dev/article/details/80535122](https://blog.csdn.net/FE_dev/article/details/80535122) 写这篇文章是因为某天看到这样一个公式 r=a(1-cosθ) ,我上网...

2019-01-15 10:10:07 49497 3

原创 java中的String类

 一、概要       无论是在java语言还是C语言等等高级计算机语言中,字符串都是最常使用的类型,所以字符串的类的结构设计应该是经过严格论证的。下面我们就来看看java中的String类是如何设计的?这样设计的优缺点有哪些? 二、源码先来看看String类的源码public final class String implements java.io.S...

2019-01-14 11:45:51 397

转载 生活不止眼前的苟且,还有诗和远方---面朝大海,春暖花开

【原诗】 面朝大海,春暖花开 【网络英译版】 Facing the sea with spring blossoms 作者:海子 By Haizi     从明天起,做一个幸福的人 From tomorrow on, I will be a happy man; 喂马,劈柴,周游世界 Grooming, chopping, and trav...

2019-01-11 10:16:01 534

转载 微信背后的男人——张小龙

本文转自:duing2 https://blog.csdn.net/panda_panda_/article/details/86001645从初入世遥望星空的【独行侠客】,到因为看见,所以存在的现代【张大人】,张小龙和他的微信,到底经历了怎样的变化?今天,我们就来说说,这个不善言辞的,拥有超10亿铁粉的中国顶级程序员——张小龙。还记得那部治愈人心的作品小王子吗?故事中的小王子...

2019-01-11 10:02:57 675

转载 B树、B+树与B*树

二叉树在介绍B树之前,先来了解一下二叉树,特点:若左子树不空,则左子树上所有节点的值均小于它的根节点值 若右子树不空,则右子树上所有节点的值均大于它的根节点值 它的左、右子树也分别为二叉排序数(具有递归性)        从上图可以看出用二叉树组织数据时,查找比较方便,最好的情况可以减少一半的数据,但是最坏的情况是所有的节点都位于树的一侧时查找就不是那么快了,所以需要对二叉树...

2019-01-10 14:05:40 166

原创 推荐系统基础算法--余弦相似度算法详解及应用

一、简述       这几天在看《推荐系统实战》这本书。其中,基于领域的算法是推荐系统中最基本的算法,什么是基于领域的算法呢?简单来说就是基于用户(或物品)的协同过滤算法,所谓的协同的意思就是需要用户(或物品)共同参与。从而通过用户的行为,推荐和他兴趣相似的其他用户喜欢的物品或他自己之前喜欢的物品的相似的物品。这里有一个查找物品或用户兴趣的相似性,就是我们今天讨论的主题相似性的度量。 ...

2019-01-10 13:49:43 15992 1

原创 java设计模式--原型模式

一、描述         举个栗子,快要过年了,对联是我们的传统文化也是过年的必须品。以前,都是自己买毛笔、墨水、红纸等等自己写。现在不一样了,由代工厂统一印制出来,品种多样,字体标准。大家只需要购买即可。(只是感觉缺少了点年味,呵呵~!)。映射到java的世界中就相当于:自己写出来的可比作是new出来的对象,而由工厂印制出来的可类比于clone。今天讲的原型模式就是clone,它的好处显...

2019-01-08 17:28:46 210

原创 java设计模式--创建者模式

一、描述        建筑者(builder)也是创建模式的一种,最原始的意思是建筑房屋的工人。可以想象一下如果需要建造房子必须先打地基---->构建框架----->垒墙---->装修等等。它是有一定的流程顺序的,而每一步的实现可以单独一个模块出来。所以,由此可以得出Builder模式主要适用于:需要创建的产品由N个模块构成并且需要按照某种顺序,不关注各模块的实现,但...

2019-01-03 17:08:31 289

原创 Spring Boot(3)--使用Mybatis

本章内容添加mybatis支持 多数据源配置 总结        前一章也说过,连接使用数据库主要有两种方式,一种是ORM框架,使用对像来生成需要的SQL,代表的有JPA和Hibernate。另一种方式就是直接使用SQL操作,最常用的就是Mybatis。添加mybatis    首先,添加相关的jar包<!--mybatis连接--><depende...

2018-12-27 14:29:46 331

原创 Spring Boot (2)--连接数据库(mysql)

本章内容日志输出 连接mysql及使用JPA 使用alibaba.druid 开启事务 日志输出        在Spring Boot中默认使用的是slf4j+logback,并且spring boot规定配置文件的命名格式最好是xxx-spring.[xml,yml,properties],这样可以让boot来管理你的配置文件。但如果你坚持自定义命名,boot也可以帮你实现...

2018-12-21 16:46:21 2315

原创 Spring Boot(1)--初识篇

主要内容springBoot是什么? 为什么要使用它? 开始自己的编码 测试用例 配置文件说明 自定义过虑器一、Spring Boot是何物?         Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Sprin...

2018-12-14 16:59:17 193

原创 java设计模式--单例模式

一、描述        所谓的单例,就是指一个类对象在运行期间就只有一个实例对象,由代码来限制,强制只实例化一次。使用场景一般类似于计数器的需求。使用单例的方式地方大多数可以使用静态方法,这两者有什么区别,在哪种情况下应该使用单例或静态方法呢?首先两者的区别是:静态类比单例具有更好的性能,因为静态方法在编译其就绑定了。比如一些工具类,java.lang.Math中的类 单例类可以继承...

2018-12-13 13:43:45 152 2

原创 java设计模式分类及设计原则

一、设计模式分类总体来说设计模式分为三大类:创建型模式(create),共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(frame),共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(behavior),共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访...

2018-12-13 13:29:39 192

原创 java8之ThreadPoolExecutor源码解读

前言        现在多数服务器都有多个CPU,这为多线程并发执行任务提供了良好的硬件支持,在开发中,我们也会根据具体业务尝试使用多线程编程来提高业务执行的效率。那么在java8中如何正确的使用多线程?如何减少资源的消耗让任务执行更高效呢? 线程池        在java中创建、销毁多线程都是要破费很多资源的,所以在使用中应该避免自己创建多线程去执行任务,而是使用线程池来处理。...

2018-12-13 13:01:22 326

原创 在项目中运用rabbitmq

本章内容解耦思维 实例解析 实现RPC功能       在项目开发中,我们谈论最多的应该就是项目的可扩展性,解耦项目中的各模块就是解决扩展性的一种实现方式。为什么要解耦?什么样的场景需要解耦呢?解耦思维       项目开发使用的技术就好像是一个项目的发动机一样,主要是为了业务提供充足的动力。随时间的推移,公司业务会不断的发生变化。就需要技术进行支持。所以就要求在项目的开发过程中...

2018-12-06 18:39:38 5191 2

原创 RabbitMQ的运行与管理

本章内容节点及节点启停 rabbit中的权限 查看rabbit 节点及节点启停        我们都知道Rabbit是使用Erlang语言编写的,它有自己的一套方式。主要包含两个概念:Erlang节点和Erlang程序。我们所讲的通常意义上的节点是批Rabbit服务器的实例。实际上,节点描述的是一个Erlang节点上运行着一个Erlang应用程序。与java语言中的jvm类似,E...

2018-12-05 15:52:32 328

原创 RabbitMQ消息通信中间件中的那些概念

本章主要内容了解rabbitmq的诞生 环境设置与安装 AMQP协议 消息通信概念-----生产者与消费者 消息持久化 了解rabbitmq的诞生        20世纪80年代,IBM、微软等公司研发了商业级的MQ组件,但大多停留在金融行业等大型组织内部使用,因其价格昂贵,且不同供应商之间的MQ协议不能,不能直接相互通信,很多中小型公司无法使用这项技术。2004年,JPMo...

2018-12-04 11:44:38 250

原创 Redis的持久化操作

前言        redis是一个内存数据库,并且按照对应的数据结构来存储,这样直接访问内存+特殊数据结构的方式让数据库可以应对很高的访问量。但如果服务器出现异常,比如:断电、某种原因宕机等。这时如果只是在数据放在内存,就会造成数据的丢失。应对这种异常的做法就是要对数据进行持久化操作,当重启服务器时再读取数据载入内存即可完成恢复。 本章内容服务器中的数据库 过期键的删除策略 ...

2018-11-21 16:45:01 385

原创 redis的五种数据结构原理分析

本章主要内容简单介绍redis redis中的五种数据结构分析 应用场景分析 总结 关于Redisredis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将redis扩展成一个能够包含数百GB数据和每秒处...

2018-11-13 15:51:08 58838 7

原创 Java的基础特征,抽象、封装、继承、多态

 前言概述        在《java编程思想》中提到在java的世界中一切皆是对象的概念,对象就是对现实世界事物的抽象结果,它集成了事物的属性和行为,抽象程度越高越具有普适性,例如:生物---->动物(植物)---->哺乳动物(被子植物门)---->人(蔷薇目)---->男人(豆类)。这里的“生物”就是最高的一个抽象,世间的生命都可称为生物,它都有是否活着的属性和...

2018-11-12 17:41:43 381

原创 java序列化及项目中常用的序列化工具比较

1.我们知道在java中有序列化的概念      序列化的过程就是将对象转变成字节码,反序列化即是从字节码转换成对象的过程一般情况下要求实现Serializable接口,此接口中没有定义任何成员,只是起到标记对象是否可以被序列化的作用。为何需要有序列化呢?一方面是为了存储在磁盘中,另一个作用就是作为网络远程传输的内容。2.java中实现序列化 需要类实现了Serializable或External...

2018-05-23 16:37:11 12803

原创 JAVA IO(BIA)总结

java BIO NIO AIO总结java io操作是编程人员经常使用到的,以前只是使用没有对这三种IO做系统的了解,本文将对这三种IO作详细的介绍并附有测试完整代

2017-09-01 15:04:10 404

原创 第三节 ElasticSearch数据导入之Logstash

Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理、或一些具有一定格式的数据导入到ES的处理

2017-08-15 18:07:01 2083

原创 第二节 Elasticsearch加入中文分词器IK

一、简介Elasticsearch 内置的分词器是standard对英文分词还好,但对中文的支持就比较弱,所以需要另外引入一个中文分词器。目前比较流行的中文分词器有:IKAnalyzer、MMSeg4j、Paoding等等。此次引入的是IKAnalyzer。二、下载和安装1、IK下载地址:https://github.com/medcl/elasticsearch-an

2017-08-14 16:34:16 761

原创 第一节 ElasticSearch了解及初步使用

ElasticSearch学习笔记

2017-08-11 18:03:36 452

原创 JSONP跨域访问

做为一个程序猿在开发项目中,难免会遇到系统与系统之间的交互,特别是现在各种框架的应用,在做业务分析的时候都会根据不同的业务应用分不同的小系统,各自为营。这样做的好处是不言而喻的,使业务解耦、系统解耦方便系统的维护及扩展。那么系统与系统之间的交互就会成为设计的一个重要的组成部分,根据业务要求的不同可以使用:1.MQ同步:activeMQ\kafka\rabbitMQ\zeroMQ等等这一

2016-05-25 11:42:58 333

转载 zookeeper原理

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee

2016-05-24 15:47:12 265

JAVA BIO AIO NIO测试代码

对java io总结时编写的测试代码,包括BIO,NIO,AIO的实现,Java io操作是编程人员经常使用到的,以前只是使用没有对这三种IO做系统的了解,本文将对这三种IO作详细的介绍并附有测试完整代码

2017-09-01

空空如也

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

TA关注的人

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