技术 | 说明 |
---|---|
Spring Framework | IoC(控制反转)、AOP(面向切面) |
Spring Boot | MVC框架 |
Spring Security | 安全框架 |
JWT | 单点登录 |
Druid | 数据库连接池 |
MyBatis | 数据库框架 |
MyBatis Plus | 数据库增强框架 |
MySQL | 关系型数据库 |
Redis | 缓存型数据库 |
RocketMQ | 消息队列 |
QiNiu | 对象存储 |
Swagger | 文档接口 |
LogStash | 日志收集 |
Hutool | Java工具类库 |
Lombok | 简化对象封装工具(需要安装IDEA插件) |
mall:
----mall-mbg: 数据库生成
----mall-common: 基础模块
----mall-security: 用户认证
----mall-app: 商城后端开发
----mall-admin: 管理后端开发
- app: Run AppApplication.java http://localhost:8080/
- admin: Run AdminApplication.java http://localhost:8081/
- app Druid: http://localhost:8080/druid/index.html
- admin Druid: http://localhost:8081/druid/index.html
- app Swagger: http://localhost:8080/swagger-ui.html
- admin Swagger: http://localhost:8081/swagger-ui.html
# 内网穿透
$ ssh -NR 8888:127.0.0.1:8080 [email protected]
# 保持连接
$ vim /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 10
-
安装(略,或直接安装LNMP)
-
配置外网访问
$ vim /etc/my.cnf
[mysqld]
port = 3306
bind-address = 0.0.0.0
$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
- 启动/关闭
$ service mysql start
$ service mysql stop
- 安装
$ yum install redis
- 配置外网访问
$ vim /etc/redis.conf
bind 127.0.0.1 ----> # bind 127.0.0.1
protected-mode yes ----> protected-mode no
# requirepass foobared ----> requirepass 123456
daemonize no ----> daemonize yes
- 启动/关闭
$ redis-server 或者 ($ redis-server /etc/redis.conf)
$ redis-cli shutdown
- 安装
$ wget https://archive.apache.org/dist/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip
$ unzip rocketmq-all-4.7.0-bin-release.zip
$ mv rocketmq-all-4.7.0-bin-release rocketmq
$ mv rocketmq /usr/local
$ vim /etc/profile
export PATH=$PATH:/usr/local/rocketmq/bin
export NAMESRV_ADDR=localhost:9876
$ source /etc/profile
- 启动/关闭
$ mqnamesrv &
$ mqbroker -n localhost:9876 &
$ mqshutdown broker
$ mqshutdown namesrv
# 外网访问
$ vim /usr/local/rocketmq/conf/broker.conf
namesrvAddr=www.littleredhat1997.com:9876
brokerIP1=www.littleredhat1997.com
# 后台运行
$ nohup mqnamesrv &
$ nohup mqbroker -c /usr/local/rocketmq/conf/broker.conf &
- 报错解决
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
$ cd /usr/local/rocketmq/bin/
$ vim runserver.sh
- JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
$ vim runbroker.sh
- JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"
- 安装
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
$ tar -zxvf apache-tomcat-9.0.30.tar.gz
$ mv apache-tomcat-9.0.30 tomcat
$ mv tomcat /usr/local
- 启动/关闭
$ cd /usr/local/tomcat
$ ./bin/start.sh
$ ./bin/stop.sh
# 修改端口
$ vim /etc/sysconfig/iptables
# 重启端口
$ service iptables restart
# 查看端口
$ iptables -L -n
Filter -> Interceptor -> Aspect -> Controller
OncePerRequestFilter 重复执行的filter只需要一次执行
1. AbstractUserDetailsAuthenticationProvider.java
private class DefaultPostAuthenticationChecks implements UserDetailsChecker
-> isAccountNonLocked() -> isEnabled() -> isAccountNonExpired()
2. DaoAuthenticationProvider.java
protected void additionalAuthenticationChecks
-> check username and password
3. AbstractUserDetailsAuthenticationProvider.java
private class DefaultPreAuthenticationChecks implements UserDetailsChecker
-> isCredentialsNonExpired()
USERNAME_NOT_FOUND(1004, "认证失败:用户名不存在"),
BAD_CREDENTIALS(1005, "认证失败:密码错误"),
ACCOUNT_DISABLED(1006, "认证失败:用户不可用"),
ACCOUNT_LOCKED(1007, "认证失败:用户锁定"),
ACCOUNT_EXPIRED(1008, "认证失败:用户过期"),
CREDENTIALS_EXPIRED(1009, "认证失败:证书过期"),
项目 | QPS | Time |
---|---|---|
MySQL | 200 | ≈2s |
Redis | 5000 | <10ms |
其他说明 | CPU8核16线程 | 内存16G*2 |
- Spring Boot博客:https://github.com/ityouknow/spring-boot-examples
- Spring Boot项目:https://github.com/macrozheng/mall
- Xshell 6 免费:https://www.netsarang.com/zh/free-for-home-school
- Navicat Premium 12 破解:https://www.52pojie.cn/thread-952490-1-1.html