从前慢-开发问题指南

开发问题指南

在这里插入图片描述

1 mysql

1.1 如何创建一个mysql用户

如何创建一个mysql用户
首先以root身份登录到MySQL服务器中。
$ mysql -u root -p
当验证提示出现的时候,输入MySQL的root帐号的密码。
创建一个MySQL用户
使用如下命令创建一个用户名和密码分别为"myuser""mypassword"的用户。
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
一旦用户被创建后,包括加密的密码、权限和资源限制在内的
所有帐号细节都会被存储在一个名为user的表中,这个表则存在
于mysql这个特殊的数据库里。
运行下列命令,验证帐号是否创建成功
mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser';
赋予MySQL用户权限
一个新建的MySQL用户没有任何访问权限,这就意味着你不能
在MySQL数据库中进行任何操作。你得赋予用户必要的权限。
以下是一些可用的权限:
ALL: 所有可用的权限
CREATE: 创建库、表和索引
LOCK_TABLES: 锁定表
ALTER: 修改表
DELETE: 删除表
INSERT: 插入表或列
SELECT: 检索表或列的数据
CREATE_VIEW: 创建视图
SHOW_DATABASES: 列出数据库
DROP: 删除库、表和视图
运行以下命令赋予"myuser"用户特定权限。
mysql> GRANT <privileges> ON <database>.<table> TO 'myuser'@'localhost';
以上命令中,<privileges> 代表着用逗号分隔的权限列表。
如果你想要将权限赋予任意数据库(或表),那么使用
星号(*)来代替数据库(或表)的名字。
例如,为所有数据库/表赋予 CREATEINSERT 权限:
mysql> GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost';
验证给用户赋予的全权限:
mysql> SHOW GRANTS FOR 'myuser'@'localhost';
将全部的权限赋予所有数据库/表:
mysql> GRANT ALL ON *.* TO 'myuser'@'localhost';
你也可以将用户现有的权限删除。
使用以下命令废除"myuser"帐号的现有权限:
mysql> REVOKE <privileges> ON <database>.<table> FROM 'myuser'@'localhost';
为用户添加资源限制
在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。
可用的资源限制如下:
MAX_QUERIES_PER_HOUR: 允许的每小时最大请求数量
MAX_UPDATES_PER_HOUR: 允许的每小时最大更新数量
MAX_CONNECTIONS_PER_HOUR: 允许的每小时最大连接(LCTT译注:其与 MySQL全局变量: max_user_connections 共同决定用户到数据库的同时连接数量)数量
MAX_USER_CONNECTIONS: 对服务器的同时连接量
使用以下命令为"myuser"帐号增加一个资源限制:
mysql> GRANT USAGE ON <database>.<table> TO 'myuser'@'localhost' WITH <resource-limits>;<resource-limits> 中你可以指定多个使用空格分隔开的资源限制。
例如,增加 MAXQUERIESPERHOUR 和 MAXCONNECTIONSPERHOUR 资源限制:
mysql> GRANT USAGE ON *.* TO 'myuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6;
验证用户的资源限制:
mysql> SHOW GRANTS FOR 'myuser'@'localhost;
创建和设置一个MySQL用户最后的一个重要步骤:
mysql> FLUSH PRIVILEGES;
如此一来更改便生效了。现在MySQL用户帐号就可以使用了。

1.2 如何用mysql远程连接数据库

1 连接Mysql (连接方式:mysql -u 你设置的用户名 -p你设置的密码 )
2 查看数据库:show databases;我们会看到有一个叫做"mysql"的数
据库,这里我们输入: use mysql 进入'mysql'数据库中
3 执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你设置的密码' WITH GRANT OPTION;
4 刷新, FLUSH PRIVILEGES5 退出,此时就可以进行远程连接了。

注意:‘%’ 指所有ip都可远程连接此电脑。如果%变成ip 
仅指定该ip可以远程连接至此电脑。
grant all privileges on *.* to 'root'@'ip' identified by 'password' with grant option;
all privileges:表示将所有权限授予给用户。
也可指定具体的权限,如:SELECTCREATEDROP等。
on:表示这些权限对哪些数据库和表生效,格式:数
据库名.表名,这里写.表示所有数据库,所有表。如果
我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:”用户名”@”登录IP或主机名”。
%表示没有限制,在任何主机都可以登录。
比如:”zhyd”@”192.168.1.%”,表示zhyd这个用户只能
在192.168.1IP段登录。为了安全起见,请使用指定ip
或者主机进行授权
identified by:指定用户的登录密码
with grant option:表示允许用户将自己的权限授权给其它用户
刷新权限
flush privileges;

