自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis之基础篇

Redis是一种基于键值对(Key-Value)的NoSQL数据库,它支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法。因此Redis可以满足多种应用场景。而且因为Redis会将数据存储在内存中,因此它的读写性能非常好,Redis还具有将数据存到快照或者日志上的机制,这便于数据恢复。Redis还提供键过期、发布订阅、事务、流水线、lua脚本等附加功能。

2024-02-04 13:39:10 1107

原创 RabbitMQ入门

RabbitMQ是一款使用Erlang语言开发的,实现 AMQP(Advanced Message Queuing Protocol )的开源消息中间件。它支持多种客户端如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。所以笔者整理了这篇RabbitMQ入门的文章根据下方思维导图来一一介绍。

2024-01-29 15:06:31 952

原创 Spring入门心经之第四章 事务详解

从逻辑上来说事务就是把一组动作看成一个操作,要么都执行,要么都不执行。例如下面这段代码,如果这段代码不在同一事务的话,那么执行结束时只有老王被插入到数据库,小明没有被插入,这个操作不符合业务上的一致性。另外补充一点,使用事务进行增删改查时,必须保证所使用的数据库引擎支持事务;例如常用的MySQL5.5后版本默认使用支持事务的 innodb引擎,MySQL5.5前数据库引擎则为myisam,那么程序也就不再支持事务了。

2024-01-17 16:37:01 1026

原创 Spring入门心经之第三章 MVC详解

MVC(Model View Controller)是一种软件设计规范,是一种将业务逻辑、数据、显示分离的一种解耦思想。由模型(Model)处理应用程序的数据部分,视图(View)处理数据显示部分,它们两者之间交友控制器(Controller)调度,控制器通常从视图读取数据,控制用户输入,并向模型发送数据。而Spring MVC是由Spring提供的遵循MVC的规范的轻量级web框架,目的是为了简化Java栈的web开发。

2023-08-10 08:45:05 144

原创 Spring入门心经之第二章 AOP详解

AOP(Aspect-Oriented Programming:面向切面编程),是Spring中一个重要内容,在AOP思想中例如权限控制日志管理事务控制等被定义为切面,它实际做的就是将核心功能与切面功能拆分,降低核心功能与切面功能的耦合度,然后在把核心功能和切面功能编织在一起。Spring是基于动态代理实现AOP的。Spring默认情况下在目标类实现接口时是通过JDK代理实现的,只有非接口的是通过Cglib代理实现的。前置通知(Before Advice):在目标对象的方法被调用前调用通过功能。

2023-08-06 15:17:18 111

原创 Spring入门心经之第一章 IOC详解

我们继续深入源码,会发现在XmlBeanDefinitionReader类中可以看到doLoadBeanDefinitions()方法,这个方法主要作用是载入Bean定义资源文件,然后将Bean定义资源转换为Document对象,具体过程由documentLoader实现。// 创建文件解析器工厂// 创建文档解析器// 解析// 设置解析XML的校验try {" +throw pcex;

2023-08-01 21:42:48 100

原创 来聊聊LinkedHashMap

保持遍历顺序和插入顺序一致性。支持按照元素访问顺序排序,适用于封装LRU缓存工具。因为内部使用双向列表,尽管在插入和删除元素时会略微慢于 HashMap ,但在迭代访问时由于可以利用链表结构,随着元素个数增加,迭代效率会比HashMap高很多。LinkedHashMap是在HashMap基础上在各个节点之间增加一条双向链表,使得原先散列在不同bucket、单链表、红黑树上的节点之间可以通过双向链表进行操作,实现有序关联,其逻辑结构如下图所示。

2023-07-30 15:31:59 213

原创 HashMap线程安全问题

假设有两个线程A、B都在进行put操作,并且算出来的插入下标一致,当线程A执行完上面这段代码时时间片耗尽被挂起,此线程B抢到时间片完成插入元素,然后线程A重新获得时间片继续往下执行代码,直接插入,这就会导致线程B插入的数据被覆盖,从而线程不安全。因为有next指向,所以当e指向的元素插入到新数组中时指向消失,next指向的元素不会被垃圾清除。然后e指向next,而next为7,再次循环,此时e.next=3,而在上次循环中3.next=7,出现环形链表,构成一个死循环,最终导致CPU100。

