自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_45701514的博客

在校大学生做笔记

  • 博客(87)
  • 资源 (2)
  • 收藏
  • 关注

原创 类文件接口和虚拟机加载机制

任何一个Class文件都对应着唯一的一个类或接口的定义信息,但是反过来说,类或接口并不一定都得定义在文件里(譬如类或接口也可以动态生成,直接送入类加载器中)。Class的结构不像XML等描述语言,由于它没有任何分隔符号,所以在表6-1中的数据项,无论是顺序还是数量,甚至于数据存储的字节序(Byte Ordering,Class文件中字节序为Big-Endian)这样的细节,都是被严格限定的,哪个字节代表什么含义,长度是多少,先后顺序如何,全部都不允许改变。

2024-05-29 12:12:02 524

原创 Jvm垃圾回收策略

算法简单,缺陷若两个对象相互引用,实际上这两个对象已经不可能再被访问,但是它们因为互相引用着对方,导致它们的引用计数都不为零,引用计数算法也就无法回收它们。

2024-05-22 16:08:07 357 1

原创 《深入理解Java虚拟机》——Java内存区域与内存溢出异常

JVM

2023-09-08 12:32:06 559

原创 基础shell小技巧004

在使用输入重定向符(<)时,Linux会用重定向指定的文件替换标准输入文件描述符。这意味着可以将STDOUT的原先位置重定向到另一个文件描述符,然后再利用该文件描述符恢复STDOUT。和标准的文件描述符一样,一旦将替代性文件描述符指向文件,此重定向就会一直有效,直至重新分配。可以采用和重定向输出文件描述符同样的办法来重定向输入文件描述符。在使用脚本时,你常常会想改变这种行为,尤其是希望将错误消息保存到日志文件中的时候。通过输出重定向符(>),原本应该出现在屏幕上的所有输出被shell重定向到了指定的文件。

2023-09-06 10:29:35 254

原创 基础shell小技巧003

bash shell会将所有的命令行参数都指派给称作位置参数(positional parameter)的特殊变量。这也包括shell脚本名称。位置变量的名称都是标准数字:$0对应脚本名,$1对应第一个命令行参数,$2对应第二个命令行参数,以此类推,直到$9。如果脚本需要的命令行参数不止9个,则仍可以继续加入更多的参数,但是需要稍微修改一下位置变量名。在第9个位置变量之后,必须在变量名两侧加上花括号,比如${10}。

2023-09-04 19:36:35 148

原创 基础shell小技巧002

如果之前用过其他编程语言的if-then语句,那么这种形式可能会让你有点儿困惑。在其他编程语言中,if语句之后的对象是一个等式,其求值结果为TRUE或FALSE。但bash shell的if语句并非如此。重点:bash shell的if语句会运行if之后的命令。如果该命令的退出状态码为0(命令成功运行),那么位于then部分的命令就会被执行。如果该命令的退出状态码是其他值,则then部分的命令不会被执行,bash shell会接着处理脚本中的下一条命令。fi语句用来表示if-then语句到此结束。

2023-08-26 15:23:35 200

原创 基础shell小技巧01

