Haproxy安装与配置

Haproxy安装与配置

有关高负载均衡的软件,目前使用比较多的是haproxy、nginx和lvs。下面我们就开始学习haprxoy这款软件。

1、Haproxy概念

1.1、haproxy原理

haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

1.2、haproxy的优点

  • 免费开源,稳定性也是非常好。单haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。
  • 根据官方文档,haproxy可以跑满10Gbps,这个数值作为软件级负载均衡器是相当惊人的。
  • haproxy支持连接拒绝:因为维护一个连接的打开的开销是很低的,有时我们很需要限制gongji蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoSgongji的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
  • haproxy支持全透明代理(已具备硬件防火墙的典型特点):可以用客户端IP地址或者任何其他地址来连接后端服务器。这个特性仅在Linux 2.4/2.6内核打了tcp proxy补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
  • haproxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。
  • 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警。
  • HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

2、环境

内核版本:3.10.0-862
架构:x86_64
系统版本:CentOS Linux release 7.5.1804 (Core)
HAproxy版本:haproxy-1.8.19.tar.gz
安装方式:源码编译
安装路径:/usr/local/haproxy/
官方文档:https://www.haproxy.org/#docs
下载路径:https://www.haproxy.org/#down

3、安装Haproxy

3.1、yum安装:参考

3.1.1、官方base源安装

CentOS 6.*CentOS 7安装的Haproxy版本一样

[root@node1 ~]# yum install haproxy     # base源
[root@node1 ~]# haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

3.1.2、SCL源安装haproxy1.8

安装 Software Collections (SCL) repository 源以获取最新版本的haproxy

sudo yum install centos-release-scl -y

安装haproxy:访问慢

sudo yum install rh-haproxy18-haproxy rh-haproxy18-haproxy-syspaths -y

开启:systemctl start rh-haproxy18-haproxy
停止:systemctl stop rh-haproxy18-haproxy
开机启动:systemctl enable rhhaproxy18-haproxy

3.2、编译安装Haproxy

3.2.1、创建运行账户和组

groupadd --system haproxy                          #添加haproxy的组
useradd --system -M -g haproxy haproxy -s /sbin/nologin  #创建haproxy的系统账户到haproxy的组,但是禁止其登陆系统。

3.2.2、编译安装Haproxy

[root@node1 opt]# yum install gcc make -y          # 安装编译工具
[root@node1 opt]# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.19.tar.gz
[root@node1 opt]# tar xf haproxy-1.8.19.tar.gz
[root@node1 opt]# cd haproxy-1.8.19
[root@node1 haproxy-1.8.19]# uname -r
3.10.0-862.el7.x86_64
[root@node1 haproxy-1.8.19]# more README            # 查看安装说明
... ...38   - linux22     for Linux 2.239   - linux24     for Linux 2.4 and above (default)40   - linux24e    for Linux 2.4 with support for a working epoll (> 0.21)41   - linux26     for Linux 2.6 and above42   - linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)43   - solaris     for Solaris 8 or 10 (others untested)44   - freebsd     for FreeBSD 5 to 10 (others untested)45   - netbsd      for NetBSD46   - osx         for Mac OS/X47   - openbsd     for OpenBSD 5.7 and above48   - aix51       for AIX 5.149   - aix52       for AIX 5.250   - cygwin      for Cygwin51   - haiku       for Haiku52   - generic     for any other OS or version.53   - custom      to manually adjust every setting
... ...要构建haproxy,必须在上面操作系统中选择目标操作系统
并将其分配给TARGET变量: 我的内核是3.10.0,选择linux2628
[root@node1 haproxy-1.8.19]# make TARGET=linux2628 ARCH=x86_64 prefix=/usr/local/haproxy  # TARGET指定内核版本,ARCH指定CPU架构,PREFIX指haprxoy的安装路径。
[root@node1 haproxy-1.8.19]# make install PREFIX=/usr/local/haproxy
[root@node1 haproxy-1.8.19]# ll /usr/local/haproxy/
总用量 0
drwxr-xr-x 3 root root 21 3月  22 17:50 doc
drwxr-xr-x 2 root root 21 3月  22 17:50 sbin
drwxr-xr-x 3 root root 17 3月  22 17:50 share
[root@node1 haproxy-1.8.19]# cp -a examples /usr/local/haproxy/    # 拷贝一些模板;

3.2.3、创建目录