2023-07-14 16:58:07 125

原创 MySQL之基础篇

数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。数据库系统(database systems),是由数据库及其管理软件组成的系统。数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。

2023-07-07 22:30:54 135

原创 从CPU缓存一致性到Volatile

​举个例子,当一台计算机是由多核CPU构成时,为了性能根据上面所说的写回策略,CPU-01从内存中加载了变量X,并将变量X改为9527(初始值为0)写入L1/L2 Cache中,并没有写入到主内存中,这时CPU-02从内存中读取变量X的值,则会读到错误的值,因为CPU-01没有更新变量X到内存中,此时内存中的值仍旧为0,这就是所谓的缓存一致性问题。举个例子,有个变量s,cpu操作变量s时,先检查 Cache Line里面有没有变量s,如果有则先更新Cache Line中的值,然后再写入到主内存;

2023-07-05 21:08:40 245

原创 MySQL之索引篇

索引是帮助Mysql高效获取数据的数据结构,就好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。

2023-05-15 14:22:58 119

原创 IDEA常用的快捷键(Windows版)

IDEA常用的快捷键

2023-04-26 11:20:53 283

原创 Centos7环境下MySQL8部署安装

本文以Centos7为例,安装部署MySQL8

2023-04-22 18:17:44 142

原创 聊聊Java IO中的设计模式

如下图,Something类向拥有Target的行为我们就编写一个适配器,继承Something、Target,用Target方法封装Something。适配器主要用来协调接口不兼容,就比如笔记本电脑端口外界显示屏,端口不匹配,就需要一个适配器来将两边连接起来。,在不改变现有对象结构的情况下,动态地给一个对象添加一些额外的职责的模式,就增加功能来说,装饰模式比生成子类更灵活。中的适配器模式前,我们先了解下适配器分为两种形式:对象适配器和类适配器。类的行为,我们就可以编写一个适配器,将。使用到了观察者模式。

2023-04-16 22:05:32 110

原创 Java IO基础知识总结

IO即Input/Output,IO是实现输入和输出的基础,可以方便的实现数据的输入和输出。将数据输出到外部存储的过程叫数据输出。将数据输入到计算机内存的过程叫数据输入。

2023-04-14 21:29:32 109

原创 JVM入门

Java虚拟机是运行Java字节码的虚拟机,它就是一台小型计算机,因为它的存在,屏蔽掉了底层操作系统的差异,使JAVA可以一次编写,随处运行。类加载器实现将编译后的 class 文件字节码内容加载到内存中,并将这些内容转为为方法区的运行时数据结构,注意只能决定类加载,至于能不能运行则是由来决定。

2023-04-14 10:45:57 593

原创 windosw Terminal使用SSH免密登录服务器

windows使用SSH(免密码登录)到服务器,及配置多个SSH免密码登录。

2023-04-04 15:47:06 669

原创 什么是HashMap

HashMap是一种快速的查找并且插入、删除性能都良好的一种 K/V键值对的数据结构,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap默认的初始化大小为 16。之后每次扩充,容量变为原来的 2 倍。HashMap可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个。HashMap的底层在JDK1.8之前采用数组+链表组成,用找到数组索引位置,如果冲突则使用拉链法解决。在JDK1.8之后的HashMap。

2023-03-28 09:33:40 774

原创 docker入门

我们都知道docker的隔离性,网络也是个隔离性的一部分,Linux使用了命名空间来进行资源的隔离,比如pidnamespace就是用来隔离进程的,是用来隔离文件系统的,是用来隔离网络的。每一个都提供了一个独立的网络环境,包括网卡路由iptable规则等等,都是与其它的隔离的。docker容器在默认情况下,一般会分配一个独立的,也就是网络类型中的Bridge模式。因为Bridge模式使用的是独立的,那么就需要一种技术让服务器和docker容器的端口构建映射关系,以确保外部用户可以通过端口访问到。

2023-03-24 15:02:25 72

原创 小程序跳转时传入数组参数小记

参数携带参数进行跳转,将数组通过。

2023-03-13 21:37:42 577

原创 jmeter使用笔记

