linux安装nginx
linux安装nginx1. 安装依赖包
1yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 下载并解压安装包
12345678//创建一个文件夹cd /usr/local/softwaremkdir nginxcd nginx//下载tar包wget http://nginx.org/download/nginx-1.13.7.tar.gztar -xvf nginx-1.13.7.tar.gzmv nginx-1.13.7 nginx
3. 安装 nginx
如果不指定:/configure –prefix,安装的nginx在/usr/local/nginx目录下
12345678//进入目录cd nginx-1.13.7//执行命令 ./configure --prefix=/usr/local/software/nginx/nginx//执行make命令make//执行make install命令make install
4. 启动 nginx 服务
如果启动失败,提 ...
Mybatis中if else的实现
Mybatis中if else的实现首先在mybatis语法中是没有 if else写法得,如果需要使用则可以用choose when的语法代替
12345678<choose> <when test="params!=null"> right JOIN </when> <otherwise> LEFT JOIN </otherwise></choose>
Linux安装Mysql
Linux安装Mysql1 卸载老版本 MySQL查找并删除 mysql 有关的文件
1234find / -name mysqlrm -rf 上边查找到的路径,多个路径用空格隔开#或者下边一条命令即可find / -name mysql|xargs rm -rf
2 下载mysql-linux版本,进行解压去官网下载mysql后上传到服务器进行解压。
1tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
3 重命名解压后的文件1mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql8
4 添加 mysql 用户组和 mysql 用户12groupadd mysqluseradd -r -g mysql mysql
如果已经添加过,则会提示组合用户已经存在
5 进入 mysql 目录新建data,logs目录并更改权限mysql8版本,不需要建data目录,后续会报错。–踩坑了
123cd mysql/mkdir data logschown -R mysql:mysql ./
...
linux安装jdk和tomcat
linux环境准备拿到一台新的centos7,先准备更新一下yum,安装一下基本命令。
yum更新,-y就是对于一下安装操作,系统询问是否,默认是。
1yum update -y
tab命令的自动补全
1yum -y install bash-completion
wget
1yum -y install wget
vim
1yum -y install vim-enhanced
网络工具
1yum -y install net-tools.x86_64
jdk的安装1 上官网下载linux版本的jdk,需oracle账号
jdk8下载: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
2 上传jdk到linux服务器,先到服务器/usr/local目录,创建目录software/java
12cd /usr/localmkdir -p software/java
3 解压jdk
1tar -zxvf jdk-8u202-linux-x64.tar.gz
4 配 ...
linux常用命令
端口号netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
1netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:
12netstat -tunlp | grep 8080tcp6 0 0 :::8080 :::* LISTEN 8464/java
查找到进程号,查看具体是应用占用端口 ps -ef | grep 进程号
1234[root@chenghao bin]# netstat -tunlp | grep 8080tcp6 0 0 :::8080 :::* LISTE ...
Idea远程debug调试
Idea远程debug调试什么是远程调试工作中经常会出现测试环境出现bug的情况,但可能本地因为依赖外部第三方的一些接口本地环境无法ping通,导致本地没办法复现测试环境的bug,这时候就需要远程调试了。
远程调试注意事项本地的代码必须和远程服务器上的字节码是同一个版本,保持一致,否则idea启动远程bug的时候会报错,所以需要提前查看测试环境
当前的分支和代码版本,本地先进行代码分支切换,保持和测试服务器代码的一致性。
通常idea打断点失效常见原因
本地与远程代码不一致
远程IP,端口配置错误
本地源码与二进制代码不一致:实际JVM是基于二进制代码运行的,需要重新编译。(先检查1和2,确认都没有问题,则进行本地代码重现编译后尝试)
使用远程调试时候,打了断点,别的人在测试这个页面的时候是会卡住的。
日志不会打印在IDEA的控制台上。System.out 以及 log.info 还是打印在远程的。
实战演示idea配置远程调试,name一般自定义,在公司取名对应不同的测试环境。host及你当前需要连接到哪个环境。
上传jar到远程服务器,方便演示,这里用的jar就是上一篇商 ...
咕泡云商城-第二章商品模块
咕泡云商城-第二章商品模块-品牌模块商品微服务-品牌模块表结构和数据准备12345678910111213141516171819-- ------------------------------ Table structure for brand-- ----------------------------DROP TABLE IF EXISTS `brand`;CREATE TABLE `brand` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '品牌id', `name` varchar(100) NOT NULL COMMENT '品牌名称', `image` varchar(1000) DEFAULT '' COMMENT '品牌图片地址', `initial` varchar(1) DEFAULT '' COMMENT '品牌的首字母', `sort` int(11) DEFAULT NULL C ...
咕泡云商城-第一章项目搭建
咕泡云商城-第一章项目搭建项目介绍咕泡云商城是基于SpringCloud Alibaba技术栈研发的B2C电商平台,平台拥有核心的电商业务功能。运营商在后台管理商品,前台能通过搜索引擎实时搜索到最新商品,用户注册后可以直接在平台购买商品,并通过微信支付实现线上支付。用户还能参与平台秒杀抢购,并实现线上支付秒杀商品
云商城架构设计架构设计架构设计如下图,将在后面的章节分别介绍。
工程搭建环境准备这里需要用到数据库 MySQL和注册中心 Nacos,数据库和注册中心我全部装到腾讯云服务器,用docker部署
安装mysql,注意需要倒对应的服务器运营商管理界面的防火墙中,放开3306端口,否则可能连不上
1docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxxxx mysql:5.7
安装nacos,同样需要放开8848端口,http://101.34.5.93:8848/nacos/#/login,账号密码都是nacos,注意jvm参数,nacos占用内存太大,如果是自己买的服务器内存大小 ...
OOM内存溢出分析
OOM内存溢出分析概念与背景内存溢出(Out Of Memory,简称OOM)是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。
通常面试过程中,经常会有面试官问如果生产出现oom问题,你要怎么解决,处理步骤见下面
原因分析1. 内存泄漏由于长期保持某些资源的引用,垃圾回收器无法回收它,从而使该资源不能够及时释放,也称为内存泄露。因而尽量不要将所有引用都使用为强引用,可以在合适的地方使用弱引用和软引用。后期讲分析threadlocal的不正确使用导致的内存泄漏问题。
2. 超大对象保存多个耗用内存过大或当加载单个超大的对象时,该对象的大小超过了当前剩余的可用内存空间。比如查询数据库中的数据,一次查询过多,直接导致内存溢出了。因此查询数据库如果数据过多尽量使用分页查询
3. 死循环无法清除的对象存在死循环重复产生对象,且集合对象使用完之后依然被引用着,导致无法清除导致占用空间过大等。本文演示此条
演示OOM异常模拟死循环无法清除的对象导致的oom现象
1234567891011121314151617181920212223publi ...
optional入门
optional使用简介Optional类是Java8为了解决null值判断问题而引入的,使用Optional类可以避免显式的null值判断(null的防御性检查),避免null导致的NPE(NullPointerException)
常用api构建optional相关
创建一个包装对象值为空的Optional对象,很少用
Optional optional = Optional.empty();
12345678910/** * Common instance for {@code empty()}. */private static final Optional<?> EMPTY = new Optional<>();public static<T> Optional<T> empty() { @SuppressWarnings("unchecked") Optional<T> t = (Optional<T>) EMPTY; retu ...









