自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 消息中心java

2023-10-24 20:43:18 88

原创 SSH 22

SSH是一种安全通道协议,主要用于字符界面的远程登录,控制等,SSH协议会对双方通信数据进行加密,包括用户登录输入的口令,SSH是建立在应用层和传输层基础上的安全协议,对数据有着加密,压缩的优点,安全快速。centos7自带的软件,开机自启, sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)ftp 20 21,帮助我们实现远程连接。7.最终,双方都拥有三个密钥(自己的公私密钥和对方的公钥),之后通信的数据都会加密。2.服务端返回自己的公钥x,以及一个会话id。

2023-10-24 19:45:20 142

原创 FTP协议 21

为了增强文件传输的安全性,可以考虑使用安全的替代协议,如SFTP(SSH File Transfer Protocol)或FTPS(FTP over SSL/TLS)。FTP协议是一种常用的文件传输协议,它提供了可靠的文件传输机制。尽管FTP在文件传输方面非常常用,但由于其安全性较低,可以考虑使用SFTP或FTPS等安全的替代协议来加强文件传输的安全性。在被动模式下,客户端向服务器的21号端口发起连接请求,服务器接受请求后,使用随机未使用端口向客户端的数据端口建立连接。数据连接用于实际的文件传输。

2023-10-24 19:37:14 184

原创 java线程池

当线程池中的线程数量超过 corePoolSize 时,多余的线程在空闲时间达到 keepAliveTime 后会被销毁,直到线程池中的线程数量重新达到 corePoolSize。该构造函数的参数分别是线程池的核心线程数、最大线程数、线程空闲时间、空闲时间的单位、工作队列、线程工厂和饱和策略。如果工作队列已满,但是当前线程池中的线程数量小于最大线程数,线程池会创建新的线程来执行任务。线程池中一直存活的线程数量,即使它们是空闲的。如果当前线程池中的线程数量小于核心线程数,线程池会创建新的线程来执行任务。

2023-10-24 15:06:11 131

原创 个人博客系统

发邮件用mq对象存储上传下载。

2023-10-24 14:57:20 31

原创 Redis实现分布式锁

线程锁:主要用来给方法、代码块加锁。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。分布式锁:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。

2023-10-24 10:29:46 44

原创 java中的“==”和equals()

==”是java中关系操作符的一种,不仅可用于所有基本数据类型,也适用于其他所有对象。这里需要注意的是,“==”操作符用于基本数据类型时是对值的比较,用于对象则是对引用的比较。Obejct是所有类的超类,所有类的实例都可以调用equals方法。在上面的代码中如果用equals()对s1、s2、s3进行比较,得到的结果和用“==”操作符是一样的,这里就不在演示。没错,在最原始的定义中,其实qeuals()的默认行为是使用“==”关系符进行对比,也就是比较引用。

2023-10-23 14:43:46 51

原创 观察者模式java

总结来说,观察者模式适用于多个对象之间存在一对多的依赖关系,当一个对象的状态变化需要通知其他对象并进行相应处理时,观察者模式能够提供一种松散耦合的解决方案,增加系统的灵活性和可扩展性。观察者模式是一种行为型设计模式,用于在对象之间建立一对多的依赖关系,当一个对象的状态发生变化时,其所有依赖对象都会自动收到通知并进行相应的更新。这个接口只定义了一个方法,即update()方法,当被观察者对象的状态发生变化时,被观察者对象的notifyObservers()方法就会调用这一方法。

2023-10-23 13:49:37 166

原创 MQ常见的问题(kafka保证消息不丢失)

反观pull模式,消费者可以按需消费,不用担心自己处理不了的消息来骚扰自己,而mq堆积消息也会相对简单,无需记录每一个要发送消息的状态,只需要维护所有消息的队列和偏移量就可以了。关闭自动提交,当消费者消费的完成后,再手动提交,防止mq的自动提交,当消费者接收到消息后,mq以为消费者已经消费了,但这个时候消费者如果挂了,这条消息就没有被消费。即使这样,依然存在延迟问题:假设40ms到80ms之间的50ms消息到来,消息就延迟了30ms,而且对于半个小时来一次的消息,这些开销就是白白浪费的。

2023-10-23 13:43:41 325 1

原创 数据库索引是什么?创建索引的注意事项

而它的非主键索引,或者说是辅助索引,是非聚集索引,跟MyISAM引擎的非聚集索引不同的是,MyISAM叶节点保存的是地址,而InnoDB是主键,InnoDB非聚集索引的索引文件和数据文件分开存储,索引文件的叶节点只保存主键,在查找时,要先找到叶节点中的主键,再根据主键去主索引文件查找详细行记录;简而言之:帮助MySQL高效的查询出数据的数据结构叫做索引。B+Tree叶节点存放的是数据记录的地址,在检索的时候,先找到索引对应的数据记录的地址,再根据地址读取相应的数据记录,这种查找方式被称为“非聚集索引”。

2023-10-23 11:47:19 71

