JDK1.8 环境变量配置

1、点击我的电脑,右键选择属性,选择高级系统设置,然后点击高级系统设置 2、点击环境变量 3、新建系统变量JAVA_HOME,变量值为JDK的安装路径 4、创建 CLASSPATH ,变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意:变量值前面的“.”要保留 5、找到Path变量并编辑,点击新建,值为%JAVA_HOME%\bin,并把当前值移动到最前面,然后点击确定保存 此处之所以将配置移动到最前面,是为了能够将此配置的优先级调到最高,避免受到其他配置值影响,导致配置不生效 6、打开命令行,输入java -version,如下图显示,即说明jdk配置成功

Windows用户相关Dos命令演示

Windows用户相关Dos命令演示 1、查看当前用户 命令:whoami 2、查看主机名 命令: hostname 3、查看所有用户 命令:net user 4、查看指定的用户 命令:net user 用户名 5、添加用户 命令:net user 用户名 密码 /add 注意,如果不写密码为空密码。 6、删除用户 命令:net user 用户名 /del 例如删除用户abc 7、修改用户密码 命令:net user 用户名 密码 8、设置用户激活或禁用 命令:net user 用户名 /active:yes(no) 9、查看所有本地用户组 命令:net localgroup 10、查看指定的用户组 命令:net localgroup 本地用户组名 11、添加、删除指定本地用户组 命令:net localgroup 用户组名 /add net localgroup 用户组名 /del 12、添加用户到指定的本地用户组 命令:net localgruop 本地用户组名 用户名 /add 13、删除指定本地用户组中的用户 命令:net localgroup administrators tt /del

SSM整合 spring-mybaits配置文件——设置数据库字段名驼峰命名规则

一、简介:mybatis是支持属性使用驼峰的命名 如下java代码 public class Role { private Integer id; private String roleName; private String roleKey; private Integer orderNum; private Integer roleType; private String remark; ...省略set,get方法 } 列名是有下划线的 像上面这样设计是需要配置下划线与驼峰式命名规则的映射 mapUnderscoreToCamelCase:是否启用下划线与驼峰式命名规则的映射(如first_name => firstName) <setting name="mapUnderscoreToCamelCase" value="true"/> 二、在SSM整合中的配置 方式一: 在applicationContext-dao.xml中引入mybatis配置 <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据库连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 加载Mybatis全局配置文件 --> <property name="configLocation" value="/WEB-INF/classes/mybatis/SqlMapConfig.xml"/> </bean> SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!

Vue3 面试题 | 06.精选 Vue3 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》 文章目录 Vue 3中的插槽有什么变化?Vue 3中的响应式数据更新是如何触发的?Vue 3中的computed和watch有什么不同?Vue 3中的虚拟DOM是如何工作的? Vue 3中的插槽有什么变化? 在 Vue 3 中,插槽的语法和功能与 Vue 2 基本相同,但是有一些小的差异。 在 Vue 2 中,你可以使用 slot 属性来定义插槽,使用 <slot> 元素来插入插槽内容。例如: <template> <div> <h1>我的组件</h1> <slot /> </div> </template> <script> export default { name: 'MyComponent' } </script> 在上面的示例中,<slot> 元素用于插入子组件的内容。 在 Vue 3 中,slot 属性和 <slot> 元素仍然可以使用,但是现在还支持另一种语法:v-slot 指令。v-slot 指令可以用于定义具名插槽和作用域插槽。例如: <template> <div> <h1>我的组件</h1> <template v-slot:default> 默认插槽内容 </template> <template v-slot:header> 头部插槽内容 </template> </div> </template> <script> export default { name: 'MyComponent' } </script> 在上面的示例中,我们使用 v-slot:header 指令定义了一个具名插槽 header,使用 v-slot:default 指令定义了一个默认插槽。具名插槽可以在子组件中通过 v-slot 指令来引用,而默认插槽则可以直接插入内容。

Autosar Dcm模块介绍

DCM模块介绍 诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。 主要功能贯穿汽车的开发生产及售后等过程,如开发过程中EMC、DV等实验均可使用诊断服务实现,生产过程中的软件下载更新、ECU产线EOL、汽车产线EOL等、售后过程中读取DTC、控制输出调试功能等。 DCM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)。 从网络分层角度看,DCM模块属于上层模块,主要为应用层提供服务。主要包括5-7层,包括会话层服务及应用层等,会话层包括服务定时及服务分配等,应用层为具体的服务功能实现。 在AUTOSAR架构中,Dcm(Diagnostic Communication Manager)模块位于通信服务层。Dcm模块是独立于具体的网络的(不依赖于具体的CAN,Lin,Eth,Flexray等网络来实现)。PduR模块为Dcm模块提供独立于具体网络的接口。Dcm模块从PduR模块接收诊断信息,Dcm模块在内部处理和检查诊断消息。作为处理所请求的诊断服务的一部分,Dcm将与其他BSW模块或SW-Components(通过RTE)交互,以获取所请求的数据或执行所请求的命令。诊断服务处理与特定的服务请求强绑定(不同的诊断请求依赖于不同的一个或几个模块来实现)。通常,Dcm将汇集收集到的信息,并通过PduR模块发送回消息。 DCM模块与Autosar其他模块关系 AUTOSAR 诊断通信管理器 (DCM) 具有与以下基本软件模块和 SW-C 的接口和依赖项: Dcm和Dem的交互:DEM模块提供了检索与故障内存相关的所有信息的功能,以便Dcm模块能够通过从故障内存中读取数据重新响应测试人员的请求,通俗的讲就是Dcm能够读取Dem记录的DTC信息。 Dcm和PduR的交互:PduR模块接收和发送诊断数据。PduR为Dcm模块提供一个与具体通信协议无关的接口。 Dcm和ComM模块的交互:Dcm模块可以指示状态“活动”和“非活动”用于诊断通信。Dcm模块提供了处理通信需求“完全/静默/无通信”的功能。此外,Dcm模块提供了在ComM模块要求时启用和禁用诊断通信的功能。 SWC通过和RTE接口和Dcm交互:Dcm模块在完成诊断功能的时候需要通过RTE接口来读写/函数调用其他SWC的数据/服务。 BswM和Dcm模块的交互:如果Dcm的初始化是从引导加载程序跳转的结果,则Dcm通知BswM应用程序已更新。Dcm也向BswM指示通信模式的改变。 DCM子模块概述 诊断通信管理(DCM)主要包括三个子模块:诊断服务层(Diagnostic Service Layer,DSL)、诊断服务调度(Diagnostic Service Dispatcher, DSD)、诊断服务处理(Diagnostic Service Processing, DSP) Diagnostic Service Layer:确定诊断数据请求和响应的数据流;监控和确保诊断请求和响应的时序,管理诊断状态(特别是诊断会话和安全状态) Diagnostic Service Dispatcher:接收到的诊断请求转发给数据处理器;当数据处理器触发时,通过PDUR传输诊断响应。 Diagnostic Service Processing:处理实际的诊断请求。 总结 上文主要对Dcm模块做了简单的介绍,主要参考autosar的官方文档。下面的几个章节主要讲述如何通过Vector工具配置Dcm模块。

将latex的公式转word或mathtype,latex表格转word,word的批量操作的技巧(删除latex的\ref{}引用格式、空白行、每段首行缩进、奇偶页眉、参考文献引用上标)

起因是论文查重需要word版本,所以我需要把latex生成的pdf转化成word,但是用pdf转化器转化的结果是一块一块的,虽然看起来排版一样,但是句子之间不是整体,所以我只好手动进行latex源码转word。后面觉得word自带的公式格式不太好看,又想转为mathtype的格式。然后,还想找到便捷的不需要安装太多东西的表格转化方式。此外,还需要批量删除一些latex的引用格式诸如等,增加一些word中的参考文献引用上标、奇偶页眉,删除latex每段之间的空白行、让正文每段首行缩进2字符。 在这个过程中我遇到的主要问题是: 有没有便捷的latex公式转word的方法呢?mathtype如何便捷地进行公式编号右对齐呢?(word自带公式右对齐很方便,详细见Word公式编号右对齐快捷操作 - 知乎)自动编号是从(1.1)开始,那么如何设置成从(2-1)开始呢?mathtype右对齐功能需要完整版,试用期到期了怎么办呢?如何快速将latex表格转化为word表格?批量删除latex引用内容的通配符表达方式是什么?如何批量将"[1]"类型的参考文献引用标注设为上标?如何批量设置奇偶页眉,使奇数页是各章的标题,偶数页是“xx大学论文”?如何批量删除每段之间的空白行?如何保持标题格式不变让所有正文首行缩进2字符? 一、便捷的latex公式转word方法 1.在线网站直接转word公式(mathtype也可以) 那么如何将latex的公式转word呢?,我查了一圈,看到很多人要么推荐word自带的latex转换器,要么推荐pandoc,但是怎么没有人推荐这个网站!!! 在线LaTeX公式编辑器-编辑器 还是我偶然发现的,在线就能导出word和mathtype的公式,还是在线的,免费的,转换率也准确。具体过程如下: 复制粘贴latex代码,就能输出word公式和mathtype公式,下面.docx就是word自带的公式格式,MathML就是mathtype格式,复制后直接粘贴在word里就好,mathtype可以自动识别生成。 -> ①将MathML粘贴到word的结果: -> ②直接下载word的结果: 2. 利用mathtype自带的latex转化功能 主要步骤: 把需要转化的代码包上$$选中$$围起来的代码,按alt+\即可(纯大写字母不能直接转换)但是需要完整版mathtype,如果30天试用期到期了,可以参考这个博客的解决办法:http://t.csdnimg.cn/keEjc ->-> 结果: 二、mathtype便捷实现公式编号格式修改 右对齐:复制上述生成的mathtype代码->点击工具栏的右编号->粘贴 ->-> 编号:章&节->修改分隔符,将节设置为2。 ->-> 分隔符:插入编号->格式化->separator栏改为-。 ->-> 解决思路来源:Word技巧之Mathtype插入公式以及公式编号问题 - 知乎 三、便捷的latex表格转为word表格方法 利用AI转化,可以按如下提示词进行提问: 1.将这段latex代码生成markdown格式:“输入表格代码” 2.将这段markdown格式变成word呈现的表格:“输入上面AI生成的markdown数据” PS1:简单的表格可以直接从pdf复制,然后同样让ai转化为word呈现的表格即可。复制粘贴,注意应划选表格进行复制,不要直接用旁边的复制快捷按钮 PS2:AI有时候没办法直接将markdown生成word表格结果,可以用在线markdown转word的工具。markdown生成的表格有时候单元格过于分散,调整单元格排版的方式见第五部分。 我使用的AI问答网站(免费、无次数限制、不需要联外网):AItianhu 如果上述的无法访问了,可以参考下面的ai工具合集,找一个能用的:GitHub - LiLittleCat/awesome-free-chatgpt: 🆓免费的 ChatGPT 镜像网站列表,持续更新。List of free ChatGPT mirror sites, continuously updated. 快速访问github地址链接:GitHub 加速下载 - 在线工具 我使用的markdown转word的工具(不需要上传文件,直接复制粘贴就可以生成):在线编写markdown,预览,导出pdf,word,html,下载md-在线工具-postjson ,Editor.md - 开源在线 Markdown 编辑器 四、解决word的批量操作的问题 批量删除latex引用内容的通配符表达方式是什么? 替换时的通配符:{}需要改成\{\},\也需改为\\ 例如:如果想要将批量删除,可以在替换中输入“~\\ref\{*\}” 如何批量将"[1]"类型的参考文献引用标注设为上标? 【Ctrl+H】->【更多】->【查找(适用两位编号,三位为{1,3})】->光标置于【替换为】,点击【格式】-【字体】,勾选【上标】,勾选使用通配符 PS:有朋友知道csdn如何显示 吗?我尝试了给方括号、大括号部分或全部的加转义斜杠的组合,结果这些转义斜杆都显示出来了,但是如果不加的话这些括号之类的又都没有了。类似的还有,不加转义斜杆直接变成,加了就会显示斜杠,所以没办法我只能直接截图了,知道的朋友可以在评论区里回复一下,十分感谢!!!

