富文本编辑器CKEditor4简单使用-03(图片上传)

news2024/11/15 14:04:46

富文本编辑器CKEditor4简单使用-03(图片上传)

  • 1. 前言
    • 1.1 关于CKEditor4的安装及简单使用
    • 1.2 关于CKEditor4的插件安装及使用
    • 1.3 关于Easy Image
  • 2. CKEditor4自带的默认上传图片按钮功能
  • 3. 使用增强的图像插件
    • 3.1 什么是增强的图像插件
    • 3.2 下载并安装增强的图像插件(Enhanced Image plugin)
      • 3.2.1 下载 Enhanced Image plugin 插件
      • 3.2.1 启用 Enhanced Image plugin 插件
    • 3.3 下载并安装 uploadimage 插件
      • 3.3.1 下载uploadimage插件
      • 3.3.2 下载 uploadimage的依赖 uploadwidget 插件
      • 3.3.3 检查插件 以及 依赖插件是否下载齐全
      • 3.3.4 安装uploadimage插件
        • 3.3.4.1 同时开启image2 和 uploadimage
        • 3.3.4.2 同时只开启 uploadimage 插件
    • 3.4 解决问题
      • 3.4.1 安装uploadimage插件后上传安装不展示
  • 4. 准备图片上传服务接口
    • 4.1 确保前端上传界面可用
    • 4.2 查看接口规范
      • 4.2.1 接口请求规范
      • 4.2.2 接口响应规范
        • 4.2.2.1 上传文件成功响应
        • 4.2.2.2 上传文件失败响应
    • 4.3 创建图片上传的boot项目
      • 4.3.1 关于图片上传
      • 4.3.2 项目目录结构
      • 4.3.3 配置springboot可访问服务器外部资源
        • 4.3.3.1 核心配置
        • 4.3.3.2 效果
    • 4.4 编写上传图片响应实体
    • 4.5 编写上传图片接口
    • 4.6 在线接口文档测试上传图片
  • 5. CKEditor4中配置config.js
    • 5.1 配置
    • 5.2 测试看效果
  • 6. 附项目
    • 6.1 上传图片的项目
    • 6.2 CKEditor4测试项目(含测试中下载的插件)
  • 7. 参考

1. 前言

1.1 关于CKEditor4的安装及简单使用

  • 如下:
    富文本编辑器CKEditor4简单使用-01(入门).

1.2 关于CKEditor4的插件安装及使用

  • 如下:
    富文本编辑器CKEditor4简单使用-02(常用插件安装及使用).

1.3 关于Easy Image

  • 收费的,在==“富文本编辑器CKEditor4简单使用-01(入门)“==有做过简单的介绍,在此就不做介绍了。

2. CKEditor4自带的默认上传图片按钮功能

  • 一下子真不知道怎么用,也没有上传按钮,看着也不是很舒服,如下:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

3. 使用增强的图像插件

3.1 什么是增强的图像插件

  • 直接看官网介绍,如下:
    在这里插入图片描述
    在这里插入图片描述

3.2 下载并安装增强的图像插件(Enhanced Image plugin)

3.2.1 下载 Enhanced Image plugin 插件

  • 下载地址:
    https://ckeditor.com/cke4/addon/image2.

    在这里插入图片描述
    在这里插入图片描述

  • 下载后检查插件以及依赖插件是否有缺少,如下是所有需要的插件,其中依赖插件Widget 和 Dialog 默认包里已经自带,所以不需下载(备注:如果本地插件已经有下载过,可忽略):

3.2.1 启用 Enhanced Image plugin 插件

  • 启用Enhanced Image plugin,如下:
    config.extraPlugins = 'image2';
    
  • 看效果,如下(比默认界面好看多了,但是没有上传按钮,所以还需按钮上传图片插件):
    在这里插入图片描述

3.3 下载并安装 uploadimage 插件

3.3.1 下载uploadimage插件

  • 如下:
    在这里插入图片描述

3.3.2 下载 uploadimage的依赖 uploadwidget 插件

  • 如下:
    在这里插入图片描述

3.3.3 检查插件 以及 依赖插件是否下载齐全

  • 除了默认自带的(当然根据自己的版本而定,我这里用的是CKEditor4-4.22.1的版本),还需下载的插件,如下:
    在这里插入图片描述

