ASM

无法加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项

拟墨画扇 提交于 2020-04-29 20:30:40
未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)。 有时候我们创建了一个类库,我们项目又引用了这个类库,需要我们把Newtonsoft.Json统一化。 对每个引用Newtonsoft.Json的项目做下面的处理: ①删除bin下面的Newtonsoft.Json.dll ②重新nuget引用Newtonsoft.Json到一个版本(看实际情况,一般是最新) ③添加我们的依赖,然后重新生成 version= " 1.0 " encoding= " utf-8 " ?> <configuration> <runtime> <assemblyBinding xmlns= " urn:schemas-microsoft-com:asm.v1 " > <dependentAssembly> <assemblyIdentity name= " Newtonsoft.Json " publicKeyToken= " 30ad4fe6b2a6aeed " culture= " neutral " /> <bindingRedirect oldVersion= " 0.0.0.0-12.0.0.0 " newVersion= " 4.5.0.0 " /> <!--

Delphi、Lazarus保留字、关键字详解

本小妞迷上赌 提交于 2020-04-29 13:29:49
来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用; 关键字:有特定含义,不能再次重新定义; 修饰字:类似保留字的功能,也就是说可以重用 ; 数据类型:数据类型类似保留字,一般也不要重新定义; 提示字:这个信息是用在编译时提示用户平台依赖等用途的,也不要改变。 但是保留字还是尽量不要重新定义,比如下面的代码 procedure TForm1.FormCreate(Sender: TObject); var true:string; begin end; 可以正确执行。 同样标识符也类似于保留字,如下的程序也可以执行: type Integer= Char; var I: Integer; begin I:= 'A'; ShowMessage(I);end; 但是下面的程序就会报告错误了。 type string = Integer; 所以无论保留字、标识符、关键字、修饰字都最好不要重新定义; Turbo pascal 保留字 and array asm begin break case const constructor continue destructor div do downto else end false file for function goto if implementation in inline interface label mod nil

Java ASM学习(2)

非 Y 不嫁゛ 提交于 2020-04-29 09:00:05
1.编译后的方法区,其中存储的代码都是一些字节码指令 2.Java虚拟机执行模型: java代码是在一个线程内部执行,每个线程都有自己的执行栈,栈由帧组成,每个帧表示一个方法的调用,每调用一个方法,都将将新的帧压入执行栈,方法返回时(不管是整成return还是异常返回),该方法对应的帧都将出栈,即按照先进后出的规则。 执行栈与操作数栈不一样,操作数栈包含在执行栈中。每一帧包括局部变量和操作数栈两部分,操作数栈中包括字节码指令用来当操作数的值。比如a.equals(b)将创建一帧,此时该帧将有一个空栈,并且a和b作为局部变量 字节码指令: 由标识该指令的操作码和固定数目的参数组成,操作码指定要进行哪一类操作,参数指定具体精确行为。指令分为两类,一类在局部变量和操作数栈之间传值,一类从操作数栈弹出值计算后再压入 例如: ILOAD,LLOAD,FLOAD,DLOAD,ALOAD读取一个局部变量,并将其值压入操作数栈中,其对应的参数是其读取的局部变量索引i(因为局部变量就是通过索引来进行随机访问的),LLOAD和DLOAD加载时需要两个槽(slot),因为局部变量部分和操作数占部分的每个槽(slot)都可以保存除了long和double之外的java值(long和double需要两个槽)。 ILOAD:加载boolean、 char 、 byte 、 short 、int局部变量

XV6操作系统代码阅读心得(四):虚拟内存