什么是JVM的内存模型?详细阐述Java中局部变量、常量、类名等信息在JVM中的存储位置

导航: 【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/黑马旅游/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码-CSDN博客 目录 一、JVM基本介绍 二、JVM内存模型 2.0 概述 2.1 类加载子系统 2.2 运行时数据区 2.2.0 基本介绍 2.2.1 本地方法栈:由C语言实现 2.2.2 Java方法栈(虚拟机栈) 2.2.3 方法区 2.2.3.1 基本概念 2.2.3.2 实现方式:永久代和元空间 2.2.3.3 组成元素:类常量池、运行时常量池、字符串常量池 2.2.4 堆 2.2.5 程序计数器(PC寄存器) 2.3 执行引擎 一、JVM基本介绍 我们经常说Java是一个跨平台的语言,因为它是运行在Java虚拟机上(JVM)的。 在Java程序的实际编译、运行过程中,编译器将Java源代码编译成字节码文件后,JVM将字节码翻译成特定平台的机器码运行程序。 实际上,Java是跨平台的,JVM不是跨平台的,我们在Linux、windows等系统中安装对应版本的JVM后,同一个Java代码在这些JVM上运行,从而起到跨平台的效果。 JDK、JRE、JVM、Java的区别: JVM是Java虚拟机,JRE是Java运行环境,JDK是个Java开发的工具包,Java是门编程语言。 JVM(Java Virtual Machine):是Java虚拟机,是Java程序运行的基础,它将Java程序编译后的字节码解释执行,并将其转换为机器码运行。JRE(Java Runtime Environment):是Java运行环境,包括了JVM以及Java程序运行所需的类库等。JDK:Java开发工具包,包括了JRE以及用于Java开发的工具,如编译器(javac)、调试器(jdb)、打包工具(jar)等。 二、JVM内存模型 2.0 概述 JVM由三大部分组成:类加载子系统、运行时数据区、执行引擎。 2.1 类加载子系统 类加载子系统:通过类加载机制加载类的class文件,如果该类是第一次加载,会执行加载、验证、解析。只负责class文件的加载,至于是否可运行,则由执行引擎决定。 JVM中,类加载过程是在类加载子系统完成的。 类加载过程:加载 --> 链接(验证 --> 准备 --> 解析) --> 初始化 类加载过程:加载、链接(验证、准备、解析)、初始化。这个过程是在类加载子系统完成的。 加载:生成类的Class对象。 通过一个类的全限定名获取定义此类的二进制字节流(即编译时生成的类的class字节码文件)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。包括创建运行时常量池,将类常量池的部分符号引用放入运行时常量池。在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类各种数据的访问入口。注意类的class对象是运行时生成的,类的class字节码文件是编译时生成的。 链接:将类的二进制数据合并到JRE中。该过程分为以下3个阶段: 验证:确保代码符合JAVA虚拟机规范和安全约束。包括文件格式验证、元数据验证、字节码验证、符号引用验证。 文件格式验证:验证字节码文件是否符合规范。 魔数:是否魔数0xCAFEBABE开头版本号:版本号是否在JVM兼容范围常量类型:类常量池里常量类型是否合法索引值:索引值是否指向不存在或不符合类型的常量。元数据验证:元数据是字节码里类的全名、方法信息、字段信息、继承关系等。 标识符:验证类名接口名标识符有没有符合规范接口实现方法:有没有实现接口的所有方法抽象类实现方法:有没有实现抽象类的所有抽象方法final类:是不是继承了final类。指令验证:主要校验类的方法体,通过数据流和控制流分析,保证方法在运行时不会危害虚拟机安全。 类型转换:保证方法体中的类型转换是否有效。例如把某个类强转成没继承关系的类跳转指令:保证跳转指令不会跳转到方法体以外的字节码指令上;保证任意时刻操作数栈的数据类型与指令代码序列都能配合工作。符号引用验证:确保后面解析阶段能正常执行。 类全限定名地址:验证类全限定名是否能找到对应的类字节码文件引用地址:引用指向地址是否存在实例引用权限:是否有权引用准备:为类变量(即static变量)分配内存并赋零值。解析:将方法区-运行时常量池内的符号引用(类的名字、成员名、标识符)转为直接引用(实际内存地址,不包含任何抽象信息,因此可以直接使用)。 初始化:类变量赋初值、执行静态语句块。

区块链之零知识证明(zk-SNARK从小白到明白)

零知识证明:从小白到明白 如今,知识快餐业发达,区块链这么火的领域自然不会落下。经过一轮轮扫盲,共识、工作量证明、闪电网络等等概念对普罗大众已不再陌生,甚至各种解构、比喻、引申,将术语炒得比本义还玄乎。然而,如果不理解甚至没听说过零知识证明,那你基本还属于区块链小白。 之所以这么说,原因有二。其一, 零知识证明是代数数论、抽象代数等数学理论的综合应用,与闪电网络一类的精巧设计不同,属于硬技术。如果不是数学科班出生,它引入的概念、符号会让人眼花缭乱。V神(以太坊ethreum的创始人。本名Vitalik Buterin,对于国人而言,这名字读起来有点困难,同时考虑到这位90后小哥创造以太坊时才19岁,因此币圈尊称其“V神”)在一篇介绍零知识证明的文章中就提醒读者看不懂也不要怀疑自己的智商,因为“它实在是太难了!”因此,能坚持搞懂的,一定是意(固)志(执)力有异常人。呵呵,过奖了o(* ̄︶ ̄*)o! 其二,零知识证明解决了区块链应用的一个根本问题。区块链的应用价值在于去中性化共识,无论是货币交易还是权益证明,所有成员都是见证人,众目睽睽之下,一旦交易完成便无法抵赖,权益生成便不能否认。但这也意味着,你收了谁多少钱,名下有几套房对于所有人都是透明的,这显然与隐私保护的刚性需求相违背。虽然一些针对隐私保护的混淆技术被提出,例如达世币(Dash)的PrivateSend,但终究只能在一定程度上缓解而不能根治去中心化引入的这个固有问题。好在世上从来不缺聪明人,没让大家等多久,零知识证明横空出世(严格说来,零知识证明提出应早于区块链技术,但无疑是后者让其为世人所知)。零知识证明要解决的问题是:以不透露一个论断(statement)的任何信息为前提,向你证明这个论断是对的。以货币交易为例,就是在不告诉你付款人、收款人是谁,也不告诉你金额多少的前提下,设法证明这笔交易是合法的。o((⊙﹏⊙))o这怎么可能呢?! 这是有可能的。图1是一个经常用来科普零知识证明的例子。图中所示是一个山洞,入口处有两条路A和B,而这两条路在山洞深处被一道门给隔开了,只有说出开门魔咒门才能打开。这里涉及两个角色P(Proofer)和V(Verifier),P试图向V证明,他知道开门魔咒;如果属实,V就饶ta不死。P自然不能直接将魔咒告诉V,因为万一ta知道后把自己干掉怎么办;V则一定不会轻易相信P。他们可以这么做: P从A、B两条路中随机选择一条走进去;这时,V在洞外等着,对P选择了哪条路一无所知;等待足够长时间后,V进入山洞,然后也从A、B中随机选择一个并且大声喊出来,譬如,“B!”;P听到V的声音后便从对应的那条路走出来。如果P确实知道开门魔咒,那么无论自己和V分别选择的是A还是B,P都能正确地从V报出的路走出来。相反,如果P不知道魔咒,那么ta只有1/2的概率会做到。而从V的角度来说,如果ta看到P从正确的路出来了,ta便有50%的把握肯定P确实知道魔咒;将第1-3步重复N次,如果P每次都能做对,那么V便有1-(0.5)^N的把握相信P。例如,N=5,可靠性就是96.9%,已经足够好了。更重要的是,V对于魔咒仍然一无所知。这便是零知识证明。 图1 零知识证明示例:我知道开门咒语 有点意思,对吧?可能你会觉得这个例子不够“严肃”,太喜剧化完全不像讲技术。那好,再来一个例子-著名的“三色图问题(graph tree-coloring)”,见图2。所谓三色图问题就是找到一种上色方案使得相邻两个节点的颜色不同(子图(1)中以连线表示两个节点相邻)。三色图是一个NP问题(NP是啥玩意?别急,后文会详细解释),这意味着求解过程十分复杂。因此,当Anna应Carl的委托好容易找出一个三色图问题的答案,没拿到报酬是绝不愿意出示答案的。那作为Prover角色的Anna如何向Carl证明她知道答案呢?步骤如下: Anna把问题图中已经正确上色的节点都遮起来,见子图(2);Carl从中任意选相邻的两个节点,Anna便向其展示这两个节点的颜色,见子图(3)。如果这两个节点的颜色不同,那么Carl便有50%的把握相信Anna确实知道答案; 接着,Anna随机选择一种颜色映射方案将目前图中的颜色变换成另一种颜色,例如“紫色->白色,橙色->黄色,绿色->黑色”,这样便生成了一张新的上色图。虽然颜色不同,但仍是原问题的有效解。接着重复第1-3步N次,如果每次展示的两个节点颜色都不相同,那么Anna知道答案的可靠性便是1-(0.5)^N。 图2 零知识证明示例:三色图问题 类似的例子还可以举出不少,例如数独、finding waldo(在一幅密密麻麻都是人的图片中找到某个特定人物的游戏)。找到点感觉了吧?这就是零知识证明。 那zk-SNARK又是啥,和零知识证明什么关系?好,接着往下看。 zk-SNARK:到底是什么鬼? zk-SNARK是“zero knowledge Succinct Non-interactive ARgument of Knowledge”的缩写,这一长串名字的主体是“argument of knowledge”,即“知情证明”,也就是掌握某事内幕的证据。修饰主体名词的定语由三部分组成,分别代表了此技术要解决的三个问题,分别是: zero knowledge:零知识,即在证明的过程中不透露任何内情,如上文的例子所示;succinct:简洁的,主要是指验证过程不涉及大量数据传输以及验证算法简单;non-interactive:无交互。上文中举的两个例子虽然实现了零知识证明,但Prover和Verifier之间需要经过多次交互才能取得满意的可靠性,而此技术试图彻底避免这些交互。 合起来,zk-SNARK是一种“证明我知道内情的技术,简单、易操作,最关键的是你除了“我是对的”啥也不会知道”。 ZCash(大零币,货币符号是ZEC。本文写作到此处时,ZEC的单价为$223)是最早广泛应用zk-SNARK的数字货币。ZCash采用zk-SNARK技术,目的是彻底解决交易被追踪从而暴露用户隐私的问题。如果上文的例子让你觉得是toy example,那么结合ZCash便能更确切地理解zk-SNARK的应用场景。 zk-SNARK的实际应用:ZCash ZCash的核心概念与比特币是一脉相承的。当然,这不奇怪,谁让比特币是“初代吸金鬼”呢?(注:如果读者对比特币基本原理还不清楚,那基本属于走错片场了,请先阅读比特币原理一文)。简单回顾一下比特币交易: 一个比特币交易(Transaction)接受若干输入(Transaction Input, TI),同时产生若干输出(Transaction Output, TO);TI和TO是相对一个特定交易而言的,因为一个交易的TO可能成为另一个交易的TI,这是一个将挣来的钱再花出去的过程;在还没花出去前,这些钱就是“Unspent”的,因此此刻尚未成为下一个交易TI的TO称为“UXTO(Unspent Transaction Output)”。UXTO是比特币交易的基本单元;交易的付款方需证明自己有权使用这些UTXO,方法是提供私钥进行验证,因为每个交易TO会指定收款人的公钥,保证只有收款人才能接着花它。 ZCash继承了比特币的交易模型,只不过UTXO被衍生出的新概念“note”所代替,后者是ZCash的基本交易单元。英语中,“note”有“钞票”的意思。不过,翻译成“支票”更贴切,因为每张note上都标注了只有谁才能兑现它(即所有者)。一个交易的输入和输出都是若干note。为描述方便起见,将note记为“note=(PK, v, r)”,其中,PK是所有者的公钥(地址),v是金额,而r是可以唯一区分该note的序列号。 所不同的是,ZCash交易分为两类:透明地址和隐藏地址。透明地址交易的输入、输出直接是可见的note信息,一个例子如图3所示(除了货币单位外,和比特币交易一模一样)。 图3 ZCash交易例子:透明地址 而对于隐藏地址交易,输入和/或输出的地址和金额是隐藏的。例如图4展现了一个真实的ZCash交易。其中,输入和输出两栏为空,这表示地址未知(并非没有输入和输出);另外,交易的总金额只知道“≥ 0.0001 ZEC”,具体金额未知(0.0001ZEC是交易费,用以付给矿工的)。透明地址和隐藏地址还可以混用。例如图5所示,输入,即钱来自哪是未知的;而对于输出,已知其中约20ZEC转给了地址t1KvwZC29AWv21tNzqoGPFcX8242j5XxFf8,其它去向未知。 图4 ZCash交易例子:隐藏地址 图5 ZCash交易例子:混用透明和隐藏地址 在隐藏地址的交易中,输入、输出不再是明文的note,而分别是note的废止通知和签发通知: 签发通知(note commitment):作为交易的输出,表示一张新note被签发。一个有效的commitment是一张note存在的证明,然而从它包含的信息中并不知道是哪张note,也就无法知道所有者是谁,金额多少。为满足这一点,最简单的方法是对note的描述信息取哈希,因此note对应的commitment可以简单描述为“HASH(note)”;废止通知(note nullifier):作为交易的输入,表示一张老支票将作废(因为马上要被兑现、花掉了)。同比特币一样,一个交易的输入一定是另一个交易的输出,因此nullifier对应唯一一个commitment(结合commitment的定义,也就唯一对应一张note),但从它包含的信息并不能推导出是哪个commitment(如果可以的话,ZCash交易便可被追踪,因而丧失隐私性了)。为构造满足要求的nullifier,取哈希依然是个好办法,因此序号为r的note,对应的nullifier可描述为“HASH(r)”。 通过引入nullifier和commitment,交易之间路人皆知的关联变成了付款人和收款人的心照不宣,如图6所示。 图6 nullifier与commitment的秘密映射 ZCash区块链共识的所有参与者(节点)各自维护一个nullifer和commitment的集合,随着新交易的产生,这两个集合的内容会不断变化。下面介绍一下这个过程。假设当前已存世3张支票:note1=(PK1,v1,r1),note2=(PK2,v2,r2),note3=(PK3,v3,r3),其中note1属于Anna,note2已经被花掉了。此时各节点维护的nullifier和commitment集合内容如表1所示。 Commitment SetNullifier SetC1 = HASH(note1)NF1 = HASH(r2)C2 = HASH(note2)C3 = HASH(note3) 表1 支付前的commitment和nullifier集合

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

