自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 IDEA 实用快捷键

Ctrl Alt M 抽取方法 methodCtrl Alt F 抽取字段 fieldCtrl Alt V 抽取变量 variableCtrl Alt C 抽取常量 constCtrl F6 修改函数属性Shift F6 重命名Shift DELETE 安全删除某一行Ctrl Y...

2019-06-05 14:53:49 210 1

原创 10、java集合类----ConcurrentHashMap集合

目录如何保证容器是线程安全的?ConcurrentHashMap 如何实现高效地线程安全?典型回答考点分析知识扩展1. 为什么需要 ConcurrentHashMap?2.ConcurrentHashMap 分析我在之前两讲介绍了 Java 集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如 Vector、Stack,在性能方面也远不尽如人意...

2019-01-08 21:47:55 261

原创 09、java集合类----Map集合

目录对比 Hashtable、HashMap、TreeMap 有什么不同?(1) 元素特性(2)顺序特性(3)初始化与增长方式(4)线程安全性(4)一段话HashMap1.Map 整体结构2.HashMap 源码分析3. 容量、负载因子和树化我们前面提到了树化改造,对应逻辑主要在 putVal 和 treeifyBin 中那么,为什么 HashMap 要...

2019-01-08 21:47:36 279

原创 08、java集合类----List集合

目录集合与数组hashCode方法的作用?层次关系集合类遍历List集合层次图对比 Vector、ArrayList、LinkedList 有何区别?读写效率:扩容:一般来说,也可以补充一下不同容器类型适合的场景:Set 集合的几种实例线程安全在 Java 9 中,Java 标准类库提供了一系列的静态工厂方法集合与数组数组(可以存储基本数据类...

2019-01-08 21:47:28 210

原创 01、Java平台介绍与特点

目录Java技术分为哪三个版本?分别包含哪些内容?Java语言拥有哪些特点?请分别具体说明。什么是JDK?什么是JRE?两者之间有什么关系?如何使用命令行(DOS界面下)编译运行Java类?在java中创建类时需要注意哪些事项?Java技术分为哪三个版本?分别包含哪些内容?1).JavaSE(Java Platform Standard Edition,标准版)用来...

2019-01-08 21:44:59 190

转载 JAVA源码分析-HashMap源码分析

转载地址:JAVA源码分析-HashMap源码分析(一)https://www.jianshu.com/p/7dcff1fd05adJAVA源码分析-HashMap源码分析(二)https://www.jianshu.com/p/fd22f4965369HashMap实现原理及源码分析https://www.cnblogs.com/chengxiao/p/6059914.h...

2019-01-08 20:23:52 184

原创 关于TCP UDP HTTP HTTPS的问题

目录TCP的三次握手下面就是TCP与UDP的区别:Http与Https的区别:什么是Http协议无状态协议怎么解决Http协议无状态协议?HTTP事务 HTTP1.0与Http1.1 的区别 :常见的HTTP相应状态码HTTP优化方案请求转发与请求重定向的区别请求转发:请求重定向:总结get和post区别cookie 和session 的区别...

2018-09-01 22:11:23 918

原创 redis

 目录 Reids的特点  Memcache与Redis的区别都有哪些?    redis常见性能问题和解决方案:   Redis为什么这么快redis的并发竞争问题redis持久化的几种方式redis的数据过期策略1、设置过期时间2、3种过期策略3、Redis采用的过期策略当前已用内存超过maxmemory限定时,触发 缓存淘汰策略redi...

2018-09-01 22:11:15 199

原创 zookeeper----ZAB 协议分析

目录前言Atomic broadcast protocol问题的提出ZAB 的四个阶段协议实现Fast Leader ElectionRecovery Phase (恢复阶段)总结深入浅出Zookeeper(一) Zookeeper架构及FastLeaderElection机制http://www.jasongj.com/zookeeper/fastlead...

2018-09-01 22:11:07 113

原创 dubbo

目录dubbo是什么?dubbo的架构节点角色说明调用关系说明连通性健壮性伸缩性dubbo默认使用什么通信协议?Dubbo超时重试机制带来的数据重复问题dubbo连接注册中心和直连的区别Dubbo在安全机制方面是如何解决的一般使用什么注册中心,还有其他的选择吗?服务提供者能实现失效踢出的原理持久节点临时节点应用场景服务上线怎么不...

2018-09-01 22:10:48 3934

原创 数据库

