Nginx 配置文件详解

  • main: 全局配置

  • event: 配置工作模式以及连接数

  • http: http 模块相关配置

    • server 虚拟主机配置,可以有多个

      • location 路由规则,表达式
      • upstream 集群,内网服务器

Nginx 搭建静态资源服务器

根据上面的目录。 我们在 http 模块中的 配置一个虚拟主机就可以了

 server {listen              90;             # 监听 90 端口server_name           localhost;location / {                      # 配置根路径访问root   /home/foodie-shop       # 映射哪一个文件index  index.html              # 默认根路径访问哪一个页面}location /static {                   # 访问图片方式:http://localhost:90/static/img/ face1.png#root  /homealias  /home/imooc             # 别名 home }location /imooc {                    # 访问图片方式:http://localhost:90/imooc/img/face1.pngroot     /home}
}

Nginx 中 location 匹配规则

Nginx 精确匹配

server {listen                   91;server_name              localhost;location = / {                       # 使用 = 精确匹配。 当访问时 只可以访问根路径, 其他的识别不了root html;index  imooc.html index.html;}
}

Nginx 正则匹配

 server {listen                  92;server_name              localhost;location ~* \.(GIF|png|bmp|jpg|jpeg) {                # 正则表达式。* 代表不区分大小写 , 只允许访问 这些格式的文件  不携带 * 的话,是不会忽略大小写的root    html;index  imooc.html index.html;}
}

Nginx 文件压缩功能。提高传输效率

http: {gzip              on;             # 开启 gzip 压缩功能。提高传输效率,节约网络贷款gzip_min_length  1;  1;              # 限制最小压缩。  小于一个字节的文件,就不会压缩了gzip_comp_level       3;              # 设置压缩比(压缩级别)。取值 1 ~ 9 ,  文件越大,压缩越多,但是cpu使用会更多gzip_types           text/plain application/javascript application/x-javascript text/css application/xml text/javascript # 设置需要压缩文件的类型
}

Nginx 日志目录

/var/log/nginx/access.log     # nginx 接受请求时得日志
/var/log/nginx/error.log     # nginx 发生错误时得日志

Nginx 的跨域

server {listen               90;server_name          localhost;# 允许带上cookie 请求add_header         'Access-Control-Allow-Origin' *;# 允许请求的方法 GET/POST/PUT/DELETEadd_header           'Access-Control-Allow-Methods' *;# 允许请求的headeradd_header          'Access-Control-Allow-Headers' *;
}

Nginx防盗链配置支持

server {listen               90;server_name          localhost;# 允许带上cookie 请求add_header         'Access-Control-Allow-Origin' *;# 允许请求的方法 GET/POST/PUT/DELETEadd_header           'Access-Control-Allow-Methods' *;# 允许请求的headeradd_header          'Access-Control-Allow-Headers' *;# 对源站点验证valid_referers *.imooc.com;# 非法引入会进入下方判断if ($invalid_referer) {return 404;} location / {...}
}

以上如果进入判断,直接返回 404, 如果不是非法引入,则继续往下走其他的配置。 比如 location

Nginx 配置集群

# 配置上游服务器集群
upstream tomcats {server    192.168.1.173:8080;server   192.168.1.174:8080;server   192.168.1.175:8080;server   192.168.1.176:8080;
}server {listen         80;server_name      www.tomcats.com;location / {proxy_pass  http://tomcats;             # 配置反向代理服务器}
}

Nginx 负载均衡轮询

以上的默认配置就是轮询机制

Nginx 负载均衡 加权轮询

# 配置上游服务器集群
upstream tomcats {server    192.168.1.173:8080 weight=1;       # weight 权重, 默认为 1 server    192.168.1.174:8080;server   192.168.1.175:8080 weight=2;server     192.168.1.176:8080 weight=5;
}

Nginx 负载均衡 IP-HASH

  • 算法 hash(ip) % node_counts = index
  • 当使用 ip_hash 需要下机一个服务的时候,只能使用 dwon . 不能直接删除
  • 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改。
upstream tomcats {ip_hash;                                                   # 开启 hash 负载均衡策略server  192.168.1.173:8080;server   192.168.1.174:8080;server   192.168.1.175:8080;
}

Nginx 负载均衡 URL_HASH

  • 算法 hash(url) % node_counts = index
upstream tomcats {hash $request_uri;                                                 # 开启 url_hash 算法server  192.168.1.173:8080;server   192.168.1.174:8080;server   192.168.1.175:8080;
}

Nginx 负载均衡 least_conn

  • 根据你的那一台服务比较少。就会把请求分发到接受请求最少得服务器上
upstream tomcats {least_conn;server  192.168.1.173:8080;server   192.168.1.174:8080;server   192.168.1.175:8080;
}

Nginx 中 upstream 指令

  • max_conns : 限制服务器的最大连接数, 默认值为 0 , 则不限制, 用于保护避免过载,可以起到限流作用
upstream tomcats {server     192.168.1.173:8080 max_conns=2;server  192.168.1.174:8080 max_conns=2;server  192.168.1.175:8080 max_conns=2;
}
  • slow_start : 如果在 upstream 中只有一台 server , 则该参数失效。不适用与 hash 和 random 的负载均衡策略上的, 收费功能!!!
upstream tomcats {server     192.168.1.173:8080 weight=6 slow_start=60s;       # 在服务器启动 60 s 之后,他的权重会慢慢增长到 6 server     192.168.1.174:8080 weight=2;server     192.168.1.175:8080 weight=2;
}
  • down : 用于标记服务节点不可用:
upstream tomcats {server     192.168.1.173:8080 down;                            # 使用这个参数后,表示该服务不可用server     192.168.1.174:8080;server   192.168.1.175:8080;
}
  • backup : 备用状态。 表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群中,被用户访问到,参数不能使用在 hash 和 random load balancing 中。
upstream tomcats {server     192.168.1.173:8080 backup;                          # 使用这个参数后,表示该服务不可用server     192.168.1.174:8080;server   192.168.1.175:8080;
}
  • max_fails : 最大失败次数。 达到最大失败次数,会认为当前的 server ,就已经宕机了。用户的请求就不会请求到 该 server 上

  • fail_timeout : 失败超时时间

upstream tomcats {server     192.168.1.173:8080 max_fails=2 fail_timeout=1s;                       server  192.168.1.174:8080;server   192.168.1.175:8080;
}

Nginx keepalive 指令

upstream memcached_backend {server   192.168.1.174:8080;server   192.168.1.175:8080;keepalive 32;                                            # 设置长连接处理的数量
}
http {server {listen                    90;server_name              localhostlocation / {proxy_pass         http://memcached_backend;   # 反向代理地址proxy_http_version  1.1;                        # http 版本proxy_set_header   Connection "";                # 清除connection header 信息}}
}

Nginx 配置浏览器缓存

  • expires [time] 设置过期时间
  • expires @[time] @22h30m 晚上十点钟30分 文件过期
  • expires -[time] 设置文件提前过期
  • expires epoch 设置不使用缓存
  • expires off 关闭nginx 的缓存策略。 但是浏览器会有自己的缓存策略
  • expires max 最大的过期时间,就相当于永不过期
server {listen                       90;server_name                  localhost;location /static {alias   /home/imooc;# expires   10s;                                        # 设置此location /static 下的文件缓存 10 s 过期# expires   @22h30m;                                   # 设置每天的晚上十点钟30分文件过期# expires    -1h;                                        # 设置文件提前一小时过期。 就是没有用缓存# expires     epoch                                       # 关闭缓存# expires     off                                         # 关闭nginx 的缓存策略。 但是浏览器会有自己的缓存策略# expires    max                                         # 最大的过期时间,就相当于永不过期}
}

Nginx 配置反向代理缓存

  • proxy_cache : 开启并使用反向代理缓存
upstream tomcats {server     192.168.1.173:8080;                     server  192.168.1.174:8080;server   192.168.1.175:8080;
}# proxy_cache_path:设置缓存保存的目录
# keys_zone: 共享空间。 名字为 mycache 大小为 5mb
# max_size: 设置缓存大小
# inactive:设置缓存超出时间,则缓存则会自动清理
# use_temp_path: 关闭临时目录, 开启可能会造成 nginx 性能影响
proxy_cache_path    /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;server {listen                       80;server_name                  www.tomcats.com;proxy_cache                 mycache;                        # 开启并使用缓存proxy_cache_valid          200 304 8h;                     # 针对200,304状态码缓存设置过期时间 location / {proxy_pass                http://tomcats;}
}

Nginx 配置SSL证书提供 HTTPS 访问

需要先申请一个 SSL 证书。 我在腾讯云申请的 SSL 免费证书

  • 安装SSL模块, 需要在 nginx 中配置 https , 就必须安装 ssl 模块, 也就是 http_ssl_module

    • 进入到 nginx 的解压目录 /home/software/nginx-1.16.1
    • 新增 ssl 模块(原来的模块需要保留)
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_ssl_module
  • 编译 安装
make make install
  • 配置 HTTPS

    • 将 ssl 证书 *.crt 和 私钥 拷贝到 /usr/local/nginx/conf 目录中
    • 新增 server 监听 443 端口
server {listen                   443;server_name             www.fllday.cn;ssl                       on;                                         # 开启 sslssl_certificate         1_www.fllday.cn_bundle.crt;                 # 配置 ssl 证书ssl_certificate_key      2_www.fllday.cn_com.key;                    # 配置 ssl 证书秘钥ssl_session_cache      shared:SSL:1m;                              # ssl 回话 cachessl_session_timeout       5m;                                         # ssl 会话 超时时间# 配置加密套件, 写法遵循 openssl 标准ssl_protocols          TLSvl TLsv1.1 TLSv1.2                       ssl_ciphers             ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;
}

Nginx 高可用 HA

  • Nginx 高可用集群架构 Keepalived 双机主备

    • 解决单点故障
    • 组件免费
    • 实现高可用 HA 机制
    • 基于 VRRP 协议
  • 虚拟路由冗余协议 VRRP

    • Virtual Router Redundancy Protocol
    • 解决内网单机故障的路由协议
    • 构建有多个路由器 MASTER BACKUP
    • 虚拟IP - VIP (Virtual IP Address)
  • Keepalived 安装

wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gztar -zxvf keepalived-2.0.20.tar.gzcd keepalived-2.0.20yum -y install libnl libnl-devel                              # 出现 ipv6 的警告时./configure --prefix=/usr/local/keepalived --sysconf=/etc       # prefix 安装目录  sysconf 核心配置文件位置make && make installwhereis keepalived                                           # 查找 keepalived 文件位置 cd /usr/local/keepalived                                       # keepalived 安装目录cd /etc/keepalived                                             # keepalived 配置文件目录
  • Keepalived 配置文件解析
! Configuration File for keepalivedglobal_defs {router_id keep_fllday_171# 路由id: 当前安装 keepalived 的标识符,全局唯一的
}
# 计算机节点
vrrp_instance VI_1 {# master 表示的状态,当前 nginx 的主节点, master主 backup 备state MASTER# 当前实例绑定的网卡 eth0 网卡名称interface eth0# 虚拟路由id 保证主备节点一致virtual_router_id 51# 优先级权重 优先级高,在master 死掉以后,等级越高,越容易成为 Masterpriority 100# 主备之间同步检查的时间间隔,默认 1 秒advert_int 1# 认证授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1111}# 虚拟 ip 地址#虚拟出来的ip,可以有多个(vip)virtual_ipaddress{192.168.1.161}
}

将Keepalived 注册为系统服务

# 进入到安装包的位置
cd /home/software/keepalived-2.0.20
# 查看目录
ll
aclocal.m4  bin          ChangeLog   config.status  CONTRIBUTORS  doc      install-sh       keepalived.spec.in  Makefile.am  README     TODO
ar-lib      bin_install  compile     configure      COPYING       genhash  keepalived       lib                 Makefile.in  README.md
AUTHOR      build_setup  config.log  configure.ac   depcomp       INSTALL  keepalived.spec  Makefile            missing      snap# 进入到 keepalived/etc/目录中
cd keepalived/etc
# 查看目录
init  init.d  keepalived  Makefile  Makefile.am  Makefile.in  openrc  sysconfig# 拷贝 init.d 目录中的 keepalived 到 /etc/init.d/
cp init.d/keepalived /etc/init.d/# 拷贝 sysconfig/keepalived 到 /etc/sysconfig/
cp sysconfig/keepalived /etc/sysconfig/ # 重启 etc
systemctl daemon-reload # 启动 停止 查看 keepalived 服务
systemctl start keepalived.service
systemctl stop keepalived.service
systemctl status keepalived.service

Nginx 使用Keepalived 实现双机主备高可用

按照之前的方式在另一台虚拟机安装上 keepalived

# 进入到 /etc/keepalived 删除配置文件
rm -rf keepalived.conf
# 重新编辑 配置文件
vim keepalived.conf# -------------- keepalived.conf start --------------
global_defs {router_id keep_fllday_172# 路由id: 当前安装 keepalived 的标识符,全局唯一的
}
# 计算机节点
vrrp_instance VI_1 {# master 表示的状态,当前 nginx 的主节点, master主 backup 备state BACKUP                                # 作为备用机# 当前实例绑定的网卡 eth0 网卡名称interface eth0# 虚拟路由id 保证主备节点一致virtual_router_id 51# 优先级权重 优先级高,在master 死掉以后,等级越高,越容易成为 Masterpriority 80# 主备之间同步检查的时间间隔,默认 1 秒advert_int 1# 认证授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1111}# 虚拟 ip 地址#虚拟出来的ip,可以有多个(vip)virtual_ipaddress{192.168.1.161}
}# -------------- keepalived.conf end --------------:wq! # 报存文件# 进入到 /usr/local/keepalived/
cd /usr/local/keepalived/sbin
# 启动
./kepalived

keepalived 配置 Nginx 自动重启

  • 创建检查 nginx 是否存活的脚本
# 进入到
cd /etc/keepalived/
# 创建脚本
vim check_nginx_alive_or_not.sh # -------------- 脚本 start ------------------#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断 nginx 是否宕机, 如果宕机了 就重启
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx# 等待一小会儿 继续检查,如果没有启动成功,则停止 keepalived 使用使用备用机sleep 3if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keeplivedfi
fi# -------------- 脚本 end --------------------
:wq!        # 保存脚本# 配置权限
chmod +x check_nginx_alive_or_not.sh
  • 修改 keepalived.conf 文件
global_defs {# 路由id: 当前安装 keepalived 的标识符,全局唯一的router_id keep_fllday_171
}vrrp_script check_nginx_alive {script "/etc/keepalived/check_nginx_alive_or_not.sh"# 每隔两秒钟运行一次脚本interval 2 # 如果脚本运行成功,则升级权重  + 10weight 10
}# 计算机节点
vrrp_instance VI_1 {# master 表示的状态,当前 nginx 的主节点, master主 backup 备state MASTER# 当前实例绑定的网卡 eth0 网卡名称interface eth0# 虚拟路由id 保证主备节点一致virtual_router_id 51# 优先级权重 优先级高,在master 死掉以后,等级越高,越容易成为 Masterpriority 100# 主备之间同步检查的时间间隔,默认 1 秒advert_int 1# 认证授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1111}track_script {# 追踪 nginx 脚本check_nginx_alive    }# 虚拟 ip 地址#虚拟出来的ip,可以有多个(vip)virtual_ipaddress{192.168.1.161}
}# 退出保存
:wq!# 重启keepalived

KeepAlived 双主热备原理架构

配置 DNS 轮询双主虚拟 IP

通过腾讯云或者阿里云域名解析配置即可

实现双主热备

  • 修改 171 服务上的 keepalived 配置
! Configuration File for keepalivedglobal_defs {router_id keep_fllday_171# 路由id: 当前安装 keepalived 的标识符,全局唯一的
}
vrrp_script check_nginx_alive {script "/etc/keepalived/check_nginx_alive_or_not.sh"# 每隔两秒钟运行一次脚本interval 2 # 如果脚本运行成功,则升级权重  + 10weight 10
}# 计算机节点
vrrp_instance VI_1 {# master 表示的状态,当前 nginx 的主节点, master主 backup 备state MASTER# 当前实例绑定的网卡 eth0 网卡名称interface eth0# 虚拟路由id 保证主备节点一致virtual_router_id 51# 优先级权重 优先级高,在master 死掉以后,等级越高,越容易成为 Masterpriority 100# 主备之间同步检查的时间间隔,默认 1 秒advert_int 1# 认证授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1111}track_script {check_nginx_alive }# 虚拟 ip 地址#虚拟出来的ip,可以有多个(vip)virtual_ipaddress{192.168.1.161}
}# 计算机节点
vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 52priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_nginx_alive   }virtual_ipaddress{192.168.1.162}
}
  • 修改 172 服务器 keepalived 配置文件
global_defs {# 路由id: 当前安装 keepalived 的标识符,全局唯一的router_id keep_fllday_172
}vrrp_script check_nginx_alive {script "/etc/keepalived/check_nginx_alive_or_not.sh"# 每隔两秒钟运行一次脚本interval 2 # 如果脚本运行成功,则升级权重  + 10weight 10
}# 计算机节点
vrrp_instance VI_1 {# master 表示的状态,当前 nginx 的主节点, master主 backup 备state BACKUP# 当前实例绑定的网卡 eth0 网卡名称interface eth0# 虚拟路由id 保证主备节点一致virtual_router_id 51# 优先级权重 优先级高,在master 死掉以后,等级越高,越容易成为 Masterpriority 100# 主备之间同步检查的时间间隔,默认 1 秒advert_int 1# 认证授权的密码,防止非法节点的进入authentication {auth_type PASSauth_pass 1111}track_script {# 追踪 nginx 脚本check_nginx_alive    }# 虚拟 ip 地址#虚拟出来的ip,可以有多个(vip)virtual_ipaddress{192.168.1.161}
}
vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_nginx_alive  }virtual_ipaddress{192.168.1.162}
}

修改完之后,保存重启。就可以达到 双主热备的效果了

Nginx 常用命令

./nginx -s stop      # 强制关闭./nginx -s quit       # nginx 退出./nginx -t            # 检测nginx 得配置文件是否有问题./nginx -v          # 查看nginx 当前得版本号./nginx -V          # 查看nginx 安装时得配置./nginx -?          # 查看 nginx 得命令行帮助./nginx -c             # 设置启动时得配置文件./nginx -s reload   # 重启nginx

Nginx 日志切割(手动)

默认得日志都会存在于 /var/log/nginx/access.log 文件中,但是随着时间的推移,这个文件得内容会越来越多,体积会越来越大,不便于运维人员查看,所以 我们可以通过把这个大的日志文件切割为多份不同的小文件日志。 切割规则可以以 为单位,如果每天有很多得日志得话,则可以按需求以每半天,或者每小时对日志切割一下。

  1. 创建一个 shell 可执行文件: cut_my_log.sh 内容为:
#!/bin/bash
LOG_PATH="/var/log/nginx"
RCORD_TIME=$(date -d "yesterday" + %y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
# 向nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
  1. cut_my_log.sh 添加可执行得权限:
chmod +x cut_my_log.sh
  1. 测试日志切割后的结果
./cut_my_log.sh
  1. 安装定时任务
yum install crontabs
  1. 添加定时任务
# 查看已经添加得定时任务
crontab -l# 添加定时任务
crontab -e# 配置定时任务
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh # 重启定时任务
service crond restart# 常用定时任务命令
service crond start     # 启动服务
service crond stop      # 关闭服务
service crond restart   # 重启服务
service crond reload    # 重新载入配置
crontab -e              # 编辑任务
crontab -l              # 查看任务列表

定时任务表达式:

Cron 表达式是: 分为 5 或 6 个域, 每个域代表一个含义。如下所示:

星期几 年(可选)
取值范围 0 ~ 59 0 ~ 23 1 ~ 31 1 ~ 12 1 ~ 7 2019 / 2020/ 2021/…

常用表达式:

  • 每分钟执行
*/1 * * * *
  • 每日凌晨执行(每天晚上 23:59)
59 23 * * *
  • 每日凌晨一点执行:
0 1 * * *

Nginx 集群安装以及常用配置详解开机自启动相关推荐

  1. linux搭建LVS+keepalive+nginx实现集群高性能负载均衡配置详解

    关于nginx配置tomcat实现负载均衡可参考http://blog.csdn.net/liqi_q/article/details/78063603 安装jdk可参考:http://blog.cs ...

  2. Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)

    https://github.com/QInzhengk/Math-Model-and-Machine-Learning Linux jq .vim以及LInux集群安装miniconda并配置虚拟环 ...

  3. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  4. 高可用集群技术之RHCS应用详解(一)

    前提: 1)本配置共有3个测试节点,分别node1.samlee.com.node2.samlee.com和node3.samlee.com,相的IP地址分别为172.16.100.6.172.16. ...

  5. 高可用集群技术之corosync应用详解(一)

    Corosync概述: Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等.它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义 ...

  6. Redis常用配置详解

    目录 1.使用config命令查看和修改配置 2.编辑redis.conf文件修改redis配置 3.redis.conf中常用配置项说明 Redis 的配置文件位于 Redis 安装目录下,文件名为 ...

  7. logback 常用配置详解(二) appender

    详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置详解(一)<configuration> an ...

  8. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  9. logback 常用配置详解appender

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

最新文章

  1. php把数组组成xml,php 怎么将数组转xml的函数?
  2. 浅谈android中的目录结构
  3. Oracle宣布终止所有Intel Itanium平台上的软件开发
  4. python怎么画简单图片-小白艰难的Python图像的绘制
  5. Java技巧: 根据网址查询DNS/IP地址
  6. C# 运算符的优先级和关联性
  7. 12面魔方公式图解法_三阶魔方入门
  8. 迭代子模式(Iterator)
  9. .NET Micro Framework 用户程序升级说明
  10. css3的新属性 新增的颜色--- 透明度---两种渐变---定义多张背景图--background-size...
  11. 计算机科学与技术专业实训手册,计算机专业实习工作手册.doc
  12. 利用百度图像处理API接口实现人脸融合
  13. linux usb有线网卡驱动_Linux下安装USB网卡驱动
  14. 【聚来宝】创业 兼职 教程 资料
  15. HarmonyOS电脑系统,HarmonyOS
  16. 用Python编写斐波那契数列(Fibonacci Sequence)
  17. 响铃:718 Apple产品京东超级品牌日,如何反映互联网营销大趋势?
  18. categories与set_categories
  19. This primary key of id is primitive 不建议如此请使用包装类 in Class
  20. Vista下AD1980/AD198X声卡驱动

热门文章

  1. VMware虚拟机安装XP系统演示
  2. IT项目管理经验分享, 如何做好IT项目管理
  3. LeetCode 961.重复 N 次的元素
  4. 分析getParentFile和createNewFile
  5. 元组。。。。。。。。。。。。
  6. 学习笔记--Ubuntu优化相关内容
  7. 少儿艺术培训,如何用社群做到月吸1000+精准粉?
  8. 广汽与华为合作停摆,华为转型为供应商
  9. day02--java基础编程:变量,数据类型,类型转换,运算规则,Scanner,运算符,分支结构,循环(随机数),方法,重载,可变参数,递归,数组,冒泡排序
  10. 关于我的项目-智慧图书馆(金蝶云·苍穹)