forty-nine
码龄3年
求更新 关注
提问 私信
  • 博客:15,935
    15,935
    总访问量
  • 42
    原创
  • 154
    粉丝
  • 41
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
加入CSDN时间: 2022-05-05
博客简介:

m0_70577179的博客

查看详细资料
个人成就
  • 获得202次点赞
  • 内容获得14次评论
  • 获得202次收藏
创作历程
  • 8篇
    2024年
  • 34篇
    2023年
成就勋章

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 3

TA参与的活动 0

  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

redis单线程还快的原因

其中,快照方式通过将内存中的数据定期写入磁盘,而AOF日志则记录每次写操作,使得Redis能够在系统宕机后快速地恢复数据。虽然Redis是单线程模型,但通过以上优化和设计,它仍然能够实现出色的性能表现,在大多数应用场景下都能够满足高并发、低延迟的要求。它使用了高性能的事件处理器,如epoll(Linux系统)、kqueue(BSD系统)等,以非阻塞的方式处理多个并发连接,从而提高了系统的吞吐量和响应速度。Redis的设计非常简洁,功能清晰明了,避免了复杂的逻辑和不必要的开销。
原创
发布博客 2024.02.09 ·
1651 阅读 ·
11 点赞 ·
0 评论 ·
12 收藏

mysql索引的概念以及数据结构

与B-Tree不同,B+Tree只在叶子节点存储数据,内部节点只存储键值和指向下一级节点的指针,这提高了数据检索的效率。避免频繁更新的字段上建立索引: 索引的维护需要额外的成本,如果在经常更新的字段上建立索引,可能会导致性能下降。选择合适的索引: 根据查询的需求和数据分布选择合适的索引类型,避免创建过多或不必要的索引。联合索引优化: 考虑创建联合索引以覆盖多个查询条件,但要注意索引的顺序对查询性能的影响。注意索引列的选择: 应该优先选择查询频率高、选择性好的列进行索引,以获得更好的查询性能。
原创
发布博客 2024.02.09 ·
710 阅读 ·
9 点赞 ·
0 评论 ·
10 收藏

redis的数据淘汰测略

需要注意的是,不同的淘汰策略适用于不同的场景和需求。同时还可以通过设置 maxmemory 参数来限制 Redis 使用的最大内存,当内存超出限制时,根据淘汰策略进行数据删除。对于不同的业务场景,可能需要进行一定的测试和调优,以找到最适合的数据淘汰策略。:从已设置过期时间的键中挑选最近最少使用的数据进行淘汰。:从已设置过期时间的键中挑选最不经常使用的数据进行淘汰。:从已设置过期时间的键中挑选即将过期的数据进行淘汰。:从已设置过期时间的键中随机选择数据进行淘汰。:从所有键中挑选最不经常使用的数据进行淘汰。
原创
发布博客 2024.02.03 ·
591 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

冒泡排序(Bubble Sort)、快速排序(Quick Sort)和归并排序(Merge Sort)

冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,依次比较相邻两个元素,如果它们的顺序错误就交换它们。快速排序是一种基于分治思想的高效排序算法,它选取一个元素作为基准值,将数组分为小于基准值和大于基准值的两个子数组,然后对这两个子数组进行递归排序,最终得到有序数组。归并排序也是一种基于分治思想的排序算法,它将数组划分为较小的子数组,然后对子数组进行递归排序,最终通过合并操作得到有序数组。归并排序的时间复杂度为 O(nlogn),但需要额外的空间来存储合并过程中的数组。
原创
发布博客 2024.02.03 ·
838 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

HashMap的结构和put流程

然而,在极端情况下,所有的键值对都被存储在同一个桶中,形成了一个链表或红黑树,此时的操作时间复杂度可能退化为O(N),其中N是键值对的数量。在进行插入、查找或删除操作时,HashMap会根据键的哈希值快速定位到对应的桶,然后通过键的引用或equals方法在桶中查找或操作相应的键值对。,根据要插入的键(key)计算其哈希值(通过key的hashCode方法),然后通过哈希值和HashMap的内部数组长度进行取模运算,得到该键值对应的存储位置(桶)的索引。如果数量较多,会将链表转换为红黑树,以提高查找效率。
原创
发布博客 2024.01.27 ·
402 阅读 ·
7 点赞 ·
0 评论 ·
10 收藏

线程创建的四种方式

