MySql复习
SQL 程序语言有四种类型,对数据库的基本操作都属于这四类,它们分别为;数据定义语言 (DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL)
# DDL 全称是 Data Definition Language,即数据定义语言
主要是实现
查询语句:
12345678910CREATE TABLE users( id int(8) NOT NULL AUTO_INCREMENT, createDate datetime NOT NULL, username varchar(32) NOT NULL, password varchar(32) NOT NULL, age int(3) NOT NULL, phone varchar(11) NOT NULL, introduce varchar(20) NOT NULL, PRIMARY KEY (id)) DEFAULT CHARSET=utf8;
# alter 修改
修改表名
1alter table users rename user_info;
添加字段
1alter table user_info ...
redis补充项目
# 基于 session 实现登录
一直连不上 docker 中的 redis,检查端口没错后就只能确认 password 是否正确了,
有时重启后就没密码了
redis 替换 session 保存用户的 token 数据
拦截器的优化,使用两个拦截器分别拦截已经登录的请求和未登录过的请求。
# 为了防止对数据库写入中文时出现???
解决办法:连接数据记得在 yml 中的 Db_url 后面添加 useUnicode=yes&characterEncoding=utf8
缓存击穿
Java面试题---MyBatis
# MyBatis
author: “\U0001F336 辣椒炒饭”
date: 2023-03-23 23:37:02
tags:
# 什么是 MyBatis
一个可以自定义 SQL,存储过程和高级映射的持久层框架。
# MyBatis 的缓存讲一下。
MyBatis 的缓存分为一级缓存还有二级缓存,一级的缓存放在 session 中,二级缓存放在命名空间里。使用二级缓存属性类需要实现 Serializable 序列化接口。
# MyBatis 的好处是。
将 sql 语句从 Java 源程序中独立出来,放在单独二点 XML 文件中编写,更加有利于维护。
MyBatis 封装了底层 JDBC API 的调用细节,而且可以将结果转化为 JavaBean 对象,简化了 JAVA 数据库编程的重复工作。
# MyBatis 的缺点是。
SQL 语句的编写工作量比较大,特别是字段多,关联的表比较多的时候,对开发人员的 SQL 语句要求比较高。
SQL 语句依赖数据库,会使数据库移植性差,不可以随便更改数据库。
# {} 和 ${} 的区别。
#{} 是预编译处理
${} 是字符串替 ...
Java面试题---JVM
# JVM
author: “\U0001F336 辣椒炒饭”
date: 2023-03-23 23:06:05
tags:
# 内存模型以及分区,需要详细导每个区放什么。
JVM 分为堆区和栈区,方法区。
方法区:主要是存储类的信息,常量池里的变量和常量(static 常量和 static 变量),还有编译后的代码。
堆:初始化的对象,成员变量(那种非 static 的变量),所有的对象实例和数组都要在堆上分配。
栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部标量表存放的是 8 大基础类型加上一个应用类型,所以还是一个指向地址的指针。
本地方法栈:主要为 Nativate 方法服务。
程序计数器:记录当前线程执行的行号。
# 简述 Java 垃圾回收机制。
在 Java 中,程序员不用自己去释放每一个对象的内存。而是让虚拟机自己去释放。在 JVM 中,有一个垃圾回收机制,它是低优先级,也就是说正常情况下不会执行自己,只有在虚拟机空闲的时候或者当前堆内存不够时,才会触发执行,把那些没有被引用的对象,添加到需要回收的集合 ...
docker学习
进入官网安装 docker-desktop
地址链接:https://docs.docker.com/desktop/install/windows-install/
这里需要重启电脑
重启后自动打开 docker,报错
然后直接在命令行里输入 wsl --update
安装完成
打开 docker 后正常进入
这里其实也可以通过文件安装:
点击直接自动下载
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
# wsl 是什么?
开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。
# wsl ...
conda基本命令
# 查看镜像源
conda config --show
找到 chanel,我这里没有配置,所以是默认
配置完后就是有一个地址
# 添加镜像源
123conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# 删除镜像源
conda config --remove channels 地址
# 创建虚拟环境
输入 python --version 查看 python 版本,其实后面也可以自己选定。
创建
conda create -n 虚拟环境名字 python==3.7
# 删除虚拟环境
conda remov ...
Java面试题---设计模式
# JDK 中常用的几个设计模式了解吗?
单例模式:用于 Runtime,Calendar 和其他的一些类中
工厂模式:用于各种不可变的类如 Boolean。
观察者模式:用于 Swing 和许多事件监听中。
装饰器设计模式:用于多个 JavaIO 类中
# 什么是设计模式?
设计模式是代码可用性的延申。
# Java 中什么叫做单例设计模式?
单例模式主要在整个系统上共享一些创建时较为耗费资源的对象。整个应用只维护特定类的实例。
# 在 Java 中,什么叫做观察者模式?
观察者是基于对象的状态变化和观察者的通讯,以便他们作出相应的操作。
# 在 Java 中,为什么不允许从静态方法中访问非静态变量?
Java 中不能从静态上下文访问非静态数据只是因为非静态变量都是跟具体的对象实例关联的。
而静态的却没有和任何实例关联。
# 在 Java 中,什么时候使用重载,什么时候使用重写?
如果有一个类的不同实现有着不同的方式在做同一件事,则就是重写(overriding),
而重载是不同的输入做一件事,在 Java 中,重载的方法签名不同。
Java面试题---String
# String 是基本数据类型吗
String 是类,不是基本数据类型
# String 是可变的话?
String 是 final 类型的,不可变
# 如何比较两个字符串的值一样,又如何比较两个字符串是否为同一个对象?
比较字符串的值是否相同用 equals
比较字符串对象是否为同一个用 ==
# switch 中可以用 String 吗?
jdk7 + 的 switch 中可以使用 String 类型
# String str = new String (“abc”); 创建了几个对象?
创建了两个或者一个,"abc" 本身创建了对象在常量池中,又通过 new 创建了对象在堆中。
# String,StringBuffer,StringBuilder 有什么区别?
最大的区别就是 String 不可变,而后者两个可变,StringBuffer 是线程安全的,StringBuilder 线程虽然不安全但是速度较快。
# String.trim () 方法去掉的是哪些字符?
trim 去掉的是字符串首尾的空白字符
# String 可以被子类继承吗?
既然 Str ...
Java面试题---Main方法
# main 方法的用途?
main 方法是 Java 程序的入口方法,JVM 会在运行时优先找到 main 方法。
# 不用 main 方法如何运行一个类?
不用 main 方法无法运行一个类,
在 Java7 之前,你可以通过使用静态初始化运行 Java 类。但是 Java7 之后就不可以了。
# main 方法如何传递参数?传递参数的类型是什么?可不可以改变参数?
String 数组,不可以改变参数。
# main 方法为什么是静态的?能不能改为非静态的?
main()方法一定是静态的,如果 main () 是非静态的那么在调用 main 方法时 JVM 就得实例化它的类。
不能改为非静态的,main()方法必须声明为静态的,这样 JVM 才能找到并调用 Main()方法而无需实例化他的类。
如果从 main()方法去掉 "static" 声明,虽然依然可以编译成功,但是在运行时会导致程序失败。
在实例化时,还是得调用类的构造函数。
# main 方法能被重载不?
可以,一个 Java 类可以有任意数量的 main()方法
# main 方法能被覆盖吗?
在 ...
Java面试题---List
# List 的有哪些?
ArrayList、LinkedList、Vector
# List 和 Vector 的区别?
Vector 是 List 接口线程安全的集合
# List 是有序的吗?
List 的是有序的。
List 实现类有 ArrayList、LinkedListVector
Set 是无序的,且不能重复
# ArrayList 和 LinkedList 的区别?分别应用在什么场景?
数据结构不一样。前者用在查询较多的场合,后者适用于插入比较多的场景
# ArrayList 和 LinkedList 的底层数据结构是什么?
ArrayList 使用的是数组结构,LinkedList 是使用的链表结构。
# ArrayList 的默认大小是?如何扩容?
JDK1.7 之前是 10,1.7 后是 0
扩容是按照 1.5 倍扩容。
# List 是线程安全的吗?如果线程安全需要怎么做?
List 中 的 Vector 才 是 线 程 安 全 的 , 其 他 要 实 现 线 程 安 全 使 用 工 具 类
Collections.synchronizedList (ne ...