linux学习,配置bond

什么是bond? bond是一种虚拟网卡的技术,可以把几块网卡联系起来,虚拟成一块网卡来对外提供服务。 通俗一点就是服务器两个网口怼两根线,把这两个真实存在的网口绑定成一个虚拟的网卡,叫bond0,然后把ip配到bond0,它的网速就从1000变成2000。 配置方法 添加网卡 虚拟机里点设置添加网络适配器,确定 1. 接口配置文件 cd /etc/sysconfig/network-scripts/ 必须配到这个目录下 vi ifcfg-bond0 bond0的配置文件,没有的话手写vi DEVICE=bond0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPADDR=172.16.8.100 (本机的IP地址) PREFIX=24 netmask=255.0 他俩是等价的 IPV6INIT=no 不启用ipv6 USERCTL=no GATEWAY=192.168.254.2 前三位和ip地址一样后面是.2(192段的是.2 10段的网关最后一位是.1) 不写GATEWAY 会导致这台机器上不了网,什么叫做网关地址,它告诉你网络的出口在哪里 [root@localhost network-scripts]# vi ifcfg-ens33 DEVICE=ens33 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPV6INIT=no USERCTL=no MASTER=bond0 SLAVE=yes [root@localhost network-scripts]# vi ifcfg-ens37 DEVICE=ens37 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPV6INIT=no USERCTL=no MASTER=bond0 SLAVE=yes 2. bonding参数 [root@localhost network-scripts]# tail -2 /etc/modprobe.d/bond0.conf 看这个配置文件的后两行 如果没有手写 [root@localhost network-scripts]# vi /etc/modprobe.

ELK日志

ELK 介绍 日志处理 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因, 经常分析日志可以了解服务器的负荷, 性能安全性, 从而及时采取措施纠正错误 理想的日志系统特点 收集 能够采集多种来源的日志数据 传输 能够稳定的把日志数据传输到中央系统 存储 如何存储日志数据 分析 可以支持 UI 分析 警告 能够提供错误报告, 监控机制(ElastAlert) ELK 介绍 ELK提供了一整套解决方案, 都是开源软件, 之间互相配合、 完美衔接, 高效的满足了很多场合的应用,是目前主流的日志系统。由ElasticSearch、Logstash和Kibana三个开源工具组成,后新增了FileBeat,亦称ELFK 组成 ElasticSearch 一个基于Lucene的开源分布式搜索服务器。基于RESTful web接口,用Java开发分布式, 零配置, 自动发现, 索引自动分片, 索引副本机制, restful风格接口, 多数据源, 自动搜索负载设计用于云计算中, 能够达到实时搜索, 稳定, 可靠, 快速, 安装使用方便 Logstash 对日志进行收集、过滤、分析,开源免费一般为c/s架构, client端安装在需要收集日志的主机上, server端负责将收到的各节点日志进行过滤、修改等操作再一并发往elasticsearch上去 Kibana 基于浏览器页面的Elasticsearch前端展示工具,可以汇总、分析和搜索重要数据日志。开源免费 FileBeat 轻量级的日志收集处理工具(Agent),占用资源少, 适合于在各服务器上搜集日志后传给Logstash,官方推荐 工作原理 应用程序(AppServer)→FileBeat→Logstash→ElasticSearch→Kibana→浏览器(Browser)FileBeat收集应用产生的日志,发给Logstash进行处理,处理后存放到ElasticSearch集群中,Kibana从ES集群中查询数据生成图表返回给Browser(原始模式由Logstash收集并处理) 文档 elastic中文社区 https://elasticsearch.cn/ Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/index.html Logstash https://www.elastic.co/guide/en/logstash/index.html Kibana https://www.elastic.co/guide/en/kibana/index.html Filebeat https://www.elastic.co/guide/en/beats/filebeat/index.html 部署准备 服务器 至少2台,配置至少2U3G1.1.1.11 es1 Elasticsearch/kibana/head1.

