SQL性能--left join和inner join的运行速度与效率

①大家都知道,sql尽量使用数据量小的表做主表,这样效率高,如果使用数据量大的表做主表,此时使用left join 就会比较慢,即使关联条件有索引。但如果使用inner join速度就较快。因为inner join 在执行的时候回自动选择最小的表做基础表,效率高,总之相比之下inner join不管从效率还是速度上都优于left join,毕竟left join 会多一部分逻辑运算 ②选择inner join还有个好处,不会产生null,有些表我们在定义的时候某些字段不允许存在null,如果用left join就可能会产生null,此时软件就会报错,而inner join可以避免 ③在实际运用中选择inner join还是left join这个需要根据实际场景进行选择,并不是所有的地方都能用inner join的,建议能用则用

C++面向对象之编写Rational类实现有理数的基本操作

实验要求 编写一个表示有理数的类Rational。(有理数就是分数,包含分子与分母,均为整数)。要求: 定义一个命名空间Numeric,在该空间中定义类Rational;编写默认构造函数,构造一个有理数0;编写带参数列表的构造函数Rational (int, int ),要求使用初始化列表;编写复制构造函数;编写赋值操作=;编写四个友元函数add、sub、mul、div,对两个Rational对象表示的有理数分别进行相加、相减、相乘、相除运算;(例:Rational x(1,2),y(1,3);分别表示有理数 ,则Rational z = add(x,y);之后,z表示 )重载上述四个函数,实现有理数与整数的相加、相减、相乘、相除运算;(例:Rational x(1,2);表示有理数12 ,则Rational z = add(x,1),之后,z表示 )编写成员函数getValue(),返回用浮点数表示的有理数,要求写成常函数。(例:Rational x(1,2);表示有理数12 ,则x.getValue()返回0.5)编写友元函数lessThan,比较两个有理数的大小,返回bool类型。(例:Rational x(1,2),y(1,3);则bool b = lessThan(x,y);之后b为false)编写main函数,使用using namespace Numeric;来访问Numeric::Rational类。编写代码测试Rational类。在main函数中,随机生成10个有理数,形成一个有理数数组,并利用lessThan函数以及任意一种排序算法,对这10个有理数进行从小到大排序,输出排序结果。 注:1)上述友元函数都定义在Rational空间; 2)随机数通过std::rand()函数生成,可以调用std::srand(time(0)); 来设置随机数种子。 代码 主函数的实现 //main.cpp #include <iostream> #include "Rational.h" using namespace std; using namespace Numeric; #include<random> #include<stdlib.h> #include<time.h> int main() { FourOpera FourOpera; lessThan lessThan; //调试代码 Rational x(8, 6); Rational y(16, 6); Rational z = FourOpera.add(x, y); z.ReducFac(); cout << "测试结果为:" << endl; cout << z.

Android AIDL机制解析

关于AIDL的使用,已经在之前的博客Android AIDL的基本用法 里介绍过,这次主要通过剖析AIDL生成的java文件来讲解AIDL机制。用的还是之前博客的例子,它在build目录下生成的 IMyAidlInterface.java 文件内容如下: /* * This file is auto-generated. DO NOT MODIFY. * Original file: D:\\AndroidStudioProjects\\AIDLServer\\app\\src\\main\\aidl\\cn\\qiracle\\aidlserver\\IMyAidlInterface.aidl */ package cn.qiracle.aidlserver; // Declare any non-default types here with import statements public interface IMyAidlInterface extends android.os.IInterface { /** Local-side IPC implementation stub class. */ public static abstract class Stub extends android.os.Binder implements cn.qiracle.aidlserver.IMyAidlInterface { private static final java.lang.String DESCRIPTOR = "cn.qiracle.aidlserver.IMyAidlInterface"; /** Construct the stub at attach it to the interface.

黑苹果不能使用无线网解决办法

网上找了很多方法,都不能让我的黑苹果上网,果然还是得靠自己,抱着碰碰运气的态度,通过四叶草🍀安装驱动,在下图所示的已经安装的驱动中,我可以明确的告诉大家,其中一个是usb上网的驱动,也就是说,可以通过手机usb共享网络,而在这之前,我只能通过网线使用黑苹果上网。 之所以会抱着试试四叶草里内置驱动的态度,是因为我的电脑是双系统,先有的win10,后来装了黑苹果后win10进不去了,通过U盘启动盘引导修复后黑苹果又进不去了,抱着试一试的态度去安装驱动后,发现当我按了某个四叶草内的驱动后,电脑识别出来了win10,所以才会有试一试usb无线网卡会不会也这样。 有件事情我还是需要说明下,一定要备份好当前的EFI,因为有的驱动装上后黑苹果就打不开了,应该是根据具体的电脑情况而定,所以我每一次按驱动,都会提前备份一下,就算打不开了还可以用回滚。

回归指令_伺服运动为什么要进行原点回归呢

伺服运动为什么要进行原点回归?​mp.weixin.qq.com 伺服运动控制的原点回归 原点回归,又名原点复位、伺服回零...等等。 在进行伺服定位操作之前一般都需要先进行原点回归,否则伺服电机可能会罢工,说是在「原点回归未完成时启动」。 那么,为什么要进行原点回归呢? 1、原点回归的必要性 所谓定位,就是要让伺服电机走到一个确定的位置。这个位置可以是增量式的,也可以是绝对式的。打个比方,我们现在在路上,我们要往前走 10 米,相当于我们的位置要往前增加十米,这个十米就是一个位置增量。 而如果我们要去这条街上某处地方的咖啡店,我们就需要知道它的确切地址,假设这条街的地址不是门牌号,而是从街的一端开始为 0 米(基准位置)。 这样就能确定这条街上每个位置的地址,比如这家咖啡店的地址是这条街 100 米的位置,那么这个 100 米就是一个绝对位置,我们不管在哪一个位置,都能通过走到这条街 100 米的位置找到这家咖啡店。 在定位指令里,就分为增量式的 INC 指令和绝对式的 ABS 指令。 增量(INC)方式 以当前停止的位置为起点,指定移动方向和移动量后进行定位。 起点地址为5000,移动量为-7000时,对-2000的位置进行定位。 绝对值(ABS)方式 定位到指定的地址,该地址是以原点为基准的位置。 起点地址(当前的停止位置)为1000,终点地址(定位地址)为8000时,向正方向进行移动量7000(8000-1000)的定位。 所以,当我们需要进行绝对式定位时,我们就需要对应的机械系统上具有地址,这也就需要一个基准位置,通过这个基准位置去确定机械系统上的每个位置的地址。而这个基准位置,在伺服定位系统里称为原点。 2 两个信号 在三菱的伺服定位系统里,有两个关于原点的关键信号: 原点回归请求信号(原点复位请求标志) 这个信号 ON 的时候,说明伺服系统目前没有原点,需要进行原点回归。 原点回归完成信号(原点复位完成标志) 当原点回归执行完成时,该信号会 ON。然后如果执行定位或者其他正常方式使得伺服电机离开原点位置时,该信号会 OFF,但是此时原☆判断是否需要原点回归可以借助原点回归请求信号,而不应该借助原点回归完成信号。 对于增量式系统,每次断电复位、重新上电之后都需要进行原点回归。 对于绝对式系统,由于伺服放大器装有电池(也需要在参数里设置使用绝对位置系统),可以保持伺服电机的位置,所以一般情况下,只需要在刚搭建系统时进行一次原点回归即可。当然如果后续发生原点位置丢失等情况,就要重新进行原点回归了。这里是否需要原点回归也可以通过原点回归请求信号是否为 ON 来判断。 想要了解更多关于伺服电机、编码器、自动化的信息,可以点进下方的文字链接关注公众号哦。 伺服运动为什么要进行原点回归?

2020湖南大学ACM新生杯题解- D Treasure Cave

思路: 将地上的所有数和空中的数放在一起排序,空中的拿出意思就是可以最终从这个排好序的序列中抽出任意一个数,使得剩下的序列为严格的上升序列。 并且题目希望尽可能大,检查这个排好序的序列,如果这个序列中有两个连续相同的数就拿出其中一个,如果出现两组以上的相同的数,例如样例中的 3 4 1 4 4 排序后的序列为 1 4 4 4,有两组,就无法构成, 输出0,这个题差一丢丢就对了,可惜了。 #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <algorithm> int a[100005]; int main(void) { int t, n, x, pairs=0; scanf("%d", &t); for (int i = 0; i < t; ++i) { scanf("%d %d", &n, &x); for (int j = 0; j < n; ++j) { scanf("%d", &a[j]); } a[n] = x; std::sort(a, a + n + 1); bool f = 1; // 可以逃出 int swap = 0; // 交换对象 pairs = 0; for (int i = 1; i <= n; ++i) { if (a[i] == a[i-1]) pairs++, swap = a[i]; if (pairs > 1) { f = 0; break; } } if (f && pairs == 0) printf("

gist 打不开,解决方式

