自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis连接池技术

连接池技术:连接池是什么:存储连接的容器作用如果没有连接池,那么每次都执行SQL语句都会创建connection连接,会浪费时间。影响程序的性能。提前创建一些连接,存储到连接池中,使用的时候从连接池中获取连接即可。常用的连接池C3P0连接池DBCP连接池Druid连接池(阿里)连接池最后要归还MyBatis连接池的分类MyBatis内置了连接池技术,dataSource标签的type属性有2个取值:mybatis支持三种内置的数据源类型:POOLED:实现dataSource

2021-09-03 15:34:02 393

原创 #占位符和$拼接符

区别:#{ } 解析为一个 预编译语句(prepared statement)的参数占位符 ?作为参数不作为指令去执行,能防止sql注入;${ } 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换,不能防止sql注入sql 预编译:是数据库驱动在发送 sql 语句和参数给 DBMS 数据库管理系统之前对 sql 语句进行编译,这样 DBMS 执行 sql 时,就不需要重新编译。动态解析:mybatis 在调用 connection 进行 sql 预编译之前,会对s

2021-09-03 14:24:45 319

原创 浅谈JVM——对象创建

对象的创建

2021-08-31 11:00:27 193

原创 HashMap 1.7和1.8添加流程

1.8 HashMap声明构造函数此处仅用于接收初始容量大小(capacity)、加载因子(Load factor),但仍无真正初始化存储数组table此处先给出结论:真正初始化哈希表(初始化存储数组table)是在第1次添加键值对时,即第1次调用put()时。添加数据计算Hash值、* JDK 1.7 做了9次扰动处理 = 4次位运算 + 5次异或运算 * JDK 1.8 简化了扰动函数 = 只做了2次扰动 = 1次位运算 + 1次异或运算判断数组是否已经初始化,

2021-08-30 21:39:29 361

原创 浅谈并发—— synchronized的实现原理

目 录Monitor监视器synchronized锁升级**偏向锁轻量级锁锁膨胀自旋优化(占cpu,适合多核,jdk7之后不能控制是否自旋)Monitor监视器每个对象都可以关联一个Monitor对象(操作系统提供)过程obj与monitor对象靠指向monitor对象指针地址(存在obj的markword中,30位)关联Thread2占用锁成为Ower,其他的线程先阻塞等待刚开始 Monitor 中 Owner 为 null当 Thread-2 执行 synchroni

2021-08-27 00:50:53 316

原创 浅谈JVM——OutOfMemoryError异常

溢出

2021-08-27 00:30:56 262

原创 浅析ThreadLocal

https://juejin.cn/post/6844904151567040519#heading-15

2021-08-27 00:02:34 345

原创 创建线程3种方式

1.继承Thread类:(1)创建一个类继承Thread类,重写run()方法,将所要完成的任务代码写进run()方法中;(2)创建Thread类的子类的对象;(3)调用该对象的start()方法,该start()方法表示先开启线程,然后调用run()方法;public class Threads {public static void main(String[] args) { Tssdf tssdf = new Tssdf(); ts ts

2021-08-20 20:53:47 124

原创 动态规划(一维)——爬楼梯

力扣 70 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pr

2021-08-20 00:56:37 332

原创 浅谈JVM——类加载机制

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一 大步。类加载过程加载——>>连接{验证、准备、解析}——>>初始化——>使用——>卸载加载:1)通过一个类的全限定名来获取定义此类的二进制字节流。2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3)在堆内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口验证:这一阶段的目的是确保Class文件的字节流中.

2021-08-18 23:53:54 189

原创 垃圾收集器——CMS收集器

CMS收集器CMS( Concurrent Mark-Sweep)是获得最短回收停顿时间为目标的的垃圾回收器。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。老年代应用场景:目前很大一部分的Java应用集中在互联网网站或者基于浏览器的B/S系统的服务端上,这类应用通常都会较为关注服务的响应速度,希望系统停顿时间尽可能短。算法:标记-清除算法流程初始标记仅仅只是标记一下GCRoots能直接关联到的对象,速度很快;(需要停顿)Stop

2021-08-18 00:17:25 239

原创 浅谈JVM(一)——运行时数据区域

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-08-17 23:19:28 322

原创 java error与exception

Throwable分为Error,ExceptionError:程序无法处理的系统错误,编译器不做检查;此类错误一般表示代码运行时 JVM 出现问题。比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误。此类错误发生时,JVM 将终止线程Exception:程序可以处理的异常,捕获后可能恢复;又分为检查性异常和非检查性异常。两个根本的区别在于,检查性异常 必须在编写代码时,使用try catch捕获(比如:IOException异常)。非检查性异常

2021-08-16 00:46:01 135

原创 final、finally、finalize作用

finalize它是在object类中定义的,因此所有的类都继承了它,是一个对象将要被垃圾处理前可以做的事情,可以趁机逃脱被垃圾处理。一个对象真正的死亡,要经历两次标记过程:如果对象在进行可达性分析后发现没有与GCRoots相连接的引用链,那它将会被第一次标记,随后进行一次筛选:此对象是否有必要执行finalize()方法。假如对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,那么虚拟机将这两种情况都视为“没有必要执行”。如果这个对象被判定为确有必要执行fina

2021-08-16 00:18:02 181

原创 sql开窗函数

group by 只能默认保留第一行数据,如果要保留多个值需要搭配max,min等使用,或者使用开窗函数# 简介> 开窗函数简介:与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口。书写格式function() over()function()按照功能划分,可以把MySQL支持的窗口函数分为如下几类:序号函数:row_number() / rank() / den

2021-08-14 22:20:49 247

原创 Cookie、Session、token和JWT

Http协议无状态性:不记录用户行为状态,每次请求独立。而在要求客户端和服务器动态交互的Web应用程序中,就需要保持HTTP连接状态。Cookie:通过客户端保持状态用户提交自己个人信息到服务器,服务器返回相应的超文本和个人信息(存在Resonse Header);客户端收到后会存放在自己这里,然后下次请求把Cookie放到Request Header里向服务器发送请求Session:通过服务器保持状态服务端为客户端开辟的空间,保存用于保持状态的信息。在Java中是通过调用HttpServ

2021-08-14 21:50:39 163

原创 Java动态代理

1.代理概述定义:代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。目的:通过代理对象的方式间接的访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性; 通过代理业务对原有业务进行增强java当中有三种方式来创建代理对象:静态代理,基于jdk(接口)的动态代理,基于CGLLIB(父类)的动态代理。2.动态代理代理类并不是在Java代码中定义的,而是在运行时

2021-08-14 12:46:46 138

原创 java反射——初识

反射简述:在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性。反射使用public class User2 { public String name; private int age; public User2() { System

2021-08-13 23:00:37 151

原创 重写equals方法一定要重写HashCode方法

关系原因

2021-08-13 21:32:51 425

原创 Java类加载顺序

先导知识:类加载时,从上往下先执行静态初始化语句,初始化块创建类对象时,从上到下先执行非静态初始化语句,初始化块,最后执行构造方法;静态的资源属于类所有,在类加载时就要分配内存空间。而非静态资源属于对象所有,只有在实例化时才会分配内存空间;先类加载后创建对象在类加载过程中遇到对象创建,则按照对象创建执行顺序。初级:已经标注执行顺序:类加载–静态变量、静态方法–>创建类对象–非静态变量 / 非静态代码块 - - - > 构造器public class Strings {

2021-08-13 00:45:04 300

原创 SpringBoot_@Valid注解实现变量验证

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言以手机号格式的校验为例:包括是否为空,位数是否为11位,和手机号数字格式一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsim

2021-08-12 22:18:32 812

原创 关于Java方法参数 按值传递

基本数据类型的传递:将值拷贝给方法,但两个值的的地址值不同;方法在主函数调用弹栈后,拷贝的值不在使用,对基本数据不产生影响

2021-08-12 21:55:41 347

原创 关于Integer和int的==比较以及“128陷阱”

关于Integer和int的==比较:对于int基本类型,==比较的是值对于Integer类型比较的是内存地址,相同的引用:new一个包装类,地址改变,一定不会相等;注意看注释 public static void main(String[] args) { Integer a=100; int a1=100; System.out.println("a==a1 "+ (a==a1)); Integer b= Integer.

2021-08-11 22:39:54 954

原创 VUE短信验证码登录

前期准备SpringBoot集成腾讯云短信<template> <el-form :model="phoneForm" :rules="phoneRules" ref="phoneForm" label-position="left" label-width="0px" class="demo-ruleForm login-container1"> <el-form-item prop="phone"> <e

2021-08-10 17:59:17 949

原创 @Autowired和@Resource、@Qualifier

默认情况下,@Autowired按类型装配Spring Bean。如果容器中有多个相同类型的bean,则框架将抛出NoUniqueBeanDefinitionException, 以提示有多个满足条件的bean进行自动装配。程序无法正确做出判断使用哪一个,通过将@Qualifier注解与我们想要使用的特定Spring bean的名称一起进行装配,Spring框架就能从多个相同类型并满足装配要求的bean中找到我们想要的,避免让Spring脑裂。我们需要做的是@Compo...

2021-08-10 16:50:02 356

原创 Ajax之async异步属性 小坑(附:实现checkbox单选样式)

项目场景:实现样式JavaScript为动态添加的checkbox复选框实现变成单选的功能问题描述及分析:ajax动态加载checkbox系列复选框无法绑定单选点击事件,无法实现单选功能首先检查是否执行进入脚本内部,console.log检查发现先进入单选方法,然后执行加载复选框,并且未进入 $(this).click(function(){ })故考虑应改变执行顺序,先执行加载出复选框。单纯改变代码位置是没有用的,应当想到ajax异步执行的问题ajax文档async (de

2021-08-10 12:17:46 201

原创 userAgent区分浏览器

User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。作用:如何获取在 ASP.NET 中使用 Request.Header[“User-Agent”] 得到浏览器的 User Agent,也可以使用 Request.UserAgent 来获取;Java 中使用 request.getHeader(”User-Agent”) 来获得;PHP 中相应使用:$_SERVER[HTTP_USER_AGENT];

2021-08-09 23:22:28 521

原创 source 1.5 中不支持 diamond 运算符

原因分析:该异常的常见情况有2个:1、JDK版本不一致,比如IDE中配置的JDK版本不一致。2、Maven配置错误,执行Maven打包的JDK版本不一致。解决方案:

2021-08-09 18:58:00 106

原创 JSON.parse和JSON.stringify

JSON.parse:将JSON字符串转换成对象,字符串必须符合JSON格式,键都必须使用双引号,故外面引号用单引号;如果值是字符串也用双引号JSON.parse(text[, reviver])reviver 函数:解析值本身以及它所包含的所有属性,会按照一定的顺序(从最最里层的属性开始,一级级往外,最终到达顶层,也就是解析值本身)分别的去调用 reviver 函数。如果 reviver 返回 undefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属

2021-08-07 10:23:32 488

原创 thymeleaf页面中用Layui数据表格(小坑)

问题描述:Layui数据表格,在官方文档中如果直接复制用到thymeleaf页面使用,会报错原因分析:[[…]]之间的表达式在Thymeleaf被认为是内联表达式,解决方案:可以在cols的后面换行或者在script标签里 th:inline=“none” 就可以了...

2021-08-04 09:41:21 777

原创 spring boot简易集成腾讯云短信功能

腾讯云短信功能集成前期准备代码实现必要参数主要针对个人用户练习,国内短信前期准备查看腾讯云短信文档官方文档:腾讯云短信文档按照步骤操作:1.注册腾讯云账号后2.短信快速入门步骤二:创建签名:首先查看短信审核规范针对个人可以提前准备订阅号,方便快捷接下来创建签名,等待审核步骤三:创建正文模板:正文模板审核短信内容可以选择,使用标准模板接下来等待审核快速入门中,步骤四是发送短信,可以选择在控制台发送短信,但审核时间较长;我们选择API实现。代码实现通过 SDK 使

2021-07-30 17:12:41 654

原创 解决问题:long型数据精度丢失

在数据库中id设置为bigint且自增在java中对应long型数据而在前台传输过程中键值过长导致精度丢失解决办法1:先在实体类id上加上注解 @TableId(type = IdType.AUTO)id超长,点击设计表查看选项,发现自动递增数字变得很长;这个时候需要右键表名选择截断表,让图2自动递增数值...

2021-07-13 11:32:24 3942

原创 SpringBoot之Thymeleaf笔记

SpringBoot动态页面部署需要引入Thymeleaf 组件才能访问整合Thymeleaf 依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>配置文件spring: thymeleaf: cac

2021-07-12 21:46:25 93

原创 Python自学笔记整理

**python自学**杂记python基本类型功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入杂记你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇

2021-06-13 22:00:27 212

空空如也

空空如也

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

TA关注的人

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