自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 mysql索引possible_keys,key问题。

举例来说就是上面的例子,一个条件查询了表中的百分之99的数据,即使你的where条件中使用到了索引(并且使用了正确使用索引的姿势。),那么优化器也会选择放弃使用这个索引,因为你使用了这个索引,还会额外带来回表的代码,那么还不如直接全表扫描。好了,得出的结论就是possible_keys会列出你的where条件中可能会使用到的索引列,但是具体用不到这个索引,是需要根据你的实际情况来的,如果你的条件,使用到索引和不使用到索引所消耗的效果差不错(磁盘io,数据读取等)。

2023-06-07 11:46:11 1732

原创 ElasticSearch架构流程图

2022-05-03 19:21:05 734

原创 linux内核知识之namespace

namespace概念: namespace是linux自带的功能用来隔离内核资源的机制,如进程pid,主机名与域名,网络设备端口等。什么是容器?容器其实就是一个虚拟化的独立的沙箱环境,和宿主机或者其他的容器之间是独立隔离的,他有自己的网络环境,用户权限,进程pid等。容器是依托于一个物理机或者一个虚拟机的,在此之上可以有多个容器,容器之间是感受不到彼此的存在的,在网络中可以被看做是一个独...

2020-04-12 21:36:16 1838

原创 笔记-Java基础之方法调用

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍,最频繁的操作,但前面已经讲过,Class文件的编译过程中不包含传统编译中的链接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用)。这个特性给Jav...

2019-07-07 16:40:47 160

原创 笔记-Java基础之虚拟机概述

Java语言的“编译器”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程,也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler)把字节码转变成机器码的过程,还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*....

2019-07-07 15:39:01 97

原创 笔记-Java基础之Hotspot虚拟机编译对象与触发条件

程序在运行过程中会被即时编译器编译的“热点代码”有两类,既: 1.被多次调用的方法。 2.被多次执行的循环体。 前者很好理解,一个方法被调用得多了,方法体内代码执行的次数自然就多了,它成为“热点代码”是理所当然的。而后者则是为了解决一个方法只被调用一次或少数的几次,但是方法体内部存在循环次数较多的循环体的问题,这样循环体的代码也被重复执行多次,因此这些代码也应...

2019-07-01 15:17:21 201

原创 笔记-Java基础之Hotspot虚拟机解释器与编译器

在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这个代码认定为"热点代码",为了提高热点代码的执行,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compile...

2019-07-01 13:38:31 706

原创 笔记-Java基础之语法糖的味道

泛型与类型擦除 泛型是JDK1.5的一项新增特性,他的本质是参数化类型(Parametersized Type)的应用,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 泛型技术在C#和Java之中的使用方式看似相同,但实现上却有着根本性的分歧,C#里面泛型无论在程序源码中、编译后的IL中(Interme...

2019-06-30 20:57:58 219

原创 笔记-Java基础之类加载器

虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类与类加载器 对于一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达的更通俗一些:比较两...

2019-06-26 20:50:49 83

原创 笔记-Java基础之类加载的过程(加载、验证、准备、解析、初始化)

加载“加载”是类加载(Class Loading)过程的一个阶段,两者并不是一个概念,在加载阶段,虚拟机会完成以下三件事情:1.通过一个类的全限定名来获取定义此类的二进制字节流。2.将这个字节流所代表的静态存储结果转化为方法区的运行时数据结构。3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。虚拟机规范的这3点要求其实并不...

2019-06-24 21:04:06 176

原创 笔记-Java基础之类加载的过程

概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 与那些在编译时需要进行连接工作的语言不通,在Java语言里面,类型的加载、连接和初始化过程都在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销 ,但是会为Java应用程序提供高度的灵活性,Java里天生...

2019-06-22 14:04:28 72

原创 笔记-Java基础之虚拟机字节码执行引擎

Java虚拟机规范中指定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和...

2019-06-18 20:59:04 163

原创 笔记-Java基础字节码执行简介

Java虚拟机的指令由一个字节长度的,代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的架构,所以大多数的指令都都不包含操作数,只有一个操作码。 字节码指令集是一种具有鲜明特点,优劣势都很突出的指令集架构,由于限制了Java虚拟机操作码的长度为一个字...

2019-06-15 13:51:38 138

原创 笔记-Java基础属性表集合和Code属性

属性表在前面的讲解之中已经出现过数次,在Class文件、字段表、方法表都可以携带自己的属性表集合,以用于描述某些场景专有的信息。 与Class文件中其他的数据项目要求严格的顺序、长度和内容不同,属性表集合的限制稍微宽松了一些,不再要求各个属性表具有严格顺序,并且只要不与已有属性名重复,任何人实现的编译器都可以向属性表中写入自己定义的属性信息,Java虚拟机 运行时会忽略掉它不认识...

2019-06-15 13:24:48 1497 1

原创 笔记-Java基础方法表集合

