- 博客(248)
- 资源 (3)
- 收藏
- 关注

原创 超详细!JDK 8 下载、安装和环境配置(macOS 和 Windows 版本)
【阿里校招提前批开始啦,2022 届搞 Java 的朋友请联系我内推,多一次面试机会!】 前言 Java 是一门开源的程序设计语言,它配套的 JDK 同样也是可以免费下载使用的。不过 JDK 的使用对于新手来讲,稍微有一点点门槛,因为涉及到一些特殊的配置,还是有些麻烦的。 不过没关系,蜗牛准备了保姆级的超详细教程,帮你快速用上 JDK!!! 上一篇文章,学习 Java,使用哪个版本最好,我们选择了 JDK 8,因此本文就以 JDK 8 为例,介绍它的下载、安装和环境配置全过程。 JDK 8 下载 JDK
2021-03-02 08:45:31
125755
78

原创 万字多图 | UML 入门指南
这里写自定义目录标题一、前言二、从一个示例开始三、什么是 UML?3.1 为什么称为语言3.2 什么是建模3.3 统一的意义在哪四、为什么需要 UML五、UML 的适用场景六、UML 的组成结构6.1 核心元素6.1.1 版型6.1.2 参与者6.1.3 用例6.1.4 边界6.1.5 业务实体6.1.6 包6.1.7 分析类6.1.8 设计类6.1.9 关系6.1.10 组件6.1.11 节点6.2 核心视图6.2.1 结构视图6.2.1.1 用例图6.2.1.2 类图6.2.1.3 对象图6.2.1.4
2021-01-14 01:47:33
840
2

