-
java之模板方法设计模式
所属栏目:[Java] 日期:2020-12-15 热度:147
抽象类体现的就是一种模板模式的设计。抽象类作为多个子类的通用模板。子类在抽象类的基础上进行扩张和改造,但子类总体上会保留抽象类的行为方式。 解决的问题: 当功能内部一部分实现是确定的,一部分实现是不确定的,这时可以把不确定的部分暴露出去,让[详细]
-
java之工厂方法设计模式
所属栏目:[Java] 日期:2020-12-15 热度:142
工厂方法模式是设计模式中应用最广泛的模式。在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解[详细]
-
java之线程(线程的创建方式、java中的Thread类、线程的同步、线
所属栏目:[Java] 日期:2020-12-15 热度:84
CPU:10核 主频100MHz ? ? ? ? ? ? 1核 ?主频 ? ?3GHz 那么哪一个CPU比较好呢? CPU核不是越多越好吗?并不一定。主频用于衡量GPU处理速度的快慢,举个例子10头牛运送货物快还是1架飞机运算货物快?显然是1架飞机,因此1核3GHz的CPU较好,当然,在相同主频的[详细]
-
java之接口
所属栏目:[Java] 日期:2020-12-15 热度:98
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法,但是,Java不支持多继承,就有了接口, 就可以得到多重继承的效果。 接口是抽象方法和常量值的定义的结合; 从本质上讲, 接口是一种特殊的抽象类, 这种抽象类中只含有常量和方法的定义,而没[详细]
-
java之异常
所属栏目:[Java] 日期:2020-12-15 热度:89
(1)任何一种程序设计语言设计的程序在运行时都可能出现错误。 (2)捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生。 (3)对于这些错误,一般有两种解决方法: 遇到错误就终止程序运行; 由程序员在编写程序时,就考虑到可能出现的错误,[详细]
-
java之集合(Set、List、Map)
所属栏目:[Java] 日期:2020-12-15 热度:162
java集合类存放于java,uti包中,是一个用于存放对象的容器。 集合只能存放对象,比如存入的是int型数据1,那么它会自动转换成Integer包装类后再存入; 集合存放的是多个对象的引用,对象本身还是放在堆内存中; 集合可以存放不同类型、不限数量的数据类型;[详细]
-
java之java.io.File的相关方法
所属栏目:[Java] 日期:2020-12-15 热度:188
java.io.File的使用。 IO原理及流的分类。 文件流:FileInputStream、FileOutputStream、FileReader、FileWriter 缓存流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter 转换流:InputStreamReader、OuputStreamReader 标准输[详细]
-
在Java的反射中,Class.forName和ClassLoader的区别
所属栏目:[Java] 日期:2020-12-15 热度:161
前言 最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别。当时没有想出来后来自己研究了一下就写下来记录一下。 解释 在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循 双亲委派模型[详细]
-
有助于改善性能的Java代码技巧
所属栏目:[Java] 日期:2020-12-15 热度:128
前言 程序的性能受到代码质量的直接影响。这次主要介绍一些代码编写的小技巧和惯例。虽然看起来有些是微不足道的编程技巧,却可能为系统性能带来成倍的提升,因此还是值得关注的。 慎用异常 在Java开发中,经常使用try-catch进行错误捕获,但是try-catch语句[详细]
-
你说一下对Java中的volatile的理解吧
所属栏目:[Java] 日期:2020-12-15 热度:143
前言 volatile 相关的知识其实自己一直都是有掌握的,能大概讲出一些知识,例如:它可以保证 可见性 ; 禁止指令重排 。这两个特性张口就来,但要再往深了问,具体是如何实现这两个特性的,以及在什么场景下使用 volatile ,为什么不直接用 synchronized 这[详细]
-
一文看懂分布式事务
所属栏目:[Java] 日期:2020-12-15 热度:91
本地事务 事务Transaction由一组SQL组成,具有四个ACID特性 ACID Atomicity 原子性 构成事务的一组SQL,要么全部生效,要么全不生效,不会出现部分生效的情况 Consistency 一致性 数据库经过事务操作后从一种状态转变为另一个状态。可以说原子性是从行为上描[详细]
-
Java8的Stream API使用
所属栏目:[Java] 日期:2020-12-15 热度:82
前言 这次想介绍一下Java Stream的API使用,最近在做一个新的项目,然后终于可以从老项目的祖传代码坑里跳出来了。项目用公司自己的框架搭建完成后,我就想着把JDK版本也升级一下吧(之前的项目,最高就能用JDK7),但是后来发现公司的项目部署打包平台最高[详细]
-
Java NIO之Java中的IO分类 Java NIO之理解I/O模型(
所属栏目:[Java] 日期:2020-12-15 热度:69
前言? 前面两篇文章(Java NIO之理解I/O模型(一)、Java NIO之理解I/O模型(二))介绍了,IO的机制,以及几种IO模型的内容,还有涉及到的设计模式。这次要写一些更贴近实际一些的内容了,终于要说到了Java中的各种IO了。我也是边学边理解,有写的不对的地[详细]
-
你说说对Java中SPI的理解吧
所属栏目:[Java] 日期:2020-12-15 热度:108
前言 最近在面试的时候被问到SPI了,没回答上来,主要也是自己的原因,把自己给带沟里去了,因为讲到了类加载器的双亲委派模型,后面就被问到了有哪些是破坏了双亲委派模型的场景,然后我就说到了SPI,JNDI,以及JDK9的模块化都破坏了双亲委派。 然后就被问[详细]
-
使用lambda编程之延迟执行
所属栏目:[Java] 日期:2020-12-15 热度:161
使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点。 所有的lambda表达式都是延迟执行的。毕竟,如果你希望立即执行一段代码,那就没有必要使用lambda表达式了。延迟执行代码的原因有很多,例如: 在另一个线程中运行代码 多次运行代码 在[详细]
-
java8在Collection中新增加的方法removeIf
所属栏目:[Java] 日期:2020-12-15 热度:77
记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题。问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方法,可以直接使用,他说请详细的说明一下,我说写一个for循[详细]
-
架构师必须了解的30条设计原则
所属栏目:[Java] 日期:2020-12-15 热度:61
前言 众所周知,架构师的角色,更偏向于策划、而非指挥,塑造、而非支配,其存在的意义,在于引导大家讨论、而非自己主宰一切。 但是,具体应该如何执行呢?本文作者整理了 30 个公认的架构原则,来帮助大家解决此问题。也许有的原则,你从未听说,但你看完[详细]
-
你来讲讲AQS是什么吧?都是怎么用的?
所属栏目:[Java] 日期:2020-12-15 热度:182
前言 在Java面试的时候,多线程相关的知识是躲不掉的,肯定会被问。我就被问到了AQS的知识,就直接了当的问,AQS知道是什么吧,来讲讲它是怎么实现的,以及哪些地方用到了它。当时自己确实没有讲好,所以这次来总结一下这个知识点。 什么是AQS AQS全称是 Abs[详细]
-
来讲讲你对ThreadLocal的理解
所属栏目:[Java] 日期:2020-12-15 热度:164
前言 面试的时候被问到ThreadLocal的相关知识,没有回答好(奶奶的,现在感觉问啥都能被问倒),所以我决定先解决这几次面试中都遇到的高频问题,把这几个硬骨头都能理解的透彻的说出来了,感觉最起码不能总是一轮游。 ThreadLocal介绍 ThreadLocal是JDK1.2[详细]
-
经历的面试题,先做下部分总结。
所属栏目:[Java] 日期:2020-12-15 热度:76
前言 面试了一周了,经历了各种面试,好的坏的,时间长的时间短的,大公司小公司都有。经历笔试的公司并不是太多,不过也有,这次就先总结经历的笔试题,也有些笔试题我没记录下来,主要是觉得没有什么意义,因为有的地方还问一下比较陈旧的技术,这种问题就[详细]
-
Java NIO之理解I/O模型(一)
所属栏目:[Java] 日期:2020-12-15 热度:168
前言 自己以前在Java NIO这块儿,一直都是比较薄弱的,以前还因为这点知识而错失了一个机会。所以最近打算好好学习一下这部分内容,我想应该也会有朋友像我一样,一直想闹明白这块儿内容。但是一直无从下手,每次被问到什么NIO,BIO,AIO就慌,下面我们先从[详细]
-
ConcurrentHashMap的size方法是线程安全的吗?
所属栏目:[Java] 日期:2020-12-15 热度:139
前言 之前在面试的过程中有被问到,ConcurrentHashMap的size方法是线程安全的吗? 这个问题,确实没有答好。这次来根据源码来了解一下,具体是怎么一个实现过程。 ConcurrentHashMap的原理与结构 我们都知道Hash表的结构是数组加链表,就是一个数组中,每一[详细]
-
线程池ThreadPoolExecutor的一种扩展办法
所属栏目:[Java] 日期:2020-12-15 热度:93
概述 ? 在JAVA的世界里,如果想并行的执行一些任务,可以使用ThreadPoolExecutor。? 大部分情况下直接使用ThreadPoolExecutor就可以满足要求了,但是在某些场景下,比如瞬时大流量的,为了提高响应和吞吐量,最好还是扩展一下ThreadPoolExecutor。 全宇宙的JAVA IT[详细]
-
Java NIO之理解I/O模型(二)
所属栏目:[Java] 日期:2020-12-15 热度:127
前言 上一篇文章讲解了I/O模型的一些基本概念,包括同步与异步,阻塞与非阻塞,同步IO与异步IO,阻塞IO与非阻塞IO。这次一起来了解一下现有的几种IO模型,以及高效IO的两种设计模式,也都是属于IO模型的基础知识。 UNIX下可用的五种I/O模型 根据UNIX网络编程[详细]
-
【转】Java方向如何准备技术面试答案(汇总版)
所属栏目:[Java] 日期:2020-12-15 热度:130
本文转载自:“Java团长”公众号 1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易[详细]