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

article/2025/9/21 15:01:35

好久都没有写技术博客了,大概有一年左右没有开始写了,原因是自己弄了一个日志博文,当然这不是重点,重点是心态发生了改变,从心里上感觉技术兴趣不大了,后来又发现,并不是对技术失去了兴趣,而是被2018年的各种变故打击掉了自信心,从M家离开以后那种自信就消失了,机缘巧合之下又来到了T家,心态上这才开始慢慢好转起来了。

今天来写一写《码农翻身》这本书的读书笔记,感觉很不错,适合技术上的深究和归纳

计算机的世界

线程、线程池、TCP/IP:三次握手、
CPU运行速度比内存快百倍、比硬盘快百万倍,工作内容:
1、运行指令
2、不能保存指令,指令都在内存里
3、第一条指令的存放地址是 0xFFFFFFF0

程序:都是由顺序、分支、循环组成的
程序的局部性原理: 时间局部性和空间局部性,近期访问的东西将来很大概率也会访问。

批处理系统: 一次只能运行一个程序
进程: 一个正在运行的程序,由操作系统为硬盘上的程序在内存中创建的任务,当切换进程时,需要保存当前时间记录,运行指令,寄存器的值等现场环境,简称PCB(进程控制块:Processing Control Block)
一个进程分配到的内存是有限的,如果该进程递归调用消耗殆尽了当前内存,则栈溢出。

分时系统: 将一个程序运行时间分成若干个时间片,当前CPU运行完一个时间片后就切换到下一个程序,因为CPU的运行速度十分快,所以给人的错觉就是程序是并行的。

分块装入内存: 程序一开始都在硬盘上,只有进入内存才有机会被CPU执行,但是内存大小会限制进入的程序个数,由于程序的局部性原理 所以可以将程序的数据分成若干小块,分批装入内存,在内存中对应的块称为页框 ,这样内存就能够尽可能多的装载程序了。
虚拟内存: 操作系统可以设置虚拟内存,比真实内存大的多,同样分成若干块,取名: , 这样程序可以装载进虚拟内存中,通过MMU(内存管理单元) 映射到真实的内存中,参与CPU的运行,但是需要维护一个页表 来映射虚拟页面和物理页面。
如果访问虚拟内存中一个没有映射到物理内存的页面,则产生缺页中断 ,如果中断次数过多,则产生系统颠簸,发生缺页中断一般会进行内存页框置换算法
内存页框置换算法: 当真实内存已满,需要算法将内存中页框里的数据置换到空闲的硬盘上去,一般算法有:先入先出(FIFO)、最近最久未使用置换算法(Least Recently Used, LRU)等

虚拟内存详细介绍:

首先,操作系统会仅仅加载程序当前运行所需的内容到内存中,并使用swap等交换文件暂时对程序用到的数据进行保存,并在合适的时机写入硬盘和闪存等存储设备。某些操作系统上,swap等缓存文件也被称之为虚拟内存。
但这样只能解决单个程序过大的问题,如果程序很多时,内存仍然不够。因此,操作系统为每个进程提供一套独立的虚拟地址空间,从而使得同一块物理内存在不同的进程中可以对应到不同或相同的虚拟地址,变相的增加了程序可以使用的内存。在处理器上,负责管理虚拟地址和物理地址翻译的模块被称之为MMU,即虚拟内存管理单元,因此虚拟内存从处理器角度看,也是虚拟地址。

CPU、三级缓存、内存、硬盘(机械硬盘的盘片、磁道、扇区)、目录和文件由操作系统生成。

文件在硬盘上需要记录信息,涉及磁盘分配算法:连续组织方式、链接组织方式、索引组织方式。

文件系统,由操作系统来实现:主要有:NTFS、FAT、Ext2、Ext3

总线和端口:I/O端口,通过内存映射I/O,CPU这样访问I/O就像访问内存一样。

访问数据的方式:DMA(内存硬盘直接存储方式)轮询、中断,中断其实是一种异步的、事件驱动的处理思想,Node.js和AJAX有广泛应用。

数据库: 并发访问、原子性、基于操作幕等性的事务管理。

基于TCP协议实现通信:Socket, 端口就是Socket, TCP是两个进程之间的通信所以需要Socket

1957年,第一个高级语言的编译器在IBM 704机器上成功运行,
在这里插入图片描述
共享变量,竞争锁,一般称之为自旋锁。但无法解决递归调用自旋锁,容易自己造成死锁,这种情况称之为不可重入 ,改进点:用计数器,记录申请者和重入次数;如果长时间抢不到锁,则进入等待队列。

信号量,由操作系统实现的原子操作。

在计算机内部,是使用补码来表示二进制数的。如果是一个正数,补码就是它本身,如果是一个负数,则需要把除符号位之外的二进制取反加1操作。

普通递归:这个程序在内存中会存在多个栈帧, 会有先进后出

int factorial(int n){if( n == 1){return 1;}else{return n* factorial(n-1);}
}

尾递归:在内存中只会存在一个栈帧,有结果直接返回,所以不怕栈溢出,

int factorial(int n, result){if(n==1){return result;}else{return factorial(n-1, n*result);}
}

程序运行:编译期和运行期

Java帝国

classLoader、文件验证器、类加载模式、class文件魔数:0xCAFEBABE

可达性分析 :GC roots直接引用的对象、
序列化内存中的对象到硬盘中保存下来、关系型数据库: JDBC 、Hibernate、MyBatis

2004年,spring集成jdbcTemplate

JDBC抽象: Connection、Statement、Result

事务4大特性: 原子性、一致性、隔离性、持久性,简称ACID

多个数据库之间的事务管理: 分布式事务协议,两阶段提交协议即阶段一让大家都准备好,阶段二让大家提交事务
JTA协议(Java Transaction API),JTA官方想保证强一致性,但是真实网络很难做到,达到最终一致性也可以,最终一致性,可以用事件表,结合定时程序+消息队列来做,接收方也需要添加状态值,符合幂等性(对一个事务进行操作,可以一直重复操作,该事务不受影响)。
消息队列: 基于JMS(Java Message Service)标准

声明式编程: Java动态代理,实现方式:JDK的动态代理(需要接口)、第三方的CGLib,业务类不能为final

Java 注解: JDK1.4内置了@Override、@Deprecated等,自定义注解:注解的注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) , @Target注解表示该注解的应用目标,可以是类、方法、方法参数等 @Retention表示这个注解要保留到什么时候,可以是在源码里,.class文件里,或者运行时。

Java范型: 编译器查不出问题,在运行时可能跑异常,Java范型在编译时擦除范型,加上自动转型。
Java日志: Log4j , JDK的java.uitl.logging和更快的Logback,然后上层抽象SLF4J, 目前Logback比较火

JPA,Java序列化 ,Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言

CAS乐观锁、synchronized悲观锁,非阻塞算法的Atomic包,版本号解决ABA问题,ConcurrentLinkedQueue

Java单继承、多实现;Python可以多继承抽象类,原生不支持接口但可以使用第三方ABC模块实现接口


http://chatgpt.dhexx.cn/article/CAGmEsxM.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…

康耐视深度学习ViDi界面介绍-选项菜单

海康机器视觉Visionmaster-距离与角度测量 选项菜单 Workspace ----------- 程序操作的菜单项 Tool ------------------- 工具操作的菜单项 Database ------------ 数据库操作的菜单项 View ------------------ 特征标注操作的菜单项 Plugins --------------- 插件信息显示菜单…