学习文档 文章目录 一、什么是 Bitmap1-1、Bitmap 相关命令 二、Bitmap 和 Set 对比2-1、数据准备2-2、内存对比2-3、性能对比 三、布隆过滤器3-1、理论3-2、代码实现 四、Java中的 Hash 函数 最近面试时,遇到了一个场景题,面试官问如何统计一条微博大V的消息有多少人阅读。经过老大的指点,我总结了一下。 如果微博某个大V发了一条消息,怎么统计有多少人看过了。 每一个访问记录肯定是要入库的,但页面展示的时候,我们不可能都去数据库 count 一下。最开始我说使用redis的set数据结构把用户id存进去,但这并不是一个很好的答案,因为它消耗的内存太大。 Redis有一种数据结构 Bitmap,在特定的数据场景下,它很适合来做这种统计。为什么说是特定的场景,下面我们来分析。 一、什么是 Bitmap Bitmap是一种精简而高效的数据结构,通过二进制位存储大规模布尔值信息,常用于快速处理用户在线状态、权限管理以及行为记录等应用场景。 可以简单把它想象成是趋于无限大的数组,每个位置只能存储 1 和 0。它可以快速统计出有多少个 1,也可以快速统计某个区间内有多少个 1。 基于此我们可以创建一个 bitmap, key 就是这条消息的id,每个位置就对应一个用户,1 就表示看过。 1-1、Bitmap 相关命令 描述命令插入数据setbit key offset value设置为 1setbit bitmap001 10000 1设置为 0setbit bitmap001 10000 0查询数据getbit key offset (每个位置默认是 0)数据统计bitcount key [start end]统计全部为 1bitcount bitmap001按照范围统计为 1bitcount bitmap001 0 1000000获取范围内第一个 offsetbitpos key value [start] [end]获取第一个 1bitpos bitmap001 1获取第一个 0bitpos bitmap001 0获取 0, 100 中第一个 1bitpos bitmap001 1 0 100 二、Bitmap 和 Set 对比 如果只是想统计有多少个用户访问过,且某个用户是否访问过,其实 set类型,也可以满足我们的要求,实际上我上次也是这么回答的,但结果是不对的,下面来看分析。

/目录 、/home目录 、~目录的区别

/ :根目录 cd / : 从任何用户执行该命令都会进入同一个目录,即所有用户共享,其下文件如图 /home :家目录(我觉得还不如叫用户列表目录) cd /home :会显示这台机器的用户,如图,所以我认为与其叫什么家目录,不如说是用户目录 ~ :当前用户的家目录 在imooc用户下登录: cd ~ 等价于 cd /home/imooc :会进入当前用户的家目录(一般情况连接上机器都是在这个目录,一般操作也都是在这里) 在root下登录: cd ~ 等价于 cd /root ———————————————— 版权声明:本文为CSDN博主「baiyuwujia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/baiyuwujia/article/details/80648554

Mac卸载、安装Python

卸载 说明 对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成: Python framework,即 Python 框架;Python 应用目录;指向 Python 的连接。 对于 Mac 自带的 Python,其框架目录为: /System/Library/Frameworks/Python.framework 而我们安装的 Python,其(默认)框架目录为: ~/Library/Frameworks/Python.framework 卸载步骤 python版本查看 $ python3 --version Python 3.7.1 删除Python 3.7 框架: $ ls /Library/Frameworks/Python.framework/Versions/ 3.7 $ sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.7 删除Python 3.7 应用目录: $ cd /Applications $ sudo rm -rf Python\ 3.7/ #Python 3.7存在空格 查看launchpad中python3的IDLE就被删除了 删除 /usr/local/bin 目录下指向的Python3.7 的连接: $ cd /usr/local/bin/ $ ls -l /usr/local/bin $ rm Python3.7相关的文件和链接 #Python3.

Vmware开机自启(Vmware17)(虚拟机自启动、虚拟机开机自启动、随宿主机开机自启)(以独占方式锁定此配置文件失败。另一个正在运行的 VMware 进程可能正在使用配置文件)

参考文章1:VMware workstation16 设置 虚拟机开机启动 参考文章2:VMware pro 17设置虚拟机随宿主机开机自启动 文章目录 设置步骤1. 打开 VMware Workstation 17。2. 在左侧导航栏点击配置自动启动虚拟机。然后选择要自动启动的虚拟机并配置启动顺序,点击确定。3. 设置自动启动服务。打开任务管理器,点击服务,找到VmwareAutostartService,右键,点击开始。右键服务,点击打开服务。找到VMware自动启动服务,右键,点击属性。然后在常规中将启动类型修改成自动,点击应用。然后再点击登录,默认就是本地系统账户登录,如果你需要用其他账户登录,点击此账户设置。"登录"设置中"本地系统账户"和"此账户"选项区别本地系统账户登录选项下“允许服务与桌面交互”选项含义 4. 测试自启(成功)(以独占方式锁定此配置文件失败。另一个正在运行的 VMware 进程可能正在使用配置文件) 20231023 部署在工控机上的虚拟机突然没法ping通了,重启后又好了,不知道什么原因,我给这个vmware自启服务加了失败重启服务的配置。 设置步骤 VMware Workstation 17中设置虚拟机开机自启动的步骤如下: 1. 打开 VMware Workstation 17。 2. 在左侧导航栏点击配置自动启动虚拟机。然后选择要自动启动的虚拟机并配置启动顺序,点击确定。 3. 设置自动启动服务。 打开任务管理器,点击服务,找到VmwareAutostartService,右键,点击开始。 右键服务,点击打开服务。 找到VMware自动启动服务,右键,点击属性。然后在常规中将启动类型修改成自动,点击应用。 然后再点击登录,默认就是本地系统账户登录,如果你需要用其他账户登录,点击此账户设置。 "登录"设置中"本地系统账户"和"此账户"选项区别 Windows服务的"登录"设置决定了服务在系统中运行时所使用的安全上下文。 这有两个主要选项:"本地系统账户"和"此账户"。 1. 本地系统账户:如果选择这个选项,那么服务将以本地系统账户的身份运行。 这是一个特殊的账户,具有广泛的权限,包括在本地计算机上访问所有文件和注册表项。 不过,当需要通过网络进行交互时,本地系统账户通常被视为匿名账户。 2. 此账户:如果选择这个选项,你需要提供一个特定的用户账户的详细信息(用户名、密码等)。 服务将以该用户的身份运行,并拥有该用户的权限。 这对于需要在网络上进行身份验证或需要特定权限的服务来说非常有用。 总的来说,选择哪种登录类型取决于服务需要执行什么样的任务以及服务需要多少权限。 但是,请注意,如果给服务提供过多的权限可能会带来安全风险。 因此,在配置服务时,应尽量遵循最小权限原则。 我们要求我们的Vmware虚拟机必须十分霸道,所以我就默认设置为本地系统账户登录。 本地系统账户登录选项下“允许服务与桌面交互”选项含义 在本地系统账户登录选项下有一个允许服务与桌面交互选项,关于这个选项,解释如下: "允许服务与桌面交互"这个选项,如果被选中, 将允许运行在本地系统账户下的服务在用户桌面上创建窗口或对话框,从而与用户进行交互。 例如,一些服务可能需要显示错误消息、警告或其他类型的通知,或者需要用户输入一些信息。 在这种情况下,就需要选择"允许服务与桌面交互"。 然而,需要注意的是,该选项可能会带来安全风险。 如果一个恶意的或者被破坏的服务被允许与桌面交互, 那么它可能会利用这个权限做出一些不适当的操作,比如展示误导性的信息或者收集用户的输入。 此外,由于服务和用户桌面在不同的会话中运行,所以有时候即使选中了这个选项, 服务也可能无法正确地在用户桌面上显示窗口或对话框。 因此,一般建议只有在确实需要并且了解相关风险的情况下,才应选择"允许服务与桌面交互"。 有点风险,我们就不勾选了 4. 测试自启(成功)(以独占方式锁定此配置文件失败。另一个正在运行的 VMware 进程可能正在使用配置文件) 我们直接重启电脑,启动后打开Vmware发现,虚拟机没有启动?

Java开发项目之智能停车场管理系统设计说明介绍

