心法禅意:程序猿的参悟、觉悟、证悟之路

两岸猿声啼不住,轻舟已过万重山。人生,像一场(长期的)修行;程序猿的道路,亦如是!

今天,你悟了吗?

                                《白帝下江陵》

                                                作者/李白

                                朝辞白帝彩云间
                                千里江陵一日还
                                两岸猿声啼不住
                               轻舟已过万重山

💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦
💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙
💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦

 一、Java后端开发的星海征途

1.修炼之道 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

■ 镜子中的眉毛 🐞

                ● 就像照镜子一样,左边的眉毛其实在右边。【学习阶段】与【应用阶段】具有对称性,很多东西、很多道理,【学习阶段】跟【应用阶段】需要反着来:(1)比如所谓的“不要重复造轮子”,这句话其实是应用阶段的事情,了解是怎么一回事就好,对于学习阶段,其实“就是要反复造轮子”,需要不断练习,同一件事情,通常需要反复练习很多遍,我的理解是,“真理就像美人,需要爱她的人,抚摸她的每一寸肌肤,很多很多遍”,在不断的接触中,反反复复的过程中,达到熟练、细致细腻的地步。总之,拳不离手、曲不离口,学习就是要反复折腾、折腾着向前进;(2)又比如采坑,学习阶段,就是需要不断地采坑,即所谓反复练习和异常测试,你不掉到坑里去,你就不知道坑到底是个啥玩意,坑都是具体的、有很多很多的坑,需要我们去踩,学习阶段如果太顺、将来出问题,不会解决的话,那工作效率,那工作中的坑之大,就可想而知了,学习阶段就是要对自己狠一点,一个声音高叫着【掉到坑里去吧,我要祝福你】;而应用阶段,如果还是出来很多坑,那就真的是坑,不是坑爹、就是坑自己。

■ 时间简史 🐞

                ● Java码农心中的Java时间简史:

                        【1】JavaSE阶段(混沌)

                         【2】JavaWeb阶段:

                                0 Servlet(盘古开天地),

                                1 类库阶段:远古(中小型应用系统)
                                        1.1 Servlet-JSP-类库:JSP什么都干(旧石器时代)
                                        1.2 Servlet+JSP+类库:JSP专职做好UI模板 (新石器时代)
                                        * 类库:JSPDBUtils+BeanUtils+CommonsIO等阶段(石器世代)
                                       番外:Servlet与JSP的职责分离与专业化,代表了一种趋势。

                         【3】JavaEE阶段(本质仍然是JavaWeb):

                                2 框架阶段I:中古和近古
                                        # SSH为主,大型应用系统,分布式开发-重量级,成熟(但缺陷明显),偏稳定
                                        2.0 框架出现(文明纪元):
                                        2.1 EJB:(奴隶社会)【中古】
                                        2.2 Web Service[SOA]阶段:CXF框架(封建社会)【近古】

                                3 框架阶段II:近、现代史,当代史
                                        # SSM为主,超大型应用系统,分布式开发-轻量级,成熟,偏性能
                                        # Maven,Gradle的流行、基于HTTP协议的RESTful开发风格的流行和SpringBoot的出现或诞生是重要的标志性事件,是JavaEE轻量化与敏捷化开发的发展历史中的里程碑事件。
                                        3.1 分布式之RPC阶段:Dubbo框架(近代世)
                                        3.2 微服务之HTTP&RESTful阶段:SpringCloud框架(现代史)
                                        3.3 服务网格(当代史)

■ 雪花飘飞,魔法师召唤神兽 🐞

                ● 我们需要学习很多很多的命令,就像天上的雪花一样多:比如Dos命令,Linux命令,MySQL指令,Redis指令,SVN指令,Maven指令,Git指令,MongoDB指令,Docker指令,Npm指令,Yarn指令,NVM指令,Chocolatey指令。其实我们学的各种API,那些方法和函数,也都可以理解为指令,因为它们最后都是通过名称来调用的。命令或指令,就是法师的符咒,每一个程序员,都在修道。念几句咒语,就能招唤神兽,看起来是件神奇又轻松的事情;但咒语念多了,才会知道“反噬”两个字的份量,这个世界上,任何事情都是有代价、有筹码的,都是辩证的。再厉害的孙悟空,也翻不了如来神的五指山。

2.工具之格 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

                ● 屠龙刀:IDEA

                ● 三十六路打狗棍法:快捷键

3.知识之阶 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