CSS3动画之奔跑的小熊熊案例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .back{ position: relative; margin: 300px auto; width: 100%; height: 400px; background: url("back.png") no-repeat; animation: back 8s linear infinite; } .bear{ position: absolute; top:200px; width: 200px; height: 100px; background: url("bear.png") no-repeat; animation: bear 1s steps(8) infinite,move 3s forwards; } /*背景*/ @keyframes back { 0%{ background-position: 0 0; } 100%{ background-position: 100% 0; } } /*第二段-熊*/ @keyframes bear { 0%{ } 100%{ background-position: -1600px 0px; } } /*熊-第一段*/ @keyframes move { 0%{ left: 0; } 100%{ left:50%; transform: translate(-50%); } } </style> </head> <body> <div class="

MySQL解压版安装步骤 - 最全步骤流程

解压文件 将安装包复制进对应目录,进行解压 新建文件 1.在bin目录同级下新建Data文件夹和my.ini文件 2.打开my.ini文件,在里面输入如下内容 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3309端口 port = 3309 # 设置mysql的安装目录 basedir=D:\mysql\mysql-5.7.32-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql\mysql-5.7.32-winx64\Data # 允许最大连接数 max_connections=20 # 设置mysql服务端默认字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 配置环境变量 右键此电脑 → 点击高级系统设置 → 环境变量 1.新建环境变量 变量名:MYSQL_HOME 变量值:mysql安装目录bin同级例:D:\mysql\mysql-5.7.32-winx64 2.修改path 追加或浏览MySQL安装目录到bin目录下 保存即可 安装服务 1.以管理员身份打开cmd窗口 点击放大镜 → 搜索cmd → 右键以管理员身份运行 2.按顺序执行以下三条命令 //安装 mysqld --install //初始化 mysqld --initialize-insecure //启动 net start mysql 测试连接 1.以管理员身份打开cmd窗口 点击放大镜 → 搜索cmd → 右键以管理员身份运行 2.输入mysql -u root -p回车

AWS CUR 使用 ClickHouse S3 外表

背景 在调研 ClickHouse S3 外表功能的过程中,我们发现 ClickHouse 可以支持查询 .gz 格式的数据文件。这启发了我们,我们计划通过 S3 外表功能来简化 AWS CUR 的报告投递路径,此文档将描述基于 ClickHouse S3 外表的 AWS CUR 查询方案。 方案说明 本方案包含两个 AWS 账号,我们在此不假设一定是由 master account 提供 AWS CUR,所以整个方案中有两个不同的账号: 提供 AWS CUR 的账号 提供 ClickHouse 服务的账号 接下来,将分别描述这两个账号需要提供的资源和基础设施 提供 AWS CUR 的账号 用来存放 AWS CUR 的 S3 bucket 要接收账单报告,服务中须有一个 S3 bucket。在账单控制台中设置成本和使用情况报告时,可以选择目前已有的 S3 bucket 或创建一个新的 bucket。S3 bucket 需要信任提供 ClickHouse 服务中的一个 IAM Role,在 bucket policy 中编写相应的 resource-based policy(允许跨账号读取桶内资源)。 参考官方文档:Setting up an Amazon S3 bucket for Cost and Usage Reports

windows10 下 nvidia-smi无效解决办法

首先检查C:\Program Files\NVIDIA Corporation\NVSMI有没有nvidia-smi.exe和nvml.dll文件,若是没有,去查找即可。 接着,运行cmd,输入nvidia-smi,显示nvidia-smi has failed because you are not running as an administrator or there is not at least one TTC device in there system. 我看其他博客说是用管理员身份运行cmd,出现 has failed because it couldn’t communicate with the NVIDIA driver 然后去看设备管理器,显卡显示有问题,Windows 无法验证此设备所需的驱动程序的数字签名。最近的硬件或软件更改安装的文件可能未正确签名或已损坏,或者可能是来自未知来源的恶意软件。 解决: https://blog.csdn.net/DH2442897094/article/details/121948221?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166329738616782248554493%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166329738616782248554493&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-8-121948221-null-null.nonecase&utm_term=win10&spm=1018.2226.3001.4450 然后可以关闭签名了,用管理员身份运行cmd,输入下图所示命令,可以成功关闭签名。 显示适配器没有黄色感叹号了: cmd之后输入nvidia-smi正常输出

家政服务管理系统/家政管理系统

