首页 文章 精选 留言 我的

精选列表

搜索[官方],共10000篇文章
优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/manifest-receivers.html 监测设备状态变化最简单的实现方式就是为每种状态都创建一个广播接收器,然后只需在相应的广播接收器内依据当前的设备状态重新执行各自的任务即可。 这种方式的不好之处就在于每次广播接收器被触发后,APP都会唤醒设备。 一种比较好的解决方案就是在运行时关闭或开启广播接收器。这样也可以使在清单文件中声明的广播接收器按需触发。 动态开启广播接收器 我们可以通过PackageManager将清单文件中声明过的任何组件切换到开启\关闭状态,其中也包括你将要开启或者关闭的广播接收器: ComponentName receiver = new ComponentName(context, myReceiver.class); PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) 通过使用这种方法,如果发现网络连接已经断开,那么就可以关闭所有的相关广播接收器,除了监听连接变化的广播接收器之外。反之,一旦连接到网络,那么则应当停止网络变化的监听:只需要在执行网络任务之前,检查一下是否有网络连接即可。 你也可以使用这种方式推迟那种需要超大带宽的网络任务。只需要监听一下网络连接的变化即可,一旦连接到Wi-Fi,那则可以开始进行网络下载。

优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/connectivity-monitoring.html 通常会有一些后台服务需要连接到网络来更新数据。但是如果没有连接到互联网,或者由于网络太慢而不能完成更新,那么为什么不在连接到网络后或在状况良好时再做这些工作呢? 你可以使用ConnectivityManager来检查是否已经连接到互联网,如果连接上了,还可以查询当前的网络连接类型。 检测是否联网 如果没有连接到网络,那么就没必要做基于网络的更新了。下面的代码演示了如何通过ConnectivityManager来检查当前的设备是否连接到了网络。 ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 检测当前的网络连接类型 有时可能需要检查当前的网络连接类型。 移动设备的网络可能是蜂窝数据、WiMAX、Wi-Fi或以太网络提供。可以通过查询获知当前的网络连接类型,并基于当前的可用带宽来变更应用的刷新频率。 boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; 移动数据所花费的成本要明显的高于Wi-Fi,所以在大多数情况下,当处于移动数据连接时,应当降低更新频率。类似的,较大文件的下载也应当暂停,直到连接到Wi-Fi网络后再继续下载。 因为会中断某些网络任务,所以监听网络状况变化这一点就变得尤为重要了:以便可以在良好的网络状况下恢复任务。 监听网络连接的变化 当网络状况发生变化时,ConnectivityManager会广播一个CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE”)的消息。你可以在清单文件中注册一个专门用于监听此消息的广播接收器,以便恢复或暂停后台网络任务。 <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 由于设备的网络连接会时常发生变化,所以该广播接收器会在每次切换到移动数据或者Wi-Fi情况下会被触发。因此,最好是为了恢复更新或者下载才用此种方法。通常的做法是,在开始任务之前检查一下网络的连接状况,如果网络不允许,那么使用该方法以便恢复。 这项方法需要动态开启广播接收器,具体的讲解会在下节课描述。

优秀的个人博客,低调大师

官方证实!Face++ 已完成新一轮 1 亿美元融资,来自建银国际和富士康

据彭博社消息,中国人工智能企业旷视 ( Face++ ) 刚刚完成了新一轮一亿美元的融资,投资者来自建银国际与富士康集团等等。 据不愿透露姓名的消息人士透露,旷视本次融资尚未完全结束,除了台湾鸿海集团(富士康)、建银国际,本轮还有其他投资人参与。目前本轮融资已经超过一亿美元。 旷视科技(Megvii)成立于 2011 年,总部位于北京,是国内一家专注于图像识别和深度学习的技术公司,外界常称之为“Face++”。三年前,构建在阿里云计算平台之上的 Face++人脸识别云平台正式上线。曾经惊艳了德国 CeBIT 的阿里“刷脸支付”——这项崭新的支付认证技术正是由蚂蚁金服与 Face++ 联手研发推出,旨在将“扫脸”代替传统的密码用于购物后的支付认证。 作为国内人脸识别领域知名的初创公司,旷视在创业之初就获得了联想之星的天使融资。2013 年

