版本号

服务发现基本原理

随声附和 提交于 2019-12-05 00:06:57
一、什么是服务发现 服务提供者是什么, 简单说就是一个HTTP服务器,提供了API服务,有一个IP端口作为服务地址。 服务消费者是什么? 就是一个简单的进程,想要访问服务提供者提供的服务来做一些事情。 一个HTTP服务器既可以是服务提供者对外提供 服务,也可以是消费者需要别的服务提供者提供的服务,这就是服务依赖。复杂的服务甚至有多个服务依赖 服务发现有三个角色,服务提供者、服务消费者和服务中介。 服务中介是联系服务提供者和服务消费者的桥梁。服务提供者 将自己提供的服务地址注册到服务中介,服务消费者从服务中介那里查找自己想要的服务地址,然后使用这个服务。 服务中介 提供多个服务,每个服务对应多个服务提供者。 服务中介就是一个字典,字典里有很多key-value键值对,key是服务名称,value是服务提供者的地址列表。服务注册就是调用 字典的put方法放东西,服务查找就是调用字典的get方法获取东西 当服务提供者新加入时,要求服务中介能及时告知服务消费者。 二、Redis作为服务中介 Redis里面有丰富的数据结构,用来存储服务字典很合适。 对每一个服务名称,可以用一个set结构存储服务的IP:port字符串 如果服务提供者加入,调用sadd命令加入服务地址,如果服务挂掉,调用srem命令移除服务地址。 对服务消费者使用smembers

Linux学习- RPM包详解

早过忘川 提交于 2019-12-04 23:46:02
Linux学习- RPM包详解 RPM包详解 rpm命令执行安装rpm包和源码包,rpm包以.rpm结尾,而源码包以.src.rpm结尾 RPM软件包命令规则 name-version-arch.rpm name-version-arch.src.rpm 示例:bind-9.8.2-0.47.rc1.el6.x86_64.rpm 示例解析: 1.name,如:bind,是软件的名称 2.version,如:9.8.2-0,是软件的版本号,版本号格式通常为“主版本号.次版本号.修正号”。47,是发布版本号,表示这个rpm软件包是第几次编译生成的 3.arch,如i386,是表示包适用的硬件平台,目前rpm支持的平台有:i386,i586,i686,sparc和alpha 4..rpm和.src.rpm,是rpm包类型后缀,rpm是编译好的二进制包,.src.rpm是源码包 5.特殊名称: (1)el*:表示发行商的版本,el6表示这个软件包是在rhel6.x/centos6.x下使用; (2)devel:表示这个rpm包是软件的开发包 (3)noarch:说明这样的软件包可以在任何平台安装和运行,不需要特定的硬件平台 RPM常用命令 -ivh 安装并显示安装进度(规则:rpm –ivh 包名) 示例:rpm –ivh bind-9.8.2-0.47.rc1.el6.x86_64

Class文件结构全面解析(上)

大城市里の小女人 提交于 2019-12-04 23:05:04
什么是Class文件? 在Java刚刚诞生的时候就提出了一个非常著名的口号:“一次编写,到处运行。(Write Once,Run Anywhere)”。为了实现平台无关性,各种不同平台的虚拟机都统一使用一种程序储存格式,就是字节码(ByteCode)。它就以二进制字节流的方式被存放在Class文件中,其中包含了Java虚拟机指令集和符号表以及其他辅助信息。 欢迎关注微信公众号: 万猫学社 ,每周一分享Java技术干货。 为什么需要了解Class文件结构? 一般对于数据结构的分享难免比较枯燥,但是了解Class文件结构是了解Java虚拟机的重要基础之一。如果想比较深入地了解Java虚拟机,那么Class文件结构是不能不接触的。我会力求在保证逻辑准确的基础上,尽量通俗易懂地分享,并结合实际案例。 欢迎关注微信公众号: 万猫学社 ,每周一分享Java技术干货。 Class文件结构简介 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序准确地排列在Class文件中,中间没有任何分隔符。当遇到8位字节以上的数据时,就按照高位在前的方式(最高位字节在地址最低位、最低位字节在地址最高位的顺序储存)分割成多个8位字节储存。 Class文件格式采用一种类似于C语言结构体的伪结构来储存数据的,这种伪结构有两种数据类型: 无符号数 和 表 。 欢迎关注微信公众号: 万猫学社

SVN命令大全

