自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KHOST的博客

记录自己的学习历程,大部分来自转载,如有侵权联系删除.......

  • 博客(49)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java集合框架综述

一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2、集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3、抽象类:5个抽象类(长虚线表...

2019-03-31 16:01:58 158

转载 写二分查找

1、二分查找二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。/***二分查找,找到该值在数组中的下标,否则为-1*/staticintbinarySerach(int[]array,intkey){...

2019-03-31 15:58:13 256

转载 面试官:给我说说你平时是如何优化MySQL的?

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

2019-03-31 15:53:42 1975

原创 11个简单的Java性能调优技巧

大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识。好吧,不能说这是完全错误的。优化应用程序以获得最佳性能不是一件容易的事情。但是,这并不意味着如果你不具备这些知识,就不能做任何事情。这里有11个易于遵循的建议和最佳实践可以帮助你创建一个性能良好的应用程序。大部分建议是针对Java的。但也有若干建议是与语言无关的,可以应用于所有应用程序和编程语言。在讨论专门针对Java...

2019-03-31 15:48:45 187

原创 分析线程池源码

线程池源码也是面试经常被提问到的点,我会将全局源码做一分析,然后告诉你面试考啥,怎么答。为什么要用线程池?简洁的答两点就行。 降低系统资源消耗。 提高线程可控性。 如何创建使用线程池?JDK8提供了五种创建线程池的方法:1.创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。publicstaticExecutorServicen...

2019-03-31 15:47:24 220

原创 MySQL之Explain详解

一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。设计MySQL的大叔贴心的为我们提供了EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,本章的内容就是为了帮助大家看懂EXPLAIN语句的各个输出项都是干嘛使的,从而可以有针对性的提...

2019-03-31 15:44:27 262

原创 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览...

2019-03-31 15:40:57 139

原创 MyBatis框架及原理分析

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转换 MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。MyBatis的配置MyBatis框...

2019-03-31 15:16:13 144

原创 select count(*)底层究竟做了什么?

SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为O(N),其中 N 为表的行数。而MyISAM表中可以快速取到表的行数。这些实践经验的背后是怎样的机制,以及为什么需要/可以是这样,就是此文想要探讨的。先来看...

2019-03-31 15:13:15 2389

原创 数据库索引原理及优化

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。常见的查询算法及数据结构为什...

2019-03-31 15:09:55 211

原创 分析mybatis工作原理

Mybatis工作原理也是面试的一大考点,必须要对其非常清晰,这样才能怼回去。本文建立在Spring+SpringMVC+Mybatis整合的项目之上。我将其工作原理分为六个部分: 读取核心配置文件并返回InputStream流对象。 根据InputStream流对象解析出Configuration对象,然后创建SqlSessionFactory工厂对象 根据一系...

2019-03-27 12:59:13 127

原创 创建型模式:单例模式

简介姓名:单例模式英文名:Singleton Pattern价值观:我的生活我主宰(只允许自己实例化,不愿意被其他对象实例化)个人介绍:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)(来自《...

2019-03-27 12:59:09 87

原创 JVM核心知识体系知识清单

1.问题 1、如何理解类文件结构布局? 2、如何应用类加载器的工作原理进行将应用辗转腾挪? 3、热部署与热替换有何区别,如何隔离类冲突? 4、JVM如何管理内存,有何内存淘汰机制? 5、JVM执行引擎的工作机制是什么? 6、JVM调优应该遵循什么原则,使用什么工具? 7、JPDA架构是什么,如何应用代码热替换? 8、JVM...

2019-03-27 12:59:01 683

原创 架构设计之「 CAP 定理 」

在计算机领域,如果是初入行就算了,如果是多年的老码农还不懂 CAP 定理,那就真的说不过去了。CAP可是每一名技术架构师都必须掌握的基础原则啊。现在只要是稍微大一点的互联网项目都是采用 分布式 结构了,一个系统可能有多个节点组成,每个节点都可能需要维护一份数据。那么如何维护各个节点之间的状态,如何保障各个节点之间数据的同步问题就是大家急需关注的事情了。CAP定理是分布式系统中最基础的原则。...

2019-03-27 12:58:55 156

转载 了解10大Nginx配置项优化

(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l[root@lx~]#vi/usr/local/nginx1.10/conf/nginx.confworker_processes 4;[r...

2019-03-27 12:58:51 202

原创 JVM 之 ParNew 和 CMS 日志分析

在两年前的文章 JVM 学习——垃圾收集器与内存分配策略中,已经对 GC 算法的原理以及常用的垃圾收集器做了相应的总结。今天这篇文章主要是对生产环境中(Java7)常用的两种垃圾收集器(ParNew:年轻代,CMS:老年代)从日志信息上进行分析,做一下总结,这样当我们在排查相应的问题时,看到 GC 的日志信息,不会再那么陌生,能清楚地知道这些日志是什么意思,GC 线程当前处在哪个阶段,正在做什么事...

2019-03-27 12:58:44 145

原创 常用的设计模式汇总

单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧public class Singleton {pri...

2019-03-27 12:58:40 170

原创 MySql 三大知识点——索引、锁、事务

1. 索引索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。索引的优点:1. 天生排序。2. 快速查找。索引的缺点:1. 占用空间。2. 降低更新表的速度。注意点:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。索引从实现上说,分成 2 种:聚集索引和辅助索引(也叫二级索引或者非聚集索引)从功能上说,分为 6 种:普通索引,唯一索引,主键索引,复合...

2019-03-27 12:58:35 197

转载 JVM内存的N个问题

JVM的内存区域是怎么划分的?JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础。那么JVM内存区域是怎么划分的呢?首先是程序计数器(Program Counter Register),在JVM规范中,每个线程都有自己的程序计数器。这是一块比较小的内存空间,存储当前线程正在...

2019-03-27 12:58:31 167

原创 Spring Boot核心知识清单

在过去两三年的 Spring 生态圈,最让人兴奋的莫过于 Spring Boot 框架。或许从命名上就能看出这个框架的设计初衷:快速的启动 Spring 应用。因而 Spring Boot 应用本质上就是一个基于 Spring 框架的应用,它是 Spring 对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于 Spring 生态圈的应用。那 Spring Boot 有...

2019-03-27 12:58:24 225

转载 Java 12的新特性

自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日,也就是北京时间 20 号 Java 12 正式发布了!# JDK 12 GA 发布Java 12 带来了一系列新特性。下边分别来看看。1、Shenandoah:低暂停时间的 GC(实验性功能)新增了一个名为 Shenan...

2019-03-24 17:29:41 875

转载 Static 关键字的 5 种用法

说到static,静态变量和静态方法大家随口就来,因为他们在实际开发中应用很广泛,但他们真正在使用的时候会存在很多问题,而且它的使用不只那两种:1.静态变量。2.静态方法。3.静态代码块。4.静态内部类。5.静态导入。接下来我们看一下这些用法。1.静态变量静态变量属于类,内存中只有一个实例,当类被加载,就会为该静态变量分配内存空间,跟 class 本身在一起存放在方...

2019-03-24 17:27:51 427

原创 Java集合类,一张图说清楚

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*,Java集合主要可以划分为4个部分: List列表 Set集合 Map映射 工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections) Java集合工具包框架图(如下):...

2019-03-24 17:24:37 289

转载 深入浅出Java中的clone克隆方法

Java中对象的创建clone 顾名思义就是 复制 , 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。我们回顾一下:在java语言中,有几种方式可以创建对象呢? 使用new操作符创建一个对象 使用clone方法复制一个对象 那么这两种方式有什么相同和不同呢?new操作...

2019-03-24 17:23:26 199

原创 分析过注解Annotation的实现原理

什么是注解?对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation...

2019-03-24 16:52:41 358

原创 了解Java反射和应用

什么是反射反射就是指程序在运行的时候可以知道一个类的自身信息。 对于任何一个类:可以知道这个类的属性和方法。 对于任何一个对象:可以调用这个对象的任何一个方法和属性。 反射就是把java类中的各种成分映射成一个个的Java对象。例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行 解剖,把个个 组成部分映射成一个个对象。(其实:一个类中这...

2019-03-24 16:52:04 200

转载 AJAX请求真的不安全么?

作者:撒网要见鱼cnblogs.com/dailc/p/8191150.html开篇三问 AJAX请求真的不安全么? AJAX请求哪里不安全? 怎么样让AJAX请求更安全? 前言本文包含的内容较多,包括AJAX,CORS,XSS,CSRF等内容,要完整的看完并理解需要付出一定的时间。另外,见解有限,如有描述不当之处,请帮忙及时指出。正文开始...

2019-03-24 16:48:12 277

原创 Java不可重入锁和可重入锁理解

最近正在阅读Java ReentrantLock源码,始终对可重入和不可重入概念理解不透彻,进行学习后记录在这里。基础知识Java多线程的wait()方法和notify()方法这两个方法是成对出现和使用的,要执行这两个方法,有一个前提就是,当前线程必须获其对象的monitor(俗称“锁”),否则会抛出IllegalMonitorStateException异常,所以这两个方法必须...

2019-03-24 16:44:55 283

原创 面试题:用程序实现两个线程交替打印 0~100 的奇偶数。

面试场景面试官:Java多线程了解吗?你给我写一下,起两个线程交替打印0~100的奇偶数。小黄:啊?面试官:就是有两个线程,一个线程打印奇数另一个打印偶数,它们交替输出,类似这样。偶线程:0奇线程:1偶线程:2……奇线程:99偶线程:100小黄:啊?面试官:……嗯。好的。回去等通知吧。解说遇到这种突如其来的面试题,有...

2019-03-24 16:43:11 2482

原创 HashMap在Java1.7与1.8中的区别

基于JDK1.7.0_80与JDK1.8.0_66做的分析JDK1.7中使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同(hash collision),那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表。在hashcode特别差的情况下,比...

2019-03-24 16:42:08 207

原创 Java 泛型详解-最详细的

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参...

2019-03-15 20:31:25 368

转载 为什么不推荐使用 select * ?是性能问题吗 ?

作者孤独烟,中国平安研发工程师,目前负责云平台架构设计以及需求研发工作。毕业后一直从事Java开发工作,在Web开发、架构设计上有多年的实战经验。在MySQL性能优化、JVM调优、分布式领域有着丰富的经验。引言大家在开发中,还有很多童鞋在写查询语句的时候,习惯写下面这种不规范sqlselect * from table而不写成下面的这种规范方式select col1,...

2019-03-15 20:28:47 11283 33

转载 高效地玩转多级缓存

TMC,即“透明多级缓存(Transparent Multilevel Cache)”,是有赞 PaaS 团队给公司内应用提供的整体缓存解决方案。TMC 在通用“分布式缓存解决方案(如 CodisProxy + Redis,如有赞自研分布式缓存系统 zanKV)”基础上,增加了以下功能: 应用层热点探测 应用层本地缓存 应用层缓存命中统计 以帮助应用层解决缓存使用...

2019-03-15 20:22:51 698

原创 SocketIO:服务端推送

前言在介绍SocketIO之前,先说下服务端推送是怎么一回事。所谓服务端推送,就是服务端将数据或者消息实时地推送到客户端上。最常见的场景就是即时通讯,除此之外,视频弹幕、图文直播等功能也用到了服务端推送这项技术。之所以使用服务端推送,是为了把服务端的数据及时、迅速地推送到客户端,当然,如果能够尽可能地降低服务端的性能损耗,那就再好不过了。要想及时地获取服务端数据,最简单的实现方案莫过于...

2019-03-15 20:16:30 2096 1

原创 一次完整的HTTP请求与响应涉及知识

第一HTTP请求和相应步骤图片来自:理解Http请求与响应http://android.jobbole.com/85218/以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。第二TCP/IP协议TCP/IP协议模型(Transmission Control Protocol/Interne...

2019-03-15 20:10:56 804

转载 Python面试题陷阱

问题1:请问如何修改以下Python代码,使得下面的代码调用类A的show方法?答:这道题的考点是类继承,只要通过__class__ 方法指定类对象就可以了。补充的代码如下:问题2:请问如何修改以下Python代码,使得代码能够运行?答:此题考察得是方法对象,为了能让对象实例能被直接调用,需要实现 __call__ 方法,补充代码如下:问题3:下面这段代码的输出是什...

2019-03-15 19:50:02 227

原创 Mybatis 的 foreach 为什么会出现性能问题

背景最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录。该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一条查询 SQL 是自己写,其他两条是根据别人提供的接口进行查询。刚开始的时候,没有多想,直接使用in进行查询,使用Mybatis的foreach语句;项目中使用的是jsonrpc来请求数据,...

2019-03-15 19:44:26 1038 1

转载 优雅的设计Java异常

一:导语异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。由于本文只作一些经验之谈,不涉及到基础知识部分,如果读者对异常的概念还很模糊,请先查看基础知识。二:如何选择异常类型2.1异常的类别正如我们所知道的,java中的异常的超类是java.lang.T...

2019-03-15 19:42:52 371

原创 Java程序员的10种错误

这个列表总结了10个Java开发人员最常犯的错误,是我基于大量的github上的开源项目,Stack overflow上的问题,还有一些流行的google搜索的分析,没有明显示的评估证明它们是前10,但它们绝对是很常见的。1.Array转ArrayList当需要把Array转成ArrayList的时候,开发人员经常这样做:List<String> list = Array...

2019-03-15 19:42:37 185

原创 MySQL 查找删除重复行

如何查找重复行第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本:createtabletest(idintnotnullprimarykey,daydatenotnull); insertintotest(id,day)...

2019-03-08 13:45:43 157

winSCPPortable交互

十分好用的文件上传下载工具,在与自己的服务器交互的时候可以用这个软件进行文件互传,不管时win下的还是Linux下的都十分方便

2018-07-03

pdf阅读器_福昕

东西好用,体积小巧,使用方便,插座简单,打开快速.........................................................

2018-07-03

FSCapture.rar

可以截图录屏取色,像素尺,体积小巧功能强大携带方便........

2018-07-03

空空如也

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

TA关注的人

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