版本号

LINUX总结第13篇:LINUX下动态库及版本号控制

亡梦爱人 提交于 2020-02-29 16:32:54
前言 针对同一动态组件的不同版本链接和加载。 一、概念 DLL HELL字面意思是DLL"灾难",是由于com组件(动态库)升级引起的程序不能运行的情况。 原因 有三种可能的原因导致了DLL Hell的发生: 一是由使用旧版本的DLL替代原来一个新版本的DLL而引起的。这个原因最普遍,是Windows 9X用户通常遇到的DLL错误之一。 二是由新版DLL中的函数无意发生改变而引起。尽管在设计DLL时候应该向下兼容,然而要保证DLL完全向下兼容却是不能的。 三是由新版DLL的安装引入一个新的Bug。 二、linux下的解决方案——命名规范 Linux 上的Dll ,叫sharedlibrary。Linux 系统面临和Window一样的问题,如何控制动态库的多个版本问题。为解决这个问题,Linux 为解决这个问题,引入了一套命名机制,如果遵守这个机制来做,就可以避免这个问题。但是这只事一个约定,不是强制的。但是建议遵守这个约定,否则同样也会出现 Linux 版的Dll hell 问题。 Real Name 首先是共享库本身的文件名:共享库的命名必须如 libname.so.x.y.z最前面使用前缀”lib”,中间是库的名字和后缀”.so”,最后三个数字是版本号。x是主版本号(Major Version Number),y是次版本号(Minor Version Number)

AMQP.0-10中文版——概述

我怕爱的太早我们不能终老 提交于 2020-02-29 09:54:21
AMQP.0-10中文版——概述 第1章 概述 1.1. 本文档的目标 这份文档定义了高级消息队列协议,这个协议使得遵从该协议的客户端应用和消息中间件服务器之间能够互相通信。为了完全实现互操作性,我们还定义了消息中间件服务的标准行为。 我们面对这个领域有经验的技术读者,同时还提供了足够的规范和指南,一个合适的技术工程师可以根据这些文档在任何硬件平台上用各种编程语言来构建遵从该协议的解决方案。 1.2. 专利 AMQP的设计目标之一是它的概念都来自于现有的、无产权阻碍的、广泛推行的标准——比如由互联网工程任务组和万维网颁布的标准。 因此,我们相信仅用众所周知的一些技术就能够实现AMQP服务,比如现有的开源网络程序和电子邮件路由软件或者那些技术专家们所熟悉的技术。 1.3. 摘要 1.3.1. 什么是AMQP 高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。 1.3.2. 为什么要用AMQP 我们的目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。 我们的宗旨是通过AMQP,让消息中间件的能力最终被网络本身所具有,并且通过消息中间件的广泛使用发展出一系列有用的应用程序。 1.3.3. AMQP的范围 为了完全实现消息中间件的互操作性,需要充分定义网络协议和消息代理服务的功能语义。 因此,

ASP.NET Web Api 2 接口API文档美化之Swagger

强颜欢笑 提交于 2020-02-29 06:25:27
使用第三方提供的swgger ui 可有效提高 web api 接口列表的阅读性。而且能够在页面中測试服务接口。 但本人在查阅大量资料并进行编码測试后,发现大部分的swagger实例并不能有效执行。比如例如以下两个网址:http://www.cnblogs.com/caodaiming/p/4156476.html 和 http://bitoftech.net/2014/08/25/asp-net-web-api-documentation-using-swagger/。 经过本人的一番折腾,终于发现,原来是由版本号的差异导致的(以上两个样例在4.2.0版本号下执行成功。读者可自行測试)。哎,要是这些作者可以标出插件包的版本号,真能省下非常多功夫。 眼下Swashbuckle的最新稳定版本号为 5.2.1版 。这个版本号的编码方式与4.2.0版本号有一定差异,本文也以5.2.1版本号为例进行说明。 注:本文使用OWIN来自寄宿(self-host) web api,不清楚的读者可參考:http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api。 1、新建一个控制台应用程序OwinConsoleApp。Nuget分别加入Swashbuckle(5.2.1版本号

高并发系统中的常见问题