优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:电池续航时间优化之监测电池电量及充电状态

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/index.html 引言 作为一款优秀的APP应用,应该总是想方设法的降低电量的消耗。通过这节课的学习,你将有能力使APP可以基于设备的状态来调整APP的功能及行为。 我们可以通过比如在断开连接时关闭后台服务,或者在电量低的时候降低更新的频率等等手段来降低电量的消耗。 监测电池电量及充电状态 在更改后台的更新频次时,检查当前的电池电量及充电状态是我们先要做的。 应用程序的更新频率取决于电池的电量以及充电状态。由于设备处于充电状态时应用的耗电量几乎可以忽略,所以,在设备连接到充电器时,你可以将应用的刷新频率开到最大,如果设备没有在充电,那么降低更新频率可以延长电池的使命时间。 检查当前的充电状态 首先我们需要检查当前的充电状态。BatteryManager会将电池信息以及充电信息通过粘性Intent将其广播。 因为是粘性Intent,所以不需要注册BroadcastReceiver,只需要在调用registerReceiver()时传一个null就可以,当前的电池状态由该方法直接返回。你也可以在这里传递一个BroadcastReceiver对象,但是我们接下来的处理方式并不是在其中做的,所以这并不是必须的。 IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); 如果设备当前处于充电状态,那么可以获得当前的充电状态,无论它是通过USB还是通过AC适配器充电的。 // Are we charging / charged? int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; 通常的做法是:应当是在连接到AC电源适配器时,将后台的更新频率加到最大,如果当前处于USB状态,这个频率应当适当降低,如果断开充电,则应当进一步降低。 监测充电状态的变化 设备的充电状态很容易随着充电器的插入、拔出而发生变化。所以随着充电状态的变化应当相应的调整应用的刷新频率。 当设备插上充电器或是拔出充电器时,BatteryManager都会广播一个Action,所以应当注册一个BroadcastReceiver用来监听这些事件。在清单文件中需要定义ACTION_POWER_CONNECTED及ACTION_POWER_DISCONNECTED的意图过滤器。 <receiver android:name=".PowerConnectionReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> </intent-filter> </receiver> 在该BroadcastReceiver内,你可以获取当前的充电状态: public class PowerConnectionReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; } } 检查电池的剩余电量 在一些情况下还需要检查设备的剩余电量。当电量较低时可能需要降低应用的后台服务频率。 你可以通过以下方式获得设备的剩余电量: int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); float batteryPct = level / (float)scale; 监测电量的重要变化 应用不能一直连续不断的监听电池的状态。 通常来说,一直不断的监听电池电量会使监听电池的任务大于应用的实际任务,所以最好是只监听一些比较重要的变更事件。 下面的清单文件摘自一段广播接收器内。该广播接收器会在电池的电量很低时或者是在电量恢复到安全水平时被触发。它监听了两个事件:ACTION_BATTERY_LOW及ACTION_BATTERY_OKAY. <receiver android:name=".BatteryLevelReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_BATTERY_LOW"/> <action android:name="android.intent.action.ACTION_BATTERY_OKAY"/> </intent-filter> </receiver> 通常情况下,在电量很低时要关闭所有的后台更新。加载在使用APP之前,手机关机了,那么应用的数据是否是最新的就没那么重要了。 在很多情况下,手机充电时是被放在一个固定的位置上的。下节课我们将会学习如何检查设备的放置环境以及如何监测设备的放置状态。

优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式

