自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (1)
  • 收藏
  • 关注

原创 mp4解析

0x000002 track_in_movie,表示该track在播放中被引用;(以下字节数均按version = 0)** version | 1 | box版本,0或1,一般为0(以下字节数均按version = 0)** version | 1 | box版本,0或1,一般为0(以下字节数均按version = 0)

2024-08-29 09:50:29 380

转载 go 性能分析

pprof是Go语言内置的性能分析工具,它可以帮助我们分析程序的CPU使用情况、内存分配等。通过pprof,我们可以生成和查看性能分析数据,找到程序中的性能瓶颈,进而进行优化。

2024-07-25 14:36:23 77

转载 现代 C++ 测试工具链(是时候抛弃 gtest/google bench 了)

现代 C++ 测试工具链

2022-10-09 16:31:22 634

转载 图像压缩编码和解码原理——阐述了DCT变换的实质

音视频压缩

2022-09-26 16:20:04 6076 1

转载 CentOS7升级gcc

Centos 7默认gcc版本为4.8,有时需要更高版本的,这里以升级至8.3.1版本为例,分别执行下面三条命令即可,无需手动下载源码编译1、安装centos-release-sclsudo yum install centos-release-scl2、安装devtoolset,注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推sudo yum install devtoolset-8-gcc*3、激活对应的devtoolset,所以你可以一次

2021-12-23 10:25:14 461

转载 Centos7上安装docker

 Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。 一、安装docke...

2018-08-24 11:37:04 250

转载 C++内存泄露检查工具

 Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++。最近用到STL中的List编程,为了检测写的代码是否会发现内存泄漏,了解了一下相关的知识。所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括:参见 http://...

2018-08-22 08:44:13 9202

转载 红黑树(一)之 原理和算法详细介绍

红黑树(一)之 原理和算法详细介绍原文地址: http://www.cnblogs.com/skywang12345/p/3245399.html概要目录1 红黑树的介绍2 红黑树的应用3 红黑树的时间复杂度和相关证明4 红黑树的基本操作(一) 左旋和右旋5 红黑树的基本操作(二) 添加6 红黑树的基本操作(三) 删除      作者:S

2017-12-14 18:11:29 343

转载 redis有序集合性能 列表、集合、有序集合

原文地址: redis有序集合性能 列表、集合、有序集合1.1 列表  列表(list)类型是用来存储多个字符串,元素从左到右组成一个有序的集合.列表中的每个字符串被称为元素(element),一个列表最多可以存储(2的32次方)-1个元素.在redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定所有下标的元素等.  列表类型有两个特点

2017-11-16 10:45:55 3653

转载 C++11 std::bind std::function 变参函数

从最基础的了解,std::bind和std::function[cpp] view plain copy /*   * File:   main.cpp  * Author: Vicky.H  * Email:  eclipser@163.com  */  #include   #include   #include   #include     int add1(

2017-10-17 18:06:14 3891

转载 C++书

原文链接:https://www.zhihu.com/question/20410487/answer/15055637下面是转载的在博客上看到的一个C++书籍阅读清单,可以参考下:阶段 1《Essential C++》这是一本内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程。本书主要围绕一系列逐渐复杂的程序问题,以及用以解决这些问题的语言特性展开讲解。你不只

2017-10-13 15:01:44 368

转载 C++11线程,亲合与超线程

原作者:Eli Benderskyhttp://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading/转载自:http://blog.csdn.net/wuhui_gdnt/article/details/51280906背景与简介多年来,C与C++标准将多线程及并发处理排斥在外——在“目标机器依赖

2017-09-30 16:23:11 1071

转载 cmake cpp构造项目

1.需求[1].使用第三方动/静太库[2].本身代码部分编译为动/静态库[3]多项目管理2.构建一个单独的项目[1]目的:这个项目将生成可执行文件,动态和静态库。先在workspace(or anywhere you like)下建立项目的目录(文件)结构:workspace        |—— HelloWorld                

2017-09-29 18:07:50 349

转载 Go语言中字符串的拼装方法

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好?下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。在VMWare下的Ubuntu 14.04下运行的结果表明:fmt.Sprintf 和 strings.Join 速度相当string + 比上述二者快一倍bytes.Buffe