目录什么是存储过程?有哪些优缺点?优点缺点总结索引是什么?有什么作用以及优缺点?1. 什么是索引:2. 为什么要建立索引,即索引的优点:3. 索引的缺点:4. 什么样的表跟列要建立索引:5.使用索引查询一定能提高查询的性能吗?为什么什么是事务?事务的四个特性:⑴ 原子性(Atomicity)⑵ 一致性(Consistency)⑶ 隔离性(...

2018-09-01 22:10:30 314

原创 Spring相关

目录Spring IOC容器的设计与实现1、BeanFactory2、ApplicationContextBeanFactory和ApplicationContext的区别?1、两者装载bean的区别2、我们该用BeanFactory还是ApplicationContentBeanFactory 和 FactoryBean的区别?IOC和DI是什么?IoC...

2018-09-01 22:10:16 321

原创 后端接口的幂等性

在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次 当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次 一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到已付款,然...

2018-09-01 22:10:03 157

原创 构造方法和普通方法有什么区别

与一般方法相比,构造方法的特点是:1、构造函数的名称总是和它的类名一致。2、构造函数没有返回值,即不可以为它指定任何类型的返回值,包括void。3、在构造函数的第一条语句中,可以调用同类的另一个构造函数或者父类的构造函数。4、构造函数不能由编程人员显式的直接调用。5、在创建对象时,构造方法会自动被调用。6、构造函数的主要作用是完成对类对象的初始化。 例如:cl...

2018-09-01 22:09:57 2771

原创 java简单面试题

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 switch语句能否作用在byte上,能否作用在long上,能否作用在String上?在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装...

2018-09-01 22:09:43 270

转载 JAVA设计模式之代理模式

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编...

2018-08-06 09:48:05 89

原创 工厂模式--抽象工厂模式

定义        为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂模式与工厂方法模式的区别        抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,...

2018-07-27 17:14:00 128

原创 工厂模式--工厂方法模式

一、定义 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。需求:设计个计算器,两个数字之间的加减乘除基本运算。 IFactory.javapackage com.FactoryMethod;import com.SimpleFactory.Operation;/** * 工厂方法模式 * * @Desc...

2018-07-27 17:01:47 139

原创 工厂模式--简单工厂模式

简单说说简单工厂模式:需求:设计个计算器,两个数字之间的加减乘除基本运算。首先是Operation运算抽象类:package com.SimpleFactory;/** * 简单工厂模式 * @Description: 运算抽象类 * @Date 2018/7/25 */public abstract class Operation { public doubl...

2018-07-27 16:44:48 179

转载 单例模式

转载:https://blog.csdn.net/jason0539/article/details/23297037本文继续介绍23种设计模式系列之单例模式。概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。  单例模式有以下特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。...

2018-07-27 16:02:03 219

原创 《Effective Java》读书笔记

 引言第2章 创建和销毁对象何时以及如何创建对象,何时以及如何避免创建对象,如何确保创建的对象能够被适时地销毁,以及如何管理销毁之前必须进行的所有清楚工作第1条 考虑用静态工厂方法代替构造器静态工厂方法与构造器不同的第一大优势在于:它们有名称 静态工厂方法与构造器不同的第二大优势在于:不必再每次调用它们的时候都创建一个新对象 静态工厂方法与构造器不同的第三大优势在于:它们可...

2018-07-19 17:15:57 125

原创 Java web 实现 之 Filter分析ip统计网站的访问次数

统计工作需要在所有资源之前都执行,那么就可以放到Filter中了。我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的。用什么东西来装载统计的数据。Map<String,Integer>整个网站只需要一个Map即可!Map什么时候创建(使用ServletContextListener,在服务器启动时完成创建,并只在到ServletContext中),Map保存到哪里!(Map保存到...

2018-07-13 08:52:03 1499

转载 快速排序Java实现--最简单的实现方法

 快速排序,顾名思义,是一种速度快,效率高的排序算法。快排原理:        在要排的数(比如数组A)中选择一个中心值key(比如A[0]),通过一趟排序将数组A分成两部分,其中以key为中心,key右边都比key大,key左边的都key小,然后对这两部分分别重复这个过程,直到整个有序。        整个快排的过程就简化为了一趟排序的过程,然后递归调用就行了。        一趟排序的方法:1...

2018-06-17 10:37:30 259

转载 缓存与数据库一致性保证

本文主要讨论这么几个问题:(1)啥时候数据库和缓存中的数据会不一致(2)不一致优化思路(3)如何保证数据库与缓存的一致性 一、需求缘起上一篇《缓存架构设计细节二三事》(点击查看)引起了广泛的讨论,其中有一个结论:当数据发生变化时,“先淘汰缓存,再修改数据库”这个点是大家讨论的最多的。 上篇文章得出这个结论的依据是,由于操作缓存与操作数据库不是原子的,非常有可能出现执行失败。假设先写数据库,再淘汰缓...

2018-06-14 09:59:45 1634

转载 缓存更新的套路

                                                    看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数...

2018-06-14 09:58:59 1253

转载 JavaWeb秒杀业务场景设计

秒杀业务场景设计问题经常被面试的时候被问到,在实际业务中,也常常需要实现,下面我们来看看如何实现秒杀业务.秒杀业务,是典型的短时大量突发访问类问题特点:    秒杀时网站的访问量大增;            秒杀时购买的请求数量远小于库存,只有部分用户能够成功;            业务流程简单,根据先后顺序,下订单减库存;首先看一下普通商品购买业务的基本逻辑那么,秒杀业务,会影响到上面的哪些方...

2018-06-11 17:29:26 258

转载 Java 中的异常和处理详解

简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。Java中的异...

2018-06-10 10:19:52 120

转载 java中的多线程

引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确...

2018-06-04 11:09:40 81

原创 HttpClient发送InputStream对象

使用HttpClient发送InputStream--buffer对象,程序如下:public String fileUpload(byte[] buffer, String url, int count, String classId) throws IOException { //创建HttpClient对象 CloseableHttpClient client...

2018-05-09 16:43:35 2767

原创 byte数组和File,InputStream互转

1、将File、FileInputStream 转换为byte数组: File file = new File("file.txt"); InputStream input = new FileInputStream(file); byte[] byt = new byte[input.available()]; input.read(byt); 2...

2018-05-08 17:05:57 4653

转载 Java InputStream、String、File相互转化

String --> InputStream ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes()); InputStream --> String String inputStream2String(InputStream is){ BufferedReader in = ne...

2018-05-08 17:05:06 7464 2

转载 今日头条 CEO 张一鸣:面试了 2000 个年轻人,混得好的都有这 5 种特质

正文  张一鸣算是 80 后中绝对的佼佼者。1983 年出生的张一鸣 ,在 2005 年从南开大学毕业后,至今参与创办了 5 家公司,2013 年,他先后入选《福布斯》“中国 30 位 30 岁以下的创业者”和《财富》“中国 40 位 40 岁以下的商业精英”,是目前国内互联网行业最受关注的青年领袖之一。2016 年 7 月 26 日,艾瑞发布 2016 中国独角兽企业估值榜单,今日头条以 92....

2018-04-10 17:34:25 1295

原创 SpringMVC 的 Controller 返回各种视图的处理方式

SpringMVC 的 Controller 可以返回各种各样的视图。比如 JSP, JSON, Velocity, FreeMarker, XML, PDF, Excel, 还有Html字符流 等等。那它们该如何的进行处理的呢?这里就涉及到 各种视图(View)对应的各种视图解析器(ViewResolver). 基本上上面说的每一种视图就对应用一种视图解析器来处理。基本上各种视图解析器大致上可以...

2018-03-09 20:57:56 5465

原创 @ResponseBody注解下,后台几种传递参数的方式

1、@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。2、response.getWriter.write():@R...

2018-03-09 20:34:47 8821

原创 response.getWriter().write()与out.print()的区别

1、首先介绍write()和print()方法的区别:  (1)、write():仅支持输出字符类型数据,字符、字符数组、字符串等  (2)、print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出 2、介绍response.getWriter()和out的区别:  (1)、out和response.getWri...

2018-03-09 19:47:52 285

原创 Spring mvc,jQuery和JSON数据交互

二、实验例子编写 1、请求和返回都是JSONa).程序发起index.jsp的一个按钮   b).js函数  function requestByJson() {         $.ajax({                   type : 'post',                   url : '${pageContext.request.contextPath}/jsonsour...

2018-03-09 19:20:25 199

原创 JAVA 全局变量 声明与定义

全局变量,在一个方法里面有值之后,别的方法可以直接使用此值。public class Test { static String a = "" ; public static void main(String[] args) { Test s = new Test(); s.Test1(); s.Test2(); } ...

2018-03-03 11:14:58 17399 1

转载 $.get(),$.post(),$.ajax()的区别和联系

解释JQuery帮助文档是这样解释这三种方法的。$.get()通过远程 HTTP GET 请求载入信息。这是一个简单的 GET 请求功能以取代复杂的$.ajax().请求成功时可调用回调函数。如果需要在出错时执行函数,请使用$.ajax()$.post()通过远程 HTTP POST 请求载入信息。这是一个简单的 POST 请求功能以取代复杂的$.ajax().请求成功时可调用回调函数。如果需要在...

2018-03-01 10:08:47 718

转载 MyBatis嵌套查询解析

Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many、many-to-one、one-to-one。而是只有两种association(一)、collection(多),表现很简洁。下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的。以最简单的用户表订单表这个最简单的一对多做示例:对应的JavaBean:User:publ...

2018-02-27 16:34:33 289

转载 2小时学会Spring Boot 学习笔记

前言Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是SpringMVC的接班人,和微服务紧密联系在一起。Spring Boot 简单实例DemoSpring Boot的优缺点优点:Spring Boot适合快速开发,适合构建微服务系统。封装了经常使用的组件,比如MyBatis, Hibernate, MongoDB

2018-02-02 14:12:47 481

空空如也

空空如也

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

TA关注的人

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