▼魔方 西西 提交于 2020-02-29 03:57:25
本文一共分析了三个案例,分别介绍并发系统中的共享资源并发访问、计算型密集型任务缓存访问 、单一热点资源峰值流量问题和解决方案。 Q1 :订 票系 统 ,某车次只有一 张 火车票,假定有1w个人同 时 打开12306网站来 订 票,如何解决并 发问题 ? A1 : 首先介绍数据库层面的并发访问,解决的办法主要是乐观锁和悲观锁。 乐观锁 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 乐观锁使用一个自增的字段表示数据的版本号(或者timestamp),更新的时候检查版本号是否一致,比如数据库中版本号为4,更新时版本号使用版本号version=5,与数据库中的版本号version+1=(5)做比较,如果相等,则可以更新,如果不相等,其他程序已更新该记录,返回错误。 悲 观锁 假定会发生并发冲突,屏蔽一切可能违反数据完整行的操作。 一般需要使用数据库的锁机制,比如MysqlInnoDB引擎的行级锁。 结论:在实际生产环境中,如果并发量不大且不允许脏读(原始数据为5,AB两个事务,B其他事务更新数据为2,事务未提交时,A读取到的仍然为5),可以使用悲观锁。并发访问量大时,使用悲观锁有非常大的性能问题,可以选择乐观锁。 其次,介绍一下Memcached的CAS机制 CAS ,又称Compare-and-Swap,代表一种原子操作。 Memcached

webpack打包npm run dev 出现错误This is probably not a problem with npm. There is likely additional logging

我只是一个虾纸丫 提交于 2020-02-28 15:31:53
注意 :webpack 4.0以上的版本必须要安装 webpack-cli ,不然会有很多错误 当前错误的原因是版本号不兼容 第一步:卸载 cnpm un webpack webpack-dev-server webpack-cli 第二步:重新安装 cnpm i webpack webpack-cli webpack-dev-server -D 给你们看一下我的版本号 webpack:4.41.6 webpack-cli:3.3.11 webpack-dev-server:3.10.3 同样也可以在包描述文件 package.json 里手动的更改版本号,然后在 cnpm i 安装包即可 来源: CSDN 作者: 你代码写的好像不对 链接: https://blog.csdn.net/qq_41339169/article/details/104554216

windows下git使用--2

痞子三分冷 提交于 2020-02-27 18:35:11
一、git版本回退 git版本管理的好处就在于可以方便的切换回之前某次提交的版本。一旦在更改过程中发现误操作或忘记修改了哪部分内容导致程序无法运行,可以从最近的提交进行恢复。 通过git log命令可以看到最近到最远的提交日志和版本号 要想使日志输出的更简单,可以用如下的命令 git log --pretty = oneline 3. 回退到某一历史版本 通过如下命令可以回退到指定的历史版本,版本号不用写全,写前几位即可。 git reset --hard 版本号 同时如果想回退到最近的版本时,可以不通过指定版本号,git中当前的版本默认为HEAD,上一个版本为HEAD^ ,再上一个版本为HEAD^^,以此类推;同时HEAD~ 1可代表上一个版本,HEAD~2代表上上一个版本,以此类推。 4. 回到未来的某一版本 只要知道未来版本的版本号,就可以仍然通过git reset命令回到未来的某一版本号,但由于回退到过去版本后,通过git log命令将无法看到未来版本的版本号,那么如何来回到未来的版本。 通过如下命令可以看到之前执行过的git 命令 git reflog 这里可以看到历史提交及切换版本的操作记录,我们很容易看到我在回退前的版本的版本号321df34,通过执行git reset --hard 321df34再次回到未来版本。 二、未commit前反悔了怎么办

Maven 版本号规范

血红的双手。 提交于 2020-02-27 14:59:42
【强制】二方库版本号命名方式:主版本号.次版本号.修订号.日期后缀。  1) 主版本号:产品方向改变,或者大规模API不兼容,或者架构不兼容升级。  2) 次版本号:保持相对兼容性,增加主要功能特性,影响范围极小的API不兼容修改。  3) 修订号:保持完全兼容性,修复BUG、新增次要功能特性等。  4) 日期后缀:应用发布日日期,格式一律为yyyyMMdd   说明:起始版本号统一为:1.0.0.yyyyMMdd,而不是0.0.1.yyyyMMdd 来源: https://www.cnblogs.com/aspirant/p/12371961.html