2017-06-21 17:22:43 648

转载 go json

Encode将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函数将会递归遍历整个对象,依次按成员类型对这个对象进行编码,类型转换规则如下:bool类型 转换为JSON的Boolean整数,浮点数等数值类型 转换为JSON的N

2017-06-21 17:21:54 354

转载 https原理以及golang基本实现

关于https背景知识密码学的一些基本知识大致上分为两类,基于key的加密算法与不基于key的加密算法。现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使用。基于key的加密算法又分为两类,对称加密和不对称加密,比如DES,AES那种的,通信双方一方用key加密之后,另一方用相同的key进行反向的运算就可以解密。不对称加密比较著名的就是R

2017-06-21 15:24:45 516

转载 Bloom-Filter

1. Bloom-Filter算法简介        Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元素是否在一个集合中。       Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有

2017-06-16 17:04:23 453

转载 ubuntu使用mailx利用SMTP发送邮件

转载:http://www.blogjava.net/jasmine214--love/archive/2010/10/09/334102.htmlLinux下mail利用外部邮箱发送邮件的方法:1、下载安装mailxsudo apt-get  install heirloom-mailx2、修改/etc/nail.rc (/etc/mail.rc)set from=username@d

2017-06-08 15:56:27 1512

转载 udp和tcp的区别

TCP UDPTCP与UDP基本区别  1.基于连接与无连接  2.TCP要求系统资源较多,UDP较少;   3.UDP程序结构较简单   4.流模式(TCP)与数据报模式(UDP);   5.TCP保证数据正确性,UDP可能丢包   6.TCP保证数据顺序,UDP不保证   UDP应用场景:  1.面向数据报方式  2.网络数据大多为短消息   3

2017-05-24 17:18:12 471

转载 linux 线程取消以及条件变量锁的释放

#include int pthread_cancel(pthread_t thread);一个线程可以通过此机制向另外一个线程发送结束请求,值得一提的是,接收此请求的线程可以通过本线程的两个属性来决定是否取消以及时同步(延时)取消还是异步(立即)取消。函数成功返回,并不代表那线程就结束了。下面看那两个属性设置:#include int

2017-05-23 18:12:14 1252

转载 POSIX 线程取消点的 Linux 实现

摘要:这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。目录:1. 一个 pthread_cancel 引起的线程死锁小例子2. 取消点(Cancellation Point)3. 取消类型(Cancellation T

2017-05-23 17:25:29 420

转载 Linux进程地址空间

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢?呵呵,这一切的一切都是个迷呀,下面我们就一步一步解开心中的谜团吧

2017-05-19 15:19:26 629

转载 malloc原理和内存碎片化

当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作

2017-05-05 16:13:30 4375

转载 平衡查找二叉树

一,分析平衡二叉查找树有什么意义?   平衡二叉查找树是对二叉查找树的改进,那二叉查找树哪些地方是不尽人意的呢?在分析二叉查找树的平均查找长度时,会发现,二叉查找树的平均查找长度与二叉查找树的形态有关系,最坏的情况是退化为链表,查找变为线性查找,平均查找长度为(n 1)/2.最好的情况就是树的形态与折半查找的判断树形式。平均查找长度为logN。平衡二叉树就是为了保证

2017-04-13 17:41:40 2208

转载 linux线程控制&线程分离

线程概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程资源由于一个程序中的多个线程共享同一地址空间,因此代码段,数据段内容是共享的

2017-04-10 18:09:08 387

转载 NAT简介

简述基于UDP的P2P应用需要考虑NAT的类型,因为不同的NAT组合的穿透的方式并不一致,有的能通, 有的不能通。一般来讲, NAT可以分为四种类型,分别是: 1, 全锥型(Full Cone)2,  受限锥型(Restricted Cone), 或者说是IP受限锥型3,  端口受限锥型(Port Restricted Cone), 或者说是IP +

2017-03-01 16:49:49 386

转载 sipp指南

1      安装及概述:SIPp是一个测试SIP协议性能的工具软件。这是一个GPL的开放源码软件。它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B YE建立和释放多个呼叫。它也可以读XML的场景文件,即描述任何性能测试的配置文件。它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及消息统计)。周期性地把CSV统计数据转储,在