原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html 当输入的焦点进入或者离开文本框时,Android会适时的显示或隐藏输入法。系统还会决定UI及文本框如何出现在输入法的上方。比如,当垂直方向上的可用空间非常紧张时,那么文本框可能就会填充输入法上方的整个区域。对于大多数的APP来说,这样的默认行为是它们所需要的。 不过在另一些情况中,你可能需要直接控制输入法的显示方式,以及需要在输入法可见的时候控制UI的排布方式。那么这节课主要就是介绍如何实现这些。 在Activity启动的时候显示输入法 尽管在Activity启动的时候Android将焦点给了第一个文本框,但是它是不会触发输入法弹出的。这样的行为是符合正常的习惯的,因为进入文本框可能不会Activity启动后的首要任务。不管怎么说,如果进入文本框是Activity的首要任务的话(比如登录界面),那么你可能希望默认情况下进入Activity后就会弹出输入法。 为了在Activity启动后可以显示输入法,需要在清单文件中对应的Activity的元素中添加属性android:windowSoftInputMode。如下: <application ... > <activity android:windowSoftInputMode="stateVisible" ... > ... </activity> ... </application> Note:如果用户的设备含有实体按键,那么软键盘是不会弹出的。 按需求弹出输入法 如果在Activity的生命周期内有这么一个方法:你希望确保在该方法调用后输入法是可见的,那么你可以使用InputMethodManager来将它弹出。 举个例子,下面的方法持有了一个View对象,用户会在这个View内部输入点什么,所以调用requestFocus()方法可以将焦点赋给它,然后showSoftInput()就会将输入法打开: public void showSoftKeyboard(View view) { if (view.requestFocus()) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); } } Note: 一旦输入法被弹出,那么最好不要使用代码隐藏它。系统会在用户终止文本框中的任务后将它隐藏或者用户通过系统隐藏了它(比如使用了返回按钮)。 指明你的UI应该如何响应输入法的弹出 当输入法出现在屏幕上时,它会减少APP在屏幕上的使用空间。那么系统会决定如何调整UI的部分区域,但是它可能不是最准确的。为了确保APP拥有最佳的用户体验,应该指明系统如何调整UI。 为了声明Activity的首选方式,应当在项目的清单文件中对应的Activity下添加android:windowSoftInputMode属性,并使用其中一个含有”adjust”的值。 举个例子,为了确保系统可将UI调整到可用区域,应当使用”adjustResize”: <application ... > <activity android:windowSoftInputMode="adjustResize" ... > ... </activity> ... </application> 除了以上的方法,你还可以使用组合的的方式来声明UI调整规则与输入法的可见性规则: <activity android:windowSoftInputMode="stateVisible|adjustResize" ... > ... </activity> 指明”adjustResize”是很重要的:如果UI中含有一些用户可能需要迅速访问的按键或者需要操作的文本框的话。举个例子,如果你使用相对布局将一个按钮放置到了屏幕的底部,那么使用”adjustResize”调整布局可以使该按钮出现在输入法的顶部,这样在输入完成之后就可以直接点击该按钮。

优秀的个人博客,低调大师

Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html Android设备可以被放置在若干种不同的扩展坞中。这些扩展坞包括汽车坞与家庭坞以及数字与模拟坞。其中坞的状态与充电状态非常相近,因为这些坞也提供了充电功能。 译者提示:这里说的坞是一种扩展设备,Android中比较少见,而苹果设备比较常见。我们常见的苹果设备的扩展坞就是苹果体验店所见的各种小型音响设备。 APP在何种坞中的运行频率取决于APP自身。你可以在设备处于APP坞时提高运动类APP的更新频率,或者设备处于汽车坞时完全关闭更新,或者也可以在APP在更新交通信息时将更新频率提高至最大。 这些坞的状态也同样通过粘性Intent广播获取,它可以用来查询是否被放置在了某个坞中,如果被放置了,那么可以查询是何种类型的坞。 检查当前坞的状态 当前坞的状态被放置在粘性Intent中。因为它是粘性的,所以不需要注册广播接收器。你可以直接通过registerReceiver()方法直接获得这个Intent。 IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter); 接下来则通过该Intent获取当前坞的状态: int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1); boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED; 检查当前坞的类型 如果设备被放置在坞中,那么它可能处于以下类型中: - Car - Desk - 低端桌面坞(模拟) - 高端桌面坞(数字) 注意后面这两种类型只在Android 11中介绍到,所以只需要统一检查后面这三种类型就可以: boolean isCar = dockState == EXTRA_DOCK_STATE_CAR; boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK || dockState == EXTRA_DOCK_STATE_HE_DESK; 监测坞的状态以及类型的变化 当设备被放置或移除坞时,系统会广播一个ACTION_DOCK_EVENT。为了可以监测坞状态的变化,只需要在清单文件中注册一个广播接收器就可以: <action android:name="android.intent.action.ACTION_DOCK_EVENT"/> 你可以在对应的广播接收器内获取坞的类型以及状态。