■ 兄弟?影子? 🐞

                ● 好像兄弟又好像影子:(1)对象和实例,并不完全是同一的概念。这样理解就对了:a)一切皆对象;b)实例或实例对象,只是对象的一种形式;实例或实例对象,是通过构造器new出来的对象;c)实例或实例对象,是我们接触和使用最多的一种对象形式;d)除了实例对象,还有类对象等其它对象形式,又比如根对象Object。e)就范畴范围而言,对象和实例是一种包含关系,对象(概念上)包含实例或实例对象(2)类属性和类字段(成员变量),并不是同一的概念。类属性的存在,是因为类实现封装后(使用了private、protected等权限修饰符修饰,直接存取权限受限),提供setter和getter存储器方法决定的。属性名和成员变量或类字段变量名称,通常保持一致,但这只是实用性决定的或概率上讲的,二者其实可以不一样。

4.设计之法 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

■ 永生术:常青不老的法术 🐞

                ● 长生不老术/或永生之法:软件向后兼容的功能特性(《西游记》中孙悟空到须菩提祖师那拜师学艺,最想学的,就是永生之术。全世界的古文明中,最具永生特征的,就是中华文明,因为与其说我们这个民族注重血统、历史和传统,不如说,是注重向后兼容之法,是一个注重永生术的民族或文明。也正因为这一点,我们最讲究传承,历史最是悠久而能始终接续。Java语言,是一门典型的向后兼容的语言,然后在此基础上,不断抄袭其它语言的优点或一些卓越的特性,从而保持持久常新、青春不老,显出倾向永生的特点。反过来,像Python这样的语言,像PHP的一门叫Drupal的CMS系统,每个大的本版更新换代或升级之后,仿佛就是学习一门全新的语言,全新的软件,有太多的东西需要从头学起,因为它的变化往往是革命性,因为它的文化或遵循的法则,是不讲究向后兼容的。)

■ 降龙18掌:编程最佳实践的典型 🐞

                ● 降龙十八掌:GoF23

■ 默契基于效率 🐞

                ● 最大的默契:就是一切尽在不言中 ——心照不宣、心领神会地把一切能做的都做好了。有两个经典的例子:一个是Lambda表达式;一个是SpringBoot。【1】Lambda的核心原则就是:可推导可省略。【2】SpringBoot提供了大量的starters(启动器/或起步依赖) + 尽可能地减少不必要的手动配置,它的底层支撑是自动化配置机制和所遵循的“约定高于配置”的理念,使用SpringBoot手脚架,一方面可以通过大量相应的starter,让程序员减少重复书写模板代码,一方面可以让配置的工作,无限地逼近“零配置”的理想王国。

■ 语法糖的甜度 🐞

                ● 语法糖,有点甜。语法糖,大抵都是为效率而生,而且大多数是为了提升开发效率而出现的。其实Java中的语法糖,是很多的。语法糖集中体现了编程语言间的相互抄袭精神,嘿嘿!

■ 面向接口编程

                ● 面向接口编程的典范:JDBC, Spring。面向接口编程的本质,是面向抽象编程,是面向抽象的极致体现。最后,体现出【顶层设计】的优势来!

5.实战之术 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

