HTML列表——小白篇(6)

返回目录 列表 什么是列表 列表就是信息资源的一种展示形式。它可以使信息结构化和条理化,并以列表的样式显示出来,以便浏览者能更快捷地获得相应的信息。 列表的分类 无序列表有序列表定义列表 有序列表< ol> 有序列表,会带有自己样式属性,但在实际使用时,我们会使用CSS来设置。< ol>< ol>中只能嵌套< il>< /il>,直接在< ul>< /ul>标签中输入其他标签或文字是不允许的。< il>< /il>之间相当于容器,可以容纳所有元素。 格式: <ol> <il>列表1</li> <il>列表</li> <il>列表</li> </ol> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>有序列表的学习</title> </head> <body> <!--有序列表 应用范围:学号.问答--> <ol> <li>退一步海阔天空,意思是你退一步,别人海阔天空。</li> <li> 你别看他现在长得帅,他老了就是一糟老头!</li> <li>说假话总会被人揭穿,戴假发总会被风揭穿。</li> </ol> </body> </html> 网页显示 无序列表< ul>重点 无序列表的各个列表之间没有顺序级别之分,是并列的。< ul>< /ul>中只能嵌套< il>< /il>,直接在< ul>< /ul>标签中输入其他标签或文字是不允许的。< il>< /il>之间相当于容器,可以容纳所有元素。 格式: <ul> <il>列表1</li> <il>列表</li> <il>列表</li> </ul> 列表的学习 有事请直奔主题,别用你的无知来挑战我的黑名单。早回家的男人,讲故事给老婆听;晚回家的男人,编故事给老婆听。我曾经跟一个人无数次的擦肩而过,衣服都擦破了,也没擦出火花。 网页显示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201209003107633.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODEwMTI5NA==,size_16,color_FFFFFF,t_70) 定义列表 < dl>< /dt>里面只能包含< dt>和< dd>.

HTML注释——小白篇(5)

返回目录 了解HTML注释 注释 HTML文档中便于于阅读和理解但又不需要显示在页面中的注释文字就需要注释标签 注释是给程序员看的。 <!-- // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ 永无Bug // . ' \\| |// `. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. / // ___`. .' /--.--\ `. . __ // .

利用LSTM进行股票预测分析

需要使用的库: tusharepytorchpandasnumpymatplotlib 1. 数据导入 import tushare as ts ts.set_token('98edbe9c3e444002decb09646838a02f0307e41bd5ce51bb5b2a99c8') ts_pro = ts.pro_api() help(ts) Help on package tushare: NAME tushare - # -*- coding:utf-8 -*- PACKAGE CONTENTS bond (package) coins (package) data (package) fund (package) futures (package) internet (package) pro (package) stock (package) subs (package) trader (package) util (package) VERSION 1.2.62 AUTHOR Jimmy Liu FILE e:\anaconda3\lib\site-packages\tushare\__init__.py # 股票代码 ts_code = '002069.SZ' # 开始时间 start_date = '2006-01-01' # 结束时间 end_date = '2020-01-01' df = ts_pro.

5G智慧路灯杆场景应用

5G智慧路灯杆自发展以来在城市各场景广泛应用,基于物联网技术实现对路灯的远程集中控制与管理,智慧路灯杆具有照明控制、WIFI共享、交通监控、环境监测、充电桩、安防报警等多功能,能够大幅节省电力资源,提升公共照明管理水平,节省维护成本,是打造智慧城市、智慧交通的重要角色。 智慧路灯杆公路应用 近年来,智慧路灯杆逐渐出现在多个城市的街头。与传统路灯不同,智慧路灯杆整合了监控、摄像头、5G微基站、安全报警等硬件,通过信息感知和大数据交互技术,能实现智能照明、智慧交通、信息发布等功能。随着一批批智慧路灯杆在各地投入使用,智慧城市有了新的景色。 智慧路灯杆园区应用 天津市滨海新区中新生态城科技园区内的综合能源服务中心门前,新建的“5G智慧路灯杆”可实现10大类设施状态的感知和17项具体社会服务功能的拓展,集成了电动汽车充电桩、wifi、信息查询等功能,为百姓的日常生活提供更多便利。 智慧路灯杆景区应用 景区新型智慧路灯杆除了通信和照明基本功能外,还具备安防监控、环境感知、市政管理、媒体发布等新型应用,肩负智慧景区多项业务入口。景区人流监测、安防监控、一键报警、信息广播发布、环境监测等功能集于一杆,对于游客来说,拥有舒适的游玩环境、可靠的安全保障;对于城市管理者来说,更便捷的统一管理、更集约的使用控制。

python里import turtle_[转] Python的import初探

先看一组示例: >>>path Traceback (most recent call last): File"", line 1, in NameError: name'path' is notdefined>>>sys.path Traceback (most recent call last): File"", line 1, in NameError: name'sys' is notdefined>>> importsys>>>path Traceback (most recent call last): File"", line 1, in NameError: name'path' is notdefined>>>sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk','/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload','/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages','/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10','/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']>>> from sys importpath>>>path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk','/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload','/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages','/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10','/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7'] 这段代码中,我们尝试使用sys包中的path变量得到python默认查找模块的路径信息,只有在import sys之后,python解释器才能正确的找到该变量. 我们通过一个python内部函数dir()来看看python解释器如何找到名字的. dir()函数是python内建函数,用于查看指定作用域下可用的名字. 若没有传参数,则打印当前作用域下的可用名字. >>>help(dir) Help on built-in function dir in module __builtin__:

自动编码器python_算法进阶(一)之自动编码器

自动编码器(autoencoder) 是神经网络的一种,该网络可以看作由两部分组成:一个编码器函数h = f(x) 和一个生成重构的解码器r = g(h)。传统上,自动编码器被用于降维或特征学习 自编码器原理示意图 编码器:将原始高维特征数据映射为低维度表征数据 解码器:将低纬度的压缩特征重构回原始数据 核心:输入特征等于输出特征 那么我们就会有一个疑问:压缩特征为什么小于输入特征?这里我们使用的是欠完备自动编码器:输入特征大于压缩特征. 下面我们手动编写一个自动编码器, 我们先来整理一下编写流程: 1. 获取数据 2. 模型搭建 3. 最优化设置 4. 模型训练 5. 数据3D可视化 然后呢, 我们就按照这个流程来编写我们的代码, 此代码的前提是有GPU, 代码才不会报错. 1. 获取数据 import numpy as np import torch import torchvision import torchvision.transforms as tansforms import torch.nn as nn import torch.utils.data as data # 数据集下载和导入 train_data = torchvision.datasets.MNIST( root="./data/MNIST_data", train=True, transform=tansforms.ToTensor(), download=True, ) print(train_data.data.size()) # [60000,28,28] print(train_data.targets.size()) # [60000] # 显示图片 import matplotlib.

python集合中的元素不允许重复对吗_python字典中的值为什么不允许重复

python字典中的值不允许重复的原因是:1、有一条明确原则,每个键只能对应一个项;2、当有键发生冲突时,取最近的赋值;3、键必须是可哈希的。 python字典中的值不允许重复的原因是: 字典中的值没有任何限制, 可以是任意Python对象,即从标准对象到用户自定义对象皆可,但是字典中的键是有类型限制的。 1、不允许一个键对应多个值。必须明确一条原则:每个键只能对应一个项。也就是说:一键对应多个值是不允许的(像列表、元组和其他字典这样的容器对象是可以的)。 当有键发生冲突(即字典键重复赋值),取最后(最近)的赋值。Python并不会因字典中的键存在冲突而产生一个错误,它不会检查键的冲突是因为如果真这样做的话,在每个键-值对赋值的时候都会做检查,这将会占用一定量的内存。如:>>> dict1 = {'foo':789, 'foo': 'xyz'} >>> dict1 结果:{'foo': 'xyz'} 2、键必须是可哈希的。大多数Python对象可以作为键,但它们必须是可哈希的对象。像列表和字典这样的可变类型,由于它们不是可哈希的,所以不能作为键。所有不可变的类型都是可哈希的,因此它们都可以做为字典的键。相关免费学习推荐:(视频)

IEEE754标准浮点数转换

原文:https://blog.csdn.net/hqh131360239/article/details/81353582 IEEE754标准浮点数转换 IEEE754标准是一种浮点数表示标准,一般分为单、双精度两种,单精度是32位的二进制数,双精度是64位的二进制数,一个浮点数的组成分为三个部分。 ①第1位是数符s,s=1表示负数,s=0表示正数。②第2-9位为阶码E, (双精度为2-12位)③第10-32位为尾数M (双精度为13-64位) 转换大致过程如下: 首先将十进制数转为二进制数,用类似于科学计数法的形式表示成 num=(-1)^s (1+M) 2^(E-127)(单精度) num=(-1)^s (1+M) 2^(E-1023)(双精度) 然后将每部分算出的数值按顺序排列 例如: -0.0625=-0.0001=-1.0*2^(-4) s=1,M=1-1=0,E=-4 +127=123=0111 1011 ,E(双精度)=-4 +1023=1019 =0111 1111 011 单精度:1011 1101 1000 0000 0000 0000 0000 0000 (S E M顺序) 双精度:1011 1111 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 浮点数转换二进制 举例:22.8125转二进制,这样计算: 整数和小数分别转换。 整数除以2,商继续除以2,得到0为止,将余数逆序排列。 22 / 2 11 余 0 11 / 2 5 余 1 5 / 2 2 余 1 2 / 2 1 余 0 1 / 2 0 余 1 所以22的二进制是10110

HTML图像标签————小白篇(3)

返回目录 常见的图像格式 JPGGIFPNGBMP… 属性属性值说明src图片路径必须属性alt文本替换文本。图像不能就显示的文字title文本提示文本。鼠标放到图像上,显示的文字width像素设置图像的宽度height像素设置图像的高度dorder像素设置图像的边框粗细 图片标签< img src> 图像标签可以写多个属性,必须写在标签后面。属性不分先后顺序,以空格分开。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图像标签学习</title> </head> <body> <!--图像标签学习 img src: 表示图像地址后面等于图像路径 alt: 表示图像代替 title: 表示鼠标悬停 width: 表示图片宽度 height: 表示图片高度 --> < img src ="位置" alt= "文字" title= "文字" width="6" height="9" /> </body> </html> 网页显示 路径了解 网页中的图片我们会新建一个文件存放,就需要路径来找到图片。 路径分为: 相对路径绝对路径 相对路径分类符号同一级路径图像文件位于HTML文件同一级 如< img src=“dog.gif”/>下一级路径/图像文件位于HTML文件下一级 如< img src=“images/dog.gif”/>上一级路径…/图像文件位于HTML文件上一级 如< img src="…/dog.gif"/> 同一级路径显示 下一级路径显示 上一级路径 绝对路径 绝对路径说明本机从盘开始到图片 例如:< img src=“C:\Users\余神\day2\余生.jpg” > .一旦离开本机就无法显示,不推荐。网络从网上图片路径 例如:< img src=“https://img-blog.

