码农翻身 各章节链接

article/2025/9/21 14:51:53

大话编程

我是一个线程

我是一个Java class

Javascript: 一个屌丝的逆袭

Java:一个帝国的诞生

JSP:一个装配工的没落

TCP/IP 之 大明王朝的邮差

TCP/IP 之 大明内阁

TCP/IP 之 蓟辽督师

CPU 阿甘

CPU 阿甘之烦恼

CPU 阿甘:函数调用的秘密

我是一个网卡

我是一个路由器

我是一个进程

我是一块硬盘(上)

我是一块硬盘(下)

我是一个键盘

张大胖的socket

张大胖学递归

学习面向对象的令狐冲

张大胖学数据库

数据库村的旺财和小强

小李的数据库之旅(上)

小李的数据库之旅(下)

漫画:什么是机器学习

那些烦人的同步和互斥问题

IE为什么把Chrome和火狐打伤了

对浏览器村的第二次采访

节约标兵IE的自述

EMail 诞生记(上)

EMail 诞生记(下)

Http 历险记(上)

Http 历险记(下)—Struts的秘密

动物王国的面向对象

冯·诺伊曼计算机的诞生

Http Server: 一个差生的逆袭

张大胖的加法器

从1加到100:一道简单的数学题挑战下你的大脑

摘录:

所谓编程,就是把自然语言的需求翻译成计算机语言, 让计算机去执行。 对于刚入行的人, 理解CPU和内存是怎么在一起工作的, 绝对是基础中的基础。

如果我们简化一下, CPU和内存其实特别简单,内存就是一个个的小格子, 每个格子都有一个编号, 格子中的数据可以被CPU所读写。

 

CPU 内部的构造超级复杂, 但我们这次只关注两个东西:

一是运算器,可以做各种运算, 但是有个限制,这个运算器不能直接操作内存进行运算, 他在运算时使用的是内部的数据格子(学名叫寄存器), 为了区分开, 我把他们叫做R1,R2,R3,R4,假设只有这么4个, 统称Rx。 

CPU必须把数据装载到寄存器中才能运算

CPU运行速度快的令人发指, 但是它能做的事情却简单的令人发指, 主要是以下四种

(1) 从内存的某个格子中读取数据放入自己内部的寄存器Rx

(2) 把Rx的数据写入内存的某个格子中(会把原有数据覆盖)

(3) 进行数学运算和逻辑运算

(4) 根据条件进行跳转

数学运算就是加减乘除, 逻辑运算就是AND , OR 这样的基本运算,没接触过的暂时可以不用深究。

根据条件进行跳转就是从一个指令跳转到另外一个指令。

切记切记: 内存只是一个个可以读写的格子, CPU简单到只能做上面描述的4件事。

因为CPU不能直接操作内存进行运算, 需要把数据从内存和CPU之间搬来搬去。

还有一个问题,CPU在运行的时候,从哪里取获得那些指令?

估计你已经想到了, 对,就是内存 ,指令也需要在内存中才能够被CPU访问到, CPU从内存读到指令以后,会进行分析(译码) , 看看这个指令是干什么的, 然后再进行运算。

 

所以我们的内存小格子中不仅仅存放的是数据,还存放着至关重要的程序指令我们需要告诉CPU第一条指令在什么地方, 然后CPU就可以疯狂的开始运行了:

这些指令在内存中肯定不是我们看到的自然语言, 而是二进制的表示

那内存的数据又是从哪里来的?  肯定是硬盘了, 我们写好的程序会放在硬盘上, 在运行的时候才调入内存。

小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?

摘录:

当你在浏览器中输入网址(例如www.coder.com)并且敲了回车以后, 浏览器首先要做的事情就是获得coder.com的IP地址,具体的做法就是发送一个UDP的包给DNS服务器,DNS服务器会返回coder.com的IP, 这时候浏览器通常会把IP地址给缓存起来,这样下次访问就会加快。

比如Chrome, 你可以通过chrome://net-internals/#dns来查看。

有了服务器的IP, 浏览器就要可以发起HTTP请求了但是HTTP Request/Response必须在TCP这个“虚拟的连接”上来发送和接收。

想要建立“虚拟的”TCP连接,TCP邮差需要知道4个东西:(本机IP, 本机端口,服务器IP, 服务器端口),现在只知道了本机IP,服务器IP, 两个端口怎么办?

本机端口很简单,操作系统可以给浏览器随机分配一个, 服务器端口更简单,用的是一个“众所周知”的端口,HTTP服务就是80, 我们直接告诉TCP邮差就行。

经过三次握手以后,客户端和服务器端的TCP连接就建立起来了! 终于可以发送HTTP请求了。

