manjaro换源

manjaro换源 有关manjaro换源的文件: /etc/pacman.d/mirrorlist 网上教程: sudo pacman-mirrors -gb testing -c China //选择中国源并更新 sudo pacman -Syyu //更新系统 manjaro更新 pacman -Sc //清空并且下载新数据 pacman-mirrors -gb testing -c China //更新源 or pacman-mirrors -c China -g //更新源 pacman -Syu //更新 pacman -Syy //更新源数据库 pacman -Syyu //安装更新

February 25, 2021 · 1 min · 李昌

MySql安装和配置

1. 安装mysql sudo apt update sudo apt install mysql-server 2. 配置mysql 运行 security script sudo mysql_secure_installation 根据提示进行一些必要的配置 进入mysql sudo mysql 接下来,通过以下命令检查每个 MySQL 用户帐户使用的认证方法: SELECT user,authentication_string,plugin,host FROM mysql.user; 在输出中 +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *E6CD266C880D217453293A0247D0142C9CF52730 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 可以看出,root用户使用插件进行身份验证(进入时不需要输入密码)。如果想要root用户使用密码登陆,可使用如下命令进行配置:...

February 25, 2021 · 2 min · 李昌

Mysql无法远程访问

Mysql无法远程访问 在使用navicat远程连接阿里云的时候,出现“2003 can t connect to mysql server on 10061”错误 经过艰难的谷歌百度stackflow后,发现是3306端口没有监听外部连接,只接收内部ip访问。 解决方案 首先保证阿里云服务器3306端口开放 使用netstat -ntpl |grep 3306命令查看3306端口状态 tcp 0 0 127.0.0.1:22 0.0.0.0:* LISTEN - 可看出只接收内部访问 打开/etc/mysql/mysql.conf.d/mysqld.cnf(网上大部分说是:/etc/mysql/my.cnf) 将bind-address = 127.0.0.1改成bind-address = 0.0.0.0 再次使用netstat -ntpl |grep 3306命令查看 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - 此时3306端口开始监听所有网络访问 **如果是ipv6主机,则改为 bind-address = :: ,表示监听所有网络** 主机’xxx.xx.xxx.xxx’不允许连接到此MySQL服务器 在进行连接ipv6主机的时候出现了如下问题:django.db.utils.InternalError: (1130, “Host ‘2409:8930:1450:316:6179:c54:5901:2f2b’ is not allowed to connect to this MySQL server”) 解决方法如下: mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *....

February 25, 2021 · 1 min · 李昌

Nginx负载均衡配置--简介

