- 博客(38)
- 资源 (14)
- 收藏
- 关注
原创 面试刷题24:介绍一枚 JAVA妹妹?
java提供的自动垃圾收集机制大大提高了程序员的开发效率。但是自动垃圾收集不是万能的,明确jvm的内存结构,工作机制是设计高扩展应用的基础。也是诊断jvm运行时问题的必备技能。我是李福春,我在准备面试,今天的题目是:jvm的内存结构是怎样的?哪些区域容易发生OOM?答:分3部分回答,具体如上图所示:1,线程私有的:分为虚拟机栈,本地方法栈,程序计数器;2,线程共享的:分为堆,方法区...
2020-03-31 16:16:38 722
原创 面试刷题23:类加载过程和双亲委派机制?
jvm赋能java跨平台的能力,而类加载机制是深入理解java的必要条件。我是李福春,我在准备面试,今天的问题是:java的类加载机制是怎样的?什么是双亲委派原则?答:java的类加载过程分为 加载,链接,初始化。加载:即从数据源(jar,class,网络)加载class文件到jvm,映射为class对象,如果不是classFile结构,抛出ClassFormatError;链接:把第...
2020-03-31 14:40:55 805
原创 面试刷题22:CAS和AQS是什么?
java并发包提供的同步工具和线程池,底层是基于什么原理来设计和实现的呢?这个非常重要。我是李福春,我在准备面试,今天的题目是:CAS和AQS是什么?答:CAS是一系列的操作集合,获取当前值进行计算,如果当前值没有改变,表示线程没有被占用,直接更新成功,否则,进行重试或者返回成功或者失败。 他是java并发工具包中lock-free的基础吗,依赖底层的cpu提供的特定指令实现。底层依...
2020-03-31 10:57:31 1313
原创 面试刷题21:java并发工具中的队列有哪些?
![image.png](https://img-blog.csdnimg.cn/20200330183753183.png)java的线程池的工作队列用到了并发队列。队列一般用在生产者消费者的场景中,处理需要排队的需求。你好,我是李福春,今天的问题是:ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?答:都是java提供的并发安全队列...
2020-03-30 18:37:54 787
原创 面试刷题20:并发包中的线程池有哪些?
java提供的线程池可以简化线程管理,提高线程资源的利用率。大家好,我是李福春,今天的题目是:Java提供了哪些线程池?如何设置合适的线程池大小?答:java.util.concurrent包中提供了5种线程池,从简单到复杂列举如下:一,newSingleThreadExecutor() ,单线程池,任何时候工作线程都是1个,队列是无界队列保证任务的顺序执行;二,newFixedTh...
2020-03-30 16:45:25 429
原创 面试刷题19:并发工具包有哪些工具?
java.util.concurrent包提供了大量的并发工具。大家好,我是李福春,今天的题目是:java提供的并发工具有哪些?答:java.util.concurrent工具包中提供的工具分4大类。一, 同步工具,CountDownLatch, CyclicBarrier , Semaphore ;二, 并发安全容器, ConcurrentHashMap,ConcurrentSkip...
2020-03-30 15:24:16 909
原创 面试刷题18:死锁是怎么产生的?如何定位修复?
死锁是并发编程的难点问题。大家好,我是李福春,我在准备面试,今天的问题是:死锁是如何产生的?如何定位?如何修复和避免?答:死锁是一种特定的程序状态,一般是多线程场景下两个以上的线程互相持有对方需要的锁而处于的永久阻塞状态。定位方法:jstack分析线程的栈信息可以定位出来; 或者使用ThreadMXBean相关的api在程序中打印出相关的死锁信息;修复和规避:死锁问题一般无法在线...
2020-03-30 12:44:20 373
原创 面试刷题17:线程两次start()会发生什么?
线程是并发编程的基础元素,是系统调度的最小单元,现代的jvm直接对应了内核线程。为了降低并发编程的门槛,go语言引入了协程。你好,我是李福春,我在准备面试,今天的题目是?一个线程两次调用start()方法会发生什么?答:线程两次调用start()方法会抛出IllegalThreadStateException,这是一种运行时异常。接下来针对面试官可能深挖的内容做一些扩展。线程...
2020-03-30 11:06:55 910
原创 面试刷题16:synchronized和ReentrantLock的区别?
java并发编程是程序员基本技能。我是李福春,我在准备面试,今天的题目是:synchronized和ReentrantLock的区别?这两货都是java提供的同步机制,提供了互斥语义和可见性,当一个线程获得资源之后,其它竞争资源的线程必须等待或者堵塞。区别如下:线程安全线程安全说的是多线程场景下,共享可修改状的数据的正确性。从语义来看,保证线程安全的方法有2:...
2020-03-27 19:10:48 1160
原创 面试刷题15:synchronized底层是如何实现的?
所有的同步场景都是基于锁。锁在并发编程中发挥重要作用。我是李福春,我在准备面试,今天的题目是:synchronized底层是如何实现的?答: synchronized是在底层的jvm中实现的,即c++写的,synchronized的实现是基于一对monitorenter, monitorexit指令实现的,monitor对象是同步的基本实现单元。在java6中,monitor依靠操作...
2020-03-27 16:49:38 1375
原创 mac安装的软件和idea的插件推荐
工欲善其事必先利其器,今天简单分享一下我的武器库。主要包括两个方面,idea的插件;还有mac的常用软件推荐。希望可以在编码之余,提高自己的工作效率。idea插件翻看了宇宙条上各种推荐的插件,实际我用下来感觉最好的插件如下。按照优先级列举一下,好处谁用谁知道:1, lombok, 少写了不少繁琐的代码;2, power mode II , 编码高效了不少;3,alibaba...
2020-03-27 11:49:21 2583
原创 面试刷题14:介绍一下你工作中用到的设计模式?
那些被时间沉淀下来的最贱时间,就是设计模式,它有利于提高沟通和设计的效率和质量。我是李福春,我在准备面试,今天的问题是:工作中你用到了哪些设计模式?**分析:**这个问题比较open, 可以结合以往项目经历中用到的设计模式,挑选2个左右的例子出来讲解,讲讲为什么要使用设计模式,带来了哪些优点和不便。如果实在找不出来,可以结合jdk和spring,每个挑一两个地方来讲2种左右的设计...
2020-03-26 14:24:48 2437 1
原创 面试刷题13:接口和抽象类有啥区别?
掌握面向对象的原则可以提高开发,沟通的效率和质量。 我是李福春,我在准备面试,今天的问题是: 接口和抽象类有什么区别?接口和抽象类是面向对象语言的重要设计元素。区别如下:下面扩展一下,面试官可能延伸的问题。面向对象的特性封装: 一切皆对象,对象具备成员和方法,封装了内部细节,使得具备边界,提高程序的安全性和简洁性;继承:代码复用的手段,...
2020-03-26 12:30:23 389
原创 面试刷题12:zero copy是怎么回事?
文件copy是java的io部分不可忽视的内容。我是李福春,我在准备面试,今天的问题是:zero-copy是怎么回事?操作系统的空间划分为内核态空间, 用户态空间;内核态空间相对操作系统具备更高的权限和优先级;用户态空间即普通用户所处空间。zero-copy指的使用类似java.nio的transforTo方法进行文件copy,文件的copy直接从磁盘到内核态空间,不经过用户态...
2020-03-26 10:53:10 717
原创 面试刷题11:java系统中io的分类有哪些?
随着分布式技术的普及和海量数据的增长,io的能力越来越重要,java提供的io模块提供了足够的扩展性来适应。我是李福春,我在准备面试,今天的问题是:java中的io有哪几种?java中的io分3类:1,BIO ,即同步阻塞IO,对应java.io包提供的工具;基于流模型,虽然直观,代码实现也简单,但是扩展性差,消耗资源大,容易成为系统的瓶颈;2,NIO,同步非阻塞io,对应java...
2020-03-25 23:31:41 927
原创 面试刷题10:ConcurrentHashMap如何保证线程安全?
集合框架中的HashTable,Stack,以及同步包装集合在高并发场景下都非常低效,java提供了并发包应对高并发场景。我是李福春,我在准备面试,今天的问题是?java提供了哪些并发的容器?ConcurrentHashMap如何保证线程安全?java体系中的并发容器java体系中有如下同步容器:1, HashTable,Stack 同步容器,内部使用sychronize...
2020-03-25 17:31:47 2164
原创 面试刷题9:HashTable HashMap TreeMap的区别?
map是广义集合的一部分。我是李福春,我在准备面试,今天我们来回答:HashTable,HashMap,TreeMap的区别?共同点:都是Map的子类或者间接子类,以键值对的形式存储和操作数据。区别如下表:项目线程安全是否支持null键值使用场景HashTable是不支持java早期hash实现,同步开销大不推荐被使用HashMap否支...
2020-03-25 16:11:44 1122
原创 面试刷题8:Vector ArrayList LinkedList区别?
高效的管理和操作数据(数据结构)是非常重要的,java提供了对应的集合框架。我是李福春,我在准备面试,今天的问题是:Vector,ArrayList,LinkedList有什么区别?这3个货都是List的直接子类或者间接子类,实现的是顺序集合,都提供了add,delete,index,遍历等操作。区别是:Vector是线程安全的,性能略差,自动扩容按照1倍扩容,适合按照顺序检索的场...
2020-03-25 14:37:17 470
原创 面试刷题7:int和Integer有什么区别?
原始数据类型是java系统的重要组成元素。java号称一切都是对象,原始数据类型除外。我是李福春,我在准备面试,今天我们来回答一个问题:int和Integer有什么区别?int是原始数据类型,并非对象;Integer是int的包装类型,是对象。区别是在自动装箱和自动拆箱上。下面分开详细来讲。intjava的8个原始数据类型之一,(bool,char,byte,int ,short,l...
2020-03-25 11:22:23 930
原创 面试刷题6:反射和动态代理是什么?
反射和动态代理是什么?反射是java提供的一种自省能力,可以在运行时创建类的实例,访问成员变量,方法。动态代理是程序在运行时构建代理对象动态动用方法。反射和动态代理是第三方框架进行封装的基础。反射程序提供的一种自省能力,可以在运行时操作类和对象。提供的核心类如下:Class: 获取类的定义Field : 获取申明的属性Method: 获取申明的方法Constructor : ...
2020-03-24 19:08:24 753
原创 面试刷题5:String StringBuffer StringBuilder区别?
字符串是应用中最广泛的存在,不容忽视。我是李福春,我在准备面试,今天我们一起来回答问题。String,StringBuffer,StringBuilder的区别是什么?非常常见的面试题,一起来发散一下。StringJava中最重要的类,提供了各种构造和管理字符串的操作;它是Immutable类,即不可变,原生的保证了线程安全;她的构造和各种操作都会产生一个新的String对象;所以要考...
2020-03-24 17:00:51 820
原创 面试刷题4:强 弱 软 幻象 引用的区别?
java中的类型除了原生类型,剩下的就是引用类型。研究引用类型对垃圾回收机制,对象的生命周期很有帮助。我是李福春,我在准备面试,今天我们来解决一个常见的面试题。强弱软幻象引用的区别是什么?这4种引用的区别在可达性状态的区别。下面展开来回答。分类说明强引用:当对象刚刚new出来的时候,这种引用叫强引用;强可达性;当引用超出作用域,或者引用被强制设为null,可以被垃圾回收;软引用:可...
2020-03-24 16:06:11 731
原创 面试刷题3:final finally finalize区别?
我是李福春,我在准备面试。今天我们来回答下面的面试常见问题。final finally finalize区别?这三个货只是单词的写法类似,实际的使用场景相差很大。下面一一展开分析:finalfinal修饰类,标识类不可被继承,一定程度保证了提供出去的类的平台安全性;final修饰方法,标识方法不能被重写;final修饰变量,标识变量不能被修改;在并发场景下可以带来性能提升,因为可以...
2020-03-24 15:07:57 868
原创 面试刷题2:Exception和Error的区别?
世界上不存在永远不出错的程序。可靠的程序必须处理好意外情况。java的异常处理机制降低了编写可靠程序的门槛。当系统运行变慢,排查发生最频繁的Excetion可以作为一种调优手段。那么: Exception和Error有什么区别?我是李福春,我在准备面试。通过本篇,你可以学到下图的知识点。Java异常的类层级在java体系中,Excetion和Error的关系如上,常见的子类也可见12;...
2020-03-24 14:00:17 822
原创 面试刷题1: 简要介绍java平台?java是解释执行的吗?
我是李福春,我为面试做准备。今天回答第一个问题。java平台简要介绍?java是解释执行的吗?java平台java平台基于jvm具备write once,run everywhere的跨平台能力;具备自动垃圾回收;具有无所不能的生态圈,比如spring,大数据,搜索,maven等;java语言是面向对象的,常见的特性有泛型,反射,lambda;jdkjre包括jvm,java类库,模...
2020-03-24 11:11:15 751
原创 中台之交付
中台如何交付呢?首先得立项,然后是建立组织,确定研发流程,然后是规划长期的运营机制和中台的治理和演进机制。我是李福春,今天我们来研究一下如何进行中台的交付。你可以学到如下图的知识点。立项项目要交付,前提是立项,立项的基础是输出设计。中台的设计前面已经详细梳理过了:即通过业务梳理识别出了中台的数,流程,功能,结合mvp原则确定了第一个迭代版本,并且规划了后续的迭代版本(前台接入和运营数...
2020-03-24 10:00:51 1074
原创 mysql之事务
我们为什么要使用数据库的事务呢?使用事务有什么缺点呢?使用原因:保持数据的匹配和一致性。缺点: 并发操作中过度使用事务影响性能,因为事务用到了锁技术。我是李福春,今天我们来复习一下事务的特性。你可以收获下图中的知识点。下面我们发散一下。事务特性原子性: 要么全部成功要么全部失败一致性: 保证事务的前后一致性隔离性:事物之间的执行不能互相干扰持久性: 事务终结的标志,内存的数据持久...
2020-03-24 08:48:11 719
原创 中台之中台的设计
承接上文通过discovery和define完成了第一轮企业级别的发散和收敛。即:站在企业的高度,基于企业愿景和内外部环境,通过战略分解和现状调研,应用企业架构的方法确定了最终的平台型企业架构,并确定了需要哪些中台,以及建设先后的问题。中台的设计阶段:进行第二轮的发散和收敛,站在一个中台产品的视角,看看如何进行设计。确定中台产品愿景电梯会议:回答一下问题:用户是谁?解决了什么...
2020-03-23 21:47:57 999
原创 0312 java接口测试三棱军刺rest-assured
背景java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢?rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。...
2020-03-19 13:55:36 835
原创 0318 guava并发工具
并发是一个难题,但是可以通过使用强力简单的抽象来显著的简化,为了简化问题,guava扩展了Future接口,即 ListenableFuture (可以监听的Future)。我强烈建议你在你的所有代码里使用ListenableFuture去替代Future,原因如下:很多的Futures 类的方法需要它。(Futures工具类使用)它比后来改造为ListenableFutrue更简单。(早...
2020-03-19 13:51:22 762
原创 0312 java接口测试三棱军刺rest-assured
背景java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢?rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。...
2020-03-13 00:08:35 170
原创 0309 软件基本原理1
程序开发技术学习方法论软件研发行业,新技术的出现日新月异,如何高效的学习,保持技术先进性?基于第一性原理:即 抓住事物的本质特征,按照事物本身的规律去推导,演绎事物在各种场景下的变化规律,东西技术在业务场景中的表现。物理学,几何学,马斯克等推崇第一性原理。软件研发学习方法:建立自己的技术思维体系,东西技术背后的核心原理。当新技术出现的时候,依据已有的第一性原理,去推动和验证新技术的使用。程序...
2020-03-09 23:05:55 144
原创 0308 软件系统的非功能需求
故事开始。小李是一个一线的java程序员,做软件开发多年,有一天,被邀请去参加一个大厂的面试,面试前他做了各种准备,有软件原理方面的,软件设计方面的,还有软件架构方面的知识。并不断总结提炼成了一张知识图谱。想着即使不成功,也是一次不错的技术交流,至少可以知道目前大厂需要的程序员具备的技能深度和广度,给自己定定位。下面是技术一面。小李:你好,我是李x,今年y岁,做一线开发z年,我来面试...
2020-03-06 09:40:53 457
原创 0308 软件系统的非功能需求
故事开始。小李是一个一线的java程序员,做软件开发多年,有一天,被邀请去参加一个大厂的面试,面试前他做了各种准备,有软件原理方面的,软件设计方面的,还有软件架构方面的知识。并不断总结提炼成了一张知识图谱。想着即使不成功,也是一次不错的技术交流,至少可以知道目前大厂需要的程序员具备的技能深度和广度,给自己定定位。下面是技术一面。小李:你好,我是李x,今年y岁,做一线开发z年,我来面试...
2020-03-05 23:26:57 2047
原创 0219 springmvc-拦截器和响应增强
拦截器拦截器分同步拦截器和异步拦截器;HandlerInterceptor方法和执行时机可以看DispathcerServlet的原来确定它的三个方法的执行时机;AsynHandlerInterceptor看注释,主要用来清理在并发环境加清理ThreadLocal的数据;ResponseBodyAdvice对返回值备注了@ResponseBody或者返回ResponseEn...
2020-03-03 09:26:26 1104
原创 0302 中台落地前概念和思考
从前有一个java工程师,梦想技术不断突破,设计理念不断创新,于是开始关注中台,对于中台一无所知的他,最快的方式找一个相关领域的专家,快速的累积起基础知识,形成完整的知识体系,然后结合工作中的实际问题,不断的应用进去,一下是经过一段时间的学习形成的中台的理论知识体系,输出来,先尝试使用自述的方式讲清楚,形式采用问答的方式。java工程师是我,简称小李,中台专家架构师,简称台长。希望对中台感兴趣的其...
2020-03-03 09:25:48 894
原创 0228 我的潘多拉
我的潘多拉从一个故事说起。从前,有个Java程序员非常喜欢写程序,喜欢研究源码,读英文文档。但是它在一家小公司里工作,公司的技术栈很陈旧。单个系统代码中含有很多的xml配置,配置各种中间件的入口适配器,而不同的业务系统中都是类似的配置。启动单个系统很慢。启动依赖web组件,无法快速部署。公共组件的依赖复杂,容易依赖冲突,版本陈旧。在springcloud流行的时代,无法快速集成新的优秀组件...
2020-03-03 09:25:05 813
原创 0302 中台落地前概念和思考
从前有一个java工程师,梦想技术不断突破,设计理念不断创新,于是开始关注中台,对于中台一无所知的他,最快的方式找一个相关领域的专家,快速的累积起基础知识,形成完整的知识体系,然后结合工作中的实际问题,不断的应用进去,一下是经过一段时间的学习形成的中台的理论知识体系,输出来,先尝试使用自述的方式讲清楚,形式采用问答的方式。java工程师是我,简称小李,中台专家架构师,简称台长。希望对中台感兴趣的其...
2020-03-02 23:44:07 229
数据库课程设计-旅馆管理系统
2010-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人