自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Franco的博客

学习,整理,积累,站在巨人的肩膀上厚积薄发

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 基本数据类型+String相关-这一篇全了解

16、String类能不能被继承,为什么?这种设计有什么好处?解:String是final类型,final类不能被继承。Java之所以被设计成final类是有一定的考虑在的,主要在以下几个方面。缓存HashcodeJava中经常会用到字符串的哈希码(hashcode)。例如,在HashMap中,字符串的不可变能保证其hashcode永远保持一致,这样就可以避免一些不必要的麻烦。...

2018-09-26 18:19:05 2687

原创 Java中整型的缓存机制

问:什么是Java中整型的缓存机制?参考链接:[译]Java中整型的缓存机制-HollisChuang's BlogJava中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能猜出下面的Java程序的输出结果吗。如果你的结果和真正结果...

2018-09-26 18:16:24 323

转载 步步深入MySQL:架构->查询执行流程->SQL解析顺序!

一、前言一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识。二、MySQL架构总览架构最好看图,再配上必要的说明文字。下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。从上图中我们可以看到,整个架构分为两层...

2018-09-26 11:58:59 229

转载 一个线程OOM,进程里其他线程还能运行么?

先说一下答案,答案是还能运行不瞒大家说,真在面试中,我遇到这一题,我估计也是答错。因为我初看到这一题,内心嘿嘿一笑,觉得这题是在考察JVM的内存结构。我第一反应是OOM的常见情况堆溢出,也就是下面的这种异常java.lang.OutOfMemoryError: Java heap spac先回忆一下,多线程中栈与堆是公有的还是私有的?回答如下在多线程环境下,每个线程拥有一个栈和一个...

2018-09-26 11:54:58 1953 2

转载 线上防雪崩利器——熔断器设计原理与实现

上周六,我负责的业务在凌晨00-04点的支付全部失败了。结果一查,MD,晚上银行维护,下游支付系统没有挂维护公告,在此期间一直请求维护中的银行,当然所有返回就是失败了,有种欲哭无泪的感觉,锅让业务来背。为了杜绝在此出现这种大面积批量的支付失败情况发生,保障系统的健壮性。我需要个在集中性异常的时候可以终止请求,当服务恢复,恢复请求。我想了一些方式,最后,觉得熔断器比较适合干这种事情。...

2018-09-26 11:51:38 320

原创 面向对象相关-这一篇全了解

1、什么是面向对象,什么是面向过程。面向对象的三大基本特征和五大基本原则是什么?解:什么是面向过程?把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。就是说,在进行面向过程编程的时候,不需要考虑那么多,上来先定义一个函数,然后使用各种诸如if-else、for-each等方式进行代码执行。最典型的用法就是实现一个简单的算法,比如实现冒泡排序。(自己在家做饭)什么是面向对象...

2018-09-19 17:59:32 528

转载 J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Condition与Object的监视器方法....

2018-09-19 17:29:55 161

转载 J.U.C之读写锁:ReentrantReadWriteLock

此篇博客所有源码均来自JDK 1.8重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。读写锁维护着一对锁,一个读锁和一个写锁。通过分离读锁和写锁,使得并发性比一般的排他锁有了较大的提...

2018-09-19 12:36:15 147

原创 J.U.C之重入锁:ReentrantLock

此篇博客所有源码均来自JDK 1.8ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。API介绍如下:一个可重入的互斥锁定 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些......

2018-09-18 15:53:59 226

转载 J.U.C之AQS:阻塞和唤醒线程

此篇博客所有源码均来自JDK 1.8在线程获取同步状态时如果获取失败,则加入CLH同步队列,通过通过自旋的方式不断获取同步状态,但是在自旋的过程中则需要判断当前线程是否需要阻塞,其主要方法在acquireQueued():if(shouldParkAfterFailedAcquire(p, node) &&parkAndCheckInterrupt()) in...

2018-09-18 15:46:37 375

转载 J.U.C之AQS:同步状态的获取与释放

