系列 1:P40:美团面试JVM七连问:5.加问:DCL单例(Double Check Lock)到底需不需要volatile - 马士兵官方号 - BV1mu411r78p
好看这里我们来看这小程序,再看这段代码,在这段代码开始执行的情况下,假如我们现在有两个线程,第一个线程判断为空,没问题,上锁没问题,判断依然为空,没问题,接下来有对象。
接下来我们假设第一个线程已经执行到哪步了呢,已经执行到这步了,这是第一个线程执行的步骤,已经执行到这儿了,回想一下啊,我们new一个对象的时候是三步构成,还记得吧。
这三部分别是new invoke special和a store,好,接下来,接下来第一个线程来了,thread一执行到这句话了,执行到这句话之后,new对象new了一半。
刚刚new了一半6t这里的m值为零,本来是正常值为八,然后呢调构造方法建立关联,结果正在这个时候发生了指令重排序,刚才我说过两条指令之间是可以互相换顺序的,哪两条指令换了顺序呢。
四和七这两条指令换了顺序,指令重排好,再看一遍第一线程过来的时候,六到了一半发生了指令重排序,发生指令重排序,会把a store调到前面了,a store调到前面是什么意思。
t直接指向这个初始化了一半的对,象来这块能跟上的,给老师扣一,啊那么大,你想一下t指相了一半的对象,指向了一半的对象,好正好在这个时候,第二个线程,第二线程也是执行这段代码。
它上来之后先判断它是不是等空,诶,你告诉我,你看这个内存的图,它现在等空吗,懂不懂空t等空吗,不等空,不等空的话,后面还执行吗,不执行是不是拿到这个t就直接拿来用了。
你的男朋友刚穿了一半衣服就出来见人了,不好意思,这个值只拿到了m等于零,你本来正常是应该m等于八的,如果这记录的是一个很简单的一个呃,比如说是那个双11的期间,这里记录的100万单。
然后突然之间的不是一访问,有一个线程访问到的是零反弹,来再来看一遍,仔细看第一个建成new对象啊,判断为空,上锁依然为空,所以开始扭扭了一半,发生指令重排,结果这个t指向了一个半数,第二个线程来了。
先判断吗,判断它是不是等功,一判断不等于空了,直接拿来用,结果第二个线程就用到了初始化了一半的对象,所以这个县城是有问题的,来大家听明白这件事的同学给老师扣一,但这个bug非常的隐蔽,有同学可能会说了。
老师你讲的这事儿不对呀,你synchronized是什么概念,synchronized的可是做了内存同步的,我的天,你做内存同步,你居然说能让我看到了另一半的对象,你不扯淡吗。
有没有同学有这个有这个疑问,synchronized的本质上是一个什么概念啊,它比较复杂,其实本质它的执行比较复杂,就是synchronnet做完的一个东西呢,必须得是内存的,最后最终同步完了之后。
另外一个线程才能看见,我再说一遍,打开我们的那个刚才那段代码,我再说一遍,synchronize什么概念,schronize的概念就是说我下面必须都得执行完了,我把里边的内存呢做好同步了。
我这内存状态改完了,我才会释放锁,其他的线程才能访问到里面的内容,我已经遛完了,你怎么能访问到我中间状态,你不扯淡吗,能听懂我的我的问题吗,来这块能听明白的,给老师扣个一,就是问题在这儿。
现在的问题就在于第一synchronized的执行的线程内部能不能重排序,第二synchronized的中间状态会不会被别的变现成独到,好听,我说我们先回答第一个问题。
synchronized执行到内部的时候,它内部的指令能不能重排序,这件事超级简单,我刚才讲了,能不能重排,取决于你是不是能保证最终一致性,如果能保证最终一致性,随便你排,同学们。
你们琢磨我这个先建立关联,还是说先给他初始化,最终的结果是不一样的呀,所以中间的这几条指令,您老人家随便换,没事儿,所以synchronnet内部重排序是没问题的,认真听好吧。
这里有很多那个别地儿说说法都是有问都不对啊,完全能重排,第二个single内部的中间状态会不会被别的线程读,到会,如果另外的线程执行的是同一段synchronized代码,它一定会读不到。
必须得等一个线程执行完,另外一个线程才能读到,但是很不幸的是,我想问你的第一个线程执行到了schnet里边代码,第二个线程执行的是哪个代码啊,它是在新出来的内部还是外部没有锁定的代码,能听懂吗。
一个执行的是被锁定的代码,一个执行的是没有锁定的代码,我告诉你这两个互不冲突,你里边执行的任何状态,外面都能读到这个东西,就是大家伙都是并发执行的,好了两个问题我就解答完了,就是取决于一内一外的概念。
这个东西呢我我vip课上给大家做个实验的啊,绝对是能向大家证明这一点好了。
现在已经是09:44,我说过我9。50会打广告五分钟,当然还有两大问题啊,就是这两大问题比较复杂,hosport为什么不使用c加加class,到底是对还是方法区,我一会儿给大家讲。
这里面尤其是第二个问题,尤其是第九个问题呃,最近被问到的,你想答得很全的,不容易,ok 5分钟我答一下刚才我这个问题的答疑。
看看有没有明白了,明白了是吧,嗯什么兵法之影,刚才声音有点小,没听清,大哥,你把你的声音放大啊,其他人都能听清,没听清你那边的声音放大好不好,小岳岳比心对,最大的,因为我这边一放大,它会有杂音。
你知道吧,我给你增益一下试试,五分钟答疑,刚才我提的我讲的这些有疑问的地方,你随便问,你把老师问到了,老师这课就可以送你任何问题,关于这位m呢,您老人家随便问好讲讲怎么讲,我刚才故意略过这个结果呢。
你非得非得让老师把这个事给你调出来是吧,听我说要不要加爆了条,必须要加wallet。
什么概念,就是你你在double check里面,double check里面,你要定义这个呃呃呃这个这个代理对象的时候必须要加volatile,为什么要加volt,原因是volt能保障你两方面的作用。
第一个呢叫保持线程之间的可见性,第二个呢叫禁止指令重排序,能听懂吗,叫禁止重排序,就是您老人家那两条指令,不就是刚才换了顺序的问题吗,产生了问题没关系啊,我可以给你禁掉,就禁止重排序。
所以必须要java,当然我怎么是禁止怎么禁止的。
这个东西要讲到内存屏障,今天的时间肯定是讲不完的。
忘了在哪看,说这里可以八有优化,有什么优化,都有哪些指令执行的,一般什么顺序指令,java大概是200多条,执行的什么顺序,一共有八条规则叫不可以冒犯这八条规则,只要不犯这八条规则,其他指令随便排序。
这八条规则我就不给你背了,但是这东西你不需要背过,因为它也比较简单,比方说你new出县城来之后才能执行这种规则,类似于这种的,能听懂吗,你放心,这八条规则里面从来。
没有哪条规定说我new了一半的对象不能赋值,所以刚才我讲的指令重排序是完全没问题,x等于一,x等于会丢掉第一个吗,什么叫丢掉第一个,你说说你x等于x等于肯定会丢掉第一个。
这条规则叫八条happens before原则,如果有兴趣可以百度1下,或者找咱们的vip听老师给你讲,为了给你们讲这个课,我可以这么跟你说,为了给你讲这么这个课嗯,基本上我市面上所有关于这版本的书啊。
基本上那个不是写jvm的人都不读的,人,全给你讲,全全部读完,所以关于这位m您老人家随便了,我跟你讲的这m课呢叫做总结了十几本书,外加上各种问题,外加上jm虚拟机规范给你总结出来的。
j d k8 针对这完美体优化,那多了太多了,这没法说了,就优化太多,因为你们这个优化什么叫jm优化,你看你问的这个问题吧,你说的那个为了中国人民过上那个美好的日子,你说这玩意儿怎么跟你说。
听我说有哪些优化,有些优化是需要你自己做的,元旦老人什么叫做jvm调优,能不能理解jvm调优这件事,就是jvm里面有好多参数,你需要进行调整,调整到你g m的自由状态,j v m的调有呃。
这个参数有700多个参数,这边的参数本身有700多,个常见的调优的大概是有五六十个左右,50~60个,需要你进行组合使用才能调优,我要跟你讲这玩意儿,你说我能给你讲完吗,起码今天讲完。
面试的时候经常这么的优化调整,你问他具体的,你说哪方面的,你比如说执行层面的,还有这种git,就是那个及及及及时编译,还有呃这种c one级别的优化和c to级别的优化,dk 18完美要用沐风。
你问的这个问题是。
美团的这个第九题哦还不太一样,但是也差不了太多,你问的这个问题基本上是每天的第九题,就是class对象是对象的方法去,实际上本质上跟你这有点类似啊,最终一致性判定表述的对它变音器的优化。
系列 1:P41:美团面试JVM七连问:6.马士兵老师Java高级架构师职业规划 - 马士兵官方号 - BV1mu411r78p
好了不废话了,现在是09:50,我说过09:50,我要做一波广告,很快20分钟左右,我给你做完,今天我讲的课程,大概是我们整体课程的小小的一部分,讲这个课,我们前前后后20多位老师,到目前为止。
我们讲了2400个小时的课,就这么狠,这个2400个小时是什么概念,2400个小时,腾讯课堂让随便找任何的机构,基本上没人超过400小时,我们课程2400小时,所以我们课程定价会比其他的类似的这种课程。
定价要稍微贵那么一点点,贵的也不多,是因为我们课程量要比别人大得多得多,多得太多,全网最深最广的课程,从2019年我们登录腾讯课堂,只用了半年,做到腾讯课堂的第一名,在2019年的过程,我们只讲了。
也就是说你想跳槽涨薪,三五个月,涨点薪水,我告诉你,2019年的课都已经足以让你应付了19年的课,你像我今天给大家讲的jvm实际上是gmm gmm多线程高并方案啊,这一部分这种的案例是案例呃。
就是案例式的这种实战化指导调优,这个呢就是你刚才讲的优化的问题,好吧,那么操作系统的原理,网络的原理设计模式等等,我就不给你展开了,当然分布式的东西vs keep live的消息中间件。
四个四大消息中间件,分布式分布式事务单点登录啊,分任务调度等等,还有呢resuper源码的nt rpc a rainbow,docker k8 s mysql的优化,fd fs。
open stic团队的项目的合作,海量的数据就是大数据相关的内容,还有职业的提示软技能,别人课程大概一周直播33434个,一次两小时,基本上大家伙想涨个薪水贼easy。
超级easy呃后来随着我们整个课程体系的发展,有学员会说老师我只有掌握了高中知识体知识体系,但是呢我还没有做过一些比较牛逼的项目,原来一直做c r u d,但是我想进互联网,我们有互联网级别的这种项目。
我怎么办好,我们补了另外一条线,这条项目线呢叫做项目线或者叫项目库,项目库,目前完成的九个项目,从比较简单的大学生级别的项目到比较复杂的我们大厂级别的项目,曹老师,我刚才说过了。
他是作为阿里的一线开发人员,在阿里做了很长时间,按照阿里的标准来开发对应的项目,这个项目呢叫网约车项目,关于这个网约车项目呢,我就在这里呢,嗯如果大家有兴趣可以找去找我们要我们网约车项目的白皮书。
听我说,我们任何一个项目都有对应的白皮书存在,我们任何一个方向也都有对应的特别细节的东西给你描述出来,关于这个项目从怎么去拆分啊,怎么从需求到最终怎么去落地,怎么说,蓝绿发布怎么做,滚动发布怎么做。
实战的这种网关路由怎么做,限流怎么做,这降级啊怎么做,怎么做,报警怎么做,观察第三版呢我们使用的是spring cloud奈飞,第四版呢我们使用spring clou。
阿里巴巴第五版我们使用的是第二代微服务,也就是著名的service mesh服务网格,那么第六版纯音原声就go浪加上k8 s,目前go on的课程也在更新这个里面,那好这一个项目的效果是什么。
不跟你做任何的吹牛逼,就直接给你看效果就行了,搜一下。
我只是说的这一个效果啊,这是传统项目通过网约车找的工作。
遇到企业加价留人,就是那个企业不放了,直接给它加价啊。
然后应届毕业生网约车项目21k的offer,哥们就是一个大专的,如果没记错,应该是一个大专的应届毕业生,那天超老师专门说过这事,项目呢由于超级超级重要啊,只是没技术工作。
技术小白,网约车15k小白,第一次网约车项目薪资涨5k不用干别的,仅仅这一个项目啊,让你长个心都已经足够足够了,尤其是那些c r u d的天天crud,做传统行业业务知识的。
更不用说后面的一级流量的这种项目啊,好加了这些项目之后可以这么说,基本上30万~50万通过这个拿到的概率就很高了,在后面的我们整整2020年的1年一直在讲的一门课,叫做mc的架构师。
这门课是我们整个课程体系的一个提升和补充,这门课呢主要是从实战的角度给大家带到一个架构师的视角,什么叫做实战的角度,再带到架构师的视角,我相信有的同学呢应该是嗯遇到过那种那种ppt架构师给你画个图啊。
前面是防火墙,后面呢有一大堆的k8 s,然后还有一堆的mysql的分部分表,接下来有一堆的那个中间的缓存中间件,但是很不幸我告诉你,你看那个图看了特别爽,看完之后呢觉得自己很爽,但是看完之后想落地没有。
不过在这里在我们真正的教务师课程里面,在这个项目里面,我们会从基本的这种分布式的架构开始,带你来帮你做架构师,搭建最基础的服务,分布式的爱迪生中心配置中心,索集群,事务集群,缓存集群。
网关集群注册中心监,控集群mq的集群,es的集群,分布式任务调度集群,pen的集群,mysql的服务集群,我告诉你一个真正的那种成亿级流量的,超级高并发的这样的一个互联网项目,到底是有多少个集群构成。
任何的一块他都可以动态的扩展,在这里会有咱们专门的老师在带你进行落地,所以这叫落地版的牛逼效果时,我们为什么说,我们帮腾讯建立了整个的t4 到t9 级别的一个课程的标准体系,但是我告诉你啊。
t9 级别在咱们这儿不算什么的,因为我们的课程对标到t 11是问题不大的,对于腾讯来说,当然除了这个实际落地之外,我们还有对应的理论品,理论片,分布式系统的理论基础,从派克从cp定理到base啊。
到各种的高可用的方案,高扩展的方案,高性能的方案到技术的底层的支撑,这个技术底层的支撑呢主要就是一些原理和源码,i o端中高并发,jvm gm ux内核操作系统技术底层的支撑。
为了应付应付咱们建构师的面试,好到算法课,算法课目前为止是可以单独购买的,算法课是我们左程云左老师这一门课400个小时,超过腾讯课堂大多数的其他机构整体的课时,这个算法课从,你最萌新的小白的算法。
开始带你一直逐步地走到我们的进大厂的这种算法,如果想了解细节,我建议你可以到到我们的网站上去访问啊。
在整体算法课里面,从那个最基本的算法概念开始啊,一直讲到什么二叉树递归,快速排序等等,这算是你你你搞完这个之后呢,就正常的,你你你学了一遍计算机系的那个算法与数据结构这门课,但是这门课不算完。
会帮你透彻的整个体系建立算法的概念,亦或相关的基础的数据结构,规定相关的堆,相关的前缀数,二叉树贪心并查集图,暴力城市到动态递归,好到这里的时候,恭喜你,国内的大厂阿里京东叫你开门没问题。
但是你想进国际大厂以及那些个比较看重算法的,比如字节,继续往后学单挑战矩阵b p f p l p r t算法,k m p mineh,莫里斯便利相对少数ac自动机对数器有虚表,卡特兰数四边形不等技巧。
后缀数动态规划,猜中web信息简化,大厂刷题班绳子问题有效,括号子问题,概率调整问题,矩形最大程度问题,放零食方法的问题,二代数问题,ru内存算法,这个可以说是必问的,也是最简单的。
l i u b i l l fu要简单的多,非常不重复,子串o就不一一念了,到立刻最受欢迎100题,以及今年大厂出现的新面这个汇总,这个呢只是我们整个课程体系中的这么一小块儿了,好除了这个之外。
分布式关键算法的支撑,派克索斯zab rap gossip,一直到线性回归,逻辑回归kn为什么要讲这些推荐系统,必须要有没有推荐系统的淘宝网,你能想象吗,底层原理的剖析源码级别的课去随便找。
能超过我们李老师讲的spring源码的,几乎没有,88小时帮你透彻理解spring源码,一把给你干到p7 ,为什么,因为直接给你讲到的就是spring定制化开发这个级别了。
spring vz买alex tom cat,spring boot,spring cloud m q e r k ney houseboard,redis,lindsey和mico等等。
这方面的源码课,我就不一一念了,好吧,基本上就是各种的服务架构的演进,从单体架构到微服务架构,从微服务架构到多级缓存,到分布式,到service mesh,到sevice,到大众台,ok。
在这我就不多说了,那么基础设施的建设就是网络相关的dns s的cd n的基础设施的解决,负载温度异地多活啊,h b d n s的实战等等,番外篇主要讲的是linux。
linux呢由于它内容非常非常的多啊,这个就不一一展开了,核心服务的设计,这里主要讲的什么呢,网关层怎么做,其实说白了就是网关层怎么做,然后呢又有逻辑层怎么设计,缓存层怎么设计,高可用怎么设计这种服务。
智力层怎么设计等等,那微服务的全站主要讲的是spring cloud到奈飞啊,spring cloud奈飞到阿里巴巴到持续集成到它的一些高。
级使用咱们阿里的老师带你讲这个spring cloud的阿里巴巴,这肯定是没有任何问题的啊,然后第二代的微服务snh基本上没有人讲这门课啊,我们是从19年就开始开始讲这门课呃,怎么说呢。
就是这些个叫什么金丝雀部署a b测试,回头发布啊等等,我这么跟你说啊,就是我们对于前沿性吧,我这块想超过我们的其实也不多好讲,大数据的全站从这个呃数据的存储啊,到批批处理,到流式处理,到实时计算。
到数据库,数据库,数据库,数据导啊,深度框架的这种分析啊,离线的分析源码的分析嗯,好,吧不说了,什么离线数仓啊等等,说句这里,好到service mesh的落地实践到我们的人工智能的加成这块。
主要叫做推荐系统到服务质量的保障,csd啊,到测试到运维到我们的一些虚的东西,学的东西呢主要是留给更高级别的人听,你真到了p8 p9 级别。
这些东西也是可以给你加到你的你的你的value的课程内容比较多。
假如说从一个嗯简单一点的角度来跟大家讲一下,因为我们课程体系呢呃相对庞大一些。
我从简单一点的角度来向大家尝试解释,这个课程体系大概是一个什么样子的。
可以这么说,这么来理解整个mc的课程体系大概是分成p5 就业课。
p6 讲新课,p7 的架构和p8 的精英课,源码大师课,is stel的服务网格,可这个呢掌心来说。
那肯定是小case了,我就就就就就就就就不能说了,为什么我们讲新的架构设计是给你举个例子,所以,好这哥们儿是90万年薪概念。
腾讯,你仔细看,这是我们学生里面,你看看腾讯面的什么问题啊,架构设计看了吗,我们专门的3月冲刺班里专门讲了这个架构的设计。
这个钱90万值90万,实战落地的项目可从整个项目课来讲,九大项目今年我预计会扩充到20个项目左右以后,你说你简历上没有项目科学,没关系啊,来咱们这另一个就可以了,就业指导,我们3月的冲刺班,3月冲刺班。
4月突击版,这两个班到底有多牛逼。
还是那句话,实践来说话,大家注意,这是一些同学的聊天记录,我们做了一些那个隐私化的隐藏,但是我需要告诉你的是,你随便去找任何人做掉,对你说我们有任何ps的地方,你随便找你找出任何一个假的来。
我们十倍学费赔给你好吧,全部的利拒绝造假,我知道有很多人能去拿这玩意造假,但是咱们这儿真没有看这里,我就说这个这个这个这个土地班这事儿吧,看了吗,一个月突击涨薪70%,一个月时间一个突击就可以了。
突击40年12k武汉跳北京突击课帮助真的很难,阿丁老师,我们先拿了一个22x14的offer,暂时没有进到大厂,感觉面试突击的劲儿用完了,问的比较深的东西暂时没学到,因为他就干了40天。
就干了一个突击课,你懂吗,其他的什么都没干啊,算满意吧。
突击课真的帮助了很多,这里面呢一共有19条。
我呢就不在这里给你一开了,传统企业突击一点。
五个月涨薪4k ok,好了,特色就业指导课单元的面试冲刺课,这个一般我们称之为叫突击班e的搜索的专家课,ai基础前端课,算法的小白进阶大厂,立刻听我说,叫一次付费,持续更新。
那么除了这个一次付费持续更新的课程之外,我还送你100赠送一期单独拆分的go on的全程的就业课,测试开发的系列课。
大数据就业的系列课,python游戏前端游戏,后端成员英语和数学日常的软件能系列赠送一期一期已经足够,不要把我们赠送的一节课当成一个特别特别那种,怎么说特别水的那种东西。
有时候在老师这儿的赠送甚至会超过一个机构的差不多,总体的课作为go on来讲,也是好吧好了呃,我对于我们整体课程的介绍,我就介绍完了呃,不知道大家听清楚没有,我说过我有20~25分钟左右的一个广告时间。
差不多时间快用完了,我的广告也快介绍完了,这么跟大家说。
我刚才说了,由于我们跟腾讯这边要做那个认证,为增加了很多成本,因为腾讯要请人在腾讯内部帮你做认证,这个成本是很大的,所以呢涨价1000块钱,目标在即,大概今天还是原来的价格,从明天开始涨到涨100。
从明后天开始涨200,你信你就等着看,你试试看就知道,所以对课程有兴趣,今天晚上的送大家20个原价购买的名额,好吧,剩11个,收完为止,请大家呢找到咱们的小姐姐,加到小姐姐之后领优惠券。
在现在的14980的基础之上再减掉2500,2500块钱能听懂吗,最后的成交价12480,今晚剩11个名额,还是那句话,课程牛不牛逼,我不希望呢就是各种的细节让我说的太多。
因为细节上的东西你有很多地方可以去查,第一个我刚才讲的这个x方的图,第二个我们自己的网站,关于数据结构呢你自己去查,第三一个我们自己网站里头有关于mc的介绍,你也可以去查mc内部。
我们给大家伙简单的列举了在我们mc内部讲的关于p5 的知识,像这些知识呢你都可以自己查看,看自己对比到底是一个什么级别,其实这块呢列的不是非常的科学,因为在大厂来讲,p5 和p6 往往是一个职级。
所以你不要认为说你掌握这个预算p5 ,实际上你也需要掌握一定的p6 的知识,p5 和p6 是一个值,给它怎么划分的,应届生你就算p6 水平定级也是p5 ,好在p5 的基础之上,有3年级工作经验。
基本上就到p6 了,那么所以p5 和p6 再强调一下,是一个质地,叫两,个密不可分,所以你想让自己定位在p5 级别,你也p6 的这个内容,你也必须要掌握基础素质素养,高并发的方案,高可用方案。
高扩展的方案,通信和调用缓存中间件,消息中间件,搜索中间件,存储中间件,分布式锁事务,分布式的配置,注册与发现网关路由服务调用负载均衡登录器,分布式的消息链路追踪预警和监控权限控制。
分布式的其他专题安全问题,大数据分析算法能力的深入到这儿,你基本上到p5 级别,想到p7 继续往下看,在这儿呢我就不一一的给你给给给给大家介绍了,咱们的网站上去问。
如果你想了解某一个体系,比方说老师我就想了解go浪,你能不能给我介绍一下,找我们了解需要白皮书,每一个内容我们介绍的都比较细致,但是我要从头给你介绍这玩意儿呢。
我估计有两小时才能把我们整个课程体系给你介绍完。
没关系,我给你打开这个白皮书看看就可以了,这是我们算法和数据结构的,这里目标是混合全能型的人才培养啊,那没有做好目录,不管他那么,进去了就会收器啊。
bbc搜一下白皮书。
挑一个吧。
嗯这最近打开的我来看一下go浪的课吧,嗯在整个go on的第一第一版的课程里面,送大家在这一版里面不够基础,开始到go的各种model,go land的各种优化,主流的外部框架的对比。
这个框架的源码的解读,这框架的入门restful api啊,到那个呃,这这里主要是go web了,然后在go web的基础之上,这是go web的基础之上,项目的单体的应用。
项目的这种go的微服务的应用啊,怎么去这个docker k8 s promi普罗米修斯,然后结合起来做狗微服务的应用,到讲什么呢,到我们的呃呃k8 s的源码的解读,解读到这个深度就是一期go浪的课呢。
基本上也能让你达到go浪专家的水平,所以不要把老师这现在还暂时还送你的课。
你还能薅羊毛的课当成一个可有可无的东西,因为我呢呃是站在一个架构师的角度来帮大家设计课程,一个架构师来讲,如果只局限在说,我就会一种语言。
而不是说能够灵活地运用整个结构啊,什么样的语言该做哪块。
什么样的语言该做哪块,到这种程度的话,你的薪水实际上是高不了太多的,所以想追求那种比较高的薪水,照咱们这来做,照着我给你安排的路线来做好吧,有没有课程的内容呢。
我大概就介绍完了,然后呢别的呢我就不想多说,只看课程效果就可以,我在这里有很多有可能会问我说老师你这这么多的课,我什么时候才能学完呀,同学们听我说,我想问你一句,你从小你从八岁开始开始上小学。
从六岁开始上小学,到现在为止,知识你学完了吗,没有完,想追求一个自己的终身的发展,保持自己的竞争力,现在是一个知识非常爆炸的时代,我那天去通通去听那个腾讯的呃,这个会议啊,咱里面有一个。
他说了这么一句话,我觉得真的挺对的,他说现在这个知识啊,你昨天学完了,今天早上起来很有可能已经被淘汰了,就是这样的所有流程化的中,这个指指这个流程化的东西,就是总而言之,甚至你现在连保持都保持不住。
所以我到现在呢我也没有说想跟大家伙什么事情都做完了,没必要做完,跟着老师扎扎实实地学,我们呢对于你的短期的需求,会做那种定制化的一对一规划,什么意思,你说老师我就想一个月,我想找点薪水。
你能不能告诉我一条路线,根据我的这个自身情况,我又想一个月涨薪,老师你能不能帮我。
有的是入学一个月涨薪70%的,报名一个月,传统企业干净小米了,薪资还翻了倍了,知道吧,老师现在先到哪哪上班,恭喜与美日优先,这怎么还有这怎么还有这种人家每日优先,后天还要过来做招聘呢。
这个咱们小姐姐注意一下,这个这个还是给人家引掉比较合适啊,特别感谢我们已经推推广我们之间的同事和小伙伴了,你想想看,如果说我们课程不好,他会推荐给他的同事和小伙伴吗,我这边面钱给的也不多,然后恶搞恶搞。
但是虽然钱不多,相比之前的工资也翻倍了,你说他得多,凡尔赛,他跟我那说钱不多,但是呢比原来的工资还翻倍了一个月,知道吧,这就是我们课程的水平,offer谁给的offer是这个另外一个人给的offer。
是这个加7万股票综合考虑,所以选了小米给。
就是你想多长时间干到一个什么内容,干到一个什么水平,老师帮你设计一条路径,这条路径给你设计完了之后,你就会少走好多好多弯路,这是我们所能提供的最大的价值之所在,a大家能认可吗,是不是有任何一个行业。
如果有一个牛逼的人带你,是不是得好得得得省好多弯路,能认可的,给老师扣个一,这件事情很难很难被认可吗,对没错,就是各个人的需求情况来给我帮你制定这件事儿啊,还有啊这个你像应届生滴滴的offer。
年薪29万,这是硬件啊,你像那个嗯t3 荣耀的offer,25到年薪的35万,你像这个是45岁的一个女生,涨薪50%,老师真的超级给力,呃这么跟大家说啊,就是海外的留学生学我们课程其实也不少,也很多。
他们会过来,为什么选我们课,因为这个真的不管你是在海外还是在国内,给大家伙的帮助真心比较大,呃最近阿里的收购的那个东南亚的电商也在找我们做内推啊,说你们有没有学生,能不能帮我们推一些。
听我说所有海外的想回过来来就业的,来我们学完直接给你推阿里,当然这是阿里收购的一家企业,东南亚的电商给的薪资比阿里本部给的还高,迫切急需人才。
这个算是比较差的了,这个没办法,因为他这个学历的问题,当地20万美元的offer,当这个人家是在北美了,昨天我拿到第一个offer了,前来还愿哪家的offer,没说啊,这个就给给你盖了而已。
给他咋样满意吗,感觉还挺多的,200k我甚至还没有呃,还没面过过那些大厂一次就过了,算一下,想签就签,牛逼的人才会有更多的选择,1月份报的名。
4月进阿里,这就是我们课程的速度和,这就是为什么很多企业愿意来我们现场做招聘,你知道吗。
再跟大家说一下,24号今天报名,明天老师帮你改简历。
24号也就是后天参与我们的4月份的内推招聘会,4月份参与内推内推招聘会的企业,这么多2021年042020210424的招聘会,现场招聘的企业,京东的一堆,百度的一堆,阿里的一堆,这是大厂的。
当然也有外企的for works,有高有低,我们挑选企业的话呢,也是涵盖咱们学员的那个各种各样的一些特定的情况,不废话了,我的广告就做完了,下面答疑时间,十点半,我会继续把剩下的技术讲完。
各种各种就不用买了,然后我就不给大家做广告了啊,还有六个名额,还是那句话,就是我们呃是真心会涨价,想薅羊猫鸟抓点紧。
就我们这课我跟你说,卖2万都不觉得多。
你就这么想啊,就是400个人家那都不到400个小时,两三百小时的课就卖你6000多块钱,不信你去看啊,多希望你多做比较,我们是2400小时。
目前还在中间,我不想给你拆分了做,你要想买也可以拆分着买,所以随你啊,呃算法是可以单独售出的,出售的大数据就业也是可以单独出售的,到目前为止,这两个已经拆分了,5月份过后。
行我就大概介绍完了,我这广告打的怎么这么没激情啊,mc是啥意思,mc的全称叫马士兵,certified architect,叫马士兵认证架构师,看来主要对手这是这是谁,没看懂,没有对手。
我们的课程没有对手,任何人只是说把我们当成假想的对手而已,但是本质上差不多,希望多做比较就行了,o,马老师需要学一下直播带货的小姐,你教教我,现在是10:21啊,收完为止。
哈哈好吧,对课程有疑问的,对那个对课程有疑问的,对技术有疑问的啊,大家随便问啊,这技术能问到老师的,算你牛逼,对课程能问到老师的,当然你也问不到,哈哈哈,我等听最后两道题,十分钟以后啊,八分钟以后。
十点半我们准时开始啊,下周一面美团。
希望八人都到了,好运啊,我就我就想多说两句,结果还不如打开物料,第一个就是说我们的课程是受到厂商的认可,这一点大家能理解吗,这小伙伴直接面面京东的时候,面试官问从哪学的,就直接说的嘛,我说知道挺有名。
杜远程回答的比较好,当场知道吗,当场直接过的o估计没准面试官也是我们学生,这个有可能呃,所以呢在我们的内推里面,其实有好多厂子呢就直接找到了那个阿里的是最多的,因为我们阿里的老师比较多。
就通过他们往里往里推,成功率都会比较高,你像字节的话呢,就差不多离我们直线距离5百米,这个也是内推的渠道也是非常通畅的。
这是去年4月份的时候,就是我是字节跳动直播平台的研发负责人,看到课程资料就觉得应该有不错的学费退给我,直接安排面试,这是他负责全球所有的,直播平台研发负责人牛逼吗,核心部门我们已经有同学进去了。
这是他的一个工牌,就不展示名字了,在字节的你可以去问一下是不是后缀,是不是叫什么涛啊,就是说我再给你说一遍,内推一线大厂的渠道非常通畅呃,如果是说这种你你的目标不是什么一线大厂,其实我们帮你改完简历。
直接拿去投,效果就已经足够好,不需要你学多长时间,业余的时间,周一到周五,我希望啊我个人希望是你能学到两个小时,像周末的话,我希望你能够每天六个小时,你不需要很长时间的关键,然后你每天一个小时。
你就稍微延长一点嘛,关系不大,其实我觉得我们课程最我我最自豪的一点是什么呢,是短期就比较给力,我不需要像线下的跟着脱产学,五个月,八个月,九个月,一花钱就是三五万,再加上吃饭,甚至都到好好多好多钱花好。
多好多时间你还挣不了钱,线上你看到了吗,一个月薪水翻倍了,o那个,拿了58万年薪,这哥哥呢是传统项目到三家互联网大厂的offer,不知道该怎么选,三家offer日期的硬件的等等等等。
永旺三家offer都将近年薪百万o,报名一个月,传统企业进小米,还是那句话,你记住这一点,老师教你的路线叫做最短路径,叫做捷径,叫做每个人根据不同的情况走的一条捷径,你像嗯说一最简单的吧。
就去年我们一个一个过时的路径叫做6+2啊,这个你看到了吗,6+2干了一半,薪水到六呃,6。5~16。2呢是我们2019年推的一条路线,这个路线叫什么,叫做六个基础课加两个项目叫6+2。
其实呢你如果你想追求比较短的3+1,如果你想特殊的一个情况,你在在在在校大学生6+1,说你大三的7+1+1就是每个人每个不同的路径呃,从一些个我们过去的总结的经验来看,大概呢粗粗的我们画成了18条路径。
这18条路径你可以对号入座,大概是这些大学生等非经济专业的专科的,海归的,冲刺的,外企的,转行的,跳槽的,镀金的,大龄的,非java语言的等等,有的是三家a da,有的是四加油的什么。
还有根据你个人的最终的实际情况,需要了解到你的背景,才可以帮你定制比较科学化的路线,这就是为什么能够有的人呢他的他的他的效率特别特别高,一个月涨薪入职京东,你说这钱花的值不值,你自己琢磨吧。
涨到最低最低的哪怕就45k一年也6万,学费1万多块钱而已,应届毕业生字节跳动,成都5k到10k薪水翻倍,还是那句话,我希,望你们报老师的课是出于效果,而不是听老师说广告打的多花哨。
打花哨这事呢还真还真还真不好不好做,我有时候觉得罗永浩直播带货啊,感觉也没啥呀,发现真的自己要带货的话还是挺费劲的,c sharp转java大概需要多久,如果你是做点是学俄罗斯ring cloud。
干净用油涨了50%。
长点神他不香吗,别卡有的棋不卡,这东西呢你不能叫一个而论。
有的人人家就在乎必须得1米7以上的,你1米65的就别考虑那些就完了吗,天底下我也不说那么多,非得选他们家吊死吗,看学历,大专负债50代职大专生职业第二春,当然这个是这个这个跟学历关系并不大。
它主要是负债,大专生错过阿里入职申通,申通也不错,二线大厂嗯,干满1年再充一些吗,为什么错过了阿里,阿里打了两次,打了八个电话,他都在面,申通正好没接着,这就是天意,这个没办法,你这属于倒霉。
不然真的进阿里了,大专生嘛,大专学历,多家大厂的offer,感谢我们的课程,接触了不少东西,按照周老师讲法,就是认知偏差是吧,经过三周面试,到目前为止收到了不少的offer。
真是想不到大专学历的我也不再只是那些中小型公司。
看我去面试,艾琳大专没工资到就业,薪资翻一倍,刚才那个21k应届生大专毕业,如果你听过那天我们的直播课,这个应届生的这位同学远程还给咱们学生专门讲了,他是怎么拿到这个offer的,同学们是这样的。
学历呢是你短期内改变不了的东西,所以提能力让别人降低啊,企业看来呢来降低你的学历对你的影响,截下屏,然后那个微信打开扫一扫,打开你的图片就可以了,c语言讲什么语言都行,你这还停留在语言呢。
你这个呀我跟你说,你这境界呢就是不涨,我那个教过很多人关于境界的问题,就是你这个人呢能挣多少钱,达到什么样的一个成就,跟你的眼界那绝对是正相关的,你眼界到了,你才有资格享受这个回报,还局限在语言上的。
我再跟你说一遍,boss直聘关于北京的所有的职位的调查,薪资排名第一的叫架构师,排名第二的叫ai算法工程师,这两个是你们将来赚钱的追求,追求薪水,你比方说像这种年薪百万的这种奔着这两个方向走。
有可能会达到,如果不是这样的,你打不着达不到你c语言再牛逼,你给我找一个做c语言的,说普通的一个就是正常的,有一定的比例的人能达到年薪百万吗,记住架构师呢它本身不局限在什么语言。
你说拿一个这种互联网的流行的这种高并发的架构来讲,它前端呢一般我们就称之为叫网络接入层,然后后面呢是我们api的接口层,后面是我们微服务层,在微服务里面呢,我们就中间有什么呃。
这个监控要控制这个降级限流熔断等等,服务治理层,然后呢中间有缓存层,下面有大数据的存储层,数据库层,每一块都可以做扩展,每一块都有n多的产品做扩展,当你了解了这些玩意儿之后。
实际上呢你说这个语言到底是拿go来做的,还是p h p还是java,它重要吗,真的没那么重要,真正牛逼的架构是叫做能把这些架构采用合适的东西给搭出来,这个叫架构式,那这会儿能听明白的。
老师扣个一就这么跟你说,呃其实go语言做这样的架构也可以,java语言也可以,p p也可以,我不知道你了不了解呃,那个我记得阿里有一个特别牛逼的人,从国外facebook挖过来的,他只会一种语言。
就是菲律宾,但是在阿里研究什么东西,所以对他们这种人来说,为为为什么我们课程里讲很多的基础的内容,讲算法,讲计算机的底层知识,你说它跟语言有关系吗,关系其实真的不大,但是为什么要要讲这些基础不牢。
地动山摇,你能站多高走多远,要看你的基础有多牢靠,所以他跟语言没有关系并不大,我们虽然叫java。
以java为主,是这个,你像武汉跳北京40天涨了12k。
那薪水虽然不算很高,涨薪幅度很高的,比如说啊我们说我们说这种涨新的,就就就不说龙湖地产15x12~20x10吧,你说涨了多少。
你自己算吧,36万,原来18万张,360000等于是那个翻了一倍吗,我说找点那个绝对值高的好吧,不不不,找这个这个这个这个绝对值不高的,因为绝对值不高,让你涨个薪水,那真的跟玩儿似的。
你说你1万块钱让你涨到15000,我跟你说,我给你改改简历,给你三天时间,你就到了一点,不夸张。
但是比较难的,实际上你像这种的29天52万,涨到68万,干到80万,等我都学完了游戏,把算法学一遍,拿到80以上应该没什么问题,我们学生就是这么自信,老师教的太好是吧,原来年薪25,现在给51万。
他们公司涨近30%,这算是非常特殊,给他分配了,你们这技术教的太好,也是麻烦事,因为他担心cover不了吗,这是突击一周的面试突击课,20年的毕业生涨了4k,你说我帮你改改简历,让你从1万涨到2万。
涨到15000,你说真的很难吗,反正就看效果,小试牛刀,两个40万的offer,年薪60万的offer。
年薪120万的offer,刚才那年薪90万的我,你总说这是比较高的,有高有低,每个人情况不一样,跟自己比,今年我赚年薪15万,明年我赚年薪20,你就想想,只有他的标题带了牛逼俩字。
其他的都没带,迄今为止最牛逼的学生公司,给了5000万的股票,已经套现,全国游了一圈儿,离职了,然后进了腾讯。
这是他呢给到大家伙的一个小小的建议啊,我在这就不给他展开一一念了,怎么说呢,机遇加努力改变你自己的命运,不要在那天天煮青蛙,在那儿天天打游戏了,这么跟你说,你还停留在让自己不进步。
指望着说我跟这玩个几年,后面呢还能拿到你现有的这种这种待遇,恐怕都不容易好吧,凑个整吧,现在是22:38,不小心时间超了,我们22:40,我给大家讲剩下的两个问题啊,5000万直接财富自由,是的。
每年的理财收入接近500万,他亲口跟我说的嘛,啊想看看他的简历吗,还有两分钟有没有有有没有人想看他中间的某个阶段的一个简历,扣一把衣服扣起来,我看到满屏一,我才会给大家看这个简历。
在我们简历模板里面有一个29岁,年薪120万的简历模板,就是他的,在这个简历里面不需要你聊太多,分布式高并发高可用大数据量的系统设计经验及研发经验,我就直接告诉你,这是整个简历里最值钱的部分。
个人技能不一样了,我们课程里头全涵盖,放心老师的课,让你怼到120万以上,没有任何问题,当然在你没有学完学一部分的情况下,你说从二三十万说我涨点钱啊,涨个百分之三十五十的,那真的很轻松,ok,就到这吧。
已经2。40了,我们讲完剩下的一点点技术内容,怎么还往还带往回吐的呀,是不是有人有人往上增加了,应该是有人弄了之后没付款啊,你签完要抓紧付款啊,我估计是这样的,你的那个优惠券没有领,听懂了吧。
领完优惠券会在这个价格的基础之上再有相应便宜,便宜2000多块钱,还有一个呢需要大家了解的是,需要跟大家说清楚的事呢,现在有一个叫做零元入学的政策,就是你前面如果说你你你你你本身经经济经济比较紧张。
前面六个月不用你付钱,要3月让你把薪水涨上来,甚至你,才开始交第一笔钱。
嗯我们聊完最后遗留的两个问题啊,看这里呃,这么大家说呃,第八个问题和第九个问题呢会相对复杂,这块呢你仔细听,认真听,能听懂就听,听不懂的你就直接帮你打开一个思路就可以了。
看这个思路叫做为什么不使用c加加对象,直接表示java对象,我直接告诉大家答案,这个答案是这样的,c加加对象和java对象的主要区别,这块由于很多人没接触过企业家,我直接说结论能听懂就听听不懂。
就算是因为c加加对象里自带了一个叫做virtual table的东西,这个东西呢叫虚函数表,来学过c加加的人,能不能告诉我这东西是什么东西啊,这东西是实现c加加多肽的关键。
本质上java实现也是通过这玩意儿来实现的,只不过java里面把这个虚函数表挪到了class文件里面,好有没有理解这个虚函数表的,有的话给老师扣个一,有吗了解虚函数表的,嗯rin rin rin嗯。
不懂是吧,不懂就算了啊,总之可以这么说,c加加n的对象里面比java对象多了一个东西,所以如果还采用这种来做这件事的话,那么java对象里面他的它的大小会膨胀的比较大,java追求的叫做紧凑紧凑。
你懂吗,就是它编译出来的class文件,它会非常的紧凑,会追求字节呢相对的比较小,因为原来java设计师在网络上进行传输,那会儿带宽没有闲的这么宽,所以在c加加里面,在java里面设计了两种两种东西。
把这个虚函数表从对象里头挪走,虚数表挪哪去了,挪到了class文件里面,所以,叫做oop class 2元模型,不懂就算了啊,这个问题相对复杂一些,难一些,好,我们来看这个问题。
就是第九个问题叫class,这个实力究竟是在method area还是在hip里面,对java的实例方法都是虚方法没错,所以它的class里面全是虚方法,这个问题这个问题如果说呃一个中小厂在问你的时候。
你就直接class文件肯定是在methoda的,这个不用说了,肯定是在这儿的,但是我告诉你,在一个hosport的实现里面,比方说我们new了一个大o对象,这个对象本身是在class,是在堆里面。
这个对象指向的class文件,它会位于我们的方法去,这个方法就叫method area,但是注意的是,这里的引用指向的是一个c加加里面的一个对象,在这个对象里面又有一个引用。
这个引用指向的是堆里面的关于o。class,所以严格来讲,o。class是位于堆里面,为什么放堆里方便反射调用,方便反射,所以来讲class文件的信息由两部分构成,第一部分是c加加的内容。
这是关于这个class的一些原原数据的信息,第二部分呢是关于呃可以用来做反射的older class的内容,这部分内容放在堆里,这部分内容放在method area里面,好同学们来这块儿能听懂的。
能get到的,给老师扣个一,已经报名了,我升职加薪之路就靠你了,老师你来就是了,老师要让你升不了职,加不了薪,你任何人都不可能让你做到这一点了,就,好了,当然这里面还有一个没get,他哪没get。
你得问出来,我这几个名词你哪没明白,什么地方没明白,比方说我们常见的这种jvm的内存溢出,jvm内存溢出叫做out memory,而这些对外m内存溢出,实际上这里面的对象变多了,内存里面装不下了。
还有一种内存溢出比较特殊,这种内存溢出呢叫做mt space的溢出,有没有听说过permanent generation,永久区的溢出,好这两种东西,messaga,还是用jvm,你随便问问导老师。
算你厉害,就是哪儿没哪儿有疑问,你得你得你得你得说出来冲出来,这么不给面子吗,我这啊抢完了是吧,我确认一遍,我还说呢,这么不给面子吗,口干舌燥的十几个名额,讲不完,有点过分了,ok,什么是放射。
不是放射式反射,我有一个问题,我抢到了,但是我舍友没有抢到,怎么办,那就明天涨100块钱要呗,还有优惠吗,导致内装载三过程加载链接初始化和今天的第一行对应一下嘛,完全可以加载链接初始化。
我vip讲那个jvm的第一堂课就讲了,跟这个是一一对应的,对象创建过程你还记得吗,就是它的成员变量呀,它的成员变量中间有一个半初始化状态,对不对,类的加载过程叫做它的静态变量。
有一个半初始化状态能听懂吗,我一句话就给你解释了啊,静态变量半出手状态,一对一定制化,p8 p9 的课程强加密,我们是采用了国内一家另外一家那个专业专门做加密的,这个加密平台比较特殊。
第一绑定你的计算机,第二绑定你的人脸,就是你看我们课需要打开摄像头,让摄像头看见是你这个人在看,而不是别人,第三一对一的定制化,第四企业过来直接内推招聘课程的含义啊,t4 是什么级别。
t4 很便宜的一个级别,大概20万左右的年薪,第四大概就这样一个级别,老师咱们有内推吗,有必须有,没有听明白,能说小心点吧,老师什么地方没听明白,你说有啥问题你直接问啊,类装载的三个过程。
就是我刚才跟你说了吗,你有一个对象,他有个成员变量小m我这有个为零的状态,对不对,如果这个小m是静态的static类加载的时候,它中间有一个为零的状态,类加载完成之后,它才会变成初始化的值。
就这意思就是一个静态变量和非静态变量的区别,t4 对比p7 不是你不要千万别误导t4 ,离p7 远着呢,内推走哪推推给hr,现场内推推给直接的项目的负责人,腾讯跟阿里系的不一样。
对啊腾讯大概t4 差不多就相当于阿里的p4 左右,p4 到p5 ,像t5 到t几t5 到t t t t t左右,差不多相当于是阿里的p5 到p6 减吧,应该这么说,像那个t9 左右的话。
他们要是p6 加p t减这么一个过程,按薪水来说不就完了吗,按薪水来说,按薪水比较,t4 加给了22k22 k20 多万嘛,正常也没有什么太多问题,计时多少钱,百万左右,老师哪些企业算大厂。
在老师我的眼睛里,大概有12 三家大厂,分别是百度阿里,腾讯京东,美团滴滴拼多多,像最近的话,那么华为蚂蚁嗯,比如说还有像国际的大厂,这个微软,facebook,谷歌,亚马逊这些,这里的一线城市。
西安这边,西安这边,你就找西安那边薪水最高的二三线城市,我们课程的百分之五六十对标你们城市所在的前5%的工作岗位,一二。
35岁五个月涨5k进华为,这个还正好卡在年龄的时间点上嗯,西安的,三个月西安找金时可以带团队的28k在西安已经很好了,我不了解28k在你们虽然算算是很好了吧,应该张老师原来是吧。
三个月在西安涨10k老师的课值值吗。
应该还可以吧。
底层细节还需要慢慢消化,去年做生意赔了几10万,现在面试基本平衡,7月底数学西安阿里的p6 ,我没去p6 面,过了阿里的,但是我去不了自身原因出不了手。
不知道他因为什么没跟我说,反正就就是城市来讲呢,不是问题,就是你的应急能到位了,你觉得城市能够限制你的发展吗,是的,先28列对,那就对了嘛,家养老也不错,作为年轻人,我不知道你多大年龄了。
年纪轻轻的就想养老,我也不,我也不知道我,我这这这还能跟你说啥,作为62岁的,我还在一线拼啊,您这个倒好,年纪轻轻的就想着养老了,哎呀妈呀。
苏州微软在等我,苏州微软,我们好像还真有学生进去找找,我忘了就没了,苏州,苏州,希望20~30,25左右吧,然后简历模板看了,感觉人家是很体系化,周四的时候,20号的时候跟我说。
最近周四的时候忘了周四了,每个月差不多两个offer,还是老师特牛逼,简历没写好,面试都能过,苏州小地方大牛没有到一线城市,指评机组合上海回苏州还涨了5k涨了5000,而且是上海回苏州涨了5000。
还给我们推荐推广的过程,对嗯可能比较认可才会推广是吧,这个就比较他薪水比较低啊,所以那个涨涨到11k就太轻松了,其实工资已经涨到7000了。
基础稍弱的,让你整个心就老师这课来说,稍微指点指点就够了,嗯还是那种就是说大家伙平时花钱的时候嗯,反而是跟大家自己息息相关的,能够给你带来更好的职业发展的这样的一个机会,反而就不花钱了。
我也不知道是你们是怎么想的,这里是再重新再重复一遍,这里是二二十多位来自于一线城市,一线大厂的老师嗯,就是我们这什么竞争对手谁,您老人家随便找找出任何一个机构说。
肯为你花20多位一线大厂的老师来为您对一门课的老师,这课就可以送你,面试太难了,你就拿我们面试突击班,面完就是学完,你都不会不会觉得面试太难了,电视太难说明什么呀,基础不足吗,不够吗,简单吗,22:
56:04分钟,我今天的课就讲到这儿了,有什么需要跟老师交流的呢,你抓点紧,哎呀提前面试我就难受,难受就难受,学到了最后面试官对线,哦看看那个还有没有同学跟老师交流的啊。
当然是说老师做了3年java两年的前端,随便找一个java找找感觉,然后找到了之后操作可行吗,不可行,就你这种规划,你还是找找老师给你好好规划,优化这件事呢比你想的重要的多,规划这件事比你想的重要的多。
有的人为什么一辈子混学历挺好的,混半天混不到城区,有的人为什么学历一般般,但是老师帮你规划好,进大厂就相对容易,就是你的需求,你这个你这个基本不可行,什么情况,嗯自学看天赋,没人带,很慢的。
有学历教你们高分学学瑞说的很对啊,选比基普通21120年毕业生,大概年薪大多数,现在是13个行吗,老师了吗,如果成不了二,老师的钱退你了,就是你现在13,我我我认为你现在是在北京,我们拿拿北京来说。
如果说成不了二,然后这钱直接退,你太简单了啊,上去说是美日经济能不能直接录取,有可能,就你这个我就这么跟你说,你20年毕业吗,你跟着老师这课,这课学30岁左右,年薪百万的可能性都是比较大的。
这不是我说学生说的,找找,完了我就跟你说一下你学生原话吧,就是后悔他他挺后悔,如果从毕业开始学,从毕业开始跟着老师走到30岁左右,年薪百万的可能性极大,原画,211的学历对你来说太轻松了啊。
要学历好的也是很重要的一个竞争竞争竞争竞争点,金道长有希望,40岁16年经验,希望很渺小,希望你,我建议你把你的目标定在掌心上,而不是定在进大厂上。
如果你一定掌心,就相对容易得多,39岁大龄程序员薪水翻了将近一倍,奖金大厂,37大龄程序员,不是这个不是那个37的,37 两个月左右,55万,70万,甘地美团达成,他原来拿55万面积。
大概涨了27%,告诉你仅此一例,我为什么说可能性不高,到目前为止啊,除了没告诉过我们的仅此一例,40岁在想进大厂晚了,没学历只求掌心,当场进不去,没学历你不会补学历啊,这还不简单,不是没学历。
也不是说一辈子就没学历啊,简历模板给你看一眼,42岁,44岁的大专生,年薪100万~160万,这是他的月薪,有同学说人家学历是硕士,人家硕士怎么来的,你要知道这一点,知道吗,扬州大学的计算机大专。
南京大学的自考本科,合肥工大的moba,他的第一专业叫热加工工艺设备,第二专业才叫做计算机应用,实际他是不是第二专业,我也不知道这种这这种的,在以前这时候的这种毕业证都无所谓的事,就随便你随便你写。
保持十几年,从大专生冲到年薪百,你以为就你以为那么容易吗,你不拼能行,我现在就想找个好工作,其实你要好好理解什么叫好工作,这件事特别重要,那么什么叫做好工作,好工作的定义并不是说绝对的年年薪值有多高。
他很多时候好工作的定义在于有一个很好的起点,后面有一条比较光明的路线可以伴随你一直往上升,这叫做好工作,一个起点可能非常高,中小厂到一定年龄段之后,马上没人要开始下降,很多人的规划路线是这种。
找到这种路线就对了,第一份工作一般做多久就跳槽合适,看你具体的收入,看你的目标是什么,这个一般来说要具体问题具体分析,能久一点,一定要久一点啊,坚持久一点,就一定要坚持久一点。
小白学代数据还是java好一些,你觉得java跟大数据有冲突是吗,小白不跟你说了,java跟大数据有冲突吗,你好好琢磨解释这件事可真是够累的,我也不知道为什么。
现在很多培训机构把那个java后端跟那个大数据对立起来就学了,这个就不能学那个,那不是扯淡吗,你觉得一个牛逼的架构是不应该懂大数据,是这意思吗,为什么人家29岁,29岁年薪120万。
了解并使用过had the historm大数据相关技术,使用其他技术logo,什么规则引擎之类的,你觉得他只是懂那个一些后端的东西就可以吗,24岁年薪60万的简历模板,那除了懂这些个后端的知识之外。
你觉得他不需要懂什么,adobe hbase,jark,spark have in palace storm,卡夫卡吗,你们得到的很多信息都是错的,张老师给你纠正过来,少走弯路。
16年非计算机硕士西安19javs,不知道该怎么规划,自己先想明白自己想干嘛,想掌心还是想进到西安的某个厂子啊,有的人以前西安的,我记得有印象说我我想轻松一些,进一些什么呃,那个那个国企和甲方的厂子。
有的时候我想冲一冲进华为之类的,每个人情况不一样,而且每个人基础也不一样,就是后面的路该怎么走,哪条是捷径,哪条是最短路径,找老师做详细规划才可以,大场面是有什么套路吗,没什么套路来给你看。
大厂的没问题,百度的三轮技术面问的问题你自己看吧,百度的三轮技术面,你可以找个图问问自己能不能答得出来,美团的三轮技术面问的问题,顺风的两轮技术面,京东的两轮技术面,阿里的七轮面试,问的问题。
阿里漆面的面筋,一面二面三面四面五面六面七面,套路你说套路的话,那就是你的你你的技能有多硬,lg的简历不会有一系列简历可以看一下不,找那个咱们大数据老师周老师来给你来帮你做规划就行了。
我想给你打开了大数据的简历,大数据专门的简历,你这个都是一个模板,你抄模板没有用的,需要根据你自身的情况,老师来帮你批改简历,改好了之后再去投,效果就好多了,老师们的对于简历的理解到什么深度。
看这个案例,只修改简历,月薪涨了3k,啥事都没干,就帮他改了简历,不好意思的说,就是你们的简历呢写的跟那个屎一样,周老师讲的指导的大数据简历。
薪水50%的涨幅,改了简历果然好多了,一把过13x13到手,原来是老家7x12。
修改简历之后,面试第一件就成功25k我就想问你一句话。
你说我帮你改完简历,他不值这1万多块钱,其他的课程你就当送你的就成了改简历送课程,修改完简历两天收获十几个面试邀请。
怎么才能获得在场面试,我要看你硬件够不够,再看你简历值不值,什么时候上这个喜报网就行,我们好多学生,我们喜报都要求我们撤下来,他老说我有点隐私信息,老师怕那个什么什么查,我们有的人那什么比较。
这个想法比较多嘛,也很正常啊,不求大成,只有掌心,那就太简单了,追求整齐,老师这是不二之选,天天投简历就有大厂面试了,这个说法我也是醉了,简历写成跟屎一样,你那个先别说天天投简历,你分分钟投简历。
也没有当场面试你,我也想要高薪,呵呵想想要高薪的来找老师,老师的最牛逼的记录,有一个学生只会html css,十天之内让他搞定工作,经验而已啊,嗯已经是61了,11。11了,今儿就到这儿了。
最后一个问题吧,还有我们同学想找老师有疑问的,放歌是吧,可以想听什么歌,你这么说,我从做这2年的线上培训以来,我们的课程体系呢从短短的200多个小时扩展到2400个小时。
老师呢从两三位老师到现在的20位老师,就怼在这一个课上,从我自己来讲的,那一定是呕心沥血,那么也希望你们能够慢慢的认识到我们课程的价值之所在,如果说是传授知识的话,那也只是简简单单的其中的一小部分。
其实更重要的是老师对你的这块规划嗯,一个最简单最简单路径的教你这么跟你说多了不说,你就省个三个月时间,每个月就算5000块钱涨薪,你省三个月就是1万多了,所以不要这种事上的,千万不要想不开啊。
投资自己最值得的投资,没有之一,同时也想到了今天的名额没有了吧,娇娇你要用就得用明天的名额,今天的名额应该已经没有了,找潇潇问吧,看有没有漏掉,没有交钱的这些,因为有些呢它会往回吐的。
原因是因为领完了之后他没交没没付费啊,不知道这个没有,我刚才说过了,我们会逐步找新法,明天涨100左右,到你到月底涨到1000块钱,差不多就类似了,就是你下一次在哪,就不是12000 400万了。
下次再拿就是12000 500万了,是13000 400万,3年同志了,帮忙问了,3年是大厂最喜欢要的年龄,千万别错过,错过一定后悔,一线大厂最喜欢妖的工作年龄3~5年,明天给同事推荐一下嗯哦。
放他过来听课就行了,现在是11:14,我们今天晚上就到这里喽,有tomorrow。
系列 1:P42:50w年薪面试题:1.前言 - 马士兵官方号 - BV1mu411r78p
今天晚上要讲的内容啊,我就不在这多废话了,下面我们开始聊这个这个对象的故事啊,嗯当然有同学可能会说,嗯你把我逗乐了,马哥我是驴帝,你脑子被驴踢了是吧,hello,嗯,没有声音吗,应该有吧,好那个。
当然有同学可能会说,这天天写面向对象,面向对象对象不就new一个嘛,它背后还能有什么特殊特殊的故事吗,呃有那么一点点,我将给大家听好,下面我们就开始,嗯开始之前我稍微的做一点小的调查啊。
这个有多少同学现在还是在学校上上学的,你给老师扣个一,我看大概有多少好吗,那其他同学就都是呃参加工作了是吧嗯,呃我倒杯水,哎呀因为最近嗓子不太舒服,所以水是离不了了,好我把我自己拖出去。
然后我把编程窗口挪进来。
ok就放在这,呃今天要讲的小程序呢也超级的简单,所以呢我就原来的这个我就不多做说明了啊,我就直接直接拿手敲就可以了,好大家听我说呃,今天呢是关于讲对象的故事,那么等会儿呢我会在笔记上呢。
把今天讲的关于对象的故事呢都给大家伙儿一点点记到笔记上去。
嗯这里面呢我主要讲这么几个内容,今天晚上呃第一个呢主要跟大家聊呢和sport对象的构成,第二个呢我教大家怎么去理解对象的大小,第三一个呢哎我给大家讲的对象头的奥秘,这是一个面试中的重点的重灾区啊。
第四个,呢我我我跟大家聊一聊呢,就是关注成长这部分好,那么这是我们的枫叶云笔记呃,这个笔记软件呢感觉越来越好用了啊,还挺好的,后面呢我们会持续地用它来做相应的分享啊,好了。
首先呢我简单跟大家聊一下一个对象的构成到底什么样,当然听我说,那么这个时候呢我需要一些工具,我首先呢把这个工具列给大家比较简单,常用的工具呢叫做jl,当然它全称呢叫你知道吧。
object layout啊,java对象布局工具呃,如果你想使用它的话呢,也特别简单,我在这儿给大家复制过来,给大家之后呢,你就可以自己去做实验了,好了,这是他的没有依赖。
ok这个是我们用到的这个工具的,没问的依赖呃,到时候你就加到你的那个那个项目里头去,就可以直接用了,它全称叫j o l,除了这个g o l之外呢,我还用到一个工具呢叫嗯。
这电动啊叫j class library,嗯,诶这个这个这个格式上稍微有点别扭啊,稍等一下,j class library啊,这个工具,这个呢是一个那个idea的插件。
呃所以呢你在idea里面直接直接搜就可以,这个class library呢它是用来观察一个class文件的一些细节,ok我们用到这两个工具啊,大家去下载就可以好,大家听我说。
下面呢我们开始聊第一个问题啊,就是呃在java里面。
系列 1:P43:50w年薪面试题:2:对象头的三大作用你了解吗? - 马士兵官方号 - BV1mu411r78p
嗯那么它到底长什么样呢,从一个普通对象角度来说呢,普通的对象角度。
他一共有四部分构成,这四部分分别叫mark word,class,pointer,instant state和padding,呃那个大家听我说啊,那么这几部分有同学可能不太理解啊。
就说老师您您这是在讲啥,一个对象,不就是你一个不就这样吗,不就new一个object吗,您那个给我讲说这个对象怎么分成四部分,是什么意思呃,为了照顾一点点,咱们就是基础比较弱的小同学们在听我说。
关于另外一个object,我想大伙应该都了解这一点啊,待会儿应该都了解这一点,就是在一个内存里面,这是我的画笔,在内存里面,当我们new出一个对象来的时候,这个对象他一定会在内存里面占一块空间。
这是没问题的,对不对,这个没问题的,给老师扣一啊,就是我们new出任何一个对象来的时候啊,他一定在内存里占一块空间,当然以前我们聊说这个对象啊,占了个空间,这个空间里头装的什么呀。
这空间里头装的是成员变量,一般我们是以前我们都这么聊啊是吧,我说new出一个对象来的时候呢,原来啊就是这个里面呢我们装的是成员变量,对象内部装有成员变量。
我觉得这个事儿大家是能接受,也很容易理解的呃但是现在问题呢是说除了成员变量之外。
还有没有其他内容,好好听,我说我今天给大家讲的是,当我们就出这个对象来之后,在这个对象的内部,除了成员变量之外,那么它有哪些部分具体来构成,那么它们都有什么用,听我说我今天讲的这堂课呢。
你有很多很多那种常见的一些小小的问题,你原来可能没有思考过或者思考不出来的那种问题,今天就统一给你解决了,好我先下结论,在hot sport这种虚拟机里面。
一个java的对象,它由四部分构成,哪四部分,第一部分我们把它称之为叫mark word。
这部分不好翻译,四部分,mark word,那么这个部分不太好翻译啊,我们把它理解为叫标记字,但这东西是什么意思,别着急,我后面会讲给大家听,那么这部分呢是八个字节,是八个字节,清过记录好。
那么第二部分是什么,第二部分呢叫做class pointer,这部分呢叫指向对象所属的class,这是什么意思,大家都知道我们java程序要想运行的时候,比方说我用到t这个对象了,我new了个t对象。
那么他首先得把t。class放内存里去好,这第二部分呢就是一个指针,这个指针呢会指向t。class。
通过这部分a b一指找到谁去了,t。class好,那么第三部分这部分才是真正的我们装实力的地方,也就是装我们的成员变量的地方,第四部分叫什么叫对齐,对齐的意思是说一定要被八整除,不能被八整除。
就给它补齐。
我先给大家记下来,一点一点给大家解释,instant data,成员变量啊,这是叫真正装成员变量的地方好,那么这部分呢一般是四个字节,这class pointer一般是四个字节啊。
这instance state它肯定不是固定的,你就放心吧,因为你装的成员变量越多,它肯定就呃那这个这个大小就越大是吧,那么第四部分叫padding,padding,什么意思,八字节对齐。
八字结尾结什么意思啊。
比方说我们前面三个部分加起来不能被八整除,我前面三个部分一加,那么它是多少呢,比如说是12个字典,那不能被完整数怎么办,再在这儿补四个四个字点,我不知道我说清楚没有,当然以前有同学问说。
老师为什么要补啊,如果你理解不了这件事呢,你就想象一下集装箱呃,当我们的大小对的比较齐的时候,像集装箱那样,我们装卸货物的效率会提高,假如说我们各个对象大小都对不太齐啊,这个11个那个七个那个七个半啊。
那个七个零一位,我告诉你,这,样的对象,你寻找起来和管理起来,它会非常非常的繁琐和麻烦,不知道我说清楚没有,来这块能跟上,给老师扣个一好吧。
咋签到,你现在就已经签了啊,不记往这儿看。
有同学说了,老师那你怎么能证明这四部分的存在吗,是可以的,我现在没向你证明这四部分的存在。
大家看这里,当我们运用了这个j o l这个工具之后呢,我们随便写个对象,比方说我们就用这个这个class啊,这个t t这个class好,下面我们写t小t等于6t然后呢。
我们怎么运用这个g o l这个工具呢,就java object layout这个工具呢这样来写,那么它有一个静态的live拿来用就可以了,叫class layout,class layout。
点pass instance,pass是解析的意思,instance是对象的意思,解析某个对象,解析哪个对象呢,解析小t这个对象,把它解析完的东西呢,to principle做成可以打印的样子。
然后呢给打印出来,哈哈刚才我应我我我再简单解释一遍,就是用它的class layout的这个类,他的pass instance静态方法,然后呢去解析t把解析出来的结果转成k大印的字符串。
然后再把它打印出来,如果不能理解的话,跑跑起来之后你看结果你就理解了。
好我们来看这个结果,好了,同学们,在这里呢我们就看到了t小t等于6t这个类,它在内存之中的所有的布局呃,如果说你要想看它二进制的一个布局的话,here看到了吗,这里面这里就是这个对象在内存中的每一位。
它到底是什么样子的,当然你这么看的话,你也看不出来它到底是什么意思是吧,我们往前慢慢看好,我刚才说过,我说在一个对象来说,他的有一部分叫mac word,还有印象吧,我这里好像做了一个设置啊。
我得把这个设置打开,不然容易引起,不然容易引起,引起误解啊,重新跑,因为我不小心把那个压缩给他关闭掉了,它默认是压缩的,这个一会我讲给你听,不着急呃,往这看啊,t小t等于6t那么在这儿呢。
这里这里是二进制的内容好,这里是16进制的内容好,这里是什么呢,这里说的是从第零个字节开始,往后数四个字节,那么这部分呢我们把它叫做object header,叫对象头,从第四个字节往后又数四个字节。
又还是对象头,我我刚才说过,我说mark word是多少个字节来着,mark word log字节八个,对不对,所以前面这八个字节好了,这里装的就是mac word,那好我刚,才说过。
我说class pointer是几个字节,四个字节对这四个字节就是class pointer,它通过它可以找到我们谁呢,找到我们t。class,当然这小t内部你看看它有成员变量吗。
所以它成员变量这部分长度为零,但是我们前面三个加起来之后呢,长度是12个字节,能被八整除吗,不能,所以这个时候呢在后面补四个,ok所以这个instance size 16个字节,就是这个对象的大小。
一共是16个字节,好了来这块儿,刚刚我讲的这一小段儿啊,能跟上那个老师扣一好吧,很小很小的一小段儿嗯,怎么还有扣六的呀,666吗,呃当你理解了这件事之后呢,我们来探索一下在这个对象的里边。
它背后的一些小秘密,首先第一点啊,我们来看看作为一个对象来说,它的大小到底是多少啊,坑问了个问题啊,他说为啥是两个mark word大哥,那不是两个,是这两部分加起来是mark word。
一共是八个字节,64位小伙儿,你是不是晕了,嗯,好这种基础的问题不解释了,在美团面试的时候,有一道著名的题,他这么问的,他问他问你,他说呃一个object在内存之中占多少个字节。
我直接告诉你跟这个t是一样的,因为它没有成员变量,那么它就有bug的,mark word,四个四个的class pointer,零个instance data补齐补四个,所以加起来一共是多少呢。
16个字节,你怎么还有说16k的,你知道16k是多少吗,k这个词你是不明白是吗,9296,我没说是16的倍数,我说是八字节的倍数,八字节能理解吗,需要我解释什么叫字节,什么叫we吗。
需要的扣7965x6543的开立方,不需要的扣个一,好既然没有开那个地方的,我们我们就直接往下讲了,啊哈哈开个玩笑,开这里啊,呃在这儿呢我们要稍微的简单的探索一下一个对象呢,到底它到底是多大。
嗯我给大家记两笔笔记啊。
就是理解对象的大小这件事,那么这一个对象到底有多大。
是由什么来决定的呢,他的脑袋是固定的啊,脑袋一共有两部分构成,一个叫mc word,一个叫class pointer,两部分加起来是12个字节,好决定它大小的主要是在于它的成员变量。
那比方说我给你举个例子,我这里写int来告诉我,当这样一个对象new出来的时候,它的大小到底是多少,我看一下答案,还有48的啊,五花八门啊,跑着玩儿,我们来考,我们来看看啊,看结果这个是多少啊。
我刚才说过了,我说前面这12个字节加起来都叫做对象头,对象头部里边有四个字节是谁呢,指向class文件的class pointer,然后前面这个八个字节是什么,这八个字节是什么东西呢。
是mark word,这是固定的好吧,所以你就记住一个对象脑袋上顶着12个字节,在这12字节后面,我们加了一个int类型,int类型,几个字典四个字节,所以12+4=16,能被八整除,还用补吗,不用补。
ok一共16个字节,好了再给大家,这就相当于考你们最基础的内容了啊,来再来一个lol来告诉我,多少个字节,24是吧,嗯这个还用我跑吗啊,这大多数都是24啊,这个是没问题的,为什么。
因为long类型是几个字节呢,八个是吧嗯好那我先跑完吧,这个确认一下啊,四个字节的long,八个字,四个字节的int,八个字节的long好考一个稍微难一点儿的小伙伴们来告诉我这个,哈哈32k。
来我来看一眼,k一共是32个是没错的,那么它内部布局什么样呢,首先12个字节的脑袋不说了,四个的int bag的lo布尔代,相传几个字节,一个字节only one啊,当然他占一位都行。
但是呢java面操作的时候呢,最小是一字节,所以一个字节那好后面要补七个,不然的话不能被八整除好,再来一个男的,好吧来谁能告诉我这个要占多少个字节,32 32还有别的吗,还有64嗯,还有问号。
ok还有40好看这里啊,先看答案,它多少是32个字节,为什么是32个,注意看它就比较好玩儿了,好前面12个字节脑袋也不说了,然后四个字节的int,八个字节的long,一个字节的布尔补三个字节。
为什么补三个,是因为呢我们后面有四个字节的s能看懂吗,我想先问我,有同学可能会说了,老师你这个怎么看也不像四个字节啊,大哥我想问你,如果一个t对象new出来了之后。
这个我们的字符串常量会装在我们t对象里面吗,不会他装谁啊,是不是装个s呀,s会指向我们常量池里面这个常量对不对,所以他就装了个地址,那个地址是多大呢,就是说这个地址四个字节引用类型吗,四字姐够了。
ok好,这块能跟上的老师扣个一,嗯嗯不错,好来再来个终终极难度,看这里boy的m来告诉我,多少个之间,你这是32图a一系统的意思吗,现在都是64位的java的虚拟机都是64位还是32,为什么。
还有40不知道不和你玩了是吧,ok好拜拜,趴一下,依然是32个字典对象,这东西在在一个对象里面会装方法进去吗,不会是吧,注意方法呀,所有的对象共享方法的字节码,所有对象共享,那么这个字节码放哪了。
这东西是放在我们class文件里面的,也就是说当一个对象产生了之后,如果你想对这个对象调用一个方法,它会通过这个class的指针找到对应的class的代码,然后,把这个对象当成this传给这个方法。
然后开始调用,能听懂吗,大学没教过是吧,嗯大学没教过,没关系啊,慢慢慢慢讲给你听吗,再重复一遍,再重复一遍方法,这玩意儿是放哪的,放在class文件里的对吧,我们不可能每个对象都放一个方法的。
那个完全没有必要啊,方法的实现不就一份吗,所以方法编译出来的字节码放哪儿,放到class文件里,这是没问题的,然后我们想对这个方法调用的时候,你比方说我t小t等于new t,然后t。
m我想调用它的时候是怎么调用的过程啊,大家知道这个小t它是,不是有四部分,第二部分是什么东西,是不是指向class的指针,这样的话我们是不是就找到这个class对象了,在这class对象内部。
是不是我们就找到了这个class对象内部的m方法了,然后呢我把这个指针这个对象的this this指向它自己嘛传给这个方法,然后就可以调用了,有同学说已经这么卷了吗,这个不算卷吧。
当然我今天讲的内容比较深入,今天讲内容大概是美团30万~50万年薪的内容,所以你们玩听认真听好吧,呃你练过你可能就拿到这个年薪了好了,class放哪变量名的情况,变量名是那个也放在class文件里的啊。
但是这个变量的内容啊,它的它的里边放的这个值是放在我们对象里边的,对一开始方法去class文件方方法去啊,好了好了,不再不再解释了,我们我们我们再继续啊,对这是java,没错好,我们再继续呃。
当然这个解释呢对于非非计算机专业的学生来说呢,可能就稍微有点深入了,不过我再强调一遍,今天讲的东西面向美团这一类大厂,30万~50万年薪呃,所以呢难一点也是正常的好吧,如果太容易了,你们所有人都拿到了。
不可能,ok好。
系列 1:P44:50w年薪面试题:3:HashCode就记录在对象内部你清楚吗? - 马士兵官方号 - BV1mu411r78p
的话呢我们就大概知道了,我把这我我把这代码给大家复制一下,放到我们的笔记里,嗯好,好大家需要的话呢去把这个代码复制下来,你自己去做一做实验就ok了,好吧非常的简单呃,这部分呢其实不太难。
就是理解对象的大小,但是在这部分有一点点小小的坑,我想讲给你们听,大家听我说美团的第一个问题啊,他是这么问的,他说object object到底的它的大小是多少,那么我这个实验我不想给你们做了。
你们拿大腿想一想,应该能推得出来object大小是多少,来告诉我16个字典,对没错啊,说的很对,但是听我说,其实呢我们说一个对象的大小呢还不是完全固定的,我想我现在想问你们。
你们现在用到的java虚拟机,它是多少位的java虚拟机问答一个简单的小问题,64对这个东西怎么看呢。
其实非常的简单啊,你你你只要打开一个那个窗口,你敲一个,java version就可以了,他会告诉你我用的这个呢是java hosport,就是虚拟机的名字,然后64位的server server模式。
它是一个64位,那我想问你的是,在一个64位的机器里面,一个指针的长度是多少,我想大家大家了不了解什么是64位的机器啊,就原来咱们从八位机器到16位到32位到64位,64位是什么意思。
64位叫做寻址能力,注意是寻址能力什么意思啊,就是64位的机器能用多长来代表一个地址,能不能听懂,比方说我要用一位来代表一个地址的话,我我能找到几,个地址啊,一个零一个一两个能理解吧。
那我用两位来代表一个地址的话,我能寻址能选几个地址,00011014个,对不对,那以此类推,如果说我们是64位的机器,我们能寻找多大的地址呢,就是我们能找到多大的内存空间呢,就是2~64次方好了。
也就是说大家知道我们所有的变量都放在我们的内存里面,我们要找这个变量的时候,那他一定是得有一个地址告诉你这个变量的地址在哪,那这个地址呢是用64位来进行存储的,那也就意味着我能够管理的内存到底。
是多少呢,二的64次方来这块能get到的,给老师扣个一,这个应该没问题啊,非常基础的计算机的内容,那大家想问你的是呃,原来呢你们可能每个地址的大小,我的老天爷啊,64位,64位,你说每个地址的大小呢。
从零一直到2~64次方减一嘛,我零基础学web的,学web的小伙伴呢,你先补点基础内容,好吧好了,听我说,那么如果是32位机器呢,它当然就是二的32次方,二的三次方是二次方是多少,大家知道吗。
四个g所以在32位机器的时候,不知道大家还有没有印,象你们的内存条的大小最高只能四个g,不可能比4g高,那么后来才突破了四个g,然后呢你们的内存条才变成了a 16个g,64个g等等等,等,好了看这里。
那现在问题就来了,作为一个64位的虚拟机,它的地址的大小应该是多少,当然应该是64位的,64位,几个字典当然应该是八字节,同学们,我们我不知道你们注意到没有,在我们的java对象里面。
缩小一点,在我们的java对象里面,我们刚才运行的这个结果,这是jav里面的一个地址对吧,还记得这地址大小是多少吗,这个地址大小是四个字节,你不觉得奇怪吗,你应该觉得奇怪好吧,原因是什么。
因为一个64位的虚拟机,您老人家一个引用的大小应该就是八字节,你凭什么是四个字节。
这个呢也很好解释,大家看这里,是因为什么呢,我能在执行这个刚version的时候加一个参数,让他把默认的自带的那些个参数给打印出来,print,on line flags,我加上这个参数啊。
conversion,这参数是什么意思呢,这参数就是说当你运行一个java虚拟机的时候,你把这个java虚拟机默认的一个设置给我打印出来,默认一些自带的参数都打印出来啊。
command line flag回车,好,在这个command line flags里面呢,你会发现呢它这里有一个很好玩的东西。
这里把把把把把两个单词给他,那什么了啊,这里有个很好玩的东西,往这儿看,这个这是它自带的一个参数,然后它前面还有一个参数,你读一下读一下,解释一下什么意思。
use使用compress压缩的class pointers,class pointer,诶,刚才我们讲的对象的第二部分指的是什么来着,对象第二部分是不是就是class enter。
所以这里说的特别简单,因为它这里使用的是压缩的类指针嗯,还有同学说什么叫压缩类指针啊,就是原来这个类指针正常应该就是八个字节,因为您老人家是64位的虚拟机,您就应该是八个字节,可是呢由于你默认带了压缩。
所以这里它就变成了四个字节,因为四个字节就够用了,一般四个字节就已经寻址四个g了。
你的程序的大小不会有那么大个儿的。
ok好了,那有同学说老师我能把这个压缩也打开吗,完全可以来为你。
我给你演示一下,嗯好了没有说好,再来run edit,我在运行的时候加上这个参数,跟xx注意这个加号表示打开,减号表示关闭,你注意对比原来的咱们的class pointer是四个字节,对,只有美。
run,edit,刚access点,last point子少了个s啊,sorry,好往这儿看看主要看哪部分,我看这部分你们看还记得吗,原来我们的object header是多少,是不是12个字节。
现在已经变成多少了,变成16个了,发现了没有,object header,object header,object object,现在又多了一个object header的部分。
所以我们整个对象的大小已经变成40个字节了,来这块能get到的,给老师扣个一,嗯嗯,那有同学有同学可能就会问了,说老师我生产环境默认默认要打开吗,当然当然要打开,这个压缩,为什么要压缩。
压缩是因为四个g的空间已经够使了,明白吧,也就是32位的寻址空间已经够了,你干嘛非得要那么大个儿呢,能理解吧,四个g空间已经够了,ok对你运行你这个程序来说,所以他默认就给你压缩了,它省空间啊。
省一半啊,这个是省很大空间,当然有同学说老师这个s为什么还是四个字节呢。
是因为你运行的时候呢,它有两个参数来控制的,这个参数只是控制它的类指针,下面这个参数是真正控制普通对象指针的,好看这里。
在这儿呢我来把这个也给大家打开,让你再看一眼,你就理解了啊。
好,我再加号改成减号搞定,然后呢我们点run,注意看这时候的string,它的大小会变成多少,好了你看那个t。s变成多少啊,八个字节,叫ordinary。
ordinary object pointers,这里指的什么叫普通对象指针,就是你平时用到哪些指针,平时用到哪些引用,它的一个大小,由这个来控制,当然这里面还有一些血淋淋的细节,我不想再深入了。
再深入,我估计待会可能接受不了了,嗯,它主要是说32个g。
我我30 32个g过后。
他的这个压缩就就失效了,就特别好玩啊。
好。
如果32位vm在压缩指针,32个m没有压缩指针好了,我们聊完这些简单的问题之后呢,聊一点复杂的问题,我们聊聊一聊对象头,我我告诉你啊,这个对象头呢是最复杂的地方,也是面试面的最最最最最多的地方。
这个摄像头这玩意儿呢是超级超级呃,难于理解,以及那个那个那个那个特别重要的东西啊,摄像头还记得吗,大家还在,我不知道大家还记不记得,那么第一部分呢我们把它叫做mark word好了,听我说呃。
中面试的重灾区就在这,那么第二部分我们把它叫做,collect pointer,这个东西呢倒是比较简单,这个我们把它放过去看,这里对像头对象头指的是什么东西呢,对象头呢在我们这里呢我们专讲的是马克啊。
大家还记得一个mark word,它大小是多少吗,64位,对不对,好了,我这里我画了一个最简单的图,64位的图在网上你看到这张图,老师画的,在这里面呢详细的给你解释了,在一个64位的对象的脑袋上。
mark word里面到底里面装的什么东西,我先说结论,我先说结论啊,哪三个东西呢,好第一,个它叫做还是扣的,好这是第一个,那么第二个它叫做锁信息,有同学说老师这个东西能验证吗,完全也可以看这里。
我来带你验证,我先把压缩的这个都给它关掉,没用了,咳咳,好来看这里啊,呃我们把这个多余的内容也给他删掉啊,就留一个小t在留一个t啊,留个空的t在这里呃,那么大家看啊,我们t角d等于6t。
我们把他的那个布局给打印出来,你先往这看,好看看这里大家记得哪部分是mc word呢,这部分对这部分是mac word这部分啊,你记得现在这个mark word的表表现,我稍微做一点小小的动作。
你就会发现macd变了,比如说我就我就这么来了一下,t点还是cold,然后呢,我再把它打印出来,咱们上下做一个小小的对比走,你,hello,同学们,你们想知道那个特效是什么吗。
power mode to啊,不说了,看这里我们主要来对比这两个东西的,待会儿不要跟这开始玩特效了,好了,看这里,这是我们没调hash code之前的mark word。
这是我们调用完hash code之后的mark word,你发现你应该发现区别了吧,只要你长了眼睛,对不对,也就是说我们我觉得你至少应该get到一点,就是ok原来一个对象呢还是扣的信息。
一个对象呢还是靠的信息记录在哪里,记录在他的脑袋上,记录在他的mc word上,当我们调用完一次之后,下次再调用一个对象的hash code,一个对象的hash code能随便变化吗,能不能不能。
所以ok这个对象的hash code就记录在了脑袋上,当然这里面还有一个细节,它其实是叫做identity hash code,就是你没有重写之前的那个还是code,如果你把还是cod给重写了。
那不好意思,这玩意儿还是这个identity还是cold啊,ok所以我们这个节目第一个结论就来了,就是说我们的对象脑袋上会记录他的还是code,不是各位各位大哥,你们这是聊啥呢,我想问问。
class pointer肯定变不了的,你们聊啥呢,聊聊聊插件的是吗,好了,我刚才讲的技术的内容能跟上,那老师扣一,我觉得今天年轻人比较多,感觉非常,非常非常的灵动,想法挺多的嗯,98年98年老家伙了。
咱俩同岁啊,96年96年得管你叫哥呀,嗯调用调用一下hash code咋就办了,因为你hash code调用完之后,它的还是cod信息会写在脑袋上,好了好了嗯,还不太信我的,说你不信我,你过来听老师课。
那我讲的技术你也不信了,好看这里啊,91年的,难道娘娘阿姨,你先证明你是女的再说好,这是第一个信息,你会意识到哦,原来还是扣的,这个信息是记录在脑袋上的,我们来聊第二个信息,锁信息,有同学可能就会说了。
说老师这个锁信息是什么,是什么信息,同学们,你们写过量的代码吧,synchronized t来这个应该都用过,对不对,sychronized好,当你用过这个,语句之后啊,我们把它用完。
这个语句呢也给它打印出来好,这里synchronized the te指的什么意思啊,是不是把它当成一把锁,当然我们通俗的说法呢叫锁定这个对象,但是专业的讲法呢就把这把把这个对象当成一把锁。
那为什么要用锁呀,要用锁,主要是为了解决多线程访问数据不一致的问题,什么叫多线程访问数据不一致啊,我给你举个最简单的例子,多线程访问所谓的多线程访问数据不一致啊,这是,好这是这是一个马桶,马桶也姓马。
好马老师讲,马桶前面有一道门儿,那么一个人进去的时候要办事儿,哭哧哭哧在里边办事儿,那么如果你不上锁在计算机的角度呢,就是允许别人进去也同时办事儿,那就是几个白花花的屁股怼在一起,然后一起办事儿。
这个画面太美好,不敢想象,所以这个是成问题的,也是不应该的,如果你想保证在同一个时刻,只有一个人在里面办事儿,你该怎么办,是不是上厕所对上把锁的概念。
当然我们普通理解的上把锁就是我们真的拿一把锁头光机往上一锁,但是在计算机里面,它实际上这把锁是怎么构成的呢,怎么就叫一把锁呢,听我说,简单说呢就是把一个对象当成一把锁。
那把这把什么叫把一个对象当成一把锁呀,我们上下一对比,你就理解了,跑一下看,来我们前后对比,你会发现一个明显的对比,这是最开始的时候一个普通的对象,这是被我们锁定的对象,发现区别了吧。
那我想这就是下一个结论很容易就得出了,就是说我们说一个现成的关于锁的信息啊,一个一个对象的关于锁的信息记录在哪,也记录在他的脑袋的mark word上面,这块没问题吧,嗯很简单,就是说诶如果你想想看啊。
第一第一个线程来了,诶我锁定这个对象了,锁定这个对象了,就是在他脑袋上改了,改了一些东西,那么另外一个县城如果来了。
系列 1:P45:50w年薪面试题:4:线程的锁信息记录在对象脑袋上你晓得吗? - 马士兵官方号 - BV1mu411r78p
进这个里面已经被别人锁定了,他就进不来,机制就是这么设计的,所以我们就完美地解决了马桶拉屎问题,好了,这块能get到的老师扣一,你看asshole啊,这这不是asshole啊,叫a总啊,sorry。
不是asshole,如果锁一个方法锁信息存在哪,大哥有没有同学告诉他一下,如果锁一个方法锁信息存在哪,还有class对象,this,如果非静态方法。
当前对象synchrona相当于synchronized v,synchronized the v,能听懂吗,那如果是静态方法没有this呢,synchronized当前的class对象,t。
class,搞定,好了好,我们继续,我发现今天来的小伙伴们基础是有点稍弱啊,大家看这里,下面我们聊哎呀,我都你们这基础弱的,我都我都不敢跟你们聊下一个问题了嗯,啥意思没明白是吧,嗯大概听一听嗯。
好我们来聊一个哪一点的问题啊,就是我刚才跟你聊这些问题,实际上是没有30万的大哥,我再说一遍啊,嗯,罗伊是96年的大哥是吧,嗯下面我们来聊一个真正值30万的问题。
好看这里啊,另外一个信息我刚才说过这个信息是什么信息,这个信息你不容易观察到啊,因为一个对象在它被回收的时候,你怎么去看到他脑袋呢,他都被回收了,你访问都访问不到了,但是我明确的告诉你。
它就是存在他的脑袋上的呃,当然这个东西呢会牵扯到好几个层面的东西啊,就是第一个呢它会牵扯到垃圾回收器,垃圾回收器的东西会牵扯到到底什么是垃圾,我的天哪算了,我一会儿讲这个问题吧,好不好。
我我我我我先讲一个容易点的问题,我先我们先把这个问题放过,因为主主要是今天来的小伙伴的这个基础稍微的有那么一点点弱啊,一会专门给你讲,我们先把呃关于锁的这个信息讲给大家听。
大家听我说我不知道大家听说过没有一个synchronized,关于锁,它未必全是互斥锁,它中间有一个锁升级的过程,一般来讲呢我们平时上的锁,我们把它称之为叫互斥锁,什么为什,么叫为什么把它叫互斥锁呀。
互斥锁的意思是什么意思呢,其实互斥锁的意思是说我锁定了之后,其他人再也锁不上,这叫互斥锁,除了护士所之外,还有共享锁,我锁了之后,别人还可以锁啊,就是咱确实咱俩一块儿可以上厕所,这是有可能的好吧。
就看你锁的这个东西是一把什么样的锁,锁的类型是有好多种的啊,普通的呢我们是把它当成互斥锁,但实际上呢呃这个synchront的内部呢,它有一个非常强烈的所升级的过程,这升级过程比较复杂,我先给大家上图。
你先有一个,大体的印象呃,这么跟大家说,一般来讲一个对象刚刚尿出来,刚上锁的时候会倾向于上偏向锁,上完偏向锁之后呢,才会升级成为轻量级锁,好有同学说了,老师啊,这个轻量级锁重量你所又是什么意思,好好听。
我说好听,我说仔细听,因为你了解重量,你所这件事你需要了解操作系统大哥啊,就是大家都知道我们的class文件是要放到jvm虚拟机里去运行的,那jvm虚拟机是跑在谁上面的一个职业vm虚拟机是跑谁上面。
跑在操作系统上面的,操作系统和操作系统大哥都是谁,那什么microsoft这个windows啦,呃麦克拉linux啦,unix啦这些好,我们说,现在呢jvm面临了一个管理所的问题,这里有一把锁。
有一堆县城呢都是都要去抢这把锁,jvm面临着对所得进行管理的问题,好jvm有两种选择,我再说一遍,由于jvm在操作系统看来就是一个普普通通的小程序,在jvm的内部才是我们java写的程序。
我们java写的程序又有好多线程,多线程去抢一把锁,这是我们要聊的这个问题的背景,再说一遍,jvm里面我们写了好几个线程去抢一把锁,然后jvm这个时候有两种选择,第一种选择是我自己管理这些线程。
管理这个县城对于锁的征用过程,谁抢到该轮,到谁了,谁去休息好了,这个东西呢被我们称之为是啊,jvm内部的管理,就jvm我可以选择自己管,jvm还可以偷懒,偷懒是给谁呀,偷懒是我交给操作系统去管。
jvm说我这里起了个线程,麻烦你操作系统起一个线程,这里起个线程,你你起一个线程,我这六把锁好,你帮我去管,你管好了之后说该哪个县城了,你反馈给我就可以了,好当你理解了这件事之后,就是交给。
操作系统去管理,不行好了,这是我们最终一个synchronized的上锁的过程之中,最终的一个选择就是所有的其他所都不管事儿的时候,那当然有同学可能会说了,老师那交给操作系统之前。
我是可以自己做一些努力吗,恭喜你,这个问题呢基本上大厂都有可能会问到呃,这东西呢我给大家看一个小小的面筋吧,这是我们的阿里的,原来阿里的一个漆面的面筋啊,基本上都会问到啊,关于锁的,锁的分类啊。
讲到这儿是吧,乐观锁,悲观锁,自旋锁,读写锁,排他所共享所分段所各自特点,以及他们在java中具体的实现方式,呃这个呢是阿里的七面,这小伙呢是练了七次面试,然后进了阿里,当然他进的是阿里国际。
叫阿里阿里express呃,薪水当然也贼高了,因为他讲清楚了嘛,呃除了这个之外呢,你比如说像百度美团,顺丰,京东这这这这些个面试基本都有关于srt的内容,就是synchronized的。
以及它的什么entry log的底层原理,锁的四种状态以及升级过程,就是现在我想给你听的内容啊,cmx和g one的内容都是都是在这个脑袋上的,所以你弄通脑袋之后呢,你发现你会发现很多问题你全通了嗯。
好其他我就不给你一一看了,就是总而言之,言而总之你会突然间发现呢,大厂问的问题越来越细,非常的细致好听,我说在synchronize就是这vm交出管理权之前,它实际上经过了一系列的挣扎。
这一系列的挣扎呢是从偏向所到轻量级所一系列的生长过程,但是什么叫平行线索,什么叫轻量级锁,我先给你解释什么叫轻量级锁,清掉你所在内部,在sychon内部的实现呢,就是我们俗称的自旋锁。
也就是俗称的cs叫compared swap,但有同学可能会说了,你所自旋这个这个这个这个自旋锁呀,来这块需要我解释了,老师扣个一cs,好好好,我稍微我稍微解释一下啊。
嗯关于cs这件事呢,或者叫呢compare and exchange,舌头一回事啊,就是比较并交换,它指的是同学们,你们想一下啊,当我们干一件事儿的时候,我们干一件事儿,不管你是大便也好。
嗯还是给个数加一也好,那个我们干一件事儿的时候呢,为了保证一次只有一个人在里面做,做事儿之后呢,最后的结果保证是一也是没有问题的,这个时候我们需要用到锁,对不对,我们往往用的锁就是进门我就上锁。
进门我就上锁,你听明白了吧,但是还有一种玩法叫做我不上锁,这种呢被称之为,自旋这是怎么玩的,听我说上锁的呢,大家很容易理解啊,就是上面拿钥匙,就是咔嚓给它锁上就完了。
但是像这种compared swap就是这么玩的,比如说我给大家举个例子,这里有个数,这里有一个数字零,如果我们好多个线程对它进行加加的操作,我这个线程也对它加加,这个线程也对它加加,大家都知道。
这时候如果你不上锁的话,它会出各种各样的问题,什么样的问题呢,我这个县城把零读到自己这儿来给他加加,变成一一给他写回去,但是还没有来得及写回去的时候,另外一个线程把这个零读,过来变成一,然后写回去。
这时候它会变成一,然后这边呢有已经加完了,往回写的过程,写回去还是一,就等于我加了两次,最后的结果只得到了一次,来这块没有问题,同学给老师扣个一,啊超卖对,其实类似的问题嘛,就是你不上锁的话。
你最后得到的这个东西它一定是有问题的,好吧,那那这个时候除了一种方式,有一种方式是当我改的时候,我就上一把锁,我把零读过来,改成一一写回去,我写完了之后再把这把锁打开,其他人再进来,这是一种方式。
这样的话可以保证每一次只有我一个线程在这里活动,但是还有另外一种方式,另外一种方式是什么样的方式,这种方式你仔细看,依然是这个零,现在呢我的第一个线程来了,我把这个零读过来,读到这里,然后呢我把它改成。
一好同学们注意看,就在这儿这个一往回写的时候,一往回写的时候,我比较比较一下,并且瞅一眼说哥们儿,你是不是依然为零,你是不是依然还是我想要的那个零,那么大家你想一下,如果你依然为零。
那说明在我把你零拿过来改成1万,我写的这个过程之中,没有人改过你,能不能听懂来这个能get到的,给老师可以啊,我再说一遍,就是我把这零读过来,然后改成一一往回写的过程当中,我比较一下。
我看看你是不是依然还是我期待的那个零,哎如果你是说明没有人改动过,你,太好了,我就直接把你改成一搞定,所以这个叫比较诶,比较一下,如果我们用维码来表示的话,就非常简单,就是if哥们儿。
你这个值是不是依然还为零啊,如果是的话,把你改成一,如果不是,当然如果不是呢,如果不是呢,比方说我这零拿过来改成一的过程,另外的一一堆线程早就把你改成,八了,当我往回写的时候,我发现你变成八了。
我怎么办,特别简单,我把这八重新读过来,把你改成九,用九往回写的过程之中,看看你哥们儿,你是不是依然为八,来这块能get到的老师扣个一,这时候你发现我们不用上锁了,我们只要用一个循环就可以了。
我们只要用一个循环说,when哥们,你一你只要是跟原来那个老的那个值是一样的,你只要是我想要的老的那个值,我就把你改成新纸就可以了,搞定了,你如果说不是那个老的值,那我就重新来读出来,然后改成新值。
再看你那个还是不是原来那个老那个值啊,好了,这就是一种新的玩法,这种玩法呢叫自旋锁,那么它就类似于什么呢,类似于有人在上厕所,然后呢旁边旁边人呢,他不他不会关门,那么新来的县城拎着裤子跟他转。
圈玩得转一圈看看,哥们儿你还在里边吗,林转一圈看看哎,哥们儿你还在里边吗,什么时候说哥们儿你出来了,ok我进去好,ok这东西呢叫自旋锁,就是拎着裤子转圈的过程。
当然这里面呢其实有著名的那个关于自选所的面试题啊,呃关于资源所面试题比较多,也比较深入,这个有著名的关于自旋锁的面试题,那么第一个问题呢是著名的baba问题,好,大家还在吗,还在雷老师可以了,对啊。
被别的线程改了,我就一直轮,总总会轮到我,对不对,嗯,那第一个问题就注明了a b a问题,a aba问题是什么问题啊,a aba问题也很简单,比如说我这里是个八,我把它读过来改成九的过程之中。
实际上呢有一个线程早就把这个八给改成12,另外一个线程又把这个12给改回乘八了,能听懂吗,所以这个八此八非彼八,它中间有一个从八到12又回到八的过程,当然在我眼里看来,他依然是那个八。
来如果你还是不能理解a b a问题,我给你举个形象点的例子,这是你的女朋友,然后呢你出差了,回来之后你看到的依然是你这个女朋友,这个能理解了吗,他依然是那个a,但他有没有经过b的过程。
好这就是aba问题啊,当然在这个里面有两种解决方案,有两种解决方案好,第一种解决方案是什么,第一种解决方案是我不在乎,我不在乎,ok你是零,你反正只要是个零就行,至于说你这个零中间改被别人改过多少次呢。
跟我没关系,第二种是我在乎我在乎怎么办,如果你在乎你的解决方案是在他的脑门上加一个version version,ok加一个版本,就是你出去的时候给他扣一戳,上面写一点,如果当你回来。
你发现他脑门上变成了99点,恭喜你,人在江湖飘,谁能不挨刀是吧嗯。
好了,这就是version,那有同学说了,老师真的有这种编程方式吗,yes,这里有,atomic stamp reference,这里的stamp就是在他的脑门上扣了一个sequence啊。
当然你还可以加一个time,加上时间也可以啊,随你btomic standard reference,那么每一次的更改这个sequence都会加一好吧,这里呢就是带版本号的更新o好,你理解了这件事之后。
其实还有一个比较好玩的,就这个版本号这件事就在脑门上扣扣扣版本号这件事,其实呢还有两种版本号,第一种版本号是数字12345678啊,记录着有多少次好,那么第二种版本号是true和false。
比如说你走的时候,它是一个false,经中间经历过任何事情,只要改成true就ok了,那么经,历了多少次,不管好这种的呢,被我们称之为叫markable reference。
叫markable reference,atomic markable reference,sorry这个源码没有改过来啊,我回头改改,我回头再把它改过来,这东西呢就特别简单,就是那个看这里。
你只要把它标成true和false就ok了。
好吧,好了,a aba问题能听懂的,给老师扣个一,对对对,不要太在乎啊,人生要想过得去啊。