Apollo 是一款功能强大的消息中间件,具有高性能、高可用、易用性等特点,在 Linux 下的安装它的过程相对简单快捷。由于 Apollo 的使用要求,需要在装有 Docker 的 Linux 系统中安装。下面我们通过 Ubuntu 为例,详细地介绍安装 Apollo 的步骤:
1. 首先,需要安装 Docker,可以使用以下命令安装:
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
2. 接着,需要创建一个新的 Docker 环境,名为`apollo`,执行以下命令创建:
sudo docker network create –driver bridge apollo
3. 接下来,将 Apollo 镜像下载到本地,并运行它:
sudo docker pull apollo:latest
sudo docker run -d –network apollo –name=”apollo” –ip=”192.168.100.100″} -p 61613:61613 -p 61614:61614 -p 61680:61680 apollo
4. 最后,需要连接 Apollo,首先在浏览器中访问`localhost:61680`,在 Apollo 后台页面中完成连接,查看 apollo 中所有主题,并得到更多关于 Apollo 的设置信息,以及建立订阅/取消等功能。
以上内容为在 Ubuntu Linux 下安装 Apache Apollo 消息中间件的步骤。安装完成后,开发者可以使用 Apollo 创建消息队列进行应用服务。Apollo 的特性丰富,可以帮助开发者迅速、高效地部署分布式消息服务和消费服务,为企业的数据传输、分析、审计等提供了可靠的保障。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

