自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于使用拓扑排序算法实现解析勾稽关系优先级的研究和实现

1. 勾稽关系勾稽关系(Reconciliation Relationship)是一个财务术语,指的是在会计和审计中,不同会计报表或报表项目之间存在的逻辑对应关系。这种关系可以用来验证会计数据的准确性和完整性。:资产 = 负债 + 所有者权益,这是会计的基本等式,也是最基础的勾稽关系。即 3 = 1+2 , 4 = 5+ 2 , 7 = 1 + 6 .这里的勾稽关系: 有2.拓扑排序简单来说就是一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。

2024-12-22 20:48:32 449

原创 nginx学习总结(不包含安装过程)

(1)以root方式设置资源路径语法 root path ,默认 root html,可以在http、server、location模块中配置。如果url为则会返回/data/www/backend/backend/index/test.html这个文件。(2)以alias方式设置资源路径如果url为则会返回/data/www/backend/index/test.html文件。alias会将location后的url部分丢弃掉,而root不会。

2024-12-22 15:16:58 1013

原创 RabbitMq学习笔记-消息发送的可靠性问题

通过MessageDeliveryMode.PERSISTEN 设置实现消息。在执行 docker stop mq11 后 关闭 mq。生产者的publisher-return的三种模式类型。mq消息发送会出现page out (相当于刷盘)注意: 通常关闭Publisher Return。在发送消息的同时 持久化操作 但不会刷盘。消息发送结果稳定 保持在60k/s左右。只有这种消息 消息 才会reject。、lazyQueue设置方式。

2024-12-09 22:19:12 504

原创 mysql事务的隔离级别学习

【不可重复读】的官方解释是:【一个事务】(A事务)修改了【另一个未提交事务】(B事务)读取过的数据。那么B事务【再次读取】,会发现两次读取的数据不一致。**幻读:**一个事务按照某些条件进行查询,事务提交前,有另一个事务插入了满足条件的其他数据,再次使用相同条件查询,却发现多了一些数据,就像出现了幻觉一样。学习完不可重复读,理解【可重复读】就简单多了,他的意思是,同一个事务中发出同一个SELECT语句【两次或更多次】,那么产生的结果数据集总是相同的,在RR隔离级别中可能出现幻读。幻读问题是得到一定解决的。

2024-09-18 23:19:36 694

原创 Redis的发布订阅模式及使用场景

【代码】Redis的发布订阅模式及使用场景。

2024-09-06 16:59:46 237

原创 Java中的 锁机制

在多线程编程中,synchronized 一直是元老级角色,但它过于重了,但在jdk1.6后对其做了大量的优化操作,它减轻了很多。JAVA SE 1.6 中为了减少获得锁和释放锁带来的性能消耗而引入了偏向锁和轻量级锁。synchronized 有三种加锁的实现方式1. 修饰实例方法,作用于当前实例加锁,进入到同步代码前要获取当前实例的锁,2. 静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁3. 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。分类。

2024-09-05 00:21:44 920

原创 JMM内存模型

​ 程序成功退出,volatile能强制对改变量的读写直接在主存中操作,从而解决了不可见的问题。写操作是,立刻强制刷在主存,并且将其他缓存区域的值设置为不可用,由此可见volatile 即可禁止指令重排也可保证java运行时的数据在内存的可见性。

2024-09-04 15:23:00 848

原创 Thread.start()和run()方法的区别及原理

在大多数情况下,如果您只打算重写run()方法而不打算重写其他Thread方法,则应使用Runnable接口。1.run 普通方法 ,start() 线程的启动方法 , 通过源码可以看到 start()底层是调了一个 start0的本地方法 ,start()方法启动新线程时,该线程会进入就绪状态,等待JVM 调度它和其他线程的执行顺序。2. run 方式不启动新线程,start()方法中会并行执行run 方法的内容, run 方法 的底层则是一个函数式接口,该类必须定义一个名为run的无参数方法。

2024-09-04 10:09:45 470

原创 Redis分布式锁实现解析 - 结合秒杀业务

1.2. 获取事务的代理对象,防止事务的失效,同时暴露代理对象解决超卖问题:认为线程安全问题一定会发生,因此在操作数据之前先获取锁,确保线程串行执行。例如SynchronizedLock都属于悲观锁乐观锁:认为线程安全问题不一定会发生,因此不加锁,只是在更新数据时去判断有没有其它线程对数据做了修改。如果没有修改则认为是安全的,自己才更新数据。如果已经被其它线程修改说明发生了安全问题,此时可以重试或异常。分布式锁: 使用setnx 实现 多jvm 的锁监视器,(多进程可见)