Nginx负载均衡配置–简介 在使用tomcat部署静态网站的时候,由于服务器比较垃圾,所以如果多人同时访问的话,可能会造成卡顿,影响用户体验。所以想到了使用负载均衡。 1. 什么是负载均衡 负载平衡是高可用性基础架构的关键组件,通常用于通过在多个服务器之间分配工作负载来提高网站,应用程序,数据库和其他服务的性能和可靠性。 没有负载平衡的Web基础结构可能如下所示: 在此示例中,用户直接连接到web服务器yourdomain.com。如果此单个Web服务器出现故障,用户将无法再访问该网站。此外,如果许多用户尝试同时访问服务器并且无法处理负载,则可能会遇到加载时间缓慢或根本无法连接的情况。 通过在后端引入负载均衡器和至少一个额外的Web服务器,可以减轻此单点故障。通常,所有后端服务器都将提供相同的内容,以便用户无论哪个服务器响应都会收到一致的内容。 在上面说明的示例中,用户访问负载均衡器,负载均衡器将用户的请求转发到后端服务器,后端服务器然后直接响应用户的请求。在这种情况下,单点故障现在是负载平衡器本身。这可以通过引入第二个负载均衡器来缓解. 2. 负载均衡器可以处理什么样的流量 HTTP - 标准HTTP平衡基于标准HTTP机制定向请求。负载均衡器设置X-Forwarded-For,X-Forwarded-Proto以及X-Forwarded-Port头,提供有关原始请求的后端信息。 HTTPS - HTTPS平衡功能与HTTP平衡功能相同,但增加了加密功能。加密以两种方式之一处理:使用SSL直通,一直保持加密到后端,或者使用SSL终止,将解密负担放在负载均衡器上,但将未加密的流量发送到后端。 TCP - 对于不使用HTTP或HTTPS的应用程序,也可以平衡TCP流量。例如,数据库集群的流量可以分布在所有服务器上。 UDP–最近,一些负载均衡器增加了对使用UDP的核心互联网协议(如DNS和syslogd)的负载平衡的支持。 这些转发规则将定义负载均衡器本身的协议和端口,并将它们映射到负载均衡器将用于将流量路由到后端的协议和端口。 3. 负载均衡器如何选择后端服务器 负载均衡器根据两个因素的组合选择将请求转发到哪个服务器。他们将首先确保他们可以选择的任何服务器实际上对请求做出适当的响应,然后使用预先配置的规则从该健康池中进行选择。 3.1 健康检查 负载均衡器应仅将流量转发到“健康”的后端服务器。要监视后端服务器的运行状况,运行状况检查会定期尝试使用转发规则定义的协议和端口连接到后端服务器,以确保服务器正在侦听。如果服务器未通过运行状况检查,因此无法提供请求,则会自动将其从池中删除,并且在再次响应运行状况检查之前,流量将不会转发给它。 3.2 负载平衡算法 使用的负载平衡算法确定将选择后端中的哪些正常服务器。一些常用的算法是: Round Robin - Round Robin意味着将按顺序选择服务器。负载均衡器将在其列表中为第一个请求选择第一个服务器,然后按顺序向下移动列表,当它到达结尾时从顶部开始。 least_conn - least_conn意味着负载均衡器将选择连接最少的服务器,并且当流量导致更长的会话时建议使用。 ip_hash:此平衡算法根据客户端的IP地址将请求分发到不同的服务器。前三个八位字节用作决定服务器处理请求的密钥。结果是客户端每次都倾向于由同一服务器提供服务,这有助于会话一致性。 hash:此平衡算法主要用于memcached代理。基于任意提供的散列密钥的值来划分服务器。这可以是文本,变量或组合。这是唯一需要用户提供数据的平衡方法,这是应该用于哈希的密钥。 管理员可用的算法取决于所使用的特定负载平衡技术。 3.3 负载平衡器如何处理状态 某些应用程序要求用户继续连接到同一后端服务器。Source算法根据客户端IP信息创建关联。在Web应用程序级别实现此目的的另一种方法是通过粘性会话,其中负载平衡器设置cookie,并且来自该会话的所有请求都定向到同一物理服务器。 4. 冗余负载均衡器 要将负载均衡器作为单点故障移除,可以将第二个负载均衡器连接到第一个负载均衡器以形成一个集群,其中每个负载均衡器监控其他负载平衡器的运行状况。每个人都具有同样的故障检测和恢复能力。如果主负载均衡器发生故障,DNS必须将用户带到第二个负载均衡器。由于DNS更改可能需要花费大量时间在Internet上传播并自动进行此故障转移,因此许多管理员将使用允许灵活IP地址重新映射的系统,例如浮动IP。按需IP地址重新映射通过提供可在需要时轻松重新映射的静态IP地址,消除了DNS更改中固有的传播和缓存问题。域名可以保持与相同的IP地址关联,而IP地址本身在服务器之间移动。...

February 25, 2021 · 3 min · 李昌

python与其他语言的对比(helloworld)