摘要 家政服务是指将部分家庭事务社会化、职业化、市场化,属于民生范畴。由社会专业机构、社区机构、非盈利组织、家政服务公司和专业家政服务人员来承担,帮助家庭与社会互动,构建家庭规范,提高家庭生活质量,以此促进整个社会的发展。 本论文系统地描绘了整个家政服务管理系统的设计与实现,主要实现的功能有以下几点:管理员;首页、个人中心、客户管理、前台管理、服务人员管理、财务人员管理、服务项目管理、签订合同管理、服务变更管理、客户投诉管理、投诉处理管理、客户回访管理、合同收支管理、非合同收支管理、收支整合管理、日结工资管理、月结工资管理,客户;首页、个人中心、服务项目管理、服务变更管理、客户投诉管理、投诉处理管理、客户回访管理,前台;首页、个人中心、客户管理、签订合同管理、服务变更管理、日结工资管理、月结工资管理,服务人员;首页、个人中心、服务变更管理、客户投诉管理、投诉处理管理、客户回访管理、日结工资管理、月结工资管理,财务人员;首页、个人中心、合同收支管理、非合同收支管理、收支整合管理、日结工资管理、月结工资管理等功能,其具有简单的接口,方便的应用,强大的互动,完全基于互联网的特点。 现代社会的网络和信息技术不断提高,人们的生活水平达到一个新的层次。但由于客户的工作和生活越来越忙,开发出一个家政服务管理系统是必然的,简化家政服务过程的程序,正是我们所需要的。这篇文章研究了基于ssm的家政服务管理系统的开发和实现,从需求分析、总体设计到具体实现,最终完成了整个在线家政服务管理系统,从而方便了客户和提高了管理员人员的管理水平。 关键词:家政服务管理系统,ssm技术,Java语言,数据库MYSQL Domestic service refers to socialization, professionalization and marketization of some family affairs, which belongs to the category of people's livelihood. It is undertaken by social professional institutions, community institutions, non-profit organizations, domestic service companies and professional domestic service personnel to help families interact with society, build family norms, improve the quality of family life, so as to promote the development of the whole society.

【Python & Other】一网打尽 Python复制文本&文件到剪切板

前言 在使用uiautomation操作微信发送信息时候,难点在于发送文件。发送文件,靠的是复制到剪切板,然后再从剪切板粘贴发送。 本文吧啦一下在Windows系统中关于Python复制文件到剪切板的操作。 花了挺多时间,但是不管怎么找,始终都找不着Python复制文件到剪切板的方法。 于是另辟蹊径,从Windows系统上下手,然后再利用Python去调用Windows系统的命令,曲线救国,从而达到Python复制我呢见到剪切板的方法。 多动一下自己那个🐷脑袋,问题总是可以解决的🐱‍🏍🐱‍🏍 知识点📖📖 文中用到的命令都可以在 https://docs.microsoft.com/zh-cn/ 找到相应的解释,有疑问请找它,不要来问我!!! 复制文本 cmd窗口:echo text | clipPython模块:pyperclip 复制文件 借助工具 xclip:echo file_path | xclip /copy借助PowerShell命令:Get-Item file_path | Set-Clipboard 实现 复制文本 这里介绍两种方法 Windows系统命令Python模块pyperclip Windows系统命令 在Windows系统中,cmd窗口输入以下命令可以将text文本复制到剪切板 echo text | clip 在Python中,可以使用os模块来执行cmd命令 将text替换成需要复制到剪切板的文本即可 import os os.system('echo text | clip') pyperclip 在Python中,有模块是支持复制文本到剪切版的 pip install pyperclip 使用的话,也是很简单 import pyperclip # 复制文本到剪切板 pyperclip.copy('The text to be copied to the clipboard.') # 获取剪切板的文本 text = pyperclip.paste() print(text) # 'The text to be copied to the clipboard.

MySQL之视图、存储过程

