分享一篇写的非常好的文章《如何掌握企业级技术和项目经验》,非常值得一看!

没有项目经验的应届生如何进大厂? 最近公众号上逐渐放出了2022的秋招信息,又一年的秋招大戏要开始了。小部这段时间被问到最多的就是实习和求职相关的问题。怎样才能进大厂?能不能帮忙内推?如何在短时间内增加简历含金量? 从大家春招的反馈来看,今年的工作(尤其是头部大厂的)确实不好找,不管是即将经历毕业季的应届生们,还是想要更进一步跳槽的人,都或多或少感受到了这一点。 或许你也正—— 简历投出去石沉大海,渴望能得到大厂的面试机会 因为没有项目经验,不知道怎么让自己的简历脱颖而出 因为一直闷头学习,对自己的水平不够了解 那么小部建议 阅读详情

前言:

这是一位有17年工作经验的大佬写的一篇文章,看完真的受益匪浅,非常值得一看!

正文:

        为什么我意识到学习方法的重要性了呢?因为我发现有的同学很迷茫。技术这么多,学也学不完,更不知道应该学什么?其他讲师分享的都是某个技术某个框架,很少看到有人谈学习方法的,所以借着这次分享,我跟大家先聊一下学习的事情。
首先我们要做好学习计划,时间就按照一年来规划。每年给自己制定一个研究的方向,比如说今年我要成为数据库领域的专家;明年后年我要作Java领域的达人;大后年我要成为前端领域的小强。每年集中精力突破一个技术方向,是最容易取得成就的。
        这就跟恒星诞生的过程一样,一个天体在宇宙里不停地俘获物质,增加自己质量,总有一天,到达临界点的时候,这个天体突然点亮了,发生核聚变反应,于是照亮了宇宙。学习的过程也是这样,你专攻一个领域的时候,积累了大量的学习材料,努力专研是最容易出成果的。
        因为我看咱们群里很多小伙伴都是20多岁上下的样子。年轻人容易受到新事物的吸引,不容易集中注意力,往往生活中时间就不知不觉过去了。咱们群里面不知道有没有做大数据业务的,大数据里面有个协同过滤算法很厉害,网站不需要长期跟踪你,积累用户数据,就能快速的识别出你的喜好。
        比如说你刚下载了淘宝APP,不需要下订单买东西,淘宝就能找出你的喜好。假如你看一个运动鞋挺好的,点开看两眼,然后就给关上了。下次再打开淘宝APP,首页出现的商品都是你喜欢的。这就是淘宝后台利用协同过滤算法,分析出看这个运动鞋的一类人,大部分人会买什么东西,比如很多人买了篮球、充电宝、护肤品等等。所以你的APP上就会出现这类东西,然后你的购物欲就被勾引起来了,不停地买买买。抖音也是类似的原理,让你不停的看视频。
        现在的年轻人在学习的时候,越来越难以集中精力了。然后更糟糕的是,学习编程技术,必须要用大段大段的时间,才有效果。你用碎片化的时间去学编程,拿过来一个框架看五分钟,然后就去聊QQ、打游戏去了。过了几个小时,再回来看学一会儿,这一天下来,跟什么都没学一样,什么东西也记不住。
