qq_41837902
码龄7年
求更新 关注
提问 私信
  • 博客:12,361
    12,361
    总访问量
  • 21
    原创
  • 6
    粉丝
  • 20
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
加入CSDN时间: 2018-03-14
博客简介:

qq_41837902的博客

查看详细资料
个人成就
  • 获得0次点赞
  • 内容获得1次评论
  • 获得9次收藏
  • 博客总排名635,252名
创作历程
  • 18篇
    2019年
  • 15篇
    2018年
成就勋章

TA关注的专栏 1

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

兴趣领域 设置
  • 后端
    架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

90人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

NoSQL

NoSQLNoSQL关系型数据库主要优势缺点其他NoSQL主要目的优点数据结构的设计NoSQL关系型数据库主要优势SQL语言的支持有并发保护(通过事务控制):使得多个应用程序可以共同操作一份数据。缺点存储的关系结构和内存中的数据结构不符:以我们的程序为例就是经常要把类转化成JsonObject去存储。那已经是用到Nosql数据库了,如果用关系型还要更复杂的转化。关系型数据库不...
原创
博文更新于 2019.10.10 ·
297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Maven

MavenMaven使用流程:pom.xml其他标签:SNAPSHOT所有标签介绍maven项目目录层级的构成(不一定要全用)mvn操作maven配置插件resourceMaven使用流程:download在IDE中导入(一般自带的版本都较低)。pom.xml在project的root文件夹下有pom.xml文件(xml是一种可扩展标记语言。不像html是一种国际通用型,xml是...
原创
博文更新于 2019.10.10 ·
230 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

进程/线程上下文切换会用掉你多少CPU?

进程/线程上下文切换会用掉你多少CPU?进程上下文切换一个简单的进程上下文切换开销测试实验进程进程是操作系统的问题大发明之一,对应用程序屏蔽了CPU调度、内存管理等硬件细节,而抽象出一个进程的概念,让应用程序专心于实现自己的业务逻辑即可,而且在有限的CPU上可以并发执行许多个任务。但是它为用户带来方便的同事,也引入了一些额外的开销-进程上下文切换的开销。上下文切换在两个进程切换的过程中,先...
转载
博文更新于 2019.09.28 ·
306 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

DynamoDB

DynamodbDynamodb简介基本组件主键二级索引Dynamodb简介dynamodb 是一种无架构的非关系型数据库,这表示属性及其数据类型都不需要预先定义。每个项目都能拥有其自己的独特属性。基本组件表 – 类似于其他数据库系统,DynamoDB 将数据存储在表中项目 – 每个表包含零个或更多个项目。项目 是一组属性,具有不同于所有其他项目的唯一标识(主键,DynamoDB的主...
转载
博文更新于 2019.09.27 ·
532 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(十)

心得与小结 优秀书籍:《Java Concurrency in Practice》 《操作系统设计与实现》、《现代操作系统》、《操作系统概念》选一,了解各种同步原语、临界区、竟态条件、死锁、典型的IPC问题等。 在多线程编程中要分析一切可能的竟态条件。 在单CPU时代的多线程编程和多CPU时代的...
转载
博文更新于 2019.04.16 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(九)

弱回调 、把shared_ptr绑(boost::bind)到boost::function里,那么回调的时候StockFactory对象始终存在,是安全的。但延长了生命期。 像之前的析构函数问题,有时候我们需要知道对象是否或者,就像Observeable::notifyObservers()那样,称之为“弱回调”。这里再次用到weak_ptr,将shared_pt...
转载
博文更新于 2019.04.16 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(八)

enable_shared_from_this 针对上次的问题,this指针的暴露依照前面的解法应该用shared_ptr来解决,但get()本身是个成员函数,如何获得一个指向当前对象的shared_ptr<StockFactory>对象呢? 可以使用enable_shared_from_this。这是一个以其派生类为模板类型实参的基类模板,继承它...
转载
博文更新于 2019.04.16 ·
130 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(一)

线程安全的定义: 1、多个线程同时访问时,其表现出正确的行为 2、无论操作系统如何调度这些线程,无论这些线程的执行顺序如何交织 3、调用端代码无须额外的同步或其他协调动作。(如在调用函数前后加锁等)当析构函数遇到多线程: C++程序员需要自己管理对象的生命期,这在多线程下显得尤为困难。这里讨论当多个线程同时可以看到一个对象...
转载
博文更新于 2019.04.16 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(二)

空悬指针: 当有两个指针同时指向一个对象时,如果只有一个指针对对象进行了销毁,哪怕后续做的再好,那另一个指针就是空悬指针了。一个“解决办法” 我的老师教过我,一旦有了困难,先想想能不能加入间接层,一旦问题复杂化,牵涉过多,就引入间接层,这是一种思想,就和不要使用一个变量表达多种含义一样,宁可多设置变量,毕竟变量的开销较小。 在这里,可...
转载
博文更新于 2019.04.16 ·
120 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(三)

C++里可能出现的内存问题大致有这么几个方面: 1、缓冲区溢出 2、空悬指针/野指针 3、重复释放 4、内存泄漏 5、不配对的new[]/delete 6、内存碎片 正确使用智能指针能很容易地解决前面5个问题。 1、缓冲区溢出:用vector<char&...
转载
博文更新于 2019.04.16 ·
148 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(四)

将智能指针应用到Observer上: 因为weak_ptr拥有成员函数可以判断所指向的对象是否活着,那么观察者模式的竟态条件就可以通过这种判断来解决: class Observerable{public: void myregister(weak_ptr<Observer> x); //可用const weak_ptr<Observ...
转载
博文更新于 2019.04.16 ·
162 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(五)

再论shared_ptr的线程安全 前面已经提到,shared_ptr本身不是100%线程安全的。它的引用计数本身是安全且无锁,但对象的读写则不是,因为shared_ptr有两个数据成员,读写操作不能原子化。MutexLock mutex;//不需要加读写锁,只用互斥锁即可shared_ptr<Foo> globalPtr;//这个用例是把该指针安全地传给d...
转载
博文更新于 2019.04.16 ·
122 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

线程安全的对象生命期管理(六)

shared——ptr技术与陷阱 1、意外延长对象的生命期 shared_ptr是强引用,只要有一个指向x对象的shared_ptr存在,该对象就不会析构。而shared——ptr又是允许拷贝构造和赋值的(否则就不用引用计数了,scope_ptr..),但如果不小心遗留了一个拷贝没有释放,那么对象就会永久存在(内存泄漏)。这也是java内存...
转载
博文更新于 2019.04.16 ·
160 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

线程安全的对象生命期管理(七)

对象池 举例:class StockFactory : boost::noncopyable{public: shared_ptr<Stock> get(const string& key);private: mutable MutexLock mutex; std::map<string,shared_ptr<Stock>...
转载
博文更新于 2019.04.16 ·
173 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

STL

STL1.容器 1.顺序容器 vector 矢量容器(向量容器):延一端增长 list 双向链表容器 deque 双端队列容器 2.关联容器 map 单映射...
原创
博文更新于 2019.04.02 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux 文件管理命令

操作系统:管理软硬件资源,并为用户提供与计算机交互能力的一种软件。Linux:开源 多用户(允许多用户同时登陆系统工作) 内核小(安卓):运行速度快。 一切皆文件Linux 目录结构 /(根目录)/bi...
原创
博文更新于 2019.04.02 ·
103 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

智能指针

强智能指针shared_ptr:        把管理的内存块的地址和有多少个指针指向封装成一个结构体(引用计数管理器(数组)),放在一个单独的类中。        接口:addRef()、delRef()、 getRef();        只需有一个管理器存在即可:适合使用单例模式:创建静态成员(为了线程安全应在类外先进行创建)        addRef():      ...
原创
博文更新于 2019.02.25 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

运算符重载、内存池、智能指针

内存池:为了解决频繁开辟内存、释放内存的效率问题和碎片问题。             效率问题:因为要每次开辟内存释放内存都要从用户态切换到内核态,状态的转换需要时间,                                                                         需要尽可能地避免。                              ...
原创
博文更新于 2019.01.22 ·
237 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

函数调用过程、调用约定和返回值的返回方式

函数的调用过程:(带括号的是非主函数被调用时的调用过程)    (0.形参的初始化。)    (0.1压入下一行指令地址)    1.开辟主函数栈帧空间并初始化    2.压入调用方栈底指针寄存器的值    3.移动ebp到被调用方栈底    4.移动esp到栈顶    5.为了保留3个寄存器的值,把寄存器的值先压入(修改了也不怕了,反正可以找回)    6.开辟局...
原创
博文更新于 2018.12.06 ·
1744 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

类的生存周期和初始化列表

1、对象的生存周期:     如果形参是对象类型    建议使用引用,如果不用,多了对象的生成步骤,多了空间的开辟、构造函数、析构函数的调用,浪费资源。代码见下:第一次会显示3次函数调用,加引用后只有两次:#include&lt;iostream&gt;#include&lt;string.h&gt;using namespace std;class Object{publi...
原创
博文更新于 2018.12.06 ·
206 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多