自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从八股文到奇怪的缓存一致性问题

本文是最近看阿里云开发者的一遍奇怪的缓存一致性问题的总结与新得,原文放在文章末尾。

2024-09-03 15:23:54 415

原创 深入学习零拷贝

DMA(Direct Memory Access)是直接内存访问技术。在进行I/O设备和内存数据传输的过程中,数据搬运的过程全部交给DMA控制器,而CPU不参与任何与数据搬运的事情。这样说可能不太明白。CPU发出对应的指令给磁盘控制器,然后返回磁盘控制器收到命令后,将所需的数据从磁盘搬运到磁盘缓冲区中,之后发出中断CPU收到中断以后放下当前的事务优先处理中断请求(中断请求未完成不会处理其他事情),接着讲磁盘缓冲区的数据一次一个字节地读进自己的寄存器中,然后再把寄存器中的数据写入到内存。

2024-08-14 17:28:10 677

原创 深入学习Redis数据结构

redis是基于内存的数据库,对数据的读写操作都是在内存中完成的,操作速度快。常用于缓存,消息队列,分布式锁等场景数据结构:常见数据类型:String,Hash,list,set,Zset新支持:BitMap,HyperLogLog,GEO,Stream。

2024-08-12 19:46:24 493

原创 数据库连接池的深入学习

正常操作数据库需要对其进行连接,访问数据库,执行sql语句,断开连接。创建数据库连接是一个昂贵的过程,在高并发的情况下,频繁的创建数据库的连接可能会导致数据库宕机。有了连接池那么启动就创建多个连接对象,并保存起来,当需要的时候取出来执行sql语句,用完放回,那么极大的减少了连接的建立与摧毁的开销。池化技术从根本上就是将连接的对象保存起来,并不对其进行摧毁,那么在高并发的场景下不需要频繁的对连接进行创建与销毁,减少创建资源的开销。增加响应速度。(线程池也如此)

2024-08-08 20:35:41 300

原创 Seata的使用

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

2024-08-01 15:05:10 885

原创 遇到缓存问题

value为缓存的名字。相当于开辟了一块空间,根据不同的请求参数,空间内会缓存多个结果,会根据请求参数生产一个key,需要对请求参数生产hashcode和equals方法,用于生产key。(如果缓存直接失效:比如缓存机器换了,热点key突然没有了)使用分布式锁,只让一个请求拿到锁并查询数据库,其他请求都失败,告诉其他用户稍后等待。当一个类需要保存起来,下次再还原成类是就需要序列化,或者需要远程传输,比如放到redis里,也需要序列化。当不加事务的时候执行sql,执行完之后会话就会结束,一级缓存就会消失。

2024-07-30 16:34:06 554

原创 Nacos的使用

作用:健康检查:比如有3个节点,其中一个已经挂了可能都不知道,另外两个还在提供服务。有控制中心可以从控制台上看见每个节点的状态,还可以主动的让某一节点下线,常用于发布前下线路由转发:在gateway中是按IP进行路由转发,生产情况下,不止一台,并且一个应用节点随时会扩容/缩减。高峰期扩容,低峰期衰减。为了控制成本,会对机械做动态扩容,此时的IP就不固定了。远程调用。

2024-07-28 17:34:38 370

原创 Web后端开发的学习

Aspect Oriented Programming (面向切面编程,面向方面编程) :面向特定方法编程。标签 :根据里面条件判断是否自动生产where子句 自动去除第一个条件多余的and /or。创建类,加上注解:@Component @Aspect//AOP类。优势:代码无侵入 减少重复代码 提高开发效率 维护方便。场景:记录操作日志 权限管理 事务管理。分页插件:PageHelper。

2024-06-14 17:17:18 1009

原创 网络通讯聊天工具的实现v2

在原有基础上加入文件的传输功能。从客户端传送到服务器后,服务器接受文件,再转发给其他客户端,客户端接受后服务器删除文件。涉及文件的读取与关闭。

2024-05-29 20:31:12 470

原创 网络通讯聊天工具的实现

学习网络与通信,实现聊天界面能够通过服务器进行私聊和群聊的功能。

2024-05-27 21:04:59 640

原创 Mysql数据库的学习

1.持久化:将数据保存到可掉电式存储设备中以供使用。

2024-05-11 10:47:42 819

原创 生产消费者线程池的可视化实现V2

只需在启动监听中初始化数据即可。

2024-05-09 17:30:15 199

原创 生产消费者线程池的可视化实现V1

实现一个可视化界面,能够监控以及调整生产者,消费者线程池的参数系统1.生产者:-用户输入参数:线程:任务数量,每个任务生产的时间-可视化数据:已经生产的任务总量,任务生产消耗的时间2.消费者:(初步设为三个步骤)-线程池A/B/C:-用户输入参数:核心线程数量,最大线程数,非核心线程的存活时间,阻塞队列(工作队列)容量,每个任务消耗的时间。-可视化数据:每个线程池已经完成的任务量,工作队列的剩余任务数量,当前激活线程数量。-总体可视化数据:系统的运行时间,已完成的任务总量,预计完成时间。

2024-05-07 15:58:23 652