setup factory这个软件怎么用?
VB打包工具--- setup factory 7 使用 1 不包含源代码的打包过程 按照新建工程向导 选择了 ”为从属扫描工程文件“选项(或者从“工具”菜单-->扫描VB工程) 完成向导后 删除:frm/bas/vbp/vbw等源代码文件。 保留:exe/dll/ocx等运行支持文件 然后“发布”菜单--> 构建 --> 选择打包文件名 完成打包 最后安装的文件在安装夹下就没有代码文件了。 2 修改安装步骤的屏幕和信息 “工程”菜单 --> 屏幕... -->找到需要的阶段: 安装之前,安装之时,安装之后 --> 点击 “编辑”(还有添加、移除按钮) --> 修改安装信息。 添加代码是在操作(action)子项目下 3 添加可执行文件的快捷方式 找到可执行文件(*) 右键文件, 选择“文件属性...” 找到“快捷方式”tab,选择需要加快捷方式的地方,如桌面等,也能在这里加入注释文字。 4 包含DAO数据库的打包 前提:需要DAO(Date Access Object), 一般是使用data 和 Access数据库。 1 正常包含了exe文件和支持文件 2 点击 左上角的“添加文件夹引用”(或者是“工程”菜单 -->“添加文件夹引用”),加入DAO文件夹(3个文件夹)。 3 点击 左下角的 启动时( On Startup actions) tab, 在事件代码中输入如下(因为7.0有个问题,在6.0不需要这样 添加) (%CommonFiles%, (%CommonFilesFolder%)); 5 程序如何在安装完成后自动调用另一个程序? 比如:安装之后,执行一个可执行文件() 在“工程”菜单 --> 屏幕...-->操作 界面-->安装之后 在onnext 事件中。 添加操作,会出现一个新建操作对话框,第一步选择一个类别,你选择shell,第二步选择一个操作,你选择。 if (check01) then-- 要执行的语句 (); ((%AppFolder%)..\\, open, , , SW_SHOWNORMAL); else (); end 6 安装前检查是否已经安装过软件? 在“工程”菜单 --> 屏幕...-->找到安装的第一个屏幕 找到preload 事件中 -- 用文件存在函数判断是否过安装软件 if (%AppFolder%\\) then -- 如果文件存在,提示并退出安装程序 result = (通知, 不好意思,软件已经安装过了,将退出安装., MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); (); end 7 搜索各个盘符搜索文件: 查找各个盘符,返回table 类型, drives = (); max=(drives) for count = 1,max do-- 要执行的语句 文件查找函数 if( (drives[count], , true, false)) then count=max+1 result = (通知,不好意思,软件已经安装过了,将退出安装程序, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); (); end end 8 几个常用语句 打开文件 提示信息 查找文件 文件是否存在 获取版本信息,返回table type (); 退出 (); 下一屏幕 () table type 的个数(类似枚举类型) 获取各个盘符,返回table type 使用类似数组 table1[1] 9 增加快捷方式时,注意设置文件的描诉别出现重名,否则一些文件将被覆盖。 如:可执行文件和帮助手册的描诉重名问题。 造成只有帮助文件,无可执行文件。 10 产生错误2091,无法压缩数据库。 原因:在进程管理器中该可执行文件依旧在运行 处理:移除顺利打包。 11 更多请使用帮助,自己多用每个菜单。
电脑开机后有错误提示: 没有软盘 Exception Processing Message c0000013 Parameters 764ebf7c 4 764ebf
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 一:先说说硬件: 一般来说,电脑硬件是很不容易坏的。 内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。 内存条坏了(二手内存情况居多)、2。 使用了有质量问题的内存,3。 内存插在主板上的金手指部分灰尘太多。 4。 使用不同品牌不同容量的内存,从而出现不兼容的情况。 5。 超频带来的散热问题。 你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。 二、如果都没有,那就从软件方面排除故障了。 先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。 这就是“动态内存分配”,内存地址也就是编程中的“光标”。 内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。 当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。 作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。 若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。 真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。 在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。 这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x“。 内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。 因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。 有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。 注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。 计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。 无效光标不一定总是0,因此错误提示中的内存地址也不一定为 “0x”,而是其它随机数字。 首先建议: 1、 检查系统中是否有木马或病毒。 这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。 平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 2、 更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。 有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。 3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。 4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在服务和应用程序下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。 (在删除前请创建这些文件的备份副本。 ) 打开服务和应用程序,单击服务,然后打开并启动 Windows Management Instrumentation 服务。 当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs 实在不行,重装系统吧! 祝你好运!
关于VB建立注册表问题
概述 注册表编辑器使用文件格式导入、导出注册表设置,支持的操作系统包括windows3.x,windows95/98/nt及以上。 尽管注册表的作用和原理十分重要,但本文不打算介绍,你可以通过文末列出的网址,获得相关的信息。 同时,windows3.x的文件格式与windows95以上不尽相同,本文将忽略这方面的内容,毕竟windows3.x的注册表已经不太重要。 2 详细说明 文件是ascii码组成的无格式纯文本,每一行以“cr/lf”结尾。 2.1 文件头 文件开头是注册表编辑器的版本,windows95/nt下版本是4,你可以使用这样的字符串:regedit4。 在执行导入前,注册表编辑器将会检查版本是否正确,并在不匹配时给与提示,这也是注册表编辑器对文件做的唯一检查。 一般情况下,注册表编辑器会默默忽略掉错误的文件内容不予导入注册表,更多情况下会把可能导致问题的内容导入注册表,这是微软注册表编辑器的一个缺陷。 2.2 键 键和子键被原样导出至文件,没有顺序差别。 例如: hkey_classes_root\clsid键下面有hkey_classes_root\clsid\{21ec2020-3aea-1069-a2dd-bd}这个子键(这个键的作用是在控制面板上添加一个类声明),它按如下格式导出: [hkey_classes_root\clsid] [hkey_classes_root\clsid\{21ec2020-3aea-1069-a2dd-bd}] 任何一个有效键值都必须包含完整的路径,因此必定以根键开头,根键包括: hkey_classes_root hkey_current_user hkey_local_machine hkey_users hkey_current_config hkey_dyn_data 键名只可以由ascii码中的可打印字符组成(即ascii码32至127所代表的字符),键名不可以包含空格、反斜杠( \ )以及通配符( * 和 ? )。 每一个键名下紧跟着它的键值,键值列表以空行结束,一个键的键值列表可以就是一个空行。 例如: [key-name] [second-key-name] value1=something value2=something [third-key-name] 假如在文件中指定了一个不存在的键值,那么在导入的时候这个键连同它的根键(假如不存在的话)都将被创建。 例如: 文件中指定了hkey_users\jeroen\test\subkey这个键; 注册表中只存在hkey_users\jeroen这个键; 当导入以后,hkey_users\jeroen\test这个键会被创建。 注意,你只能添加或修改键和键值,而不能删除它们。 (译者注:事实上可以删除,方法是在键名前面加上 - 号,该键连同其子键将被删除;在指定键值为 - ,可以删除该键值。 )2.3 键值 注册表键值可以是三种数据类型:字符串(string)、二进制值(binary value)和双机器字(dWORD,即32位整数)。 键值的名称以引号 包含,值紧跟在等号 = 之后。 每一个键都包含至少一个字符串类型的键值,这个键值在注册表编辑器中显示为“默认值”(default)。 你可以通过指定名称为 @ 的值来修改默认值。 例如: @=this is the default value.2.3.1 字符串 字符串可以是任意长度的,用引号 包含起来的由ascii码字符组成的值。 字符 和 \ 也可以包含在字符串中,不过需要用 \ 和 \\ 进行转义。 同时,注册表编辑器可以导入导出除换行符(以及新行符,即ascii码10所指定的字符)以外的非acsii码字符。 当一个字符串值中包含换行符,在导出的时候会被输出成两行,但是再次导入时,只能导入第一行,第二行将被忽略。 因此请牢记:不要在字符串值中包含换行符。 例如: foo=bar foopath=c:\\windows\\system foomessage=this/nmessage/nactually/nconsists/nof/one/nlong/nline.2.3.2 二进制值 在字符串和双字不适用的场合,可以使用二进制值。 二进制值可以用来储存任意类型的数据,其格式为 hex:xx,yy,zz 等,其中xx、yy、zz是用16进制值表示的单字节值,二进制值可以是任意长度的。 较长的二进制值可以用c语言多行符 \ 分割成多行显示。 例如: bar=hex:48,00,00,00,01,00,00,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,\ 00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,\ 0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,0a,00,00,00,00,00,c4,ac,01,\ 00 请记住,\ 符只能够应用在二进制值当中。 另外,微软声明一个二进制值不可以存储超过2k的资料,这也是值得注意的。 二进制值的例子: foo=hex:00,de,ca,de,12,342.3.2.1 特定二进制类型 除了常规的二进制值,还有若干特定类型的二进制值。 我们可以这样指定: foobar=hex(type):xx,xx,xx,xx,... 这些类型由 0 到 10 这些数字代表,具体如下: 0 reg_none 1 reg_sz 2 reg_expand_sz 3 reg_binary 4 reg_dword, reg_dword_little_endian 5 reg_dword_big_endian 6 reg_link 7 reg_multi_sz 8 reg_resource_list 9 reg_full_resource_descriptor 10 reg_resource_requirements_list2.3.2.1.1 reg_none类型 默认的二进制值类型,应用在无特殊要求的场合。 2.3.2.1.2 reg_sz类型 以\0结尾的字符串。 这是用二进制值来指定的字符串值,以下两种表达方法是一样的: barfoo=hex(1):41,42,43,44,00 barfoo=abcd 参见2.3.1,字符串。 2.3.2.1.3 reg_expand_sz类型 包含隐含串的字符串,一般是对环境变量的引用。 当一个应用程序读到这样字符串,系统将把引用串转换为正确的环境变量值。 下面的例子表示字符串%path%;something,当这个值被引用的时候,%path%会被转化为当前系统的 path 值。 forbaa=hex(2):25,50,41,54,48,25,3b,53,6f,6d,65,74,68,69,6e,67,002.3.2.1.4 reg_dword, reg_dword_little_endian类型 小段对齐,是通常的双字数据类型,在这种格式下存储,高位字节在前,低位字节在后。 2.3.2.1.5 reg_dword_big_endian类型 大段对齐,是苹果机的双字数据类型,在这种格式下存储,低位字节在前,高位字节在后。 2.3.2.1.6 reg_link类型 unicode符号连接。 2.3.2.1.7 reg_multi_sz 多字节字符串集,以连续两个\0结束,例如: farboo=hex(7):41,42,43,44,00,45,46,47,48,00,00 表示abcd和efgh两个字符串。 2.3.2.1.8 reg_resource_list 设备驱动程序资源列表。 2.3.2.1.9 reg_full_resource_descriptor 微软保留数据类型,用于辅助设备驱动程序。 2.3.2.1.10 reg_resource_requirements_list 微软保留数据类型,用于辅助设备驱动程序。 2.3.3. 双字数据类型 双字数据类型,即32位整数,表示为 dword:xxxxxxxx,其中 x 是一个表示4位二进制的16进制值。 例如: foo=dword:00decade
发表评论