人的大脑,调动理性思维让它活跃起来是需要时间的,前半个小时都是预热的过程,然后才能进入到学习的状态。所以我给大家的建议就是舍小取大,把零碎的事情都集中在一起处理,然后留出大段的时间去学习,这样的效果会非常好。
        那么有的同学会说,学习这么辛苦,我坚持不下来。确实,学习是这个世界上最痛苦的事情。打游戏可比学习有意思多了,这是因为打游戏跟结果之间存在必然联系。砍死一个Boss能掉什么装备,得到多少经验,是有明确结果的。所以很多人追求这个明确的结果,不停的升级刷装备,沉迷于游戏。但是我们平时很少看见有人能沉迷于学习的,这是因为学习跟成果没有必然联系。比如说你今天背了50个单词,没人会给你承诺,四六级考试一定会考这些单词。
        我们的大脑进化的还不完全,大脑只会为有明确结果的事情,分泌出多巴胺,让你感到快乐。你在做没有明确结果的事情的时候,大脑就不会分泌多巴胺,用不了多久,一件事情你就会做腻了。原始社会,物质条件很差,你要是整天不务正业,仰望星空,就容易饿死。所以大脑为了禁止你做一些消耗能量,而又不会有结果的事情,就不给你分泌多巴胺,让你感觉不到快乐,从而放弃一件事情,达到节省能量的目的。
        恰恰学习就是一个没有明确结果的事情,所以从你上学的第一天起,就感受不到学习快乐,原因就在这儿。我们现在开始制定学习计划,要是一路枯燥的学习,恐怕有很多人都坚持不下去。那该怎么办呢?先找到一个参照物,然后自我鼓励。这个参照物可以是你自己,也可以是周边的人。你在学习的过程中,经常与这个参照物去比较,感知到自己的进步,就很容收获成就感。这样就把一个没有结果的事情,转化成有明确结果的事情。起码我知道我每个月的学习,都在进步。
        比如说,公司目前用的是SSM单体架构。如果遇到高负载的情况下,肯定有问题。所以我应该学习一下Nginx负载均衡。等你搞明白负载均衡以后,又发现轮询式的请求转发,会造成Session丢失。比如说用户访问网站,Nginx把请求负载均衡到A节点,你在A节点登陆之后,HttpSession保存在A节点。如果刷新一下浏览器,请求被负载均衡到了B节点,B节点没有你的HTTPSession对象,于是就被判定成没有登陆。这时候就得用Redis缓存Session了,或者说把认证信息以Token的形式存储在客户端。
        然后没多久,你又发现数据表记录太多了,需要缩表,要搞冷热数据分离,于是又要学习TokuDB引擎。这么一路研究下来,再跟你周围的同事比较一下,或者跟半年前的你自己,比较一下。技术水平,还有思考的维度都大不一样了,这种技术上碾压周围人的快感就是成就感。这种成就感会一路推动你后续的学习,从而走上终身学习的道路。学习是一件快乐的事情,其实很容易做到。这比会一个框架,学习一门语言,更重要。
        接下来,我举一个反面的例子,相信很多同学都有过相似的经历。刚学会一个新的语言或者框架,就急不可待的虚构一个项目,立即用这种语言或者框架实现一下。比如说你刚学会Spring框架,于是就虚构了一个小型的微商系统,采用极限编程的方式,先不写文档,匆忙建了几张数据表,直接就进入到编码环节了。
        过了几天,你在录入数据的时候,忽然发现有重大问题,商品表创建的不对,很难把所有商品数据都保存进入。食品有保质期属性,电视没有保质期属性。手机有操作系统属性,化妆品就没有这个属性。我建表怎么规定字段呢?不行,得重新设计数据表。一下子,SQL语句要改、PO和VO类要改、业务层要改、视图层也要改,然后还要跑一堆测试案例。你看,这是你的项目第一次推翻重来。
没过多久,你又发现了一个重大设计问题。如果订单表直接引用商品ID的话。如果顾客购买了进口奶粉,卖家偷换成了国产奶粉发货。顾客来投诉,卖家马上篡改商品信息,跟顾客说,我们卖的就是国产奶粉。电商平台绝对不可以出现这种行为,所以你又得去修改数据表结构。然后项目又推翻重来一次。
        这种把项目反复退倒重来的经历,我相信很多小伙伴都有过。错误的学习实践方法,只会浪费我们大量的时间。每个人的职业生涯都是有限的,我们要在有限的时间里,学习到更多的技术,这样才不会出现中年职业危机。关于职业危机的事情,我放在后面再说。
在学习的过程中,同学们不要先着急做虚拟项目。每一个项目都不是靠单一技术实现的,所以我建议大家先充实理论知识,然后再去做项目。你掌握的技术多了,创建项目的时候,考虑的维度和深度也就到位了,具备了整合能力,所以再去做项目,基本上就可以驾驭了。
下面我来说一下,怎么选择学习方向。很多同学感叹,现在技术太多了,听上去都挺重要的,自己好像都快追赶不上了。这就需要我们抓大放小,利用有限的时间,多学习关键性的技术。
        比如说技术体系里面,速成的是前端和Python方向,慢成的是Java方向。各位擅长Java的小伙伴,也都发现了,Java领域太复杂了,学起来太累了,那我们学习Java的意义何在呢?不如搞前端或者学习Python去了。其实从后台转前端和移动端,很容易;转到大数据领域也不难。但是从前端往后端转,就很困难,至少我身边前端工程师转型做后台开发的成功案例很少。所以我建议,大家在选择学习方向的时候,应该先从后端开始。  
   这样就行 大上周有同学问我,该不该学习一下GO语言。我觉得这是一个典型的普遍性问题。面对一个冉冉升起的语言或者技术,很多人都觉得自己不应该落下。但是理性思维告诉我:抓大放小,先学习主流技术。你不妨问问自己,GO语言是不是主流语言?GO语言的就业市场有多大?GO语言的资料多不多?GO语言工程师月薪是多少?GO语言职位在北京有多少,Java工程师职位有多少?一路追问下来,虽然你感兴趣GO语言,但是还是得把学习的注意力放在主流的语言上。编程语言的老大哥Java语言,你学透彻了吗?
   如果把需要研究的后台技术,排一个先后次序的话,无疑应该先从数据库开始。我知道你会用MYSQL,会写CRUD语句,这些还都太初级了,钻研的深度不够。比如说我们经常编写表连接SQL,数据库可不会按照书写的顺序去连接数据表,优化器会筛选出数据最少的表,优先查询,因为结果集数量比较少,所以连接大表的速度会很快。
   当然了,这是理想的情况,有的时候SQL语句里面带上GROUP BY或者ORDER BY之后,优化器对SQL的优化就出问题了,不是小表驱动大表,这就需要我们在SQL语句里面添加STRAIGHT JOIN关键字调整表连接的顺序。一直以来我都保持手写SQL语句的习惯,对于Hibernate跟MyBatis Plus框架提供Criteria操作方式,一直都不感冒。
