自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 导出word模板 并放入zip进行压缩

导出word主模块 public void exportDocx() { FileOutputStream os = null; FileInputStream fs = null; String fileName = null; try { //填充结果 Map<String, Object> map = new HashMap<>(); m.

2022-02-17 16:38:01 526 1

原创 2021-10-22

登录问题的基本步骤对于单一服务器式 登录使用session对象实现登录成功之后,将用户数据放入session中,判断是否登录session.setArrtibute("user",user)session.getAttribute("user)分布式单点登录 (sso模式)session广播机制实现 2 .cookie+redis 3. tokensession 广播机制实现,session的复制cookie+redis在项目中任何一个模块进行登录,登录之后,放到俩个地方

2021-10-22 17:04:18 151

原创 算法日常练习总结

学习自图解算法 ,可以关注此公众号。字符串整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x &lt

2021-10-18 11:35:20 341

原创 关于sql执行方面

通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?XML文件中的每一个SQL标签就对应一个MappedStatement对象,这里面有两个属性很重要。id全限定类名+方法名组成的ID。sqlSource当前SQL标签对应的SqlSource对象。创建完MappedStatement对象,将它缓存到Configuration#mappedStatements中。 Configuration对象,我们知道它..

2021-09-01 09:15:13 58

原创 Mybatis源码执行的浅读

IO包下的Resource读取文件 用getResourceSteam 主要通过classLoader.getResourceAsSteam()方法读取指定的classpath路径下的Resource下面我们进行对 数据源部分的解析找到mapper文件方式

2021-08-29 14:27:46 42

原创 工厂模式

为什么需要此模式一般调用对象的时候,不想判断来实例化哪个一个,或者说实例化过程,太麻烦。简单工厂定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类。抽象类或接口:定义了要创建的产品对象的接口。具体实现:具有统一父类的具体类型的产品。产品工厂:负责创建产品对象。工厂模式同样体现了开闭原则,将“创建具体的产品实现类”这部分变化的代码从不变化的代码“使用产品”中分离出来,之后想要新增产品时,只需要扩展工厂的实现即可。使用创建不同品牌的键盘public interface Key.

2021-04-29 16:12:46 47

原创 单例设计模式

单例模式1、饿汉式(静态常量)public class A { public static void main(String[] args) { B b1 = B.getInstance(); B b2 = B.getInstance(); System.out.println(b1.hashCode()+"============="+b2.hashCode()); }}class B{ private final stati

2021-04-29 10:45:58 46

原创 类初始化实例化过程

public class Father { private int i = test(); private static int j = method(); static { System.out.println("(1)"); } Father(){ System.out.println("(2)"); } { System.out.println("(3)"); } public in

2021-04-28 09:37:24 95

原创 一文搞懂MySQL的数据类型中长度的含义

我们在数据库建表时,经常会困扰某个字段应该选择什么数据类型,以及填写什么长度。选择数据类型方面一般不会有什么大问题,但是在填写对应的长度的时候,很多人就会困扰,对应长度填写的数字到底是什么含义,以及会影响到哪些东西。笔者在翻阅网上的相关文章时,发现一大半文章写的都是错的,主要的问题在于搞混了“字符”和“字节”这两者的含义,甚至有的人觉得这就是一回事。如果对字符和字节不理解的读者,可以先阅读《一文搞懂字符和字节的含义》。本文我们通过实例来介绍MySQL的数据类型中长度的含义,读完本文能够让你在数据库建表的时.

2021-04-27 18:02:34 456

原创 数据库事务问题

TCL(Transaction Control Language)事务控制语言事务的含义:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。存储引擎:在mysql中的数据用各种不同的技术存储在文件(或内存)中。通过show engines来查看mysql支持的存储引擎。在mysql中用的最多的存储引擎有:innodb、myisam、memory等。其中innodb支持事务,而myisam、memory等不支持事务。事务的ACID属性原子性

2021-04-27 14:23:27 139

原创 数据库执行顺序和书写顺序

执行与书写顺序from 子句:左右俩表进行笛卡尔积on条件 :筛选满足条件的数据join方式:如果是inner join(内连接)正常匹配,如果是out join类型(外连接)则会添加回来一些没有的数据,比如null。因为有主表可能值都取;where条件:对不满足条件的行移除,并不能恢复;group by分组:分组后只能的到每组的一行或者聚合函数值with、cube/rollup:形成超组having筛选:对分组进行筛选select查询:筛选需要的列distinc去重:去除重复的行o

2021-04-27 09:49:52 350

原创 String特性

string 问题基本性质使用“”进行引用起来string类被final修饰,不可以被继承。实现serializable接口,支持序列化,实现comparable接口可以比较大小jdk8底层是一个char类型数组,jdk9改为了byte数组,节约空间。不可变性就是数组被final修饰了引发的问题 ,当对字符串进行重新赋值的时候,需要重新指定内存区域地址。当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。当调用String的replac

2021-04-26 11:13:48 48

原创 本地方法接口

本地方法接口在讲Java虚拟机运行时数据区中本地方法栈之前,我们先来说说运行时数据区之外的一个叫本地方法接口的东西简称JNI(Java Native Interface)简单来讲,一个Native Method就是一个java调用非java代码的接口,一个Native Method 是这样一个java方法:该方法的底层实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。在.

2020-12-31 16:06:27 173 1

原创 jvm运行时数据区--本地方法栈

本地方法栈Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理**本地方法(一般非Java实现的方法)**的调用本地方法栈,也是线程私有的。允许被实现成固定或者是可动态拓展的内存大小。(和Java虚拟机栈在内存溢出方面情况是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本.

2020-12-31 16:05:44 45

原创 java虚拟机栈-栈帧

栈帧的内部结构每个栈帧中存储着1. 局部变量表(Local Variable)2.操作数栈(Operand Stack)(或表达式栈3. 动态链接(Dynamic Linking)(或执行"运行时常量 池"的方法引用)----深入理解Java多态特性必读!!4. 方法返回地址(Return Adress)(或方法正常退出或者异常退出的定义)5. 一些附加信息其中部分参考书目上,称方法返回地址、动态链接、附加信息为 帧数据区局部变量表(Local Variable)局部变量表也被称

2020-12-31 13:35:08 237

原创 java虚拟机栈

虚拟机栈的背景由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。根据栈设计的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的堆与栈栈是运行时的单位,而堆是存储的单位栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。一般来讲,对象主要都是放在堆空间的,是运行时数据区比较大的一块栈空间存放 基本数据类型的局部变量,以及引用数

2020-12-28 21:12:27 92

原创 程序计数器

JVM运行时数据区–程序计数器JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。一个线程对应一个 JVM Stack。JVM Stack 中包含一组 Stack Frame。当 JVM 调用一个 Java 方法时,它从对应类的类型信息中得到此方法的局部变量区和操作数栈的大小,并据此分配栈帧内存,然后压入 JVM

2020-12-28 19:56:36 174

原创 类的加载器下篇

测试不同的类加载器每个 Class 对象都会包含一个定义它的 ClassLoader 的一个引用获取 ClassLoader 的途径获取当前类的 ClassLoaderclazz.getClassLoader();获得当前线程上下文的 ClassLoaderThread.currentThread().getContextClassLoader();获得系统的 ClassLoaderClassLoader.getSystemClassLoader();说明:站在程序的角度看,引

2020-12-28 19:40:13 56

原创 类加载器 - - 上篇

概述类加载器是 JVM 执行类加载机制的前提作用:ClassLoader 是 Java 的核心组件,所有的 class 都是由 ClassLoader 进行加载的,ClassLoader 负责通过各种方式将 class 信息的二进制数据流读入 JVM 内部,转换为一个与目标类对应的 java.lang.Class 对象实例。然后交给 Java 虚拟机尽心链接、初始化等操作。因此,ClassLoader 在整个装载阶段,只能影响到类的加载,而无法通过 ClassLoader 去改变类的链接和初始化行为

2020-12-28 12:10:25 113

原创 链接(验证 ,准备,解析)及初始化

###链接(Linking)验证(Verification)当类加载到系统后,就开始链接操作,验证是链接操作的第一步它的目的是保证加载的字节码是合法、合理并符合规范的验证的步骤比较复杂,实际要验证的项目也很繁多,大体上 Java 虚拟机需要做以下检查,如图所示整体的介绍验证的内容则涵盖了类数据信息的格式验证、语义检查、字节码验证,以及符号引用验证等其中格式验证会和加载阶段一起执行。验证通过之后,类加载器才会成功将类的二进制数据信息加载到方法区中格式验证之外的验证操作将会在方法区中进行链

2020-12-27 16:24:27 1063 1

原创 加载和Class介绍

加载阶段Loding理解所谓加载,简而言之就是将 Java 类的字节码文件加载到机器内存中,并在内存中构建出 Java 类的原型——类模板对象。所谓类模板对象,其实就是 Java 类在 JVM 内存中的一个快照,JVM 将从字节码文件中解析出的常量池、类字段、类方法等信息存储到模板中,这样 JVM 在运行期便能通过类模板而获取 Java 类中的任意信息,能够对 Java 类的成员变量进行遍历,也能进行 Java 方法的调用反射的机制即基于这一基础。如果 JVM 没有将 Java 类的声明信息存储起

2020-12-27 13:19:15 125

原创 数据结构

链表resursion 递归的原理;细节/*Calculating Fibonacci valueint fibo(int n){ //检查check是否要停下, if(n == 0)retutn 0; //base case o(1)else if{n ==1}else{return fibo(n-1)+fibo(n-2); }}Call stack; //全局的变量,Usage; store the local inf

2020-09-21 11:51:57 277

原创 java基础二-狂神说

分析程序1、符号 /* / 指示中间的语句是该程序中的注释。多行注释以 / 开始,以 */ 结束。单行注释以 // 开始,以行末结束java文档注释使用/** */。2、关键字 class 声明类的定义,还帮助编译器理解它是一个类的声明。3、整个类及其所有成员都是在一对大括号中(即 { 和 } 之间)定义的。它们标志着类定义块的开始和结束。4、程序从 main( ) 方法开始执行。5、关键字 public 是一个访问说明符,控制类成员的可见度和作用域。6、关键字 static 允许调用 mai

2020-08-16 21:52:20 373

原创 GraphQL的使用

GraphQL定义graphql是由Facebook创造的用于描述复杂数据模型的一种查询语言。这里查询语言所指的并不是常规意义上的类似sql语句的查询语言,而是一种用于前后端数据查询方式的规范。官网中文:https://graphql.cn/规范地址::http://spec.graphql.cn/RESTful问题RESTful是我们已经很熟悉的用于api通信的规范,如这样:GET http://127.0.0.1/user/1 #查询 POST http://127.0.0.1/user

2020-08-09 11:46:34 465 1

原创 MyBatisPlus

MyBatisPlusMyBatisPlus概述 需要的基础:把我的MyBatis、Spring、SpringMVC就可以学习这个了! 为什么要学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成!JPA 、 tk-mapper、MyBatisPlus偷懒的!xxxxxxxxxx简介是什么? MyBatis 本来就是简化 JDBC 操作的! 官网:https://mp.baomidou.com/ MyBatis Plus,简化 MyBatis !特性无侵入:只做

2020-08-07 21:45:38 187

原创 图片存储

图片存储解决方案学习自黑马:视频地址开发一个图片上传服务,需要有存储的支持,那么我们的解决方案将有:直接将图片保存到服务的硬盘优点:开发便捷,成本低缺点:扩容困难使用分布式文件系统进行存储优点:容易实现扩容缺点:开发复杂度稍大(尤其是开发复杂的功能)使用nfs做存储优点:开发较为便捷缺点:需要有一定的运维知识进行部署和维护使用第三方的存储服务优点:开发简单,拥有强大功能,免维护缺点:付费阿里云oss存储什么是oss服务?地址:视频海量、安

2020-08-07 19:55:33 464

原创 ES6

ES6新特性现在使用主流前端框架中,如ReactJS、Vue.js、angularjs等,都会使用到ES6的新特性,作为一名高级工程师而言,ES6也就成为了必修课。了解ES6ES6,是ECMAScript 6的简称,它是 JavaScript 语言的下一代标准,己于 2015 年 6 月正式发 布。它的目标是使 JavaScript语言可以用于编写复杂的的大型应用程序,成为企业级开发语言。什么是ECMAScript?前端的发展历程:web1.0时代:最初的网页以HTML为主,是纯静态的网

2020-07-28 10:09:43 245

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除