python随机生成密码字符串_Python生成字符串随机密码

写了一个能根据预先给定好的字符串,然后生成随机密码的python方法。这个我用了python random模块,实现起来还是挺简单的。但没有应用到正式环境中,还需要再改进下。 #! /usr/bin/env python #coding=utf-8 import random #密码字符串池 pwdStrPool = '23456789'\ 'abcdefghijkmnpqrstuvwxyz'\ '~@#$%^&*()_+'\ 'ABCDEFGHIJKMNPQRSTUVWXYZ'\ #密码字符串池长度 pwdStrPoolSize = len(pwdStrPool) #定义所要生成的密码长度 pwdLen = [16,16] #获取一个随机数 def GetRandomNum(p): randomNum = random.randint(0,pwdStrPoolSize-1) return pwdStrPool[randomNum] #www.iplaypy.com #获取随机密码 def GetRandomPwd(pwdLen): RandomPwd = ''.join(map(GetRandomNum, xrange(pwdLen))) return RandomPwd def tester(): print GetRandomPwd(random.randint(pwdLen[0],pwdLen[1])) if __name__ == '__main__': tester() 玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/security/se2218.html 相关文章 Recommend

OpenGL安装教程

OpenGL安装教程 一、安装前准备 1:VS2017 2:GLFW下载链接 (建议下载32位) 3:GLAD下载链接 点击下面的generate,会看到一个glad.zip,直接下载即可。 二、安装步骤 1.首先VS2017创建一个CPP工程,和正常创建工程一样。 2.右键打开工程所在文件夹 3. 将glad文件夹下的include文件夹复制到刚才打开的文件夹下,并且也将glfw下include文件夹下的GLFW文件夹复制到刚刚的include文件夹下; 在刚刚打开的工程目录下新建lib文件夹,将glfw文件夹下的lib-vc2017下的两个静态库文件复制到新建的lib文件夹下; 将glad下的src文件夹里的glad.c也复制到工程目录下,右键源文件添加现有项,将glad.c文件添加进去 效果如下 4.右键打开工程属性 先在C/C++下附加包含目录按如下配置 然后在链接器配置附加库目录 再点击链接器下输入,进入附加依赖项 添加opengl32.lib,glfw3.lib,msvcrt.lib 在属性里点击右下角应用即可保存设置 5.测试配置是否成功 注意这样安装会使glad.c报错,只需将#include"glad/glad.h"替换glad.c的不能打开的那句,或者改变之前安装方式,include文件夹下直接放库文件 #include <iostream> #include"glad/glad.h"//!!!注意这里,/前面的是h文件的上级目录,可能每个人安装不同,也有不同 #include"GLFW/glfw3.h" using namespace std; static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) { glfwSetWindowShouldClose(window, GL_TRUE); } } //vertex shader const GLchar* vertexShader_Code = "#version 330 core\n" "layout(location=0) in vec3 aPos;\n" "

centos7.8上安装cuda10.1输入nvidia-smi一直显示no devices were found

问题:按照网上的教程安装,安装之后输入lspci | grep -i vga可以输出显卡型号,在配置环境变量之后也可以输入nvcc -V也可以得到cuda版本号,但是就是输入nvidia-smi显示no devices were found,在网上查了好长时间,什么配置环境变量,降低内核哪些方法都试过,也没有结果。 解决办法:在https://www.nvidia.com/download/driverResults.aspx/166883/en-us中安装指定的驱动之后问题解决,得到输出

1176拆机 mac mini_为Mac扩容——FreeNAS搭建后的碎碎念