眉间皱痕 提交于 2020-04-28 18:56:45
本文将会详细介绍Xv6操作系统中虚拟内存的初始化过程。 基本概念 32位X86体系结构采用二级页表来管理虚拟内存。之所以使用二级页表, 是为了节省页表所占用的内存,因为没有内存映射的二级页表可以不用分配地址来存储。在这个二级页表结构中,每个页的大小为4KB,每个页表的大小也为4KB,每个页表项的大小为4字节,一个页表包含1024个页表项。一级页表表项存储的是二级页表的地址,二级页表表项存储的是对应的物理地址。虚拟地址和物理地址的最后12位总是相同,因此页表表项中的这12位可以被用作标记其他信息。对于一个32位虚拟地址,可以通过前10位来找到其对应的一级页表表项的索引,读出二级页表表项的地址,并通过访问二级页表,得到对应的物理地址。显然,这样会使得一次虚拟内存的访问变成三次物理内存的访问,为了最小化其性能影响,CPU中额外有TLB缓存会缓存最近访问的虚拟地址所对应的页表项。虚拟地址到物理地址的转换图如下 X86还额外支持4MB大页模式,让一个一级页表表项直接映射到4MB大小的页。有些情况下,这样分配会更加方便。后文会提到Xv6系统初始化时,会使用到4MB大页。 需要注意的是,虚拟地址到物理地址的映射过程是由硬件完成的,不是由某个函数完成的。硬件通过 cr3 控制寄存器中的一级页表地址取出对应的页表表项,自动完成虚拟地址的翻译,操作系统只负责初始化页表

问题总结(一)

自古美人都是妖i 提交于 2020-04-28 17:36:40
dubbo分层架构设计 Spring bean加载流程 Spring循环依赖问题 消息中间件重复消费问题 Dubbo消费注册逻辑 ZK脑裂问题 脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。 过半机制 在领导者选举的过程中,如果某台zkServer获得了超过半数的选票,则此zkServer就可以成为Leader了 选举的过程中为什么一定要有一个过半机制验证? 因为这样不需要等待所有zkServer都投了同一个zkServer就可以选举出来一个Leader了,这样比较快,所以叫快速领导者选举算法 跳表数据结构 链表加多级索引的结果就是跳表,是一种用空间换时间的设计思路 原始链表 搜索引擎设计 正排索引 一个唯一的编号作为 ID,然后使用哈希表将 ID 作为键(Key),把的内容作为键对应的值(Value)。这样,我们就能在 O(1) 的时间代价内,完成对指定 key 的检索。这样一个以对象的唯一 ID 为 key 的哈希索引结构,叫作正排索引(Forward Index) 倒排索引 这样,我们就建立了一个哈希表,根据关键字来查询这个哈希表,在 O(1) 的时间内,我们就能得到包含该关键字的文档列表

虚拟内存[02] Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈【转】

泄露秘密 提交于 2020-04-28 12:39:06
转自: https://durant35.github.io/2017/10/29/VM_Stacks/  Linux 中有几种栈?各种栈的内存位置? 关于栈 函数调用栈的典型内存布局 栈帧 (Stack Frame) 的边界由栈帧基地址指针 EBP 和 栈指针 ESP 界定, EBP 指向当前栈帧底部 (高地址),在当前栈帧内位置固定; ESP 指向当前栈帧顶部 (低地址); 当程序执行时, ESP 会随着数据的入栈和出栈而移动,因此函数中对大部分数据的访问都基于 EBP 进行。 栈帧存放着 参数 , 局部变量 及 恢复前一栈帧所需要的数据 等。 进程栈  进程虚拟地址空间中的栈区,正指的是我们所说的 进程栈 。 进程栈 是属于用户态栈,和 进程虚拟地址空间 (Virtual Address Space) 密切相关。 图: 32 位系统下进程地址空间默认布局(左)和进程地址空间经典布局(右)   进程栈 的初始化大小是由编译器和链接器计算出来的,但是栈的实时大小并不是固定的,Linux 内核会根据入栈情况对栈区进行动态增长(其实也就是添加新的页表)。但是并不是说栈区可以无限增长,它也有最大限制 RLIMIT_STACK (一般为 8M),我们可以通过 ulimit 来查看或更改 RLIMIT_STACK 的值 ( stack size ): 1 2 3 4 5 6 7 8 9

dosbox+masm5.0编译汇编文件

陌路散爱 提交于 2020-04-28 05:03:58
在去年写过如何bc3.1编译ucos,不过现在很少去用到,但是那是用dosbox也是懵懵懂懂的,参见https://blog.csdn.net/liming0931/article/details/82320088 随着c语言使用的不断熟悉,偶尔看到一篇pdf,是姚新颜写的《c语言的标准和实现》,里面有提到如果要深入学习c语言,要懂点x86的汇编,之前我增加学过51的汇编,多多少少有点理解,就是x86的很多寄存器和51的不一样,自然界联想到了王爽的《汇编语言》第三版,那么学习之前要有汇编的编译环境,网上有虚拟机+dos的方案,但是我用过dosbox,那么不用费尽安装虚拟机,因为我的老电脑已经带不动了,但是dosbox肯定没问题的,所以就使用了这个方案。 网上下载的masm5.0和debug.exe,dosbox下载最新版,和之前不会冲突,这样我之前的配置文件依然有效,会有两个conf文件,这样我0.74.3用学习汇编,0.74.2学习ucos,互不干扰。 在C:\Users\Administrator\AppData\Local\DOSBox下会有 dosbox-0.74-3.conf文件。很不错哦~~ 末尾添加如下: [autoexec] # Lines in this section will be run at startup. # You can put your

