计算机易混淆概念(待续)

计算机网络学习中易混淆知识点梳理 学习计算机网络时对这几个概念有些不清除,在此梳理一下 分组应用于网络核心的分组交换中,分段,分片是分组的表现形式。由于数据链路层最大传输单元MTU和传输层最大报文段长度MSS的存在等原因,较大数据往往不能作为一个整体传输,如果传输层采用TCP协议,会对较大的数据进行分段,分段长度小于MSS(典型MSS为1460B),加上之后在网络层就不用进行分片 ... 阅读详情

计算机网络

1、TCP与UDP区别

(1)TCP是面向连接的,UDP是无连接的
(2)TCP提供可靠服务,UDP提供的是不可靠服务。TCP通过建立连接,超时重传,ACK,拥塞控制,校验和等机制保证数据一定到达目的地;UDP是无连接的不需要建立连接也不需要维护连接只尽可能的交付数据,UDP的数据有序、重组、重复等都有应用层提供,UDP仅实现了最基本的传输层协议。
(3)TCP数据报首部20个字节,UDP首部8个字节。
(4)TCP把数据看成无结构的字节流,UDP把数据看成数据报。
(5)TCP有拥塞控制,UDP是无连接的其吞吐量仅受应用程序生成数据的速度、带宽和源端目的端主机性能限制。
(6)TCP是端到端的,UDP可以一对多,多对一或多对多。
(7)TCP是全双工的,UDP是单工的。

使用TCP还是UDP:
TCP提供的是可靠传输,当对可靠性要求较高时使用TCP,比如我们使用的QQ就是基于TCP协议的。
UDP的特点是快,延迟小,当对实时性要求高时,比如IP电话,对速度和实时性要求高的广播和多播也是用UDP,DHCP,RIP等是基于广播协议的。

2、IP地址

(1)IP地址划分
IP地址划分
(2)五类IP地址范围
IP地址范围
(3)私有IP地址
10.0.0.0——10.255.255.255
172.16.0.0——172.31.255.255
192.168.0.0——192.168.255.255

C++语言

1、引用与指针

(1)指针是一个实体,而引用仅是个别名;
(2)引用使用时无需解引用(*),指针需要解引用;
(3)引用只能在定义时被初始化一次,之后不可变;指针可变;
(4) 引用没有 const,指针有 const;
(5) 引用不能为空,指针可以为空;
(6)”sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
(7)指针和引用的自增(++)运算意义不一样;
(8)从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

2、数组与指针

(1)数组作为函数参数传递的时候,会退化为指针
(2)数组名是一个常量,不能进行自增或自减操作
(3)使用sizeof()计算数组时得到的是数组有效的长度,而sizeof()计算指针时,得到的仅仅是指针的大小在32位系统中为4字节。
(4)对于char a[] = “abcl”; char* p = “abcd”,我们可以通过a[1]=’d’修改其值,但是不可以p[1]=’d’修改其值,因为p所指向的”abcd”是一个常量值。
(5)指针时间接访问数据,数组是直接访问数据。

3、C++中四种类型转换

(1)static_cast
语法:static_cast(expression)
作用:static_cast是最常用的一种类型转换操作,其是把expression转换为type-id类型,但是没有运行时类型安全检查。
用法:
a. 基类与派生类之间指针与引用的转换,进行上行转换时是安全的,进行下行转换时是不安全的因为没有运行时类型检查
b. 基本类型转换,比如int转换为float型,由开发者保证转换的安全性
c. void*转换为目标类型的空指针
d. 把任何类型的表达式转换为void型
注:static_cast不能去掉expression的const、volitate、_unaligned属性。
(2)dynamic_cast
语法:dynamic_cast(expression)
作用:当type-id必须是类类型指针或void*,主要用于类层次间的转换,也可以实现交叉转换。上行转换和static_cast效果一样,下行转换比static_cast更安全,同时基类中必须有虚函数,因为运行时类型检查需要运行时类型信息,而这个信息是喝虚表一起存储的。
(3)const_cast
语法:const_cast(expression)
作用:修改类型的const 或 volatile属性。
用法:
a. 常量指针被转换为非常量指针
b. 常量引用被转换为非常量引用
c. 常量对象被转换为非常量对象
(4) reinterprest_cast
语法:reinterpret_cast(expression)
作用:type-id必须是指针或引用,他仅仅是对bit位进行了重新解释比如把expression的bit为表示解释为type-id类型的表示。
比如, char tch = ‘0’;
char* ch = &tch;
int ip = reinterpret_cast(ch);
int n = 9;
double dn = reinterpret_cast < double& > (n);
ch中存放的是tch的首地址,把这个首地址解释为一个int型,n是一个整数9,把他按照double的规则解释为dn,此时dn是无效的。