之所以把TCP连接画成虚线,是因为这个连接是虚拟的, 详情可参见之前的文章《TCP/IP之大明邮差》,《张大胖的Socket》



一个HTTP GET请求经过千山万水,历经多个路由器的转发,终于到达服务器端(HTTP数据包可能被下层进行分片传输,略去不表)。

Web服务器需要着手处理了,它有三种方式来处理:

(1) 可以用一个线程来处理所有请求,同一时刻只能处理一个,这种结构易于实现,但是这样会造成严重的性能问题。

(2) 可以为每个请求分配一个进程/线程,但是当连接太多的时候,服务器端的进程/线程会耗费大量内存资源,进程/线程的切换也会让CPU不堪重负。

(3) 复用I/O的方式,很多Web服务器都采用了复用结构,例如通过epoll的方式监视所有的连接,当连接的状态发生变化(如有数据可读), 才用一个进程/线程对那个连接进行处理,处理完以后继续监视,等待下次状态变化。 用这种方式可以用少量的进程/线程应对成千上万的连接请求。

(码农翻身注:详情参见《Http Server:一个差生的逆袭》)

我们使用Nginx这个非常流行的Web服务器来继续下面的故事

对于HTTP GET请求,Nginx利用epoll的方式给读取了出来, Nginx接下来要判断,这是个静态的请求还是个动态的请求啊?

如果是静态的请求(HTML文件,JavaScript文件,CSS文件,图片等),也许自己就能搞定了(当然依赖于Nginx配置,可能转发到别的缓存服务器去),读取本机硬盘上的相关文件,直接返回。

如果是动态的请求,需要后端服务器(如Tomcat)处理以后才能返回,那就需要向Tomcat转发,如果后端的Tomcat还不止一个,那就需要按照某种策略选取一个。

两个程序的爱情故事

两个程序的爱情故事(续)

烂代码传奇

机房夜话

干掉状态:从session到token

张大胖的docker之路

从SOA到微服务

XML的传奇人生

从密码到token, 一个授权的故事

编程世界的那把锁

加锁还是不加锁,这是一个问题

这个动物园, 两年也逛不完

张大胖和CAP定理

一个翻译家族的发家史

张大胖和单元测试

 

编程语言

Javascript: 一个屌丝的逆袭

计算机语言之战

我和编程语言的爱恨情仇(上)

我和编程语言的爱恨情仇(下)

Android为什么选择了Java?

iOS为什么选择了Objective-C?

Basic :一个老兵的自述

Node.js :我只需要一个店小二 只用一个线程来处理所有请求,事件驱动编程

命令式编程 vs 声明式编程

编译还是解释?

 

程序人生

15年编程生涯,资深架构师总结的7条经验

架构师小赵

师兄说

师姐说

小王的架构师之路

小李的版本管理系统

小超穿越记

小李的Build之路(上)

小李的Build之路(下)

张大胖改Bug

我的编程之路—大学趣事

码农小王的一天

小李在外企

张大胖的需求估算

从厨师到码农

聊一聊那些神一样的程序员们(上)

聊一聊那些神一样的程序员们(中)

聊一聊那些神一样的程序员们(下)

谁是互联网之父?

一个价值百万的创业教训

让自己与众不同—提升工作的价值

看看你的“易燃性”

从无聊的工作中寻找价值

什么样的学生适合报考计算机?

谈谈程序员的职业方向(上)

谈谈程序员的职业方向(中)

谈谈程序员的职业方向(下)

谈谈培训班的作用

码农需要知道的“潜规则”

学习编程的加速度

码农在工作中必备的能力

码农和英语

一声叹息

 

老司机经验

假如时光倒流,我会这么学Java

假如我是计算机系老师

学会编程,而不是学会Java

从增删改查中突围

抽象:程序员必备的能力

懒就一个字

编程的自学方法

小王买房记

从一道面试题谈谈一线码农应该具备的基本素质

想写框架的看过来

苹果手机变砖头以后

如何快速的学习一门技术

唯一不变的是变化:谈谈微信应用号

什么是企业应用?

为什么说远离企业应用开发?

勿以浮沙筑高台

为什么敏捷开发难于成功?

localhost vs 127.0.0.1

GitHub/Stackoverflow 找工作时有什么用?

动词 or 名词 :这是一个问题

如何选择入门语言

有时候,沉默是金

零Bug代码怎么炼成的?

浮点数为什么不精确?

文章错误大全

Open Source—不要为了开源而开源

一不留神,代码就腐化了

先做个“键盘侠”,再来写程序

不加断点调试的程序员是好程序员:思考, 不看代码的思考, 是最好的调试方式。

码农必备技能:烂代码的处理之道(上)

码农必备技能:烂代码的处理之道(下)

学习数据结构有用吗?

从现在开始,丰富你的简历

