3 qq_41837902

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 27w+

Maven

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

2019-10-10 20:00:39

NoSQL

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

2019-10-10 19:23:32

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

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

2019-09-27 19:34:50

DynamoDB

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

2019-09-26 13:14:54

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

心得与小结 优秀书籍:《Java Concurrency in Practice》 《操作系统设计与实现》、《现代操作系统》、《操作系统概念》选一,了解各种同步原语、临界区、竟态条件、死锁、典型的IPC问题等。 在多线程编程中要分析一切可能的竟态条件。 在单CPU时代的多线程编程和多CPU时代的...

2019-04-16 21:29:46

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

弱回调 、把shared_ptr绑(boost::bind)到boost::function里,那么回调的时候StockFactory对象始终存在,是安全的。但延长了生命期。 像之前的析构函数问题,有时候我们需要知道对象是否或者,就像Observeable::notifyObservers()那样,称之为“弱回调”。这里再次用到weak_ptr,将shared_pt...

2019-04-16 19:03:19

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

enable_shared_from_this 针对上次的问题,this指针的暴露依照前面的解法应该用shared_ptr来解决,但get()本身是个成员函数,如何获得一个指向当前对象的shared_ptr<StockFactory>对象呢? 可以使用enable_shared_from_this。这是一个以其派生类为模板类型实参的基类模板,继承它...

2019-04-16 17:10:48

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

对象池 举例: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 11:49:03

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

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

2019-04-14 21:38:01

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

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

2019-04-11 12:54:45

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

将智能指针应用到Observer上: 因为weak_ptr拥有成员函数可以判断所指向的对象是否活着,那么观察者模式的竟态条件就可以通过这种判断来解决: class Observerable{public: void myregister(weak_ptr<Observer> x); //可用const weak_ptr<Observ...

2019-04-10 09:19:54

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

C++里可能出现的内存问题大致有这么几个方面: 1、缓冲区溢出 2、空悬指针/野指针 3、重复释放 4、内存泄漏 5、不配对的new[]/delete 6、内存碎片 正确使用智能指针能很容易地解决前面5个问题。 1、缓冲区溢出:用vector<char&...

2019-04-09 21:25:37

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

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

2019-04-09 10:37:26

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

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

2019-04-08 21:17:44

STL

STL1.容器 1.顺序容器 vector 矢量容器(向量容器):延一端增长 list 双向链表容器 deque 双端队列容器 2.关联容器 map 单映射...

2019-04-02 20:31:40

Linux 文件管理命令

操作系统:管理软硬件资源,并为用户提供与计算机交互能力的一种软件。Linux:开源 多用户(允许多用户同时登陆系统工作) 内核小(安卓):运行速度快。 一切皆文件Linux 目录结构 /(根目录)/bi...

2019-04-02 19:09:35

智能指针

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

2019-01-24 21:31:42

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

内存池:为了解决频繁开辟内存、释放内存的效率问题和碎片问题。             效率问题:因为要每次开辟内存释放内存都要从用户态切换到内核态,状态的转换需要时间,                                                                         需要尽可能地避免。                              ...

2019-01-21 15:57:47

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

1、对象的生存周期:     如果形参是对象类型    建议使用引用,如果不用,多了对象的生成步骤,多了空间的开辟、构造函数、析构函数的调用,浪费资源。代码见下:第一次会显示3次函数调用,加引用后只有两次:#include<iostream>#include<string.h>using namespace std;class Object{publi...

2018-12-06 17:09:18

const

const(c语言中):定义常变量          1、将变量变成只读(不可修改)(static:静态,外界不可见)          2、数据类型对于const而言时透明的          3、const修饰它的直接右边,不能做左值(做左值即可修改)          4、权限可以同等或者缩小传递,但不能放大传递const(c++中)         1、修饰变量:将...

2018-11-30 20:59:01

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。