【Java并发工具类】原子类

泄露秘密 提交于 2020-02-27 12:55:23
前言 为保证计数器中 count=+1 的原子性,我们在前面使用的都是 synchronized 互斥锁方案,加锁独占访问的方式未免太过霸道,于是我们来介绍另一种解决原子性问题的 无锁方案:原子变量 。在正式介绍原子变量之前,我们先来总结下锁的不足,然后深入介绍原子变量。 锁的劣势 通过对共享变量加锁,使得获取到锁的线程可以采用独占方式来访问共享变量,并且对变量的修改对随后获取这个锁的其他线程都是可见的(Happens-Before规则)。 当多个线程同时请求锁时,对于没有获取到锁的线程将有可能被挂起并且在稍后才恢复运行(有时会选择自旋等待)。当线程恢复执行时,必须等待其他线程执行完它们的时间片后,才能被调度执行。我们需要知道, 在挂起和恢复线程等过程中会存在着很大的开销,并且通常存在着较长时间的中断 。 加锁方案在竞争激烈的情况下,其性能会由于上下文切换的开销和调度延迟而降低。而如果锁的持有时间非常短,那么在不恰当的时间请求锁时,线程休眠的代价将会不太划算。 加锁还存在一些缺点: 当一个线程正在等待锁时,它不能做任何其他事情。 如果一个线程在持有锁的情况下被延迟执行(例如发生了缺页错误、调度延迟、或者其他情况),那么所有需要这个锁的线程都无法执行下去。 如果被阻塞的线程优先级较高,而持有锁的线程优先级较低,那么将会导致优先级反转问题。 即使高优先级的线程可以抢先执行

git常用命令(push后如何撤回)

 ̄綄美尐妖づ 提交于 2020-02-27 02:42:17
本文主要讲解push远程分之后如何撤回,亲测有效 常用命令: git add. 添加本地修改 git commit -m “123” 提交本地 git push origin test 提交到远程 git merge --no-commit feature_xxx 合并功能分支 git merge --abort 取消合并功能分支 git branch -D 本地分支名字 删除本地分支 git pull origin master 拉远程分支 重点讲解push远程后如何撤回 1.查看push日志 // 最新提交的在最上边,(依据时间、作者确定版本号) q (退出) git log 也可通过gitlab复制版本号 2. 到当前分支 // head指针迁移 git reset --hard 要回滚到的版本号 // 命令去强制提交 再 git push -f origin 远程分支 3. success 来源: CSDN 作者: coffee_lbj 链接: https://blog.csdn.net/weixin_42410983/article/details/104518221

Linux 内核概述 - Linux Kernel

久未见 提交于 2020-02-27 01:09:51
Linux 内核学习笔记整理。 Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠。 1973 年,在用 C 语言重写了 Unix 系统后,大量的Unix衍生版本开始出现,许多公司把 unix 移植到新的机型上,开发者们都按照自己的方式不断增强系统的功能。Unix 系统设计简洁并在发布时提供源代码,所以许多团体都对其进行了进一步的开发。加州大学伯克利分校便是其中影响最大的一个。在BSD基础上,很多厂商也推出了自己的unix ,如 SunOS、HP-UX 等。1991 年,linus 在Internet 上发布了它的 Unix 。从此 linux 便起航了,Linux很快吸引了众多开发者、黑客对其代码进行修改和完善,由于其开源性,Linux 迅速成为多人合作的开源项目。 操作系统与内核 操作系统包括内核、设备驱动程序、启动引导程序、命令行shell、基本系统工具等部分。内核是操作系统的真正核心,负责硬件设备管理、分配系统资源等任务。内核一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限,这种系统态和被保护起来的空间统称为内核空间。应用程序在用户空间只能看到允许它们访问的部分系统资源、只能使用某些特定的系统功能,无法直接访问硬件、也不能访问内核划给别人的内存范围,还有一些其他的限制