前言 笔者目前的主力电脑是MacBook Pro 15-inch(2018)的乞丐版,仅有256GB硬盘还完全焊死在主板上无法更换,十分D区。由于FCPX和虚拟机的使用加之各种文稿愈来愈多,硬盘空间已经所剩无几,也用过外接硬盘存放视频素材和工程文件之类。本以为就可以这样凑合用下去,却因无意撤掉硬盘线导致硬盘分区表损坏,哪怕用“30分钟大法”也没能恢复,约60GB的素材和工程文件消失地彻彻底底……为了避免再一次发生这种惨剧,便着手搭建起了自己的NAS。 硬件选择 搭建NAS,从两方面考虑,硬件和软件。由于家里还有一台母上不用的老笔记本,从中拆出了如下部件: CPU:奔腾B970(2.3GHz,双核双线,Sandy Bridge架构,PGA 988插槽) 内存:三星4GB DDR3 1666MHz 硬盘:希捷OEM机械硬盘500G 其余又购入了华擎的QM77芯片组ITX工控主板,有SATA2和SATA3各2个,以及一个全长的PCI-Express x16接口,日后有需求的话Ivy Bridge的CPU也可以换上去(ん?唐突白学),上4C8T的i7以后还可以跑跑Docker什么的,也可以上万兆网卡(然而对应的ThunderBolt3转万兆口穷学生真的买不起x)。电源选择了外置的DC 12V供电,台达的240W带这个足够了。机箱则是某宝上的工控机箱,可以装四个2.5寸硬盘,携带起来还算方便。 之前在挑主板时没注意区分上面的那个接口到底是mSATA还是mini-PCIe,结果原来买的mSATA工控硬盘没法用,只好暂时将系统盘通过USB 3.0挂在主机上。原本打算用手里空的一块WD 3D Blue SSD,结果写入系统后根本无法启动,后来看到翼王的视频,可能的原因是FreeNAS与SSD主控八字不合,国外论坛上是有人遇上SanDisk的不能用,想起来WD做起固态是因为收购了哪家嗯…… 翼王视频中关于SSD的踩雷 所以最终的配置: CPU:奔腾B970 主板:华擎IMB-170-V,QM77芯片组 内存:三星4G DDR3 1666MHz * 2 硬盘:希捷 * 1,西数 * 3,都是500G 全塞小盒子里啦wwwww 软件配置 系统安装 装机完成后准备装系统,笔者选择的是基于FreeBSD的FreeNAS并使用ZFS文件系统创建RAID-Z1。没有选择黑群晖基本上是担心这套配置出各种奇怪问题,如果是用J1900那些的倒是可以考虑,以及笔者折腾过一段时间FreeBSD系统,相对安逸一点(其实就是为了尽可能利用拆机货省钱)。系统安装也比较简单,从官方网站上下载所需的映像,用UltraISO软件以RAW格式写入启动U盘。进入BIOS的启动选项,从U盘启动,一路走下去,安装完成后拔掉安装盘重启即可。启动后回跳出欢迎文字,可以在设置中自行修改,(笔者更换成了「お帰りなさい、ご主人さま!」,四宅蒸鹅心.jpg),并显示连接到NAS的IP地址(只有连接上网线才可以获得)。 进入安装程序,就是拿FreeBSD改的( 安装选项 设置root账户密码 安装完成啦! 初次启动 到此处为止,就可以不用在NAS主机上连接显示器和键盘了,直接一根网线即可。在另一台电脑的浏览器里通过IP地址连接到NAS上,输入账号密码即可进行配置(玩过树莓派的孩子大概很熟悉)。 Web管理登入 基础设置:更改语言,键盘布局和时区 系统配置 接下来主要有以下几点配置:存储池组建RAID,用户用户组及权限设置,文件夹共享设置和相关服务功能开启。 存储池(Zpool)是ZFS文件系统下的用来管理物理存储空间的概念,不像Windows一样将物理磁盘分别进行管理,存储池中每个“池”中可以由若干个设备组成,可以是单个磁盘,也可以是RAID阵列,ZFS可以利用Zpool中所有设备的总存储容量。创建存储池的方法:FreeNAS网络管理界面→存储器→卷管理器→填写综卷名称/挂载目标位置/选择磁盘。/选择类型→确认。注意:此时盘内所有资料将会被清空。创建好存储池后添加数据集,数据集理解为*NIX系统下的目录就行。笔者在此使用了四个500G硬盘组RAID-Z1,可用空间为4-1个硬盘容量,即1.5TB。 创建存储池 存储池管理 用户用户组及权限设置对有BSD和Linux基础的使用者而言可以说是轻车熟路的,账户→用户组→添加用户组→所有用户→添加用户→将用户添加到创设的用户组中。另外说几句,FreeNAS本身是一个成熟的企业级存储方案,如果是影音工作室使用,可以在为各个组分别划出共享文件夹使用;个人用户相对而言就比较简单,只需要添加自己的用户和用户组即可,这里并不建议图省事个人用户直接以root账户使用NAS,root账户应当只用来管理NAS使用。接下里对之前创建数据集编辑权限,需要分享给那个用户用就将他的权限加上即可,在同一用户组下的用户权限可以进行微调,不再赘述。 添加用户组 添加用户 设置用户用户组权限 至于共享,FreeNAS对于多种操作系统后都比较友好,支持的有Apple的AFP,UNIX的NFS和Windows的SMB等。添加共享的方法(以AFP为例):共享→Apple(AFP)→添加AFP共享→选择数据集/设置名称/选择是否开启时间机器→保存。将Mac与NAS直连或连接到同一路由器下,Finder→⌘+K连接服务器→填写登入Web管理界面的IP→填写账户密码→选择连接数据集。若开启了时间机器功能,可以在时间机器选择磁盘时选择FreeNAS.local,在NAS上备份。笔者采用的千兆口通过超五类直连,顺序读写可以达到约100MB/s,算是可以满足在线剪辑视频的需求了,然而还不是得转码创建代理XD。 选择共享数据集 共享管理 FreeNAS自带了一些服务,笔者开启了AFP,S.M.A.R.T.和SSH。通过macOS自带的Terminal的SSH到 NAS上,虽然已经有图形界面来着,但是命令行毕竟也不能少嗯。还可以自定义安装一些插件吗,把NAS利用起来搭建mc服务器之类。另外Jails,VMs都是比较有用的功能,VMs可选搭建虚拟机还是Docker,笔者暂时还没有精力,等以后再折腾。 开启SSH服务后远程连接 注:笔者至此的教程都是在虚拟机上搭建,上面那个IP登着玩也没用(但不排除您本地局域网有设备使用这个IP而导致奇奇怪怪的后果,出问题笔者概不负责) 小结 总结一下体验吧,这是笔者装过的第三台机器,相比常规的Windows PC来说还是有点意思,以及以后又有可以瞎折腾的玩意了(大雾)。用起来还算比较满意,不足的地方也有几处,CPU过于孱弱,还不支持Intel虚拟化虚拟化技术,等以后上了i7-3720QM这种再在上面折腾插件和Docker吧。至于一直吊在机箱外面的系统盘看起来真的难受,每次插拔线的时候都会担心不小心碰掉,打算接下来利用mini-PCIe转SATA将两个硬盘挂上去,让出原生SATA口用来启动系统。至于读写缓存盘暂时不打算加,毕竟千兆上限也就100MB/s左右嘛。 自己NAS的磁盘一览 网络位置上的FreeNAS 搭配时间机器食用( 最后的话 祝愿看了这篇文章的服务器永不宕机,不管是自己的NAS还是公司的Server(逃

Chrome之js断点调试方法

方法/步骤 1.Chrome开发者工具断点调试 第一步:打开开发者工具,按F12或者在浏览器页面上右键选择 第二步:在Source面板找到需要调试的文件 第三步:设置断点 第四步:触发调试部分程序的运行,开始调试 调用过程常用的按钮及快捷键: 跳到下一个断点:点击Sources面板右侧的 “三角按钮” 快捷键 : F8 跳到下一步 : 点击Sources面板右侧的第二个按钮 快捷键 : F10 跳进断点处的方法中:点击Sources面板右侧第三个按钮 快捷键 : F11 跳进断点处的方法中:点击Sources面板右侧第四个按钮 快捷键 : Shift + F11 跳进断点处的方法中:点击Sources面板右侧第五个按钮 快捷键 : F9 禁用断点:断点Sources面板右侧第五个按钮 暂停在捕获到的异常处:点击Sources面板右侧第六个按钮,然后勾选Pause On Caught Exception 暂停在未捕获的异常处:点击Sources面板右侧第六个按钮,然后不勾选Pause On Caught Exception 清除断点 在Sources面板右侧面板中,找到Breakpoints打开,可以看到你打的断点.可以断点列表处右键选择 Remove all breakpoints 可一次性删除所有断点

《Qt入门 (十)--QTableview 多线程操作model问题记录》

QTableview 多线程操作model问题记录 背景一、在主线程中设置QStandardItemModel二、在子线程操作model、主线程显示 背景 在使用Qtableview 读写数据库时,因为操作数据文件在子线程操作,但是显示却在主线程,又想实现实时刷新数据的显示效果,这中间遇到几个问题记录一下。 一、在主线程中设置QStandardItemModel m_model = new QStandardItemModel(); m_model->setHorizontalHeaderItem(KEY_NAME,new QStandardItem("按键名")); m_model->setHorizontalHeaderItem(KEY_DATA,new QStandardItem("值")); m_model->setHorizontalHeaderItem(ASIXID,new QStandardItem("轴号")); m_model->setHorizontalHeaderItem(ASIXData,new QStandardItem("轴值")); //设置表格属性 ui->tabviewShowBtn->setModel(m_model); 在主线程里操作model,就可以达到QTableView立马变更视图的操作, 每次变更数据只需要变更model 的数据即可 二、在子线程操作model、主线程显示 同样在初始化界面时 定义个全局的model 获取这个model绑定到tableview上 m_model = &CSingleton::getInstance()->m_tablemodel; ui->tableView->setModel(m_model); 在子线程里实时刷新model的数据 /******************************************************************* ** 函数名: on_threadInit ** 函数描述: 线程初始化 ** 参数: Name:进程名字 ** 返回:QString ********************************************************************/ void CtlP3DSimConnet:: on_threadInit(void) { m_sqlite = new Sqlite("1111.s3db"); m_sqltabmdl = &CSingleton::getInstance()->m_tablemodel; QString filter = "isread = 'Y'"; m_sqlite->find2StandMdl("P3DSimConnect", filter,m_sqltabmdl); } //子线程一个定时器定时刷新model的值 QStandardItemModel* model = m_sqltabmdl; for (int i = 0; i < model->rowCount(); i++){ ::memcpy(&data, pMemry, 4);//内存拷贝对应的指针长度 model->setData(model->index(i, 4), data); pMemry++; } 使用时发现出现以下报错,排查了好久,发现信号连接什么的都没什么问题。

python requests form data_Python Requests库 form-data 上传文件操作

请求数据示例: ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="id" 9 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="name" 赵云 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="tel" 13212345678 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="school" 西南科技大学 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="major" 计算机 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="age" 30 ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="img"; filename="demo.jpg" Content-Type: image/jpeg ------WebKitFormBoundaryKLoWgrA4O40MayHM-- 1.通过data参数和files参数发送请求 import requests request_url = 'http://www.demo.com/studentInfo/saveNewInfo' # 构造字典,键值对方式传参 request_data = { 'id': '9', 'name': '赵云', 'tel':'13212345678', 'school': '西南科技大学', 'major': '计算机', 'age': '30' } # 上传文件单独构造成以下形式 # 'img' 上传文件的键名 # 'demo' 上传到服务器的文件名,可以和上传的文件名不同

什么是条件组合覆盖_正交表测试用例设计方法的特点是什么?

用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂; 对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的; 具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。 用n个不同的拉丁字母排成一个n阶方阵(n<26),如果每行的n个字母均不相同,每列的n个字母均不相同,即每个字母在任一行、任一列中只出现一次,则称这种方阵为n*n拉丁方或n阶拉丁方。 如,3阶拉丁方 什么是正交拉丁方? 设有两个n阶的拉丁方,如果将它们叠合在一起,恰好出现n^2个不同的有序数对,则称为这两个拉丁方为互相正交的拉丁方,简称正交拉丁方 用数字替代拉丁字母 正交试验设计的基本概念 在一项试验中,把影响试验结果的量称为试验因素(因子),简称因素。因素可以理解为试验过程中的自变量,试验结果可以看成因素的函数。在试验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称为因素的水平,简称水平。 将正交试验选择的水平组合,列成表格,称为正交表。 正交表具有以下两个特点,即正交性。正交表必须满足这两个特点,有一条不满足,就不是正交表。 1)每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件。 2)在任意2列其横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性 正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。 例如,要考察正常值、错误值和边界值对某软件界面的影响。每个因素设置3个水平进行试验。A因素是正常值,设 A 1、A 2 、A 3 3个水平;B因素是错误值,设B1 、B 2 、B 3 3 个水平;C 因素为边界值,设C 1、C 2 、C 3 3个水平。这是一个3 因素 3 水平的试验,各因素的水平之间全部可能组合有27(即3^3)种。 全面试验:可以分析各因素的效应,交互作用,也可选出最优水平组合。但全面试验包含的水平组合数较多,工作量大,在有些情况下无法完成。 若试验的主要目的是寻求最优水平组合 ,则可利用正交表来设计安排试验。 正交试验设计的基本特点是:用部分试验来代替全面试验,通过对部分试验结果的分析,了解全面试验的情况。 正因为正交试验是用部分试验来代替全面试验的 ,它不可能像全面试验那样对各因素效应、交互作 用一一分析;当交互作用存在时,有可能出现交互作用的混杂。虽然正交试验设计有上述不足,但它能通过部分试验找到最优水平组合,因而很受实际工作者青睐。 如对于上述 3 因素 3 水平试验 ,若不考虑交互作用,可利用正交表L9(33) 安排,它表示需作9次实验,最多可观察3个因素,每个因素均为3水平,试验方案仅包含9个水平组合,就能反映试验方案包含27个水平组合的全面试验的情况,找出最佳的生产条件。 正交试验设计方法 与一般的试验设计类似 ,用正交试验设计方法设计测试用例时主要包括以下步骤: (1) 确定因素 这里的因素是指对软件运行结果有影响的软件 (2) 确定因素的取值范围或集合(该步是为步骤3做准备的) 因素的取值范围是指软件输入的取值范围或集合以及可用的硬件资源。 (3) 确定每个因素的水平 根据因素的取值范围或集合 ,采用等价类划分、边界值分析以及其他软件测试技术,在每个因素的取值范围或集合内挑选出有效等价类、无效等价类、正好等于、刚刚大于或刚刚小于边界值等有代表性的测试值。 (4) 选择正交表 根据确定的因素和水平 ,选择适合的正交表。

京训钉怎么快速看完_一键如何快速提取图片中的文字,识别图片中文字的软件有哪些...

在我们工作和学习过程中,我们会经常遇到这样的情况,如上班族老板给你一张图片或者手写稿子让你把上面的内容转到Word文档上去,然后打印后发给相关人员,这时有不少人会开始一个一个字去敲打;学生党有的喜欢偷懒上课不记笔记,课后找学习成绩好的同学记笔记去抄,这时才发现内容太多不想抄了。那么有没有什么好的方法,可以将图片上的文字内容或者是书本上的文字内容快速提取出来呢?答案是有的,现在就有许多具有将图片上的文字内容快速提取出来的软件。 工作原理 提取图片中文字这一类软件所用到核心技术就是OCR,OCR(Optical Character Recognition,光学字符识别)是指电子设备检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。 软件分享 以下软件没有排名不分先后,也不对他们做任何评价,主要是分享软件在哪里操作,怎么操作的详细过程。我分享的这些软件都是我们生活中必备的软件,只不过是平时大家没有注意到,或者是软件更新添加了这类功能大多数人不知道而已。 1、钉钉 钉钉是现在学生党和很多上班族必备的,如上课、打卡都离不开它。 操作步骤:打开钉钉->文档->拍图识字,可以选择直接拍照进行识别,也可以点击 相册,选择已经拍好的图片,点击 开始识别,之后将识别好的文字导出或者是复制到已经建好的Word文档中去,如下图所示。 2、QQ QQ也是很多人必备的软件之一 操作步骤:打开 QQ->✚->扫一扫->转文字,可以选择直接拍照进行识别,也可以点击 相册,选择已经拍好的图片,点击 确定,之后点击 提取全文,将识别好的文字导出或者是复制到已经建好的Word文档中去,如下图所示。 ​3、微信 微信不用多说可以说是大家手机上必备的软件,本身处理聊天和支付没有什么功能,但是具有强大的小程序功能。 操作步骤:打开 微信,点击 搜索,在搜索栏输入 拍图识字,找到相关的小程序点击进入,点击 开始使用,可以选择直接拍照进行识别,也可以点击 相册,选择已经拍好的图片,点击 确定,之后点击 提取全文,将识别好的文字导出或者是复制到已经建好的Word文档中去,如下图所示。 其实提取图片中文字的软件有很多,这里只分享着3个大家生活中常用软件的自带功能,好处就是大家不需要另外下载软件。拍图识字这一功能操作起来是比较简单的,值得注意的是对于一些在线文档最好不要直接拍图识别,而是先用截图软件截图,再通过上传图片识别文字,因为拍图识别是有一定的错误率的。手机在拍摄电脑或者电子产品的时候有时会有“水波纹”,这种情况会提高识别文字的错误率。另外大家在导出文档后,应该将文档检查几遍,将识别错误的文字给更正过来。 看完上面详细的教程可以看到整个操作过程是不是很简单,按照教程操作起来试一试,觉得有用的可以点赞、关注、分享、收藏,关注我获取更多的小技巧,你的支持是我创作的最大动力。

XAML语言基本介绍

XAML语言基本介绍 WPF(Windows Presentation Foundation)是(微软推出的)基于Windows的用户界面框架,属于.NET Framework 3.0的一部分。WPF提供了统一的编程模型,语言和框架,做到了分离界面设计人员与开发人员的工作。 WPF中文译名为“Windows呈现基础”,原来的代号为“Avalon”。从.NET Framework 3.0开始引入。(所以.NET Framework 3.0以下版本没有WPF,.NET Framework 3.0及其之后的版本才支持WPF) 而WPF(Windows Presentation Foundation)使用对象描述语言是XAML语言。(XAML语言和HTML语言都是由XML语言延申而来的。) WPF的页面设计是通过XAML语言来设计的,XAML语言又被称为“可扩展应用程序标记语言”,WPF由微软推出,XAML语言也是微软公司为构建应用程序用户界面而创建的,为用户提供一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。 XAML语言有用四个特点: 定义应用程序的界面元素。显示的声明WPF资源(样式、模板、动画等)。可扩展性(自定义UI控件)。集中关注于界面的设计和实现。 XAML语言有3个顶级元素: Window窗口。(WPF默认的窗口外观) UserControl用户控件。 Page页。 而一个XAML页面里面有一个顶级元素,一个顶级元素里面也只能有一个子元素。因为一个顶级元素里面只支持一个子级元素,所以出现了专门的布局控件来实现布局,这种布局元素里面可以接受无数个元素。 XAML语言有五个常用的布局元素: Grid网格。DockPanel泊靠式面板。StackPanel栈式面板。WrapPanel自动折行面板。Canvas画布。

【深度学习】OpenCV——阈值操作和图像上的运算

目录 1 阀值操作 1.1 简单阀值 1.2 OTSU二值化 1.3 自适应阀值 2 图像上的运算 2.1 加减法 2.2 图像混合 2.3 按位运算 1 阀值操作 1.1 简单阀值 像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是cv2.threshold(src, thresh, maxval, type[, dst]) 第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进行分类的阈值。第三个参数就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值。OpenCV提供了多种不同的阈值方法,这是有第四个参数来决定的。这些方法包括:【博客——图像阈值处理cv2.threshold()函数】 cv2.THRESH_BINARY || cv2.THRESH_BINARY_INV || cv2.THRESH_TRUNC || cv2.THRESH_TOZERO || cv2.THRESH_TOZERO_INV """ Python阀值操作 """ import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('5.jpg') img_Gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) """ 将大于127小于等于255的值设为255,其余设为0 """ ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) """ 将大于127小于等于255的值设为0,其余设为255 """ ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) "