项目背景和介绍 随着网络不断的普及发展,智能停车场管理系统依靠网络技术的支持得到了快速的发展,首先要从用户的实际需求出发,通过了解用户的需求开发出具有针对性的管理系统,利用目前网络给用户带来的方便快捷这一特点对系统进行调整,设计的系统让用户的使用起来更加方便,本系统的主要目的就是给用户带来方便与快捷,用户只要在家中就可以进行车位租用、车位退租、违规举报等。 项目关键技术 1、JSP技术 JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。 2、数据库:MySQL 本系统开发使用的数据库是MySQL数据库,MySQL数据库运行速度快、安全性高,对使用的平台没有任何的限制,因而被广泛应运到系统的开发中。 3、B/S结构 B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,能够把系统核心功能集中在服务器上面,帮助系统开发人员简化操作,便于维护和使用。 B/S模式三层结构图 系统分析 1、可行性分析 本智能停车场管理系统采用JSP技术、JAVA编程语言和MYSQL数据库进行开发设计;系统的设计过程中由于采用的所有工具以及技术支持全部都是免费的,只要有网络就可以进行下载使用;界面设计上面讲究简单好看、操作方便、流畅便捷。用户进入操作界面,界面上会有相应提示,根据提示就可以找到对应的功能操作模块,对于用户来说可以做到免培训就能使用。 2、功能分析 本智能停车场管理系统主要包括二大功能模块,即管理员功能模块和普通用户模块,如下图所示。 管理员功能模块 普通用户功能模块 流程分析 1、登录流程 登录模块主要满足管理员以及普通用户的权限登录。 2、注册流程 未注册账号的用户可进入账号注册界面进行注册操作。 3、添加信息 用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。 4、删除信息 用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。 系统功能 1、首页功能 智能停车场管理系统,在系统首页可以查看首页、车位信息、论坛交流、公告信息、我的、跳转到后台、在线客服等,如下图所示。 2、用户注册 在用户注册页面可以填写用户名、密码、姓名、性别、手机、车牌号等信息进行注册。 3、用户登录 通过填写注册时输入的用户名、密码、角色进行登录,如下图所示。 管理员登录进入智能停车场管理系统可以查看个人中心、用户管理、车位信息管理、车位租用管理、车位退租管理、违规举报管理、论坛交流、系统管理等信息。 普通用户登录进入智能停车场管理系统可以查看个人中心、车位租用管理、车位退租管理、违规举报管理、我的收藏管理等内容。 4、车位租用管理 车位租用管理,用户在车位租用页面中可以查看租用编号、车位区域、车位号、车位位置、车位状态、停放时价、进场时间、备注、用户名、手机、车牌号、是否审核、审核回复等信息内容,并且根据需要对已有车位租用进行修改或删除等其他详细操作,如下图所示。 5、车位退租管理 车位退租管理,用户在车位退租管页面中可进行支付、查看、删除操作,如下图所示。 更多项目: !!! 有需要的同学请留言或点击下方链接跟我联系 !!! 

os.path.isfile()函数的用法

os.path.isfile() 是 Python 中用于检查路径是否指向一个文件的函数 这个函数接受一个参数,即路径字符串,然后返回一个布尔值。如果路径存在且指向一个文件,则返回 True,否则返回 False 例如,有一个文件路径的字符串: import os file_path = '/path/to/your/file.txt' if os.path.isfile(file_path): print(f"The path '{file_path}' points to a file.") else: print(f"The path '{file_path}' does not point to a file or the file does not exist.") 在这个例子中,如果 file_path 变量所指的文件存在并且是一个文件(不是目录或其他类型的路径),os.path.isfile() 将返回 True,并输出指向文件的消息, 否则,它将输出路径不指向文件或文件不存在的消息 这个函数对于检查文件是否存在以及它是否是一个文件(而不是目录或其他类型的路径)非常有用

Leetcode SQL 50题刷题攻略(上篇)

高频 SQL 50 题(基础版)刷题攻略(上篇) 简介正文开始1148.文章浏览11683.无效的推文1378.使用唯一标识码替换员工ID1581.进店却从未进行过消费的顾客197.上升的温度1661.每台机器的进程平均运行时间1280.学生们参加各科测试的次数1211.查询结果的质量和占比1193.每月交易11174.即时食物配送21141.查询近30天活跃用户数619.只出现一次的最大数字 简介 刷题网址:高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 本次通过刷完50题,我总结了刷题过程遇到的难题的知识点。 如果你最近准备刷SQL50题,而对于Mysql不熟悉,那么太适合看这个blog了! 下篇网址:Leetcode SQL 50题刷题攻略(下篇)-CSDN博客 正文开始 1148.文章浏览1 order by 列名 asc是按列名升序排列 order by <列名1> desc, <列名2> asc author_id as id是将author_id以id列名返回 distinct是去重操作,返回的id是没有重复的值 1683.无效的推文 select tweet_id from tweets where CHAR_LENGTH(content)>15 char_length计算字符串的长度,也即varchar类型的列 1378.使用唯一标识码替换员工ID select unique_id, name from Employees left join EmployeeUNI on Employees.id = EmployeeUNI.id sql语法中的连接问题,有如下格式 FROM first_table < join_type > second_table [ ON ( join_condition ) ] left join必须有on,join可以没有on

Leetcode SQL 50题刷题攻略(下篇)

高频 SQL 50 题(基础版)刷题攻略(上篇) 简介正文开始1789.员工的直属部门180.连续出现的数字1204.最后一个能进入巴士的人1978.上级经理已离职的公司员工626.换座位1341.电影评分1321.餐馆营业额变化增长585.2016年的投资185.部门工资前三高的所有员工1667.修复表中的名字1527.患某种疾病的患者196.删除重复的电子邮箱1484.按日期分组销售产品1327.列出指定时间段内所有的下单产品1517.查找拥有有效邮箱的用户 简介 刷题网址:高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 上篇网址:Leetcode SQL 50题刷题攻略(上篇)-CSDN博客 正文开始 1789.员工的直属部门 select employee_id,department_id from (select employee_id,count(employee_id) as n,department_id from Employee group by employee_id) t where n=1 union select employee_id,department_id from Employee where primary_flag = 'Y' union的用法 第一个select语句select employee_id,department_id from (select employee_id,count(employee_id) as n,department_id from Employee group by employee_id) t where n=1的结果: employee_iddepartment_id1133第二个select语句select employee_id,department_id from Employee where primary_flag = 'Y'的结果: employee_iddepartment_id2143通过union语句即SELECT column_a FROM table_a UNION SELECT column_b FROM table_b;合并的结果如下:

Monocle 3 | 太牛了!单细胞必学R包!~(五)(差异分析之聚类比较与模块鉴定)

1写在前面 准备出去玩耍了,今天就不废话了,直接上主题吧。🥳 monocle3做差异分析也是牛的一米!~🌾 2用到的包 rm(list = ls()) library(tidyverse) library(monocle3) 3示例数据 我们还是载入之前用过的一个数据集吧。😘 expression_matrix <- readRDS("./cao_l2_expression.rds") cell_metadata <- readRDS("./cao_l2_colData.rds") gene_annotation <- readRDS("./cao_l2_rowData.rds") 还是前面一套老操作,具体的就不讲述了,不清楚的翻看之前的教程吧。🥳 cds <- new_cell_data_set(expression_matrix, cell_metadata = cell_metadata, gene_metadata = gene_annotation) cds <- preprocess_cds(cds, num_dim = 100) cds <- reduce_dimension(cds) cds <- cluster_cells(cds, resolution=1e-5) colData(cds)$assigned_cell_type <- as.character(partitions(cds)) colData(cds)$assigned_cell_type <- dplyr::recode(colData(cds)$assigned_cell_type, "1"="Body wall muscle", "2"="Germline", "3"="Motor neurons", "4"="Seam cells", "5"="Sex myoblasts", "6"="Socket cells", "7"="Marginal_cell", "8"="Coelomocyte", "9"="Am/PH sheath cells", "10"="Ciliated neurons", "11"="Intestinal/rectal muscle"

Docker安装Oracle18c 坑已排完,放心食用

Docker安装Oracle18c 坑已排完,放心食用 0、有问题可邮件我1、拉取 oracle18c 镜像, 推荐使用 `zhengqing`版本的镜像2、启动容器3、等待容器启动完成, 这一步很慢很慢, 别着急4、进入容器5、修改管理员密码6、查看并设置环境变量7、设置监听模式支持以SID方式连接PDB数据库8、使用三方工具连接Oracle 0、有问题可邮件我 邮箱: steven.start@aliyun.com 1、拉取 oracle18c 镜像, 推荐使用 zhengqing版本的镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c 2、启动容器 确保的本机的1521端口没有被占用 docker run -d --name oracle18c -p 1521:1521 registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c 3、等待容器启动完成, 这一步很慢很慢, 别着急 使用 docker logs 容器ID 查看Oracle的安装进度一直等到出现下图中的DATABASE IS READY TO USE 后, 方可进入容器 4、进入容器 docker exec -it 容器ID /bin/bash 5、修改管理员密码 ls # 查看脚本 ./setPassword.sh 123456 # 123456为设置密码,这里修改为自己的即可 6、查看并设置环境变量 # 查看SID grep $ORACLE_HOME /etc/oratab | cut -d: -f1 # 引入临时SID变量 export ORACLE_SID=ORCLCDB # 登录ORA sqlplus / as sysdba # 查看所有的PDB数据库 show pdbs; # 每次登录都要设置 ORACLE_SID 环境变量, # 可以将这个写到~/.

Volatile 关键字

目录 volatile 关键字 1 可见性的测试 1)单线程出现死循环 2)使用多线程解决死循环 3)使用多线程有可能出现死循环 4)使用 volatile 关键字解决多线程出现的死循环 5)synchronized代码块也具有增加可见性的作用 2 原子性与非原子性的测试 1) 32位JDK中long或double数据类型写操作为非原子性 2)使用volatile解决在32位JDK中long 或double数据类型写操作为非原子性的问题 3)volatile int i ++ 操作是非原子性的 4)使用 atomic 原子类进行 i ++操作实现原理 5)逻辑混乱与解决方案 简单介绍一下CAS: 3 禁止代码重排序的测试 1)实现代码重排序的测试 2)volatile关键字之前的代码可以重排序 3)volatile 关键字之后的代码可以重排序 4)volatile关键字之前的代码不可以重排到volatile之后 5)volatile 关键字之后的代码不可以重排到volatile之前 6)synchronized关键字之前的代码不可以重排到synchronized之后 7)synchronized关键字之后的代码不可以重排到synchronized之前 8)总结 volatile 关键字 在Java中 volatile 关键字就像一个神话一样,几乎在各种博客,微信订阅号,聊天群被反复谈起,可见程序员对此是又爱又恨,也说明volatile在多线程领域的重要性。volatile 在使用上有 以下 3 个特性。 1)可见性: B线程能马上看到A线程更改的数据。 2)原子性: 原子性是指一组操作在执行时 不能被打断。如果在中间执行其他操作会导致者一组操作不连续,获得错误的结果,即非原子性。 volatile的原子性体现在赋值原子性,在 32 位 JDK中对 64 位数据类型执行赋值操作时会写两次,高32位 和 低 32 位 ,如果写两次的这组操作被打断,导致写入的数据被其他线程的写操作所覆盖,会获得错误的结果,就是非原子性的。 在 32位 JDK中针对 未使用 volatile 声明 的 long 或 double 的 64 位数据类型没有实现写 原子性,如果想实现,需要在声明变量时添加volatile,而在64位JDK中,是否具有原子性取决于具体的实现,在X86架构64位JDK版本中,写double 或 long 是原子性的 。针对 volatile 声明的 int i 变量进行 i++操作时是非原子性的。

【图片上传】- Could not initialize class okhttp3.OkHttpClient