Linux内核中锁机制之信号量、读写信号量

白昼怎懂夜的黑 提交于 2020-04-28 04:46:43
在上一篇博文中笔者分析了关于内存屏障、读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量、读写信号量的内容。 六、信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程才能执行临界区的代码;不同的是获取不到信号量时,进程不会原地打转而是进入休眠等待状态。它的定义是 include\linux\semaphore.h文件中,结构体如图 6.1所示。其中的 count变量是计数作用,通过使用 lock变量实现对 count变量的保护,而 wait_list则是对申请信号量的进程维护的等待队列。 图6.1 信号量的结构体定义 我们首先看下它是如何使用的,首先定义一个信号量,然后初始化信号量,它包括两种方法。如图 6.2所示。方法 1:简单的初始化,定义信号量的个数由 val决定,实际上 val值即是赋给信号量结构体中的 count变量;方法 2是直接将结构体中 count值设置成 1,此时信号量可用于实现进程间的互斥量。注意:对于信号量的初始化函数 Linux最新版本存在变化,本文所采用的 Linux版本已不存在如 init_MUTEX和 init_MUTEX_LOCKED等初始化函数,同时也更换了名字等,这点读者在阅读的时候需要下,因此笔者建议以后在编程中遇到需要使用信号量的时候尽量采用 sema_init(struct semaphore *sem,

建立Oracle GoldenGate凭证

最后都变了- 提交于 2020-04-27 21:04:48
了解如何为与数据库交互的流程创建数据库用户,分配正确的权限并防止未经授权使用凭据。 主题: 为Oracle GoldenGate分配凭证 保护Oracle GoldenGate凭证 3.1 为Oracle GoldenGate分配凭证 Oracle GoldenGate进程需要一个或多个具有正确数据库权限的数据库凭证,以便使用数据库版本,数据库配置和Oracle GoldenGate功能。创建源数据库用户和目标数据库用户,每个用户专用于源系统和目标系统上的Oracle GoldenGate。所分配的用户可以是所有必须连接到源或目标Oracle数据库的Oracle GoldenGate进程的同一用户。 提取用户 复制用户 其他Oracle GoldenGate用户 授予适当的用户权限 3.1.1提取用户 Extract用户在源数据库上执行元数据查询,并在需要时从源表中提取数据。在集成捕获的本地挖掘部署中,此用户还创建,更改并连接到注册服务器,并从中接收逻辑更改记录(LCR)。 (请参阅决定使用哪种捕获方法以获取有关捕获模式的更多信息。) 如果源数据库是多租户容器数据库,则提取用户必须是普通用户,并且必须登录到根容器。有关更多信息,请参阅在多租户容器数据库中配置Oracle GoldenGate。 如果Extract将以集成捕获模式运行,并且您正在使用下游挖掘数据库

Java 基础之详解 Java 反射机制

ぃ、小莉子 提交于 2020-04-27 02:40:20
一、什么是 Java 的反射机制?   反射(Reflection)是Java的高级特性之一,是框架实现的基础,定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。   一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化对象,但是使用反射则可以相反的通过对象找到类。   通俗的讲反射就是可以在程序运行的时候动态装载类,查看类的信息,生成对象,或操作生成的对象。它允许运行中的 Java 程序获取自身的信息,自己能看到自己,就像照镜子一样。 二、Java 反射机制常见方法介绍。 1、Java反射实现的关键点之Class   Class 类的实例表示正在运行的 Java 应用程序中的类和接口。jvm中有N多的实例,每个类的实例都有Class对象。(包括基本数据类型)   Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。也就是这不需要我们自己去处理创建,JVM已经帮我们创建好了。   如果知道一个实例,那么可以通过实例的“getClass()”方法获得运行实例的Class(该类型的字节码文件对象)