2024-09-03 15:31:21 682

原创 锁-- 可重入

初次执行到synchronized代码块的时候,锁对象变成偏向锁(通过CAS修改对象头里的锁标志位),字面意思是“偏向于第一个获得它的线程”的锁。如果锁竞争情况严重,某个达到最大自旋次数的线程,会将轻量级锁升级为重量级锁(依然是CAS修改锁标志位,但不修改持有锁的线程ID)。当后续线程尝试获取锁时,发现被占用的锁是重量级锁,则直接将自己挂起(而不是忙等),等待将来被唤醒。如果多个线程用一个锁,但是没有发生锁竞争,或者发生了很轻微的锁竞争,那么synchronized就用轻量级锁,允许短时间的忙等现象。

2024-08-30 12:02:35 800

原创 kafka集群初始化过程及底层原理

Kafka是分布式消息传输系统,所以存在多个Broker服务节点,但是它的软件架构采用的是分布式系统中比较常见的主从(Master - Slave)架构,也就是说需要从多个Broker中找到一个用于管理整个Kafka集群的Master节点,这个节点,我们就称之为Controller。如果申请成功,那么会完成管理者的初始化操作,并建立和其他Broker之间的数据通道接收各种事件,进行封装后交给事件管理器,并定义了process方法,用于真正处理各类事件。)并启动,用于完成节点内部的工作任务。

2024-06-04 23:54:39 2001 1

原创 kafka浅学

Kafka 是一种高吞吐、分布式、基于发布和订阅模型的消息系统,最初是由 LinkedIn 公司采用 Scala 和 java 开发的开源流处理软件平台,目前是 Apache 的开源项目。Kafka 用于离线和在线消息的消费,将消息数据按顺序保存在磁盘上,并在集群内以副本的形式存储以防止数据丢失。Kafka 可以依赖 ZooKeeper 进行集群管理,并且受到越来越多的分布式处理系统的青睐,比如 Storm、Spark、Flink 等都支持与 Kafka 集成,用于实时流式计算。

2024-06-03 23:03:18 314 3

原创 springcloud 学习总结 2

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高。中服务存储和数据存储的最外层都是一个名为。本地集群不可访问时,再去访问其它集群。三级是实例,例如杭州机房的某台部署了。二级是集群,例如杭州或上海。的东西,用来做最外层隔离。如何设置实例的集群属性。

2023-07-22 23:27:25 180 1

原创 SpringCloud 学习总结 1

将业务的所有功能集中在一个项目中开发,打成一个包部署。架构简单 部署成本低耦合度高:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。降低服务耦合 有利于服务升级拓展服务拆分粒度如何?服务集群地址如何维护?服务之间如何实现远程调用?服务健康状态如何感知?微服务是一种经过良好架构设计的架构方案,微服务架构特征:•单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发•面向服务:微服务对外暴露业务接口•。

2023-07-22 01:10:27 250 1

原创 mq初学总结

点对点模型,消息发送到一个队列中,队列保存消息。队列的消息只能被一个消费者消费,或超时。:发布订阅模型,消息可以被多个消费者消费,生产者和消费者完全独立,不需要感知对方的存在。):一种协议(高级消息队列协议,也是消息代理规范),规范了网络交换的数据格式,兼容。优点:具有跨平台性,服务器供应商,生产者,消费者可以使用不同的语言来实现。使用多消息监听器对消息队列监听进行消息轮循处理。生产与消费消息(指定消息存储队列)规范,提供了与消息服务相关的。使用消息监听器对消息队列监听。springboot 整合。

2023-07-11 23:40:08 176 1

原创 1.银行家算法模拟 -- 求出安全序列 2.进程调度之先进先出

思路: 要求出安全排列,只需要枚举n各进程的每种全排列 枚举即可。类似dfs方式暴搜 // 求全排列数。//2 3 3 // 初始可用资源。银行家算法模拟 -- 求出安全序列。//5 // 线程数。//3 / / 资源数。

2023-05-07 00:30:06 497 1

原创 spring-Aop 源码解析 总结