这些只是SQL层面的事情,还有数据库架构层面的事情。想去BATJ工作,写代码不懂得从MySQL集群中提取数据,怎么能行。所以作为一个大厂的后端程序员,操作数据库集群是个必备的工作。然而数据库集群的SQL语句跟单实例MySQL差别又很大,不能按照原有思路去想问题。
   举个例子,在数据库集群中跨分片的表连接就很难实现。在水平切分的场景下,数据被切分到不同的数据库分片中。A分片具有客户表和订单表,B分片也有客户表和订单表。如果李强的客户记录被切分存储在A分片的客户表里面。李强开始在电商平台购物,他的订单如果有的被切分到A分片的订单表,有的被切分到B分片的订单表。如果这种情况下,你要查询李强等人的购物记录是不可能的。无论A分片把数据传给B分片,还是B分片把数据传给A分片做表连接,都要在网络里传输大量数据,而且查询的速度又很慢。所以就要在数据库中间件上配置父子表,客户表是父表,订单表是子表。子表的数据跟随父表,被切分到同一个分片里面。
   比如李强被切分到A分片,他的所有购物记录都被切分到A分片。如果陈浩被切分到B分片,那么他的所有购物记录就连带着被切分到B分片,这样我们做表连接的时候,就不用跨分片了。分片内做表连接就能查询出数据,然后两个分片的数据汇总到MyCat,做一下合并就可以返回给客户端了。
   还有就是冷热数据分离方面的事情,InnoDB引擎数据超过2000万,读写性能会很差。即便你加上很多索引也无济于事。所以我们要定期缩表,比如把1年以上的数据转移到归档库。如果冷数据也很重要,那就用TokuDB存储,带着事务写入速度是InnoDB的7-11倍。如果不是重要数据,扔到MongoDB里面就好了。
   数据库是所有项目的基础,大部分人每天写程序都是围绕数据处理展开的,所以我建议你第一年应该彻底把数据库研究明白,看SQL语句优化、数据库参数优化、Replication集群、PXC集群、MHA集群、分布式事务等等。
   吃透MySQL方向的前提下,有多余时间可以研究一下MongoDB、Redis之类的。Oracle、PG数据库之类的,非主流的数据库尽量少碰,节省时间学习下一个阶段的内容。
当你成为数据库专家之后,下一个要攻克的是编程语言跟设计模式。我知道大家会Java编程、有的人还会Python、PHP什么的。我在工作中经常能遇到有的程序员明显对一门语言的API掌握的不够。
举个例子,有很多人知道Java语言里面调用Math.random(),能生成一个0至1之间的随机数。但是更多的人不知道,ThewadLocalRandom.current().nextint(1,100),可以生成1至100之间的随机数。
   再比如,所有编程语言里面的浮点数运算都不精确,Java里面用BigDecimal来做精确的浮点数运算,那你搞懂了为什么BigDecimal的运算就一定精确呢?所以这个阶段,我建议同学们花上3个月左右的时间,查缺补漏,彻底搞明白一门编程语言。将来在笔面试的时候,基础知识牢固,对你是一个很大的加分项。
   另外我说一下设计模式的问题。这个一定一定要认真学习。有不少人,是在学习完框架之后才去看设计模式。我建议在学习框架之前看设计模式。Struts、Spring、MyBatis、Hibernate都用了大量的设计模式。包括很多公司私有的框架,也都使用了很多设计模式。如果先有设计模式的基础,学习框架会更加透彻。
   我这里就举工厂模式的例子。工厂模式每个人都会写,看似简单,实则意义非凡。工厂模式不就是创建对象的么,比我直接new对象复杂多了,我干嘛要用工厂模式呢?那么多框架都是用工厂创建对象,是不是设计者脑子进水了,你们不会直接new对象么?
初学者这么想问题也比较正常,如果你了解设计模式,那就到了“看山不是山,见水不是水”的境界了。工厂模式最大的好处就是可以对调用者和被调用者解耦。
   如果Person类里面直接new了一个Car对象,那么Person类跟Car类就产生了强耦合关系。
   在没有SVN的年代,改代码最好的办法是做一个子类,在子类中修改代码。这样就形成了代码版本的升级(较为原始)。如果直接在当前类修改代码,代码覆盖之后,将来就没法找回上一个版本的代码了。
   在这里插入图片描述
   你也知道,平时我们不能不修改代码。如果代码是强耦合的关系。你创建了CarSubVerion_1这个子类,还要去修改以前所有new Car对象的对方。改成new CarSubVersion1。没过几天你又写了CarSubVerion_2这个子类,接着还要修new对象的代码,你说多麻烦。
