文章目录 B Mine Sweeper II 思维D WalkerG Fibonacci 思维+规律M Gitignore (模拟+思维) 题目地址 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海) 这次题目稍微简单一些,我们做了三个,B,G,M,本来D题应该能做出来的,但是我当时没有考虑全面,脑子混乱,结果没做出来,最后的 B Mine Sweeper II 思维 题目地址B Mine Sweeper II
题目大意:类似扫雷,有扫雷的规则,不过这个是挖矿,我基于扫雷来说明题意,一个网格,有的地方有雷,有的地方没有雷,没有雷的格子显示这个格子一周8个格子中雷的个数。输入中的.表示没有雷的位置,x表示有雷的位置。给两个mn的网格,让你更改第二个网格中有没有雷的状态,最多更改 ⌊ m n 2 ⌋ \lfloor\frac{mn}{2}\rfloor ⌊2mn⌋次,让第二个网格中所有没有雷的格子上的数字的和等于第一个网格中的数字和。
思路:总之,最后是要么将第二个格网格改成第一个网格一样的,要么改成与第一个网格相反的。有一个规律,如果改成与第一个网格相同需要a次那么改成与第一个网格相反的则需要mn-a次,同时保证了他们的数字和相同
AC代码:
#include <bits/stdc++.h> #define ll long long #define INF 0x3f3f3f3f using namespace std; string strs[1005]; string strs2[1005]; int a[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}}; int judge(int n,int m) { int ans=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(strs[i][j]!=strs2[i][j]) ans++; } } return ans; } void print(int n,int m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { printf("
一、 git add:将工作区的内容提交的暂存区 1、git add [file1] [file2] ... 指定文件到暂存区 例如 新建两个文件和两个文件夹
然后
git add 1.txt 2.txt 我们查看一下状态,两个文件被加到了暂存区
2、 git add [dir]... 指定文件夹到暂存区 我在folder1中新建一个空文件夹和一个文件
然后我来执行 git add folder1 从这个来看,git只提交不为空的文件夹,如果是空文件夹,git不提交到暂存区 3、git add . 添加当前目录的所有文件到暂存区 git add . git 根目录下的所有文件都提交了
那我要是就想单独提交folder2下的文件呢 D:\git (master) λ cd folder2 D:\git\folder2 (master) λ git add . D:\git\folder2 (master) λ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: .
前面两篇文章已经一步一步展示了如何使用backtrader以及使用backtrader的一些重要概念和注意事项。但是你要真正灵活地使用backtrader实现自己的策略,还需要了解backtrader各个组成部分。本文开始,对backtrader的类进行详细的说明。为了让大家更能深入了解backtrader的运行机制,咱们基于源代码进行解读。
代码架构中,会用到元类,我们先了解元类在backtrader中的应用。
元类 在backtrader的类定义中,经常出现如下定义:
class Cerebro(with_metaclass(MetaParams, object)): class MetaLineRoot(metabase.MetaParams): class WriterBase(with_metaclass(bt.MetaParams, object)) 里面经常出现的metaclass,就是元类的意思。
在backtrader中,基本上所有类从元类继承。我们从顶往下看,先看metabase类。
class MetaBase(type): def doprenew(cls, *args, **kwargs): return cls, args, kwargs def donew(cls, *args, **kwargs): _obj = cls.__new__(cls, *args, **kwargs)s return _obj, args, kwargs def dopreinit(cls, _obj, *args, **kwargs): return _obj, args, kwargs def doinit(cls, _obj, *args, **kwargs): _obj.__init__(*args, **kwargs) return _obj, args, kwargs def dopostinit(cls, _obj, *args, **kwargs): return _obj, args, kwargs def __call__(cls, *args, **kwargs): cls, args, kwargs = cls.
文章目录 host模式nonecontainer模式bridge模式 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。 Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。
host模式 容器和宿主机共享Network namespace docker不会为容器创建独有的network namespace;
使用宿主机的默认网络命名空间,共享一个网络栈;
表现为容器内和宿主机的IP一致;
这种模式用于网络性能较高的场景,但安全隔离性相对差一些。
none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等 none模式可以说是桥接模式的一种特例,docker会为容器创建独有的network namespace ,但不会为这个命名空间准备虚拟网卡,IP地址,路由等,需要用户自己配置。
container模式 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace 容器共享模式,这种模式是host模式的一种延伸,一组容器共享一个network namespace;
对外表现为他们有共同的IP地址,共享一个网络栈;
kubernetes的pod就是使用的这一模式。
bridge模式 默认为该模式 桥接模式,有点类型VM-NAT,dockerd进程启动时会创建一个docker0网桥,容器内的数据通过这个网卡设备与宿主机进行数据传输。
docker会为容器创建独有的network namespace,也会为这个命名空间配置好虚拟网卡,路由,DNS,IP地址与iptables规则(也就是sandbox的内容)
bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。
1. 定义Http param消息体
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class Req{
private String id;
private JSONObject ehrNormalResultEntity; // JSONObject 格式,实例化时需要用JSONObject.parseObject("")转义
}
2. HttpClient
public JSONObject apply(String param, String token) throws Exception {
String url = "http://; // url
// String response = HttpClient.sendPostDataByJson(url, param,token); //发送Post请求
String response = HttpClient.sendGetDataAndToken(url,param,token); //发送get请求
JSONObject result = JSONObject.parseObject(response);
return result;
}
3. 构建实体HttpClient并发送,获取返回结果
Req req=Req .builder()
.id(normalId)
.comment("")
.approveStatus(1)
.build();
String param = JSON.
问题:git拉取远端代码,本地npm install 后报错
报错类型:
1、Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Unsupported runtime (93)
2、Run “sh -c node scripts/build.js” error, exit code 1
3、在这里插入代码片node.js - error: no template named ‘remove_cv_t’ in namespace ‘std’; did you mean ‘remove_cv’? - Stack Overflow
电脑配置:2021款MacBook Pro m1芯片
node --version 版本 v16
解决:最终发现是node16版本和node-sass不兼容造成的
附上:下载node链接
http://nodejs.cn/download/
希望对大家有所帮助
这里是引用
Ubuntu20.04与Win10双系统安装教程 查看电脑BIOS模式 目前电脑大部分是UEFI。
按下win+r输入msinfo32回车确认,出现以下信息
其中BIOS模式显示了我的电脑是UEFI模式。如果显示传统则是MBR。(这个在之后挂载启动项时会用到。)
安装步骤 1.在Win10系统下创建空白磁盘分区 在桌面,右击此电脑,选择管理,然后选择磁盘管理,如下图所示。
(这是我安装完Ubuntu后的磁盘分区,Ubuntu安装完在与win10在一个盘)。
在这里右键选择需要安装Ubuntu的磁盘,然后选择删除卷。
注意:不要删除win10盘和大概100M的win10引导盘,以及在安装Ubuntu时也不要碰这两个盘,不然win10无法使用。
2.用软碟通(UltraISO)将Ubuntu的镜像写入U盘 下载并安装软碟通,插上U盘,并且最好备份你的U盘,因为之后需要格式化。(软碟通可以在下载自 网盘链接 提取码:1125)安装完后一直点试用就可以了。
进入软碟通,进行如下操作选择文件,并且打开你下载的ubuntu所在的目录,选择unbuntu镜像,双击打开。(Ubuntu20.04镜像可以下载自 网盘链接 提取码:1125)
在软碟通界面菜单栏选择启动,选择写入硬盘映像。
进入之后界面如下所示。(注意次序)
1)看你的硬盘驱动器是否对应的是你的U盘(必须是) ,一般默认是。
2)看映像文件是否对应你的ubuntu镜像。
3)如果上述均没有错误,选择格式化,之后就会格式化你的U盘。
4)在U盘格式化完毕之后,选择写入,之后就是慢慢等待了,等待写入完毕。
U盘安装系统 重启电脑,在开机进bios(这个直接百度就可以了,例如Lenovo和ThinkPad都是F1),在boot manager里关掉secure boot。(位置不固定,看个人电脑)。
然后,再重启电脑,进入导引项选择界面(这个也可以百度,Lenovo和ThinkPad都是F12),在这个界面选择你U盘的名称,按下Enter键。
等待一会后会出现Ubuntu的加载安装界面,如下图所示。
这里在左边语言列表中选择语言为中文,然后点击安装Ubuntu。
然后会让你选择是否联网安装,联网会很慢,这里选择不联网。但需要选择安装第三方软件或驱动,因为后面可能会出现没有无线网卡驱动的情况,就很麻烦了。
继续安装,当出现选择安装类型界面时,选择其他安装。这个界面要谨慎操作,因为里面有一项是win10系统的安装位置,不要点击这一项,不然win10会被覆盖(更多是两个系统都打不开)。
点击其他安装后就是手动分区的部分,这部分十分重要,关系后面你的使用体验。**不要动win10的安装盘和那100M的启动盘位置,其他位置按照如下方式分区和挂载。**点空闲的盘符,点击+号进行分区。
/efi:这个就是实现你双系统的原因了,这个就是用于启动ubuntu的目录,里面会有系统的引导,这个文件其实只有几十兆,但是建议将其划分为200M文件格式为ext4,这个分区必不可少。(如果是MBR模式,请将名称改为/boot。)记住这个分区的名称,然后需要在安装启动引导器的设备中选择这个位置,不然没有开机启动项界面。/swap:这个是ubuntu的交换区目录,这个一般的大小为内存的2倍左右,主要是用来在电脑内存不足的情况下,系统会调用这片区域,来运行程序,可以将其分为4G,这个把ext4换成交换空间。/:这是ubuntu的根目录,就一个反斜杠表示,相当于windows的C盘,文件格式为 ext4,条件允许可以40G,毕竟ubuntu装软件默认是装在这里的,大一点可能会省去后面隐藏的麻烦。/home:这是ubuntu的“其他盘”,这个也可以说是我们的个人目录(Ubuntu默认root用户不能登录,这就是为什么要管理员权限时必须使用sudo命令),相当于windows的其他盘,所以为了让自己的目录大一点,剩下的全分给它,文件格式为 ext4。 然后接着安装,接下来的界面可以参考设置为:时区选择shanghai,键盘布局选择中文,用户名和密码自由设置。安装完成后,会提示拔掉U盘再重启,然后在启动引导中选择Ubuntu,(这里一般第三项是window boot manager),等待Ubuntu扫描完系统分区,能够进入系统即是安装成功。
注:部分图片来自网上。
参考: https://www.cnblogs.com/masbay/p/10745170.html
抽象的 夜间灯光(NTL)遥感数据已被广泛用于推导国家和区域尺度的社会经济指标,以研究区域经济发展。然而,以往的研究大多只选择单一的衡量指标(如GDP),采用简单的回归方法,基于DMSP-OLS或NPP-VIIRS稳定的NTL数据来考察某一地区的经济发展情况。现状表明,单一评价指标存在问题——评价精度低。LJ1-01卫星是全球首颗NTL专用遥感卫星,于2018年7月发射,LJ1-01提供的数据具有更高的空间分辨率和较少的晕染现象。本文比较了LJ1-01数据和NPP-VIIRS数据在检测县域多维经济发展中的准确性。在中国湖北、湖南和江西三省,从经济条件、民生、社会发展、公共资源和自然脆弱性五个方面选取了20个社会经济参数。然后,构建县级经济指数(CEI)来评估多维经济发展水平,并确定研究区域内多维经济发展的空间格局。本研究采用随机森林(RF)和线性回归(LR)算法分别建立回归模型,并通过交叉验证对结果进行评估。结果表明,RF算法与LR算法相比,大大提高了模型的精度,适用于NTL数据的研究。此外,2 ) 基于 LJ1-01 数据 (0.8168) 在 RF 模型中比从 NPP-VIIRS 数据 (0.7245) 获得,这反映 LJ1-01 数据在社会经济参数评估中具有更好的潜力,可以用于准确有效地识别县级多维经济发展。 关键词: LJ1-01;NPP-VIIRS ; 县级经济指标;随机森林 (RF) 回归 一、介绍 由于人类活动、交通建设和城市扩张的迅速增加导致城市灯光强度的增加,人造灯的可用性通常与财富和现代社会联系在一起 [ 1 , 2 ]。以往的研究 [ 3 , 4 , 5 ] 表明,与普通光学遥感图像相比,夜间光(NTL)数据更能反映人类活动与社会发展的关系,被广泛应用于社会经济参数预测、动态监测。城市化进程、能源消耗估算和环境评估等。 目前,两种广泛使用的NTL产品是国防气象卫星计划——运营线扫描系统(DMSP-OLS)稳定NTL数据和Suomi国家极轨合作伙伴——可见红外成像辐射计套件(NPP-VIIRS)NTL数据[ 6 ]。DMSP-OLS稳定的年夜光数据产品由6个不同的卫星传感器获得,包括1992年至2013年的34幅年度图像,但存在辐射校准不足、空间分辨率低、信号过饱和等问题[ 7]]。作为 DMSP-OLS 传感器的继任者,NPP-VIIRS 自 2012 年以来提供了一系列白天/夜间波段夜间灯光的高质量图像,并对 DMSP-OLS 数据进行了重大改进,包括更宽的测量范围、更高空间分辨率和机载校准 [ 8 , 9 ]。以往的研究表明,与DMSP-OLS数据相比,NPP-VIIRS图像在城市建成区测绘和社会经济参数估计方面具有更高的精度[ 10 , 11 ]。中国武汉大学研制的新一代NTL卫星LJ1-01于2018年6月2日成功发射[ 12]]。LJ1-01是世界上第一颗夜光遥感专用卫星,也是第一颗具有对地观测能力和增强型卫星导航的低轨卫星[ 13 ]。与 DMSP-OLS 和 NPP-VIIRS 相比,LJ1-01 以更精细的空间分辨率(~130 m)获取 NTL 数据,具有 14 位量化和 15 天的重访时间。LJ1-01 数据的更高空间分辨率意味着可以显示更多的光源空间细节 [ 14 ]。此外,LJ1-01 数据不会遇到与 DMSP-OLS 数据相同的饱和度和泛光问题,因为传感器能力、光源的差距在 LJ1-01 图像中的周围区域的平均化程度较低,其具有更高的空间分辨率 [ 15]。这三种NTL数据的规格如表1所示。这些优势可以极大地提高检测人工照明的能力,为人类活动、城市建设和社会发展的研究提供新的见解和可能性。多项研究表明,与 NPP-VIIRS NTL 数据相比,LJ1-01 影像数据可以提供更多容量。江等人。[ 12 ]证实LJ1-01数据在用于调查城市光污染时比NPP-VIIRS数据更有效。李等人。[ 13 ] 还发现LJ1-01数据可以取得更好的城市区域图提取结果。张等人。[ 16] 应用 LJ1-01 和 NPP-VIIRS NTL 数据来估计 10 个社会经济参数,并得出结论认为前者可以作为衡量社会经济指标的更有效工具。然而,他们只关注地级层面的单一维度指标的评价,并没有对县级经济数据进行更全面的分析。因此,本研究探索LJ1-01 NTL数据在县级综合经济指标评价中的潜力,以更好地验证LJ1-01 NTL数据在城市发展分析和社会经济研究中的意义和价值。 表 1.
地址:https://blog.csdn.net/kuangdacaikuang/article/details/80987270
一个工厂有m条流水线 来并行完成n个独立的作业 该工厂设置了一个调度系统 在安排作业时,总是优先执行处理时间最短的作业。现给定流水线个数m 需要完成的作业数n 每个作业的处理时间分别为 t1,t2...tn 请你编程计算处理完所有作业的耗时为多少 当n>m时 首先处理时间短的m个作业进入流水线 其他的等待 当某个作业完成时, 依次从剩余作业中取处理时间最短的 进入处理
输入描述: 第一行为两个整数(采取空格分隔) 分别表示流水线个数m和作业数n 第二行输入n个整数(采取空格分隔) 表示每个作业的处理时长 t1,t2...tn 0<m,n<100 0<t1,t2...tn<100
输出描述 输出处理完所有作业的总时长 案例 输入 3 5 8 4 3 2 10 输出 13 说明 先安排时间为2,3,4的三个作业 第一条流水线先完成作业 调度剩余时间最短的作业8 第二条流水线完成作业 调度剩余时间最短的作业10 总共耗时 就是二条流水线完成作业时间13(3+10) 3 9 1 1 1 2 3 4 6 7 8 m , n = map(int , input().split()) jobs = list(map(int , input().split())) if n <= m: print(max(jobs)) else: jobs.
近来在给英伟达的TX2开发板刷新的JetPack,用的是官方的sdkmanager,第一步就需要我们先登录英伟达的账号,可是这个人机验证怎么样都加载不出来,梯子也搭了都不行,就像下面这个样子:
经过多次探索尝试,有个比较好的解决办法:点击右下角的QQ登录,然后可以用个小号扫码登录,第一次的时候会让你返回输入账号密码登录,这样子就算是把你扫码的QQ和你英伟达的账号绑定一起了,以后再需要登录的时候直接用QQ扫码,然后一般还会让你验证电子邮箱,然后就会直接登录进去了。
所以这仅局限于有英达伟账号的,如果是要注册,可能就要看缘分了。
把showDialog里的属性barrierDismissible设置为false,原本默认为true。
代码示例:
showDialog(context: context, barrierDismissible: false,//设置为false,点击空白处弹窗不关闭 builder: (context){ return new AlertDialog( content: Text('msg'), actions: <Widget>[ new TextButton( child: new Text('确定'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, );
1.安装安装包的时候,遇见没有签名的错误,错误内容如下:
正在验证 kylin-software-center_4.5.61kylin_amd64.deb ... debsig: Origin Signature check failed. This deb might not be signed. dpkg: 处理归档 kylin-software-center_4.5.61kylin_amd64.deb (--install)时出错: 软件包 kylin-software-center_4.5.61kylin_amd64.deb 没有通过验证! 在处理时有错误发生: kylin-software-center_4.5.61kylin_amd64.deb 以上问题一般都是该包没有签名,而你的系统做了处理,没有签名的包没有办法安装,此时只需要执行以下步骤就可以解决:
sudo vim /etc/dpkg/dpkg.cfg 在该文件中添加no-debsig就可以进行安装了 如果apt报安装签名错误也是这种解决办法。
2.在没有办法进入图形界面,但是想要拷贝文件到U盘的方法:
1.首先登录账户,输入密码 2,执行lsblk,查看自己的U盘对应的编号,可以根据U盘大小确定,哪个是u盘 3.确定U盘后,执行sudo mount u盘名字(例如/dev/sda) /mnt 4.执行sudo tar cavf /mnt/log-20211118.tar.gz /var/log,执行完毕执行sudo umount /mnt 就可以了 3.虚拟机中使用vim,但是按键混乱问题的解决
有的时候虚拟机使用vim的时候,点击键盘后,显示的和点击的不同,键盘上传事件混乱了,按照以下步骤既可以解决: 1.编辑etc/vim/vimrc.tiny文件 sudo vi /etc/vim/vimrc.tiny //有的时候vi也不能用的话,可以执行下面命令,如果可以下面步骤略过 sudo cp /vim/vimrc.tiny ~/桌面 在桌面上就可以看见这个文件,可以手动打开执行2,3步骤,执行结束后,在执行 sudo cp ~/桌面/vimrc.tiny /etc/vim/ 就可以啦~ 2.将倒数第二行setcompatible 改为setnocompatible 3、再加上setbackspace=2xuni 乱码问题就解决啦~ 更新中.......
OnlyOffice ARM64编译 编译环境 1、系统环境
银河麒麟v10 sp1.要确保libc.so.6的版本大于等于2.29;可以执行以下命令查看:
Cd /lib/aarch64-linux-gnu
ls -l libc.*
可以去麒麟系统的官网下载该系统:https://www.kylinos.cn/support/trial.html?trial=5540。这里要选择自己对应的cpu,像本机就是飞腾。
也可以用镜像:leechm/kylin:v10-desktop-20210820.GFB。
镜像需要换源:vi /etc/apt/sources.list
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main universe multiverse restricted
deb http://archive2.kylinos.cn/deb/kylin/production/PART-V10-SP1/custom/partner/V10-SP1 default all
删掉etc/apt/sources.list.d下面的文件夹。
2、编译要求
CPU dual core 2 GHz or better
RAM 2 GB or more
HDD at least 40 GB of free space
Additional requirements at least 4 GB of swap
实际操作中,空闲盘符的大小至少是80G。建议至少选用256G硬盘,且初始化系统时分盘符,不用给系统多大,尽量给个人的空间150G。
3、操作要求
使用时,不要直接执行sudo apt-get update;sudo apt-get install;这一类的全局更新安装的命令,可能会导致apt冲突,然后无法执行任何apt命令。也尽量避免安装过的再跟新安装。Python一般都有,这里再安装一个git就行了
Sudo apt-get install git ;
代理 安装代理 略。
ANR原理分析 造成ANR原因: InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件
BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。
Service Timeout :前台服务20秒内,后台服务在200秒内没有执行完毕。
ContentProvider Timeout :ContentProvider的publish在10s内没进行完。
避免 尽量不在主线程(UI线程)中做耗时操作
分析方法 log log中记录了ANR发生的时间以及具体提示。WaitingInMainSignalCatcherLoop代表了主线程等待异常。The application may be doing too much work on its main thread.同样表示处理时间过多。
traces 刚才的log有第二句Wrote stack traces to '/data/anr/traces.txt',说明ANR异常已经输出到traces.txt文件,使用adb命令把这个文件从手机里导出来。
通过adb pull /data/anr/traces.txt将traces文件导出
----- pid 23346 at 2017-11-07 11:33:57 ----- ----> 进程id和ANR产生时间 Cmd line: com.sky.myjavatest Build fingerprint: 'google/marlin/marlin:8.0.0/OPR3.170623.007/4286350:user/release-keys' ABI: 'arm64' Build type: optimized Zygote loaded classes=4681 post zygote classes=106 Intern table: 42675 strong; 137 weak JNI: CheckJNI is on; globals=526 (plus 22 weak) Libraries: /system/lib64/libandroid.
matplotlib 图形窗口 图形对象(图形窗口)
子图;刻度定位器;刻度网格线;半对数坐标; 1、图形对象(图形窗口)
matplotlib 创建窗口的API
# 手动创建 matplotlib 窗口 plt.figure( title='title', # 窗口标题栏文本 figsize=(4, 3), # 窗口大小(元组) dpi=120, # 像素密度 facecolor='' # 图表背景色 ) plt.show() plt.figure 方法可以构建一个新窗口,如果已经构建过 title='AAA' 的窗口的话,plt 将不会创建新的窗口,而是把 title='AAA' 的窗口置为当前操作的窗口。
import matplotlib.pyplot as plt plt.figure('A figure',facecolor='gray') # facecolor设置窗口或画板为灰度的 plt.plot([0,1],[1,2]) plt.figure('B figure',facecolor='lightgray') # facecolor设置窗口或画板为浅灰色 plt.plot([1,2],[2,1]) # 如果figure中标题已创建,则不会新建窗口 # 而是将旧窗口(相同窗口标题的)置为当前窗口 plt.figure('A figure',facecolor='gray') # 后续的操作也是针对'A figure'执行的 plt.plot([1,2],[2,1]) plt.show() 从显示的绘图结果可以看出,A figure 窗口中又增加了以 (1, 2)、(2, 1) 为端点的直线。
2、设置当前窗口的参数
从上面绘制的图像,我们发现它缺失标题说明、坐标轴的刻度值偏小而不清晰、没有必要的坐标轴文本标注,所以接着介绍下面几种方法:
图表的标题:plt.title()
学习Vue的前置知识 必备前提:
1、HTML+CSS+JavaScript。
2、WebAPI(DOM和BOM)。
3、Ajax。
可有可无的前提:Node.js。
当然这里介绍的前端工程化与webpack也是为了大家后面更好的学习Vue这门前端技术框架,如果不感兴趣直接跳了也无妨,不过肯定是学了更好,懂我意思叭(狗头)。
实际开发当中并不需要我们自己去配置webpack 这里再说一个@在webpack中的使用:
一句话,@表示src源码目录。
但是在webpack中使用这个@表示src目录需要现在webpack.config.js中配置:
正文 学习目标 小白眼中的前端开发VS实际前端开发 什么是前端工程化 前端工程化解决方案 早期那个就了解就行了,早被淘汰了,然后parcel主要是应用于开发第三方包的时候用的比较多,所以前端工程化主要还是通过webpack解决。
webpack 什么是webpack 概念:webpack是前端项目工程化的具体解决方案。
主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理
浏览器JavaScript的兼容性、性能优化等强大的功能。
好处:让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。
注意:目前Vue、React等前端项目,基本上都是基于webpack进行工程化开发的。
webpack基本使用 在你的项目中安装使用webpack:
安装包时常见的两种命令:
-S 是 --save 的简写
-D 是 --save-dev的简写
运行完之后在你的package.json中会有如下比较相似的两个依赖文件:
其中dependencies里面的包指的是不管是在项目开发阶段还是上线阶段都会存在要一直使用的包文件,而devDependencies里面的包是只在项目开发阶段需要使用的包文件。
在项目中进行webpack的配置 我们来完成一下这个事情:
第一步:在项目根目录中创建名为webpack.config.js的webpack配置文件,并初始化如下的基本配置:
第二步:在package.json的scripts节点下,新增dev脚本如下:
第三部:在终端运行npm run dev命令,启动webpack进行项目的打包构建。
然后在我们的项目目录结构中会生成一个新文件dist,其中包含一个main.js:
了解mode可选值的应用场景 webpack.config.js文件的作用 我们执行的是npm run dev,然后dev对应的就是webpack,但是注意webpack并不会直接被运行,而是会先去执行项目根目录下的webpack.config.js这个配置文件中向外导出的配置选项。然后发现我们的有运行模式是开发模式,然后才会运行webpack。
webpack中的默认约定 如果找不到src文件,则运行webpack会报错。
自定义打包的入口和出口 这上面一部分知识点是Node.js里面的知识,不知道就算了,知道有这么回事就行。
注意,当我们修改了src中的源代码时,此时我们必须要重新运行一次webpack才能使新的代码起作用。
但每回这样都很麻烦,我们就想每更改完一次源码就直接看到效果而不是再去重新运行怎么办?我们可以使用插件来做到这件事。
webpack中的插件 webpack插件的作用 其中webpack-dev-server这个插件就可以帮我们解决频繁打包的问题。
安装webpack-dev-server 配置webpack-dev-server 注意这个插件启用之后,会启动一个实时打包的http服务器,我们的代码时时修改和打包之后的结果都会在这个服务器上进行显示,而不会单独的在项目中进行运行显示。
安装html-webpack-plugin 这个插件的作用就是让我们上面的http服务器一打开就是我们的首页面,如果不装这个插件的话则这个服务器进去显示的会是我们当前工程的文件目录,我们要进入页面就还得再进一层src才行,所以这个插件就是帮助我们能把index页面放在当前工程的根目录下然后能够让我们直接访问localhost:8080/就能看到实时更新的页面的插件,如果不装则我们要访问localhost:8080/src才能看到页面文件。
这个了解了解就行了,后面正式学习Vue时,用脚手架vue-cli都会帮我们集成在里面的,但是webpack了解之后会让我们对脚手架创建的项目有更深的认识。
配置html-webpack-plugin 下面的操作是在webpack.config.js中实现:
devServer节点 之前的代码打包之后还需要我们手动去输入端口地址才能显示出来,而使用了devServer之后则可以让其打包完成之后自动打开该页面。
webpack中的loader(加载器) loader加载器概述 loader调用过程 比如:打包处理css文件 详细描述:
常见问题: vue项目中不同分支的包装的不一样,导致了在切换分支时遇到问题。还有在拉取新项目安装依赖包,最后dev或serve启动项目时出现错误。 Module build failed (from ./node_modules/sass-loader/dist/cjs.js): Error: Missing binding …\node_modules\node-sass\vendor\win32-x64-83\binding.node Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 14.x Found bindings for the following environments: Windows 64-bit with Node.js 12.x Syntax Error: ModuleError: Module Error (from ./node_modules/sass-loader/dist/cjs.js): Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (93) For more information on which environments are supported please see: https://github.
(1)启动Activity: driver.start_activity(package, activity)
在当前app打开一个activity,或者新打开一个应用并启动一个activity,仅支持 Android。
(2)安装应用:driver.install_app(‘apk_path’)
(3)卸载应用:driver.remove_app(‘package’)
(4)关闭当前的应用:driver.close_app()
(5)判断应用是否已安装:driver.is_app_installed(‘package’)
示例:
关闭当前APP driver.close_app() # 判断考研帮APP是否已安装 print("考研帮APP是否已安装", driver.is_app_installed('com.tal.kaoyan')) # 卸载考研帮 driver.remove_app('com.tal.kaoyan') sleep(1) # 判断考研帮APP是否已安装 print("考研帮APP是否已安装", driver.is_app_installed('com.tal.kaoyan')) # 安装移动自习室app driver.install_app(r'C:\Users\Administrator\Desktop\App\App\yidongzixishi_4.6.1.apk') sleep(1) # 启动移动自习室 driver.start_activity('com.offcn.yidongzixishi', 'com.offcn.yidongzixishi.SplashActivity')
常规面试题 Android面试题 ListView 如何缓存的?RecyclerView联系人列表如何实现A-Z快速定位广播和EventBus的区别主线程Looper循环为什么没有卡主线程?nativePollOnceSharedPreference的线程安全、进程安全,如何跨进程Android 中实现多线程: threads, Handler, AsyncTask, IntentServiceAndroid 中如何实现多进程自定义View的过程:measure,layout,drawLayoutInflater#inflate 的 attrachToParent true 是什么意思theme 和 style 有什么区别,优先级有哪些进程间通信方式View 的渲染过程Binder 的原理和优势AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思Android 中有哪些动画,都说下Serializable 和 Parcelable 的区别你知道哪些Layout,ConstraintLayout 的特点是什么手机开发者选项有哪些,不保留活动是什么基本的数据类型有哪些?String、StringBuilder、StringBuffer的区别?Fragment是什么,使用场景和生命周期说一下Context和内存泄露线程创建的方法?Activity的启动模式和适用场景?ViewPager用过吗?然后扯到了它和Fragment联合; 内存泄露和内存溢出说一下 (1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
(2)内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。
内存溢出的原因及解决方法
(1)内存溢出原因:
①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
③代码中存在死循环或循环产生过多重复的对象实体;
④使用的第三方软件中的BUG;
⑤启动参数内存值设定的过小
(2)内存溢出的解决方案:
①第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)
②第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。
③第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。
垃圾回收机制说一下?
四大组件 当内存不足时Service被杀死了,如何重启这个ServiceAndroid系统杀进程时,是怎么考虑进程优先级的?Fragment 的 ViewModel 如何访问到 Activity 的 ViewModel 的数据Activity 4种启动模式说下,各种启动模式适合的应用场景Activity 任务栈从底到顶为 A-B-C,低内存杀死进程后,重新点击,显示哪个?这时如果C里面有Fragment是怎样恢复的?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?window、view 和 Activity 的关系Activity、Fragment 的各个生命周期依次说一下,各个生命周期里面适合做什么Activity 调用 finish 方法后怎么走到 onDestroy 的 图片 Glide缓存特点Glide为我们做了哪些内存优化Glide如何加载 GIFListView 图片错位的原因,解决方案bitmap如何处理大图,30M的大图如何防止OOM? 网络 OKHttp 如何实现缓存OKHttp 的超时时间,有考虑DNS超时码OKHttp 线程池、连接池讲下OKHttp 的所有拦截器有哪些,请求失败了重试1、2次怎么做Retrofit实现机制Room注解如何在编译时生成类文件http 和 https 的区别,shakehand的过程说下状态码400、401,3xx有哪些网络劫持是什么,应该怎么做TCP三次握手,握手中的网络包各个标记位是多少,四次挥手说一下TCP 发送窗口是什么?混合开发h5了解多少浏览器窗口访问一个网址的过程POST 和 GET 有什么区别 优化 内存泄漏分析,LeakCanary的原理,泄漏对象是如何找到引用链的APK瘦身启动优化卡顿分析!!ANR分析!!为什么布局文件中层级越多,性能可能差很多你有哪些应用性能优化的经验必问ProGuard怎么写 Java 1、Java中==和equals和hashCode的区别2、int与integer的区别3、谈谈对java多态的理解4、String、StringBuffer、StringBuilder区别5、抽象类和接口区别6、Serializable 和Parcelable 的区别7、string 转换成 integer的方式及原理8、哪些情况下的对象会被垃圾回收机制处理掉?9、什么是强引用、软引用、弱引用以及虚引用?10、什么是依赖注入?能说几个依赖注入的库么?11、静态代理和动态代理的区别,什么场景使用?12、Java的异常体系13、JVM的回收算法是怎样的14、说一下泛型原理,并举例说明15、能说说HashMap常用操作的底层实现原理吗?16、垃圾回收机制和调用 System.