Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

设计模式之六大原则

设计模式之六大原则

单一职责原则 单一职责原则(Single responsibility principle),就一个类而言,应该只有一个引起它变化的原因。 在实际编程中的体现,比如一个类只是某一个事物相关的集合,一个函数只做一件事情,不要在这个函数中编写一些不想关的逻辑,这样可以最大程度的提高程序的可维护性,可复用性。 开放-封闭原则 开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改,即对扩展是开放的,对修改是关闭的。新的需求,应该通...
C++智能指针 unique_ptr

C++智能指针 unique_ptr

unique_ptr 独占所指向的对象, 同一时刻只能有一个 unique_ptr 指向给定对象(通过禁止拷贝语义, 只有移动语义来实现), 定义于 memory (非memory.h)中, 命名空间为 std.标准库早期版本中定义了 auto_ptr, 它具有 unique_ptr 的部分特征, 但不是全部, 例如, 不能在容器中保存 auto_ptr, 也不能从函数中返回 auto_ptr. 基于这些原因, 应该尽量使用 unique_ptr, 而不是...
C++智能指针 weak_ptr

C++智能指针 weak_ptr

weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段. weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减...
C++智能指针 shared_ptr

C++智能指针 shared_ptr

shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. shared_ptr 是为了解决 auto_ptr 在对象所有权上的局限性(auto_ptr 是独占的), 在使用引用计数的机制上提供了可以共享所有权的智能指针, 当然这需要额外的开销: (1) shared_ptr 对象除了包括一个所拥有对象的指针外, 还必须包括一个引用计数代理对象的指针...
C++智能指针相关知识点

C++智能指针相关知识点

智能指针与异常如果使用智能指针, 如果程序块过早的结束, 智能指针能保证在内存不再需要时进行释放. (特别是在有多个出口的函数中 -- 虽然应尽量避免设计这样的函数, 但凡事总有例外 -- 此时使用智能指针来自动释放内存是非常方便的)对于异常处理来说, 考虑下面两个函数, 当程序发生异常时, 智能指针也能正确的释放内存. void f3() { int* p = new int(10); throw "some error infomati...
C++并发编程 thread

C++并发编程 thread

std::thread C++11在标准库中为多线程提供组件, 使用线程需要包含头文件 thread, 其命名空间为 std.启动新线程每个进程至少有一个线程: 执行main()函数的线程, 其余线程有其各自的入口函数(线程函数)。当线程执行完线程函数后, 线程也会退出. 如果不传入线程函数(类似这种形式std::thread t;), 线程不会运行. 线程函数不能重载, 否则不能编译.在为一个线程创建了一个 std::thread 对象后, 如果线程已...
Linux系统编程 关于SDTIO库缓冲区

Linux系统编程 关于SDTIO库缓冲区

我们知道标准C中的文件读取的函数比如printf,fwrite等函数,实际都是调用OS级别的API,比如LINUX下就是wirte,read函数,而write read函数在用户态下是没有缓冲的,当然在内核态有OS CACHE/OS BUFFER,所以某些直接调用wirte,read的程序肯定会分配一个缓冲区,特别是O_DIRECT这种方式下,内核态的OS CACHE和OS BUFFER没用这种情况下用户态的BUFFER显得更加重要,因为不可能一次读一个字...
2016年Java服务器端开发面试总结

2016年Java服务器端开发面试总结

因为一些个人原因,陆陆续续参加了一些校招补招、社招的笔试和面试(BAT),也包括一些国外公司(Spotify, Google, Ericsson),最后有幸被网易收入麾下,拿到了S。下面罗列一些我复习中的要点,如果能以此为一个参考,做好充足的准备,国内BAT这些公司的基础技术笔试和面试应该没什么问题。当然对于一些大公司,基础知识可能不是最被看重的,关键是学习能力,独立解决问题的能力,是否是一个"灵性"的人,我一直觉得我们程序员是在创造一个新的世界。 ...
Python实时处理log文件脚本

Python实时处理log文件脚本

这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义;算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下(还是初学者,大神们勿喷哈),真心希望博友们能够再指点一下(现在记录每次的文件大小值是输出到了一个文件中,并且里面还嵌套了有shell命令,这些我认为都是可以优化掉的吧,只是现在我还不知道怎么做);告警是基于zabbix,自定义的模板是120s执行一次#!/...
Java反射 之 反射基础

Java反射 之 反射基础

一、反射反射:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。对于反射的操作实际上就是通过Class对象获取:*a、java.lang.reflect....
Spring IOC代码阅读

Spring IOC代码阅读

1,理解控制反转 以前一直说着这个词,然后把它等于上ioc这个词,再等于上代码里一个bean里依赖了其他bean,不用new,用注解,用xml去描述,就可以了。能用就行了,实际理论的不管也不影响编码,其实能用了内心也是理解是怎么回事的,知识理论上说不好而已。 我觉得只要理解一个事情就好了,ioc所谓的控制翻转,它控制翻转的是什么? 依赖对象的获得被反转 把一个bean中对其他bean的依赖这个事提取出来,统一由一个容器管理,解耦了bean管理和业务的...
嵌入式开发中常见3个的C语言技巧

嵌入式开发中常见3个的C语言技巧

今天我来说几个在嵌入式开发中常用的C语言技巧吧。也许你曾经用过,也许你只是见到过但是没有深入理解。那么今天好好补充下吧^_^1.指向函数的指针 指针不光能指向变量、字符串、数组,还能够指向函数。在C语言中允许将函数的入口地址赋值给指针。这样就可以通过指针来访问函数。还可以把函数指针当成参数来传递。函数指针可以简化代码,减少修改代码时的工作量。通过接下来的讲解大家会体会到这一点的。/*函数指针简单讲解*通过指向函数的指*针调用比较两个数*大小的程序*/#i...
Python中的Lambda表达式

Python中的Lambda表达式

Lambda表达式在python程序中是一种很常见的匿名方法的书写形式,它书写起来非常简单,但是牺牲了可读性。下面来看一下Lambda的简单介绍。语法lambda [parameter_list]:expressionLambda表达式的返回值是一个函数,[parameter_list]是函数的参数,expression是具体的操作。它对应的非匿名方法的书写方式为:def function([parameter_list]):expression如下面的例...
C#中的委托解析

C#中的委托解析

谈及到C#的基本特性,“委托”是不得不去了解和深入分析的一个特性。对于大多数刚入门的程序员谈到“委托”时,都会想到“将方法作为方法的参数进行传递”,很多时候都只是知道简单的定义,主要是因为“委托”在理解上有较其他特性比较难的地方。在本次说明中,不会将委托的简单声明和调用作为重点。 “委托”不需要直接定义一个要执行的行为,而是将这个行为...
<< 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 >>