3.3.4 安装uploadimage插件

3.3.4.1 同时开启image2 和 uploadimage
  • 去定插件下载无误后,解压拷贝到指定的目录,然后开启插件,不多说了,直接看吧:
    config.extraPlugins = 'image2,uploadimage';
    
  • 看效果(开启之后记得配置路径,详情看下面3.4.1的问题)
    在这里插入图片描述
    在这里插入图片描述
3.3.4.2 同时只开启 uploadimage 插件
  • 当然你可以使用默认的界面,然后只开启 uploadimage 插件(出现【上传】按钮),但是界面可能不是很美观,如下:
    在这里插入图片描述
    在这里插入图片描述

3.4 解决问题

3.4.1 安装uploadimage插件后上传安装不展示

  • 如果开启 uploadimage 插件后,上传安装还不展示,是因为缺少对应的配置,如下(先随便配置,后面改成自己的路径):

    // 启用插件。使用 extraPlugins 设置将插件添加到您的配置中:
    // config.extraPlugins = 'language';
    
    // config.extraPlugins = 'quicktable';
    config.extraPlugins = 'image2,uploadimage';
    
    
    // uploadimage 所需的配置
    // config.filebrowserBrowseUrl='/apps/ckfinder/3.4.5/ckfinder.html',
    // config.filebrowserImageBrowseUrl= '/apps/ckfinder/3.4.5/ckfinder.html?type=Images',
    
    // config.filebrowserUploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Files',
    config.filebrowserImageUploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Images';
    
    // Upload dropped or pasted images to the CKFinder connector (note that the response type is set to JSON).
    // config.uploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Files&responseType=json';
    
  • 关于此配置的更多参考,请去官网看例子:
    https://ckeditor.com/docs/ckeditor4/latest/examples/image2.html.

4. 准备图片上传服务接口

4.1 确保前端上传界面可用

  • 即:达到下面的效果即为可用:
    在这里插入图片描述

4.2 查看接口规范

4.2.1 接口请求规范

  • 文件上传的默认请求是带有“upload”字段的表单数据文件。如下:
    在这里插入图片描述

4.2.2 接口响应规范

4.2.2.1 上传文件成功响应
  • 看官网规范:
    在这里插入图片描述
  • 成功响应,如下:
    {
        "uploaded": 1,
        "fileName": "foo.jpg",
        "url": "/files/foo.jpg"
    }
    
  • 成功上传的其他情况(也可以设置错误消息,指示文件上传已完成,但发生了一些非标准情况)
    {
        "uploaded": 1,
        "fileName": "foo(2).jpg",
        "url": "/files/foo(2).jpg",
        "error": {
            "message": "A file with the same name already exists. The uploaded file was renamed to \"foo(2).jpg\"."
        }
    }
    
4.2.2.2 上传文件失败响应
  • 失败响应,如下:
    在这里插入图片描述
    {
        "uploaded": 0,
        "error": {
            "message": "The file is too big."
        }
    }
    
    

4.3 创建图片上传的boot项目

4.3.1 关于图片上传

  • 如果不需要下载后面的项目代码,可参考下面的文章:
    ava简单实现图片上传与下载.

4.3.2 项目目录结构

  • 本次所需controller只需一个,项目是在上面项目基础上改写的,所以有之前的上传和下载,本次新加一个,如下:
    在这里插入图片描述

4.3.3 配置springboot可访问服务器外部资源