mkdir -pv /usr/local/haproxy/conf/ready/{tcp,http}     # 为多配置文件准备,省略;
mkdir -pv /usr/local/haproxy/conf/enabled/{tcp,http}   # 为多配置文件准备,省略;
mkdir -pv /usr/local/haproxy/logsmkdir -pv /etc/haproxy                      #创建配置目录
mkdir -pv /usr/share/haproxy/               #防止启动出错
touch /usr/local/haproxy/conf/haproxy.cfg   #创建配置文件
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件

3.2.4、查看haprxoy的版本

[root@node1 haproxy-1.8.19]# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 1.8.19 2019/02/11
Copyright 2000-2019 Willy Tarreau <willy@haproxy.org>

3.2.5、把haproxy添加到系统服务

复制haproxy文件到/usr/sbin下
因为下面的haproxy.init启动脚本默认会去/usr/sbin下找。

[root@node1 haproxy-1.8.19]# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy

添加到系统服务并开机自启动

[root@node1 haproxy-1.8.19]# cp ./examples/haproxy.init /etc/init.d/haproxy
[root@node1 haproxy-1.8.19]# chmod 755 /etc/init.d/haproxy
[root@node1 haproxy-1.8.19]# chkconfig --add haproxy
[root@node1 haproxy-1.8.19]# chkconfig haproxy on
[root@node1 haproxy-1.8.19]# chkconfig --list|grep haproxy注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。haproxy         0:关 1:关 2:开 3:开 4:开 5:开 6:关

服务管理:

启动:service haproxy start
停止:service haproxy stop
重载:service haproxy restart
状态:service haproxy status
检查:service haproxy test

处理一个报错

