Android新特性——App Bundles
在您的项目中添加 Play 核心库
在开始使用 Play 核心库之前,您需要先将其作为 Gradle 依赖项导入应用模块,如下所示:
// In your app’s build.gradle file:...dependencies {// This dependency is downloaded from the Google’s Maven repository.// So, make sure you also include that repository in your project's build.gradle file.implementation 'com.google.android.play:core:1.6.4'...}
First, open app/build.gradle and add the following inside the android {} block:
bundle {language {enableSplit = true}density {enableSplit = true}abi {enableSplit = true} }
This ensures that language, density, and abi configuration splits are all enabled.
请求按需模块
当您的应用需要使用动态功能模块时,它可以通过 SplitInstallManager
类在前台进行请求。在发起请求时,您的应用需要指定由目标模块清单中的 split
元素所定义的模块名称。当您使用 Android Studio 创建动态功能模块时,编译系统会使用您提供的模块名称,在编译时将该属性注入模块清单中。如需了解详情,请参阅动态功能模块清单。
例如,假设某个具有按需模块的应用可使用设备的相机拍摄和发送图片消息,并且此按需模块在其清单中指定了 split="pictureMessages"
。以下示例使用 SplitInstallManager
来请求 pictureMessages
模块(以及用于一些宣传过滤器的其他模块):
KOTLINJAVA
// Creates an instance of SplitInstallManager.val splitInstallManager = SplitInstallManagerFactory.create(context)// Creates a request to install a module.val request =SplitInstallRequest.newBuilder()// You can download multiple on demand modules per// request by invoking the following method for each// module you want to install..addModule("pictureMessages").addModule("promotionalFilters").build()splitInstallManager// Submits the request to install the module through the// asynchronous startInstall() task. Your app needs to be// in the foreground to submit the request..startInstall(request)// You should also be able to gracefully handle// request state changes and errors. To learn more, go to// the section about how to Monitor the request state..addOnSuccessListener { sessionId -> ... }.addOnFailureListener { exception -> ... }
当您的应用请求按需模块时,Play 核心库会采用“即发即弃”策略。也就是说,它会发送请求以将该模块下载到平台,但不会监控安装是否成功。要在安装后继续用户操作流程或妥善处理错误,请务必监控请求状态。
注意:您可以请求已安装在设备上的动态功能模块。如果检测到该模块已安装,则 API 会立即将该请求视为已完成。此外,安装模块后,Google Play 会自动使其保持最新状态。也就是说,当您上传新版 App Bundle 时,平台会更新所有属于您应用的已安装 APK。如需了解详情,请参阅管理应用更新。
要立即访问模块的代码和资源,您的应用需要启用 SplitCompat。请注意,Android 免安装应用不需要使用 SplitCompat,因为他们可以立即访问功能模块。
延迟安装按需模块
如果您不需要应用立即下载并安装按需模块,可以延迟到应用在后台运行时再安装该模块。例如,您想要预先加载一些宣传材料并在之后启动应用时使用这些材料。
您可以使用 deferredInstall()
方法指定之后要下载的模块,如下所示。而且,与 SplitInstallManager.startInstall()
不同,您的应用无需在前台就可发起延迟安装请求。
KOTLINJAVA
// Requests an on demand module to be downloaded when the app enters// the background. You can specify more than one module at a time.splitInstallManager.deferredInstall(listOf("promotionalFilters"))
收到延迟安装请求后,系统将尽力而为,您无法跟踪其进度。因此,在尝试访问您已指定为延迟安装的模块之前,请检查该模块是否已安装。如果您需要立即使用该模块,请改为使用 SplitInstallManager.startInstall()
进行请求,如上一部分中所示。
监控请求状态
为了能够更新进度条,在安装后触发 Intent 或者妥善处理请求错误,您需要监听来自异步 SplitInstallManager.startInstall()
任务的状态更新。要开始接收安装请求更新,请先注册监听器并获取该请求的会话 ID,如下所示。
KOTLINJAVA
// Initializes a variable to later track the session ID for a given request.var mySessionId = 0// Creates a listener for request status updates.val listener = SplitInstallStateUpdatedListener { state ->if (state.sessionId() == mySessionId) {// Read the status of the request to handle the state update.}}// Registers the listener.splitInstallManager.registerListener(listener)...splitInstallManager.startInstall(request)// When the platform accepts your request to download// an on demand module, it binds it to the following session ID.// You use this ID to track further status updates for the request..addOnSuccessListener { sessionId -> mySessionId = sessionId }// You should also add the following listener to handle any errors// processing the request..addOnFailureListener { exception ->// Handle request errors.}// When your app no longer requires further updates, unregister the listener.splitInstallManager.unregisterListener(listener)
处理请求错误
您应使用 addOnFailureListener()
妥善处理下载或安装模块时出现的失败,如下所示:
KOTLINJAVA
splitInstallManager.startInstall(request).addOnFailureListener { exception ->when ((exception as SplitInstallException).errorCode) {SplitInstallErrorCode.NETWORK_ERROR -> {// Display a message that requests the user to establish a// network connection.}SplitInstallErrorCode.ACTIVE_SESSIONS_LIMIT_EXCEEDED -> checkForActiveDownloads()...}}fun checkForActiveDownloads() {splitInstallManager// Returns a SplitInstallSessionState object for each active session as a List..sessionStates.addOnCompleteListener { task ->if (task.isSuccessful) {// Check for active sessions.for (state in task.result) {if (state.status() == SplitInstallSessionStatus.DOWNLOADING) {// Cancel the request, or request a deferred installation.}}}}}
下表介绍了您的应用可能需要处理的错误状态:
错误代码 | 说明 | 建议采取的措施 |
---|---|---|
ACTIVE_SESSIONS_LIMIT_EXCEEDED | 请求遭到拒绝,因为当前至少有一个请求正在下载。 | 检查是否有任何仍在下载的请求,如上例所示。 |
MODULE_UNAVAILABLE | Google Play 无法根据当前安装的应用版本、设备和用户的 Google Play 帐号找到所请求的模块。 | 如果用户无权访问该模块,请通知他们。 |
INVALID_REQUEST | Google Play 已收到请求,但该请求无效。 | 验证请求中包含的信息是否完整准确。 |
SESSION_NOT_FOUND | 找不到指定会话 ID 对应的会话。 | 如果您尝试通过会话 ID 监控请求的状态,请确保会话 ID 正确无误。 |
API_NOT_AVAILABLE | 当前设备不支持 Play 核心库。 也就是说,该设备无法按需下载和安装功能。 | 对于搭载 Android 4.4(API 级别 20)或更低版本的设备,您应在安装时使用 dist:fusing 清单属性添加动态功能模块。要了解详情,请参阅动态功能模块清单。 |
ACCESS_DENIED | 由于权限不足,应用无法注册该请求。 | 当应用在后台运行时,会出现这种情况。在应用返回到前台时尝试请求。 |
NETWORK_ERROR | 由于出现网络连接错误,请求失败。 | 提示用户建立网络连接或更改为其他网络。 |
INCOMPATIBLE_WITH_EXISTING_SESSION | 该请求包含一个或多个已请求但尚未安装的模块。 | 创建一个新请求,该请求不包含应用已请求的模块,或等待所有当前已请求的模块完成安装,然后再重试请求。 请注意,请求已安装的模块无法解决错误。 |
SERVICE_DIED | 负责处理请求的服务已终止。 | 请重试请求。 此错误代码会作为对 |
如果用户请求下载按需模块并出现错误,请考虑显示一个对话框并为用户提供如下两个选项:重试(再次尝试该请求)和取消(放弃该请求)。如需其他支持,您还应该提供帮助链接,引导用户访问 Google Play 帮助中心。
注意:测试应用时,若您看到 onError(-2)
,则可能是因为您尚未将应用上传到 Google Play。要测试应用的按需功能,您必须通过网址分享应用或者设置开放式测试、封闭式测试或内部测试。
处理状态更新
注册监听器并记录请求的会话 ID 后,请使用 StateUpdatedListener.onStateUpdate()
处理状态变更,如下所示。
KOTLINJAVA
override fun onStateUpdate(state : SplitInstallSessionState) {if (state.status() == SplitInstallSessionStatus.FAILED&& state.errorCode() == SplitInstallErrorCode.SERVICE_DIES) {// Retry the request.return}if (state.sessionId() == mySessionId) {when (state.status()) {SplitInstallSessionStatus.DOWNLOADING -> {val totalBytes = state.totalBytesToDownload()val progress = state.bytesDownloaded()// Update progress bar.}SplitInstallSessionStatus.INSTALLED -> {// After a module is installed, you can start accessing its content or// fire an intent to start an activity in the installed module.// For other use cases, see access code and resources from installed modules.// If the request is an on demand module for an Android Instant App// running on Android 8.0 (API level 26) or higher, you need to// update the app context using the SplitInstallHelper API.}}}}
安装请求的可能状态如下表所述。
请求状态 | 说明 | 建议采取的措施 |
---|---|---|
PENDING | 已接受该请求,即将开始下载。 | 初始化界面组件(例如进度栏),向用户提供关于下载的反馈。 |
REQUIRES_USER_CONFIRMATION | 下载需要用户确认。这很可能是由于下载内容大小超过 10 MB。 | 提示用户接受下载请求。要了解详情,请转到有关如何获取用户确认的部分。 |
DOWNLOADING | 下载正在进行中。 | 如果您为下载提供了进度条,请使用 SplitInstallSessionState.bytesDownloaded() 和 SplitInstallSessionState.totalBytesToDownload() 方法更新界面(请参见此表上方的代码示例)。 |
DOWNLOADED | 设备已下载模块,但尚未开始安装。 | 应用应启用 SplitCompat,以便立即访问已下载的模块并避免出现此状态。否则,下载将转换到 INSTALLED ,并且您的应用只能在它进入后台运行后的某个时间点访问其代码和资源。 |
INSTALLING | 设备当前正在安装该模块。 | 更新进度条。此状态通常较短。 |
INSTALLED | 该模块已安装在设备上。 | 访问模块中的代码和资源以继续用户操作流程。 如果该模块针对的是在 Android 8.0(API 级别 26)或更高版本设备上运行的 Android 免安装应用,则需要使用 |
FAILED | 请求在模块安装到设备上之前失败。 | 提示用户重试请求或取消请求。 |
CANCELING | 设备正在取消请求。 | 要了解详情,请转到有关如何取消安装请求的部分。 |
CANCELED | 请求已取消。 |
获取用户确认
在某些情况下,Google Play 在满足下载请求之前可能需要用户确认。例如,在请求需要下载大量内容,而设备使用的是移动数据网络的情况下。在这种情况下,请求的状态会报告 REQUIRES_USER_CONFIRMATION
,您的应用需要先获得用户确认,然后设备才能下载并安装请求的模块。要获得确认,您的应用应按以下方式提示用户:
KOTLINJAVA
override fun onSessionStateUpdate(state: SplitInstallSessionState) {if (state.status() == SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION) {// Displays a dialog for the user to either “Download”// or “Cancel” the request.splitInstallManager.startConfirmationDialogForResult(state,/* activity = */ this,// You use this request code to later retrieve the user's decision./* requestCode = */ MY_REQUEST_CODE)}...}
请求的状态会根据用户响应进行更新:
- 如果用户选择“下载”,请求状态会更改为
PENDING
并继续下载。 - 如果用户选择“取消”,请求状态会更改为
CANCELED
。 - 如果用户在对话框被销毁之前未做出选择,则请求状态会保持为
REQUIRES_USER_CONFIRMATION
。您的应用可能会再次提示用户完成请求。
要通过用户的响应接收回调,请使用 onActivityResult()
,如下所示。
KOTLINJAVA
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (requestCode == MY_REQUEST_CODE) {// Handle the user's decision. For example, if the user selects "Cancel",// you may want to disable certain functionality that depends on the module.}}
取消安装请求
如果您的应用需要在安装之前取消请求,它可以使用请求的会话 ID 调用 cancelInstall()
方法,如下所示。
KOTLINJAVA
SplitInstallManager// Cancels the request for the given session ID..cancelInstall(mySessionId)
立即访问模块
要立即从已下载的模块访问代码和资源(即应用重启之前),您的应用需要为应用和其下载的动态功能模块中的每项 Activity 启用 SplitCompat 库。
不过请注意,在重启应用前,该平台在访问模块内容时会受到以下限制:
- 平台无法应用模块引入的任何新的清单条目。
- 平台无法访问系统界面组件(如通知)的模块资源。如果您需要立即使用此类资源,请考虑将这些资源添加到应用的基本模块中。
启用 SplitCompat
要让您的应用立即从已下载模块访问代码和资源,您需要使用以下任一方法启用 SplitCompat。
为应用启用 SplitCompat 后,您还需要为动态功能模块中,您希望应用可以立即访问的每个 Activity 启用 SplitCompat。
在清单中声明 SplitCompatApplication
要启用 SplitCompat,最简单的方法是在您的应用清单中将 SplitCompatApplication
声明为 Application
子类,如下所示:
<application...android:name="com.google.android.play.core.splitcompat.SplitCompatApplication"></application>
应用安装在设备上后,您可以自动从已下载的动态功能模块访问代码和资源。
在运行时调用 SplitCompat
您还可以在运行时在特定 Activity 或服务中启用 SplitCompat。要以这种方式启用 SplitCompat,您需要在安装模块后立即启动功能模块中所包含的 Activity。为此,请替换如下所示的 attachBaseContext
。
如果您有自定义 Application 类,则使其改为扩展 SplitCompatApplication
,以便为您的应用启用 SplitCompat,如下所示:
KOTLINJAVA
class MyApplication : SplitCompatApplication() {...}
SplitCompatApplication
仅会替换 ContextWrapper.attachBaseContext()
以包含 SplitCompat.install(Context applicationContext)
。如果您不想 Application
类扩展 SplitCompatApplication
,则可以手动替换 attachBaseContext()
方法,如下所示:
KOTLINJAVA
override fun attachBaseContext(base: Context) {super.attachBaseContext(base)// Emulates installation of future on demand modules using SplitCompat.SplitCompat.install(this)}
如果您的按需模块可同时与免安装应用和已安装的应用兼容,您可以根据具体情况调用 SplitCompat,如下所示:
KOTLINJAVA
override fun attachBaseContext(base: Context) {super.attachBaseContext(base)if (!InstantApps.isInstantApp(this)) {SplitCompat.install(this)}}
为模块 Activity 启用 SplitCompat
为基本应用启用 SplitCompat 后,您需要为应用在动态功能模块中下载的每项 Activity 启用 SplitCompat。为此,请使用 SplitCompat.installActivity()
方法,如下所示:
KOTLINJAVA
override fun attachBaseContext(base: Context) {super.attachBaseContext(base)// Emulates installation of on demand modules using SplitCompat.SplitCompat.installActivity(this)}
从已安装的模块访问代码和资源
只要您为基本应用上下文和动态功能模块中的 Activity 启用 SplitCompat,在将按需模块的请求报告为 INSTALLED
后,您就可以开始使用其代码和资源,就像它是基本 APK 的一部分一样。
如果您想从应用的其他已安装模块访问新安装模块中存在的资源,则必须使用应用上下文执行此操作。尝试访问资源的组件上下文此时还不会更新。或者,您可以在安装动态功能模块之后重新创建该组件或在其上安装 SplitCompat。
此外,请不要在您的应用中缓存 Android ApplicationInfo
对象、该对象的内容和包含这些对象的对象。您应根据需要从应用上下文中提取这些对象。在较新版本的 Android 上安装 Split 时,缓存此类对象可能会导致应用崩溃。
访问已安装的 Android 免安装应用
当 Android 免安装应用模块报告为 INSTALLED
后,您可以使用刷新后的应用上下文来访问其代码和资源。您的应用在安装模块之前创建的上下文(例如,已存储在变量中的上下文)不包含新模块的内容。不过,新的上下文包含此类内容,您可以使用 createPackageContext
获取新的上下文。
KOTLINJAVA
// Generate a new context as soon as a request for a new module// reports as INSTALLED.override fun onStateUpdate(state: SplitInstallSessionState ) {if (state.sessionId() == mySessionId) {when (state.status()) {...SplitInstallSessionStatus.INSTALLED -> {val newContext = context.createPackageContext(context.packageName, 0)// If you use AssetManager to access your app’s raw asset files, you’ll need// to generate a new AssetManager instance from the updated context.val am = newContext.assets}}}}
Android 8.0 及更高版本上的 Android 免安装应用
在 Android 8.0(API 级别 26)或更高版本的设备上请求 Android 免安装应用的按需模块时,在安装请求报告为 INSTALLED
后,您需要通过调用 SplitInstallHelper.updateAppInfo(Context context)
,使用新模块的上下文来更新该应用。否则,应用不会知道该模块的代码和资源。更新应用的元数据后,您应通过调用新的 Handler
,在下一个主线程事件期间加载模块内容,如下所示:
KOTLINJAVA
override fun onStateUpdate(state: SplitInstallSessionState ) {if (state.sessionId() == mySessionId) {when (state.status()) {...SplitInstallSessionStatus.INSTALLED -> {// You need to perform the following only for Android Instant Apps// running on Android 8.0 (API level 26) and higher.if (BuildCompat.isAtLeastO()) {// Updates the app’s context with the code and resources of the// installed module.SplitInstallHelper.updateAppInfo(context)Handler().post {// Loads contents from the module using AssetManagerval am = context.assets...}}}}}}
加载 C/C++ 库
如果您要从设备已下载的模块加载 C/C++ 库,请使用 SplitInstallHelper.loadLibrary(Context context, String libName)
,如下所示:
KOTLINJAVA
override fun onStateUpdate(state: SplitInstallSessionState) {if (state.sessionId() == mySessionId) {when (state.status()) {SplitInstallSessionStatus.INSTALLED -> {// Updates the app’s context as soon as a module is installed.val newContext = context.createPackageContext(context.packageName, 0)// To load C/C++ libraries from an installed module, use the following API// instead of System.load().SplitInstallHelper.loadLibrary(newContext, “my-cpp-lib”)...}}}}
管理已安装模块
要检查设备上当前已安装的动态功能模块,您可以调用 SplitInstallManager.getInstalledModules()
,它会返回已安装模块名称的 Set<String>
,如下所示。
注意:如果您在开发 Android 免安装应用,则此部分不适用于您。
KOTLINJAVA
val installedModules: Set<String> = splitInstallManager.installedModules
卸载模块
您可以通过调用 SplitInstallManager.deferredUninstall(List<String> moduleNames)
请求设备卸载模块,如下所示。
KOTLINJAVA
// Specifies two dynamic feature modules for deferred uninstall.splitInstallManager.deferredUninstall(listOf("pictureMessages", "promotionalFilters"))
模块卸载不会立即发生。也就是说,设备会根据需要在后台卸载它们,以节省存储空间。您可以通过调用 SplitInstallManager.getInstalledModules()
并检查结果来确认设备是否已删除模块,如上一部分中所述。
下载其他语言资源
通过 Dynamic Delivery,设备只会下载运行应用所需的代码和资源。因此,对于语言资源,用户的设备只会下载与设备设置中当前所选的一种或多种语言相符的应用语言资源。
如果您希望应用能够访问其他语言资源(例如,实现一个应用内语言选择器),则可以使用 Play 核心库根据需要下载这些资源。该流程与下载动态功能模块的流程相似,如下所示。
KOTLINJAVA
// Captures the user’s preferred language and persists it// through the app’s SharedPreferences.sharedPrefs.edit().putString(LANGUAGE_SELECTION, "fr").apply()...// Creates a request to download and install additional language resources.val request = SplitInstallRequest.newBuilder()// Uses the addLanguage() method to include French language resources in the request.// Note that country codes are ignored. That is, if your app// includes resources for “fr-FR” and “fr-CA”, resources for both// country codes are downloaded when requesting resources for "fr"..addLanguage(Locale.forLanguageTag(sharedPrefs.getString(LANGUAGE_SELECTION))).build()// Submits the request to install the additional language resources.splitInstallManager.startInstall(request)
该请求的处理方式与动态功能模块请求的处理方式相同。也就是说,您可以像平常一样监控请求状态。
如果您的应用不需要立即使用其他语言资源,您可以延迟到应用在后台运行时再进行安装,如下所示。
KOTLINJAVA
splitInstallManager.deferredLanguageInstall(Locale.forLanguageTag(sharedPrefs.getString(LANGUAGE_SELECTION)))
访问已下载的语言资源
要立即访问已下载的语言资源,您的应用需要在需要访问这些资源的每项 Activity 的 attachBaseContext()
方法内运行 SplitCompat.installActivity()
方法,如下所示。
KOTLINJAVA
override fun attachBaseContext(base: Context) {super.attachBaseContext(base)SplitCompat.installActivity(this)}
对于您想要使用应用下载的语言资源的每项 Activity,请更新基本上下文并通过其 Configuration
设置新的语言区域:
KOTLINJAVA
override fun attachBaseContext(base: Context) {val configuration = Configuration()configuration.setLocale(Locale.forLanguageTag(sharedPrefs.getString(LANGUAGE_SELECTION)))val context = base.createConfigurationContext(configuration)super.attachBaseContext(context)SplitCompat.install(this)}
为使这些更改生效,您必须在新语言安装完毕且可供使用后重新创建 Activity。您可以使用 Activity#recreate()
方法。
KOTLINJAVA
when (state.status()) {SplitInstallSessionStatus.INSTALLED -> {// Recreates the activity to load resources for the new language// preference.activity.recreate()}...}
卸载其他语言资源
与动态功能模块类似,您可以随时卸载其他资源。在请求卸载之前,您可能需要先确定当前安装的语言,如下所示。
KOTLINJAVA
val installedLanguages: Set<String> = splitInstallManager.installedLanguages
然后,您可以使用 deferredLanguageUninstall()
方法确定要卸载的语言,如下所示。
KOTLINJAVA
splitInstallManager.deferredLanguageUninstall(Locale.forLanguageTag(sharedPrefs.getString(LANGUAGE_SELECTION)))
build_tool 命令:
Android设备屏幕分辨率,可以采用最快捷的方式,使用ADB命令获取
adb shell dumpsys window displays
打印简单方式:
adb shell wm size
java -jar C:\bundletool\bundletool-all-0.10.2.jar build-apks --connected-device --adb=C:\Users\Admin\AppData\Local\Android\Sdk\platform-tools\adb --bundle=C:\bundletool\aab\app-release.aab --output=C:\bundletool\aab\app.apks
java -jar C:\bundletool\bundletool-all-0.10.2.jar build-apks --bundle=C:\bundletool\aab\app-release.aab --output=C:\bundletool\aab\app.apks
java -jar C:\bundletool\bundletool-all-0.10.2.jar build-apks --connected-device --bundle=C:\bundletool\aab\app-release.aab --output=C:\bundletool\aab\app.apks --ks=C:\newjks\a050.jks --ks-pass=pass:123456 --ks-key-alias=jsover --key-pass=pass:123456
java -jar C:\bundletool\bundletool-all-0.10.2.jar install-apks --apks=C:\bundletool\aab\app.apks
--ks=C:\newjks\test007.jks
--ks-pass=123456
--ks-key-alias=jsover
--key-pass=123456
https://developer.android.com/studio/projects/dynamic-delivery#dynamic_feature_manifest
https://blog.csdn.net/qq_42154484/article/details/80653420
https://developer.android.com/studio/command-line/bundletool
https://blog.csdn.net/qq_33404903/article/details/88052867
https://developer.android.com/topic/google-play-instant/overview(Google play 免安装)
https://codelabs.developers.google.com/codelabs/on-demand-dynamic-delivery/index.html#6
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 学习小技巧
步骤一 下载网页版:https://dl.fxxk.workers.dev/Fuck%E5%AD%A6%E4%B9%A0%E5%BC%BA%E5%9B%BD-win32.zip并新建文件夹 解压,找到’****学习强国.exe’ 步骤二 下载’xxqg’手机APP, 扫码登陆,挂着就好...
2024/4/7 17:31:41 - [量化-027]段永平投资哲学整理
0.参考文献http://nteswjq.blog.163.com/blog/#m=01.90%的人不适合做投资。做投资面临新东西和不确定性,风险大。做实业在自己熟悉的领域,风险小。适合投资的人的比例应该是很小的。可能是因为投资的原则太简单,而简单的东西往往是最难的吧。2.巴老说,不借钱,不做空,不做…...
2024/3/29 12:35:27 - linux 中 ‘|’的作用是什么?
利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。下面来看看管道是如何在构造一条Linux命令中得到应用的…...
2024/5/6 1:06:06 - C#学习总结(一)
1、C#:简单,面向对象,类型安全 2、C#语言的特点:语法简洁,面向对象设计,安全性机制,错误异常处理机制,兼容性高,与web紧密结合 3、.Net框架包含.Net框架类库 与 CLR(公共语言运行室);.Net包括.Net Framework(开发平台)与Visual Studio(开发工具) 4、CLR又包含(…...
2024/4/30 11:40:39 - jQuery入门
一、jQuery 简介 jQuery 是一个 JavaScript 库,极大地简化了 JavaScript 编程。 二、jQuery 使用 从官网下载或从cdn引用 引用方法:在head标签内填写 <script src=" "></script>,双引号中填写路径 三、jQuery 语法 1.基础语法: $(selector).action()…...
2024/4/27 1:32:00 - python数值计算numpy
python数值计算numpy import numpy as np #numpy中生成数组的方法 #方法1.no.array():参数为列表 # lis1=[[1,2,3],[4,5,6]] # print(lis1)#[[1, 2, 3], [4, 5, 6]] # array1=np.array(lis1).reshape(6,1)#reshape决定数组规格 # print(array1) # 结果:[1 2 3] # [4 5 6]] # #…...
2024/3/29 12:35:24 - Frida用法详解【附用例】
文章目录0x01 工具安装0x02 设备环境配置(Android)0x03 命令行运行0x04 Python脚本运行0x05 基本使用0x06 开发用例 Frida,是一个类似 Xposed/Substrate 的跨平台、动态、插装工具,借助 python 和 javascript,可以非常快速便捷地操作目标进程、修改函数参数返回值等,支持…...
2024/3/29 12:35:21 - golang开发学习小记
1.面向接口 struct 内组合 interface...
2024/4/30 11:40:50 - linux环境部署https应用后报错
linux环境部署https应用,keystore文件没有问题,启动tomcat服务后报错如下: INFO: Not binding factory to JNDI, no JNDI name configured 2020-01-15 03:22:27,231:ERROR DispatcherServlet - Context initialization failed org.springframework.beans.factory.BeanCreati…...
2024/3/29 12:35:20 - libevent和libcurl实现http和https服务器 cJSON使用
前言libevent和libcurl都是功能强大的开源库;libevent主要实现服务器,包含了select、epoll等高并发的实现;libcurl实现了curl命令的API封装,主要作为客户端。这两个开源库的安装可以参考我的这篇博客:https://www.cnblogs.com/liudw-0215/p/9917422.html,并且我的代码都提…...
2024/3/29 7:45:51 - 辅助角公式
辅助角公式 asinx+bcosx=a2+b2sin(x+φ)a\sin x+b\cos x=\sqrt{a^2+b^2}\sin (x+\varphi)asinx+bcosx=a2+b2sin(x+φ)其中tanφ=ba\tan\varphi=\dfrac{b}{a}tanφ=ab...
2024/3/29 7:45:50 - guava使用二之哈希
Guava使用二之Hash Guava包为什么要提供hash java内置的hashcode算法被限制为32位的,而且算法与数据之间耦合严重,无法进行算法的替换。虽然JDK内置的hashcode算法快,但是碰撞严重 在简单的散列表中可以通过再hash解决这个问题,但是guava官方认为在其它情况无法满足需求。 …...
2024/3/29 7:45:49 - 利用django发送邮件
需要把qq邮件的POP3/SMTP服务打开 位置 设置–>账户 settings EMAIL_BACKEND = django.core.mail.backends.smtp.EmailBackend EMAIL_HOST = smtp.qq.com EMAIL_PORT = 25 #发送邮件的邮箱 EMAIL_HOST_USER = 发送到哪个qq的邮箱 #在邮箱中设置的客户端授权密码 EMAIL_HO…...
2024/4/25 17:39:37 - 【语法】- C++ 基本语法
C++ 基本语法 头文件 在编程竞赛中,我们常见一个头文件: include <bits/stdc++.h> 发现它是部分C++中支持的一个几乎万能的头文件,包含所有的可用到的C++库函数,如///. 在编程竞赛中,使用这个头文件是一个好的想法,特别是当你在选择头文件时想减少时间,我们更加专…...
2024/4/30 11:40:27 - 05-线程安全和锁优化
文章目录线程安全和锁优化一、线程安全二、Java实现线程安全的方法2.1 互斥同步2.2 非阻塞同步2.3 无同步方案三、对象头四、锁优化4.1 自旋锁和自适应自旋锁4.2 锁消除和锁粗化4.3 轻量级锁4.4 偏向锁4.5 对比五、锁升级六、代码验证6.1 重偏向6.1.1 代码6.1.2 小结6.2 批量撤…...
2024/5/6 8:26:33 - C++中关键字(保留字)
相关文章有很多,记录几篇写的很清晰的,以便日后查询: C++ 的关键字(保留字)完整介绍 C++ static关键字(以及作用域解析运算符::) C++ explicit关键字 C++ override关键字...
2024/4/6 21:30:50 - 这个关于JEECG开源评价的文章为什么删了?
...
2024/4/22 16:56:09 - P1092 虫食算 题解 DFS 深度优先搜索
这道题一开始自己写的时候,只有30分= = 然后参(模)考(仿)了洛谷第一个题解才写出来了(不过是在理解了的前提下,自己敲了一遍),下面附上参考的题解博客地址 参考的题解博客 我的代码: #include<bits/stdc++.h> using namespace std; int n, cnt; char s1[50], s…...
2024/3/29 12:35:14 - if判断
程序执行时,默认的是 顺序结构 分支语句 或者 分支结构 if 语句 语法: if(表达式){ 代码段 } 如果表达式 为真, 执行大括号中的代码。 否则直接跳过,不执行var x = 10;if(x < 10){console.log("我是真的")}如果表达式为真,执行代码段1,否则执行代码段2 if(表…...
2024/4/16 12:48:32 - 自定义分区器插件
官方只提供了取模分区器,如果有其他分区需求,可通过自定义分区插件扩展。 自定义分区器插件需要实现以下两个接口: Partitioner:基类BasePartitioner 说明:维护配置、访问对话框、运行时分配数据到分区 StepDialogInterface:基类BaseStepDialog 说明:配置分区器的对话框…...
2024/4/30 11:39:41
最新文章
- 2023ccpc深圳G题相似基因序列问题
样例: 6 4 4 1 kaki kika manu nana tepu tero kaka mana teri anan 输出: 2 2 1 0 解析: 如果是用暴力的话是 300*300*6000,这样子一定会超时。 这时候我们可以利用hash函数进行处理,对比一个字符串的小于为O&a…...
2024/5/6 19:54:38 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - 第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 题解
VP比赛链接 : 数据加载中... - 蓝桥云课 1 . 九进制 转 十进制 直接模拟就好了 #include <iostream> using namespace std; int main() {// 请在此输入您的代码int x 22*92*81*9;cout << x << endl ;return 0; } 2 . 顺子日期 枚举出每个情况即可 : …...
2024/5/6 13:50:47 - 蓝桥杯第十五届抱佛脚(十)贪心算法
蓝桥杯第十五届抱佛脚(十)贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法,它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 贪…...
2024/5/5 8:38:28 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57