在这里插入图片描述
   如果使用了工厂模式,工厂方法的返回类型是Car,至于说返回的是Car对象,还是CarSubVersion_1或者CarSubVersion_2,Person类根本不知道。某天,你写完CarSubVersion_3这个类,只需要修改一下工厂方法的XML文件,从此以后Person类从工厂方法获得对象就是CarSubVersion_3。
   你仔细看,随便插拔一个Car子类,对于Person来说不需要修改任何代码,其他依赖Car的地方也不需要修改。我们只需要集中修改工厂类的XML文件即可。这样就把原来分散的强耦合,变成了松耦合,集中到了工厂类身上,维护代码的时候只需要修改工厂类XML文件即可,这样维护程序的工作量就小多了。每个框架为了自己的可维护性,都是用工厂来创建对象的。
   工厂模式的另一个好处就是创建对象之后,可以初始化对象,变量怎么赋值,你可以自己在XML文件中规定。省去了我们自己初始化复杂对象的麻烦过程。
   了解了这么多,你觉得new对象跟工厂模式比起来是不是low爆了。那么以后所有的对象都用工厂类去创建行不行呢?也不行。如果有的类,需求已经固定,不会再变了。将来它不会再派生出version_n,那么我们就直接new对象,出现强耦合又有什么关系呢?像是Java API中类,不会发生变化,所以我们直接new对象就好了,根本不用工厂类去创建对象。
   Java有23种设计模式,都是精髓中的精髓,我建议你用两个月左右的时间去吃透这些设计模式。你再去看Spring框架,它不就是用工厂模式去整合各种技术么,一下子就顿悟Spring了。
   讲到Java语言,我不得不提一件事情。很多初学者都闹不清楚的一个问题。上学的时候,老师告诉我们设计程序要优先用抽象类或者接口去建模。我怎么觉得,写程序不写抽象类跟接口,也能行呢?那么抽象类跟接口是不是摆设啊。“老师,你让我们用抽象类跟接口去建模,我觉得没有必要,你这是照本宣科,不是实干做派,实际写程序根本用不上抽象类跟接口。”
   年轻人,我觉得你是没有体会到程序设计的美感。抽象类跟接口就很美,可惜你没体会到。我简单说几句。抽象类跟接口解决的是并发编程的问题,你先记住这一点。我来慢慢跟你解释。
   比如我家里现在来客人了,我跟妻子说,你把冰箱里的苹果、香蕉和橘子拿出来,招待一下客人。我这么说的前提是,我要先打开冰箱,确认这里有苹果、香蕉跟橘子,然后才能跟妻子说上面的一番话。两个动作变成了依赖关系,先打开冰箱确认之后,才能跟妻子说话。
   如果我把具体的苹果、香蕉跟橘子抽象成水果这个概念,我跟妻子说,你把冰箱里的水果拿出来招待一下客人。水果是抽象概念,我用抽象指代具体水果,所以我就不用打开冰箱门,直接就可以吩咐妻子做什么事情,这不就产生了行为上的并发么。我不用等什么东西,先用抽象指代一下,我接着做我的事情就好了。
   两个人写程序,甲要调用乙写成的代码。想要并发编程,乙把自己要写的程序,先定义成抽象类或者接口,发给甲不就行了么,甲就可以写程序了。你看这才是抽象类和接口的真正意义所在,刚才我让你记下,抽象类跟接口是解决并发编程的,你仔细想想,是不是这么回事儿。(PS:这里应该有掌声,我就当你鼓掌了,哈哈)
   有的同学还不死心,“我不写抽象类跟接口也能写代码?没觉得抽象类跟接口有多重要。”
同学,你自己一个人写程序,当然不需要定义抽象类跟接口了。没人跟你并发编程。不妨你试试团队开发,少了抽象类或者接口行不行。(PS:再次鼓掌)
   接下来说一下框架阶段,集中精力学好Spring、MyBatis这两个框架就行了。Spring体系,上周有老师分享过了,这里我就不细讲了。
   MyBatis框架也不难学,但是我对Criteria操作保留意见。