Fletcher校验和算法

简单校验和的弱点: 它对数据字(消息)中块(字节)的顺序不敏感。如果更改顺序,则校验和值将相同,并且不会检测到更改。第二个缺点是校验和值的范围很小,等于所选的模数。在我们的示例中,只有255个可能的校验和值,因此很容易看出,即使随机数据也具有大约0.4%的概率具有与我们的消息相同的校验和。 Fletcher校验和 Fletcher通过计算第二个值以及简单的校验和来解决这两个弱点。这是简单校验和在将数据字的每个块添加到其中时所取值的模和。使用的模数相同。因此,对于数据字的每个块,按顺序取,将块的值添加到第一个和中,然后将第一个和的新值添加到第二个和中。两个和都以零(或其他已知值)开头。在数据字的末尾,将应用模运算符,并将这两个值合并以形成Fletcher校验和值 缺点:Fletcher校验和无法区分全0位的块和全1位的块。例如,如果数据字中的8位块从0x00变为0xFF,则Fletcher-16校验和保持不变。这也意味着所有00个字节的序列具有与所有FF字节的序列(相同大小)相同的校验和。 Fletcher C语言实现 uint16_t Fletcher16(uint8_t* data, int count) { uint16_t sum1 = 0; uint16_t sum2 = 0; int index; for ( index = 0; index < count; ++index ) { sum1 = (sum1 + data[index]) % 0xff; sum2 = (sum2 + sum1) % 0xff; } return (sum2 << 8) | sum1; } uint32_t Fletcher32(uint16_t* data, int count) { uint32_t sum1 = 0; uint32_t sum2 = 0; int index; for ( index = 0; index < count; ++index ) { sum1 = (sum1 + data[index]) % 0xffff; sum2 = (sum2 + sum1) % 0xffff; } return (sum2 << 16) | sum1; } 阅读-维基百科(需梯子)

LeetCode:659. Split Array into Consecutive Subsequences分割数组为连续子序列(C语言)

题目描述: 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例 1: 输入: [1,2,3,3,4,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3 3, 4, 5 示例 2: 输入: [1,2,3,3,4,4,5,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3, 4, 5 3, 4, 5 示例 3: 输入: [1,2,3,4,4,5] 输出: False 提示: 输入的数组长度范围为 [1, 10000] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/split-array-into-consecutive-subsequences 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解答: struct hashTable { int key; int val; UT_hash_handle hh; }; struct hashTable* find(struct hashTable** hashtable, int ikey) { struct hashTable* tmp; HASH_FIND_INT(*hashtable, &ikey, tmp); return tmp; } void insert(struct hashTable** hashtable, int ikey, int ival) { struct hashTable* tmp = malloc(sizeof(struct hashTable)); tmp->key = ikey, tmp->val = ival; HASH_ADD_INT(*hashtable, key, tmp); } int query(struct hashTable** hashtable, int ikey) { struct hashTable* tmp; HASH_FIND_INT(*hashtable, &ikey, tmp); if (tmp == NULL) { return 0; } return tmp->val; } void modify(struct hashTable** hashtable, int ikey, int ival) { struct hashTable* tmp = find(hashtable, ikey); if (tmp == NULL) { insert(hashtable, ikey, ival); } else { tmp->val = ival; } } void inc(struct hashTable** hashtable, int ikey) { struct hashTable* tmp = find(hashtable, ikey); if (tmp == NULL) { insert(hashtable, ikey, 1); } else { tmp->val++; } } bool isPossible(int* nums, int numsSize) { struct hashTable* countMap = NULL; struct hashTable* endMap = NULL; for (int i = 0; i < numsSize; i++) { inc(&countMap, nums[i]); } for (int i = 0; i < numsSize; i++) { int count = query(&countMap, nums[i]); if (count > 0) { int prevEndCount = query(&endMap, nums[i] - 1); if (prevEndCount > 0) { modify(&countMap, nums[i], count - 1); modify(&endMap, nums[i] - 1, prevEndCount - 1); inc(&endMap, nums[i]); } else { int count1 = query(&countMap, nums[i] + 1); int count2 = query(&countMap, nums[i] + 2); if (count1 > 0 && count2 > 0) { modify(&countMap, nums[i], count - 1); modify(&countMap, nums[i] + 1, count1 - 1); modify(&countMap, nums[i] + 2, count2 - 1); inc(&endMap, nums[i] + 2); } else { return false; } } } } return true; } 运行结果:

将base64格式的图片画到canvas上(js和vue两种)

使用时将里面的base数据替换即可,画布大小进行修改 vue使用时必须在mounted里面、或者点击触发,因为在这个生命周期后才能获取dom元素 js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <canvas id="myCanvas" width="800" height="800"></canvas> <script> var imgbase64 = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAG1ApIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0vQdBttZs7u9vb3WWnbU79P3esXcShUupUUBUkCgBVAwAOlan/CG6X/z9a5/4Pb3/AOPVR0bVrXQvBWq6relhbWmoapLJsGWIF5OcAetcb4s8beJtR+GOs6i2g3fh6MwW89jex6gGeVWlT+4AYztI4JzyaV+g0r2PQP8AhDdL/wCfrXP/AAe3v/x6j/hDdL/5+tc/8Ht7/wDHq5HxL8VZfCOoRWtzpFtc2aRQNLcDWIFuMOBki3P7xsZ/HGcgc1pt8RZJPiFJ4WtNGWWODb59zJfRxSDKb8xwH5pBjHK//rb/AM/wJTurm3/whul/8/Wuf+D29/8Aj1H/AAhul/8AP1rn/g9vf/j1ZPgHx9N45a8lTSYrOyhwYpBqEc0jZYgB4l+aI4GcN+GetebeP9eitviH4ltdR8YeINIENlE+m2+n3MoSScx52lVBGCcd169aT0aXcpK9/I9f/wCEN0v/AJ+tc/8AB7e//HqP+EN0v/n61z/we3v/AMerkNL8eeJ7SLQNDuvDU2o69d6Wt3Nm5W3K4fad4ZcKdvzHvnjFOv8A4tXUDalqFl4Tur3w5plyba71NbtEYMGAYpERlgCR3Hviqejt6/g7ErVfd+Op1v8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1c9qvxMm0zWv7IGgtPeXnkto+y5Oy+SQ8sW2fu9o5I5/rS6l8TJNKfXbS50Uf2nptxbQwWq3WRdicgIyts475GD0pDOg/wCEN0v/AJ+tc/8AB7e//Hqx/Fnhu00zwbrl/Z32uR3Vrp9xNC/9uXh2usbFTgy4OCB1rt1LFQWADY5AOcGuc8eTJ/wheq2Iy13qNrLZWkK8tLNIjKqgfjknoACTwDQBJ/whul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB8ceLPFvifTPGWuWFn4n1yO1tdQuIYU/tKY7UWRgoyWycADrRWP47/wCSh+Jf+wrdf+jWooA+tvDtha6r4S1HT72ETWtzqOpxSxkkblN5OCMjkfhWTH8JdJXQb7RZtb1+5sruKOFUuLxZPsyI4YLECmFGVA6HgCp/Ddt4kk0+8aw1XSoLU6rqOyOfTJJXX/TJs5YTqDzn+EenPWtj7H4w/wCg7of/AIJpv/kqjrcLnP6v8IdE1i71CaTVtdt4r8J9otre8CwuyBQGKFTk/KOuQOwHGLV/8MdK1TxbB4ivtT1mee2cPb2z3Q8iBgABsXbleQG4PJHORxWt9j8Yf9B3Q/8AwTTf/JVH2Pxh/wBB3Q//AATTf/JVAGf4U+HGleE9avdYhv8AVdQ1G8jEclxqNwJX2jHcKM5wvJz0GMc1rWfhiysfFWpeIopbg3moRRxSozDy1CDA2jGc+uSah+x+MP8AoO6H/wCCab/5Ko+x+MP+g7of/gmm/wDkqjt5B38yxJ4bs5PF0PiUyT/bYrNrNUDDyyhbdkjGc59/wrmb34RaBe6jdTm+1mGxvLj7TdaVDelbSeTIJLJjPJAPB+mMCt77H4w/6Duh/wDgmm/+SqPsfjD/AKDuh/8Agmm/+SqO39eYGTqvwv0TWL25vru61D7dI8LW1yjxq9iIjlFgwmFXnnIOfXPNYF1oUvij4zaffto+oW9nocRFxe3cXlpeyqT5Xl44cAktkfkOM9r9j8Yf9B3Q/wDwTTf/ACVR9j8Yf9B3Q/8AwTTf/JVC0afb8weqa7/kaerara6Np73l2zbQQqIi7nlc8KiL3YngCs3RtKupb065rSr/AGlIpSGANuSyiP8AAp7seNzdyMDgCnWOhXbaoup63fQ393CpW1WC2MEMAI+ZghdyXPQsT04AGTndoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD4g8d/8AJQ/Ev/YVuv8A0a1FHjv/AJKH4l/7Ct1/6NaigD6/8G/8gO5/7Cupf+ls1dBXP+Df+QHc/wDYV1L/ANLZq6CgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA53XNQ1hPEGm6VpNxY2/wBotbm4klu7V5/9W8Kg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"; let img = new Image(); img.src = imgbase64; let myCanvas = document.getElementById("myCanvas").getContext('2d'); myCanvas.drawImage(img, 0, 0); </script> </body> </html> vue <template> <div><canvas id="myCanvas" width="800" height="800"></canvas></div> </template> <script> export default { name: 'HelloWorld', data() { return {}; }, mounted() { var imgbase64 = 'data:image/jpeg;base64,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PsyI4YLECmFGVA6HgCp/Ddt4kk0+8aw1XSoLU6rqOyOfTJJXX/TJs5YTqDzn+EenPWtj7H4w/wCg7of/AIJpv/kqjrcLnP6v8IdE1i71CaTVtdt4r8J9otre8CwuyBQGKFTk/KOuQOwHGLV/8MdK1TxbB4ivtT1mee2cPb2z3Q8iBgABsXbleQG4PJHORxWt9j8Yf9B3Q/8AwTTf/JVH2Pxh/wBB3Q//AATTf/JVAGf4U+HGleE9avdYhv8AVdQ1G8jEclxqNwJX2jHcKM5wvJz0GMc1rWfhiysfFWpeIopbg3moRRxSozDy1CDA2jGc+uSah+x+MP8AoO6H/wCCab/5Ko+x+MP+g7of/gmm/wDkqjt5B38yxJ4bs5PF0PiUyT/bYrNrNUDDyyhbdkjGc59/wrmb34RaBe6jdTm+1mGxvLj7TdaVDelbSeTIJLJjPJAPB+mMCt77H4w/6Duh/wDgmm/+SqPsfjD/AKDuh/8Agmm/+SqO39eYGTqvwv0TWL25vru61D7dI8LW1yjxq9iIjlFgwmFXnnIOfXPNYF1oUvij4zaffto+oW9nocRFxe3cXlpeyqT5Xl44cAktkfkOM9r9j8Yf9B3Q/wDwTTf/ACVR9j8Yf9B3Q/8AwTTf/JVC0afb8weqa7/kaerara6Np73l2zbQQqIi7nlc8KiL3YngCs3RtKupb065rSr/AGlIpSGANuSyiP8AAp7seNzdyMDgCnWOhXbaoup63fQ393CpW1WC2MEMAI+ZghdyXPQsT04AGTndoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD4g8d/8AJQ/Ev/YVuv8A0a1FHjv/AJKH4l/7Ct1/6NaigD6/8G/8gO5/7Cupf+ls1dBXP+Df+QHc/wDYV1L/ANLZq6CgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA53XNQ1hPEGm6VpNxY2/wBotbm4klu7V5/9W8Kg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'; let img = new Image(); img.src = imgbase64; let myCanvas = document.

NacosException Create breakpoint: server is DOWN now, please try again later! 解决方案

10:25:47.717 [main] ERROR c.a.n.client.naming - [callServer,613] - [NA] failed to request com.alibaba.nacos.api.exception.NacosException: server is DOWN now, please try again later! at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:611) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:524) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:491) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:486) at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:400) at com.alibaba.nacos.client.naming.core.HostReactor.updateService(HostReactor.java:339) at com.alibaba.nacos.client.naming.core.HostReactor.updateServiceNow(HostReactor.java:302) at com.alibaba.nacos.client.naming.core.HostReactor.getServiceInfo(HostReactor.java:277) at com.alibaba.nacos.client.naming.NacosNamingService.subscribe(NacosNamingService.java:446) at com.alibaba.cloud.nacos.discovery.NacosWatch.start(NacosWatch.java:124) at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554) at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:62) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at com.