原创 Spring常用注解

ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,这对所有注解了 @RequestMapping的控制器内的方法有效。@After 在方法执行之后执行(方法上)@Before 在方法执行之前执行(方法上)@Around 在方法执行之前与之后执行(方法上)

2023-10-23 11:39:29 39

原创 Mysql事务+redo日志+锁分类+隔离级别+mvcc

INSERT时,保存当前事务版本号为行的创建版本号DELETE时,保存当前事务版本号为行的删除版本号UPDATE时,插入一条新纪录,保存当前事务版本号为行创建版本号,同时保存当前事务版本号到原来删除的行举例说明MVCC如何避免幻读的:事务A读取age

2023-10-22 11:32:14 271

原创 数据库事务的特性

原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。并发控制(隔离性):当多个并发请求过来,并且其中有一个请求是对数据修改操作的时候会有影响,为了避免读到脏数据,所以需要对事务之间的读写进行隔离,至于隔离到啥程度得看业务系统的场景了,实现这个就得用MySQL 的隔离级别。

2023-10-22 10:30:33 30

原创 MySQL中查询重复字段的方法和步骤是怎样

因为我们要排查的是 单个 字段account ,那么就是需要按照 account 字段 维度 去分组。重复的account数据 A B 都找出来了,接下来我们只需要把account为A 和 B 的其他数据都一起查询出来。要找出重复数据,我们首先想到的就是,既然是重复,那么 数量就是大于 1 就算是重复。没错,如我们所想,count大于1的即是 account为 A 和 B 的数据。那么我们稍作筛选,只把count大于1的数据的account 找出来。那就是利用第二步查出来的数据做为。

2023-10-22 10:27:37 472

原创 MySQL为什么用b+树

如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的IO次数有会再次减少,数据查询的效率也会更快。这是因为innodb是把数据存放在B+树中的,而B+树的键值就是主键,在B+树的叶子节点中,存储了表中所有的数据。非聚集索引与聚集索引的区别在于非聚集索引的叶子节点不存储表中的数据,而是存储该列对应的主键,想要查找数据我们还需要根据主键再去聚集索引中进行查找,这个再根据聚集索引查找数据的过程,我们称为回表。

2023-10-22 10:14:42 235

原创 Kafka保证消息幂等以及解决方案

在设计单据相关的业务,或者是任务相关的业务,肯定会涉及到状态机(状态变更图),我们以业务单据为例:在业务单据上面会有个状态,状态在不同的情况下会发生变更,一般情况下存在有限状态机,当消费业务消息的时候,如果状态机已经处于下一个状态,这时候来了一个上一个状态的消息,直接丢弃消息不处理,保证了有限状态机的幂等。查询是天然的幂等操作删除操作 (天然幂等) 删除操作也是幂等的,删除一次和删除多次都是把数据删除(注意可能返回结果不一样,删除的数据不存在返回 0,删除的数据多条,返回结果多个)。

2023-10-12 10:39:22 878

原创 Java堆和栈

栈(Stack)是Java程序中的方法调用内存区域,用于存储方法调用时的局部变量、参数和返回地址。栈的大小是固定的,每个方法调用都会创建一个新的栈帧(Stack Frame),并压入栈中。Java堆和栈是Java程序中两个重要的数据结构,它们在程序的运行过程中发挥着重要的作用。Java堆和栈是Java程序中两个重要的数据结构,它们在程序的运行过程中发挥着重要的作用。Java堆(Heap)和栈(Stack)是Java程序中的两个不同的内存区域,它们有着不同的作用和特点。

2023-10-11 17:21:06 100

原创 MySQL为什么用b+树

本篇文从二叉查找树,详细说明了为什么mysql用B+树作为数据的索引,以及在innodb中数据库如何通过B+树索引来存储数据以及查找数据。我们一定要记住这句话:。

2023-10-11 17:15:01 1316

原创 Session共享问题

出现这个问题的原因,从根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产生的数据不会被保留下来,所以第⼆次请求服务端无法认识到你曾经来过, Http为什么要设计为无状态协议?早期都是静态页面无所谓有无状态,后来有动态的内容更丰富,就需要有状态,出现了两种用于保持Http状态的技术,那就是Cookie和Session。而出现上述不停让登录的问题,分析如下图:解决Session一致性的方案。

2023-10-11 17:10:32 64

原创 PageHelper详解

这里有两个参数,分别为:page=1,rows=20。默认请求第一页,每页显示20条数据先PageHelper.startPage(1, 10)开始分页,再selectlist查询数据库的时候会自动加上limit 1,10。得到这样的结果:查询结果也是会带上分页信息(已验证,你们可以自己去验证看一下)

2023-10-11 15:04:48 376

原创 synchronized

1当synchronized作用在实例方法时,监视器锁(monitor)便是对象实例(this);2当synchronized作用在静态方法时,监视器锁(monitor)便是对象的Class实例,因为Class数据存在于永久代,因此静态方法锁相当于该类的一个全局锁;3当synchronized作用在某一个对象实例时,监视器锁(monitor)便是括号括起来的对象实例;1原子性:确保线程互斥的访问同步代码;

