JavaGuide

「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

  • 博客(210)
  • 资源 (9)
  • 收藏
  • 关注

原创 花了快2个月!Guide自己动手写了一个简单的RPC框架!

Github地址:https://github.com/Snailclimb/guide-rpc-framework (欢迎star,欢迎一起完善!共勉!)前言大概 2 个月前,我说过要利用业余时间写一个简单的 RPC 框架,今天(2020-06-05)总算将其开源出来,希望对小伙伴们有帮助。虽说 RPC 的原理实际不难,但是,自己在实现的过程中自己也遇到了很多问题。Guide-rpc-framework 目前只实现了 RPC 框架最基本的功能,一些可优化点都在下面提到了,有兴趣的小伙伴可以自行完.

2020-06-08 09:42:42 14440 14

原创 强烈推荐!15 个 Github 顶级 Java 教程类开源项目推荐!

B站在线观看地址:https://www.bilibili.com/video/av90155402 ,来个三连和关注啊!大家好,我是 Guide 哥!今天给大家推荐 15 个新手也能看懂的 Java 教程方向的开源项目。这些项目无论是对于你学习 Java 还是准备 Java 方向的面试都非常有帮助。正如我第一个要推荐的开源项目 JavaGuide 说的那样:开源项目在于大家的参与,这才使得它...

2020-02-21 10:41:22 31598 9

原创 良心推荐,我珍藏的一些Chrome插件

上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。Markdown HereMarkdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...

2020-01-10 17:51:19 106140 68

原创 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你!

Awsome JavaGreat Java project on Github(Github 上非常棒的 Java 开源项目).English Version大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。我会按照几个维度对项目进行分类...

2019-12-09 13:20:16 30058 31

原创 面试官:“谈谈Spring中都用到了那些设计模式?”。

我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclimb/JavaGuideJDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且......

2019-05-23 20:51:14 29753 16

原创 面试官:为什么忘记密码要重置而不是告诉你原密码?

如果明文存储的话,风险太大,且不说数据库的数据有被盗的风险,如果被服务端的相关人员特别是有数据库权限的恶意利用,那将是不可预估的风险。当你输入密码登录之后,服务端会先把你的密码对应的盐取出,然后再去执行一遍获取哈希值的过程。盐(Salt)在密码学中,是指通过在密码任意固定位置插入特定的字符串,让哈希后的结果和使用原始密码的哈希结果不相符,这种过程称之为“加盐”。哈希算法的是不可逆的,你无法通过哈希之后的值再得到原值,这样的话,服务端也不知道你的原密码到底是什么,自然没办法告诉你原密码是什么。

2024-04-16 11:01:15 5

原创 京东后端实习一面(附详解),秒挂!

简单来说,引用拷贝就是两个不同的引用指向同一个对象。

2024-04-03 15:31:39 999

原创 OPPO后端二面,凉了!

/... }//...String保存字符串的数组被final修饰且为私有的,并且String类没有提供/暴露修改这个字符串的方法。String类被final修饰导致其不能被继承,进而避免了子类破坏String不可变。在 Java 9 之后,String与的实现改用byte数组存储字符串。// @Stable 注解表示变量最多被修改一次,称为“稳定的”。// @Stable 注解表示变量最多被修改一次,称为“稳定的”。@Stable。

2024-03-13 21:39:46 916

原创 Redis 八种常用数据类型详解

String 是 Redis 中最简单同时也是最常用的一个数据类型。String 是一种二进制安全的数据类型,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的 base64 编码或者解码或者图片的路径)、序列化后的对象。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种简单动态字符串SDS。

2024-03-13 21:38:35 679

原创 焦虑秋招选手,成功拿到了美团、百度、阿里等大厂offer!