方法表和字段表差不多,Class文件存储格式中对方法的描述与对字段的描述几乎采用了完全一致的方法,方法表的结构如同字段表一样,依次包括了访问标志(access_flags)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合(attributes)几项见表6-11。这些数据项目的含义也非常类似,仅在访问标志和属性表集合的可选项中有所区别。...

2019-06-15 13:14:17 308

原创 笔记-Java基础字段表集合

字段表(field_info)用于描述接口或者类中剩余的变量。字段(field)包括类级变量以及实例级变量,但不包括在方法内部剩余的局部变量。我们可以想一想在Java中描述一个字段可以包含什么信息?可以包括的信息有:字段的作用域(public,private,protected修饰符)、是实例变量还是类变量(static修饰符)、可变性(final)、并发可见性(volatile修饰符,是...

2019-06-14 17:17:15 784

原创 笔记-Java基础Class文件之类索引,父类索引与接口索引

类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,而接口索引集合(interfaces)是一组u2类型的数据的集合,class文件中由这三项数据来确定这个类的继承关系。类索引用用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。由于Java语言不孕育多重继承,所以父父类索引只有一个,除了java.lang.Object之外,所有的Java类...

2019-04-16 11:56:32 210

原创 笔记-Java基础Class文件之访问标志

在常量池结束之后,紧接着的两个字节代表访问标志(access_flag),这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是类还是接口;是否定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。具体的标志位以及标志的含义如下表所示:access_flag中一共有有16个标志位可以使用,当前之定义了8个,没有使用到的标志位要求一律为...

2019-04-16 11:30:04 404

原创 笔记-Java基础之Class类文件的结构

无关性Java刚刚诞生之初的宣传口号:“一次编写,到处运行(write once,run anywhere)”。平台无关性-支撑这句话的关键在于:运行在不同平台之上的各种各样的虚拟机。各种不同平台的虚拟机和平台都统一使用的程序存储格式-字节码(ByteCode)是构成平台无关性的基石。语言无关性-虚拟机还有另外一种无关性,在Java发展之初,设计者就曾经考虑过并实现了让其他语言运行在J...

2019-04-16 11:15:32 81

原创 笔记-Java基础Class文件之常量池

常量池紧接着版本号后的是常量池,它是一个表类型数据项目,意味着常量池会有多个数据项构成。它是Class文件的资源库,同时也是占用Class文件空间最多的数据项目之一。常量池中的常量数量是不定的, 因此,在常量池的入口是一个u2类型数据,代表着常量池计数值,这个计数值是从1而不是0开始的。因此,常量池为21时,实际上你的常量是20,而第0项常量是空出来的,这样做的目的在于满足“不引用任何一个...

2019-04-16 11:15:03 216 1

原创 笔记-Java基础Class文件之魔数和版本号

魔数与Class文件的版本魔数:每个Class文件的头四个字节称为魔数,它的唯一作用就是确定这个文件是否为一个能被虚拟机接受的Class文件,很多存储文件都有这个魔数,不以扩展名作为标识的原因是因为扩展名可以随意更改。魔数值可以被文件格式的制定者自由选择,只要这个魔术值没有被广泛的应用同时又不会引起混淆即可。而Class文件的魔数为CAFEBABE。版本:紧接着魔数的四个字节存储的是C...

2019-04-16 11:13:45 179

原创 JVM虚拟机性能监控。

首先查询java进程端口ps -ef | grep java 上面命令查出java进程详情,然后红框中就是进程pid了。然后用java命令进行查询,比如查询虚拟机运行状态的jstat命令,-guutil位置是参数,2567就是上面查到的端口了。jstat-gcutil 2567...

2019-04-09 16:33:59 149

原创 笔记-Java基础之Hotspot虚拟机对象概念

对象的创建基本上Java有四种创建对象的方法:1.new关键字。2.实现Cloneable接口,调用clone方法。3.反射。4.反序列化。以new关键字举例,执行到new关键字,首先会验证new符号引用代表的类是是否已被加载,没有则先进行加载步骤。如果有,则直接在堆中开辟一个固定大小的内存空间,内存的大小在类加载完成后便可以完全确定。而为新对象分配一块空间有以下两...

2019-03-31 19:32:28 88

原创 笔记-Java基础之运行时数据区域。

java在程序执行阶段将内存划分为了几个区域。但大致可以从堆栈,线程是否私有两个角度来看。程序计数器 线程私有,可以看做当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等出功能都是需要有这个计数器来完成。 由于java虚拟机的多线程是通过处理器在多线程之间轮流切换分配时间执行的...

2019-03-31 17:48:21 106

原创 集合类copyProperties

spring的BeanUtils.copyProperties挺好用的,但是不支持list复制,也没有集合的相关方法。所以自己就写了一个。这里反射好像不能获取到目标集合的未知类型类信息??如果有知道怎么获取的请务必留言告诉我,谢谢!public class ArrayUtils { public static void copyProperties(List<?> so...

2019-02-28 10:48:38 848

原创 Apollo配置中心笔记。

刚入职没几天,新公司项目是微服务架构,用的是spring cloud那一套,不过配置中心确是换成了携程的开源框架apollo。总的来说这几天看了一下资料,为基础做个笔记。github:https://github.com/ctripcorp/apollo1.Apollo可以做什么。  apollo是携程框架组研发的一款配置中心管理框架,能够集中化管理不同应用,不同集群的配置。a...

2019-01-28 14:37:08 1019

原创 同步,异步,阻塞,非阻塞,io多路复用总结。

前段时间微信公众号看了这方面的文章,本来一次没啥东西,没想到越看到后面涉及到的知识越多,还有操作系统底层的东西,做个笔记,免得忘记。基础知识准备:1.文件描述符 以linux为例,我们知道,linux当中所有的东西都可以当成一个文件被打开,而文件描述符是内核为了高效管理系统中被打开文件所创建的一个索引值,表现形式为一个非负整数(通常是一个小整数)。所有的I/O操作的系统调用都是...

2019-01-21 15:46:30 651

转载 转 string

https://rednaxelafx.iteye.com/blog/774673/

2018-12-21 14:31:25 71

原创 spring请求拦截源码跟踪。

本来想学习一下spring的方法拦截(HandlerMethodArgumentResolver),然后根据网上的教程跑了下,没跑起来,试了好久,一怒之下调试源码想看哪里出问题了,记录一下,免得下次忘记。方法拦截器@Componentpublic class MyUserArgumentResolver implements HandlerMethodArgumentResolver...

2018-09-21 15:25:43 379

原创 设计模式-六大原则

单一职责原则:有且只有一个原因会引起类的变化,即是说,一个类只会对一个职责内的事情负责。比如说权限类,那么他只负责权限内的所有事情,其他登录或者角色等相关的一些东西他不会干涉,也不要把权限的事情放到其他的类里面。一定要记住,手不要伸太长,否则的话,相关的代码分散到系统各个地方,维护的代码是在太大,随着你的系统的扩张,维护的代码也会呈几何增长。想象一下中医药方,每个抽屉值只放了一种药材,抓方...

2018-07-24 14:13:57 398

原创 插入排序

public static void directSort(int[] a){ for(int i = 1; i < a.length ; i ++){ int temp = a[i]; int k = i-1; //当前的数比前面的小。 while(k >= 0 &amp...

2018-06-13 15:35:39 84

原创 算法-选择排序

public static void selectionSort(int[] a){ for (int i = 0 ; i < a.length -1 ; i ++){ int min = i; for (int j = min + 1 ; j < a.length ; j ++){ if(...

2018-06-13 14:47:13 94

原创 设计模式-桥接模式(bridge)

桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。手机都有自己的系统,一种做法是有个手机类,他又字段设备名称,以及打电话发短信等行为。伪代码如下public abstract clas...

2018-05-30 15:08:14 173

原创 设计模式-原型模式(prototype)

原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。...

2018-05-28 16:21:53 165

翻译 设计模式-适配器模式(adapter)

在现有程序以及需求冲突的情况下,在两者之间加个适配器,让两者在适配器的协调下可以正常工作的模式叫适配器模式。使用继承的适配器/** * 表示现有的程序 * * Created by Administrator on 2018/5/25 0025. */public class Banner { private String string; public Banner(...

2018-05-25 14:53:51 103

原创 算法-图解快速排序

wiki解释:快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。分治法:分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。步骤:从数列中挑出一个元素,称为"基准"(pivot),...

2018-05-25 10:56:00 189

原创 设计模式-工厂方法

结构图工程结构图其中framework是对客户端开放的抽象层,也就是抽象工厂和抽象产品,另外两个是具体的实现。/** * 抽象工厂 * * Created by Administrator on 2018/5/15 0015. */public abstract class Factory { public final Product create(String owner){...

2018-05-17 11:24:53 128

原创 spring-@Profile源码跟踪

@Profile标签可以让你的不同的环境切换bean。@Profile也是一个条件化配置,因此,一个被@Profile注解的bean最后是能否注册到上下文由ProfileCondition.class决定。package org.springframework.context.annotation;import java.lang.annotation.Documented;

2017-12-11 15:27:24 407

原创 spring-Condition条件化配置

spring4.0引入的新特性,当你注册bean时,可以对这个bean添加一定的自定义条件,当满足这个条件时,注册这个bean,否则不注册。条件化最重要的是Condition接口,如下定义。public interface Condition { boolean matches(ConditionContext var1, AnnotatedTypeMetadata var

2017-12-08 17:15:17 5758 1

原创 spring-配置小结

传统的spring是xml与java代码相结合。xml部分: java部分:public class Dog{ String name = "dog wangwang.."; public String getName() {

2017-12-07 19:17:54 305

jquery-2.1.1

JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需要定义id即可。 jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。 jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。 jQuery,顾名思义,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库。

2015-09-18

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

TA关注的人

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