在上述例子中,通过Executors.newFixedThreadPool(2)创建了一个固定大小为2的线程池,然后提交了5个任务给线程池执行。在上述例子中,创建了一个实现了Runnable接口的类MyRunnable,并实现了run()方法。在Java中,有4种主要的方式来创建线程:通过继承Thread类和通过实现Runnable接口,实现Callable接口,线程池。通过实现Runnable接口,需要实现run()方法,然后将实现了Runnable接口的类的实例传递给Thread类的构造函数。
原创
发布博客 2024.01.27 ·
418 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

MySql索引

*聚簇索引(Clustered Index):**聚簇索引按照索引的键值对表中的实际数据进行排序,并以此作为物理存储顺序。**非聚簇索引(Non-clustered Index):**非聚簇索引是独立于实际数据的一种索引结构,它包含索引的键值和指向实际数据的指针。除了上述常见的索引类型之外,MySQL还支持其他类型的索引,如前缀索引、组合索引等。因此,在设计数据库时,应该根据具体的业务需求和数据量大小,合理地选择使用索引,并对索引进行优化。通过存储索引的键值和指向实际数据行的指针来加速数据的查找和检索。
原创
发布博客 2024.01.19 ·
412 阅读 ·
8 点赞 ·
0 评论 ·
11 收藏

mvcc机制

它通过在数据库中维护多个版本的数据来实现,允许不同的事务同时读取和修改同一表的数据,而不会产生冲突。每个事务在执行时都能看到一个一致的数据库状态,这个状态是在事务开始时确定的。在整个事务执行期间,事务都只能看到这个快照中的数据,而不受其他事务的影响。当一个事务执行读操作时,它会使用事务开始时创建的快照,而不受其他并发事务的修改影响。当事务提交时,它所做的修改会变为当前数据库状态的一部分,而其他事务将能够看到这些修改。在MVCC中,事务B读取的是事务A开始前的数据快照,而不受事务A的修改的影响。
原创
发布博客 2024.01.19 ·
431 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

数据库常用锁

描述: 排他锁是一种独占锁,一个事务获得排他锁后,其他事务无法再获取相同数据的任何类型的锁,包括共享锁和排他锁。示例: 一个事务可能在某个数据行上持有共享锁,但是有意向在之后对该行进行排他操作,它会获取意向排他锁,告诉其他事务有可能会在该行上设置排他锁。示例: 当一个事务对某行数据进行读取时,它会获取共享锁,其他事务也可以获得相同数据的共享锁,但是不允许有任何事务获取排他锁(独占锁)。示例: 当一个事务对某行数据进行写入(更新或删除)时,它会获取排他锁,阻止其他事务获取相同数据的任何类型的锁。
原创
发布博客 2023.12.11 ·
427 阅读 ·
6 点赞 ·
1 评论 ·
11 收藏

CPU密集型和IO密集型对 CPU内核之间的关系

但是,由于CPU密集型任务主要依赖于处理器的计算能力,因此在多个CPU内核之间的性能提升并不是线性的,也就是说,随着CPU内核数量的增加,任务的执行效率会逐渐降低。在这种情况下,多个CPU内核之间的关系并不是单纯的竞争关系,而是一种协作关系,通过充分利用CPU资源来提高系统的性能和效率。是指需要大量计算能力的任务,例如图像处理、科学模拟等,通常会占用CPU的大部分时间,而IO密集型任务则是指需要进行大量IO操作的任务,例如文件读写、网络通信等,这些任务的执行过程中通常会涉及到IO操作等待的时间。
原创
发布博客 2023.12.07 ·
422 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

ELK的日志解决方案

例如,可以使用 Filebeat 作为输入源,将指定文件内的日志数据发送给 Logstash,然后使用 Grok 进行日志格式解析和字段提取,最后将处理后的日志数据发送到 Elasticsearch 中。启动 Elasticsearch、Logstash 和 Kibana 后,可以通过浏览器访问 Kibana 的 Web 界面,例如:http://localhost:5601。是一个开源的数据收集引擎,用于将不同来源的数据转换成统一的格式并发送到 Elasticsearch 中。
原创
发布博客 2023.12.06 ·
1445 阅读 ·
21 点赞 ·
0 评论 ·
20 收藏

线程池7大参数,4大拒绝策略详解

