- 博客(66)
- 收藏
- 关注
原创 Spring Cloud 集成应用配置管理阿里云 ACM(Application Configuration Management)
ACM 服务ACM介绍1、应用配置管理 ACM(Application Configuration Management)(1)传统配置管理(2)Spring Cloud Bus配置自动更新(3)ACM配置管理2、ACM介绍1、应用配置管理 ACM(Application Configuration Management)前身为淘宝内部配置中心 Diamond,现已作为 Nacos 的配置中...
2019-08-15 15:23:16
880
转载 Guava RateLimiter源码解析(转载)
前言转载自https://segmentfault.com/a/1190000012875897在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流·缓存 缓存的目的是提升系统访问速度和增大系统处理容量·降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开·限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保...
2018-12-18 17:12:56
215
原创 Spring IOC源码分析
Spring IOC源码分析1、建立一个上下文-------ApplicationContext 一般是这两种 //ClassPathXmlApplicationContext默认从classpath下查找xml文件,也就是打包了的项目路径 //FileSystemXmlApplicationContext在指定的文件系统路径下查找xml文件 A...
2018-12-12 10:52:01
255
原创 Http 面试相关
1、http与https的区别: http作为一个无状态的协议,明文传输,数据容易被窃取,而https就是在http基础之上,添加了一个SSL(安全套接字)协议+CA身份验证,使得传输变得安全。其实简而言之 https在http基础上加了一个ssl,并变得传输安全。 2、什么是无状态?我们是如何解决http无状态的?无状态的意思就是http对于事物处理没有记忆能力,你第二次...
2018-09-08 23:22:50
759
1
原创 sql注入,怎么解决
什么是sql注入: 就是通过输入某些参数,达到改变sql语句本身的含义,这种情况就称为sql注入,比如你输入密码时产生了一段sql语句:SELECT * FROM TABLE_NAME WHERE ID="输入值";用户在最后加了一个or 1=1;则执行的sql语句where条件永远为真。查询出来是啥就不说了。那么怎么解决sql注入呢?1、对输入字符进行校验过滤(正则或j...
2018-08-30 19:47:04
3200
转载 java:关于short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的简单数据类型转换问题的理解
脱离了开发环境的提示,发现自己对有些java的基础东西掌握的都不扎实,今天看到一个关于java数据类型转换部分的面试题。面试题的内容大概是这样:short s1=1;s1=s1+1;这两句代码有什么问题?short s1=1;s1+=1;这两句代码有什么问题?short s1=1,s2=1;short s3=s1+s2;这两句代码有什么问题?下面我就对这三个问题按照自己的理解以及参考做出解...
2018-08-27 16:27:18
255
转载 final、finally、finalize的区别
final、finally、finalize的区别1、final修饰符(关键字)。被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只...
2018-08-26 21:45:46
143
转载 XML解析——Java中XML的四种解析方式
1、DOM解析:树结构,一次性读取,容易引起内存溢出,适合对XML的随机访问(Document Object Model)2、SAX解析:采用事件驱动模式,顺序读取XML文件,而不是一次性读取,遇到文档或者标签,开头和结束会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件(Simple APIs for XML)3、JDOM解析:仅使用具体类,而不使用接口。API大量使用了...
2018-08-26 21:03:07
132
原创 异常的概念和Java异常体系结构
异常是程序运行过程中出现的错误。Java语言的异常处理框架, 是Java语言健壮性的一个重要体现。 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。 Java异常体系结构呈树状,其层次结构图如图 1...
2018-08-26 14:51:04
522
转载 Java锁的实现原理
https://www.cnblogs.com/duanxz/p/3559510.htmlhttps://blog.csdn.net/tingfeng96/article/details/52219649
2018-08-26 10:58:40
1581
转载 Java并发——原子变量和原子操作及ABA问题
(小编注:独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁:每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。) 很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。注意,这里有三个条件:简单,意味着程序员尽可能少的操作底层或者实现起来要比较容易;高效...
2018-08-25 17:38:28
871
转载 几种常用数据库 分页查询的sql语句和简单分析
sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNumber 页数 从客户端传来 totalRecouds 表中的总记录数 select count (*) from 表名 totalPages 总页数 totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize...
2018-08-25 16:15:25
7040
转载 JDK8中接口的新特性
前言昨天在牛客网做题,有一道题叫做在JDK8的环境下,接口能不能有具体的方法实现还是只能有抽象方法。当然原题是个选择题,问法也不是这样问的。如果是这样问的,大家肯定都会想着是不是JDK8有更改了,接口里不只是可以有抽象方法了,也可以有具体的实现了,是的,确实是这样。我们今天就来看看下JDK8中接口的新特性。JDK8中接口的新特性在JDK8环境中,接口中的方法不再是只能有抽象方法,他...
2018-08-25 16:10:36
600
原创 重写与重载的区别
重写:运行时的多态, 方法名,参数类型,顺序,返回值类型都必须相同 一般发生在继承类中, 可以增加方法的权限, public >protect >default> private 异常可以减少或删除,一定不能抛出新的或者更广的异常。 重载:编译时的多态, ...
2018-08-25 15:40:09
101
原创 索引失效的情况
1、对索引进行%在前的模糊查询2、使用or的时候,or前面索引有效,后面无效3、对索引进行 +-*/ 、不等于、not in 、not exits、函数等操作时 也会失效4、存在is null 或者is not null时5、数据库全局搜索比索引快的时候6、字符没有用单引号时...
2018-08-24 22:50:25
217
转载 ConcurrentHashMap原理分析(1.7与1.8)针对原文进行了一定的修改
前言:本人做了一定的修改以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,在JDK 1.7 中这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,1可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会...
2018-08-23 19:04:05
1712
1
转载 面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别
如果你去面试,面试官不问你这个问题,你来找我^_^下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方...
2018-08-23 16:15:06
148
原创 如何避免死锁?
如何避免死锁? Java多线程中的死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资...
2018-08-23 10:54:47
978
转载 Java基础:JVM垃圾回收算法
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成。本文介绍JVM进行垃圾回收的各种算法。1. 如何确定某个对象是垃圾1.1. 引用计数法在Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,则说明对象不太可能再被用到,那么这个对象就是...
2018-08-23 10:52:20
102
转载 JVM架构和GC垃圾回收机制详解
JVM架构图分析下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类、参数调优化)JVM被分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1. 类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。1.1 加载...
2018-08-23 10:48:06
109
转载 Java并发--Java线程面试题 Top 50
原文链接:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 在典型的Jav...
2018-08-23 10:32:06
147
转载 java线程(上)Thread和Runnable的区别
首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中...
2018-08-23 09:19:22
109
转载 Java中,&&与&,||与|的区别
在java的逻辑运算符中,有这么四类:&&(短路与),&,|,||(短路或)。&&和&都是表示与,区别是&&只要第一个条件不满足,后面条件就不再判断。而&要对所有的条件都进行判断。 ||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。 &&和&...
2018-08-22 23:18:23
230
原创 ThreadLocal类(转载自 http://www.cnblogs.com/dolphin0520/p/3920407.html)
一、ThreadLocal类基本理解:ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。二、在上面谈到了对ThreadLocal的一些理解,那我们下面来看一下具体ThreadLocal是如何实现的。 先了解一下ThreadLo...
2018-08-22 22:09:10
109
转载 线程的三种实现方式
Java中线程的创建常见有如三种基本形式1.继承Thread类,重写该类的run()方法。 1 class MyThread extends Thread { 2 3 private int i = 0; 4 5 @Override 6 public void run() { 7 for (i = 0; i < 100...
2018-08-22 14:34:14
231
原创 多线程与线程(没写完)
一、先讲讲线程(wait()和notify(),notifyAll()是Object类的方法,sleep()和yield()是Thread类的方法。)1、yield():暂停当前正在执行的线程对象(及放弃当前拥有的cup资源),并执行其他线程。只是不能由用户指定暂停多长时间,并且yield()方法只能让同优先级的线程有执行的机会。yield()方法不会释放锁!!! 2、sleep():...
2018-08-22 14:27:09
146
原创 进程和线程的区别
说白了,进程是资源分配的最小单位,线程是程序执行的最小单位。一个进程可以有多个线程。不同进程使用不同的内存空间。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。...
2018-08-21 09:24:13
100
原创 数据库的锁 事物隔离的四大特征、四个级别
一、数据库的锁(就讲讲主要的那几个,拿去面试用就够了)也就是 行锁,表锁,悲观锁,乐观锁。【首先一个很重要的问题 : 为什么要锁?】 就是为了防止并发操作的过程中,会发生多个事务对数据进行存取修改等操作,若不加以控制,就会出现脏读,不可重复读, 幻读,死锁等情况,为了解决这个问题就有了锁机制,简单来说就是在一条sql语句执行时,会加上一个锁,在这个语句没有执行完之前,其他事务不...
2018-08-20 15:26:29
3197
转载 JAVA 静态代理和动态代理详解
一、静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护一个代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法,并实现前拦截,后拦截等所需的业务功能。/** * 目标对象实现的接口 * @author jiyukai */public interface BussinessInterface { void execut...
2018-08-20 14:43:22
239
原创 mysql与oracle的区别
(1)最重要的那就是Oracle收费哈哈哈(2)在对事物的支持上,mysql只有InnoDB存储引擎支持事物,Oracle完全支持(3)对事务的提交,MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交(4)在id自增上,Oracle需要自己写sequence(5)MySQL以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他...
2018-08-20 10:43:55
126
转载 Spring动态代理用JDK还是用CGLIB?((1)当Bean实现接口时,Spring就会用JDK的动态代理 (2)当Bean没有实现接口时,Spring使用CGlib是实现)
总而言之,就是(1)当Bean实现接口时,Spring就会用JDK的动态代理 (2)当Bean没有实现接口时,Spring使用CGlib是实现 (3)可以强制使用CGlib(在spring配置中加入<aop:aspectj-autoproxy proxy-target-class="true"/>)CGlib比JDK快?(1)使用CGLib实现动态代理,CG...
2018-08-20 10:18:54
1641
5
转载 数据库索引的实现原理(面试问题:请说出数据库索引实现原理)
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引...
2018-08-19 17:58:05
358
原创 JAVA 反射(Invoke方法,调用传入参数的相应方法)
反射的作用1)运行时构造类对象;2)运行时调用对象方法。3)运行时判断对象所属的类;4)运行时判断任意一个类所具有的成员变量和方法;5)反射API可以获取程序在运行时刻的内部结构。6)使用反射的一个最大的弊端是性能比较差。相同的操作,用反射API所需的时间大概比直接的使用要慢一两个数量级。这个反射中还有两个方法有时候问到: @CallerSensitive ...
2018-08-18 17:49:22
8135
1
转载 MySQL常用的四种引擎的介绍
MySQL常用的四种引擎的介绍(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表支持3种不同的存储格式,分别是:静态表;动态表;压缩表静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多...
2018-08-18 15:55:57
194
转载 java 执行顺序
1、父类静态变量和静态代码块(先声明的先执行);2、子类静态变量和静态代码块(先声明的先执行);3、父类的变量和代码块(先声明的先执行);4、父类的构造函数;5、子类的变量和代码块(先声明的先执行);6、子类的构造函数。...
2018-08-18 15:40:28
116
原创 Java8 最重要的四种函数式接口及其作用
可以这么说,函数式接口中只能有一个抽象方法,可以有实现的静态方法;@FunctionalInterface这个只是一个编译级的注解,用来检测你编写的函数式接口是否有错的@FunctionalInterfaceinterface TestInterface { public final static String value ="111"; static ...
2018-08-18 11:10:23
9965
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人