此篇博客所有源码均来自JDK 1.8在前面提到过,AQS是构建Java同步组件的基础,我们期待它能够成为实现大部分同步需求的基础。AQS的设计模式采用的模板方法模式,子类通过继承的方式,实现它的抽象方法来管理同步状态,对于子类而言它并没有太多的活要做,AQS提供了大量的模板方法来实现同步,主要是分为三类:独占式获取和释放同步状态、共享式获取和释放同步状态、查询同步队列中的等待线程情况。自定...

2018-09-18 12:20:56 165

转载 J.U.C之AQS:CLH同步队列

此篇博客所有源码均来自JDK 1.8在上篇博客中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获...

2018-09-18 09:51:31 477

转载 J.U.C之AQS:AQS简介

Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(深入分析synchronized的实现原理),但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获...

2018-09-17 17:49:51 216

转载 Java内存模型之从JMM角度分析DCL

DCL,即Double Check Lock,中卫双重检查锁定。其实DCL很多人在单例模式中用过,LZ面试人的时候也要他们写过,但是有很多人都会写错。他们为什么会写错呢?其错误根源在哪里?有什么解决方案?下面就随LZ一起来分析问题分析我们先看单例模式里面的懒汉式:public class Singleton { private static Singleton singlet...

2018-09-17 17:05:53 209

原创 Map相关--这一篇全了解

目录 Map整体结构什么是HashMapHashMap实现原理分析 静态常量构造函数 添加元素扩容 树化操作红黑树插入红黑树拆分去树化操作综合示例HashMap和HashTable、TreeMap的区别HashMap与HashSet的关系HashMap 和 ConcurrentHashMap 的关系参考:Map整体结构首先...

2018-09-17 11:37:41 807 1

转载 16个经典面试问题回答思路

在一般的互联网公司的技术人员的面试中,大概会经历3到4轮的面试,差不多2-3轮的技术面,还有1轮的HR面试,今天给你总结的这些问题,都是和技术无关的,但是技术人员也可能会被问到的。这些问题没有标准答案,但是也有一定的套路可以遵循。以下的16个问题中,在我曾经参加阿里的校招面试时,至少有3道被问过。我认为我回答的不是很好,所以,希望大家都可以把这类问题回答好。1:"请你自我介绍一下"思路...

2018-09-17 09:43:15 822

转载 服务限流算法的几种实现

保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。为什么需要限流按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮: 用户增长过快(这是好事) 因为某个热点事件(微博热搜)...

2018-09-17 09:36:39 406

转载 数据库分库分表策略实现方案!

一、MySQL扩展具体的实现方式随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。关于数据库的扩展主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库与分表(1)业务拆分在 《大型网站应用之海量数据和高并发解决方案总结一二 》一篇文章中也具体讲述了为什么要对业务进行拆分。业务起步初始,为了加快应用上线和快速迭...

2018-09-17 09:30:30 344

原创 Spring Boot知识点

Spring Boot 是微服务中最好的 Java 框架.。问题一Spring Boot、Spring MVC 和 Spring 有什么区别?1、SpringSpring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。2...

2018-09-17 08:53:40 1004

原创 HttpClient用法--这一篇全了解(内含例子)

HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协议的),提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。org.apache.commons.httpclien...

2018-09-15 15:48:14 179470 15

转载 Java方法反射的实现原理