现在国内打开 github 都是不带头像的,而且 gist 也无法打开。 在百度和 google 都查询了一下 hosts 的配置 ip ,目前都已失效。 目前自己查询到一组对应关心,希望能够帮到大家。 添加一下代码到 hosts 文件中。 windows 和 mac 的打开方式,自行查询。 # add by jdx, date 2020-12-25 # GitHub Start 52.74.223.119 github.com 13.250.177.223 gist.github.com 54.169.195.247 api.github.com 185.199.111.153 assets-cdn.github.com 151.101.76.133 raw.githubusercontent.com 151.101.76.133 gist.githubusercontent.com 151.101.76.133 cloud.githubusercontent.com 151.101.76.133 camo.githubusercontent.com 151.101.76.133 avatars0.githubusercontent.com 151.101.76.133 avatars1.githubusercontent.com 151.101.76.133 avatars2.githubusercontent.com 151.101.76.133 avatars3.githubusercontent.com 151.101.76.133 avatars4.githubusercontent.com 151.101.76.133 avatars5.githubusercontent.com 151.101.76.133 avatars6.githubusercontent.com 151.101.76.133 avatars7.githubusercontent.com 151.101.76.133 avatars8.githubusercontent.com # GitHub End

r5 5600H 怎么样 相当于什么水平

Ryzen 5 5600H是基于Zen 3架构的6核12线程处理器。它具有3.30 GHz的默认频率和4.25GHz的加速频率,带有16MB的L3缓存和3 MB的L2缓存,显卡部分,AMD搭配的Vega GPU,其频率高于前代的Ryzen 5 4600H,可提供384个流处理器,Ryzen 5 5600H TDP为35W,最高可配置为45W; r5 5600h怎么样看完你就知道了 https://list.jd.com/list.html?

滑动平均滤波算法——MATLAB实现

算法原理 滑动平均滤波算法的基本思想是设定一个宽度固定的滑动窗口,该窗口沿着时间序列滑动,同时取窗内数据的算术平均值作为输出值,而由输出值组成另一个数字序列,也就是滤波后的序列。设N为滑动窗口的宽度,若N=2k+1,输入、输出分别为 x ( n ) x(n) x(n)和 y ( n ) y(n) y(n),则 y ( n ) = 1 2 k + 1 ⋅ ∑ i = − k i = k x ( n + i ) y(n)=\frac{1}{2k+1}\cdot\sum^{i=k}_{i=-k}{x(n+i)} y(n)=2k+11​⋅i=−k∑i=k​x(n+i) MATLAB代码实现: function x1 = MovingAverageFilter(x,win_sz) % x:待滑动平均的数据 % win_sz:窗宽 if nargin < 2 %默认窗宽等于7 win_sz=7; end L = length(x); %数据长度 x1 = zeros(L,1); %平均之后的数据 half_win = ceil(win_sz/2); half_win_ = floor(win_sz/2); if half_win==half_win_ half_win = half_win+1; end x1(1:half_win) = x(1:half_win); x1(L-half_win:L) = x(L-half_win:L); for i = half_win:L-half_win k=0; for j = i-half_win_:i+half_win_ %对第i个窗里面的数求平均 k = k+1; temp(k) = x(j) ; %临时存储第i个窗的数据 end x1(i) = mean(temp); %第i个窗里面的平均值给第i个数 end end

闲聊

已经快半年没更了,博主最近准备毕业论文,所以更新可能要等到明年34月份吧 关于内容,博主打算以后专门更新FPGA或者数字IC方面的一些简单基础,模拟可能也会涉及但是不多,有些视觉或者软件的朋友就抱歉啦,博主以后可能不会更新这方面的了。 关于工作,博主今年8月开始找工作,最终确定某微电子研究所,IC设计方向。当然同时还有另一家研究所的offer,FPGA设计 想说一点,如果是非科班的同学,找工作有疑惑可以和我交流,博主愿意解答哈哈哈。最后,博主是机械专业的,最后做IC是不是很可怕哈哈哈,我也觉得。。。 最后,祝自己和各位小伙伴:此生如意

【源码】用于特征选择的二元差分进化算法

差分进化(DE)的二进制版本被称为二元差分进化(BDE),可以用于特征选择任务。 The binary version of Differential Evolution (DE), named as Binary Differential Evolution (BDE) is applied for feature selection tasks. This toolbox offers Binary Differential Evolution (BDE) method The < Main.m file > illustrates the example of how BDE can solve the feature selection problem using benchmark data-set. 参考文献: Too, Jingwei, et al. “Hybrid Binary Particle Swarm Optimization Differential Evolution-Based Feature Selection for EMG Signals Classification.” Axioms, vol. 8, no.

汇编语言---跳转指令ja、jb、jl

汇编语言—跳转指令ja、jb、jl ~~~ JE ;等于则跳转 JNE ;不等于则跳转 JZ ;为 0 则跳转 JNZ ;不为 0 则跳转 JS ;为负则跳转 JNS ;不为负则跳转 JC ;进位则跳转 JNC ;不进位则跳转 JO ;溢出则跳转 JNO ;不溢出则跳转 JA ;无符号大于则跳转 JNA ;无符号不大于则跳转 JAE ;无符号大于等于则跳转 JNAE ;无符号不大于等于则跳转 JG ;有符号大于则跳转 JNG ;有符号不大于则跳转 JGE ;有符号大于等于则跳转 JNGE ;有符号不大于等于则跳转 JB ;无符号小于则跳转 JNB ;无符号不小于则跳转 JBE ;无符号小于等于则跳转 JNBE ;无符号不小于等于则跳转 JL ;有符号小于则跳转 JNL ;有符号不小于则跳转 JLE ;有符号小于等于则跳转 JNLE ;有符号不小于等于则跳转 JP ;奇偶位置位则跳转 JNP ;奇偶位清除则跳转 JPE ;奇偶位相等则跳转 JPO ;奇偶位不等则跳转 计算机编程中的 “无符号”一词表示只能包含正数的变量。 计算机代码中的术语“带符号”表示变量可以包含负值和正值。

css 实现水平垂直居中

一、通过设置子元素 .parent{ position: absolute; /* 非static即可 */ width: 500px; height: 300px; } 子元素知道 width, height position, top, left, transform .child{ width: 100px; height: 50px; position: absolute; top: 50%; left: 50%; transform: translate(-50px, -25px); } position, left, right, top, bottom, margin .child{ positon: absolute; width: 100px; height: 50px; /* 设置 left, right, top, bottom 是为了给marin: auto;的计算定界 */ left: 0; right: 0; top: 0; bottom: 0; margin: auto; } 子元素不知道 width, height(子元素的长宽由内容决定) position, left, top, transform

proteus三输入与非门名字_proteus元件名称对照表

元件名称中英文名说明 7407 驱动门 1N914 二极管 74LS00 与非门 74LS04 非门 74LS08 与门 74LS390 TTL 双十进制计数器 7SEG4 针 BCD-LED 输出从 0-9 对应于 4 根线的 BCD 码 7SEG 3-8 译码器电路 BCD-7SEG 转换电路 ALTERNATOR 交流发电机 AMMETER-MILLI mA 安培计 AND 与门 BATTERY 电池 / 电池组 BBB 总线 CCC 电容 *** CAPACITOR 电容器 CLOCK 时钟信号源 ***CRYSTAL 晶振 D-FLIPFLOP D 触发器 FUSE 保险丝 GROUND 地 LAMP 灯 LED-RED 红色发光二极管 LM016L 2 行 16 列液晶 可显示 2

横竖三个数的和相等_把1.2.3.4.5.6.7.8.9填入方格里,使横竖斜每行三个数的和相等?...

把 1.2.3.4.5.6.7.8.9 填入方格里,使横竖斜每行三个数的和相 等? 这是一道三阶幻方问题。把 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 ,填入九宫格内,使横竖斜,每行的三个数的和都相等, 这个相等的和是 15 被称作幻和。下一步我们要确定中间数 是多少, 根据直觉, 这个数应该是 5, 怎么可以证明这一点呢。 大家请注意观察下面这个图,请注意到通过中心格的十字以 及对角线, 他们是正好是四个幻和 60 , 同时通过中心格的十 字及对角线的图案等于所有数的和加上三倍中间格。 其实还可以用更简单的方法来证明这一点。 1+9 等于 10 , 2+8 等于 10 , 3+7 等于 10 , 4+6 等于 10 ,这四对数的和,再加上 5 都等于 15 。因此我们可以确定,中心格的数字是 5 。我们 仔细观察这四对数可以发现,它们是两对奇数和两对偶数。 下面我们根据奇偶数的性质来确定四个角应该填哪些数字。 1 、若填两对奇数,那么三个奇数的和才可能得奇数,边上 的空格需要填奇数,但是我们的奇数已经用完了。所以说四 个角是奇数不成立。 2 、若四个角分别填一对偶数,一对奇

登录不了_12123APP登录不了肿么办?快来看这里!