1.3 报错

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support 
authentication protocol requested by serv


mysql> use mysql;
mysql> select user,host from user;

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| admin            | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| zhangj           | localhost |
+------------------+-----------+

注意我的root,host是'%'

你可能执行的是:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

改成:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
flush privileges;

2 跨域问题

前后端都可以解决

2.1 前端解决

vue-cli开启跨域
解决思路
服务器之间不存在跨域问题。所以就利用代理服务器完成跨域问题
假设我的项目启动端口是8080,则启动的访问地址是http://localhost:8080/

其中有一个请求地址是:以下地址会被拦截
axios.get("/api").then((response) => {
 		console.log(response.data)
})
 
注释: /api代表http://localhost:8080/api
在项目根目录下建立vue.config.js文件内容如下
module.exports = {
  devServer: {
    host: 'localhost',
    port: 8080,   # 项目启动端口,这里可以随意指定。那么启动服务时就会以这个端口启动。
    proxy: {
      '/api' : {     # 拦截/api的请求
        target: 'https://www.baidu.com/aaa  # 请求的真实地址
        changeOrigin: true,  # 允许跨域
        pathRewrite: {
          '^/api': ''  //通过pathRewrite重写地址,将前缀/api转为/
        }
  
      }
    }
    // https: true    # 如果想要以https启动项目的话,可以配置此参数
  }
}

过程如下: 
第一步
http://localhost:8080/api   # 此请求被/api拦截
第二步 重写目标地址
http://localhost:8080/api 被替换成https://www.baidu.com/aaa/api
第三步 改写请求路径
https://www.baidu.com/aaa/api 改写成https://www.baidu.com/aaa

2.2 后端解决

第一种办法:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")  // http://localhost:9000,则代表是这个域名可以跨域
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

第二种办法:
import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "CorsFilter ")
@Configuration
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin","*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        chain.doFilter(req, res);
    }
}


第三种办法:
public class GoodsController {
    @CrossOrigin(origins = "http://localhost:4000")
    @GetMapping("goods-url")
    public Response queryGoodsWithGoodsUrl(@RequestParam String goodsUrl) throws Exception {}
}


4 网关解决
server:
  port: 7200