官网地址:https://jmeter.apache.org/配置Jmeter的测试计划通过以上地址下载好Jmeter后,进入到Jmeter的bin目录下,windows双击jmeter.bat即可。启动成功后,界面如下:接下来我们如果需要使用

2022-12-03 21:30:30 144

原创 Mybatis批量更新踩坑-Mysql配置allowMultiQueries=true允许批量更新

问题先带大家看一段SQL的配置<update id="updateStatusByMid"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update sms_detail <set> status= #{item.status} </set> where mi

2022-05-11 20:58:09 2830

原创 Spring源码搭建

环境搭建JDK配置笔者这边选择jdk8,具体安装过程可以看笔者这篇文章【jdk环境搭建简记】Gradle配置这边笔者选择的是gradle6.8,具体配置步骤如下:下载gradle-6.8-bin.zip,下载地址为Gradle下载地址在安装目录下,新增文件夹.gradle用来当做仓库在gradle-6.8\init.d 中创建一个·nit.gradle,添加以下内容allprojects { repositories { maven { url 'file:///

2022-05-08 21:00:58 2953 2

原创 JDK环境搭建简记

一、JDK环境搭建JDK历史版本下载:Java Archive | Oracle笔者这边选择的JDK81、下载2、开始安装3、记住这个地址,待会儿要用 C:\Program Files\Java\jdk1.8.0_131。然后点击下一步4、等待5、点击下一步6、继续等待7、完成8、电脑环境配置右击我的电脑=》属性=》高级系统设置进入path添加变量值C:\Program Files\Java\jdk1.8.0_131\bin然后win+R,输入cmd见证奇迹的时刻到了

2022-05-06 21:10:27 276

原创 带你探索人间美味之单例模式

一、单例模式介绍单例模式可以说是整个设计中最简单的模式之一,而且这种方式即使在没有看设计模式相关资料也会常用在编码开发中。因为在编程开发中经常会遇到这样一种场景,那就是需要保证一个类只有一个实例哪怕多线程同时访问,并需要提供一个全局访问此实例的点。综上以及我们平常的开发中,可以总结一条经验,单例模式主要解决的是,一个全局使用的类频繁的创建和消费,从而提升提升整体的代码的性能。二、单例模式的使用场景单例模式所出现的场景非常简单也是日常开发所能见到的,例如:数据库的连接池不会反复创建Sprin

2022-03-09 13:17:13 200

原创 微信公众号开发——Java

微信公众号开发——Java步骤一:需要先进入公众号平台进行JS接口安全域名的设置。步骤二:引入微信jssdk.js文件生成JS-SDK权限验证签名步骤三:通过config接口注入权限验证配置步骤四:通过ready接口处理成功验证步骤五:通过error接口处理失败验证步骤一:需要先进入公众号平台进行JS接口安全域名的设置。​ 绑定域名一定要去掉 “http://”或者"https://",如下JS接口安全域名 xxx.xxx.com步骤二:引入微信jssdk.js文件​ 示例文件 (x.x.x

2022-03-01 14:40:52 2205

原创 Mybatis缓存问题

问题详述:Mybatis同一个事务中,执行相同SQL,第一条Sql执行,第二条不执行,原因:mybatis对查询的语句会存在一级缓存中,如果在一个事务中,mybatis对同一个session多次查询同一个sql语句就会去找缓存而不是再去查一次数据库,可以禁用一级缓存,在SELECT语句中加上 flushCache=“true”代码示例默认情况下,mybatis开启并使用了一级缓存。 /** * 开启事务,测试一级缓存效果 **/ @ApiOperation("获取指定i

2021-11-07 21:04:37 1166

原创 No org.springframework.web.client.RestTemplate 解决方法

No org.springframework.web.client.RestTemplate 解决方法报错信息No qualifying bean of type ‘org.springframework.web.client.RestTemplate’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resourc

2020-12-02 20:55:33 9878 1

原创 关于int的最大值与最小值之间的计算

关于Integer.MAX_VALUE + 1 = Integer.MIN_VALUE 问题 int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int sum = a + b; System.out.println("a="+a+",b="+b+",sum="+sum);结果:a=2147483647,b=2147483647,sum=-2将a=2147483647转为二进制则为:01111111 11111111 111111

2020-11-09 16:46:06 617

空空如也

空空如也

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

TA关注的人

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