- 博客(152)
- 收藏
- 关注
转载 Java基础: 静态内部类和外部类的加载过程
长不大的韭菜 2020-05-24 23:59:23 443 收藏分类专栏: # Java 基础版权一. 示例注意:以下测试时,main()不在Outer中。这一点非常重要,因为main()调用后,JVM会首先加载main所在的类,如果把main()放在Outer中,则无论在main()内写任何代码,JVM一定会优先加载Outer的静态块,这样便干扰了"静态内部类和外部类的加载过程"的测试。public class Outer { static { System...
2021-05-24 19:13:17 538
转载 递归_青蛙跳台阶(进阶版)
Hello_xzy_Word 2020-03-29 20:06:04 260 收藏 1分类专栏: 在线编程版权题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。我的解法public int JumpFloor1(int target) { if (target == 1) { return 1; } else { int total = 0; for (...
2021-05-24 12:17:36 376
转载 力扣Leetcode141:环形链表(巧解+扩展)
原文链接:https://blog.csdn.net/sjp11/article/details/115905486sjp11 2021-04-20 15:16:34 716 收藏 1文章标签: 链表 leetcode c语言 算法 指针版权链接: 141.环形链表.环形链表问题加分析面试官问:1.为什么slow走一步?fast走两步?它们一定会在环内相遇吗?请证明?2.如果slow走一步,fast走三步,走4步,走N步,则slow与fast在环内一定相遇吗?3.求环的入口点问题..
2021-05-24 06:38:59 217
原创 场景题
6.(智力题)00个币,每次最多拿5个,最少拿一个,拿到最后一个算赢。你先拿,怎样赢得比赛(先拿4个,然后看对方拿几个,和对方每次凑总会为6个);7.(场景题)衣柜有很多衣服,如何整理(类似数组中数据的整理,可用哈希把同类衣服放一起,也可排序,将夏装往外放,冬装往里放)8.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。作者:互联网小白链接:https://leetcode-cn.com/circle/discuss/jhSXJ
2021-05-20 20:06:05 2127
原创 Sql性能优化看这一篇就够了
Sql性能优化看这一篇就够了。https://blog.csdn.net/HXNLYW/article/details/82979088?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault
2021-05-18 17:54:07 130
转载 解释一下自动装箱和自动拆箱?
作者:程序员库森链接:https://www.nowcoder.com/discuss/601272来源:牛客网自动装箱:将基本数据类型重新转化为对象复制代码 1 2 3 4 5 6 public class Test { public static void main(String[] args) { // 声明一个Integer对象,用到了自动的装箱:解析为:Integ...
2021-05-17 08:31:10 1612
原创 面试官:服务器安装JDK还是JRE?可以只安装JRE吗?
前些日子有朋友面试时被问到如题所示的问题,由于他之前没有准备到这些最最基础的知识,没有考虑过这个问题,所以被问到时竟一脸萌币,回答的不是很好。这道题主要考的是对 Java 基础知识的了解,现在我们一起来分析下。01 JDK和JRE是什么?在回答这个问题之前我们先来看看什么是JDK什么是JRE?以及JDK和JRE的关系。我们看一下来自百度百科的解释:JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心...
2021-05-17 01:03:20 1460 1
转载 JAVA核心知识点最详细版(面试必备)
转载自https://mp.weixin.qq.com/s/iuGDNAKFFmhU8mxmaRFdpQJava八股文原创路人张路人zhang今天收录于话题#秋招5#Java4JAVA核心知识点最详细版(面试必备)本篇文章有将近50道经典Java面试题,这是我去年秋招完总结的,每道题都是自己总结的,不是从网上直接复制粘贴的,并根据面试中出现的频率做了标注。本篇文章已经整理成PDF,在公众号回复“面试手册”即可。应该是有同学已经看过PDF版了,在这里重新发一次主要是还有些...
2021-05-17 00:40:36 503
原创 2021-05-11
什么是 NIO? NIO 和 BIO、AIO 之间的区别是什么?NIO主要用来解决什么问题?面试问题?...38 浏览0 回复2021-04-29牛客229127715号+关注<article class="_2rhmJa" style="font-size: 16px;">什么是 NIO? NIO 和 BIO、AIO 之间的区别是什么?NIO主要用来解决什么问题?面试问题?1 BIO,NIO,AIO都有
2021-05-16 07:13:11 123
原创 SpringMVC
简要分析执行流程 DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。 我们假设请求的url为 : http://localhost:8080/SpringMVC/hello 如上url拆分成三部分: http://localhost:8080服务器域名 SpringMVC部署在服务器上的web站点 hello表示控制器 通过分析,如上url表示为:请求位于服务器loc.
2021-05-16 07:12:19 118
转载 #{}和${}的区别是什么?
osc_kf98pg0d2020/01/20 14:45阅读数 3.1K动态sql是mybatis的主要特性之一,在mapper中定义的参数传到xml中之后,在查询之前mybatis会对其进行动态解析。mybatis为我们提供了两种支持动态sql的语法:#{}以及${}。面试题:#{}和${}的区别是什么?1)#{}是预编译处理,$ {}是字符串替换。2)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatem...
2021-05-15 11:46:22 7473
转载 MyBatis
本篇文章是JavaGuide收集自网络,原出处不明。MyBatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 MyBatis 的文章,所以,一些参数使用细节略掉了,我们的目标是介绍 MyBatis 的技术架构和重要组成部分,以及基本运行原理。博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博客中,学习到一点其他博客所没有的技术点,作为作者,我就很欣慰了,我也读别.
2021-05-15 11:32:58 140
转载 面试官:“谈谈Spring中都用到了那些设计模式?”。
原创JavaGuideJavaGuide2019-05-23JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下,由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的常见的设计模式。Design Patte...
2021-05-15 11:18:46 130
原创 一、什么是JavaBean
JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:这个Java类必须具有一个无参的构造函数 属性必须私有化。 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。 一、Bean是啥 1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化); 2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性; 3、规律:凡是子类及带有方法或属...
2021-05-15 10:56:41 3539
转载 海量数据处理问题https://www.pianshen.com/article/4806585395/
程序员大本营技术文章内容聚合第一站首页 /联系我们 /版权申明 /隐私条款技术标签:top k海量数据处理海量数据的常见处理方法:Hash方法:解决 哈希冲突的方法:Bit-map方法:布隆过滤器:倒排索引外排序法:Trie树Tr...
2021-05-14 11:01:42 609
原创 谈谈ArrayList和LinkedList的区别
java int 的最大值 Integer.MAX_VALUE 是 2147483647 / 二十一亿多的一个整数16,谈谈ArrayList和LinkedList的区别风清扬从0到1,带你构建完整的互联网技术体系关注他17 人赞同了该文章1,底层数据结构的差异ArrayList,数组,连续一块内存空间LinkedList,双向链表,不是连续的内存空间2,一个常规的结论虽然不严谨,但也可以应付很多面试了ArrayList,查找快,因为是连续的内存空间,方便.
2021-05-13 09:56:11 208
原创 Java操作数据库——使用JDBC连接数据库
背景数据持久化数据持久化就是把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以“固化”,而持久化的实现过程大多通过各种关系数据库来完成。持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。基础概念JDBC的全称是Java Database Connectivity,意为Java和数据库的连接。JDBC是SUN公司提供的一套操作数据库的接口规范,定义了用来...
2021-05-13 07:49:29 594
原创 JAVA内存模型
那么说说你对JMM内存模型的理解?为什么需要JMM(保障程序在不同jvm,以及操作系统和硬件上执行结果一致)?JMM:JAVA内存模型,不存在的东西,是一个概念,也是一个约定!原因:本身随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加入了高速缓存,高速缓存一般可以分为L1、L2、L3三级缓存。基于上面的例子我们知道了这导致了缓存一致性的问题,所以加入了缓存一致性协议,同时导致了内存可见性的问题,而编译器和CPU的重排序导致了原子性和有序性的问题,JMM内存模型正
2021-05-13 07:33:30 116
原创 JMM内存模型
那么说说你对JMM内存模型的理解?为什么需要JMM(保障程序在不同jvm,以及操作系统和硬件上执行结果一致)?JMM:JAVA内存模型,不存在的东西,是一个概念,也是一个约定!原因:本身随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加入了高速缓存,高速缓存一般可以分为L1、L2、L3三级缓存。基于上面的例子我们知道了这导致了缓存一致性的问题,所以加入了缓存一致性协议,同时导致了内存可见性的问题,而编译器和CPU的重排序导致了原子性和有序性的问题,JMM内存模型正
2021-05-13 07:32:47 13602 1
原创 同步和异步
Socket的概念:上面已经解释了,不在复述。同步和异步:同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO 操作并等待或者轮询的去查看IO 操作是否就绪,而异步是指用户进程触发IO 操作以后便开始做自己的事情,而当IO 操作已经完成的时候会得到IO 完成的通知。以银行取款为例:同步: 自己亲自出马持银行卡到银行取钱(使用同步 IO 时,Java 自己处理IO 读写);异步(任务交给其他人做): 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO 时,Java 将 ..
2021-05-12 17:32:55 974
转载 面向对象
面向对象概述面向对象和面向过程的区别面向过程:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一...
2021-05-12 15:47:07 89
转载 HTTPS
几幅图,拿下 HTTPS原创小林coding小林coding1月7日收录于话题#图解网络19个我很早之前写过一篇关于 HTTP 和 HTTPS 的文章,但对于 HTTPS 介绍还不够详细,只讲了比较基础的部分,所以这次我们再来深入一下 HTTPS,用实战抓包的方式,带大家再来窥探一次 HTTPS。对于还不知道对称加密和非对称加密的同学,你先复习我以前的这篇文章「硬核!30 张图解 HTTP 常见的面试题」,本篇文章默认大家已经具备了这些知识。TLS 握手过程HTTP...
2021-05-07 22:35:29 109
转载 一个线程OOM后,其他线程还能运行吗?
最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。由于题目中给出的OOM,java中OOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError:Permgen space”)、不能创建线程(“java.lang.OutOfMe
2021-05-07 22:08:19 557
原创 Linux命令
Linux中查看进程状态信息一、常用命令总结 ps -l 列出与本次登录有关的进程信息; ps -aux 查询内存中进程信息; ps -aux | grep *** 查询***进程的详细信息; top 查看内存中进程的动态信息; kill -9 pid 杀死进程。USER :进程的所属用户,PID :进程的进程ID号,%CPU :进程占用的 CPU资源 百分比,%MEM :进程占用的 物理内存 百分比,VSZ :进程使用掉的虚拟内存...
2021-04-29 18:52:24 297
原创 数据库常见问题
1.1.1. 什么是视图视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,1.1.2. 视图的作用如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询;7.场景题:在mysql的默认隔离级别下有两个事务:事务A和事务B第一个瞬间:事务A begin第二个瞬间:事务B begin第三个瞬间:事务A update t set k=2 where id=1第四个瞬间:事务B upda...
2021-04-29 18:50:58 427
原创 线程问题怎么排查
线程状态的定义可见在 JDK 中定义的线程状态总共六种,各状态在特定条件下可以转换,其组成了一个线程的生命周期,为了方便理解,对其状态和转换整理成了列表和状态图的形式。状态 描述 NEW 线程新建但是还没有 start 的时候,即 new Thread() RUNNABLE 调用了 Thread 的 start() 方法,此时线程可运行,但是也有可能需要等待其他操作系统资源,比如处理器资源,当获取到处理器资源之后,则进入 RUNNING 状态 BLOCKED ...
2021-04-29 18:50:39 822
转载 反射
作者:CaryTseng链接:https://www.zhihu.com/question/24304289/answer/147529485来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对题主,重新修改下答案!首先看书要理解反射,很难完全理解,这关系到Java的语言特性,jvm的内存细节,当初我看反射,就像高票答案那样,照着写一遍,结果是你并没有理解,你只是照猫画虎,要想真正理解,我建议题主,不断深入探究,当你踩得足够深回过头来,你会柳暗花明!这里我不打.
2021-04-29 18:43:32 86
原创 场景题
如果一个用户上传图片失败了,原因可能有哪些?怎么去定位bug?当你遇到一个与预期输出不符的情况时:1.自定向下排查(从系统入口模块开始)a.是内部逻辑问题还是下游数据问题?b.是否是某些配置下发生的问题?日志中是否发现线索?(系统配置或环境配置)例子:配置环境不一致导致!!测试环境ok,生产环境新增时保存失败,查看后台日志报长度溢出,数据库内容字段要求和生产环境不一致!!c.系统资源情况中是否发现线索?(是否发生内存泄漏等,CPU占用)d.是否是边界值,并发等问题?2..
2021-04-29 18:36:03 144
转载 内存泄露
作者:McAce链接:https://www.zhihu.com/question/40560123/answer/512873873来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。只针对JAVA来说内存泄露本意是申请的内存空间没有被正确释放,导致后续程序里这块内存被永远占用(不可达),而且指向这块内存空间的指针不再存在时,这块内存也就永远不可达了,内存空间就这么一点点被蚕食,借用别人的比喻就是:比如有10张纸,本来一人一张,画完自己擦了还回去,别人可以继续画.
2021-04-29 18:34:25 63
原创 【转载】Java泛型详解
【转载】http://www.importnew.com/24029.html对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、java泛型详解 泛型的意义和作用是啥?https://www.cnblogs.com/archermeng/p/7537024.html10 道 Java 泛型面试题2018-01-31阅读35....
2021-04-29 10:51:26 116
原创 Java如何对一个对象进行深拷贝?
在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。如下图描述:了解了浅拷贝和深拷贝的区别之后,本篇博客将教大家几种深拷贝的方法。拷贝对象首先,我们定义一下需要拷贝的简单对象。 1 2 3 4 5 6 7 8...
2021-04-29 10:51:06 334
转载 Java原子类实现原理分析
在谈谈java中的volatile一文中,我们提到过并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,本章就一起来分析下原子类的实现机理。悲观的解决方案(阻塞同步) 我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加一 3.写入三步组成的,这是个复合类的操作(所以我们之前提到过的volatile是无法解决num++的原子性问题的),在并发环境下,如果不做任何同步处理,就会有线程安全问题。最直接的处理方式就...
2021-04-29 09:10:56 227
转载 图解排序算法(三)之堆排序
预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一...
2021-04-24 10:22:52 113
转载 图解排序算法(四)之归并排序
基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。合并相邻有序子序列 再...
2021-04-23 13:55:32 83
转载 时间复杂度和空间复杂度
学了这么多年算法,你还不知道时间复杂度和空间复杂度如何计算吗?mb5ff97a7f4d63d0人评论62人阅读2021-01-18 19:14:49前言一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。时间复杂度首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。常见的时间复杂度常见的时间复杂度计算方法 选取相对增长最高的项 最高项系数是都化为1 若是常数的话用O(1)表示 比如.
2021-04-23 10:36:35 149
原创 Java NIO 详解(二)
Heaven-Wang2015-09-14 17:14:2421198收藏33分类专栏:Java基础知识文章标签:java-nio异步iojava-nio-详版权在我的上一篇文章JavaNIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO)。异步IO异步 I/O是一种没有阻塞地读写数据的方法。通常,在代码进行read()调用时,代码会阻塞直至有可供读取的数据。同样,write()调用将会阻塞直至数据能...
2021-04-22 19:10:36 226
转载 什么是NIO
1.2 什么是NIONIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO,本篇文章重点介绍标NIO,关于网络编程NIO请见Java NIO详解(二)。1.3 流与块的比较NIO和IO最大的区别是数据打包和传输方式。IO是以流的方式处理数据,而NIO是以块的方式处理数据。面向流的IO一次一个字节
2021-04-22 17:53:50 4625 1
转载 Java IO
一、java io 概述 1.1 相关概念 Java IO Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难题,这些类就位于java.io包中。 在JDK1.4之后...
2021-04-22 17:37:01 93
原创 【狂神说】Spring学习笔记(全)
【狂神说】Spring学习笔记(全)黑心白莲2020-11-27 17:21:382421收藏70版权【狂神说】Spring5最新完整教程IDEA版参考链接:https://www.bilibili.com/video/BV1WE411d7Dv【狂神说】Java学习完整路线https://www.bilibili.com/read/cv5702420Spring学习笔记 1、Spring(2020-11-9) 1...
2021-04-22 13:54:24 506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人