第十三天.

练习

剑指 Offer 47. 礼物的最大价值


在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。
你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。
给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?
 

示例 1:
输入: 
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
输出: 12
解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物

提示:

0 < grid.length <= 200
0 < grid[0].length <= 200
class Solution {
    public int maxValue(int[][] grid) {
        int n=grid.length; int m=grid[0].length;
        var sum= new int[n + 1][m + 1];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                sum[i+1][j+1]= Math.max(sum[i + 1][j], sum[i][j+1]) + grid[i][j];
            }
        }
        return sum[n][m];
    }
}

https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/solutions/2153802/jiao-ni-yi-bu-bu-si-kao-dpcong-hui-su-da-epvl/

膜拜灵神

方法真的多,我是俩for加math.max 加了一个if

灵神都玩出花了

太强了

我自己写的,测试时一直出现越界,我就想整一个数组,让原来的数组边界+1

但总是会报错,后来看了灵神的代码 发现有一种跟我的相同

看了解释 理解上虽然是是让数组往右扩充一行一列 但是要看成向左扩充一行一列

让存储后的值从原来的i j 变成了i+1 j+1 这样式子就合理多了

画个图就知道为什么了

哈哈 灵魂画手

八股

synchronized 和 ReentrantLock 区别是什么?

synchronized是和if、else、for、while一样的关键字,ReentrantLock是类,这是二者的本质区别

ReentrantLock是类,那么它就提供了比synchronized更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的类变量

者的锁机制其实也是不一样的:ReentrantLock底层调用的是Unsafe的park方法加锁,synchronized操作的应该是对象头中mark word。

说一下 atomic 的原理?

Atomic包中的类基本的特性就是在多线程环境下,当有多个线程同时对单个(包括基本类型及引用类型)变量进行操作时,具有排他性,即当多个线程同时对该变量的值进行更新时,仅有一个线程能成功,而未成功的线程可以向自旋锁一样,继续尝试,一直等到执行成功。

什么是反射?

反射就是指程序可以访问检测和修改它本身的一种能力

java反射可以对一个类检检测有什么属性和方法,是否可以访问和修改

可以判断一个对象的类,构造一个类的对象 判断类的成员变量和方法 调用对象的方法

什么是 java 序列化?什么情况下需要序列化?

java序列号就是为了保存各种对象的状态,并且可以在使用时将对象再读出来

当吧内存的对象状态保存到文件或者数据库时 传输对象时使用

基于阳哥第二季的SpringCloud(第一天 划掉)(预习)

阳哥YYDS

好好听,好好学,尽可能全跑通项目

为啥不学最新的Springboot3 想也知道不太可能企业会直接用,以后慢慢看呗

阳哥要思维导图

贴上大佬的地址

http://t.csdn.cn/0w0JS

MindManage 2020密钥
MP20-345-DP56-7778-919A

分布式的理念,分布式就是把功能当做一个个微小的服务,然后在组合在一起完成某个功能

springcloud 中文文档 活雷锋们

https://www.bookstack.cn/read/spring-cloud-docs/docs-index.md

安装方面

如何找springboot对应的springcloud版本

这个是返回的json信息
https://start.spring.io/actuator/info

https://tool.lu/json/

复制粘贴 点这个

贴出来