反射方面先看Java反射与动态代理“物有本末,事有始终。知其先后,则近道矣”前段时间看了笨神的 从一起GC血案谈到反射原理一本,就把Java方法的反射机制实现撸了一遍。方法反射实例public class ReflectCase { public static void main(String[] args) throws Exception { Pro...

2018-09-12 15:29:53 18802 7

原创 代理相关-这一篇全了解

代理技术,其实不只是Java语言特有的技术,其实在互联网早期就已经出现了这种技术。在计算机网络层面,常用的代理技术有:正向代理、反向代理和透明代理。最常用到的就是正向代理和反向代理。正向代理和反向代理 正向代理正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服...

2018-09-12 14:57:05 1140

原创 MySql中的锁机制

讲到锁大家应该都不陌生。像是Java中常见的采用CAS算法实现的乐观锁,典型的例子就是原子类,通过CAS自旋实现原子操作的更新,悲观锁通常都是Synchronized和Lock实现。乐观锁与悲观锁 乐观锁:每次读数据的时候都认为其他人不会修改,所以不会上锁,而是在更新的时候去判断在此期间有没有其他人更新了数据,可以使用版本号机制。在数据库中可以通过为数据表增加一个版本号字段实现。读取数据...

2018-09-12 10:57:45 154

原创 开发必会的Linux命令

查找文件find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*" |xargs grep "hello" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所以有的包含sprin...

2018-09-12 10:31:36 179

转载 Java ASM 技术简介

什么是ASMASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能...

2018-09-11 14:44:48 2701

转载 MySQL的B树索引与索引优化

MySQL的MyISAM、InnoDB引擎默认均使用B+树索引(查询时都显示为“BTREE”),本文讨论两个问题: 为什么MySQL等主流数据库选择B+树的索引结构? 如何基于索引结构,理解常见的MySQL索引优化思路? 索引结构的选择基于这样一个性质:大数据量时,索引无法全部装入内存。为什么索引无法全部装入内存? 假设使用树结构组织索引,简单估算一下: 假设单个...

2018-09-11 14:22:43 209

原创 MyBatis的底层实现原理

动态代理的功能:通过拦截器方法回调,对目标target方法进行增强。言外之意就是为了增强目标target方法。上面这句话没错,但也不要认为它就是真理,殊不知,动态代理还有投鞭断流的霸权,连目标target都不要的科幻模式。注:本文默认认为,读者对动态代理的原理是理解的,如果不明白target的含义,难以看懂本篇文章,建议先理解动态代理。一、自定义JDK动态代理之投鞭断流实现自动映射器M...

2018-09-11 10:56:32 47572 8

转载 Mysql面试题

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?2、Mysql的技术特点是什么?Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。3、Heap表是什么?...

2018-09-11 10:14:14 423

原创 基本数据类型分类

Java中有8种基本数据类型分为三大类。字符型:char(16位)布尔型:boolean数值型:1.整型:byte(8位)、short(16位)、int(32位)、long(64位) 2.浮点型:float(32位)、double(64位)String不是基本数据类型,是引用类型。...

2018-09-11 09:38:15 2741

原创 List相关--这一篇全了解

Java 中 Set 与 List 有什么不同?List,Set都是继承自Collection接口。都是用来存储一组相同类型的元素的。List特点:元素有放入顺序,元素可重复 。有顺序,即先放入的元素排在前面。Set特点:元素无放入顺序,元素不可重复。无顺序,即先放入的元素不一定排在前面。不可重复,相同元素在set中只会保留一份。所以,有些场景下,set可以用来去重。Java中的L...

2018-09-10 11:14:49 1362

原创 List相关源码解析--这一篇全了解

ArrayList源码解析(基于JDK1.7,JDK1.8比较)ArrayList属性//JDK1.7public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{...

2018-09-10 11:07:08 253

原创 List基础--这一篇全了解

为什么需要集合  首先,Java是一门面向对象的语言,奉承一切皆对象的思想,在实际开发过程中,免不了要经常操作对象,而且会同时操作多个甚至大量对象,这时就需要一个专门存储这些对象的容器,这样就可以利用容器对象的特性来方便的进行操作。  其次,在Java中还有数组,也是一种容器,但和集合相比,数组长度不可变,只能存储同一种类型元素。  所以,Java提供了集合的概念,相比于数组,集合长度可变...

2018-09-10 11:02:44 329

原创 定位及优化SQL语句的性能问题

一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len列,索引长度rows列,扫描行数。该值是个预估值extra列...

2018-09-05 12:29:03 10261 1

Tab切换形势大全及FragmentPagerAdapter保存刷新数据实现

5种Tab实现总结,FragmentPagerAdapter数据保存完美解决

2016-01-14

空空如也

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

TA关注的人

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