python与其他语言的对比(hello world) C语言 include<stdio.h> int main() { printf("hello world"); return 0; } Java语言 public class HelloWorld{ public static void main(String[] args) { System.out.println("Hello World!"); } } Python print('hello world') python中的常用数据类型 Number String List Tuple Dictionary # Number a = 1 b = True c = 3.15 d = 1.1+2.2j # 字符串 str1 = 'hello' str1_1 = "hello" str2 = "world" print(str1==str1_1) # 字符串连接 str3 = str1 + str2 print(str3) # 转义字符 str4 = 'hello \nworld' print(str4) str5 = 'hello \\n world' print(str5) # 格式化输出 print('str1:%s....

February 25, 2021 · 3 min · 李昌

Python中的拷贝

Python中的拷贝 直接赋值:其实就是对象的引用(别名).两个对象是引用的同一块内存区域 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。 引用示例 a = [1,2,3,4] b = a a.append(5) print(a, b) [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] 浅拷贝示例 import copy a = [1, 2, 3, 4, ['a', 'b']] b = copy.copy(a) a.append(5) a[4].append('c') print(a) print(b) [1, 2, 3, 4, ['a', 'b', 'c'], 5] [1, 2, 3, 4, ['a', 'b', 'c']] 可以看到,父对象被拷贝了,当直接对父对象做修改时,拷贝值也相应的得到了变化,但是对子对象修改时,拷贝值不变...

February 25, 2021 · 1 min · 李昌

Python换源

Python换源 1. 临时换源 可以在使用pip的时候在后面加上-i参数,指定pip源 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 2. 永久换源 永久修改: linux: 修改 ~/.pip/pip.conf (没有就创建一个), 内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple

February 25, 2021 · 1 min · 李昌

python网络编程

python 网络编程 使用socket模块,即套接字 使用socket来创建套接字的语法如下: socket.socket(family[, type[, proto]]) 参数解释: family: 套接字家族可以使AF_UNIX或者AF_INET type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM protocol:一般不填默认为0 socket对象的方法 s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。 s.listen() 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。 s.accept() 被动接受TCP客户端连接,(阻塞式)等待连接的到来 客户端套接字 s.connect() 主动初始化TCP服务器连接,。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。 s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 公共用途的套接字函数 s.recv() 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。 s.send() 发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。 s.sendall() 完整发送TCP数据,完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。 s.recvfrom() 接收UDP数据,与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。 s.sendto() 发送UDP数据,将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。 s.close() 关闭套接字 s.getpeername() 返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。 s.getsockname() 返回套接字自己的地址。通常是一个元组(ipaddr,port) s.setsockopt(level,optname,value) 设置给定套接字选项的值。 s.getsockopt(level,optname[.buflen]) 返回套接字选项的值。 s.settimeout(timeout) 设置套接字操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如connect()) s.gettimeout() 返回当前超时期的值,单位是秒,如果没有设置超时期,则返回None。 s.fileno() 返回套接字的文件描述符。 s.setblocking(flag) 如果flag为0,则将套接字设为非阻塞模式,否则将套接字设为阻塞模式(默认值)。非阻塞模式下,如果调用recv()没有发现任何数据,或send()调用无法立即发送数据,那么将引起socket.error异常。 s.makefile() 创建一个与该套接字相关连的文件 网络编程的基本设置步骤 服务端配置 导入socket模块 使用bind方法创建套接字 使用listen方法等待连接, 使用accept方法被动接收tcp连接 使用send或recv方法进行收发 客户端配置 导入socket模块 使用bind方法创建套接字 使用connect方法进行主动tcp连接 使用send或recv方法进行收发

February 25, 2021 · 1 min · 李昌

RESTfulAPI入门