spring:
  cloud:
    gateway:
      routes:
        - id: blog-user
          uri: lb://blog-user
          predicates:
            - Path=/hello/**
      globalcors:
        cors-configurations:
          '[/**]':
            allowedOrigins: "*"
            allowedHeaders: "*"
            allowedMethods: "*"
        add-to-simple-url-handler-mapping: true       

3 Git

3.1 git提交远程仓库失败

1 window本身凭证的原因:以前有用过git,账户密码被记
录到凭证里面。所以登录上去不用密码。所以你如果提交仓库,用的是凭
证里面的账号跟密码。如果账号密码不对的话,自然也就提交不上去。解决办
法就是删掉凭证,重新输入账号跟密码

3.2 git乱码问题

修改 Git 的安装目录下的bash.bashrc文件,
我的目录是:D:Git\etc,在该文件最后添加以下代码
[gui]  
    encoding = utf-8  # 代码库统一使用utf-8  
[i18n]  
    commitencoding = utf-8  # log编码  
[svn]  
    pathnameencoding = utf-8  # 支持中文路径  

3.3 git推送失败

idea提交项目到github
提交到远程库错误:Push to origin/master was rejected
解决方案:git pull origin(远程仓库的地址) master --allow-unrelated-histories

4 Tomcat

4.1 Tomcat乱码问题

idea中解决tomcat乱码问题:
在 tomcat / conf 目录下,设置 logging.properties ,
增加参数  java.util.logging.ConsoleHandler.encoding = GBK,

1catalina.org.apache.juli.AsyncFileHandler.encoding = GBK
2localhost.org.apache.juli.AsyncFileHandler.encoding = GBK
重启后终于可以了

5 windows

5.1 在DOS命令窗口中怎么复制内容

	win7:
任意位置点击右键-->标记-->选中要复制的内容-->点击右键-->此时
就到剪贴板里面了
win10:
左键直接选中,然后右键单击一下就到剪贴板里面了。

5.2 windows常见命令

exit 退出窗口
cls 清屏
dir 列出当前目录的文件以及目录
cd . 当前目录
cd .. 上一级目录
cd \ 回到根目

5.3 文本通用快捷键

常用的组合键都有哪些?
		复制	ctrl + c
		粘贴  ctrl + v
		剪切  ctrl + x
		保存  ctrl + s

		撤销  ctrl + z
		重做  ctrl + y

		回到行首:home键
		回到行尾:end键

		当光标在行尾,怎么选中一行?
			shift + home键
		当光标在行首,怎么选中一行?
			shift + end键
		
		回到文件头:ctrl + home
		回到文件尾:ctrl + end

		全选:ctrl + a

		查找:ctrl + f
		
		搜狗输入法如何敲代码标点进行中英文切换:Ctrl+.

5.4 window如何杀死进程

首先查看端口被那个进程占用
netstat -p tcp -ano | findstr :8888
找到pid,如图就是8860

在这里插入图片描述

查看8860进程的进程名
tasklist | findstr 8860

在这里插入图片描述

最后强制终止进程
taskkill -PID 8860 –F 

在这里插入图片描述

6 IDEA

6.1 将cmd改为bash

在这里插入图片描述

6.2 忽略大小写

在这里插入图片描述

6.3 自动导包

在这里插入图片描述

6.4 集成idea中git自带的bash.exe乱码问题

集成idea中git自带的bash.exe乱码问题
修改 Git 的安装目录下的bash.bashrc文件,我的目录
是:D:Git\etc,在该文件最后添加以下代码
[gui]  
    encoding = utf-8  #代码库统一使用utf-8  
[i18n]  
    commitencoding = utf-8  #log编码  
[svn]  
    pathnameencoding = utf-8  #支持中文路径  

6.5 windows端口占用问题

1.查看该端口被哪些进程占用
 
netstat -ano|findstr [端口号]  
 
2.查看进程信息
 
tasklist | findstr [pid]  
 
3.根据进程ID或进程名称杀进程
 
taskkill /f /pid [pid]
 
taskkill /f /im [进程名]

6.6 Jrebel and XRebel for Intellij的使用

生成 GUID 的网址
https://www.guidgen.com/
用这个网址 + 生成的 GUID 激活
https://jrebel.qekang.com/
demo@123.com

在这里插入图片描述

6.7 idea解决不能上网问题

选择 File—>Setting—>Appearance&Behavior—>
System Settings—>HTTP Proxy 进行配置,
地址除了用http://127.0.0.1:1080,也可以配
置 https://plugins.jetbrains.com/

6.8 idea编译报错问题

Error:java: Compilation failed: internal java compiler error 
解决办法
错误原因
导致这个错误的原因主要是因为jdk版本问题,此处
有两个原因,一个是编译版本不匹配,一个是当前项
目jdk版本不支持。

查看项目的jdk
File ->Project Structure->Project Settings 
->Project或使用快
捷键Ctrl+Alt+shift+S打开项目的jdk配置:

在这里插入图片描述

查看此两处是否与目标jdk一致。

查看工程的jdk
点击上图中Modules查看对应jdk版本:

在这里插入图片描述

查看java编译器版本

在这里插入图片描述

导入java项目时此处处问题的概率比较多。

针对此问题,重新打开或修改pom文件(maven项目)中
的内容很可能导致jdk版本重新变为1.5。如果是maven项
目,可在pom文件中指定jdk相关信息

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

6.9 idea无法识别maven中的pom.xml

在pom.xml右键add as maven project

6.10 idea解析jsp

名字为webapp

6.11 idea自动生成序列化版本号

凡是一个类实现了Serializable接口,建议给该类提供一个
固定不变的序列化版本号。以后这个类即使代码修改了,但
是版本号不变,java虚拟机认为是同一个类。(区分类的)

在这里插入图片描述

Alt+Enter:自动生成

在这里插入图片描述

6.12 常用插件

Translation 翻译插件
RestfulTool  测试接口工具
GsonFormatPlus
Free Mybatis plugin 从xml跟接口类之间的跳转
AceJump  快速跳转代码
Grep Console  日志输出调整
Maven Helper   调试maven依赖
Easy Code   生成dao、service、controller层代码
Iedis  redis 可视化工具
Mongo  Plugin 可视化工具
Lombok  生成getter、setter方法
stackoverflow   
Vue
SequenceDiagram
Properties to YAML Converter 将Properties格式转化为yaml
LeetCode 刷题软件
Mybatis Log Plugin  日志输出
Key Promoter X  快捷键提示
google-java-format
Alibaba Java Coding Guidelines
Jrebel and XRebel for Intellij  热部署
Idea QAPlug
MybatisCodeHelperPro
Codota

6.13 常用快捷键

xxx.for
psvm	
xxx.var
iter+tab
alt+enter
itar + tab
soutv
ctrl+shift+f12  # 窗口最大化跟最小化
alt+1  # 快速打开项目面板
ctrl+alt+s  # 快速打开配置面板
double shift 搜索文件
ctrl + i 实现接口
ctrl + o 覆盖父类中方法
alt + insert 快速创建方法或者新建类
后退 ctrl + z
前进 ctrl + y
ctril + H 常看类的层次结构
alt+ /  代码补全,需修改idea快捷键

在这里插入图片描述

7 vscode

7.1 如何设置目录分开出来

在这里插入图片描述
在这里插入图片描述

7.2 常用插件

1 Auto Close Tag  # 自动补全没打完的半边标签,比如<div> 就变成
 `<div></div>`
 
2 Auto Rename Tag #  自动完成另一侧标签的同步修改

3 Chinese  #  vscode中文化

7.3 code runner出现乱码问题

在code runner中的setting.json文件中添加"code-runner.runInTerminal": true

在这里插入图片描述

7.4 vscode集成bash

1 打开vscode
2 文件->首选项->设置,打开设置
3 搜索terminal.integrated.shell.windows,
打开settings.json编辑
4 在里面输入你的bash路径
如:“terminal.integrated.shell.windows”:“D:\app\Git\bin\bash.exe”
5 保存重启vscode,按ctrl+~键打开终端,看是否生效
6 实现cmd跟bash之间的切换
输入cmd切换成cmd,输入bash切换成bash

在这里插入图片描述

7.5 解决乱码问题

1 针对单个文件
点击右下角的编码按钮(图中为UTF-8),然后选择操作,
通过编码重新打开(Reopen with Encoding)
之后选择一种编码进行文件打开并保存。

在这里插入图片描述
在这里插入图片描述

2 全局设置
文件->首选项->设置->输入settings.json
->在setting.json中加入files.autoGuessEncoding": true,并保存
->重新查看乱码文件看看是否设置成功。

在这里插入图片描述
在这里插入图片描述

8 Linux

8.1 CentOS7放内存

释放网页缓存(To free pagecache):
sync; echo 1 > /proc/sys/vm/drop_caches
释放目录项和索引(To free dentries and inodes):
sync; echo 2 > /proc/sys/vm/drop_caches
释放网页缓存,目录项和索引(To free pagecache, dentries and inodes):
sync; echo 3 > /proc/sys/vm/drop_caches

9 SpringBoot父子依赖打包问题

子模块需要配置成这样
    <build>  
        <plugins>  
            <plugin>  
                <groupId>org.springframework.boot</groupId>  
                <artifactId>spring-boot-maven-plugin</artifactId>  
                <configuration>  
                    <classifier>exec</classifier>  
                </configuration>  
            </plugin>  
        </plugins>  
    </build>  
想要获取该该课程markdown笔记(脑图+笔记)。可以扫描以下
微信公众号二维码。或者搜索微信公众号-Java大世界。回复
开发即可获取笔记获取方式。

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
根据引用中提供的信息,谷粒商城是一个B2C模式的电商平台,主要销售自营商品给客户。B2C模式指的是商对客的模式,即商家直接向消费者销售商品和服务。谷粒商城使用微服务架构,这是一种将应用程序拆分成独立且可独立开发、部署和扩展的小型服务的架构。引用还提到谷粒商城的技术涵盖微服务架构、分布式、全栈、集群、部署和自动化运维等方面。 因此,从前-谷粒商城篇章6主要讨论的可能是谷粒商城的技术方面,包括微服务架构、分布式、全栈、集群、部署和自动化运维等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [从前-谷粒商城篇章1](https://blog.csdn.net/m0_67391121/article/details/125383572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2020年谷粒商城md笔记](https://download.csdn.net/download/ZHUXIUQINGIT/12543161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

unique_perfect

您的支持是我创造的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值