学完框架,再简单了解一下常用的第三方组件技术,比如说各种项目都能用到的权限框架,你可以学习一下Shiro之类的框架。还有报表组件、任务调度、Excel开发包、工作流引擎、全文索引等等。
以上是夯实后端技术的一个整体计划,我知道这个群里面的同学,多少都懂一些技术。我列出的学习计划仅供参考,你觉得那里不行,就重点学习哪里。比如说Spring你很熟悉了,不妨去看看设计模式。
实施学习计划的时候要两耳不闻窗外事,不要管前端、Python、人工智能、大数据怎么发展,大家要坚持自己的学习计划,先稳扎稳打,努力成为后端领域的专家。然后你再往前端、大数据、Python方向转型也来得及,而且还很容易。
   有一些同学面临抉择,我现在已经精通后端技术了,下一步应该学习大数据、人工智能还是前端呢?趁着年轻,先挑战最难的?前端最难。你没听错,前端确实很难。难在你无法设计出精致的界面。我见过太多的后端人员,要么界面设计的超级丑(EasyUI、BootStrap),要么就是不会设计界面。这个短板你一定要补齐。
   35岁是开发人员都要面临的一个门槛,在35岁之前尽量争取做到行业翘楚。如果做不到,退而求其次,你也得做一个万金油,各个领域都擅长。
   在职场里,你的技术就是你的议价权。我建议大家在35岁之前,要补齐自己的技术短板。对于公司而言,既可以把你调往前端组,也可以把你调往运维组,你的使用价值远远高过其他员工,所以即便到35岁,你依然可以活跃在IT行业。而且技术全面还有一个好处,就是可以再往上做到架构师或者技术总监的职位。
   选择技术专才做为技术总监或者项目经理,经常会出现很多事故。比如说甲方周末打电话给你,有个模块的需求发生改变了,要你评估一下,开发周期跟开发费用是不是有变更。如果你只擅长前端,周一开会的时候,问了一下Java组的人,他们说这个需求的两三天就能做完。然后你就是这么回复给甲方客户的。
   实际开发的时候,数据表一改动才发现,好多模块的VO、PO、SQL语句、业务层都要跟着改,然后还要跑一大堆测试用例。这下可坏了,没法按时交付了。作为一个技术领导,技术不可以有短板,你才能可以带好整个团队。
   下面我说一下前端的学习计划。都知道前端的技术挺杂,而且更新速度还很快。
   传统的HTML/CSS/JavaScript,学习资料很多,重点学习一下CSS的排版布局。动画特效方面,我认为没有必要去重点学习,毕竟还有UI工程师不是么。JS可以深挖一下面向对象、Prototype、事件冒泡处理等等。
   JQuery可以作为过度阶段了解一下,重点学习一下Node.js还有VUE,这两个是前端的重点。其他的像什么React、AngularJS有时间可以看两眼,没时间就略过。
   掌握前端之后可以了解一下移动端,Hybird模式用的基本也是前端这些技术,所以学习起来并不困难。UNI-APP移动端框架不错,可以把VUE工程编译成微信小程序、支付宝小程序、APP等等,可以学习一下这个框架。
   说过了应用层面的技术,第三阶段,我建议你认真学一下系统级的技术,因为这些技术对设计架构很用用处。初级一点的比如说Linux系统、高级一些的像什么Docker、K8S都要学习一下。
   架构层面可不是什么人都能进入的,你完成了这个阶段的学习,基本上给自己打造了一个别人无法介入的技术壁垒,以后就不存在职业危机这种事情了。这就是我们多年辛苦奋斗和学习所要达成的最终目标。
   接下来我说一下怎么去开发一个企业级的项目。有的同学已经步入开发岗位了,有的同学还在学校里努力学习。工作了的同学,拿到业务需求相对简单一些。没有参加工作的同学,要想参与企业级的项目,只能先找一个参照。
   在校的学生选择模拟项目的时候,尽量选择跟钱无关的项目去做,比如说新闻类的项目、信息聚合类的项目、招聘类项目、某某管理系统等等。因为只要跟钱沾边,申请移动支付的资质你不具备,再者跟钱有关系的项目,技术实现上要求都很苛刻,你写在简历上,面试官会问的非常详细,所以在校同学最好不要选择跟钱有关系的项目。
   作为在校学生,自己不了解需求的情况下,自己去设计一个模拟项目,还是比较困难的。所以你可以在网上找到很多云端的体验版本的管理系统。比如说有一个云端软件,叫做易订货。
   老司机们,看到菜单列表,基本上就明白这个进销存项目的业务模型还是比较完整的,而且它还有移动端,你也可以体验一下。或者说,你找到别的项目,觉得不错也是可以的。
   挑选好模拟项目之后,先使用一个礼拜。你在这个系统上不断的做业务,熟悉整套系统的业务模型和流程。我们只不过是把网上的业务模型拿过来而已,程序实现还是要我们自己动手完成的。你可以把学到的各种技术,在模拟项目中整合到一起。写程序不要模仿极限编程。你在敲代码之前,先要做好充分的设计。因为是做逆向工程嘛,可以免去Axture原型设计。先画用例图,这个过程可以帮你理清思路。系统用多少个模块,每种角色可以使用其中哪些模块,角色之间的权限是怎么继承的。然后要画部署图,你这个项目打算部署在什么样的服务器上面,用几个节点,使用什么样的负载均衡。根据自己本地电脑的硬件条件,规划好部署方案,然后才能去搭建项目架构。
   比如说,数据库我们采用的是Replication集群,做了两个4节点分片(集群)对数据切分,用MyCat管理,而且还做了读写分离。用Zookeeper存储MyCat配置信息,两个MyCat做双机热备,争抢虚拟IP。一个MyCat宕机,另一个MyCat立即投入使用。并且全局主键也是用Zookeeper来生成的。
   如果是跟钱有关系的项目,重要的数据一定要存储在MySQL的PXC集群中,那就是另外一套数据库集群的方案了。不管怎么说,数据库平台搭建出来之后,接下来就应该是对业务数据建表了。我让你熟悉了一周的业务,建表应该不成问题。这个阶段是一次性集中时间把所有的数据表都创建出来。反复修改表结构的痛苦,大家都知道。所以设计数据表就一次成型,以后尽量不要再动数据库的表结构。
   再往下就该搭建项目了。我不建议大家把大量的时间花在项目搭建上,没必要重复发明轮子。我们可以借助开源项目,做二次开发。比如说人人网开源了一个renren-fast项目。是前后端分离的结构。后端用的是SpringMVC+MyBatis,还集成了Shiro、Swagger、Jwt、Druid等一系列第三方的组件。
