个人的编程学习经验

  • 本篇博客是写给学弟学妹们的,希望学弟学妹们能从中找到学习的捷径。

一、如何学习?

  • 兴趣!!!兴趣是永远是最好的老师,当你对一个事物有无限兴趣时,你才能有无限的动力为之学习。
  • 毅力!!!学海无涯苦作舟,学习是永远没有止境的,在遇到瓶颈的时候一定要坚持。
  • 实践!!!有句老话是“好记性不如烂笔头”,对于程序员而言就是“好记性不如烂键盘”。你看再多的教程,也不如自己亲自敲一遍代码,自己做一个项目。
  • 交流!!!多逛博客、多逛论坛、多听讲座、多参加互联网企业举行的青训活动、多参加高校间的竞赛、多逛GitHubGitee

二、如何开始编程的基础学习?

  • 不积跬步无以至千里,不积小流无以成江海。不论你将来是想做互联网那个方向,没有基础,你都会寸步难行。编程基础是区别科班与培训机构重要特征。

1. 认真学习C语言,但不要投入过多的精力

  • 这个标题肯定有人觉得很奇怪,为什么C语言学习既要认真,又不能投入过多的精力?且听我慢慢道来。认真学习C语言,是因为C语言太太太经典了,其他编程语言或多或少都有C语言的影子。但是C语言学会程序设计思路就行了,不要投入过多精力。C语言是不严谨且危险的,C语言的指针是可以直接操作内存的,这是极度危险的行为,现代编程语言都摒弃了这种行为,就连C++也是对指针进行了限制。C语言的就业前景我并不看好。随着ArduinomircoPython等快速开发语言的崛起,以及32位单片机造价的逐步下跌,C语言的市场必然会逐步萎缩。

2. 认真学习面向对象编程

  • 面向对象编程是现在主流的开发方式,封装、多态、继承,是面向对象编程的核心。如果你未来想做计算机相关的工作,面向对象编程必须要掌握。

3. 认真学习计组、计网、数据结构、数据库、操作系统

  • 这些都是基础知识,没说的,必须学会、学好。
  • 如果你不会计组,那进制换算、字符编码、浮点运算、IO中断处理你肯定就都不会了。
  • 如果你不会计网,那TCP握手、UDP传输、波特率你肯定就不知道了。
  • 如果你不会数据结构,那编程时遇到红黑树、图的深度广度遍历问题你就抓瞎了。
  • 如果你不会数据库,那还编啥程序啊?哪有不用数据库的项目啊?
  • 如果你不会操作系统,那程序死锁了你都不知道是什么问题。

4. 认真学习Linux

  • 由于Linux是开源免费的,因此Linux是最受欢迎的服务器操作系统。学会Linux和Shell脚本是很有必要的。

4. 认真学习高数和线代

  • 数学对于计算机来说真的很重要,本科阶段一定要学好高数和线代。高数和线代是机器学习、矩阵论、离散数学(组合数学)、数论算法、计算机图形学、人工智能等学科中基础的基础。如果一个程序猿只会CURD,只会做些ERP、进销存系统,那是很悲催的一件事,这种程序猿一点都不酷 ( ̄ー ̄)

三、 如何开始编程的进阶学习?

  • 首先,我们要确定你进一步学习的方向,计算机相关的知识太多太多了,选对发展方向是很重要的!

1. 通用技术学习

  • 编程中,很多技术是语言无关的,这些技术不论是Java项目还是Python项目都会用到。
  1. 设计模式:这些知识可以去网上搜一下23种设计模式,教程很多。
  2. 分布式服务框架:Dubbo、Spring Cloud
  3. 版本控制软件:Git、SVN
  4. 消息队列:kafka、RabbitMQ、ActiveMQ
  5. 程序配置文件:JSON、XML、YML、properties(Java)
  6. 关系型数据库:MySQL、SQL Server、Oracle、MongoDB
  7. 非关系型数据库:Redis、HBase
  8. 大数据框架:Hadoop生态圈、Spark生态圈、pandas(Python)
  9. 自动化测试、爬虫:Selenium、requests(Python)、requests(Python)、urllib(Python)、scrapy(Python)
  10. 接口测试:PostMan

2. Java开发学习

  • Java进阶学习首先要学的就是J2EE,然后再学Spring CoreSpring MVCSpring BootSpring CloudDubboHibernateMyBatisMaven。Java学习我推荐看狂神说的视频和阿里巴巴的Java开发手册。

3. Python开发学习

  • Python进阶学习首先要学的就是DjangoFlask,学会这两个框架,做一些web小项目就没问题了。但是如果想玩出点花样,还得学习numpyos等库。Django的学习直接看Django官网,Flask的学习直接看Flask官网,官网永远是最好的学习网站。

3. WEB开发

  • WEB开发没什么好讲的,网上有各种各样花里胡哨的框架和组件,但这些组件都是由HTMLJSCSSTS组成的。WEB开发首先要学好HTML 5ES 6CSS 3TypeScript。学好这四样后,就可以去学习AjaxAxios了,学习如何通过WebService与后台进行通信。当你学会接口后,你就可以学习一下nodejsnpmyarn。学完这些就可以学习Vue生态React生态Angular生态了,这三个框架可以使前端开发变得更敏捷。如果你想让你的网页变得更加好看,可以参考我这篇文章

4. 低代码平台开发

  • 初学者不要碰这东西,这是把双刃剑,用低代码平台确实可以敏捷开发,但是你的项目架构就固定死了,未来架构升级只能依靠平台代理商,而且低代码平台会使初学者不去思考代码实现的原理。而且低代码平台的依赖一旦报出漏洞,低代码平台供应商能否及时处理也是个问题。
  • 这里我得吐槽下浪潮的iGIX平台,太难用了,代码只能在平台里写,不支持IDEA快捷键,没法打断点,代码提示也没IDEA好用,代码提交莫名其妙的报错只能手动提交,分布式事务没有考虑过TCCTCC逻辑得自己手敲。。。

5. 项目部署(以Java为例)

企业级项目开发完毕后,需要部署到用户服务器中,但我总不能直接把jar包放到用户服务器里吧?用户直接反编译一下,不就能看到我的源码了吗?万一用户拿我代码去卖怎么办?因此,这里我总结了以下几种防止反编译的方法:

(1)代码混淆

  • 市面上有多代码混淆,但大部分都是修改类名、方法名和变量名进行混淆。这种防止反编译的方式很Low,只要对业务很熟悉,代码很容易被恢复。

(2)ClassLoader解密

  • ClassLoader解密的思路是,所有类都要通过ClassLoader类解密后加载到JVM中才能运行。ClassLoader类一般不放在用户服务器上,我们公司把ClassLoader类放到SuperDog(一个加密外设)中。

(3)部署于docker或k8s

  • Jar包部署docker Linux容器中,由Linux容器提供服务,利用Linux容器进行加密。

(4)直接提供云服务

  • 代码部署于公司内部服务器,由通过云应用,给用户提供服务。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达娃里氏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值