【图片上传】Could not initialize class okhttp3.OkHttpClient 爆错原因查看okhttp对应okio版本:查看项目中使用的okhttp版本:解决方式 爆错原因 由于OkHttp依赖于okio,目前OkHttp最新的版本为4.7.2,使用Maven/Gradle导入的话不会出现该问题,出现此问题的原因应该是只是单纯把OkHttp的JAR导入,并没有把okio一起导入,所以会报错:不能初始化 okhttp3.OkHttpClient; 了解了产生问题的原因,接下来就是解决问题,就需要把okio一并导入,在这之前我们需要知道项目中使用的OkHttp对应的okio版本; 查看okhttp对应okio版本: 查看okhttp对应okio版本:https://mvnrepository.com/artifact/com.squareup.okio/okio 查看项目中使用的okhttp版本: 项目中使用的okhttp版本:3.11.0,对应的okio版本 1.14.0 解决方式 查看项目依赖,没有显示引用okio的依赖,就直接再添加一个对应的依赖版本 <dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.14.0</version> </dependency>

【硬核HeyGen平替】在window平台上使用MyHeyGen

最近在研究HeyGen的平替开源项目,然后发现了MyHeyGen这个项目,但是文档上面并没有说明如果在window平台上使用,考虑到非window平台安装显卡驱动什么的比较繁琐,所以尝试硬着头皮干... bad news:笔者是11月底下载的仓库,没想到最近12月份作者将仓库删了...只能看一下有没有其他人fork的仓库 前提 开源项目中所需的环境准备要先准备好 1.拉取项目 git clone https://github.com/AIFSH/MyHeyGen.git 调整安装脚本 install.sh,注释掉底下的 apt 安装,这里主要是要安装 ffmpeg,这个稍后需要在window平台上安装。 pip install ninja==1.10.2.3 pip install dlib --verbose # pip install librosa==0.9.2 #apt update #apt install ffmpeg 然后就可以通过pip安装所需要的组件库了 2.安装 pip 组件库 这里碰到的第一个问题就是window的命令窗口不能够直接执行 sh 脚本,bash 命令window平台并没有,那么我们可以用 Git Bash,这里面执行这个脚本,同时,也能解决 window 平台没有Linux的一些常用命令,如cp、mv和rm等命令。 3.安装 ffmpeg ffmpeg下载地址 笔者选择的是release-full版本,跟shared版本没太大区别。 解压出来的目录文件,bin目录下只有三个执行文件。 然后配置系统环境变量,就是在系统变量的path里面,添加这个bin目录路径就可以了。 要验证是否配置好了,重新打开一个命令行窗口,输入: ffmpeg -version,有版本信息输出,则证明配置成功。 3.安装 Microsoft C++ 库 在安装TTS的时候,可能会提示错误 "ERROR: Could not build wheels for tts, which is required to install pyproject"。

Yocto - bb脚本中使用的SRC_URI、SRCREV和S

我们遇到的各种自己不了解的技术或产品时,都需要阅读用户手册。用户手册里的内容很多时,除了由目录组织文档结构外,通常还有有一个词汇表,一般作为附录放在文档最后。 通过这个按照字母排序的词汇表,可以在对整个文档还不够了解的情况下,快速的定位到自己需要的内容。 比如,我们打开Yocto的manual:Welcome to the Yocto Project Documentation — The Yocto Project ® 4.3.999 documentation 在左侧列表中找到“Reference Manual”,点开,在展开的列表中,继续选择“12 Variables Glossary”,上方点击首字母S,在下方页面中搜索到SRI_URI。 然后就可以得到关于SRI_URI的有用介绍: See the BitBake manual for the initial description for this variable: SRC_URI. 有关该变量的初始描述,请参阅 BitBake 手册: SRC_URI。 所以,这个变量是用于BitBake的,它会识别和使用这个变量。你在bb脚本中设置这个变量,bitbake在构建时使用。 Bitbake关于此变量的说明的链接: 5 Variables Glossary — Bitbake dev documentation SRC_URI 源文件列表 - 本地或远程。这个变量告诉 BitBake 在编译时要提取哪些文件,以及如何提取。例如,如果配方或附加文件需要从互联网上获取一个 tar 包,配方或附加文件就会使用 SRC_URI 条目指定该 tar 包。另一方面,如果配方或附加文件需要获取一个压缩包、应用两个补丁并包含一个自定义文件,则配方或附加文件需要一个 SRC_URI 变量来指定所有这些来源。 The list of source files — local or remote. This variable tells BitBake which bits to pull for the build and how to pull them.

scrapy爬虫中间件和下载中间件的使用

一、关于中间件 之前文章说过,scrapy有两种中间件:爬虫中间件和下载中间件,他们的作用时间和位置都不一样,具体区别如下: 爬虫中间件(Spider Middleware) 作用: 爬虫中间件主要负责处理从引擎发送到爬虫的请求和从爬虫返回到引擎的响应。这些中间件在请求发送给爬虫之前或响应返回给引擎之前可以对它们进行处理。 下载中间件(Downloader Middleware) 作用: 下载中间件主要负责处理引擎发送到下载器的请求和从下载器返回到引擎的响应。这些中间件在请求发送给下载器之前或响应返回给引擎之前可以对它们进行处理。 中间件作用优先级 只需要记住,级别越小的越接近scrapy的引擎,结合scrapy的数据流,就能记住每个中间件的作用时机。 结合图可知: 在下载中间件中: 对于process_request()来说,优先级数字越小越先被调用;对于process_response()来说,优先级数字越大越先被调用 在爬虫中间件中: 对于process_spider_input()来说,优先级数字越小越先被调用;对于process_spider_output()来说,优先级数字越大越先被调用 那么哪来的这些方法? 二、定义中间件的通用模板 先看一个内置的中间件:UserAgentMiddleware init: 在这里进行中间件的初始化,可以使用 settings 对象获取配置信息from_crawler:在这里通过 crawler 对象创建中间件的实例,可以获取全局配置信息spider_opened(可选): 在这里执行爬虫启动时的初始化操作,例如打开文件、连接数据库等process_request(可选): 在这里对请求进行预处理,例如修改请求头、添加代理等那么同理process_response(可选) 爬虫中间件模板 class MySpiderMiddleware(object): def __init__(self, settings): # 在这里进行中间件的初始化,可以使用 settings 对象获取配置信息 pass @classmethod def from_crawler(cls, crawler): # 在这里通过 crawler 对象创建中间件的实例,可以获取全局配置信息 settings = crawler.settings return cls(settings) def process_spider_input(self, response, spider): # 在这里处理从下载器传递给爬虫的响应对象 return response def process_spider_output(self, response, result, spider): # 在这里处理爬虫生成的结果,例如对结果进行过滤或修改 return result def process_spider_exception(self, response, exception, spider): # 在这里处理爬虫产生的异常 pass 下载中间件模板 class MyDownloaderMiddleware(object): def __init__(self, settings): # 在这里进行中间件的初始化,可以使用 settings 对象获取配置信息 pass @classmethod def from_crawler(cls, crawler): # 在这里通过 crawler 对象创建中间件的实例,可以获取全局配置信息 settings = crawler.

cocos 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer。(跟随摄像机滚动)(神坑官网也不说明一下)

参考文章:Cocos 3.x 层级Layer - 简书 2D镜头跟随应该怎么实现呢 - Creator 3.x - Cocos中文社区 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer? 场景:在制作摄像机跟随角色移动功能时,新增一个摄像机camera,将这个摄像机负责显示在一个新增的layer上(如ui)。所有效果都实现后,底层摄像机跟随角色移动,上层ui不动,这些都是没有问题的。只不过动态添加到layer为ui的节点就会出现,原因是动态添加的节点layer被设置成了default,并没有跟随父节点的layer,所以需要手动修改一下。 注意事项:动态设置layer,并且必须等待节点出现后设置。核心代码: node.walk((child)=>{ child.layer = 2; }) layer的值可以在Visibility选择那里查看。勾选上你需要的选项。 源代码: import { _decorator, Component, Node,EventTarget,input, Input, EventTouch,EventKeyboard,KeyCode,Vec2,find,Animation,AnimationClip,TiledMap,TiledLayer,TiledTile, Sprite,resources,instantiate,Texture2D, SpriteFrame, UITransform,Size,Vec3, Script,Prefab,Tween,tween, v2,Quat, Label,Layers } from 'cc'; import worldControl from './worldControl' import eventBus from '../common/eventBus' import playerData from '../data/playerData'; import { goodsControl } from './goodsControl'; const { ccclass, property } = _decorator; const eventTarget = new EventTarget(); //背包系统 @ccclass('boxControl') export class boxControl extends Component { playerData:playerData=null; //玩家数据实例。 @property(worldControl) //这种写法会在cocos creator编辑器上增加一个可以绑定的属性。 worldControl:worldControl=null; indexActive=-1;//当前选中项 start() { // eventTarget.

HTTP Status Codes/HTTP状态码

