【java集成onlyoffice实现多人在线编辑的介绍和代码实现】

Java集成OnlyOffice实现多人在线编辑的具体步骤和代码实现如下: 步骤一:设置OnlyOffice服务端和前端 首先,需要搭建一个OnlyOffice服务器,可以使用Docker部署OnlyOffice服务器。具体的部署方法可以参考OnlyOffice官方文档。 然后,需要在前端页面中集成OnlyOffice编辑器。可以使用OnlyOffice提供的JavaScript API来实现,在前端页面中插入一个iframe元素,并将OnlyOffice编辑器嵌入到iframe中。具体的集成方法可以参考OnlyOffice官方文档。 步骤二:后端代码实现 创建一个Java Web项目,并添加OnlyOffice的Java SDK依赖。 创建一个Controller类,用于接收前端的请求,并将请求转发给OnlyOffice服务器。 import org.onlyoffice.core.request.Request; import org.onlyoffice.core.response.Response; import org.onlyoffice.core.service.request.CreateRequest; import org.onlyoffice.core.service.response.CreateResponse; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class OnlyOfficeController { @PostMapping("/create") public ResponseEntity<String> createFile(@RequestBody CreateRequest createRequest) { // 创建一个OnlyOffice请求对象 Request request = new Request(createRequest); // 发送请求给OnlyOffice服务器,并获取响应 Response response = request.send(); // 将响应返回给前端 return ResponseEntity.ok(response.getBody()); } } 在配置文件中配置OnlyOffice服务器的地址和访问令牌。 onlyoffice.api.url=http://localhost:8080 onlyoffice.api.token=your_token_here 步骤三:前端页面代码实现 在前端页面中发送一个请求给后端,请求后端创建一个OnlyOffice文档。 function createDocument() { var request = { fileType: "

MySQL报错:sql_mode=only_full_group_by解决方法

Linux环境 ubuntu 22.04 MySQL是8.0.35版本 问题描述 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'auth_system.t_class_temp_config.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 问题分析 这个错误是由于 MySQL 数据库的 SQL 模式中启用了 only_full_group_by,它要求在使用 GROUP BY 语句时,SELECT 中的字段必须要么包含在 GROUP BY 子句中,要么是聚合函数的参数。在查询中,SELECT 中的字段不符合这个规则,导致了错误的出现。 因为在MySQL 5.7后,MySQL默认开启了SQL_MODE严格模式,对数据进行严格校验。如果代码中含有group by聚合操作,那么select中的列,除了使用聚合函数之外的,如max()、min()等,都必须出现在group by中。 举例说明: 错误示范: select Chengdu,Shanghai from city group by Chengdu 正确示范: select Chengdu,Shanghai from city group by Chengdu,Shanghai

【Java】上传图片至阿里云oss服务器,文件上传以及图片base64上传

目录 引入maven依赖编写ossUtil编写Controller使用接口工具进行测试测试表单文件上传测试base64文件上传 首先需要在阿里云上开通oss服务,并获取到以下四个信息 endpoint: 购买的服务器节点地址accessKeyId: 接入的keyIdaccessKeySecret: 接入的key秘钥bucketName:桶名称,其实也就是一个文件夹 引入maven依赖 <!-- oss的SDK --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.17.4</version> </dependency> 编写ossUtil import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Component; import org.springframework.util.ResourceUtils; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.UUID; @Slf4j @Component public class OssUtil { private static final String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; private static final String accessKeyId = "xxxx"; private static final String accessKeySecret = "xxxx"; private static final String bucketName = "

linux安装weblogic(静默安装)

1.下载 1.1 下载jdk及weblogic安装包 1.1.1 配置jdk 1.将下载的jdk解压到安装目录 tar -zxvf jdk.tar 2.添加环境变量 vim /etc/profile #改为自己的jdk 路径 export JAVA_HOME="/xx/xx/java/java1.8" export PATH=$PATH:$JAVA_HOME/bin 保存 刷新 source /etc/profile 验证 java -version #出现这个代表jdk环境配置成功 [root@VM-4-3-centos ~]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode) 1.1.2下载weblogic weblogic官方下载地址为: https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html(需要注册登录) 阿里云盘链接 (里边有12和14版本的weblogic):https://www.alipan.com/s/RTRfdLVh8BC 提取码:58kh 下载完成后使用ftp工具上传到想要存放的文件夹中。 2.创建用户组及用户 weblogic不允许root用户进行安装 #创建用户组 groupadd weblogic #验证用户组 cat /etc/group #创建用户 # -m自动建立用户登入目录 -u指定id -g属组-d:指定用户登入时的启始目录-s:指定用户登入后所使用的shell useradd -g weblogic weblogic #验证用户是否创建成功 cat /etc/passwd #给用户设置密码 passwd weblogic #更改用户 weblogic 的密码 。 #新的 密码: #无效的密码: 密码包含用户名在某些地方 #重新输入新的 密码: #passwd:所有的身份验证令牌已经成功更新 #给用户weblogic权限 chown -R weblogic:weblogic /wz/devTool/web #给与文件夹操控权限 chmod -R 755 /wz/devTool/web 3.

解决IntelliJ IDEA 2023版本创建Spring项目时Java只能选择17或21的问题

问题描述: 当使用IntelliJ IDEA2023版本中Spring Initializr新建Spring项目时,即使JDK配置项为1.8,Java配置项仍然只能选17或21. 在JDK为1.8版本情况下,Java选择17或21,点击NEXT按钮,则会弹窗提示SDK不支持选中的java版本,请选择低版本的java版本或设置高版本的SDK 解决方案: 方案一:升级JDK版本至17或更高 此处涉及的JDK下载安装、环境变量配置就不再赘述。 方案二:替换Spring初始化的源 Spring Initializr创建项目会访问https://start.spring.io/,只需要将其替换为阿里云源https://start.aliyun.com/去创建,此时Java配置项就可以选择8。

【超详细】HIVE 日期函数(当前日期、时间戳转换、前一天日期等)

文章目录 相关文献常量:当前日期、时间戳前一天日期、后一天日期获取日期中的年、季度、月、周、日、小时、分、秒等时间戳转换时间戳 to 日期日期 to 时间戳 日期之间月、天数差 作者:小猪快跑 基础数学&计算数学,从事优化领域5年+,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法。 如有错误,欢迎指正。如有更好的算法,也欢迎交流!!!——@小猪快跑 相关文献 LanguageManual UDF - Apache Hive - Apache Software Foundation 常量:当前日期、时间戳 返回类型名称样例描述datecurrent_datecurrent_date = 2024-01-01返回查询评估开始时的当前日期(从 Hive 1.2.0 开始)。同一查询中的所有current_date调用都返回相同的值。timestampcurrent_timestampcurrent_timestamp = 2024-01-01 00:00:00返回查询评估开始时的当前时间戳(从 Hive 1.2.0 开始)。同一查询中的所有current_date调用都返回相同的值。 前一天日期、后一天日期 返回类型名称样例pre 2.1.0: string 2.1.0 on: datedate_add(date/timestamp/string startdate, tinyint/smallint/int days)date_add(‘2008-12-31’, 1) = 2009-01-01pre 2.1.0: string 2.1.0 on: datedate_sub(date/timestamp/string startdate, tinyint/smallint/int days)date_sub(‘2008-12-31’, 1) = 2008-12-30 date_sub(current_date, 1) -- 昨天 date_add(current_date, 1) -- 明天 获取日期中的年、季度、月、周、日、小时、分、秒等 返回类型名称样例描述intyear(string date)year("1970-01-01") = 1970年year("

RabbitMQ用户管理(角色管理及权限设置)

RabbitMQ用户管理(角色管理及权限设置) 1. 用户管理 1.1 查看用户列表 RabbitMQ安装完成后,会有一个默认用户(guest guest),那么我们如何查看用户列表呢? 有2种方式,第1种是登录管理后台http://localhost:15672/,在界面中查看: 第2种方式是通过命令查看: cd E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.15\sbin rabbitmqctl.bat list_users 注意:第1个命令中的路径修改为你机器RabblitMQ的安装路径。 1.2 新建用户 第1种方式是通过管理后台新建 第2种方式是通过命令新增: rabbitmqctl.bat add_user developer 123456 用户guest的tags是[administrator],而新建的用户developer的tags是[]呢,这一点会在下面的2.角色设置中讲解。 1.3 删除用户 第1种方式是通过管理后台删除: 第2种方式是通过命令删除: rabbitmqctl.bat delete_user developer 1.4 修改密码 第1种方式是通过管理后台修改密码 第2种方式是通过命令修改密码: rabbitmqctl change_password developer developer123456 2. 角色设置 RabbitMQ中主要有administrator,monitoring,policymaker,management,impersonator,none几种角色。 默认的用户guest是administrator角色,新建的developer用户没有设置角色,即为none,如果我们想把developer用户设置为administrator角色,第1种方式是通过界面修改: 注意:如果是设置多个角色,管理界面用,分隔,命令用空格分隔。 也可以通过以下命令来修改: rabbitmqctl.bat set_user_tags developer administrator 也可以给用户设置多个角色,如给用户developer设置administrator,monitoring: rabbitmqctl.bat set_user_tags developer administrator monitoring 3. 权限配置 通过界面配置用户权限 选择相对应的权限配置之后点击保存即可

Midjourney笔记

不过多介绍AIGC的基本内容 主要介绍如何精确画出想要的部分、达到自己想要的效果 最好的操作就是 上手 多练 参考 模仿 修改 调整 出图的关键:选词 + 反向关键词 + 合理调整操作(U/V) 很多英文prompt与中文有所差别,因此要留意用词 第一天生成的图: 1. 2D Animation Scene "Create a vibrant 2D animation scene featuring a whimsical forest with anthropomorphic animals having a picnic. The style should be colorful and cartoonish, with expressive characters enjoying various picnic foods. Think of bright, sunny lighting and a background that's rich in details like trees, flowers, and a small stream."

PHP+MYSQL+HTML实现在线购物商城,基于php的电商系统,电子商务网站,零食购物商城

一,功能介绍 前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯 、评论、登录、注册、加入购物车、结算、个人中心等功能模块 商品推荐、最新商品 在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作, 购物车 在购物车模块,用户可以查看购物车信息,进行订单信息修改、结算等操作, 个人中心 在个人中心模块,用户可以修改密码,查看订单信息,对订单进行收货、评价等操作 新闻咨询 在新闻咨询模块,用户可以看到新闻相关信息 登录注册模块 用户可以输入用户名、密码进行注册,并用注册的用户名密码进行登录操作 后台主要包括系分类管理、商品管理、订单管理、用户管理等功能模块。 商品管理 单击【商品管理】链接,进入商品管理界面。对商品管理进行查询、添加、修改、删除等操作 订单管理 单击【订单管理】链接,进入订单管理界面。对订单信息进行查询、管理等操作 用户管理 单击【用户管理】链接,进入用户管理界面。对用户信息进行查询、管理等操作。 分类管理 单击【分类管理】链接,进入分类管理界面。对分类进行查询、添加、修改、删除等操作。 前台: 网站首页 商品推荐 最新商品 新闻咨询 商品分类 商品资讯 评论 登录/注册 加入购物车、结算、个人中心 后台: 系统设置 分类管理 商品管理 订单管理 评价管理 新闻资讯 用户管理 二,效果展示 三,代码展示 数据库建表语句 商品表 CREATE TABLE `goods` ( `id` int(10) NOT NULL AUTO_INCREMENT, `categoryid` int(4) NOT NULL DEFAULT 0, `pnumber` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `amount` int(11) DEFAULT 0, `cishu` int(11) DEFAULT 0, `mprice` decimal(11, 1) DEFAULT NULL, `sprice` decimal(11, 1) DEFAULT NULL, `content` text CHARACTER SET utf8 COLLATE utf8_general_ci, `apv` int(4) NOT NULL DEFAULT 0, `img` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `status` int(2) NOT NULL DEFAULT 0, `addtime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, `isnice` int(2) NOT NULL DEFAULT 0, `mark1` text CHARACTER SET utf8 COLLATE utf8_general_ci, `pid` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) USING BTREE ) ENGINE = MyISAM AUTO_INCREMENT = 141 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 订单表 CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `onumber` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `userid` int(11) NOT NULL DEFAULT 0, `sex` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `tel` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `shfs` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `zffs` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `content` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `addtime` timestamp(0) DEFAULT CURRENT_TIMESTAMP, `xname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `zt` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `total` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `kuaidi` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `knumber` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `nickname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = MyISAM AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 等 注册功能实现 <?

Ubuntu22部署MySQL5.7详细教程

Ubuntu22部署MySQL5.7详细教程 一、下载MySQL安装包二、安装MySQL三、启动MySQL检查状态登录MySQL 四、开启远程访问功能1、允许其他主机通过root访问数据库2、修改配置文件,允许其他IP通过自定义端口访问 五、使用Navicat连接数据库 默认情况下,Ubuntu22安装MySQL的版本为8.0。但8.0更加严格的加密规则,使得一些配置难以实现,下面就来为大家介绍在ubuntu22中怎么安装MySQL5.7.x。 一、下载MySQL安装包 以MySQL5.7.29为例,进入MySQL官方的Community Server选择历史版本:https://downloads.mysql.com/archives/community/ 可以使用wget命令下载,或直接点击Download下载。然后将tar包放在Ubuntu的一个目录中。 使用wget命令下载tar包 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar 解压tar包 sudo tar -xvf mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar 解压后目录 二、安装MySQL 更新依赖源数据 sudo apt-get update 安装依赖lib包 sudo apt-get install ./libmysql* sudo apt-get install libtinfo5 安装客户端和服务端,按提示可能要先安装community版本 sudo apt-get install ./mysql-community-client_5.7.29-1ubuntu18.04_amd64.deb sudo apt-get install ./mysql-client_5.7.29-1ubuntu18.04_amd64.deb sudo apt-get install ./mysql-community-server_5.7.29-1ubuntu18.04_amd64.deb sudo apt-get install ./mysql-server_5.7.29-1ubuntu18.04_amd64.deb 第三行命令执行时会提示设置MySQL的密码,用户名默认root 三、启动MySQL 检查状态 一般安装成功就自动启动,输入命令检查启动状态,绿色的active表示运行中 systemctl status mysql.service 登录MySQL 使用root用户登录MySQL mysql -u root -p 输入密码后,如下界面就是进入MySQL命令行 此时mysql安装完成了,但是不能为我们的程序提供服务(使用连接工具现在是连接不上的)。 因为还需要配置远程连接,使我们可以远程登录才可以。 四、开启远程访问功能 1、允许其他主机通过root访问数据库 进入mysql库,查看user表。 表中host、user字段标识了可以访问数据库的主机和用户。

【C语言课设】经典植物大战僵尸丨完整开发教程+笔记+源码

前言 植物对抗僵尸是一款经典小游戏,初学者可以从零开始开发自己的版本,这将是一次令人期待的经历!它可以作为课程设计的一部分,也可以用来快速提升项目开发技能。 视频教程+素材资源 点击进入B站:(视频教程+素材资源) 说明:项目演示视频,在上面链接里的第一个视频,下面只展示项目截图.. 项目准备 安装Visual Studio的任意版本(推荐VS2019社区版、VS2022社区版) 安装easyx图形库(官网下载地址) 领取项目素材(回复“植物大战僵尸”,即可领取) 创建项目 使用VS创建项目,使用空项目模板: 导入素材 : 在项目目录下,创建res文件夹,把解压后的素材拷贝到res目录下。 实现游戏初始场景 代码如下(需要逐行代码视频讲解,可回复“代码讲解“)。 #include <stdio.h> #include <graphics.h> #include "tools.h" #include <mmsystem.h> #pragma comment(lib, "winmm.lib") #define WIN_WIDTH 900 #define WIN_HEIGHT 600 enum { WAN_DOU, XIANG_RI_KUI, ZHI_WU_COUT }; IMAGE imgBg; IMAGE imgBar; IMAGE imgCards[ZHI_WU_COUT]; IMAGE* imgZhiWu[ZHI_WU_COUT][20]; int curZhiWu; int curX, curY; //当前选中植物在移动过程中的坐标 struct zhiWu { int type; // >=1 0:没有植物 int frameIndex; }; struct zhiWu map[3][9]; int sunshine; int sunshineTable[ZHI_WU_COUT] = { 100, 50 }; void gameInit() { loadimage(&imgBg, "

SQL Server —— While语句循环

一:简介 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。 while: break, 如果有多条语句可以在while后面添加begin-end。关于while的语法 while(条件) -- begin -- 语句1 -- 语句2 -- break 根据情况是否添加break -- end 二 关于While的实例1 把10条数据添加一个表中 create table S1 ( id int not null primary key identity(1,1), name varchar(10) not null default ('') ) declare @count int set @count = 0 while(@count<10) begin set @count = @count + 1 insert into S1(name) values ('鲁班'+ CONVERT(varchar(10), @count)+'号') end select * from S1 执行后效果图如下 三 关于while循环的实例2 循环例子 把成绩csharp小于60 修改成60

建议收藏,Java 命名规范(非常全)

在本文中,将从大到小,从外到内,总结Java编程中的命名规范。文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方法命名,变量命名,常类命名,抽象类命名,异常类命名以及扩展类命名等。我将按照项目工程目录结构,从包,类(接口,抽象类,异常类),方法,变量和常量的顺序展开介绍。 本文是 Java 命名规范的介绍,建议收藏转发。 1. 包命名规范 包(Package)的作用是将功能相似或相关的类或者接口进行分组管理,便于类的定位和查找,同时也可以使用包来避免类名的冲突和访问控制,使代码更容易维护。通常,包命使用小写英文字母进行命名,并使用“.”进行分割,每个被分割的单元只能包含一个名词。 一般地,包命名常采用顶级域名作为前缀,例如com,net,org,edu,gov,cn,io等,随后紧跟公司/组织/个人名称以及功能模块名称。下面是一些包命名示例: package org.springframework.boot.autoconfigure.cloud package org.springframework.boot.util package org.hibernate.action package org.hibernate.cfg package com.alibaba.druid package com.alibaba.druid.filter package com.alibaba.nacos.client.config package com.ramostear.blog.web 下面是Oracle Java的一些常见包命名例子: package java.beans package java.io package java.lang package java.net package java.util package javax.annotation 2. 类命名规范 类(Class)通常采用名词进行命名,且首字母大写,如果一个类名包含两个以上名词,建议使用驼峰命名(Camel-Case)法书写类名,每个名词首字母也应该大写。一般地,类名的书写尽量使其保持简单和描述的完整性,因此在书写类名时不建议使用缩写(一些约定俗成的命名除外。 例如 Internationalization and Localization 缩写成i18n,Uniform Resource Identifier缩写成URI,Data Access Object缩写成DAO,JSON Web Token缩写成JWT,HyperText Markup Language缩写成HTML等等)。下列是一些常见的类命名示例: public class UserDTO{ } class EmployeeService{ } class StudentDAO{ } class OrderItemEntity{ } public class UserServiceImpl{ } public class OrderItemController{ } 下面是 Oracle Java 中的一些标准命名示例:

盲水印、暗水印(Blind Watermark)算法简明教程:算法原理、流程以及基于C/C++ 的代码实现

前言 由于工作需要,最近学习了盲水印相关的知识,本文对学习过程中做一个整理和总结。主要内容包括: 对盲水印相关概念做基本介绍对开源的 python 算法 blind_watermark 进行解析,给出算法流程基于 blind_watermark,给出了对应的 C/C++ 实现代码,你可以在 cpp_blind_watermark 找到所有代码 一、Blind Watermark 简介 盲水印(blind watermark)算法是一种将数字水印嵌入到数字媒体中的技术,而不需要原始媒体文件。与传统的数字水印技术不同,盲水印算法不需要原始媒体文件来提取数字水印,因此更加安全和隐私保护。 盲水印算法的基本原理是将数字水印嵌入到数字媒体的频域或空域中,使得数字水印能够在不影响原始媒体质量的情况下被提取出来。盲水印算法通常包括两个主要步骤:嵌入和提取。 在嵌入阶段,数字水印被嵌入到数字媒体中。这通常涉及到将数字水印转换为频域或空域信号,并将其嵌入到数字媒体中。嵌入过程需要考虑数字水印的鲁棒性和不可见性,以确保数字水印能够在不影响原始媒体质量的情况下被提取出来。 在提取阶段,数字水印被提取出来。这通常涉及到对数字媒体进行一些处理,以提取数字水印。提取过程需要考虑数字水印的鲁棒性和准确性,以确保数字水印能够被正确地提取出来。 盲水印算法在数字版权保护、数字身份认证和数字隐私保护等领域具有广泛的应用。它可以帮助数字内容提供商保护其版权,防止盗版和侵权行为;也可以帮助用户保护其数字身份和隐私,防止个人信息被泄露。 二、算法流程 本章分析 blind_watermark 中算法逻辑 2.1 水印嵌入 整体流程如下图,接下来对各个阶段做详细的解释。 2.1.1 水印二进制化 水印可以是各种形式的信息,包括字符串、图片等。为了嵌入这些信息,我们首先需要将水印转换为二进制形式,即由0和1组成的数组。例如,我们可以将字符串转换为二进制数组。以下是一种实现方法: byte = bin(int(wm_content.encode('utf-8').hex(), base=16))[2:] self.wm_bit = (np.array(list(byte)) == '1') 在上面的代码中,首先将字符串类型的水印信息 wm_content 转换为十六进制格式,然后使用 int() 函数将其转换为整数。接着,使用 bin() 函数将整数转换为二进制格式,并去掉前缀 ‘0b’,得到一个字符串类型的二进制数。最后,使用 np.array() 函数将字符串转换为一个由 ‘0’ 和 ‘1’ 组成的数组,并将其与 ‘1’ 做比较,得到一个布尔类型的数组 self.wm_bit,其中 True 表示对应位置为 ‘1’,False 表示对应位置为 ‘0’。 除了上述方法外,如果水印信息由 ASCII 码组成,也可以直接将每个字符转换为 8 位的二进制字符串,然后将这些字符串拼接成一个二进制数组。这个过程可以使用 Python 内置的 bin() 函数和字符串操作来实现。

java中的Calendar.add()方法

abstract public void add(int field, int amount); 两个参数,第一个参数表示类型,总共1-14;1代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作。 第二个参数则是加或者减指定的 年/月/周/日/时/分/秒/毫秒 例子: Calendar calendar = Calendar.getInstance(); calendar.add(5,1); //则表示对日期进行加一天操作 //测试: Calendar cal = Calendar.getInstance(); cal.add(5,-1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String day = sdf.format(cal.getTime()); System.out.println(day); 源码: public void add(int field, int amount) { // If amount == 0, do nothing even the given field is out of // range. This is tested by JCK. if (amount == 0) { return; // Do nothing!

一手借东风,Reddit把用户「卖」了个好价钱;AI增强搜索工具清单(私藏版);2024年Star飙升的LLM学习路线图;AIGC教育行业全景报告 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🉑 国产大模型进入生态构建阶段,纷纷出炉开发者激励计划 https://www.moonshot.cn 2月5日,月之暗面 Moonshot AI 开放平台正式启动公开测试。 目前,Moonshot AI 开放平台提供 moonshot-v1-8k / 32k / 128k三个基础。开发者注册后都将获得价值 15 元的体验包,相当于 125 万 tokens (8k模型) 或 62.5 万 tokens (32k模型) 用量的价值。 尤其值得注意的是,平台 API 与 OpenAI 兼容,方便开发者进行平滑迁移 ⋙ 了解详情 https://api.minimax.chat/cooperation-partners 2月14日,MiniMax 发布「大法师计划」招募开发者,并宣布为全球大模型初创公司和开发者免费提供 2000 亿 tokens ⋙ 申请入口 智谱 AI 近期也推出智能体创作者激励计划,提供最高50万元 tokens 支持额度,以及多项流量/宣传/投资支持,鼓励创作者积极创作 ⋙ 保持关注 👀 Reddit 与某公司达成数据授权协议:终于搭上了AI的东风!收拾收拾,准备第三轮 IPO https://arstechnica.com/information-technology/2024/02/your-reddit-posts-may-train-ai-models-following-new-60-million-agreement 补充一份背景:Reddit 是一个新闻聚合和讨论的论坛,有「美版贴吧」之称:按照主题划分不同的讨论版块,用户可以就共同感兴趣的话题进行讨论 2021年12月,Reddit 首次申请上市。2022年1月,Reddit邀请摩根士丹利与高盛银行协助上市事宜,但因为市场环境变化且美股 IPO 迅速冻结,Reddit 上市这件事也就没了下文。 日前有消息显示,Reddit 将与一家未透露名称的「大型AI公司」达成一项数据授权协议:允许后者访问其用户生成的内容,并且对方可基于Reddit海量用户生成的内容开发训练自己的AI大模型,且每年续签。

Android Studio项目gradle下载慢问题

一、问题起因 通过Android studio新建了一个Android项目,同步gradle居然花费了30多分钟。忍不了,真的忍不了。 二、原因分析 1. 通过观察日志耗时情况 发现耗时主要集中在两方面:gradle下载和gradle依赖下载,如下图所示,gradle下载耗时24分钟,gradle依赖下载耗时7分钟 PS:源耗时日志没了,上图是小编为了写博客后补的,可真是煎熬的30分钟啊,如此敬业,这你不得点个赞? 2. 查看gradle-wrapper.properties 文件路径gradle/wrapper/gradle-wrapper.properties gradle-wrapper.properties是Gradle Wrapper的配置文件,用于指定Gradle版本。通过配置这个文件,可以确保项目在不同的环境中使用相同版本的Gradle进行构建。Gradle Wrapper的目的是解决不同机器上Gradle版本不一致的问题,通过配置gradle-wrapper.properties文件,项目可以在任何环境下自动下载并使用正确的Gradle版本进行构建。 查看后发现,默认使用的地址为https://services.gradle.org/distributions/gradle-8.2-bin.zip。 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 提示:可能你的gradle版本与小编不同,但并无影响 通过ip查询工具,可发现services.gradle.org域名所在地理位置为美国。呵呵!国外源,慢得理所应当。 3. 查看settings.gradle.kts 文件路径根目录 settings.gradle.kts文件是Kotlin DSL格式的settings文件,它用于配置项目的模块结构。在这个文件中,你可以声明项目中包含哪些模块、这些模块之间的依赖关系,以及全局的构建逻辑。在新版本gradle中,settings.gradle.kts文件还承担了仓库配置的工作,而这也是我们关注的重点 通过Android studio新建的项目,gradle仓库配置默认如下 pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "Demo" include(":app") 通过ip查询工具,分别查询地理位置,默认源同样均在国外 配置地址地址位置google()https://maven.google.com/美国mavenCentral()https://repo1.maven.org/maven2/瑞典gradlePluginPortal()https://plugins.gradle.org/m2/美国 行吧,国外源,网络情况不理想,下载速度相对较慢,慢得有理有据。 三、解决方式 对于上述问题,常见的解决方式无非走VPN代理或通过国内镜像源加速,由于合规的VPN代理需要申请,本文主要讲解通过国内镜像源加速的方式。有合规VPN代理的观众老爷们可以撤了。 1. gradle下载慢解决方案 常见的解决方案包括:使用gradle离线下载 或 通过gradle国内镜像源加速 个人觉得,gradle离线下载相对麻烦,不展开讲解。感兴趣的同学可自行百度gradle离线下载 对比gradle离线下载,通过gradle国内镜像源相对方便些,国内知名的gradle镜像源,包含阿里云和腾讯云 阿里云gradle镜像源:https://mirrors.aliyun.com/gradle腾讯云gradle镜像源:https://mirrors.cloud.tencent.com/gradle/ 可惜的是,阿里云gradle镜像源截至2019年就不再更新,gradle版本也停留在了gradle-5.6.2,若你使用的是gradle-5.6.2以上版本,更推荐你使用腾讯云gradle镜像源,使用方式如下: 替换https\://services.gradle.org/distributions为https\://mirrors.cloud.tencent.com/gradle distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 2.

spark内存溢出怎么办

Spark内存溢出(OOM,Out Of Memory)通常指的是在执行任务时,Executor或Driver的内存资源不足以容纳运行中的数据和中间结果,从而导致应用程序崩溃。以下是一些解决Spark内存溢出问题的方法: 增加Executor内存: 调整 spark.executor.memory 参数来增大每个Executor可用的堆内内存大小。同时考虑调整 spark.executor.memoryOverhead 参数,为非堆内存分配更多空间,如JVM元数据、压缩缓存等。 优化数据分区与并行度: 减少分区数可以减少Driver端需要维护的状态信息量,通过设置 spark.sql.shuffle.partitions 等参数避免Driver内存溢出。对于shuffle操作,合理设置分区数以平衡并行处理能力和内存使用。 降低数据序列化开销: 使用高效的序列化库,例如 Apache Kryo,通过配置 spark.serializer 和相关参数来减少对象占用的内存。配置 spark.kryoserializer.buffer.max 以适应大数据量的序列化。 控制广播变量和累加器的大小: 检查是否因为广播变量过大导致内存溢出,尽量减小它们的大小。 启用动态资源分配: 如果在集群模式下运行,开启 spark.dynamicAllocation.enabled 功能,让Spark根据任务需求自动调整Executor数量和内存资源。 限制shuffle操作后的内存使用: 设置 spark.shuffle.memoryFraction 来控制shuffle过程中使用的内存比例。对于join和groupByKey等可能导致大量数据聚集的操作,确保有足够的内存用于shuffle过程中的缓冲区和聚合。 溢写到磁盘: 在shuffle过程中,Spark会尝试将数据溢写到磁盘,可通过配置相关参数来优化溢写行为,如 spark.shuffle.spill.compress 开启溢写数据压缩。 针对Driver内存溢出: 如果是Driver内存溢出,可以增加 spark.driver.memory 参数值。若是因为collect操作将过多数据拉取到Driver导致溢出,则应避免一次性collect大表数据,或者增大 spark.driver.maxResultSize 参数值。 检查是否存在内存泄漏: 使用工具分析应用是否存在长时间持有大量对象引用,造成无法释放的问题,如果是内存泄漏则需修复代码逻辑。 针对性调优: 分析具体作业逻辑,对特定操作进行深入调优,比如避免不必要的数据缓存,或者采用更高效的数据处理算法。 综上所述,解决Spark内存溢出问题需要综合分析应用场景和具体错误日志,结合上述策略调整资源配置和优化代码实现。

如何安装java8、java17/jdk、jre/java与配置环境变量?(详细图解)

前提:为什么要安装两个java?因为有的程序/软件/靶场/工具等需要的java环境不同,安装两种可满足不同的需求。java10以下一种,java8很经典也很常用,java10以上的一种,这里以java17举例,因为官网最新的java10以上的正好是java17,就以java17举例。 目录 一、java8安装 1.官网/网盘自取获取java安装包 2.下载jdk 3.下载jre 4.配置环境变量 5.测试是否成功! 二、java17安装/java8与java17同存在的方法 1.下载安装步骤和java8安装相同 2.配置环境变量并测试 (1)java8和java17的JDK路径一致 (2)配置环境变量 (3)修改java17的名称,避免重复 (4)测试是否成功! 三、遇到的问题及解决方法 1.不知道系统版本 2.安装jre的其他方法 (1)命令行安装 (2)官网安装 3.java -version无反应 4.java安装中报错代码 (1) Error 1601 (2) Error 1603 (3) Error 25025 5.提示:“javac“不是内部或外部命令,也不是可运行的程序或批处理文件。 6.上述方法未解决的情况/故障排除六步法 一、java8安装 1.官网/网盘自取获取java安装包 链接: https://pan.baidu.com/s/1p4EvJgIU8cV5pdkZVsVhPg 提取码: ntis 复制这段内容后打开百度网盘手机App,操作更方便哦 https://www.oracle.com/java/technologies/downloads/ 下滑选择java8 --> Windows --> x64位 选择对应的版本,正常win10、win11都是64位。 下载完成后双击 2.下载jdk 3.下载jre 注:jdk与jre建议都下载在同一文件夹下。 直接点击关闭即可 安装完成后可以在控制面板看到 控制面板 --> 程序 --> 程序和功能 4.配置环境变量 右键此电脑 --> 属性 系统 --> 高级系统设置 配置系统变量 CLASSPATH #变量名 .

华为交换机如何配置Web网管登录?直接用网页管理交换机

Web网管是一种对交换机的管理方式,它利用交换机内置的Web服务器,为用户提供图形化的操作界面。用户可以从终端通过HTTPS登录到Web网管,对交换机进行管理和维护,同时也非常方便。 一、配置思路: 1、配置管理IP地址,便于后续通过Web网管登录交换机。 2、加载Web网页文件。 3、配置Web用户并进入Web网管登录界面。 二、配置步骤: 1、配置管理IP地址 <HUAWEI> system-view [HUAWEI] sysname HTTPS_Server [HTTPS_Server] vlan 10 [HTTPS_Server-vlan10] quit [HTTPS_Server] interface vlanif 10 //配置VLANIF10作为管理接口。 [HTTPS_Server-Vlanif10] ip address 192.168.0.1 24 //请根据网络规划进行IP地址的配置以及路由的部署,确保用户终端与交换机之间路由可达。 [HTTPS_Server-Vlanif10] quit [HTTPS_Server] interface gigabitethernet 1/0/10 //GE1/0/10为使用Web网管登录Switch的PC与Switch相连的物理接口编号,请按照实际现网情况进行选择。 [HTTPS_Server-GigabitEthernet1/0/10] port link-type access //配置接口类型为access。 [HTTPS_Server-GigabitEthernet1/0/10] port default vlan 10 //配置接口加入VLAN 10。 [HTTPS_Server-GigabitEthernet1/0/10] quit 2、加载web文件 在用户视图下执行命令 dir,可以查看交换机自带的Web网页文件名称。 <HUAWEI> system-view [HUAWEI] sysname HTTPS_Server [HTTPS_Server] http server load web.7z //加载Web网页文件。此处名为web.7z的Web网页文件仅为示例。 3、开启HTTPS服务 [HTTPS_Server] http secure-server enable //HTTPS服务默认开启,默认情况下用户可以不用配置。如果HTTPS服务被人为关闭,则需要此命令开启。 4、配置Web用户并进入Web网管界面 # 配置Web用户。