那些永不过时的书,你看过几本?

学好编程必备的一个品质你知道吗?

 

你最爱的Java

搞懂了这几点,你就学会了Web编程

Spring本质系列(1) -- 依赖注入

Spring本质系列(2) -- AOP

三层架构和MVC那点事儿

Java帝国之拨云见日识回调

小张的Duck Typing

JDBC的诞生

JDBC后传

一个不安分的JDBC驱动

Java帝国之 Java Bean(上)

Java帝国之 Java Bean(下)

Java帝国之 函数式编程(上)

Java帝国之 函数式编程 (下)

关于Java初学者需要知道的10件事

Junit你不知道的那些事儿

Java EE的历史

Java EE读书指南

给小白的Java EE指南(1)

给小白的Java EE指南(2)

给小白的Java EE生存指南(3):XML

给小白的Java EE生存指南(4):一只叫TOM的猫

给小白的Java EE指南(5):AJAX

给小白的Java EE生存指南(6):Java反射

 

什么是框架?

学习Java虚拟机没用? 听听当事人是怎么说的!

聊聊Java 平台上的非Java语言

Java 帝国之消息队列

Java帝国之JMS的诞生

Java帝国之单例设计模式

对Java Inputstream的一次采访

ASM: 一个低调成功者的自述

序列化: 一个老家伙的咸鱼翻身

Java IO 的自述

JDK先生最近有点烦

什么是框架(续)?

说“空话”,做实事: 谈谈多态

Kotlin初体验

 

 

闲聊

饿了么初体验

来自大脑的控诉

一个高中生是怎么玩自媒体的?

尝试“分答”

到底应不应该上培训班?

自学编程中遇到问题怎么办?

据说99%的初级程序员看完后都不迷茫了

一行代码引发的“血案”

对一个死锁问题的思考

通过外包进入名企

请开往十年前的今天

为什么自学中最好有个师傅指导一下?

这个网站值得你花时间投入

 

编程感悟

看看“悲催”的码农得学多少东西?

学习编程的四兄弟

那些年,我后悔没做好的事情

我为什么对后端编程情有独钟?

当我们在学习编程语言时,我们在学习什么?

编程需要多少数学知识?

想成为编程高手,一定要学汇编吗?

你必须要理解的计算机核心概念

 

职场

我所尊敬的三位女程序员

凡事必先骑上虎背,给性格内向的程序员聊几句

我们向印度人学习什么?

你去下家面试,怎么评价你在这家公司做的工作?

 

开发流程

你的需求是怎么描述的?

白话敏捷软件开发


http://chatgpt.dhexx.cn/article/IlpEtRnK.shtml

相关文章

读书笔记(一)《码农翻身》

好久都没有写技术博客了,大概有一年左右没有开始写了,原因是自己弄了一个日志博文,当然这不是重点,重点是心态发生了改变,从心里上感觉技术兴趣不大了,后来又发现,并不是对技术失去了兴趣&#…

写给初学者:编程的本质

俗话说,开卷有益, 前几天又翻了下《计算机程序的构造和解释》,看到一个采用牛顿法求平方根的例子,产生了点新的感想,和大家分享下。 平方根的数学定义是这样的,对于一个数x , 如果有另外一个数r, r大于等于…

码农翻身全年文章精华

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

如何还原保存的训练模型

训练模型的还原 之前把训练模型存盘,实际上保存的是模型里所有变量当前运行的值。这相当于是训练模型的快照,把保存的时间点的所有变量都变成存盘文件保存起来。如果要还原这个模型,我们需要从存盘的模型中把所有变量的值读取出来&#xff0…

VisionPro 9.5中的工具调用和工具组(ToolBlock)调用

VisionPro是Cognex的机器视觉算法软件,通常的做法是使用VS做二次开发。 这里主要分享VisionPro中通过ToolBlock实现一个视觉检测,以及通过调用单个Tool实现一个视觉检测。 最终实现一个硬币数量检测以及坐标位置输出的应用: 使用ToolBlock的…

未能找到任何适合于指定的区域性或非特定区域性的资源

未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“WindowsFormsDemo.UnifiedConfigListControl.resources”正确嵌入或链接到程序集“设备配置助手”,或者确保所有需要的附属程序集都可加载并已进行了完全签名 之前写过一篇这个问题&…

超强Video深度学习开源工具集,来了!

01 导读 广大人工智能算法工程师,有没有感觉到近几年AI程序员数量激增,公司新来的程序员也可以轻松实现图像分类、目标检测等基本深度学习任务,资深算法工程师岗位如何自保?广大内容平台的后台开发者,视频理解&a…

opencv上设置摄像头曝光参数的经验