文章目录 视图基本概念使用语法示例 注意事项使用场景 存储过程介绍使用基本语法示例 参数INOUTINOUT 变量作用类型局部变量用户变量系统变量 存储函数定义示例 定义条件定义示例 处理程序定义示例 游标声明打开使用关闭 流程控制ifcaseloopleaveiteraterepeatwhile 触发器作用类型INSERTUPDATEDELETE 创建语法示例 查看删除 视图 基本概念 视图是一个虚拟表 内容由查询定义,和真实的表一样 视图根据基表创建 可以是多个基表 包含字段,数据源于对应的真实表(基表) 视图本身不存储数据 使用 语法 CREATE VIEW <视图名> AS <SELECT语句>; -- 创建视图语法,使用 select 语句中获取的数据显示在视图中 create view view_name as select 语句; -- 创建视图 alter view view_name as select 语句; -- 修改视图 show create view view_name; -- 显示视图创建指令 drop view view_name1,view_name2; -- 删除(多个)视图 示例 -- 创建视图user_view, 只能查看 user 表中的 name、id、age 字段 create view user_view as select name, id, age from user select name, id, age from user_view; -- 从视图表 user_view 中查询数据 show create view user_view; -- 查看创建视图 user_view 的指令 alter view user_view as select id,name from user; -- 修改视图 user_view: 在视图中只显示 id 和 name 字段数据 drop view user_view; -- 删除视图 注意事项 视图创建后在磁盘中只有结构文件,没有数据文件

剑指 Offer 53 - I. 在排序数组中查找数字 I(LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置)——二分

题目链接: https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/ 题目: 统计一个数字在排序数组中出现的次数。 解法: 两次二分,分别找左右边界,时间O(logN),空间O(1) 本题二分关键是,弄清二分结束后左右下标的位置。 左边界:如下代码用于寻找左边界 while(l<=r) { int mid = (l+r)>>1; if(nums[mid] >= target) { r = mid - 1; } else { l = mid + 1; } } 上述循环结束后,左右指针指向如下图所示 右边界:如下代码用于寻找右边界 while(l<=r) { int mid = (l+r)>>1; if(nums[mid] <= target) { l = mid + 1; } else { r = mid - 1; } } 上述循环结束后,左右指针指向如下图所示 代码: #include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: int search(vector<int>& nums, int target) { int l = 0, r = nums.

TRICP点云配准