电话号码换了, 密码忘记了, 电话号码被他人注册了, 登陆交管12123需要实人认证, 单位网上注册不了, 怎么办? 怎么办? 怎么办? 别着急,交警蜀黍来帮您~ 对于个人用户手机号码换了,电话号码被他人占用,请如下操作: 1 登陆交管12123APP后,点击【免登录模式】。 2 点击图片【服务中心】-【信息申诉】 3 如果手机号码换了请选择【手机号码无法接收短信验证码】,如果手机号码被他人使用请选择【手机号被他人占用】 (注:身份证号码被占用情况极其罕见,不能登录,大部分原因可能是您已经注册,但电话号码更换,因此,我们一般建议您选择“手机号码被占用”进行申诉) 4 录入正确的交管12123用户信息 5 将面部放至框中识别实人认证 6 选择身份证件实名认证,上传有效期内身份证正反面,提交审核 您的申诉就申请成功啦,待工作日工作人员审核成功后,您的电话号码就更改好啦! 如果密码也忘记了,审核通过后,主页点击【忘记密码】录入正确的信息后,就可以输入新的密码了,一定要记好哦! 如果您是单位用户,已在窗口做过面签并知道用户代号 登录电脑网页版(http://gs.122.gov.cn)点击单位登录,找回密码。 录入用户代号,委托代理人姓名及电话号码,会给代理人发送验证码,输入新的密码了,单位用户就可以正常登录了。 如果单位用户未在窗口注册面签,请携带营业执照、单位公章、委托书及代理人身份证 到兰州车管所或就近交警大队窗口办理面签业务。 (注:医院、汽车销售商、检测站只能到车管所办理) 图文来源丨宣传科 图文编辑丨子 鱼

cad等高线怎么做_科研绘图 | R 语言等高线图极简入门

科研猫 | 最后更新时间:2019-11-26 在观察二维数据表,特别是空间数据的时候,往往需要通过作图来给读者一个更为直观的认知。对于一个二维的数据表,如果要描述数值的高低,我们通常选用热图来表示,可是对于一些特定的地形数据,热图就有点捉襟见肘了。今天我们来学习一种新的图形,那就是“等高图”。没错,就是等高图,我们初中地理课上老师讲过的等高线图。等高图不仅可以应用在地理上,它还可以对于试验数据的空间分析,可以做一个非常直观、形象的判断。 可能很多人还没听见过等高图在科研数据中的应用,甚至没有听说过等高图。因此,我们还是从最基础的概念入手。因为等高线图是从地理应用开发出来的,所以为了更好地理解等高线图,我们还是从地理概念入手,然后再嫁接到科研数据中。 何为等高线 等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。等高线也可以看作是不同海拔高度的水平面与实际地面的交线,所以等高线是闭合曲线。在等高线上标注的数字为该等高线的海拔。 等高线的特征 1、位于同一等高线上的地面点,海拔高度相同(可以理解为,而且数据表中的数值高低相同)。但数值高度相同的点不一定位于同一条等高线上。 2、在同一幅图内,不同高程的等高线不能相交。 3、在图廓内相邻等高线的高差一般是相同的,因此地面坡度与等高线之间的等高线平距成反比,等高线平距愈小,等高线排列越密,说明地面坡度越大;等高线平距愈大,等高线排列越稀,则说明地面坡度愈小。 4、等高线是一条闭合的曲线,如果不能在同一幅内闭合,则必在相邻或者其他图幅内闭合。 实例绘图教学 我们从一个实际的例子入手,测试用的数据是一个二维数据表,每个单元格中的数值可以理解为检测到的某种观察值。二维表的部分数值如下图所示。(完整测试数据去同名微信公众号添加客服领取) 下面我们就从最简单到最高级的方法来表述这个数据表中数值的高低变化。 一维·密度图 通过密度图(density plot)可以了解到数据分布的密度情况,类似于频率分布直方图,但是曲线更为圆润。在这里我们对密度图不做过多深入讲解,后续会有密度图的专文讲解。简单的密度图还是很容易绘制的,通过 density 函数即可。 二维·等高线图·初级 从一维的密度图中我们可以看出,大部分的数据集中在 100-120 这个区间之间,此外在 130-150 的位置也有一个小的集中区段。但是对于这样一个二维的数据表格,用一个一维的密度图来表示确实太过简单,数据的空间位置完全表达不出来,那怎们办呢?简单!通过 contour() 函数即可绘制一个直观的等高图。 是不是很高级!通过我们的科研数据居然可以用地理课上的等高线表示出来,而且很直观哦。整个二维表中,数值较高和较低的区域一目了然。 二维·等高线图·中级 上面这个图是通过base作图系统的 contour() 函数绘制出来的,非常直观,但是实话实说,有点“丑”,而且不同区域的数值高低也并不是非常明显。那怎么修改一下呢?简单!通过颜色标明不就行了。数值高的用暖色调,低的用冷色调。这样就更容易区分了。我们可以通过ggplot2 包和 ggisoband 包来实现。 是不是看上去舒服了很多了呢?而且这个渐进的颜色也是R包自动配置好的,也不用我们自己做调整就很好看呢。 二维·等高线图·高级 前面是绘制了等高线,而且对等高线添加了不同颜色。可是对于追求 CNS 级别作图的我来说,这还是远远不够的,如果能够对不同数值区间进行着色,这样岂不是看上去对于数值的空间分布能加直截了当?的确如此,那应该怎么着色呢?就像前面我们说的,其实可以直接用绘制热图的方法来操作。 说白了就是用色阶/色块来表示数值高低,可以说就是未经层次聚类的热图(了解关于热图的更多内容)。我们甚至可以直接用 Excel 中的色阶来进行着色,结果如下图所示。 如果想用 R 语言来绘制热图的,可以参考我们之前的文章(【科研猫·绘图】今夏最热的“热图”)。这里我们言归正传,继续讲如何在等高线图中进行着色,这里我们用到一个函数就是 R里面的 image() 函数,这可是一个非常好的函数,他能够根据数值高低对单元格进行着色。然后再加上等高线,就成了下图的样子。我们用R中的 terrain.colors() 函数对其进行着色。 二维·等高线图·终级 看过我们绘图教程的各位都知道,我们的图都是朝着 CNS 级别去做的(虽然发不了CNS的文章),而且往往从初级-中级-高级之后还得有个“终极”绘图。那么,这次的等高线图“究极”升级之后是什么样子的呢? 我们先谈谈 ggplot2。大家都知道ggplot2的图形是非常漂亮的,甚至在 ggplot2 的官方介绍中出现了 “elegant”(优雅)这样的词汇,可见其图形是多么高级。因此,在我们的技术团队中,基本上是强制要求所有技术人员在绘图过程中的工具代码都要采用 ggplot2 系统。那么,对于填充了颜色的等高线图,如果用 ggplot2 加持一下,会是什么样子呢?擦亮双眼吧。 这种配色是不是很绝?估计如果让我们自己来调色的话,可能一辈子都调不出这么好看的颜色吧。 三维·等高线图 熟悉我们套路的同学都知道,“科研猫出品,必是精品”。一个东西,我们要么不讲,一旦讲了就会从头到尾讲的彻彻底底。所以,既然二维的等高图都讲到这种程度了,必须得给大家留个彩蛋。可能有同学也想到了,我们从“一维”画到了“二维”,那么接下来必然就是从“二维”到“三维”了。没错!就是三维图,虽然我们前面给大家讲过三维的散点图该怎么画(了解更多“三维散点图”),但是三维散点图相对于我们的这个二维数据表来说还是比较简单的。如果把平面的二维等高线图绘制成一个三维的地形图呢? 从等高线图的特征中我们知道,等高线越密集,数值相差越大,相反,等高线越稀疏,数值相差越小。可是,这个需要我们有强大的三维想象能力,从二维的等高线图中自己构想。要是能直接画个三维趋势图,不就完美了?

js判断是由含有a节点_怎么判断某个dom节点是否包含某个dom节点?

var a = document.querySelector('.first-child'); var b = document.querySelector('.second-child-child'); var c = document.querySelector('.first'); var d = document.querySelector('.second'); function isChildOf(child, parent) { var parentNode; if(child && parent) { parentNode = child.parentNode; while(parentNode) { if(parent === parentNode) { return true; } parentNode = parentNode.parentNode; } } return false; } console.log(isChildOf(a, b)); console.log(isChildOf(b, d)); console.log(isChildOf(a, c));

kernelbase故障模块_win7出现故障模块“kernelbase.dll”怎么处理?

【问题描述】:开机时提示“C:...*.DLL文件错误或丢失”【原因分析】:1. 启动中加载动态程序库文件时出现异常2. 病毒或流氓软件被杀毒软件删除后提示3. 软件在卸载时未卸载干净,注册表中有残留文件【简易步骤】:【开始】—【运行】—【msconfig】—【启动】—取消报错的dll文件相关启动项【解决方案】:1. 确认报错的文件名(如图1C:\PROGRA~1\COMMON~1\xntalk\xntalk.dll时出错找不到指定模块。) 按方案一操作。图12. 是否是在查杀病毒或卸载杀毒软件后出现:是,按方案二操作;否,按方案三操作方案一:启动中加载动态程序库文件时出现异常1. 【开始】—【运行】—【msconfig】—【启动】把加载项*.dll相关联的启动项去消开机启动,重启电脑后,如能正常进入系统,卸载相关软件,如对此软件有需求重新安装此软件。(如图2,图3,图4)图2图3图4方案二:病毒或流氓软件被杀毒软件删除后提示1. 【开始】—【运行】—【regedit】,在下面的位置删除相应键值:HKEY_CURRENT_USER\Software\Microsoft\WindowsCurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrentVersion\Run(如图5)图5方案三:软件在卸载时未卸载干净,注册表中有残留文件1. 使用超级兔子魔法设置或Windows优化大师扫描一下注册表,它会自动的挑出无效的项删除。 取消 评论

[HOJ 10178] 最大公约数 (Greatest Common Divisor)

最大公约数Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 2211, Accepted users: 1898Problem 10178 : No special judgementProblem description输入两个整数a,b(1≤a,b≤100000000),请编写程序求出他们的最大公约数。 Input第一个数n表示测试数据的个数,接下来的n行每行有两个整数a b,用空格隔开 Output输出n行,每行输出对应a,b的最大公约数 Sample Input 3 12 8 25 10 21 63 Sample Output 4 5 21 Problem SourceCSU 1st Contest 解法1:暴力,超时 算法:最容易想到的暴力法,从 a,b 两个数中的较小数开始向下逐步试探能否同时整除两个数,可以就得到答案,时间复杂度 O(max(a, b)) 结果超时。 #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <vector> int min(int a, int b) { return a < b ? a : b; } int main() { int n, a, b, s, m; scanf("

win10蓝牙已配对连接不上_Win10系统显示蓝牙已配对但未连接的解决方法

最近有win10系统用户反映说碰到这样一个情况,就是在使用蓝牙的时候,明明已经显示蓝牙已配对了,但是却一直未连接,导致无法使用蓝牙功能,遇到这样的问题该如何处理呢?本文就给大家讲解一下Win10系统显示蓝牙已配对但未连接的解决方法。 1、在Windows10系统桌面,依次点击“开始”,“Windows系统”“控制面板”菜单项; 2、在打开的控制面板窗口中,点击右上角的“查看方式”下拉菜单; 3、然后在弹出的菜单中选择“大图标”菜单项,这时,会打开所有控制面板项窗口,点击窗口中的“疑难解答”图标; 4、在打开疑难解答设置页面中,点击“硬件和声音”图标; 5、在打开的新窗口中,点击“蓝牙”一项的快捷链接,这时会打开“解决并帮助预防计算机问题”的窗口; 6、点击“下一步”按钮,Windows10系统会自动扫描并检测问题,完成后重新启动计算机,就可以正常使用蓝牙鼠标了。 Win10系统显示蓝牙已配对但未连接咋办? 1、控制面板中点击“疑难解答”图标。 2、在“硬件和声音”窗口中找到蓝牙一项。 3、打开“解决并帮助预防计算机问题”的窗口。 4、Windows10系统会自动扫描并检测问题。 经过上面的方法就可以解决Win10系统显示蓝牙已配对但未连接这个问题了,相信以上教程内容可以帮助到大家。 我要分享到:

EasyExcel解析合并单元格@ExcelProperty

根据名称解析-value 本质上来说,根据名称解析也是获取到名称对应的下标/索引进行解析,如果是根据索引进行解析,不需要名称对应转换步骤即可 使用方式为:new ExcelAnalysisHelper().getList(file, T.class); @ExcelProperty(value = “序号”,index = 1),其中value为名称,index为索引 根据索引解析可参考(我也是参考别人的文档):根据索引解析 ExcelAnalysisHelper package com.meiyuan.controller.excel; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.enums.CellExtraTypeEnum; import com.alibaba.excel.metadata.CellExtra; import com.meiyuan.commons.tools.exception.ErrorCode; import com.meiyuan.order.exception.OrdersException; import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** * * 模板的读取类 * * @author syx * @version 1.0.0 * @date 2020/12/21 9:44 */ @Slf4j public class ExcelAnalysisHelper<T> { public List<T> getList(MultipartFile file, Class<T> clazz) { return getList(file, clazz, 0, 1); } public List<T> getList(MultipartFile file, Class<T> clazz, Integer sheetNo, Integer headRowNumber) { UploadDataListener<T> listener = new UploadDataListener<>(headRowNumber); try { EasyExcel.

高德地图哪个语音包最好_高德语音导航怎么呼叫?高德地图语音包怎么设置

高德地图越来越多人使用,目前超过7亿用户正在使用,是全网最好用的地图导航软件之一。可以智能的规划路线,还可以使用特色的高德语音导航,在驾驶车辆的过程中更加方便、实用。不过很多人不怎么会使用高德地图的语音导航,我们一起看看高德的语音导航该怎么打开? 高德语音导航怎么呼叫? 首先要使用高德地图的语音导航,需要先把这个模式打开才可以需要语音呼叫功能。下面是打开高德地图的语音呼叫功能。 1、需要打开最新版本高德地图,进入到主界面后,点击 “我的”进入到个人中心。 2、再点击右上角的设置按键(小齿轮图标)进入到设置,在里面选择导航设置。 3、进入后在“语音播报”的地方把“语音唤醒小德” 功能打开,打开后可以在导航时使用该功能。 需要呼叫语音导航时,要说“你好小德”或者“小德小德”唤醒高德地图的语音导航指令,就可以进行语音导航了。 高德地图语音包怎么设置 目前高德地图有许多导航语音包,比如小团团语音升级版、李佳琦语音、林志玲性感语音等很多导航语音包。 高德地图最新版,设置语音包的步骤和以上打开语音导航的步骤一样,只是在 “语音播报”的功能下选择“导航语音”,进入后下载自己需要得语音包。或者是录自己的语音导航,可以根据需要选择使用。

高德地图哪个语音包最好_高德地图app怎么录制语音包?高德地图将自己的语音用作导航语音包的方法介绍...

高德地图是一款中国专业的手机地图,拥有全面的地点信息,特色语音导航、智能路线规划,是我们常用的一款移动地图导航工具,用高德地图语音导航,可以听到很多明星的导航语音播报,当然你也可以自己录制语音包。那么,怎么把自己的声音作为高德地图导航语音包呢?下面小编就给大家介绍使用高德地图app录制语音包的具体方法,一起来看看吧。 高德地图app怎么录制语音包? 打开手机高德地图,在页面底端点击“我的”,进入个人中心之后选择“导航语音包”,在跳转到的页面,点击“录制我的好声音”,即可快速进入语音录制模块。 高德地图预设了多个版本的播报口令供你选择,点击“换一换”,便可轻松切换,定有一款适合你! 选择一个你喜欢的版本,按住页面底部的“话筒”图标不放,录入相关的播报口令,即可生成你的个性语音导航。时长要控制在5秒以内,不然可要重新录入哦。 录入完毕后,你可以点击屏幕上的播放按钮,聆听一下实际的录音效果。若是对效果不满意,点击“重录”,便可以重新录入;若是效果还不错,点击“下一句”,继续录入口令吧。 录制完成8个场景的播报口令之后,点击页面右上角“保存”按钮,输入名字后保存,高德地图会自动将保存的语音包设置为默认语音导航,这样一款彰显你独特个性的导航语音包就大功告成啦! 教程结束,以上就是关于高德地图app怎么录制语音包?高德地图将自己的语音用作导航语音包的方法介绍,如果你也想录制属于自己的个性语音包,那就赶快下载高德地图试试吧! 相关教程推荐:

pythonloop循环结构_python - tensorflow,tf.while_loop:这两个结构没有相同的嵌套结构 - SO中文参考 - www.soinside.com...

我试图构建一个嵌套循环,用于创建一个2-dim零矩阵来解决LCS问题(动态编程)。这稍后用于计算Rouge-L得分(输入是张量,而不是字符串),但总是出错提高ValueError: The two structures don't have the same nested structure. 我检查了一些类似的问题,我修改了一些代码,但它仍然无法工作(我在这里提出的代码是最终代码): 我改变了shape_invariants。我现在使用len(内部)来动态获取内部的形状。 还是shape_invariants,我现在将1改为0(shape_invariants中的第一个参数)。我认为标量的形状是1,但我在github上检查了一些源代码,我发现它全部使用0。 # the origin code is below, in which sub and string are both string(type), len_sub and len_string are both int: lengths = [[0 for i in range(0,len_sub+1)] for j in range(0,len_string+1)] # but in the new code that I need, the sub and string are both tensor, so I code like this: len_string = tf.shape(string)[0] len_sub = tf.

大数据在职研究生哪个好_各种大数据在职研究生到底有什么不同之处

现在是互联网时代,大数据越来越受到关注,所以很多院校现在开设了大数据在职研究生,不过这种专业的在职研究生有三种方向,很多人对于他们之间的区别不太了解。那么,各种大数据在职研究生到底有什么不同之处呢?下面来为大家介绍一下。 1、大数据与云计算在职研究生 目前开设大数据与云计算在职研究生的院校主要是中国人民大学,属于信息学院的招生专业,此专业偏向于技术领域,主要的招生对象是:(1)负责信息化建设和软件开发、数据库系统管理等的人员;(2)IT企业的各类技术人员(系统分析设计人员、程序员、系统管理员、测试人员等)。希望培养出能够从事计算机软件系统和应用系统的开发与管理人才。人大这个专业的学费是25000元/2年,采用同等学力申硕方式进行招生,结业后学员可以申请工学硕士学位。 2、大数据与应用统计在职研究生 大数据与应用统计在职研究生的开设院校同样是中国人民大学,是在统计学院进行招生,偏向从事数理统计与概率论、科研和应用工作。设立大数据在职研修班是为了培养从事数理统计与概率论方向的人才。大数据与应用统计在职研究生的学费是22000元/2年,结业后学员可以申请理学硕士学位。 3、大数据分析与应用在职研究生 在中国人民大学,大数据分析与应用在职研究生这个专业是信息资源管理学院的招生专业,意在提高在职人员的数据分析能力,主要针对数据进行专业化处理,通过分析数据提取有利的价值。大数据分析与应用在职研究生的学费是22000元/2年,结业后学员可以申请管理学硕士学位。 通过以上介绍可知,这三种大数据在职研究生的不同之处体现在:所属的院系、学费、申请的硕士学位类型等方面,想要报考这个专业的在职人员,需要根据自己的实际需求来选择适合自己的大数据在职研究生专业。

systemctl重新加载_对/etc/systemd/system.conf的更改重新启动或“systemctl daemon-reload”?...

不,daemon-reload将重新加载所有单元文件,而不是systemd本身的配置.但是,#systemctl daemon-reexec将重新执行systemd并使其在此过程中消化其新配置. 从systemctl手册页: daemon-reexec Reexecute the systemd manager. This will serialize the manager state, reexecute the process and deserialize the state again. This command is of little use except for debugging and package upgrades. Sometimes, it might be helpful as a heavy-weight daemon-reload. While the daemon is being reexecuted, all sockets systemd listening on behalf of user configuration will stay accessible. 当手册页说daemon-reexec对包升级有用时,它在很大程度上意味着该命令执行任何新的二进制文件并重新处理其配置.但是,我们用于升级systemd的RPM已经包含了执行此操作的脚本,因此在正常升级的情况下通常不需要它. 或者你可以重启.要么会这样做.

Linux/centos更改网卡名字

可适用银河麒麟操作系统 一,防止不可逆的后果,先备份文件 备份ifcfg-xxx,/etc/default/grub,/boot/grub2 二,改名配置重启 (1)修改ifcfg-xxx文件中的device和name字段为eth0,并将ifcfg-xxx改名为ifcfg-eth0 (2)将net.ifnames=0 biosdevname=0添加到/etc/default/grub文件中 (3)键入以下命令,更新grub grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg (4)查看 cat /proc/cmdline (5)重启机器即可

vue/react表单检验为空不通过

1、Vue版 说明: (1)如果检验未通过,input框的border-color会变成红色; (2)ref的值和v-model绑定值的key必须一样才能生效; <template> <input ref='title' ref='title' v-model='formData.title'/> <input ref='name' ref='name' v-model='formData.name'/> <button @click="submit">提交</button> </template> <script> data(){ return{ formData:{ title:'', name:'', } } }, methods:{ inspection(value){ Object.keys(value).some( (item) => { if (this.$refs[item].value === '') { this.$refs[item].style.borderColor = '#ff0000' } else { this.$refs[item].style.borderColor = '#999999' } } ); const flag = Object.keys(value).findIndex( (item) => { return this.$refs[item].value === '' }) if (flag !== -1) { alert('必填项不可为空!') return false } else { return true } }, submit(){ const { title, name } = this.

STPF取数协议

import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Properties; import java.util.Vector; import org.apache.commons.io.IOUtils; import com.jcraft.jsch.*; import lombok.extern.slf4j.Slf4j; @Slf4j public class SftpUtil { private final String ftpAddress; private final int ftpPort; private final String ftpUserName; private final String ftpPassWord; private Session session; private ChannelSftp sftp; public SftpUtil(String odsRead, String ftpAddress, int ftpPort, String ftpUserName, String ftpPassWord, String ftpFile) { this.ftpAddress = ftpAddress; this.ftpPort = ftpPort; this.ftpUserName = ftpUserName; this.ftpPassWord = ftpPassWord; } /** * 连接sftp服务器 */ public boolean sftpLogin(){ try { JSch jsch = new JSch(); session = jsch.

React + Koa2打造『官方管理后台』2

四.admin表模型、密码加密、初始化admin账户 1.测试redisclient,控制器中 const {redisSet,redisGet}= require('../lib/redisClient') ; class Index{ async index(ctx,next){ const sess = ctx.session; if(!sess.uid){ sess.uid = 1; sess.userName = 'zza'; sess.nikeName = 'js++'; sess.gender = 'male' } redisGet('txclass.sessCNDoPmbqF8SyH1xCTQf4kHAnhy4x4Z6y').then((res)=>{ console.log(res); }) console.log(sess) ctx.body={ session:sess } } } module.exports = new Index(); 把以上代码注释 2.初始化admin,model中建立admin.js const seq = require('../connection/mysql_connect'), { STRING,INT ,TEXT} = require('../../config/db_type_config'); const Admin = seq.defin('admin',{ username:{ comment:'admin user name', type:STRING, allowNull:false }, passWord:{ comment:'crypto user password', type:STRING, allowNull:false } }) module.

ezpolt和plot区别_plot fplot zeplot区别

plot 、 fplot 、 ezplot 的使用与区别 函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制 曲线的。也就是说,使用 plot 函数之前,必须首先定义好曲线上每一点的 x 及 y 坐标,常用格式为: 1 、二维数据曲线图 指数函数和余弦函数之间用点乘运算 .* plot 函数, plot(x,y) 具有两个纵坐标标度的图像,可以使用 plotyy ( x1,y1,x2,y2 ) 图形保持 hold on :希望在已存的图形上继续添加新的图形 hold off :刷新原有图形 2 、图形标注于坐标控制 title :图形名称 xlabel : X 轴说明 ylabel : y 轴说明 text :在( x,y )坐标出添加图形说明 legend :图例说明,放置在图形的空白处 3 、对函数自适应采样的绘图函数 在变化率大的区段密集采样 fplot(fname,lims,tol, 选项 ) fname: 函数名 lims : x,y 的取值范围,以行向量形式出现 tol :相对允许误差 选项:定义与 plot

mesh和wifi中继的区别_科普:路由器的无线中继和Mesh的区别是什么?

大户型和越层户型等改善型性房型越来越普及了,但是这些用户却也面临WiFi网络越来越差的窘境,如何改善WiFi网络就成为了迫在眉睫需要解决的问题,在无线路由的早期,不少人都习惯于使用无线中继的方式来解决这个问题。 无线中继组网就是利用AP的无线接力功能,将无线信号从一个中继点接力传递到下一个中继点,但是由于中继器必须在同一个信道上接收和转发,很明显这样就会将原本有线的带宽资源减半,层层递减,甚至在末端将面临有网无速的尴尬,而且由于是这种单链结构,其中一个路由坏了,后续的网络则如多米诺骨牌一样全部瘫痪。也许弊病这么多的无线中继组网在家庭用户眼里确实该进博物馆被抛弃了。 而近两年则出现了全新更智能的无线Mesh组网方式,与无线中继的单信道接收发送不同,无线Mesh网络进行多信道接入,所以,无线Mesh组网方式组成的是一种多节点互联的网格型网络,即便一个节点出现了问题,也不会导致整个WiFi网络瘫痪,因此拥有更高的稳定性! 目前市面上主流的Mesh路由产品,节点间不仅可以通过无线连接,同样可以使用类似AC+AP模式的有线连接,获得更高的连接稳定性,而要说性价比较高的当属360全屋路由产品,不仅仅是性价比更高,它还有如下三大优势: 一、组网方便 在组网方面,全新的Mesh路由都拥有非常便捷的组网方式,在配置方面要比无线中继方便很多,而360全屋路由则在细节上做得更加出色,不止可以即插即用,日常维护也简单不少,比如新增分身Mesh路由的时候,通过自研的Colink协议可实现一键快速组网,按下按钮即可,完全不需要复杂的设置和手动操作,所以在连接和配置上比无线中继还要更加的方便智能。 二、无缝漫游 家里有了多个分身路由之后,可能有用户担心当从客厅走到卧室的时候,必然面临各个路由之间切换的问题,这个完全不用担心,全屋漫游是360全屋路由的核心优势,分身和主路由的多频信号被合成了一个WiFi名称,用户不用纠结连哪个,更不必手动切换,在屋内随意走动时,上网设备会自动连接最强信号,无缝无感切换,没有任何等待重连和卡顿感,上网体验十分流畅。 三、自动选择最优联网路径 第三就是用户的WiFi设备可以自动选择更优路线入网,360全屋路由平时自动侦测平衡带宽流量,而实现网络性能优化则是“于无声中听惊雷”,再配合360安全大脑提供的安全防护,上网环境要清亮许多。 此外,得益于内置高通CPU的优势,360全屋路由也支持高通的Wi-Fi SON解决方案,与360全屋路由的菊花链星型拓扑结构一起,让你全屋的路由即便是一个分身路由坏了也不怕,因为其它几台会自动组成一个互联网络,重新组网之后,家中的WiFi终端设备会就近连接一个特定的网络节点,这样就能保证家里的WiFi网络依然稳定高速!当然,Wi-Fi SON解决方案还有自管理、自修复和自防御等等亮点。 其实从上面可以看到,性价比高的360全屋路由并不是一款减配的路由产品,而是不管在硬件还是软件方面都有很多亮点的优质Mesh路由产品,所以不客气地说,无论从价格上还是从体验上,360全屋路由都是目前大户型用户更加明智的选择。

小米扫地机器人 虚拟墙_扫地机器人虚拟墙是什么东西?

这里有实际使用虚拟墙的视频,希望帮到你。如果看不到视频就点原文链接看吧。 说说Neato Botvac 85虚拟墙的使用感受 ================================== 原文链接: 说说Neato Botvac 85虚拟墙的使用感受 上个星期,智友宋学滨带着Neato Botvac 85到我家里体验了一把,说实在的,以前也就是在网上看看照片,了解了解配置,第一次看到真家伙清扫工作,与大部分碰撞吸扫地机不同的D型设计和直线路径,确实很高级。 只不过上次家里较为凌乱,没发挥出Neato Botvac 85真正的实力。带着想体验一把的心,和老宋商量借来玩了几天。 这两天使用下来,感觉Neato Botvac 85明显比那天的表现好多了,不过难免还是出现反复的探测测绘,耗费了时间和电量,但总体的清扫要比之前顺畅多了,当然这很有可能是我收拾了房间,把一些不必要的东西清理出了Neato Botvac 85要清扫的区域。 今天写这篇其实更像是帮老宋代笔,上次他说想试试Neato Botvac 85自带的虚拟磁条,但这个星期也没时间过来,我这两天有空,就帮他试了。 先看一下Neato Botvac 85的自带磁条。磁性不能说很强,但足以蜷缩成一团。测量了一下,自带的这条磁条长大概在2.05米,宽在2.5厘米。对于阻隔一套中等房型(100平以下)的空间区域是足够用了。 宽:2.5cm 说实话,自己没用过这种虚拟磁条,之前接触iRobot的产品比较多,i家的虚拟墙都是需要接通电源的装置(自己家里用的是Roomba 528,这种低端型号更是没办法配置虚拟墙)。因此,第一次上手这种磁条有点摸不着头脑,翻了一下Neato自带的说明书,发现根本就没有磁条的使用方法,后来在大神complus的回答里了解了一下摆放的方法:不想让扫地机器人进入的区域,把磁条拉平放在门口即可。 于是我首先在客厅进行摆放,想阻止Neato Botvac 85进入餐厅。 布置后,启动Neato Botvac 85,它的表现是这样的: Neato Botvac 85的机身碰撞到了磁条,并调整方向沿着磁条前进,但由于磁条不是固定在地上的,因此被Neato Botvac 85的机身带动离开了原来的位置,不过Neato Botvac 85并没有越过磁条。 第一次看到这样的现象时,我还以为是Neato Botvac 85并没有探测到磁条的存在,因此又尝试了磁条的另外一种摆放方式——把磁条侧立起来。 这一次Neato Botvac 85的表现是这样的: 侧立的磁带更不稳,因此在与Neato Botvac 85的接触中直接被带走,整个虚拟墙可以说是“面目全非”。不过Neato Botvac 85依然没有逾越磁条。 可以说,对于磁条两次的摆放尝试,虽然侧立摆放看起来错误,但Neato Botvac 85都没有从磁条上越过进入餐厅,磁条还是发挥了虚拟墙的作用。 接下来是测试了一下不让扫地机进入房间,我在房间门口摆放了磁条。 通过视频可以看到,Neato Botvac 85触碰到了磁条,但依然选择了沿着磁条方向前进,并没有进入到房间内。而为了测试磁条所做的虚拟墙作用,我还尝试了将磁条移开和以电线替代磁条摆放在房间门口。 不摆放磁条的情况下: 不摆放磁条的情况可以看见,Neato Botvac 85“大摇大摆”的进入了房间。 以电线代替磁条的情况下: 可以看见,Neato Botvac 85并没有沿着电线前进,而是顶着电线进入房间。 而通过这两种情况的测试足以证明,磁条发挥了虚拟墙的作用,成功阻止了Neato Botvac 85进入到房间内。

aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能

文件转换及在线预览 因为项目是做OA这一块,有很多附件需要实现在线预览附件,在网上也看了很多相关的资料。主要实现方式就是 (openoffice+swftools+flexpaper)和(aspose+pdfjs预览)。 主要步骤: 1.需要先将文档转换为PDF文件。 2.用pdfjs预览PDF文件 转换步骤:使用OpenOffice/Aspose 将ppt、word、excel、txt类型的文件转换为pdf 预览步骤:高版本浏览器上,使用pdf.js直接预览PDF文件 低版本浏览器上,使用swftools将PDF文件转换为swf文件,再使用flexpaper预览swf(没有做这个步骤) 组件安装: Aspose 由于OpenOffice的转换效果并不太佳,这里选择了Aspose 在Aspose官网下载Aspose的Java版本,主要选择 Aspose.words Aspose.cells(Excel) Aspose.slides(PPT) Aspose.pdf 下载完成后,在工程中引用jar包即可。 功能实现: 这里采用的所有组件版本为: 名称 版本 Aspose.words 16.8.0 Aspose.cells 9.0.0 Aspose.slides 116.7.0 Aspose.pdf 11.8.0 文档转换为PDF 使用Aspose进行文档转换很简单,直接引入相应的jar包,调用save方法,转换为PDF即可。 注意:使用Aspose时,每一个模块(words,cells)都可能有相同的类,如License类,SaveOptions类,SaveFormat类。而在各自模块使用时,一定要用对应模块的类,这个坑我已爬过。 使用Aspose时,需要每次进行转换操作前调用设置License方法。 水印功能 编辑卡片描述 部署Aspose附件转换服务,该服务主要功能是将系统中所有附件(格式为word、EXCEL、PPT、PDF)转换为H5页面,类似百度文库查看word附件的效果,转换的文件后,在系统打开附件时,呈现的效果就是在线阅览并且带有水印的模式 水印功能 Aspose.words之插入水印 1. 前言 继几个月前的word模板打印美化之后,最近又接到的一个需求是需要给由word转换为的pdf打上水印。经过几个小时的折腾发现直接在pdf打上的水印将下面的字体覆盖效果过于明显,试图插入背景图片又发现会被pdf自身的背景色给遮挡。无奈只能从源头的word入手。 2. 详解 以下就是核心代码了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

C++学习链接

菜鸟教程C++ https://www.runoob.com/cplusplus/cpp-classes-objects.html

webstorm使用gitee_使用webstorm操作git

0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git。 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于git的GUI软件还是很多的,大家可自行研究使用。之前使用eclipse svn插件去操作版本管理,还是很便捷的一件事情。而今用惯了webstorm,当然里面也集成了对svn的支持,只是最近一直在用git,所以想试着用webstorm中的git集成工具进行版本管理。当然之前都是以敲命令行的方式去做,达到一个熟练度,速度还是很可观的。通过这篇文章,主要讲述如何使用webstorm中的git工具进行更加快速高效的版本管理。 1. 先说git理论 webstorm提供了git不少试图,下面列举其一: 我们在上面看到了git面板的很多选项,想要弄清楚各个选项具体要做什么,常用且常规的git理论知识及操作经验不可少。 我们先看对git操作的简单分类,如下—— 远程仓库类:git clone/remote/pull/push/rebase/fetch 分支类(包括tag):git branch/tag/checkout/stash 信息查阅:git status/log/diff 本地常规操作:git add/commit/rm/merge/reset 这里仅仅是我个人的分类方式,每个人都对它有不同的分类,欢迎补充。 需要强调的是,你需要对上述命令关键词都做了什么事儿、应用于何场景,需要有清晰的把握,如果你不知,不放看看文章末尾的参考文章。多说一句,一定要结合工作区、暂存区、版本库的三者关系去理解。 结合上面给出的图片,我们可以看到,webstorm中的git工具无非是这些命令行的可视化抽象,我们来看看怎么玩儿好它。 2. 使用webstorm中的git 2.1 右键菜单 先来最熟知的右键操作,分为两类:文件夹(或者工程)右键和文件右键,先看看文件夹右键的效果—— 再看看文件右键—— 会发现两者的差异仅仅在于文件右键的视图多了一些diff操作(或者可以联想到git diff命令)。我们看看各个选项的含义—— Commit File... 提交至本地版本库 Add 添加进缓存区 Show Current Revision 显示当前文件的最新版本信息,如下图—— Compare with the Same Repository Version 与当前版本(的文件)做比较,可以理解为与最新版本比较,也就是可以比较本地工作区和本地版本库的差异(也记住,比较视图中,右侧永远是最新的那个版本内容)—— Compare with Latest Repository Version 与上一版本(的文件)做比较,可以理解为当前版本与本地工作区所做的更改共同来与上一版本比较 Compare with... 与任意历史版本(的文件)做比较 Compare with Branch... 与任意分支(的文件)做比较,包括本地分支及远程分支 Show History 展示关联本文件(或者文件夹中的所有文件)提交信息历史,我们可以看到,历史提交信息面板出现于下方Version Control面板中—— Show History for Selection 对指定的代码块,显示历史版本信息 (连接第二个图)-------->>>>>> Revert... 还原代码,要注意与reset的区分,这里仅仅是将本地工作区的代码还原为本地仓库中的最新版本的代码

关于solidworksPDM插件的制作

关于SOLIDWORKS PDM插件的制作 PDM插件用到的主要分两种AddCmdAddHook方法 PDM插件用到的主要分两种 通过插件命令管理接口IEdmCmdMgr5 的方法来实现(注册) 生成的类需继承 IEdmAddIn5接口的 addcmd和oncmd方法 AddCmd 添加菜单类的方法: void AddCmd( System.int lCmdID, System.string bsMenuString, System.int lEdmMenuFlags, System.string bsStatusBarHelp, System.string bsToolbarToolTip, System.int lToolbarButtonIndex, System.int lToolbarImageID ) 对应的参数介绍如下: lCmdID 本命令的ID bsMenuString 命令上显示的文本(相当到buttom里的.txt) lEdmMenuFlags 菜单的适合范围(如可以设为仅仅选择是文件时,菜单才有效)【可选】 bsStatusBarHelp 用户在右键单击上下文菜单中突出显示菜单项时在Windows资源管理器状态栏中显示的可选文本【可选】 bsToolbarToolTip 光标位于命令工具栏按钮上方时显示的可选消息【可选】 lToolbarButtonIndex 资源图像中工具栏按钮的可选索引【可选】 lToolbarImageID 用作工具栏按钮的图像的可选ID【可选】 AddHook方法 添加一个挂钩,当指定事件发生时,该挂钩使SOLIDWORKS PDM Professional将该插件的IEdmAddIn5插件下对应的方法;类似于一个事件触发机制 钩子参见如下 https://blog.csdn.net/weixin_34294649/article/details/90157515 该方法主要用一个参数 void AddHook( EdmCmdType eCmdType, System.object poReserved ) eCmdType 事件的类型触发见一表 poReserved 空值; 保留以备将来使用 例事件触发类: using Microsoft.VisualBasic; using System; using System.Collections; using System.

acrobat 需要登录怎么办_「Shopify小白系列」Shopify账户忘记密码怎么办?Shopify密码重置&应用介绍...

上一期中介绍了关于Shopify账号的问题,Shopify账号一共分为两类:帐户所有者和员工帐户(点击这里查阅详情)。今天主要来说说关于Shopify登入的那些事。有很多人反映说Shopify登不上去或者是忘记Shopify账号密码怎么办?Shopify到底有几种登入途径? 其实,您可以登录桌面版Shopify,或者使用适用于iPhone 或Android的 Shopify应用。 这里的Shopify应用主要有三大功能: 1.在Shopify应用中管理您的产品 上传Shopify产品照片 设置Shopify产品和定价细节 将Shopify产品添加到集合中 2.在Shopify应用中只需轻点几下即可处理您的订单 履行,退款或归档订单 购买和打印运输标签 查看转换详情 3.在Shopify应用中回应实时信息 查看实时销售和访客流量 获取订单通知 与员工沟通 Shopify登入输错密码怎么办? 如果您在登录Shopify期间输入了错误的密码,Shopify系统会在您下次尝试登录时要求您确认自己不是机器人。如果您的浏览器处于私密或隐身模式,或者您在上次登录 Shopify 后清除了浏览历史记录,系统还会要求您完成验证步骤。在单击验证之前,您需要等待每个验证步骤中的所有图片完成加载。 Shopify重置密码 如果您忘记了Shopify登录密码,或者您希望Shopify帐户更安全,则可以进行重置。如果您是Shopify帐户所有者,则您可以重置自己的密码和员工的密码。 重置密码的步骤与启用双重身份验证的步骤相同。如果您忘记了用于登录 Shopify的电子邮件,请联系支持人员。 【热门推荐】如何用最少的钱开始shopify建站推广

7 centos lvs nat配置_LVS负载均衡策略的部署与应用

通常来说负载均衡可分为四层负载均衡和七层负载均衡,而四层负载均衡策略中比较典型的实现方式为LVS负载均衡 LVS简介 LVS负载均衡中有三种调度方法,分别为:NAT(Network Address Translation网络地址转换)、TUN(tunnel 隧道)、DR(direct route 直接路由)LVS-DR DR模式下需要LVS服务器和后台服务器绑定同一个VIP, 一个请求过来时,LVS只需要将网络帧的MAC地址修改为其中一台后台服务器的MAC,该包就会被转发到相应的服务器处理,当服务器返回响应时,只要直接向用户的IP地址返回即可,不再经过LVS服务器 优缺点: 1)lvs接收请求输入,将请求转发给RS,由RS输出响应给用户,性能非常高。 2)不足之处是要求负载均衡器与RS在一个物理段上LVS-TUN LVS-TUN模式是通过ip隧道技术减轻lvs调度服务器的压力,很多时候服务器收到的请求包很短小,但应答包通常很大,负载均衡器只负责将请求包分发给后台服务器,后台服务器会直接将应答包返回给用户。因此,负载均衡器能处理很巨大的请求量。 优缺点: 1)性能比LVS-NAT模式要高的多,且不限制负载均衡器与后台服务器在一个物理段上 2)不足之处是需要所有的服务器都要支持"IP Tunneling"协议LVS-NAT LVS-NAT模式是一种外网和内网地址映射的技术。在NAT模式中,LVS需要作为后台服务器的网关,当客户端访问LVS服务器的外网网卡IP地址时,LVS会将数据包的目标IP地址改为后台服务器的IP地址;当后台服务器返回响应时,同样需要通过LVS服务器作为网关进行中转,LVS服务器会将数据包的源地址改为LVS服务器的外网网卡IP地址,因此客户端会认为响应是LVS服务器返回的 优缺点: 1)可以有效把后台服务器IP地址隐藏起来 2)NAT模式请求和响应都需要经过lvs,性能没有DR模式好前期准备 准备三台centos7,配置IP地址和hostname,同步时间,关闭防火墙和selinux,配置IP地址和hostname映射 hostnameipnode1192.168.29.143node2192.168.29.142node3192.168.29.144 在node2和node3中部署httpd服务并修改首页内容 [root@node2 ~]# yum install httpd -y [root@node2 ~]# echo node2 > /var/www/html/index.html [root@node3 ~]# yum install httpd -y [root@node3 ~]# echo node3 > /var/www/html/index.html [root@node2 ~]# systemctl start httpd [root@node3 ~]# systemctl start httpd node1部署ipvsadm [root@node1 ~]# yum install ipvsadm -y [root@node1 ~]# systemctl start ipvsadm.

python scipy optimize_python – 当不满足约束时,Scipy optimize.minimize成功退出

我一直在使用scipy.optimize.minimize (docs) 当我定义一个无法满足约束的问题时,我注意到了一些奇怪的行为.这是一个例子: from scipy import optimize # minimize f(x) = x^2 - 4x def f(x): return x**2 - 4*x def x_constraint(x, sign, value): return sign*(x - value) # subject to x >= 5 and x<=0 (not possible) constraints = [] constraints.append({'type': 'ineq', 'fun': x_constraint, 'args': [1, 5]}) constraints.append({'type': 'ineq', 'fun': x_constraint, 'args': [-1, 0]}) optimize.minimize(f, x0=3, constraints=constraints) 结果输出: fun: -3.0 jac: array([ 2.]) message: 'Optimization terminated successfully.' nfev: 3

C#visual studio引用路径第三方DLL库

对第三方的DLL动态链接库的引用,最好不要直接放在bin目录下,因为根据调试与否有两个子目录debug和release,你要记得放两遍,比较麻烦,另外如果采用git等代码管理工具,一般是不包括bin目录的。 所以,最好在源程序目录下新建个子目录,叫不叫lib都无所谓,然后从这里添加引用就可以了。 另外,不论从哪里添加的引用dll,如果编译器从原位置找不到该dll,就会尝试从“引用路径”下寻找该dll,引用路径可以使用visual studio的项目属性配置界面设置,也可以直接编制配置文件(*.csproj文件和*.csproj.user文件)。 如果用配置界面,则在visual studio的项目属性的“引用路径”下设置,但配置的结果默认存在*.csproj.user文件,该文件默认情况下并不提交给源码管理器(git/svn等),因此可以把相关配置信息手工放在*.csproj文件中,就可以纳入源代码管理了。 引用路径配置如下,但似乎支持相对路径: <PropertyGroup> <ReferencePath>d:\ddd\ddd\lib\</ReferencePath> </PropertyGroup>

bigdecimal取小数部分_BigDecimal保留两位小数点示例详解

BigDecimal保留两位小数点非常简单,BigDecimal是一个java数据类型,它能有效的保持数据的精度,下面是一个BigDecimal保留两位小数点的用法示例。public class MyDemo { public static void main(String[] args) { float num = 0.7563f; //保留两位小数,会四舍五入 BigDecimal percent = BigDecimal.valueOf(num).setScale(2,BigDecimal.ROUND_HALF_UP); System.out.println(percent); } } 上面的示例输出的结果为:0.76,接下来我将来BigDecimal类型的一些常量含义进行说明。 ROUND_CEILING : 表示正无穷大(会尽量取最接近该数字并且最大的值),并不是四舍五入,比如正数0.7546或0.7586,保留两位小数都会变成0.76;如果是负数-0.7546或-0.7586,都会取最大值,变成-0.75。 ROUND_FLOOR : 表示负无穷大(会尽量取最接近该数字并且最小的值),不四舍五入,如正数0.7546或0.7586,保留两个小数点都会变成0.75,如果是负数-0.7546或-0.7586,都会取最小值,变成-0.76。 ROUND_HALF_DOWN : 表示四舍五入,这个不用解释了吧。 ROUND_HALF_UP : 也是表示四舍五入,也不用解释了,和ROUND_HALF_DOWN的区别我也搞不清楚,做了很多次试验结果都一样。 BigDecimal其它的常量不经常使用,所以就没什么必要介绍了。 来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/388.html

小米机器人虚拟墙设置_省钱!石头扫地机器人“虚拟墙”体验 禁区功能也好用...

——前言 随着智能家居不断迭代升级,其中的扫地机器人也在不断成长,当然于与此同时,人们也对于扫地机器人这一智能家居的热门成员、担当家务的熟客给予越来越多的期望。 然而在以往,扫地机器人在清扫过程中随意闯入卧室、卫生间,甚至转上几圈之后带回来一堆不该清扫的东西,毕竟机器人不长人眼,难免不分青红皂白地把该清理的和不该清理的通通一刀切。 那么转一圈之后把该清扫的不该清扫的东西通通吸进肚子,也就是说如果对其不加控制,由此而来扫地机器人很容易从勤恳清洁工变成乱闯乱跑的淘气包。 好在近段时间,石头扫地机器人在近期的3.3.9_001632版本固件更新升级当中得到了“禁区”的特殊功能,由此,大家可通过米家APP设定设备清扫禁区,便再也不怕扫地机器人随处乱逛了。 快科技已经将手头的石头扫地机器人固件升级到了最新版本,我们此前对“润健虚拟墙”进行了测试体验,那么接下来便一同来看新出炉的“禁区”功能效果究竟如何。 ——APP操作 和我们之前测试体验“软件虚拟墙”的时候相同,石头机器人的用户需要通过米家APP,按照APP提示先为家中的石头扫地机器人更新固件。 在固件升级完成之后,我们便能享受到不购买物理虚拟墙缺依然可以可以设置绕行区域的便利功能。 如图所示,使用软件虚拟墙还需要在米家 APP当中点开机器人设置,然后打开启“地图保存模式”。接着回到工作界面,即可以发现右上角出现了“地图编辑”的字样。 点击“编辑”字样即可进入如上界面。 ——“禁区”实测 石头扫地机器人集合了LDS激光雷达及SLAM算法,能够以高达每秒2160次的频率进行智能测距,设备将通过激光雷达信息分析距离完成精准测距,并通过测得地图智能规划设备清扫路线。 在LDS激光雷达的基础上,石头扫地机器人还配备红外碰撞保护传感器和防跌落传感器,在清扫过程中判断清扫前方障碍物距离及清扫目标高度空间,并以此智能规划如何清扫或避开,也为禁区功能的正常运行提供了坚实前提保障。 如图,使用者可以通过米家APP该界面石头扫地机器人清扫禁区的范围,在手机端APP主界面可以清楚地看到设备剩余电量、清扫面积及清扫时间,我们来手动点击即可手动圈画房间清扫禁区。 根据我们在App上所看到的实时显示清扫路径,可以看到石头机器人的行进路线可以发现其在其在行走完一段路程之后遭遇笔者所勾勒的虚拟禁区,其碰壁之后就掉头逃窜。 其并没有进入笔者所勾画的禁区区域清扫,改变了以往一般扫地机器人需要通过设置外置实体虚拟墙或磁条来设定禁扫区的做法。也可以通过该界面查看扫地机器人清扫轨迹,了解扫地机器人清扫进度。 由以上动图,可以看到扫地机器人在遭遇虚拟禁区的“空气墙”之后掉头就走,没有了进屋大闹一番的欲望。 ——写在最后 由笔者的亲身体验可见,其所上线的“禁区”功能确确实实与实体墙所具备的功能一致,能够带来完全一致不打折扣的体验。 不过值得一提的是,石头科技目前所研发生产的实体虚拟墙产品的销售会受到自家软件“禁区”及“软件虚拟墙”功能上线的影响,所以从其此举也可以看出石头科技在用户体验与短期营收的选择上倒向了用户。 那么现在手上有石头机器人的用户们,如果还没体验到这项功能,就赶紧打开米家APP动手更新吧。 - THE END - 转载请注明出处:快科技 责任编辑:

小米机器人虚拟墙设置_大家都有就它独缺,姗姗来迟的虚拟墙方案终更新,小米扫地机器人...

大家都有就它独缺,姗姗来迟的虚拟墙方案终更新,小米扫地机器人 对于现在的人来说,一方面面临着工作的压力另一方面又面临着时间的压力,基本上一直都是处于连轴转的状态,下班回到家第一件事不是先脱去外套而是先睡上一觉,在睡眠时间越来越珍贵的现在,家务事真的是能少点就少一点,但现实情况并不允许我们对于家务事偷懒该做还得做。 现在我们在家里面的时间其实并不多,一则因为大多数人都必须早起感着上班,早高峰和写字楼的集中化是我们现在常见的情况,如果你住的地方离上班的公司近还好说,短途出行公交或是共享单车还是很方便的,但是如果是远途那就会早上开车路上堵、地铁人多堵基本上就是天天要打交道的了,这个原因就让很多人早上基本上就很早就要出门了。 另外一个就是下班的晚高峰问题了,也是因为上述同样的原因,晚上回家的时间基本上在归途中就浪费了不少,所以在回到住处后匆匆解决肚子问题后第一件事就是睡觉休息了,为的就是第二天能够早点起来,这样算下来在家里呆的时间基本上就很少了,而且在家行动的范围也不会太大,没有走动的地方最主要的垃圾基本还是那个就是灰尘了。 现代社会的这种情况并不是一个单独的例子,而是属于大部分的一天需要面对的场景,所以在这种情况下很多人会购买一个扫地机器人来解决家里的清洁问题,在很早以前这个高科技的产物还是昂贵的代名词,不过自从自主品牌进入到这个行业后,立马就将其中的很大水分挤出去了,现在不到3000就已经可以用上不错的扫地机器人了。 小米扫地机器人在消费者的口碑中其实还算挺高的了,特别是在升级换代后更甚,搭配激光测距传感器的使用,对于房屋的打扫就更加的智能了,不过在一些有水或者油污的区域我们并没有一个很好的办法来避免机器人进入,虽然很多品牌针对这种情况推出了很多实物虚拟墙来让机器人来自动避开这些区域,但是在使用上还是很麻烦的毕竟有些地方并不适合放着这些东西。 为了解决这个问题很多品牌都推出了基于软将的虚拟墙方案,而且在使用效果上还不错,但是在小米这一系列的扫地机器人中一直没有更新这个功能也是一直遭受很多小米用户的吐槽,在经过多次更新之后,现在小米扫地机器人的出品方“石头”终于将软件方案的虚拟墙加入固件中了,同期更新的还有一个“禁区”功能可以避免用户并不想扫地机器人打扫的地方。 对于这个功能来说其他品牌的用户可能早就享受到了便利,现在小米终于满足了用户的诉求,拥有小米或者石头扫地机器人的小伙伴可以更新机器人的版本来体验这两项方便的功能了。

小米机器人虚拟墙设置_实测石头扫地机器人新功能:物理虚拟墙可以不用买了!...

随着扫地机器人越来越普及,不少用户对扫地机器人的使用体验提出了更高的要求,一款智能产品,软件更新当然少不了。 近日,石头扫地机器人获得了 3.3.9_001632 版本固件更新,加入地图保存和禁区/软件虚拟墙功能,用户可以通过米家APP为家中的石头扫地机器人更新固件。 升级固件后,用户无需购买物理虚拟墙就可以轻松设置绕行区域、禁扫区域,避开用户不需要清扫的地方。一起来看一下这款极夜黑扫地机器人更新固件后的表现吧。 首先,打开米家 APP,点击我的设备-石头扫地机器人,点击右上角“地图编辑”,我们可以看到下方中间有两个选项,可以设置“虚拟墙”以及“禁区,保存设置后,开启清扫功能即可。 在地图上设置“虚拟墙”后,扫地机器人识别准确,不会越过“虚拟墙”,遇到提前设置好的“禁区”,则会自动绕过该区域,清扫其他地方。 此外,石头扫地机器人利用LDS激光测距传感器,能快速扫描房间获取距离信息,通过SLAM算法,实时构建房间地图,准确定位家具位置,由此规划扫地机器人清扫路径,保证全屋无漏打扫。App上还会实时显示清扫地图和清扫路径,用户点开便可查看扫地机器人的清扫进度。 此番更新的虚拟墙与禁区功能,在实际的体验上为我们带来了不少便利,想要体验的可下载更新。 喜欢数码科技资讯的你,就记得点击订阅啦。 关注「锋潮评测室」微信公众号【微信号:fengchaopingceshi】,还会送上更多你想要的哦~