<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Save_By的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Save_By</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Save_By]]></copyright><item><title><![CDATA[实现多端登录的相关思路]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/123414041</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/123414041</guid><author>Save_By</author><pubDate>Thu, 10 Mar 2022 23:26:27 +0800</pubDate><description><![CDATA[登录态怎么维持
登录有很多种实现方案，也有各种成熟的方案比如依靠ssesion、cookie等等
这里主要是使用有状态token去模拟实现共享ssesion
思路
生成token表示当前用户，将token存储在redis中，使用token的过期去控制用户登录态的过期
登录态即将过期，用户来请求了，需要动态的延长
思路
方案一
可以选择模仿OAuth2，在一开始认证成功时，返回两个token，一个作为常规请求的token，一个作为更新令牌（refresh token），用于获取新的令牌。令牌到期前，用户使用 ]]></description><category></category></item><item><title><![CDATA[MyBatisPlus使用]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/120773536</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/120773536</guid><author>Save_By</author><pubDate>Thu, 14 Oct 2021 21:57:10 +0800</pubDate><description><![CDATA[MyBatisPlus
快速入门
使用spring boot整合


主方法添加扫描
@SpringBootApplication
@MapperScan("com.by.mapper")//添加扫描
public class ParkingAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(ParkingAdminApplication.class, args);
  ]]></description><category></category></item><item><title><![CDATA[Java数组集合转换]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/120732640</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/120732640</guid><author>Save_By</author><pubDate>Tue, 12 Oct 2021 21:26:34 +0800</pubDate><description><![CDATA[数组集合转换
一、初始化的简便方法
数组
//设置初始化值
int[] p = new int[]{1,2,3};
int[] ins = {1,2,3};
String [] dog = {"Jimmy","Gougou","Doggy"};
//不设置初始化值
int[] q = new int[3];
q[0] = 5;

List集合
1、常规方法
List&lt;String&gt; languages = new ArrayList&lt;&gt;();
languages.add("Java"]]></description><category></category></item><item><title><![CDATA[springboot]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/115191036</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/115191036</guid><author>Save_By</author><pubDate>Thu, 25 Mar 2021 00:02:09 +0800</pubDate><description><![CDATA[springboot零碎入门知识
基础配置入门
resources文件夹


application.properties文件
  #（更改项目的端口为8081，默认为8080）
  server.port = 8081 



新建banner.txt文件
放入喜欢的字符组合图（算彩蛋）


src文件夹
分散的知识点


默认扫描器 basepackage （就是主启动类所在的包）


热部署

需要插件

&lt;dependency&gt;
            &lt;groupId&gt;or]]></description><category></category></item><item><title><![CDATA[SSM整合]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107976266</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107976266</guid><author>Save_By</author><pubDate>Thu, 13 Aug 2020 11:44:17 +0800</pubDate><description><![CDATA[SSM整合

仅个人笔记
（有想知道详细的可以转https://blog.youkuaiyun.com/qq_44543508/article/details/100192558）

一、搭建整合环境
整合说明
使用xml + 注解的方式
思路


搭建整合的环境


把Spring的配置搭建完成


使用Spring整合SpringMVC框架


使用Spring整合MyBatis框架


spring整合mybatis框架配置事务（Spring的声明式事务管理）


项目目录



POM环境
&lt;?xml v]]></description><category></category></item><item><title><![CDATA[SpringMVC使用]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107976234</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107976234</guid><author>Save_By</author><pubDate>Thu, 13 Aug 2020 11:39:48 +0800</pubDate><description><![CDATA[SpringMVC
搭建过程


导jar


在web.xml中配置springMVC的核心（前端）控制器DispatcherServlet
&lt;servlet&gt;
    &lt;servlet-name&gt;springMVC&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;]]></description><category></category></item><item><title><![CDATA[Spring5]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107923298</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107923298</guid><author>Save_By</author><pubDate>Mon, 10 Aug 2020 22:10:43 +0800</pubDate><description><![CDATA[Spring 5

仅个人笔记

一、Spring框架概述


Spring是轻量级的开源的JavaEE框架，是针对bean的生命周期进行管理的容器


可以解决企业开发的复杂性


有两个核心部分：IOC和AOP

IOC：控制反转，把创建对象过程交给Spring进行管理
AOP：面向切面，不修改源代码进行功能增强



特点

方便解耦，简化开发
AOP编程的支持
声明式事务的支持
方便程序的测试
方便集成各种优秀框架
降低Java EE API 的使用难度
其源码是经典学习范例



二、入门案例

]]></description><category></category></item><item><title><![CDATA[mybatis]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107872335</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107872335</guid><author>Save_By</author><pubDate>Fri, 07 Aug 2020 23:16:10 +0800</pubDate><description><![CDATA[mybatis

仅个人笔记


mybatis是一个优秀的基于Java的持久层框架，内部封装了jdbc，使开发者只需要关注SQL语句本身，而无需关注注册驱动，创建连接等繁琐过程

一、入门


三层架构


表现层

展示数据



业务层

业务处理



持久层

与数据库交互








持久层技术解决方案

jdbc
Spring的JdbcTemplate

Spring中对jdbc的简单封装


apache的DbUtils:

对jdbc的简单封装


（以上都不是框架）

jdbc是规范]]></description><category></category></item><item><title><![CDATA[Mysql进阶知识]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107748876</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107748876</guid><author>Save_By</author><pubDate>Sun, 02 Aug 2020 18:37:02 +0800</pubDate><description><![CDATA[Mysql进阶知识

仅个人笔记

一、索引

索引是帮助MYSQL高效获取数据的数据结构–&gt;排好序的快速查找数据结构
我们平时所说的索引，没有特别指明，都是指B树（多路搜索树，不一定是二叉）
结构组织的索引。其中聚集索引，次要索引，覆盖索引，复合索引，前缀索引，唯一索引默认都是使用B+树索引，统称索引，除了B+树这种类型的索引外，还有哈希索引等。

优势：

类似大学图书馆书目索引，提高数据检索效率，降低数据库的io成本。
通过索引列对数据进行排序，降低数据排序的成本，降低了CPU的消耗。

劣势：]]></description><category></category></item><item><title><![CDATA[Maven的配置使用]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107678554</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107678554</guid><author>Save_By</author><pubDate>Wed, 29 Jul 2020 23:56:36 +0800</pubDate><description><![CDATA[Maven的配置使用

仅个人笔记
可以直接跳到1. Maven 的安装


Maven 翻译为"专家"、“内行”，是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型（缩写：POM）概念，Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具，可以对 Java 项目进行构建、依赖管理。
Maven 也可被用于构建和管理各种项目，例如 C#，Ruby，Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目，现为由 ]]></description><category></category></item><item><title><![CDATA[常用设计模式与相关原则]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107647726</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107647726</guid><author>Save_By</author><pubDate>Tue, 28 Jul 2020 22:58:01 +0800</pubDate><description><![CDATA[常用设计模式与相关原则

仅个人笔记

设计原则
1. SRP原则 - 单一职责原则(Single Responsibility Principle)
应该有且只有一个原因引起类的变化。（这里的类不光指类,也适用于方法和接口,比如常说的一个方法实现一个功能）
2. LSP法则 - 里氏替换原则（Liskov Substitution Principle）
把抽象接口和实现分离,子类必须能替换掉父类，这个原则通常由语言保证。（子类必须完全实现父类的方法,如果子类无法完全实现父类的方法,则建议断开父子继承关系,]]></description><category></category></item><item><title><![CDATA[Linux基本操作]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107623574</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107623574</guid><author>Save_By</author><pubDate>Mon, 27 Jul 2020 22:51:20 +0800</pubDate><description><![CDATA[Linux基本常用操作

仅个人笔记

命令大多数的基本格式
[指令] [选项] [操作对象]


ls 查询目录中的文件
-l 显示文件和目录的详细资料
-a 显示隐藏文件
ls -a /usr 显示/usr目录下所有且包括隐藏的文件与文件夹



mkdir 创建目录
-p 忽略目录树如果不存在的问题
mkdir dir1 创建一个叫做 'dir1' 的目录
mkdir dir1 dir2 同时创建两个目录



touch 创建文件
touch a.txt 创建名为a.txt的文件



rm 删除目]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107566087</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107566087</guid><author>Save_By</author><pubDate>Fri, 24 Jul 2020 17:36:13 +0800</pubDate><description><![CDATA[多线程

仅个人笔记

进程与线程


进程：是代码在数据集合上的一次运行活动，是系统进行资源分配和调度的基本单位。


线程：是进程的一个执行路径，一个进程中至少有一个线程，进程中的多个线程共享进程的 资源。


虽然系统是把资源分给进程，但是CPU很特殊，是被分配到线程的，所以线程是CPU分配的基本单位。


进程与线程的关系：一个进程中有多个线程，多个线程共享进程的堆和方法区资源，但是每个线程有自己的程序计数器和栈区域。


程序计数器：是一块内存区域，用来记录线程当前要执行的指令地址 。


栈：用]]></description><category></category></item><item><title><![CDATA[网络编程相关知识]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107477458</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107477458</guid><author>Save_By</author><pubDate>Mon, 20 Jul 2020 23:23:55 +0800</pubDate><description><![CDATA[网络编程相关知识

仅个人笔记整理

1. 计网OSI
1.1 OSI七层模型




OSI中的层
功能
TCP/IP协议族




应用层
文件传输，电子邮件，文件服务，虚拟终端
TFTP，HTTP，SNMP，FTP，SMTP，DNS，Telnet


表示层
数据格式化，代码转换，数据加密
无


会话层
解除或建立与别的接点的联系
无


传输层
提供端对端的接口
TCP，UDP


网络层
为数据包选择路由
IP，ICMP，RIP，OSPF，BGP，IGMP


数据链路层
传输有地址的帧以及错误]]></description><category></category></item><item><title><![CDATA[基于tcp的Socket编程]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107477433</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107477433</guid><author>Save_By</author><pubDate>Mon, 20 Jul 2020 23:22:48 +0800</pubDate><description><![CDATA[基于tcp的Socket编程


特点

面向有连接
数据量大，以字节流形式传输
通过三次握手，协议可靠



编程思想


建立套接字(socket)
它允许程序把网络连接看成一个流(stream)，可以向这个流写字节，也可以从这个流读取字节。


监听


建立连接


通信


关闭IO流、Socket




Client（客户端）


建立套接字
Socket(IneAddress address/*服务器的IP地址*/,int port/*端口号*/)


建立连接

IN

getInputS]]></description><category></category></item><item><title><![CDATA[动态代理]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107378252</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107378252</guid><author>Save_By</author><pubDate>Thu, 16 Jul 2020 10:52:41 +0800</pubDate><description><![CDATA[动态代理
定义
给目标对象提供一个代理对象，并由代理对象控制对目标对象的引用。
目的

通过引入代理对象的方法来间接访问目标对象，防止直接访问对象给系统带来的不必要复杂性。
通过代理对象对原有的业务增强。

实现

具体实现类与代理类要实现同一个接口
代理对象要包含实现对象

例子
//接口
public interface Stu {
    public void study();
}
//实现类
public class Student implements Stu{
    @Override
  ]]></description><category></category></item><item><title><![CDATA[注解]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107378208</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107378208</guid><author>Save_By</author><pubDate>Thu, 16 Jul 2020 10:51:42 +0800</pubDate><description><![CDATA[注解

概念
从JDK5开始,Java增加对元数据的支持，也就是注解，注解与注释是有一定区别的，可以把注解理解为代码里的特殊标记，这些标记可以在编译，类加载，运行时被读取，并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。

作用分类

编写文档：生成文档（doc文档）
代码分析：对代码进行分析（使用反射）
编译检查：让编译器能够实现基本的编译检查（Override）

JDK中预留的一些注解


@Override：检查被标记的方法是否继承自父类（接口）的
@Ov]]></description><category></category></item><item><title><![CDATA[类加载器]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107378158</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107378158</guid><author>Save_By</author><pubDate>Thu, 16 Jul 2020 10:50:24 +0800</pubDate><description><![CDATA[类加载器
1.虚拟机内置加载器
1.1.根类加载器（Bootstrap）
无父加载器
c++语言实现
主要负责加载系统属性“sun.boot.class.path”指定路径下的核心类库（即&lt;JAVA_HOME\jre\lib&gt;），出于安全考虑，根类加载器只加载java、javax、sun、开头的类。
public static void main(String[] args){
    ClassLoader cl = Object.class.getClassLoader();
    Sys]]></description><category></category></item><item><title><![CDATA[反射]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/107374968</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/107374968</guid><author>Save_By</author><pubDate>Thu, 16 Jul 2020 08:38:14 +0800</pubDate><description><![CDATA[反射（框架设计的灵魂）

框架：半成品软件。可以在框架的基础上进行软件开发，简化编码。

概念

将类的各个组成部分封装成为其他对象，就是反射机制。
好处：


可以在程序运行过程中，操作这些对象。


可以解耦，提高程序的可扩展性。



获取class的3种方式：
Class.forName(“全类名”)
将字节码加载进内存，返回Class对象

多用于配置文件，将类名定义在配置文件。读取文件，加载类

类名.class
通过类名的属性class获取

多用于参数的传递

对象.getClass()
g]]></description><category></category></item><item><title><![CDATA[JAVA中ResultSet结果集为空判断]]></title><link>https://blog.youkuaiyun.com/Save_By/article/details/104999365</link><guid>https://blog.youkuaiyun.com/Save_By/article/details/104999365</guid><author>Save_By</author><pubDate>Fri, 20 Mar 2020 22:23:57 +0800</pubDate><description><![CDATA[JAVA中ResultSet结果集为空判断


问题来自于一次事故（新手轻喷），如不想看可直接跳至方法

故事（事故）如下
刚刚接触MVC架构，视频刷的飞起，然后，（脑子：我已经会了！！！）（手：不，你不会）
Dao层与Util包都构建好后，开始写Service层，在激动的调试中（改bug中），nice，程序正常结束（插入一些数据）
结果，数据库莫得任何反应（整得我以为又是哪个精神小伙没有好好接上...]]></description><category></category></item></channel></rss>