在这里插入图片描述
我对比过很多开源框架,只有renren-fast做的最好。它自带了一个代码生成工具,可以根据数据表来生成DAO、Service、Controller代码,而且还可以自动生成前端的VUE画面,大家可以去观看体验一下。
   我们把生成的代码拷贝到工程里面,这就省去我们70%的工作量,开发效率也就提高了很多。
renren-fast不是微服务项目,只是一个前后端分离项目。但是我们可以把它做成分布式的项目,以后部署的时候,把后端项目组成集群,用Nginx或者Haproxy做负载均衡。加上Keepalived技术,Nginx或者Haproxy挂掉一个也不用担心,冗余的Nginx马上会上线。
   Java项目搭建出来之后,因为还要使用缓存,所以配置一套RedisCluster集群出来,然后对接到Spring Cache上面,让Spring管理缓存。
   写模拟项目的时候,就跟正式的项目开发一样。日志文件正常生成;防止XSS攻击,数据要转义后再存储;有审批的地方,就引入工作流。需要任务调度,就用QuartZ。
   renren-fast前端用的是VUE+ElementUI,都是常用的前端技术。而且页面已经生成的七七八八了,你往里面再添加点东西就可以了。而且renren-fast生成的VUE页面里面是包含了权限判断的。权限不够,根本看不到VUE页面的内容。
   综合来看,如果数据库平台已经建立起来的条件下,我自己写一个普通的管理系统,一个月左右的时间吧。
   如果你来写一个管理系统,边查资料边写程序,三个月左右差不多能完成一个管理系统。前提是数据库一定一定要设计的合理,要不然你这个项目总是推翻重来。
   如果是已经工作的同学,直接可以把你当前项目的需求拿过来,然后把它改造成微服务或者分布式架构的,再实现一遍。因为是模拟项目,所以技术的取舍完全由你来把控,各种厉害的技术都往上添加吧。
   项目做完之后,就到了部署环节。MySQL、Redis都已经集群了,后端项目也要集群,然后做负载均衡,前端前端项目也是如此。
   我不建议大家把模拟项目部署在云平台,分布式架构的项目需要很多云主机实例,配置还不能低了。为了省钱,大家还是在本地用VMware搭建虚拟机环境吧。给自己的电脑多加一条8GB的内存,也就是200多块钱的事情。
   在面试的时候不用跟面试官大吹特吹自己会多牛的技术,容易招致反感。首先你从包里掏出设计文档,交给面试官过目,他看到你写的需求文档,还包括用例图、流程图、部署图、状态图,ER图,对你的第一印象会比较好,起码项目是真实做过的,而不是“包装过”的。
