1.正向代理和反向代理
正向代理:正向代理的就是用户
服务器:代理服务器
2.Nginx 修改配置后,使用nginx -s reload修改配置时报错:
No mapping for the Unicode character exists in the target multi-byte code page)
目标多字节代码页中不存在Unicode字符的映射
百度后发现是因为安装路径全是中文,给他换了个路径安装,解决。
3.几种开发情况:
经常出现的:web开发了很多,开发移动端,尽量调用已有接口。
4.太久没连过mysql数据库了,也是第一次在做java项目,用idea连接数据库,复习一下(幸好没完全忘光……):
mysql数据库连接步骤:
1.以管理员权限打开cmd,
2.mysql -uroot -p密码登录数据库,
3.通过:create database 数据库名称;创建数据库
4.show databases;查询所有数据库,发现创建成功了
5.打开Navicat,连接数据库,选择mysql,输入用户名密码,随便输入一个连接名,连接成功。
6.在Navicat中找到刚刚创建的数据库,拖动导入现成的sql文件,点击运行,运行成功后刷新,发现成功显示表和数据。
7.打开idea,选择需要的项目,打开右上角的数据库,点+号,选择mysql数据源,输入mysql用户名密码,随便输入一个连接名,连接成功,至此,项目所需表、数据皆以导入成功。
更多操作详见:java学习day26(Mysql)Mysql基础_Andy393939的博客-CSDN博客
5.<dependencies>标签飘红报错,<dependencies>在一个文件中只能有一种,所以当有多组<dependencies>标签时就会报错,这个时候如果要添加新的依赖就不需要再多加<dependencies>标签了,而是在<dependencies>标签里加入<dependency>标签写入新的依赖就ok。
如:
6.POM文件报错:
'parent.relativePath' of POM com.leyou.item:leyou-item-interface:1.0.0-SNAPSHOT (G:\Softwares\leyou\leyou-item\leyou-item-interface\pom.xml) points at com.leyou.parent:leyou instead of com.leyou.item:leyou-item, please verify your project structure
翻译:
家长:leyou而不是com.leyou,
几经核对,我写的<parent>信息没有问题,猜测问题来源于错误的指向,即
<relativePath>../../pom.xml</relativePath>,删除<relativePath>标签极其指向后恢复正常。
7.idea自动导入类快捷方式:alt+enter!
idea自动生成get/set方法快捷键:放在成员变量上用alt+enter可以生成该成员的get/set方法,如果要生成所有成员的,可以alt+ins/insert,选择get or set,在选中时按住ctrl多选!
需要注意的是:isParent生成的getter和setter方法需要手动加上Is,所以变量名尽量不要用IS开头
8.前端报错:改域名访问后,访问失败……但是之前是OK的,说明我代码没问题,只是配置的问题。
具体的报错信息我忘了,能看出是后台返回的报错信息
然后排查了hosts文件,Nginx配置,webpack配置,发现都没问题,游览器也显示域名重定向中,还说域名重定向不安全,建议我啥啥,我这才有点反应过来,然后换了个游览器,瞬间访问成功……
这真是今年最sb的错误,搞开发的千万不能用360游览器,太垃圾了,想起之前有个段子,有个人说大学时候用c语音写hello world,结果被360安全卫士拦截了,今天我web开发,被360游览器拦截了,ε=(´ο`*)))唉……
9.前端不显示数据,问题排查与解决:
首先看下配置:
import是正常的,return是正常的,但是修改前treeData后面是tree,跟其他地方的treeData对应不上,将tree修改成treeData后显示正常:
10.上面静态数据访问成功后,连接数据库,继续前端查询数据,依旧访问失败,F12提示:
已拦截跨源请求:同源策略禁止读取位于 http://api.leyou.com/api/item/category/list?pid=0 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。状态码:404。
详见:Reason: CORS header 'Access-Control-Allow-Origin' missing - HTTP | MDN
我看了下这个文档,大概意思就是在Nginx上面加一句话:
add_header 'Access-Control-Allow-Origin' 'origin-list';
我加了,真的不管用。
继续百度,看到这个老哥的文章:
按照他说的,在controller层加上@CrossOrigin注解,并重启了服务,还是不管用。
又试了这个老哥的方法:
火狐浏览器报错:已拦截跨源请求:同源策略禁止读取位于...的远程资源(CORS 请求不是 http)_咕噜oo的博客-CSDN博客
还是不管用!
Uncaught (in promise) Error: Network Error
createError createError.js:16
handleError xhr.js:87
java学习day60(乐友商城)搭建后台、使用nginx进行反向代理、实现查询功能_Andy393939的博客-CSDN博客
翻到了自己之前的笔记,用CORS解决了跨域问题,
大概就是在网关加了个类:
package com.leyou.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class LeyouCorsConfiguration {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1) 允许的域,不要写*,否则cookie就无法使用了
config.addAllowedOrigin("http://manage.leyou.com");
//2) 是否发送Cookie信息
config.setAllowCredentials(true);
//3) 允许的请求方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
// 4)允许的头信息
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}
11.一些单词……
page :页 Result 结果 total:总计,全部的 item 项目,条款;一件商品(或物品);一则,一条(新闻);(关系亲密的)
12.生成get set方法 快捷键!!上次没记住!!再来一遍!!alt+ins!鼠标放在需要生成的字段上!!
13.前端查看请求组合拳:F12 打开开发者工具,打开网络,再嗯ctrl+R刷新页面!就可以看到发出去的请求了!!!(一定要刷新!!才能看到新发出去的请求!!)
14.路由文件在哪?路由文件一般是index文件!
index:索引;标志;迹象;指示;象征;指数;指标;(表示特定特征、性质等的)率,指数;书目索引;指针;根指数;下标;标引;指示符号
本项目路径:leyou-manage-web src route index.js
route:路;路线;常规路线(或航线);固定线路(或航线);登山路线;途径;渠道;(药物等进入身体的)途径,入路;
15.未导入的飘红:
鼠标放在飘红处:alt+enter自动导入!!
16.java的接口文件是什么文件类型?后缀名是什么?
Interface文件类型,后缀名:Interface
但是在idea创建的时候要先选择class,再选择Interface!
我一开始找了半天都没找到!!
17.为什么每实现一个功能,就要写一个class,一个Mapper,一个Service,一个Controller,
创建文件难道不累吗?难道没有自动化解决方案吗?要一直手写?实现一个功能就要手写这么多文件???希望我学完java在后期实现的时候可以做到全自动化…………不然这也太鸡肋了……
参考:
Java Web中的mapper,service,controller,model究竟分别是什么作用?_controller model_栗少的博客-CSDN博客
简单来说:
Controller前端入口,只调用Service写好的方法,Service写具体的业务逻辑,但涉及sql语句的,在mapper下的xml中。
18.web服务器和web应用服务器
web服务器(nginx) 暴露在最前面,代理给web应用服务器 (主要负责返回前端页面)
nginx:可以做请求分发,反向代理,负载均衡(主要负责处理业务逻辑)
web应用服务器(tomacat) service 容器 解析jsp 或者可以做反向代理
最常用的一套方案:nginx+tomacat
web服务器是通用的,而web应用服务器是每个语言专属的,比如Python有django,而java有Tomcat。
参考:
Web服务器和应用服务器的区别与联系_PalmerYang的博客-CSDN博客
19.Sql语句中USING BTREE是什么意思?
源代码:
CREATE TABLE `tb_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目id',
`name` varchar(20) NOT NULL COMMENT '类目名称',
`parent_id` bigint(20) NOT NULL COMMENT '父类目id,顶级类目填0',
`is_parent` tinyint(1) NOT NULL COMMENT '是否为父节点,0为否,1为是',
`sort` int(4) NOT NULL COMMENT '排序指数,越小越靠前',
PRIMARY KEY (`id`),
KEY `key_parent_id` (`parent_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1424 DEFAULT CHARSET=utf8 COMMENT='商品类目表,类目和商品(spu)是一对多关系,类目与品牌是多对多关系';
这个是索引的固定用法,MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;分为B书和HASH,B树用树状结构,查询速度超快,Hash索引基于Hash表实现,只有查询条件精确匹配Hash索引中的所有列才会用到hash索引。
其中的:
PRIMARY KEY (`id`),创建id为主键,
USING BTREE的意思是创建B树索引;
ENGINE=InnoDB 意思是存储引擎是innodb;
AUTO_INCREMENT=1424,AUTO_INCREMENT,是自增约束,后面的值是起始值!!(实践得出的真理!!好多人说是步长!!)
DEFAULT default:代表插入默认值,
CHARSET=utf8 编码为utf8
COMMENT,评论;意见;闲话;流言蜚语;议论;注解;评注;(文章的)评论,评介,评语;
作出评论;发表意见;作注解;作评注; 在mysql里面是做注释的意思!!
KEY `key_parent_id` (`parent_id`) USING BTREE
)
给parent_id设置索引,然后他的索引名是key parent id。
20.实体类到底是什么意思?
天天听到这个词,实体类!实体类到底是什么意思?
实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。
在java中:
在Java中,实体类就是一个拥有Set和Get方法的类。实体类通常总是和数据库之类的(所谓持久层数据)联系在一起。这种联系是借由框架(如Hibernate)来建立的。
实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。
参考:Java中什么是实体类和实体类的作用_weixin_34055787的博客-CSDN博客
21.关于导入不成功的解决思路:
在多层级关系中:
如A下面有O、M、G,O下面有O1,O2,此时在O1,O2引用A下面的M 或者G时报错,找不到该包的情况大多数都是因为XML文件中<parent>标签相关没有配置正确导致的,要从A的XML,检查到O,O1,O2的XML,直至修改正确,就可以正确引用成功。