实际应用中我们需要调整摄像头的参数比如曝光,由于opencv的后端是一般编译是支撑多种插件,详细信息请参考OpenCV: Video I/O with OpenCV Overview,这里引用里面的图: 对于VideoCaputure,后端有ffmpge,V4L&…

VS 配置 openCV 、Python 、Pytorch

VS 配置 openCV 和 Python 1、VS配置opencv1.1 系统环境PATH增加1.2 复制到Sysmtem32下1.3 配置项目1.3.1 包含目录添加1.3.2 库目录添加1.3.3 附加属性依赖项 2、VS配置Python2.1 复制include和libs文件夹复制到vs项目路径下面2.2将你需要调用的python脚本也存放在该目录下面2…

做机器视觉哪个软件好?

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 机器人视觉有接触,但是不多,这里我推荐一下一个详细介绍的视觉软件。 在构建机器视觉系统时,开发人员可以选择众多知名公司的商用软件…

康耐视Visionpro脚本编写教程一

theme: github ​本文已参与「新人创作礼」活动,一起开启掘金创作之路。 康耐视visionpro脚本编写 visionpro目前来说在工业中的应用时非常的广泛的,而且作为苹果手机厂指定的视觉厂家来说,他的实力是毋庸置疑的。 康耐视VisionPro的优势&…

visionpro联合c#二次开发二

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 本次康耐视联合C#文档是最后一篇visionpro与C#联合的文章,后续我们将开始c#与halcon的编写或者vidi的文章。 首先我们定义所需要的变量 //定义作业CogToolBlock job;//定义作业VPP的路径string p…

Visionpro联合c#二次开发

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 本文已参与「新人创作礼」活动,一起开启掘金创作之路。 本次文章将会在最近半个月一直出关于康耐视的软件的应用的介绍,前期先是vp, 后续如果大家有兴趣,也会…

Segmentation-Based Deep-Learning Approach for Surface-Defect Detection-论文阅读笔记

Segmentation-Based Deep-Learning Approach for Surface-Defect Detection 基于分割的表面缺陷深度学习检测方法 //2022.7.20下午12:49开始阅读笔记 论文速览 文中提出了一个基于分割的两阶段的表面缺陷检测方法。第一阶段包括在缺陷的像素级标签上训练的分割网络&…

论文阅读:Segmentation-Based Deep-Learning Approach for Surface-Defect Detection

PDF\CODE 基于深度学习分割的表面缺陷检测 Domen Tabernik(domen.tabernik@fri.uni-lj.si); Samo Šela; Jure Skvar; Danijel Skoaj(danijel.skocaj@fri.uni-lj.si) part of Springer Nature 2019 摘要:基于机器学习的表面缺陷自动检测已经成为一个有趣且有发展…

Segmentation-based deep-learning approach for surface-defectdetection(基于分割的表面缺陷深度学习检测方法)

论文地址:https://arxiv.org/abs/1903.08536v3 摘要 基于机器学习的表面异常自动检测已经成为一个有趣且有前途的研究领域,对视觉检测的应用领域有着非常直接的影响。深度学习方法已经成为完成这项任务最合适的方法。它们允许检查系统学习通过简单地显示…

康耐视Designer,VisionPro和ViDi匹配版本兼容-关于外观缺陷检测中肯的建议与评价

海康visionmaster-颜色区分任意选 ​康耐视VisionPro传统检测对缺陷类检测很差,差到不能用。单靠康耐视VisionPro深度学习VIDI,据视觉人粉丝很多大厂反馈,现场项目落地的可能性降低不低于20%。 缺陷检测建议:多软件融合使用&#…

veni vidi vici密钥我的生日ACIGS解密_25人在同一天生日!男女比例又是多少?阳光新生大数据来了!...

2020年 阳光学院共迎来了3884名 活力四射、意气风发的 本科生小萌新 阳光招办带你 一起解密 新生大数据~ 准备好了吗? GO! 2020级普本新生2489人, 专升本新生1395人, 他们分别来自五湖四海,快来找找老乡吧~ 世界那么大,还是遇见你~ 相聚是一种妙不可言的缘分~ 2020级阳光…

vidi深度学习图像处理软件2.1

有需要这个软件的,请加我的QQ7299789 VIDI 提供了第一款基于工业图像分析的深度学习软件。VIDI Suite基于最先进的机器学习算法,是一款优化可靠的可现场测试的软件解决方案。它可以完成检测与分类的编程中不可能完成的挑战。这为不少具有挑…

Insight ViDi系列相机 FTP存图

一、测试说明 标题发现问题:使用In-Sight Vision Suite这个软件设置FTP存图,不能像In-Sight Explorer一样,设置各本地路径就可以直接存图。 相机软件:In-Sight Vision Suite(22.3.0) 电脑本地IP&#xff1…