自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (1)
  • 收藏
  • 关注

原创 HTTPS原理超详解

为什么要https?在网络传输中,处处存在着威胁。你发起的http请求很可能被解惑,而那些“坏人”们拿到你的http报文后,可以对其进行修改,再次发起请求,亦或是从报文中窃取一些私密信息。所以,如果在传输过程中保证安全性呢?Https(Http over ssl)就是为了解决传输安全性而诞生的。 SSL接着上一小节讲,我们既然要解决传输安全性问题。那能不能让http变得安全一些呢?...

2018-11-04 19:57:17 195 1

原创 个人关于NIO的理解

一、同步、异步、阻塞、非阻塞的联系和区别 同步和异步是针对于应用程序和内核的交互而言的,阻塞和非阻塞是针对用户进程访问数据而言的。同步:用户进程触发IO操作后,就一直等待或者轮询直到IO操作完成。异步:用户进程触发IO操作后,就可以开始做自己的事,等到IO完成后会收到一个通知。阻塞:读取数据时,如果没有数据可读,就一直等待知道有数据可以读取。非阻塞:读取数据时,没有数据可读,就...

2018-07-29 11:04:14 652

原创 mysql学习笔记

1、mysql索引的数据结构mysql索引采用b+树作为其数据结构。我们知道与b+树常常来比较的有红黑树树和b-树。那为什么mysql不采用那几种树作为索引的数据结构呢?我们下面来分析一下。我们知道b树是非叶子节点也存储了数据,而b+树只有叶子结点存储了数据,且有一条链表将叶子结点全部串起来。所以我们可以分析出,b树结点的大小大于b+树结点大小,且b+树更适合于范围查找,因为它有个串起所有叶子...

2018-07-27 14:53:00 124

原创 如何理解restfulAPI

    Representation State transfer:表征性状态转移,csdn上看到一个博客这么解释这句拗口的话,即用url定位资源,用http动词描述操作。我再补一句操作可能导致资源状态改变。谈到这个状态改变,我觉得就有必要谈一谈http动词及其幂等性和安全性。这个我将在5.1中阐述。继续谈restfulAPI吧,符合restful风格的就是restfulAPI。那么什么是rest...

2018-07-23 12:04:31 604

原创 数据库的ACID特性

    A:atomictiy原子性    C:consistency 一致性    I  :Isolation 隔离性    D:durability 持久性    这个问题我想先简单介绍一下这四个特性再介绍一下如果没有这四个特性会产生数据库读取的哪些异常。    首先说下原子性,原子性简单讲就是一个操作的集合,要么都执行,要么都不执行。其次是一致性,感觉这个用官方术语不太好理解。就...

2018-07-23 11:03:02 618

转载 java中锁的优化 -- JVM对synchronized的优化

java中锁的优化 -- JVM对synchronized的优化          1)锁消除      概念:JVM在JIT编译(即时编译)时,通过对运行上下文的扫描,去除掉那些不可能发生共享资源竞争的锁,从而节省了线程请求这些锁的时间。        举例:          StringBuffer的append方法是一个同步方法,如果StringBuffer类型的变量是一个局部变量,则该变...

2018-06-14 17:24:56 284

转载 .synchronized与static synchronized 的区别

synchronized与static synchronized 的区别  1.synchronized与static synchronized 的区别      synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制...

2018-06-13 21:56:11 166

转载 理解ThreadLocal

ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为Threa...

2018-06-13 21:55:25 71

转载 消息队列的应用场景

个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。使用场景的话,举个例子:假设用户在你的软件中注册,服务端收到用户的注册请求后,它会做这些操作:校验用户名等信息,如果没问题...

2018-06-13 16:38:51 102

转载 Java String 为什么设计成final的

Java String 为什么设计成final的 很久以前的面试中就遇到过这个问题:Java String 为什么设计成final的?当时毫无思路,现在倒是有些想法了,记在这里,如有不当之处请斧正。 我想,Java String 设计成final的,...

2018-03-15 19:52:01 131

