Excel中如何将竖着排列的数字变成横着排列。
1次演示使用的软件为Excel表格,使用本为office家庭和版2016。
2、首先打开Excel电子表格,并在表格中输入一列竖着排列的数字。
3、选择这列竖排的数字,进行复制,然后在其他行单击鼠标右键,选择选择性粘贴,在弹出的选择性粘贴窗口中勾选转置按钮。
4、点击确定关闭选择性粘贴窗口,可以看到竖排的数字,现在已经被我们设置成了横排排列了。
excel表格复制的时候怎样把原来的竖着的粘贴成横向的?
后,转置粘贴就可以了。举例说明:
第一步,选择区域,按鼠标右键选择复制。如图:
第二步,选择目标区域,然后按鼠标右键-选择”选择性粘贴“。如图:
第三步:点击选择性粘贴后,将转置打钩。如图:
结果如图:
EXCEL透视表如何把竖排的表格变成横格排列
1、选择需要透视的数据源;
2、点击透视表按需求进行透视;
3、透视完成后,把数据透视表字段列标中的行标签内容拖到列标签,把原来的列标签内容拖到行标签处,这样就把竖排的表格变成横格排列了。
4、如图:
如何让excel表的竖排变成横排?
1、首先打开一个excel表格,然后一列数据。
2、然后选择这一列数据,点击复制。
3、复制了之后,选择一个单元格,然后点右键,点击选择性粘贴。
4、在弹出的选择性粘贴设置里面找到转置这个选项,并在其前面的方框中打勾。
5、最后点击确定,就可以将竖排的变成了横排了。
Visual Studio是Windows平台是功能最为强大的重量级编程工具。最新版版Visual Studio 2019出来了,想要安装使用,该怎么下载安装呢?下面我们就来看看详细的教程。
一、下载visual studio 2019
1、打开浏览器,百度搜索【visual studio 2019】,点击图中红框内的微软VS2019官网。(当然我们文章顶部提供了vs2019软件下载。)
2、点击【下载预览版】,等待网页跳转,浏览器会自动下载VS2019的在线安装工具。
、找到下载好的安装工具,并打开。
二、安装
1、打开安装工具进入Visual Studio Installer,点击【继续】。
2、选择工作负载,如果什么都不选,那么安装以后的VS也只是一具空壳,不能进行程序开发,建议把Windows栏下的三个标签选中,并点击【安装】,这样安装后的VS2019就可以开发基于C#、C++的通用应用程序。
3、安装完成后自动打开【Visual Studio】,如果你没有账号,可以点击【以后再说】。进入就可以自动运行了
第二个方法:如果不想从官网进入也可以直接进入这个网址:VS下载,选择免费的社区版,会开始自动下载
版本记录
版本号
时间
V1.0
2017.10.05
前言
很多做视频和图像的,相信对这个框架都不是很陌生,它渲染高级3D图形,并使用GPU执行数据并行计算。接下来的几篇我们就详细的解析这个框架。
Metal是什么?
Metal 是一个和 OpenGL ES 类似的面向底层的图形编程接口,通过使用相关的 api 可以直接操作 GPU。
注意:Metal只针对苹果的平台系统使用,不像OpenGL ES 那样可以进行跨平台使用但是它能最大的挖掘苹果移动设备的 GPU 能力,进行复杂的运算,像 Unity 等游戏引擎都通过 Metal 对 3D 能力进行了优化。
下面看一下Metal在苹果软硬件框架里面的架构。
UIKit -> Core Graphics -> Metal/OpenGL ES -> GPU Driver -> GPU
Metal根据不同的 CommandBufferEncoder 可以提供不同的能力,除了优秀的 3D 渲染能力,Metal 还能提供强大的计算能力。
在 WWDC 2015,苹果发布了 Metal Performance Shaders (MPS) 框架,iOS 9 上的一组高性能的图像滤镜,其实就是边写好的 Shaders,提供了优秀的图像处理能力。同时还提供了高性能的矩阵运算的 Shaders ,能用来做机器学习的运算,在 GPU 上运行卷积神经网络。
Metal的特点
下面看一下Metal的特点:
GPU 支持的 3D 渲染
和 CPU 并行处理数据 (深度学习)
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
//第二步构造数据
var data1 = [];//数据区域缩放组件
var data2 = [];
var data3 = [];
//构造随机数
var random = function (max){
return (Math.random() * max).toFixed(3);
};
//将数据装载到数组中
for (var i = 0; i < 500; i++) {
data1.push([random(15), random(10), random(1)]);
data2.push([random(10), random(10), random(1)]);
data3.push([random(15), random(10), random(1)]);
};
//3、配置option项
//第三步就是使用echarts的option进行参数的配置
option = {
animation: false,//是否开启动画,默认是开启的,true是开启的,false是关闭的
//图例
legend: {
data: [
{
name:'scatter2',
icon:'circle',//强制设置图形长方形
textStyle:
{color:'red'}//设置文本为红色
},
版本记录
版本号
时间
V1.0
2017.12.01
前言
SpriteKit框架使用优化的动画系统,物理模拟和事件处理支持创建基于2D精灵的游戏。接下来这几篇我们就详细的解析一下这个框架。
Overview
下面看一下该框架的基本信息。
SpriteKit提供了一个图形渲染和动画的基础结构,你可以使用它让任意类型的纹理图片或者精灵动起来。SpriteKit使用传统的渲染循环,在每一帧被渲染之前帧的内容就已经处理好了。你的游戏决定了场景的内容以及场景中的每一帧是如何变化的。SpriteKit利用图形硬件高效的渲染动画的每一帧。SpriteKit是经过高度优化的,所以精灵的位置可以在每帧动画中任意的改变。
接下来我们看一下原理图,这个原理图很好的说明了SpriteKit框架渲染每一帧的基本流程。
SpriteKit是一个图形渲染和动画基础架构,您可以使用它来动画任意纹理图像,否则称为sprites。 SpriteKit提供了一个传统的渲染循环,在确定渲染帧和渲染帧之间交替进行。 您确定帧的内容以及这些内容如何更改。 SpriteKit完成了使用图形硬件高效渲染该帧的工作。 SpriteKit针对任意动画或内容更改进行了优化。 这种设计使SpriteKit更适合需要灵活处理动画的游戏和应用程序。
Sprite Content is Drawn by Presenting Scenes Inside a Sprite View - Sprite内容通过在Sprite视图中呈现场景来绘制
动画和渲染由SKView对象执行。 你把这个视图放到一个窗口window中,然后把内容呈现给它。 因为它是一个视图View,其内容可以与视图层次结构中的其他视图组合。
游戏中的内容被组织成场景scene,由SKScene对象表示。 一个场景持有精灵sprites和其他内容被渲染。 场景还实现了每帧逻辑和内容处理。 在任何时候,视图呈现一个场景scene。 只要场景呈现,其动画和每帧逻辑就会自动执行。
要使用SpriteKit创建游戏或应用程序,您要么SKScene类的子类,要么创建一个场景scene代理来执行主要的游戏相关任务。 例如,您可以创建单独的场景类来显示主菜单,游戏画面和游戏结束后显示的内容。 您可以在窗口中window轻松使用单个SKView对象,并在不同的场景之间切换。 切换场景时,可以使用SKTransition类在两个场景之间进行动画处理。
A Node Tree Defines What Appears in a Scene - 节点树定义场景中出现的内容
SKScene类是SKNode类的后代。 使用SpriteKit时,节点nodes是所有内容的基本构建块,场景scene对象充当节点对象树的根节点。 场景及其后代决定了哪些内容被绘制以及如何渲染。
每个节点的位置在其父节点定义的坐标系中指定。 节点还将其他属性应用于其内容及其后代的内容。 例如,当一个节点被旋转时,它的所有后代也被旋转。 您可以使用节点树构建复杂的图像,然后通过调整最顶层节点的属性来旋转,缩放和混合整个图像。
SKNode类不会绘制任何东西,但它将其属性应用到它的后代。 SpriteKit中的每种可绘制内容都由一个不同的子类来表示。 其他一些节点子类不绘制自己的内容,但修改其后代的行为。 例如,可以使用SKEffectNode对象将Core Image filter应用于场景scene中的整个子树。 通过精确地控制节点树的结构,可以确定节点的渲染顺序。
所有节点对象都是响应者responder对象,都是UIResponder或NSResponder的子类,因此您可以继承任何节点类并创建接受用户输入的新类。 视图view类自动扩展响应者链以包含场景的节点树。
何为样本不均衡:
样本分布不均衡就是指样本差异非常大,例如共1000条数据样本的数据集中,其中占有10条样本分类,其特征无论如何你和也无法实现完整特征值的覆盖,此时属于严重的样本分布不均衡。
为何要解决样本不均衡:
样本分部不均衡的数据集也是很常见的:比如恶意刷单、黄牛订单、信用卡欺诈、电力窃电、设备故障、大企业客户流失等。
样本不均衡将导致样本量少的分类所包含的特征过少,很难从中提取规律,即使得到分类模型,也容易产生过度依赖于有限的数量样本而导致过拟合问题,当模型应用到新的数据上时,模型的准确性和健壮性将会很差。
样本不均衡的解决方法:
过采样 通过增加分类中样本较少的类别的采样数量来实现平衡,最直接的方法是简单复制小样本数据,缺点是如果特征少,会导致过拟合的问题。经过改进的过抽样方法通过在少数类中加入随机噪声、干扰数据或通过一定规则产生新的合成样本。
欠采样 通过减少分类中多数类样本的数量来实现样本均衡,最直接的方法是随机去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类中的一些重要信息。
设置权重 对不同样本数量的类别赋予不同的权重(通常会设置为与样本量成反比)
集成方法 每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次会得到很多训练集和训练模型。最后在应用时,使用组合方法(例如投票、加权投票等)产生分类预测结果。这种方法类似于随机森林。缺点是,比较吃计算资源,费时。
类别不平衡问题
类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题。例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问题中,因为绝大多数样本都为正常样本,欺诈样本很少,逻辑回归算法会倾向于把大多数样本判定为正常样本,这样能达到很高的准确率,但是达不到很高的召回率。 类别不平衡问题在很多场景中存在,例如欺诈检测,风控识别,在这些样本中,黑样本(一般为存在问题的样本)的数量一般远少于白样本(正常样本)。 上采样(过采样)和下采样(负采样)策略是解决类别不平衡问题的基本方法之一。上采样即增加少数类样本的数量,下采样即减少多数类样本以获取相对平衡的数据集。 最简单的上采样方法可以直接将少数类样本复制几份后添加到样本集中,最简单的下采样则可以直接只取一定百分比的多数类样本作为训练集。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_14845119/article/details/80787753
分类任务loss:
二分类交叉熵损失sigmoid_cross_entropy:
TensorFlow 接口:
tf.losses.sigmoid_cross_entropy(
multi_class_labels,
logits,
weights=1.0,
label_smoothing=0,
scope=None,
loss_collection=tf.GraphKeys.LOSSES,
reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
tf.nn.sigmoid_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
name=None
)
keras 接口:
binary_crossentropy(y_true, y_pred)
二分类平衡交叉熵损失balanced_sigmoid_cross_entropy:
该损失也是用于2分类的任务,相比于sigmoid_cross_entrop的优势在于引入了平衡参数 ,可以进行正负样本的平衡,得到比sigmoid_cross_entrop更好的效果。
多分类交叉熵损失softmax_cross_entropy:
TensorFlow 接口:
tf.losses.softmax_cross_entropy(
onehot_labels,
logits,
weights=1.0,
label_smoothing=0,
scope=None,
loss_collection=tf.GraphKeys.LOSSES,
reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
tf.nn.softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None
)
tf.nn.sparse_softmax_cross_entropy_with_logits(
_sentinel=None,
labels=None,
logits=None,
name=None
)
keras 接口:
categorical_crossentropy(y_true, y_pred)
sparse_categorical_crossentropy(y_true, y_pred)
focal loss:
focal loss为凯明大神的大作,主要用于解决多分类任务中样本不平衡的现象,可以获得比softmax_cross_entropy更好的分类效果。
论文中α=0.25,γ=2效果最好。
dice loss:
2分类任务时使用的loss,本质就是不断学习,使得交比并越来越大。
TensorFlow 接口:
不同的路径
Mac上自带python的安装路径:
Mac上自带python为2.X版本,该版本已停止更新。而用Homebrew下载新的版本后,bash打开依然是默认的2.X版本。
/System/Library/Frameworks/Python.framework/Versions brew新安装的路径:
/usr/local/Cellar/python 路径的切换
vim ~/.bash_profile打开外部环境变量&配置
export PATH=${PATH}:/usr/local/Cellar/python/3.7.x(你的版本)/bin 重新命名python
alias python="/usr/local/Cellar/python/3.7.x/bin/python3.7" 4 让其修改生效
source ~/.bash_profile 让配置文件生效
原标题:扫地机器人老被困住,我来告诉你怎么一次性解决
扫地机器人可以给我们带来干净整洁的家,帮我们节省更多的业余时间。但是在使用扫地机的时候也会遇见很多的问题,最烦人的就是老被困住,动不动就要求助,这大大的影响了用户的使用体验!
为了解决这一问题,我把自己多年的使用经验告诉大家。首先,把扫地机器人最容易被困住的情景简单列举一下,然后我们再一一来针对解决。
1、扫地机被困情景一——电线、窗纱、蚊帐等柔软物品
扫地机最容易与电线产生关系的就是边刷、滚刷、动理论、万向轮、和水箱,这些地方会让你以想象不到的方式发生缠绕,特别是一些细小的数据线;还有就是窗帘、蚊帐因为比较柔软,而且常常垂到地上,所以也容易被扫地机器人吸入吸口,导致和滚刷发生缠绕。
解决的办法:家里面的电线如果能够收拾起来的尽量收拾起来,如真的需要,根据笔者的使用经验,尽量使用厚实粗重的电线,这样可以降低发生缠绕的几率;
家里比较柔软的物品都容易被扫地机器人吸入而发生缠绕,窗帘、蚊帐、线头什么的尽量悬挂起来。还有一个比较严重的问题是扫地机器人吸口很脏,这些东西被吸入后也会被弄的很脏,到时候清洗起来也很累。
2、扫地机被困情景二——卡在床底、柜底等地方
这是一个很矛盾的问题,很多人购买扫地机就是为了清扫床底、柜底下这些地方,因为这些地方人工清理会很麻烦,但是有一个严重问题就是扫地机常常容易卡死在这些地方。
我们知道床底和柜底一般的标准盖度是10cm,而我们扫地机器人高度一般在9-12cm之间。这其中涉及到一个商家的宣传的问题,有的商家宣传扫地机器人高度是包括摄像头部分的,而有的却不包括,如果消费者购买了不包括摄像头的可能就会被误导。
解决方法:这种其实没有很好的办法,前期建议是你要先弄清楚自己家的家具底部是多高,然后去买相对应的扫地机器人,这是最好的办法;还有就是可以尝试将部分家具底部垫高,这样扫地机器人也可以进去清扫。
3、扫地机被困情景三——夹在狭小的角落出不来
这是一个很奇怪的现象,有时候扫地机器人明明可以进入一个地方,但是进去后自己又出不来了,这种情况最容易发生在餐厅,因为餐厅的桌椅腿蹬最多,对扫地机器人来说地形最为复杂,常常会把自己转晕,而找不到出口。
解决方法:整理好自己的家具,这是唯一的解决方法,你可能很懒不想去做这些,但是如果不去做问题就永远解决不了。只有坚持去做了,渐渐的你会发现扫地机器人帮你养成了一个好习惯。
4、扫地机被困情景四——被卡在门槛上
扫地机器人被卡在门槛上的习惯很常见,很多扫地机器人爬坡能力一般在2cm以下,而我们家里面的门槛石一般都高出地面2cm以上,这也难怪它会被卡住了。
解决方法:购买扫地机器人的时候一定要问明白爬坡高度,尽量买爬坡能力强的;如果发现扫地机老被卡在门槛石上面,你可以在门口放置一块地毯,这样扫地机器人要进房间打扫,就会先爬上地毯,然后再爬上门槛石就不那么困难了。
总结
在网上看到很多人抱怨扫地机的各种问题,而且大多与以上介绍的问题相同,所以笔者特地写了一些见解,希望可以对你有帮助。
经过多年的使用扫地机器人,笔者也同样发现了一个问题,人与扫地机器人是一种共赢的关系,一开始我有很多的坏毛病,喜欢乱扔脏衣服,鞋子和袜子也会乱摆,每天回到家也很少整理家务。所以一开始总是和扫地机器人格格不入,开始我也和很多人一样抱怨它的无能,但是毕竟是花费了一千多元买来的,我也不想贱价挂到咸鱼上去,就算是不好用我也要用。
不乱扔东西是第一步,整理家具是第二步,总之,扫地机器人遇到什么问题我就改过来。现在回想起来,发现特别的有意思,买扫地机器人正是为了让自己有一个好的家庭环境,而自己做的那些不就是为了如此吗?返回搜狐,查看更多
责任编辑:
html代码快速生成的写法(也称Emmet语法) 在敲代码的过程中,工作量非常的大,代码也不能一点点的写,非常影响效率,所以我们有快速的方法来编写代码的框架,节省了我们大量的时间,下面就来看看Emmet语法(这里我使用的是前端流行开发工具Visual Studio Code)!
Emmet语法 .+类名——快速生成类选择器 输入.nav 出现<div class="nav"></div> #+id名——快速生成id选择器
输入#two 出现<div id="two"></div> 标签+标签——快速生成兄弟级标签
输入div+p 出现<div></div> <p></p> 标签>标签——快速生成父子级标签
输入ul>li 出现<ul> <li></li> </ul> 标签*number——快速生成number个标签
输入p*4 出现<p></p> <p></p> <p></p> <p></p> $——自增符号
输入ul>li*3{$} 出现<ul> <li>1</li> <li>2</li> <li>3</li> </ul> 标签+{内容}——快速生成内容
输入div{你好吖} 出现<div> 你好吖 </div> shift+Alt+F——格式化文档(主要是对编写不规范的代码进行格式化,比如没对齐,没缩进等)
以上语法知识只是最基础的用法,他们之间可以互相使用和一起使用,对代码的编写效率有极大的提高,下面我就稍微举几个结合使用的例子!!!
输入.left+#one 出现<div class="left"></div> <div id="one"></div> 以此类推^_^! 输入ul>li>a*3{$} 出现<ul> <li><a href="">1</a></li> <li><a href="">2</a></li> <li><a href="">3</a></li> </ul> 是不是很神奇^v^! 还有很多结合使用的语法,都是用基础的语法搭建,使用比较灵活,大家都可以去试试哦!~
正确的安装 1、先安装packaging
python3 -m pip install packaging 执行这个命令后会提示这样安装成功
Defaulting to user installation because normal site-packages is not writeable Collecting packaging Downloading packaging-20.8-py2.py3-none-any.whl (39 kB) Collecting pyparsing>=2.0.2 Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) |████████████████████████████████| 67 kB 42 kB/s Installing collected packages: pyparsing, packaging Successfully installed packaging-20.8 pyparsing-2.4. 2、执行下面这个命令,查看命令输出的是什么,输出的名字等下会用到
python3 -c"from packaging import tags; print('\n'.join([str(t) for t in tags.sys_tags()]))" |head -5 我的输出是:
cp38-cp38-macosx_11_0_arm64 cp38-cp38-macosx_11_0_universal2 cp38-abi3-macosx_11_0_arm64 cp38-abi3-macosx_11_0_universal2 cp38-none-macosx_11_0_arm64 3、在这里下载Pillow安装包https://pypi.org/project/Pillow/8.0.1/#files
请下载Mac版的,并且与你电脑Python版本一样的包,默认是3.8的,就是:Pillow-8.0.1-cp38-cp38-macosx_10_10_x86_64.whl
这个
下载完成以后,命令行进入下载目录重命名,因为我上一个命令输出的有cp38-cp38-macosx_11_0_universal2,
所以重命名的时候要在这个前面加上下载回来文件的Pillow-8.0.1-
请注意如果不重命名是安装不成功的,会提示
北大青鸟JBF-61S20防火门监控器控制器接线示意图
一,北大青鸟JBF-61S20防火门监控器控制器接线示意图功能
防火门控制及状态 监测功能
手动、自动关闭常开防火门;实时监控常开或常闭防火门的状态信息,并进行上报和显示。
联网功能
监控器可以与青鸟报警控制器进行无缝连接;防火门监控器也可以自行组网,组网的监控器可设置为集中机或者区域机,集中机可对所有区域机进行控制和显示,包括跨机启动区域机防火门以及显示区域机事件和信息等;可接收来自中控室的 CRT 通信或者火灾报警控制器的消防报警指令。
接收火警 功能
监控器与青鸟火灾报警控制器联网后,可以通过设置进行有选择的实时接收来自火灾报警控制器发出的火警信息,以实现对相关防火门的自动控制。同时监控器还会将上述的报警、联动信息进行自动存储。
故障报警 功能
监控器的各个功能板卡、电源以及该监控器所连接的各种功能模块一旦出现问题,监控器会在时间报出故障。
防火门状态处于异常状态时,监控器也会时间报出故障,例如常闭防火门处于异常打开状态、常开防火门处于异常关闭状态等。
门的屏蔽与开放 功能
系统运行过程中有防火门发生损坏,在更新部件之前可将其屏蔽,更新部件后再开放。防火门被屏蔽后将不能被控制,同时监控器屏幕上将显示被屏蔽防火门的相关信息。只要系统中有部位被屏蔽了,面板上的屏蔽指示灯就会常亮。
查询 功能
可以通过查询菜单,查询到相关信息,包括:防火门注释信息、在线接口模块的类型及状态、模块与防火门匹配信息、接收火警地址段、防火门与接口的对应关系等。
信息存储功能
监控器具有历史信息实时存储功能,存储容量约为 100000 条,可以查询到监控器开、关机、复位、火警、各种故障、防火门的启动等历史记录信息。
权限管理功能
监控器具有二级密码权限管理,确保监控器不会被误操作。
电源管理功能
监控器采用了一台具有双路输出功能的消防电源,分别为监控器、现场输入/输出接口模块供电和为现场电动闭门器、电磁释放器等设备供电;同时壁挂防火门还配置了两节 DC12V/7AH 的备用电池,大容量防火门配置了两节 12V/24Ah 的备用电池,确保系统持续工作;
继电器 功能
监控器配备有 2 组继电器输出触点,分别输出故障信息和火警信息。
自检 功能
监控器具有自检功能。
二,北大青鸟JBF-61S20防火门监控器控制器接线示意图应用接线图:
压力开关是自动喷水灭火系统中常采用的一种较简便的能发出电信号的组件。常与水力警铃配合使用,互为补充,在感知喷水灭火系统启动后,水力报警的水流压力启动发出报警信号。系统除利用它发出电讯号报警外,也可利用它与时间继电器组成消防泵自动启动装置。安装时除严格按使用说明书要求外,应防止随意拆装,以免影响其性能。其安装形式无论现场情况如何都应竖直安装在水力报警水流通路的管道上,应尽量靠近报警阀,以利于启动。同时,压力开关控制稳压泵,电接点压力表控制消防气压给水设备时,这些压力控制装置的安装应符合设计的要求。
5.4.4 本条对水力警铃的安装位置、辅助设施的设置、传导管道的材质、公称直径、长度等作了规定。
水力警铃是各种类型的自动喷水灭火系统均需配备的通用组件。它是一种在使用中不受外界条件限制和影响,当使用场所发生火灾、自动喷水灭火系统启动后,能及时发出声响报警的安全可靠的报警装置。水力警铃安装总的要求是:保证系统启动后能及时发出设计要求的声强强度的声响报警,其报警能及时被值班人员或保护场所内其他其他人员发现,平时能够检测水力报警装置功能是否正常。本条规定内容和要求与设计规范是一致的,考虑到水力警铃的重要作用和通用性,本规范再作明确规定,利于执行和保证安装质量。
5.4.5 末端试水装置是自动喷水灭火系统使用中可检测系统总体功能的一种简易可行的检测试验装置。在湿式、预作用系统中均要求设置。末端试水装置一般由连接管、压力表、控制阀及排水管组成,有条件的也可采用远传压力、流量测试装置和电磁阀组成。总的安装要求是便于检查、试验,检测结果可靠。
关于末端试水装置处应安装排水装置的规定,是根据目前国内相当部分工程施工时,因没安装排水装置,使用时无法操作,有的甚至连位置都找不到,形同虚设。因此作出此规定。
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!!
可以通过Redis中keys命令进行获取key值,具体命令格式:keys pattern
文中提到redis中允许模糊查询的有3个通配符,分别是:*,?,[]
其中:
*:通配任意多个字符
?:通配单个字符
[]:通配括号内的某一个字符
=========================================================================
在实际项目中有可能会使用spring集成redis的RedisTemplate进行操作,这样在注入模板时可能会出现模糊查询不好用的情况,是因为keys方法是存在于StringRedisTemplate子类中(父类-RedisTemplate)的
在spring配置时,一定要注意!!!
=========================================================================
实际操作中具体的思路:
1. 将要查询的条件当做key进行ZSet存储
2. 在获取时,调用StringRedisTemplate.keys(pattern),例:
1
2
3
4
5
publicSet keys(String pattern){
returnstringRedisTemplate.keys(“*”+ pattern + “*”);
// return stringRedisTemplate.keys(“?” + pattern);
// return stringRedisTemplate.keys(“[” + pattern + “]”);
}
ps:模糊查找适用于 String数据结构,对redis支持的其他结构(List、set等),没有 验证是否支持。
实践代码:
/**
* redis缓存操作类
*/
@Service
publicclassRedisCacheServiceimplementsInitializingBean{
privateValueOperations valueOperations;
@Autowired
privateStringRedisTemplate redisTemplate;
@SuppressWarnings(“unchecked”)
@Override
publicvoidafterPropertiesSet()throwsException{
RedisSerializer redisSerializer =newStringRedisSerializer();
valueOperations = redisTemplate.opsForValue();
}
/**
* 从缓存中获取资源信息
kali Linux的更新源是在国外的,所以在更新的的话许多的小伙伴都会更不了,今天我来教大家怎样更换国内镜像源
1、输入“vim /etc/apt/sources.list”命令进入源地址文件
2、按“i”进入插入模式
3、选择一下任何一个源
#aliyun 阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
# ustc 中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
# tsinghua 清华
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#浙大源
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
更新前把系统自带的更新源注释或者删除掉
4、Esc退出插入模式
5、CTRL+x保存退出
Plot data with error bars on both x and y axes
ERRORBARXY is a function to generate errorbars on both x and y axes with specified errors modified from codes written by Nils Sjöberg (http://www.mathworks.com/matlabcentral/fileexchange/5444-xyerrorbar)
errorbarxy(x, y, lx, ux, ly, uy) plots the data with errorbars on both x and y axes with error bars [x-lx, x+ux] and [y-ly, y+uy]. If there is no error on one axis, set corresponding lower and upper bounds to [].
I am very new to MATLAB and expect a step-by-step solution. I have data, series(y), which I have to plot against (x). Also I have the standard deviation values for each data point of (y). Now I have to plot these series highlighting the error bars. How can I do that?
The data is in a text file sorted in columns as:
X = -50, -49, -48, -47....0....1, 2, 3, 4, 5.
Office 上面书写和画画功能,必须建立在你的设备支持触摸功能的基础上,使用手指、数字笔或鼠标进行绘制。可用的墨迹书写功能取决于所使用的设备类型以及所使用的 Office 版本。
Office for Mac中使用墨迹绘画和书写 书写、绘制或突出显示文本
在 Mac 上,这些功能仅在Microsoft 365和 Office 2019 for Mac 中可用。
1.在功能区的“绘图”选项卡上,单击以选择钢笔。
2.再次点击打开笔的“粗细”和“颜色”选项。 选择喜欢的粗细和颜色。
共有从 0.25 mm 至 3.5 mm 的五种粗细。 选择粗细以使笔更粗或更细。菜单上提供十六种纯色,可以点击“更多颜色”查看更多。还提供 8 种效果:“彩虹”、“银河”、“熔岩”、“海洋”、“玫瑰金”、“金色”、“银色”和“青铜色”。 “绘图”选项卡上 Office 笔库中笔的颜色和粗细选项 3.还提供铅笔纹理:
使用支持的数字手写笔绘制使用铅笔纹理时,可以倾斜触笔以获得 "底纹" 效果,就像使用真正的铅笔一样(Office 365 订阅者可用 3 种不同文理的笔进行墨迹绘图:铅笔、钢笔或荧光笔)。
4.绘制墨迹形状后,其行为与 Office 中你已习惯处理的任何形状相同。 可选择形状,然后进行移动或复制、更改其颜色、转换其方向等。
5.若要停止墨迹书写并选择你的注释,以便修改或移动它们,请在 "绘图" 选项卡上撤消选择 "绘制" 按钮。
使用触控板的触摸绘图 你可以使用手指在触控板上绘制,而不是使用鼠标绘制墨迹。 擦除墨迹
1.在“绘图”>“工具”下,点击“橡皮擦”。 (在 PowerPoint for Office 2019 for Mac 中,可以选择不同大小的橡皮擦。 Word 有三个橡皮擦选项(版本16.28 或更高版本)。 点击橡皮擦按钮上的向下箭头,选择所需的橡皮擦。在 Mac 上,PowerPoint for Office 365 具有四个橡皮擦用于数字墨迹。)
本期点评的投稿作品是一份中医类的PPT。
作者是学中医的一名学生,虽然关于中医知识我不甚了解,但是对于这份PPT,是有很多可以优化的地方的。
让我们先看一下投稿原稿:
缺乏图片?试试墨迹! 这份PPT存在的问题之一就是缺图片。对于中医的“哲学式”表述,想要找到合适且高大上的图片实在是太难了。
不过凡事都有两面性,对于这类中国风内容,中国风的PPT就很合适。而“墨迹”就是中国风PPT中最好用的元素之一。
不妨对比一下,诺记修改前后的页面:
内容完全一样,字体也没有特别炫,只是加了一些墨迹,整个PPT看上去就丰富许多了。
想用好墨迹,诺记总结了三个关键词:1)背景净;2)轮廓整;3)单维度。
背景净 只需要在网上输入“墨迹”或者“水墨”,就可以找到很多相关的素材。我们挑选的时候尽量选择白底的,这样的图片用起来效果好。
这里诺记说的背景净,并不单单是指图片背景要干净,页面背景也要干净。
比如下图中的两张图片,在左侧的白色背景上就会显得非常简洁。而在右侧的浅色图片上就会显得有“补丁感”。
所以在使用墨迹的时候最优选择是“白底黑墨”,但是如果非得使用非白底,比如本期投稿的作品就用了米色作为底色,那么就需要进行抠图。
虽然office的PowerPoint从2010版本开始就提供了删除背景这个好用的功能,但是对于墨迹这类边缘锯齿较多的素材,删除透明色会更好用。
选中图片,找到“图片格式-颜色”,然后找到设置透明色按钮。点击之后,在图片白色的区域点击一下,白色就都消失了。
这个方法有两个注意事项:
1)每次只能去除一种颜色,所以不适合渐变背景或者花哨背景;
2)有的图片设置透明色效果不佳,可以利用PPT增加以下对比度,剪切粘贴为图片之后再试一次。
轮廓整 如果同样是白底背景,那么选墨迹素材的时候尽量选择轮廓完整的。最好不要有过多的细线或者虚线元素。
左侧的墨迹不适合当做背景 举个例子,上图中,左侧的墨迹轮廓就比较散乱。这样一方面增加了抠图的难度,另一方面也不利于放置文字,容易干扰阅读。而右侧的墨迹就好多了,完整的一大块,放文字标题会很清晰。
单维度 最后一个使用技巧,是仅仅把墨迹用在一个维度上。
墨迹通常可以用在标题上,当作标题文字的背景,可是使用的时候,一定不要跨越多级标题。
我们来看一个案例:
在这页PPT上,我们可以看到一个大标题(肝脾关系)和两个小标题(疏…+藏…)。
我们可以把墨迹用在大标题或者小标题上(下图左),但是不能同时使用在大小标题上(下图右),这样会让页面墨迹产生矛盾,也容易让页面局部变得黑黑一坨。
所以墨迹可以强调标题,可以用来绘制示意图,可以用来强调关键词,但请保证一次只用在一个维度上。
投稿作品修改
现在回到投稿作品当中,我运用了墨迹技巧对于投稿作品进行了修改。
现在再来看一看改稿,是不是能发现遵循着背景净、轮廓整、单维度呀?
原稿 改稿 原稿 本期作品原稿与改稿 本期原稿 本期改稿 本文为诺壹乔原创,未经许可不得转载。
All rights reserved.
如果你也希望诺记诊断你的PPT,欢迎投稿。
投稿邮箱:chotjoy@foxmail.com
邮件标题请注明“诺记点评”
关于中国风PPT的使用,诺记还拍了一个vlog,感兴趣可以看:水墨风PPT的秘密
前段时间接到业务的一个需求,需要将标准和定制业务的信贷分开。原来目前公司是将标准和定制的客户信贷金额整在一起,共用一个信贷范围。而定制业务特殊性决定了公司要收到客户全款才会接单生产并发货,而客户打预收款的时候是不分标准和定制的。
为了解决这个问题,我这边给出的方案是新建定制的信贷范围,将标准和定制分开。在前端创建定制信息并传到SAP创建订单的时候通过创建会计凭证的方式将标准的预收款转移到定制的预收款。等于变相将定制业务的应收风险转嫁到标准业务上了。
首先在SAP后台配置一个新的信贷范围,并分配相关的定制业务的销售范围。设置好相关的信贷管控。
在定制订单创建的接口里新增功能,当订单过来的时候就创建相关的会计凭证从标准的预收款转移到定制的信贷范围。记账码分别为09和19,如下图:
同时需要更新历史未清的订单更新对应的信贷范围,这里的“未清”主要是没有开票的销售,已经开票的部分因为生成了应收会计凭证,是不用更新信贷范围的。
查看销售订单的信贷范围可以通过VA03查看“环境——合作伙伴——显示信贷科目”可以知道相关销售订单的信贷范围以及信贷余额。
更新所有销售订单的信贷范围以及重组信贷,需要通过事务代码F.28来实现:
选择“重建FI和SD数据”并勾选“创建SD更改凭证”,输入相关的客户号码以及定制业务的信贷范围,执行,系统会提示:
点击确定,系统就开始重组信贷范围了,会将相关的客户所有的信贷信息根据最新的后台配置进行重建!
整个信贷重建的业务,需要注意以下几点:
1、销售订单的信贷账户取决于销售订单合作伙伴里的付款方,同时付款方也会有相关的信贷账户;
2、重组信贷之后,原来订单的信贷信息会从原来的信贷账户转移到新的信贷账户;
3、标准的信贷账户和定制的信贷账户必须属于同一个公司主体,否则无法做会计凭证转移,具体原因自己想;
4、重建之后未清的销售订单信贷范围会变更,但已开票的订单无效;
5、如果销售订单已经发货了,但新的定制账户没有足够的余额是不允许过账的,会提示交货冻结;此时要么加信贷余额并F.28重建,要么就是交货单删掉,加信贷再新建交货单,要么通过VKM5进行信贷释放;
6、ECC版本是通过F.28进行重建,S4版本重建信贷是通过SE38执行以下两个程序:
UKM_RFDKLI20 :更新未清订单额度
UKM_RFDKLI20_AR : 更新未清发票额度
本文作者 | SAP梦心
联系方式 | 微信:W150112458(疯狂的程序员)
特别敬告 | 未经允许,请勿转载,版权所有,违者必究
版本系列:S4 1610
业务背景介绍
标准SAP系统中,对于预收账款和银行承兑、商业承兑来说,都需要做信贷风险管控。做预收账款来扣减信贷风险价值。但是在一些公司中,银行承兑做账此时不需要进行扣减信贷风险价值,SAP提供标准配置进行调整;
知识须知
1.特别总账信贷更新,在前端业务中体现方式为业务类型为“300—特殊信贷风险”;
来自特殊总账事务的预收款:如果它们与信贷限额相关,(例如付款),则会从特殊承付款转移到总承付款;系统基于付款者更新价值;
客户的信贷风险明细
系统配置
T-code:FBKP,预收账款、银行承兑都需要进行信贷管控处理,需在特别总账配置中进行信贷额度管控,如下图所示:
FBKP-特别总账标识
特别总账相关后台表
延伸思考
1.若修改了FBKP特别总账标识,即新增或减少信贷限额,对于FI账务以前的特别总账业务应当如何处理?
组织级别FI账务信贷数据变更后 前端业务单据处理方案:
1)根据FI特别总账变更规则,确认需要变更的FI账务的客户编号(信贷账户号)
2)根据客户编号(信贷账户号),使用程序SE38:UKM_RFDKLI20_AR调整FI特殊总账凭证信贷值更新;
3)更新客户信贷风险控制价值,使用事物代码:UKM_COMMITMENTS ,删除错误行项目即可(300业务(特殊信贷风险));
4)检查FI 信贷数据和 SD中的信贷风险价值 金额 是否一致;比对FBL5N 未清数据-仅包含特别总账和 BP信贷控制价值 业务类型为300(特殊信贷风险);
5)检查UKM_MALUS_DSP的客户信贷风险超额情况,结合VKM1对未超额,但是仍然被冻结信贷的客户单据进行批准过账处理;
做个记录,
近期遇到,Newtonsoft.Json序列化和反序列化导致内存飙升。排查问题比较难排查,因为在用户量少的时候,出现不了问题,等用户量到达几万后,就出现内存爆掉了。
原因:(1)一起请求,多次序列化和反序列化;
(2)对象的数据比较大;
I'm working on openlayers and need to change the format of dwg to GeoJSON with ArcGIS.
how can i do this?
解决方案
Indeed, GDAL has the necessary tools to get this done. ogr2ogr is a program included with GDAL that can transform a variety of formats, including DWG. If you don't already have GDAL installed, here are good tutorials for windows and mac/linux. The following guide recommends converting to a DXF first, since the library for converting from DXF is included by default with GDAL.
相关漏洞已提交官方,并修复,请勿未授权进行渗透测试。
前言 打工人,打工魂,打工都是人上人。
好家伙一到工地,就来了一车砖.xls。话不多说咱开搬。
是某学院的站点像这种官网主站都做得比较好了,我一般会找子站这种软柿子捏捏(太菜),经过一番查找,找到个看起来比较软的柿子,掏出我的xray+awvs就是一通扫,好家伙,啪一下,很快啊,页面就开始爆红。好吧,果然脏活累活只能亲自上手,只希望今天的砖不要太烫手。
访问主页面 来到这个子站就发现功能处有个内部办公功能点击内部办公输入万能口令admin/admin就是一把梭,好吧,嗦不动。但是看着好像用户名可以爆破。
那就掏出我的1万大字典,先来爆破他个用户名看看,线程调低些。
(忘记截图了(lll¬ω¬))
Burp还在跑的时候,我看到左下角有个坏掉了的图片,点开一看,居然是大名鼎鼎的360webscan,但是好像已经失效了。咳咳,扯远了
过了一会儿,burp也爆破完了,我的1万大字典居然一个也没爆到。
生成字典
那既然直接爆破不行,那就去网页上看看有什么泄露的信息
果然,网站上有个教师风采把这些教师的名字的缩写做成用户名字典,再辅以我的1万大密码字典成功爆出用户名和密码
登录后台 来到后台发现应该是个普通权限的用户,只有添加习题和查看习题的功能点击添加习题,是个文件上传界面,先直接上传一个php文件返回添加成功,但是页面上没有回显地址抓包来看也是一样的没有地址回显。这时候再查看一下已发布的习题发现已经成功上传了,但就是没有文件地址……
未授权访问 现在现有功能没办法上传,但是后台都进了,总不能空手而归。但是刚刚一顿操作下来,感觉这个后台设计的很简陋,安全练习时长半个月的我突然想到像这种后台一般都是自己写的,而且对访问权限的管理一般都不严格。说干就干,
查看网页源代码一通找,看看有没有什么泄露的地址。
查看源码发现这个后台好像还用了什么框架Js里也没发现其他链接,再看看cookie居然什么都没有,当时我气急败坏,一怒之下把cookie的值给删了,再次访问页面。提示登录超时在我点了确定,想着隔壁保安好像还缺个位置,好家伙页面居然没有自动跳转到首页,还把所有功能接口都显示出来了。换个浏览器登录,将未授权的接口用之前账号的cookie来访问,选择教薪导入咨询信息上传这个功能。上传一个txt用burp抓包,修改文件名和文件内容点击send发现被弃包,应该存在waf。
经过测试发现应该是对上传的文件内容进行检测换成图片马上传也不行,于是用填充垃圾字符消耗waf内存的方法绕过waf,我这里用了54万的字符成功上传然后连接
推荐阅读:
记一次漏洞挖掘实战之木桶短板
红队中易被攻击的一些重点系统漏洞整理
记一次失败的实战渗透
点赞,转发,在看
文章来源:先知社区
作者:lushun丶
实例代码:
package com.bigdata.spark.hbase;
import java.io.IOException;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import org.apache.spark.broadcast.Broadcast;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
import scala.Tuple2;
import com.bigdata.spark.SparkManager;
import com..bigdata.spark.pojo.Customer;
import com.bigdata.spark.sql.DataFrameManger;
public class SparkHbaseTest {
private static final Pattern SPACE = Pattern.
前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路。
一、测试号相关配置
首先在你公司申请的测试号上配置好相关信息,这里直接上图吧:
URL与Token都是要后台配置好的,直接叫后台给过来就好啦,域名一定要和URL的域名保持一致。
然后,在体验接口权限表里面找到网页帐号--网页授权获取用户基本信息,点击修改:
配置授权回调的域名,至于什么是OAuth2.0,大家自行百度吧。这里的域名也要与上面的域名一致。配置成功会有通过安全监测的提示,这里不上截图了。
二、获取code
配置好以上回调域名等后,就可以写代码了。首先是获取code,需要打开如下页面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
其中,这些参数说明在微信JSSDK说明文档里面都有说明,如下图:
配置好参数后,进入这个页面微信会返回code在回调的url里给我们:
然后,我们只需去url里截取这个code即可,但是我们发现这个code并不是跟在url的最后面,所以一开始我用vue的this.$route.query.code方法行不通,得用js进行截取,以下是我的代码:
methods: {
getCode () { // 非静默授权,第一次有弹框
this.code = ''
var local = window.location.href // 获取页面url
var appid = 'wx65adcf075369****'
this.code = this.getUrlCode().code // 截取code
if (this.code == null || this.code === '') { // 如果没有code,则去请求
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`
} else {
// 你自己的业务逻辑
}
},
getUrlCode() { // 截取url中的code方法
var url = location.search
this.winUrl = url
展开全部
可以在规划局,城市总体规e5a48de588b63231313335323631343130323136353331333431356665划图,里面有城市远期各类用地统筹安排。
用地规划图的作用是对土地开发、利用、整治、保护等方面做的统筹安排和长远规划。目的在于加强土地利用的宏观控制和计划管理,合理利用土地资源,促进国民经济协调发展所绘制的专题图,
因为这种图中间的利润很大,重要的很少能查到。用地规划图是具有局限性的,它在一定区域内,根据国家社会经济可持续发展的要求和当地自然、经济、社会条件对土地开发、利用、治理、保护
在空间上、时间上所作的总体的战略性布局和统筹安排,从全局和长远利益出发,以区域内全部土地为对象,合理调整土地利用结构和布局;
扩展资料:
怎么看用地规划图
一、图题
就是图纸的标题,分为主题和副题。
1,主题:城市名称+项目所在地+工作阶段(总规、控规、分区规划等等),如上图中 :保定市+主城区+控制性详细规划。
2,副题:图纸名称。如上图中:中心城区用地布局规划图、用地布局规划图。
二、图界
图界就是城市规划图的幅面内应涵盖的用地范围。所有城市规划的现状图和规划图,都应涵盖规划用地的全部范围、周邻用地的直接关联范围和该城市规划图按规定应包含的规划内容的范围。
三、比例和比例尺
比例:图纸上单位长度与地形实际单位长度的比例关系。比例尺:图纸上一条线段的长度与地面相应线段的实际长度之比。上图中均有表示,不再赘述。
四、图例
城市规划图均应标绘有图例。图例由图形(线条或色块)与文字组成,文字是对图形的注释。城市规划用地(用地图例应能表示地块的使用性质)图例,单色图例应使用线条、图形和文字;多色图例应用色块、图形和文字,以上两图均为多色图例。
启动总是报错:
2020-08-21T04:52:36.332502Z 10 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_applier' executed'. Previous state master_host='', master_port= 3306, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='', master_port= 0, master_log_file='', master_log_pos= 4, master_bind=''.
2020-08-21T04:52:36.425811Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error connecting to the local group communication engine instance.'
2020-08-21T04:52:37.468858Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 33081'
金九银十又是找工作的好季节啊,最近不少数据蛙数据分析社群同学,问到一些面试数据分析时的SQL题目,所以就结合大家的面试题目以及工作场景给大家总结了一些经典题目。同时也特别感谢001号同学和002号同学的帮忙整理
面试题目一
1.题目如下
2.下面开始建表、插入数据
create table datafrog_test1
(userid varchar(20),
changjing varchar(20),
inttime varchar(20)
);
insert into datafrog_test1 values
(1,1001,1400),
(2,1002,1401),
(1,1002,1402),
(1,1001,1402),
(2,1003,1403),
(2,1004,1404),
(3,1003,1400)
(4,1004,1402),
(4,1003,1403),
(4,1001,1403),
(4,1002,1404)
(5,1002,1402),
(5,1002,1403),
(5,1001,1404),
(5,1003,1405);
3.解答思路:排序及concat连接
select concat(t.userid,'-',group_concat(t.changjing separator'-')) as result
from(
select userid,changjing,inttime,
if(@tmp=userid,@rank:=@rank+1,@rank:=1) as new_rank,
@tmp:=userid as tmp
from (select userid,changjing, min(inttime) inttime from datafrog_test1 group by userid,changjing)temp
order by userid,inttime
)t
where t.new_rank<=2
group by t.userid;
4.输出结果:
5.注意:
万 圣 节 狂 欢 横向双色进度条
先看效果图
小程序自带的进度条不能满足我们想要的效果,所以这里我们决定用view叠加的方式进行动画增长和展示
编写布局
style="margin-bottom:{{index == arrProgress.length-1 ? 46 : 0}}rpx;">
{{item.name}}
= 100}}">
定义样式
page{
background-color: #f5f5f5;
}
.v_white_border{
margin-top: 200rpx;
width: 680rpx;
margin-left: 35rpx;
border-radius: 20rpx;
background-color: #ffffff;
display: flex;
flex-direction: column;
}
.normal-progress {
position: relative;
height: 95rpx;
width: 600rpx;
margin-left: 33rpx;
}
.normal-progress-name{
height:65rpx;
width: 150rpx;
margin-top: 10rpx;
line-height:65rpx;
font-size:24rpx;
color:#070A0C;
}
.normal-double-progress {
width: 600rpx;
height: 20rpx;
background-color: #F5F5F5;
文章转载至:https://www.cnblogs.com/hhhshct/p/10276319.html 阿里云域名申请 域名申请比较简单,使用微信注册阿里云账号并登陆,点击产品,选择域名注册
输入你想注册的域名
进入域名购买页面,搜索可用的后缀及价格,越热门的后缀(.com,.cn)越贵一般,并且很可能已经被注册。
最后,付款购买即可。
申请ssl证书 还是进入首页,点击产品按钮,在下拉菜单中选择ssl证书,进入后点立即购买,在下图中做如下选择
ssl证书是要与域名绑定的,按要求填好域名和邮箱,密码可以不填
填写好,选择下一步,然后选择手动dns,提交,然后查看证书详情,如果域名列表有填写的域名,并且域名解析是腾讯云,那么会出现自动DNS验证。
进入域名解析页面,找到你刚创建的域名,点击解析,添加上面的记录
稍等1分钟,审核就会通过,然后就可以下载ssl证书,加压后有对应nginx、tomcat、apache等的证书,我们配置springboot,所以选择tomcat。
springboot配置https 新建一个springboot项目,加入web模块,将我们的证书copy到resrouce目录下,同时在application.yml中添加如下配置。
server: port: 443 ssl: enabled: true key-store-password: zhanjian1514 key-store: classpath:zhanjianmxcz.cn.jks key-store-type: JKS condition: http2https: true http: port: 80 修改启动器,使其支持将http请求自动转化为https请求
package io.powerx; import org.apache.catalina.Context; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class TestsslApplication { @RequestMapping(value = "/test") public String test() { return "
参考文档
NAS 层 华为,中兴网上有很多文档写的很好。
整个核心技术还是RF射频,以及L1,L2层算法。
https://www.txrjy.com/thread-1134676-1-1.html
https://blog.csdn.net/twjy1314/article/details/68065029
https://blog.csdn.net/xiashaohua/article/details/40828969?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf
https://blog.csdn.net/macrohasdefined/article/details/19974069?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.edu_weight
https://blog.csdn.net/zhangchangfeng1/article/details/100011608?utm_medium=distribute.pc_relevant.none-task-blog-title-11&spm=1001.2101.3001.4242
https://blog.csdn.net/perimeter/article/details/44836199?utm_medium=distribute.pc_relevant.none-task-blog-title-14&spm=1001.2101.3001.4242
https://blog.csdn.net/u011212816/article/details/81901356?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.edu_weight
https://blog.csdn.net/zhangchangfeng1/article/details/100011136?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242
https://blog.csdn.net/qq_27540925/article/details/79459111?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
https://download.csdn.net/download/qq_27540925/10271778
https://blog.csdn.net/qq_27540925/article/details/79467754
https://blog.csdn.net/u011263761/article/details/79896301?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
https://blog.csdn.net/keyanting_2018/article/details/88423362?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242
https://blog.csdn.net/qq_43631743/article/details/106420674?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-8.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-8.nonecase
https://zhuanlan.zhihu.com/p/62245921
https://www.cnblogs.com/zxc2man/p/7778058.html
http://sigquit.wordpress.com/2012/08/20/an-introduction-to-libqmi/ http://www.lanedo.com/users/amorgado/talks/FOSDEM2013%20-%20Mobile%20broadband%20modem%20control%20protocols.pdf http://blogs.gnome.org/dcbw/2010/04/15/mobile-broadband-and-qualcomm-proprietary-protocols/
https://blog.csdn.net/zhangpengzhen1990/article/details/107432403
https://www.csdn.net/gather_22/MtTagg1sNTIzMDgtYmxvZwO0O0OO0O0O.html
https://wenku.baidu.com/view/86911e291cb91a37f111f18583d049649a660e49.html
https://wenku.baidu.com/view/a54c242e6edb6f1aff001fbf.html
https://max.book118.com/html/2019/0603/8057002073002026.shtm
http://www.mamicode.com/info-detail-478669.html
https://wenku.baidu.com/view/678adb3e05a1b0717fd5360cba1aa81145318f76.html
https://blog.csdn.net/perimeter/article/details/44836199?locationNum=3
https://wenku.baidu.com/view/ab36e7788c9951e79b89680203d8ce2f00666505.html
https://blog.csdn.net/u011212816/article/details/97394498
https://www.csdn.net/gather_21/MtjaIg4sNTgwMTEtYmxvZwO0O0OO0O0O.html
https://blog.csdn.net/u011212816/article/details/81069710
https://blog.csdn.net/qq_36562473/article/details/78535222?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-5-78535222.nonecase&utm_term=nas%E5%B1%82%20qxdm&spm=1000.2123.3001.4430
https://blog.csdn.net/u011263761/article/details/79896301?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-8-79896301.nonecase&utm_term=nas%E5%B1%82%20qxdm&spm=1000.2123.3001.4430
https://blog.csdn.net/zhangchangfeng1/article/details/100011136?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-9-100011136.nonecase&utm_term=nas%E5%B1%82%20qxdm&spm=1000.2123.3001.4430
https://blog.csdn.net/keyanting_2018/article/details/88407069?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
https://blog.csdn.net/qq_30943197/article/details/81434284?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-10&spm=1001.2101.3001.4242
https://zhuanlan.zhihu.com/p/62245921
http://bbs.16rd.com/thread-17115-1-1.html
https://www.baidu.com/link?url=X5uVJJTgutaV7QkvduU_mkKs5HnVp62Z2YZPJuz9MVQCisrWLnUFAMaIAGdi2ApNfQ56HQYuIPh-d-s-ODsNo_&wd=&eqid=cc03e06e000342aa000000025f8f969f
https://blog.csdn.net/zhangbijun1230/article/details/79951752
目录
MM/GMM 模块 UMTS 开机流程 Cell Selection S准则 从切比雪夫不等式看驻网时间 一 MM(Mobility Management)|GMM(GPRS Mobility Management)
1.1 架构
1.2 MM 模块主要作用
TMSI 重配 |Authentication|Identification|IMSI detach|Abort| MM 消息|Location update
参考论文:《HybridSN: Exploring 3-D–2-DCNN Feature Hierarchy for Hyperspectral Image Classification》
高光谱图像是立体数据,也有光谱维数,仅凭2-D-CNN无法从光谱维度中提取出具有良好鉴别能力的feature maps,3-D-CNN在计算上更加复杂,对于在许多光谱带上具有相似纹理的类来说,单独使用也不会有很好的效果,混合CNN模型克服了之前模型的缺点,将3-D-CNN和2-D-CNN层组合到该模型中,充分利用光谱和空间特征图,以达到最大可能的精度。
2D卷积和3D卷积的区别:
对一个图像进行2D卷积将输出一个图像,施加在多个图像上的2D卷积(将它们视为不同的通道)也输出一个图像,因此,2D 卷积在每次卷积运算之后会丢失输入信号的时间信息。3D卷积核可以输出一个3维的卷积结果,因此3D卷积可以保留时空特征。
本文代码在Colab上运行
1.准备 !wget http://www.ehu.eus/ccwintco/uploads/6/67/Indian_pines_corrected.mat !wget http://www.ehu.eus/ccwintco/uploads/c/c4/Indian_pines_gt.mat !pip install spectral import numpy as np import matplotlib.pyplot as plt import scipy.io as sio from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix,accuracy_score,classification_report,cohen_kappa_score import spectral import torch import torchvision import torch.nn as nn import torch.nn.functional as F import torch.optim as optim 2.网络结构 三维卷积部分:
conv1:(1, 30, 25, 25), 8个 7x3x3 的卷积核 ==>(8, 24, 23, 23)
本文主要测试Kafka集群中Broker节点故障对客户端的影响。
集群信息:4个broker、topic:100+(每个topic30个partition)、集群加密方式:plaintext、存储:ceph;
Producer:单线程,每秒50条左右;
Consumer:不间断poll消息;
测试客户端:原生的KafkaConsumer/KafkaProducer;
测试场景:Producer和Consumer运行过程中,通过K8S dashboard删除集群Pod;
在程序运行过程中,杀掉Pod,Consumer和Producer可能会出现以下异常,汇总如下:
Consumer异常信息汇总:(主要是消费者协调器异常、offset提交失败以及连接失败等信息)
[Consumer clientId=consumer-zhurunhua-test-ssl-1, groupId=zhurunhua-test-ssl] Error sending fetch request (sessionId=855212619, epoch=419) to node 3: org.apache.kafka.common.errors.DisconnectException: null =========================================== [34m2020-12-15 11:04:33.017[0;39m [Consumer clientId=consumer-zhurunhua-test-1-1, groupId=zhurunhua-test-1] Discovered group coordinator kafka-reksgten-0.kafka-reksgten-headless.kafka.svc.xke.test.xdf.cn:29092 (id: 2147483647 rack: null) [31m2020-12-15 11:04:33.023[0;39m [Consumer clientId=consumer-zhurunhua-test-1-1, groupId=zhurunhua-test-1] Error connecting to node kafka-reksgten-0.kafka-reksgten-headless.kafka.svc.xke.test.xdf.cn:29092 (id: 2147483647 rack: null) java.net.UnknownHostException: kafka-reksgten-0.kafka-reksgten-headless.kafka.svc.xke.test.xdf.cn: nodename nor servname provided, or not known =========================================== 2020-12-03 17:41:28.212 ERROR 33340 --- [read | test-tsl] o.
CMS收集器和G1收集器的区别:
CMS收集器只能充当老年代的收集器.
G1收集器收可以充当新生代和老年代的收集器.
CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片
G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。
CMS导致给大对象分配内存时因内存碎片过多而导致fullgc.增加了fullgc频繁次数.
G1可以充分利用多核cpu的硬件优势,使用多核cpu来缩短STW的停顿时间.
总结:G1支持新生代和老年代,利用多核cpu优势,缩短STW停顿时间,整理内存碎片,减少fullgc频繁次数.对内存友好,对cpu不太好友.
对cpu友好,对内存不太友好.
文章目录 CentOS01的安装和配置下载CentOS 7.2镜像 系统安装创建新的虚拟机安装操作系统 环境配置给予 Hadoop用户 root 权限关闭防火墙配置Vmware虚拟网络编辑器的NAT设置给centos01设置固定IP本地 ping 地址 测试修改主机名创建资源目录/opt/modules/、/opt/software/ Java环境配置卸载系统自带的JDK,后查询不到jdk相关文件上传jdk到虚拟机文件目录下将jdk安装包解压到/opt/modules/下配置环境变量检查是否安装成功 由CentOS01克隆出CentOS02、CentOS03,并配置相关环境克隆虚拟机CentOS02,CentOS03配置主机名修改IP配置主机ip映射IP映射测试集群配置无秘钥登录创建密钥发送密钥 Hadoop环境配置上传Hadoop 安装包将hadoop安装包解压到/opt/modules/下配置系统环境变量(centos01)Hadoop添加jdk环境变量配置HDFS配置yarn复制hadoop安装文件到其他节点格式化namenode启动Hadoop 环境测试hdfs命令测试Live Nodes 访问测试(测试mapreduce): Hadoop 命令一些环境配置的建议...按步骤来搭建要学会看log日志文件。要理解整个搭建过程和Hadoop体系权限管理很重要。 资源下载 环境
VMware Workstation Pro 12.0
MobaXtrerm(看自己需要)
需要的安装包
CentOS 7.2 iso镜像
jdk 1.8.0 for Linux
hadoop 2.8.5 for Linux
CentOS01的安装和配置 下载CentOS 7.2镜像 将所需要的镜像文件下载到电脑中
系统安装 创建新的虚拟机 给虚拟机命名为centos01
安装操作系统 安装GNOME桌面
不要忘记创建hadoop用户,并赋给它管理员权限。
环境配置 给予 Hadoop用户 root 权限 打开文件
su vi /etc/profile 添加后,令它立即生效
source /etc/profile 关闭防火墙 配置Vmware虚拟网络编辑器的NAT设置 给centos01设置固定IP 本地 ping 地址 测试 修改主机名 查看主机名
CLASS torch.nn.CrossEntropyLoss(weight: Optional[torch.Tensor] = None, size_average=None, ignore_index: int = -100, reduce=None, reduction: str = 'mean') 这个评价损失将 nn.LogSoftmax() 和 nn.NLLLoss() 结合在一个类中。
在训练带有C类的分类问题时很有用(这里指的是多类别单分类问题)。 如果提供,则可选参数weight应为一维张量,为每个类分配权重。 当您的训练集不平衡时,这特别有用。
input预期将包含每个类的原始未标准化分数。(即网络的输出概率值)
input 必须为张量,其大小为(通常指的是单类别预测)或(通常指的是多维单类别预测,即图像像素级单类别预测),K≥1对于K维情况(后述)。
该评价损失期望类别索引范围为,作为大小为minibatch的一维张量target的每个值(指的是target中的每个值都是0-C-1的整数值)。 如果指定了ignore_index,则此评价损失也接受该类索引(此索引可能不一定在类范围内)。
损失可以描述为:
或在指定weight参数的情况下:
损失是对每个minibatch的观察结果的平均值。 如果指定了weight参数,则这是一个加权平均值:
还可用于更高维度的输入,例如2D图像,提供一个大小为,K≥1的input,其中K是维度数,target具有适当形状(请参见下文)。
Parameters
weight (Tensor, 可选) – 给定每个类手动调整缩放权重。 如果给定,则必须是大小为C维的张量. a manual rescaling weight given to each class. If given, has to be a Tensor of size C
size_average (bool, 可选) – 弃用(见 reduction). 默认情况下,损失是batch中每个损失元素的平均值。 请注意,对于某些损失,每个样本有多个元素。如果将size_average 字段设置为False,则损失不是每个minibatch的总和。 当reduce为False时被忽略。默认值: True. By default, the losses are averaged over each loss element in the batch.
原因: HTML 页面中 回车导致的空格占位符
原 HTML code
<canvas id="canvas1" wdith="512" height="512"></canvas> <canvas id="canvas2" wdith="512" height="512"></canvas> 修改后 HTML code
<!-- 利用html注释符占位 --> <canvas id="canvas1" wdith="512" height="512"></canvas><!-- --><canvas id="canvas2" wdith="512" height="512"></canvas> 或 使用
<!-- 不实用回车符号, 直接在一行写两个canvas --> <canvas id="canvas1" wdith="512" height="512"></canvas><canvas id="canvas2" wdith="512" height="512"></canvas> 或 使用
/* css 文件下 利用浮动 */ canvas { float: left; }
Python Just get Response Headers, not get content.
1. Use HEAD method
>>> import requests
>>> res = requests.head("http://www.baidu.com/")
>>> req.head("https://www.baidu.com/").headers
{'Content-Encoding': 'gzip', 'Server': 'bfe/1.0.8.18', 'Last-Modified': 'Mon, 13 Jun 2016 02:50:08 GMT', 'Connection': 'Keep-Alive', 'Pragma': 'no-cache', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Date': 'Fri, 13 Oct 2017 04:36:20 GMT', 'Content-Type': 'text/html'}
>>> res.ok
True
>>> res.content
''
# 但是会遇到一些问题, 比如, 服务器不支持 HEAD, 或者拒绝 HEAD.
# 如下情况就被拒绝
#
>>> res = req.
#include <unistd.h> #include <time.h> #include <sys/time.h> int rand_8(char *str) { char pool[] = {'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; int i = 0; struct timeval tpstart; gettimeofday(&tpstart,NULL); srand(tpstart.tv_usec); while(i != 8){ str[i++] = pool[rand()%sizeof(pool)]; } return 1; } 参考:
linux中c语言精确计时函数的使用_兵临城下-CSDN博客
一般人们在办公签发文件时都会用到A4纸,打印再签发,但现在越来越提倡环保节约。无纸化办公随之兴起。很多公司都会配备或者要求配备可以手写的平板或者电脑。但这无疑又增加了成本。今天就较大家一个实用的方法,通过普通的手机不用手写笔也可以实现无纸化办公,保持墨迹书写、签名、签文件。
首先说一下无纸化办公保持原笔迹的好处:
节约纸张,不仅节省开支还更加环保。一份文件可复制成多份。可设置权限多人签发。笔迹是唯一的,亲笔签名防止代签。办公更加高效。 下面进入正题——普通手机如何保持原笔迹墨迹书写:
这里需要用到的是:安卓手机一部、手机软件WPS OFFICE最新版
先看看效果:
一般我们收到的文件是在微信或者QQ里的,我们可以通过手机端的WPS OFFICE来打开,如果默认不是可以在文件的右上角有三个。。。点开通过其他应用选择WPS来打开。 其他应用打开
选择WPS
打开后是这样的,点击左上角的编辑按钮,我们是通过一个叫做画笔的工具来实现的,画笔工具隐藏在后面。
向左滑动菜单调出右边的画笔工具
选择画笔工具,底部还可以选择画笔大小和颜色。
现在还不能用手写,点击使用手指按钮,就可以使用手指来墨迹书写了,这样写出来的紫就是自己的笔迹了。
效果是下面这样的。如果不要墨迹书写,就可以停用笔迹,可以调出键盘手写。
注:此方法适用于安卓手机,苹果手机未测试。适用于WPS OFFICE ,WPS PPT,表格里不适用。
一、问题 git提交报错:error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
二、原因 http2本身的bug
三、解决 1、方法一:直接换掉Git的http版本
git config --global http.version HTTP/1.1 2、方法二:更改Git的http克隆为ssh,使用ssh进行提交和拉取代码
系列文章 Git专栏 Git使用(一):安装与配置
Git使用(二):创建项目并提交到远程仓库
Git使用(三):分支管理,创建分支、合并分支、合并分支的某一次提交等
Git使用(四):提交管理,修改提交信息、合并多次提交、版本回退、撤销本地文件修改等
Git使用(五):解决冲突以及如何避免冲突
SmartGit 安装及使用(一):安装及配置
SmartGit 安装及使用(二):工作界面介绍、提交代码以及防止代码冲突等操作
SmartGit 安装及使用(三):修改提交记录、合并多次提交、撤销本地文件修改、版本回退等操作
SmartGit 安装及使用(四):创建、合并分支、合并某一次提交以及解决冲突等操作
SmartGit 安装及使用(附录):注册非商业许可证
【Git】如何生成SSH key
【Git】.gitignore文件语法以及修改后无效的解决办法
【Git】Authentication failed for 错误解决
【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法
【Git】error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR
1. 场景再现 当 a 标签中添加了 download 属性,想要实现下载图片时:点击 a 链接,没有进行下载,而是在 当前页面 打开了图片 2. 原因 <a> 有 download 属性,可以实现下载 同源文件( ip 和 端口 相同)当图片 不同源 时,点击下载,会在当前窗口直接打开图片,而不是进入下载状态 3. 解决方案(两种) 3.1 使用 target 属性,打开新页面进行下载 这样可以维持当前页面状态,用户需要在新页面中保存图片 3.2 写一个点击事件,通过 canvas 方式 保存图片 <script> /** * 下载图片 * @param {string} imgsrc 图片地址 */ downloadIamge(imgsrc) { // 新建图片对象 let image = new Image(); // 解决跨域 Canvas 污染问题 image.setAttribute("crossOrigin", "anonymous"); // 图片加载 image.onload = function() { // 新建 canvas标签 let canvas = document.
作者:Mohit Sharma 翻译:王闯(Chuck) 校对:王可汗
本文约4100字,建议阅读10+分钟
本文介绍了用Python进行时间序列分解的不同方法,以及如何在Python中进行时间序列预测的一些基本方法和示例。 预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃。时间序列预测的需求不仅存在于各类业务场景当中,而且通常需要对未来几年甚至几分钟之后的时间序列进行预测。如果你正要着手进行时间序列预测,那么本文将带你快速掌握一些必不可少的概念。
目录
什么是时间序列?
如何在Python中绘制时间序列数据?
时间序列的要素是什么?
如何分解时间序列?
经典分解法
如何获得季节性调整值?
STL分解法
时间序列预测的基本方法:
Python中的简单移动平均(SMA)
为什么使用简单移动平均?
Python中的加权移动平均(WMA)
Python中的指数移动平均(EMA)
什么是时间序列? 顾名思义,时间序列是按照固定时间间隔记录的数据集。换句话说,以时间为索引的一组数据是一个时间序列。请注意,此处的固定时间间隔(例如每小时,每天,每周,每月,每季度)是至关重要的,意味着时间单位不应改变。别把它与序列中的缺失值混为一谈。我们有相应的方法来填充时间序列中的缺失值。
在开始使用时间序列数据预测未来值之前,思考一下我们需要提前多久给出预测是尤其重要的。你是否应该提前一天,一周,六个月或十年来预测(我们用“界限”来表述这个技术术语)?需要进行预测的频率是什么?在开始预测未来值的详细工作之前,与将要使用你的预测结果的人谈一谈也不失为一个好主意。
如何在PYTHON中绘制时间序列数据? 可视化时间序列数据是数据科学家了解数据模式,时变性,异常值,离群值以及查看不同变量之间的关系所要做的第一件事。从绘图查看中获得的分析和见解不仅将有助于建立更好的预测,而且还将引导我们找到最合适的建模方法。这里我们将首先绘制折线图。折线图也许是时间序列数据可视化最通用的工具。
这里我们用到的是AirPassengers数据集。该数据集是从1949年到1960年之间的每月航空旅客人数的集合。下面是一个示例数据,以便你对数据信息有个大概了解。
#Reading Time Series Data Airpassenger = pd.read_csv("AirPassengers.csv") Airpassenger.head(3) 现在,我们使用折线图绘制数据。在下面的示例中,我们使用set_index()将date列转换为索引。这样就会自动在x轴上显示时间。接下来,我们使用rcParams设置图形大小,最后使用plot()函数绘制图表。
Airpassenger = Airpassenger.set_index('date') pyplot.rcParams["figure.figsize"] = (12,6) Airpassenger.plot() pyplot.show() 航空旅客人数
1949-1960年间,乘飞机旅行的乘客人数稳定增长。规律性间隔的峰值表明增长似乎在有规律的时间间隔内重复。
让我们看看每个季度的趋势是怎样的。为了便于理解,从不同的维度观察信息是个好主意。为此,我们需要使用Python中的datetime包从date变量中得出季度和年份。在进行绘图之前,我们将连接年份和季度信息,以了解旅客数量在季节维度上如何变化。
from datetime import datetime # Airpassenger["date"] = Airpassenger["date"].apply(lambda x: datetime.strptime(x, "%d-%m-%Y")) Airpassenger["year"] = Airpassenger["date"].apply(lambda x: x.year) Airpassenger["qtr"] = Airpassenger["date"].apply(lambda x: x.quarter) Airpassenger["yearQtr"]=Airpassenger['year'].astype(str)+'_'+Airpassenger['qtr'].astype(str) airPassengerByQtr=Airpassenger[["passengerCount", "
本文介绍三种常见的python做线性规划的工具包:scipy、pulp、cvxpy,后面2个包也支持整数规划(Integer Program)、01规划(Binary Program)还是混合整数线性规划(MILP)。
一、scipy做线性规划 1、scipy简单介绍 scipy库是个功能很强大的包,可以通过调用optimize.linprog函数解决简单的线性规划:
scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None,
bounds=None, method=‘simplex’, callback=None, options=None)
c指的应该是要求最大值的函数的系数数组,A_ub是应该是不等式未知量的系数矩阵,【注意:来这不等式指的是<=的不等式,那如果是>=,就需要乘个负号】。A_eq就是其中等式的未知量系数矩阵了。B_ub就是不等式的右边了,B_eq就是等式右边了。bounds的话,指的就是每个未知量的范围了。
2、案例 题目:
代码示例:
from scipy import optimize as op import numpy as np c=np.array([2,3,-5]) A_ub=np.array([[-2,5,-1],[1,3,1]])#注意是-2,5,-1 B_ub=np.array([-10,12]) A_eq=np.array([[1,1,1]]) B_eq=np.array([7]) # 上限7是根据约束条件1和4得出的 x1=(0,7) x2=(0,7) x3=(0,7) res=op.linprog(-c,A_ub,B_ub,A_eq,B_eq,bounds=(x1,x2,x3)) print(res) 结果:
二、pulp工具包 1、pulp简单介绍 Python的scipy库中提供了解简单线性或非线性规划问题,但是不能求解如背包问题的0-1规划问题,或整数规划问题,混合整数规划问题,pulp库可以求解以上类型的问题,并且有更多的通用性,编写程序更自由。
官方有很多案例和教程:
https://coin-or.github.io/pulp/CaseStudies/a_transportation_problem.html#presentation-of-solution-and-analysis
2、案例 pulp官方教程和网上可参看案例比较多,个人推荐下面一篇文章
https://www.jianshu.com/p/9be417cbfebb
里面还有运输问题,指派问题的案例。
三、cvxpy工具包 1、cvxpy简单介绍 CVXPY是一种可以内置于Python中的模型编程语言,解决凸优化问题(整数规划、01规划和混合规划)。它可以自动转化问题为标准形式,调用解法器,解包结果集。cvxpy包相对前面2种算是最专业了,功能也更强大。从安装难度和官方教程就可以看出来。
我前面一篇文章介绍了cvxpy的安装。
2、案例 复杂一些的问题,建议参考教程案例里面有大量很复杂的问题案例。我自己使用直接用的是上千变量的外部数据,不适合入门介绍,就不分享了。简单的入门可以参考如下2篇文章:
https://blog.csdn.net/GeekWill/article/details/78836054
使用Python中的cvxpy库解整数规划问题
c编译器用DEV-C++,
python(sys.version):'2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]'
先新建DEV-C++工程后,设置工程属性:
连接参数如下:
-IC:\Python27\include
-LC:\Python27\libs
-lpython27
test.py的代码:
print 'Go into the test.py!'
words = raw_input('What do you want to say? ')
print 'you said:'+words
main.c的代码
#include "python.h"
#include int main(int argc, char *argv[])
{
char *szPythonFileName="test.py";
Py_Initialize();
PyRun_SimpleString("print( 'PyRun_SimpleString ' )" );
PyObject *pyfile = PyFile_FromString(szPythonFileName,"r");
if(pyfile==NULL)
{
return 1;
}
FILE *f = PyFile_AsFile(pyfile);
if(f==NULL)
{
return 1;
目录:
1.引入
2.W3C事件模型
3.特例
4.事件委托
1.引入 <div class="grandFather"> <div class="Father"> <div class="Son"> Hello </div> </div> </div> 结构:.grandFather + .Father + .Son
给三个div分别添加事件监听fn_one,fn_two,fn_three
问题1: 点击Hello,算不算点击了儿子?
点击Hello,算不算点击了爸爸?
点击Hello,算不算点击了爷爷?
回答:都算
问题2: 点击Hello,最先调用fn_one,fn_two,fn_three中的哪个?
回答:都行
由此W3C发布标准
2.W3C事件模型 1.概念
事件捕获:从外向内找监听函数
事件冒泡:从内向外找监听函数
2.结论: 先捕获(爸爸到儿子),再冒泡(儿子到爸爸)
3.事件绑定API,开发者自己选择把监听函数放在捕获,或者冒泡阶段
blabla.addEventListener('click',fn,bool) //1.如果bool不传,或者为falsy,就让fn走冒泡, //也就是,当浏览器在冒泡阶段发现blabla有fn监听函数,就调用fn,并提供事件信息 //2.如果bool为true,就让fn走捕获 //也就是,当浏览器在捕获阶段发现blabla有fn监听函数,就调用fn,并提供事件信息 3.特例 问题:
1.只有一个div被监听
2.fn分别在捕获和冒泡阶段,都监听click事件
3.e.target 等于 e.currentTarget,即用户点击元素与开发者监听元素是同一个
此时,有如下代码,
div.addEventListener('click',f1) div.addEventListener('click',f2,true) 请问,f1和f2哪个先执行?如果把这两行调换位置,哪个先执行?
答案:谁先监听,谁先执行
4.事件委托 场景一:如何给100按钮添加点击事件?
回答:监听这100按钮的祖先,在冒泡的时候判断target是不是这100按钮中的一个
div1.addEventdiv1.addEventListener('click',(e)=>{ const t = e.target if(t.tagName.toLowerCase() === 'button'){ console.log("button被点击") } }) 场景二:如何监听一个目前不存在的元素的点击事件?
canal官方github
超详细的Canal入门,看这篇就够了!
阿里开源Canal–①简介
centos7用tar包安装mysql
WINDOWS下MYSQL开启BINLOG
一.简介 canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
基于日志增量订阅和消费包括
数据库镜像数据库实时备份索引构建和实时维护业务 cache 刷新带业务逻辑的增量数据处理 二.工作原理 MySQL 主备复制原理
MySQL master 将数据变更写入二进制日志(binary log,其中记录叫做二进制日志事件 binary log events,可以通过 show binlog events 进行查看)MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)MySQL slave 重放 relay log 中的事件,将数据变更反映它自己的数据 canal 工作原理
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave,向 MySQL master 发送 dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal)canal 解析 binary log 对象(原始为 byte 流) 三.
1.正确表达式
"^\\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\\d+$" //整数
"^\\d+(\\.\\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\\d+)(\\.\\d+)?$" //浮点数
2、使用方法
var r = /^\+?[1-9][0-9]*$/; //正整数
String str = "123";
boolean flag=r.test(str);
如果判断为正整数,则flag为true
3、JS整数相加
首先保证输入的都是数字
nText1=parseFloat(document.all.text1.value);
nText2=parseFloat(document.all.text2.value);
nSum=nText1+nText2
4.总结
Require : /.+/,
Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
Currency : /^\d+(\.\d+)?$/,
大家好我是喵哥,现在外出开车不可避免的都会使用导航,而比较主流的无非就是高德和百度,所以今天喵哥就跟大家对比一下百度和高德这两款导航它们之间的优势和劣势,首先喵哥以广州火车站为终点,然后两个地图同时规划路线,推荐路线都是以距离最短为首页推荐,高德推荐的是走京港澳高速,然后走乐广百度也是一样,时间高德八个多小时多一点百度不足八个小时,但是路费这个地方高德是323块钱,而百度只有298块钱,根据喵哥平时开这条路的经验高德的过路费计算应该会更准确一点。
同时我们再看到有一个备选路线,时间最短的一个备选路线推荐的是走许广,这条路线会比京港澳稍微长那么一点,但是它的路况会好一些,尤其是货车比较少,而过路费其实高德规划的过路费便宜十块钱,百度的过路费是贵了那么两块钱,平时喵哥自己跑高速的话,一般会跑许广,因为许广开车会舒服点。
我们看完大城市路线再来看一下旅游景点,从喵哥的位置长沙规划到凤凰古城停车场,推荐的都是时间最少的,然后百度的时间总归是要少那么一点点,而且路线长度大家看到一个是433一个是438,这一次百度过路费好像要比高德多了十块钱,至于说其它的路线备选路线推荐上两个地图都是一样的,推荐的都是最近的时间,走长韶娄然后走娄怀,第三个方案是走长张和杭瑞。
再来看一下市里面,从喵哥现在的位置规划去长沙火车南站也就是高铁站的路线,高德这个地方居然推荐了一条刚刚修通的一条捷径,只有20公里,这条路线据喵哥所知修通的时间很短,从这点来看在地图的更新速度上高德可能确实会做的更快一点,同时在路况上对于路况的把握和预测基本上是一致的,但是高德在过桥前显示的是红色,而百度显示黄色,据喵哥平时上下班经过这地方的经验来看红色可能会更靠谱一点。
好了我们看完了导航规划之后,再看一下两个地图他们对于城区的记录详细程度,高德对于同一个小区同样的放大程度可以看到小区里面的栋数比较详尽,小区的内部道路也画的很详细,而百度在这一块就会弱一点,小区栋与栋之间的道路,包括一些回旋路都没有了,但是他有一个优点,对于商户的记录更详尽,从这里可以看出来百度做生意貌似比高德更厉害一点。
我们看完城区同样的我们再来看一下乡下,这个是喵哥很熟悉的一个农村,左边的高德地图对于农村的道路规划还是比较详尽了,包括农村后面山上的一些小路它都进行规划了,同时目前在河边上正在建的这条路确实是处于在建状态,最关键是高德地图这里有一条明显的小河,而百度地图没有,这作为地图是不应该出现的一些失误,同时对于村庄的位置的描述高德地图会更为准确,而百度地图更为大概,所以这一点从喵哥个人平时使用的情况来看,高德对于农村道路规划比百度会更为详尽一点。
我们再来看一下卫星地图,同样是找了一个学校校区的卫星地图对比来看,其实他们调用的是同一版卫星地图,但是高德把地图做的比较模糊,基本上看不到停车场的车,而百度的地图放大之后可以数清楚停车场上有几台车而且建筑物的轮廓明显,这点补充可以在关键时候帮上我们大忙。
最后一点就实景地图,百度花了很大的精力在实景地图上面,实时采集和更新了很多城区,包括一些乡村的一些实景地图,假如说在城里面要去个陌生的地方,喵哥一般会打开百度的实景地图看一下,提前预判提前了解,在这点上高德地图跟百度地图它是没有可比性的,高德功能压根就没有。
通过以上的对比大家可以发现对于路线的精准度方面,个人感觉可能高得会略占一筹,同时在路线的更新上面高德的速度会比百度更快,所以说要是去一些农村里或者偏远地方高德会比百度略微有优势,但是百度还有一个很大的优势就是实景地图,尤其是在城区的实景地图还是做得非常好用,同时在生活的方便性方面,比如说一些吃喝玩乐的信息方面,百度可能会更有优势,以上就是喵哥给大家做出的总结,希望喵哥的个人使用体验能够给大家一些参考建议。
C语言中数组首地址和数组第一个元素的地址关系如下:
1、它们的地址值是相等的。
2、第1个元素的地址如果是p,则p+1就是第2个元素的地址。
3、数组的首地址如果是p,则p+1就跳过这个数组而指向这个数组最后一个元素最后一个字节的下一字节。
参考:https://zhidao.baidu.com/question/581103677.html