{
  "git": {
    "branch": "bae7f94cb3b4434f4a849e0bc5f31b209c29993a",
    "commit": {
      "id": "bae7f94",
      "time": "2023-03-08T10:01:58Z"
    }
  },
  "build": {
    "version": "0.0.1-SNAPSHOT",
    "artifact": "start-site",
    "versions": {
      "spring-boot": "3.0.2",
      "initializr": "0.20.0-SNAPSHOT"
    },
    "name": "start.spring.io website",
    "time": "2023-03-08T10:02:54.730Z",
    "group": "io.spring.start"
  },
  "bom-ranges": {
    "codecentric-spring-boot-admin": {
      "2.4.3": "Spring Boot >=2.3.0.M1 and <2.5.0-M1",
      "2.5.6": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
      "2.6.8": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
      "2.7.4": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
      "3.0.0-M4": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "solace-spring-boot": {
      "1.1.0": "Spring Boot >=2.3.0.M1 and <2.6.0-M1",
      "1.2.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
    },
    "solace-spring-cloud": {
      "1.1.1": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
      "2.1.0": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
      "2.3.2": "Spring Boot >=2.6.0.M1 and <3.0.0-M1"
    },
    "spring-cloud": {
      "Hoxton.SR12": "Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
      "2020.0.6": "Spring Boot >=2.4.0.M1 and <2.6.0-M1",
      "2021.0.0-M1": "Spring Boot >=2.6.0-M1 and <2.6.0-M3",
      "2021.0.0-M3": "Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
      "2021.0.0-RC1": "Spring Boot >=2.6.0-RC1 and <2.6.1",
      "2021.0.6": "Spring Boot >=2.6.1 and <3.0.0-M1",
      "2022.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.0.0-M2",
      "2022.0.0-M2": "Spring Boot >=3.0.0-M2 and <3.0.0-M3",
      "2022.0.0-M3": "Spring Boot >=3.0.0-M3 and <3.0.0-M4",
      "2022.0.0-M4": "Spring Boot >=3.0.0-M4 and <3.0.0-M5",
      "2022.0.0-M5": "Spring Boot >=3.0.0-M5 and <3.0.0-RC1",
      "2022.0.0-RC1": "Spring Boot >=3.0.0-RC1 and <3.0.0-RC2",
      "2022.0.0-RC2": "Spring Boot >=3.0.0-RC2 and <3.0.0",
      "2022.0.1": "Spring Boot >=3.0.0 and <3.1.0-M1"
    },
    "spring-cloud-azure": {
      "4.6.0": "Spring Boot >=2.5.0.M1 and <3.0.0-M1",
      "5.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "spring-cloud-gcp": {
      "2.0.11": "Spring Boot >=2.4.0-M1 and <2.6.0-M1",
      "3.4.5": "Spring Boot >=2.6.0-M1 and <3.0.0-M1",
      "4.1.1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "spring-cloud-services": {
      "2.3.0.RELEASE": "Spring Boot >=2.3.0.RELEASE and <2.4.0-M1",
      "2.4.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
      "3.3.0": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
      "3.4.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
      "3.5.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
      "4.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
    },
    "spring-shell": {
      "2.1.6": "Spring Boot >=2.7.0 and <3.0.0-M1",
      "3.0.0": "Spring Boot >=3.0.0 and <3.1.0-M1"
    },
    "vaadin": {
      "14.9.6": "Spring Boot >=2.1.0.RELEASE and <2.6.0-M1",
      "23.2.15": "Spring Boot >=2.6.0-M1 and <2.7.0-M1",
      "23.3.5": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
      "24.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "hilla": {
      "1.3.5": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
      "2.0.0": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "wavefront": {
      "2.0.2": "Spring Boot >=2.1.0.RELEASE and <2.4.0-M1",
      "2.1.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
      "2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
      "2.3.4": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
      "3.0.1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    }
  },
  "dependency-ranges": {
    "okta": {
      "1.4.0": "Spring Boot >=2.2.0.RELEASE and <2.4.0-M1",
      "1.5.1": "Spring Boot >=2.4.0-M1 and <2.4.1",
      "2.0.1": "Spring Boot >=2.4.1 and <2.5.0-M1",
      "2.1.6": "Spring Boot >=2.5.0-M1 and <3.0.0-M1",
      "3.0.3": "Spring Boot >=3.0.0-M1 and <3.1.0-M1",
      "managed": "Spring Boot >=3.1.0-M1"
    },
    "mybatis": {
      "2.1.4": "Spring Boot >=2.1.0.RELEASE and <2.5.0-M1",
      "2.2.2": "Spring Boot >=2.5.0-M1 and <2.7.0-M1",
      "2.3.0": "Spring Boot >=2.7.0-M1 and <3.0.0-M1",
      "3.0.0": "Spring Boot >=3.0.0-M1"
    },
    "camel": {
      "3.5.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
      "3.10.0": "Spring Boot >=2.4.0.M1 and <2.5.0-M1",
      "3.13.0": "Spring Boot >=2.5.0.M1 and <2.6.0-M1",
      "3.17.0": "Spring Boot >=2.6.0.M1 and <2.7.0-M1",
      "3.20.2": "Spring Boot >=2.7.0.M1 and <3.0.0-M1",
      "4.0.0-M1": "Spring Boot >=3.0.0-M1 and <3.1.0-M1"
    },
    "picocli": {
      "4.7.0": "Spring Boot >=2.5.0.RELEASE and <3.1.0-M1"
    },
    "open-service-broker": {
      "3.2.0": "Spring Boot >=2.3.0.M1 and <2.4.0-M1",
      "3.3.1": "Spring Boot >=2.4.0-M1 and <2.5.0-M1",
      "3.4.1": "Spring Boot >=2.5.0-M1 and <2.6.0-M1",
      "3.5.0": "Spring Boot >=2.6.0-M1 and <2.7.0-M1"
    }
  }
}

"2021.0.6": "Spring Boot >=2.6.1 and <3.0.0-M1",

我就相中这个了 不过还是怕学的阳哥版本号不对错误太多 叹气

因为我去官网看了一眼

https://spring.io/projects/spring-boot#support

没错,到现在没学最新的springboot3的课(最主要是jdk17,也不知道公司会什么时候用上)

现在不大多都是1.8吗 也就2.7用的多了 还维护到2025.2.18

结合上面对应的springcloud版本,

"2021.0.6": "Spring Boot >=2.6.1 and <3.0.0-M1",

绝了 就它一个能对的上的

springcloud Alibaba

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E#%E7%BB%84%E4%BB%B6%E7%89%88%E6%9C%AC%E5%85%B3%E7%B3%BB

补图

有了

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2021.0.4.0*

Spring Cloud 2021.0.4

2.6.11

2021.0.1.0

Spring Cloud 2021.0.1

2.6.3

两个版本的 啊这

另外补上我所搜集到的信息

传送门 http://t.csdn.cn/KcEbz

感觉自己学个2.7 以后用到2030年都不会换了

为什么要选一个好版本---cloud组件停更惨案架构图

服务调用2 dubbo

nacos 阿里巴巴称霸世界

啊这. 说实话,阳哥的思维导图太特么的全了 根本不用这么来回倒腾。。不过为了学习,还是一步一步来吧 另外思维导图不是破解版是只读的 建议用我上面找的密匙 感谢大神的分享 2020版本的

一点烦心事

。。。

今天有点事,心烦,本来能学一下午,结果课就学了半小时多点

家里人问我要不要报班

我不甘心 虽然我知道报班出来可以包装几年工作经验什么的 还有机构帮你改简历

但是我还没算真正毕业,如果真的到毕业之前我一直学,都没找到达到找工作的标准

那我再报班得了,不过这种报班学就不是目的了,是包装工作经验

而且报班我感觉挺难受的,不是坚持不下去,像我现在已经学到这个地步了

再听一遍上手肯定贼顺 感悟也比第一遍听的快了

但是

不是真的找不到工作,不去报班

6个月,不算进班2万多,你住的吃的干些别的不也能上万了

当然,肯定有例外,也没往最坏的想,例如不包住宿等等

就正常生活,例如我要报班肯定去尚硅谷了,不是说别的机构不好

而是我已经学了尚硅谷的一套视频了 再看一遍上手的更快,记得更深

(或者去报名老韩了,毕竟对老韩的java课印象还是很深的)

那我不可能光学不干别的,北京那地方,开支能小吗

了解的都知道北京尚硅谷才是重点,别的地方尚硅谷水平参差不齐

不说这个了

我最难绷的是,6个月学java

我来点感触,我是去年真正开始认真学java的 因为疫情,没事干

肯定是学的忘着 现在基本把ssm跟springboot忘得差不多了

这还是去年12月学的

但是,你说我不会用那是不可能的

毕竟是学了,我可能讲不出来原理什么的,但是用还是能用上的

我的docker学的更早,学nginx边学新课边回忆docker

我github跟gitee听了三遍 当时好像是想知道尚硅谷 狂神谁讲的更好理解

现在也是忘得干干净净

那有人就问了

你学啥了 全忘了

我特么怎么知道,又不是学校上学考卷周周练

是有课后练习,问题是那只是练习而已,能当答卷去交给面试官吗

就这种练习不也是思考好长时间才做出来的

感觉要尽快上手项目了

我始终觉得 没有什么难题是一直存在的

如果真的进了一个公司,它们给了你一道难题

我感觉这个难题必须能完成,没有意外 只是时间长短问题

但是就这种机会基本没有,反正我没碰到

我现在学习就可迷啊,不知道以后能干什么,学的这些,用又不常用,怎么会记得住


回到最初的话题

就按培训班6个月来说

我很难想象,虽然我可能学习到现在有快一年,但是

培训6个月实际学习时间能有多少?

我指的是 按学习24小时为一天算起,那我可能到现在学了二个月了

也就是说我已经1400小时打底了

没说假,我就不信有这种光看课,不敲代码,甚至复制粘贴能学会的大神会多

虽然断断续续学了有一年,但是均下来也已经是每天4小时了

特别是我听别人说人家javase就上了两周多点就学完了

那是真的发生的吗,真的有人没基础能听进去的吗

而且

假设人一天8小时睡觉4小时其余 12小时学习

12小时肯定也分高效,有效,低效时间 而低效学习时间绝对能站一半

而高效也不过是上午或者下午刚学没多久的时间,也不会多,

这还是最好情况,而且12小时学习,有效学习能站三分之一吗

能保证学了就会,用到是就会直接上手吗

不能 因为不用就会忘 这是绝大数人生来的能力之一

更别说我们在b站看的基本都是大神老师授课,线下遇见概率低

我就头疼,我学se学了俩月多(肯定没仨月),我当时还给自己记了学习时间

本来200小时的课,我硬是学了500+小时

韩顺平的java课,懂得都懂,边暂停边敲,学完韩老师留的项目,又是总结,又是扩展,出现bug再去自己去debug去找,这种都是靠时间磨的,怎么可能两周多就结束了

韩老师那个坦克大战学完就三天,但是自己回过来单干,当时我记得干了半个月,又是回忆做法,又是重新学重新写,才让我知道什么是数组,线程,输入输出,监听,反射,各种各样知识的融会贯通,才知道为什么要这么用。更不要说后面什么别的项目了。

回过头想想,学了这么多了,都已经干到现在的springcloud了,像什么redis什么的我真的是用到了就回过头去再看看,忘了太多,但是回忆的也很快,印象最深刻的却还是最基础的javase,真的有点后悔为什么没去报韩老师的培训班了

后来学的张益桃老师的javaweb 也是靠着韩老师的自律习惯学的,一个问题出现,就死磕,学了快一个月终于完事。

但是激情也没了,从javaweb开始,往后的ssm springboot 各种学习,都是用的时候才回去看一看,反正更新换代这么快,已经开始浮躁了,越是学习越是感觉自己学的还不够,因为自己又不是一个学了就会的脑袋,一边学一边忘,两三天就把前面学的都忘了,回去补课,甚至不去补课,就死磕知识点,要不就听了就当学了,转折点就在ssm那边,不是教的不好,而是迭代速度太快了

java还没学web的时候基本都是一个包一个包的用

学了web就加入了页面,讲了后端跟前端怎么联系的

到了ssm就告诉你,前面的jdbc融进去了,m让你解放crud,前面俩s告诉你对象要放什么地方,什么是业务层,什么是连接db的,学了xml 就要知道什么是bean 再连着事务回滚等等。

你还没想明白,又一次大换代,springboot,注解式学习

特别是vue跟springboot连用,让你恨不得去把前端的ajax和js和vue都学了

现在学的springcloud不知道还给我什么感受呐

就那6个月,0基础是能学下来,但是我感觉更多的是去学习一波去包装经验的

所以今天烦就烦在跟家里说这些事

我不知道我对我的未来是什么感觉,一开始我对java其实没有感觉的

我就是想干个电脑工作的,剪辑师也无所谓,但是谁叫我接触到了这门课

如果先接触我的是建模,我就去做特效

等等等等

但是这么久了,学也学了,凭啥这么看不起自己,说干就干下去

会越来越好的,一定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值