![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后台开发
文章平均质量分 69
后台学习
阿龙-
这个作者很懒,什么都没留下…
展开
-
阿龙的学习笔记---2021上半年的记录
看过的面经,把不会的问题总结了,记在笔记本上,整理复习一下。原创 2021-07-12 17:19:43 · 223 阅读 · 0 评论 -
阿龙的学习笔记---202107学习
学这个https://interview.huihut.com/#/this 指针被隐含地声明为: ClassName *const this,这意味着不能给 this 指针赋值;内联函数缺点: inline 函数无法随着函数库升级而升级。因为在编译器就编进去了,inline函数的改变需要重新编译,不像 non-inline 可以直接链接。虚函数(virtual)可以是内联函数(inline)吗?一般都说不可以,但是在不表现出多态时,是有可能被内联的,比如说直接通过对象调用,编译器就可能内联.原创 2021-07-12 14:46:17 · 193 阅读 · 0 评论 -
阿龙的学习笔记---转载及精炼总结github仓库:cpp-backend-reference
转载自https://github.com/chankeh/cpp-backend-reference突击复习常见题,要提前批了,之前的忘了不少,知识广度先再拓展一下。文章中的一些详细讲解的链接可以深度学习。后端开发面试知识点大纲:语言类(C++):关键字作用解释:volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。Vola.转载 2021-07-03 15:37:04 · 287 阅读 · 0 评论 -
阿龙的学习笔记---MySQL45讲的总结(二)
普通二级索引和唯一索引这两个怎么选择呢?从查询的角度来说,差异很微乎其微,都是二分查找。普通索引找到后还需要往后按序再查找唯一索引可能不用往后再查找。从更新的角度,差异较大。关于change buffer。change buffer:更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。。(change buffer会持原创 2021-07-03 12:26:41 · 125 阅读 · 1 评论 -
阿龙的学习笔记---MySQL45讲的总结(一)
学习这个大佬的课,的确超级有经验:https://time.geekbang.org/column/intro/100020801查询语句过程(待补充)- 连接器,分析器,优化器,执行器,最后到存储引擎。更新语句过程依然走上面的路:先连接查询缓存会清空。分析器分析出是一条更新语句。优化器进行索引等优化。执行器执行。但是除了更新表中数据外,还有redolog和binlog两个日志文件的更新。即物理日志 redo log 和逻辑日志 binlog。redo log: I.原创 2021-07-01 20:34:00 · 83 阅读 · 0 评论 -
阿龙的学习笔记---Redis用作任务队列的问题
参考以下文章,待整理。https://www.cnblogs.com/cjjjj/p/12789471.htmlhttps://3g.163.com/dy/article/FMAG7M9R05424KIG.htmlhttps://xie.infoq.cn/article/5b2777af639ff13518558d071原创 2021-06-23 13:26:04 · 67 阅读 · 0 评论 -
阿龙的学习笔记---Redis做分布式锁的注意事项
参考以下文章:待整理https://www.cnblogs.com/haibiscuit/p/12699233.htmlhttps://blog.csdn.net/qq_26286487/article/details/80990249原创 2021-06-23 13:22:57 · 86 阅读 · 0 评论 -
阿龙的学习笔记---使用Python装饰器来处理log
实习做直播项目中,大哥用python装饰器来实现打log/汇报日志等通用代码的一波操作很优雅,先占一个坑,到时候学习记录一下。原创 2021-05-31 13:58:47 · 87 阅读 · 0 评论 -
阿龙的学习笔记---ElasticSeach的学习与记录
一些博客资料APIDoc:https://elasticsearch-py.readthedocs.io/en/7.10.0/api.html#cluster官方集群相关startup文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cluster.html知乎Es入门:https://zhuanlan.zhihu.com/p/104215274https://zhuanlan.zhi原创 2021-03-31 22:36:03 · 143 阅读 · 0 评论 -
阿龙的学习笔记---RPC总结
RPC学习总结实习项目中用到了gRPC和自研RPC,做一个总结吧。参考:https://www.zhihu.com/question/25536695 里面2、3、4号回答都不错。看到个这,感觉还挺有意思的,梳理了后台一步一步发展的趋势,主要是。作者:得闲野鹤链接:https://www.zhihu.com/question/25536695/answer/154614906我们在做一个访问量不大的项目的时候,一台服务器部署上一个应用+数据库也就够了.那么访问量稍微大一点原创 2021-03-15 21:05:04 · 171 阅读 · 0 评论 -
阿龙的学习笔记---一致性哈希
参考 https://www.sohu.com/a/411095977_115128#一致性哈希概述基础的哈希表的东西就不多说了。在分布式缓存集群中,如何做缓存负载均衡?在分布式集群缓存的负载均衡实现中,比如 memcached 缓存集群,需要把缓存数据的 key 利用哈希函数散列,这样缓存数据能够均匀分布到各个分布式存储节点上,要实现这样的负载均衡一般可以用哈希算法来实现。普通哈希算法做负载均衡的弊端:假如用一个简单的「取模法」来说明这个过程。假设有 3 个服务器节点编号.转载 2021-03-14 14:39:55 · 81 阅读 · 0 评论 -
阿龙的学习笔记---零拷贝
零拷贝概述零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效无零拷贝的文件传输:在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成:while((n转载 2021-03-13 13:15:08 · 88 阅读 · 0 评论 -
阿龙的学习笔记---《后台开发:核心技术与应用实践》读书笔记(三)--- 进线程通信、常用类库
三、进线程与进线程通信多线程操作使用pthread库来实现,可以传递参数,设置属性。多线程通信:互斥锁,pthread_mutex_xxxx,(相当于二元信号量)。lock,trylock 和 unlock 进行操作。条件变量:pthread_cond_xxxx条件变量是一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。条件变量上的基本操作有:触发条件(当条件变为 true 时);等待条件,挂起线程直到其他线程触发条件。条件操作可以不占用cpu,比如你一直判断某个条件是否成立,原创 2021-02-16 21:49:17 · 71 阅读 · 0 评论 -
阿龙的学习笔记---《后台开发:核心技术与应用实践》读书笔记(二)--- 网络通信
二、网络通信OSI 7层: 物理层,数据链路层,网络层,传输层,会话层(会话连接断点续传),表示层(数据格式加密等),应用层。TCP/IP 4层:网络接口层(主机到网络层), 网络层, 传输层, 应用层。在4层模型中,ARP是放在网络接口层的。TCP/IP协议部分看之前的博客吧。socket网络编程API:网络字节序和主机字节序,也就是大小端,大小是说高低位放在起始位置(一般计算机内存是从低到高,所以大端是高位放在低地址,小端是低位在低地址)。网络都是大端字节序。四种网络IO模型:阻塞,非原创 2021-02-15 23:32:55 · 81 阅读 · 0 评论 -
阿龙的学习笔记---《后台开发:核心技术与应用实践》读书笔记(一)--- 编程语言 与 编译调试
听说是一本腾讯员工写的书,快到面试时候,拿来读一下看看,内容好像不太精,少了一丢丢所以然,但是包含了一些对面试有用的知识点,记录一下。一、编程语言c语言 是面向函数。size_of 对函数来讲是得到 函数返回值类型 的size。字节对齐的规则是按照结构体中长度最长的来对齐,比如说有double类型是8byte,那么20字节的结构体会占用24字节的内存。宏定义一段语句的时候可以使用do…while(0); 这样的话整个代码块还算是一个语句。extern ”C" 告诉编译器用C原创 2021-02-15 13:53:56 · 186 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(五)---优化与监测
微调内核参数最大文件描述符数量。epoll最大数量。GDB调试gcc或g++编译时,需要加上-g选项,产生必要的调试信息。开始调试:gdb a.out设置断点:(gdb) break(b) main.c 12 — 在main.c的12行设置断点。删除断点:查看断点的编号后,delete 编号,就可以删除了。禁用断点:disable。执行: run(简写r),后面可以添加运行参数继续:continue©next(n):执行下一行。step(s):进入函数内部。until(u原创 2021-01-21 12:11:42 · 88 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(四)---信号、定时器、多线/进程,线/进程池
信号kill函数可以发送信号给pid的进程。目标进程在收到信号时,需要定义一个接收函数来处理之。为一个信号设置处理函数,可以使用signal系统调用。信号也可以作为一个异步事件被复用I/O所监听,则可以统一事件源。定时器Linux可用的定时器方法有三种:socket提供的超时选项,是对数据接受与发送的阻塞调用的参数,比如send、 sendmsg、recv、 recvmsg、 accept和connect。根据其返回值与errno来判断是否时间已到。SIAGALRM信号,由alar原创 2021-01-20 18:29:51 · 75 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(三)---复用I/O总结、Epoll详解、I/O框架库libevent
I/O复用使得程序同时监听多个文件描述符。但是其本身是阻塞的。监听的同时就绪时,会顺序依次处理。主要有select, poll, epoll。select:select I/O复用系统调用,使用fd_set这个结构来存储文件描述符,以bit表示。并且有最大限制(好像是1024*8)。将可读,可写,异常的三组fd_set传入,然后如果有可读可写异常,则会修改对应的fd_set的标志位以告知用户。书里提到了就绪条件,供参考:对于标志位的结果,需要通过轮询的方式来查找,效率很低。原创 2021-01-20 12:36:28 · 342 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(二)---高性能服务器程序框架
高性能服务器程序框架服务器模型:C/S模型:服务器、客户端模型。客户端访问服务器获取资源。服务器启动后,创建监听socket,调用bind绑定服务器端口上,然后listen来等待客户端连接。服务器稳定后,客户端可以发起连接服务器。对于服务端,请求是随意异步事件,需要通过一些I/O模型来监听。使用I/O复用。当监听到请求后,accept接受,然后分配一个逻辑单元为这个连接服务。在处理服务的同时,还需要同时监听其他客户的请求,可以通过select系统调用来实现。服务器基本框架:.原创 2021-01-17 18:41:01 · 692 阅读 · 0 评论 -
《Linux高性能服务器编程》---读书笔记(一)--- TCP/IP基础,Linux API
TCP/IP协议族数据链路层、网络层、传输层协议是在Linux内核中实现的。因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的API就是Socket。Socket提供两种功能:将应用程序数据从用户缓冲区中复制到 TCP/UDP内核发送缓冲区,以交付内核来发送数据;或者是从内核 TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据。应用程序以通过它们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为route原创 2021-01-15 22:23:33 · 92 阅读 · 0 评论 -
阿龙的学习笔记--- Docker 的一些概念总结
Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。我也将Docker类比于Python虚拟环境,可以有效的配置各个版本的开发环境,比如深度学习与Java环境。原创 2020-10-22 16:13:55 · 127 阅读 · 0 评论