4、static变量和函数

(1)静态全局变量
该变量在全局数据区分配内存;未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突。而全局变量的作用域是整个源文件。
(2)静态局部变量
该变量在全局数据区分配内存;静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
(3)静态函数
静态函数不能被其它文件所用;其它文件中可以定义相同名字的函数,不会发生冲突;
(4)静态成员数据
对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程
序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据
成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义。在Example 5中,语句int Myclass::Sum=0;是定义静态数据成员;静态数据成员和普通数据成员一样遵从public,protected,private访问规则;因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;静态数据成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式为:
<数据类型><类名>::<静态数据成员名>=<值>
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员 ;静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了;
同全局变量相比,使用静态数据成员有两个优势:静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;
(5)静态成员函数
与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。静态成员函数与静态数据成员
一样,都是类的内部实现,属于类定义的一部分。普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身,因为普通成员函数
总是具体的属于某个类的具体对象的。通常情况下,this是缺省的。如函数fn()实际上是this->fn()。但是与普通函数相比,静态成员函数由于
不是与任何的对象相联系,因此它不具有this指针。从这个意义上讲,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数。关于静态成员函数,可以总结为以下几点:出现在类体外的函数定义不能指定关键字static;静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
非静态成员函数可以任意地访问静态成员函数和静态数据成员;静态成员函数不能访问非静态成员函数和非静态数据成员;由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;
调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式:
<类名>::<静态成员函数名>(<参数表>)
<对象名>::<静态成员函数名>(<参数表>)
调用类的静态成员函数。

总结:
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

5、C++与Java区别

(1)JAVA诞生于C++基础之上,是一门纯面向对象的语言;而C++除了有面向对象的特点,依然具有C语言的面向过程的特性;
(2)内存管理方面,JAVA具有自带的GC垃圾回收器,程序员无需再在垃圾回收方面专门编写代码,只需注意利用GC的特性进行内存的自动回收;而C++需要程序员自身利用free()等函数进行垃圾回收,具有更大的工作量;
C++没有垃圾回收是害怕严重的空间和时间开销,也害怕实现和移植垃圾回收系统而带来的复杂性,而且垃圾回收将使C++不适合做许多底层工作。
(3)语言特点上,C++保留了C语言重要的指针变量,而JAVA则取消了这一概念,用引用来直接表示对象;
(4)语言分类上,C++属于编译型语言,通过编译链接等来运行代码,在不同的编译环境中需进行不同的处理;而JAVA属于解释型语言,JAVA代码通过转变成字节码在自己的JVM虚拟机上运行,跳出了开发环境的限制;
(5)语言效率上,C++往往具有更高的效率,JAVA因为需要在自身虚拟机上运行,效率稍弱,但具有更好的可移植性;
(6)其他细节差异如JAVA采用unicode编码,而C++的变量属性往往跟编译环境有关;JAVA取消了goto语句而C++保留等。

当同一个应用程序需要在不同平台上运行时宜采用JAVA,因其良好的可移植性,JAVA一般作为应用层; 当要求程序具有高效率时宜采用C++,如系统底层环境的开发。

6、C++面向对象的体现

⑴对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
⑵抽象性。
抽象性是指将具有一致的数据结构和行为的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
⑶继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
⑷多态性
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。

7、堆与栈的区别

(1)分配与释放
stack:由系统自动分配,自动释放。
heap:由程序员自己申请,并指明大小,使用完自己负责释放。
(2)申请时系统响应方式
stack:只要stack的剩余空间大于所申请的空间,系统为程序提供内存,否则报stack overflow。
heap:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的 首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。
(3)申请大小限制
stack:在Windows下栈的栈顶和栈的最大容量都由系统预先设定好,栈是向低地址扩展的,栈空间一般较小(2M)。
heap:堆是向高地址扩展的,堆的大小受限于计算机系统中有效的虚拟内存。
(4)申请效率
stack:栈是由系统自动分配,速度快,但程序员无法控制。
heap:堆由程序员控制分配,速度较慢,而且容易产生碎片,不过用起来方便,灵魂。(在Windows下最好使用VirtualAlloc分配内存,它既不是在堆上也不是在栈上而是在进程的地址空间中保留一块内存,速度快)
(5)存储内容
stack: 在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的普通局部变量。
heap:一般堆的头部存储堆的大小,堆中具体内容由程序员负责。

