自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis学习二

通常我们会采用先更新数据库再删除Redis缓存, 但是依然会存在在更新期间读取到旧值的情况, 还会存在删除缓存失败问题, 此时可引入消息中间件将需要更改的数据推送到MQ, 再通过MQ去对Redis进行删除, 这样也不能保证强一致性, 只是一个比较折中的方案。我们可以对存入缓存的数据设置过期时间, 所有的写操作以数据库为准, 对缓存的操作只是尽最大努力即可, 也就是说数据库写成功缓存更新失败, 那么只要达到过期时间, 则后面的读请求自然会从数据库读取新值然后回填缓存,达到一致性, 要以数据库写入库为准。

2025-03-26 11:21:16 657

原创 MySQL-索引的使用

关于索引的使用 比方说一个表给3个字段a, b, c 建立联合索引使用索引的几种情况, 即查询条件中使用到a, b, c三个条件此时使用全值匹配三个字段都会用到具体是先查找a字段匹配的缩小查询范围,再在所有等于a字段的范围去查找等于b字段的, 随后再在等于a和b字段的范围内查找等于c字段的。

2025-03-20 17:01:32 771

原创 JVM学习-JMM、垃圾回收器

程序计数器当前线程所执行字节码的行号指示器, 字节码解释器通过改变行号指示器的值来选取下一条即将执行的字节码指令虚拟机栈每个方法执行时, 虚拟机都会创建一个栈帧, 用于存储局部变量, 操作数栈, 动态连接, 方法出口等信息本地方法栈与虚拟机栈类似用于本地(native)方法堆唯一目的: 存放对象的区域 也称为GC堆方法区线程共享区域, 用于存储已被虚拟机加载的类型信息, 常量, 静态变量即时编译器编译后的代码缓存等数据直接内存。

2025-02-23 00:07:23 466

原创 设计模式-工厂模式

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,将创建对象的实例的过程从主代码中抽离出来,以提高代码的可读性和可维护性。

2024-06-23 15:18:51 923

原创 MySQL同步表结构

MySQL对比数据库表结构差异,生成加字段的DDL

2023-03-08 15:46:52 818

原创 IDEA常用插件、设置及快捷键

我们在日常开发中使用到最多的开发工具莫过于IDEA,这一款非常好用的Java集成开发环境。工具很强大有许多的使用技巧如更契合开发习惯的配置、IDEA常用的快捷键以及各式各样强大的插件,掌握这些技巧会使我们的工作效率得到极大提升,下面将介绍一些IDEA实用的使用技巧。

2022-12-01 17:58:24 2910

原创 Linux查看日志常用命令

grep命令是个强大的文本搜索工具grep命令的具体命令的语法格式为grep[参数]“关键字”[文件/目录]参数。

2022-07-14 22:49:08 378

原创 Java8 Stream collect(Collectors.toMap()) 用法

Collectors.toMap 用法在我们实际开发过程中经常使用到将List 转为Map的过程,在Java8 中Stream提供简便开发的方式,三个重载的方法两个参数public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,

2021-07-21 20:21:46 4080

原创 JDK源码阅读--HashMap(JDK1.8、Java11)

这里写目录标题基本介绍几个内部常量默认初始长度默认负载因子转换为树的阈值收缩为链表的阈值转换为树节点数的阈值具体分析基本介绍首先要知道HashMap使用到哪些数据结构,JDK1.8中HashMap实现依赖数组,单链表,红黑树实现几个内部常量默认初始长度/** * The default initial capacity - MUST be a power of two. * 默认初始容量 - 必须是 2 的幂。 */static final int DEFAULT_INITIAL_

2021-07-19 14:28:06 498 1

原创 Docker

这里写目录标题基本命令启动Docker停止Docker重启Docker状态容器使用获取镜像启动容器启动已停止运行的容器首先查看所有容器找到对应id启动一个已经停止的容器后台运行停止正在运行的容器重启容器进入容器基本命令启动Dockerservice docker start停止Dockerservice docker stop重启service docker restartDocker状态docker stats 用法:docker stats [选项] [容器…]显示容器资源

