- 博客(38)
- 收藏
- 关注
原创 Redis分布式锁学习
我们利用添加过期时间,防止死锁问题的发生,但是有了过期时间之后,可能出现误删别人锁的问题,这个问题我们开始是利用删之前 通过拿锁,比锁,删锁这个逻辑来解决的,也就是删之前判断一下当前这把锁是否是属于自己的,但是现在还有原子性问题,也就是我们没法保证拿锁比锁删锁是一个原子性的动作,最后通过lua表达式来解决这个问题。**超时释放:**我们在加锁时增加了过期时间,这样的我们可以防止死锁,但是如果卡顿的时间超长,虽然我们采用了lua表达式防止删锁的时候,误删别人的锁,但是毕竟没有锁住,有安全隐患。
2024-09-27 15:37:14
614
原创 两个字符串的最长公共子序列(Longest Common Subsequence, LCS)、荷兰国旗问题、合并两个有序数组、约瑟夫环
问题描述:给定两个字符串str1和str2,输出两个字符串的最长公共子序列的长度。如果最长公共子序列为空,则返回"0"。目前给出的数据,仅仅会存在 一个最长的公共子序列输入描述:输入: “1A2C3D4B56”,“B1D23A456A”输出描述:输出: 6输入样例:1A2C3D4E56A1B2345C6D输出样例:6求两个字符串的最长公共子序列(Longest Common Subsequence, LCS)长度的问题,可以使用动态规划来解决。
2024-09-19 14:03:45
780
原创 Java中分布式锁
分布式锁是一种在分布式系统环境下控制对共享资源访问的机制,用于确保在多个节点或进程同时运行时的情况下,同一资源不会被多个进程同时访问,从而避免数据不一致、竞争条件和其他并发问题。由于在分布式环境中,不同的节点可能位于不同的物理机器上,因此需要一种能跨越不同节点的锁机制,这就是分布式锁的用途。
2024-09-15 14:16:44
690
原创 消息队列的幂等问题解决方案
消息队列的幂等性问题是指在处理重复消息时,保证消息被多次消费但只产生一次影响。由于网络延迟、消费端异常等原因,消息可能会被重复投递或消费,因此消息处理的幂等性是保证系统数据一致性的重要环节。
2024-09-14 10:58:17
2349
原创 Java面向对象
面向对象编程(OOP,Object-Oriented Programming)是一种编程范式,它基于“对象”这一概念来设计软件系统。对象是现实世界实体的抽象,封装了数据(属性)和行为(方法)。OOP主要通过封装、继承、多态这三大核心特性来提高软件的灵活性、可维护性和可扩展性。
2024-09-13 16:10:22
610
原创 秋招面经9.11
网络编程是指编写能够在计算机网络上进行通信的应用程序的过程。它涉及创建软件,使计算机、设备或应用程序能够通过网络(如互联网、局域网)互相交换数据或资源。网络编程的核心是处理各种网络协议,使用不同的编程语言和技术栈来实现网络通信的功能。问题解决后,进行总结,分析根本原因并记录下来,确保在未来的项目中避免类似问题。根据此次问题改进监控策略和自动化测试用例,尽量在开发和测试阶段发现问题。
2024-09-11 22:05:04
1577
原创 MySQL中的redo log、 undo log、bin log
redo log(重做日志)是MySQL InnoDB存储引擎中非常重要的一部分,用于保证数据库的持久性和崩溃恢复。它记录了对数据页所做的所有修改操作,确保在系统崩溃或其他意外情况下、数据库可以通过redo log进行恢复,使数据保持一致。
2024-09-10 21:43:00
1696
原创 Redis过期删除和缓存淘汰
在 Redis 中,键的过期删除机制主要包括惰性删除(Lazy Deletion)和定期删除(Periodic Deletion)。这两种策略有各自的优缺点,Redis 最终会结合这两种方法来管理过期键。
2024-09-09 18:20:00
1460
原创 Redis常见的数据结构
Redis底层的数据结构是Redis高效存储和操作数据的基础,Redis提供了五种基本的数据类型,每种类型在底层都有对应的数据结构来实现。这五种数据类型分别是:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。
2024-09-09 15:48:17
1364
原创 详解IOC、AOP及常见面试问题
控制反转(Ioc)是面向对象编程中的一种设计原则,它将对象的创建和依赖关系的管理权从应用程序代码转移到框架或容器中。传统的应用程序通常由应用程序代码主动创建对象并管理依赖关系,这导致高耦合性、难以进行单元测试和维护。Ioc通过容器控制对象的创建和依赖注入、使得代码更加松耦合、易于测试和维护。面向切面编程(AOP)是一种编程范式,旨在通过分离横切关注点(如日志记录、事务管理、安全性等)来提高代码的模块化程度。AOP允许将这些横切关注点封装在“切面”中,并在程序运行时动态地应用到目标代码中。
2024-09-08 20:14:09
1715
原创 Spring中Bean的生命周期
Spring容器首先根据Bean的配置(XML、注解、Java配置类等)通过反射机制创建Bean的实例,这个过程仅仅是实例化,Bean的属性和依赖此时尚未被注入。这个阶段允许你对已经初始化的Bean实例进行进一步处理,例如,包装成代理对象、动态增强Bean功能等。在Bean的依赖注入完成后,Spring容器会在初始化之前,允许你对Bean进行自定义操作。Bean的初始化是指在依赖注入完成后,Spring容器允许Bean进行自身的初始化配置。常用于修改Bean的属性配置,或者在容器中注册新的Bean定义。
2024-09-08 16:05:35
749
原创 Java中优先队列API
Java中的优先队列(PriorityQueue)是一个基于堆实现的无界队列,优先队列中的元素按照自然顺序或者通过提供的比较器排序。
2024-09-07 10:05:44
995
原创 Java秋招面经(网搜版)
字符串 (String) 适合存储简单的数据和计数器操作,操作简单且高效。哈希 (Hash) 适合存储和操作结构化数据,如对象的多个属性,提供细粒度的数据操作。集合 (Set) 适合存储唯一元素并进行集合运算,如去重和集合交集、并集等操作。
2024-09-05 20:30:40
1340
原创 记录Java秋招面经(网上找的)
MySQL 的索引机制通过 B+树索引、哈希索引和全文索引等类型,有效地加速了查询操作,尤其适合大数据量的表。然而,索引的使用也带来了维护开销和存储空间的消耗,因此需要根据具体的查询需求合理选择和设计索引。
2024-09-05 19:58:03
1962
原创 排序算法-用Java实现
排序(Sort)是将一组数据按照一定的规则来进行排列,一般按递增或递减的顺序来进行排列,排序算法是一种最基本的算法。
2024-09-04 21:15:25
1277
1
原创 位操作(Bitwise Operation)
位操作(Bitwise Operation)是一种直接对整数的二进制位进行操作的计算方法。在计算机中,数据通常以二进制形式存储,位操作允许我们直接操作这些二进制位。位操作通常比常规的算术运算更高效,因为它们直接作用于二进制位而不涉及更复杂的计算。
2024-09-04 10:00:08
753
原创 粗讲Java集合
Java集合框架(Java Collections Framework, JCF)是Java提供的一套设计良好,灵活、强大的数据结构和算法的集合库。它包括了接口、类和算法,用于存储、管理、操作和检索数据。
2024-09-03 16:53:40
945
原创 操作系统之锁、银行家算法,虚拟内存、页面置换
锁是操作系统中实现并发控制的重要机制,通过锁,可以有效避免多线程或多进程环境下的数据竞争和不一致问题。理解不同类型锁的特性、使用场景以及如何避免死锁,是编写高效并发程序的基础。同时,随着硬件和软件技术的发展,锁的替代技术(如无锁编程、乐观锁)也越来越受到关注,它们在提升系统性能的同时,也带来了新的挑战和机遇。
2024-09-02 21:11:03
1300
原创 详解synchronized
是 Java 中的一个关键字,用于实现线程同步。它确保在同一时刻,只有一个线程可以执行被修饰的代码块或方法,从而避免多线程并发访问共享资源时出现数据不一致的情况。主要用于解决多线程环境下的并发问题。
2024-08-31 20:35:51
947
原创 JMM(Java内存模型)详解
内存屏障,也称为内存栅栏(Memory Fence),是一种用于防止指令重排序的机制。它是CPU指令或JVM指令,用于在多线程编程中保证某些操作的顺序性和内存可见性。
2024-08-30 20:58:31
3076
原创 Java常见并发容器总结
是一个线程安全的哈希表实现,适用于在多线程环境下进行高效的键值对存储和查找操作。使用分段锁机制(在Java 7及之前版本)或CAS操作(Java 8及之后版本)提高并发性能。支持完全并发的读操作和在多数情况下有效并发的写操作。不允许 null 键或 null 值。需要高效并发访问的场景,比如缓存、频繁读取/写入的共享数据存储。
2024-08-30 16:37:36
1124
原创 数据库分库分表-ShardingSphere学习
ShardingSphere的架构主要围绕四个核心组件展开,分别是Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar(计划中)和Sharding-Scheduler(计划中)。这些组件可以独立部署,也可以组合使用,形成一个完整的分布式数据库解决方案。ShardingSphere通过提供统一的API和配置方式,使得这些组件可以在不同的场景下无缝协作。
2024-08-28 19:59:39
7884
1
原创 JVM常见八股问题
回答:JVM 是 Java 虚拟机,负责将 Java 字节码转换为机器码并执行。它提供了内存管理、垃圾回收、线程管理等功能,使得 Java 程序能够在不同操作系统上运行而无需修改。堆是 JVM 中的一块内存区域,用于存储对象实例,所有线程共享这块内存。栈是 JVM 中为每个线程分配的内存区域,用于存储局部变量和方法调用。栈中的数据是线程私有的。堆用于存储对象,所有线程共享,而栈用于存储方法调用和局部变量,线程独享。栈中的数据生命周期与方法调用有关,而堆中的对象生命周期与垃圾回收机制有关。
2024-08-27 15:38:01
774
原创 详解MVCC及其面试中常遇问题
MVCC 是一种用于数据库管理系统的并发控制方法,通过维护数据的多个版本来避免读写冲突,从而提高并发性能。它允许读操作不阻塞写操作,反之亦然。
2024-08-27 15:11:40
616
原创 MySQL中的行级锁和表级锁
行级锁适用于高并发、频繁更新的场景,但有较高的系统开销。主要用于 InnoDB 引擎。表级锁适用于低并发、批量操作的场景,系统开销低但并发性能较差。主要用于 MyISAM 引擎。行级锁和表级锁是最常用的锁,适合不同的并发控制需求。页面锁、自增锁、共享读锁等用于特定场景,自动或手动管理。意向锁和元数据锁则是 MySQL 的内部机制,用于确保锁之间的兼容性和表结构的安全性。Gap 锁和Next-Key 锁在 InnoDB 的事务隔离级别中扮演重要角色,用于解决幻读问题。
2024-08-26 18:33:52
1470
原创 数据库分库分表
分库分表是一种常用的数据库架构设计策略,主要用于解决单一数据库在处理海量数据和高并发请求时的性能瓶颈。通过将数据分散到多个数据库和数据表中,分库分表可以提高系统的吞吐量,扩展性和可靠性。
2024-08-24 20:55:43
1303
原创 论文笔记 ROBUST PRUNING AT INITIALIZATION
这篇论文的主要贡献和创新点是:论文的核心思想和方法是:论文的优缺点和未来工作是:
2023-04-13 16:58:02
1373
2
原创 论文笔记 LOOKAHEAD: A FAR-SIGHTED ALTERNATIVE OFMAGNITUDE-BASED PRUNING
基于大小的剪枝是最简单的神经网络剪枝方法之一。基于观察到基于幅度的剪枝确实最小化了对应于单层的线性算子的Frobenius范数失真,我们通过将单层优化扩展到多层优化,开发了一种简单的剪枝方法,称为超前剪枝。
2023-03-22 16:01:33
350
1
原创 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow
修剪神经网络的参数可以在训练和测试期间节省时间、内存和能量。最近的研究发现,通过一系列昂贵的训练和修剪周期,初始化时存在中奖彩票或稀疏可训练的子网络。这就提出一个基本问题:我们能否在初始化时识别出高度稀疏的可训练的子网络,而不需要训练,或者实际上不需要查看数据。答案是肯定的,该文章首先在数学上制定并实验验证了一个守恒定律,该定律解释了为什么现有的基于梯度的修剪算法在初始化时会出现层塌,整个层的过早修剪使网络不可训练。该理论还阐明了如何完全避免层塌,激发了一种新的剪枝算法迭代突触流剪枝(SynFlow)。该算
2023-03-20 21:29:10
957
1
原创 论文笔记 DEEP COMPRESSION: COMPRESSING DEEP NEURALNETWORKS WITH PRUNING, TRAINED QUANTIZATIONAND HUFFM
深度压缩是一个三级阶段的管道:修剪、训练过的量化、和霍夫曼编码。该方法首先通过只学习重要的连接来修剪网络,然后对权重进行量化,实现权重共享,最后采用霍夫曼编码。在前两步之后,我们重新训练网络来微调剩余的连接和量化的质心。该方法有助于在应用程序大小和下载带宽受限的移动应用程序中使用神经网络。
2023-03-20 09:42:12
222
1
原创 论文笔记 Grasp(梯度信号)
对于给定的简直比例p,我们可以通过一次计算剪枝条件,并对其进行排序,然后去除权重的前p%来得到最终的剪枝掩码。粗略的说,Grasp考虑了剪枝后梯度流的变化,而SNIP只保留剪枝后的损失,这可能不会保持梯度流。由于文章只关心修剪网络的性能,因此目标是保留甚至增加修剪后的梯度流(即修剪网络的梯度流)。黑森矩阵H捕获每个权重之间的相关性,从而调节修剪对剩余权重的影响,当H为恒等时,上述判断依据恢复SNIP到绝对值(回想SNIP判据为。是负的,那么去掉相应的权重会减少梯度流动,否则不会。二、原文部分培养代码展示。
2023-03-19 15:39:57
652
1
原创 论文笔记 -SNIP 基于灵敏度的单次网络剪枝
与一式相比,我们将网络中可学习参数的数量增加了一倍,直接优化二式更加困难,由于我们已经将连接的权重(w)与连接是否存在(c)分开,我们可能通过测量每个连接对损失函数的影响来确定每个连接的重要性。由于网络在训练前修剪一次,因此不需要预训练和复杂的修剪计划,没有额外的超参数,一旦修剪,稀疏网络的训练是按照标准的方式进行的。基于连接灵敏度的显著性标准,该标准为给定任务识别网络中结构上重要的连接,这消除了预训练和复杂的修剪计划的需要,同时使其对架构变化具有健壮性。的无穷小变化的变化率。表示所需的非零权重的数量。
2023-03-17 19:01:44
1061
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