适合 JS 新手学习的开源项目——在 GitHub 学编程

作者:HelloGitHub-小鱼干 这里是 HelloGitHub 的《GitHub 上适合新手的开源项目》系列的最后一篇,系列文章: C++ 篇Python 篇Go 篇Java 篇JavaScript 篇 Java 篇中老荀说到当今互联网份额最大的编程语言是 Java,作为后辈我对此话是没有异议的。但,要说到国内互联网最火、最热闹的编程语言是什么?应该没人对 JavaScript 当选有异议吧。相对 C++、Java 这些老前辈,JS 可谓门槛之低,连 Python 都自叹不如。那作为一个新手要学习系统化地学习 JS,应该走哪几步呢? 第一步:打开浏览器,输入网址:https://hellogithub.com/第二步:选择 JavaScript 项目第三步:逐一学习 [手动狗头]有更快捷的方法吗?有!在本篇文章中你将从基础招式学习,了解 HTML、CSS、JS 等基础概念之后,实践一把吃豆人游戏制作,再开启性能调优之旅,最后闯荡前端江湖。 出发,前进 🚗 成神第一式:打好根基 1.1 前端成长之路:Web HG #vol.036 Web 是一个前端入门的图文教程,记录了作者从 0-1 学习前端的过程。作为一个入门的图文教程,Web 遵循了事无巨细原则,在所有的介绍中详细讲 HTML、CSS、JS 等知识点,简单的移动端开发、Vue 等框架使用、Node.js 介绍也略有涉猎。值得一提得失,它所有的示例中代码注释清楚地标注了使用某个函数时你所需要注意的事项,贴心到不行。 不过,Web 项目在 JS 基础和进阶内容分层方面略有不足,会发现 16 个类目有许多重复内容,以及原先在前端进阶分类下的前端几道题被独立出来成为一个单独分类,收录了大量面试题和网友面经,但瑕不掩瑜,该 Repo 绝对是一个新手入门的实用教程。 由于作者没有对分类内容及分类下内容做脑图介绍,所以这里小鱼干绘制了它的脑图/目录结构,部分相同主题内容进行了折叠。 . |── 前端工具 | ├──VS Code 的使用 | ├──Git 使用 | ├──Mac 安装和 iTerm2 配置 | ├──Sublime Text 的使用 | ├──WebStorm 的使用 | ├──Atom 的使用 | ├──GitHub 的使用 | ├──VS Code 的使用累积 | ├──Chrome 浏览器 | ├──Emmet in VS Code | ├──iTerm2 + OhMyZsh + agnoster 搭建 | ├──iconMoon | └──whistle 网络抓包 |──HTML | ├──认识 Web 和 Web 标准 | ├──浏览器的介绍 | ├──初识 HTML | ├──HTML 标签:排版标签 | ├──HMTL 标签:字体标签和超链接 | ├──HTML 标签:图片标签 | ├──HTML 标签:图文详解 | ├──HTML5 详解 | ├──HTML5 举例:简单的视频播放器 | ├──HTML 详解(二) | ├──HTML 详解(三) | └──HTML 基础回顾 |──CSS 基础 | ├──CSS 属性:字体属性和文本属性 | ├──CSS 属性:背景属性 | ├──CSS 样式表和选择器 | ├──CSS 选择器:伪类 | ├──CSS 样式表的继承性和层叠性 | ├──CSS 盒模型详解 | ├──浮动 | ├──CSS 属性:定位属性 | ├──CSS 案例讲解:博雅互动 | ├──CSS3 选择器详解 | ├──CSS3 属性详解(一) | ├──CSS3 属性详解:动画详解 | ├──CSS3 属性:Flex 布局图文详解 | ├──CSS3 属性:Web 字体 | ├──SaaS 入门 | ├──浏览器的兼容性问题 | └──CSS3 的常见边框汇总 |──CSS 进阶 | ├──准备 | ├──CSS 中的非布局样式 | ├──CSS 布局 | ├──网页开发和设计中的字体常识 | ├──如何让一个元素水平居中 | ├──CSS 开发累积 | ├──CSS 文章推荐 | ├──CSS 的一些小知识 | └──CSS 面试题 |──JS 基础 | ├──编程语言 | ├──JS 简介 | ├──变量 | ├──变量的数据类型:基本数据类型和引用数据类型 | ├──基本数据类型 | ├──typeof 和数据类型转换 | ├──运算符 | ├──流程控制语句 | ├──对象简介 | ├──基础包装类型 | ├──内置对象 | ├──数组 | ├──函数 | ├──作用域和变量提升 | ├──预编译 | ├──this 指向 | ├──call、apply 和 bind | ├──高阶函数 | ├──闭包 | ├──对象 | ├──深浅拷贝 | ├──原型链和原型继承 | ├──类和构造继承 | ├──正则表达 | ├──事件 | └──jQuery |──JS 之 ES6 语法 | ├──ES6 介绍和环境配置 | ├──ES5 中的严格模式 | ├──ES5 中的一些扩展 | ├──ES6:变量 let、const 和块级作用域 | ├──变量的解构赋值 | ├──箭头函数 | ├──剩余参数和扩展运算符 | ├──字符串、数据和对象的扩展 | ├──内置对象扩展:Set 数据解构 | ├──Promise 入门详解 | ├──ES7:async 函数详解 | └──ES6:Symbol |──JS 进阶 | ├──var、let、const 的区别 | ├──数据的赋值 | ├──JS 开发累积 | ├──call、apply、bind 的区别 | ├──this | ├──作用域与闭包 | └──创建对象和继承 |──前端基本功 | ├──CSS 基础练习 | └──DOM 操作练习 |──Ajax | ├──服务器分类及 PHP 入门 | ├──Ajax 入门和发送 http 请求 | ├──函数封装 | ├──同源和跨域 | └──模版引擎 |──移动 Web 开发 | ├──Bootstrap 入门 | ├──Bootstrap 使用 | └──Less 详解 |──Node.

面试官:SPA(单页应用)首屏加载速度慢怎么解决?

