今天开贴记录一下,每天学习和巩固一个知识点,记录下来;俗话说,温故而知新可以为师矣。
成长经历:
2022-04-21
了解了一下分布式消息队列-kafka;学习了它的以下内容:1. kafka的应用场景(异步处理、系统解耦、流量削峰、日志处理); 2. kafka与线程队列的区别(高可用性、可靠性、可扩展性);
目前已掌握的两个实际运用场景:利用kafka实现用户登录时,短信验证的异步处理;利用kafka实现硬件数据采集服务器中的,数据异步消费;
2022-04-22
hash算法实现负载均衡:以前在单机部署中,线程之间实现负载均衡时,曾使用hash算法,将数据分配到不同的线程处理,以保证没有线程是过于空闲;在集群部署时,使用hash算法,将数据固定的分发给指定的服务器处理。
2022-04-23
关注了C++新特性中,std::thread线程分离是解决什么问题?关注点分离、异步处理,适合“即用即忘”的任务。
2022-04-24
这是阅读《C++并发编程实战》第2章的第三遍:如何管理线程?
2022-04-25 修改线程之间共享数据的最简单的潜在问题就是破坏了不变量。2022-04-26 今天看书联想以前编程经验,想明白了一招,对于读取栈数据容器时通常pop函数的使用:a. std::thread可以与任何可调用类型一起工作。可将一个带有函数调用 *** 作符的类的实例传递给它的构造函数; b.
等待线程结束,可以使用join,这是一种低效率的事情;更好的方法使用条件变量或者future。 c.
什么是“资源获取即初始化方法”?用作异常时等待线程结束。 d.
如何转移线程的所有权?举例,从一个函数中,创建后台分离线程;并且返回一个对象;
e.生成一批线程并等待他们完成?第一步生成线程,第二步轮流在每个线程上调用join; f. 如何在运行时选择线程的数量?
g.标识线程的id通常可以用来做什么?在关系型容器中,可以用作主键或者被排序。可以用这个ID来确定哪些 *** 作是允许的。
常用的方法:1. 把希望接受出栈值的变量的引用,作为一个参数传递给pop调用。这是常规做法,要求所存储的类型必须是可以赋值的。但是很多我们自己定义的类型是不支持赋值的。 2. 加深了另一种做法,返回出栈项的指针,结合智能指针的调用能够不用担心内存的分配。而不必使用new和delete,减少开销。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)