
笔记
文章平均质量分 83
o小菜
这个作者很懒,什么都没留下…
展开
-
【学习点滴】pulsar
本文为转载 原文链接https://www.cnblogs.com/czx1/p/9981504.html消息传递模型(Messaging model)是用户在选择流式消息传递系统时应首先考虑的事情。消息传递模型应涵盖以下3个方面:Message consumption(消息消费):如何发送和消费消息 Message Acknowledgement(消息确认):如何确认消息 Message Retention(消息保留):消息要保留多久、出发消息删除的原因以及删除方式Pulsal Model转载 2020-06-02 17:19:06 · 3121 阅读 · 0 评论 -
【学习点滴】终端复用利器-tmux
平时在用终端连接linux机器时,常出现因为太长时间没有操作或网络问题导致连接断开,之前的操作和打开的路径丢失的现象,在知乎上看到这个介绍:常用操作:新建会话:tmux new -s <name>查看当前所有会话:tmux ls //ls即 list-session分离会话:tmux detach ...原创 2020-05-04 17:47:26 · 392 阅读 · 0 评论 -
【book】跟开涛学搭建高可用高并发系统
来自书籍《亿级流量网站架构核心技术》高可用负载均衡与反向代理隔离术限流降级超时与重试回滚压测与预案高并发应用级缓存HTTP缓存多级缓存连接池线程池扩容队列术...原创 2020-03-02 21:41:13 · 208 阅读 · 0 评论 -
【项目学习】brpc
小菜learning这些内容全部摘自https://github.com/apache/incubator-brpc/1.bvar bvar是多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值,它利用了thread local存储减少了cache bouncing,相比UbMonitor(百度内的老计数器库)几乎不会给程序增加性能开销,也快于竞争频繁的原子操作。brpc...原创 2020-02-13 13:09:37 · 2524 阅读 · 0 评论 -
【book】深入理解计算机系统
记录下一些收获第二章 信息的表示和处理补码概念的理解:我们知道,补码的表示中,最高位为1表示该数为负,为0表示该数为正。之前一直死记硬背,要求一个负数的十进制大小,就采取求补码操作的逆过程,比如求1010,先减1得1001,再将符号位不变,其余位取反得1110,即-6。在本书上看到的概念是:将字的最高位解释为负权。例如求1010的十进制值,可以这样求:-8 + 0 + 2 +...原创 2020-02-04 11:14:48 · 1399 阅读 · 0 评论 -
【book】计算机组成原理
查缺补漏目录存储器指令中央处理器IO控制方式存储器 内存是半导体触发器结构,外存是磁盘存储,所以速度有差别 常见的三级存储结构:1.快速缓冲存储器,它是计算机系统中的一个高速小容量存储器,存放指令和数据。一般由双极型半导体存储器组成。2.主存储器,一般就是内存,用来存放计算机运行期间的大量程序和数据,一般由MOS半导体存储器组成3.外存储器...原创 2019-11-18 17:22:17 · 3199 阅读 · 0 评论 -
【book】linux内核设计与实现
目录1.进程2.系统调用3.中断处理4.描述一下缺页中断5.signal:6.内核态与用户态的切换7.定时器和时间管理8.文件系统《linux内核设计与实现》学习笔记1.进程 内核把进程的列表存放在叫做任务队列的双向循环链表中,链表的每一个节点都是类型为task_struct(称为进程描述符)的结构。在32位机器上,一个task_struct约...原创 2019-11-03 19:58:43 · 2384 阅读 · 0 评论 -
【学习点滴】游戏后台开发-tx
目录1.战团匹配算法自己的思考2.服务器内存优化3.高时效的UDP4.弱联网优化之道移动网络的特点原因解决方式:1.快链路2.轻往复强监控多异步5.服务端其他优化手段:游戏同步6.DOS攻击和DDOS攻击7.网络编程中的粘包问题1.战团匹配算法原文:https://www.gameres.com/827195.html其...原创 2019-10-17 09:47:52 · 3791 阅读 · 0 评论 -
【学习点滴】boost库的一点知识
boost::thread_specific_ptr今天看代码发现用到了boost库的thread_specific_ptr,就在网上搜了下 线程私有变量(Thread Local Storage)之于线程相当于静态变量之于进程,与进程变量相比是每个线程都有一份, 也就是所谓的“私有”。也可以把线程私有变量理解为key-value对,其中key是线程ID。它的主要作用是在多线程编程中...转载 2019-06-30 10:27:02 · 667 阅读 · 0 评论 -
【学习点滴】c++ 三个线程循环打印ABC
用上了实验室新买的服务器,美滋滋小试牛刀一番#include<iostream>#include<pthread.h>using namespace std;pthread_mutex_t mutex;int k=0; //全局区变量是共享的哦pthread_cond_t cond = PTHREAD_COND_INITIALIZER;v...原创 2019-07-29 20:24:45 · 1386 阅读 · 0 评论 -
【项目收获】自己动手实现一个宏log功能
目录一些零碎知识点1.fwrite2.__FILE__, __LINE__3.ostringstream4.c语言打开文件的方式一个简单版本的log有点疑惑webserver程序里的log临时变量的析构在程序中我们常常要打印出当前函数、代码的执行情况或者错误码,以便调试。若只是简单地cout+重定向其实也能实现,但是总觉得不好用,而且不规范。一般在程序里都...原创 2019-08-03 20:19:49 · 716 阅读 · 0 评论 -
【book】redis的底层实现和使用
目录数据结构与对象a.简单动态字符串(SDS)b.链表c.字典d.跳跃表e.整数集合f.压缩列表g.对象字符串对象列表对象哈希对象集合对象有序集合对象单机数据库的实现redis过期时间 1.redis过期时间介绍2.redis过期时间相关命令3.redis如何清理过期key redis的持久化RDB持久化AOF持久...原创 2019-08-01 11:33:18 · 1090 阅读 · 0 评论 -
【book】apue和unp
目录unix 网络编程unix进程间通信信号量:条件变量pipeFIFO共享内存套接字消息队列RPC:1.本地过程调用2.远程过程调用-同一台主机两个进程中3.远程过程调用-不同主机的两个进程中常见RPC框架:unix 环境编程unix 网络编程1.从TCP套接字读取数字时,我们总是需要把read编写在某个循环中,当read返回...原创 2019-08-12 10:18:13 · 1141 阅读 · 0 评论 -
【学习点滴】cpp遇到的一些疑问和积累
目录1.虚函数的问题2.多种构造函数问题3.全局变量和局部变量重名的问题:4.有符号数溢出问题5.自己实现c的字符串库函数6.栈破坏问题7.右值引用移动构造和移动赋值8.字符串作为hash的key9.size_type和size_t10.同步异步、阻塞非阻塞11.stl::sort的实现12.线程数应该定为多少比较合适13.如何判断一个soc...原创 2019-06-23 09:39:01 · 1360 阅读 · 0 评论 -
【book】mysql技术内幕
目录1.mysql体系结构2.innodb引擎后台线程内存:checkpoint技术innodb关键特性3.文件参数文件日志文件4.索引与算法b+树:5.锁和事务InnoDB行锁实现方式间隙锁(Next-Key锁)1.mysql体系结构mysql由以下几个部分组成:连接池组件 管理服务和工具组件 sql接口组件 查询分析...原创 2019-08-30 15:32:45 · 447 阅读 · 0 评论 -
【book】深入探索c++对象模型
目录c++对象模型成员变量继承情况下的内存占用和分布:继承且有多态情况下:多重继承情况:虚继承的情况:成员函数非静态成员函数:名称的特殊处理(namemangling)虚拟成员函数虚函数与inline的pk:静态成员函数:再说虚函数:构造、析构与拷贝继承体系下的对象构造:构造函数做的工作步骤:析构函数做的工作步骤:一些注意点...原创 2019-09-14 12:54:14 · 661 阅读 · 0 评论 -
【学习点滴】kafka
目录Kafka 简介为何使用消息系统Kafka 架构Kafka 拓扑结构Topic & PartitionProducer 消息路由Consumer GroupKafka High Available为何需要 Replication为何需要 Leader ElectionKafka HA 设计解析如何将所有 Replica 均匀分布到整个集...转载 2019-09-15 20:16:02 · 1035 阅读 · 0 评论 -
【学习点滴】线程进程安全性的一些问题
目录1.++i和i++是线程安全的吗2.无锁队列的实现一、kfifo概述二、kfifo内存分配和初始化三、kfifo并发无锁奥秘---内存屏障四、kfifo的入队__kfifo_put和出队__kfifo_get操作五、扩展3.进程间加锁1.++i和i++是线程安全的吗i++ 先赋值再+1, ++i是先+1再赋值, 例如:int i = 0;int ...原创 2019-09-27 12:08:59 · 687 阅读 · 2 评论 -
【项目学习】nginx
目录架构:Nginx进程处理模型锁的争用与负载均衡(HTTP服务情景)负载均衡(反向代理情景)RR权重ip_hashfair(第三方)url_hash(第三方)平滑升级看一下大名鼎鼎的nginx,学学别人是怎么设计一个服务器的Nginx设计时重视的几个关键点:性能:包括网络性能,单词请求的延迟性,网络效率;(名词就不解释了~) 可伸缩性:可通...转载 2019-09-29 11:24:22 · 500 阅读 · 0 评论 -
【book】程序员的自我修养
目录.c程序编译的全过程预处理:编译:汇编:链接:编译器做了什么目标文件(ELF)目标文件是什么样的用一个实际例子挖掘目标文件ELF文件结构描述文件头段表重定位表字符串表链接的接口-符号静态链接空间与地址分配重定位表c++的相关问题-静态链接时可执行文件的装载与进程动态链接动态链接的步骤与实现库与运行库...原创 2019-10-05 15:56:24 · 1542 阅读 · 0 评论 -
linux笔记3 线程的api
线程:ps -Lf进程号 可查看此进程所有的线程号一. 概念 首先Linux并不存在真正的线程,Linux的线程是使用进程模拟的。当我们需要在一个进程中同时运行多个执行流时,我们并不可以开辟多个进程执行我们的操作(32位机器里每个进程认为它 独享 4G的内存资源),此时便引入了线程,例如当我们既需要下载内容,又需要浏览网页时,此时多线程便起了作用。线程是承担调度的基本单位,一个...原创 2019-03-02 11:39:37 · 192 阅读 · 0 评论 -
【项目收获】web服务器的收获2:tcp、IO
目录nc:tcp连接的正确关闭方式:服务器tcp端口设置三连:为什么IO多路复用要搭配非阻塞IO为什么non-blocking网络编程中应用层buffer是必须的linux最大打开文件描述符数目:此版本与先前版本的区别之处:写脚本监控进程的内存占用、cpu占用tcp的keepalivenc:netcat 简称 nc,安全界叫它瑞士军刀。ncat 也会顺...原创 2019-05-28 22:32:04 · 723 阅读 · 0 评论 -
【项目收获】web服务器源码、gdb调试、压测
目录makefile的编写gdb程序调试记录调试记录1:调试记录2:调试记录3:webserver的压测之前最近总结:之前写的那个简单聊天室真的太简陋了,毫无技术含量呀。。写一个epoll+线程池实现的webserver,加入了对http请求的处理,还有定时器,用来处理长时间不活跃的连接。代码不好放,还是github好管理一些,这里就写一点心得吧。。...原创 2019-05-26 15:49:28 · 1598 阅读 · 1 评论 -
【项目收获】web服务器的系统架构解析
目录modelhttp请求解析:1.开启线程池和事件循环2.主线程处理连接事件3.IO线程处理读写事件4.timerNode和HttpData5.日志6.其他一些问题:modelhttp请求解析:这个层层调用还是有些复杂,要好好捋一捋1.开启线程池和事件循环Main函数开始运行,首先创建EventLoop mai...原创 2019-05-13 15:35:05 · 2206 阅读 · 5 评论 -
【题目记录】一些零散题目
删除子串删除一个只包含字母Q和N的字符串中所有的“NQ”;#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;int main() { string s = ""; cin >> s;...原创 2019-03-09 23:12:18 · 168 阅读 · 0 评论 -
linux网络编程2
文中大部分内容为转载。用多进程或多线程进行服务器并发处理客户端连接,cpu开销太大,实际上可监听的文件描述符指向包括文件、socket、管道模型思想:select:代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>...原创 2019-03-04 22:30:44 · 341 阅读 · 0 评论 -
【学习点滴】c++手写常用排序算法:堆排序、快排、归并
目录堆排序:归并排序:快排:插入排序:冒泡排序:选择排序:实现LRULRU的c++实现堆排序:void heap_adjust(vector<int> &a, int i,int len) { int lc = 2 * i + 1; int rc = 2 * i + 2; int maxindex = i, tmp; i...原创 2020-04-05 11:10:46 · 1720 阅读 · 0 评论 -
linux网络编程1
netstat -apn | grep端口号 可以查看指定端口号的占用情况socket:大小端存储法:网络字节序:ip地址转换函数socketaddr:流程图:客户端不需要bind,可由客户机随机分配一个(隐式绑定),而服务器一定要显示绑定,否则客户端找不到对象。(客户端比作学生,住哪个宿舍无所谓,服务器比...原创 2019-03-03 22:05:50 · 190 阅读 · 0 评论 -
linux网络编程3,线程池
setsockopt作用: 1. 端口复用。 2. 设置缓冲区大小 3. 开放广播权限 4. 开放组播权限 5. 加入组播组。线程池:线程池是解决epol之后的工作的,即已能准确无误地获取触发事件后,服务器如何处理这些请求#include <stdlib.h>#inc...原创 2019-03-05 22:23:48 · 279 阅读 · 0 评论 -
linux笔记2
文件描述符在内核中数据结构 在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态。一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2),0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd...原创 2019-03-01 14:52:33 · 152 阅读 · 0 评论 -
linux简单服务器初学
1.在合适的文件夹下touch server.c client.c Makefile2.vi server.c ,输入服务器代码3.vi Makefile4.在bash中输入make编译通过5. ./server即可启动服务器6.新开一个bash,输入 tel 127.0.0.1 8000 连接到本地的服务器,输入hello 在刚才...原创 2019-02-24 16:58:29 · 265 阅读 · 0 评论 -
【学习点滴】c++的一些注意点,指针、c++11等
目录野指针及c++指针使用注意点C++ 类的静态成员及静态成员函数c++11的新特性什么是C++0x?你该关注C++11吗?C++11是如何开发出来的?C++11包括什么?萃取类型 decltype返回类型后置语法 Trailing return type空指针标识 nullptrlambda表达式的引入原生字符串 Raw string litera...转载 2019-02-17 19:26:27 · 1035 阅读 · 0 评论 -
hadoop学习之代码部分
package cn.itcast.hadoop.hdfs;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.URI;import org.apa...原创 2019-01-23 20:50:58 · 152 阅读 · 0 评论 -
hadoop学习
hdfs架构: (为用户提供了一个便捷访问的虚拟目录结构) 或 【Active Namenode】:主 Master(只有一个),管理 HDFS 的名称空间,管理数据块映射信息(管理元数据信息);配置副本策略;处理客户端读写请求【Secondary NameNode】:NameNode...原创 2019-01-18 16:33:25 · 181 阅读 · 0 评论 -
【题目记录】字符串模式
给定一种pattern(模式)和一个字符串str,判断str是否遵循相同的模式。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应模式。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern = "abba...原创 2019-03-16 09:55:14 · 778 阅读 · 0 评论 -
【项目收获】epoll实现一个简单的聊天室
客户端功能 a.支持用户输入聊天消息 b.显示其他用户输入的信息 c.使用fork创建两个进程子进程有两个功能: 等待用户输入聊天信息 将聊天信息写到管道(pipe),并发送给父进程父进程有两个功能 使用epoll机制接受服务端发来的信息,并显示给用户,使用户看到其他用户的聊天信息 将子进程发给的聊天信息从管道(pipe)中读取, 并发送...原创 2019-04-05 09:45:30 · 1015 阅读 · 0 评论 -
【学习点滴】设计模式学习,单例模式,观察者模式
单例模式我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。单例:用户不能够随意创建新的此类对象,从始至终只存在一个 单例模式的优点: 1. 在内存中只有一个对象,节省内存空...原创 2019-04-04 11:22:10 · 218 阅读 · 0 评论 -
【学习点滴】linux下的线程池相关知识
-_- 首先,线程池是什么?顾名思义,就是把一堆开辟好的线程放在一个池子里统一管理,就是一个线程池。 其次,为什么要用线程池,难道来一个请求给它申请一个线程,请求处理完了释放线程不行么?也行,但是如果创建线程和销毁线程的时间比线程处理请求的时间长,而且请求很多的情况下,我们的CPU资源都浪费在了创建和销毁线程上了,所以这种方法的效率比较低,于是,我们可以将若干已经创建完成的线程放在一起统...原创 2019-05-24 20:36:39 · 176 阅读 · 0 评论 -
【项目收获】web服务器的收获
目录eventfd 介绍接口提供的方法_ _thread右值引用与move用法:std::move 的函数原型定义emplace_backSIGPIPE限制服务器的最大并发连接数为什么要限制并发连接数?优雅关闭连接关闭tcpnagle算法将线程锁封装为一个类C++11 中std::function和std::bind的用法线程的栈...原创 2019-05-07 17:00:00 · 2012 阅读 · 0 评论 -
【学习点滴】c语言用malloc开辟二维数组
#include<stdio.h>#include<stdlib.h>int main(){ int **a; //用二级指针动态申请二维数组 int i,j; int m,n; printf("请输入行数\n"); scanf("%d",&m); printf...原创 2019-04-19 20:47:17 · 7236 阅读 · 8 评论