一、什么是首屏加载 首屏时间(First Contentful Paint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容 首屏加载可以说是用户体验中最重要的环节 关于计算首屏时间 利用performance.timing提供的数据: 通过DOMContentLoad或者performance来计算出首屏时间 // 方案一: document.addEventListener('DOMContentLoaded', (event) => { console.log('first contentful painting'); }); // 方案二: performance.getEntriesByName("first-contentful-paint")[0].startTime // performance.getEntriesByName("first-contentful-paint")[0] // 会返回一个 PerformancePaintTiming的实例,结构如下: { name: "first-contentful-paint", entryType: "paint", startTime: 507.80000002123415, duration: 0, }; 二、加载慢的原因 在页面渲染的过程,导致加载速度慢的因素可能如下: 网络延时问题 资源文件体积是否过大 资源是否重复发送请求去加载了 加载脚本的时候,渲染内容堵塞了 三、解决方案 常见的几种SPA首屏优化方式 减小入口文件积 静态资源本地缓存 UI框架按需加载 图片资源的压缩 组件重复打包 开启GZip压缩 使用SSR 减小入口文件体积 常用的手段是路由懒加载,把不同路由对应的组件分割成不同的代码块,待路由被请求的时候会单独打包路由,使得入口文件变小,加载速度大大增加 在vue-router配置路由的时候,采用动态加载路由的形式 routes:[ path: 'Blogs', name: 'ShowBlogs', component: () => import('./components/ShowBlogs.vue') ] 以函数的形式加载路由,这样就可以把各自的路由文件分别打包,只有在解析给定的路由时,才会加载路由组件 静态资源本地缓存 后端返回资源问题: 采用HTTP缓存,设置Cache-Control,Last-Modified,Etag等响应头 采用Service Worker离线缓存

python集合中的元素是否可以重复_python中集合中的元素是否可以重复

python中集合中的元素不可以重复。集合是一个无序的不重复元素序列,我们可以使用大括号{}或者set()函数来创建一个集合,具体语法为:【parame = {value01,value02,...}】。 python中集合中的元素不可以重复。 集合定义: 集合(set)是一个无序的不重复元素序列。 创建: 可以使用大括号 { } 或者 set() 函数创建集合。 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 格式:parame = {value01,value02,...} 或者set(value) 举例:jihe = {1,2,3,4,5} #与字典看上去类似,但是是不一样的。字典是 dict1 = {key:value,key2:value2,}需要key 添加元素: 使用set.add() 方法 例:set1 = {1,3} set1.add(2)print(set1)

linux 查看操作系统信息_Linux和windows操作系统下,如何快速查看电脑的MAC地址?...

如何查看电脑的MAC地址? 在某些特定应用中,需要使用电脑或终端的MAC地址。本文介绍各类操作系统的网卡MAC地址查看方法,请参考对应的操作系统。 注意: 请您填写您本地网卡的物理地址,不要填写虚拟机虚拟网卡、Wifi网卡的物理地址 Windows XP操作系统有线网卡MAC地址查看方式如下: 在电脑桌面找到 网上邻居,右击选择 属性,找到 本地连接,右键点击并选择 状态。如下图所示: 选择 支持,点击 详细信息。如下图所示: 网络连接详细信息中的 实际地址 即为该有线网卡的MAC地址。如下图所示: Windows 7操作系统有线网卡MAC地址查看方式如下: 点击桌面右下角的 网络图标,选择 打开网络与共享中心,点击左上角的 更改适配器设置。找到 本地连接,右键点击并选择 状态。如下图所示: 点击 详细信息。如下图所示: 网络连接详细信息中的 物理地址 即为该有线网卡的MAC地址。如下图所示: Windows 8操作系统有线网卡MAC地址查看方式如下: 点击桌面右下角的 网络图标,选择 打开网络和共享中心,点击左上角的 更改适配器设置。找到 以太网,右键点击并选择 状态。如下图所示: 点击 详细信息,如下图所示: 网络连接详细信息中的 物理地址 即为该有线网卡的MAC地址。如下图所示: Windows 10操作系统有线网卡MAC地址查看方式如下: 鼠标右键点击桌面右下角的 网络图标 ,选择 打开网络和共享中心,在弹出的对话框中找到并点击 以太网,如下图所示: 在以太网状态页面中,点击 详细信息,如下图所示: 网络连接详细信息中的 物理地址 即为该有线网卡的MAC地址。如下图所示: MAC OS: 1.启动系统,然后点击屏幕左上角的苹果图标。 2.在弹出的菜单里选择“系统偏好设置”,然后在新窗口里点击“网络” 3.在“网络偏好设置”窗口,在左侧选中“以太网”,然后点击右下的“高级”按钮 4.在弹出的“高级”窗口上部的选项卡上选择“以太网” 。物理地址或以太网ID就是你的网卡MAC地址。 原作者:黑马程序员 原平台:黑马程序员百家号 原链接: 黑马程序员:Linux和window操作系统下,如何查看电脑的MAC地址?​mbd.baidu.com

python写入csv文件的中文乱码问题

中文乱码 今天练习爬虫,突然心血来潮想要顺便回顾一下csv,运行保存完之后我傻了,全是中文乱码。所以这次解决完后在抓紧记在小本本上~~ 好啦,言归正传,先贴代码 with open('test.csv','w',encoding='utf-8',newline='')as csvfile: writor = csv.writer(csvfile) new_list = list(x.items()) #把字典转为列表 for i in new_list: writor.writerow(i)` 在vscode中显示也很正常 但是我打开csv文件时,啪一下就变乱码了,很快啊 这就有点不讲码德了,我说怎么回事?这么一个问题来为难我一个刚入门的小白,这好吗? 解决方案 后来问了问同学,把utf-8改成utf-8-sig就解决了 with open('test.csv','w',encoding='utf-8-sig',newline='')as csvfile: writor = csv.writer(csvfile) new_list = list(x.items()) for i in new_list: print(i) writor.writerow(i) utf-8和utf-8-sig 原来是Excel 在读取 csv 文件的时候是通过读取文件头上的 BOM 来识别编码的,如果文件头无 BOM 信息,则默认按照 Unicode 编码读取。而csv默认是ANSI.当我们使用 utf-8 编码来生成 csv 文件的时候,并没有生成 BOM 信息,Excel 就会自动按照 Unicode 编码读取,就会出现乱码问题了。 我这可不是乱说的啊,明显是有备而来(附上两者区别): 1、”utf-8“ 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,所以这个不需要BOM,因此用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理,导致出现上述错误 2、“uft-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8”, 多以"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开,这就是我们需要的结果了.

tiny扩充语言的语法分析_编程语言的实现,从AST(抽象语法树)开始

前言 一直想聊一聊抽象语法树,但一直不知道如何下手。最近随意google的时候,突然发现一篇相当不错的文章。一个国外哥们写的。 原文出自《AST for JavaScript developers》 本着“学习”精神变把他的文章拜读一番,然后翻译了一下。希望这个外国小哥哥不要打我,哈哈。 正文 为什么要谈AST(抽象语法树)? 如果你查看目前任何主流的项目中的devDependencies,会发现前些年的不计其数的插件诞生。我们归纳一下有:javascript转译、代码压缩、css预处理器、elint、pretiier,等。有很多js模块我们不会在生产环境用到,但是它们在我们的开发过程中充当着重要的角色。所有的上述工具,不管怎样,都建立在了AST这个巨人的肩膀上。 所有的上述工具,不管怎样,都建立在了AST这个巨人的肩膀上 我们定一个小目标,从解释什么是AST开始,然后到怎么从一般代码开始去构建它。我们将简单地接触在AST处理基础上,一些最流行的使用例子和工具。并且,我计划谈下我的js2flowchart项目,它是一个不错的利用AST的demo。OK,让我们开始吧。 什么是AST(抽象语法树)? It is a hierarchical program representation that presents source code structure according to the grammar of a programming language, each AST node corresponds to an item of a source code. 估计很多同学会和图中的喵一样,看完这段官方的定义一脸懵逼。OK,我们来看例子: 这很简化 实际上,正真AST每个节点会有更多的信息。但是,这是大体思想。从纯文纯中,我们将得到树形结构的数据。每个条目和树中的节点一一对应。 那怎么从纯文本中得到AST呢?哇哦,我们知道当下的编译器都做了这件事前。那我们就看看一般的编译器怎么做的就可以了。 想做一款编译器是个比较消耗发量的事情,但幸运的是,我们无需贯穿编译器的所有知识点,最后将高级语言转译为二进制代码。我们只需要关注词法分析和语法分析。这两步是从代码中生成AST的关键所在。 第一步,词法分析,也叫做扫描scanner。它读取我们的代码,然后把它们按照预定的规则合并成一个个的标识tokens。同时,它会移除空白符,注释,等。最后,整个代码将被分割进一个tokens列表(或者说一维数组)。 当词法分析源代码的时候,它会一个一个字母地读取代码,所以很形象地称之为扫描-scans;当它遇到空格,操作符,或者特殊符号的时候,它会认为一个话已经完成了。 第二步,语法分析,也解析器。它会将词法分析出来的数组转化成树形的表达形式。同时,验证语法,语法如果有错的话,抛出语法错误。 当生成树的时候,解析器会删除一些没必要的标识tokens(比如不完整的括号),因此AST不是100%与源码匹配的,但是已经能让我们知道如何处理了。说个题外话,解析器100%覆盖所有代码结构生成树叫做CST(具体语法树) 我们最终得到的 想要学习更多关于编译器的知识? the-super-tiny-compiler,一个贼好的项目。大概200来行代码,几乎每行都有注释。 想要自己创建门编程语言? LangSandbox,一个更好的项目。它演示了如何创造一门编程语言。当然,设计编程语言这样的书市面上也一坨坨。所以,这项目更加深入,与the-super-tiny-compiler的项目将Lisp转为C语言不同,这个项目你可以写一个你自己的语言,并且将它编译成C语言或者机器语言,最后运行它。 我能直接用三方库来生成AST吗? 当然可以!有一坨坨的三方库可以用。你可以访问astexplorer,然后挑你喜欢的库。astexplorer是一个很棒的网站,你可以在线玩转AST,而且除了js,还有很多其它语言的AST库。 我不得不强调一款我觉得很棒的三方库,叫做babylon。 它被用在大名鼎鼎的babel中,也许这也是它之所以这么火的原因。因为有babel项目的支持,我们可以意料到它将与时俱进,一直支持最新的JS特性,我们可以放心大胆地用,不怕以后JS又出新版导致代码的大规模重构。另外,它的API也非常的简单,容易使用。 Ok,现在你知道怎么将代码生成AST了,让我们继续,来看看现实中的用例。 第一个用例,我想谈谈代码转化,没错,就是那个货,babel。 Babel is not a ‘tool for having ES6 support’.

python注释的两种类型_Python中注释、基本数据类型的使用、与用户的交互

内容大纲 1、IDE集成开发环境(PyCharm) 2、注释 3、基本数据类型的使用 4、与用户的交互 一、IDE集成开发环境(PyCharm) Python编程专用代码编写软件(PyCharm) 原理:由PyChram启动解释器,即可以直接在PyCharm软件界面运行代码并显示结果 二、注释 被注释的内容不会运行 def fn(): ''' 多行注释 ''' pass # 单行注释 print(123) # 单行注释 三、基本数据类型的使用 1、数字类型 1.1 整型 int (可以理解为 整数型) 作用:用来记录 年龄、号码、数量 等 定义: age = 18 使用:整型可以进行 数学运算和比较运算 print(18 > 17) # True print(18 == 18) # True 1.2 浮点型 float (可以理解为 小数点 型) 作用:用来记录 身高、体重、薪资 等 定义: salary = 1.1 使用:浮点型也可以进行 数学运算和比较运算 print(3.2 > 3.1) # True print(3.2 != 3) # True

智慧路灯杆 多功能智慧路灯杆

智慧路灯杆旨在多杆合一美化街道,实现照明智能化管控和全城无死角视频防控,实现智慧安全的科技城。计讯物联多功能智慧路灯杆主要包括照明控制、环境监测、wifi共享、一键报警、视频监控、人流车流量监测、广播发布、led屏显示、道路积水监测、井盖监测等功能。 多功能智慧路灯杆 照明控制系统 具有单灯和群控系统:系统提供多种控制方式,实现设置开关灯方案,可按单盏灯或群组远程开灯、关灯、调光。同时可根据预先设置,根据人流、车流、环境光暗智能调节路灯明亮度,无需人为干预。 自动巡检系统 可以自动巡检线路、设备工作情况,异常信息直接展示在电子地图上,方便直接管理人员直接确认一场位置与异常情况,及时处理。 充电桩控制系统 可对充电桩实现计费控制,做到无人收费,缓解城市充电桩不足的问题。 路灯数据展示 实时显示路灯设备的在线率、亮灯率、能耗等数据,同时生成统计图表,直观查看智慧灯杆整体情况,异常及时处理。 环境监控数据展示 查看前端环境传感器设备回传的数据,同时监控传感器实时的工作状态,异常情况报警提醒,可实现实时对PM2.5、PM10、噪声、温度、湿度等数据的自动采集、分析以及存储。 信息发布平台 利用智慧灯杆搭载的LED显示屏,及时发布信息,可发布广告、气象数据、政务等信息。 一键报警、救助系统 一键报警系统,即紧急救助系统,集成高清摄像头,支持中心呼叫前端,支持双向语音对讲、广播等功能,实现第一时间报警求助,针孔式的镜头比较隐蔽,难以发现的特点,便于监视,外壳采用金属提高设备的防爆等级。在警力不变的情况下为社会提供更快捷、更有效的服务,并有效的震慑犯罪分子、安定民心,为社会的稳定起到积极的作用。 视频监控平台 具有人脸识别、视频深度分析功能,既能起到安防监控效果,又可对环境、车流、人流等数据进行监控,保障卫生、人身安全。 城市内涝监测平台 实时监控、展示城市各处水位信息、下水道数据、井盖等数据,可调用摄像头、IP音柱、报警系统,多级联动,出现异常可以第一时间进行处理。同时将相关信息下发LED屏、音柱等,提醒行人。 计讯物联智慧路灯杆,杆体集成灯控、信息屏、视频摄像、环境监测传感器等设备,智慧路灯网关+云平台,实现数据采集传输转发,大数据分析处理,远程监测调控指令下发,实现便捷高效的智能管控。

k8s 重启pod_如何重启 Kubernetes 中的 Pod?

在使用 Docker 时,我们可以使用 docker restart container_id 来非常方便的重启容器,但是在 kubernetes 中并没有重启 pod 的命令。有时 Pod 意外终止时,我们希望重启 pod,来进行排障或者尝试恢复服务。这时我们会发现蛋有点疼,没有一个很直观的方式来重启 pod。 这里我总结了几种重启 Pod 的方式,分两种情况讨论如何重启 K8S 中的 Pod,希望对大家有所帮助。 第一种方式:Deployment方式下重启Pod 大多数生产环境,使用的是 Deployment 方式部署应用。这种场景下,我们可以直接删除对应的 Pod,让k8s去完成 pod 重建,命令: kubectl delete pod {podname} -n {namespace} 这个方法简单粗暴有效。因为 Kubernetes 是声明式 API,所以删掉了之后,Pod API 对象就与预期的不一致了,便会自动重新创建 Pod 保持与预期一致。但是如果ReplicaSet 管理的 Pod 对象很多的话,那么要一个个手动删除,会很麻烦,所以可以使用命令来删除 ReplicaSet, kubectl delete replicaset {rs_name} -n {namespace} 由于 Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本数目的定义和Pod 模板组成,所以我们也可以通过调整 ReplicaSet 的数量来实现重启,比如先 scale 到 0,然后再 scale 到 1,那么 Pod 也不得不重启,

总结该问题解决方案:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized

问题描述: 两天没有碰过用过机器,之后今天打算跑一个代码,直接报错: OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized 具体原因目前不知道是因为啥, 情况一:之前没有任何下载安装等其他异常操作,则直接使用的时候报错了。 可以检查一下自己anaconda的安装路径中是否存在两个该dll文件。比如我在pycharm中使用的是虚拟环境pytoch1.7,在pycharm的右小角可以看到自己当前使用的环境。 找到该环境的位置: 之后我在该文件夹下搜索libiomp5md.dll文件果真存在两个,那么删除其中一个就好了,为了保险起见,我们可以进行备份。之后出问题,还能进行找补。 我的问题属于情况一,所以是成功解决了我的问题。 情况二:确定使用matplotlib导致的 那么可能是该库影响了,那么可以尝试一下该命令conda install nomkl 对该包进行安装,看是否能解决问题。 情况三:numpy或其他 根据错误提示添加相应的配置 import os os.environ['KMP_DUPLICATE_LIB_OK']='True' 该语句建议放在文件的顶头部分,且保证两句接连的前后顺序关系,即不要在这两个语句之间插入其他语句。

HTML的了解——小白篇(1)

返回目录 初始HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 HTML的发展史 HTML 1.0:在1993年6月作为互联网工程工作小组(IETF)工作草案发布,由此超文本标记语言第一版诞生。HTML 2.0:1995年1 1月作为RFC 1866发布,于2000年6月发布之后被宣布已经过时。HTML 3.2:1997年1月14日,W3C推荐标准。HTML 4.0:1997年12月18日,W3C推荐标准。HTML 4.01(微小改进):1999年12月24日,W3C推荐标准。HTML 5:HTML5是公认的下一代Web语言,极大地提升了Web在富媒体、富内容和富应用等方面的能力,被喻为终将改变移动互联网的重要推手。 2014年10月28日,W3C推荐标准。 HTML5的诞生,标记着互联玩时代的发展,比如所HTML5里面诞生的音频、视频、图像、动画等都做了新的标准,它对于浏览器的兼容也是得到了一定的处理,由此可见,HTML的整个历史发展目前为止我们所使用的版本主要是99年诞生的HTML 4.01以及2014年诞生的HTML5。 web标准(重点) 主要包括结构,表现,行为三个方面 标准说明结构【HTML】结构是对网页元素进行整理和分类,现阶段主要学的是HTML。表现【CSS】表现是对于设置网页元素的版式、颜色、大小等外观样式,主要指的是CSS。行为【Javascrinpt 】行为是网页模型的定义击交互的编写,现阶段主要学的是Javascrinpt。 HTML基本结构(也称为骨架标签) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基本结构</title> </head> <body> <h1>我的第一个标题</h1> <p>我的第一个HTML</p> </body> </html> <HTML></HTML> 等.......成对的标签,分别叫开放标签和闭合标签 单独呈现的标签(空元素),如(hr/);以为用/来关闭空元素 常见的HTML工具 记事本 Dreamweaver IDEA webstorm …

Centos7安装mysql-mysql5.7.20-之默认密码修改-使用ALTER USER命令修改

目录 1、使用默认密码连接数据库: 2、试着列出所有数据库信息: 3、修改密码: 3.1、修改当前登录用户密码: 3.2、测试修改后的密码是否生效: 3.3、注意: 上一篇咱们在Centos7中成功安装了mysql5.7.20,具体信息如下: 接下来进行默认密码修改操作。 1、使用默认密码连接数据库: 2、试着列出所有数据库信息: 系统会提示,需重新设置密码方可操作。 3、修改密码: 在 MySQL 文档里,推荐使用 ALTER USER 修改用户密码。 ALTER USER 官网参考手册:https://dev.mysql.com/doc/refman/5.7/en/alter-user.html 3.1、修改当前登录用户密码: ALTER USER USER() IDENTIFIED BY 'MmsqI.250$'; 3.2、测试修改后的密码是否生效: 新密码可以正常登录。尝试操作: 已经可以正常执行和显示。 3.3、注意: MySQL版本5.7.6版本以前用户可以使用如下命令: mysql> SET PASSWORD = PASSWORD('MmsqI.250$'); MySQL版本5.7.6版本开始的用户可以使用如下命令: mysql> ALTER USER USER() IDENTIFIED BY 'MmsqI.250$';

python post form data_Python发送form-data请求及拼接form-data内容的方法

import urllib2 boundary='-------------------------7df3069603d6' data=[] data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="app_id"\r\n') data.append('xxxxxx') data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="version"\r\n') data.append('xxxxx') data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="platform"\r\n') data.append('xxxxx') data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="libzip"; filename="C:\Users\danwang3\Desktop\libmsc.zip"') data.append('Content-Type: application/octet-stream\r\n') fr=open('C:\Users\danwang3\Desktop\libmsc.zip') content=fr.read() data.append(content) print content fr.close() data.append('--%s--\r\n'%boundary) httpBody='\r\n'.join(data) print type(httpBody) print httpBody postDataUrl='http://xxxxxxxx' req=urllib2.Request(postDataUrl,data=httpBody) 经过测试,使用上述方法发送一段二进制文件的时候,服务器报错,数据有问题! 问题就出在 '\r\n'.join(data)的编码,data内部拥有二进制数据,通过这种编码,可能是把数据转换为utf-8格式,当然有问题。 搜索了很多资料,查到可以使用requests库提交multipart/form-data 格式的数据 一个multipart/form-data 的表单数据,在http里面抓包如下: #Content-Disposition: form-data;name="app_id" 123456 #-----------------------------7df23df2a0870 #Content-Disposition: form-data;name="version" 2256 -----------------------------7df23df2a0870 Content-Disposition:form-data; name="platform" ios -----------------------------7df23df2a0870 Content-Disposition: form-data;name="libzip";filename="C:\Users\danwang3\Desktop\libmsc.zip"

