《码农翻身》之技术之路

《码农翻身》读书笔记之技术之路

这是我的后端读书笔记系列文章的第四三篇,选取的是最近刚刚圈粉的知名博主刘欣创作的《码农翻身》。这篇文章只是最后一部分内容。

本文内容主要根据知名博主刘欣一作《码农翻身》的内容总结而来,本书的内容风趣幽默,讲解计算机理论原理也是十分透彻,由于书中常常以小故事的形式出现,为了方便学习和回顾,我把它们进行了一些改编和整理,便于自己和跟多人阅读。

本篇文章主要讲述的书中的第四章,第五章,第六章。

本文首发于我的个人博客:https://h2pl.github.io/

同时发表在csdn技术博客上:https://blog.csdn.net/a724888

也欢迎来我的GitHub中交流学习:https://github.com/h2pl/

代码管理那些事

版本控制工具

很早以前代码还在使用人肉管理,比如一个毕业论文可以有几十个名称和副本。

后来出现了代码管理工具,最早是使用文件锁避免文件互相覆盖,每次只能有一个程序访问文件,效率低下。

后来的VSS开始允许代码冲突,要求用户到代码仓库下载最新版本,并且在更新代码时如果有冲突则需要手动处理。

为了支持一个项目的多版本同时开发和发布,开始出现了分支的概念,分支可以从一个版本开始继续后续开发,不影响主干分支。必要的时候再进行分支合并即可。

集中式代码库比如svn,需要用户每次进行版本管理时都进行联网操作,比较低效。

分布式管理工具git出现了,它允许用户有一个本地仓库,现在本地进行修改和版本发布,然后必要的时候再和远程仓库进行同步,开发效率更高,并且可以在发布前就进行代码评估。

项目构建工具

手动构建和部署

项目构建可能分为很多步,先拉代码,再编译源码,然后修改配置文件,导出war包,上传服务器,进行测试。。等等

自动化代码或脚本

手动完成这些操作显然是低效睿智的,所以我们可以写一些自动化代码来完成这一步骤。

xml配置

如果直接用Java代码开发自动化API,固然也可以,但是使用xml这样的描述性语言更能够支持多种语言,而且达到自解释性。

ant就是这么做的。

约定大于配置

由于构建的步骤大多大同小异,主要的区别在于每个项目的路径不同,依赖不同等等。

为了求同存异,我们可以约定编译路径,测试类路径,以及web文件路径等等。然后再灵活地使用xml配置依赖包,项目名称等等。

这样的话大量的重复配置可以被约定所取代,只需要少量的配置就可以解决。

maven使用了这样的方式,于是马上超越了ant。使用pom.xml文件进行少量配置就可以完成自动化地编译,打包,单元测试以及部署等等功能。

代码重构

单元测试

我的编程语言简史

JavaScript

HTML会在浏览器被解析为DOM树。

而JavaScript可以在不改动html代码的情况下改变DOM树的节点,以实现动态更改页面的效果。

除此之外js还可以控制浏览器,打开窗口,等等。

由于js没办法访问网络,所以后来推出了xmlhttprequest实现了向服务器发送异步请求的功能,并且使用回调函数接收数据,并且只需要局部刷新就可以完成数据获取。后来被叫做ajax。

为了优化数据传输速度,xml渐渐被json取代

node js

nodejs的出现使得js不仅可以运行在浏览器,还可以运行在服务端,他也采用了js的异步编程模型,并且使用单线程处理请求,同时是基于事件驱动的,不会阻塞在耗时操作上。

nodejs的出现使得js全栈工程师成为可能。

c和Java

1 c实在是一门很古老的语言,他很贴近底层,代码可以跨平台编译运行,如果有和操作系统强耦合的api,则可以使用条件编译来支持跨平台。

2 c语言非常贴近硬件,可以直接操作内存,使用指针。
而Java则不行。

3 c语言一旦编译连接后就是一个独立运行的进程,拥有独立的地址空间,cpu独立调度。而Java的class类只是字节码,没有jvm就无法运行,jvm本质上是java.exe进程,而每个类则必须让进程中的一个线程来执行。可谓是天差地别。

4 c语言编译过程有一个步骤是链接,比如一个c程序中调用了另一个程序的方法,在编译过程中两个c程序都会变成中间代码,第一个程序必须把方法的实际地址改成第二个程序的地址,这样才能真的执行到其方法。这个过程叫做静态连接,在编译期完成。

而Java的class类也有连接的过程,只不过一般是动态连接,只有用到某个类的方法时,才会把链接真正进行链接。

当然c也可以使用dll动态链接库,原理是把共享代码预先编译好,需要用到的时候才进行连接,而不是一开始就写在源程序里进行静态链接。

c++学习之路

c和c++

c很接近硬件,适合做系统编程,却不适合新手入门去做一些简单的应用,因为它没有gui。

vb是个简单gui编程工具。但是由于是单机的语言,很快就被互联网时代淘汰了。

c++的学习门槛很高,要真正掌握c++技术实在是非常困难。要么是c++专家,要么是一窍不通。

