文章目录
开始前的准备工作
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)
android系统selinux中添加新属性property
辉色投像
1.定位/android/system/sepolicy/private/property_contexts声明属性开头:persist.charge声明属性类型:u:object_r:system_prop:s0图12.定位到android/system/sepolicy/public/domain.te删除neverallow{domain-init}default_prop:property
Long类型前后端数据不一致
igotyback
前端
响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问
LocalDateTime 转 String
igotyback
java 开发语言
importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;publicclassMain{publicstaticvoidmain(String[]args){//获取当前时间LocalDateTimenow=LocalDateTime.now();//定义日期格式化器DateTimeFormatterformat
mysql禁用远程登录
igotyback
mysql
去mysql库中的user表里,将host都改成localhost之后刷新权限FLUSHPRIVILEGES;
Linux下QT开发的动态库界面弹出操作(SDL2)
13jjyao
QT类 qt 开发语言 sdl2 linux
需求:操作系统为linux,开发框架为qt,做成需带界面的qt动态库,调用方为java等非qt程序难点:调用方为java等非qt程序,也就是说调用方肯定不带QApplication::exec(),缺少了这个,QTimer等事件和QT创建的窗口将不能弹出(包括opencv也是不能弹出);这与qt调用本身qt库是有本质的区别的思路:1.调用方缺QApplication::exec(),那么我们在接口
第四天旅游线路预览——从换乘中心到喀纳斯湖
陟彼高冈yu
基于Google earth studio 的旅游规划和预览 旅游
第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪;换乘中心有4路车,喀纳斯①号车,去喀纳斯湖,路程时长约5分钟;将上面的的行程安排进行动态展示,具体步骤见”Googleearthstudio进行动态轨迹显示制作过程“、“Googleearthstudio入门教程”和“Googleearthstudio进阶教程“相关内容,得到行程如下所示:Day4-2-480p
linux sdl windows.h,Windows下的SDL安装
奔跑吧linux内核
linux sdl windows.h
首先你要下载并安装SDL开发包。如果装在C盘下,路径为C:\SDL1.2.5如果在WINDOWS下。你可以按以下步骤:1.打开VC++,点击"Tools",Options2,点击directories选项3.选择"Includefiles"增加一个新的路径。"C:\SDL1.2.5\include"4,现在选择"Libaryfiles“增加"C:\SDL1.2.5\lib"现在你可以开始编写你的第
Goolge earth studio 进阶4——路径修改与平滑
陟彼高冈yu
Google earth studio 进阶教程 旅游
如果我们希望在大约中途时获得更多的城市鸟瞰视角。可以将相机拖动到这里并创建一个新的关键帧。camera_target_clip_7EarthStudio会自动平滑我们的路径,所以当我们通过这个关键帧时,不是一个生硬的角度,而是一个平滑的曲线。camera_target_clip_8路径上有贝塞尔控制手柄,允许我们调整路径的形状。右键单击,我们可以选择“平滑路径”,这是默认的自动平滑算法,或者我们可
Google earth studio 简介
陟彼高冈yu
旅游
GoogleEarthStudio是一个基于Web的动画工具,专为创作使用GoogleEarth数据的动画和视频而设计。它利用了GoogleEarth强大的三维地图和卫星影像数据库,使用户能够轻松地创建逼真的地球动画、航拍视频和动态地图可视化。网址为https://www.google.com/earth/studio/。GoogleEarthStudio是一个基于Web的动画工具,专为创作使用G
python os.environ_python os.environ 读取和设置环境变量
weixin_39605414
python os.environ
>>>importos>>>os.environ.keys()['LC_NUMERIC','GOPATH','GOROOT','GOBIN','LESSOPEN','SSH_CLIENT','LOGNAME','USER','HOME','LC_PAPER','PATH','DISPLAY','LANG','TERM','SHELL','J2REDIR','LC_MONETARY','QT_QPA
linux中sdl的使用教程,sdl使用入门
Melissa Corvinus
linux中sdl的使用教程
本文通过一个简单示例讲解SDL的基本使用流程。示例中展示一个窗口,窗口里面有个随机颜色快随机移动。当我们鼠标点击关闭按钮时间窗口关闭。基本步骤如下:1.初始化SDL并创建一个窗口。SDL_Init()初始化SDL_CreateWindow()创建窗口2.纹理渲染存储RGB和存储纹理的区别:比如一个从左到右由红色渐变到蓝色的矩形,用存储RGB的话就需要把矩形中每个点的具体颜色值存储下来;而纹理只是一
PHP环境搭建详细教程
好看资源平台
前端 php
PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这
使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)
编程经验分享
开发工具 服务器 ssh linux
目录前言基本使用教程新建远程连接连接主机自定义命令路由追踪前言后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是通过ssh连接来登录服务器。刚接触远程连接时,使用的是XSHELL来远程连接服务器,连接上就能够操作远程服务器了,但是仅用XSHELL并没有上传下载文件的功能
SQL Server_查询某一数据库中的所有表的内容
qq_42772833
SQL Server 数据库 sqlserver
1.查看所有表的表名要列出CrabFarmDB数据库中的所有表(名),可以使用以下SQL语句:USECrabFarmDB;--切换到目标数据库GOSELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE='BASETABLE';对这段SQL脚本的解释:SELECTTABLE_NAME:这个语句的作用是从查询结果中选择TABLE_NAM
DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理
STU学生网页设计
网页设计 期末网页作业 html静态网页 html5期末大作业 网页设计 web大作业
️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程
【华为OD机试真题2023B卷 JAVA&JS】We Are A Team
若博豆
java 算法 华为 javascript
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代
关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript
二挡起步
web前端期末大作业 javascript html css 旅游 风景
⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip
HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动
二挡起步
web前端期末大作业 web设计网页规划与设计 html css javascript dreamweaver 前端
Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线
MYSQL面试系列-04
king01299
面试 mysql 面试
MYSQL面试系列-0417.关于redolog和binlog的刷盘机制、redolog、undolog作用、GTID是做什么的?innodb_flush_log_at_trx_commit及sync_binlog参数意义双117.1innodb_flush_log_at_trx_commit该变量定义了InnoDB在每次事务提交时,如何处理未刷入(flush)的重做日志信息(redolog)。它
MongoDB Oplog 窗口
喝醉酒的小白
MongoDB 运维
在MongoDB中,oplog(操作日志)是一个特殊的日志系统,用于记录对数据库的所有写操作。oplog允许副本集成员(通常是从节点)应用主节点上已经执行的操作,从而保持数据的一致性。它是MongoDB副本集实现数据复制的基础。MongoDBOplog窗口oplog窗口是指在MongoDB副本集中,从节点可以用来同步数据的时间范围。这个窗口通常由以下因素决定:Oplog大小:oplog的大小是有限
libyuv之linux编译
jaronho
Linux linux 运维 服务器
文章目录一、下载源码二、编译源码三、注意事项1、银河麒麟系统(aarch64)(1)解决armv8-a+dotprod+i8mm指令集支持问题(2)解决armv9-a+sve2指令集支持问题一、下载源码到GitHub网站下载https://github.com/lemenkov/libyuv源码,或者用直接用git克隆到本地,如:gitclonehttps://github.com/lemenko
node.js学习
小猿L
node.js node.js 学习 vim
node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行
ARM驱动学习之5 LEDS驱动
JT灬新一
嵌入式 C 底层 arm开发 学习 单片机
ARM驱动学习之5LEDS驱动知识点:•linuxGPIO申请函数和赋值函数–gpio_request–gpio_set_value•三星平台配置GPIO函数–s3c_gpio_cfgpin•GPIO配置输出模式的宏变量–S3C_GPIO_OUTPUT注意点:DRIVER_NAME和DEVICE_NAME匹配。实现步骤:1.加入需要的头文件://Linux平台的gpio头文件#include//三
【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面
一个射手座的程序媛
程序员 华为od 面试 职场和发展
最后的话最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!资料预览给大家整理的视频资料:给大家整理的电子书资料:如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获
【Git】常见命令(仅笔记)
好想有猫猫
Git Linux学习笔记 git 笔记 elasticsearch linux c++
文章目录创建/初始化本地仓库添加本地仓库配置项提交文件查看仓库状态回退仓库查看日志分支删除文件暂存工作区代码远程仓库使用`.gitigore`文件让git不追踪一些文件标签创建/初始化本地仓库gitinit添加本地仓库配置项gitconfig-l#以列表形式显示配置项gitconfiguser.name"ljh"#配置user.namegitconfiguser.email"
[email protected]
nosql数据库技术与应用知识点
皆过客,揽星河
NoSQL nosql 数据库 大数据 数据分析 数据结构 非关系型数据库
Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)
简介Shell、zsh、bash
zhaosuningsn
Shell zsh bash shell linux bash
Shell是Linux和Unix的外壳,类似衣服,负责外界与Linux和Unix内核的交互联系。例如接收终端用户及各种应用程序的命令,把接收的命令翻译成内核能理解的语言,传递给内核,并把内核处理接收的命令的结果返回给外界,即Shell是外界和内核沟通的桥梁或大门。Linux和Unix提供了多种Shell,其中有种bash,当然还有其他好多种。Mac电脑中不但有bash,还有一个zsh,预装的,据说
Linux MariaDB使用OpenSSL安装SSL证书
Meta39
MySQL Oracle MariaDB Linux Windows ssl linux mariadb
进入到证书存放目录,批量删除.pem证书警告:确保已经进入到证书存放目录find.-typef-iname\*.pem-delete查看是否安装OpenSSLopensslversion没有则安装yuminstallopensslopenssl-devel开启SSL编辑/etc/my.cnf文件(没有的话就创建,但是要注意,在/etc/my.cnf.d/server.cnf配置了datadir的,
Python开发常用的三方模块如下:
换个网名有点难
python 开发语言
Python是一门功能强大的编程语言,拥有丰富的第三方库,这些库为开发者提供了极大的便利。以下是100个常用的Python库,涵盖了多个领域:1、NumPy,用于科学计算的基础库。2、Pandas,提供数据结构和数据分析工具。3、Matplotlib,一个绘图库。4、Scikit-learn,机器学习库。5、SciPy,用于数学、科学和工程的库。6、TensorFlow,由Google开发的开源机
Java 重写(Override)与重载(Overload)
叨唧唧的
Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio
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