优秀的个人博客,低调大师

官方】操作指南,一看就会!银河麒麟服务器迁移运维管理平台V2.1环境规划及单机部署(1)

1.产品介绍 银河麒麟服务器迁移运维管理平台是基于国产银河麒麟高级服务器操作系统开发的服务器操作系统迁移和运维管理平台,通过直观清晰易理解的Web界面,帮助系统管理员在大规模、集群式服务器主机管理场景中完成高效运维管理工作,打造配置管理、漏洞修复、SP升级、CentOS迁移等多种核心运维场景解决方案。其易用性强、运行稳定,支持高可用与分布式部署方案,实现关键操作全流程闭环管理,能够在坚实的基础之上提升服务器操作系统的可靠性、稳定性、易用性。 银河麒麟服务器迁移运维管理平台基于信创软硬件技术,支持鲲鹏、飞腾、海光等主流CPU架构,兼容中标麒麟高级服务器操作系统V7.0、银河麒麟高级服务器操作系统V10等主流操作系统版本,支持在物理机,虚拟机和云环境中部署与配置。平台聚焦主机管理、系统配置、补丁升级、系统监控、CentOS迁移五个领域,实现了大规模主机管理、运维脚本执行、精细化的系统配置管理、精准化智能化的补丁管理与漏洞修复、系统SP升级包推送、可视化系统监控、一键式系统迁移等功能,对主机迁移、监控、配置、补丁进行全流程闭环管理,有效地解决了批量主机迁移难度高、配置管理困难、补丁包安装繁琐等问题,打破大规模主机运维的瓶颈,助力操作系统运维管理增质提效,为政府、金融、电力、医疗、运输、制造业等行业用户提供了高效、稳定的服务。 2.产品特性 银河麒麟服务器迁移运维管理平台具有以下关键产品特性: 提供清晰易理解的操作界面 使用Web界面完成系统运维操作,降低了系统运维的门槛,运维人员无需在终端中逐台操作。 支持大规模的服务器操作系统运维管理 通过批次对主机分组并实施批量操作,提供主机安装软件包版本、主机系统配置等多维度主机筛选策略。监测主机状态、系统配置、已安装软件包等基础信息,支持多台主机之间的信息对比。 支持自动化的漏洞发现与补丁安装 提供漏洞修复智能化一站式操作流程,兼容不同主机的漏洞修复差异,降低补丁安装难度。支持补丁安装回退机制,在异常场景下可快速恢复,实现补丁安装全流程闭环管理。 支持精细化的系统配置管控 提供全流程闭环的大规模主机配置变更方案,实现更快的、一致的、可重复的系统配置管理。 支持统一的可视化的系统监控 提供统一实时的可视化监控图表,可以随时掌握系统运行的状态,其代理端的安装卸载与运维代理进行解耦,保障用户可根据实际需求灵活装卸。 支持一键式的CentOS迁移 针对业务系统新增、扩容和不变场景,提供一键CentOS评估、迁移、备份功能,实现CentOS系统最小风险、最低成本的替换。 提供安全稳定、性能高效、弹性部署、兼容性佳的系统迁移运维平台 支持操作与更改的历史记录查看,以进行故障排除或日志审计。通过加密通信协议、敏感信息加密脱敏处理等方式保障平台数据的安全性。支持万级规模主机管理,响应速度快,支持按需动态扩容。兼容Intel、海光、兆芯、飞腾、鲲鹏架构生态,以及主流服务器操作系统,如中标麒麟高级服务器操作系统V7.0、银河麒麟高级服务器操作系统V10。 3.环境规划与设置 3.1.硬件环境 3.1.1.单机部署 服务端:支持x86_64、aarch64,推荐配置16CPU 16G内存,1T数据盘(/opt); 代理端:支持x86_64、aarch64,最低配置CPU >= 4、存储 >= 50G、内存 >= 4G。 3.1.2.多机部署 服务端、代理端均支持x86_64、aarch64; 服务端: 前端服务(ismp-web):推荐配置8CPU 16G内存,1T数据盘(/opt); 运维服务(ismp-service):推荐配置8CPU 16G内存,1T数据盘(/opt); 消息队列服务(RocketMQ):推荐配置8CPU 16G内存,500G数据盘(/opt); 数据库服务(PostgreSQL):推荐配置8CPU 16G内存,500G数据盘(/data); 缓存服务(Redis):推荐配置8CPU 16G内存,500G数据盘(/data); 注册与配置中心(ismp-nacos):推荐配置8CPU 16G内存,500G数据盘(/opt); 网关(ismp-gateway):推荐配置8CPU 16G内存,500G数据盘(/opt); 任务管理服务(ismp-job):推荐配置8CPU 16G内存,500G数据盘(/opt); 用户服务服务(ismp-auth):推荐配置8CPU 16G内存,500G数据盘(/opt); 授权服务(ismp-authentication):推荐配置8CPU 16G内存,500G数据盘(/opt); CentOS迁移服务(ismp-CentOS):推荐配置8CPU 16G内存,500G数据盘(/opt); 监控服务(ismp-monitor):推荐配置8CPU 16G内存,500G数据盘(/opt),实际规划时可参考《监控服务的硬件规划补充说明》; 代理端:最低配置CPU >= 4、存储 >= 50G、内存 >= 4G; 3.1.3.监控服务的硬件规划补充说明 监控服务硬件规划主要关注内存和磁盘两个方面,下表为模拟测试情况供硬件规划参考。 表 3-1监控服务模拟测试情况 监控代理接入量 CPU建议 实际内存占用 实际磁盘占用 2000 8C 9G 1.5T 3000 8C 12G 2T 6000 8C 22G 4T 9000 16C 32G 6.5T 注记:以上数据为模拟测试数据,项目在硬件规划时,请充分做好空间预留;另该数据为采集频率15s、数据保留时长15天下的结果,如采集频率和数据保留时长变更,容量需进行线性的增扩和缩减。 3.2.软件环境 服务端:支持银河麒麟高级服务器操作系统V10(SP1 0711/SP1 0319/SP1 0518/SP2/SP3/兼容版); 运维代理端/监控代理端:支持中标麒麟高级服务器操作系统V7、银河麒麟高级服务器操作系统V10(SP1 0711/SP1 0319/SP1 0518/SP2/SP3/兼容版/Host版)。 原机迁移代理端:支持CentOS/RHEL 6.0~6.10、7.0~7.9、8.0~8.2。 3.3.网络环境 必须保证每个网卡有一个固定的IP 地址,该地址用于对外提供相应的服务; 服务端与代理端网络需要能够正常通信; 平台后端与其它中间件之间的网络时延应保持在10ms以下; 平台后端与其他中间件之间的系统时间应保持一致且均为北京时间,误差不超过1小时。 3.4.操作系统环境 正确配置服务器系统的网络环境,包括IP、NetMask、GateWay、DNS等; 建议关闭系统防火墙、关闭系统SELinux安全防护措施,如果开启请确认以下端口可以正常访问: 表 3-2单机部署开放端口要求 服务器角色 开放端口 功能 服务端 9000 平台提供的软件源服务,用于补丁下发、软件包安装升级、SP升级操作 80 web的端口,用于代理端安装注册 443 https的端口,用于代理端安装注册 8093 ismp-job的反向代理端口 8848 nacos的反向代理 111 nfs共享存储 8080 http的端口,用于代理端安装注册 8899 ismp-job执行器 5432 数据库连接 6379 redis连接 26379 哨兵模式 10911 10912 10909 9876 mq服务 7848 Raft-rpc通信 9848 grpc通信 9849 grpc通信 8083 web服务 8888 web服务 8085 8086 用户服务 8892 8893 授权服务 9999 8889 Centos迁移服务 8088 9010 监控服务 代理端 22 界面注册 表 3-3多机部署开放端口要求 服务器角色 开放端口 功能 前端服务 9000 平台提供的软件源服务,用于补丁下发、软件包安装升级、SP升级操作 80 web的端口,用于代理端安装注册 443 https的端口,用于代理端安装注册 8093 ismp-job的反向代理端口 8848 nacos的反向代理 2049、111、20048 nfs共享存储 9848 grpc通信 运维服务 111 nfs共享存储 8080 http的端口,用于代理端安装注册 8899 ismp-job执行器 数据库服务 5432 数据库连接 缓存服务 6379 redis连接 26379 哨兵模式 消息队列服务 9876 30911 40911 40912 40913 30909 mq服务 注册与配置中心 8848 web服务 7848 Raft-rpc通信 9848、9849 grpc通信 任务管理服务 8083 web服务 网关 8888 web服务 用户服务 8085 8086 用户服务 授权服务 8892 8893 111 授权服务 CentOS迁移服务 9999 8889 Centos迁移服务 监控服务 8088 9010 监控服务 代理端 22 界面注册 4.银河麒麟服务器迁移运维管理平台部署 4.1.单机部署 将镜像挂载到一个目录文件下(以/mnt为例), [root@server1 ~]#mount -o loop Kylin-Easyclick-V2.1.iso /mnt 注记:此处iso名为代称,部署时需替换成实际iso名。 进入挂载的目录中,执行install.sh命令,运行安装脚本: [root@server1 ~]# cd /mnt [root@server1 mnt]# ./install.sh 然后使用浏览器访问http://localhost:8848/nacos,将localhost修改为实际部署ismp-nacos的IP地址。Nacos平台账号密码均为nacos。 在配置列表中编辑ismp-centos的配置,修改其中的部分配置(鼠标点击配置内容框任意处,然后使用Ctrl+f查找,如下图所示,若无反应,可刷新页面重新操作)host.web.ip、rocketmq下的name-server为实际ip,然后点击发布。修改完成后,重启ismp-centos。 #systemctl restart ismp-centos 在配置列表中编辑ismp-manager-default.properties的配置,修改其中的部分配置(鼠标点击配置内容框任意处,然后使用Ctrl+f查找,如下图所示,若无反应,可刷新页面重新操作)host.web.ip、rocketmq.name-server、server.bandwidth.address为实际ip,然后点击发布。修改完成后,重启ismp-manager。 [root@server1 mnt]# systemctl restart ismp-manager 如需卸载请执行: [root@server1 mnt]# ./uninstall.sh ​