接下来,你打开笔记本,演示一下你的项目。当场挂掉几个数据库节点、Redis节点、Java节点和前端节点,然后再访问这个Web系统,依然可以正常使用。于是你就可以跟面试官聊一下,你这个项目架构是怎么设计的。
   这么一套流程走下来,基本上offer就到手了。大家记住,在面试的时候一定要演示自己项目,切记切记。
   之前我在咱们群里说过,曾经我项目组里面有个实习的同学,读的只是个普通的211学校,高校排名90多,几乎相当于一本B段的学校了。2015年实习期满,去北京投了几家公司,大半天时间去了百度、京东、用友面试,当天就拿到这些公司的offer,然后又去了中石油旗下的中油瑞飞面试,也顺利的拿到了Offer。
   他说面试的当天,都是清华、浙大、交大、复旦这些学校的人,而且研究生还占了一大半。之所以中石油这么受欢迎,因为入职满五年就可以落户北京。他等到面试的环节,按照我说的,把项目演示了一遍,于是就拿到了Offer。这是他签完offer之后,在微信上跟我的聊天。
   所以你看,学历没优势,技术够强悍,依然能脱颖而出。去BATJ大厂面试,仅凭一门技术是不行的,要精通多种技术,并且精通Linux系统,能熟练驾驭项目集群架构。如果你具备这些,对于BATJ的HR来说,你每天思考的程序,就是BATJ这些程序员每天做的事情。录用你,基本上不用什么培训,短期就能上岗。进BATJ这些还是很容易的,但是你磨练技术的过程是艰辛的,努力吧!
   接下来,我谈一下第一份工作应该选择创业公司,还是大型名企?这个问题,想都不用想,往名企努力。如果你一上来就选择去小企业工作,三年之后,技术提升的并不大,再想去大企业工作,难上加难。年纪大了,成本比应届生高,但是技术水平并不比应届生高多少。小企业往大企业跳槽真的很难,建议大家,听完今天的分享,奋发图强,抓大放小,利用有限的时间学习更多的技术。
   今天的主题是怎么样掌握企业级的技术,我列出来一个学习计划,把企业级技术融入到平时学习的过程中,而不是在模拟项目中学习企业级技术,那样你永远是推翻再重来,既浪费时间,又没做出来什么东西。
   这次分享,我是在战略的层面介绍了一下学习的路径。虽然没有像上一个讲师那样,深入讲解某一个知识点。但是战略层面的东西往往更加重要。
   比如说楚汉相争,项羽在战术层面上,每次都赢了刘邦。但是形势对自己却越来越不利,人心跟地盘都在往刘邦那一方聚集。最后一战,终于输给了刘邦。
   说这个例子是想劝告大家,你距离35岁职业危机的大限时间是有限的。你不能在这期间胡乱学习技术,时间浪费了,就再也找不回来了。按照我规划的路径,抓住这些核心技术,找准战略目标,几年之后你也能成为公司里的技术大牛!好了以上就是我这一次的技术分享,感谢大家的支持!

读完大佬分享的这篇文章有没有豁然开朗的感觉呢?

最后:

愿大家前程似锦,加油!!

Less最佳实践:大型企业级项目经验分享 在大型企业级项目里,样式管理是个大难题。代码量大、样式复杂,很容易导致代码混乱,维护起来特别麻烦。Less作为一种CSS预处理器,能帮我们解决这些问题。本文的目的就是分享Less在大型企业级项目中的最佳实践,涵盖Less的基本使用、高级特性以及如何和项目架构融合等内容。本文先介绍Less的核心概念和它们之间的关系,接着讲解核心算法原理和具体操作步骤,再通过数学模型和公式深入剖析,然后进行项目实战,分享实际案例和代码解读。 阅读详情

相关推荐

普源精电DHO系列示波器选购指南:从学生党到工程师的完整对比

本文深入评测普源精电DHO系列示波器,从DHO800到DHO4000各型号的核心参数、功能特点及适用场景进行全面对比,帮助学生党和工程师根据实际需求选择最佳型号。重点分析带宽、采样率、存储深度等关键指标,并提供实用的选购建议和进阶使用技巧,帮助用户充分发挥示波器性能。

weixin_30485379的博客 167

中油瑞飞新人

新的工作,新的生活,希望有一个崭新的自我! 转载于:https://blog.51cto.com/jixiaojing/851802

weixin_34126557的博客 333

第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,各位的传感器买到手后,赶紧跟着文章试试吧!

qq_44645742的博客 1万+

如何带领团队“攻城略地”?优秀的架构师这样做

阿里妹导读:架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。今天,阿里巴巴技术专家九摩...

阿里技术 2536

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1788

手把手教你搞定MT6701磁编码器的SSI通信与CRC-6校验(附避坑代码)

本文详细介绍了MT6701磁编码器的SSI通信与CRC-6校验的实现方法,包括硬件连接、时序配置、数据读取和专用CRC-6算法。通过提供避坑代码和常见问题解决方案,帮助开发者快速掌握磁编芯片的调试技巧,确保通信稳定可靠。

weixin_30872337的博客 218

分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里即可获取!!!。找工作的敲门砖,还有就是要多做面试题,复习巩固。

2401_83916283的博客 884

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 460

企业级大模型应用项目经验分享

本文结合了企业级大模型应用项目以及个人在学习中对大模型使用的粗浅体验。由于无法细说,只能抽象出某些关键点以便行文,不足之处敬请谅解。

2401_85343303的博客 1032

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 240

微信小程序 - 真机调试调用接口报错{errno: 600001, errMsg: “request:fail -102:net::ERR_CONNECTION_REFUSED},真机运行测试请求异常

微信小程序,真机,调试测试,运行报错,API接口,服务器接口都报错了,小程序报错errno: 600001,小程序报错request:fail -102:net::ERR_CONNECTION_REFUSED,真实手机打开接口全都失效了,微信小程序真机测试失败,微信小程序{errno: 600001, errMsg: "request:fail -102:net::ERR_CONNECTION_REFUSED"},详细解决方法,https,服务器SSL证书,无法解决,服务器更换SSL证书,接口地址改了也不行

🏆 前端领域优质创作者 1万+

企业级开发项目和自学项目到底有什么区别