Java和后起之秀

Java比起c++来说实在简单多了,没有指针,只有简单的api,以及易懂的语法,不用担心内存方面的事。

Java适合作为后端语言,除了作为框架填充员以外,后端还有很多有意思的技术,负载均衡,灾备,缓存,消息,分布式,数据备份,搜索等,大后端技术栈深不可测。

Java适合做大型项目,并且也深入到移动端以及大数据方面,相信还能保持年轻很长一段时间。

Ruby和Python的出现大大滴改变了web应用开发的效率,简直是颠覆性地塑造了web应用的快速开发流程。虽然动态语言有一些问题,但是快速开发的效率赢得了很多的青睐。

命令式编程与声明式编程的区别:

命令式就是根据计算机的编程方式进行代码编写。
声明式就是类似sql这种更符合语言习惯的操作描述。

声明性的一个体现来自于函数式编程,简单的语法可以表达很多的意思。

老司机的精进

凡事必先骑上虎背

计算机世界的大道理

局部性原理

局部性原理用于缓存,页面缓存,以及JNI预编译等需要预先加载数据,方便后续访问的场景。

缓存

缓存也利用了局部性原理,加快热点数据的读写,加快系统速度。

抽象

抽象是计算机最重要的概念之一,很多东西都被我们抽象成某个名词。

1 比如指令集,实际上是对cpu的抽象,我们只要根据指令集来编写机器码,然后cpu的实际的电路运行情况我们一无所知。

2 文件则是对输入输出设备的抽象,磁盘和磁盘里的文件都是计算机定义的抽象,本质上他们只是磁盘的一个小小的区域,我们不需要知道磁盘的构造是怎么样的。

3 进程是对一个正在运行程序的抽象,我们知道与进程相关的数据结构,pcb等,而不必知道这些数据在内存上是怎样的一种存在形式。

4 虚拟存储器是对程序存储的抽象,可能是物理硬盘上的一个页,也可能是内存中的一个实际页。

5 虚拟机则是对整个计算机的抽象,包括操作系统,处理器和程序等。

分层

比如网络7层模型,MVC模型。
每层只与相邻层有关系,不至于牵一发动全身

异步调用

同步的调用往往需要线程或进程的阻塞等待返回,而异步的调用则一般提供一个回调函数,等待对方执行完调用时通过执行该函数返回结果。

比如JavaScript,nodejs都喜欢使用异步回调。
nginx,netty等服务端技术也喜欢使用异步回调

架构师

写作

编程学习

微信公众号

个人公众号:程序员黄小斜

微信公众号【程序员黄小斜】新生代青年聚集地,程序员成长充电站。作者黄小斜,职业是阿里程序员,身份是斜杠青年,希望和更多的程序员交朋友,一起进步和成长!专注于分享技术、面试、职场等成长干货,这一次,我们一起出发。

关注公众号后回复“2019”领取我这两年整理的学习资料,涵盖自学编程、求职面试、算法刷题、Java技术学习、计算机基础和考研等8000G资料合集。

技术公众号:Java技术江湖

微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,专注于 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!

关注公众号后回复“PDF”即可领取200+页的《Java工程师面试指南》强烈推荐,几乎涵盖所有Java工程师必知必会的知识点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253242.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

码农翻身 各章节链接

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 我是一个网卡 …

码农翻身全年文章精华

在码农翻身公众号写了一年多, 最大的体会就是:原创真心不易! 每天思考的最大问题就是: 下一篇文章写啥? 在大家的支持和鼓励下,还是坚持了下来, 回头看看走过的路,这一年过得还算…

python笔记16_实例练习_二手车折旧分析p1

python数据分析练习,具体数据不放出。 分析实践很简单。目的不是做完,而是讲清楚每一步的目的和连带的知识点(所以才叫学习笔记) 0.数据准备 原始数据格式:csv文件 原始数据结构: 数据格式 字段名 int…

MySQL第二章、数据库基础

回顾: 目录 一、数据库的操作 1.1创建数据库 1.2显示当前数据库 1.3使用数据库 1.4删除数据库 二、常用数据类型 2.1数值类型(分为整型和浮点型) 2.2字符串类型 2.3 日期类型 三、表的操作 ​编辑 3.1创建表 3.2查看表结构 ​编…

苹果手机如何实现微信多开分身

微信现在是生活中使用最多的聊天软件,而且很多人的微信都不止一个,一般都是一个用来工作使用,一个用来日常使用。 安卓手机在很早之前就可以安装两个微信了,目前还有部分用苹果的朋友不知道微信怎么分身,接下来小编就…

苹果手机如何微信分身?

苹果微信分身,既是你的生活伴侣,又是你的工作好帮手。对于那些工作繁忙,生活节奏快的人来说,这款产品非常实用。让你随时切换身份,一种生活,一种工作,既避免了不必要的误会和困扰,也…

苹果手机微信分身

QQ慢慢退出历史舞台后,我们的生活与工作又重新与微信拾起了联系,并且无法离开。虽然安卓用户很多都有自带两个微信,但由于系统的限制,iPhone手机还不能正常安装两个微信。那这些想安装两个微信的iPhone用户怎么办?iPho…