AbstractAutoProxyCreator.class中重写 postProcessafterInitialization(Bean后处理器) 方法动态介入Bean生命周期中 wrapIfNecessary 返回最终的动态代理对象。JdkDynamicAopProxy 中 getProxy方法返回 proxy,newProxyInstance() 方法生成的proxy对象。关于Proxy对象的产生与Bean的生命周期 AbstractAdvisorAutoProxyCreator的继承体系。

2023-04-15 00:42:44 73

原创 关于Spring整合第三方框架之整合mybatis部分源码解析

配置MapperScannerConfigurer作用是扫描Mapper,向容器中注册Mapper对应的MapperFactoryBean,其实,加载的properties文件中的属性最终通过Spring解析后会被存储到了Spring容器的environment中去,不仅。化,就开始扫描Mapper并通过动态代理产生Mapper的实现类存储到Spring容器中。自己定义的属性会进行存储,Spring也会把环境相关的一些属性进行存储。MapperScannerConfigurer实现了。

2023-04-14 23:41:43 91

原创 AOP思想 - 初步学习

然后通过 JDK 动态代理是通过反射调用的方式代理类中的方法,不能代理接口中不存在的方法。RTTI 是 Run Time Type Information 的缩写,从字面上来理解就是执行时期的类型信息,其重要作用就是动态判别执行时期的类型。我们在项目开发中经常使用 AOP 技术完成一些切面服务,如耗时监控、事务管理、权限校验等,所有操作都是通过切面扩展实现的,不需要对源代码有所侵入。你不需要关注目标类的实现细节,通过代理模式可以在不修改目标类的情况下,增强目标类功能的行为。XML下的AOP快速入门。

2023-04-11 23:06:27 85

原创 springboot下整合mybatis - 1 - 多表查询

接口继承的BaseMapper可实现 Mybatisplus的作用。查询的sql字段对应类的属性值 从而完成映射连接。

2023-04-10 20:46:07 737

原创 Springboot下连接数据库知识点总结

lombok 是一个实用类库 能够通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。库连接池发现Connection对象的空闲时间 > 连接池中预设的最大空闲时间,此时数据库连接池。3. 在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪。程序在启动时,会在数据库连接池(容器)中,创建一定数量的Connection对象。

2023-04-08 20:09:24 1704

原创 关于Spring框架bean的学习总结 2

3,Ban初始化阶段 :而Bean对象放入单例池的过程中,会执行 aware接口方法回调 BeanPostProcessor 中的bofore(),after(), setpropetry(),Bean的自定义初始化方法也在此过程执行,Spring 大多数功能增强,Aop都是在此过程中完成。2, 注入单向对象引用属性时,从容器中getBean获取后通过set方法反射设置进去,如果容器中没有,则先创建被注入对象Bean实例(完成整个生命周期)后,再进行注入操作;框架具备高度封装性,我们接。

2023-04-02 09:47:23 116

原创 java基础知识补充 :动态代理与lambda表达式

Lambda允许把函数作为一个方法的参数,使用Lambda表达式可以写出更简洁、更灵活的代码,使Java的语言表达能力得到了提升,更具有可读性。2 . ava SDK代理的是对象,需要先有一个实际对象,自定义的InvocationHandler引用该对象,然后创建一个代理类和代理对象,客户端访问的是代理对象,代理对象最后再调用实际对象的方法。是一种java强大的功能,它可以在运行时动态创建一个类,实现一个或多个接口,可以在不修改原有类的基础上动态为通过该类获取的对象添加方法、修改行为。

2023-03-30 19:56:31 299

原创 关于Spring框架Bean的学习总结 1

关于Spring框架Bean的学习总结 1

2023-03-28 14:47:28 72

原创 【无标题】

完全背包问题的解法 ,思考

2023-03-26 20:21:59 282

原创 来源:第十二届蓝桥杯省赛第一场C++A/研究生组,第十二届蓝桥杯省赛第一场JAVAA组 --- 异或数列

异或, 博弈论

2023-03-18 18:01:53 525

原创 关于图的连通性问题 -- 求删除后连通块的个数

关于图的连通性问题 -- 求删除后连通块的个数

2023-03-11 22:02:02 1031

原创 acwing1406题 : 一道二分 + 字符串哈希 的算法题

acwing1406题 : 一道二分 + 字符串哈希 的算法题

2023-02-16 19:36:53 89

空空如也

空空如也

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

TA关注的人

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