shell脚本中最有用的特性之一是可以从命令输出中提取信息并将其赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。在脚本中处理数据时,这个特性显得尤为方便。有两种方法可以将命令输出赋给变量。·反引号(`)·$()格式。

2023-08-24 11:17:19 420

原创 OpenResty封装Redis客户端

Redis是近几年业内非常流行的内存KV存储系统,以速度快和丰富的数据类型而闻名,可以用在缓存、消息队列、数据库等领域,许多国内外知名公司都是它的用户。OpenResty发行包内置了lua-resty-redis库,它基于cosocket实现了非阻塞的Redis客户端,支持Redis的所有命令以及管道操作。

2023-08-21 12:04:20 172

原创 Sentinel结合微服务进行熔断

除了流量控制以外,降低调用链路中的不稳定资源也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和Hystrix里面描述的问题是一样的。Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。

2023-07-25 10:47:51 188

原创 Redis附加功能

SELECT:切换至指定的数据库KEYS:获取所有与给定匹配符相匹配的键,语法:KEYS patternSCAN:以渐进方式迭代数据库中的键,SCAN cursor [MATCH pattern] [COUNT number]。散列迭代命令:HSCAN hash cursor [MATCH pattern] [COUNT number]。渐进式集合迭代命令:SSCAN set cursor [MATCH pattern] [COUNT number]。

2023-07-03 11:50:35 344

原创 线程池的7大参数和执行流程

corePoolSize:线程池中的常驻核心线程数,在创建了线程池后,当有请求任务来之后,就会安排池中的线程去执行请求任务,近视理解为今日当值线程,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放入到缓存队列当中.maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1。

2023-06-26 10:16:39 201

原创 数据结构和应用

HKEYS、HVALS、HGETALL:获取所有字段、所有值、所有字段和值Redis为散列提供了HKEYS、HVALS和HGETALL这。RPOPLPUSH:将右端弹出的元素推入左端,将一个列表的右端元素弹出插入另一个列表左端。LPUSHX、RPUSHX:只对已存在的列表执行推入操作。HINCRBY:对字段存储的整数值执行加法或减法操作。LRANGE:获取指定索引范围上的元素。LINDEX:获取指定索引上的元素。HMGET:一次获取多个字段的值。LPUSH:将元素推入列表左端。

2023-06-25 15:04:20 388

原创 Mybatis插件实现原理

MyBatis框架允许用户通过自定义拦截器的方式改变SQL的执行行为,例如在SQL执行时追加SQL分页语法,从而达到简化分页查询的目的。用户自定义的拦截器也被称为MyBatis插件,本章我们就来分析一下MyBatis插件的实现原理以及如何开发一个插件。最后,我们再来回顾MyBatis插件的工作原理。以执行一个查询操作为例,通过前面章节的介绍,我们知道SqlSession是MyBatis中提供的面向用户的操作数据库的接口,而真正执行SQL操作的是Executor组件。

2023-04-23 15:11:17 508 1

原创 Mapper接口的注册流程

Mapper接口用于定义执行SQL语句相关的方法,方法名一般和Mapper XML配置文件中标签的id属性相同,接口的完全限定名一般对应Mapper XML配置文件的命名空间。

2023-04-20 14:43:52 778

原创 Configuration组件详解

MyBatis框架的配置信息有两种,一种是配置MyBatis框架属性的主配置文件;另一种是配置执行SQL语句的Mapper配置文件。Configuration的作用是描述MyBatis主配置文件的信息。configuration(配置)properties(属性)settings(设置typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)

2023-04-18 11:38:55 802

原创 Mybatis核心组件简介

Mybatis核心组件基本介绍,后续会详细介绍

2023-04-17 21:18:24 605

原创 Mybatis常用工具类-SQL类

Mybatis工具类

2023-04-03 20:07:50 1391

原创 Unsafe类

其操作含义是,如果对象obj中内存偏移量为valueOffset的变量值为expect,则使用新的值update替换旧的值expect。关于CAS操作有个经典的ABA问题,具体如下:假如线程I使用CAS修改初始值为A的变量X,那么线程I会首先去获取当前变量X的值(为A),然后使用CAS操作尝试修改X的值为B,如果使用CAS操作成功了,那么程序运行一定是正确的吗?其实未必,这是因为有可能在线程I获取变量X的值A后,在执行CAS前,线程II使用CAS修改了变量X的值为B,然后又使用CAS修改了变量X的值为A。

2023-03-14 20:01:39 182

原创 Java锁的概述

学习Java并发编程,锁的概念还是需要了解一下。提示:以下是本篇文章正文内容,下面案例可供参考。

2023-03-14 19:03:07 325

原创 深入解析ThreadLocal

文章目录前言一、ThreadLocal是什么?二、ThreadLocal使用示例三、解析ThreadLocal源码1. void set(T value)2. T get()3. void remove()四、ThreadLocal不支持继承性1. 例子2. InheritableThreadLocal类前言多线程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步。同步的措施一般是加锁,这就需要使

2023-03-02 14:35:01 182

原创 Java程序员线上排查问题神器-Arthas

线上诊断工具神器

2023-02-18 10:56:59 978 5

原创 剑指offer-013-二维子矩阵的和

目录标题题目思路代码题目给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回左上角 (row1, col1) 、右下角 (row2, col2) 的子

2023-01-31 10:32:01 350

原创 Java之Io知识详解 (二)

java io知识

2023-01-21 15:46:58 688 3

原创 Java-IO知识详解(一)

Java IO知识

2023-01-21 14:16:32 1286

原创 剑指offer-010-和为k的子数组

目录标题题目思路代码题目给定一个整数数组和一个整数 k **,**请找到该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例 2:输入:nums = [1,2,3], k = 3输出: 2思路1.先求出从第一个整数,到数字最后一个数的子数组之和,记为数组z[ ],这样任意两个数的子数组之和即为z[i]-z[j]。2.通过遍历数组z[]就可以知道出现了和为k的子数组出

2023-01-17 10:49:34 75

原创 剑指offer-005-单词长度的最大乘积

目录标题题目思路代码题目给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。输入: words = [“abcw”,“baz”,“foo”,“bar”,“fxyz”,“abcdef”]输出: 16解释: 这两个单词为 “abcw”, “fxyz”。它们不包含相同字符,且长度的乘积最大。思路1.解决这道题的关键在于如何判断两个字符串

2023-01-16 14:29:17 70

原创 反射和自定义注解实战案例

java基础之注解和反射

2023-01-15 21:31:18 283

原创 设计之终道

文章目录终道单一职责开闭原则里氏替换接口隔离依赖倒置迪米特法则设计的最高境界终道在面向对象的软件设计中,人们经常会遇到一些重复出现的问题。为降低软件模块的耦合性,提高软件的灵活性、兼容性、可复用性、可维护性与可扩展性,人们从宏观到微观对各种软件系统进行拆分、抽象、组装,确立模块间的交互关系,最终通过归纳、总结,将一些软件模式沉淀下来成为通用的解决方案,这就是设计模式的由来与发展。设计模式是以语言特性(面向对象三大特性)为“硬件基础”,再加上软件设计原则的“灵魂”而总结出的一系列软件模式。一般地,这些

2023-01-13 15:12:05 433

原创 行为篇-解释器模式

文章目录前言一、语言与表达式二、语义树1. 脚本定义三、接口与终极表达式1. 表达式接口2.终极表达式3.非终极表达式4.客户端类总结前言解释有拆解、释义的意思,一般可以理解为针对某段文字,按照其语言的特定语法进行解析,再以另一种表达形式表达出来,以达到人们能够理解的目的。类似地,解释器模式(Interpreter)会针对某种语言并基于其语法特征创建一系列的表达式类(包括终极表达式与非终极表达式),利用树结构模式将表达式对象组装起来,最终将其翻译成计算机能够识别并执行的语义树。例如结构型数据库对查询语

2023-01-13 13:57:09 421

原创 剑指offer-004-只出现一次的数字

目录标题题目思路代码解法1,暴力解法2,运用位运算题目输入一个整数数组,数组中只有一个数字出现了一次,而其他数字都出现了3次。请找出那个只出现一次的数字。例如,如果输入的数组为[0,1,0,1,0,1,100],则只出现一次的数字是100。思路1.将数组转换成Map结构,数字作为key,出现的次数为value,遍历map集合,返回value=1的key,这种做法很简单,但是效率也比较低。2.一个整数是由32个0或1组成的。我们可以将数组中所有数字的同一位置的数位相加。如果将出现3次的数字单独拿

2023-01-12 16:04:32 65

原创 行为篇-访问者模式

文章目录前言一、多样化的商品1.商品抽象类2.糖果类、酒类、水果类二、多变的计价方法1. 访问者接口2.折扣计价访问者3.客户端类三、访问和承接1. 接待者接口2.重构糖果类3.客户端类总结前言访问者模式(Visitor)主要解决的是数据与算法的耦合问题,尤其是在数据结构比较稳定,而算法多变的情况下。为了不“污染”数据本身,访问者模式会将多种算法独立归类,并在访问数据时根据数据类型自动切换到对应的算法,实现数据的自动响应机制,并且确保算法的自由扩展。提示:以下是本篇文章正文内容,下面案例可供参考

2023-01-12 11:44:34 365

原创 行为篇-命令模式

文章目录前言一、对电灯的控制1.灯泡类2.开关类3.客户端类二、 开关命令1.命令接口2.开关命令类3.开关类4.客户端类三、 霓虹灯闪烁1.闪烁命令类2.客户端类四、物联网1.电视机类2.电视命令类3.键盘控制器类Keyboard4.客户端类总结前言命令是一个对象向另一个或多个对象发送的指令信息。命令的发送方负责下达指令,接收方则根据命令触发相应的行为。作为一种数据(指令信息)驱动的行为型设计模式,命令模式(Command)能够将指令信息封装成一个对象,并将此对象作为参数发送给接收方去执行,以使命令

2023-01-10 14:49:02 673

原创 剑指offer-001-整数的除法

目录标题题目思路代码题目给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。思路1.int数值类型的范围为-231~231-1,若全转换成整数进行操作,-2^31这个数则会超出范围,因此全部转换成负数进行操作。2.暴力解法,可以用被除数一直减去除数,直到被除数小于除数,减去几个除数商就是几个,但是这样肯定会超时。3.将上诉算法进行优化,当被除数大于除数时,继续比较判断被除数是否大于除数的2倍,如果是,则继续判断被除数是否大于

2023-01-09 17:46:10 118

原创 行为篇-中介者模式

文章目录前言一、简单直接交互1.人类People2.客户端类二、 构建交互平台1.用户类2.聊天室类3.客户端类三、 多态化沟通1.聊天室抽象类和用户类2.用户类3.公共聊天室类4.私人聊天室类5.超级用户类6.客户端类总结前言中介是在事物之间传播信息的中间媒介。中介模式(Mediator)为对象构架出一个互动平台,通过减少对象间的依赖程度以达到解耦的目的。我们的生活中有各种各样的媒介,如婚介所、房产中介、门户网站、电子商务、交换机组网、通信基站、即时通软件等,这些都与人类的生活息息相关,离开它们我

2023-01-09 14:44:38 188

原创 行为篇-备忘录模式

文章目录前言一、时光流逝二、 覆水难收1.文档类2编辑器类3.客户端类三、破镜重圆1.历史快照类2.重构文档类3.重构编辑器类4.客户端类总结前言备忘录用来记录曾经发生过的事情,使回溯历史变得切实可行。备忘录模式(Memento)则可以在不破坏元对象封装性的前提下捕获其在某些时刻的内部状态,并像历史快照一样将它们保留在元对象之外,以备恢复之用。提示:以下是本篇文章正文内容,下面案例可供参考一、时光流逝在计算机世界中,我们似乎可以来去自如,例如浏览器前进与后退、撤销文档修改、数据库备份与恢复、

2023-01-06 14:09:09 748

原创 行为篇-策略模式

文章目录前言一、“顽固不化”的系统1.计算器类二、游戏卡带1.算法策略接口2.具体策略类3.重构计算器类4.客户端类三、万能的USB接口1.USB接口2.策略实现类3.计算机主机类4.客户端类总结前言策略,古时也称“计”,指为了达成某个目标而提前策划好的方案。但计划往往不如变化快,当目标突变或者周遭情况不允许实施某方案的时候,我们就得临时变更方案。策略模式(Strategy)强调的是行为的灵活切换,比如一个类的多个方法有着类似的行为接口,可以将它们抽离出来作为一系列策略类,在运行时灵活对接,变更其算法

2023-01-05 11:19:53 409

原创 行为篇-责任链模式

文章目录前言一、简单的生产线二、工作流程拆分1.业务实现2.客户端类三、架构工作流1.审批人2.审批角色3.客户端类总结前言责任链是由很多责任节点串联起来的一条任务链条,其中每一个责任节点都是一个业务处理环节。责任链模式(Chain of Responsibility)允许业务请求者将责任链视为一个整体并对其发起请求,而不必关心链条内部具体的业务逻辑与流程走向,也就是说,请求者不必关心具体是哪个节点起了作用,总之业务最终能得到相应的处理。在软件系统中,当一个业务需要经历一系列业务对象去处理时,我们可以

2022-12-27 14:36:15 403 1

原创 行为篇-迭代器模式

文章目录前言一、物以类聚二、遍历标准化三、手写迭代器1.定义迭代器2.行车记录仪类3.客户端类总结前言迭代,在程序中特指对某集合中各元素逐个取用的行为。迭代器模式(Iterator)提供了一种机制来按顺序访问集合中的各元素,而不需要知道集合内部的构造。换句话讲,迭代器满足了对集合迭代的需求,并向外部提供了一种统一的迭代方式,而不必暴露集合的内部数据结构。提示:以下是本篇文章正文内容,下面案例可供参考一、物以类聚迭代的过程是基于一系列数据展开的,所以集合是不得不提的概念。物以类聚,集合是由一个

2022-12-27 11:22:09 550

原创 结构篇-桥接模式

文章目录前言一、基础建设二、形与色的纠葛1.画笔抽象类2.黑色画笔类3.客户端类三、架构产业链1.尺子接口2.具体实现3.画笔抽象类4.画笔实现类5.客户端类四、笛卡尔积总结前言桥接模式(Bridge)能将抽象与实现分离,使二者可以各自单独变化而不受对方约束,使用时再将它们组合起来,就像架设桥梁一样连接它们的功能,如此降低了抽象与实现这两个可变维度的耦合度,以保证系统的可扩展性。提示:以下是本篇文章正文内容,下面案例可供参考一、基础建设人类社会的发展有一条不变的规律,即“要致富,先修路”。路

2022-12-26 15:23:30 649

原创 结构篇-代理模式

文章目录前言一、4S店二、访问互联网1.互联网访问接口2.“猫”三、互联网代理1. 路由器2.客户端类四、万能的动态代理1.局域网访问接口2.交换机3.动态代理4.改进后的路由代理5.客户端6.扩展总结前言代理模式(Proxy),顾名思义,有代表打理的意思。某些情况下,当客户端不能或不适合直接访问目标业务对象时,业务对象可以通过代理把自己的业务托管起来,使客户端间接地通过代理进行业务访问。如此不但能方便用户使用,还能对客户端的访问进行一定的控制。简单来说,就是代理方以业务对象的名义,代理了它的业务。

2022-12-26 11:21:26 136

毕业设计+校园疫情可视化系统

前后端分离,前端采用 vue全家桶+axios+echart 后端 spingboot+mybatis-plus+shiro+jwt 想要借鉴毕业论文可以联系我,该项目前后端可独立部署,使用token进行验证

2023-07-23

mongodb-win32-x86-64-2008plus-ssl-4.0.12.zip

最像sql数据库的nosql数据库

2021-05-05

32个Java面试必考点.rar

java程序员必备

2021-03-05

空空如也

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

TA关注的人

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