自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (1)
  • 收藏
  • 关注

原创 【LeetCode - Java】121. 买卖股票的zui佳时机 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 暴力穷举(卒 | 时间超限)3.2 动态规划1. 题目描述2. 解题思路题目初看很简单,以为用暴力穷举可以解决问题,其时间复杂度为O(n²),后来想想用暴力肯定时间超限,一提交果然如此,那就另寻他路。思考一下,假如我要今天卖出这个股票,那我什么时候买入才是赚钱最多的呢?毫无疑问,当我在今天之前的最低点买入,那我在今天卖出就可以赚最多的钱。既然这个问题思考清楚了,算法应该就没问题了,只需要遍历一次数组,在每一天时候对比今天之前(第0到i天)的

2022-01-22 10:22:02 451

原创 【LeetCode - Java】118. 杨辉三角 (简单)

目录1. 题目描述2. 解题思路3. 代码实现1. 题目描述2. 解题思路杨辉三角相信大家都已经非常熟悉了,它的规律也很简单,首尾为1,每一位数都是上一行中相邻两位的相加,直接套两个for循环就完事了,注意只需要特别处理一下n=1的时候。其时间复杂度为O(n²),空间复杂度其实我觉得是O(0) 的,因为没有占用任何除返回值外的存储空间。3. 代码实现public List<List<Integer>> generate(int numRows) { Lis

2022-01-21 14:42:12 268

原创 【LeetCode - Java】108. 将有序数组转换为二叉搜索树 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 递归3.2 迭代3.3 对比1. 题目描述2. 解题思路有序数组转换为二叉搜索树,且需要高度平衡,那么最好的一个切入点就是取数组的中间位置元素作为新建节点的值,如此递归下去便可以得到高度平衡的二叉搜索树。还是那句话,递归有点简单不够过瘾,因此用迭代来整整看。相对递归而言迭代就比较麻烦了,同样需要使用广度优先搜索的概念逐层处理,这时候同样需要一个队列结构,先进先出,但要注意的是,需要存储的不仅仅是数组,还需要存储一个节点,不然我不知道我应该处理

2022-01-21 12:14:58 466

原创 【LeetCode - Java】104. 二叉树的最大深度 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 递归(深度优先搜索)3.2 迭代(广度优先搜索)3.3 对比1. 题目描述2. 解题思路对于二叉树来说,递归yyds,对于本道题目而言,递归也是最简单的实现方法,即深度优先搜索,简单分析即可知道每一层的深度是孩子的最大深度加一。太简单了有点不过瘾,想用迭代来实现一下,简单分析便可知道使用迭代必须把每一层节点的子节点存储起来,用于下一次的迭代中,突然发现,这不就是广度优先搜索的思想嘛,对于这个子节点存储用什么数据结构我们还是要考虑一下的,应该是要

2022-01-20 21:15:34 619

原创 【LeetCode - Java】101. 对称二叉树 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 利用中序遍历(卒 | 小部分情况无法解决 除非构建满二叉树)3.2 递归3.3 迭代3.4 对比1. 题目描述2. 解题思路这道题目一开始我其实是并不想从纯结构方面去判断一个二叉树是否对称的,总感觉有没有一点稍微“高级”的方法,于是想起了昨天做的中序遍历,会不会利用中序遍历结果可以判断呢?那就一起来看看看起来是似乎可以通过判断中序遍历输出是否回文数来间接判断这棵树是否对称,当我信心满满地提交代码后发现,对于这个树,我是错了的:然后我又思

2022-01-20 18:26:15 803

原创 【LeetCode - Java】94. 二叉树的中序遍历 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 递归3.2 迭代3.3 改进Morris算法3.4 对比1. 题目描述2. 解题思路二叉树无论是前序、中序还是后序遍历,利用递归都是可以很简单地实现并且通俗易懂的。在本道题目中使用迭代算法实现才是有挑战性的任务。递归是使用了栈,那么毫无疑问使用迭代算法时需要人为地构造栈结构,那么难点在于什么部分呢?其难点正是在于出栈入栈的规则设定,实不相瞒,昨晚想了一个多小时愣是卡住了没想出来,今早吃完个早餐突然就有了想法了,这可能就是心理学当中的酝酿效应吧。

2022-01-19 14:33:48 506

原创 【LeetCode - Java】88. 合并两个有序数组 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 逆向双指针1. 题目描述2. 解题思路我们注意到,这个题目的nums1数组后面的空的,而nums1的前部和nums2数组都是一个非递减的有序数组,因此我们可以对nums1的前部与nums2进行逆序对比,取大值对nums1进行从后往前进行逆序赋值。在过程中会出现两种情况,一是nums1前部的值都已经被使用了,那么只需要把nums2剩下还没被使用的全部赋值到nums1前部即可;二是nums2已经全部被使用了,那么可以直接返回,nums1前部不需要再进

2022-01-18 14:02:09 461

原创 【LeetCode - Java】70. 爬楼梯 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 递归树(卒 | 时间超限)3.2 动态规划1. 题目描述2. 解题思路爬楼梯,该怎么爬呢?那我们先来找找规律,于是我利用excel穷举了一下n=5到n=8的情况看起来在排列组合上似乎有一点点规律,但仔细看看规律又不太明显,然后只能放弃这种想法。晚上躺在床上睡觉前突然想到,这只能一步楼梯或者两步楼梯,不就有点像二叉树的两个子节点,利用自身剩余的步数来构建子节点,直到生成叶子节点,那么途经的节点组合就为一种爬楼梯方法,只要能够得出这一棵树的所有

2022-01-18 11:45:16 461

原创 【LeetCode - Java】69. Sqrt(x) (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 穷举法3.2 区段穷举法3.3 二分法(写法一)3.4 二分法(写法二)3.5 牛顿迭代法3.6 对比1. 题目描述2. 解题思路最低级的思路,就是穷举,这也是我一开始所尝试的思路,只需要从0开始判断即可,但是对于一些很大的数,从0开始穷举太过于漫长了,过于浪费时间,于是我开始寻找有没有一种方法可以选取一个离目标点更近的起始点开始穷举。灵机一动想起有部分题目可以使用 “移位” 的方法来解决,那我们就先来看一下在二进制数字当中会有什么规律吧,先来看

2022-01-14 14:47:27 409

原创 【LeetCode - Java】66. 加一 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 逆序逐位判断1. 题目描述2. 解题思路终于久违做到一题真正的简单题了!!!这题是真的简单,第一反应是想着把整型数组转成整型,加一后再转回去整型数组,后来感觉这种思路过于麻烦,况且整型也不支持这么大的数据,就放弃了这个想法。第二个想法是把数组逐位来搞,唯一的是判断是否要进位,因此从数组尾部开始往前循环判断,若某一位加一后不需要进位就可以直接返回了,否则继续,若全部循环完之后还没有返回数组,意味着全部都要进位,例如 [9,9,9] 这种情况,那么

2022-01-13 11:37:07 233 2

原创 【LeetCode - Java】53. 最大子数组和 (简单 | 并不简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 O(n³)解法(卒 | 时间超限)3.2 O(n²)解法(卒 | 时间超限)3.3 动态规划3.4 分治法3.5 对比1. 题目描述2. 解题思路这道题目看到的第一个瞬间就是想着用循环!暴力!整它!最外层循环是决定子数组的起始位置;中层循环是决定子数组的长度;最内层循环是用于把该子数组的数全部加起来;最后把这个累加值与历史最大值比较,完成全部循环则得到子数组累加的最大值了。这种解法很好理解,可是,时间超限。我也理解,毕竟这是立方级的时间复杂度了。

2022-01-12 21:05:26 601

原创 【LeetCode - Java】28. 实现 strStr() (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 暴力寻找3.2 预处理子串3.3 首尾匹配3.4 KMP算法3.5 KMP+首尾3.6 对比1. 题目描述2. 解题思路子串匹配是一个经典的数据结构问题,最简单的方法是暴力寻找,把子串依次与主串进行从前往后的匹配,匹配成功则输出。这种算法影响效率的最大的问题是指针回溯(主要是主串的指针回溯),那怎么样可以解决这一个问题呢?首先一个比较低级的想法是,先对子串进行预处理,寻找与子串开头字符相同的字符,那么匹配不成功重新开始时即从该位置开始即可,其精

2021-12-23 15:29:44 711

原创 【LeetCode - Java】26. 删除有序数组中的重复项 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 双指针3.2 优化双指针3.3 对比1. 题目描述2. 解题思路这个解题思路用语言描述似乎不太方便,于是乎我又画了一个图来展现算法运行的某一部分过程,其中i是代表对数组进行遍历的索引(快指针),而pre则是代表待修改元素的索引(慢指针),那么图中还有一个index是什么来的呢?其实这个index索引的初衷是为了记住已经修改好的最后一个元素值是多少,在算法当中通过修改后把i的值赋给index来实现。后来画完这个图之后一看,咦?index下的值不就

2021-12-17 11:27:10 951

原创 【LeetCode - Java】21. 合并两个有序链表 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 插入式3.2 生成式3.3 递归式3.4 对比1. 题目描述2. 解题思路这类题目属于经典的数据结构类的题目,了解链表特性之后就很好入手了。首先常规思路有两种,一是使某个列表中的元素插入到另外一个链表中形成符合要求的有序链表;另外一种思路是生成一个新的链表,把两个旧链表中符合要求的元素添加到新链表中。插入式的处理相对生成式更麻烦一点,需要判断使用哪一个旧链表作为基准,按照该题目的要求应是选择开头元素小的链表作为插入基准,在此之前还需要进行非空判

2021-12-16 14:27:00 1248

原创 【LeetCode - Java】20. 有效的括号 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 栈(Stack)3.2 数组(ArrayList)3.3 链表(LinkedList)3.4 对比1. 题目描述2. 解题思路这道题目比较简单,经典的解题思路就是利用栈,从字符串中依次取出字符与栈顶进行匹配,不能匹配的符号进栈,能够匹配的符号出栈,最后若栈为空则表明字符串中所有的括号都能够完全匹配。问题来了,怎么样判断两个字符是否为匹配关系呢?看了一眼ASCII表,发现(与)的ASCII码相差1,[与]和{与}的ASCII码都是相差2,于是乎这

2021-12-15 20:18:11 1019 1

原创 【LeetCode - Java】LCP 29. 乐团站位(简单 | 最难的简单题)

目录1. 题目描述2. 解题思路3. 代码实现3.1 逐层递归(卒 | 栈溢出)3.2 去除外层再递归3.3 去除外层直接求解3.4 对比本来这一题不在我的做题范围内的,但是上一篇文章有位朋友留言问我能不能做一下这一题,然后打开看了一下,噢?简单题? 那做一下吧,结果掉进坑里了…1. 题目描述2. 解题思路既然这是一个num*num的矩阵,而且数字是顺时针按1-9递增的,那么就可以顺时针依次剥掉一层“外皮”,从num*num的矩阵变成(num-1)*(num-1)的矩阵,如下图所示:每一种

2021-12-13 20:34:55 426 1

原创 【LeetCode - Java】14. 最长公共前缀 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 横向扫描3.2 横向扫描(优化储存)3.3 纵向扫描3.4 横向扫描(逆序)3.5 对比1. 题目描述2. 解题思路对于一个数组的常规处理思路一般都是先遍历数组,取出其中的字符串再进行操作,后来瞅了一眼官解中把这种方法命名为横向扫描(反正我自己是没想出来这个命名)。这种思路是最简单的思路,我以数组中的第一个字符串为最长公共前序对比基准,不符合则退一位。最开始敲码的时候第一反应就是把字符串转换成字符数组,再进行字符的比较,提交后发现这个算法占用的

2021-12-08 15:20:51 851 8

原创 【LeetCode - Java】13. 罗马数字转整数 (简单)

目录1. 题目描述2. 解题思路3. 代码实现1. 题目描述2. 解题思路3. 代码实现

2021-12-07 14:17:43 464

原创 【LeetCode - Java】9. 回文数 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 字符比较3.2 整数运算3.3 整数运算(一部分)3.4 对比1. 题目描述2. 解题思路回文数?整数反转?其实如出一辙嘛,本质上还是一样的,因此,老方法字符比较又来了,这个思路跟整数反转几乎一模一样,就不再叙述了所以,优化方法你应该也能想到用整数运算,我也一样,然而,当我以为这就是极致方法去看官解时,又被当头一棒,居然还有更妙的解?!官解中更妙的解理论上说可以比原来的整数运算快一倍,怎么做到的呢?它的思想是只比较某个数的一半,举个简单的例子

2020-12-24 16:37:56 246 2

原创 【LeetCode - Java】7. 整数反转 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 字符串(利用逻辑)3.2 字符串(利用异常)3.3 不使用字符串3.4 对比1. 题目描述2. 解题思路简单直接,第一反应想到的便是把整型数据转换为字符数组,使用for循环把该数组倒置后再转换为整形数据,判断其是否溢出,倒置简单,但是怎么判断该数是否溢出呢?可以把该数与最大整型数进行比较,但是,若转换时数据溢出会直接报异常,就无法通过条件语句返回0,于是乎,灵机一动想到了一个逐位比较的方法,在转换前的字符数组从高位开始对每个位的数值进行比较,便可

2020-12-24 15:32:09 265

原创 【LeetCode - Java】1. 两数之和 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 暴力美学3.2 哈希表3.3 对比1. 题目描述2. 解题思路在解题过程中,第一反应想到的便是“暴力破解”,其实也可以认为是一种优化后的暴力破解:从数组的第一个元素开始,依次与该元素后的元素进行相加运算,判断是否为目标值,是则输出该两元素的下标,因此需要使用嵌套for循环,时间复杂度为O(n²)由于脑拙,除了暴力美学一下子想不出更好的方法,于是乎看了一下官解,一是暴力破解,另一是…哈希表?好家伙!以数值为key,以下标为value,从数组的第一

2020-12-24 13:59:18 271

原创 【吴恩达机器学习 - 5】揭秘学习曲线:偏差和方差与代价函数之间的相互关系(课后练习第五题-ex5)

目录1. 回顾线性回归的正则化1.1 代价函数1.2 梯度2. 偏差与方差2.1 训练集数量对“代价”的影响3. 多项式回归3.1 多项式特征的生成3.2 lambda对“代价”的影响照旧,本练习的相关资料链接将会扔到评论区,大家自取1. 回顾线性回归的正则化练习的第一个部分还是线性回归的相关计算公式,可以好好地回顾一下(其实只是为接下来的内容服务而已),所以这个部分就不过多介绍了,还不太熟练的可以看看我前几篇写的练习1.1 代价函数把如下代码扔进linearRegCostFunction.m文件

2020-12-07 20:06:10 362 2

原创 【吴恩达机器学习 - 4】利用BP神经网络实现手写字体识别问题(课后练习第四题ex4)

目录1. 前向传播1.1 代价函数1.2 正则化代价函数2. 反向传播2.1 sigmoid函数求导2.2 权值更新照旧,本练习的相关资料链接将会扔到评论区,大家自取1. 前向传播1.1 代价函数本节练习的第一个任务,就是写出该神经网络的代价函数,实际上,该代价函数跟我们之前所学习的逻辑回归的代价函数几乎一样,下面来对比一下究竟有什么异同逻辑回归神经网络这样一对比就很清楚了,显然不同之处是y,也就是输出值,根本原因在于在逻辑回归中我们仅有一个输出,而神经网络结构的最终输出是有多个的,需

2020-11-25 21:44:38 926 3

原创 【吴恩达机器学习 - 3】利用fmincg函数与正则化实现多元分类问题及神经网络初体验(课后练习第三题ex3)

目录1. 多元分类1.1 代价函数1.2 求最优参数1.3 分类预测2. 神经网络照旧,本练习的相关资料链接将会扔到评论区,大家自取1. 多元分类在上一节练习中已经完成了逻辑回归,也就是分类问题,实际上只是完成了二分类问题,而本节练习将会使用逻辑回归完成手写字体识别(多元分类)问题

2020-11-15 17:29:25 1757 3

原创 【吴恩达机器学习 - 2】利用fminunc函数与正则化实现逻辑回归(课后练习第二题ex2)

目录1. 逻辑回归1.1 绘制数据1.2 sigmoid函数1.3 代价函数与偏导项1.4 准确度估计2. 正则化的逻辑回归2.1 代价函数2.2 lambda的选择照旧,本练习的相关资料链接将会扔到评论区,大家自取

2020-11-15 15:13:34 392 1

原创 【吴恩达机器学习 - 1】利用梯度下降算法与正规方程实现线性回归及多元线性回归(课程练习第一题ex1)

目录1. 热身2. 线性回归2.1 绘制数据图2.2 完善梯度下降算法2.3 可视化代价函数3. 多元线性回归3.1 梯度下降法(Gradient descent)3.1.1 特征缩放(Feature normalization)3.1.2 梯度下降3.2 正规方程(Normal equation)前言先来几句废话,相信大部分都是在B站看的吴恩达的机器学习视频,寻思着做做练习才有缘在这个页面见面,建议到吴恩达的课程网站https://www.coursera.org/,注册个账号,那就可以直接利用里面的

2020-10-27 16:53:16 3380 2

原创 【MySQL - 7】事务是什么?事务的四大特征、隔离级别及DCL操作大全(CRUD)

目录1. 事务1.1 事务的概述1.2 手动提交与自动提交1.3 事务的四大特征1.4 事务的隔离级别2. DCL操作用户2.1 用户的增加、删除和查询2.2 用户的密码修改2.3 用户的权限管理1. 事务1.1 事务的概述首先给你们介绍一下事务的概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败是不是很抽象?来,我们说个简单的例子,现在我们来想一下“张三给李四转账500块”这件事情,与数据库相关的操作有什么?① 查询张三账户余额是否大于等于500 ② 把张三账

2020-08-12 18:37:24 375

原创 【MySQL - 6】多表关系是什么?如何进行多表查询?内连接、外连接、子查询(含超多练习)

目录1. 多表关系1.1 一对多关系1.2 多对多关系1.3 一对一关系1.4 小案例2. 多表查询2.1 内连接2.2 外连接2.3 子查询2.4 综合练习1. 多表关系多表关系,是指表与表之间的关系,在上一篇文章中,我们说到了表与表之间的关系是靠外键来建立的,下面来详细说说具体有哪些多表关系1.1 一对多关系一对多关系,一个很简单的例子,一个部门可以对应多个员工,其实现方式也很简单,在“多”的一方建立外键指向“一”的主键即可,下面就来演示一下这个例子# 一对多关系 一个部门多个员工CREAT

2020-08-08 20:28:35 669

原创 【MySQL - 5】约束是什么?非空约束、唯一约束、主键约束、外键约束有什么作用?

1. 非空约束2. 唯一约束3. 主键约束自动增长4. 外键约束级联操作首先我们来想象一下,前几篇文章在我们操作数据库的过程中,自由度是很高的,想给哪个赋值就给哪个赋值,但是这样子,就会造成我们所创建的数据库数据不完整,例如我创建一个学生信息表,你可能添加时候忘了添加学号、忘了添加名字、忘了添加成绩等等,因此我们就需要利用约束来创建我们的表,对表中的数据进行限定,保证数据的正确性、有效性和完整性

2020-08-02 17:34:38 3533

原创 【MySQL - 4】条件查询、排序查询、分组查询、分页查询、聚合函数等DQL操作大全(R)

目录1. 基础查询去重四则运算起别名2. 条件查询模糊查询3. 排序查询4. 聚合函数5. 分组查询6. 分页查询在开始介绍各种查询之前,先给出一个总的语法框架select 列名1, 列名2, ... ,列名nfrom 表名where 条件group by 分组依据(列名)having 分组后的条件(想看哪个分组)limit 分页限定;以上的语法框架并不是每个部分都必须要有的,必须要有的部分是select 列名1, 列名2, ... ,列名n from 表名;其它部分则是

2020-08-01 22:19:23 370

原创 【MySQL - 3】数据库可视化工具SQLyog的安装使用及DML操作大全(CUD)

目录1. 可视化工具SQLyog2. DML操作数据2.1 数据的添加2.2 数据的修改2.3 数据的删除1. 可视化工具SQLyog在上篇文章中介绍了DDL的相关操作,我们所有的语句输入都是在小黑框中完成的,是不是感觉不太方便?(虽然好像很有逼格),为了方便后续的使用和讲解,这里介绍一个MySQL的好用的可视化工具SQLyog什么?怎么下载?来来来,下载即可安装使用https://download.csdn.net/download/weixin_45453739/12672939安装教程:没有!

2020-08-01 16:48:16 568

原创 【MySQL - 2】SQL的基本概念、通用语法和分类及DDL操作大全(CRUD)

目录1. SQL的概述1.1 SQL的基本概念1.2 SQL的分类1.3 SQL的通用语法1.4 MySQL的架构2. DDL操作数据库2.1 数据库的创建与查询2.2 数据库的修改、删除和使用3. DDL操作表3.1 表的查询3.2 表的创建3.3 表的删除3.4 表的修改1. SQL的概述1.1 SQL的基本概念我们都知道MySQL是一种常用的数据库,那么什么是SQL呢?SQL是结构化查询语言(Structured Query Language)的缩写,首先它是一门语言,其次它也定义了操作所有关系

2020-08-01 09:38:38 200 2

原创 13. Java入门之Stream流是什么?流式思想的概述、Stream流中的常用方法、方法引用简介

目录1. 流式思想的概述1.1 传统方式遍历集合1.2 Stream流遍历集合1.3 流式思想2. Stream流中的常用方法2.1 获取Stream流2.2 forEach方法2.3 filter方法2.4 map方法2.5 count方法2.6 limit方法2.7 skip方法2.8 concat方法3. 方法引用1. 流式思想的概述在介绍流式思想是什么之前,我们先来感受一下Stream流的使用的便利,下面以集合遍历为例子进行介绍1.1 传统方式遍历集合众所周知,如果想要对一个集合进行遍历,那

2020-07-25 17:43:10 624

原创 【MySQL - 1】MySQL的安装与配置、登录和退出、服务启动与关闭(超详细、超多图)

目录1. 常用数据库简介2. MySQL的安装与配置3. MySQL的登录与退出4. MySQL服务的启动与关闭1. 常用数据库简介数据库,顾名思义是储存数据的仓库,准确来说是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,用户可以对文件中的数据进行新增、查询、更新、删除等操作我们先来看一个数据库排名(摘自https://db-engines.com/en/ranking)是不是又看见熟悉的Oracle呢,其实MySQL也是O

2020-07-24 22:41:19 325 3

原创 12. Java入门之函数式接口是什么?常用函数式接口的介绍与使用

目录1. 函数式接口概述1.1 概念与定义1.2 使用与优化2. 常用的函数式接口2.1 Supplier接口2.2 Consumer接口2.3 Predicate接口2.4 Function接口1. 函数式接口概述在之前介绍Lambda表达式的文章中提到了函数式接口,那时候只是顺带一嘴,现在来详细了解一下函数式接口的相关内容1.1 概念与定义有且只有一个抽象方法的接口被称为函数式接口,该接口中可以包含其他的方法(默认,静态,私有),但注意是抽象方法只有一个假如我想定义一个函数式接口,那么有什么办

2020-07-22 11:38:58 912

原创 11. Java入门之网络编程是什么?软件结构、网络协议、客户端服务器端通信模拟(文件上传案例)

目录1. 软件结构2. 网络通信协议2.1 UDP协议2.2 TCP协议3. 网络编程3.1 客户端3.2 服务器端3.3 文件上传案例实现与优化1. 软件结构我们日常生活中所接触到的客户端主要有两种,一种是你打开一个软件你就可以使用它的功能,例如微信、QQ等;另一种是我们熟悉的浏览器,当你想要浏览一些网页或搜索一些东西的时候你需要打开个浏览器输入一个网站说到这有人可能是觉得其实两种都是参不多,确实也是,但可以用作区分的一个点是你在浏览器中其实都是通过网址来操作,这就衍生出两种不同的软件结构:C/

2020-07-21 21:41:56 218

原创 10. Java入门之File类的详解与FileFilter过滤器的原理和使用(含综合案例练习)

目录1. File类的概述1.1 静态成员变量1.2 绝对路径与相对路径1.3 构造方法2. File类的成员方法2.1 获取方法2.2 判断方法2.3 创建方法2.4 遍历方法3. FileFilter过滤器3.1 FileFilter的使用3.2 FileNameFilter的使用4. 综合案例4.1 遍历多级文件夹4.2 遍历多级文件夹并过滤1. File类的概述1.1 静态成员变量1.2 绝对路径与相对路径1.3 构造方法2. File类的成员方法2.1 获取方法2.2 判断方法2.

2020-07-18 17:35:02 832

原创 9. Java入门之Lambda表达式是什么?Lambda表达式的简化格式与使用前提(含三个小练习)

目录1. Lambda表达式概述1.1 什么是Lambda表达式1.2 Lambda表达式的标准格式2. Lambda表达式小练习2.1 无参数无返回值练习2.2 有参数无返回值练习2.3 有参数有返回值练习3. Lambda表达式的简化格式与使用前提3.1 Lambda表达式的简化格式3.2 Lambda表达式的使用前提1. Lambda表达式概述首先我们先来回忆一下,当我们要调用接口方法时候,我们需要对其进行方法的重写,例如在上一篇文章所介绍的多线程中,假如需要新建一个线程,采用匿名内部类的代码是这

2020-07-17 21:48:18 773

原创 【Android - 1】Android的概述、Android Studio的安装调试与第一个程序的创建开发(超简单入门教程)

目录1. Android的概述1.1 Android是什么1.2 Android的发展历史2. Android Studio的安装3. Android Studio的初始化与虚拟机创建4. HelloWorld开发1. Android的概述1.1 Android是什么想必大家其实对Android都很熟悉,大部分人都使用过相当一段时间安卓产品,它是一款基于Linux内核的开源操作系统,多用于各种移动设备如手机、平板、车载导航等,现在还有被用作为电视的操作系统Android的创始人是Andy Rubin

2020-07-14 17:39:23 537

原创 8. Java入门之线程是什么?多线程的开启与使用、同步技术解决线程安全问题、等待唤醒机制的应用

目录1. 基础概念1.1 并发与并行1.2 进程与线程2. 多线程2.1 创建多线程的方式-Thread类2.2 创建多线程的方式-Runnable接口2.3 线程池3. 线程安全问题3.1 线程安全问题的产生与实现3.2 线程安全问题产生的原理3.3 同步代码块3.4 同步方法3.5 Lock锁4. 等待唤醒机制4.1 线程状态概述4.2 等待唤醒机制概述4.3 案例分析与实现1. 基础概念1.1 并发与并行什么是并发?什么是并行呢?顾名思义,并发就是一起发生,并行就是一起进行。一听起来,好像是没啥

2020-07-09 11:56:04 353

jdk-8u181-windows-x64.rar

jdk1.8版本windows下载,

2020-06-20

空空如也

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

TA关注的人

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