程序员词典即编程术语
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页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!
注意一点:比如浏览器用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作为身份标识了。
注意:单点登录,通常是一个业务系统的页面中,设置了其它系统的入口,这样进入其它系统时就能携带原系统中获取到的Token了。否则,其它系统无法识别具体用户是谁的,除非sso那端用比如IP去识别是否为同一台机器。
》
总之:
用户请求不同系统,必须携带从SSO拿到的Token,比如通过登录界面。
SSO应用群中的各系统,认证该Token都走SSO,且本身不颁发Token。顶多将通过Token认证的用户,记入自己Session,方便下次快速验证,不用每次都走SSO验证用户身份。
认证不通过,统一转到SSO登录界面,退出登录走SSO注销接口。
常用的标识符命名风格
风格名称 | 描述 | 推荐使用 | 示例 |
---|---|---|---|
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的一个子集
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)文件 ;
栈和堆
?
关系型数据库和非关系型数据库
常见的 SQL Server,MySQL,Oracle 等,这些都是关系型数据库,数据存放形式是二维表格。
NoSQL 的意思是 “ Not only SQL” 或 非关系型数据库。
两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的 join
操作。对NoSQL最普遍的解释是“非关联型的”,强调Key-Value Stores和文档数据库的优点。
非关系型数据库有着强大的扩展能力,不需要事先定义好数据库中的字段,数据插入速度远超关系型数据库。
非关系型数据库的佼佼者:文档型数据库 MongoDB 与键值数据库 Redis。
堡垒机
以下信息来自ChatGPT。
什么是堡垒机?
堡垒机(Bastion Host),又称安全运维管理系统,是一种在网络安全和运维管理中广泛使用的工具。堡垒机的核心功能是对运维操作进行统一管理、权限控制、操作审计,保护企业内网免受外部威胁,同时确保内网资源的安全访问。
堡垒机作为企业网络的第一道防线,通常部署在外网与内网之间,充当运维人员和目标服务器之间的中介,提供安全审计、细粒度权限控制等功能。
堡垒机的核心功能
- 访问控制:
- 通过单点登录、双因子认证等方式验证用户身份。
- 限制用户只能访问授权的资源。
- 权限管理:
- 基于角色的访问控制(RBAC),按照用户角色分配最小权限。
- 操作审计:
- 记录运维人员的操作,包括命令执行、文件上传下载等。
- 支持录像回放,方便事后追踪和审查。
- 协议支持:
- 支持多种协议,如 SSH、RDP、Telnet、VNC 等。
- 自动化运维:
- 批量任务执行、脚本分发、定时任务管理等。
- 安全防护:
- 防止敏感数据泄露,防范恶意操作。
- 通过加密和隔离机制保护内部资源。
常见的堡垒机产品
1. 开源堡垒机
JumpServer
简介:完全开源、功能强大的堡垒机,支持多协议(SSH、RDP)。
特点
:
- 支持 Web 访问和多种认证方式。
- 提供详细的操作审计功能。
适用场景:中小型企业或预算有限的团队。
GoAccess + 自定义脚本
- 简介:通过结合 GoAccess(日志分析工具)和 SSH 网关,搭建简单的堡垒机。
- 特点:轻量级、定制性高,但功能较少。
2. 商业堡垒机
堡塔运维面板(Bt-Panel)
简介:国内知名的运维管理工具,带有简易的堡垒机功能。
特点
:
- 提供 Web 界面的服务器管理。
- 集成了访问控制和基础审计功能。
适用场景:中小型团队快速部署。
运维审计系统(如 Fortinet、CyberArk)
Fortinet FortiGate
:
- 提供全面的堡垒机功能,并整合防火墙功能。
CyberArk Privileged Access Security
:
- 企业级解决方案,重点在于保护高权限账号和敏感操作。
- 适用于需要强合规性的金融机构和大型企业。
飞书运维安全中心
- 集成于飞书生态内,支持企业级用户对内部 IT 系统的访问控制。
3. 云端堡垒机服务
阿里云堡垒机
特点
:
- 无需部署,自带高可用性。
- 提供资源审计、自动化运维。
适用场景:使用阿里云的企业。
腾讯云堡垒机
特点
:
- 集成腾讯云资源访问管理。
- 提供完整的权限控制和审计功能。
华为云堡垒机
特点
:
- 针对华为云用户设计,支持多种资源管理。
- 性能和安全性俱佳。
堡垒机的应用场景
- 企业内网安全:
- 保护服务器、数据库等资源的访问安全。
- 防止非授权人员访问内部系统。
- 运维管理:
- 管理多台服务器的统一访问和操作。
- 审计运维操作,满足合规性要求(如 GDPR、ISO27001)。
- 高权限账号保护:
- 防止高权限账号滥用或泄露。
- 对敏感操作(如数据库修改)进行多重审核。
如何选择堡垒机?
- 规模和需求:
- 小型企业或初创团队:推荐 JumpServer、堡塔运维面板。
- 中大型企业:可选择商业产品(如 Fortinet 或 CyberArk)。
- 云上资源多:优先使用云厂商提供的堡垒机服务。
- 预算:
- 开源堡垒机适合预算有限的场景。
- 商业解决方案适合需要更多支持和功能的企业。
- 功能需求:
- 如果需要高度定制化,可以基于开源方案(如 JumpServer)进行开发。
- 对合规性要求严格的企业,选择专业的商业产品。
如果需要进一步帮助部署或使用堡垒机,可以告诉我具体场景或问题!
Unity 3D
是什么?
是一款软件,提供一个开发平台,主要用于(3D/2D)游戏或动画的开发,主要编程相关语言是c#。
有免费版和付费版。
上位机软件开发
上位机是什么?
上位机的硬件一般是工业电脑或者叫工控机,上位机上运行的操作系统一般可以是Windows、WinCE、linux等,根据不同的性能要求会选择不同的操作系统,上位机上运行的软件一般都是经过定制开发的专门软件,有的大型制造业或大型企业往往会有自己的研发团队,也有一些会选择将上位机软件外包出去。
上位机软件,可以是 .net 平台开发的 winform、wpf、web应用。
参考:上位机/SCADA/工业软件定制开发 - 知乎 (zhihu.com)
相关招聘要求举例:
- 熟悉上下位机通讯协议编程,熟悉上位机与PLC或其他硬件设备的通信,例如Modbus TCP、TCP/IP、Modbus RTU等;
- 四级及以上英语能力,具备良好的英语读写能力;
更新于:2024.12.03