8、struct与class的区别

(1)struct成员的默认访问权限是public,class默认访问权限是private
(2)在定义模板参数时可以使用class但不能使用struct
(3)struct继承的默认方式是public,class是private
(4)class和struct如果定义了构造函数都不能使用{}初始化,
class若没有定义构造函数,且成员都是public则可以使用{}初始化;struct没有定义构造函数,可以使用{}初始化。比如:
struct node obj = {1,2,3};

操作系统

1、进程与线程通信机制

进程通信机制:文件映射,共享内存,Pipe ,Named Pipe,Socket,Signal,DLL,Semaphore(既可以用于进程间也可用于同一进程不同线程),邮件槽,消息(事件),消息队列

进程/线程同步机制:临界区,互斥,信号量(Semaphore),事件

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
套接字( socket ) : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

2、进程与线程联系与区别

进程:具有一定独立功能的程序关于某个数据集合的一次运行,进程是系统进行资源分配的基本单位。
线程:是进程的一个实体,是CPU进行调度的基本单位,线程基本不拥有系统资源,只拥有一点运行中必不可少的资源(程序计数器,寄存器和栈)。
进程与线程联系:同一个进程中的线程共享进程中所有的资源,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。
进程与应用程序区别:应用程序作为静态文件存储在计算机系统的硬盘等存储空间中,而进程是处于动态条件下由操作系统维护的系统资源管理的实体。

线程共享的内容包括:
1.进程代码段
2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)
3.进程打开的文件描述符、
4.信号的处理器、
5.进程的当前目录和
6.进程用户ID与进程组ID

线程独有的内容包括:
1.线程ID
2.寄存器组的值
3.线程的堆栈
4.错误返回码
5.线程的信号屏蔽码

3、同步机制准则

同步机制应该遵循的基本准则
空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,允许一个请求进入临界区的进程立即进入临界区,以有效利用临界资源
忙则等待:当已有进程处于临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态

4、静态链接库与动态链接库

静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。
lib有静态lib和动态lib之分:
静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。
动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持。
(1)静态链接库
优点:
a. 代码装载速度快,执行速度比动态链接库快。
b. 只要保证开发者计算机中有正确的.lib文件,在以二进制形式发布程序时不用考虑用户计算中是否有.lib文件存在及版本问题。
缺点:
a. 使用静态链接库生成的.exe文件体积较大,代码冗余多。
b. 静态链接库中不能再包含其他的动态链接库或静态链接库
(2)动态链接库
优点:
a. 更加节省内存
b. DLL文件与.exe文件独立,只要保证输出接口不变,更换DLL文件不会对.exe文件的执行造成影响,极大的提高了可维护性和可扩展性。
c. 适合大规模软件开发,使开发过程独立,耦合度低。
d. 动态链接库中还可以包含其它的动态链接库或静态链接库。
缺点:
a. 使用动态链接库的应用程序本身不是完备的,它依赖于DLL。如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件就会都挂掉。

数据库

1、数据库视图不可以更新的

数据库视图包含下列结构是不可以更新的
a. 集合运算符 union,union all, intersect,minus
b. distinct关键字
c. group by,order by,connect by,或者start with
d. 子查询
e. 分组函数
f. 需要更新的列不是视图定义的
g. 具有连接查询(可以更新键值保存表的数据)
h. 违反基表的约束条件;连接视图是指基于多表连接查询创建的视图(一般不容易修改,但通用instead of触发器可以实现修改的功能)

25上软考中级【软件设计师】易混淆知识点 3、两者的根本区别:编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高;注:遍历过程的时间复杂度只与存储结构有关系,无论是深度优先还是广度优先遍历,邻接矩阵存储时它的时间复杂度为O(),邻接表存储时它的时间复杂度为O(n+e)其中n为邻接顶点规模数,e为边的规模数。评审:对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计的可行性,关键的处理以及外部接口定义的正确性、有效性、各部分之间的一致性等都一一进行评审。邻接的未访问的顶点。 阅读详情

相关推荐

【网络安全之易混淆概念---AES详解】

网络安全之易混淆概念---AES详解

qq_38553514的博客 5497

使用动态链接库的优点

