运行库

笔试一(填空简答题)

女生的网名这么多〃 提交于 2020-03-29 09:02:06
1 . .NET 中类和结构的区别? 类: 能声明默认构造函数、析构函数 , 引用类型 ,在 托管堆 上存储,如string, 能被继承 结构: 不能声明默认构造函数、 析构函数 , 值类型 ,在 内存栈 上分配地址,如int32, 不能被继承( 没有abstract 和sealed ), 可以不使用new 初始化 相同之处:基类型都是Object 如何选择用结构还是类: 1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些 2. 结构表示如点、矩形和颜色这样的轻量对象 3.多层次,多对象用类 4.如果数据简单,而且数据量小 用结构 2.C#中值类型和引用类型的区别? 值类型: 内存栈 ,快,内存分配自动释放 引用类型: 内存堆 ,慢, 内存分配 由GC控制 3.堆和栈的区别? 栈: 编译期间 就分配好的内存空间,大小已定,无需管理,自动释放 堆: 运行时 分配的内存空间,大小动态改变, 由GC控制 关系:具体信息请看http://www.2cto.com/kf/201109/103302.html 4 .什么是抽象类,是否可以实现接口,是否可以继承实体类,什么是接口,接口和抽象类有什么区别?接口是否可以继承接口,抽象类是否可以实现接口,抽象类是否可以继承实体类? 抽象类在定义类型方法的时候, 可以给出方法的实现部分,也可以不给出 ,而接口所定义的方法 都不能给出

Linux误删C基本运行库libc.so.6急救方法

早过忘川 提交于 2020-03-11 05:52:18
首先普及一下关于libc.so.6的基本常识: libc.so.6是glibc的软链接 ll /lib64/libc.so.6 lrwxrwxrwx 1 root root 11 Aug 27 2014 /lib64/libc.so.6 -> libc-2.5.so glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所以说绝大部分操作命令都缺少不了它 如何误删了/lib64/libc.so.6,大部分系统命令将无法执行,ssh登录系统也不成功,只会无休止的提示以下错误: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory 这种情况下,大部分命令已经不能执行了,只能执行例如cd,echo等小部分命令,而实用的cp,mv则不可用 经过各种百度,得到解决方法(而此种方法的前提是ssh还没断开,如果ssh已断开则无法重新连接上,得使用另外的方法用光盘重启进入急救模式): 在同版本系统上查看/lib64/libc.so.6得知是属于libc-2.5.so的软链接,因此,libc-2.5.so文件肯定还是存在的,误删的只是软链接而已

.NET指定程序集的位置

时光毁灭记忆、已成空白 提交于 2020-02-22 08:57:06
有两种方法用来指定程序集的位置: 使用 <codeBase> 元素。 使用 <probing> 元素。 还可以使用 .NET Framework 配置工具 (Mscorcfg.msc) 来指定程序集位置或者为公共语言运行库指定要探测程序集的位置。 使用 <codeBase> 元素 只有在计算机配置文件或也重定向程序集版本的发行者策略文件中,才可以使用 <codeBase> 元素。在运行库确定要使用哪一程序集版本时,它应用确定版本的文件中的基本代码设置。如果未指出基本代码,那么运行库就以通常的方法探测程序集。有关详细信息,请参见 运行库如何定位程序集 。 下面的示例说明如何指定程序集的位置。 < configuration > < runtime > < assemblyBinding xmlns ="urn:schemas-microsoft-com:asm.v1" > < dependentAssembly > < assemblyIdentity name ="myAssembly" publicKeyToken ="32ab4ba45e0a69a1" culture ="en-us" /> < codeBase version ="2.0.0.0" href ="http://www.litwareinc.com/myAssembly.dll" /> </

linux指定动态运行库的位置