苹果微信分身版ios_微信正式支持暗黑模式:iOS版已上线 安卓版随后就来

微信暗黑模式一直受到网友的极大期待,今天(22日),微信 iOS版 终于迎来了 7.0.12 更新,正式加入对深色模式的支持。 微信 7.0.12 更新日志显示可跟随系统的设置,切换为深色模式。 从目前网友的反馈来看,一方面对微信终于…

苹果微信分身版ios_苹果手机ios14系统微信分身地址安装教程

大家期待已久的苹果12终于也到来了。是否达到了你的预期?惊喜多还是失望多呢? 随着苹果12的到来,市面上百分之80的苹果手机用户的苹果手机系统版本都更新到了ios14版本了。ios14系统可以说在使用体验上给用户们有很大的视觉提升跟操作舒心。为…

微信分身服务器,苹果微信分身版

苹果微信分身版 定制技巧一、怎样去做做seo?出现seo,一看就知道。seo如同天上掉馅饼,做到专注优化,那么就是正确的seo,后面的会做出***好的seo。 打造微信中的自我推广、商业协同等。微信公众平台做业务流程也可以分为…

苹果微信分身版使用教程与注意事项

许多苹果手机用户都听说过:苹果微信分身版这一款手机软件,不过,什么是苹果微信分身版?微信分身版有什么功能?还有,苹果微信分身版怎么使用呢?相信这一些问题大家都不知道,在今天的教…

多开分身苹果版_苹果手机最新微信分身怎么下载?微信多开地址分享

哇 放假了 大家端午节快乐安康。简直不要太开心。 苹果用户们都知道苹果系统已经升级到IOS14了。喜欢升级的朋友们会发现微信分身都不能用了。怎么办呢?终归不会凉拌。我的出现就是来拯救你们的,对。 已经升级到ios14系统的朋友不要着急,船到桥头自然直,下面这款微信分身就…

苹果应用分身_苹果手机微信分身怎么下载?微信多开版地址

周一了,新的一周开始了,小伙伴们这周要加油啊。 小伙伴们这周的工作有没有有效率的完成呢??如果没有,那可能是因为你缺少一个稳定的微信分身。何为微信多开? 顾名思义就是在一个手机上安装两个乃至多个微信。对 ,就是这个意思了。如下图所示 很多人在苦恼,找了那么多年…

Vue3-devtools开发者工具正确安装方法

目录 前言:1、下载安装2、添加扩展 前言: 最近在学习Vue3,学习Vue3自然离不开调试工具Vue3-Devtools,所以我们需要来下载这个调试工具并放入谷歌浏览器里的扩展程序里面。帮助我们更好的调试vue3里的程序。 1、下载安装 Github下…

TYAN 于Computex2023 展示支持第四代英特尔至强可扩展处理器的新款服务器

【台北讯2023年5月30日】隶属神达集团,神雲科技旗下服务器通路领导品牌TYAN(泰安),于2023 台北国际计算机展(Computex 2023)5月30日至6月2日展览期间,在台北世贸南港展览1馆4楼 M0701a摊位展示最…

准备入门python的一些建议

提醒:一下内容只代表个人观点 从18年左右开始,python的广告就被打得满天飞,网上各种吹嘘python这门语言的广告五花八门,当然也有一些人看完这些广告后感觉python非常的高大上,然后就入门学习了python,我就…

Mac新手教程——修改苹果Mac电脑窗口上按钮与菜单颜色

**MAC电脑如何修改苹果Mac电脑窗口上按钮与菜单颜色?**可能新接触苹果macosx的用户不清楚该如何设置。今天小编就带来一篇文章,详细介绍Mac电脑窗口上按钮与菜单颜色的修改方法。 1、首先,打开系统偏好设置。找到通用,点击进入。…

iphone12有几种颜色?

iPhone12有黑、白、蓝、黄、金、橙共计六种颜色可以选择,增加了海军蓝新配色,不同的消费人群可以有多种选择 本人的iphone手机就是活动时8折入手的 :https://mall.jd.com/index-1000000127.html? 海军蓝 iPhone 12系列将有四款机型,…

iOS13系统 TabBar修改文字体颜色

iOS13系统 TabBar修改文字颜色 笔者性懒,腹中无墨. iOS13之前, 修改TabBar字体选中及未选中颜色, 一般做如下处理即可: iOS13之后, 首次打开App并尝试切换底部tabbar选中下标, 字体颜色都是可以的, 但是如果push了新的页面再回到主页面, 文字高亮颜色默认是系统的高亮蓝色 …

【护眼色设置】Adobe Acrobat DC / Notepad++ 背景颜色设青苹果绿

目录 前言护眼色Adobe Acrobat DCNotepad参考 前言 Acrobat DC可将纸质图片、文字迅速转化成PDF或文档格式,比如人们通过手机拍照,可让纸质版文字转化成电子版,用户可直接对文档进行修改。 Notepad是Windows操作系统下的一套文本编辑器(软件…