转载 唯一索引与主键索引的比较

唯一索引唯一索引不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,如果在 employee 表中的职员姓氏(lname) 列上创建了唯一索引,则所有职员不能同姓。主键索引主键索引是唯一索引的特殊类型。数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。

2017-12-19 11:17:06 779

转载 聚集索引与非聚集索引

聚集索引  一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。   聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。          聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到

2017-12-19 10:10:15 99

转载 ListenableFuture

ListenableFuture顾名思义就是可以监听的Future,它是对java原生Future的扩展增强。我们知道Future表示一个异步计算任务,当任务完成时可以得到计算结果。如果我们希望一旦计算完成就拿到结果展示给用户或者做另外的计算,就必须使用另一个线程不断的查询计算状态。这样做,代码复杂,而且效率低下。使用ListenableFuture Guava帮我们检测Future是否完成了,如

2017-12-14 10:56:30 992

转载 Spring中bean的作用域

Spring中bean的作用域Bean简介:    在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。Bean

2017-12-13 14:51:49 295

转载 IO - 同步,异步,阻塞,非阻塞

当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到

2017-12-01 09:45:36 146

转载 mysql exists 和 in的效率比较

mysql exists 和 in的效率比较这条语句适用于a表比b表大的情况select * from ecs_goods a where cat_id in(select cat_id from ecs_category); 这条语句适用于b表比a表大的情况select * from ecs_goods a where EXISTS(select cat_id

2017-11-24 17:13:41 162

转载 设计模式-构建模式

设计模式之生成器模式  生成器模式 也称 构建模式,是一种比较常用的模式。 比如 Android 中大家熟悉的AlertDialog 就是使用的构建器模式。比如 咱们投简历就会知道 导出 会有格式的选择,如 html ,word格式 这个也可以用到生成器模式 使得编码更加的规范。 生成器定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表

2017-11-17 16:19:51 692

转载 两个链表的公共第一个公共节点

1.寻找两个链表的第一个公共结//这道题可以有很多种思路, 我们按照, 有坏到好的顺序, 来依次介绍每种思路。  同时, 这种顺序,   也是我们面对这道题时,能想到的 由易到难的思路第一种思路:蛮力法:  简单粗暴, 蛮力法。  假设有两个链表 L1 与 L2.  我们拿出 L1 的第一个结点, 在 L2 中依次遍历一遍, 遇到数值相同结点, 则返回。    否则 , 拿出 L1 中第二个结

2017-11-09 09:44:15 232

转载 双重检验锁与单例模式与volatitle

在网上看到过好多篇文章在说明双重检查锁在多个线程初始化一个单例类时到底为什么不行时在关键位置的描述模棱两可,今天我们就来看一下为什么不能用双重检查锁,问题到底出在了那里?下面我们直接进入主题,为什么使用双重检查锁,原因是因为在多线程初始化一个单例类时我们要确保得到一个对象,又想再确保一个对象时得到更高的效率,所以就有了双重检查锁,使用双重检查锁初始化对象的代码如下

2017-09-25 22:11:16 980

转载 为什么在重写equals方法时都要重写hashCode

为什么在重写equals方法时都要重写hashCode方法呢:首先equals与hashcode间的关系是这样的:1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)   自我的理解:由于为了提高程序的效率才实现了hashcode方法,先进

2017-09-20 19:38:21 243

转载 Java基础类型与包装类

Java基本类型与包装类Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 1、整数:包括int,short,byte,long ,初始值为02、浮点型:float,double ,初始值为0.03、字符:char ,初始值为空格,即'' ",如果输出,在Console上是看不到效果的。4、布尔:boolean ,初始

2017-09-19 23:24:23 232

转载 探秘Java中的String、StringBuilder以及StringBuffer

探秘Java中String、StringBuilder以及StringBuffer  相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲:  一.你了解String类吗?  二.深入

2017-09-19 20:54:00 403

转载 Java中对象存储位置

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自

2017-09-19 16:27:36 438

空空如也

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

TA关注的人

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