1.应用场景 帮助快速查询http code, 以及对应的含义,帮助定位问题。 2.学习/操作 推荐查阅 HTTP Status Codes Glossary - WebFX STATUS_CODES { '100': 'Continue', // 持续中 '101': 'Switching Protocols', // 转换协议 '102': 'Processing', // 进行中 '200': 'OK', // 成功 '201': 'Created', // 已创建 '202': 'Accepted', // 已接受 '203': 'Non-Authoritative Information', // 未授权的信息 '204': 'No Content', // 没有内容 '205': 'Reset Content', // 重设置内容 '206': 'Partial Content', // 局部内容 '207': 'Multi-Status', // 多种状态 '208': 'Already Reported', // 已经报告 '226': 'IM Used', // 使用IM协议 (即时通讯协议(Instant Messaging))

建议收藏:超详细ChatGPT(GPT 4.0)论文润色指南+最全提示词/咒语

在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。 本篇文章持续更新,祝大家写作顺利,如果对你有帮助,欢迎转发、推荐、分享! 如果有兴趣深入交流和探讨,添加微信:DuoQDuo2022,邀请你加入交流群~。 温馨提示: 如果严肃对待这件事,请用GPT-4,别用GPT-3.5! 咒语心法:准确表达、具体情景、提醒它慢思考(见下文) ChatGPT能够在写作过程中提供灵感和帮助,但请仅作参考,避免过度依赖。 关于事实性问题要自己验证后使用,不要轻易相信它斩钉截铁的语气,更不要用于查文献。 置顶更新 最新分享的技巧和方法会优先显示在本文开头,确保你不错过任何实用的信息。经过一段时间后,它们会被归档到相应的章节中,方便你随时回顾。 引导提问 ----「12.01更新」 在博客没有更新的两个月的时间里,GPT发生了一些巨大的变化。 其中一个最大的更新大概就是GPTs了。 学习一些优秀的GPTs,对我来说启发最大的一点大概是:「引导提问」 GPT不应该被理解为一个只接收命令的机器。在对话的过程中,不只是你提要求,它来回答。它完全可以作为一个对话者,参与到你的工作过程中来,可以对你提问题,引导你思考。 有时候,之所以无法掌握好如何用GPT润色,最关键的原因是: 「你看到一个内容,觉得不对劲,但是你不知道应该怎么修改。」 你只是觉得这段话写的有问题,但是你不知道问题出在哪里! 那这个时候,需要一些引导思考的提示词。 Prompt: Here’s the section of my paper that I’d like to polish: [Insert paper section here]. My main focus is on improving the quality of writing in this section, but I’m currently not sure how to effectively improve it. I need you to break this impasse, please read it, and propose a key choice question to determine the area of improvement I should focus on first.

使用curlconverter 对cURL 转换Python指令时,解析不出来params

import requests headers = { 'authority': 'www.douyin.com', 'accept': 'application/json, text/plain, */*', 'accept-language': 'zh-CN,zh;q=0.9', 'cookie': 'ttwid=1%7C2OBidsiu4H37LfUA8eZ2VYV20loI8ZOic-6JILhxYPs%7C1701320404%7C9ed4c7dab86a0fcf0a01c224e0c18de6d96c0a99b32f77306eb4519526ac0ed3; douyin.com; device_web_cpu_core=8; device_web_memory_size=8; architecture=amd64; dy_swidth=1280; dy_sheight=800; passport_csrf_token=48ebedf55af52d68a56cebb38c93c798; passport_csrf_token_default=48ebedf55af52d68a56cebb38c93c798; csrf_session_id=428bc3579674a5aeb56f1d492ec2cc32; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Atrue%2C%22volume%22%3A0.5%7D; s_v_web_id=verify_lpkq8s3o_PDwaGROr_aWF3_4UEQ_9v9Z_cYKzICHuTbFL; bd_ticket_guard_client_web_domain=2; ttcid=920a4f3958ca4626b7c5835caadd6ec429; download_guide=%223%2F20231130%2F0%22; SEARCH_RESULT_LIST_TYPE=%22single%22; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%2C%22isForcePopClose%22%3A1%7D; n_mh=25F9g1IIIFveD5yGCqCCqcAnU-sSf7kLp9rpcePUZN4; passport_auth_status=ec7d5ce500b9f9030b684677879440c6%2C; passport_auth_status_ss=ec7d5ce500b9f9030b684677879440c6%2C; _bd_ticket_crypt_doamin=2; __security_server_data_status=1; store-region=cn-sn; store-region-src=uid; d_ticket=7753d50126744d550a4b12601ae23f2938688; publish_badge_show_info=%221%2C0%2C0%2C1701322665799%22; strategyABtestKey=%221701422973.236%22; my_rd=2; stream_player_status_params=%22%7B%5C%22is_auto_play%5C%22%3A0%2C%5C%22is_full_screen%5C%22%3A0%2C%5C%22is_full_webscreen%5C%22%3A0%2C%5C%22is_mute%5C%22%3A1%2C%5C%22is_speed%5C%22%3A1%2C%5C%22is_visible%5C%22%3A0%7D%22; passport_assist_user=CjzsRQuiMw8Uemu1ys9-XyEMS4nnf6EaxeX0_8jOcFq4QGBSOgkX9LAY5snqfTNEOoO4QX2j-6nNENZIcxQaSgo8U-SyQ2Icec3DVVdYiSwUZ1_8j8D6GUVSPKgZQdE_Xv_2tzlsMTrvQZZaEZdTVLvcnzbjtPHm_Tlgla8UEO3jwg0Yia_WVCABIgED2V2sTw%3D%3D; sso_uid_tt=325a872213f5f299bca675832aeed2c6; sso_uid_tt_ss=325a872213f5f299bca675832aeed2c6; toutiao_sso_user=f1dc0a9da57fe6b222a6f47ece3d57da; toutiao_sso_user_ss=f1dc0a9da57fe6b222a6f47ece3d57da; sid_ucp_sso_v1=1.0.0-KDAxMWRkZDg0NjU0NDNjNmExZTEwYTkwM2ZiOTRlODlhMGU3MWRiOTgKHwi3l-Pf6QIQz4enqwYY7zEgDDCFmczWBTgFQPsHSAMaAmxxIiBmMWRjMGE5ZGE1N2ZlNmIyMjJhNmY0N2VjZTNkNTdkYQ; ssid_ucp_sso_v1=1.0.0-KDAxMWRkZDg0NjU0NDNjNmExZTEwYTkwM2ZiOTRlODlhMGU3MWRiOTgKHwi3l-Pf6QIQz4enqwYY7zEgDDCFmczWBTgFQPsHSAMaAmxxIiBmMWRjMGE5ZGE1N2ZlNmIyMjJhNmY0N2VjZTNkNTdkYQ; odin_tt=0d902dea686ed6918983cacb4afcf3b1d746cfb307bda75f19640e6ab3e59a141bae37b8171f725daa994d08e8c4ae1d; uid_tt=87f6491e0cb672d1f716f07bd746cdb2; uid_tt_ss=87f6491e0cb672d1f716f07bd746cdb2; sid_tt=4389c272847250d89333bf7f1fb97b03; sessionid=4389c272847250d89333bf7f1fb97b03; sessionid_ss=4389c272847250d89333bf7f1fb97b03; LOGIN_STATUS=1; _bd_ticket_crypt_cookie=2dcf6c88837bbc53c025e6e916349b16; sid_guard=4389c272847250d89333bf7f1fb97b03%7C1701430229%7C5183997%7CTue%2C+30-Jan-2024+11%3A30%3A26+GMT; sid_ucp_v1=1.0.0-KDdlNGM4NWM4NzA2MWE3Y2ZkMjRlMGY3MWI1MDIyOGVjNjU3YTJiOGMKGQi3l-Pf6QIQ1YenqwYY7zEgDDgFQPsHSAQaAmxxIiA0Mzg5YzI3Mjg0NzI1MGQ4OTMzM2JmN2YxZmI5N2IwMw; ssid_ucp_v1=1.0.0-KDdlNGM4NWM4NzA2MWE3Y2ZkMjRlMGY3MWI1MDIyOGVjNjU3YTJiOGMKGQi3l-Pf6QIQ1YenqwYY7zEgDDgFQPsHSAQaAmxxIiA0Mzg5YzI3Mjg0NzI1MGQ4OTMzM2JmN2YxZmI5N2IwMw; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAA70WmaPg82cCOVH9vKXwIQz-4IYZqtoCKtyrCCnc5qfI%2F1701446400000%2F0%2F1701430239933%2F0%22; pwa2=%220%7C0%7C3%7C0%22; home_can_add_dy_2_desktop=%220%22; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCRVcvcmkxRjRpZVRnZEVpREJVaXBLclhzalo4TDRQSDJsc0VwNzBCSTgwZklLS0o3SkE4Qm9KTUNQcUFJWUk3cGJ6ejdJYnJ0Q0x0WFhML3ROU0ZwWm89IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; tt_scid=rqbww2SFpx.GGAgZiZdm4h.kdMk1CAhYyIcuVyBlmVr0-vsT0v6g2X4eu1IG.bAj6c3d; b_rec=%22--0__1%22; lst_push=1701435040151; msToken=HWI28AB1zX5gUERvmW8OxwlN4tDBh4sPSaKFSQvMVpuN9oqHD0Jgw8YtDs2FxlGzUHwrlELdYOKI1MAGdE4hO18_hclxJ0NZU6rl_xOU1oigP-sKtx9XJJBwGsbo06o=; msToken=Mhh1TXMDH0FXk0IzrQhk2H5m4Lnq568rx2tDBv2QoyzwyddQTe0CymFrGOxHAvkz0841bYKYA-aaPoWlRQA6hhvzb7_MpdjH0bvKUD_CcwrCnpZA0fIZNmrys6to3Aw=; passport_fe_beating_status=false; __ac_nonce=06569dcc4001147a689d0; __ac_signature=_02B4Z6wo00f01vF-Z0AAAIDDejX8oWgVtU7xXmPAANlDm1nI2sFkH2bftCdCIYohRdZ4XxXgwcWiCtiwvOGGoZDsmxB8fq.

【常识系列】Java程序员需要了解的网络常识之计算机网络性能指标

作为一个Java程序员,我们也需要对计算机的网络知识有一定的了解,本系列就是针对非运维小伙伴的网络常识介绍(不费脑子可以无聊的时候瞅一瞅),希望可以帮助到大家( ̄∇ ̄)/ 计算机网络性能指标 速率 计算机发送的信号是以二进制数字形式的一个二进制数字就是一个比特(bit,binary digit)字节(Byte)1 Byte = 8 bit 常用的数据量单位: 1 Byte = 8 bit1 KB = 2^10 B =1024B = 8 * 1024 b1 MB = K * K B = 2^10 * 2^10 B = 2^20 B1 GB = K * M B = K * K * K B = 2^10 * 2^10* 2^10 B = 2^30 B1 TB = K * G B = K * G B = K * K * M B =K * K * K * K B = 2^40 B 连接在计算机网络上的主机在数字信道上传送比特数据的速率,也称为比特率/数据率。

Arcgis之空间连接【Spatial Join】工具

Arcgis之空间连接【Spatial Join】工具 空间连接是什么Spatial Join工具的基本信息【空间连接】参数配置步骤总结 空间连接是什么 空间连接:根据空间关系将一个要素的属性连接到另一个要素。 目标要素和来自连接要素的被连接属性写入到输出要素类。即通过地理空间位置将两个数据集中的要素关联起来的过程。ArcGIS提供了多种工具和方法来执行空间连接,以下是其中的一些关键概念和步骤: Spatial Join工具的基本信息 空间连接根据行的相对空间位置对连接要素值行与目标要素值行进行匹配。 默认情况下,连接要素的所有属性均附加到目标要素的属性并复制到输出要素类。 要定义将写入输出的属性,可通过在连接要素的字段映射参数操作这些属性。 两个新字段 Join_Count 和 TARGET_FID 即会添加至输出要素类。 Join_Count 表示与每个目标要素 (TARGET_FID) 匹配的连接要素数。 在连接操作参数中指定一对多连接时,会向输出添加另一个新字段 JOIN_FID。 当将连接操作参数设置为一对多连接时,输出要素类中的每个目标要素都可以包含多个行。 使用 JOIN_FID 字段可确定哪个要素连接到哪个目标要素 (TARGET_FID)。 JOIN_FID 字段的值为 -1,表示没有任何要素符合使用目标要素指定的空间关系。 如果满足以下两个条件,则所有输入目标要素将写入输出要素类。 ①连接操作设置为一对一连接。 ②已选中保留所有目标要素。 要管理输出数据集中的字段和这些字段的内容,请使用字段映射参数。 连接要素的字段映射参数中指定的合并规则仅适用于连接要素中的属性,且仅适用于多个要素与目标要素匹配 (Join_Count > 1) 的情况。 例如,如果连接 DEPTH 属性值分别为 15.5、2.5 和 3.3 的三个要素,并应用“平均值”合并规则,则输出字段的值为 6.1。 进行统计计算时,将忽略连接字段中的空值。 例如,15.5、<空> 和 2.5 将得出的结果为:“平均值”为 9.0,“计数”为 2。 将匹配选项参数设置为最近或最近测地线时,可能会出现两个或多个连接要素与目标要素距离相等的情况。 如果发生这种情况,系统会随机选择其中一个连接要素作为匹配要素(连接要素的对象 ID 不会影响此随机选择)。 如果要查找排在第 2 位、第 3 位或第 n 位的最近要素,使用生成近邻表工具 如果连接要素与多个目标要素具有空间关系,则在根据目标要素对其进行匹配时进行多次计数。 例如,如果点位于三个面内,则该点将计数三次,即每个面计数一次。 如果目标要素在连接要素的附近“xx”m的范围内去计算属性的均值/和等,匹配项需要选择【**在某一距离范围内】**并设定搜索半径。.

k8s下安装redis

一、Redis安装 1.1 添加repo helm repo add bitnami https://charts.bitnami.com/bitnami redis有两种部署方式:redis &redis cluster, 详细内容参见 redis 17.11.6 · bitnami/bitnami 1.2 修改redis的pv size 创建的master和replica pod的默认size是8Gi,如果k8s的node没有足够的空间,会抛出如下错误:default-scheduler 0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod为此,我们可以在安装时控制以下参数重新设置pod的size, --set replica.persistence.size=2Gi --set master.persistence.size=2Gi 1.3 指定storageclass Redis在创建过程中会自动生成pvc,这些pvc需要绑定到特定pv以完成实际意义的存储。这里我们使用storageclass来实现该过程: --set global.storageClass=<storageclass name> (i.e., manual in this examples) 1.4 总命令 安装redis redis默认会安装1个master,3个node,可以通过以下参数来修改 --set replica.replicaCount=2 --set master.count=1 helm install --set replica.

java8常用新特性

一、java8新特性 1、Lambda:表达式- - - - - Lambda允许把函数作为一个方法的参数 2、方法引用- - - - - 可以直接引用已有的java类或对象(实例)的方法或构造器 3、默认方法- - - - - 接口中一个实现的方法 4、Stream Api - - - - - 新添加的stream API(java.util.stream),把真正的函数式编程风格引入到Java中 5、Optional类 - - - - - 已经成为Java8类库的一部分,解决空指针异常 6、日期时间 API - - - - - 将日期时间的操作类集中到java.time类中 更多的新特性 二、详细简介 1.Lambda:表达式 1、参数列表可以不写数据列表类型,因为JVM编译器通过上下文推断数据类型,即"类型推断" (x, y) -> {Integer.compare(x,y)} 2、Java8中内置的四大核心接口 Comsumer<T> ----> 消费型接口、有去无回 void accept(T t) Supplier<T> ----> 供给型接口、什么不给返回T类型 T get() Function<T, R> -----> 函数型接口、给T返R(T、R也可以同一类型) R apply(T t) Predicate<T> -----> 断言型接口、if判断 boolean test(T t) 3、变量作用域: Lambda表达式只能引用标记了final的外部局部变量,这就是说不能在Lambda内部修改定义在域外的局部变量,可以不使用final修饰,但不可以修改

创维 sk-d748-c 光猫超级密码获取

伸出黑龙江的朋友家联通宽带新换的光猫型号是创维的 sk-d748-c,虽自带WIFI6,直连wifi效果还不错的, 但是测试NAT类型为Symmetric对称性, 对于联机打游戏是灾难,于是就想让我改成Fullcone, 我用普通用户密码进去什么都改不了, 于是上网找破解教程, 发现一篇通过telnet开启获取超管密码的帖子: 创维系列光猫如:SK-D740 之类的超密获取办法-光猫/adsl/cable无线一体机-恩山无线论坛 先按照帖子中的步骤操作, 发现到第三步winscp中路径 var/tmp 下并没有telnet_su_passwd文件。 虽然没有找到telnet_su_passwd文件,但是有一个文件夹 /userconfig 比较可疑,再搜发现有一篇教程提到 /userconfig/cfg/db_user_cfg.xml 新光猫(中兴方案)配置(db_user_cfg.xml)解密方案 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 疑似超级管理员密码在这里, 然后文本编辑器打开发现乱码, 应该是加密了, 再一搜发现有人做出来了中兴光猫配置文件db_user_cfg.xml的解密程序,虽然和创维光猫的品牌不一样, 但试试万一可以呢。 https://github.com/wx1183618058/ZET-Optical-Network-Terminal-Decoder/releases/tag/2.0 于是一通解密, 成功拿到超管账号和密码。 2023年11月29日测试通过 ----------------------------------------------------------------------------------------------------------------------------- 以下是关键步骤截图: winscp下载这个文件: 使用AESCBC解密失败: 使用CRC成功解密: 配置文件cfg中搜索 “pass”: User即超级管理员账户,Pass即密码。

C#【TextBox限制输入-KeyPress】

通过KeyPress事件 对TextBox输入进行限制 防止非法输入引起错误 handled 为true禁止输入! 常用的: char.IsDigit 判断是否为数字 char.IsLetter 判断是否为字母 char.IsLower 判断是否为小写 char.IsUpper 判断是否为大写 char.ToLower 将小写转化为大写 char.ToUpper 将大写转化为小写 也可以用Ascll码 只能输入正整数 端口等 private void tb_uint_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsDigit(e.KeyChar) || e.KeyChar == 8) e.Handled = false; else e.Handled = true; } 常规数字类输入 ---只允许输入数字、小数点、符号、退格符 void textbox_KeyPress(object sender, KeyPressEventArgs e) { //判断输入是否符合规范 if ((!char.IsDigit(e.KeyChar)) && e.KeyChar != 8 && e.KeyChar != (char)('.') && e.KeyChar != (char)('-')) {//允许输入数字、退格符、小数点、删除键和负号 MessageBox.Show("请输入正确的数字"); e.Handled = true; } if (e.

windows QT打包应用程序文件

一、确定编译器 MinGW还是MSVC,我的是MSVC 二、选择打包软件 对于上个步骤所用的编译器,我选择,如图所示 ​ 三、采用release版或Debug版编译 1、找到编译的Debug或者release中的.exe文件,放到新的空的文件夹,我放到E盘 3、打开第二步的控制台,进入到exe所在目录, 4、执行命令windeployqt Knowledge.exe 执行结果

vue使用实现录音功能js-audio-recorder

前言 最近项目中需要实现一个录音上传功能,用于语音评论可以上录音。 下载插件: npm i js-audio-recorder 完整代码 <template> <div style="padding: 20px;"> <h3>录音上传</h3> <div style="font-size:14px"> <h3>录音时长:{{ recorder && recorder.duration.toFixed(4) }}</h3> <br /> <el-button type="primary" @click="handleStart">开始录音</el-button> <el-button type="info" @click="handlePause">暂停录音</el-button> <el-button type="success" @click="handleResume">继续录音</el-button> <el-button type="warning" @click="handleStop">停止录音</el-button> <br /> <br /> <h3> 播放时长:{{ recorder && (playTime > recorder.duration ? recorder.duration.toFixed(4) : playTime.toFixed(4)) }} </h3> <br /> <el-button type="primary" @click="handlePlay">播放录音</el-button> <el-button type="info" @click="handlePausePlay">暂停播放</el-button> <el-button type="success" @click="handleResumePlay">继续播放</el-button> <el-button type="warning" @click="handleStopPlay">停止播放</el-button> <el-button type="error" @click="handleDestroy">销毁录音</el-button> <el-button type="primary" @click="

Backend Qt5Agg is interactive backend. Turning interactive mode on.

该警告通常是由于在使用 Matplotlib 绘图时的交互模式引起的。在使用 Qt5Agg 后端时,Matplotlib 会默认开启交互模式,这样用户可以交互地查看和修改图形。 如果你希望禁用交互模式,可以使用以下方法之一: 在脚本中使用 plt.ioff(): import matplotlib.pyplot as plt plt.ioff() # 关闭交互模式 # 在此之后进行绘图操作 在脚本中使用 plt.show(block=True): import matplotlib.pyplot as plt # 在绘图完成后使用 block=True 参数关闭交互模式 plt.show(block=True) 在脚本中设置 Matplotlib 的配置: import matplotlib.pyplot as plt plt.rcParams['interactive'] = False #在脚本的开头添加以关闭交互模式

dockers启动微服务脚本

Dockerfile FROM openjdk:8u212-jre MAINTAINER weimingzhong 1017291024@qq.com COPY ./common-gateway.jar /common-gateway.jar ENTRYPOINT ["java", "-jar", "/common-gateway.jar"] build.sh #/bin/sh cd /software/oauth_server/backend/common-platform sudo docker rm -f common-platform sudo docker rmi common-platform sudo docker build -t common-platform . cd /software/oauth_server/backend/common-user sudo docker rm -f common-user sudo docker rmi common-user sudo docker build -t common-user . cd /software/oauth_server/backend/common-gateway sudo docker rm -f common-gateway sudo docker rmi common-gateway sudo docker build -t common-gateway . cd /software/oauth_server/backend/common-sso sudo docker rm -f common-sso sudo docker rmi common-sso sudo docker build -t common-sso .

Qt Creator使用Heob检测内存泄漏

开发环境:win10 qt5.12.0 编译环境:MinGW 使用内存泄漏排查工具heob步骤如下: 第一步:下载heob.exe--注:我本机仅有heob.exe还不行,提示如下 所以需要下载heob和Dwarfstack,然后把他们放到同级目录下,我已经下载并且测试过了,点击下载地址: heob-3.1包括dwarfstack 其他参考资料地址:dwarfstack 2.1下载 heob官方文档:Detecting Memory Leaks with Heob | Qt Creator Manual 第二步:在你要分析的工程下点击Analyze|Heob; 第三步: 第四步:heob自行退出后,会在qt的Memcheck中显示内存泄漏情况。

VM虚拟机的配置文件(.vmx)损坏修复

@TOC 一、概述 在使用Vm虚拟机的时候,我的电脑蓝屏后导致.vmx打不开了,而且点击没有任何提示信息。应该是配置文件损坏了 二、环境 VM版本:VMware® Workstation 16 Pro 16.2.1 build-18811642Windows版本:Windows 10 家庭版 三、解决办法 在VM 虚拟机目录下找到 vmware.log, 并用 记事本打开,一定要用记事本的 ASNC 格式打开,不能用Utf-8格式打开,不然会报错。 找到类似下面的内容部分, 2023-12-01T05:39:22.182Z In(05) vmx DICT --- CONFIGURATION D:\IDEs\Virtualization\VmWare\VmWareMachine\Ubuntu20.4\Ubuntu 64 位.vmx 2023-12-01T05:39:22.182Z In(05) vmx DICT config.version = "8" 2023-12-01T05:39:22.182Z In(05) vmx DICT virtualHW.version = "19" 2023-12-01T05:39:22.182Z In(05) vmx DICT mks.enable3d = "TRUE" 2023-12-01T05:39:22.182Z In(05) vmx DICT pciBridge0.present = "TRUE" 2023-12-01T05:39:22.182Z In(05) vmx DICT pciBridge4.present = "TRUE" .... 2023-12-01T05:39:22.183Z In(05) vmx DICT --- USER DEFAULTS C:\Users\zhanghongyuan\AppData\Roaming\VMware\config.

芯品荟 | 温控器、线控器市场调研报告

PART ONE 产品简介 一、什么是温控器、线控器 温控器\线控器属于工业测量及智能家居产品,目前主流的包括LCD段码屏、TFT液晶屏。 PART TWO 市场规模 智能家居线控器市场规模 智能家居已成为最具潜力的消费科技市场,2022年市场规模约为6515.6亿元。 2022年我国智能家居设备市场出货量超过2.6亿台,预计到2026年预计突破5亿台 温控器市场规模 全球温控器市场规模为67亿元左右,家用电器是温控器产品的第一大应用市场。 PART THREE 华芯微特成功案例 一、针对高分辨率TFT线控器,主推SWM34S 1、支持RGB\MPU接口的TFT驱动 2、分辨率支持720*720、480*480 3、配套GUI图形上位机工具,开发便捷 4、可扩展wifi\BLE、语音(在线\离线) SWM34S资源介绍 二、针对低分辨率TFT线控器,主推SWM166 1、支持MPU接口的TFT驱动 2、分辨率最高支持480*320 3、性价比高 SWM166应用框图: SWM166资源介绍 三、针对LCD线控器,主推SWM241 1、带SCLD\LED驱动 2、带CAN通讯 3、性价比高 SWM241资源介绍 四、针对温控器,主推SWM181 1、带2路高精度ADC(16位SD ADC,12位SAR ADC),可实现精准测量 2、存储空间大,管脚多,可同时实现主控功能 SWM181资源介绍

AttributeError: ‘list‘ object has no attribute ‘cpu‘

这个错误通常是在使用 Python 编程语言中的 PyTorch 深度学习库时出现的。错误信息 "AttributeError: 'list' object has no attribute 'cpu'" 意味着你正在尝试在一个列表对象上调用 cpu 属性,但是列表对象并没有这个属性。 通常情况下,cpu 属性是针对 PyTorch 的张量(tensor)对象的,而不是列表。在 PyTorch 中,张量是表示数据的基本单位,而列表是一种常见的 Python 数据结构。 例如,如果你有一个 PyTorch 张量,你可以使用 .cpu() 方法将其移动到 CPU 上,这通常用于在 GPU 和 CPU 之间转移数据。但是,对于 Python 列表而言,并不存在 .cpu() 方法。 要解决这个问题,你需要检查你的代码,确保你正在操作 PyTorch 张量而不是 Python 列表。你可能需要查看出现错误的代码行,并确认该行的对象是 PyTorch 张量。如果需要,你可以通过将列表转换为 PyTorch 张量来解决这个问题。例如: import torch # 假设 my_list 是一个包含数据的列表 my_list = [1, 2, 3, 4, 5] # 将列表转换为 PyTorch 张量 my_tensor = torch.tensor(my_list) # 然后可以使用 .

Java开发项目之KTV点歌系统设计和实现

项目介绍 本系统实现KTV点歌管理的信息化,可以方便管理员进行更加方便快捷的管理。系统的主要使用者分为管理员和普通用户。 管理员功能模块: 个人中心、用户管理、歌曲库管理、歌曲类型管理、点歌信息管理。 普通用户功能模块: 个人中心、歌曲库管理、点歌信息管理等功能。 项目关键技术 1、JSP技术 JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。 2、数据库:MySQL 本系统开发使用的数据库是MySQL数据库,MySQL数据库运行速度快、安全性高,对使用的平台没有任何的限制,因而被广泛应运到系统的开发中。 3、B/S结构 B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,能够把系统核心功能集中在服务器上面,帮助系统开发人员简化操作,便于维护和使用。 B/S模式三层结构图 系统设计 1、系统概要设计 本系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。 系统工作原理图 2、系统结构设计 系统是由多个功能模块组合而成的,使用图形展现一目了然,如下图所示。 系统功能结构图 3、系统流程设计 登录模块实现管理员以及用户的权限登录,用户登录后进行添加信息和添加信息模块操作管理。 4、数据库设计 在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计,以下是本系统设计到的数据库和部分表结构和表功能说明。 表名:diangexinxi 功能:点歌信息 表名:gequleixing 功能:歌曲类型 表名:yonghu 功能:用户 表名:gequku 功能:歌曲库 点歌信息 系统详细功能 1、登录 通过填写注册时输入的用户名、密码进行登录,登录界面如下图所示。 登录界面 2、密码管理 登录进入KTV点歌系统可以在修改密码页面中可以通过填写原密码、新密码、确认密码等内容进行修改,如下图所示。 3、管理员 管理员登录进入KTV点歌系统可以查看个人中心、用户管理、歌曲库管理、歌曲类型管理、点歌信息管理等信息,如下图所示。 4、普通用户 在用户管理页面中可以填写用户账号、密码、用户姓名、性别、年龄、头像、用户手机等信息,并可根据需要对已有用户管理进行修改或删除等操作,如下图所示。 歌曲类型管理 点歌信息管理 更多项目: !!! 有需要的同学请留言或点击下方链接跟我联系 !!!

一款好用的windows窗口置顶工具

常用的windows窗口置顶工具如下,但是实际操作下来都不太好用或者有时不生效,导致窗口无法置顶,工作效率低频。 DeskPins 是一个允许用户将任何窗口(包括顶级窗口和对话框)置顶于桌面的工具。如果你正在寻找类似 DeskPins 的工具,可以尝试以下选项: PinWin:PinWin 是一款免费的 Windows 工具,可以像 DeskPins 一样让用户固定任何窗口在桌面上。它还提供了自定义颜色和窗口大小、缩放功能等功能。 Always On Top:Always On Top 是一款小巧的工具,可以让用户将任何窗口置顶。它与 DeskPins 相比,功能不是太强大,但是足以满足大多数用户的需求。 OnTopReplica:OnTopReplica 是一款免费工具,它可以复制任何窗口并将其置于桌面。用户可以自定义该窗口的大小和位置,这使得它成为一种非常有用的工具,例如当你需要同时监视多个窗口时。 以上是几个类似 DeskPins 的工具,你可以选择最适合你需求的工具进行使用。 记录推荐一个实际快捷好用的win下窗口置顶工具---叫做Window TopMost Control ,且可以让多个窗口置顶: 下载链接:https://download.csdn.net/download/a2591748032/88584323?spm=1001.2014.3001.5501 使用方法: 1. 选择一个窗口并双击系统托盘中的 Windows TopMost Control 图标 或者是 2. 选择一个窗口并使用Ctrl + Alt + Space键盘快捷键(再次按快捷键则会取消置顶,建议使用) 说明: 某些 Windows 应用程序不提供使自己成为最顶层的选项,即使其保持在所有其他窗口之上,使用 Windows Topmost 控件,您可以将此功能添加到任何窗口。 如果您右键单击它,您可以看到程序选项,在 Windows 下,您将找到打开的窗口列表,要使任何窗口位于最顶部,只需单击它 - 在菜单列表中标记为最顶部的项目。 windows弹出选项栏是需要截图,发现老是退出,导致无法截到自己想要的: 解决方法如下: 1、按下【Win+Shift+S】键,鼠标变为十字形,可以拖动鼠标来选择需要截取的区域,选择完成后截图将被保存至剪贴板中,可以通过粘贴操作将截图插入文档或编辑器中。 或者 2、键盘上的“Print Screen”键

gt基础教程

每日练习 吉他结构 吉他谱 记谱方式 音阶、调式 唱名 音级 自然音 音符 【基础乐理】十二平均律 【基础乐理】音程 和弦 C调和弦 调音器 练习导航 每日练习 右手练习流程: 大拇指单独练习: 控制654弦,每根弦拨4下 6弦4下 5弦4下 4弦4下食指中指无名指练习 控制321弦,321、321练习, 然后321、123练习, 然后321 23 然后 6 321 然后 5 321 然后 4 321 左手练习流程: 各弦单独练习 一弦 品级单独练习 :3456品 二弦 品级单独练习 :3456品 三弦 品级单独练习 :3456品 四弦 品级单独练习 :3456品 五弦 品级单独练习 :3456品 六弦 品级单独练习 :3456品 七弦 品级单独练习 :3456品 双音练习 两指同时按住琴弦、切换练习 吉他-结构 吉他放平,从上往下依次是1弦到6弦,从1弦到6弦的音准依次对应音名的 E-B-G-D-A-E,对应唱名的 Mi-Si-Sol-Re-La-Mi 一弦的音准是E,既空弦音是E,对应音符为Mi。下图可以看到一弦一品为4,对应音符为Fa;一弦三品为5,对应音符为Sol;一弦五品为6,对应音符为La。 二弦的音准为B,空弦音是B,对应音符为Si。从下图中可以看到二弦一品对应音符Do,二弦三品对应音符Re,二弦五品对应音符Mi。 三弦的空弦音是G,对应音符为Sol,从下图中可以看到三弦二品对应6,既是音符La,三弦四品对应音符Si,三弦五品对应音符Do。 四弦的音准是D,既空弦音是D,对应音符为Re。下图可以看到四弦二品为3,对应音符为Mi;四弦三品为4,对应音符为Fa;四弦五品为5,对应音符为Sol。 五弦的音准是A,既空弦音是A,对应音符为La。下图可以看到五弦二品为7,对应音符为Si;五弦三品为1,对应音符为Do;五弦五品为2,对应音符为Re。

科研学习|论文解读——智慧农业——AI在农业领域的应用与展望

智慧农业——AI在农业领域的应用与展望 Smart Agriculture——Application and Prospect of AI in Agriculture Abstract Agriculture is China's primary industry and has been the foundation of the national economy since ancient times. People eat for food, so agriculture is related to the interests of everyone and to our daily diet. Therefore, under the background that artificial intelligence profoundly changes the life of human society and changes the world, AI empowers agriculture to become the trend of the times.

Linux初始化脚本

#!/bin/bash #******************************************************************** #Author: HEhandsome #Date: 2023-2-15 #FileName: csh.sh #Description: 路漫漫其修远兮,吾将上下而求索 #******************************************************************** . /etc/os-release PURPLE="echo -e \e[1;35m" YELLOW="echo -e \e[1;33m" RED="echo -e \e[1;31m" GREEN="echo -e \e[1;32m" BLUE="echo -e \e[1;34m" END="\e[0m" #echo -e "\033[1;${PURPLE}m 1 \033[0m" #echo -e "\033[1;${YELLOW}m 1 \033[0m" #echo -e "\033[1;${RED}m 1 \033[0m" #echo -e "\033[1;${GREEN}m 1 \033[0m" set -u #需要手动执行一下 set -e #cd /data rm -rf ./* 如果data不存在,后面rm就不会执行 color () { RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m"

LinuxCrontab(定时任务)

一、crontab定时任务 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。 Linux任务调度的工作主要分为以下两类: 1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存、日志分析 2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新邮件,这些工作可由每个用户自行设置 文件介绍: 系统调度的任务一般存放在/etc/crontab 这个文件下,里面存放了一些系统运行的调度程序,通过命令我们可以看一下里面的内容: cat /etc/crontab 这些任务都会是系统在运行起来后自动进行调度的。同时在/etc目录下还存放了/etc/cron.deny 和 /etc/cron.allow 文件 /etc/cron.deny 表示不能使用crontab 命令的用户 /etc/cron.allow 表示能使用crontab的用户。 如果两个文件同时存在,那么/etc/cron.allow 优先。 如果两个文件都不存在,那么只有root用户可以安排作业。 二、命令格式 crontab [-u user] file crontab [-u user] [ -e | -l | -r ] crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 参数说明: -u user:用来设定某个用户的crontab服务; file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。 -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。 -i:在删除用户的crontab文件时给确认提示。 三、crontab文件格式 如果要创建自己的一个任务调度,可以使用 crontab -e 这个命令,如: crontab -e 此时会进入到vi编辑界面,来编写我们要调度的任务,crontab调度命令的格式如下: * * * * * command path 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

Linux(Shell命令脚本)

1、编写Shell脚本 可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性。要想正确使用Shell中的这些功能特性,准确下达命令尤为重要。Shell脚本命令的工作方式有下面两种。 交互式(Interactive):用户每输入一条命令就立即执行。 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。 在Shell脚本中不仅会用到前面学习过的很多Linux命令以及正则表达式、管道符、数据流重定向等语法规则,还需要把内部功能模块化后通过逻辑语句进行处理,最终形成日常所见的Shell脚本。 通过查看SHELL变量可以发现,当前系统已经默认使用Bash作为命令行终端解释器了: [root@localhost ~]# echo $SHELL /bin/bash 1、编写简单的脚本 估计读者在看完上文中有关Shell脚本的复杂描述后,会累觉不爱吧。但是,上文指的是一个高级Shell脚本的编写原则,其实使用Vim编辑器把Linux命令按照顺序依次写入到一个文件中,就是一个简单的脚本了。 例如,如果想查看当前所在工作路径并列出当前目录下所有的文件及属性信息,实现这个功能的脚本应该类似于下面这样: [root@localhost ~]# vim example.sh #!/bin/bash # 这是一句注释 pwd ls -al Shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh后缀加上,以表示是一个脚本文件。 在上面的这个example.sh脚本中实际上出现了3种不同的元素:第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;第三、四行的可执行语句也就是我们平时执行的Linux命令了。你们不相信这么简单就编写出来了一个脚本程序?!那我们来执行一下看看结果: [root@localhost ~]# bash example.sh /root total 60 dr-xr-x---. 15 root root 4096 Oct 12 00:41 . dr-xr-xr-x. 17 root root 224 Jul 21 05:04 .. -rw-------. 1 root root 1407 Jul 21 05:09 anaconda-ks.cfg -rw-------. 1 root root 335 Jul 24 06:33 .bash_history -rw-r--r--.