Nginx网络服务
1 Nginx服务基础
Nginx( 发音为[engine x] ) 专为性能优化而开发,其最知名的优点是它的稳定性和低系
统资源消耗, 以及对HTTP 并发连接的高处理能力(单台物理服务器可支持30000~50000
个并发请求) 。正因为如此, 大矗提供社交网络、新闻资讯、电子商务及虚拟主机等服务
的企业纷纷选择Ngi nx 来提供Web 服务。
1.1 Nginx 1.12 安装及运行控制
1. 编译安装Nginx
( 1 ) 安装支持软件
Nginx 的配置及运行需要pcre 、zlib 等软件包的支持, 因此应预先安装这些软件的开发
包( devel ) , 以便提供相应的库和头文件,确保Nginx 的安装顺利完成。
[root@localhost ~]#yum -y install pcre-devel zlib-devel gcc++ gcc
( 2 ) 创建运行用户、组
Nginx 服务程序默认以nobody 身份运行,建议为其创建专门的用户账号,以便更准确
地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为nginx 的用户,不建
立宿主文件夹, 也禁止登录到Shell 环境。
[root@localhost ~]#yum -y install pcre-devel zlib-devel gcc++ gcc
( 3 ) 编译安装Nginx
配置Nginx 的编译选项时, 将安装目录设为/usr/local/nginx,运行用户和组均设为nginx:
启用http_stub_status_m odule 模块以支持状态统计, 便于查看服务器的连接信息。
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost ~]#cd nginx-1.12.0
[root@localhost nginx-1 .12.0]#./configure --prefix=/usr/local/nginx --user=nginx
--group=nginx --with-http_stub_status_module
[root@localhost nginx-1 .12.0]# make&&make install
为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件, 以便管理员
直接执行“ ngi nx ”命令就可以调用Nginx的主程序。
2. Nginx 的运行控制
( 1 ) 检查配置文件
与Apache 的主程序httpd 类似, Ngi nx 的主程序也提供了“-t”选项用来对配置文件进行检查, 以便找出不当或错误的配置。配置文件ngi nx .conf 默认位于安装目录下的conf/子目录中。若要检查位千其他位置的配置文件, 可使用“-c”选项来指定路径。
( 2 ) 启动、停止Nginx
直接运行Nginx 即可启动Nginx 服务器, 这种方式将使用默认的配置文件, 若要改用其他配置文件, 需添加“-c 配置文件路径”选项来指定路径。需要注意的是, 若服务器中已装有httpd 等其他Web 服务软件, 应采取措施(修改端口、停用或卸载)避免冲突。
通过检查Nginx 程序的监听状态, 或者在浏览器中访问此Web 服务( 默认页面将显示"Welcome to nginx!" ) , 可以确认Ngi nx 服务是否正常运行。
主程序Nginx 支待标准的进程信号, 通过KILL 或killall 命令发送HUP 信号表示重载配置,QUIT 信号表示退出进程, KILL 信号表示杀死进程。例如, 若使用ki llall 命令, 重载配置、停止服务的操作分别如下所示(通过“-s”选项指定信号种类)。
[root@localhost ~]#killall -s HUP nginx //选项-s HUP 等同千- 1
[root@localhost ~]#killall -s QUIT nginx //选项-s QUIT 等同千-3
当Nginx 进程运行时, PID 号默认存放在logs/ 目录下的nginx . pid 文件中, 因此若改用KILL 命令, 也可以根据ngi nx . p id 文件中的P ID 号来进行控制。
( 3 ) 添加Nginx 系统服务
为了使Nginx 服务的启动、停止、重载等操作更加方便, 可以编写Ngi nx 服务脚本,并使用ch kconfig 和systemctl 工具来进行管理,也更加符合CentOS7.3 系统的管理习惯。
[root@localhost ~]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
pkill nginx
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# systemctl status nginx
1.2:配置文件nginx.conf
1. 全局配置
由各种配置语句组成, 不使用特定的界定标记。全局配置部分包括Nginx 服务的运行用户、工作进程数、错误日志、PIO 存放位置等基本设置。
#user nobody; ##运行用户
worker_processes 1; ##工作进程数量
#error_log logs/error.log; ##错误日志文件的位置
#pid logs/nginx.pid; ##PID 文件的位置
2. I/0 事件配置
events {
use epoll; ##使用 epoll 模型
worker_connections 4096; ##每进程处理 4096 个连接
}
3. HTTP 配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.benet.com;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
1.3:访问状态统计
Nginx 内置了HTTP_STUB_STATUS 状态统计模块, 用来反馈当前的Web 访问情况。配置编译参数时可添加--with-http_stub_status_module 来启用此模块支待, 可以使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的Nginx 是否包含HTTP_STUB_STATUS 模块。
要使用Nginx 的状态统计功能, 除了启用内建模块以外, 还需要修改nginx. conf 配置文件, 指定访问位置并添加stub_status 配置代码。
location /status {
stub_status on;
access_log off;
}
2 LNMP 架构部署及应用
2.1:构建LNMP网站平台
1. 安装MySQL 服务
2. 安装PHP解析环境
新版本的PHP ( 如5. 5 版本)已经自带FPM ( FastCGI Process Manager, FastCGI进程管理器) 模块, 用来对PHP 解析实例进行管理、优化解析效率。单服务器的LNMP 架构通常使用这种方式, 因此在配置PHP 编译选项时应添加“”--enable-fp m” 以启用此模块。
以源码包PHP-5 . 5. 38 为例, 具体安装过程如下。为了提高PHP 解析效率, 建议将相应版本的Zend G ua 「dloade r 也装上
(1) 编译安装PHP
[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@localhost ~]#tar -zxvf php-5.5.38.tar.gz
[root@localhost ~]#cd php-5.5.38/
[root@localhost php-5.5.38]# ./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--enable-fpm \
--with-jpeg-dir=/usr/lib
- libxml2-devel:libxml是一个用来解析XML文档的函数库
- libjpeg-devel #是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现
- libpng-devel #libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作
- GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片。PHP除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等图片进行处理
- zlib-devel #Zlib是一个压缩和解压模块
(2)安装后调整
[root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/
(3)安装 ZendGuardLoader
[root@localhost ~]# tar -zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
[root@localhost ~]# cd zend-loader-php5.5-linux-x86_64/
[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@localhost zend-loader-php5.5-linux-x86_64]# vim /usr/local/php5/php.ini
添加下列内容:
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
3. 配置Nginx 支持PHP 环境
若要让Nginx 能够解析PHP 网页, 有两种方法可以选择: 其一, 充当中介, 将访问PHP页面的Web 请求转交给其他服务器( LAM P ) 去处理;其二, 通过使用PH P 的FPM 模块来调用本机的PHP 环境。
( 1) 启用php-fpm 进程
如果选用fpm 方式, 则需要先启动ph p-fpm 进程,以便监听p hp 解析请求。参考范例建立php-fpm. conf 配置文件, 并修改其中的P I O 文件、运行用户、服务数(进程数量)等相关设置,然后启动p hp-fp m 程序即可(默认监听本机的9000 端口)
在php-fpm.conf 文件中,pid 配置行指出了PID 信息的存放位置, 对应的实际路径为/usr/local/php 5/var/run/ph p-fpm . pid 。根据上述信息, 可以修改Nginx 服务脚本, 以便启动/停止Nginx 服务器时将ph p-fpm 进程也自动启停。
[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vim php-fpm.conf
pid = run/php-fpm.pid
user = php
group = php
pm.max_children = 50 ##最多子进程数
pm.start_servers = 20 ##启动时开启的进程数
pm.min_spare_servers = 5 ##最少空闲进程数
pm.max_spare_servers = 35 ##最多空闲进程数
[root@localhost etc]# /usr/local/sbin/php-fpm
[root@localhost etc]# netstat -anpt | grep php-fpm
[root@localhost etc]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
start)
$PROG
$PROG_FPM
;;
stop)
pkill nginx
pkill php-fpm
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
kill -s HUP $(cat $PIDF_FPM)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart nginx
( 2 ) 配置Nginx 支持PHP 解析
无论是将PHP 页面交给LAMP 服务去解析, 还是调用本机的ph p-fpm 进程进行解析,都需要在“'serve{}"配置段中添加location 设置, 以便指定当访问php 页面时采取何种操作。
对于第一种方法( 转给其他Web 服务器处理) , 使用的配置语句如下所示。例如, 交给IP 地址为192 .168. 1 . 22 的LAMP 服务器处理, 从而实现由Nginx 负责处理静态页面,LAMP 负责动态页面的分离效果。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
Server{
root /var/www/kgc/bbs;
location ~ \.php$ {
proxy_pass http://192.168.10.101:80;
}
}
对于第二种方法( 调用本机的p hp-fpm 进程) , 使用的配置语句如下所示。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
Server{
listen 80;server_name www.bt.com;
location / {
root /var/www/html;index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/html;fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
( 3) PHP 页面访问测试
2.2:在LNMP平台中部署Web应用
1. 下载并部署程序代码
Discuz ! 社区论坛, 是一个采用PHP 与mysq l 等多种数据库构建的性能优异, 功能全面且安全稳定的社区论坛( BBS ) 软件, 其官方网站为www. discuz . net 。
将下载的D iscuz 源码文件解压, 找到其中的upl oad 文件夹并将其放置到LN M P 服务器的网站根目录, 然后适当调整权限( 若此处不调整, 也可以参考安装页面的提示再调整) ,以允许Nginx 、ph p-fpm 程序拥有必要的写入权限。
[root@localhost ~]# yum -y install unzip
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip
[root@localhost ~]# mkdir -p /var/www/html/bbs
[root@localhost ~]# mv upload/* /var/www/html/bbs
[root@localhost ~]# chown -R php:php /var/www/html/bbs/
2:创建数据库
D iscuz 论坛中的帖子、板块等信息需要保存在数据库中, 所以要针对Discuz 创建数据
库。为了降低Web 应用程序对数据库的风险, 建议设置专用的数据库及授权用户, 而不要
直接使用root 用户。例如, 可以新建bbs 库、授权用户为runbbs, 操作如下所示。
[root@localhost ~]# mysql -uroot -p
mysql>create database bbs;
mysql>grant all on bbs.* to runbbs@127.0.0.1 identified by 'bbs123';
mysql>grant all on bbs.* to runbbs@'localhost' identified by 'bbs123';
3. 安装Web 应用
访问服务器U RL 地址, 将会打开Discuz 的安装程序, 根据页面提示,只需要三部即可轻松完成安装
4. 访问Web 应用系统
完成安装后, 通过访问http:/1192 . 168 .9.237/bbs/forum. p hp, 可以看到Discuz 社区论坛站点首页, 如图5.3 所示; 通过访问http:/1192 . 168.9.237/bbs/adm in . ph p 并以管理员账号登录后, 可以进入管理后台。
相关文章:
Nginx网络服务
1 Nginx服务基础 Nginx( 发音为[engine x] ) 专为性能优化而开发,其最知名的优点是它的稳定性和低系 统资源消耗, 以及对HTTP 并发连接的高处理能力(单台物理服务器可支持30000~50000 个并发请求) 。正因为…...
ifconfig eth0 hw ether
ifconfig hw ether 是一个用于在 Linux 系统中设置或更改网络接口的硬件地址(即 MAC 地址)的命令。具体操作步骤如下: 首先,您需要确定要更改 MAC 地址的网络接口名称,通常是 eth0, eth1 等,取决于您的系统…...
微信小程序录音机源代码
<!-- <button bind:tap"startTab">开始录音</button> <button bind:tap"stopTab">结束录音</button> <button bind:tap"playTab">播放录音</button> <view style"margin: 0 auto;">{{ti…...
基于c语言的简单的数据库
简单的数据库 - 飞书云文档 (feishu.cn) mydatabase: 实现一个简单的数据库,基于B树 (gitee.com)...
Docker 容器内运行的 Neo4j 实例 安装apoc插件
插件 本页描述了如何将插件安装到在 Docker 容器内运行的 Neo4j 实例中。有关插件的一般说明,请参见配置 → 插件。 安装插件 安装插件,包括用户定义的程序,将包含插件 JAR 的文件夹或卷挂载到 /plugins ,例如: docker…...
PostgreSQL源码分析——审计插件pgaudit
PostgreSQL审计插件pgaudit 在PostgreSQL中,提供了开源的审计插件pgaudit,但是其功能并不完善,只提供了基本的审计功能,对此,很多基于PG开发的商业数据库大多提供了丰富的审计功能。比如人大金仓,openGaus…...
ijkplayer编译 android版本
ijkplayer源码下载地址如下:https://github.com/bilibili/ijkplayer 下载代码,直接执行如下命令即可: $cd /data/project/ijkplayer/ $git clone https://github.com/bilibili/ijkplayer.git $git checkout -B latest k0.8.8 1 环境安装 …...
面向对象的进阶---static
1.static 静态变量 package com.itheima.a01staticdemo01;public class Student {private String name;private int age;public static String teacherName;public Student() {}public Student(String name, int age) {this.name name;this.age age;}/*** 获取* return n…...
React useContext
useContext 允许父组件向其下层无论多深的任何组件提供信息,而无需通过 props 显式传递。 // 1. LevelContext.js 创建 context,将其从文件中导出 import { createContext } from react; export const LevelContext createContext(1);// 2. Section.j…...
【尚庭公寓SpringBoot + Vue 项目实战】用户管理(十五)
【尚庭公寓SpringBoot Vue 项目实战】用户管理(十五) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】用户管理(十五)1、业务介绍2、接口实现2.1、根据条件分页查询用户列表2.2、根据ID更新用户状态 1、业务介绍 用户管理共包含两…...
laravel中如何向字段标签添加工具提示
首先,您可以使用 轻松自定义字段标签->label()。我相信您知道这一点。但您知道吗……标签输出未转义?这意味着您也可以在标签中包含 HTML。 为了尽快实现上述目标,我只是采取了一个快速而粗糙的解决方案: CRUD::field(nickna…...
高考志愿填报,选专业应该考虑哪些因素?
这是一个复杂的社会,各种影响就业的因素层出不穷,也从未断绝。对于高考生而言,高考刚结束,短暂的放松后,就必须考虑自身以后应该就读什么专业,如果不对就读专业进行评估,仔细挑选,毕…...
图书管理系统代码(Java)
1、运行演示 QQ2024528-205028-HD 详细讲解在这篇博客:JavaSE:图书管理系统-CSDN博客 2、所建的包 3、Java代码 3.1 book包 3.1.1 Book类代码 package book;/*** Created with IntelliJ IDEA.* Description:* User: dings* Date: 2024-05-13* Time:…...
Nginx反向代理Kingbase数据库
本文适用于开发人员学习运维领域知识,主要内容为在个人理解的基础上对企业级开发中所使用的Nginx和数据库kingbase相关使用,并附上Nginx反向代理kingbase数据库的相关配置的操作方式,感谢阅读 为什么是nginx代理kingbase数据库服务端 生产环…...
没有字幕的高清爆款视频素材去哪里找?无字幕无水印素材网站分享
在寻找无水印高清视频素材的道路上感到困惑?欢迎来到今天的分享,我将为您介绍一些海外优质的素材网站,以及国内极具特色的“蛙学府”。不论您是短视频制作的新手还是老手,这些网站都将为您的创意注入新活力。 蛙学府网 蛙学府网不…...
Java23种设计模式(一)
前言 这2个月来,重新出发,从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置,再到后面的基础学习、数据库学习、扩展学习(maven、mq、设计模式、spring 系列等等),边学边记录,…...
Spring Boot集成websocket实现webrtc功能
1.什么是webrtc? WebRTC 是 Web 实时通信(Real-Time Communication)的缩写,它既是 API 也是协议。WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一组规则。开发人员可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC…...
StableSwarmUI 安装教程(详细)
文章目录 背景特点安装 背景 StableSwarmUI是StabilityAI官方开源的一个文生图工作流UI,目前处于beta阶段,但主流程是可以跑通的。该UI支持接入ComfyUI、Stable Diffusion-WebUI。其工作原理就是使用ComfyUI、Stable Diffusion-WebUI或者StabilityAI官方…...
利用Unity XR交互工具包实现简易VR菜单控制——6.18山大软院项目实训
初始设置 在Unity项目中,首先需要确保安装了XR插件和XR交互工具包。这些工具包提供了对VR硬件的支持,以及一系列用于快速开发VR交互的组件和预设。 脚本概览 本示例中的menuController脚本附加在一个Unity GameObject上,这个脚本负责监听用…...
区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测
区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-ABKDE卷积神经网络自适应…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
