npm install vue-cli -g 报错 1 使用管理员登录
安装 npm install -g vue-cli 报错 ‘proxy‘ config is set properly. See: ‘npm help config 1 清空代理
npm config set proxy falsenpm cache clean --force
2 或者 npm config set proxy nullnpm config set https-proxy null
配置新的镜像
npm config set registry http://registry.cnpmjs.org/
或者
npm config set registry https://registry.npm.taobao.org
定义:python中,函数名是变量,下方这个method函数名看成变量,指向一个计算的函数!因此函数名其实就是指向函数的变量,故变量可指向函数;
什么叫高阶函数? 变量可指向函数,且函数的变量可接受变量,那么任意一个函数可接受一个函数作为参数,这种函数就叫高阶函数
一、高阶函数--函数名可作为返回值、也可作为参数 def method(a,b): return a+b a = method print(a(1,4)) #输出; 5 (1)函数名作为参数 def fun(a): return a*a def fun1(a,b,c): return a(b)+a(c) print(fun1(fun(),1,5)) # fun()作为参数,传给fun1 #输出:26 (2)函数名作为返回值 def fun(a): def fun2(b): return a*b return fun2() a = fun(1) print(a) #外部函数返回的是一个函数对象,也就是一个变量,然后作为函数对象传参,获得内部函数的返回值 print(a(3)) # 输出:<function method.<locals>.method2 at 0x02B5E9C0> 6 二、常用的高阶函数:map、filter、reduce 先讲下匿名函数lambda,语法格式:lambda[形参1,形参2,... :表达式]表达式执行后,返回冒号后表达式;
x = 1 lambda x:x+3 (1)map(function,iterable) 它第一个要传的元素是函数名或lambda匿名函数表达式,第二个要传的是可迭代对象;python 2.x 返回列表,python 3.x 返回迭代器
array = [1,4,7] a = map(lambda x:x+1,array) print(a) print(list(a)) 输出:<map object at 0x02AB11B0> [2, 5, 8] map()函数的作用就是将可迭代对象里的每个元素进行函数操作,然后将元素操作后所组成的可迭代对象返回
Java面试题资料合集 2021年最新版--Java+最常见的+200++面试题汇总+答案总结汇总.pdf BIO,NIO,AIO,Netty面试题 35道.pdf Dubbo面试题 47道.pdf ElasticSearch面试题 30道.pdf Git常用命令面试题 60道.pdf Java基础面试题 91道.pdf Java并发编程最全面试题 123道.pdf Java异常面试题 33道.pdf Java虚拟机(JVM)面试题 51道.pdf Java集合面试题 52道.pdf JVM常见面试题解析.pdf Kafka知识汇总 18道.pdf Linux面试题 50道.pdf Memcache 面试题 23道.pdf MyBatis面试题 37道.pdf Mybatis面试题(含答案).pdf MySQL面试题 40道.pdf MySQL面试题(含答案).pdf MySQL高频面试题 10道.pdf Netty面试题 20道.pdf Nginx面试题 23道.pdf RabbitMQ 补充 6道.pdf RabbitMQ面试题 22道.pdf Redis面试题 42道.pdf Redis面试题 70道.pdf Redis面试题(含答案).pdf SpringBoot面试题 30道.pdf SpringBoot面试题 44道.pdf SpringCloud面试题 49道.pdf SpringMVC面试题 29道.pdf Spring面试题 75道.pdf Spring面试题(含答案).pdf TCP,UDP,Socket,Http网络编程面试题 47道.pdf Tomcat面试题 14道.pdf Zookeeper面试题 20道.pdf Zookeeper面试题 28道.pdf Zookeeper面试题.pdf 多线程面试59题(含答案).
需要环境:python 、pycharm(其他编译器也是可以的)、flask。
需要了解概念:
一、MockServer是什么?
答:为实现mock概念而搭建的一个服务,Mock Server 在被测系统与外部系统之间搭建。
MockServer不是一个真实的后端系统, 你只需要让他满足你的接口测试需求即可。
使用场景:
比如:我们自己内部接口需要使用微信,支付宝的支付功能,就需要验证和打钱才能返回固定的成功返回信息,成本太高,我们就可以用MockServer来模拟返回,绕过验证。
二、Flask基本使用
2.1 flask 安装
pip install flask
验证 pip show flask
2.2 启动一个flask服务(本地后端服务)
结果:
点击 域名就会跳转到响应网页,出现 return 的返回值
2.3 请求flask 搭建的服务;代码及结果请求成功获取文本
2.4 动态服务--打开链接后需要加上随机参数
2.5 非动态服务
2.6 指定允许的请求方法
指定get请求方法如下:
如果运行post请求,代码及返回如下:
修改为对应 get方法进行请求,会返回200:(与指定get方法对应上)
1.用对象序列化流序列化了一个对象后,假如我们修改了对象所属的类文件,读取数据会不会出问题?如果出问题了,如何解决? 2.如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢? 首先定义一个Student类,并进行序列化操作
package demo17; import java.io.Serializable; public class Student implements Serializable {private String name; private int chinese; private int math; public Student() { } public Student(String name, int chinese, int math) { this.name = name; this.chinese = chinese; this.math = math; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getChinese() { return chinese; } public void setChinese(int chinese) { this.
1、
root@DESKTOP-1N42TVH:/home/test# ls root@DESKTOP-1N42TVH:/home/test# ls /home/test2/* /home/test2/a.txt /home/test2/test.sh root@DESKTOP-1N42TVH:/home/test# cat /home/test2/test.sh ## shell脚本所在目录及内容 #!/bin/bash wc -l ./a.txt root@DESKTOP-1N42TVH:/home/test# bash /home/test2/test.sh ## 默认的当前目录是执行脚本的目录, 而不是shell所在的目录,执行脚本的目录下没有a.txt wc: ./a.txt: No such file or directory 2、利用
$(dirname $0) ## 指定工作目录为shell脚本所在的目录 修改shell脚本测试:
root@DESKTOP-1N42TVH:/home/test# ls root@DESKTOP-1N42TVH:/home/test# ls /home/test2/* /home/test2/a.txt /home/test2/test.sh root@DESKTOP-1N42TVH:/home/test# cat /home/test2/test.sh #!/bin/bash dir=$(dirname $0) ## 指定工作目录为shlle脚本所在的目录 wc -l $dir/a.txt root@DESKTOP-1N42TVH:/home/test# bash /home/test2/test.sh ## a.txt在shell所在的目录,故可以输出行数 5 /home/test2/a.txt
#task1 import random print('用列表储存随机整数:') ls=[random.randint(1,100) for i in range(5)] print(ls) print('\n用集合储存随机整数:') s1={random.randint(1,100) for i in range(5)} print(s1) print('\n用集合储存随机整数:') s2=set() while(len(s2)<5): s2.add(random.randint(1,100)) print(s2) ###1.范围【1,100】,能取到1002.范围【0,5),不能取到5范围【1,5),不能取到53.一定是4.一定是### #task2 datas={'2049777001':['篮球','羽毛球','美食','漫画'], '2049777002':['音乐','旅行'], '2049777003':['马拉松','健身','游戏'], '2049777004':[], '2049777005':['足球','阅读'], '2049777006':['发呆','闲逛'], '2049777007':[], '2049777008':['书法','电影'], '2049777009':['音乐','阅读','电影','漫画'], '2049777010':['数学','推理','音乐','旅行'] } ls=list(datas.values()) l1=[] l2=[] for i in datas.values(): for j in i: l1.append(j) l3=set(l1) for k in l3: x=l1.count(k) l2.append(x) l4=dict(zip(l3,l2)) m=[(v,k) for k,v in l4.items()] n=sorted(m,reverse=True) for x in n: print(f'{x[1]}:{x[0]}') #task3 temperatures=[['2022-4-18','星期一','10','22'], ['2022-4-19','星期二','10','22'], ['2022-4-20','星期三','12','25'], ['2022-4-21','星期四','13','28'], ['2022-4-22','星期五','16','31'], ['2022-4-23','星期六','19','31'], ['2022-4-24','星期日','19','27']] a=[i[2] for i in temperatures] b=[i[3] for i in temperatures] max=max(b) min=min(a) s1=s2=0 for j in a: s1+=int(j) for k in b: s2+=int(k) v1=s1//7 v2=s2//7 print('未来一周最低气温:',min) print('未来一周最高气温:',max) print('未来一周平均气温区间:',v1,'~',v2) #task4 import random print('猜猜2022年5月哪一天会是你的Lucky Day:-}') right_number=random.
1、进程之间的通信方式?
管道、有名管道、信号量、消息队列、共享内存。
2、管道怎么实现的?
管道实际是在内核中开辟出的一块缓冲区,用于进程间通信,这块缓冲区称为管道,管道有一个读端一个写端,只能写端写入数据,读端读出数据。管道是单向通信,只能一个write,一个read。
匿名管道:只有具有血缘关系的进程才能进行通信,如父子进程,父进程在fork出子进程后,子进程拥有了和父进程一样的代码,当然也拥有和父进程一样的文件描述符。创建的时候需要指定读写端,int pipe(int fd[2])
fd[0]表示读端,fd[1]代表写端。写入或者读出过快都会导致一端堵塞。管道的大小为一页,即4k。
命名管道:命名管道能使不存在血缘关系的进程能够通信。不同于匿名管道它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。进程间只要可以访问该路径名,就能够通过FIFO相互通信。
3、什么是信号量?
信号量的本质是计数器,,用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。
4、消息队列怎么实现的?
消息队列本质上是位于内核空间的链表,链表的每个节点都是一条消息。消息队列存放在内核中并由队列标识符标识。
消息队列的通信模式:A 进程要给 B 进程发送消息,A 进程把数据放在对应的消息队列后就可以正常返回了,B 进程需要的时候再去读取数据就可以了。同理,B 进程要给 A 进程发送消息也是如此。
特点:
1)是一种面向记录的通信方式,具有特定的格式和消息优先级。
2)支持查询方式获取消息,不一定只是先进先出的对消息的存取,可以针对消息类型进行读取。
3)消息队列是独立于发送端和接收端进程,进程终止时,消息队列和其中的消息也不会消失。
5、共享内存怎么实现的?
系统加载一个进程的时候,分配给进程的内存并不是物理内存,而是虚拟内存,那么两个进程通过页表将自身的虚拟地址空间映射到同一片物理地址,构成了进程间的双向通信。共享内存的生命周期随内核。
两个进程都拿出一块虚拟地址,映射到相同的物理内存中。这样进程间需要传送的数据就不需要来回拷贝了,这边一写那边立马看到了。
6、五种通讯方式总结
1)管道:效率低下,读写会阻塞,A进程给B进程传输数据,必须等到B取走数据才返回,不适合频繁的交换数据;容量有限(4k);只有有血缘关系的进程能通讯(使用 fork 创建子进程,创建的子进程会复制父进程的文件描述符)。
2)FIFO:任何进程间都能通讯,但速度慢(读写会阻塞)。
3)信号量:本质是一个计算器,不能传递复杂消息,用来实现进程之间的同步和互斥。
4)消息队列:容量受到系统限制(内核中每个消息体都有一个最大长度的限制,所有队列所包含的全部消息体的总长度也是有上限),存在用户态与内核态之间的数据拷贝开销,因为进程写入数据到
内核中的消息队列时,会发生从用户态拷贝数据到内核态的过程。
5)共享内存区:能够很容易控制容量,速度快(虚拟内存),但要保持同步。
7、mmap原理是什么?
将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。
1)进程启动映射过程,并在进程虚拟地址空间中为映射创建虚拟映射区域。
2)调用内核空间的系统调用函数mmap(不同于用户空间函数),实现文件物理地址和进程虚拟地址的一一映射关系。
3)进程发起对这片映射空间的访问,引发缺页异常,实现文件内容到物理内存(主存)的拷贝。
对于传统的 read 系统调用来说,他们需要将磁盘中的文件先 copy 到内核缓冲区中,再将该数据 copy 到用户缓冲区中。相较于 mmap ,后者节省了一次 copy ,免去了将页缓存的数据复制到用户空间缓冲区的过程。
1.MySQL 属于CS结构即客户端/服务端,Client、Server。其中server层包含连接层、SQL层、存储引擎层
2.Server端的连接层、SQL层、存储引擎层
连接层(Connector):负责跟客户端建立连接、获取权限、维持和管理连接。 SQL 层:预处理、解析、优化(物理优化、逻辑优化)、生成指定的执行计划。 存储引擎层:负责数据的存储和提取,支持 InnoDB、MyISAM、Memory 等多个存储引擎。 3.连接层
作用:提供连接协议、验证、提供专用连接线程命令:mysql -h$ip -P$port -u$user -p 客户端发送请求服务端,通过一串字符串连接到整个服务端,同时服务端的连接层接收到请求后,对客户端提供的字符串进行验证,连接层提供协议、验证、再提供一个专有的连接线程。其中协议有:TCP/IP、Socket文件。 验证:用户名、密码、端口进行验证,数据库启动后会将授权表加载到内存中,进行用户名,密码,端口进行比对验证。其中授权表包含:mysql.user、mysql.db、mysql_table.priv、mysql_column_priv. 连接线程:每连接一个都会生成一个连接线程,所以会有多个连接线程.通过show processlist; 可以查看到前台线程。 4.SQL层
主要分为四个阶段:预处理、解析、优化、执行语句预处理:判断语句中的语法、语义、权限处理等。 解析:校验OK,就生成“解析树”,把语句拆分成多个块,生成一种树形结构来表示执行顺序。解析出来的树叫抽像语法树AST。 优化:分为逻辑优化-->物理优化。基于 Cost-Based Optimizer 模型,预估每条执行方式的成本,选择成本最小的执行方式,最终转化为执行计划explain 逻辑优化:优化器算法--->关系代数的等价转换 物理优化:统计信息(表的状态信息,比如表名、数据行、数据分布、索引状态信息)、优化器算法 执行:根据执行计划去执行语句 5.存储引擎层
作用:负责和磁盘交互
Some times MySQL replication creates problems and slave could not sync properly from the master database server. It may cause due to lots of reason’s. Only the question is how to fix it?
This article will guide you to how to reset MySQL replication and it will start again from scratch.
Warning: After using this tutorial, All of your bin-log files will be deleted, So if you want, you may take a backup of bin-log files first and then follow the instructions.