<br /><br />使用动态链接库的优点<br /> <br />现代应用程序广泛地使用动态链接库,其好处是:<br /> <br />①同时运行的多个应用程序可以同时使用同一个动态链接库,它们在内存中只是共享DLL文件的一个拷贝,这样做不但节省了内存,而且减少了文件的动态交换;<br /> <br />②只要编写的应用程序函数、变量和返回值的类型和数量不发生变化,动态链接库中的函数可以不用重新编译链接而直接使用,这一点明显优于静态链接;<br /> <br />③只要遵循一定的规则,不同语言编写的应用

woxinruozai的专栏 1971

C++静态链接库与动态链接库的优缺点

C++中的静态链接库(Static Link Libraries,通常是.lib或.a文件)和动态链接库(Dynamic Link Libraries,通常是.dll文件在Windows上,或.so文件在Unix/Linux系统上)都是用来在程序中重用代码的手段,但它们在链接和运行时行为上有显著不同。在选择使用静态库还是动态库时,需要根据具体的应用场景、部署需求和性能要求来决定。通常情况下,如果希望简化部署并且程序体积不是主要关注点,静态链接可能是一个好选择;

程序猿老樊的博客 1501

动态链接库与静态链接库的优缺点

转载参考博文 1、静态链接库的优点: (1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免dll地狱等问题。 2 、动态链接库的优点 (动态库最大的好处是什么,不仅仅是代码共享,更重要的是“模块化”。)(1) 更加节省内存并减少页面交换

lowB程序员 4642

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1533

Jetson平台XDMA PCIe驱动安装与测试全指南

本文提供了一份在NVIDIA Jetson平台上安装与测试Xilinx FPGA XDMA PCIe驱动的完整指南。详细阐述了驱动作为高速DMA引擎的核心作用,并逐步讲解了从环境准备、驱动编译、内核模块加载到实际数据传输测试的全过程。内容涵盖常见问题排查与性能优化建议,帮助开发者实现Jetson与FPGA间的高速数据通信,适用于自动驾驶、工业视觉等需要异构计算的应用场景。

weixin_29196315的博客 528

动静态链接库的优点

静态链接库的优点 (1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 动态链接库的优点 (1) 更加节省内存并减少页面交换; (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不...

weixin_45380951的博客 365

2D激光slam四种算法建图效果对比

2d激光slam四种算法建图比较

m0_73791170的博客 8449

LeetCode 1088. 易混淆数 II(回溯/BFS)

文章目录1. 题目2. 解题2.1 回溯2.2 BFS 1. 题目 本题我们会将数字旋转 180° 来生成一个新的数字。 比如 0、1、6、8、9 旋转 180° 以后,我们得到的新数字分别为 0、1、9、8、6。 2、3、4、5、7 旋转 180° 后,是 无法 得到任何数字的。 易混淆数(Confusing Number)指的是一个数字在整体旋转 180° 以后,能够得到一个和原来 不同 的数,且新数字的每一位都应该是有效的。(请注意,旋转后得到的新数字可能大于原数字) 给出正整数 N,请你返回 1 到

Michael是个半路程序员 2907

本地部署了qwen2.5:0.8b ,对接openclaw 后,电脑卡的要死

OpenClaw 强制 16k 上下文 + 无限历史 + Agent 调度,把 0.8b 压垮。按上面配置:轻量化 + 限历史 + 驻留显存,电脑立刻不卡。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 978

从报错到成功:手把手教你避坑clusterProfiler安装全流程

本文详细解析了clusterProfiler安装过程中的常见报错及解决方案,从CRAN安装误区到Bioconductor拼写错误,再到依赖包安装失败等问题,提供了五步正确安装法。特别适合生物信息分析新手快速掌握R包安装技巧,避免踩坑。

weixin_30859423的博客 381

几个易混淆概念

【编者按】本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人Tomasz Malisiewicz的个人博客文章,阅读本文,你可以更好的理解计算机视觉是怎么一回事,同时对机器学习是如何随着时间缓慢发展的也有个直观的认识。 以下为正文: 本文我们来关注下三个非常相关的概念(深度学习、机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系。

carrots 339

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 703

python计算机二级选择题汇总14(易混淆)

问题描述:python计算机二级选择题汇总(易混淆)问题解答:有些函数比如ls.remove()、sorted( )返回值是新的一个列表还是旧的列表,需要搞清楚。问题描述:4、I/O方式中的程序查询方式是指()。

weixin_43501408的博客 1050

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动

openGauss学习笔记-280 openGauss性能调优-实际调优案例09-修改启动参数解决TPCC大幅度波动280.1 现象描述280.2 优化分析 openGauss学习笔记-280 ope

超哥的博客 309

CRC_16---ModBus 计算方法及代码实现

1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器

1万+

计算机常用易混淆概念

HTML 设置页面中文编码 UTF-8

积少成多 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机网络易混淆知识点串记

文章目录计算机网络易混淆知识点串记各层PDU首部:地址长度 计算机网络易混淆知识点串记 各层PDU首部: PUD 首部长度 (B:字节) 首部单位 数据链路–帧 帧首:14B帧尾部:4B —— IPV4 20~60字节 4B [通过4位二进制表示] IPV6 固定首部40字节[可拓展] 4B TCP 20~60字节 4B UDP 8B 字节 地址长度 长度 表示方式 MAC地址(物理地址) 6B 用16进制表示,用冒号隔开00:1A:2B:3C:4D:5

黎鹤舞828的博客 813

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java 中极易混淆的核心概念深度解析与实战指南​

通过对线程与进程、值传递与引用传递、接口与抽象类这些极易混淆概念的深度剖析,结合丰富多样的代码示例、清晰直观的对比表格以及生动形象的比喻,相信大家已经能够清晰分辨它们之间的区别与联系。​在 Java 编程学习和实践的旅程中,这些基础概念是我们搭建复杂程序大厦的基石。线程与进程关乎程序运行的资源调配和执行效率;值传递与引用传递影响着数据在方法间传递的方式和结果;接口与抽象类则是面向对象编程中设计和组织代码的重要工具。

2401_88952086的博客 1890

代码混淆是什么?代码混淆的方法有哪些?

本文主要给大家盘点代码混淆的一些基础知识,希望能对大家有所帮助!

励志做最业余的专业博主,控件产品可以私我~ 7412

Java易混淆概念详解

目录顺序表和链表this和super方法重写和方法重载 顺序表和链表 概念 顺序表:顺序表底层是一个数组,在计算机内存中以一组地址连续的存储单元存储数据元素的数据结构。 链表:链表是一种由若干个独立节点组成的数据结构。每个节点由数据域和指针域组成。 区别 存储空间的分配方式 1 顺序表的底层是一个数组,因此顺序表无论是在逻辑上还是物理上均为连续的。 2 链表的物理存储单元是非连续、非顺序的,数据间的逻辑顺序由节点之间的指针相互连接实现。 优点 顺序表: 1 顺序表的物理和逻辑顺序均为连

weixin_52477733的博客 551

c++概述--易混淆点记录

博主顺利读研了,为了之后的工作需要现在要把C++在学一遍,就是简单记录一些容易错而且个人感觉很重要的知识点,后面也会涉及到很多算法知识,有代码了会以资源的形式上传,需要的自取即可。

qq_45049500的博客 1101

计算机软件学习中易混淆概念

计算机软件学习中易混淆概念阻塞与非阻塞        阻塞顾名思义可以理解为停滞不前。在软件中阻塞就是当程序运行到某一段可能需要等待的代码时例如在IO的读写操作时,阻塞意味着当前程序当前线程会等待直至这段代码运行结束才继续向下。结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞与阻塞相反而是继续向下执行不等待这段代码返回的结果。        但是在此我有个疑问:那就是当非...

lcn_2017的博客 380

软件测试基础理论、测试用例及设计方法、易混淆概念总结【软件测试】

本文对软件测试的基础理论进行了概要介绍,分享了常见的测试用例设计方法与简易案例,解释了两个易混淆概念,附带了一些相关资料。

qq_64359499的博客 4376

几个易混淆概念(2)

(原标题:人工智能、机器学习和深度学习之间的区别和联系) 有人说,人工智能(AI)是未来,人工智能是科幻,人工智能也是我们日常生活中的一部分。这些评价可以说都是正确的,就看你指的是哪一种人工智能。 今年早些时候,Google DeepMind的AlphaGo打败了韩国的围棋大师李世乭九段。在媒体描述DeepMind胜利的时候,将人工智能(AI)、机器学习(machine learnin

carrots 2315

Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆

代码混淆 (Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。已经存在许多种功能各异的代码混淆器。 将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如

3224
上一篇: 单例模式C++实现
下一篇: TCP协议
知行且执行
博客等级 码龄14年 38粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值