吃可爱长大的小学妹 提交于 2020-02-22 08:55:29
  动态运行库在windows、linux下均广泛使用。windows下通常为dll文件,linux下为so文件。不过,对于部署程序,这两个系统查找依赖的运行库文件时却不一样。对于windows而言,优先查找当前目录下,然后再到系统库文件C:\windows\system32(记不太清楚,好像是这个位置)下查找。这个特性极大的方便了程序的部署,程序员只需要把相关的dll打包就OK,这也让很多程序可以制作成绿色版。而在linux下,默认只到/lib、/usr/lib和/usr/local/lib查找,找不到程序将无法启动。   对于windows的方式,好处显而易见,就是方便部署。缺点也有,安全性不高。想想有那么多dll是通用的,我随便写个同名的扔到程序当前目录下,不就把程序劫持了么。不过,这个缺点在日常应用中显得不是很重要。大部分人下软件安装时根本不会注意软件安装了什么文件,只要杀毒软件不报就OK。而相对于程序员而言,这种部署也极大的方便了调试。我不太方便去改/usr/lib里的东西。   要想linux下的程序在当前目录下查找动态运行库文件,如果是固定路径,则可以通过修改系统变量的方式,如 LD_LIBRARY_PATH ,LD_PRELOAD。而要实现程序copy到任何地方,都在当前目录下查找,则在编译程序时需要指定rpath。先编译一个动态运行库文件: root@debian

Mysql下载安装(win10)

谁说胖子不能爱 提交于 2020-02-17 14:28:49
Mysql的下载(学习使用) 官网下载地址: https://dev.mysql.com/ (不要在download那里找,在developer zone 下面点击mysql8.0,转到下载界面,下载次数最多的就是学习用的) 下载的是一个压缩包,解压到要安装的位置 安装目录下,跟bin同一目录的位置,手动添加一个配置文件(用记事本或者Notepad++或者其它编辑工具),命名一般为my.ini 内容如下: [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录---注意 是自己解压的路径 basedir= C:\APP\MYSQL\mysql-8.0.19-winx64 # 设置mysql数据库的数据的存放目录 datadir= C:\APP\MYSQL\mysql-8.0.19-winx64 \data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 将大号的字体改换成你的安装目录,这样你的配置文件应该就行了

VC2015 运行库安装错误 0x80240017 解决过程

五迷三道 提交于 2020-02-05 02:13:01
文章目录 0. 写在前面 1. 具体步骤 2. 感谢 3. 资源下载 0. 写在前面 临时接到任务,要在新配的远程虚拟机上安装 MySQL 数据库,版本是传统的 5.7 版。直接运行安装工具,首先提示缺少 .NET framework 4.5.2 ,网上搜索下载后,又提示缺少 Visual C++ 2013 和 2015 运行库。2013 的好办,网上下载后直接安装成功。问题出现在 C++ 2015 上,运行时提示错误 0x80240017 。原以为是个小 case,没想到踩个大坑,特此整理。 言归正传。该报错的主要原因是系统未及时更新,所需补丁又需要安装其他历史补丁(详见 量子物理学 博文),这里直接给出操作步骤。 1. 具体步骤 安装 .NET framework 4.5.2 : NDP452-KB2901907-x86-x64-AllOS-ENU.exe 安装 C++ 2013 库: vc_redist_x64_2013.exe 安装 C++ 2015 库: vc_redist_x64_2015.exe 报错,则 依次 按以下步骤安装: Windows8.1-KB2919442-x64.msu clearcompressionflag.exe Windows8.1-KB2919355-x64.msu Windows8.1-KB2932046-x64.msu Windows8

malloc 堆分配算法探析