爷,独闯天下 提交于 2019-12-04 21:16:43
SVN命令大全 1. svn checkout 将文件checkout到本地目录 svn checkout <path> //path是服务器上的目录 示例: svn checkout svn://192.168.1.1/pro/domain 简写: svn co 2. svn add 往版本库中添加新的文件 svn add <file> //file是文件的路径 示例: svn add test.php //添加test.php svn add *.php // 添加当前目录下所有的php文件 3. svn commit -m 将改动的文件提交到版本库 //如果选择了保持锁,就使用–no-unlock开关 svn commit -m “LogMessage“ [-N] [--no-unlock] <path> //LogMessage是需要提交的log,path是需要提交文件的路径 示例: svn commit -m “add test file for my test“ test.php 简写: svn ci 4. svn lock -m 加锁/解锁 svn lock -m “LockMessage“ [--force] <path> //加锁 svn unlock <path> //解锁 示例: svn lock -m “lock test file“ test.php /

前端Leader你应该知道的NPM包管理机制

自古美人都是妖i 提交于 2019-12-04 17:26:34
npm install 命令 首先总结下npm 安装一个模块包的常用命令。 /* 模块依赖会写入 dependencies 节点 */ npm install moduleName npm install -save moduleName npm install -S moduleName /* 模块依赖会写入 devDependencies 节点 */ npm install -save-dev moduleName npm install -D moduleName /* 全局安装模块包 */ npm install -g moduleName /* 安装特定版本的包 */ npm install 包名@版本号 /* 通过地址安装git仓库 */ npm install git+https://github.com/itwmike/axios.git npm install git+ssh://git@github.com:itwmike/axios.git /* 安装特定分支或Tag的git仓库 */ npm install git+https://github.com/itwmike/axios.git#tag /* 通过用户名安装git仓库 */ npm install github:帐号/仓库名 # npm install github:itwmike/axios

CAS-原子操作

佐手、 提交于 2019-12-04 15:22:47
一 概念 在计算机中比较和交换(Conmpare And Swap 即 CAS)是用于实现多线程同步的原子指令,当多个线程对某个资源进行CAS操作,只能有1个线程成功,其他线程并不会阻塞而是返回失败信号。 二 基本原理 每个CAS包含3个运算符 1 内存地址 V 2 旧的预期值A 3 新增B 基本思路,如果V地址上的值和传入的旧的期望值A相等,就给地址赋个新值B,否则不做任何处理 if(V.value.equals(A)){ V.value = B; return true;}else{ return false;} 常用 原子操作类型基本类型 AtomicInteger,AtomicLong,AtomicBoolean;数组类型 AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray;引用类型 AtomicReference,AtomicMarkableReference,AtomicStampedReference 三 常见用法和ABA问题 3.1 常见用法 原子操作基本类型(Integer) AtomicInteger atomicInteger = new AtomicInteger(10);//基本类型原子操作测试public void atomicIntegerTest(){ //自增1 并返回新值 System

Linux系统的安装

一笑奈何 提交于 2019-12-04 06:13:11
1 .虚拟机上的每个步骤 2 ,加载光盘镜像 3. 内核相关的信息: Linux Redhat-7-43.cn 3.10.0-957.27.2.el7.x86_64 主版本号:3 次版本号:10【奇数为开发版本,偶数为稳定版本】 修订版本号:0【修改的次数】 此次版本的第N次修改:957 el7:redhat enterprise linux 7 x86_64:编译框架 3.10 这个即为版本号,后面的为小版本号 4. 安装注意 安装时注意安装模式、安装包的检测、硬盘存储模式、网络配置、UTC时区选项、硬盘分区模式、分区格式及分区挂载位置容量等,提前做好分区规划,以便后续系统目录及文件管理 目前建议独立分区的目录有 / 、boot、home 及私人设置的目录(例如/app等),特殊操作swap(虚拟内存单独设置,一般设置的大小以设置的硬件内存的1.5-2倍) Install or upgrade an existing system:全新安装或更新一个已存在 RHEL 系统。 Install system with basic video driver: 使用最基本的显卡驱动来安装操作系统(选择此项不 影响安装过程,只是分辨率会比较低。 Rescue installed system:进入救援模式。 Boot from local drive:直接引导启动本地驱动器(硬盘)中的系统

Android清单文件详解(一) ---- 一切从<manifest>开始

自古美人都是妖i 提交于 2019-12-04 04:50:36
在AndroidManifest.xml文件中,首先看到是的<manifest>节点,它是整个应用程序的基本属性,涵盖了默认进程名字,应用程序标识,安装位置,对系统的要求以及应用程序的版本等。它是AndroidManifest.xml文件的根节点,其中必须包含一个<application>节点,并且必须指定xmlns:android和package属性,其语法如下面的代码所示: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" android:versionCode="integer" android:versionName="string" android:installLocation=["auto"|"internalOnly"|"preferExternal"]> ............. </manifest> 需要注意的是,在上面的描述的众多属性中,除了xmlns和package节点外,其余都是可选节点,Android为它们提供了默认值。接下来,我们就来详细的说明<manifest