小白刷题——整数反转

JAVA小白自学中 整数反转 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2……31, 2……31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 标题示例 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 代码 class Solution { public int reverse(int x) { long a, b, c, d; b = 0; c = 1; d = 2147483648L; if (x == -2147483648) { return 0; } if (x < 0) { x = -x; c = -1; } for (long i = x; i !

猜数游戏c语言编程_做游戏,学编程(C语言) 20 扫雷

应 @姑娘的衣扣 同学的要求,分享16级同学大一上学期实现的扫雷游戏。分步骤代码、可执行程序、录屏效果可以从百度网盘下载:http://pan.baidu.com/s/1gf6AHKv 开局画面: 胜利画面: 失败画面: 主要功能描述: 1.全局变量:时间基点,地图,图片资源,关键状态; 2.绘图初始化函数drawinit:载入图片资源; 3.设置器函数Setup:放置地雷; 4.主要显示函数Show:依照层次结构显示雷区; 5.队列处理函数duires:(核心算法)对无雷的输入进行扩展搜索,调用位置搜索函数辅助,调用响应函数输出; 6.位置搜索函数poi_sum:队列处理函数的辅助函数,将输入点的坐标周围八个格子的雷数返回给他; 7.响应函数do_null,not_null:随时处理队列处理函数的结果; 8.主控函数Control:接受鼠标的输入,处理简单的逻辑,复杂的交由队列处理函数执行; 9.计时器函数Time:计算累计时间,并显示; 10.胜利判定Judge:判断是否用户胜利; 11.主函数main:控制中心。 主要实现步骤: 1.明确游戏流程:包括重要的游戏规则和逻辑,如被旗帜标记的方块无法被点击等。 2.搭建游戏框架:采用老师的框架和重要模块分开编写,并定期整合的方式进行。 a.图片显示:一开始采用网上(贴吧)的资源,后来大部分利用办公软件制作。 b.核心算法:尝试了链表和结构体数组,都出错(溢出),多次调试后发现是由于标志原因,无法区别已经处理和未处理的模块;再次调试发现效率极低,检查后发现是一个位置的变量名使用了上一级循环的变量名。 c.程序调度。 3.添加额外模块:将一些不太重要的功能写成函数,加入调度。 a.计时器:利用了钟表程序的一部分代码,做了很多修改。 b.加亮显示:提醒用户鼠标指向的位置。 c.开局提示及重新开始。 4.代码优化。

复化simpson公式matlab_复合辛普森公式(compound simpson formula)

复合Simpson公式的收敛阶为4 阶。 复合Simpson Matlab函数 function I = fsimpson(fun,a,b,n)h = (b-a)/n;x = linspace(a,b,2*n+1);%bailinspace(x1,x2,N)用于产生x1,x2之间的N点行线性的矢量;%其中x1、x2、N分别为起始值、终止值、元素个数。y = feval(fun,x); %表示序列x输入fun函数后的输出I = (h/6) * ( y(1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n))+y(2*n+1) );%sum(y(3:2:2*n-1))中点之和%sum(y(3:2:2*n-1))中间点之和end 被积函数f(x) Matlab表示 f=@(x)(sin(1./x)); %@表示参数;%(x)表示一个参数;%(sin(1./x))表示被积分函数; 求解 f=@(x)(sin(1./x)); m=fsimpson(f,1,1.5,5);format longmm = 0.360810692814114

期刊模板-如何去除左下角的横线

如图: 这个横线无法被选中,如何删去这个横线? 这是因为页面中插入了脚注; 解决方法: 光标定位于横线下方的回车处,右击,“定位至脚注”,将脚注删除,即可。

M0内核与M3内核比较

M3比M0性能更高,原因是: 1、M0比M3少好多指令,M0只有56条指令,其中50条是16位的,因此好多M3一条指令就能完成的功能M0需要多条指令 2、M3的数据总线和指令总线是分开的,可以同时取指和取操作数,而M0取指和取操作数是同一条总线 M0相对于M3的优点是更小,所以价格便宜。 之所以用M3的比用M0的还多,我想一个原因可能是M3出来的更早 不过我相信长远来看用M0的还是要比用M3的要多,毕竟M0的性能对大多数MCU的应用场合已经足够了,而价格又便宜不少 你不看,出M3内核单片机的厂商都出M0内核单片机了。。而很多后来做Cortex-M单片机的厂商都只做M0和M4,跳过M3不做,比如飞思卡尔、英飞凌和新塘 不过M0和M3用起来也没啥区别,如果是学习的话,随便哪个都一样

服务器断电后,postgresql重启失败

1.问题:服务器突然断电,连接数据库报错。计划重启,发现postgresql重启失败。 psql: error: could not connect to server: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 执行:service postgresql restart显示failed 2.查看/tmp目录下并没有.s.PGSQL.5432;尝试删除postmaster.pid,重启postgresql依然失败,所以猜测不是删除/tmp/.s.PGSQL.5432和postmaster.pid能解决的 3.尝试切换到pgadmin用户,执行su - pgadmin失败,查看cat /etc/passwd,发现pgadmin:x:500:500::/home/pgadmin:/sbin/nologin,用户pgadmin无法登录。 4.解决方法:执行usermod -s /bin/bash pgadmin,允许pgadmin用户登录,重新启动psql成功。

2021年最新版Web前端学习路线图-前端小白入门必读-推荐

2021年最新版Web前端学习路线图-前端小白入门必读-推荐 Hello,大家好,相信很多学习前端的小伙伴,会有很多的疑惑: 我要学习那些技术? 我要到哪里去学习这些技术呢? 学习这些技术的目的对就业有什么帮助呢? 我学到什么程度可以胜任工作? … 这里,给你们最全的解答。 HTML5 + CSS3 根据web前端发展史,建议大家先学习pc端页面开发。 包含: HTML5、CSS3、浮动、定位、盒子模型、高级技巧等等。 不用说,这是我们前端入门的最基本要求,目的是能完成页面的布局开发,这部分必须精通。 这部分知识比较简单,不要去买书看了(太浪费时间),直接看pink老师视频就够了哈。 https://www.bilibili.com/video/av80149248 学完之后,只要网上看到喜欢的页面,就可以模仿下来,意味着你掌握成功。 移动端页面开发 我们先学习了pc端页面开发,但是现在移动端太常见了,所以我们也需要做移动端页面开发。 主要学习移动端常见布局:流失布局、flex布局、rem布局、响应式布局等。其中市场rem布局用的最多了,重点掌握。 网上相应的布局视频很多,可以重点学习。 最终起码把几个大厂的移动端首页写出来才可以。比如淘宝、京东、小米等。 JavaScript 系列 JavaScript是我们前端的核心,需要精通掌握,可以直接学习ES5,ES6就可以了。这样就可以让我们页面交互效果动态展示起来了。 包含: JavaScript 基础语法及 Web API 开发动态交互(⽹⻚特效)的⽹⻚、JavaScript ⾼级特性,如⾯向对象、闭包、事件循环等技术、 jQuery也要了解一些,现在市场很多老项目还是大量有jQuery的,你说不会jQuery,人家不相信你前端工作过。。。 学习渠道: 最权威的JavaScript网站 MDN: https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/JavaScript_basics 当然还可以去菜鸟教程等。 各种视频网站, 首推B站, 还有 慕课,腾讯课堂等。搜索相关关键字即可。 JavaScript 相关面试题可以去 掘金、牛客网、github 等网站。 相信我,最好的还是百度。 学到js ,你应该要有自己的 github 或者码云的账号了,里面有大量资源可以让你去查阅学习。 推荐的书籍: 《JavaScript DOM 编程艺术 》、 《JavaScript高级程序设计》、 《你不知道的JavaScript 》、 《锋利的jQuery 》等, 建议直接网上搜电子书即可。 Ajax 和 git 前面我们写的所有页面都是静态的,也就是所有的数据都是假数据,实际开发的时候,数据都是从后台获取过来的,那么如何获取后台的相关数据呢? 答案就是 ajax。

popen函数_python中os模块的内置函数

python内置的os模块是与操作系统(OS即Operating System的缩写)进行交互的模块,他可以实现很多在命令行下面的操作。 例如:获取操作系统信息、获取/修改环境变量、进行目录操作(创建、删除、遍历)和各种文件操作等等。 下面我们列举几个重要并且常用的内置函数: 1、os.system() 该函数用于执行系统命令,用法示例: command_shell = "ps aux | grep test"os.system(command_shell ) 使用os.system执行完成后,会同步打印出终端输出结果,但是结果不会赋值给指定的变量。 os.system()执行完成后,如果执行成功了,返回结果是0,失败了返回0以外其它的值。 2、os.popen() 如果想将终端输出结果赋值给指定的变量,可以使用os.popen() os.popen的用法和os.system的用法一样,见下图: 终端输出结果会以一行为一个变量,放在一个文件当中,需要使用readlins()方法来查看,使用完成后需注意一定要用close()方法关闭。 3、os.path.abspath(path) 返回绝对路径,用法示例: 4、os.path.exists(path/file_name) 判断文件是否存在,存在则返回True,不存在则返回False 用法示例: 5、os.path.isdir(path) 判断给定路径是文件还是文件夹,是文件夹的话就返回True,否则则返回False 用法示例: 6、os.path.isfile(path) 判断给定路径是文件还是文件夹,是文件的话就返回True,否则则返回False 用法示例: 7、os.rmdir(path) os.remove() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。 如果成功后,该方法没有返回值,失败后则抛出异常。 8、os.remove(file_name) os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。 如果成功后,该方法没有返回值,失败后则抛出异常。 9、os.access() 检测登录用户对文件和路径的权限 语法格式: os.access(path, mode) 参数 path -- 要用来检测是否有访问权限的路径。 mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。 os.F_OK: 作为access()的mode参数,测试path是否存在。 os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。 os.W_OK 包含在access()的mode参数中 , 测试path是否可写。 os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。 #!/usr/bin/python# -*- coding: UTF-8 -*-import os, sys# 假定 /tmp/foo.

LUA 中的hdf5版本问题

错误信息 Unsupported HDF5 version 解决方法: sudo apt-get install libhdf5-serial-dev hdf5-tools git clone https://github.com/deepmind/torch-hdf5 cd torch-hdf5 luarocks make hdf5-0-0.rockspec LIBHDF5_LIBDIR="/usr/lib/x86_64-linux-gnu/" 修改hdf5的版本

圈复杂度及其运用

1.圈复杂度的定义 圈复杂度是由Thomas J. McCabe, Sr. 在1976年提出的概念,用于判断代码复杂度。圈复杂度(Cyclomatic complexity)又称为条件复杂度或循环复杂度,用于衡量要给模块判定结构的复杂程度;数量上表现为独立的现行的路径条数,也可理解为覆盖所有的可能情况的最少使用的测试用例数。 2.圈复杂度的计算方法 圈复杂度的概念计算方法有3种。 1)控制流程图 一般来说,软件程序的流程分为三种:顺序、条件和循环。用流程图标识出所有分支,可以表示出所有的圈复杂度。如下如所示: 2)节点判定法 一个比较简单的方法是:圈复杂度就是等于判定节点的数量加上1。在编程语言中国,条件判断if-else, swtich-case、for循环、while循环、三木运算符,都可以作为一个判定节点。(国内一些公司,比如华为等公司,就是这么计算的) 样例如下: funciton complexityExample(param) { if(param > 0) { print(0); } else { print(1) } return param < -1 :True ? False; } 可知,这段程序的圈复杂度为3+1= 4. 3)点边计算法 计算方法为C = E - N + 2P,其中, E为控制流图(需要的方法为1)中的边的数量,N为控制流图中的节点数量,P为独立组件的数目。 可得,E为9, N为6,P为1,可得C为5。 3.圈复杂度的衡量标准 一般来说,代码复杂度第,代码不一定好;但代码复杂度高,代码质量一定差。具体衡量标准如下: 圈复杂度代码状况可测性维护成本1 - 10清晰、结构化高低10 - 20复杂中中20 - 30非常复杂低高>30不可读不可测非常高 4.降低圈复杂度的方法 降低圈复杂度的方法为重构。但是,重构应该保持原有功能不变,并不断完成。 降低圈复杂度方法如下; 1)抽象配置; 2)单一职责-提炼函数; 3)合并条件; 4)提取条件。 同事,针对圈复杂度过于高的语句部分,可以提出来一个函数。