2023-10-11 10:24:05 42

原创 死锁,死锁避免

在Java中,死锁通常是由于多线程并发执行时,线程之间互相等待获取对方持有的锁或资源而产生的。5、尽量避免嵌套锁的使用,如果必须使用嵌套锁,可以采用锁的升级和降级策略,即先获取较低级别的锁,再获取较高级别的锁,避免死锁的发生。1、避免一个线程同时获取多个锁,并且其他线程也需要这些锁的情况,可以通过对锁的获取顺序进行统一,降低死锁的概率。2、尽量减小锁的作用域,即只在必要的部分进行加锁,这样可以减少锁的竞争,降低死锁的概率。3、使用定时锁,即在获取锁的时候设置超时时间,如果超时则放弃获取,避免长时间等待。

2023-10-11 10:09:28 97

原创 接口与抽象类的区别

抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。(2)实现接口的关键字为implements,继承抽象类的关键字为extends。(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。(1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。(3)接口强调特定功能的实现,而抽象类强调所属关系。

2023-10-11 10:06:37 70

原创 HashMap

2023-10-11 10:05:50 41

原创 SpringMVC工作流程

3. 处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链 返回 (HandlerExecutionChain) 给 DispatcherServlet。4. DispatcherServlet 会根据 处理器执行链 中的处理器,找到能够执行该处理器的处理器适配器(HandlerAdaptor) --注,处理器适配器有多个。作用:根据映射器找到的处理器 Handler 信息,按照特定的规则去执行相关的处理器 Handler。

2023-10-11 09:59:40 65

原创 单点登录原理

用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系。用户在sso认证中心登录成功后,sso-server创建授权令牌并存储该令牌,所以,sso-server对令牌的校验就是去查找这个令牌是否存在以及是否过期,令牌校验成功后sso-server将发送校验请求的系统注册到sso认证中心(就是存储起来的意思)。

2023-10-08 15:26:41 91

原创 单例模式java

1、懒汉式,线程不安全是否 Lazy 初始化:是是否多线程安全:否实现难度:易描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。懒汉式,线程安全。

2023-10-08 14:19:26 261

原创 八大排序java

【代码】八大排序java。

2023-10-08 13:05:11 165

原创 linux常用命令

tar -czvf 压缩后的压缩包名称 文件夹 (压缩)例如: tar -czvf demo.tar.gz demo。如果想进入编辑状态 ,按【i】键(左下角看见insert,就可以编辑) 如果想退出编辑状态 ,按【esc】键。复制的文件 ,如果不使用绝对路径 ,就是在当前目录下复制 ,如果使用绝对路径 ,就在。vim 文件名 ,若文件不存在即创建文件 ,若文件存在即修改文件。没有编辑文件内容 ,在非编辑状态下 ,输入【:q】即可退出文件。如果在当前目录下使用mv命令 ,即修改文件或者文件夹名称。

2023-10-08 12:29:09 1194

原创 Druid数据库连接池

【代码】Druid数据库连接池。

2023-10-07 21:35:25 111

原创 延时队列java

当使用场景对数据完整性不那么精确时,可以使用redis的键过期策略。否则不太建议使用redis的键过期策略。③启动redis服务,发现redis的过期key已经不存在了,服务没有收到通知。redis的键过期本身不可靠,并不像rabbitmq一样保证了可靠性。当服务本身宕机或者redis宕机时,将无法保证过期的key能够被消费。③确认redis的key过期后,重启服务。②关停redis服务,等待redis的key过期。②手动关停服务,等待redis的key过期。当key过期时,redis服务宕机了。

2023-10-07 21:14:32 103

原创 SpringBoot配置kafka

现在,我们已经完成了 Kafka 生产者和消费者的设置。我们可以使用 mvn spring-boot:run 命令启动应用程序,并使用 curl 命令发送 POST 请求到 http://localhost:8080/send 端点,以将消息发送到 Kafka。然后,我们可以在控制台上查看消费者接收到的消息。在上面的代码中,我们使用 @KafkaListener 注解声明了一个消费者方法,用于接收从 my-topic 主题中读取的消息。我们可以根据需要进行更改和扩展,以满足特定的需求。

2023-10-06 20:29:15 1344

原创 docker 安装kafka

【代码】docker 安装kafka。

2023-10-05 22:06:44 1189

原创 简单业务调优

2023-09-26 23:22:50 27

原创 人员管理系统分页demo

2023-09-26 21:23:16 28

原创 异常拦截java

异常分类。

2023-09-25 22:41:00 32

原创 简单拦截器

线程缓存。

2023-09-25 21:54:31 23

原创 简单支付系统

2023-09-23 16:17:40 42

原创 XxlJob实现Alarm警告

2023-09-22 16:14:38 124

原创 配置xxljob

操作步骤,启动xxljob jar包,配置好文件和复制配置类,启动。

2023-09-21 23:54:18 33

空空如也

空空如也

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

TA关注的人

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