首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

短视频系统开发应该注意需要哪些核心功能?

1111.jpg 随着移动互联网的发展短视频系统开发越来越多,并且APP的种类也是越来越多,但如果说到当今最流行的APP那就肯定为短视频系统开发了。...那么短视频系统开发复不复杂?短视频系统开发又都应该具备哪些功能呢?其实一个短视频的制作并不是很复杂的。至于短视频短视频系统开发有应该具备哪些主要功能?...四、关注功能 用户可以去关注自己喜欢的人,当用户喜欢看某个人的作品,这次看了下一次就不一定能找到了,但是关注后,它每次更新作品在你的关注区都是能够看到的。...或者干脆以自家后台为基础,直接建立起商城系统,这样用户就可以在观看直播的同时,查看到更多的好货。而且对于主播来说,方便管理。

36140

自增id用完怎么办

其实在mysql内部维护了一个全局变量global_query_id,每次执行语句的时候将他赋值给Query_id,然后给这个变量加1,如果当前语句是这个事务的第一条语句,就会把Query_id赋值给xid...InnoDB数据可见性核心思想是,每一行数据记录了更新他的trx_id,当一个事物读到一行数据的时候,判断这个数据是否可见的方法,就是通过事物的一致性视图与这行数据的trx_id做对比。...我们发现T2刻的trx_id的值很大,而T4刻是一个正常的值,这个是为什么呢 在T1刻sessionA没有涉及更新操作,是一个只读事物,而只读事务InnoDB是不会分配trx_id,但是我们还会发现一个问题...T2的trx_id的为什么那么大,他的算法是把当前事务trx变量的指针地址转成整数,再加上2^48,使用这个算法,可以保证下面两点 因为同一个只读事务在执行期间,他的指针地址是不会变的,所以不论是在innodb_trx...thread_id 线程id是我们最常见的一种自增id,我使用show processlist的第一列计数就是thread_id, thread_id的逻辑很好理解,系统保存一个全局变量thread_id_conuter

1K20
您找到你想要的搜索结果了吗?
是的
没有找到

一文搞定Java热更新

