- 博客(75)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 人工智能深度学习模型全面解析
在当今科技飞速发展的时代,人工智能无疑是最为耀眼的明星领域之一,而深度学习模型作为人工智能的核心驱动力,正深刻地改变着我们的生活、工作与认知方式。从图像识别精准定位病变,助力医疗诊断;到语音助手流畅交互,提供便捷服务;再到自动驾驶汽车智能领航,开启出行变革,深度学习模型的应用无处不在。本文将深入探究深度学习模型的奥秘,通过剖析其原理、架构、训练方法以及实际应用案例,为您呈现一幅精彩纷呈的深度学习画卷。
2025-01-11 09:38:55
615
原创 JavaScript 网页设计实例详解
JavaScript 在网页设计中扮演着不可或缺的核心角色。通过一系列丰富的实例,我们看到它在基础交互效果、表单验证、数据获取与展示、动画效果以及页面布局调整等诸多方面展现出的强大能力。合理运用 JavaScript,能够将静态的网页转化为充满活力、交互性强、信息实时更新且适配多元终端的优质用户界面。无论是打造引人入胜的导航体验、确保数据的准确。
2025-01-11 09:22:23
654
原创 Vue.js组件开发详解
在现代前端开发中,Vue.js 凭借其简洁、高效、灵活的特性,成为了众多开发者的首选框架之一,而组件化开发则是 Vue.js 的核心优势。组件可以将复杂的 UI 界面拆分成一个个独立的、可复用的小块,极大地提高了开发效率和代码的可维护性。
2025-01-11 09:07:49
748
原创 Redis 的大 Key 对持久化有什么影响
当 AOF 写回策略配置了 Always 策略,如果写入是一个大 Key,主线程在执行 fsync() 函数的时候,阻塞的时间会比较久,因为当写入的数据量很大的时候,数据同步到硬盘这个过程是很耗时的。AOF 重写机制和 RDB 快照(bgsave 命令)的过程,都会分别通过fork()函数创建一个子进程来处理任务。会有两个阶段会导致阻塞父进程(主线程):创建子进程的途中,由于要复制父进程的页表等数据结构,阻塞的时间跟页表的大小有关,页表越大,阻塞的时间也越长;
2025-01-11 08:49:35
934
原创 100万并发用户的分布式排行榜系统
通过结合C++、Redis、Crow Web框架、负载均衡和Docker容器化,可以构建一个支持100万并发的排行榜系统。在Redis中使用ZSet存储和排序用户数据,满足高并发场景下对性能和数据一致性的需求。为了解决这个需求并实现一个支持100万并发的排行榜系统,我们需要从以下几个方面进行设计和实现:数据存储、查询性能、高可用性、数据一致性、实时更新和接口设计等。为了支持100万并发用户,使用Redis的ZSet数据结构来实现排行榜功能。安装Redis并配置为分布式集群,以支持高可用性和分片存储。
2025-01-08 12:58:52
347
原创 Redis 大 key 的四个问题
大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。一般而言,下面这两种情况被称为大 key:String 类型的值大于 10 KB;Hash、List、Set、ZSet 类型的元素的个数超过 5000个;
2025-01-08 12:18:22
889
原创 AI技术的快速发展:AI如何改变IT行业、影响从业者及未来展望
人工智能的快速发展并不会完全取代IT从业者,而是激发了行业内的技术进步和工作方式的创新。对于IT业者而言,AI不是威胁,而是一个提升工作效率、拓宽职业发展未来的IT从业者,将通过与AI的深度合作,成为“技术设计师”与“创新推动者”,与AI共同推动技术的进步,迎接更加智能的未来。人工智能的应用将重新定义IT行业的工作内容和从业者的职责,但最终,人工智能与人类的合作和共生,将变得更加高效、创新和丰富。
2025-01-08 11:14:41
705
原创 100万并发用户的分布式频道聊天系统
以上步骤为实现一个高并发、低延迟、可扩展的分布式频道聊天系统提供了完整的设计与实现流程,包括 WebSocket 服务器的实现、频道隔离、消息队列、Redis 管理、负载均衡和容器化部署。
2025-01-05 12:55:56
1041
原创 redis 3 种缓存更新策略
今天跟大家聊聊,常见的 3 种缓存更新策略。Cache Aside(旁路缓存)策略;Read/Write Through(读穿 / 写穿)策略;Write Back(写回)策略;实际开发中,Redis 和 MySQL 的更新策略用的是 Cache Aside,另外两种策略主要应用在计算机系统里。
2024-11-21 14:26:58
1144
原创 [Erlang]节点互联以及Erlang节点间ping失败原因
epmd(Erlang Port Mapper Daemon)是Erlang的端口映射守护进程,文档:Erlang – epmd当erlang的节点启动时,会将节点名称和地址发送给epmdepmd会记录当前机器下节点的信息,主机间可以通过epmd交换双方主机下的节点信息并进行连接。
2024-01-11 14:13:51
1164
原创 Erlang 行为模式gen_fsm状态机 分析
有限状态机这名词听起来好像很高大上,其实本质上是对象(actor)在不同状态下收到信息有不同的行为(处理方式)和状态转换,有点类似设计模式中的状态模式。以一个简单的游戏场景为案例,在rpg游戏地图中常常会出现一些怪物,怪物站在地图里的初始状态是游荡状态,如果玩家出现在他的实现范围内,那么他的状态就会变成追击状态,离开怪物视野后又变为游荡状态,当人物打死怪物就会变成死亡,类似这种其状态会因为触发事件而导致的状态转换就有限状态机。
2024-01-11 11:04:23
753
原创 erlang 安装
-修改CFLAG= -DOPENSSL_THREADS 修改成 CFLAG= -fPIC -DOPENSSL_THREADS。文件末尾添加 export PATH=$PATH:/usr/local/erlang/bin。--创建Erlang安装目录。--配置Erlang环境变量。验证erlang是否安装成功。--也就是添加 -fPIC。ErLang安装依赖。
2024-01-09 19:33:21
764
原创 redis哨兵机制
当有个哨兵标记主节点为「客观下线」后,就会进行选举 Leader 的过程,因为此时哨兵集群还剩下 3 个哨兵,那么还是可以拿到半数以上(5/2+1=3)的票,而且也达到了 quorum 值,满足了选举 Leader 的两个条件, 所以就能选举成功,因此哨兵集群可以完成主从切换。这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis 主节点的客户端,将其配置中的主节点 IP 地址更新为「新主节点」的 IP 地址。
2023-10-20 16:51:39
236
原创 redis 数据结构(二)
整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不时,就会使用整数集这个数据结构作为底层实现。
2023-09-04 18:55:10
1170
原创 redis 数据结构(一)
redis是一种内存数据库,所有的操作都是在内存中进行的,还有一种重要原因是:它的数据结构的设计对数据进行增删查改操作很高效。redis的数据结构是什么redis数据结构是对redis键值对值的数据类型的底层的实现,注意不是。
2023-08-12 11:56:10
705
原创 MySQL中,当update修改数据与原数据相同时会再次执行吗?
在binlog_format=statement和binlog_row_image=FULL时,InnoDB内部认真执行了update语句,即“把这个值修改成 (1,999)“这个操作,该加锁的加锁,该更新的更新。在binlog_format=row和binlog_row_image=FULL时,由于MySQL 需要在 binlog 里面记录所有的字段,所以在读数据的时候就会把所有数据都读出来,那么。
2023-07-22 15:00:00
436
原创 redis 三种缓存更新策略
今天聊聊redis 三种缓存更新策略分别是:Cache Aside(旁路缓存)策略;Read/Write Through(读穿 / 写穿)策略;Write Back(写回)策略;其中 Cache Aside策略是redis和Mysql使用的更新策略,另外两种策略主要使用在计算机系统上。
2023-07-09 19:11:30
2243
原创 缓存雪崩、击穿、穿透
我们都知道,用户数据一般都是存储在数据库中,而数据库的数据是落地于磁盘的,如果我们读取数据库的数据那是很慢的。一旦,用户访问量上来,就很容易引起数据库崩溃。所以,我们一般会加入一层缓存避免直接访问数据库,而redis就是不错的缓存层。因为redis是内存数据库,所以存放redis中的数据跟存放在内存中的数据差不多。这也是我们今天要解决的问题,要知道它们怎么发生的,然后该怎么解决。
2023-04-02 11:42:06
4907
原创 redis 主从复制
在文章中,我们知道如果redis宕机了,我们可以通过AOF 和 RDB 文件的方式恢复数据,从而保证数据的丢失(或少量损失)从而提高稳定性。但是,如果我们数据只存在一台redis服务器中,那么在恢复期间我们无法提供服务的,这不符合服务器的高可靠性。如果更加严重的话,这台服务器的硬盘出现了故障,那么数据是不是全部丢失了吗?这也是无法接受的。那么为了避免这种单点故障,我们有什么办法呢?有同学可以会想到的机制。那就恭喜你了,你想的答案是对的。在redis中也提供来解决这样的问题。
2023-02-14 18:45:00
504
原创 redis的持久化RDB与AOF详解
Redis读写速度快、性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失。所以我们希望Redis能保存数据到硬盘中,在Redis服务重启之后,原来的数据能够恢复,这个过程就叫持久化。
2023-02-07 20:26:05
600
原创 缓存(redis)与数据库(MYSQL)数据一致性问题
在文章中,仔细的学习了一些MYSQL数据库的知识。但是,随着我们的业务越来越好,那么我们不可能直接去操作MYSQL数据库。因为直接去操作MYSQL终究会有比较多的I/O操作,而使整个系统的性能最终受到数据库I/O的制约而无法承载。所以,我们一般会给服务器加入缓存,这样客户端的操作可以直接操作缓存,从而减轻数据库的压力。而NOSQL中的redis比较常用的场景就是作为缓存。当我们引入缓存之后,怎么样去更新缓存和数据库的数据呢?
2023-01-12 16:31:00
1612
原创 MYSQL之两阶段提交和组提交(数据一致性)
3. 到了InnoDB中,会先开启事务,并在InnoDB 层更新记录前,首先会在undo log中做相应的记录,即通过生产一条undo log把更新的列的旧值记下来,undo log 会写入 Buffer Pool 中的 Undo 页面,不过在修改该 Undo 页面前需要先记录对应的 redo log,所以。,修改数据页面的过程是修改 Buffer Pool 中数据所在的页,然后将其页设置为脏页,为了减少磁盘I/O,不会立即将脏页写入磁盘,后续由后台线程选择一个合适的时机将脏页写入到磁盘。
2023-01-03 17:38:20
2051
1
原创 MySQL中Innodb 存储引擎的Buffer Pool详解
Buffer Pool即缓冲池(简称BP),BP以Page页为单位,缓存最热的数据页(data page)与索引页(index page),Page页默认大小16K,BP的底层采用链表数据结构管理Page。InnoDB 会把存储数据划分为若干个页,磁盘与内存交互是以页为基本单位,一页默认为16kB。因此,Buffer Pool 是以页为划分的。在MYSQL 启动时,
2022-12-26 21:52:48
1371
原创 MYSQL 主从复制 --- binlog
在谈主从复制之前,应该都会有一个疑问,那么就是一个MYSQL数据库存在的问题呢?1. 读和写所有压力都由一台数据库承担,压力大2. 数据库服务器磁盘损坏则数据丢失,单点故障为了解决我们可以使用MYSQL的主从复制处理,那么什么是主从复制呢?
2022-12-15 20:00:00
2912
原创 MySQL 的日志(undo log、redo log、binlog)
WAL(Write Ahead Log)预写日志,指的是 MySQL 的写操作并不是立刻更新到磁盘上,而是先记录在日志上,然后在合适的时间再更新到磁盘上。也是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。
2022-12-08 19:00:00
1347
原创 LINUX防火墙开放端口,查看状态,查看开放端口
移除指定端口:firewall-cmd --permanent --remove-port=3306/tcp。查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0。查看所有打开的端口: firewall-cmd --zone=public --list-ports。查看区域信息: firewall-cmd --get-active-zones。查看是否拒绝: firewall-cmd --query-panic。
2022-12-05 20:15:00
13938
原创 MYSQL 事务、事务隔离级别和MVCC,幻读
事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。事务实现的主要两种方式:自动提交和手动提交, mysql默认是自动提交的。这两个方式实现如下:在MYSQL中事务是由引擎来实现的,因此并不是所有引擎都支持事务,如MYSQL的InnoDB 引擎是支持事务的,而 MyISAM 引擎是不支持事务的。事务看起来感觉简单,但必须遵守ACID 特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。这A
2022-12-01 19:15:00
1160
2
原创 MYSQL索引数据结构----B+树
我们在考虑数据结构的时候,应该首先要知道数据存放在哪里?而MYSQL的数据是持久化的,所以其数据(数据记录+索引)应该是保存在磁盘里面的。因此当我们要查询某条数据记录时,就会先从磁盘中读取索引到内存中,然后再通过内存索引数据找到该条记录在磁盘的某个位置上,最后将其读到内存中。所以查询过程中会发生多次磁盘I/O,而I/O越多耗时越长。所以,我们索引数据结构应该要尽可能少的磁盘的 I/O 操作就能完成查询工作。另外,MySQL 是支持范围查找的,所以索引的数据结构不仅要能高效地查询某一个记录,而且也要能高效地执
2022-11-24 19:45:00
1734
原创 解决哈希冲突的方案
当两个不同的数经过哈希函数计算后得到了同一个结果,即他们会被映射到哈希表的同一个位置时,即称为发生了哈希冲突。简单来说就是哈希函数算出来的地址被别的元素占用了。
2022-11-21 18:00:00
677
原创 MYSQL索引详解和优化
索引的定义 索引分类 数据结构分类 B+tree索引 Hash索引 Full-text索引 物理存储分类 聚簇索引(主键索引)二级索引(辅助索引) 字段特性分类 主键索引 唯一索引 普通索引 前缀索引 字段个数分类 单列索引 联合索引 创建索引的条件 索引优化方法 索引操作 创建索引 查看索引 删除索引
2022-11-17 18:30:00
920
原创 MYSQL查询执行过程
MySQL逻辑架构整体分为三层,分别是客户端层,核心服务层,存储引擎层:客户端层:客户端层是最上层,主要处理连接处理、授权认证、安全等功能,并非MYSQL特有核心服务层:核心服务层主要处理查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)、存储过程、触发器、视图等存储引擎层:负责MySQL中的数据存储和提取。核心服务层通过API与其通信。
2022-11-10 17:30:00
1996
原创 MYSQL的社死----死锁
在MySQL5.7版本中,也可以使用sys.innodb_lock_waits试图查看,但是在MySQL8.0中,该视图连接查询的表不同(把之前版本中使用的information_schema.innodb_locks表和information_schema.innodb_lock_waits)表替换为了performance_schema.data_locks和performance_schema.data_lock_waits)表。当然了,我们最好的策略那就是在自己的业务上预防死锁的出现。
2022-10-31 18:30:00
1644
原创 MYSQL锁的探索
更高版本的mysql,在范围查找,就会继续往后找存在的记录,也就是会找到 id = 16 这一行停下来,然后加 next-key lock (8, 16],但由于 id = 16 不满足 id < 9,所以会退化成间隙锁,加锁范围变为 (8, 16),所以会话 1 这时候主键索引的锁是记录锁 id=8 和间隙锁(8, 16)2.然后因为是非唯一索引,且查询的记录是存在的,所以还会加上间隙锁,规则是向下遍历到第一个不符合条件的值才能停止,因此间隙锁的范围是(8,16)update ... set ....;
2022-10-24 17:17:29
1340
原创 MySQL数据库优化总结
索引的优化只要列中含有NULL值,就最好不要在此例设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引尽量使用短索引,如果可以,应该制定一个前缀长度对于经常在where子句使用的列,最好设置索引,这样会加快查找速度对于有多个列where或者order by子句的,应该建立复合索引对于like语句,以%或者‘-’开头的不会使用索引,以%结尾会使用索引尽量不要在列上进行运算(函数操作和表达式操作)尽量不要使用not in和操作sql语句的优化。
2022-10-18 19:00:00
710
转载 深入理解 Linux 的 TCP 三次握手
在后端相关岗位的入职面试中,三次握手的出场频率非常的高。其实在三次握手的过程中,不仅仅是一个握手包的发送 和 TCP 状态的流转。还包含了端口选择,连接队列创建与处理等很多关键技术点。通过今天一篇文章,我们深度去了解了三次握手过程中内核中的这些内部操作。全文洋洋洒洒上万字字,其实可以用一幅图总结起来。服务器 listen 时,计算了全/半连接队列的长度,还申请了相关内存并初始化。...
2022-10-10 19:15:00
360
转载 为什么服务端程序都需要先 listen 一下
icsk->icsk_accept_queue 定义在 inet_connection_sock 下,是一个 request_sock_queue 类型的对象。是内核用来接收客户端请求的主要数据结构。我们平时说的全连接队列、半连接队列全部都是在这个数据结构里实现的。我们来看具体的代码。*/......}我们再来查找到 request_sock_queue 的定义,如下。//全连接队列//半连接队列......};
2022-10-04 19:30:00
280
转载 TCP连接中客户端的端口号是如何确定的?
在 TCP 连接中,客户端在发起连接请求前会先确定一个客户端端口,然后用这个端口去和服务器端进行握手建立连接。那么在 Linux 上,客户端的端口到底是如何被确定下来的呢?事实上很多我们平时遇到的问题都和这个端口选择过程相关,如果能深度理解这个过程,将有助于我们对这些问题的深刻理解。Cannot assign requested address 报错是怎么回事?一个客户端端口可以同时用在两条 TCP 连接上吗?还是让我们借助一段简单到只有两句的代码,从这个来讲起!
2022-10-02 18:30:00
2890
基于解析表达文法的文本模式匹配工具LPEG及其优化实现与性能分析
2025-02-19
deepseek使用教程
2025-02-19
强化学习与最优控制 pdf
2025-02-19
PyCharm 安装教程
2025-02-17
DeepSeek指导手册 清华大学104页《DeepSeek:从入门到精通》
2025-02-17
python爬虫.py
2025-01-11
过年烟花秀表演,送给朋友
2025-01-11
人工智能开发实践应用教程-万振凯-天津科技.zip
2025-01-09
Linux-C编程一站式学习-最新版
2025-01-09
Python 初学者速成课程
2025-01-08
Python 中的卷积神经网络:使用 Python、Theano 和 TensorFlow 中的现代深度学习掌握数据科学和机器学习
2025-01-08
100万并发用户的分布式频道聊天系统
2025-01-08
Golang轻量级并发服务器框架Zinx的设计与实现
2024-11-21
Pandas的应用---DataFrame
2022-07-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人