4.3.3.1 核心配置
  • 先让boot项目可访问外部资源,待会儿测试方便,如下:
    package com.liu.susu.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * description
     *
     * @author susu
     **/
    @Configuration
    public class MyWebAppConfig implements WebMvcConfigurer {
    
        /**
        * @description: 处理跨域
        * @param corsRegistry
        * @return void
        * @author susu
        */
        @Override
        public void addCorsMappings(CorsRegistry corsRegistry){
            corsRegistry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowCredentials(true)
                    .allowedMethods("*");
        }
    
        /**
         * SpringBoot前后端分离项目中通过URL访问Linux服务器上的图片
         *   /image/**是访问路径: http://localhost:8993/image/123.jpeg
         *   /Users/liusuxia/file_test/image_upload/ 是服务器地址(本次配置是Mac环境)
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            // /images/**是静态映射, file:/root/images/是文件在服务器的路径
    //        registry.addResourceHandler("/images/**")
    //                .addResourceLocations("file:F:/home/visitor/file/uploadPath/");
    
            registry.addResourceHandler("/image/**")
            .addResourceLocations("file:/Users/susu/file_test/image_upload/");
        }
    
    
    }
    
4.3.3.2 效果
  • 图片真实路径
    在这里插入图片描述
  • 地址栏输入访问路径:
    • http://localhost:8993/image/2.jpg
    • 启动服务看效果,如下:
      在这里插入图片描述

4.4 编写上传图片响应实体

  • 如下:

    package com.liu.susu.common;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
     * @Description Ckeditor4上传图片的响应
     * @Author susu
     */
    @Data
    public class Cke4ResponseData {
        private String uploaded;//响应结果标识 1-成功  0-失败
        private String fileName;
        private String url;
        private Error error;
    
        @Data
        @AllArgsConstructor
        @NoArgsConstructor
        public static class Error{
            private String message;// 错误信息
        }
    
        /**
        * @description: 成功响应1
        * @param uploaded
        * @param fileName
        * @param url
        * @return
        */
        public Cke4ResponseData(String uploaded,String fileName,String url){
            this.uploaded = uploaded;
            this.fileName = fileName;
            this.url = url;
        }
    
        /**
        * @description: 成功响应2
        * @param uploaded
        * @param fileName
        * @param url
        * @param error
        * @return
        */
        public Cke4ResponseData(String uploaded,String fileName,String url,Error error){
            this.uploaded = uploaded;
            this.fileName = fileName;
            this.url = url;
            this.error = error;
        }
    
        /**
        * @description: 失败响应
        * @param uploaded
        * @param error
        * @return
        * @author susu
        */
        public Cke4ResponseData(String uploaded,Error error){
            this.uploaded = uploaded;
            this.error = error;
        }
    
    
    }
    
    

4.5 编写上传图片接口

  • 如下:
    在这里插入图片描述

  • Cke4FileUploadController1代码如下:

    package com.liu.susu.controller.file_ckeditor4;
    
    import com.github.xiaoymin.knife4j.annotations.ApiSupport;
    import com.liu.susu.common.Cke4ResponseData;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.io.IOException;
    
    /**
     * description 图片上传
     * @author susu
     **/
    @RestController
    @RequestMapping("/cke4/file/upload")
    @Slf4j
    @Api(tags = "cke4-图片上传")
    @ApiSupport(author = "披荆斩棘",order = 4)
    @CrossOrigin
    public class Cke4FileUploadController1 {
    
        @PostMapping("/uploadFileTest1")
        @ApiOperation("cke4-上传图片")
        public Cke4ResponseData uploadFileTest1(@RequestPart("upload") MultipartFile upFile){
    //        String filePathName = "F:/file/uploadPath" + File.separator + upFile.getOriginalFilename();
            // 路径自己处理,上面注释那个是windows下,下面这个是Mac下的
            String fileName = upFile.getOriginalFilename();
            String filePathName = "/Users/liusuxia/file_test/image_upload" + File.separator + fileName;
    //        String filePathName = "/Users/liusuxia/file_test/image_upload/images" + File.separator + fileName;
            File file = new File(filePathName);
            try {
                if (!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
                if (!file.exists()) {
                    file.createNewFile();
                }
                upFile.transferTo(file);
                return new Cke4ResponseData("1",fileName,filePathName);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return new Cke4ResponseData("0",new Cke4ResponseData.Error("上传失败!"));
        }
    
        /**
         * 解决在creditor4插件下,上传图片之后看不到图片的问题
         * @param upFile
         * @param request
         * @return
         */
        @PostMapping("/uploadFileTest2")
        @ApiOperation("cke4-上传图片2-虚拟路径")
        public Cke4ResponseData uploadFileTest2(@RequestPart("upload") MultipartFile upFile,HttpServletRequest request){
            // 路径自己处理,上面注释那个是windows下,下面这个是Mac下的
            String fileName = upFile.getOriginalFilename();
            String filePathName = "/Users/liusuxia/file_test/image_upload" + File.separator + fileName;
            File file = new File(filePathName);
            try {
                if (!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
                if (!file.exists()) {
                    file.createNewFile();
                }
                upFile.transferTo(file);
                // 虚拟路径 用来使用editor4上传之后访问图片
                String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
                        + "/image/" + fileName;
                return new Cke4ResponseData("1",fileName,url);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return new Cke4ResponseData("0",new Cke4ResponseData.Error("上传失败!"));
        }
    
    
    }
    
    

4.6 在线接口文档测试上传图片

  • 没有处理URL的接口:
    在这里插入图片描述

  • 处理URL后的接口:
    在这里插入图片描述

5. CKEditor4中配置config.js

5.1 配置

  • 为了方便,直接拷贝了config.js,只看没有注释掉的即可,如下:
/**
 * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
 */

CKEDITOR.editorConfig = function( config ) {
	// Define changes to default configuration here. For example:
	// config.language = 'fr';
	// config.uiColor = '#AADC6E';

	// 1. 工具栏配置
	// 1.1 工具栏配置组(一般配置)
	// config.toolbarGroups = [
	// 	{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
	// 	{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
	// 	{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
	// 	{ name: 'forms', groups: [ 'forms' ] },
	// 	'/',
	// 	{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
	// 	{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
	// 	{ name: 'links', groups: [ 'links' ] },
	// 	{ name: 'insert', groups: [ 'insert' ] },
	// 	'/',
	// 	{ name: 'styles', groups: [ 'styles' ] },
	// 	{ name: 'colors', groups: [ 'colors' ] },
	// 	{ name: 'tools', groups: [ 'tools' ] },
	// 	{ name: 'others', groups: [ 'others' ] },
	// 	{ name: 'about', groups: [ 'about' ] }
	// ];

	// // 1.2 工具栏中移除不需要的按钮工具
	// config.removeButtons = 'Strike,Subscript,Superscript,Outdent,Language';

	// 2. 工具栏配置(高级配置)
	// config.toolbar = [
	// 	{ name: 'document', items: [ 'Source', '-', 'Save', 'NewPage', 'ExportPdf', 'Preview', 'Print', '-', 'Templates' ] },
	// 	{ name: 'insert', items: [ 'Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ] },
	// 	'/',
	// 	{ name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] },
	// 	{ name: 'colors', items: [ 'TextColor', 'BGColor' ] },
	// 	{ name: 'tools', items: [ 'Maximize', 'ShowBlocks' ] },
	// 	{ name: 'about', items: [ 'About' ] },
	// 	'/',
	// 	{name: 'paragraph', items: ['NumberedList', 'BulletedList', 'Language']}
	// ];


	// config.qtRows = 20, // Count of rows
	// config.qtColumns = 20, // Count of columns
	// config.qtBorder='1', // Border of inserted table
	// config.qtWidth= '60%', // Width of inserted table  占浏览器的宽度比
	// config.qtStyle= { 'border-collapse' : 'collapse' },
	// config.qtClass= 'test', // Class of table
	// config.qtCellPadding='0', // Cell padding table
	// config.qtCellSpacing= '0', // Cell spacing table
	// // config.qtPreviewBorder= '4px double black', // preview table border 
	// config.qtPreviewSize= '8px', // Preview table cell size 
	// config.qtPreviewBackground= '#c8def4' // preview table background (hover)


	// 启用皮肤
	// config.skin = 'office2013';

	// 启用插件。使用 extraPlugins 设置将插件添加到您的配置中:
	// config.extraPlugins = 'language';

	// config.extraPlugins = 'quicktable';
	config.extraPlugins = 'image2,uploadimage';
	// config.extraPlugins = 'uploadimage';


	// uploadimage 所需的配置
	// config.filebrowserBrowseUrl='/apps/ckfinder/3.4.5/ckfinder.html',
	// config.filebrowserImageBrowseUrl= '/apps/ckfinder/3.4.5/ckfinder.html?type=Images',

	// config.filebrowserUploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Files',
	// config.filebrowserImageUploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Images';

	// Upload dropped or pasted images to the CKFinder connector (note that the response type is set to JSON).
	// config.uploadUrl='/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Files&responseType=json';


	// 配置图片上传到自己的服务器上
	// config.filebrowserBrowseUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest1';
	// config.filebrowserImageBrowseUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest1';
	// config.filebrowserUploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest1';
	// config.filebrowserImageUploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest1';

	// config.uploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest1';

	config.filebrowserBrowseUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest2';
	config.filebrowserImageBrowseUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest2';
	config.filebrowserUploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest2';
	config.filebrowserImageUploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest2';

	config.uploadUrl = 'http://localhost:8993/cke4/file/upload/uploadFileTest2';
};

  • 参考例子:
    https://ckeditor.com/docs/ckeditor4/latest/examples/image2.html.

5.2 测试看效果

  • 选择图片–>上传到服务器,如下:
    在这里插入图片描述
  • 设置位置等,然后确定
    在这里插入图片描述
  • 如果不出意外,即上传成功
    在这里插入图片描述

6. 附项目

6.1 上传图片的项目

  • 如下:
    Java简单实现图片上传与下载.

6.2 CKEditor4测试项目(含测试中下载的插件)

  • 如下:
    ckeditor4(4.22.1-含上传图片、快速表格等插件) .

7. 参考

  • 关于CKEditor4案例 以及 插件的下载,请参考官网:
    https://ckeditor.com/ckeditor-4/.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1420753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jdk17新特性—— instanceof的模式匹配

目录 一、instanceof模式匹配的概述二、instanceof模式匹配代码示例2.1、jdk17之前 instanceof用法 代码示例2.2、jdk17及之后 instanceof用法 代码示例一2.3、jdk17及之后 instanceof用法 代码示例二 一、instanceof模式匹配的概述 instanceof增加了模式匹配功能,…

vue3之echarts3D环柱图-间隔版

vue3之echarts3D环柱图-间隔版 效果&#xff1a; 版本 "echarts": "^5.4.1", "echarts-gl": "^2.0.9" 核心代码&#xff1a; <template><div class"content"><div ref"eCharts" class"c…

分享4款不能错过的修改照片尺寸的软件!

在当今这个数字化时代&#xff0c;照片已经成为我们分享生活、表达观点的重要方式。但是&#xff0c;你是否曾遇到过这样的问题&#xff1a;一张精美的照片因为尺寸不合适而无法在朋友圈中展现出最佳效果&#xff1f;不用担心&#xff0c;今天我们就来聊聊那些可以帮助你轻松修…

Day02-课后练习2-参考答案(数据类型和运算符)

文章目录 巩固题1、案例&#xff1a;今天是周2&#xff0c;100天以后是周几&#xff1f;2、案例&#xff1a;求三个整数x,y,z中的最大值3、案例&#xff1a;判断今年是否是闰年4、分析如下代码的计算结果5、分析如下代码的计算结果6、分析如下代码的计算结果7、分析如下代码的计…

Real power also called true or active power

Real power also called true or active power flyfish 三相电路的总功率都等于各相功率之和&#xff0c;任意相的有功功率等于该相的相电压乘以相电流&#xff0c;再乘以该相负载的功率因数。 P P A P B P C PP_AP_BP_C PPA​PB​PC​ P有功功率&#xff0c;瓦特(W) U电压…

Springboot 实现基于用户和物品的协同过滤算法

目录 简介 协同过滤算法(简称CF) 算法详解 算法使用 基于用户 基于物品 总结 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0c;我们往往容易陷入工作的漩涡&#xff0c;忘记了停…

简单线性Dp

文章目录 线性Dp的定义AcWing 898. 数字三角形思路CODE正序倒序 AcWing 895. 最长上升子序列Dp 分析CODE AcWing 897. 最长公共子序列Dp 分析CODE 线性Dp的定义 处理起来是线性的&#xff08;&#xff1f;&#xff1f;&#xff1f;&#xff09;&#xff0c;这部分交给ai老先生…

Gurobi输出日志文件的解读【Gurobi】

本章来解读一下Gurobi的刷屏式输出&#xff0c;根本不需要cout&#xff0c;直接通过model.optimize();进行输出。 例如&#xff1a; 现在我们来逐行解读一下&#xff1a; 第一部分&#xff1a;版本型号 可以直接跳过 CPU model: 12th Gen Intel(R) Core(TM) i5-12500H, instr…

【EI会议征稿通知】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议&#xff08;CIBDA 2024&#xff09; 2024 5th International Conference on Computer Information and Big Data Applications 第五届计算机信息和大数据应用国际学术会议&#xff08;CIBDA 2024&#xff09;将于2024年3月22-24日在…

Google Chrome 中出现 ERR_SSL_KEY_USAGE_INCOMPATIBLE 错误

证书的方式发生了变化&#xff0c;出现了这个新错误&#xff0c;导致我无法浏览该网站。 可以右键属性获取位置 关闭导航器chrome并转到文件夹&#xff0c;找到Local State文件并删除 执行指令结束进程&#xff0c;重新打开浏览器即可 taskkill /im "chrome.exe"…

基于C#制作一个俄罗斯方块小游戏

目录 引言游戏背景介绍游戏规则游戏设计与实现开发环境与工具游戏界面设计游戏逻辑实现游戏优化和测试性能优化测试工具和流程说明引言 俄罗斯方块是一款经典的益智游戏,深受玩家喜爱。本文将介绍如何使用C#编程语言制作一个简单的俄罗斯方块小游戏,并探讨其设计与实现过程。…

TOFU: A Two-Step Floorplan Refinement Framework for Whitespace Reduction

TOFU: A Two-Step Floorplan Refinement Framework for Whitespace Reduction 目录 摘要一、简介二、准备工作2.1 布局规划2.2 基于约束图的合法化 3 提出的算法A 概况B 平面图合法化1&#xff09;约束图构造&#xff1a; C 两步空白删除框架1.基于位置的模块2. 基于区域重新分…

利用二分法及不动点迭代求解非线性方程(MatLab)

一、问题描述 利用二分法及不动点迭代求解非线性方程。 二、实验目的 掌握二分法及不动点迭代的算法原理&#xff1b;能分析两种方法的收敛性&#xff1b;能熟练编写代码实现利用二分法及不动点迭代来求解非线性方程。 三、实验内容及要求 二分法 (1) 编写代码计算下列数字…

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网&#xff0c;相对于有…

Vue-43、Vue中组件自定义事件

1、给学生绑定atguigu事件 2、在组件内触发事件 第二种写法 传多个参数。 解绑 解绑一个事件 解绑多个自定义事件 this.$off([xxx1,xxx2]);解绑所有事件 this.$off();总结

一文速学-selenium高阶操作连接已存在浏览器

前言 不得不说selenium不仅在自动化测试作为不可或缺的工具&#xff0c;在数据获取方面也是十分好用&#xff0c;能够十分快速的见到效果&#xff0c;这都取决于selenium框架的足够的灵活性&#xff0c;甚至在一些基于web端的自动化办公都十分有效。 通过selenium连接已经存在…

【活动回顾】CMeet 成都:转鸿蒙 对应用开发来说是否是职业发展新机会 - 圆满结束!

文章目录 前言一、活动介绍二、精彩分享内容及活动议程2.1、《COC 成都社区情况和活动介绍》2.2、“匿”问我答&#xff0c;现场互动2.3、《话题一&#xff1a;升职加薪》2.4、《话题二&#xff1a;说说鸿蒙》2.5、2023 CSDN 1024 程序员节成都站贡献人物表彰2.6、《话题三&…

谁说后端不能画出美丽的动图?让我来给大家拜个年!

今天我们要介绍的是Python的内置库——小海龟&#xff08;turtle&#xff09;&#xff0c;它是一个非常实用的绘画工具&#xff0c;不仅可以帮助我们绘制图形&#xff0c;还能让我们查看整个绘画过程。即使对绘画一窍不通的人也能够使用它来创作出生动、形象的gif动图。现在正是…

AIGC项目——Meta:根据对话音频生成带动作和手势的3d逼真数字人

From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations From Audio to Photoreal Embodiment:Synthesizing Humans in Conversations 从二元对话的音频中&#xff0c;我们生成相应的逼真的面部、身体和手势。 概括性:角色是由作者的声音驱动的(而不是模…

【获奖必看2.0】美赛小技巧之一秒输入一个公式

大家好呀&#xff0c;美赛开赛还有四天的时间&#xff0c;今天给大家带来的是美赛论文写作时非常实用的一个小技巧——快速输入任何复杂公式。 相信很多小伙伴在论文写作的时候都有一个小烦恼&#xff0c;那就是在面对比较复杂的公式的时候&#xff0c;应该怎么进行快速输入呢…