面经就先写这几家吧,其他的几家也跟这其实差不多,项目+八股,所以简历上所有东西一定要全部弄明白,面试官问的太难也别害怕,落落大方点,太难了不会就是不会,可能他们一开始就没想要你,就算舔的通过了,薪资啥的也不太行,心里别太有负担,适合你的公司肯定会出现。其实给我最大的感受就是,在时代浪潮面前,我们每个人的努力显得渺小无力,但个人的努力和知识积累,会让你在当前时代下有较好选择。最后呢,回想起这整整一年的经历,感觉挺不易,就像人生的道路一样,哪有一帆风顺,但好在自己一直没有放弃,一直在努力。

2024-02-29 15:51:16 85

原创 美团面试:Redis 除了缓存还能做什么?可以做消息队列吗?

这是一道面试中常见的 Redis 基础面试题,主要考察求职者对于 Redis 应用场景的了解。即使不准备面试也建议看看,实际开发中也能够用到。

2023-11-02 20:19:04 825

原创 JDK21的虚拟线程是什么?和平台线程什么关系?

关于平台线程和系统内核线程的对应关系多提一点:在 Windows 和 Linux 等主流操作系统中,Java 线程采用的是一对一的线程模型,也就是一个平台线程对应一个系统内核线程。JVM 调度程序通过平台线程(载体线程)来管理虚拟线程,一个平台线程可以在不同的时间执行不同的虚拟线程(多个虚拟线程挂载在一个平台线程上),当虚拟线程被阻塞或等待时,平台线程可以切换到执行另一个虚拟线程。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。线程类,这样可以平滑的过渡到虚拟线程的使用。

2023-10-17 16:15:40 6558

原创 美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?