RESTful API 入门 1. 简介 表现层状态转换(英语:Representational State Transfer,缩写:REST)是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。表现层状态转换是根基于超文本传输协议(HTTP)之上而确定的一组约束和属性,是一种设计提供万维网络服务的软件构建风格。符合或兼容于这种架构风格(简称为 REST 或 RESTful)的网络服务,允许客户端发出以统一资源标识符访问和操作网络资源的请求,而与预先定义好的无状态操作集一致化。因此表现层状态转换提供了在互联网络的计算系统之间,彼此资源可交互使用的协作性质(interoperability)。相对于其它种类的网络服务,例如SOAP服务,则是以本身所定义的操作集,来访问网络上的资源。 2. REST 架构约束 客户端-服务器 从本质上讲,这意味着客户端应用程序和服务器应用程序必须能够独立发展而彼此之间没有任何依赖关系。客户端应该只知道资源URI,仅此而已。今天,这是Web开发中的常规做法,因此您不需要任何花哨。把事情简单化。 服务器和客户端也可以独立替换和开发,只要它们之间的接口没有更改即可。 无状态 Roy fielding的灵感来自HTTP,因此它反映了这一约束。使所有客户端-服务器交互都变为无状态。服务器将不存储有关客户端发出的最新HTTP请求的任何内容。它将每个请求视为新请求。没有会议,没有历史。 如果客户端应用程序需要是最终用户的有状态应用程序,则用户必须登录一次并在此之后执行其他授权操作,则来自客户端的每个请求都应包含服务于该请求的所有必要信息,包括身份验证和授权细节。 请求之间不得在服务器上存储任何客户端上下文。客户端负责管理应用程序的状态。 统一的接口 在约束名称本身适用的情况下,您必须为系统内部暴露给API使用者并认真遵循的资源确定API接口。系统中的资源应仅具有一个逻辑URI,并且应提供一种获取相关或附加数据的方式。最好将资源与网页同义。 任何单个资源都不应太大,并在其表示中包含所有内容。只要相关,资源应包含指向相对URI的链接(HATEOAS),以获取相关信息。 此外,整个系统上的资源表示应遵循特定的准则,例如命名约定,链接格式或数据格式(XML或/和JSON)。 所有资源都应通过通用方法(例如HTTP GET)进行访问,并使用一致的方法进行类似的修改。 一旦开发人员熟悉您的一个API,他就应该能够对其他API遵循类似的方法。 分层系统 REST允许您使用分层的系统架构,在该架构中,您可以在服务器A上部署API,并在服务器B上存储数据并在服务器C中对请求进行身份验证。客户端通常无法确定它是直接连接到最终服务器还是中​​间连接。 可缓存的 在当今世界中,缓存数据和响应在任何适用/可能的地方都至关重要。我们阅读的网页也是HTML页面的缓存版本。缓存可以提高客户端的性能,并为服务器提供更好的可伸缩性。 在REST中,缓存应在适用时应用于资源,然后这些资源必须声明自己可缓存。可以在服务器或客户端上实现缓存。 管理良好的缓存部分或完全消除了某些客户端-服务器交互,从而进一步提高了可伸缩性和性能。 按需代码(可选) 好吧,这个约束是可选的。大多数时候,您将以XML或JSON的形式发送资源的静态表示。但是,如果需要,您可以自由地return executable code支持应用程序的一部分,例如,客户端可以调用您的API来获取UI小部件呈现代码。这是允许的。 以上所有约束条件都可以帮助您构建真正的RESTful API,并且应该遵循它们。不过,有时您可能会发现自己违反了一两个约束。别担心; 您仍在制作RESTful API,但不是“真正的RESTful”。 3. REST资源命名指南 在REST中,主要数据表示称为Resource。从长远来看,拥有一个强大且一致的REST资源命名策略–无疑将证明是最佳的设计决策之一。...

February 25, 2021 · 1 min · 李昌

SimpleSupportVectorMachine

Simple Support Vector Machine First we will import numpy to easily manage linear algebra and calculus operations in python. To plot the learning progress later on, we will use matplotlib. import numpy as np from matplotlib import pyplot as plt %matplotlib inline Stochastic Gradient Descent The svm will learn using the stochastic gradient descent algorithm (SGD). Gradient Descent minimizes a function by following the gradients of the cost function. Calculating the Error To calculate the error of a prediction we first need to define the objective function of the svm....

February 25, 2021 · 5 min · 李昌