原创 阻塞队列的实现

添加方法:判断此时队列元素是否已满,满了的话就调用wait()的办法让他停下来,别继续添加了。当队列满了的时候叫生产者停止生产,装不下了,同时提醒消费者进行消费。添加和移除方法大部分就完成了,但是任会有一个问题就是可能会有多个线程同时调用,那么就需要给方法上锁。那么有人会想到如果将两个方法的判断换一下会不会依旧如此,可以试一下会发现生产者生产完了消费者才开始消费,就是一个逻辑问题,不能保证中间过程的进行。为了解决普通创建队列的线程安全问题,创建的普通队列在多个线程的查找与输入中导致数据的丢失。

2024-04-29 19:50:31 344 1

原创 线程池的简易使用方法

默认工厂创建的线程的特点:属于相同的线程组,具有同为Thread.NORM_PRIORITY的优先级,以及名为“pool-XXX-thread-”的线程名。5.没有空闲线程,阻塞队列已满,池中线程数等于maxmumpoolsize,就会采用handler中指定的策略来拒绝新的任务。核心线程就是启动后不会关闭的线程,为主要核心。3.如果没有,并且当前线程数等于核心线程数,则会将任务存入阻塞队列中,等待核心线程完成后再执行。2.如果没有,并且当前运行的线程少于核心线程数,此时会再开启一个线程来执行。

2024-04-28 16:44:06 444

原创 多线程的简单认识

进程是操作系统中进行资源分配和调度的一个独立单位,是应用程序运行的实例,拥有独立的内存空间。如:qq,微信等软件。每个进程至少有一个线程,即主线程。线程是进程中的一个实体,是cpu调度和执行的单位,是比进程更小的能独立运行的基本单位。比如:将qq视为一个进程,那么qq里面的功能,处理用户的交互,聊天记录的存储等可视为一个个的线程。用户使用的qq可以视为一个线程集合,运行在qq进程中。

2024-04-20 20:03:59 904

原创 文件写入与读取

在之前写的五子棋中给他加入文件读取与写入功能,实现用户注册与历史棋盘的效果。

2024-04-20 11:59:43 281

原创 简易五子棋的实现

实现人人对战的五子棋并且可以判断输赢。

2024-04-17 11:51:48 637

原创 HashMap的简易原理及实现

采用数组/链表的方式,时间复杂度为0(n)但当需要我们查找的数据量过大时,所需时间较多。当我们需要查找的时间复杂度比较小时可以采用哈希表。

2024-04-13 08:56:02 462 1

原创 简易动态数组,链表,队列,栈的实现

定义数组以及大小,及其构造方法,以传入的数组,以及大小。

2024-04-08 20:05:58 900

原创 算法刷题1

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。想到递归的方法每次返回各链表最小的元素并指向下一个。调用自己直到list1 == null || list2 == null;

2024-04-08 18:46:17 268

原创 递归实现多重随机中点坐标的谢尔宾斯基三角形

本章使用动态数组的方式来实现,将每一个点存入数组中并且找到是否计算过相同两点的中点坐标来避免重复计算。中点中标有一个随机浮动的范围。

2024-04-08 10:32:02 572

原创 java中简单递归

简单的可以称作程序自己调用自己,

2024-04-03 19:22:04 203 1

原创 窗体的重绘

在之前所制造的画板窗体中实现了画出各种图形,但可以发现当我们缩放窗体时此时并未保留我们所画出的图形。应为窗体实现了改变大小是重新渲染绘制的方法,但我们所绘制的图形,并非是窗体的一部分,因此我们要实现窗体刷新时将保存的图形再绘制一遍。此时就需要重写窗体中重新绘制的方法。

2024-04-03 10:50:02 650 1

原创 简易五子棋界面

【代码】简易五子棋界面。

2024-04-03 10:01:47 84 1

原创 通过鼠标监听实现画板中通过画直线画出三角形与多边形

【代码】通过鼠标监听实现画板中通过画直线画出三角形与多边形。

2024-03-31 18:51:42 117 1

原创 MouseListener的简易使用

鼠标监听器:MouseListenser在java.awt.event中。

2024-03-30 19:31:10 530 1

原创 界面中事件监听

在上篇创建简单的窗体口点击按钮并未反应,因为按钮的作者并未知道开发者使用按钮创建对象用于干什么,但他知道了你是否点击了按钮。因此设计了一套底层运行的调用逻辑,点击按钮时会调到一个接口中的方法。但这个方法没有具体的内容,为抽象方法。因此需要开发者自己编写。动作监听器接口:ActionListener 在java.awt.event中。

2024-03-30 15:13:40 318 1

原创 界面开发初级的学习

在界面开发中主要运用的就是创建对象与对象名调用的方法。创建对象:类名 对象名 = new 类名();对象名调用:对象变量名.方法名();

2024-03-28 19:54:01 236

原创 类与对象理解

public class 类名{}

2024-03-26 17:23:12 386

原创 JAVA基础学习

根据项目的内容及特点对其进行命名。如:pro24 表示24的程序。

2024-03-24 19:50:52 735 1

空空如也

空空如也

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

TA关注的人

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