[root@node1 haproxy-1.8.19]# service haproxy status
/etc/init.d/haproxy: 第 26 行:[: =: 期待一元表达式
● haproxy.service - SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.Loaded: loaded (/etc/rc.d/init.d/haproxy; bad; vendor preset: disabled)Active: inactive (dead)Docs: man:systemd-sysv-generator(8)[root@node1 haproxy-1.8.19]# vim +26 /etc/rc.d/init.d/haproxy26 [ ${NETWORKING} = "no" ] && exit 0改为:26 [ "${NETWORKING}" = "no" ] && exit 0

4、配置Haproxy

官方文档:
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html

4.1、为多配置文件准备,省略;

熟悉 Nginx 和 Apache 的朋友都知道,这两个 Webservice 都支持 include 加载多个配置文件的语法,但是 Haproxy 并不支持!如果现网映射规则非常多,那么 haproxy.cfg 这个配置文件就很长!
Hparoxy 实现多配置文件的方案,但是不是 include 语法,而是在启动的时候多次使用-f 拼接配置文件,比如:

cd /usr/local/haproxy/sbin
./haproxy -f ../conf/haproxy.cfg -f ../conf/ext1.cfg -f ../conf/ext2.cfg

因此,我们可以在配置文件目录以及启动脚本上做点改变,让 Haproxy 支持多配置文件。

路径约定:

  • 待上线的 tcp 映射规则存放目录:/usr/local/haproxy/conf/ready/tcp
  • 待上线的 http 映射规则存放目录:/usr/local/haproxy/conf/ready/http
  • 已上线的 tcp 映射规则存放目录:/usr/local/haproxy/conf/enabled/tcp
  • 已上线的 http 映射规则存放目录:/usr/local/haproxy/conf/enabled/http
  • Ps:本文为多配置模式,enabled 里面的配置为软链接形式,软链接至 ready 对应配置文件,方便管理。

4.2、配置模板

Haproxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择作为配置。
• global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改;
• default:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件;
• frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的backend(可动态选择);
• backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器;
• listen:Frontend和Backend的组合体;通过关联“前端”和“后端”定义了一个完整的代理,通常只对TCP流量有用。

主配置:/usr/local/haproxy/haproxy.cfg文件

[root@node1 ~]# vim /usr/local/haproxy/conf/haproxy.cfg
#configure haproxy.cfg
# 全局配置
globallog 127.0.0.1 local0         # 设置日志log 127.0.0.1 local1 noticemaxconn 4000                 # 最大连接数chroot /usr/local/haproxy    # 安装目录user haproxygroup haproxydaemon                       # 守护进程运行#nbproc 1                    # 进程数量,只能用于守护进程模式的haproxy;默认启动一个进程,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;pidfile /var/run/haproxy.pid# 默认配置
defaultslog     globalmode    http                 # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OKoption  httplog              # http 日志格式option dontlognull           # 不记录健康检查日志信息;option  redispatch           # serverId对应的服务器挂掉后,强制定向到其他健康的服务器option http-server-close#option  abortonclose        # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接;#option  forwardfor          # 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip;#option  httpclose           # 主动关闭http通道,每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现;  balance roundrobin           # 负载均衡算法,轮询;retries 3                    # 重试次数;timeout http-request  10s    # 客户端建立连接但不请求数据时,关闭客户端连接;timeout queue         1m     # 等待最大时长;timeout connect 10s          # 定义haproxy将客户端请求转发至后端服务器所等待的超时时间;timeout client 1m            # 客户端非活动状态的超长时间(默认毫秒)timeout server 1m            # 客户端与服务器建立连接后,等待服务器端的超时时长(默认毫秒)timeout http-keep-alive 10s  # 定义保持连接的超时时长;timeout check 10s            # 心跳检测超时;maxconn 3000                 # 每个server最大的连接数;# 统计页面配置
listen admin_stats  bind 0.0.0.0:50000           # 监听IP和端口,为了安全可以设置本机的局域网IP及端口;mode httpoption httplog               # 采用http日志格式  stats refresh 30s            # 统计页面自动刷新时间  stats uri /haproxy?stats     # 状态管理页面,通过/haproxy?stats来访问stats realm Haproxy Manager  # 统计页面密码框上提示文本  stats auth admin:psadmin     # 统计页面用户名和密码设置  #stats hide-version          # 隐藏统计页面上HAProxy的版本信息#errorfile 403 /usr/local/haproxy/examples/errorfiles/   #设置haproxy 错误页面#前端配置
frontend http_mainbind 0.0.0.0:80              # http请求的端口,会被转发到设置的ip及端口# 转发规则#acl url_yuming   path_beg www.yuming.com#use_backend server_yuming if url_yuming# 默认跳转项,当上面都没有匹配上,就转到backend的http_default上;default_backend http_default# 提升失败的时候的用户体验#errorfile 502 /usr/local/haproxy/examples/errorfiles/502.http#errorfile 503 /usr/local/haproxy/examples/errorfiles/503.http#errorfile 504 /usr/local/haproxy/examples/errorfiles/504.http# 后端配置
backend http_default# 额外的一些设置,按需使用option forwardforoption forwardfor header Client-IPoption http-server-closeoption httpclose# 负载均衡方式#source 根据请求源IP#static-rr 根据权重#leastconn 最少连接先处理;在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的,#uri 根据请求的uri#url_param 根据请求的url参数#rdp-cookie 据据cookie(name)来锁定并哈希每一次请求#hdr(name) 根据HTTP请求头来锁定每一次HTTP请求#roundrobin 轮询方式balance roundrobin           # 负载均衡的方式,轮询方式# 设置健康检查页面#option httpchk GET /index.html#传递客户端真实IPoption forwardfor header X-Forwarded-For# 需要转发的ip及端口# inter 2000 健康检查时间间隔2秒# rise 3 检测多少次才认为是正常的# fall 3 失败多少次才认为是不可用的# weight 30 权重server node1 192.168.1.101:8080 check inter 2000 rise 3 fall 3 weight 30server node2 192.168.1.101:8081 check inter 2000 rise 3 fall 3 weight 30

多配置模式中,多个 frontend 必须绑定不同的 IP 或者端口,否则数据会串,导致映射到不同的后端而报错。因此,同一个 IP+端口下的映射务必配置到同一个 frontend 模块内。

4.3、配置说明

转发规则

前端配置frontend中

acl url_yuming path_beg www.yuming.com
use_backend yuming if url_yuming

www.yuming.com访问时,会转发给后端backend的yuming项目;可用于一下几种配置:

域名跳转:客户端通过访问某个域名跳转到跳转指定服务器或者其他域名;
IP地址跳转:客户端访问指定IP地址时,转发到后端IP;
端口跳转:客户端通过域名加端口访问时,转发到后端IP和端口;
动静分离:
默认跳转:客户端访问时,如果其它规则都不匹配,默认转发到后端IP和端口;
多ACL匹配:当指定客户端(根据IP匹配)访问某一个域名或者IP时,默认转发到后端IP和端口;

5、配置日志rsyslog

vim /etc/rsyslog.conf
# 取消如下2行注释
$ModLoad imudp
$UDPServerRun 514# 新增配置:local 1~7   –自定义的日志设备
local7.* /var/log/haproxy.log

重启syslog服务

# centos 6.*
service rsyslog restart# CentOS 7.*
systemctl restart rsyslog

6、验证

6.1、启动Haproxy

[root@node1 ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
root      6950     1  0 19:35 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

或者

[root@node1 ~]# service haproxy start
Starting haproxy (via systemctl):                          [  确定  ]
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
haproxy    4383      1  0 15:53 ?        00:00:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

haproxy参数说明

-v    显示版本; 
-vv   显示已知的构建选项。
-f    指定配置文件启动;
-p    指定pid文件;
-d    进入调试模式; 
-db    仅禁用后台模式。
-dM [<byte>]   使用<byte>中毒内存(默认为0x50)
-V    进入详细模式(禁用安静模式)
-D    去守护进程; 
-C    在加载文件之前更改为<dir>。
-q quiet mode:不显示消息
-c check mode:只检查配置文件并退出
-n    设置最大连接数(2000)
-m    限制可用内存量(以MB为单位)
-N    设置默认的每代理最大连接数(2000)
-L    设置本地对等名称(默认为hostname)
-p    将所有子项的pid写入此文件
-de    即使在可用时也禁用epoll()用法
-dp    即使在可用时也禁用poll()用法
-dS    禁用拼接使用(在旧内核上断开)
-dG    禁用getaddrinfo()用法
-dV    在服务器端禁用SSL验证
-sf/-st [pid]*    完成/终止旧的pid。必须是最后的论点。

6.2、前端登陆页面

URL:http://$IP:80
建议把上面两个转发改为不同的页面,不停刷新,查看是否有页面切换;

6.3、后台监控登陆

URL:http://$IP:50000/haproxy?stats
username:admin
password:psadmin
haproxy监控后台服务器的情况如图:
Haproxy安装与配置

参考

https://www.cnblogs.com/ilanni/p/4750081.html
http://www.ttlsa.com/linux/haproxy-study-tutorial/

转载于:https://blog.51cto.com/moerjinrong/2370128

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

删除word中所有的表格_如何在Word中删除表格

删除word中所有的表格If you’ve inserted a table in Word and you now want to delete it, you may have found it’s not all that straightforward to delete the entire table without deleting other content around the table. We’ll show you a couple of ways around…

Jenkins在windows平台下,让Powershell和批处理可以拉起进程并保持

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;无尽的折腾后&#xff0c;终于又回到…

MVC身份验证及权限管理(转载)

from https://www.cnblogs.com/asks/p/4372783.html MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式&#xff0c;其中最常用的就是我们的Form认证&#xff0c;需要配置相应的信息。例如下面的配置信息&#xff1a; <authentication mo…

WPF-23 基于Timer任务调度

.NET的FCL中提供了几个计时器&#xff0c;大多数初学者都不清楚他们有什么不同&#xff0c;那我们这节来剖解一下每个计时器的本质&#xff1a;1.System.Threading.Timer如果在一个线程池上执行一个定时的周期性的后台线程任务他是最好的选择&#xff0c;这个类是和线程池相关联…

在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表

在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求&#xff0c;特别是在一些ASP.NET网站中&#xff0c;有时候我们并不能保证Web服务器上一定安装了Office组件&#xff0c;所以使用微软的Office来生成Excel并不保证在所有情况下都使用&#xff0c;有时候即使W…

facebook 邀请好友_如何在Facebook上与某人解除好友

facebook 邀请好友It’s very easy for your Facebook News Feed to get cluttered. After a few years adding ukulele playing magicians you meet wandering the street and the bar staff at every bar you go to regularly, it gets overrun with people you’ll never se…

mac下npm/node的安装和卸载、升级;node、npm升级后最后删掉node_modules重新安装

mac还是使用brew install简单一些&#xff1b;最好使用一种安装方式&#xff0c;不要多种方式互用&#xff1b; 更新npm到最新版本npm install -g npm更新npm到指定版本 npm -g install npm2.9.1指定安装目录npm install --prefix /usr/local -g npm 1、从官网https://nodejs.o…

Edison的2022年终总结

大家好&#xff0c;我是Edison。2022年即将结束&#xff0c;又到了做年终总结的时候&#xff0c;它是我每年的一个习惯&#xff0c;意味着又要开始新的征途&#xff0c;在开始新的征途之前回顾一下很有必要。艰难抉择&#xff1a;从互联网到制造业今年最大的变化就是又换了份工…

JNI

配置NDK&#xff0c;调用JNI最终会生成一个so库&#xff0c;如果so库生成了。直接在项目中使用so库即可调用本地方法。注意&#xff1a;api的包名要与so库定义的包名一致。 1什么是jni jni java native interface java本地开发接口&#xff0c;是JAVA和C互相调用的桥梁。 2jni有…

dvd vlc 复制_如何使用VLC翻录DVD

dvd vlc 复制There are many ways to rip a DVD to your computer, but if you’re looking for the most straightforward option, VLC is easy and free. Besides, you probably already have VLC on your computer (and if you don’t, you should). Here, we’ll show you …

新年芯事 | 龙芯物联网主控芯片龙芯1C102和龙芯1C103流片成功

前言近期&#xff0c;龙芯中科面向物联网领域研制的主控芯片--龙芯1C102和龙芯1C103流片成功&#xff0c;两款微控制器芯片各项功能测试正常&#xff0c;符合设计预期。 龙芯1C102主要面向智能家居以及其他物联网设备详细介绍龙芯1C102采用龙芯LA132处理器核心&#xff0c;是一…

【加更】搭建基于chatgpt的钉钉聊天机器人

应某些小伙伴的加更请求&#xff0c;出一期基于钉钉上的聊天机器人&#xff0c;我顺便加更一期&#xff0c;搭建一个钉钉聊天机器人的小教程。首先进入到钉钉开放平台的后台管理系统&#xff1a;https://open.dingtalk.com/进入到 应用开发->企业内部开发->机器人右上角选…

word中 有注释标签吗_如何在Word中注释图像

word中 有注释标签吗If you’re writing a document that includes images, you may want to add annotations to those images to clarify what they represent. You can add callouts to your images to point out particular parts of the image and add text to describe t…

牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)

题目链接&#xff1a; https://www.nowcoder.com/acm/contest/140/J 思路&#xff1a; 都写在代码注释里了&#xff0c;非常好懂。。 for_each函数可以去看一下&#xff0c;遍历起vector数组比较方便&#xff0c;用for(int i 0;i < q[i].size();i)的话&#xff0c;是会有一…

微软IE 9 Beta全程体验图集

微软刚刚更新了IE 9 Beta的新页面&#xff0c;此次发布的Beta版本一共有27个国家的语言&#xff0c;其中也包括了简体中文和香港和台湾的繁体中文版。 点击此处进入下载页面&#xff1a; http://windows.microsoft.com/zh-CN/internet-explorer/download/ie-9/worldwide IE9的热…

.net core中Quartz的使用方法

我们在日常开发中&#xff0c;总会遇到这样的需求&#xff1a;每隔一段时间&#xff0c;执行一次某个任务。固定某个时间执行任务&#xff0c;例如凌晨12点对当天的数据进行统计。每个月的第几天&#xff0c;执行某个任务。Quartz.Net是根据Java的Quartz用C#改写而来&#xff0…

windows10访客_如何在Windows 10中创建访客帐户

windows10访客If you find that your guests are asking fairly often to use your computer temporarily to check their email or look something up on the web, you don’t have to let them use your personal account or create a special account for each guest. 如果发…

几个有趣的算法题目

本文首发 http://svtter.cn最接近的数字 题目 一个K位的数N $$ (K\leq2000&#xff0c;N\leq10^{20}) $$ 找出一个比N大且最接近的数&#xff0c;这个数的每位之和与N相同&#xff0c;用代码实现之。 例如&#xff1a;0050 所求书数字为0104&#xff1b;112 所求数为121&#x…

获取一篇新闻的全部信息

给定一篇新闻的链接newsUrl&#xff0c;获取该新闻的全部信息 标题、作者、发布单位、审核、来源 发布时间:转换成datetime类型 点击&#xff1a; newsUrlnewsId(使用正则表达式re)clickUrl(str.format(newsId))requests.get(clickUrl)newClick(用字符串处理&#xff0c;或正则…

上twitter_如何在Twitter上更改您的显示名称

上twitterUnlike Facebook, Twitter has never insisted people user their real names. In fact, there’s a long tradition of people changing their names to a joke or pun because it’s Christmas or Halloween, or just for no reason at all. 与Facebook不同&#xf…