1、TRICP点云配准原理 2、TRICP在pcl中的实现 trimmed ICP在PCL的recognition模块中,具体实现在pcl\recognition\ransac_based\的trimmed_icp.h文件中。具体实现代码为align函数: inline void align (const PointCloud& source_points, int num_source_points_to_use, Matrix4& guess_and_result) const { int num_trimmed_source_points = num_source_points_to_use, num_source_points = static_cast<int> (source_points.size ()); if ( num_trimmed_source_points >= num_source_points ) { printf ("WARNING in 'TrimmedICP::%s()': the user-defined number of source points of interest is greater or equal to " "the total number of source points. Trimmed ICP will work correctly but won't be very efficient. Either set " "

Educational Codeforces Round 125 (Rated for Div. 2) CD题解

C-Bracket Sequence Deletion 题目大意: 当一个括号序列满足以下两个条件之一即为good(长度至少为2): 是回文序列左括号和右括号能匹配 每次从左边删除长度最短的good序列,问能够删除几次,最后序列还剩下几个括号。 思路: 用马拉车预处理,然后一边读入括号一边判断当前序列是否为回文或匹配的序列,一旦符合之一就删去。 AC代码: #include <bits/stdc++.h> const int N = 1e6 + 10; using namespace std; char s[N]; int length, len[N], P, Po; // len[i]保存的是从i到回文右端的长度(i也算在内) void input() { char c; s[0] = '~'; s[1] = '#'; length = 1; while ((c = getchar()) != '\n') { s[++length] = c; s[++length] = '#'; } s[length + 1] = '\0'; } void manacher() { int res = 0; Po = P = 0; for (int i = 0; i <= length; i++) len[i] = 0; for (int i = 1; i <= length; i++) { if (i < P) //如果i在P的左侧,先更新len[i] { int j = 2 * Po - i; len[i] = min(len[j], P - i + 1); } while (s[len[i] + i] == s[i - len[i]]) ++len[i]; if (len[i] + i - 1 > P) //更新P的位置 { P = len[i] + i - 1; Po = i; } if (len[i] > res) res = len[i]; } } void solve() { int n; scanf("

【vue3源码】十二、认识虚拟DOM

【vue3源码】十二、认识虚拟DOM 什么是虚拟DOM? 虚拟DOM(也可以称为vnode)描述了一个真实的DOM结构,它和真实DOM一样都是由很多节点组成的一个树形结构。本质其实就是一个JS对象,如下就是一个vnode: { type: 'div', props: { id: 'container' }, children: [ { type: 'span', props: { class: 'span1' }, children: 'Hello ' }, { type: 'span', props: { class: 'span2' }, children: 'World' }, ] } 上面这个vnode描述的真实DOM结构如下: <div id="container"> <span class="text1">Hello </span> <span class="text2">World</span> </div> 可以发现,虚拟节点的type描述了标签的类型,props描述了标签的属性,children描述了标签的子节点。当然一个vnode不仅只有这三个属性。vue3中对vnode的类型定义如下: export interface VNode< HostNode = RendererNode, HostElement = RendererElement, ExtraProps = { [key: string]: any } > { // 标记为一个VNode __v_isVNode: true // 禁止将VNode处理为响应式对象 [ReactiveFlags.

【uni-app报错】选择地址:fail the api need to be declared in the requiredPrivateInfos field in app/ext.json

【uni-app报错】{errMsg: “chooseAddress:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json”} 笔者通过多方渠道查询相关信息,得出以下线索: 微信开发者社区-官方通告 自 2022 年 7 月 14 日起,开发者如需在最新版本发布后使用地理位置相关接口,除需完成接口权限开通外,还需在 app.json(或ext.json)配置环节。 公告具体内容解决方案以及配置项说明 官方配置链接 解决方案 一、uni-app项目 在项目根目录中找到 manifest.json 文件,在左侧导航栏选择源码视图,找到mp-weixin 节点,在节点后面加上: "requiredPrivateInfos": [ "getLocation", "onLocationChange", "startLocationUpdateBackground" "chooseAddress" ] 二、原生小程序项目 在根目录的 app.json 文件中加上requiredPrivateInfos节点,配置信息参考 官方配置 ,根据项目需要自行配置。 ============================================================================ 2022/09/10更新 给大家看下我配置后的图,仅供参考 还有就是有个需要注意下,以下两个参数二选一就行,声明了模糊位置信息就无法声明精确位置信息。若同时声明模糊位置信息和精确位置信息,在编译代码时会出现错误 表中的序号1与序号2-5互斥

免费调用快递鸟物流跟踪轨迹订阅接口技术文档

物流跟踪由轨迹订阅接口和轨迹推送接口组成,对接时需要对接以下二个接口 1.轨迹订阅接口 1.1 功能说明 快递鸟物流轨迹订阅接口用于向快递鸟订阅物流轨迹信息。将订单内容通过订阅接口订阅到快递鸟,客户可自动获取运单的轨迹节点信息。 免费试用接口,快递鸟官网【产品服务】-【在途监控】-【免费试用】, 支持服务:预约取件、监督卖家发货、物流跟踪、异常提醒、签收状态等服务 1.2 基本信息 1.3 接口规则 (1)接口对订阅的数据不做判断和校验,不校验快递公司编码和单号是否匹配,不判断快递 单号是否合法、是否正确、是否重复订阅。 (2)接口支持的消息接收方式为 HTTPS POST,请求方法的编码格式(utf-8): "application/x-www-form-urlencoded;charset=utf-8"。 (3)轨迹订阅接口只返回是否订阅成功的结果,不返回实际轨迹信息,需再开发轨迹推送接口用于接收快递鸟推送的轨迹数据。 (4)接口工作原理:用户将快递单号和订单信息向快递鸟订阅成功后,快递鸟向快递公司订 阅轨迹,当轨迹有更新时,快递公司推送至快递鸟,快递鸟再同步推送至用户, 直到运 单签收 1.4 支持情况 主流快递仅支持申通快递、圆通速递、百世快递、天天快递 4 家,不支持 EMS、邮政 快递包裹、顺丰速运、韵达速递、京东快递、中通快递;如需查询所有主流快递公司, 请选用在途监控服务; 1.5 应用场景 电商平台、打单工具、查询工具、ERP 系统、WEB 端、APP 移动端、小程序 1.6 应用级参数 请求示例: ZTO 请求示例: { "ShipperCode":"ZTO", "OrderCode":"", "LogisticCode":"3100707578976", "PayType":"1", "ExpType":"1", "CustomerName":"", "CustomerPwd":"", "MonthCode":"", "IsNotice":"0", "Sender":{ "Name":"1255760", "Tel":"", "Mobile":"13700000000", "ProvinceName":"广东省", "CityName":"深圳市", "ExpAreaName":"福田区", "Address":"测试地址" }, "Receiver":{ "Name":"1255760", "Tel":"", "Mobile":"13800000000", "ProvinceName":"广东省", "CityName":"深圳市", "ExpAreaName":"龙华新区", "Address":"测试地址 2"

中文文本分类(基于Pytorch)

中文文本分类,TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention, DPCNN, Transformer, 基于pytorch 介绍 我从THUCNews中抽取了20万条新闻标题,文本长度在20到30之间。一共10个类别,每类2万条。 以字为单位输入模型,使用了预训练词向量:搜狗新闻 Word+Character 300d。 类别:财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。 数据集数据量训练集18万验证集1万测试集1万 更换自己的数据集 如果用字,按照我数据集的格式来格式化你的数据。如果用词,提前分好词,词之间用空格隔开,python run.py --model TextCNN --word True使用预训练词向量:utils.py的main函数可以提取词表对应的预训练词向量。 效果 模型acc备注TextCNN91.22%Kim 2014 经典的CNN文本分类TextRNN91.12%BiLSTMTextRNN_Att90.90%BiLSTM+AttentionTextRCNN91.54%BiLSTM+池化FastText92.23%bow+bigram+trigram, 效果出奇的好DPCNN91.25%深层金字塔CNNTransformer89.91%效果较差bert94.83%bert + fcERNIE94.61%比bert略差(说好的中文碾压bert呢) 使用说明 # 训练并测试: # TextCNN python run.py --model TextCNN # TextRNN python run.py --model TextRNN # TextRNN_Att python run.py --model TextRNN_Att # TextRCNN python run.py --model TextRCNN # FastText, embedding层是随机初始化的 python run.py --model FastText --embedding random # DPCNN python run.py --model DPCNN # Transformer python run.

Axure RP9 安装教程

解压压缩包得到如下内容 运行exe文件,一路Next 更换安装路径 安装完成,先不运行。 复制汉化包Lang文件夹到安装目录下 启动软件需要更新,我们让它启动时候不检查更新,跳过此次更新。 软件界面已经是汉化过的,还没有授权 输入授权进入此界面 输入授权码 Licensee :Freecrackdownload.com KEY:5vYpJgQZ431X/G5kp6jpOO8Vi3TySCBnAslTcNcKkszfPH7jaM4eKM8CrALBcEC1 点击提交就完成激活 软件下载地址 链接:百度网盘 请输入提取码 提取码:b9ji

docker错误集:CentOS环境

1、报错:bash: vim: command not found docker运行centos:latest镜像,进去使用vim命令时提示:bash: vim: command not found 解决方案: 直接yum -y install vim 2、报错:Failed to set locale, defaulting to C.UTF-8 原因是因为没有配置正确的语言环境造成的。将该配置文件进行就该即可。 解决方案: echo "export LC_ALL=en_US.UTF8" >> /etc/profile source /etc/profile 3、报错:Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist 报错原因: 从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表 在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS 8的所有包。 CentOS 8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到https://vault.centos.org 报错原图: 解决方案: cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* yum makecache yum -y install vim

Ubuntu22.04版本侧边栏和顶部栏隐藏与其他版本不同

Ubuntu22.04版本侧边栏和顶部栏隐藏 侧边栏隐藏 在 设置 中找到 外观 ,选中 自动隐藏Dock ,即设置成功,当打开的软件窗口靠近侧边栏或全屏时,侧边栏会自动隐藏。 顶部栏隐藏 在其他版本中,顶部栏隐藏需要安装 Ubuntu22.04中,软件 在命令行输入 sudo apt-get install gnome-shell-extension-manager ,安装ExtensionManager 打开ExtensionManager 点击选择Browse 搜索hidetopbar,点击install安装扩展。 顶栏自动隐藏即设置成功,当打开的软件窗口靠近顶栏或全屏显示时,顶栏会自动隐藏。 小结 顶栏隐藏在网上查了大量资料,但有一些在Ubuntu22.04中无法使用。猜测是有部分软件被替换。比如在安装gnome-tweak-tool时,提示被废弃取代。安装gnome-tweaks后仍未找到HideTopBar的相关设置。最后发现需要安装ExtensionManager,在里面下载安装相关扩展。 关于Ubuntu22.04的顶栏隐藏设置如有其他方法,欢迎在评论区分享。

vue computed和watch

文章目录 computed 与 watch面试题computed的实现原理computed的优缺点 watch的原理区别 watch和computed的执行顺序 computed 与 watch 面试题 computed 与 watch的区别computed 与 watch的原理computed的优缺点Vue中computed和data里的值的联系,computed的特点以及响应式变化Vue computed 计算属性如何传递参数? --返回一个函数 computed的实现原理 计算属性:根据已有的属性生成新的属性 计算属性函数是通过函数将结果作为计算属性的值,把该计算属性挂在vm上,在模板中不能直接调用函数。计算属性的结果会被缓存,初始化时调用生成初始值,只有计算所依赖的数据发生变化才会重新计算。 那么如何知道计算属性的返回值是否发生了变化? 当dirty=true时依赖的数据发生变化说明需要重新计算计算属性的返回值当dirty=false时说明计算属性的值没有变,不需要重新计算 当计算属性中的内容发生变化后,计算属性的Watcher与组件的Watcher都会得到通知。 计算属性的Watcher会将自己的dirty属性设置为true,组件的Watcher也会收到通知,从而执行render函数进行重新渲染操作,重新读取计算属性的值,此时计算属性的Wather已经把自己的dirty属性设置为true,所以会重新计算计算属性的值。 computed的优缺点 computed的特点:性能提升-确保了必要时才会进行计算 缓存结果:只有依赖项变化的时候才会重新计算,否则复用上一次计算的结果。惰性求值:只有在真正读取它的 value 时,才会进行计算求值。 惰性求值也会带来一个缺点:计算属性的返回结果,只有在对它进行计算后才会知道。 影响性能的computed特征 一个计算简单的 computed,通常频繁触发计算,并且返回值通常变化不大,比如上面的 boolean 类型另一个计算开销大的 computed,依赖这个廉价的 computed 案例 watch的原理 watch的属性:可以监视data和computed里的已有属性 vue实例将会在实例化时调用vm.$watch()遍历watch对象的每一个属性,vm.$watch实际上是对Watcher的一种封装。 1.执行new Watcher时,会判断用户是否使用了immediate参数,如果使用了立即执行一次回调 2.Dep会记录数据发生变化时,需要通知哪些Watcher,而Watcher中也会记录自己订阅了谁,会被哪些Dep通知。 3.返回一个取消观察数据的函数,当Watcher不想继续订阅这些Dep时,循环自己的记录订阅列表来通知Dep将自己移除。 deep参数的实现原理 Watcher像监听某个数据,就会触发某个数据收集依赖的逻辑,将自己收集进去。然后当它发生变化时,就会通知Watcher。实现思路是,除了要触发当前这个被监听数据的收集依赖逻辑外,还要把当前监听的这个值在内的所有子值都触发一遍收集依赖逻辑。这样就可以实现当前的依赖的所有子数据发生变化时,通知当前的Watcher了。 区别 -computedwatch意图根据已有属性计算出新的属性监视已有属性写法conputed中的函数必须将新的属性用return返回watch中的函数不是必须要用return功能1.初始化时调用 2.计算所依赖的数据发生变化1.默认第一次加载不做监听,可以通过设置immediate让初始化时调用 2.监控数据发生变化时调用是否支持异步不支持异步,当computed内有异步操作是无法监听到数据变化的√是否有缓存√ 页面重新渲染,值不变时,会直接返回之前的计算结果,不会重新计算× 没有缓存,页面重新渲染时,值不改变时也会执行 如果一个值依赖多个属性(多对一),用computed肯定是更加方便的。 如果一个值变化后会引起一系列操作,或者一个值变化会引起一系列值的变化(一对多),用watch更加方便一些。 watch和computed的执行顺序 1.如果watch没有设置immediate 初始化时 beforeMount -> computed -> mounted 修改watch和computed共同的依赖属性 watch->beforeUpdate->computed->updated 2.如果watch设置了immediate 初始化时 watch->created->beforeMount->computed->mounted 如果监听了计算属性的值,那么watch监听的计算属性会先执行