Linux基础命令
Linux基础命令Linux的目录结构
/,根目录是最顶级的目录了
Linux只有一个顶级目录:/
路径描述的层次关系同样适用/来表示
/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
ls命令功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-l,以列表形式查看
-h,配合-l,以更加人性化的方式显示文件大小
-a,显示隐藏文件
隐藏文件、文件夹在Linux中以.开头的,均是隐藏的。
默认不显示出来,需要-a选项才可查看到。
pwd命令功能:展示当前工作目录
语法:pwd
cd命令功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
HOME目录每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
普通用户的HOME目录,默认在:/home/用户名
root用户的HOME目录,在:/root
FinalShell登陆终端后,默认的工作目录就是用户的HOM ...
六、会员基础功能实现
12306会员基础功能实现主要目的:完成前后端,单表增删改查功能的开发
乘车人 数据库表的设计乘客表的设计member表代表系统登录用户的信息,对于乘车系统,同一个用户不仅可以为自己,也可以为其他人购买车票
所以设计一张新表passenger表示对应乘客信息,与车票对应
1234567891011create table `passenger` ( `id` bigint not null comment 'id', `member_id` bigint not null comment '会员id', `name` varchar(20) not null comment '姓名', `id_card` varchar(18) not null comment '身份证', `type` char(1) not null comment '旅客类型|枚举[PassengerTypeEnum]', `create_time` datetime(3) comment ' ...
四、前端系统搭建简介
系统前端模块的搭建本系统使用Vue3+Vue CLI实现系统前端模块的搭建
环境准备Vue CLI官方文档
安装node得到npm,使用npm安装vue cli(脚手架),使用vue cli创建项目
npm可设置淘宝镜像,淘宝镜像的域名换了,加快组件下载速度npm config set registry https://registry.npmmirror.com
项目创建依据官方文档,创建项目web-train
vue cli创建项目官方文档
创建的项目目录
项目目录各个文件介绍 参考资料
进入项目目录,执行npm run serve即可启动前端项目
vue项目启动端口号的修改方法,默认采用8080端口,如果8080被占用,则自动加1
前端模块集成Ant Design VueUI组件有很多选择,一种是基于CSS的Bootstrap,适用于各种前端框架;另一种是基于Vue的UI组件,只能用于Vue框架
Ant Design Vue官方文档教程
Ant Design Vue使用流程
下载资源,安装依赖
全局注册或者部分注册
在vue中即可直接使用相关组件
小插曲:关于Ant Desi ...
五、实现JWT单点登录功能
实现JWT单点登录功能单点登录:直观意义就是对于一个系统,只需登录一次就可以处处访问
两种单点登录的设计方案方案一:redis+token登录阶段
登录开始->校验用户名和密码->生成随机的token,每次都不一样->将token放入redis->结束
校验阶段
从header中获取token->根据token到redis获取数据->是否有数据->有数据登录校验成功,反之校验失败
方案二:JWT登录阶段
登陆开始->校验用户名和密码->生成JWT Token,每次都不一样->结束
校验阶段
校验开始->从header获取token->使用工具包校验token->校验是否成功
JWT原理JWT原理及其用法
JWT存在的问题问题一:token被解密破解
给密钥加盐值,每个项目盐值不一样,减小被破解风险
问题二:token被第三方使用
背景:自己的产品,被第三方包装成一个界面,做成他们自己的收费产品
此类问题无好的解决办法,可以通过限流进行一定程度缓解,如果某个相同的token有大量请求,则可能被第三方利用
生成J ...
第十七章:垃圾回收器
垃圾回收器GC分类与性能指标
垃圾回收器分类(了解即可)
评估GC的性能指标其中最重要的三个指标:吞吐量、暂停时间、内存占用
吞吐量(throughput)
暂停时间(pause time)
吞吐量 VS 暂停时间
不同垃圾回收器概述(了解即可)
七款经典的垃圾回收器
经典垃圾回收器与垃圾分代之间的关系
不同垃圾回收器之间的组合关系
不同垃圾回收器概述没有最好的,只有最合适的
Serial回收器:串行回收Serial原理
Serial优劣与参数设置
ParNew回收器:并行回收ParNew原理
ParNew参数设置
Parallel回收器:吞吐量优先Parallel原理
Parrallel的参数设置
CMS回收器:低延迟
CMS与Parallel的底层框架不一致,所以导致二者不兼容
CMS工作原理
CMS的特点与弊端分析
CMS参数设置
CSM总结
G1回收器:区域化分代式G1回收器概述
G1回收器特点优势
G1分区示意图
缺陷
G1回收器的参数设置
G1回收器的常见操作步骤
G1回收器的适用场景
分区Region:化整为 ...
第十五章:垃圾回收相关算法
垃圾回收相关算法基本思路:
确定内存中什么是垃圾?
对这些垃圾如何处理进行回收?
垃圾标记阶段:对象存活判断
垃圾标记阶段算法之引用计数算法引用计数算法概述
循环引用如下图所示,为循环引用实例,实际程序中可能变量p不再使用时,其所指向的内存区域也不会再使用,但由于循环引用问题,导致执行的内存区域引用计数器的值非0,从而无法被垃圾回收,即出现内存泄漏问题
小结
垃圾标记阶段算法之可达性分析算法可达性分析算法概述可达性分析,又称之为根搜索算法或者追踪性垃圾收集
GC Roots
对象的finalization机制
finalize方法使得对象存活实例
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * 对象的Finalization机制 */public class FinalizeTest { public static FinalizeTest obj; // @Override protected void ...
第十六章:垃圾回收相关概念
垃圾回收相关概念System.gc()的理解
实例一
1234567891011121314151617public class TTest { public static void main(String[] args) { for(int i=0;i<10;i++){ new TTest(); //没有引用的对象 //垃圾回收,只是显示地提醒系统进行垃圾回收,但是无法保证垃圾回收会百分百进行; //其底层是直接调用:Runtime.getRuntime().gc(); System.gc(); //此方法强制调用失去引用对象地finalize方法 System.runFinalization(); } } @Override protected void finalize() throws Throwable { Sy ...
第十四章:垃圾回收概述
垃圾回收概述
什么是垃圾
为什么需要GC
早期的垃圾回收
Java的垃圾回收机制
垃圾回收的重点区域
经典大厂面试题
三、项目前置配置
项目前置配置IDEA设置热部署2022版本IDEA配置参考博客
step1: setting->Compiler
step2:setting-Advance Settings
实现代码关联远程git仓库实际场景中,完成一个小功能应当及时提交远程仓库
vcs->enable Version Control:相当于git init
IDEA右上角出现git相关的功能按钮
左下角git可以查看对应的信息,比如日志、未提交的文件等
在Terminal下关联自己的github`执行以下操作
123456789101112#关联自己的github(以前设置后无需重复设置,ssh key免登录)git config --global user.name xxxgit config --global user.email xxx#将其与远程仓库关联起来,其中origin是别名git remote add origin 远程github地址(注意是ssh形式地址)#提交至远程仓库git push -u origin 分支名#删除关联远程仓库git remote remove or ...
第十三章:String Table
String TableString的基本特性
String存储结构变更
String 不可变性
1234567891011public class DemoTest { public static void main(String[] args) { String a = new String("hello"); String b = new String("hello"); System.out.println(a==b); //false String c = "hello"; String d = "hello"; System.out.println(c==d); //true }}
经典面试题
12345678910111213141516public class DemoTest { public String s = "hello ...