day60反刍笔记

  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';

 我加了,真的不管用。

继续百度,看到这个老哥的文章:

解决{已拦截跨源请求:同源策略禁止读取位于 xxx 的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-O)}_已拦截跨源请求:同源策略禁止读取位于_森语xt的博客-CSDN博客

按照他说的,在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 、Mapper的关系以及Controller的注解@RequestMapping与@RestController_controller mapper service_MapleAndJoker的博客-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,直至修改正确,就可以正确引用成功。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy393939

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值