■ 箫传五音 🐞

                ● 开发架构模型:吹箫五音模型。互联网,最根本、最广泛地应用级协议是HTTP协议,HTTP协议,最核心的一个概念,是HTTP事件模型,简称【请求-响应】模型;请求和响应,言简意赅,却构成了整个回路与闭环;请求是简单的,复杂的是整个响应的过程,是服务器端的架构;上帝三位一体归于一,上帝是的绝对的,请求端的叫客户,也可以说是顾客,顾客就是上帝,顾客的需求是绝对的,是压倒性的,相对的是服务端的整个豪华的服务团队。现代的大型互联网应用系统最终完成向上帝提供完美服务,其架构是复杂的,最复杂的就是服务端,从基础设施型的服务器,到应用型的服务器,从集群到分布式,由各种各样的服务器组成整个服务主体架构。对于开发者来说,个人认为,主要有5种服务器类型,再加上相应的使用上的客户端,构成了整个的基本架构框架或模式(模型),这5种服务器,分类为:【1】DNS域名解析服务器,【2】Web服务器,【3】应用服务器,【4】数据或数据库服务器,【5】文件服务器。HTTP的请求-响应过程,就相当于ping-pong,ping代表请求,pong代表响应,但这个pong展开后是非常复杂的,这些复杂的服务器,分布于请求-响应的整个线程闭环的诸节点上,提供不同的服务,就像吹簫一样,不同的节点,有不同的音口,发出不同的声音,通过有效的组织形成共同完成最终的服务,响出美妙的乐章。基本公式为:
                        上帝在吹簫
                        【浏览器】请求--------------------------------------------------------------->
                        Client--->【宫】--->【商】--->【角】--->【徵】--->【羽】
                                        <--------------------------------------------------------------响应
                                        DNS        Web           App            Db              File
                                        Server     Server       Server        Server        Server
                                        【host】   【Nginx】  【Tomcat】 【MySQL】 【FastDFS】
                                        ______     ______     ______      ______      ______   
                                        Client          Client      Client         Client        Client
                                      【Switchhost】【CMD/Shell】 【IDEA】【NaviCat】 【Postman】
                                                                        Developer/Coder
                其中,最复杂的,是App Server和Db Server,App Server主要是因为分布式,Db Server主要是因为衍生出了满足各种不同需求类型、解决不同痛苦的数据形式的服务器,包括SQL和NoSQL,NewSQL等。总之,类似于一句话:上边一张嘴,下边跑断腿。也可以正能量一点,消费与需求,正是推动时代发展的根本动力。嗯?我又悟了?!!

■ 上帝造人,或 画师肖像 🐞

                ● 上帝造人:电商系统数据表关系与设计
                        ○ 总体上讲,电商系统几张核心数据表的关系,就相当于上帝造人,上帝是怎么造人的呢?1)当然是先造了天地万物,有了伊甸园,然后再造的人;2)具体讲,人是怎么造的呢?就是先造了个男人,叫亚当;然后,再从亚当身上弄了根肋骨,造了女人,再往后,就是人造人了。

                        ○ Java中,创建对象,就相当于造人,而各种类(接口、抽象类、父类、子类)就相当于造人的方法或方式法则。
                        ○ 现在我们来看一下电商系统中的几张主要的表的关系,我们也可以这样对照着去理解!那品牌表、商品分类表、规格分组(或分类)表、规格参数表、SPU表、SKU表怎么理解呢?其实,我们可以这样去理解,商品的分类和商品的品牌,相当于是帖在商品上的标签,因此,可以理解为是接口;规格分组(或分类)表和规格参数表的关系,相当于抽象父类和具体子类的关系,是造人的图纸;而SPU和SKU,合起来,就相当于具体的实例对象,相当于是人,只是SPU作为标准商品或抽象商品集合而存在,体现的是人的共性,而SKU是商品最小存储单位,相当于是人的个性。所以,理解这几张表的相互关系的大体框架,就相当于下面这样:
                                ◆ 分类表(cid1/cid2/cid3) + 品牌表(brand_id) --------相当于接口 interface
                                ◆ 规格组表(规格分类表)--------------相当于抽象父类 abstract/parent class
                                ◆ 规格参数表(规格属性表)-----------相当于具体子类 child class
                                ◆ SPU表(包含spu表/spu详细表)/SKU表------相当于实例对象 object
                                        ◆ SPU -------------------------更多体现为共性(通用性)
                                        ◆ SKU -------------------------更多体现为个性(差异性)
                        ○ 简单地讲,我们可以把商品理解成人,或者具体的对象;在上面这些表中,最像人的,是SKU表。但严格地讲,SKU虽然更为具体,SPU相对抽象--体现为共性,但真正的一个商品,依然是SKU+SPU的综合结果产出。而spec_group,spec_param更多的像造人的模板、像图纸、像OOP中的类、像五官和轮廓线条;brand和category,更多地像标签,像OOP中的接口。接口和类,都是服务于造人用的;在造人的过程中:1)接口像天,极为抽象,类像地,开始有五观形象,2)接口像轮廓,类像结构线条,3)而最后的SPU,SKU像光影,赋予事物具体的值,最终走向细致和细腻,有血有肉,有体觉官感上的冲击力,有疼痛,有爱恨,有质感和现实感,更或者说有鲜活感;就像购物时,同一款商品,一个人喜欢红色,另一个则喜欢绿色,这就是疼痛,这就是爱恨,这就是断舍离。所以,整个数据表的设计过程,和OOP编程的本质,其实,基本上是一致的,就像画家画像,就像上帝造人一样。上帝为什么要造人?因为理想是灰色的,生命或生活之树常青。顾城有诗(《感觉》)为证:

                                        天是灰色的
                                        路是灰色的
                                        楼是灰色的
                                        雨是灰色的

                                        在一片死灰中
                                        走过两个孩子
                                        一个鲜红
                                        一个淡绿