所以JVM提供了另外一种选择:在不重启应用的前提下进行小幅改动,又称热更新。...对于某些大型的应用来说,每次重启需要花费大量的时间成本,所以,如果能在不重启虚拟机的情况下更新一个类,在某些业务场景下变得十分重要。...在Java开发领域,热更新一直是一个难以解决的问题,目前的Java虚拟机只能实现方法级别的热更新,对于整个类的结构修改,仍然需要重启虚拟机。 热更新的方法 Java热更新一直不断地改进。...为什么会报各种类相关的Exception? 线上遇到问题无法debug好蛋疼,难道只能反复通过增加System.out或通过加日志再重新发布吗? 线上的代码为什么没有执行到这里?...具体来说,JVM热更新局限总结: 函数参数格式不能修改,只能修改函数内部的逻辑 不能增加类的函数或变量 函数必须能够退出,如果有函数在死循环中,无法执行更新类(笔者实验发现,死循环跳出之后,再执行类的时候

3.2K20

MySQL的各种日志

需要更新一个数据,如果数据页在内存里就直接更新了,如果数据页不在内存里,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要读磁盘了。...write 和 fsync 的时机,由参数 sync_binlog 控制: sync_binlog=0 ,表示每次提交事务只 write,不 fsync; sync_binlog=1 ,表示每次提交事务都会执行...fsync; sync_binlog=N(N>1) ,表示每次提交事务 write,但累积 N 个事务后才 fsync。...只有每个事务提交后进行写磁盘才能保证数据完全不丢失。 binlog 为什么无法保证 crash-safe?...参考 02 | 日志系统:一条SQL更新语句是如何执行的?-极客时间 09 | 普通索引和唯一索引,应该怎么选择?-极客时间 12 | 为什么我的MySQL会"抖"一下?

1.2K30

一文看懂MySQL执行update更新语句的流程

如果掌柜没有粉板,每次记账翻账本,效率是不是低死啦? MySQL也有这个问题,若每次更新操作写进磁盘,然后磁盘也要找到对应记录,然后再更新,整个过程IO成本、搜索成本都很高。 何解?...为什么需要两份日志? 最开始MySQL并无InnoDB,自带的是MyISAM,没有crash-safe的能力,binlog只能用于归档。...需要扩容需要再多搭建一些备库来增加系统的读能力的时候,现在常见的做法也是用全量备份加上应用binlog来实现的,这个“不一致”就会导致你的线上出现主从数据库不一致的情况。...innodb_flush_log_at_trx_commit设成1,表示每次事务的redo log直接持久化到磁盘。...建议设成1,保证MySQL异常重启之后数据不丢失 sync_binlog这个参数设置成1的时候,表示每次事务的binlog持久化到磁盘。

3.3K10

Linux修改grub菜单

保留上一次 grub 菜单选项 1.1 问题 每次开机时,大部分 Linux 发行版的 grub 菜单都是定位在首选项位置(即当前系统选项位置)。...这就导致如果我们电脑安装了多个系统,那么每次开机进入其他系统都要重新选择 grub 菜单选项。...而我们一般都是一段时间固定使用一个系统,因此如果 grub 菜单能够记住上一次的菜单选项,我们平常使用就不需要手动切换 grub 菜单选项(除非需要更换开机系统)。...这样可以让我们免去每次开机需要手动查看更改 grub 菜单选项,特别是 Winddows 系统每次更新后基本都要重启每次需要盯着重启那一刻重新选择进入 Windows 系统,不胜其烦。...修改 grub 菜单等待时间 2.1 问题 有些 Linux 发行版开机进入 grub 菜单后等待时间很短,因此每次需要抓住 grub 菜单出来的那一刻手动按键终止 grub 菜单等待时间倒计时。

7.9K20

糟了,数据库崩了,又好像没崩

当新增数据,数据库系统会先写入内存,然后将其写入磁盘上的数据文件。 那为什么不直接写入磁盘嘞?主要是每次新增直接写入磁盘性能很低,放在内存中,可以批量写入磁盘以提升性能。...日志缓冲区大小由 innodb_log_buffer_size 变量定义,默认大小为 16MB。...因此如果事务涉及的更新、插入或删除操作数据量较大,可以增加日志缓冲区的大小可以节省磁盘 I/O。...如果需要回滚事务或在执行事务还未提交,数据库就发生了崩溃,这时我们就需要将未提交事务前的数据回滚回去,难道这个操作有我们自己来做吗?显然 MySQL 也考虑到了这一点。...并且 Redo log、Undo log 文件也可以重新覆写,这样可以保证重启不会因为 Redo log、Undo log 文件太大而导致重启时间过长。

61051

微服务架构下静态数据通用缓存机制

在这里的业务定义中,上边这几类数据归为静态数据。 为什么需要缓存 在面向用户或车联网的业务场景中,车型信息、用户基本信息和车辆基本信息有着广泛而高频的业务需求,很多数据需要对其进行关联处理。...数据消费者:需要使用这些业务静态数据的服务或者系统,比如报警系统需要获取车辆对应的用户信息以便发送报警。 下面以问答的形式来说明为什么是这样一种机制。 为什么需要业务服务?...为什么不是进程内缓存? 很多开发语言提供了进程内缓存的支持,即使没有提供直接操作缓存的包或库,也可以通过静态变量的方式来实现。对数据的查询请求直接在进程内存完成,效率可以说是杠杠滴了。...为什么需要队列? 队列在这里的目的是为了解耦,坦白的说这个方案中可以没有队列,业务服务在关系数据库操作完成后,直接更新到缓存也是可以的。...为了解决丢失数据的问题,需要发送确认、队列自身持久化、接收确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量

58720

线上MySQL的自增id用尽怎么办?

MySQL内部维护了一个全局变量global_query_id 每次执行语句,将它赋值给query_id,然后给该变量+1: 若当前语句是该事务执行的第一条语句,则MySQL还会同时把query_id...InnoDB内部维护了一个max_trx_id全局变量每次需要申请一个新的trx_id,就获得max_trx_id的当前值,然后并将max_trx_id加1。...InnoDB数据可见性的核心思想 每一行数据记录了更新它的trx_id,当一个事务读到一行数据,判断该数据是否可见,就是通过事务的一致性视图与这行数据的trx_id做对比。...每次查询,由系统临时计算: 当前事务的trx变量的指针地址转成整数,再加上248 这样可以保证: 因为同一只读事务在执行期间,它的指针地址不会变,所以无论在 innodb_trx还是在innodb_locks...由于低水位值会持续增加,而事务id从0开始计数,导致系统在该时刻后,所有查询都会出现脏读。 并且MySQL重启max_trx_id也不会清0,即重启MySQL,这个bug仍然存在。

2.1K20

Spring Cloud:第六章:Config分布式配置

1.为什么要配置中心? 一个应用中不只是代码,还需要连接资源和其它应用,经常有很多需要外部设置的项去调整应用行为,如切换不同的数据库,设置功能开关等。...随着系统微服务的不断增加,首要考虑的是系统的可伸缩、可扩展性好,随之就是一个配置管理的问题。各自管各自的开发没什么问题,到了线上之后管理就会很头疼,到了要大规模更新就更烦了。...:   1.硬编码(缺点:需要修改代码,风险大)   2.放在xml等配置文件中,和应用一起打包(缺点:需要重新打包和重启)   3.文件系统中(缺点:依赖操作系统等)   ``4.环境变量(缺点:有大量的配置需要人工设置到环境变量中...可以进行版本管理   6.可替换自定义实现 spring cloud config包括两部分: 1.spring cloud config server 作为配置中心的服务端:     1.拉取配置更新...actuctor依赖,因为,我们Client端需要在不重启的情况下,及时更新拉取加载配置中心的改变,然后修改内存中的配置的值。

37310

如果MySQL的自增 ID 用完了,怎么办?

MySQL 内部维护了一个全局变量 global_query_id,每次执行语句的时候将它赋值给 Query_id,然后给这个变量加 1。...而 global_query_id 是一个纯内存变量重启之后就清零了。所以在同一个数据库实例中,不同事务的 Xid 也是有可能相同的。...Innodb trx_id InnoDB 内部维护了一个 max_trx_id 全局变量每次需要申请一个新的 trx_id ,就获得 max_trx_id 的当前值,然后并将 max_trx_id...InnoDB 数据可见性的核心思想是:每一行数据记录了更新它的 trx_id,当一个事务读到一行数据的时候,判断这个数据是否可见的方法,就是通过事务的一致性视图与这行数据的 trx_id 做对比。...虽然理论上会出现重复值,但是概率极小,可以忽略不计 4、 InnoDB 的 max_trx_id 递增值每次 MySQL 重启都会被保存起来,所以我们文章中提到的脏读的例子就是一个必现的 bug,好在留给我们的时间还很充裕

1.2K20

线上MySQL的自增id用尽怎么办?

MySQL内部维护了一个全局变量global_query_id 每次执行语句,将它赋值给query_id,然后给该变量+1: 若当前语句是该事务执行的第一条语句,则MySQL还会同时把query_id...InnoDB内部维护了一个max_trx_id全局变量每次需要申请一个新的trx_id,就获得max_trx_id的当前值,然后并将max_trx_id加1。...InnoDB数据可见性的核心思想 每一行数据记录了更新它的trx_id,当一个事务读到一行数据,判断该数据是否可见,就是通过事务的一致性视图与这行数据的trx_id做对比。...每次查询,由系统临时计算: 当前事务的trx变量的指针地址转成整数,再加上248 这样可以保证: 因为同一只读事务在执行期间,它的指针地址不会变,所以无论在 innodb_trx还是在innodb_locks...由于低水位值会持续增加,而事务id从0开始计数,导致系统在该时刻后,所有查询都会出现脏读。 并且MySQL重启max_trx_id也不会清0,即重启MySQL,这个bug仍然存在。

3.2K10

Dubbo 稳定性案例:Nacos 注册中心可用性问题复盘

为什么 Nacos 宕机后,仍然可以调用成功 我们知道,一般聊到 Dubbo,有三个角色是必须要聊到的:服务提供者、服务消费者、注册中心。...,直接从本地内存拿地址做负载均衡,而不避免每次调用访问注册中心。...只有当服务提供者节点发生上下线,才会推送到本地,进行更新。所以,Nacos 宕机后,Dubbo 仍然可以调用成功。...问题总结 该线上问题反映出了 Nacos 注册中心可用性对 Dubbo 应用的影响,以及系统在某个组件宕机时,整体系统需要进行的一些兜底逻辑,不至于因为某个组件导致整个系统的瘫痪。...nacos-client 加载本地缓存文件的开关等影响到系统稳定性的参数最好设计成 -D 启动参数,或者环境变量参数,这样方便发现问题,及时止血。

1.7K10

MySQL日志15连问

它是Innodb存储引擎独有的 为什么需要 redo log? redo log主要用于MySQL异常重启后的一种数据恢复手段,确保了数据的一致性。 其实是为了配合MySQL的WAL机制。...MySQL执行更新操作后,在真正把数据写入到磁盘前,先记录日志。 好处是不用每一次操作实时把数据写盘,就算crash后也可以通过redo log恢复,所以能够实现快速响应SQL语句。...5. redo log 为什么可以保证crash safe机制呢? 因为redo log每次更新操作完成后,就一定会写入的,如果写入失败,说明此次操作失败,事务也不可能提交。...为什么需要两阶段提交呢? 如果不用两阶段提交的话,可能会出现这样情况:bin log写入之前,机器crash导致需要重启。...重启后redo log继续重放crash之前的操作,而当bin log后续需要作为备份恢复,会出现数据不一致的情况。

87431

一分钟掌握MySQL的redo日志

redo log存储什么 在一个事务中的每一次SQL操作之后都会写入一个redo log到buffer中,比如说SQL需要更新张三,李四的的成绩,那么需要查询出来这两条记录加载到内存中,但这两个记录在磁盘中可能在不同的页中...redo log buffer刷盘到redo log file有三种方式,可以通过如下变量配置 1代表的是的事务每次提交都会将log buffer中的日志写入os buffer并调用fsync()刷到log...2代表的是每次提交仅写入到os buffer,然后是每秒调用fsync()将os buffer中的日志写入到log file,这种方式当系统崩溃时会丢失1秒的数据,当MySQL崩溃恢复不会丢失数据。...异常2发生,redo log写入成功,binlog写入失败,这个时候MySQL服务器重启后,需要检查binlog是否完整包含此条redo log的更新内容(通过全局事务ID对应),发现binlog中还未包含此事务变更...异常3发生,redo log和binlog写入成功,但提交事务MySQL进程崩溃了,那么服务器重启后,检测到redo log和binlog都有,重新提交事务。

69320

后端 | 微服务架构,静态数据通用缓存机制

在这里的业务定义中,上边这几类数据归为静态数据。 为什么需要缓存 在面向用户或车联网的业务场景中,车型信息、用户基本信息和车辆基本信息有着广泛而高频的业务需求,很多数据需要对其进行关联处理。...数据消费者:需要使用这些业务静态数据的服务或者系统,比如报警系统需要获取车辆对应的用户信息以便发送报警。 下面以问答的形式来说明为什么是这样一种机制。 为什么需要业务服务?...为什么不是进程内缓存? 很多开发语言提供了进程内缓存的支持,即使没有提供直接操作缓存的包或库,也可以通过静态变量的方式来实现。对数据的查询请求直接在进程内存完成,效率可以说是杠杠滴了。...为什么需要队列? 队列在这里的目的是为了解耦,坦白的说这个方案中可以没有队列,业务服务在关系数据库操作完成后,直接更新到缓存也是可以的。...为了解决丢失数据的问题,需要发送确认、队列自身持久化、接收确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量

46430

微服务架构下静态数据通用缓存机制

在这里的业务定义中,上边这几类数据归为静态数据。 为什么需要缓存 在面向用户或车联网的业务场景中,车型信息、用户基本信息和车辆基本信息有着广泛而高频的业务需求,很多数据需要对其进行关联处理。...数据消费者:需要使用这些业务静态数据的服务或者系统,比如报警系统需要获取车辆对应的用户信息以便发送报警。 下面以问答的形式来说明为什么是这样一种机制。 为什么需要业务服务?...为什么不是进程内缓存? 很多开发语言提供了进程内缓存的支持,即使没有提供直接操作缓存的包或库,也可以通过静态变量的方式来实现。对数据的查询请求直接在进程内存完成,效率可以说是杠杠滴了。...为什么需要队列? 队列在这里的目的是为了解耦,坦白的说这个方案中可以没有队列,业务服务在关系数据库操作完成后,直接更新到缓存也是可以的。...为了解决丢失数据的问题,需要发送确认、队列自身持久化、接收确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量

30330

微服务架构,如何做分布式,通用缓存机制?

在这里的业务定义中,上边这几类数据归为静态数据。 为什么需要缓存 在面向用户或车联网的业务场景中,车型信息、用户基本信息和车辆基本信息有着广泛而高频的业务需求,很多数据需要对其进行关联处理。...数据消费者:需要使用这些业务静态数据的服务或者系统,比如报警系统需要获取车辆对应的用户信息以便发送报警。 下面以问答的形式来说明为什么是这样一种机制。 为什么需要业务服务?...为什么不是进程内缓存? 很多开发语言提供了进程内缓存的支持,即使没有提供直接操作缓存的包或库,也可以通过静态变量的方式来实现。对数据的查询请求直接在进程内存完成,效率可以说是杠杠滴了。...为什么需要队列? 队列在这里的目的是为了解耦,坦白的说这个方案中可以没有队列,业务服务在关系数据库操作完成后,直接更新到缓存也是可以的。...为了解决丢失数据的问题,需要发送确认、队列自身持久化、接收确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量

53040

MySQL日志15连问

它是Innodb存储引擎独有的 为什么需要 redo log? redo log主要用于MySQL异常重启后的一种数据恢复手段,确保了数据的一致性。 其实是为了配合MySQL的WAL机制。...MySQL执行更新操作后,在真正把数据写入到磁盘前,先记录日志。 好处是不用每一次操作实时把数据写盘,就算crash后也可以通过redo log恢复,所以能够实现快速响应SQL语句。...5. redo log 为什么可以保证crash safe机制呢? 因为redo log每次更新操作完成后,就一定会写入的,如果写入失败,说明此次操作失败,事务也不可能提交。...为什么需要两阶段提交呢? 如果不用两阶段提交的话,可能会出现这样情况:bin log写入之前,机器crash导致需要重启。...重启后redo log继续重放crash之前的操作,而当bin log后续需要作为备份恢复,会出现数据不一致的情况。

1.4K40

微服务架构下静态数据通用缓存机制

在这里的业务定义中,上边这几类数据归为静态数据。 为什么需要缓存 在面向用户或车联网的业务场景中,车型信息、用户基本信息和车辆基本信息有着广泛而高频的业务需求,很多数据需要对其进行关联处理。...数据消费者:需要使用这些业务静态数据的服务或者系统,比如报警系统需要获取车辆对应的用户信息以便发送报警。 下面以问答的形式来说明为什么是这样一种机制。 为什么需要业务服务?...为什么不是进程内缓存? 很多开发语言提供了进程内缓存的支持,即使没有提供直接操作缓存的包或库,也可以通过静态变量的方式来实现。对数据的查询请求直接在进程内存完成,效率可以说是杠杠滴了。...为什么需要队列? 队列在这里的目的是为了解耦,坦白的说这个方案中可以没有队列,业务服务在关系数据库操作完成后,直接更新到缓存也是可以的。...为了解决丢失数据的问题,需要发送确认、队列自身持久化、接收确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量

28620
领券