摘要:
同步异步,阻塞非阻塞区别: 同步:调用者发出请求后,一直等待被调用者返回结果或通知,才进行下一步操作。 异步:调用者发出请求后,不等待被调用者返回结果或通知,就进行下一步操作。阻塞:调用者发出请求后,被调用者不返回结果或通知,调用者就一直等待,不能进行其他操作。 非阻塞:调用者发出请求后,被调用者不 阅读全文
摘要:
垃圾回收机制: 1.引用计数法:每个对象都有一个引用计数器,当对象被引用时,计数器加1,当引用失效时,计数器减1,当计数器为0时,对象被回收。垃圾回收器定期(周期性)找出那些不再被引用的对象,然后释放这些对象所占用的内存。 2. 标记-清除法:从根节点开始遍历所有对象,标记所有可达的对象,然后清除所 阅读全文
摘要:
1.性能优化: 1.1 表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好) A:字段设计优化 1.1.1 整数类型: 1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的差别,比如年龄,用t 阅读全文
摘要:
1.Redis是单线程的 redis是基于内存操作的,CPU不是操作瓶颈,redis的瓶颈是根据机器内存和网络宽带,那既然CPU不是瓶颈,那就意味着可以用单线程来实现,那就用单线程了! Redis是C语言写的,官方提供的十万QPS redis为什么单线程就快? 1.误区:高性能的服务器一定是多线程的 阅读全文
摘要:
1.flask和django区别 1.flask是一个轻量级的,django是一个重量级的,包含了很多组件,包括admin,orm等,flask虽然没有但可以引入第三方组件。 2.flask是基于上下文管理做的一个应用上下文appcontext和请求上下文requestcontext管理。djang 阅读全文
摘要:
1.什么是上下文管理器? 上下文管理器是一个对象,他定义了执行with语句时要建立的上下文,上下文管理器处理进去和退出所需运行时上下文执行代码块。简单来说一个上下文管理器至少包含__enter__和__exit__两个方法,python提供了contextlib模块中的contextmanager用 阅读全文
摘要:
1.索引:实际上是物理上对数据库的一列或多列的值进行排序的一种存储结构。要想了解索引,首先了解下表。 2.表:表是由段组成,段由区组成,区由页组成,页由行组成,行存放数据。 其中段由存储引擎控制,DBA无法也没必要控制。 区由连续页组成,大小为1M,一般页大小16K,即一个区64个页。为保证数据页的 阅读全文
摘要:
一.表: 1.从存储引擎的逻辑存储结构来看,所有数据都被逻辑的存放在一个空间,称之为表空间。表空间由段,区,页(块)组成。 二. 段: 表由段组成,常见索引段,数据段等。 三.区: 区由连续页组成,大小为1M。为保证区中页的连续性,存储引擎一次性取4~5个区。默认页大小16K,即一个区中共有64个连 阅读全文
摘要:
MySQL日志文件常见的有四类: 1.错误日志(error log): 错误日志对MySQL的启动,运行,关闭过程进行记录一些错误或警告或正确的信息。当数据库不能正常启动时,第一个必须查找的就是该日志。 2.二进制日志(binlog): 记录了对MySQL数据库执行更改的所有操作。不包括select 阅读全文
摘要:
首先应该认识到一件事:MySQL数据库的核心就在于存储引擎。存储引擎是基于表的。 由于开源,MySQL数据库第三方引擎有很多,可以满足不同的特定需求,大名鼎鼎的InnoDB就是其中之一(最早是,后来被Oracle收购)。 InnoDB存储引擎 高性能,高可用,高拓展: 1. 体系架构 由图可见,In 阅读全文