6.星罗之光 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞 🐞

                ● 三头六臂和基因变异:
                        ○ 方法重载(overload) 是三头六臂
                        ○ 方法重写(overwrite) 是基因变异。方法重写,也叫方法的覆写或覆盖(override)

                ● Bug是一种物质,Debug是一种反物质;Bug是一种暗物质,Debug是一种反暗物质。

                ● 抽刀断水水更流:过滤器&拦截器&网关

                ● 形上形下(形气道理):接口规范(形而上之道)、抽象类(形而上之理)、普通类(形而下之气)、实例对象(形而下之形)

                ● 五四运动:【1】Java类有五脏——即Java类的五大成员(成员属性,成员方法,构造器,代码块,内部类)。【2】还需要学习四个重要的关键字:this, super, static, final

                ● 从后台到前台:我们可以想像一个电商系统,主要包括两部分:后台管理系统和前台业务系统。所谓坐地经商,开门迎客。后台以增删类操作为主,前台则需要承受不计其数的客户的访问,以查询和修改操作为主。LinkedList和ArrayList两种数据类型,似乎暗合了这从后台到前台的不同需求特点:ArrayList的数据结构——Array(数组),决定了其特定是增删慢、查询和修改快;而LinkedList的数据结构——Link(链表),决定了其特定是增删快、查询和修改慢。所以,理解LinkedList和ArrayList的特点,可以结合满足从后台到前台的现实需求来看,将抽象的设计与现实的需求联系起来,将理论(数据结构)与实践结合起来,对于我们的学习理解的加深和记忆的持久化,以及应用上的信手拈来,会有很多好处。

                ● 酸(ACID):事务四大特性

                ● 框架的灵魂:反射

                ● 自我感知:内省

                ● 一站式框架或容器:Spring

                ● 真水无香:解耦思想

                ● 撒豆成兵:Java Bean

                ● 拈花一笑、天女散花: @ 之注解

                ● API三部曲:包 -> 构造器 -> 常用方法

                ● 顺藤摸瓜:XML解析,HTML解析,DOM解析

                ● JavaWeb三件套(三大组件):Servlet + Filter + Listener

                ● 主流框架(SSH&SSM)之天地人三才:天(struts/springmvc)+人(Spring)+地(hibernate/mybatis)。容器思想:人道中庸,乃经天纬天之才

                ● 工商局:注册中心

                ● 一阳指:Servlet                        

 一阳指出自金庸多部武侠小说中,是大理段氏(修订版)的独门绝学,既可御敌,亦可疗伤救人。
 一阳指是一门高深的指法,但使用时极耗精力,连续使用小则功力全失,大则性命不保。

一阳指以品境界,最高为第一品,第四品便是修炼大理最高武学「六脉神剑」的基础。

                ● 如来神掌:Spring容器是如来神掌

                ● 六脉神剑:
                        Spring&SpringMVC&SpringBoot&SpringCloud&SpringData&SpringSecurity

💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦
💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙 💙
💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦 💦

二、大前端的修罗场

1.JS 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸

2.JS高级 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀 🍀

3.ES6 🌹 🌹 🌹 🌹 🌹 🌹 🌹 🌹 🌹 🌹

4.Vue 🍁 🍁 🍁 🍁 🍁 🍁 🍁 🍁 🍁 🍁

■ 成❄️ 住❄️ 坏❄️ 空 🍁

                ● 成住坏空:Vue实例生命周期&钩子函数([create/mount/update/destory]*[before/ed])

■ 三魂❄️ 七魄 🍁

                ● 三魂七魄:Vue实例&组件参数选项

new Vue({
        el: '#app', //挂载元素
        template: '', //模板
        components: {}, //组件
        data: {}, //数据
        methods: {}, //方法
        computed: {}, //计算属性

        watch: {}, //监测
        //created(){} //钩子函数...

})

参考:vue实例的参数说明
vue实例的参数说明 - 简书

 

5.Node&后端开发 🌻 🌻 🌻 🌻 🌻 🌻 🌻 🌻 🌻 🌻

6.TypeScript 🌿 🌿 🌿 🌿 🌿 🌿 🌿 🌿 🌿 🌿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值