2021-07-15 17:19:49 115

原创 Java8新特性--时间日期类

Java8时间日期类常用APIpublic void testLocalDateTime() { // 时间格式化 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println("现在日期时间: " + df.format(now));

2021-06-22 17:37:54 151

原创 Feign报错

Feign报错feign.codec.DecodeException: Error while extracting response for type [com.telewave.atwparuledefinition.response.ResponseVO<java.util.List<com.telewave.twms.domain.combat.dto.WarningLabelDto>>] and content type [application/json;charse

2021-06-17 20:37:12 1003

原创 Redis学习

RedisRemote Dictionary Server(远程字典服务器),是一个用C语言编写的,开源的,基于内存并支持持久化的,高性能NoSQL数据库.Redis数据大部份时间都是存储内存中,适合存储频繁访问,数据量小的数据Redis的特点1. 支持数据持久化Redis支持数据的持久化,可以将数据保存到磁盘中,重启的时候可以将数据再次加载进行使用2.支持多种数据类型Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,hash,zset等数据结构的存储3.支

2021-04-14 20:44:02 257

原创 数据结构---栈

栈定义:栈是一个先入后出(First In Last Out) 的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表,允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底根据以上定义可知,最先放入栈中的元素在栈底,最后放入栈中的元素在栈顶,而删除元素刚好相反,最后删除的元素在栈底,最先删除的元素在栈顶入栈示意图出栈示意图...

2021-04-14 20:23:45 107

原创 数据结构---线索二叉树

线索二叉树基本介绍n个节点的二叉链表中含有n+1[2n-(n-1)]个空指针域,利用二叉树中的空指针域,存放指向该节点在某种遍历次序 下的前驱和后继节点的指针(这种附加的指针称为"线索")这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树根据线索的不同,线索二叉树可分为前序线索二叉树 ,中序线索二叉树, 后序线索二叉树三种一个节点的前一个节点,称为前驱节点一个节点的后一个节点,称为后驱节点...

2021-04-08 22:21:13 152

原创 数据结构---二叉树

二叉树定义:一个节点下最多有两个子节点在二叉树的第i层上至多有2^(i-1)个节点满二叉树:3. 所有叶子结点都在最后一层4. 且满足节点个数n和层数k的关系为:n=2^k - 1完全二叉树叶子节点只存在最后两层二叉树的遍历:先序遍历:(1) 访问根节点(2)先序遍历左子树(3)先序遍历右子树中序遍历(1) 中序序遍历左子树(2)访问根节点(3)中序遍历右子树后序遍历(1) 后序序序遍历左子树(2)后序遍历右子树(3)访问根节点其中先中后表示访问父节点的

2021-04-07 21:58:41 245

原创 算法---排序算法

算法算法的实现复杂度:事后统计的方法:这种方法可行,但是有两个问题:1.要想对设计的算法的运行性能进行评测,需要实际运行该程序 2.所得时间的统计量依赖于计算机的硬件,软件等环境因素事前估算的方法:通过分析某个算法的时间复杂度来判断那个算法更优时间频度:一个算法花费的时间与算法中语句的执行次数成正比,哪个算法中语句的执行次数多,它花费的时间就多,一个算法中的语句执行次数称为语句频度或时间频度.忽略常数项忽略低次项忽略系数算法的时间复杂度一般情况下,算法中的基本操作语句的重

2021-04-06 20:31:20 94

原创 数据结构---线性表的顺序表(动态数组)

定义:线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素.结构如下:其中

2021-03-30 14:09:59 210

原创 Servlet请求过程

Servlet请求流程学习J2EE理解servlet处理请求的流程(第一个Servlet程序HelloWorld版本)当我们在浏览器输入url地址进行请求时服务端在接收请求的整个流程如下图所示其中分请求是否为第一次请求第一次请求:①.解析请求信息,解析/one/hello;上下文路径(环境):/one.资源名称:/hello.②.根据上下文路径/one去Tomcat根/conf下找到server.xml文件获取所有的元素再判断哪一个元素的path属性值为/one,接着找到的docBase属

2021-03-28 22:58:28 416

原创 数据结构---队列

队列介绍队列是一个有序列表,可以用数组或链表来实现遵循先进先出的原则.即:先存入队列的数据,要先取出.后存入的数据要后取出

2021-03-25 20:39:41 88

原创 Java基础--反射

反射(Reflection)Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API获取任何类的内部信息,并能直接操作任意对象的内部属性及方法加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息.我们可以通过这个对象看到类的结构.这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射正常方式: 引入需要的"包类"名称 >&gt

2021-03-15 22:28:41 95

原创 数据结构--链表

链表(LinkedList)介绍链表是有序的列表,但是它在了内存中存储是按照下图存储的(物理结构)链表有如下特点:链表是以节点的方式来存储的每个节点包括data域和next域:指向下一个节点;双向链表还包括prev域如图:我们发现链表的各个节点不一定是连续存储的链表分带头节点的链表和没有带头节点的链表,根据实际需求来确定带头节点的单链接...

2021-03-15 20:21:47 116

原创 笔试题

2021-03-12 16:10:16 132

原创 Java IO学习之IO模型NIO-1

Java NIO基本介绍java nio 全称Java Non-blocking IO是JDK提供的全新API,从JDK1.4开始改进一系列输入/输出的新特性被称为NIO(New IO 是同步非阻塞的)NIO的相关类都被放在java.io包下,并且对原有的java.io中的很多类进行改写NIO有三大核心部分:Channel(通道),Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区(buffer)或者面向块编程的.数据读取到它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加

2021-02-22 19:01:52 16

原创 Java IO学习之IO模型--BIO

Java BIOJava BIO就是传统的Java IO编程,其相关的类和接口都在java.ioBIO(blocking io):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务端就需要启动一个线程进行处理,如果这个线程不做任何事那么会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)BIO方式适合连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前唯一的选择,程序简单易理解.工作原理图BIO编程简单流程:服

2021-02-22 15:46:29 12

原创 多线程学习--JDK5.0新增创建线程方式

新增方式一: 实现Callable接口与使用Runnable接口相比,Callable接口功能更强大相比run()方法,Callable允许有返回值方法可以抛出异常支持泛型的返回值需要借助FutureTask类,比如获取返回结果Future接口:可以对具体Runnable,Callable接口的执行结果进行取消,查询时候完成,获取结果等FutureTask是Future接口唯一的实现类FutureTask同时实现了Runable,Future接口它即可以作为Runable被线程执行又可以

2021-01-21 14:37:42 119

原创 多线程学习---线程通信

线程的通信案例:两个线程交替打印1-100的数/** * 线程通信例子两个线程打印1-100, 线程1,线程2交替打印 * @author ycr * @date 2021/1/19 */public class CommunicationDemo { public static void main(String[] args) { Number number = new Number(); Thread t1 = new Thread(number,

2021-01-20 15:55:29 11

原创 多线程学习---线程基础

一丶线程创建Java创建线程的方式主要是有继承Thread类和实现Runable接口年重要方式还有使用线程池的方式实际上也是上面两种方式的变种方式一:继承Thread类创建一个继承于Thread类的子类重写run方法 --> 此线程需要做的事写在run方法中创建Thread类之类的对象通过此对象调用start方法/** * @author ycr * @date 2021/1/12 */public class ThreadDemo { public static

2021-01-19 14:50:35 19

原创 面试题

面试题1.Set和List区别2.Set遍历时间复杂度3.链表查找时间复杂度4.统计数组中数字出现的次数5.求平方根算法6.Spring MVC常用注解7.复制文件具体操作8.Oracle分页9.省市人口,求人口超过5000万的省份10. Mysql存储引擎...

2021-01-06 14:06:37 70

原创 面试题

2020/10/15面试总结笔试题:以下代码执行结果?静态代码块在类加载的时候执行一次,所以最先执行随后都不会执行.其次子类初始化实例的时候会先调用父类构造器再调用子类构造器public class Test { public static void main(String[] args) {// 1B2b2b A b = new B(); b= new B(); }}class A { static { Syst

2021-01-06 14:06:19 91

原创 十分简易的MVC框架

简易的MVC框架模仿SpringMvc框架,其中核心思想是我们引入一个前端控制器;所谓前端控制器指的是所有请求均到达前端控制器,再由前端控制器分发请求到对应的映射处理器,由控制器处理完之后返回ModelAndView对象再由前端控制器统一设置共享数据到HttpRequest对象和请求转发到客户端.其中主要是两个注解@COntroller和@RrequestMapping需要由我们去扫描确定在哪些类哪些方法上面再使用反射调用方法处理对应请求资源的Controller中对应被@RequestMapping注解

2020-06-27 10:14:46 217

原创 踩坑日记--Springboot整合Mybatis配置多数据源

坑主要的在SpringBoot整合Mybatis配置多数据源的过程中抛异常:java.lang.IllegalArgumentException: jdbcUrl is required with ######driverClassName.原因:数据库配置jdbc的jdbc-url写成url1.数据库配置文件spring: datasource: primarydb: ...

2020-04-09 12:02:25 210

原创 稀疏数组

数据结构包含线性结构和非线性结构线性结构:1.线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系2.线性结构有两种不同的存储结构,一种是顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的;链式存储的线性表称为链表,链表中存储的元素不一定是连续的,元素节点中存放数据元素和相邻节点的地址信息.3.线性结构常见的有:数组,队列,链表和栈非线...

2020-03-23 23:19:52 102

原创 IDEA创建Web项目

配置Tomcat1.进入Run/Configurations2.选择本地Tomcat路径绑定项目配置完之后url变化新建web Module勾选web application 在WEB-INF目录下创建classes和lib目录分别用来装编译后的class文件和项目依赖jar包进入项目配置选择Use module compile out path目的是为了将编译后...

2019-07-15 20:45:33 151

原创 IDEA创建Spring项目

使用IDEA创建Spring项目1.新建Module2.新建目录在Module目录下新建lib目录和resources目录,lib目录用于存放依赖jar包,resources目录用于存放Spring配置文件3.设置目录属性4.设置依赖jar包将spring-core,spring-beans拷入lib目录下,并且在Project Structure依赖本地jar包记住依赖包...

2019-06-24 21:39:30 665

原创 理解Cookie机制

为什么需要Cookie和SessionHTTP 协议有一个特点:无状态连接.服务端不知道上一次是哪一个客户端请求了自己.无状态连接带来的问题: 在一次会话(会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。)中,我们可以查看多个资源,每个资源都会发送请求再响应,每次请求都是客户端发出的而Http是无状态连接的,它不知道上一次是谁访问了自...

2019-03-30 10:40:35 152

原创 java实现类似Windows7上的时钟日历小程序

#java实现时钟日历小程序最终效果如下图具体代码如下:package swing2;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.geom.AffineTransform;...

2019-03-17 21:39:09 2191 2

原创 数据结构-------动态数组

数据结构数据结构是计算机存储,组织数据的方式数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的的检索算法和索引技术有关.我们平时用到的数据库就是数据结构的实现,是一个能存取修改删除数据的容器,是存储在磁盘当中支持掉电式的,也就是持久化的.而我们程序当中的数据结构是在内存中的程序生命周期结束就没有了.常...

2019-03-17 21:20:03 154

空空如也

空空如也

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

TA关注的人

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