1.简介 一般的vue项目都有一个初始index.html,而其他js、css都是这个html引入的,默认情况下使用绝对路径引入,如/js/app.js
这样就有一个问题,静态资源经常要部署在不同的上下文路径下,如nginx将vue静态资源部署在/static下
此时使用绝对路径访问不到index.html引入的js、css等,而相对路径是不变的
2.解决 vue.config.js
module.exports = { publicPath: '' } 配置publicPath即可,而这个的默认值是'/'
第一次在jupyter notebook执行深度学习的代码。报错:No module named 'd2lzh'
执行pip install d2lzh命令即可。
接着运行,又报错:
大同小异:执行pip install mxnet 命令即可、下载有点久、耐心等待。
不行、我发现等太久了……等了半个多小时、还read time out 网络不良的时候中断下载,我吐了、下了三四遍、
打算换一下方法下载:
用清华的镜像:(试了n多种方法之后终于找到一种成功的了)
输入命令:
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ lightgbm
然后报错:说我的numpy版本不对
我就升级一下numpy:pip install -U numpy
再安装一下:就没有报错了
终于安装好了mxnet!!在juypter notebook终于也不报错了!可喜可贺!
↓↓ ↓↓觉得有用给我点个赞吧!!!
ABAQUS提取截面节点集的输出结果 引言 ABAQUS提供了很多工具来实现对分析结果的可视化分析。也可以从分析结果数据库中把历史输出和场输出到处到excle或txt文件,进行更精细的分析。下面介绍一种方法,较方便从结果数据库中导出数据到txt文件,当然这只是其中的一种方法,肯定还有很多其他方法可以实现。
操作流程 大家都知道,ABAQUS需要在step中设置历史输出和场输出,这样才有可能输出你需要的数据,否则默认的输出结果不一定符合你的要求,这是要注意的。然后就是怎么把指定截面的节点结果输出到txt文件,方便继续分析。
创建节点集
首先,分析计算前,划分网格之后,需要创建需要导出数据节点集,例如下面的模型有两个部件,我要导出其中一个部件中部截面的节点的分析结果,那么在划分网格后,就需要创建一个包含中部截面上节点的节点集,如下图1所示。
图1 创建节点集
创建显示组
分析完成后,打开odb结果数据库,可以发现在output Databases里也有上面创建的节点集,如图2所示,那么接下来就是创建该节点集的作为一个显示组。步骤如图3所示,单击create display group按钮,弹出create display group对话框,如图3创建了一个包含中部截面节点的显示组,并保存为名字为DisplayGroup-2的显示组。后面导出数据将会用到。
图2 odb数据库中的节点集
图3 创建显示组
导出结果数据
如图所示,在tool菜单栏,选择Query,弹出Query对话框,然后单击Probe values,接着弹出另一个对话框probe valuse,进行如图的设置,导出后缀名为rpt的文本文件,可以用记事本打开。
图4 导出结果设置
导出效果
导出的rpt文件可以用记事本打开,前面包括了数据文件的一些说明文字,第一部分数据是主要是节点号、坐标等信息,如图5所示。往文件后面翻才会看到结果,我这里导出的是节点的mises应力,如图6所示。当然也可以导出其他各种场输出结果。可以把rpt文件的结果进行适当的整理,如去掉文件说明,重新排版一下数据,方便matlab等数据分析软件进行读取分析。
图5 文件前面部分数据
图6 文件后面部分的数据
1 String类
java.lang.String是字符串类型
1 字符串一旦创建将不可再改变,但可以重新指向
2 提升字符串的访问效率,在程序中使用“缓存”技术,所以在java中所有用双引号括起来的字符串都会在“字符串常量池”中创建一份,字符串常量池在方法区中被存储
3 在程序执行过程中,如果用到某个字符串,那么程序会去常量池中搜索,如果没有就新建一个如果有的话就直接拿过来用
public demo { public static void main(String[] args) { String s1=new String("hello"); String s2=new String("hello"); } //以上代码有三个对象,方法区一个,堆中两个 } 使用String的时候应该注意的问题,尽量不要做字符串频繁的拼接操作,因为这样会在字符串常量池中创建大量的字符串对象,给垃圾回收带来问题
2关于字符串常用方法
1 构造方法
public class Stringdemo { public static void main(String[] args) { String s1="abc"; String s2=new String("abc"); byte[] bytes={97,98,99}; String s3=new String(bytes); String s4=new String(bytes,1,2); char[] c1={'我','是','中','国','人'}; String s5=new String(c1); String s6=new String(c1,2,2); } } 常用方法
public class Demo { public static void main(String[] args) { char c1="
一.基本使用 箭头函数:也是一种定义函数的方式
1.无参数,无返回值的箭头函数 const ccc = (参数列表) => { }
const ccc = () => { } 2.参数问题:
2.1 放入两个参数
const sum = (num1,num2) => { return num1 + num2 } 2.2 放入一个参数:当只有一个参数时,括号可以省略
const power = num => { return num * num } 3.返回值问题
3.1 函数中有多行代码
const aaa = () => { return console.log('hello world'); return console.log('hello vuejs'); } 3.2 函数中只有一行代码,可以省略return
const mul = (num1,num2) => num1 * num2 console.
一、简单介绍: Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。
二、优缺点 优点:
因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可 缺点:
需要记一些语法有些平台不支持Markdown编辑模式 三、常见语法 标题 在想要设置为标题的文字前面加#来表示,一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。例如:
# 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 注:标准语法一般在#后跟个空格再写文字
字体 加粗:要加粗的文字左右分别用两个*号包起来
斜体:要倾斜的文字左右分别用一个*号包起来
斜体加粗:要倾斜和加粗的文字左右分别用三个*号包起来
删除线:要加删除线的文字左右分别用两个~~号包起来
实例:
**这是加粗的文字** *这是倾斜的文字*` ***这是斜体加粗的文字*** ~~这是加删除线的文字~~ 引用 在引用的文字前加>即可。引用也可以嵌套,如加两个>>三个>>>
n个…
示例:
>引用内容 分割线 三个或者三个以上的 - 或者 * 都可以。一般***的分割线会比—分割线粗
示例:
--- ---- *** ***** 图片 ![图片alt](图片地址 ''图片title'') 图片alt就是显示在图片下面的文字,相当于对图片内容的解释。 图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加 示例:
[blockchain(https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1089874897,1268118658&fm=26&gp=0.jpg "区块链") 超链接 超链接名,title可加可不加
[百度](http://baidu.com) 列表 无序列表:无序列表用 - + * 任何一种都可以 - 列表内容 + 列表内容 * 列表内容 注意:- + * 跟内容之间都要有一个空格 有序列表:数字加点 1.
1,关系运算符
下表列出了所有Go语言的关系运算符。假定 A 值为 10,B 值为 20。
运算符 描述 实例
== 检查两个值是否相等,如果相等返回 True 否则返回 False。 (A == B) 为 False
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 (A != B) 为 True
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 (A > B) 为 False
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 (A < B) 为 True
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 (A >= B) 为 False
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 (A <= B) 为 True
MIC 文章目录 MIC前言MIC介绍MIC库Python实例MIC缺陷参考文章 前言 皮尔逊相关系数即我们通常说的(线性)相关系数,是用来反映两个变量线性相关程度的统计量,变化范围为-1到1。
系数的值为1意味着X和Y可以很好的由直线方程来进行描述,所有的数据点都很好的落在一条直线上,且随着X的增加而增加。系数的值为−1意味着所有的数据点都落在直线上,且随着X的增加而减少。系数的值为0意味着两个变量之间没有线性关系。 斯皮尔曼相关系数又称秩相关系数,是衡量两个变量的依赖性的非参数指标。它利用两变量的秩次大小作线性相关分析,对原始变量的分布不作要求,属于非参数统计方法,适用范围要广些。对于服从皮尔逊相关系数的数据也可以计算斯皮尔曼相关系数,但统计效能要低一些。
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
设两个随机变量 ( X , Y ) (X,Y) (X,Y)的联合分布为 p ( x , y ) p(x,y) p(x,y),边缘分布分别为 p ( x ) p(x) p(x)、 p ( y ) p(y) p(y),互信息 I ( X ; Y ) I(X;Y) I(X;Y) 是联合分布与边缘分布的相对熵。计算公式为: I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g 2 p ( x , y ) p ( x ) p ( y ) I(X;Y)=\sum_{x∈X}\sum_{y∈Y}p(x,y)log_2 \frac{p(x,y)}{p(x)p(y)} I(X;Y)=∑x∈X∑y∈Yp(x,y)log2p(x)p(y)p(x,y)
作者:何凯俊
github
不要冒然评价我,你只知道我的名字,却不知道我的故事,你只是听闻我做了什么,却不知我经历过什么。
俗话说得好,产品有三宝,弹窗浮层加引导。
上图截图自我司 App 晓黑板中的口算模块,相信每个 App 开发在工作中都碰到这种场景,为了避免用户对新功能产生困惑,会对一些功能加一些引导操作。在原生开发中,例如 Android 开发中,我们可以使用 NewbieGuide 等开源库来实现。但是很遗憾的是,在 Dart packages 中找了一圈,一无所获。
但是我们还是很快就解决了问题,既然解决不了问题,我们就要学会让这个问题不存在,这时候开发一宝就显得尤其有用了。 本文完,大家下期再见👋
~
~
~
开个玩笑。真的猛男,敢于直面惨淡的人生,也敢于正视淋漓的鲜血,这区区需求怎么能打倒我们。接下来我们开始琢磨一下这个引导操作要怎么实现,相信各位小伙伴接到这个需求第一个想到的就是,这玩意儿不就是在整个页面上面盖一个蒙层,然后把中间再抠一块出来。最后再加一些文字和一个下一步按钮就行了嘛。你要是把这个需求想得这么简单,那你可就真是大对特对了。所以我们就按前面说的三步来实现这个东西。当然,你如果不想接着往下看的话,可以直接点击这里使用我们开发完成的引导组件库来快速在你的 Flutter 项目中接入引导功能。
盖个蒙层 那么如何在 Flutter 页面上盖一个浮层呢?翻了一下 Flutter 的 API 文档,找到了两个法宝,分别是 Overlay 和 OverlayEntry。两者的使用方法如下。
class _MyWidgetState extends State<MyWidget> { OverlayEntry overlayEntry; @override Widget build(BuildContext context) { return Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ RaisedButton( onPressed: () { /// 1. 创建一个 overlayEntry 实例,builder 方法返回一个 Widget /// 该 Widget 会被渲染到页面顶层 overlayEntry = OverlayEntry( builder: (context) => Container( color: Colors.
一、实验环境
(针对我们的学习环境)
1、登陆地址
http://192.168.200.100:8081/cts/app/index 简写
192.168.200.100:8081/cts 二、交换机基本操作
1、基本介绍
交换机命令行主要有“用户模式”,“特权模式”,“全局模式”,“VLAN模式”,“接口模式”,“线程模式”
switch> "用户模式" switch# "特权模式" switch(config) "全局模式" switch(config-vlan) "VLAN模式" switch(config-if) "接口模式" switch(config-line) "线程模式" 2、基本查看命令
show version //查看交换机版本信息 show vlan //查看vlan show interface fastethernet 0/3 //查看第三个端口的状态 show mac-address-table //查看mac地址表 show running-config //查看交换机配置信息,信息存储在RAM show clock //查看系统时间 show ip interface brief //查看三层设备的ip和子网掩码 show interface f0/1 //查看接口信息mac地址 流量 show interface status //查看交换接口的信息,包括状态、vlan、双工、速度和使用介质 3、解决实际问题
(1)配置主机名
enable //进入特权模式 configure terminal //进入全局模式 hostname TonLX //把名字改成TonLX (2)配置系统时间
enable configure terminal clock set 18:07:43 10 20 2020 //把日期改成2020年10月20日 (3)设置每日登陆提示
文章目录 一、多项式系数二、多项式系数恒等式 一、多项式系数 下面 3 3 3 个数是等价的 :
① 多项式系数 ( n n 1 n 2 ⋯ n t ) \dbinom{n}{n_1 n_2 \cdots n_t} (n1n2⋯ntn)
② 多重集全排列数
③ 不同的球放到不同盒子中 , 不允许有空盒 , 每个盒子放指定个数的球 方案个数 ;
1 . 多项式系数
多项式定理中
( x 1 + x 2 + ⋯ + x t ) n \ \ \ \ (x_1 + x_2 + \cdots + x_t)^n (x1+x2+⋯+xt)n
= ∑ 满 足 n 1 + n 2 + ⋯ + n t = n 非 负 整 数 解 个 数 ( n n 1 n 2 ⋯ n t ) x 1 n 1 x 2 n 2 ⋯ x t n t = \sum\limits_{满足 n_1 + n_2 + \cdots + n_t = n 非负整数解个数}\dbinom{n}{n_1 n_2 \cdots n_t}x_1^{n_1}x_2^{n_2}\cdots x_t^{n_t} =满足n1+n2+⋯+nt=n非负整数解个数∑(n1n2⋯ntn)x1n1x2n2⋯xtnt
本人很少整理表格,整理表格的时候重新设置下拉值都需要想很久,所以这会记录下来,方便自己以后查找 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201021162908628.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaWRpX3l1YW4=,size_16,color_FFFFFF,t_70#pic_center) 1.选择要设置的表格,点击数据菜单,选择有效性选项 2.在来源输入框,输入下拉选项值:通过,不通过,取消 3.添加背景颜色或者文字颜色 最后效果如下
重启远程服务器重启的方法如下:
方法一:使用windows自带的shutdown命令,远程重启服务器
当远程桌面连接服务无法顺利使用后,首先要确定的是服务器是否真的死机。通过ping目标服务器IP看是否畅通或者访问该服务器上的相关网络服务看是否还能顺利应用,当然也可以通过UNC地址来判断其网络访问是否顺利。
当以上任何一个判断返回成功结果后,就可以使用下面的方法来远程重启服务器了。
接下来我们通过shutdown命令,在远程桌面不能顺利连接的情况下通过网络重启服务器。
具体操作是在命令提示窗口中执行“shutdown/m服务器IP地址/r”,这样服务器将自动重新启动。
在ping-t命令窗口中也将看到目的网络连接情况从畅通到requesettimedout,这说明目的服务器已经在进行重启操作。
方法二:使用第三方远程控制软件
重启服务器 不可否认服务器维护上 ,远程占远程服务器的维护占有越来越重要位置,而 此 时一般的第三方远程控制软件就可以轻松实现远程重启服务器。
此处介绍一款不错的远程控制软件,网络人远程控制免费办公版。 网络人远程控制免费办公版是一个用于远程控制、桌面共享和文件传输的软件。它简单且快速的解决远程管理电脑的问题,该软件只有0.97 MB,不少身边的朋友经常用这款小软件在家里给朋友、同事远程修复电脑,操作起来速度也很快,就如同操作自己的电脑一样。
另外该软件还提供了文件传输和在线聊天功能,非常实用,局域网文件传输速度达到10M/S。而远程控制电脑时可以直接实现电脑远程重启
方法三:硬件远程重启服务器
当然如果此时服务器卡住不能联网,那么用一般的远程桌面连接方式就不能实现。推荐可以使用网络人电脑远程开机卡。
远程开机卡是一款通过拨打电话实现唤醒远程电脑的启动设备。用户可随时随地通过对安装有控制器的电脑进行远程开机、关机操作。控制器分为固话版和手机版。
网络人电脑远程开机卡的原理很简单,是将电脑主机的电源线接出连到控制器上,通过对控制器的操作来实现对电脑电源开关的的操作。
网络人电脑远程开机卡是一款专门用于PC机远程唤醒的电脑外设,将其插在计算机的PCI 插槽上,不用软件配合,无须安装驱动,对系统无要求,只要打个电话,就能远程开启服务器。
远程开启服务器后,再用其他远程方式进行远程桌面连接,即可实现。ru
大数据概念 大数据不仅仅是大量的数据,而且是来自不同来源,存在不同类型,代表不同含义的海量数据。大数据应该动态变化,不断增加,而且能够通过研究分析发现规律产生价值。大数据可以帮助我们根据对历史情况的分析,发现事物的发展变化规律,可以有助于更好的提高生产效率,预防意外发生,促进营业销售,使我们的工作和生活变得更加高效轻松便利。我们利用已经收集的数据,建立各种数学模型,然后进行模拟运算,通过代入不同的数据,调整每次代入的数据点,计算可能产生的结果数据,并分析这种数据可能产生的影响
一张图了解大数据技术栈 大数据应用场景:
1、 psvm : ==》 生成 main 方法。
2、sout : ==》 System.out.println()。
变量输出:
“hello”.sout ==》 System.out.println("hello");
soutv ==》 System.out.println("变量名 = " + 变量);(最近的变量)
方法输出:
soutm ==》 System.out.println("当前类名.当前方法");
soutp ==》 System.out.println("方法形参名 = " + 形参名);
3、 fori ==》 for 循环
iter ==》 增强 for 循环
itar ==》 普通 for 循环
4 、list.for ==》 集合 list 的 for 循环
List<String> list = new ArrayList<String>();
输入: list.for 即可输出
for(String s:list){
}
又如:list.fori 或 list.
关于Ubuntu20.04下向日葵远程软件连接中断的解决方法 一、安装并登陆好Ubuntu的向日葵客户端后二、切换lightdm图形页面 一、安装并登陆好Ubuntu的向日葵客户端后 在终端下运行以下命令
sudo apt-get update sudo apt-get upgrade sudo apt-get install lightdm 在安装lightdm时选择lightdm
二、切换lightdm图形页面 sudo dpkg-reconfigure lightdm 切换完成后重启电脑,就可以使用向日葵远程了…
目录
matplotlib绘图的完善及美化
--0、导入基本库--
--1、完善标题--
--2、完善标签(图例标签设置)--
--3、轴标签说明设置--
--4、设置x与y轴的刻度范围--
--5、自定义每个刻度的显示标签--
--6、设置坐标轴的刻度间隔--
--7、网格设置--
--8、颜色,线型,点标记,透明度设置--
--9、添加注解--
--10、给图形上的坐标点添加注释--
--11、其他优化--
--12、图形样式的选择--
--13、绘制面板图、仪表板--
--14、案例--
matplotlib的绘图原理及流程详解,参考公众号上一文:matplotlib的绘图原理及流程详解
matplotlib绘图的完善及美化 --0、导入基本库-- import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as plt #最常用的绘图库 mpl.rcParams["font.family"]="SimHei" #使用支持的黑体中文字体mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负数 "-"plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签# mpl.rcParams["font.style"]="normal" #设置标签风格,normal 常规(默认)/italic 斜体/oblique 倾斜# mpl.rcParams["font.size"]=11 #font.size 字体的大小(默认10)# % matplotlib inline #jupyter中用于直接嵌入图表,不用plt.show()import warningswarnings.filterwarnings("ignore") #用于排除警告 #用于显示使用库的版本print("numpy_" + np.__version__)print("pandas_" + pd.__version__)print("matplotlib_"+ mpl.__version__) --1、完善标题-- 在每个axes绘图后都应该添加一个title,使每个axes都有一个标题
默认添加一个title
plt.title("TitleName")
当然可以通过局部设置美化我们的标题
参数说明:
family=['SimHei','STSong','STXihei','NSimSun','STXihei',...]#字体
styles=['normal','italic','oblique']#字体的风格["常规(默认)","斜体字","倾斜自"]
在去年结束的秋季招聘中,后台开发或者服务器开发的岗位需求一度火爆,甚至超过了算法的岗位。很多同学在诸神黄昏从算法岗战场退下来,转到了更偏向工程能力的后台开发岗,导致后台开发岗竞争大爆发。
后台开发工程师使用的主流编程语言是C++、Java、PHP、Golang,目前慢慢流行起来。本文将从C++的角度谈谈如何学习和准备后台开发的岗位。
第一,语言基础。
无论是C++开发还是Java开发,对于一个代码农民来说,最重要的是熟悉编程语言。同样,无论从事什么样的岗位,首先要做的就是掌握语言基础。
C++是一种深奥的编程语言,它既有继承自C语言的过程化编程思想,又包含了OOP的设计思想。强大而复杂。相对来说,学习C++的成本高,语言有很多漏洞。语言基础的学习路线如下:
1语法基础。
重点:(一定要熟悉底层机制原理)
指针和引用的概念。
指针与内存的关系。
程序编译过程。
static、const和#define的用法和区别。
C和C++的区别。
记忆模型。
内存中的堆栈和堆分配。
2面向对象基础。
(熟悉底层机制原理)
面向对象的理解。
析构函数。
构造函数。
复制构造。
多态性。
纯虚函数和虚函数。
虚拟函数的实现机制。
虚函数表。
访问限定符是公共的、私有的和受保护的。
传承原理,虚拟传承,钻石传承。
静态绑定和动态绑定。
新建/删除和malloc/免费。
重载、重写和隐藏。
高级语法。
(熟悉底层机制原理)
智能指针。
左值、右值引用和移动语义。
类型转换方法。
常见的设计模式。
线程安全的单一模式。
内存溢出和内存泄漏。
C++11新特性。
静态链接库和动态链接库。
4STL标准模板库。
(一定要分析源代码)
迭代器和空间配置器理解。
常见的容器特征,用法和底层实现的向量,列表,deque,set,map,unorderedmap。
5推荐书籍。
做后端开发需要学什么?标梵看到了一条小白的发展之路
C++Primer可以作为参考书。
effecteC++对c++编程标准有很深的理解。
《STL源代码分析》分析STL源代码底层,很有学习价值。
有精力的话还可以看《C++对象模型深度探索》和《更有效》C++
第二,算法和数据结构。
对于普通人来说,学习算法最重要的是形成基本的算法思维,知道如何从编程的角度优化高度重复的操作。掌握基本的算法思想,了解常用的数据结构是必不可少的。这方面的学习倾向于多看,多思考,多实践。
1常见算法类型。
(一定要手撕代码)
排序算法(冒泡、插入、选择、快速队列、希尔、堆队列、合并、桶队列、基数、计数)、字符串运算、数组运算、递归、回溯、分治、动态编程等。
如何准备算法可见历史文章?
输入BAT和字节跳动最难的等级,手撕代码!
2常见的数据结构。
(一定要熟悉底层原理和实现)
链表、栈、队列、树(二叉树、平衡二叉树、红黑树、B树、B+树、霍夫曼树、字典树)、跳转表、图。
推荐书籍。
大话数据结构适合入门学习。
“剑指献”必刷66题。
试试看《算法导论》,能啃出来的就是大神。
第三,计算机网络。
网络相关的东西不多,关键在于对常见网络协议簇的了解和理解,以及对一些基本设计和日常操作实现的分析。例如:
当你进入www.baidu.com时会发生什么。
|微信扫描登录会怎样。
1重点掌握知识点。
OSI七层模型。
大二的时候有幸了解到自考,作为非计算机专业的学生,通过自考可以系统全面地学习到计算机专业相关知识,并取得计算机专业本科毕业证和学位证。
从大二开始,陆陆续续已经经历了三次自考,共考过7科。上周末完成了第四次自考,考试科目为C++程序设计、数据结构导论和信息系统开发与管理。前两科专业性更强,而信息系统开发与管理偏向于管理方面。由于工作原因,准备考试比较匆忙,考前一周准备了一下数据结构和信管,C++没有来得及看。
在做C++题的时候,发现虽然对C++的语法不熟悉,但是基本的思想是和其他语言相通的,虽然C++语言和C#或者Java语言语法存在不同,但是只要拥有了计算机思维,找准事物之间的共性,就可以很快由一门语言推之于其它语言。数据结构的算法比较多,但是只要理解了一道题,同类型的就可以掌握。信管偏向于记忆理解,之前接触过很多的管理理论,以及系统开发理论,加之工作的关系,很多东西可以很好的联系实际快速理解,不需要特意记忆。
小编再给大家附上几个考试注意事项:
(1)不管有没有准备,报名了就去参加考试,去了就有通过的可能,但是你不去是绝对不会通过的。(小编大二考教资的时候就吃过亏,第一次没复习,有一科没有去考,第二次还是没看就去考了,就通过了~~~~)
(2)答题的时候条理清晰,尤其简答题一定要分点论述,字迹清晰。
(3)不要空题,简答题一定要写几点,填空题也不要空下。
(4)学会现学现用。选择题的答案选项以及填空题,可以用到后面的大题当中,尤其是简答和论述题。
(5)平时的学习积累很重要。专业课的学习小编从大一开始就没有落下过,看似对学习计算机没有任何帮助,但是很多东西,很多思维方式会潜移默化地影响你,当你用到的时候才能感受到。还有疫情在家,利用一个月时间学习的软考,虽然今年因为北京疫情原因,没有考成,但是会发现和自考很多知识都是重合的,像这次的数据结构和信管,如果学过软考,就会发现看书做题的时候会很轻松。
(6)稳定的考试心态和自信心(很重要的一点)。不管有没有复习,复习的程度如何,一定要相信自己。
总结:考试不仅是知识储备的检验,更是心态和答题技巧,思维方式的考核。之前觉得很多人裸考都能考过很厉害,其实,当自己裸考都通过后会发现,所谓的“裸考",除了幸运和掌握良好的答题技巧之外,更多地是自己平时的努力和积累的结果,厚积方能薄发,没有任何人不付出就能获得回报。自考结束,该回归到日常的工作当中去,新阶段的学习也将开始!!!
田海立@CSDN 2020-10-20
TensorFlow算子depth_to_space的官方说明文档写得很简单,从中获取不到真正的执行方式,对于复杂的情况也就无从得知运算结果。本文用图文的方式来解释该算子运算的方式。
零、基础知识 阅读本文,你需要知道下列基本知识,可以从笔者之前的博文中了解:
《数据的NCHW/NHWC排布方式》
用到数据的NHWC摆放顺序
《Tensor Reshape操作》
用到Reshape操作,以及Reshape操作不改变数据的摆放原则。
一、depth_to_space原型 depth_to_space是把depth维的数据移到space上,与space_to_depth刚好是反向的操作。对应到ML系统里Tensor的NHWC/NCHW数据:depth对应Channel;space对应Height和Width。而且该操作是把depth上的数据分给Height以及Width上。所以,对应有一个参数block_size,要求原Tensor的depth是block_size的block_size^2倍。
这样,新的Tensor
Width是 input_width x block_size;Height是 input_height x block_size;Depth是input_depth / (block_size * block_size) 原型如下:
tf.nn.depth_to_space( input, block_size, data_format='NHWC', name=None ) 因为这里严格区分了C与H/W各维度,如果数据格式不是NHWC时,需要指定data_format。
二、depth_to_space举例 怎么执行的呢?官方举了三个很简单的例子,因为第一个更简单,已经包含在第二个里,这里列出两个。
1. [1,1,1,12] -> [1, 2, 2, 3] 程序实现如下:
直观上看,上面程序的[1,1,1,12] -> [1, 2, 2, 3]的depth_to_space操作如下:
2. [1, 2, 2, 4] -> [1,4,4,1] 程序实现如下:
直观上看,上面程序的[1,2,2,4] -> [1, 4, 4, 1]的depth_to_space操作如下:
3. 分析 depth_to_space执行时维度的变化很容易理解:Width是 input_width x block_size;Height是 input_height x block_size;Depth是input_depth / (block_size * block_size)。