优秀的个人博客,低调大师

ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了

rollover Elasticsearch 从 5.0 开始,为日志场景的用户提供了一个很不错的接口,叫 rollover。其作用是:当某个别名指向的实际索引过大的时候,自动将别名指向下一个实际索引。 因为这个接口是操作的别名,所以我们依然需要首先自己创建一个开始滚动的起始索引: # curl -XPUT 'http://localhost:9200/logstash-2016.11.25-1' -d '{ "aliases":{ "logstash":{} } }' 然后就可以尝试发起 rollover 请求了: # curl -XPOST 'http://localhost:9200/logstash/_rollover' -d '{ "conditions":{ "max_age":"1d", "max_docs":10000000 } }' 上面的定义意思就是:当索引超过 1 天,或者索引内的数据量超过一千万条的时候,自动创建并指向下一个索引。 这时候有几种可能性: 条件都没满足,直接返回一个 false,索引和别名都不发生实际变化; { "old_index":"logstash-2016.11.25-1", "new_index":"logstash-2016.11.25-1", "rolled_over":false, "dry_run":false, "acknowledged":false, "shards_acknowledged":false, "conditions":{ "[max_docs: 10000000]":false, "[max_age: 1d]":false } } 还没满一天,满了一千万条,那么下一个索引名会是:logstash-2016.11.25-000002; 还没满一千万条,满了一天,那么下一个索引名会是:logstash-2016.11.26-000002。 shrink Elasticsearch 一直以来都是固定分片数的。这个策略极大的简化了分布式系统的复杂度,但是在一些场景,比如存储 metric 的 TSDB、小数据量的日志存储,人们会期望在多分片快速写入数据以后,把老数据合并存储,节约过多的 cluster state 容量。从 5.0 版本开始,Elasticsearch 新提供了 shrink 接口,可以成倍数的合并分片数。 注:所谓成倍数的,就是原来有 15 个分片,可以合并缩减成 5 个或者 3 个或者 1 个分片。 整个合并缩减的操作流程,大概如下: 先把所有主分片都转移到一台主机上; 在这台主机上创建一个新索引,分片数较小,其他设置和原索引一致; 把原索引的所有分片,复制(或硬链接)到新索引的目录下; 对新索引进行打开操作恢复分片数据。 (可选)重新把新索引的分片均衡到其他节点上。 准备工作 因为这个操作流程需要把所有分片都转移到一台主机上,所以作为 shrink 主机,它的磁盘要足够大,至少要能放得下一整个索引。 最好是一整块磁盘,因为硬链接是不能跨磁盘的。靠复制太慢了。 开始迁移: # curl -XPUT 'http://localhost:9200/metric-2016.11.25/_settings' -d ' { "settings":{ "index.routing.allocation.require._name":"shrink_node_name", "index.blocks.write":true } }' shrink 操作 curl-XPOST'http://localhost:9200/metric-2016.11.25/_shrink/oldmetric-2016.11.25'-d' { "settings": { "index.number_of_replicas": 1, "index.number_of_shards": 3 }, "aliases": { "metric-tsdb": {} } }' 这个命令执行完会立刻返回,但是 Elasticsearch 会一直等到 shrink 操作完成的时候,才会真的开始做 replica 分片的分配和重均衡,此前分片都处于 initializing 状态。 注意:Elasticsearch 有一个硬编码限制,单个分片内的文档总数不得超过 2147483519 个。一般来说这个限制在日志场景下是不太会触发的,但是如果做 TSDB 用,则需要多加注意! 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/8136708.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

【阿里云一周要闻第二期】杭州云栖大会敲定,9月正式揭幕;MIT官方点名阿里云是全球最聪明的公司之一;阿里AI再出神器,“你是什么垃圾”一拍便...

---------------------------------【一周要闻】--------------------------------- 杭州云栖大会【阅读详情】 作为开发者领域的第一科技盛会,杭州云栖大会Apsara Conference将于今年9月25日在杭州云栖小镇开幕。大会将继续探索人类科技演进的脉搏,面向未来20年展示基础科学、创新性技术和应用的重大突破。大会官网已经露出了部分其中包括与人工智能比拼的游戏项目。吐槽大会辩手还将举办首届工程师吐槽大会。 阿里AI再出神器,“你是什么垃圾”一拍便知【阅读详情】 相信魔都的小伙伴已经要被垃圾分类逼疯了,面临灵魂拷问:“你是什么垃圾?”不用担心,想人之所想,急人之所急,阿里AI懂你。经过阿里志愿者48小时紧急开发,AI智能识别垃圾功能(测试版)在手机淘宝上线,这款功能通过阿里云搭

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册