![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 82
java冢狐
这个作者很懒,什么都没留下…
展开
-
【LeetCode】209.长度最小的子数组
今天给大家带来一个比较有趣的有关数组的题目,难度中等。整体解法不算困难,但是可以给人一种新的思考模式。那么话不多说,让我们来看看这道题目。题目题目链接: https://leetcode-cn.com/problems/minimum-size-subarray-sum/给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]原创 2021-07-26 14:25:44 · 237 阅读 · 3 评论 -
【读书笔记】代码整洁之道
正如书名所说,这本书主要讲述的就是如何写出真正整洁的代码。作者在本书中阐述了在命名、函数、注解、代码格式、对象和数据结构、错误处理、边界问题、单元测试、类、系统、并发编程等方面如何做到整洁的经验与最佳实践。属于代码编写方面的入门书籍,看完这本书,能让你对什么是整洁的代码以及如何编写整洁的代码有所初步的认识和了解,有利于你在以后的编程生涯中提高你的代码质量和尽可能的减少坏味道。读完此书后,结合一些自己的编码经验做出了一些总结和回顾。希望对你有所帮助,如果喜欢的话还是建议去看原书。整洁的代码什么是整洁的代原创 2021-06-01 18:26:07 · 346 阅读 · 0 评论 -
月黑雁飞高,计网全知道——精选二十七道计网面试题目
计算机网络知识前文已更新了Java面试知识,欢迎关注公众号【Java冢狐】来获取1、HTTP HTTP是一种:超文本传输协议超文本:不关是文本,还可以是图片、音频、视频甚至点击。传输:把超文本解析成二进制数据包,由传输载体负责把二进制数据包由计算机终端传输到另一个终端的过程。协议:计算机之间通信中需要遵守的一定的规则。所以HTTP就是在计算机世界里专门在两点之间传输文字、图片、音频、视频的超文本数据的约定和规范1.1 HTTP相关的协议TCP/IP TCP/IP称为协议簇,其中不原创 2021-04-22 16:44:38 · 141 阅读 · 1 评论 -
2021年——Java核心面试题
java核心面试题1、喜欢别忘了关注公众号【Java冢狐】2、java面向对象编程的特征多态继承封装PS:java不是纯粹的面向对象编程语言,因为java支持基本数据类型,比如int、short、long。尽管它们有自己的包装器类型,但是他们的确不能算是对象3、 JVM见往期JVM详情,这一块内容挺多的,就不在这里阐述了4、JDK、JVM、JRE区别JDK:是提供给java开发人员的软件环境,包含JRE和一组开发工具;有几个版本:标准版企业版微型版JRE原创 2021-04-16 14:26:56 · 458 阅读 · 1 评论 -
面试官:聊聊注解?
理解java注解 注解是java中十分重要的一部分,我们无时无刻都在使用它,尤其是使用Spring框架开发的时候,会在项目中使用到很多奇奇怪怪的注解(@DataScope、@Log、@Override等),很多时候我们只是会使用这些注解,但是对于注解背后的逻辑、工作原理都知之甚少,更别提我们自己开发一个注解了。所以今天就把我对注解的了解以及如何自定义一个注解记录在此与大家一起交流。 首先注解是Java1.5时引入的概念,属于一种类型。注解提供了一系列数据用来修饰程序代码(类、方法、字段),但是注解并原创 2020-12-30 23:55:29 · 121 阅读 · 0 评论 -
ThreadLocal剖析
通常情况下,我们创建的变量都是可用被任何一个线程访问并修改的。这就会导致一系列的问题,比如说两个人去打工,如果两个人公用一个账户存钱,那么后续必然会产生一些争执,最好的解决方法就是给他们两个人每个人都分配一个属于自己的账户,这样讲避免了争执。这个推广到线程上就是使用ThreadLoad来避免线程之间的竞争。ThreadLocal原理,使用注意点,应用场景有哪些?回答四个主要点:ThreadLocal是什么?ThreadLocal原理ThreadLocal使用注意点ThreadLocal的应用原创 2020-12-24 11:20:27 · 141 阅读 · 0 评论 -
Thread类源码剖析
对于面试中的多线程问题中,Thread是很重要的一个类,下面我们就看看Thread类中到底有什么奇奇怪怪的东西以及如何回答面试官的各种刁难人的问题。Thread使用线程名在使用多线程的时候,常用到的方法就是设置和查看现场名即setName(String name)和getName()。默认情况下主线程的名字是main,其他线程名是Thread-x,x代表第几个线程。究其原因还要看其构造方法public Thread() { init(null, null, "Thread-" + next原创 2020-12-21 17:13:34 · 175 阅读 · 0 评论 -
深入理解Java四大引用
java有四种引用类型分别是:强引用、软引用、弱引用、虚引用四大引用设计作用 由于java的内存分配和内存回收,都是由JVM去负责。一个对象是否可以被回收,主要看是否有引用指向此对象,即可达性分析。由于我们程序员一般不去主动的调用GC方法,要想达到对某个对象的生命周期进行管理,就要灵活应用各种引用来创建对象。设计目的:可以让程序员通过代码的方式来决定某个对象的生命周期有利用垃圾回收强引用使用最广泛的,也是最常见的。Object o = new Object();只要某个原创 2020-12-07 15:33:25 · 176 阅读 · 0 评论 -
面试官:你是如何写定时任务的?
在实际项目的开发中,常常会遇到需要定时任务来执行一些特殊操作,比如定时监控一些数据信息,亦或者凌晨进行数据备份或者数据升级。这些都需要定时任务来实现,那么接下来就让我们看看一些常见的定时任务的实现方式Timer要是要实现定时任务,最先想到的肯定是java自带的类,就是Timer类,其在JDK类库中主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务,或者进行一些周期性的工作。无论是什么项目都可以直接使用Timer来实现定时任务,其特点就是方便使用。代码示例public class MyTi原创 2020-12-03 14:04:59 · 1560 阅读 · 0 评论 -
java异常分类及处理
java异常分类及处理概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable是java语言中所有错误或者异常的超类,其中下一层分为Error和ExceptionError是指java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知原创 2020-11-27 16:22:52 · 227 阅读 · 0 评论 -
java泛型一点通
java泛型概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中都能看到他的身影,那么什么是泛型,以及为什么要用泛型?泛型:即参数化类型。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后在使用或者调用时传入具体的类型泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制新参具体限制的类型)在泛型的使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口或者方法中,对应的称之为泛型类、泛型接口混原创 2020-11-26 16:41:59 · 186 阅读 · 0 评论 -
什么你还不会单例模式?看我花式实现饿汉式和懒汉式
设计模式:单例模式(关于饿汉式和懒汉式)定义单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。优缺点优点单例类只有一个实例,节省了内存资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能;单例模式可以在系统设置全局的访问点,优化和共享数据,例如Web应用的页面计数器就可以用单例模式实现计数值的保存。缺点单例模式原创 2020-11-24 16:57:35 · 176 阅读 · 0 评论 -
不会AQS也敢来面试,来这拿好AQS手册
AQS简介AQS是一个用来构件锁和同步器的框架,Lock包中的各种锁,concurrent包中的各种同步器都是基于AQS来构建的。锁原理-信号量VS管程在并发领域,主要关心的问题是互斥与同步。互斥:即同一时刻只允许一个线程访问共享资源同步:线程之间如何通信、协作。这两大问题可以通过信号量和管程来解决信号量信号量是操作系统提供的一种进程间常见的通信方式,主要用来协调并发程序对共享资源的访问。操作系统可以保证对信号量操作的原子性。信号量机制的引入解决了进程同步和互斥的问题,但信号量的大量同原创 2020-10-22 14:52:44 · 422 阅读 · 0 评论 -
日拱一卒——Leetcode 24.两两交换链表中的节点
大家好呀,今天为大家带来的LeetCode的题目是 leetcode 24.两两交换链表中的节点,做了几天简单题目了,终于来到一个中等难度的题目。但是看到这个题目发现,这不是个披着中等难度外衣的简单题目,题目的实质就是链表的反转。题目分析正如上面所分析的那样,这个题目要考察的点就是对于链表的掌握,其核心就是链表的反转。对于链表的反转我们可以使用两种方法,一种是递归一个是非递归即遍历。解法一:递归算法经过上面的分析我们可以很清楚的得知,我们要做的就是一步步的反转整个链表,递归的时候以两两为一组原创 2020-10-13 17:52:12 · 275 阅读 · 0 评论 -
java泛型一点通
目录java泛型概述例子特性泛型的使用泛型类泛型接口泛型通配符泛型方法泛型方法的基本用法类中的泛型方法静态方法与泛型泛型方法总结泛型上下边界关于泛型数组要提一下最后java泛型概述 泛型在java中有很重要的低位,在面向对象编程及各种设计模式中都能看到他的身影,那么什么是泛型,为什么要用泛型?泛型:即参数化类型。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后在使用或者调用时传入具体的类型泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指原创 2020-10-09 11:39:00 · 344 阅读 · 0 评论 -
线程池原理
线程池java线程池java线程池介绍线程池作用统一管理复用线程控制并发数量线程池原理线程池的七个参数workQueuethreadFactoryhandler复用线程使用线程池的注意事项六种线程池的使用由ThreadPoolExecutor 创建newCachedThreadPool(可缓存线程的线程池)newSingleThreadExecutor(单线程的线程池)newFixedThreadPool(固定数目的线程池)由ScheduledThreadPoolExecutor 创建ScheduledTh原创 2020-10-03 16:20:11 · 397 阅读 · 0 评论 -
轻松搞定进程原理
目录进程进程简介并发和并行进程的状态与变迁进程有五种状态:线程变迁进程的控制结构PCB包含的信息PCB如何组织进程的控制创建进程终止进程阻塞进程唤醒进程进程的上下文切换CPU上下文切换进程的上下文切换发生进程上下文切换的场景进程间通信进程调度算法线程最后进程进程简介并发和并行进程的状态与变迁进程有五种状态:运行状态:该进程占用CPU就绪状态:可运行,但是由于其他进程正在运行而暂停阻塞状态:该进程正在等待某一事件发生而暂停运行,此时,即使给他CPU控制权,它也无法运行创建状态:进程正在被原创 2020-10-02 14:06:04 · 504 阅读 · 0 评论 -
0202年了你还不会java线程?
java线程线程基本信息什么线程线程的优缺点线程和进程的比较线程状态线程等待(wait)线程睡眠(sleep)线程让步(yield)线程中断(interrupt)Join等待其他线程终止为啥使用join()方法线程唤醒(notify)线程的实现用户线程用户线程的优点:用户线程的缺点内核线程内核线程的优点内核线程的缺点轻量级线程LWP模型线程通信线程调度最后线程基本信息什么线程 线程是进程当中的一条执行流程。 同一进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程都有独立一套的原创 2020-10-02 10:24:53 · 281 阅读 · 0 评论 -
一文带你了解IO知识的全貌(BIO、NIO、AIO)
IP知识一网打尽 java IO流是一个庞大的生态环境,其内部提供了很多不同的输入流和输出流,细分下去还有字节流和字符流,甚至还有缓冲流来提高IO的性能,以及转换流将字节流转换为字符流。本文将会解析Java IO中涉及到的各个类,以及讲述如何正确、高效的使用。BIO、NIO、AIO傻傻分不清楚类型烧开水BIO一直检测,直到结束后才去监测下一个NIO每隔一段时间就查看所有水壶的状态,那个好了就去处理那个AIO不用检测水壶,每个水壶烧开后会主动通知线程。什么是原创 2020-09-21 16:56:24 · 761 阅读 · 0 评论 -
面试连环夺命call之消息队列
目录消息队列面试连环夺命call什么是消息队列消息队列的好处异步处理服务解耦流量控制缺点消息队列的基本概念队列模型发布/订阅模型小结一下基于发布/订阅模型的常用术语常见面试题目如何保证消息不丢失生产消息存储消息消费消息总之如何处理重复消息幂等处理重复消息如何保证消息的有序性全局有序部分有序如何处理消息堆积最后消息队列面试连环夺命call 消息队列算是十分重要的一个知识点,不管是在我们平时的日常工作中还是面试中。其中面试中总有一下几个核心问题:如何保证消息不丢失如何处理重复消息如何保证消息的有序原创 2020-09-08 16:54:13 · 1006 阅读 · 0 评论 -
不会CAS也敢来面试——CAS原理解析
目录CAS原理解析java CAS简介代码说明执行过程CAS底层原理源码调试CAS存在的问题最后CAS原理解析java CAS简介CAS全称:Compare-And-Swap,即比较并替换。比较变量现在的值和以前的值是否一致,若一致则替换,否则不替换CAS作用:原子性更新变量值,保证线程安全CAS指令:需要有三个操作数,变量的当前值(V),旧的预期值(A),准备设置的新值(B)CAS指令执行条件:当前仅当V=A时,处理器才会设置V=B否则不执行更新CAS的返回值:V的之前值CAS处理过程:原创 2020-09-04 18:27:46 · 1646 阅读 · 2 评论 -
月黑雁飞高,反射全知道——剖析java反射机制
文章目录java 反射机制反射机制概念java反射提供的功能反射的基本使用反射使用步骤(获取Class对象、调用对象方法)反射使用例子People获取Class的三种方法(获取一个类的字节码对象)获取一个类的所有信息获取类中的变量(Field)获取类中的方法(Method)获取类的构造器(Constructor)获取注解通过反射调用方法反射的应用场景Spring的IOC容器反射+抽象工程模式JDBC加载数据库驱动类反射的优缺点反射的优点:反射的缺点:反射总结最后java 反射机制反射机制概念在运行状原创 2020-09-01 15:11:55 · 1671 阅读 · 11 评论 -
撸个注解
目录撸个注解注解是什么注解的生命周期注解修饰的目标开始撸注解使用注解测试注解最后撸个注解 注解是java中十分重要的一部分,我们无时无刻都在使用这他,尤其是使用Spring框架开发的时候,但是如何自定义一个注解呢,或者注解到底是如何生效的呢,工作原理是什么呢?接下来我们就一起动手撸一个注解注解是什么 注解是Java1.5时引入的概念,属于一种类型。注解提供了一系列数据用来修饰程序代码(类、方法、字段),但是注解并不是所修饰代码的一部分,即它对代码的运行没有直接影响,由编译器决定该执行那些操作注原创 2020-08-27 15:42:50 · 474 阅读 · 2 评论 -
Java核心面试题——精选36道核心面试题
目录java核心面试题1、java个版本中更新的重要功能1.1 java 14版本中更新的重要功能1.2 java 13版本中更新的重要功能1.3 java12版本中更新的重要功能1.4 java11版本中更新的重要功能1.5 java10版本中更新的重要功能1.6 java9版本中更新的重要功能1.5 java8版本中更新的重要功能2、java面向对象编程的特征3、 [JVM](https://blog.csdn.net/issunmingzhi/article/details/104774941)4、J原创 2020-08-26 11:32:48 · 1262 阅读 · 6 评论 -
基于JDK8的内存调优
基于JDK8的内存结构的调优 要想进行内存调优,就要先要对其内存结构有清楚的认识JDK8的内存结构 JDK8的内存结构主要包括:程序计数器、虚拟机栈、本地方法栈、堆、元空间 其中堆又划分为:老年代、年轻代、其中年轻代又划分为Eden区和Survivor区详情点击 对于JDK8的内存调优主要针对的是堆和元空间。其中常用的JVM参数如下-server JVM的server模式,在多CPU服务器中性能可以得到很好的发挥。由于JDK的64位版本只支持server模式,因此在这种情况下选项是原创 2020-08-20 09:49:52 · 1012 阅读 · 1 评论 -
java日期时间API详解
主要基于JDK8来介绍java关于对时间和日期的处理,不光介绍java提供的API还有具体代码对API进行演示,让你清楚理解java日期时间的相关知识原创 2019-12-09 11:42:36 · 758 阅读 · 0 评论 -
idea上利用JDBC连接MYSQL数据库(8.0版本)
主要是基于mysql8.0版本,简单介绍了下,在idea中如何使用JDBC来连接数据库,并且将读取的数据进行显示。原创 2019-12-12 15:13:53 · 7504 阅读 · 1 评论 -
new与instance
new getinstance和newinstance原创 2020-01-20 14:48:30 · 666 阅读 · 0 评论 -
十大经典排序——java实现
主要包含:选择排序、插入排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、桶排序、基数排序、睡眠排序、随机排序原创 2020-02-24 16:14:35 · 7126 阅读 · 20 评论 -
Java核心技术卷一读书笔记
Java核心技术卷一读书笔记第一章 Java程序设计概述1.1 关键特性简单面向对象分布式健壮性安全性体系结构中立可移植性解释性高性能性多线程动态性第二章 Java程序设计环境2.1 使用命令行工具注意:注意大小写编译器需要一个文件名,而运行程序时,只需要指定类名,不需要扩展名第三章 Java的基本查询设计结构3.1 数据类型八种基本类型:...原创 2020-02-24 16:15:49 · 828 阅读 · 0 评论 -
java编程思想(On Java 8)读书笔记1-6章
JAVA编程思想第一章 对象的概念抽象接口服务提供封装public(公开)表示任何人都可以访问和使用该元素;private(私有)除了类本身和类内部的方法,外界无法直接访问该元素。private 是类和调用者之间的屏障。任何试图访问私有成员的行为都会报编译时错误;protected(受保护)类似于 private,区别是子类,可以访问 protected 的成员,但不能访问 pr...原创 2020-02-24 16:17:32 · 779 阅读 · 0 评论 -
生产者消费者模式java的三种实现
生产者消费者介绍优点可以解耦生产者和消费者,互相之间不会产生影响支持并发操作,生产者只管生产数据,生产的数据放到缓冲区中,而不需要等消费者消费完再生产下一个数据,不会造成阻塞支持忙闲不均数据单元特性关联到业务对象完整性独立性颗粒度设计缓冲区一般使用阻塞队列,当队列满时会阻塞生产者继续生产数据,直到有消费者来消费了数据。当队列为空时也会阻塞消费者继续消费生...原创 2020-02-26 17:09:59 · 1082 阅读 · 0 评论 -
什么你还不会单例模式?看我花式实现饿汉式和懒汉式
设计模式:单例模式(关于饿汉式和懒汉式)定义单例模式是一种常见的设计模式,目的是保证一个类中只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存优缺点优点单例类只有一个实例,节省了内存资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能;单例模式可以在系统设置全局的访问点,优化和共享数据,例如前面说的Web应用的页面计数器就可以用单例模...原创 2020-02-27 10:44:42 · 545 阅读 · 0 评论 -
看完此文终于可以在简历上写上熟悉JVM了
一、概述1.1 虚拟机介绍1.2 JVM组成部分二、类加载器2.1 加载2.2 验证2.3准备2.4 解析2.5 初始化三、对象的创建过程3.1 检查类是否被加载3.2 为对象分配内存3.3 为分配的内存空间初始化零值3.4 为对象进行其他设置3.5 执行init方法四、对象的内存布局4.1 对象头(markword)4.2 实例数据(Ins...原创 2020-03-10 15:06:58 · 3740 阅读 · 0 评论 -
优雅的在java中统计代码块耗时
优雅的在java代码中统计代码块耗时常规写法代理方式AutoCloseable总结优雅的在java代码中统计代码块耗时常规写法long start = System.currentTimeMillis();try { // .... 具体的代码段} finally { System.out.println("cost: " + (System.curre...原创 2020-03-11 19:00:45 · 1296 阅读 · 0 评论 -
java四大引用
java四大引用四大引用设计作用强引用软引用弱引用虚引用java四大引用java有四种引用类型:强引用、软引用、弱引用、虚引用四大引用设计作用 因为java的内存分配和内存回收,都是由JVM去负责,一个对象是否可以被回收,主要看是否有引用指向此对象,即可达性分析设计目的:可以让程序员通过代码的方式来决定某个对象的生命周期有利用垃圾回收强引用使用最广...原创 2020-03-18 09:05:57 · 427 阅读 · 0 评论 -
JVM参数类型大揭秘
JVM参数类型大揭秘JVM的参数类型标准参数X参数XX参数-Xmx -Xms运行时JVM参数查看参数:jpsjinfojstat查看虚拟机统计信息类装载垃圾收集JIT编译jmap+MAT实战内存溢出JVM内存结构查看线上堆内存溢出以及非堆内存溢出发送内存溢出的主要原因JVM参数类型大揭秘JVM的参数类型标准参数...原创 2020-04-02 09:50:09 · 506 阅读 · 0 评论 -
Java和锁的爱恨情仇
乐观锁悲观锁自旋锁Synchronized同步锁ReentrantLock非公平锁公平锁ReentrantLock与SynchronizedReentrantLock实现Condition类和Object类锁方法区别:tryLock和lock和locklnterruptibly的区别Semaphore信号量可重入锁(递归锁)公平锁与非公平锁ReadWriteLo...原创 2020-04-08 11:05:03 · 426 阅读 · 0 评论 -
java编写代码规范
java编写代码规范常量和变量对象和类方法表达式数组集合异常缓冲区java编写代码规范常量和变量直接赋值常量,禁止声明新对象:直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值。Long i=1L;String s="abc";当成员变量值无需改变时,尽量定义为静态常量在类的每个对象实例中,每个成员变量都有一份副本,而成员静态...原创 2020-04-08 11:12:45 · 321 阅读 · 0 评论 -
最全的Collections和Arrays总结,别再说你不会了!
Collections 工具类和 Arrays 工具类常见方法Collections常见方法Arrays类的常见操作Collections 工具类和 Arrays 工具类常见方法Collections常见方法排序void reverse(List list)//反转void shuffle(List list)//随机排序void sort(List lis...原创 2020-04-08 11:14:53 · 1430 阅读 · 0 评论