Fork me on GitHub

泛型编程与C++模板

模板初阶

模板就是让编译器去推到类型,从而使我们的代码更加简洁,复用性更好!

泛型编程:其实在高级语言中大多数都是支持泛型编程的,所谓泛型编程就是编写与类型无关的代码,是一种代码的复用,对于C++来说,模板就是实现泛型编程的基础,没有模板就没有STL,对于Java来说就没有集合框架,由此可见泛型编程的重要性!

阅读更多...

你真的了解C语言吗

Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, PHP, Javascript, 等等。但是,你对C了解吗?顺便注明一下,下面的一些例子来源于这个slides。

阅读更多...

UML建模总结

UML简介

UML(United Modeling Language)统一建模语言,一种基于面向对象的可视化建模语言

UML采用一组形象化的图像(如类图)符号作为建模语言,是这些符号可以形象地描述系统的各个方面
UML通过建立图形之间的各种关系来描述模型!

UML工具

我在学习中使用的是StarUML,这是一款开源免费的UML图绘制工具,点击这里即可下载,当然在有一些其他的UML工具,比如RationalRose 、PowerDesigner 等等不在此一一赘述!

阅读更多...

2018年度总结

不知不觉2018已经过去了,又是一年不知不觉消失在指尖,不过2018真的是我自从进入大学以来最有收获的一年,现在马上就是2019了,刚刚躺下的我居然又坐在电脑面前,做事要有始有终,既然在2018开通了博客就在最后写个总结吧,始终还是觉得键盘的感觉还是比写字的感觉的爽,现在呢不扯那些没用的,先回顾回顾这个2018到底干了啥?

阅读更多...

Linux信号机制

信号的概念

信号的基本概念很简单,谍战剧里面的信号的概念就体现的非常形象,每次情报人员之间沟通的时候就用电台,就比如电台和密码本,每个对应的电台信号都有一个对应的意义,Key-Value形式的,比如A信号表示进攻、B信号表示撤退,非常容易理解的概念。再比如街上的红绿灯,红灯停、绿灯行….

我们既然知道了什么是信号,那么如何处理信号呢?

  • 收到信号执行默认动作,比如看到红灯就停下来
  • 忽略信号,比如看到红灯就当没看到,继续往前走
  • 收到信号执行自定义动作,比如看到红灯就躺在街上睡觉,然后被车碾压…

那么Linux下的进程能够处理信号的前提是认识信号,这就和我们要处理红绿灯的信号的前提是必须认识红绿灯信号,进程收到信号有可能并不会立即处理,而是在合适的时候!

阅读更多...

通俗理解RAII

最近在学习c++多线程编程的时候,偶然看到了RAII的概念,有种这么多年c++白学了的感觉,路漫漫其修远兮啊。下面是我在查找RAII资料时候看到的一篇非常好的博客,因为觉得自己实在写不出比这篇更好的对于RAII的总结的博客了,所以就把文章转摘过来了。

RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种程度上说这个名称并没有体现出该惯性法的本质精神,但是作为标准C++资源管理的关键技术,RAII早已在C++社群中深入人心。

我记得第一次学到RAII惯用法是在Bjarne Stroustrup的《C++程序设计语言(第3版)》一书中。当讲述C++资源管理时,Bjarne这样写道:使用局部对象管理资源的技术通常称为“资源获取就是初始化”。这种通用技术依赖于构造函数和析构函数的性质以及它们与异常处理的交互作用。

阅读更多...

Linux进程通信之共享内存

共享内存

共享内存按照页为基本单位分配的,一页是4K
共享内存无同步与互斥,生命周期随内核
共享内存无同步与互斥,生命周期随内核
共享内存无同步与互斥,生命周期随内核
共享内存区是最快的IPC形式,一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据:
mark

阅读更多...

Linux进程通信之信号量

虽然本文是记录使用信号量保证进程的同步与互斥的,但是其实也可以看做是进程之间的通信问题,为了与前面的保持一致,所以还是叫做 Linux进程间通信了!

信号量

基本概念

进程间通信的方式有管道、消息队列、共享内存这些都是进程间的信息通信,而信号量可以理解为进程使用的临界资源的状态说明,信号量主要用于保证同步与互斥

  • 临界资源:两个进程看到的一份公共资源称之为临界资源
  • 临界区:各个进程中访问临界资源的代码叫做临界区
  • 互斥:每个进程访问临界资源的时候必须是独占式的(排他式的),只能自己一个人访问
  • 同步:防止不间断的占有资源和释放资源,这样的话其他进程就会长时间得不到资源,这样会造成进程的饥饿问题

由此可见我们之前用于进程间通信的管道,消息队列,共享内存都是临界资源,管道是内核已经提供了同步与互斥,但是消息队列和共享内存都是不保证同步与互斥的

阅读更多...

Nginx可以做什么

本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得,欢迎留言交流。

Nginx能做什么

  • 反向代理
  • 负载均衡
  • HTTP服务器(动静分离)
  • 正向代理

以上就是我了解到的Nginx在不依赖第三方模块能处理的事情,下面详细说明每种功能怎么做。

mark

阅读更多...
  • © 2018-2020 changlin zou
    • Page View:
    • Unique Visitor:

请我喝杯咖啡吧~

支付宝
微信