2017-01-18 10:57:24 3948

转载 linux锁机制

在Linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。atomic(原子操作):所谓原子操作,

2017-01-12 11:16:24 440

转载 设计模式教程-开闭原则OCP

原文地址:http://www.hello-code.com/blog/design/201603/6001.html1、官方定义开闭原则,英文缩写OCP,全称Open Closed Principle。原始定义:Software entities (classes, modules, functions) should be open for extension but cl

2016-12-12 16:31:40 412

转载 TCP接收缓存大小的动态调整

给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。表 1. TCP/IP 栈性能使用的可调节内核参数可调节的参数默认值选项说明/proc/sys/net/core/rmem_default"110592"定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大。/proc/sys/net/core

2016-11-30 17:29:12 2508

转载 linux 原子操作 atomic_

atomic_inc(&v)对变量v用锁定总线的单指令进行不可分解的"原子"级增量操作,避免v的值由于中断或多处理器同时操作造成不确定状态。原子操作  所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。  原子操作需要硬件的支持,因此是架构相

2016-11-30 11:35:44 1347

转载 多线程条件下的计数器__原子的加/减 __sync_fetch_and_add

多线程条件下的计数器是服务器开发的常用操作,比如异步请求sessionid的活动,通常我们会用:1、加锁取sessionid2、分段取sessionid (在初始化阶段完成多线程分段取sessionid,这种使我们现在使用的方式,但是计数器是不能分段的)当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的:1、 从缓存取到寄存器2、 在

2016-11-30 09:40:03 531

转载 公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS

对公钥和私钥有点稀里糊涂的,搜索了一些资料,作一些整理吧,先看这个:加密--公钥解密--私钥签名--私钥验证--公钥看了这个也许会对私钥用于签名不解,其实它等同于用私钥加密,而公钥验证就是用公钥解密,但是不能用于保密信息。因为公钥是公开的。再来一个:1)公钥和私钥成对出现2)公开的密钥叫公钥,只有自己知道的叫私钥3)用公钥加密的数据只有对应的私钥可以 解密4

2016-11-17 17:11:47 528

转载 公钥,私钥,证书

加密和认证   首先我们需要区分加密和认证这两个基本概念。   加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安 全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。公钥和私钥    公钥和私钥就是

2016-11-17 01:45:45 478

转载 使用 C++11 编写 Linux 多线程程序

前言在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层

2016-11-15 17:23:47 435

原创 linux技术文档库

发现了一个linux技术文档库,http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp

2016-11-15 16:30:56 627 1

转载 linux多线程实现机制

一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果

2016-11-15 16:27:39 387

转载 linux线程实现模型

当 Linux最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads项目使用这个调用来完全在用户空间模拟对线程的支持。不幸的是,这种方法有一些缺点,尤其是在信号处理、调度和进程间同步原语方面都存在问题。另

2016-11-15 16:25:00 323

转载 linux 线程

一.轻量级进程LWP    既然称作轻量级进程,可见其本质仍然是进程,与普通进程相比,LWP与其它进程共享所有(或大部分)逻辑地址空间和系统资源,一个进程可以创建多个LWP,这样它们共享大部分资源;LWP有它自己的进程标识符,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。LWP由内核管理并像普通进程一样被调度。Linux内核是支持LWP的典型例

2016-11-15 16:16:27 406

转载 NPTL (NATIVE POSIX Thread Library)

POSIX Thread Library (NPTL)使Linux内核可以非常有效的运行使用POSIX线程标准写的程序。这里有一个测试数据,在32位机下,NPTL成功启动100000个线程只用了2秒,而不使用NPTL将需要大约15分钟左右的时间。 历史在内核2.6以前的调度实体都是进程,内核并没有真正支持线程。它是能过一个系统调用clone()来实现的,这个调用创建了一份调用进程的

2016-11-15 16:13:32 2494

robot-ok,简单的机器人模仿程序

robot-ok,简单的机器人模仿程序,模仿机器人行走,等等等等功能

2010-06-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除