好久不见了各位!最近几个月都未更新,是因为从春招开始就在投简历面试实习岗位,然后入职,最后成功为了一个半成品后端练习生,想说的话有太多太多下面我就站在一个在校实习生的身份,结合自己最近几个月来在企业开发环境中写代码的经历,与即将上岗,或者还在期待上岗的小伙伴们来分享分享——企业级项目与网络自学项目究竟有什么区别SpringBoot+Dubbo+Flink+Kalfk+MyBatisPlus+Mysql+Redis+Seata+MongoDB+ES+React+区块链+人工智能。

懒羊羊的博客 2244

什么是 AIDV(AI 定义汽车):从软件定义到智能决策的范式革命

AI定义汽车(AIDV),是指以人工智能(尤其是大模型、深度学习、强化学习)为核心引擎,以车载AI芯片为算力底座,以“数据闭环”为迭代支撑,重构汽车感知、决策、执行全链路,实现“感知智能化、决策自主化、体验个性化、迭代自动化”的新一代智能汽车发展范式。其核心是让汽车从“执行工具”升级为“具备自主学习与智能决策能力的移动智能终端”,核心价值是“车与人的深度协同”与“复杂场景的自主适配”。

getusushu的博客 96

程序员的副业:写了一个专栏《Vue 3企业级项目实战》

五年了,免费文章 → 付费专栏 → 付费视频 → 实体书籍,从一开始的免费文章,之后在各个不同的平台上线付费专栏,并且录制付费视频和写书,每年都在变化和进步。12021 年的副业前文回顾:...

程序员有故事 3312

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

企业级RAG开源项目分享:Quivr、MaxKB、Dify、FastGPT、RagFlow

企业级 RAG 开源项目为企业构建智能应用提供了强大的工具和平台。Quivr、MaxKB、Dify、FastGPT 和 RagFlow 各有特色,企业可以根据自身需求和场景进行选择。在追求 RAG 应用的深度和广度的同时,本地私有化 LLM 部署也成为企业需要重点考虑的方向。通过合理的模型选型、硬件配置和集成方案,企业可以构建安全、高效、可控的企业级 RAG 系统,释放 AI 的真正价值。

ainnle的专栏 7578

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

没有 项目经验 怎么办?

阅读文本大概需要 7 分钟。前言本文的作者是久一的好朋友「码匠」,先后就职于 ThoughtWorks、阿里巴巴等互联网公司,并维护订阅号「码匠笔记」。下面是很多要毕业的...

公众号:Java后端 4790

【建议收藏】缺少 Vue3 和 Spring Boot 的实战项目经验?我这儿有啊!

缺少 Vue3 和 Spring Boot 的实战项目经验?缺少学习项目和练手项目?我这儿有啊! 从 2019 年到 2021 年,空闲时间里陆陆续续做了一些开源项目,推荐给大家啊!记得点赞和收藏噢!借着这次机会,也盘点一下近期维护的开源项目。 实战项目盘点之 newbee-mall (Spring Boot ) newbee-mall 项目的开源地址: in GitHub:https://github.com/newbee-ltd/newbee-mall in Gitee:https://gitee.

程序员有故事 871

java企业级开发技术,【工作经验分享】

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。请转发本文支持一下。

2401_84408092的博客 1002

分享一个能够写在简历里的企业级数据挖掘实战项目

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python推荐 来源:数据STUDIO作者:云朵君 导读:大家好,我是云朵君,...

简说Python的博客 2859

【企业开发】初次接触JAVA企业级开发经验分享

嗨喽,各位亲爱的小伙伴们,许久未见有没有想我呢?哈哈哈,我来更新啦! 文章目录(一)、面试心得(1)面试经验(2)面试技巧(二)、开发心得(1)我所面临的开发应用场景(2)如何处理开发中碰到的难题(三)、经验分享 (一)、面试心得 (1)面试经验 首先,你要准备自我介绍,工整内容丰富的简历,平静的心,充分的准备。 1、自我介绍尽量简短,着重自己的优势讲,控制在1分钟之内。 2、简历一定要...

weixin_44389353的博客 574

AI技术重塑工作与行业:我的实战经验分享

在人工智能技术爆发的时代,AI工具、大模型及行业应用正深刻改变开发者的工作模式与各领域的发展格局。从智能编码助手到自动化测试平台,从大模型落地实践到垂直行业解决方案,AI正成为提升效率、驱动创新的核心引擎。作为一名开发者,我有幸亲身经历了这些变革,并在实践中探索了AI技术的无限可能。今天,我想和大家分享我的一些实战经验。AI技术正在深刻改变开发者的工作模式和各领域的发展格局。通过使用智能编码工具、自动化测试框架、低代码开发平台和大模型,开发者可以显著提高工作效率,推动创新。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+
上一篇: Java之BigDecimal详解---面试基础篇(干货满满)
下一篇: 详细总结什么是SpringAOP——面试一点通
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值