原创 夯实基础系列一:Java 基础总结
前言 大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性。互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了。 而学习新技术总要付出一定的时间成本,那么怎么降低时间成本呢?那就是打好基础,技术再怎么革新,底层的东西也很少会变动,牢固的基础会帮助你在各种新技术的学习中游刃有余,快速上手。 因为我选择的方向是后...
2018-09-19 22:58:02
1128
原创 2024,写给自己
现在是 2025 大年初一的零点,看了会窗外漂亮的烟花,躺在沙发上,听着炮声,想写点东西。写给自己的信上次更新还是 2023 年,转眼两年没更新。我发现随着年岁渐长,工作渐忙,表达欲下降了很多。但 2024 年是个特别的年份,值得记录一些重要碎片。2024 年是我冲太岁的一年,我求了太岁符装手机壳,但也发生了很多印象深刻的事情。工作方面,元旦后投入面试准备,过年前面试基本结束,过年后拿到两家目标公...
2025-01-29 11:21:28
282
原创 字节面试高频百题(四)
继续分享面试经常出现的算法题和解法。第一部分见:字节面试高频百题(一)第二部分见:字节面试高频百题(二)第三部分见:字节面试高频百题(三)61、反转数字牛客 57 反转数字https://www.nowcoder.com/practice/1a3de8b83d12437aa05694b90e02f47a?tpId=117思路:注意不能引入 long 类型通过求余倒着计算结果,每加入一个字符要判断下...
2024-04-09 08:06:43
788
原创 字节面试高频百题(三)
继续分享面试经常出现的算法题和解法。第一部分见:字节面试高频百题(一)第二部分见:字节面试高频百题(二)41、判断回文牛客 141 判断是否为回文字符串:https://www.nowcoder.com/practice/e297fdd8e9f543059b0b5f05f3a7f3b2?tpId=117思路:前后指针相向而行publicbooleanjudge(Strings){ ...
2024-03-25 08:15:11
1208
原创 字节面试高频百题(二)
分享面试经常出现的算法题和解法。第一部分见:字节面试高频百题(一)21、按之字形顺序打印二叉树牛客 14 按之字形顺序打印二叉树https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=117&tqId=37722思路:借助队列的层序遍历+偶数层翻转结果ArrayList<ArrayList<...
2024-03-18 08:15:20
1014
原创 字节面试高频百题(一)
分享面试经常出现的算法题和解法。1、反转链表牛客 78 反转链表:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca//遍历解法 publicstaticListNodereverseList(ListNodehead){ if(head==null)returnnull; ...
2024-03-04 20:05:09
1207
原创 字母异位词分组 | LeetCode中等算法题
题目描述给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例 1:“输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]”示例 2:“输入: strs = [""...
2023-10-23 08:20:55
206
原创 我二十九啦!
不知不觉又到生日了。小时候希望时间快点,想快快长大,见识更大的世界,长大了希望时间慢点,想慢慢感受,珍惜每一个当下。美好的时光总是显得短暂,二十八岁很快过去,迎来了二十打头的最后一年。我一直觉得二十打头的十年,是很多人的黄金十年。这个十年,是好奇心和身体精力最旺盛的阶段,会经历学生到职场人角色的转变,会感受事业上的节节攀升,可能也会完成建立小家庭的人生大事。二十八岁,无疑是我这十年中印象深刻的一年...
2023-10-13 01:35:40
183
原创 2022 年,写给自己
今天是 2023 年的立春,正式由壬寅年进入癸卯年。按照惯例,继续给自己写一封信,来总结 2022 年,以及展望未来(稍微晚了点)。前言开头依然放《原则》作者 瑞·达利欧 的一句话,献给看到这些文字的人。“如果你现在不觉得一年前的自己是个蠢货,那说明你这一年没学到什么东西。——瑞·达利欧”依然采用是上一封信形成的复盘框架,通过【变化】【价值】【认知】三个维度来回顾过去,通过【目标】【风险】【策略...
2023-02-04 20:08:49
596
原创 我二十八啦!
虽然阴差阳错,经常每年过好几个生日,但我还是最认可农历生日。也就是今天,我又涨了一岁。时间啊,过得太快了,上次生日写的寄语《我二十七》,仿佛就在昨天。按照惯例,今天也写点寄语,寄给未来的自己。现在的我,思想上已经不再出现大的变化,大的方向基本定调,后续新的思绪,新的想法,无非是在此基础上添砖加瓦,修修补补。行动上却存在着极大的变数,创造可能性,筛选可能性,消灭可能性,在分叉口和单行道上不断前行。...
2022-09-24 21:35:23
259
原创 成为 B 站阿婆主...
大家好,我是蜗牛哥。对于学习媒介,人们接收能力从高到低依次是现场,视频,音频,文字。我本身也比较喜欢剪辑视频,感觉是挺有创造感有意义感有成就感的一件事,所以最近打算持续在 B 站输出一些技...
2022-03-21 09:04:44
267
原创 如果明天你的职业消失了,该怎么办
大家好,我是蜗牛哥。周末愉快,我们随便聊聊~身为互联网人,一直切身感受着互联网带给我的便利,也吃到了互联网带给我的红利,成为互联网从业者,拿着高薪,稳定的进行职场成长。但从去年开始,一切都...
2022-03-19 20:37:00
343
原创 手写的第一个 Java 应用程序,执行的时候发生了什么
## 前言 在上一篇文章 超详细!JDK 8 下载、安装和环境配置(macOS 和 Windows 版本)的介绍下,我们已经搭好 Java 开发环境了,本文我们就实战一下,编一个 Java 应用程序,程序运行的时候能看到 Hello World 的输出。 我们同时分析下从编码到运行的整个过程,都发生了什么! 编码输出 Hello World 我们不借助任何的集成开发环境,就用最原始的手写的方式来编码! 计算机上手写的话,就是往记事本上敲代码。 Windows 用户可以直接打开记事本,macOS 用户可以在控
2022-03-18 08:30:00
208
4
原创 学习 Java,使用哪个版本最好
前言 工欲善其事,必先利其器。我们要学习和使用 Java 语言,就需要搭建好 Java 的开发环境,边学习知识,边实践编码,可以更好的体会 Java 这门语言的精髓。 什么是 JDK 看过 学习 Java 语言,你必须知道的 Java 简史 的同学应该知道,Java 在诞生时,就为我们配备了 Java 的运行环境和开发工具,而这些,都打包在了 JDK 里面。 JDK 全称 Java Development ToolKit,直译一下就是 Java 语言开发工具包。 JDK 包含了 开发者工具比如 javac.
2022-03-16 08:30:00
5029
1
原创 学习 Java 语言,你需要知道的 Java 简史
阅读本文你将收获: 为什么要学习 Java Java 这门语言如今是互联网行业炙手可热的编程语言,像阿里、美团这些大厂,技术体系都是建立在 Java 之上。这些大厂又是很多新兴互联网企业的技术风向标,因此 Java 使用范围相当的广,对 Java 程序员的需求量就相当的大。 Java 不仅仅是一杯热腾腾的咖啡,还可以是一个靠得住的饭碗! 蜗牛从大学开始就接触 Java,工作之后也一直是使用 Java 这门程序设计语言作为编程首选。希望结合自己的知识体系和实践经验,产出 Java 学习的一系列教程,能够帮助
2022-03-14 08:30:00
358
2
原创 有了这个插件,再也不用担心代码不合规范了
大家好,我是蜗牛哥。 在阿里待了这么多年,有个软件一直在用,那就是 IDEA,这是宇宙最好用的 Java IDE,没有之一! IDEA 的开放能力做的还不错,可以添加很多插件,让我们的很多开发工作更加便捷。 我装的插件其实没几个,但有一款是一直以来在用的,那就是——阿里巴巴代码规约插件。 这个插件呢,是阿里巴巴基于《阿里巴巴 Java 开发手册》中的内容,研发出的一套自动化的 IDE 检测插件。 目前插件实现了开发手册中的 53 条规则,大部分基于 PMD 实现,其中有 4 条
2022-03-11 08:30:00
1438
7
原创 春招来了,阿里学长和你聊聊必须要关注的几件事儿
前言每年阳春三月,各大互联网公司都会陆续启动春季校园招聘,简称春招。春招主要面向第二年毕业的同学,企业招来做实习生,同时也作为正式员工的储备资源。当然也会覆盖少量当年毕业的同学,这种情况一...
2022-03-10 21:25:16
384
原创 UML 视图常用元素参考
1. 用例图常用元素 2. 类图常用元素 3. 活动图常用元素 4. 状态图常用元素 5. 时序图常用元素 6. 协作图常用元素
2022-03-10 08:00:00
433
原创 排序算法稳定性
定义 排序前后两个相等的数相对位置不变,则稳定 稳定性的好处 从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用 各排序算法的稳定性 堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法 基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法 冒泡排序 小的元素往前调或者把大的元素往后调 比较是相邻的两个元素比较,交换也发生在这两个元素之间 稳定排序算法 选择排序 每个位置选择当前元素最小的 在一趟选择中,如果当前元素比一个元素小,而该
2022-03-09 08:00:00
280
原创 【Java实现经典算法】有理数四则运算
题目描述 本题要求编写程序,计算2个有理数的和、差、积、商。 输入描述: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数, 其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。 输出描述: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。 注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分; 若为负数,则须加括号; 若除法分母为0,则输出“Inf”。 题目
2022-03-08 08:00:00
834
原创 【Java实现经典算法】找出数组中重复最多的数
找出数组中重复最多的数 public static int getRepeatMost(int a[]){ Map<Integer,Integer> map = new HashMap<Integer,Integer>(); //记录每个元素出现的次数 for(int i = 0;i < a.length;i++){ if(map.containsKey(a[i])){ map.put(a[i], map
2022-03-07 08:00:00
1929
1
原创 校招来袭,我把当年进阿里的学习笔记拿出来分享给大家~
每年春天和秋天,对于第二年毕业,打算从事互联网行业工作的同学,都是特别重要的两个季度。因为各个厂的校园招聘集中在这两个季度,春招主要是实习生招聘,秋招主要是正式招聘。天气...
2022-03-05 20:02:00
369
原创 【Java 实现经典算法】数字黑洞
题目描述 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序 然后用第1个数字减第2个数字,将得到一个新的数字。 一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 输入描述 输入给出一个(0, 10000)区间内的正整数N。 输出描述: 如果N的4位数字全相等,则在一行内输出“N - N = 0000” 否则将计算的每一步在一行内输出,直到6174作为差出现 注意每个数字按4位数格式输出。 代码实现 pa
2022-03-04 08:00:00
513
原创 【Java 实现经典算法】每K个结点反转单链表
题目描述 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。 例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4; 如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。 思路 通过链表长度和K值确定需要反转的结点数 每K个反转成新链表,把头保存到List中 需要反转的结点数已到并且剩下的结点数不足K个,不反转,即把当前结点存到List中 把List中各个链表连接 代码 package com.liuyong666.pat; impo
2022-03-02 03:00:00
606
原创 【Java 实现经典算法】科学计数法
题目描述 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法 其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+ 即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出 现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留 输入描述: 每个输入包含1个测试用例,即一个以科学计数法表示的实数A。 该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。 输出描述: 对每个测试用例,
2022-02-28 08:00:00
2777
原创 剑指Offer之三十-最小的K个数
题目描述 输入n个整数,找出其中最小的K个数。 例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 解法1 对数组排序,取前边k个数存到list集合中 该解法时间复杂度依赖于排序 代码实现 public ArrayList<Integer> getLeastNumbers(int [] input, int k) { ArrayList<Integer> list = new ArrayList<Integer>(); i
2022-02-23 08:15:00
145
1
原创 剑指Offer之二十九-数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 如果不存在则输出0。 解法1 使用map,键存元素,值存出现的次数 发现有某个元素的次数超过数组长度的一半,则返回该元素 代码实现 public int moreThanHalfNum(int [] array) { if(array == null || array.length == 0
2022-02-21 08:15:00
201
原创 剑指Offer之二十八-字符串的排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 思路 先不考虑是否出现重读字符,要对一个字符进行全排列,可以把第一个字符和后面的字符看成两部分 而第一个字符后面的字符又可以看成第一个字符和后面两部分,是一个递归过程 只要第一个字符的位置没有到达字符串的末尾
2022-02-20 10:00:00
152
原创 Java 实现经典算法之格雷码
格雷码 格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示 假设使用 n 位元来表示每个数字,任两个数之间只有一个位元值不同 如果要产生n位元的格雷码,那么格雷码的个数为2^n n位元格雷码是基于n-1位元格雷码产生的 算法 产生 0, 1 两个字符串。 在第一步的基础上,每一个字符串都加上0和1,但是每次只能加一个,所以得做两次。这样就变成了 00,01,11,10 (注意对称)。 在第二步的基础上,再给每个字符串都加上0和1,同样,每次只能加一个,这样就变成了 000,001,01
2022-02-19 11:46:54
646
原创 剑指Offer之二十七-二叉搜索树与双向链表
二叉树结构 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路: 由于二叉搜索树的中序遍历就是排序的,如果是构造单链表,
2022-02-18 08:30:00
118
原创 剑指Offer之二十六-复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。 复制一个复杂链表 结点定义 class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; public RandomListNode(int label){ this.label = label; } } 解析 遍历链表,每个结点后边复制相同的结
2022-02-17 08:30:00
184
原创 剑指Offer之二十五-二叉树中和为某一值的所有路径
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 解析 先序遍历,将遍历过的结点放到A集合中 当遍历到叶子结点并且和恰好是目标值时,将遍历经过的所有结点放到B集合中,B则是满足题意的一条路径 如果遍历到叶子结点和仍然不等于目标值,那么就移除A集合中添加的结点,修改和,切换到右孩子结点重新计算 如果没有遍历到叶子结点就从孩子结点中继续寻找这样的路径 二叉树定义 class TreeNode {
2022-02-16 08:30:00
116
原创 剑指Offer之二十四-二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回ture,否则返回false。 假设输入的数组的任意两个数字都互不相同。 解析 找到根结点 从头遍历序列,第一个比根结点大的元素为右子树的起点 判断右子树是否都比根结点大,若不是返回false,若是,进行下一步 分别把左子树和右子树都以上面规则进行判断,若左右子树都能返回true,则整个序列为二叉搜索树的后序遍历序列,返回true 代码实现 public boolean verifySquenceOfBST(in
2022-02-15 08:30:00
90
原创 剑指Offer之二十三-从上往下打印二叉树
二叉树结构 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解析 考察层序遍历 每一次打印一个结点的时候,如果该结点有子节点,则把该结点的子节点放到一个队列的末尾。 接下来到队列的头部
2022-02-13 11:25:54
104
原创 剑指Offer之二十二-栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列12345是某栈的压栈序列,序列45321是该压栈序列对应的一个弹出序列,但43512就不可能是该压栈序列的弹出序列。 解析 栈的特点是FIFO 压入序列是确定的,则压入序列之间的元素可能会经历压入后马上被弹出的情况 具体思路为: 根据弹出序列的第一个值,判断在该元素之前被压入栈的所有元素. 栈顶元素与弹出序列第一个值进行比较,等则判断弹出序列的下一个元素,判断依
2022-02-11 08:45:00
363
原创 剑指Offer之二十一--包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 解析 在数据栈的基础上维护一个用来存放最小值的辅助栈 每次入栈,新入栈的元素都要和辅助栈栈顶元素比较,如果新入栈的元素更小,就让它也加入最小栈中,否则最小栈再次压入其栈顶元素 每次出栈,数据栈和辅助栈同时弹出元素 这样就可以保证在任何情况下,辅助栈栈顶元素始终是数据栈中的最小元素 代码实现 public class MinFunctionStack{ Stack<Integer> data = new
2022-02-10 08:45:00
184
原创 剑指Offer之二十--顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1,2,3,4, 8,12,16, 15,14,13, 9,5, 6,7, 11, 10 解析 因为每打印一圈都会改变起始坐标,所以需要先确定矩阵大小与起始坐标的关系 比如4阶矩阵,第一圈起始坐标为(0,0),第二圈起始坐标为(1,1),.
2022-02-09 08:45:00
370
原创 作为面试官,我最关心候选人哪些特质
一、前言最近频繁面试社招的同学,所以我想结合自己的亲身体验,谈谈作为面试官,我最关心候选人哪些特质。在面试官视角,其实我的面试经验不太多,有过校招,有过社招,面试过的人基本两只手就可以数的过来。不过这些为数不多的候选人,给了我真实的面试体验,也让我对考察人这件事上有了新的理解。二、面试流程近期先后面试了两位候选人,都是社招,岗位是 Java 后端方向,面试时长 60 分钟。因为是社招,所以主要通过候选人做过的项目,考察他的技术基础、工程素养、协作能力以及解决问题的能力。面试的基本套路就是 STAR 原则,也
2022-02-08 11:36:38
894
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人