周末的时候,有一位小伙伴提了一些关于的问题,都是他最近面试遇到的。原提问如下(星球原贴地址:https://t.zsxq.com/11jcuezQs ):下面我会以此提供这两个问题的详细答案,希望对你有帮助。

2023-08-28 21:07:51 1151

原创 Redis持久化机制 RDB、AOF、混合持久化详解!如何选择?| JavaGuide

Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis 创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用。快照持久化是 Redis 默认采用的持久化方式,在redis.confsave 900 1 # 在 900 秒(15 分钟) 之后,如果至少有 1 个key发生变化,Redis就会自动触发bgsave命令创建快照。

2023-07-27 19:31:48 458

原创 Java 成员变量与局部变量有什么区别?

(Github 标星 134k star!「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识)

2023-05-18 15:55:51 868

原创 三分钟看懂JDK、JRE和JVM的区别和联系

节选自(Github 标星 134k star!「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识)

2023-05-18 15:41:34 1180

原创 为什么浮点数运算的时候会有精度丢失的风险?如何解决浮点数运算的精度丢失问题?

这个和计算机保存浮点数的机制有很大关系。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。这也就是解释了为什么浮点数没有办法用二进制精确表示。可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过。关于浮点数的更多内容,建议看一下。为什么会出现这个问题呢?

2023-04-08 22:13:39 766

原创 Java 变量常见面试题总结

摘自。

2023-04-08 22:11:54 549

原创 Java 自增自减运算符和移位运算符介绍

当运算符放在变量之后时(后缀),先赋值,再自增/减。在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(–)。由于左移位数大于等于 32 位操作时,会先求余(%)后再进行左移操作,所以下面的代码左移 42 位相当于左移 10 位(42%32=10),输出结果和前面的代码一样。掌握最基本的移位运算符知识还是很有必要的,这不光可以帮助我们在代码中使用,还可以帮助我们理解源码中涉及到移位运算符的代码。

2023-04-07 14:08:55 700

原创 Oracle JDK 和 OpenJDK 有什么区别?

(个人观点:众所周知,JDK 原来是 SUN 公司开发的,后来 SUN 公司又卖给了 Oracle 公司,Oracle 公司以 Oracle 数据库而著名,而 Oracle 数据库又是闭源的,这个时候 Oracle 公司就不想完全开源了,但是原来的 SUN 公司又把 JDK 给开源了,如果这个时候 Oracle 收购回来之后就把他给闭源,必然会引起很多 Java 开发者的不满,导致大家对 Java 失去信心,那 Oracle 公司收购回来不就把 Java 烂在手里了吗!OpenJDK 更新频率更快。

2023-04-07 14:07:16 1704 2

原创 为什么说 Java 语言“编译与解释并存”?

这是因为 Java 语言既具有编译型语言的特征,也具有解释型语言的特征。因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(技术,已经缩小了这两种语言间的差距。这种技术混合了编译语言与解释型语言的优点,它像编译语言一样,先把程序源代码编译成。文件),这种字节码必须由 Java 解释器来解释执行。的时候已经提到过,因为比较重要,所以我们这里再提一下。到执行期时,再将字节码直译,之后执行。为了改善编译语言的效率而发展出的。是这种技术的代表产物。

2023-04-07 13:52:05 597

原创 什么是 Java 字节码?采用字节码的好处是什么?

HotSpot 采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是 JIT 所需要编译的部分。JVM 会根据代码每次被执行的情况收集信息并相应地做出一些优化,因此执行的次数越多,它的速度就越快。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。

2023-04-07 13:40:12 632

原创 JVM 、JDK 、JRE都是什么意思?有什么区别?

摘自(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

2023-04-07 13:39:39 847

原创 面试官:什么是双亲委派模型?如何打破它?

类加载器从 JDK 1.0 就出现了,最初只是为了满足 Java Applet(已经被淘汰) 的需要。后来,慢慢成为 Java 程序中的一个重要组成部分,赋予了 Java 类可以被动态加载到 JVM 中并执行的能力。根据官方 API 文档的介绍:翻译过来大概的意思是:类加载器是一个负责加载类的对象。是一个抽象类。给定类的二进制名称,类加载器应尝试定位或生成构成类定义的数据。典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。每个 Java 类都有一个引用指向加载它的。

2023-03-08 15:08:35 516

原创 万字详解,吃透 MongoDB!

TTL 索引提供了一个过期机制,允许为每一个文档设置一个过期时间,当一个文档达到预设的过期时间之后就会被删除。TTL 索引除了有属性外,和普通索引一样。数据过期对于某些类型的信息很有用,比如机器生成的事件数据、日志和会话信息,这些信息只需要在数据库中保存有限的时间。TTL 索引运行原理。

2023-01-29 15:24:38 2496

原创 1.5万字总结 Redis 常见面试题&知识点

Redis是一个基于 C 语言开发的开源数据库(BSD 许可),与传统数据库不同的是 Redis 的数据是存在内存中的(内存数据库),读写速度非常快,被广泛应用于缓存方向。并且,Redis 存储的是 KV 键值对数据。为了满足不同的业务场景,Redis 内置了多种数据类型实现(比如 String、Hash、Sorted Set、Bitmap)。并且,Redis 还支持事务 、持久化、Lua 脚本、多种开箱即用的集群方案(Redis Sentinel、Redis Cluster)。

2023-01-11 11:39:24 927

原创 Spring Boot 3.0 正式发布了!一个超重要的版本!!

如果你当前运行的是早期版本的 Spring Boot,建议先升级到 Spring Boot 2.7,然后再迁移到 Spring Boot 3.0。你可在 Spring Boot 的官方 wiki 中找到 3.0 版本的全面详细的新功能/新改进介绍,地址:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes。这是一个非常非常重要的版本,意味着一个新的征程开始了!次 commit 的贡献。

2022-11-25 18:20:26 4027

原创 BigDecimal详解和精度问题

BigDecimal可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过BigDecimal来做的。浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断。具体原因我们在上面已经详细介绍了,这里就不多提了。想要解决浮点数运算精度丢失这个问题,可以直接使用BigDecimal来定义浮点数的值,然后再进行浮点数的运算操作即可。// 0。

2022-08-25 15:56:13 474

原创 1.2 w字+!Java IO 基础知识系统总结 | JavaGuide

IO 即,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。...

2022-08-18 14:42:28 426

原创 面试常问:HTTP 1.0 和 HTTP 1.1 有什么区别?

连接方式: HTTP 1.0 为短连接,HTTP 1.1 支持长连接。状态响应码: HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。比如说,——在请求大资源前的预热请求,——范围请求的标识码,——请求与当前资源的规定冲突,410 (Gone)——资源已被永久转移,而且没有任何已知的转发地址。缓存处理。...

2022-08-16 21:29:08 935

原创 Spring 常见面试题总结 | JavaGuide

Spring是一款开源的轻量级Java开发框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说Spring框架指的都是SpringFramework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说Spring支持IoC(InverseofControl控制反转)和AOP(Aspect-OrientedProgramming语言的流行通常需要一个杀手级的应用,Spring就是Java生态的一个杀手级的应用框架。https...

2022-08-01 19:04:44 490

原创 Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)详解 | JavaGuide

String是Redis中最简单同时也是最常用的一个数据结构。String是一种二进制安全的数据结构,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的base64编码或者解码或者图片的路径)、序列化后的对象。虽然Redis是用C语言写的,但是Redis并没有使用C的字符串表示,而是自己构建了一种简单动态字符串SDS)。Redis中的List其实就是链表数据结构的实现。我在线性数据结构数组、链表、栈、队列LinkedList双向链表HashMap。和。...

2022-07-26 15:08:59 478

原创 MySQL 锁常见知识点&面试题总结

MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发写的情况下性非常差。InnoDB 不光支持表级锁(table-level locking),还支持行级锁(row-level locking),默认为行级锁。行级锁的粒度更小,仅对相关的记录上锁即可(对一行或者多行记录加锁),所以对于并发写入操作来说, InnoDB 的性能更高。表级锁和行级锁对比 :InnoDB 的行锁是针对索引字段加的锁,表级锁是针对非索引字段加的锁。当我们执行 、 语句时,如果 条件中字段没

2022-06-29 21:17:25 560

原创 SpringBoot + JWT + Redis 开源知识社区系统

你好,我是 Guide!这里是 JavaGuide 的「优质开源项目推荐」第 9 期,每一期我都会精选 5 个高质量的 Java 开源项目。前 8 期的「优质开源项目推荐」传送门:https://javaguide.cn/open-source-project/你可以通过 awesome-java (非常棒的 Java 开源项目集合,找 Java 项目必备)找到更多优质的 Java 开源项目。mini-spring-cloud 是一个手写的简化版的 Spring Cloud,旨在帮助你快速熟悉 Spring

2022-06-24 08:20:49 997 3

原创 Java 基础常见知识点&面试题总结(下),2022 最新版!

你好,我是 Guide。秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你。前两篇:Java 异常类层次结构图概览 :在 Java 中,所有的异常都有一个共同的祖先 包中的 类。 类有两个重要的子类:Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 或者 关键字处理的话,就没办法通过编译。比如下面这段 IO 操作的代码:除了及其子类以外,其他的类及其子类都属于受检查异常 。常见的受检查异常有: IO 相关的

2022-06-21 17:02:33 538

原创 普通人的2022春招总结(阿里、腾讯offer)

写这篇文章的时候,腾讯 offer 已经下来了,春招也算结束了,这次找暑期实习没有像去年找日常实习一样海投,只投了 BAT 三家,阿里和腾讯收获了 offer,字节没有给面试机会,可能是笔试太拉垮了。楼主大三,双非本科,我的春招的起始时间应该是 2 月 20 日到 3 月 23 日收到阿里意向书为止,但是从 3 月 7 日蚂蚁技术终面面完之后就没有面过技术面了,只面过两个 HR 面,剩下的时间都在等 offer。最开始是找朋友内推了字节财经的日常实习,但是到现在还在简历评估,后面又投了财经的暑期实习,笔试之

2022-06-20 12:05:13 557

原创 一文带你搞懂 JWT 常见概念 & 优缺点

在 JWT 基本概念详解这篇文章中,我介绍了:这篇文章,我们一起探讨一下 JWT 身份认证的优缺点以及常见问题的解决办法。相比于 Session 认证的方式来说,使用 JWT 进行身份认证主要有下面 4 个优势。JWT 自身包含了身份验证所需要的所有信息,因此,我们的服务器不需要存储 Session 信息。这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。不过,也正是由于 JWT 的无状态,也导致了它最大的缺点:不可控!就比如说,我们想要在 JWT 有效期内废弃一个 JWT 或者更改它的权限的话,并

2022-06-17 11:30:03 486

原创 我的 Java 学习&面试网站又又又升级了!

晚上好,我是 Guide。距离上次介绍 JavaGuide 新版在线阅读网站已经过去 7 个多月了(相关阅读:官宣!我升级了!!!),这 7 个多月里不论是 JavaGuide 的内容,还是 JavaGuide 新版在线阅读网站,都进行了非常多的完善改进。从 3452 commits 到 4145 commits,不算多不算少。用心维护,真心希望能够提供帮助给需要的小伙伴。最近有很多小伙伴在备战秋招,为了能够助力大家准备面试,今天再来简单介绍一下 JavaGuide 新版在线阅读网站的近况。即使你不准备面试

2022-06-14 20:51:31 416 1

原创 Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide

你好,我是 Guide。秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你。上篇:Java 基础常见知识点&面试题总结(上),2022 最新版!原文地址: https://javaguide.cn/java/basis/java-basic-questions-02.html两者的主要区别在于解决问题的方式不同:另外,面向对象开发的程序一般更易维护、易复用、易扩展。相关 issue : 面向过程 :面向过程性能比面向对象高??new 运算符,new 创建对象

2022-06-13 20:40:05 321

原创 Java 基础常见知识点&面试题总结(上),2022 最新版!| JavaGuide

你好,我是 Guide。秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你。🌈 拓展一下:“Write Once, Run Anywhere(一次编写,随处运行)”这句宣传口号,真心经典,流传了好多年!以至于,直到今天,依然有很多人觉得跨平台是 Java 语言最大的优势。实际上,跨平台已经不是 Java 最大的卖点了,各种 JDK 新特性也不是。目前市面上虚拟化技术已经非常成熟,比如你通过 Docker 就很容易实现跨平台了。在我看来,Java 强大的生态.

2022-06-09 14:34:29 922

httpclient+jpoup的jar包

网络爬虫用的jar包。 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2017-09-23

基于UDP协议的简易聊天机器人

详细详细内容请查看我的博客

2017-06-23

Java案例之随机验证码功能实现

实现的功能比较简单,就是随机产生了四个字符然后输出。效果图如下,下面我会详细说一下实现这个功能用到了那些知识点,并且会把 这些知识点详细的介绍出来。哈哈 ,大神勿喷,对于初学Java的人帮助应该蛮大的。嘿嘿。

2017-06-06

数据结构课程设计

数据结构的课程设计DOS命令菜单实现了链表,栈以及数组,二叉树,图的大部分应用。

2017-06-06

Android编程权威指南(第2版).pdf 高清版

Android编程权威指南(第2版).pdf

2017-04-17

Java思维导图

思维导图完美展现Java知识体系结构,

2017-04-17

java实战之贪吃蛇

自己学java 花了1个月写了这个贪吃蛇,在网上找了一下 没有比我这个代码更简洁,注释更详细的了,希望可以给爱java的程序猿一点帮助.

2016-12-11

如何修改APP图标

很简单容易理解的适合新手的修改自己制作的APP图标的方法

2016-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除