文章目录
开始前的准备工作
1、安装Xshell和Xftp
2、购买/试用/学生免费领取 阿里云服务器
3、服务器初始配置
开始部署服务器
1、MySQL的安装和配置 + Nginx的安装
(1) MySQL的安装(rpm安装)和配置
1、rpm安装MySQL并修改MySQL密码
2、在服务器的MySQL里执行如下sql语句:
(2) Nginx的安装(yum安装)
2、开启 阿里云安全组 和 服务器防火墙 的端口
下面使用4种语言实现从MySQL数据库中读取数据到浏览器中显示。
1、Java
1、压缩包安装Tomcat
2、rpm安装java1.8
3、在本地(Windows电脑上)用IDEA开发一个能实现从MySQL读取内容并显示在浏览器上的项目
4、把本地(Windows电脑上)可以访问的SpringBoot项目部署到服务器的Tomcat上
5、配置Nginx
遇到的问题和解决方法
2、PHP
1、PHP 的 安装、配置、启动
2、配置Nginx,测试访问PHP
3、用PHP语言,实现从MySQL读取内容并显示在浏览器上
遇到的问题和解决方法
小知识:php命令:启动、停止、重启。
3、Go
1、Golang的安装,第一个Go程序
2、用Go语言搭建简单的web服务器,即实现在浏览器上显示内容
3、用Go语言,实现从MySQL读取内容并显示在浏览器上
4、配置Nginx
4、Nodejs
1、安装Nodejs
2、Nodejs访问数据库
3、用Nodejs语言,实现从MySQL读取内容并显示在浏览器上
4、配置Nginx
其他
1、系统架构图
2、系统相关信息
3、软件和语言的版本信息
4、其他的 遇到的问题和解决方法
5、总结
6、参考
开始前的准备工作
1、安装Xshell和Xftp
2、购买/试用/学生免费领取 阿里云服务器
服务器购买:云服务器ECS_云主机_服务器托管_弹性计算-阿里云 云产品试用:阿里云试用中心_云服务器试用_企业试用场景_开发者云产品试用 学生的学习与优惠:开发者成长计划
3、服务器初始配置
点击右上角的控制台
->点击云服务器 ECS
->点击实例ID
。 1、创建快照 点击快照
->点击创建快照
。
2、修改实例名称 可改可不改。实例名称改为wu2
,那么远程连接时有[root@wu2 ~]#
。
3、重置服务器密码,然后用Xshell远程连接服务器 点击重置实例密码
来设置服务器密码->在Xshell中通过账号(root)密码(你刚刚重置的实例密码)进行远程登录服务器。
因为阿里云上重置实例密码,它对密码的格式有要求,你重置的密码你可能记不住,那么可以在用重置的密码通过Xshell远程登录服务器后,通过passwd
命令重置密码,此时对密码没有格式要求,可以写你能记住的密码,之后通过账号(root)密码(你刚刚用passwd
重置的密码)进行远程登录服务器。
[root@wu2 ~]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Xshell中可以通过 文件->属性->外观
来设置XShell中显示的字号,我设置为14。
开始部署服务器
1、MySQL的安装和配置 + Nginx的安装
(1) MySQL的安装(rpm安装)和配置
1、rpm安装MySQL并修改MySQL密码
下载MySQL的rpm包:MySQL :: Download MySQL Yum Repository
点击No thanks, just start my download.
,将mysql80-community-release-el7-3.noarch.rpm
下载到本地电脑上。
下载后,用Xftp将其上传到服务器的/opt/school_linux_final_test/java
下。
[root@wu2 ~]# yum install -y /opt/school_linux_final_test/java/mysql80-community-release-el7-3.noarch.rpm
[root@wu2 ~]# yum list mysql*
[root@wu2 ~]# yum install -y mysql-community-server.x86_64
[root@wu2 ~]# systemctl start mysqld
[root@wu2 ~]# systemctl status mysqld # 确保mysql已经启动
[root@wu2 ~]# mysql -V # 查看mysql版本
mysql Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
[root@wu2 ~]# grep 'password' /var/log/mysqld.log # 查看mysql初始密码
2021-05-31T07:49:15.049572Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: h9fif6176K>!
[root@wu2 ~]# mysql -u root -p
Enter password: # 密码是前面grep命令查出的密码:h9fif6176K>!
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25
。。。
mysql> alter user root@localhost identified by 'a1b2c3'; # 修改密码。密码太简单,会报错,如下。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user root@localhost identified by 'Nowcoder_123'; # 修改密码,这里密码必须有大写字母,有数字,有特殊符号。
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
[root@wu2 ~]# mysql -u root -pNowcoder_123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.25 MySQL Community Server - GPL
。。。
2、在服务器的MySQL里执行如下sql语句:
CREATE DATABASE ` linux_test` CHARACTER SET utf8 COLLATE utf8_general_ci;
USE ` linux_test` ;
CREATE TABLE ` linux_test` . ` student` ( ` id` INT ( 11 ) NOT NULL AUTO_INCREMENT , ` student_id` VARCHAR ( 50 ) , ` student_name` VARCHAR ( 50 ) , PRIMARY KEY ( ` id` ) ) ENGINE = INNODB CHARSET = utf8 COLLATE = utf8_general_ci;
INSERT INTO ` linux_test` . ` student` ( ` id` , ` student_id` , ` student_name` ) VALUES ( NULL , '2018xxxxxxxx' , 'xxx' ) ;
INSERT INTO ` linux_test` . ` student` ( ` student_id` , ` student_name` ) VALUES ( '1111' , '其他学生' ) ;
(2) Nginx的安装(yum安装)
1、yum安装Nginx
[root@wu2 ~]# yum list nginx*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
nginx.x86_64 1:1.16.1-3.el7 epel
。。。
[root@wu2 ~]# yum install -y nginx.x86_64
[root@wu2 ~]# vim /etc/nginx/nginx.conf # `/etc/nginx/nginx.conf`是nginx的配置文件
2、配置Nginx
[root@wu2 ~]# vim /etc/nginx/nginx.conf
location /index.java {
proxy_pass http://127.0.0.1:8080/;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000; #php-fpm默认的端口是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.go$ {
proxy_pass http://127.0.0.1:8000;
}
location ~ \.js$ {
proxy_pass http://127.0.0.1:8001;
}
[root@wu2 ~]# service nginx restart
这里先列一下nginx的配置,在用四种语言:Java、PHP、Go、Nodejs,实现对应语言的程序后,可以通过下方网址来访问对应的程序。
语言
标准网址
其他网址
Java
http://120.79.212.4/index.java
http://120.79.212.4:8080/
PHP
http://120.79.212.4/index.php
Go
http://120.79.212.4/index.go
http://120.79.212.4:8000/ 。 http://120.79.212.4/xxx.go
Nodejs
http://120.79.212.4/index.js
http://120.79.212.4:8001/ 。 http://120.79.212.4/xxx.js
2、开启 阿里云安全组 和 服务器防火墙 的端口
要开启的端口有:
端口
描述
80
HTTP、Nginx。
8000
我的测试端口,测试Go。
8001
我的测试端口,测试Nodejs。
8080
Tocmat。测试Java。
9000
没有用到。php-fpm,PHP。
开启阿里云安全组的端口,可视化界面开启,举例如下: 开启服务器防火墙的端口:
[root@wu2 ~]# systemctl status firewalld # 查看防火墙状态
[root@wu2 ~]# service firewalld start # 开启防火墙
[root@wu2 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@wu2 ~]# firewall-cmd --zone=public --add-port=8000/tcp --permanent
[root@wu2 ~]# firewall-cmd --zone=public --add-port=8001/tcp --permanent
[root@wu2 ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@wu2 ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent
[root@wu2 ~]# service firewalld restart # 开放端口、移除端口后,都要重启防火墙才生效
[root@wu2 ~]# firewall-cmd --list-ports # 查看开放了哪些端口
小知识:Linux防火墙基本命令。
systemctl status firewalld
service firewalld start
service firewalld restart
service firewalld stop
firewall-cmd --list-all
firewall-cmd --list-ports
firewall-cmd --query-port= 8080/tcp
firewall-cmd --zone= public --add-port= 8080/tcp --permanent
firewall-cmd --zone= public --remove-port= 8080/tcp --permanent
firwall-cmd
--zone
--add-port= 8080/tcp
--permanent
下面使用4种语言实现从MySQL数据库中读取数据到浏览器中显示。
1、Java
1、压缩包安装Tomcat
下载Tomcat的tar.gz压缩包Apache Tomcat® - Apache Tomcat 9 Software Downloads 把apache-tomcat-9.0.46.tar.gz
上传到服务器的/opt/school_linux_final_test/java
目录下。
[root@wu2 ~]# tar -zxvf /opt/school_linux_final_test/java/apache-tomcat-9.0.46.tar.gz -C /opt/school_linux_final_test/java/
[root@wu2 ~]# vim /etc/profile # 在最后追加
export PATH=$PATH:/opt/school_linux_final_test/java/apache-tomcat-9.0.46/bin
[root@wu2 ~]# source /etc/profile # 让配置文件/etc/profile生效
2、rpm安装java1.8
Java SE Development Kit 8 - Downloads
下载需要登录Oracle官网,即需要账号密码,下面是网上找的账号及密码,亲测有效。 Oracle Account:[email protected] Oracle Password:Oracle123
把jdk-8u291-linux-x64.rpm
上传到服务器的/opt/school_linux_final_test/java
目录下。
[root@wu2 ~]# rpm -qa | grep jdk # 检查是否原先安装过jdk
jdk1.8-1.8.0_291-fcs.x86_64
[root@wu2 ~]# rpm -e --nodeps jdk1.8-1.8.0_291-fcs.x86_64 # 可以卸载掉原先的jdk
[root@wu2 ~]# rpm -ivh /opt/school_linux_final_test/java/jdk-8u291-linux-x64.rpm # rpm安装jdk
[root@wu2 ~]# java -version # 安装成功
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@wu2 ~]# vim /etc/profile # 在最后追加
JAVA_HOME=/usr/java/jdk1.8.0_291-amd64
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
[root@wu2 ~]# source /etc/profile # 让配置文件/etc/profile生效
3、在本地(Windows电脑上)用IDEA开发一个能实现从MySQL读取内容并显示在浏览器上的项目
pom.xml
< project xmlns = " http://maven.apache.org/POM/4.0.0" xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion> 4.0.0 modelVersion>
< parent>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-parent artifactId>
< version> 2.5.0 version>
< relativePath/>
parent>
< groupId> com.example groupId>
< artifactId> demo artifactId>
< version> 0.0.1-SNAPSHOT version>
< name> demo name>
< description> Demo project for Spring Boot description>
< properties>
< java.version> 1.8 java.version>
properties>
< dependencies>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-web artifactId>
dependency>
< dependency>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-starter-test artifactId>
< scope> test scope>
dependency>
< dependency>
< groupId> mysql groupId>
< artifactId> mysql-connector-java artifactId>
dependency>
< dependency>
< groupId> org.mybatis.spring.boot groupId>
< artifactId> mybatis-spring-boot-starter artifactId>
< version> 2.1.0 version>
dependency>
< dependency>
< groupId> com.alibaba groupId>
< artifactId> fastjson artifactId>
< version> 1.2.58 version>
dependency>
dependencies>
< build>
< plugins>
< plugin>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-maven-plugin artifactId>
plugin>
plugins>
build>
project>
application.properties
server.port= 8080
spring.thymeleaf.cache= true
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/linux_test?characterEncoding= utf-8& useSSL= false& serverTimezone= Hongkong
spring.datasource.username= root
spring.datasource.password= a1b2c3
spring.datasource.type= com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.maximum-pool-size= 15
spring.datasource.hikari.minimum-idle= 5
spring.datasource.hikari.idle-timeout= 30000
mybatis.mapper-locations= classpath:mapper/*.xml
mybatis.type-aliases-package= com.example.entity
mybatis.configuration.useGeneratedKeys= true
mybatis.configuration.mapUnderscoreToCamelCase= true
Student.java
public class Student {
private Integer id;
private String studentId;
private String studentName;
}
StudentMapper.java
@Mapper
@Repository
public interface StudentMapper {
List< Student> selectStudents ( ) ;
}
student-mapper.xml
< mapper namespace = " com.example.dao.StudentMapper" >
< sql id = " selectFields" >
id, student_id,student_name
sql>
< select id = " selectStudents" resultType = " Student" >
select < include refid = " selectFields" > include>
from student
select>
mapper>
StudentService.java
@Service
public class StudentService {
@Autowired
private StudentMapper studentMapper;
public List< Student> selectStudents ( ) {
return studentMapper. selectStudents ( ) ;
}
}
StudentController.java
@Controller
public class StudentController {
@Autowired
private StudentService studentService;
@RequestMapping ( path = "/" , method = RequestMethod. GET)
public void selectStudents ( HttpServletResponse response) {
response. setContentType ( "text/html;charset=utf-8" ) ;
try (
PrintWriter writer = response. getWriter ( ) ;
) {
writer. write ( JSON. toJSONString ( studentService. selectStudents ( ) ) ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
}
DemoApplication.java
@SpringBootApplication
public class DemoApplication {
public static void main ( String[ ] args) {
SpringApplication. run ( DemoApplication. class , args) ;
}
}
4、把本地(Windows电脑上)可以访问的SpringBoot项目部署到服务器的Tomcat上
1、修改application.properties
spring.datasource.username= root
spring.datasource.password= Nowcoder_123
2、修改pom.xml
,增加
和
两行
< name> community name>
< description> nowcoder community description>
< packaging> war packaging>
< build>
< finalName> ROOT finalName>
< plugins>
< plugin>
< groupId> org.springframework.boot groupId>
< artifactId> spring-boot-maven-plugin artifactId>
plugin>
plugins>
build>
3、增加一个类:CommunityServletInitializer
package com. example;
import org. springframework. boot. builder. SpringApplicationBuilder;
import org. springframework. boot. web. servlet. support. SpringBootServletInitializer;
public class CommunityServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure ( SpringApplicationBuilder builder) {
return builder. sources ( DemoApplication. class ) ;
}
}
4、用maven把项目编译并且打包
5、shutdown.sh
关闭服务器tomcat,删除服务器tomcat的webapp目录下的所有文件。把本地项目目录的target目录下的ROOT.war
文件上传到服务器tomcat的webapp目录下。startup.sh
开启服务器tomcat。
6、此时,可以使用http://120.79.212.4:8080/
访问项目。
5、配置Nginx
[root@wu2 ~]# vim /etc/nginx/nginx.conf # 增加下方内容
location /index.java {
# 注意:下方的端口号后要加"/",不然会404,因为程序的Controller里是`path = "/"`。
proxy_pass http://127.0.0.1:8080/;
}
[root@wu2 ~]# service nginx restart
此时,可以用 http://120.79.212.4/index.java
访问网页。
遇到的问题和解决方法
1、 问题:Windows上访问都没有问题,但部署到服务器后,@ResponseBody返回JSON数据,chrome浏览器显示网页,但360安全浏览器弹出下载页面。
解决方法:不使用@ResponseBody
注解,而是通过response.getWriter()
直接往浏览器写入JSON数据。
具体可以看我的这篇博客:@ResponseBody返回JSON数据,360安全浏览器弹出下载页面_夜中听雪的博客-CSDN博客
2、 问题:nginx的配置问题,无法通过http://120.79.212.4/index.java
访问到Java。
解决方法:端口号后要加"/",像这样:proxy_pass http://127.0.0.1:8080/;
。不然会404,因为程序的Controller里是path = "/"
。
2、PHP
1、PHP 的 安装、配置、启动
[root@wu2 ~]# cd /opt/school_linux_final_test/php
[root@wu2 php]# wget https://www.php.net/distributions/php-7.4.5.tar.gz
[root@wu2 php]# yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libsqlite3x-devel oniguruma-devel
[root@wu2 php]# tar -zxvf php-7.4.5.tar.gz
[root@wu2 php]# cd php-7.4.5
[root@wu2 php-7.4.5]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --enable-gd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --without-pear --disable-phar --enable-sockets --with-zlib --with-xmlrpc --enable-fpm --enable-xml --enable-sockets --with-zlib --with-iconv --enable-soap --enable-pcntl --enable-cli --with-curl
[root@wu2 php-7.4.5]# make
[root@wu2 php-7.4.5]# make install
[root@wu2 php-7.4.5]# cp php.ini-production /usr/local/php/php.ini
[root@wu2 php-7.4.5]# vim /usr/local/php/php.ini
display_errors = On # Off改为On。设置让PHP错误信息打印在页面上。
[root@wu2 php-7.4.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@wu2 php-7.4.5]# ll /etc/init.d/php-fpm
-rw-r--r-- 1 root root 2401 Jun 6 20:27 /etc/init.d/php-fpm
[root@wu2 php-7.4.5]# chmod +x /etc/init.d/php-fpm
[root@wu2 php-7.4.5]# cd /usr/local/php/etc
[root@wu2 etc]# cp php-fpm.conf.default php-fpm.conf
[root@wu2 etc]# vi php-fpm.conf
# 去掉 ";pid = run/php-fpm.pid" 前面的分号
[root@wu2 etc]# cd php-fpm.d
[root@wu2 php-fpm.d]# cp www.conf.default www.conf
[root@wu2 php-fpm.d]# vi www.conf # 修改user和group为php。
user = php
group = php
[root@wu2 php-fpm.d]# groupadd php
[root@wu2 php-fpm.d]# useradd -r -g php php
[root@wu2 php-fpm.d]# chkconfig php-fpm on # 设置开启启动
[root@wu2 ~]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@wu2 ~]# ps -ef |grep php
root 25243 1 0 23:35 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
php 25244 25243 0 23:35 ? 00:00:00 php-fpm: pool www
php 25245 25243 0 23:35 ? 00:00:00 php-fpm: pool www
root 25250 25051 0 23:35 pts/0 00:00:00 grep --color=auto php
2、配置Nginx,测试访问PHP
配置前,ip
、ip/index.html
、ip/index.php
都是访问不到页面的。
[root@wu2 ~]# vim /usr/share/nginx/html/index.php # 写入如下内容
[root@wu2 ~]# vim /etc/nginx/nginx.conf # 添加的两部分内容被"# my start"和"# my end"框了起来。
location / {
# my start
root /usr/share/nginx/html;
index index.php;
# my end
}
# my start
location ~ \.php$ {
#root html;
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000; #php-fpm默认的端口是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# my end
[root@wu2 ~]# service nginx restart
Redirecting to /bin/systemctl restart nginx.service
配置后,ip/index.php
可以访问到下方页面。 配置后,ip
、ip/index.html
可以访问到下方页面。
Nginx 之 fastcgi配置 - 简书
3、用PHP语言,实现从MySQL读取内容并显示在浏览器上
[root@wu2 ~]# vim /usr/share/nginx/html/index.php # 删除原先内容,改为以下内容。
$mysql_server_name = '127.0.0.1' ;
$mysql_username = 'root' ;
$mysql_password = 'Nowcoder_123' ;
$mysql_database = 'linux_test' ;
$conn = mysqli_connect ( $mysql_server_name , $mysql_username , $mysql_password , $mysql_database ) ;
if ( $conn - > connect_errno) {
printf ( "Connect failed: %s\n" , $conn - > connect_error ) ;
exit ( ) ;
}
$sql = "select * from student" ;
$query = $conn - > query ( $sql ) ;
echo "这是PHP实现的页面" ;
echo "";
echo " id ";
echo " 学号 ";
echo " 姓名 ";
echo " ";
while ( $row = $query - > fetch_array ( ) ) {
echo "";
echo " ". $row [ 'id' ] . " ";
echo " ". $row [ 'student_id' ] . " ";
echo " ". $row [ 'student_name' ] . " ";
echo " " ;
}
$query - > free_result ( ) ;
$conn - > close ( ) ;
?>
访问http://120.79.212.4/index.php
时:
遇到的问题和解决方法
1、 问题:访问http://120.79.212.4/index.php
时报错:Warning: mysqli_connect(): (HY000/2002): No such file or directory in /usr/share/nginx/html/index.php on line 7
。
解决方法:把$mysql_server_name = 'localhost';
改为$mysql_server_name = '127.0.0.1';
2、 问题:访问http://120.79.212.4/index.php
时报错:Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in /usr/share/nginx/html/index.php on line 7
原因:php还不支持mysql8.0最新的密码加密方式。
解决方法:
[root@wu2 ~]# mysql -uroot -p
Enter password:
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Nowcoder_123';
mysql> exit
[root@wu2 ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
小知识:php命令:启动、停止、重启。
/etc/init.d/php-fpm start # php-fpm启动命令
/etc/init.d/php-fpm stop # php-fpm停止命令
/etc/init.d/php-fpm restart # php-fpm重启命令
ps -ef | grep php # 查看是否已经成功启动PHP
3、Go
1、Golang的安装,第一个Go程序
[root@wu2 ~]# yum list golang*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
golang.x86_64 1.15.5-1.el7 epel
。。。
[root@wu2 ~]# yum install -y golang.x86_64
[root@wu2 ~]# go version
go version go1.15.5 linux/amd64
[root@wu2 ~]# mkdir -p /root/myLinuxTest/go/src /root/myLinuxTest/go/bin /root/myLinuxTest/go/pkg
[root@wu2 ~]# vim /etc/profile # 增加两句。配置环境变量。
export GOROOT=/usr/lib/golang
export GOPATH=/root/myLinuxTest/go
[root@wu2 ~]# source /etc/profile # 让文件生效
[root@wu2 ~]# mkdir -p /root/myLinuxTest/go/src/hello
[root@wu2 ~]# vim /root/myLinuxTest/go/src/hello/hello.go # 写入如下内容
package main
import "fmt"
func main ( ) {
fmt. Printf ( "hello world\n" )
}
[root@wu2 ~]# go run /root/myLinuxTest/go/src/hello/hello.go # 运行hello.go
hello world
2、用Go语言搭建简单的web服务器,即实现在浏览器上显示内容
[root@wu2 ~]# vim /root/myLinuxTest/go/src/hello/http2.go # 写入下方代码
package main
import (
"io"
"net/http"
"fmt"
)
func hello ( w http. ResponseWriter, r * http. Request) {
io. WriteString ( w, "Hello world!" )
fmt. Fprintf ( w, "Hello Wrold on client!" )
fmt. Println ( "Hello Wrold on console!" )
}
func main ( ) {
http. HandleFunc ( "/" , hello)
http. ListenAndServe ( ":8000" , nil )
}
运行web服务,并访问。
[root@wu2 ~]# go run /root/myLinuxTest/go/src/hello/http2.go # 运行
Hello Wrold on console!
如果无法用浏览器访问,进行如下操作。
# 如果无法用浏览器访问,进行如下操作。
[root@wu2 ~]# ps -ef |grep go # 确定有该进程
root 18305 9950 0 16:54 pts/1 00:00:00 go run /root/myLinuxTest/go/src/hello/http2.go
root 18345 18305 0 16:54 pts/1 00:00:00 /tmp/go-build045791547/b001/exe/http2
root 18477 12619 0 16:57 pts/2 00:00:00 grep --color=auto go
[root@wu2 ~]# netstat -ntlp | grep 8000 # 查看8000端口是否打开
tcp6 0 0 :::8000 :::* LISTEN 18345/http2
[root@wu2 ~]# curl 127.0.0.1:8000 # curl命令会把网页的html都打印出来。用该命令确认本机能够访问该web服务。
Hello world!Hello Wrold on client!
# 本机能访问,外部无法访问时,打开阿里云安全组的相应端口和防火墙上的相应端口。
# 下面是打开防火墙端口的。
[root@wu2 ~]# firewall-cmd --zone=public --add-port=8000/tcp --permanent # 开放防火墙端口
[root@wu2 ~]# service firewalld restart # 开放端口、移除端口后,都要重启防火墙才生效
curl 的用法指南 - 阮一峰的网络日志:curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
3、用Go语言,实现从MySQL读取内容并显示在浏览器上
[root@wu2 ~]# go get github.com/go-sql-driver/mysql # 下载驱动包
[root@wu2 ~]# vim /root/myLinuxTest/go/src/hello/student.go # 写入如下内容
package main
import (
"fmt"
"net/http"
"log"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func all ( w http. ResponseWriter, r * http. Request) {
w. Header ( ) . Set ( "Content-Type" , "text/html;charset=utf-8" )
fmt. Fprintf ( w, "这是Golang实现的页面" )
db, err := sql. Open ( "mysql" , "root:Nowcoder_123@tcp(127.0.0.1:3306)/linux_test" )
if err != nil {
log. Fatal ( err)
}
defer db. Close ( )
rows, err := db. Query ( "SELECT * FROM student" )
if err != nil {
log. Fatal ( err)
}
defer rows. Close ( )
fmt. Fprintf ( w, "")
fmt. Fprintf ( w, " id ")
fmt. Fprintf ( w, " 学号 ")
fmt. Fprintf ( w, " 姓名 ")
fmt. Fprintf ( w, " ")
for rows. Next ( ) {
var id int
var student_id string
var student_name string
if err := rows. Scan ( & id, & student_id, & student_name) ; err != nil {
log. Fatal ( err)
}
fmt. Fprintf ( w, "")
fmt. Fprintf ( w, " %d ", id)
fmt. Fprintf ( w, " %s ", student_id)
fmt. Fprintf ( w, " %s ", student_name)
fmt. Fprintf ( w, " " )
}
if err := rows. Err ( ) ; err != nil {
log. Fatal ( err)
}
}
func main ( ) {
http. HandleFunc ( "/" , all)
err := http. ListenAndServe ( ":8000" , nil )
if err != nil {
log. Fatal ( "ListenAndServe: " , err)
}
}
# 下方两种运行方式,选一种就可以
[root@wu2 ~]# go run /root/myLinuxTest/go/src/hello/student.go # 前台暂时运行
[root@wu2 ~]# nohup go run /root/myLinuxTest/go/src/hello/student.go & # 后台长期运行
此时,可以用 http://120.79.212.4:8000/
访问。
4、配置Nginx
[root@wu2 ~]# vim /etc/nginx/nginx.conf # 增加下方配置。使得访问 "ip/xxx.go" 可以访问到 "http://120.79.212.4:8000/"
location ~ \.go$ {
proxy_pass http://127.0.0.1:8000;
}
[root@wu2 ~]# service nginx restart
此时,可以用 http://120.79.212.4/index.go
访问。
4、Nodejs
1、安装Nodejs
[root@wu2 ~]# yum list node*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
node-gyp.noarch 0.10.6-2.el7 epel
nodejs.x86_64 1:6.17.1-1.el7 epel
[root@wu2 ~]# yum install -y nodejs.x86_64
[root@wu2 ~]# node -v
v6.17.1
2、Nodejs访问数据库
[root@wu2 ~]# cd /root/myLinuxTest/nodejs
[root@wu2 nodejs]# npm install mysql
[root@wu2 nodejs]# vim /root/myLinuxTest/nodejs/all.js # 文件写入如下内容
var mysql = require ( 'mysql' ) ;
var connection = mysql. createConnection ( {
host : 'localhost' ,
user : 'root' ,
password : 'Nowcoder_123' ,
port : '3306' ,
database : 'linux_test'
} ) ;
connection. connect ( ) ;
var sql = 'select * from student' ;
connection. query ( sql, function ( err, result) {
if ( err) {
console. log ( '[select error] -' , err. message) ;
return ;
}
console. log ( result) ;
} ) ;
connection. end ( ) ;
[root@wu2 nodejs]# node /root/myLinuxTest/nodejs/all.js # 运行
[ RowDataPacket { id: 1, student_id: '2018xxxxxxxx', student_name: 'xxx' },
RowDataPacket { id: 2, student_id: '1111', student_name: '其他学生' } ]
3、用Nodejs语言,实现从MySQL读取内容并显示在浏览器上
[root@wu2 ~]# vim /root/myLinuxTest/nodejs/index.js
var http= require ( 'http' ) ;
var url = require ( 'url' ) ;
var mysql = require ( 'mysql' ) ;
var connection = mysql. createConnection ( {
host : 'localhost' ,
user : 'root' ,
password : 'Nowcoder_123' ,
port : '3306' ,
database : 'linux_test'
} ) ;
var sql = 'select * from student' ;
server = http. createServer ( function ( request, response) {
response. writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
connection. query ( sql, function ( err, result) {
if ( err) {
console. log ( '[select error] -' , err. message) ;
return ;
}
response. write (
'' +
'' +
'' +
' ' +
'' ) ;
response. write ( "这是Nodejs实现的页面" ) ;
response. write ( "") ;
response. write ( " id ") ;
response. write ( " 学号 ") ;
response. write ( " 姓名 ") ;
result. forEach ( r => {
response. write ( "") ;
response. write ( " "+ r. id+ " ") ;
response. write ( " "+ r. student_id+ " ") ;
response. write ( " "+ r. student_name+ " ") ;
response. write ( " " ) ;
} )
response. end ( ) ;
} ) ;
} ) ;
server. listen ( 8001 ) ;
# 下方两种运行方式,选一种就可以
[root@wu2 ~]# node /root/myLinuxTest/nodejs/index.js # 前台临时运行
# 后台长期运行。使用forever来使得:nodejs 在linux上后台运行。XShell链接断开后,这个index.js程序还能运行。
[root@wu2 ~]# npm install -g forever # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。
[root@wu2 ~]# forever start /root/myLinuxTest/nodejs/index.js
此时,可以用 http://120.79.212.4:8001/
访问。
4、配置Nginx
[root@wu2 ~]# vim /etc/nginx/nginx.conf # 增加下方配置。使得访问 "ip/xxx.js" 可以访问到 "http://120.79.212.4:8001/"
location ~/index.js$ {
proxy_pass http://127.0.0.1:8001;
}
[root@wu2 ~]# service nginx restart
此时,可以用 http://120.79.212.4/index.js
访问。
其他
1、系统架构图
Java
PHP
Go
Nodejs
2、系统相关信息
系统发行版信息
阿里云服务器,2核4GiB,ecs.s6-c1m2.large ,华南1(深圳),深圳可用区D,CentOS7.7,64位,2021年6月30日过期。
系统IP信息
3、软件和语言的版本信息
Windows上: IDE: IntelliJ IDEA 2020.2.3 x64
Linux服务器上:
System: CentOS7.7 Database: MySQL 8.0.25 Nginx:nginx/1.16.1
JDK: jdk1.8-1.8.0_291 Tomcat: apache-tomcat-9.0.46 PHP: php-7.4.5 Go: go1.15.5 linux/amd64 Nodejs: v6.17.1
4、其他的 遇到的问题和解决方法
1、 可以直接wget http://...
这样把压缩包、rpm包直接下载到服务器上。但不知道为什么非常慢,大概每秒十几kb。所以相比起来,下载到本机,再用Xftp上传到服务器会快很多。
wget https://www.php.net/distributions/php-7.4.5.tar.gz
2、 想要维持一个长期后台运行的 logstash,你需要同时在命令前面加 nohup,后面加 &。 注意:后面加&
时,需要先空上一格,再写&
。不过不空格也没有什么事情。
# go程序使用这种方式没有问题,在XShell链接断开后,这个go程序还能够运行。
[root@wu2 ~]# nohup go run /root/myLinuxTest/go/src/hello/student.go &
# nodejs程序使用这种方式有问题,在XShell链接断开后,过上一会儿,这个index.js程序也不运行了。
[root@wu2 ~]# nohup node /root/myLinuxTest/nodejs/index.js &
# 所以,使用forever来使得:nodejs 在linux上后台运行。XShell链接断开后,这个index.js程序还能运行。
[root@wu2 ~]# npm install -g forever # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。
[root@wu2 ~]# forever start /root/myLinuxTest/nodejs/index.js
可以通过ps
命令查看进程是否启动。
[root@wu2 ~]# ps -ef |grep go
[root@wu2 ~]# ps -ef |grep node
5、总结
1、我把软件安装在/opt/school_linux_final_test
下,把程序代码放在/root/myLinuxTest
下。这两个文件夹下都有4个子文件夹:java、php、go、nodejs。
6、参考
Linux安装php+nginx并访问数据库+部署到web_LittleSeedling的博客-CSDN博客
Linux安装Golang并访问数据库+部署到web_LittleSeedling的博客-CSDN博客
Linux安装Nodejs并访问数据库+部署到web_LittleSeedling的博客-CSDN博客
你可能感兴趣的:(Linux,linux,mysql,java,php,go)
带你了解Java无锁并发CAS
高锰酸钾_
java 并发
带你了解Java无锁并发CAS在多核处理器时代,并发编程已成为提升系统性能的核心手段。传统的同步机制(如synchronized和ReentrantLock)通过互斥锁实现线程安全,但其存在以下关键问题:性能损耗:线程阻塞/唤醒涉及内核态切换,单次操作耗时约1微秒(百万条指令时间)优先级反转:高优先级线程可能被低优先级线程阻塞死锁风险:不正确的锁顺序可能导致系统冻结今天带你了解另一种保证线程安全的
dubbo服务META-INF.dubbo文件夹作用
zhglhy
dubbo java apache
META-INF.dubbo文件夹是ApacheDubbo框架中的一个重要目录,通常用于存放Dubbo的SPI(ServiceProviderInterface)扩展配置文件。Dubbo是一个高性能的JavaRPC框架,支持分布式服务治理,而SPI机制是Dubbo实现可扩展性的核心设计之一。1.SPI机制简介SPI是Java提供的一种服务发现机制,允许框架在运行时动态加载实现类。Dubbo对其进行
TreeNode底层实现原理
zhglhy
开发语言 java
TreeNode是树结构的基本单元,通常用于表示树形数据结构中的节点。其底层实现原理涉及以下几个方面:1.TreeNode的基本结构在Java中,TreeNode通常是一个类,包含以下核心属性:数据域:存储节点的数据。子节点引用:指向子节点的引用(对于二叉树,通常是左子节点和右子节点)。父节点引用:指向父节点的引用(可选,取决于具体实现)。以下是一个典型的二叉树节点的实现:classTreeNod
Linux骨灰级玩家修炼秘籍!从零基础到精通,收藏这篇就够了!
程序员肉肉
linux 运维 服务器 网络 学习 oracle 数据库
Linux骨灰级玩家修炼秘籍!99.99%的人已跪!Linux运维?想玩转它?那可得经历九九八十一难!咱得把这事儿分成四个阶段:新手村、进阶副本、高手进阶、以及最终的封神之路!之前爆肝半年,搞了篇云计算学习路线,新手直接起飞,从小白到大神!第一阶段:新手村新手村里,你得先把Linux这游戏的基本操作摸透。别急,一步一个脚印,咱得有个路线图。新手上路:Linux的前世今生、基本指令(比如cp、ls、
Android应用中实现Google登录
@半夏微凉科技
Android●知识点与疑难 Google登录 Google Android 谷歌登陆
背景Google登录是指使用Google账号(通常是Gmail地址及其关联的密码)来登录第三方网站或应用程序。它的背景可以追溯到Google希望建立一个统一的身份验证系统,让用户能够更方便地访问和使用各种在线服务。这种单点登录系统不仅方便了用户,还使开发者能够利用Google的身份验证服务,减少他们自行实施登录系统的工作量。Google登录的出现背景可以归结为以下几点:1.用户便利性:用户们拥有越
MongoDB
z小天才b
MongoDB mongodb 数据库
一、MongoDB简介1.1什么是MongoDB?MongoDB是一个基于分布式文件存储的开源NoSQL数据库系统,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储为一个文档,数据结构由键值对组成,类似于JSON对象,字段值可以包含其他文档、数组及文档数组。1.2MongoDB的核心特性文档型数据库:数据以BSON(BinaryJSON)格式存储灵活的
Java设计模式——装饰模式
爱吃土豆的程序员
Java设计模式 java 装饰器模式 设计模式
目录模式动机模式定义模式结构类图代码分析示例:动态添加功能的流组件接口具体组件装饰抽象类具体装饰类客户端模式分析核心思想动态扩展功能组合优于继承优点动态扩展功能组合优于继承代码复用性高符合开闭原则缺点增加系统的复杂性类的膨胀复杂的调试适用环境动态扩展功能避免继承带来的类爆炸性增长高度可定制化的需求模式应用输入输出流GUI组件日志记录模式扩展多层次装饰结合其他设计模式总结模式动机一般有两种方式可以实
linux执行python脚本conda库_Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))...
weixin_39992462
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))1.首先在PycharmTools->Deployment->Configurations打开新建SFTP输入host:ip地址username密码然后点击TestConnection出现下图,则测试成功因为已经连接成功,这时候已经可以读取远程服务器的目录了:2.选择项目mapping(可以跳过3.在Set
brew mysql client_Mac安装mysqlclient过程解析
weixin_39630440
brew mysql client
尝试在虚拟环境下通过pip安装:pipinstallmysqlclient然后报错:OSError:mysql_confignotfound找到官方文档https://github.com/PyMySQL/mysqlclient-python,解释说安装前需安装另一个模块:brewinstallmysql-connector-c但是报错:查看报错信息,在安装mysql-connector-c前先b
android Firebase Cloud Messaging (FCM) 接入
遥不可及zzz
firebase推送
在Android应用中接入FirebaseCloudMessaging(FCM)可实现消息推送功能,以下是详细的接入步骤和示例代码:步骤1:创建Firebase项目访问Firebase控制台并登录你的Google账号。点击“添加项目”,按提示填写项目名称等信息完成项目创建。步骤2:将Android应用添加到Firebase项目在Firebase控制台中,点击项目概览页面的“添加应用”按钮,选择An
全网最细!CentOS 7极速部署MySQL 8.0.23实战手册(附最佳参数模版)
从不删库的DBA
Mysql centos mysql linux
一、部署前准备1.1环境检查清单在进行MySQL部署前,请确认以下基础条件已满足:检查项标准要求操作系统版本CentOS6/7(推荐7.6+)内存建议≥4GB(生产环境≥16GB)磁盘空间/分区≥30GB,数据盘按需求规划网络连通性确保yum源可访问二、操作系统基础配置2.1关闭网络管理服务根据系统版本选择相应操作:▶CentOS6#serviceNetworkManagerstop停止Netwo
Mysql 报错: (1364, “Field ‘id‘ doesn‘t have a default value“)
Lonelypatients°
MySQL mysql
主要原因:在于主键表Id没有设置自增而报错,解决办法:设置主键自增会诱发另一个错误:Cannotchangecolumn'id':usedinaforeignkeyconstraint在于主键id已存在外键关系,不允许随意修改主键的属性值,所以我们须得先把外键关联删除之后,在更改主键,主键更改完毕后,加入外键,就好了
使用Java爬虫按关键字搜索1688商品
小爬虫程序猿
java 爬虫 开发语言
在电商领域,获取1688商品信息对于市场分析、选品上架、库存管理和价格策略制定等方面至关重要。1688作为国内领先的B2B电商平台,提供了丰富的商品数据。虽然1688开放平台提供了官方API来获取商品信息,但有时使用爬虫技术来抓取数据也是一种有效的手段。本文将介绍如何利用Java按关键字搜索1688商品,并提供详细的代码示例。一、准备工作1.Java开发环境确保你的Java开发环境已经安装了以下必
Android Google Pay接入
2401_87017192
android windows
//TheBillingClientisready.Youcanquerypurchaseshere.}}@OverridepublicvoidonBillingServiceDisconnected(){//Trytorestarttheconnectiononthenextrequestto//GooglePlaybycallingthestartConnection()method.}});
基于Linux的多进程并发服务器设计与实现
名誉寒冰
服务器 linux c++
基于Linux的多进程并发服务器设计与实现简介本项目实现了一个基于Linux的多进程并发服务器框架,采用进程池技术提高服务器并发处理能力,主要用于文件传输服务。该框架利用了Unix域套接字、管道通信、文件描述符传递和epoll机制等技术,实现了高效的任务分发和并发处理。系统架构该服务器采用主-从进程模型(Master-Worker模式):主进程(Master进程):负责监听客户端连接请求,并将连接
[从零开始学习JAVA] Stream流
Cools0613
从0开始学Java 学习
前言:本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda匿名内部类方法引用相配合)Stram流:Stream流的核心思想是函数式编程(注意返回值必须是对象本身才能),它倡导将数据处理过程看作是一系列的转换操作。这种思想与传统的命令式编程方式不同,传统的命令式编程方式强调对数据
android 接入google 登录
遥不可及zzz
android google login
在Android应用中接入Google登录功能,可让用户使用他们的Google账号快速登录应用。以下是详细的接入步骤和示例代码:步骤1:创建GoogleAPI项目访问GoogleAPI控制台,并使用你的Google账号登录。点击“选择项目”,然后点击“新建项目”,按照提示填写项目名称等信息,完成项目创建。步骤2:启用Google登录API在GoogleAPI控制台中,找到“库”选项卡,搜索“Goo
chokidar - chokidar 初识(初识案例演示、初识案例解读、初识案例测试)
我命由我12345
Node.js 简化库编程 node.js js javascript 前端框架 前端 npm html5
一、chokidar1、chokidar概述chokidar是一个用于监视文件系统变化的Node.js库chokidar提供了一种简单、高效的方式来监视文件和目录的创建、修改、删除等操作chokidar是是fs.watch和fs.watchFile方法的增强版,解决了它们在一些平台上的不一致性和局限性2、chokidar的特点跨平台的支持:chokidar在Windows、Linux、macOS上
跟着黑马学MySQL基础篇笔记(1)-概述与SQL
小杜不吃糖
mysql 笔记 sql
03.安装与启动启动netstartmysql80netstopmysql80客户端连接mysql[-h127.0.0.1][-P3306]-uroot-p04.mysql数据模型关系型数据库RDBMS05.通用语法及分类DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)DML:数据操作语言,用来对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中表的记录DCL:数据控制语
hadoop3.x--搭建hadoop高可用集群(HA模式)
运维小菜
hadoop hadoop hdfs
hadoop高可用集群(HA模式)一、安装前1.集群规划2.安装前配置3.安装jdk与hadoop4.克隆虚拟机与互信配置5.搭建zookeeper集群二、HDFS1.配置hdfs2.初始化启动hdfs集群三、MapReduce与Yarn1.配置MapReduce2.配置yarn3.启动yarn四、验证1.查看java进程2.hdfs与yarn前台页面一、安装前1.集群规划hostnameipNN
minimind2学习:(1)训练
溯源006
minimind学习 学习 深度学习 生成模型
1、数据下载参考:https://github.com/jingyaogong/minimind/tree/master2、预训练训练6个epochspythontrain_pretrain.py--epochs6训练过程:LLM总参数量:25.830百万Epoch:[1/6](0/11040)loss:8.940lr:0.000550000000epoch_Time:106.0min:Epoch
SSM卫生人员评审专家申报系统
浅浅学姐
课程设计 毕业设计 服务器 运维 java 开发语言 数据库 后端
点赞+收藏+关注→添加文档最下方联系方式咨询本源代码、数据库本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。关注我不迷路项目视频SSM347的卫生人员项目申报评审管理系统资料介绍一、设计说明1.1研究背景面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比
SSM卫生人员评审专家申报系统
Plume98
课程设计 毕业设计 服务器 运维 java 开发语言 数据库 后端
点赞+收藏+关注→添加文档最下方联系方式咨询本源代码、数据库本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。关注我不迷路项目视频SSM347的卫生人员项目申报评审管理系统资料介绍一、设计说明1.1研究背景面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比
centos环境安装swoole后,php7无法加载swoole.so时出现nable to load dynamic library 'swoole.so'
yyfx2010
swoole php7 swoole php7.2
先贴上错误提示[
[email protected] ]#php-vPHPWarning:PHPStartup:Unabletoloaddynamiclibrary'swoole.so'(tried:/usr/lib64/php/modules/swoole.so(/usr/lib64/php/modules/swoole.so:undefinedsymbol:php_sockets_le_socket)
Linux系统之cal命令详解
门前灯
linux 运维 服务器 cal
cal命令详解cal是一个用于显示日历的简单工具。默认情况下,它会显示当前月份的日历,但可以通过参数和选项显示特定月份、年份或自定义格式的日历。基本语法cal[options][[[day]month]year]无参数:显示当前月份的日历。单参数:显示指定年份的日历。双参数:显示指定月份和年份的日历。三参数:显示指定日、月和年份的日历,并在终端上高亮显示该日期。常用选项选项描述-1,--one显示
初级:数组与字符串面试题深度剖析
佩奇的技术笔记
Java面试小册 java
一、引言在Java开发中,数组和字符串是最常用的数据结构之一。面试官通过相关问题考察候选人对数组和字符串的理解和运用能力,以及在实际开发中解决相关问题的经验。本文将深入剖析常见的数组与字符串面试题,结合实际开发场景,帮助读者全面掌握这些知识点。二、数组面试题:如何对数组进行初始化和遍历?答案:数组的初始化可以使用直接初始化、动态初始化等方式。遍历数组可以使用传统的for循环、增强型for循环(fo
cursor免费使用方法交流分享0.47*依然可用
SGG_CV
人工智能 gpt
方法:使用第三方工具仅用作交流所用,一切后果皆自负工具可以帮助您重置Cursor的试用期。可以一键重置。使用方法如下:运行工具:-Windows:运行下载的可执行文件。-macOS/Linux:在终端中运行相应的脚本。重置试用期:按照工具提示,完成重置。请注意,使用第三方工具可能存在安全风险,建议在可信的环境中使用。亲测这个目前可用。获取方式如下:在下面链接的后台回复cursor交流获取curso
EasySwoole热加载
龏皚觻髾檃
PHP EasySwoole php
文件热加载由于swoole常驻内存的特性,修改文件后需要重启worker进程才能将被修改的文件重新载入内存中解决:Process的方式实现文件变动自动进行服务重载1.安装inotify扩展peclinstallinotify2.操作成功后,修改php.ini,加入extension=inotify.so新建文件App/Process/HotReload.php并添加如下内容,也可以放在其他位置,请
windows版本安装swoole记录
云上全栈工程师
swoole
下载安装swoole参考地址https://www.pianshen.com/article/64471690688/安装的重点就是phpize,如果没有安装这个无法运行下面的操作
easyswoole学习记录
司江龙
swoole PHP easyswoole swoole
php-fpm的工作方式php-fpm就是php-fastcgi进程管理器主要工作的就是mastr进程,主要和linux进行一个协调,当请求从nginx到fpm的时候,master会把请求交给自己下面管理的子进程一个池模型,问题:一个work进程内只会处理一个请求,也就是说这个进程内在同一时刻只会处理一个request请求,不会处理多个,所以一台服务器的并发数就取决于服务器开启了多少个work进程
ViewController添加button按钮解析。(翻译)
张亚雄
c
<div class="it610-blog-content-contain" style="font-size: 14px"></div>// ViewController.m
// Reservation software
//
// Created by 张亚雄 on 15/6/2.
mongoDB 简单的增删改查
开窍的石头
mongodb
在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作
在mongo中对于不存在的表当你用db.表名 他会自动统计
下边用到的user是表明,db代表的是数据库
添加(insert):
log4j配置
0624chenhong
log4j
1) 新建java项目
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。
3) 新建一个类com.hand.Log4jTest
package com.hand;
import org.apache.log4j.Logger;
public class
多点触摸(图片缩放为例)
不懂事的小屁孩
多点触摸
多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener
有关浏览器窗口宽度高度几个值的解析
换个号韩国红果果
JavaScript html
1 元素的 offsetWidth 包括border padding content 整体的宽度。
clientWidth 只包括内容区 padding 不包括border。
clientLeft = offsetWidth -clientWidth 即这个元素border的值
offsetLeft 若无已定位的包裹元素
数据库产品巡礼:IBM DB2概览
蓝儿唯美
db2
IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统
DB2可应用于以下三个主要的平台:
工作站,DB2可在Linus、Unix、Windo
java笔记5
a-john
java
控制执行流程:
1,true和false
利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。
2,if-els
Web开发常用手册汇总
aijuans
PHP
一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
正如我们学习一门技术,过程大概是这个样子:
①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的
今天帮助人解决的一个sql问题
asialee
sql
今天有个人问了一个问题,如下:
type AD value
A  
意图对象传递数据
百合不是茶
android 意图Intent Bundle对象数据的传递
学习意图将数据传递给目标活动; 初学者需要好好研究的
1,将下面的代码添加到main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/
oracle查询锁表解锁语句
bijian1013
oracle object session kill
一.查询锁定的表
如下语句,都可以查询锁定的表
语句一:
select a.sid,
a.serial#,
p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$s
mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]
征客丶
mysql osx
场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。
环境:mac osx 10.10、mysql 5.6 的二进制文件
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录]
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir;
下载地址:http://dev.mysql.com/downl
分布式系统与框架
bit1129
分布式
RPC框架 Dubbo
什么是Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接
那些令人蛋痛的专业术语
白糖_
spring Web SSO IOC
spring
【控制反转(IOC)/依赖注入(DI)】:
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。
Web
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户
《给大忙人看的java8》摘抄
braveCS
java8
函数式接口:只包含一个抽象方法的接口
lambda表达式:是一段可以传递的代码
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使
编程之美-计算字符串的相似度
bylijinnan
java 算法 编程之美
public class StringDistance {
/**
* 编程之美 计算字符串的相似度
* 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
* 1.修改一个字符(如把“a”替换为“b”);
* 2.增加一个字符(如把“abdd”变为“aebdd”);
* 3.删除一个字符(如把“travelling”变为“trav
上传、下载压缩图片
chengxuyuancsdn
下载
/**
*
* @param uploadImage --本地路径(tomacat路径)
* @param serverDir --服务器路径
* @param imageType --文件或图片类型
* 此方法可以上传文件或图片.txt,.jpg,.gif等
*/
public void upload(String uploadImage,Str
bellman-ford(贝尔曼-福特)算法
comsci
算法 F#
Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。
与迪科
oracle ASM中ASM_POWER_LIMIT参数
daizj
ASM oracle ASM_POWER_LIMIT 磁盘平衡
ASM_POWER_LIMIT
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET Asm_power_limit=2;
高级排序:快速排序
dieslrae
快速排序
public void quickSort(int[] array){
this.quickSort(array, 0, array.length - 1);
}
public void quickSort(int[] array,int left,int right){
if(right - left <= 0
C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节
dcj3sjt126com
C语言
# include <stdio.h>
int main(void)
{
/*
1、一个变量的地址只用第一个字节表示
2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
但是这些字节比较多,所以编号就比较大,
phpize使用方法
dcj3sjt126com
PHP
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下
安装(fastcgi模式)的时候,常常有这样一句命令:
代码如下:
/usr/local/webserver/php/bin/phpize
一、phpize是干嘛的?
phpize是什么?
phpize是用来扩展php扩展模块的,通过phpi
Java虚拟机学习 - 对象引用强度
shuizhaosi888
JAVA虚拟机
本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处!
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。
引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea
.NET Framework 3.5 Service Pack 1(完整软件包)下载地址
happyqing
.net 下载 framework
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo
JAVA定时器的使用
jingjing0907
java timer 线程 定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
privatejava.util.Timer timer;
timer = newTimer(true);
timer.schedule(
newjava.util.TimerTask() { public void run()
Webbench
流浪鱼
webbench
首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相
第11章 动画效果(中)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
windows下制作bat启动脚本.
sanyecao2314
java cmd 脚本 bat
java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart
Java进行RSA加解密的例子
tomcat_oracle
java
加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。 数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。 对称加密指的是发送者和接收者共用同一个密钥的加解密方法。 非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的
Android_ViewStub
阿尔萨斯
ViewStub
public final class ViewStub extends View
java.lang.Object
android.view.View
android.view.ViewStub
类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt