自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vuepress适配markdown相关问题

博主这里只安装markdown-it-image-lazy-loading(图片懒加载)和markdown-it-disable-url-encode(禁止url编码)两个插件,其它的可以按需自行安装不建议使用vuepress社区提供的图片懒加载插件( vuepress-plugin-img-lazy),博主实测与markdown-it-disable-url-encode存在冲突,也许是版本兼容性问题,因此最后选择使用markdown-it社区的懒加载插件代替。

2023-12-24 18:55:56 138

原创 Linux安装MySQL

Linux有一个安全模块SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。第一次启动mysql,会在日志文件中生成root用户的一个随机密码,使用下面命令查看该密码。URL添加 enabledTLSProtocols=TLSv1.2。如果想设置简单密码,需要降低Mysql的密码安全级别。关闭防火墙,并执行下面命令。

2023-12-06 21:20:40 147

原创 【数据结构】链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

2023-10-23 22:08:38 639

原创 Docker部署Canal

以博主当时部署时间节点为准,实测v1.1.5是比较稳定的,最新的v1.1.6部署时会出现许多奇奇怪怪的BUG,待后续稳定后可以升级。

2023-02-08 19:59:18 460 1

原创 Android组件——Service

因此,我们编写的代码实际上是穿插在主线程运行的,如果我们插入的代码比较耗时,就会阻塞UI线程上其他逻辑的执行,从而造成页面卡顿。所以,执行耗时的操作,需要创建新的线程执行。Service是一个能够在后台执行长时间运行的操作应用程序组件,不提供用户界面,应用在后台启动一个Service运行,即使用户切换到另一个应用此Service业务继续运行。Android是单线程的模型,我们创建的Service、Activity均是在一个主线程处理,即UI线程。Handler是通过消息队列进行通信的机制。

2023-01-11 23:19:47 369

原创 RabbitMQ消息确认机制

保证消息不丢失,可靠抵达,可以使用事务消息,性能下降250倍,为此引入确认机制。

2022-08-26 21:37:50 731

原创 解决SpringCloud集成Eureka后返回xml格式数据

添加 Eureka 客户端依赖后返回的是 XML 格式的数据而不是 JSON 格式的数据。

2022-08-16 12:44:09 217

原创 Slice切片

一个未指定大小的数组来定义切片,切片不需要说明长度。

2022-07-26 20:52:31 136

原创 Go结构体

结构体定义需要使用type和struct语句。语句定义一个,结构体中有一个或多个成员。语句设定了。

2022-07-26 15:40:44 165

原创 Window下开启Tomcat的JMX监控

代码】Window下开启Tomcat的JMX监控。

2022-07-26 15:34:36 607

原创 虚拟机类加载机制

在加载阶段,Java虚拟机需要完成一下三件事情总的来说,加载阶段是将代码数据加载进内存中,是获取类的二进制字节流的动作在在Java虚拟机中,类的唯一性是由类加载器实例以及类的全名一同确定的。即便是同一串字节流,经由不同的类加载器加载,也会得到两个不同的类。在大型应用中,往往借助这一特性,来运行同一个类的不同版本。加载阶段结束后,Java虚拟机外部的二进制字节流就按照虚拟机所设定的格式存储在方法区中了,方法区中的数据存储格式完全由虚拟机自行定义。...

2022-07-24 17:59:34 181

原创 null安全与异常

IllegalArgumentException("操作不当")

2022-07-22 21:13:59 538

原创 Kotlin——函数

简略写法如果一个函数的lambda参数排在最后,,或者是唯一参数,那么括住lambda参数的一对圆括号可以省略"hello"}

2022-07-22 15:48:32 568

原创 从SimpleKV到Redis

对于键值数据库而言,基本的数据模型是 key-value 模型。从使用的角度来说,不同 value 类型的实现,不仅可以支撑不同业务的数据需求,而且也隐含着不同数据结构在性能、空间效率等方面的差异,从而导致不同的 value 操作之间存在着差异。基本操作无外乎增删改查。键值对的存储是一个非常重要的设计问题:键值对保存在内存还是外存?如何进行设计选择,我们通常需要考虑键值数据库的主要应用场景SimpleKV 需要查找所要操作的键值对是否存在,这依赖于键值数据库的索引模块。索引的作用是让键值数据库根据 key

2022-06-22 23:48:41 139

原创 455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。该题是典型的贪心算法思想,即用大尺寸的饼干来满足大胃口值得孩子,使得局部最优,从而达到全局最优...

2022-06-20 21:00:09 65

原创 基于SpringBoot实现发送邮件功能

一、邮箱设置二、SpringBoot整合JavaMail1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.6.7</version>

2022-05-13 17:06:11 317

原创 Mysql——存储引擎

一、MySQL体系结构二、存储引擎(一) 概念MySQL中的数据用各种不同的技术存储在文件或内存中。这些技术中的每一个技术使用不同的存储机制、索引技巧、锁定水平,最终提供不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及相关功能再MySQL中称作存储引擎。存储引擎是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系型数据库中数据是以表的形式存储的,所以存储引擎也称为表类型(即存储和操作此表的类型)。总

2022-02-09 22:37:14 2849 2

原创 MySQL——多表操作

一、多表关系(一) 一对一实现: 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)(二) 一对多(多对一)实现: 在多的一方建立外键,指向一的一方的主键(三) 多对多实现: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键二、外键约束MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。外键用来建立主表与从表的

2022-02-09 14:36:12 2631

原创 File类

一、概述在电脑上查找任何文件的时候,都是通过路径和文件名来查找的。在实际开发中,浏览器与服务器之间经常需要进行IO操作,比如文件的上传和下载。 要想实现io操作,就必须知道硬盘上的文件的表示形式。java就给我们提供了这个File类,用来表示文件。换句话来说,File类是文件和路径名的抽象表示形式。二、构造方法File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例。File(String pathname)通过将给定的路径名字符串转换

2022-02-07 21:50:41 128

原创 MyBatisPlus——条件构造器之select细节

在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段细节使用select进行sql语句拼接时,不会识别在实体类中属性对应的操作。当数据库表中的字段名与实体类对象属性名不一致时...

2022-01-29 17:28:18 1690

原创 MySQL——约束

一、MySQL约束(一) 概念(1) 约束实际上就是表中数据的限制条件(2) 约束英文:constraint(二) 作用表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。二、主键约束(一) 概念(1) 主键约束的关键字是:primary key(2) MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在RDBMS中尽快的找到某一行(3) 每个表最多只允许一个主键(4) 主

2022-01-27 17:17:16 2460

原创 MyBatisPlus——CRUD

一、BaseMapper——通用CRUD接口通用 CRUD 封装BaseMapper (opens new window)接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器二、插入操作(一) 方法定义(二) @TableId 设置id的生成策略数据已经写入到了数据库,但是,id的值不正确,我们期望的是数据库自增长,实际是MP生成了id的值写入到了数据库使用@TableId设置数据库id自增(三) @TableField(1) 对

2022-01-24 10:19:38 3313

原创 Javase——异常

一、概述异常就是java程序出现的不正常的情况。(程序中出现的问题)二、由来问题在现实生活中也是一个具体的事物,所以也可以用 java 类的形式来描述,封装成对象。其实就是就ava对不正常情况的描述。三、异常的分类(一) Error(错误)不处理。(二) Exception(异常)(1) 编译期异常:不是RuntimeException的异常,必须改代码。(2) 运行期异常:RuntimeException以及所有的子类。大部分原因都是因为代码不够严谨导致,很多时候都可以通过改进代码来

2022-01-21 22:35:50 642 1

原创 Spring注解驱动开发——AOP常用注解

一、用于开启注解AOP支持的@EnableAspectJAutoProxy(一) 作用表示开启spring对注解aop的支持。它有两个属性,分别是指定采用的代理方式和 是否暴露代理对象,通过AopContext可以进行访问。(三) 属性proxyTargetClass: 指定是否采用cglib进行代理。默认值是false,表示使用jdk的代理。exposeProxy: 指定是否暴露代理对象,通过AopContext可以进行访问。(四) 细节(1) proxyTargetClass当使用J

2022-01-10 00:16:36 1630

原创 Spring注解驱动开发——IOC的常用注解

一、用于注解驱动的注解@Configuration(一) 作用它是在spring3.0版本之后加入的。此注解是spring支持注解驱动开发的一个标志。表明当前类是spring的一个配置类,作用是替代spring的applicationContext.xml。但其本质就是@Component注解,被此注解修饰的类,也会被存入spring的ioc容器。(二) 属性value:用于存入spring的Ioc容器中Bean的id。(三) 本质就是@Component注解,被此注解修饰的类,也会被存入s

2022-01-07 20:43:45 1383

原创 Spring——基于注解的IOC配置

,,

2022-01-04 11:53:23 169

原创 Spring——IOC

一、由传统new到IOC思想二、控制反转IOC控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。作用: 削减计算机的耦合案例id:获取时的唯一标识class:反射创建对象时所需的全限定类名

2022-01-03 23:06:56 67

原创 Spring——程序间的耦合

一、程序耦合耦合:程序间的依赖关系,包括类之间的依赖和方法间的依赖以一个jdbc工程为例通过上图可以发现,采用硬编码的方式,当项目工程中未引入mysql驱动依赖时,程序在运行期会报错,说明程序存在编译期依赖,耦合度较高,在实际开发中,常常不采用这种方式。耦合分类解耦:降低程序间的依赖关系,在实际开发时,做到编译期不依赖,运行期依赖解耦思路: 使用反射创建对象,而避免使用new关键字 通过读取配置文件来获取要创建的对象的全限定类名...

2022-01-02 09:25:44 363

原创 Mybatis——动态SQL

一、if标签当不确定有多少个参数条件,此时可以用if标签进行解决IUserDao接口IUserDao.xml运行结果二、where标签如果含有多个传入参数,那么多层if标签嵌套就显得很麻烦。所以使用where标签来解决。IUserDao.xml运行结果三、foreach标签在mybatis中实现下列查询语句foreach标签详解实现步骤(1) 在QueryVo实体类中添加ids属性(2) 在IUserDao接口中添加对应方法(3) IUserDao.xml

2021-12-29 00:03:35 496

原创 Mybatis——事务

mybatis是通过sqlsession对象的commit()方法和rollback()方法实现事务的提交和回滚设置自动提交注意:常用手动提交事务的,很少会自动提交(线程不安全)

2021-12-27 06:07:30 104

原创 Mybatis——连接池

一、概述在实际开发中都会使用连接池,因为连接池可以减少获取连接所消耗的时间。队列特性:先进先出,正好可以确保拿到的连接对象就是刚刚自己创建的二、mybatis中的连接池配置的位置主配置文件中的dataSoirce标签,type属性表示采用何种连接池方式type属性的取值POOLED采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现UNPOOLED采用传统的获取连接的方式,虽然也实现了javax.sql.DataSour

2021-12-27 05:57:58 2526

原创 Mybatis主配置文件

一、properties标签mybatis可以使用properties标签引入外部的properties配置文件的内容参数resource:引入类路径下的资源url:引入网络路径或者磁盘路径下的资源二、typeAliases标签和package标签typeAliases:别名处理器,为java类型起别名typeAlias标签为某个java类型起别名参数type:指定要起别名的类型全类名,默认别名就是类名小写alias:指定新类名package标签为某个包下的所有类批量起别名

2021-12-27 05:02:10 336

原创 Mybatis——参数深入

一、Mybatis的参数1. parameterType(输入类型)该参数表示一个参数类型,但如果有多个参数的话,就不能使用该参数了。2. 传递简单类型3. 传递pojo对象Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称OGNL表达式全称Object Graphic Navigation Language(对象图导航语言),它是通过对象的取值方法来获取数据。在写法上把get省略了mybatis中直接写username,而不用user.:因

2021-12-26 16:22:44 1815

原创 Mybatis——CRUD(XML版)

增新增用户id的返回值新增用户后,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,因为id是由数据库的自动增长来实现的,所以就相当于要在新增后将自动增长aotu_increment的值返回。selectKey 会将 SELECT LAST_INSERT_ID()的结果放入到传入的bean的主键里面selectKey参数说明(1) keyProperty:对应bean中的主键的属性名(2) keyColumn:数据库中对应的列名(3) resultType:返

2021-12-25 11:46:41 720

原创 Java泛型

概述(1) 是一种把类型明确的工作提前到创建对象或者调用方法的时候就去明确的一种数据类型。(2) 参数化类型,把类型作为参数一样传递。(3) 格式:<数据类型>,数据类型只能是引用类型(4) 好处:把运行期异常提前到了编译期避免了类型转换减少部分警告(5) 泛型是jdk1.5 之后才有的泛型的应用(1) 看API,如果发现类,接口,方法上有类似,这样的内容,就表示可以使用泛型,一般来说用的最多的地方是集合。(2) 泛型类格式:public class 类名<泛型

2021-12-16 17:05:01 70

原创 时间日期类

Date一、概述Date表示特定的时间。但是Date类中很多方法都被DateFormat和 Calendar类替换了。二、构造方法Date()获取当前系统时间创建日期对象。Date(long date)根据指定的毫秒值创建日期对象。毫秒值表示1970年1月1日00:00:00.000 GMT之后的毫秒数。三、常用成员方法long getTime()获取毫秒值void setTime(long time)DateFormat一、概述DateFormat是日期/时间格式化子类的抽象类

2021-12-10 15:39:49 308

原创 BigInteger与BigDecimal

BigInteger一、概述可以处理超过int范围内的数据二、构造方法BigInteger(String val)将BigInteger的十进制字符串表示形式转换为BigInteger。三、成员方法BigInteger add(BigInteger val)返回值为 (this + val) 。BigInteger subtract(BigInteger val)返回值为 (this - val) 。BigInteger multiply(BigInteger val)返回值为 (t

2021-12-10 13:23:41 527

原创 System类

概述System类包含几个有用的类字段和方法。 它不能被实例化。成员变量static PrintStream err“标准”错误输出流。static InputStream in“标准”输入流。static PrintStream out“标准”输出流。常用成员方法static void gc()运行垃圾回收器。static long currentTimeMillis()返回当前时间(以毫秒为单位)。static void exit(int status)终止当前运行的Jav

2021-12-09 11:41:34 175

原创 Random类

概述(1)该类的实例用于生成随机数(2)该类使用48位种子,如果使用相同的种子创建两个Random Random , 并且对每个实例进行相同的方法调用序列,则它们将生成并返回相同的数字,即指定系统的毫秒值相同,则生成的随机数相同构造方法Random() 默认种子 用的是当前系统时间的毫秒值创建一个新的随机数生成器。Random(long seed) 指定种子使用单个 long种子创建一个新的随机数生成器。常用方法int nextInt()返回int范围内的随机数int nex

2021-12-09 11:30:31 62

原创 Math类

一、概述Math类包含执行基本数字运算的方法二、成员变量static double Edouble值比其他任何一个都更接近 e ,自然对数的基数。static double PIdouble值比任何其他的更接近 pi ,圆周长与其直径的比率。三、常用成员方法(详见API文档)static int abs(int a)static double ceil(double a) 向上取整static double floor(double a) 向下取整static double po

2021-12-09 11:22:57 252

空空如也

空空如也

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

TA关注的人

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