在这个示例中,我们创建了一个线程池,核心线程数为5,最大线程数为10,空闲线程存活时间为60秒,任务队列容量为100,使用默认的线程工厂和CallerRunsPolicy拒绝策略。当线程池中的线程数量超过核心线程数时,并且任务队列已满时,线程池会创建新的线程来处理任务,直到达到最大线程数。:当线程池中的线程数量超过核心线程数时,多余的空闲线程的存活时间。超过这个时间,空闲线程将被回收,直到线程数量等于核心线程数为止。可以自定义线程工厂,以便在创建线程时进行一些特殊处理,比如指定线程名字、设置线程优先级等。
原创
发布博客 2023.12.05 ·
514 阅读 ·
9 点赞 ·
0 评论 ·
7 收藏

三种定时任务总结

定时任务
原创
发布博客 2023.12.04 ·
372 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

详解 linux常用命令 ps top |grep df tail/head/cat

top 命令用于实时显示系统中各个进程的资源占用情况,而 grep 命令用于过滤文本。ps 命令用于显示当前运行进程的快照。它提供了查看系统中正在运行的进程的信息的途径。
原创
发布博客 2023.12.02 ·
762 阅读 ·
12 点赞 ·
0 评论 ·
8 收藏

docker常用命令

docker inspect :查看容器的详细信息,包括 IP 地址、网络配置等。docker logs --tail :只显示容器日志的最后几行。docker logs -f :实时跟踪容器的日志输出。docker logs :查看容器的日志。
原创
发布博客 2023.12.02 ·
881 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

synchronized 关键字

面试时经常拿synchronized关键字和volatile关键字的特性进行对比,synchronized关键字可以保证并发编程的三大特性:原子性、可见性、有序性,而volatile关键字只能保证可见性和有序性,不能保证原子性,也称为是轻量级的synchronized。独占锁或者排他锁:synchronized关键字实现的是独占锁,即该锁只能被一个线程所持有,其他线程均被阻塞。非公平锁:synchronized关键字实现的是非公平锁,即线程获取锁的顺序并不一定是按照线程阻塞的顺序。
原创
发布博客 2023.11.30 ·
843 阅读 ·
16 点赞 ·
0 评论 ·
16 收藏

过滤器(Filter)、拦截器(Interceptor)和AOP(面向切面编程)之间的差异

主要用于Servlet规范中,对请求和响应进行预处理和后处理。主要用于Spring框架中,对Controller处理过程进行增强。是一种编程范式,通过切面将横切关注点模块化,可以用于处理事务、日志等横切关注点。在实际应用中,过滤器、拦截器和AOP可以协同使用,根据需求选择合适的方式来增强应用的功能。过滤器范围最大,拦截器次之,aop最小aop操作最细致,拦截器次之,过滤器最小。
原创
发布博客 2023.11.29 ·
691 阅读 ·
10 点赞 ·
0 评论 ·
9 收藏

代理的三种方式:静态代理、动态代理和CGLIB

代理类需要手动编写: 开发者需要创建一个代理类,该代理类通常实现与目标类相同的接口。代码维护较繁琐: 如果有多个类需要代理,每个类都需要编写相应的代理类,导致代码冗余。编译时确定: 代理类在编译时期就已经确定,因此在运行时不会再动态生成新的类。运行时生成代理类: 代理类在运行时动态生成,无需手动编写代理类。基于继承的代理: CGLIB代理通过生成目标类的子类来实现代理。基于接口的代理: JDK动态代理要求目标类实现接口。无需接口: 目标类可以是没有实现任何接口的普通类。
原创
发布博客 2023.11.28 ·
450 阅读 ·
10 点赞 ·
0 评论 ·
7 收藏

springmvc工作流程

这个流程的设计使得开发者能够灵活地组织代码,实现清晰的业务逻辑和视图分离,从而提高Web应用的可维护性和可扩展性。View Resolver:DispatcherServlet使用视图解析器解析Controller返回的视图名,得到具体的视图对象。View:得到视图对象后,DispatcherServlet调用视图的渲染方法,生成最终的HTML或其他格式的响应。控制器方法处理业务逻辑,可以通过注解(如@RequestMapping)指定处理的URL以及请求的方法类型。处理器执行(Controller)
原创
发布博客 2023.11.27 ·
391 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

Rpc和http的区别

当谈到远程通信时,人们经常会遇到两个广泛使用的概念:RPC(Remote Procedure Call,远程过程调用)和HTTP(Hypertext Transfer Protocol,超文本传输协议)。它们在远程通信中扮演着不同的角色,并且有着一些显著的区别。下面将详细讨论它们之间的差异。RPC(Remote Procedure Call)和 HTTP(Hypertext Transfer Protocol)的区别。
原创
发布博客 2023.11.25 ·
473 阅读 ·
7 点赞 ·
0 评论 ·
6 收藏
加载更多