程序员词典即编程术语

发布时间 2023-05-25 18:23:06作者: AI大胜

IT

IT(Internet Technology)一般指互联网技术。

互联网技术是指在计算机技术的基础上开发建立的一种信息技术 [1] 。互联网技术通过计算机网络的广域网使不同的设备相互连接,加快信息的传输速度和拓宽信息的获取渠道,促进各种不同的软件应用的开发,改变了人们的生活和学习方式。互联网技术的普遍应用,是进入信息社会的标志。

耦合

表示两个模块(如类)之间有一定程度的交互(联系),各部分之间的松耦合使代码较容易实现复用。

@程序(指定序列或机器码)操作数据是计算机永恒的主题。操作系统是管理程序的程序。(程序分两种:系统程序和用户程序(也叫应用程序),权限不一样,前者管理后者,用vs做的程序是应用程序即用户程序)。

预处理指令(preprocessor directive)指示编译器如何处理源代码,预处理指令有编译器来处理。

序列化

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

通常的序列化过程有:对象到JSON字符串,对象到XML字符串,对象到字节数组。

内存泄漏

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

进制

计算机是一种数字设备,它使用二进制(base-2)来表示和处理数字和其他数据。在二进制系统中,只有两个可能的值:0和1,也就是说,任何数字或字符都可以用0和1这两个数字的组合进行表示。

另外,计算机还支持其他进制数。以下是几种常见的进制数:

  • 八进制(base-8):使用0到7这8个数字表示。在编程中通常以0开头表示八进制数。
  • 十进制(base-10):使用0到9这10个数字表示。
  • 十六进制(base-16):使用0到9这10个数字和a到f这6个字母表示。在编程中通常以"0x"或"0x"开头表示十六进制数。

在计算机科学中,这些进制数常常被用来表示内存地址、颜色、编码等,同时也被广泛应用于编程语言和网络协议中。

QPS

每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。即主要衡量服务器性能。

ORM

全称叫做Object Relationship Mapper,将关系型数据库映射成面向对象编程,简化程序员的操作。市面上的ORM框架有很多,比如微软的EF,又比如Dapper。

为什么引入ORM?

我们平时所使用的大多数编程模型都是面向对象编程,就是把我们研究的问题抽象出来分解成一个个对象,对象有属性,方法等等,我们操作的是对象。比如一个学生就是一个对象,他有身高,体重等属性,还有高数书这个属性,高数书本身又是一个对象,高数书有价格,作者,主人等,该学生还有跑步,学习等方法。我们可以操作学生跑步,可以操作学生学习,可以操作学生再买一本英语书等等。我们还可以对学生的属性高数书这个对象操作,例如把他丢弃。所以,我们操作的是对象,这就是面向对象编程。

而我们平时所使用的数据库是关系型数据库,他是从集合论等数学知识发展过来的,他讲究集合,映射,六大范式等等,跟我们的面向对象思想的封装继承多态不同,这两者之间有着根本性的差异。所以我们就存在一个问题,怎么去调和二者,如果能有一种技术把对象与数据库对应起来,我们编程就会方便许多。于是,ORM应运而生,他就是为了解决对象与数据库之间的差异所产生的一门技术,用他可以把对象与数据库建立一种映射,对于业务层的程序员,他不用管数据库的结构,他只需要专注于他的业务逻辑去操作对象。至于对象怎么去变成元组进入数据库,以及怎么从数据库取数据变成对象,那是ORM自动解决的。

概念 :上下文

想要学会使用.NET中的ORM 需要知道上下文是什么

1.异步情况: 在同一串await 中是一个上下文 (await 会改变线程和同步是不一样的)

2.同步情况: 在同一个线程是同一个上下文

跨域

跨域:指的是在浏览器中,一个网站不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;

例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!

image-20220107092621930

注意一点:比如浏览器用ajax跨域请求某个服务器api,ajax调用其实是成功的,但是浏览器阻止了针对跨域请求返回数据的进一步处理。(实际返回的有数据)。

线程安全

线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。

线程安全问题大多是由全局变量静态变量引起的,若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,(被访问对象同一时刻只接收一个访问处理,别的等着)否则的话就可能影响线程安全。

QPS

每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。即主要衡量服务器性能。

二元运算

二元运算是指由两个元素形成第三个元素的一种规则,例如数的加法乘法;更一般地,由两个集合形成第三个集合的产生方法或构成规则称为二次运算。

二元运算(Binary operation)作用于两个对象的运算。如任意二数相加或相乘而得另一数;任意二集合相交或相并而得另一集合;任意一个多行矩阵与一个多列矩阵相乘而得另一矩阵;任意二函数合成而为另一函数,以上加、乘、交、并,积及合成均属二元运算 。

单点登录

单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

架构上,一般是一个SSO系统,用于登录且存储session返回token。

N个业务系统,当用户进入业务系统X,X发现未登录时,转到SSO系统,进行登录。登录成功携带token回到X,X拿到Token到SSO验证成功后,比如存到X系统的session,后续就可以用该token作为身份标识了。

参考:单点登录(SSO)看这一篇就够了 - 简书 (jianshu.com) https://www.jianshu.com/p/75edcc05acfd

常用的标识符命名风格

风格名称 描述 推荐使用 示例
Pascaal 每个单词的首字母大写 用于类型名称和类中对外可见成员的名称。如:类、方法、命名空间、属性和公共字段; MyClass MyInt
Camel 第一个单词除外的每个单词首字母大写; 用于局部变量的名称和方法声明的形参名称; myGirlsName
下划线加Camel 以下划线开头的Camel大小写 用于私有字段和受保护的字段; _myGirlsName