别来无恙 提交于 2020-01-30 05:15:17
提到 C 语言不能不说内存管理,而内存管理则必须了解 malloc,今天深度学习了 malloc 的堆分配算法原理,笔记整理如下 什么是堆分配算法? 程序向操作系统申请一块适当大小的堆空间,然后由程序自己管理这块空间,而具体来讲,管理着堆空间分配的是运行库------也就是封装起来的 malloc 函数。运行库相当于向操作系统“批发”了一块较大的堆空间,然后“零售”给程序使用,当全部“售完”或程序有大量的内存需求时,再根据实际情况向操作系统“进货”。当运行库在向程序零售堆空间时,必须管理它批发来的堆空间,不能重复“出售”,导致地址冲突,于是运行库需要一个算法来管理堆空间,这个算法就是堆的分配算法。 常见的 malloc 分配算法三种: 空闲链表、位图、对象池 1. 空闲链表 空闲链表的方法实际就是把堆上各个空闲的块按照链表的方式连接起来,当用户需要一块空间时,遍历整个链表,直到找到合适的大小将他拆分;当用户释放空间则进行合并。 空闲链表的结构: 头 + 空闲块 头结构记录了上一个 [pre] 和下一个 [next] 空闲块的地址 如何利用这个结构分配空间? 首先在空闲链表中查找足够容纳请求大小的一个空闲块,然后将这个块分为两部分,一部分为程序请求的空间,另一部分为剩余下来的空闲空间。 释放空间的时候,只有一个指针,无法确定这个块的大小,如何释放 当用户请求 k 个字节空间的时候

dll找不到问题

淺唱寂寞╮ 提交于 2020-01-24 15:03:55
用vs2010编写的程序经常会发生的一个问题。在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll。这是 个很头疼的问题。对于一些代码量几百行的小程序,我不可能要求其他电脑也一定要配有MSVCR100D.dll这个dll。当然解决方法也有,但是我也不 可能要求所有的电脑都装上.net framwork 2.0。微软又给CSer们出了个难题。 原因: 工程默认没有使用静态联编,没有把必须的DLL库一块编译进去导致的。 解决方法: 在vs2010下,按ALT+F7,打开工程属性–>配置属性–>代码生成–>运行时库–>选多线程(/MT) 英文版为:Options->Configuration Properties->C/C+±>Code Generation->Runtime Library->Multi-threaded(/MT) MT选项:静态链接LIB版的C和C++运行库。在链接时就会在将C和C++运行时库集成到程序中成为程序中的代码,程序体积会变大。 MTd选项:LIB的调试版。 MD选项:使用DLL版的C和C++运行库,这样在程序运行时会动态的加载对 应的DLL,程序体积会减小,缺点是在系统没有对应DLL时程序无法运行。 MDd选项:表示使用DLL的调试版。 在配置中,把“公共语言运行库支持”设置为:无公共语言运行库支持 就可以了

运行时和运行时库 (摘录)

落花浮王杯 提交于 2020-01-23 02:32:10
Runtime : When a program is running, or executing, it is said to be in runtime. The term is mostly used by software developers to specify when errors in a program occur. A "runtime error" is an error that happens while the program is executing. For example if a program told you that 2 + 2 was 5000 that would be a runtime error. A memory leak where the program sucks up excessive amounts of system memory is also a runtime error. The other major type of program error is a compile-time error where the application will not even compile into an executable program. Examples of compile-time errors are

Python 连接数据库 报 AttributeError 的问题

…衆ロ難τιáo~ 提交于 2020-01-22 13:11:34
这个问题耽误了三天时间,起因就是在连接Ingress数据库的时候报了一个AttributeError错误,说是缺少属性,后来又发现其实是缺少“jaydebeapi”模块的原因,缺少模块就pip安装呗,可没想到由此出来一系列问题,主要就是版本问题、依赖问题。 版本问题 我之前安装的是Anaconda3-2019.10-Windows-x86_64,内置python3.7,刚开始在网上寻找解决方案时确定了报错与python版本有关系,我的版本太高了,安装JPype1需要python3.6的。(JPype1下面会讲)由此我去网上找python3.6版本的Anaconda,不得不吐槽一下自己这方面的经验真的差。 在网上找了一个地址可下载Anaconda: https://repo.anaconda.com/archive/ , 也找了Python版本与Anaconda版本对应的图: https://www.jianshu.com/p/f582f2a21152 Anaconda3.5.0.0中内置的python就是3.6的,下载安装即可。 依赖问题 这个问题在我初次寻找报错原因的时候就发现了,但却是其中卡住我的地方。 安装“jaydebeapi”是需要先安装好“JPype1”的,前者依赖后者的安装,所以需要先安装好JPype1,在安装JPype1时遇到的问题最大。