Java
在札幌度假的小犀牛
这个作者很懒,什么都没留下…
展开
-
SPI是否破坏了双亲委派模型
在之前答辩时,评委问了一个问题:SPI是否破坏了JVM中的双亲委派模型。本来自己以为对SPI有所了解,不料还是有很多需要学习的时候。今天就来探索一下类加载破坏双亲委派的问题,并以数据库驱动Driver为例子进行介绍。双亲委派模型是什么首先我们先来回顾一下双亲委派模型是什么,如果一个类加载器收到了加载某个类的请求,则该类加载器并不会去加载该类,而是把这个请求委派给父类加载器,每一个层次的类加载器...转载 2019-12-30 17:34:31 · 1322 阅读 · 0 评论 -
Java中的SPI基础
什么是SPI SPI全称为Service Provider Interface,它是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制。比如,当一个接口想要运行时动态的给它添加实现,只需要添加一个实现。经常遇到的就是java.sql.Driver接口,不同的厂商针对同一接口进行不同的实现,而Java的SPI机制可以为某个接口寻找服务实现。Java SPI 实际上是“基于接口的编程...原创 2019-11-01 10:39:45 · 118 阅读 · 0 评论 -
ArrayList 内部用什么实现的?
在小伙伴的笔试和面试过程中很多时候都会遇到关于ArrayList的问题,回答这样的问题,不要只回答个皮毛,可以再介绍一下 ArrayList 内部是如何实现数组的增加和删除的,因为数组在创建的时候长度是固定的,那么就有个问题我们往 ArrayList 中不断的添加对象,它是如何管理这些数组呢? ArrayList 内部是用 Object[]实现的。接下来我们分别分析 ArrayList 的构...原创 2018-07-08 15:38:29 · 2538 阅读 · 1 评论 -
数组和链表分别比较适合用于什么场景
1 数组和链表简介 在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。 例如,对于数据集 S{1,2,3,4,5,6},要求 S 中元素的和,首先要把数据存储到内存中,然后再将内存中的 数据相加。当内存空间中有足够大的连续空间时,可以把数据连续的存放在内存中...原创 2018-07-09 00:45:38 · 17961 阅读 · 1 评论 -
华为研发工程师编程题分享
最近华为2019届的应届毕业生招聘工作也如火如荼的开始了,既然众多小伙伴们都想要试一试,那么笔试这一关肯定是要过的了,那么本次我们就来简单分享一下华为研发工程师的三道编程题。需要提前说明的一个小问题是:在进行Scanner输入时,需要使用while(scanner.hasNext()){}来判断是否后续还有输入,否则在系统中无法通过测试。[编程题] 汽水瓶时间限制:1秒空间限制:32768K有这样...原创 2018-07-03 18:32:16 · 545 阅读 · 2 评论 -
浅析ThreadLocal源码
在Java编程学习过程中,一定会学习如何保证线程安全,提到线程安全,也就不得不提到ThreadLocal了。 ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问, 通常是类中字段修饰为 private static ,是对该字段初始值的一个拷贝,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。 当使用ThreadLocal维护...原创 2018-06-28 16:25:36 · 195 阅读 · 6 评论 -
SpringCloud入门
SpringCloud微服务概述什么是微服务目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。与微服务相对的叫巨石微服务与微服务架构微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合、相互协调,每个服务运行于...转载 2018-07-18 11:04:20 · 235 阅读 · 0 评论 -
springCloud--spring cloud zuul的Filter详解
本文转载自:https://blog.csdn.net/u014320421/article/details/79616181在前面我们使用zuul搭建了网关http://blog.csdn.net/liuchuanhong1/article/details/59056278关于网关的作用,这里就不再次赘述了,我们今天的重点是zuul的Filter。通过Filter,我们可以实现安全控制,...转载 2018-07-19 15:26:55 · 214 阅读 · 0 评论 -
2019年CVTE秋招提前批Web后台开发编程题
1、CVTE最近组织了一场趣味知识竞赛,由于场地大小,参赛者被分到两个场地分别进行比赛,活动结束后,组织者小明却犯愁了,两个场地参赛者是分开进行排名的,现在需要把这两组有序的分数排名合并成一个总的排名表,于是小明求助于WEB的同时小张编写一个排名算法实现。假如你是小张,你会如何设计这个算法。样例:两组的分数排名分别为:[99, 92, 87, 80] [98, 90, 82]汇总得到的...原创 2018-07-31 19:11:52 · 9256 阅读 · 0 评论 -
深入理解JVM & G1 GC(一)-------- Java相关术语
JVM 是Java语言可以跨平台、保持高发展的根本,没有JVM,Java语言将失去运行环境。针对Java程序的性能优化一定不可能避免针对JVM 的调优,随着JVM 的不断发展,我们的应对措施也在不断地跟随、变化,内存的使用逐渐变得越来越复杂。所有高级语言都需要垃圾回收机制的保护,所以GC就是这么重要。 1、SerialGC是第一款...原创 2019-07-18 17:41:37 · 241 阅读 · 0 评论 -
Java中的随机数
在Java中,我们不免需要生成随机数,而且可能需要生成在某个范围内的随机数。今天在公司就有一个需求是:在一个List<Integer>的list中,随机选取5%的随机数出来。和我的导师商讨之后,确定了一种方案,希望和大家分享。如果大家有更好的解决方案,请给小编评论哦。在Java中,大家可以很容易想到的实现随机数的方法可以采用Random()方法或Math.Random()方法。...原创 2019-07-24 16:42:19 · 252 阅读 · 1 评论 -
面试题,看过来了呀。
又是一年七月份,想必很多的秋招的内推已经开始了,小编这里分享几道面试中常见的面试题,希望可以帮助到孩子们(虽然小编也很年轻,还是个孩子)。1、在浏览器中输入www.baidu.com,点击回车后经过哪些流程处理? 首先浏览器会进行dns的解析,将www.baidu.com转换为对应的ip地址。之后通过这个ip找到从客户端到服务器端的路径,客户端浏览器发起一个h...原创 2019-07-21 00:09:56 · 277 阅读 · 1 评论 -
dubbo-common模块
dubbo-common提供了dubbo中的一系列基础公共方法1、beanUtil包JavaBeanAccessor:Java类的访问器,是一个枚举类,定义了 字段访问器,方法访问器和 all(method prefer to field : 方法优于字段)。public enum JavaBeanAccessor { /** * Field accessor. ...原创 2019-09-30 10:38:03 · 804 阅读 · 0 评论 -
Statement和PreparedStatement的区别,SQL注入
问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。具体步骤: 1.首先导入java.sql.*;这个包。 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn。 ...转载 2018-07-01 15:22:02 · 1480 阅读 · 0 评论 -
Spring技术内幕 :IoC容器的实现(三)—— IoC容器的初始化过程(一)
在IoC容器实现系列的上一篇中,我们简单了解了IoC容器的两大系列:BeanFactory和ApplicationContext系列。了解了它们的设计思想与应用场景。在本篇博文中,我们将继续探索IoC容器的初始化过程。在上一篇中,我们知道IoC的初始化过程是由refresh()方法启动的,启动过程包括BeanDefinition的Resource定位、载入和注册三个过程。Spring将三个过程分开...原创 2018-06-10 21:14:56 · 162 阅读 · 0 评论 -
六种常见排序算法的java版(冒泡、快排、插入、归并、选择、希尔)
几种排序算法的性能比较:最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)插入排序O(n2)O(n2)稳定O(1)归并排序O(nlog₂n)稳定O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n2)O(n*log2n)不一定O(n)堆排序O(n*log2n)O(n*log2n)不稳定...转载 2018-05-08 00:31:36 · 135 阅读 · 0 评论 -
ConcurrentHashMap原理分析(1.7和1.8)
相信大家都已经了解了HashMap是非线程安全的,在JDK 1.7之前,HashMap在涉及到多线程并发的情况,进行put操作时,可能会成环,引起死循环,进而导致CPU的利用率接近100%。虽然可以使用HashTable或者Collections.synchronizedMap(hashMap)使用线程安全的结合类,但它们二者在处理时都使用了锁,当一个元素在进行读写操作时,其余线程必须阻塞等待,那...原创 2018-06-03 20:37:56 · 3153 阅读 · 2 评论 -
消息中间件企业级应用
本文转载与Java团长微信公众号,原文链接为:https://mp.weixin.qq.com/s/vq7inOyby23dI0DYav51GQ 众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。它使用简单,却解决了不少难题,比如异步处理,系统藕合,流量削锋,分布式事务管理等。实现了一个高性能,高可用,高扩展的系统。本章通过介绍消息中间件的应用场景,消息中间件的传输模式 两个面来对消...转载 2018-06-03 21:05:52 · 215 阅读 · 0 评论 -
Fork/Join框架简介
本文将会介绍Fork/Join框架的基本原理、设计思想、应用与实现等。1 什么是Fork/Join框架 Fork/Join框架是Java 7提供的一种用于并行执行任务的框架,把大任务分解为若干小任务,最终通过合并每个小任务的结果得到大任务结果的框架。 Fork就是把一个大任务分解为若干个自认为并行的执行,Join就是最终合并这些子任务的执行结果,最后得到这个大任务的结果。eg:计算1+2+...原创 2018-06-04 19:00:49 · 199 阅读 · 0 评论 -
Spring技术内幕 :IoC容器的实现(一)—— Spring IoC容器概述
本篇文章主要简单回顾一下IOC容器的概念与其应用场景,主要参考了《Spring 技术内幕——深入解析Spring架构与设计原理》,作为学习过程的一个记录。1 IoC容器和依赖反转模式 首先简单回顾一下依赖反转的相关概念。如果合作对象的引用或依赖关系的管理由具体的对象来完成,那么会导致代码的高度耦合和可测试性的降低,对于复杂的面向对象系统的设计时极为不利的。在面向对象系统中,对象的依赖关系常常...原创 2018-06-05 14:15:38 · 278 阅读 · 0 评论 -
JVM知识汇总
一、JVM 基础知识1)Java 是如何实现跨平台的?注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装...转载 2018-05-29 19:21:48 · 538 阅读 · 0 评论 -
Spring技术内幕 :IoC容器的实现(二)—— IoC容器系列的设计与实现:BeanFactory和ApplicationContext
在上一篇Spring Framework的核心:IoC容器的实现(一)—— Spring IoC的概述中,我们简单回顾了一下Spring IoC容器中依赖反转的概念以及Spring IoC的应用场景,本文将开始简单了解一下具体容器的继承关系及应用场景。在Spring IoC容器的设计中,可以看到主要的两个容器系列,一个是实现BeanFactory接口的简单接口系列,这个系列的容器只实现了最基本的功...原创 2018-06-06 16:47:51 · 195 阅读 · 0 评论 -
Java并发编程学习——线程池
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 回答当然是肯定的,那就是使用线程池统一管理线程。今天,我们就一起来了解一下Java中的线程池。使用线程池的好处降低...原创 2018-05-31 12:45:48 · 284 阅读 · 0 评论 -
HashMap的clone方法
在网上看有关HashMap的由关文章的时候,别人都说HashMap的clone方法是浅拷贝,但在看了源码后有所疑问,为什么HashMap的方法是浅拷贝呢?下面是对HashMap的clone方法的一个验证。 浅拷贝:对一个对象进行clone生成新的对象,新的对象要开辟一块新的内存来存储,新对象中的基本类型属性和String类型属性都会开辟新的空间存储,但是如果是引用类型的属性,那这个引...转载 2018-05-31 13:29:58 · 4504 阅读 · 0 评论 -
HashMap源码分析
作为Collection集合类中的一个重要成员,HashMap无论在应用、笔试还是面试中都占了很大的比例,纵观网上的源码分析,很多都基于了JDK 1.8以前的版本进行了分析,但JDK 1.8中的HashMap对以前做了较大的优化,其中最重要的一个优化就是经过散列发生冲突后不再唯一按照链表进行连接,也可以转化为红黑树进行存储。总之,想要加快其存取速度,提升性能。下面一张图简单看一下是如何转化为红黑树...原创 2018-05-31 21:49:59 · 203 阅读 · 0 评论 -
Java并发编程学习——Java并发机制的底层实现原理(volatile、synchronized、原子操作)
前言 Java代码在经过编译后变为Java字节码,通过JVM执行字节码,最终转化为汇编指令在CPU上执行。需要我们了解的是:Java中所使用的并发机制依赖于JVM的实现和CPU的指令。本次我们就来跟随方腾飞老师的脚步一起简单了解一下Java并发机制的底层实现原理。 1、volatile的应用 在多线程并发编程中synchronized和volatile都有重要作用。volatile可以理解为轻...原创 2018-06-02 01:34:25 · 546 阅读 · 0 评论 -
Java并发编程学习——CountDownLatch、CyclicBarrier和Semaphore
学习并发编程,自然要学习JDK提供的并发工具类,了解他们后,我们就可以更好的去控制程序的并发,为我们的开发也是有了很大帮助呢,本文主要参考了方腾飞老师的《Java并发编程的艺术》。 在JDK的并发包中已经提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类中提供了一种并发流程控制的手段,Exchanger工具类提供了在线程间交换数...原创 2018-06-02 14:39:09 · 782 阅读 · 0 评论 -
浅谈Java垃圾回收机制——GC
Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free。GC需要完成的三件事情:哪些内存需要回收?什么时候回收?如何回收? 垃圾回收机制关注的内存是动态的。Java堆和方法去不同,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,只有在程序处于运行期间时,才能知道会创建哪些对象。对象已经死了吗?1、引用计数算法:给对...原创 2018-03-18 12:43:26 · 267 阅读 · 0 评论