.NET Framework 概述:

传统的编程环境中,是“源代码”→编译→本地代码;这意味着,比如在Windows上编写和编译的代码,只能在windows上运行;相反 .NET Framework程序则编译成通用中间语言(Common Intermediate Language,CIL)代码。CLR即公共语言运行时是解释CIL代码的一个本地应用程序,因为CLR可以用于多个平台,同样的CIL代码也变成了跨平台的代码。我们可以用.NET Framework支持的任何语言编写一个.NET程序并且把它编译成了CIL代码 。同样CIL代码可以运行在任意已经开发了CLR的操作系统上。除了CIL代码以外,.NET编译器还生成了元数据以描述CIL代码中的类型。这个元数据在术语上叫做清单。把CIL代码和相应的清单一起打包成一个.dll或.exe文件,叫程序集。.NET术语中,把只能在CLR之上运行的代码称为托管代码(Managed code)。

.NET Framework的组成:

公共语言运行时(CLR,是一个程序)和类库(FCL)

CLR的组成

CTS(不同语言共用的类型标准即一套语言的规则定义)和CLS(一种最低的语言标准,遵守此标准的语言间可以实现互操作即互相调用,在代码中参差使用)。

CLR不过是一个.NET程序集的运行环境而已,有点类似于Java虚拟机。概括来说,CLR是一个软件层或代理,它管理了.NET程序集的执行,主要包括:管理应用程序域、加载和运行程序集、安全检查、将CIL代码即时编译为机器代码、异常处理、对象析构和垃圾回收等。

CTS规定了语言中的各种类型、访问性和约束。类型包括值类型和引用类型,它们的互转化过程叫装箱和拆箱,这过程有性能上的损耗;C#只实现了CTS 的一部分功能。也就是说,CTS规范了语言能够实现的所有能力,但是符合CTS规范的具体语言实现不一定要实现CTS规范所定义的全部功能。显然,由于CIL是.NET运行时所能理解的语言,因此它实现了CTS的全部功能。

CLS是CTS的一个子集

13

FCL就是一组 . dll程序集的集合,其中包含了大量定义好的类型,这些类型都公开了一些功能。(常用的string(基元类型)就是FCL里的String类)

c#代码的执行过程:

为了使c#代码能够运行,必须将其转换为目标操作系统能够理解的语言,即本机代码(即CPU指令)。在.NET Framework平台下,该过程含两个方面:

  • 先通过c#编译器(csc.exe)把c#代码(以.cs为后缀的c#源码文件)编译为中间语言代码即IL代码(又叫CIL:通用中间语言)

  • 再通过CLR的即时编译器(Just-In-Time, JIT),把IL代码转换为特定CPU 的本机代码。

注意:IL代码将存储在一个程序集中,程序集中除IL代码外,还将包括元数据和可选的资源文件。元数据用来描述代码中的类型,这种描述针对3个方面:类型定义的描述、类型成员的描述和类型引用成员的描述。可选的资源文件指IL代码中使用的其它数据,如图片文件等。另外,程序集分为两种:扩展名为.exe的可执行文件,以及为扩展名为.dll的可供其他程序调用的文件。

注意:编译器是生产程序的程序。

JIT把IL代码编译成本机代码后,编译好的本机代码将会被放在一个缓冲区中缓存,下次在调用相同的代码时,可直接运行缓冲区中现有的本机代码,从而避免直接验证IL代码以及把他编译成本机代码的过程。使用这种方法,系统只在首次调用时,才会造成一些性能损失,(即发生在JIT过程) //搜一下操作系统的“文件系统”。

程序集的结构

简单来讲:类库(*.cs)文件经c#编译器处理得到程序集(.dll 或 .exe)文件 ;

image-20210602225849302

栈和堆

关系型数据库和非关系型数据库

常见的 SQL Server,MySQL,Oracle 等,这些都是关系型数据库,数据存放形式是二维表格。

NoSQL 的意思是 “ Not only SQL” 或 非关系型数据库。

两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的 join 操作。对NoSQL最普遍的解释是“非关联型的”,强调Key-Value Stores和文档数据库的优点。

非关系型数据库有着强大的扩展能力,不需要事先定义好数据库中的字段,数据插入速度远超关系型数据库

image-20211219102305256

非关系型数据库的佼佼者:文档型数据库 MongoDB 与键值数据库 Redis

Unity 3D

是什么?

是一款软件,提供一个开发平台,主要用于(3D/2D)游戏或动画的开发,主要编程相关语言是c#。

有免费版和付费版。


上位机软件开发

上位机是什么?

上位机的硬件一般是工业电脑或者叫工控机,上位机上运行的操作系统一般可以是Windows、WinCE、linux等,根据不同的性能要求会选择不同的操作系统,上位机上运行的软件一般都是经过定制开发的专门软件,有的大型制造业或大型企业往往会有自己的研发团队,也有一些会选择将上位机软件外包出去。

上位机软件,可以是 .net 平台开发的 winform、wpf、web应用。

参考上位机/SCADA/工业软件定制开发 - 知乎 (zhihu.com)

相关招聘要求举例

  • 熟悉上下位机通讯协议编程,熟悉上位机与PLC或其他硬件设备的通信,例如Modbus TCP、TCP/IP、Modbus RTU等;
  • 四级及以上英语能力,具备良好的英语读写能力;

image-20230327101613452

更新于:2023.5.25