WebView是一个基于WebKit引擎、展现Web页面的控件,Android的WebView在低版本和高版本采用了不同的WebKit版本内核

基本使用

WebView的最简单的使用方式即是直接显示网页内容,首先别忘了添加网络权限

<!-- 添加网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
  <WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent" />
   webview.loadUrl("http://www.baidu.com")webview.webViewClient = object : WebViewClient() {override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {//在本WebView中直接显示网页view.loadUrl(url)return true}}

WebView常用方法

状态

webview.onResume() //激活WebView为活跃状态,能正常执行网页的响应webview.onPause() //当页面被失去焦点被切换到后台不可见状态,执行webview.pauseTimers() //当应用程序(存在webview)被切换到后台时,这个方法针对的是全局的webview,它会暂停所有webview的布局显示、解析、延时,从而降低CPU功耗webview.resumeTimers() //恢复pauseTimers状态//销毁webview,先从父容器移除,再销毁
father.removeView(webview)
webview.destroy() 

前进或后退网页

//是否可以后退
webview.canGoBack()
//后退网页
webview.goBack()//是否可以前进
webview.canGoForward()
//前进网页
webview.goForward()//以当前的index为起始点前进或者后退到历史记录中指定的steps
//如果steps为负数则为后退,正数则为前进
webview.goBackOrForward(steps)

常见用法:在Activity中处理该Back键事件

  override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {if ((keyCode == KEYCODE_BACK) && webview.canGoBack()) {webview.goBack()return true}return super.onKeyDown(keyCode, event)}

清除缓存

//由于内核缓存是全局的因此这个方法不仅仅针对webview而是针对整个应用程序.
webview.clearCache(true)//清除当前webview访问的历史记录
webview.clearHistory()//这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据
webview.clearFormData()

WebSettings类
作用:对WebView进行配置和管理
下面是一些常规设置

 val webSettings: WebSettings = webview.settingsif (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { //解决网页中图片显示不出问题webSettings.mixedContentMode = WebSettings.LOAD_DEFAULT}webSettings.javaScriptEnabled = true //支持JSwebSettings.domStorageEnabled = true //支持DOM StoragewebSettings.defaultTextEncodingName = "utf-8" //设置编码格式webSettings.pluginState = WebSettings.PluginState.ON// 支持插件webSettings.loadsImagesAutomatically = true //支持自动加载图片webSettings.setSupportZoom(true) //支持缩放,默认为true。是下面那个的前提。webSettings.builtInZoomControls = true //设置内置的缩放控件。若为false,则该WebView不可缩放webSettings.displayZoomControls = false //隐藏原生的缩放控件webSettings.databaseEnabled = true // 数据库存储API是否可用webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN //WebView底层布局算法webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //设置缓存,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。本地没有缓存时才从网络上获取webSettings.allowFileAccess = true //设置可以访问文件webSettings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口//设置自适应屏幕,两者合用webSettings.useWideViewPort = true //将图片调整到适合WebView的大小webSettings.loadWithOverviewMode = true // 缩放至屏幕的大小

WebViewClient类
作用:处理各种通知、请求事件
(1)shouldOverrideUrlLoading()
作用:打开网页时,不调用系统浏览器进行打开,而是在本WebView中直接显示
(2)onPageStarted()
作用:开始载入页面时调用此方法,在这里我们可以设定一个loading的页面,告诉用户程序正在等待网络响应
(3)onPageFinished()
作用:在页面加载结束时调用,我们可以关闭loading 条,切换程序动作
(4)onLoadResource()
作用:在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次
(5)onReceivedSslError()
作用:处理https请求,WebView默认是不处理https请求的,页面显示空白

 webview.webViewClient = object : WebViewClient() {override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {//使用WebView加载显示urlview.loadUrl(url)return true}override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {//设定加载开始的操作}override fun onPageFinished(view: WebView?, url: String?) {//设定加载结束的操作}override fun onLoadResource(view: WebView?, url: String?) {//设定加载资源的操作}override fun onReceivedError(view: WebView?,errorCode: Int,description: String?,failingUrl: String?) {when (errorCode) {HttpStatus.NOT_FOUND -> view!!.loadUrl("file:///android_assets/error_handle.html")}}override fun onReceivedSslError(view: WebView?,handler: SslErrorHandler?,error: SslError?) {// 接受所有网站的证书,忽略SSL错误,执行访问网页handler?.proceed()
//                handler?.cancel() //表示挂起连接,为默认方式
//                handler?.handleMessage(msg!!) //可做其他处理}}

WebChromeClient类
作用:辅助 WebView 处理 Javascript 的对话框,网站图标,网站标题等等
(1)onProgressChanged()
作用:获得网页的加载进度并显示
(2)onReceivedTitle()
作用:获取Web页中的标题

      webview.webChromeClient = object : WebChromeClient() {override fun onProgressChanged(view: WebView?, newProgress: Int) {if (newProgress < 100)progressbar.text = "${newProgress}%"elseprogressbar.text = "100%"}override fun onReceivedTitle(view: WebView?, title: String?) {title_text.text = title}}

WebView与JS的交互

Android通过WebView调用 JS 代码

注意:JS代码调用一定要在 onPageFinished() 回调之后才能调用,否则不会调用

(1)通过WebView的loadUrl()

        // 先载入JS代码webview.loadUrl(url)// 调用javascript的callJS()方法,注意调用的JS方法名要对应上webview.loadUrl("javascript:callJS()")

(2)通过WebView的evaluateJavascript()
该方法比第一种方法效率更高、使用更简洁。如果需要获取返回值的话,就用这个方法,因为该方法的执行不会使页面刷新,而第一种方法(loadUrl)会,并且该方法在Android 4.4 后才可使用,不过现在的安卓版本都在4.4以上了,所以这点不用在意了

  webview.evaluateJavascript("javascript:callJS()", object : ValueCallback<String> {override fun onReceiveValue(p0: String?) {//此处为 js 返回的结果}})

JS通过WebView调用 Android 代码
(1)通过WebView的addJavascriptInterface()进行对象映射

    //定义一个内部类inner class AndroidJSInterFace{// 定义JS需要调用的方法,被JS调用的方法必须加入@JavascriptInterface注解@JavascriptInterfacefun hello(msg: String?) {runOnUiThread{title_text.text=msg}}}
        //AndroidJSInterFace类对象映射到js的test对象webview.addJavascriptInterface(AndroidJSInterFace(), "test") 

(2)在Android通过WebViewClient复写shouldOverrideUrlLoading()

     webview.webViewClient = object : WebViewClient() {override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {// 根据协议的参数,判断是否是所需要的url// 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数)//假如约定好的传入进来的url = "js://webview?arg1=111&arg2=222"val uri = Uri.parse(url)if (uri.scheme == "js" && uri.authority == "webview") {// 执行JS所需要调用的逻辑Log.d("TestLog", "js调用了Android的方法")// 也可以在协议上带有参数并传递到Android上val collection = uri.queryParameterNames}return true}}

如果JS想要得到Android方法的返回值,只能通过 WebView 的 loadUrl ()去执行 JS 方法把返回值传递回去,相关的代码如下:

 webview.loadUrl("javascript:returnResult($result)")

(3)通过 WebChromeClient 的onJsAlert()、onJsConfirm() 、onJsPrompt() 方法回调拦截JS对话框alert()、confirm()、prompt()消息

常用的拦截是:拦截 JS的prompt()方法
因为只有prompt()可以返回任意类型的值,操作最全面方便、更加灵活,而alert()没有返回值,confirm()只能返回两种状态(确定 / 取消)两个值

     webview.webChromeClient = object : WebChromeClient() {override fun onJsPrompt(view: WebView?,url: String?,message: String?,defaultValue: String?,result: JsPromptResult?): Boolean { //输入框// 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数)//假定传入进来的需要拦截的 url = "js://webview?arg1=111&arg2=222"val uri = Uri.parse(message)if (uri.scheme == "js" && uri.authority == "webview") {// 执行JS所需要调用的逻辑Log.d("WebviewTest", "js调用了Android的方法")// 可以在协议上带有参数并传递到Android上val collection = uri.queryParameterNames//参数result:代表消息框的返回值(输入值)result!!.confirm("js调用了Android的方法成功啦")return true}return super.onJsPrompt(view, url, message, defaultValue, result)}override fun onJsAlert(view: WebView?,url: String?,message: String?,result: JsResult?): Boolean { //警告框return super.onJsAlert(view, url, message, result)}override fun onJsConfirm(view: WebView?,url: String?,message: String?,result: JsResult?): Boolean { //确认框return super.onJsConfirm(view, url, message, result)}}

WebView调起系统相机和相册

(1)初始化需要的变量

    private var uploadMessageAboveL: ValueCallback<Array<Uri>>? = nullprivate var cameraFielPath: String? = nullprivate var uploadMessage: ValueCallback<Uri>? = null
   webview.webChromeClient = object :WebChromeClient(){override fun onShowFileChooser(webView: WebView?,filePathCallback: ValueCallback<Array<Uri>>?,fileChooserParams: FileChooserParams?): Boolean {uploadMessageAboveL = filePathCallbackopenImageChooserActivity()return true}// For Android < 3.0fun openFileChooser(valueCallback: ValueCallback<Uri>) {uploadMessage = valueCallbackopenImageChooserActivity()}}
    // 2.回调方法触发本地选择文件private fun openImageChooserActivity() {//拍照val imageStorageDir = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"heart_image")if (!imageStorageDir.exists()) {imageStorageDir.mkdirs()}cameraFielPath = imageStorageDir.toString() + File.separator + "IMG_" + System.currentTimeMillis().toString() + ".jpg"val file = File(cameraFielPath)//需要显示应用的意图列表,这个list的顺序和选择菜单上的图标顺序是相关的,请注意。val cameraIntents: MutableList<Intent> = ArrayList()val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)val packageManager: PackageManager = packageManager//获取手机里所有注册相机接收意图的应用程序,放到意图列表里(无他相机,美颜相机等第三方相机)val listCam: List<ResolveInfo> = packageManager.queryIntentActivities(captureIntent, 0)for (res in listCam) {val packageName: String = res.activityInfo.packageNameval i = Intent(captureIntent)i.component = ComponentName(res.activityInfo.packageName, res.activityInfo.name)i.setPackage(packageName)i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file))cameraIntents.add(i)}//相册val i = Intent(Intent.ACTION_GET_CONTENT)i.action = Intent.ACTION_PICKi.type = "image/*"val chooserIntent = Intent.createChooser(i, "选择")chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toTypedArray())startActivityForResult(chooserIntent,101)}
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode == 101) {val result = if (data == null || resultCode != Activity.RESULT_OK) null else data.dataif (uploadMessageAboveL != null) {onActivityResultAboveL(requestCode, resultCode, data)} else if (uploadMessage != null) {uploadMessage?.onReceiveValue(result)uploadMessage = null}if (resultCode != RESULT_OK) {//这里uploadMessage跟uploadMessageAboveL在不同系统版本下分别持有了//WebView对象,在用户取消文件选择器的情况下,需给onReceiveValue传null返回值//否则WebView在未收到返回值的情况下,无法进行任何操作,文件选择器会失效if (uploadMessage != null) {uploadMessage?.onReceiveValue(null)uploadMessage = null} else if (uploadMessageAboveL != null) {uploadMessageAboveL?.onReceiveValue(null)uploadMessageAboveL = null}}}}
    // 4. 选择内容回调到Html页面@TargetApi(Build.VERSION_CODES.LOLLIPOP)fun onActivityResultAboveL(requestCode: Int, resultCode: Int, intent: Intent?) {if (requestCode != 101 || uploadMessageAboveL == null)returnvar results = arrayOf<Uri>()var result: Uri? = nullif (resultCode == Activity.RESULT_OK) {if (intent != null) {var dataString = intent.dataStringvar clipData = intent.clipDataif (clipData != null) {for (i in 0 until clipData.itemCount) {var itemAt = clipData.getItemAt(i)results[i] = itemAt.uri}}if (dataString != null) {results = arrayOf<Uri>(Uri.parse(dataString))}uploadMessageAboveL?.onReceiveValue(results)uploadMessageAboveL = null} else { //if (result == null && File(cameraFielPath).exists()) {result = Uri.fromFile(File(cameraFielPath))}uploadMessageAboveL?.onReceiveValue(arrayOf(result!!))uploadMessageAboveL = null}}}

WebView响应下载点击事件

 webview.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength ->val uri = Uri.parse(url)val intent = Intent(Intent.ACTION_VIEW, uri)startActivity(intent)}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 短视频APP如何选择服务器?

    短视频APP如何选择服务器?4G 的普及催生了短视频领域,从抖音“黑马”的杀出重围,到各大厂的持续跟进,短视频领域正如火如荼。虽然5G即将带来新的机遇,但未来的三到五年内,短视频领域仍然有亟待开发的余地,这也让不少小众短视频垂类 APP 层出不穷,个个赚得盆满钵满。那么…...

    2024/4/25 0:51:09
  2. 将规定目录下全部内容拷贝到指定目录下

    将规定目录下全部内容拷贝到指定目录下,代码附有详细注解,综合运用IO流,文件类方法,递归算法 package test;import java.io.*;public class IoCopy {public static void main(String[] args) {//源文件位置File srcFile = new File("D:\\IDEAproject\\javase\\new\\ou…...

    2024/5/8 15:45:28
  3. 记录一次flask+uwsig+nginx的https部署

    安装必备的库 ubuntu18.04 LTS。首先安装必备的库: sudo apt-get update# 这里不安装的话在安装nginx时候可能会报错 sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev sudo apt-get install zlib1g-dev安装配置uwsgi 这里就直接在系统pyhon3环境下安装了,如果…...

    2024/4/3 14:51:57
  4. 对人生的记录与感悟

    其实,本来想发到某乎的,想想算了,反正这用得多,就顺手发这里了。如果你恰巧刷到这篇文章,不如静下来,花几分钟看看,说不定有能改变点什么。快乐是什么?这里的快乐其实指的是大多数人的快乐。其实,人要与社会链接,才有快乐。永远作为一个输入端,不向社会输出,作为一…...

    2024/5/8 18:39:42
  5. 类的成员

    1.Java语言的基本元素 类实际上在现实当中是不存在的,是一个抽象的概念,是一个模板。类的本质上现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”。在Java的世界中,“万物皆为对象”。 对象是实际存在的个体(真实存在的个体),是类的实…...

    2024/4/4 11:12:38
  6. MFC过时了吗?初学者远离?QT取代?QT/MFC对比

    刚刚拜读了一个博主写的文章,想起了自己曾经的学习历程,有感而发; https://blog.csdn.net/weixin_33726313/article/details/85961406 本人2019年开始系统学习计算机,从C语言开始学习,是从linux系统上学习的,之前从未接触过linux系统,觉得很感兴趣;然后学习uinx系统编程…...

    2024/5/8 16:12:03
  7. 什么是生物质发电?生物质发电有哪些方法?

    生物质发电是一种利用可再生生物质资源实现循环再利用发电的方法,比如垃圾焚烧发电、农林废弃物气化发电或者利用沼气和垃圾填埋气发电等。与火力发电等传统发电模式相比,生物质发电可以有效实现能源循环利用,变废为宝,节约能源,而且发电燃料可再生,有利于我国电力行业的…...

    2024/4/3 14:21:27
  8. 【C++】Eigen优化及D8016错误

    Eigen优化过程 背景 最近在写一个保边滤波的算法。为了加快运算速率,采用C++语言,使用Eigen库进行大矩阵运算。 效率问题 作为基于全局图像的算法,需要创建一个全局的矩阵(n*m在数千万到数亿的级别),但是,有效数据大约只有数十万级别,也就是说这是一个不折不扣的稀疏矩…...

    2024/5/8 17:36:45
  9. 【学习笔记系列】一、数据准备

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档【学习笔记系列】一、数据准备还没写完!!!还没写完!!!还没写完!!!文章目录【学习笔记系列】一、数据准备前言一、生成随机数据1.生成[0,1)之间均匀分布的随机数,4行2列2.生成[1,100)之间均价分布的…...

    2024/4/7 0:48:15
  10. Spark题目练习

    建表: private val schema = StructType(Array(StructField("student_id", IntType, true),StructField("student_name", StringType, true),StructField("birth", StringType, true),StructField("sex", StringType, true))) val rd…...

    2024/5/8 21:17:35
  11. unity发布UI显示问题

    unity又发病了。。起因:C盘不够了,因为有了VS2017的缘故,我把之前用的VS2013给卸载了,腾出一些空间。经过:然后发布版本就各种UI显示出问题,空白什么的。结果:删除Library文件夹重新进行编辑器的启动解决了。- -!...

    2024/4/29 6:19:36
  12. 阿里云全站加速在游戏行业的最佳实践

    在全民加速节第二场在线直播课堂中,阿里云CDN解决方案架构师研一进行了《全站加速在游戏行业中的最佳实践》主题分享,针对游戏行业中的一些特点和痛点,介绍阿里云全站加速产品的核心功能以及实现方案。 提起游戏行业,相信大家都不陌生。随着游戏开发者在游戏领域的产品、技…...

    2024/5/8 14:47:43
  13. 玩转微信小程序自动化测试 持续集成实践

    玩转微信小程序自动化测试 持续集成实践 小程序端的GUI测试选择 网易 Airtest Project 作为测试框架, 它基于Airtest 图像识别和 Poco 控件识别 ,脚本基于Python3,具有跨平台、安装配置简单、控件识别方便、易上手等优点。整体的技术选型如下所示:ID Platfrom Intro Versio…...

    2024/5/8 18:43:11
  14. 教你使用福昕PDF转换器免费实现PDF转Word

    因为PDF文件在视觉阅读上具有美观性和通用性,因此在我们工作中经常习惯于把其它文件格式转换成PDF文件,但是当我们有不同的需求时,就会用到相关的文件格式,比如当我们需要对文件进行编辑修改,PDF文件是不能满足我们的需求的,这时就需要我们把它转换成能够编辑修改的Word文…...

    2024/5/8 17:45:46
  15. 拆解Vue - 手写MVVM (1)

    目的 平日的工作都是写业务,使用 ElementUi,Vant 等等框架写业务,使用Echart.js , Video.js等库写各部分的功能,直到最近遇到了一个纯Js项目… 所以本系列文章的目的就是:通过讲故事的方式,手写一个mvvm的过程,来稍稍加强一些Js的编程能力. MVVM组成及需要实现部分某地发…...

    2024/5/8 13:29:37
  16. 日期格式化与解析 java

    日期格式化与解析 两个类 1.测试 package riqi;import java.text.ParseException; import java.util.Date;public class cs {public static void main(String[] args) throws ParseException {Date a=new Date();//构造方法里形参需要传递Date的参数 所以要生成String s = day1…...

    2024/5/4 1:40:57
  17. Activity与View的生命周期

    启动一个带ImageView的Activity:在Activity onCreate方法中初始化了View , 调用了View 的onFinishInflate在执行完 Activity的 onPostResume方法之后(第一次onResume之后)才真正开始了View的绘制工作: onAttachedToWindow --> onMeasure --> onSizeChanged --> onLa…...

    2024/4/3 20:20:16
  18. Java8新特性之Stream最简例子

    JAVA8新特性StreamStream()转换为串行流parallelStream()转换为并行流limit仅处理指定数量数据filter过滤器sorted排序规则map赋值collect保存为集合List<String> list = Arrays.asList("12345","qwer","a", "asd","888888…...

    2024/5/4 20:50:20
  19. 2048分析

    Android开发之2048小游戏游戏逻辑源码一、游戏简介2048小游戏类似于开心消消乐,但是相同的数字会相加而不是相消,主要实现逻辑代码如下,这里cardMap是一个4*4的二维数组,游戏逻辑主要通过对这个二维数组的运算来实现。 ##二、逻辑代码 private void rightMove(){boolean isA…...

    2024/5/3 20:15:16
  20. Redis数据结构与对象(字典)

    摘录自: redis设计与实现(第二版)...

    2024/4/3 21:07:36

最新文章

  1. 一文盘点 Partisia Blockchain 生态 4 月市场进展

    Partisia Blockchain 是一个以高迸发、隐私、高度可互操作性、可拓展为特性的 Layer1 网络。通过将 MPC 技术方案引入到区块链系统中&#xff0c;以零知识证明&#xff08;ZK&#xff09;技术和多方计算&#xff08;MPC&#xff09;为基础&#xff0c;共同保障在不影响网络完整…...

    2024/5/8 23:44:12
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 实景户外剧本杀小程序儿童亲子小程序开发搭建

    开发实景户外剧本杀小程序和儿童亲子小程序需要考虑到以下几个方面&#xff1a; 1. 需求分析&#xff1a;明确小程序的定位和目标用户&#xff0c;确定功能需求&#xff0c;如剧本杀游戏、亲子活动、在线交流、预约报名等。 2. 技术准备&#xff1a;选择适合的开发工具和技术…...

    2024/5/6 3:25:09
  4. Go语言map、slice、channel底层实现(go面试)

    slice 切片是一个引用类型&#xff0c;其底层实现是一个结构体&#xff0c;包含以下字段&#xff1a; ptr&#xff1a;一个指向底层数组的指针&#xff0c;指针指向数组的第一个元素。 len&#xff1a;切片当前包含的元素数量。 cap&#xff1a;切片的容量&#xff0c;即底层…...

    2024/5/5 1:45:06
  5. 分享一个Python爬虫入门实例(有源码,学习使用)

    一、爬虫基础知识 Python爬虫是一种使用Python编程语言实现的自动化获取网页数据的技术。它广泛应用于数据采集、数据分析、网络监测等领域。以下是对Python爬虫的详细介绍: 架构和组成:下载器:负责根据指定的URL下载网页内容,常用的库有Requests和urllib。解析器:用于解…...

    2024/5/6 20:11:28
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/8 19:32:33
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/7 22:31:36
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/8 1:37:40
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/8 20:33:13
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/8 1:37:39
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/7 16:57:02
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/8 20:58:56
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/7 21:15:55
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/8 1:37:35
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/8 18:06:50
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/8 1:37:32
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/8 1:37:31
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/8 1:37:31
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/8 12:44:41
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/8 9:51:44
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/8 1:37:29
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/7 17:09:45
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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