自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leotoneo的blog

ls all | grep only

  • 博客(151)
  • 资源 (2)
  • 收藏
  • 关注

原创 JVM初探2——JVM启动及基本机构

一、JVM启动流程下面是我们最熟悉的HelloWorld 代码:public class HelloWorld {    public static void main (String [] args)    {        System.out.println("HelloWorld!");    }}其在运行过程如下通过javac编译HelloWorld.java生成He...

2018-06-05 21:08:06 218

原创 JVM初探1——JVM基本概念及介绍

一、JVM概念及介绍       JVM是Java Virtual Machine的简称。意为Java虚拟机,而虚拟机是指过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统现在主要有VMWare、Visual Box、JVM,而前两者主要是使用软件模拟物理CPU的指令集,而JVM使用软件模拟Java 字节码的指令集。而使用最为广泛的JVM为HotSpot。JVM历史主要分...

2018-06-04 20:34:01 301

原创 ubunt14.4下Android Studio 环境搭建及问题解决

在ubuntu14.4下配置安装android studio对出现的文件进行提供解决方案

2017-07-31 20:45:47 707

转载 opencv环境配置攻略

本系列文章由@浅墨_毛星云 出品,转载请注明出处。  文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337作者:毛星云(浅墨)   微博:http://weibo.com/u/1723155442邮箱: [email protected]知乎:http://www.zhi

2016-06-29 16:34:03 991

原创 VS2013常用快捷键

VS2013常用快捷键: 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ”。 2.复制/剪切/删除整行代码 1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完成复制操作,而无需选择整行。 2)如果你想剪

2015-11-19 09:29:37 421

转载 Linux多线程实践(9) --简单线程池的设计与实现

线程池的技术背景   在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务(不止一个不同的任务)就是一个需要解决的关键问题,其实这就是一些"池化资

2015-11-11 20:45:27 621

转载 Linux多线程实践(8) --Posix条件变量解决生产者消费者问题

Posix条件变量[cpp] view plaincopyint pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);  int pthread_cond_destroy(pthread_cond_t *cond);    int pthread_cond_wait(pthread

2015-11-11 19:06:10 544

转载 Linux多线程实践(6) --Posix读写锁解决读者写者问题

Posix读写锁[cpp] view plaincopyint pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,                          const pthread_rwlockattr_t *restrict attr);  int pthread_rwlock_destroy(pt

2015-11-10 20:38:58 619

转载 Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题

Posix信号量Posix 信号量有名信号量无名信号量sem_opensem_initsem_closesem_destroysem_unlink sem_waitsem_post 有名信

2015-11-10 20:36:59 509

转载 Linux多线程实践(3) --线程属性

初始化/销毁线程属性[cpp] view plaincopyint pthread_attr_init(pthread_attr_t *attr);  int pthread_attr_destroy(pthread_attr_t *attr);  线程分离属性[cpp] view plaincopyint pthread_attr_

2015-11-10 09:53:21 329

转载 Linux多线程实践(4) --线程特定数据

线程特定数据[cpp] view plaincopyint pthread_key_create(pthread_key_t *key, void (*destr_function) (void *));  int pthread_key_delete(pthread_key_t key);    int pthread_setspecific(pthread_key_

2015-11-10 09:42:24 412

转载 Kubernetes初探

Kubernetes是Google开源的容器集群管理系统。它构建于docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。本文旨在梳理Kubernetes的架构、概念及基本工作流,并且通过运行一个简单的示例应用来介绍如何使用Kubernetes。总体概览如下图所示是我初步阅读文档和源代码

2015-11-09 21:50:00 456

转载 Linux多线程实践(2) --线程基本API

POSIX线程库  与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”开头,要使用这些函数库,要通过引入头文,而且链接这些线程函数库时要使用编译器命令的“-lpthread”选项[Ubuntu系列系统需要添加的是”-pthread”选项而不是”-lpthread”,如Ubuntu 14.04版本,深度Ubuntu等] 1.pthread_create

2015-11-09 21:37:45 330

转载 Linux多线程实践(1) --线程理论

线程概念   在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列/指令序列”;   一切进程至少有一个执行线程;进程  VS. 线程    1.进程是资源分配(进程需要参与资源的竞争)的基本单位,而线程是处理器调度(程序执行)的最小单位;   2.线程共享进程数据,但也拥有自己的一部分(非常少O(∩_∩)O~)数据,如线

2015-11-09 19:27:53 383

转载 Linux IPC实践--Posix消息队列

1. 创建/获取一个消息队列[cpp] view plaincopy#include            /* For O_* constants */  #include         /* For mode constants */  #include   mqd_t mq_open(const char *name, int oflag); //专用于打开一个

2015-11-09 14:38:40 397

转载 Linux IPC实践--System V IPC综合实践

实践:实现一个先进先出的共享内存shmfifo    使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速;   我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo,

2015-11-07 20:53:04 427

转载 Linux IPC实践--System V信号量(2)

实践1:信号量实现进程互斥父子进程执行流程如下:父进程子进程PPO(print)X(print)sleepsleepO(print)X(print)VVsleepsleep

2015-11-07 19:33:45 450

转载 Linux IPC实践 --System V信号量(1)

信号量API[cpp] view plaincopy#include   #include   #include   int semget(key_t key, int nsems, int semflg);  int semctl(int semid, int semnum, int cmd, ...);  int semop(int semid, struct se

2015-11-07 16:03:30 414

转载 Linux IPC实践 --System V共享内存

共享内存API[cpp] view plaincopy#include   #include     int shmget(key_t key, size_t size, int shmflg);  void *shmat(int shmid, const void *shmaddr, int shmflg);  int shmdt(const void *shmadd

2015-11-07 14:47:47 472

转载 Linux IPC实 --共享内存/内存映射

概述    共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。 共享内存 VS. 其他IPC形式    用管道/消息队列传递数据 用共享内存传递数据     共享内存生成之后,传递数据并不需要再走Linux内核,共享内存允许两个或多个进

2015-11-07 14:37:46 360

转载 Linux IPC实践--System V消息队列(3)

消息队列综合案例消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pidclient进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收消息类型为自己pid的消息;[

2015-11-06 21:22:23 336

转载 Linux IPC实践 --System V消息队列(2)

msgsnd函数[cpp] view plaincopyint msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);  参数   msgid: 由msgget函数返回的消息队列标识码, 也可以是通过ipcs命令查询出来的一个已经存在的消息队列的ID号   msgp:是一个指针,指针指

2015-11-06 20:15:37 330

转载 Linux IPC实践--System V消息队列(1)

消息队列概述   消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限于本机);   每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值.   消息队列也有管道一样的不足: (1)每个消息的最长字节数的上限(MSGMAX); (2)系统中消息队列的总条数也有一个上限(MSGMNI); (3)每个消息队列所能够保存的总字节数是有上限的(MSGMNB)

2015-11-06 20:11:44 341

转载 Socket编程实践(11) --UDP编程基础

UDP特点   无连接,面向数据报(基于消息,不会粘包)的数据传输服务;   不可靠(可能会丢包, 乱序, 重复), 但因此一般情况下UDP更加高效;UDP客户/服务器模型  UDP-API使用[cpp] view plaincopy#include   #include   ssize_t recvfrom(int sockfd

2015-11-06 09:39:34 408

转载 Socket编程实践(10) --epoll原理与封装

常用模型的特点    Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 select/polL模型和epoll模型。 1 、PPC/TPC 模型    这两种模型思想类似,就是让每一个到来的连接一边自己做事去,别再来烦我(详见本系列博客).只是 PPC 

2015-11-05 17:49:30 432

原创 gcc、makefile、gdb学习笔记

gcc编程入门什么是gcc gcc(GNU C Compiler)编译器的作者是Richard Stallman,也是GNU项目的奠基者。什么是gcc:gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器(GNU C Compiler),现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL

2015-11-05 17:42:46 609

转载 Socket编程实践(9) --select的限制与poll的使用

select的限制用select实现的并发服务器,能达到的并发数一般受两方面限制:1)一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n(number)来调整或者使用setrlimit函数设置,但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看[cpp] view pla

2015-11-04 21:16:47 371

原创 栈的应用

应用1:就近匹配几乎所有的编译器都具有检测括号是否匹配的能力如何实现编译器中的符号成对检测?#includeintmain() { int a[4][4];int(*p)[4]; p = a[0]; return 0;算法思路从第一个字符开始扫描当遇见普通字符时忽略,当遇见左符号时压入栈中当遇见右符号时从栈中弹出栈顶符号,并进行匹配匹配成功:继续

2015-11-04 19:13:32 234

原创 栈的实现(二)链式栈

栈的链式存储设计与实现1、基本概念2、设计与实现定义文件ypedef void LinkStack;LinkStack* LinkStack_Create();void LinkStack_Destroy(LinkStack* stack);void LinkStack_Clear(LinkStack* stack);int LinkStac

2015-11-04 16:49:36 459

转载 Vim进阶简明手册

vim的学习曲线相当的大,下图是几个经典的文本编辑器的学习曲线,不排除其中有调侃和幽默的味道。主流编辑器学习曲线图注1:Pico(PIne COmposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着pine电子邮件处理软件发布。它是在Emacs的基础上以pine

2015-11-04 14:17:46 267

转载 (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大

2015-11-04 13:50:26 258

原创 栈的实现(一)顺序栈

Stack基本概念栈是一种  特殊的线性表 栈仅能在线性表的一端进行操作栈顶(Top):允许操作的一端栈底(Bottom):不允许操作的一端Stack的常用操作创建栈销毁栈清空栈进栈出栈获取栈顶元素获取栈的大小栈的顺序存储设计与实现1、基本概念栈的顺序存储结构与线性表的顺序存储结构类似,内部都是用数组实现的。2

2015-11-04 13:38:49 353

原创 线性表的实现(四)双向链表

1、基本概念单链表的结点都只有一个指向下一个结点的指针单链表的数据元素无法直接访问其前驱元素逆序访问单链表中的元素是极其耗时的操作!双向链表的定义在单链表的结点中增加一个指向其前驱的pre指针2、设计与实现插入操作删除操作双向链表的新操作获取当前游标指向的数据元素将游标重置指向链表中的第一个数据

2015-11-03 15:38:11 248

原创 线性表的实现(三)循环链表

1、基本概念循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素循环链表拥有单链表的所有操作创建链表销毁链表获取链表长度清空链表获取第pos个元素操作插入元素到位置pos删除位置pos处的元素新增功能:游标的定义在循环链表中可以定义一个“当前”指针,这个指针通常称为游标,可以通过这个游标来遍历链表中的所有元素。循环链

2015-11-03 14:48:12 299

转载 Socket编程实践(8) --套接字IO超时设置方法

引:超时设置3种方案1. alarm超时设置方法[cpp] view plaincopy//代码实现: 这种方式较少用  void sigHandlerForSigAlrm(int signo)  {      return ;  }    signal(SIGALRM, sigHandlerForSigAlr

2015-11-02 19:55:00 1480

转载 Socket编程实践(7) --Select-I/O复用

五种I/O模型介绍(1)阻塞I/O[默认]   当上层应用App调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞;当对等方发送了数据,Linux内核recv端缓冲区数据到达,内核会把数据copy给用户空间。然后上层应用App解除阻塞,执行下一步操作。 (2)非阻塞I/

2015-11-02 14:18:28 373

原创 线性表的实现(二)链式存储

1、基本概念链式存储定义为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。表头结点链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息数据结点链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息尾结点链表中的最后一个数据结点,其下一元素指针为空,表

2015-11-02 13:05:29 327

原创 线性表的实现(一)顺序存储结构

1、基本概念2、设计与实现接口文件:#ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);int SeqList_Cr

2015-11-02 12:58:07 391

原创 Nginx上的第一个HelloWorld

前言(废话):刚刚看完 深入理解nginx模块开发与架构解析的http处理模块,想想先写一个http处理模块的hellowrold,也算是入门了吧。安装完nginx就可以搞了,安装配置请参考Nginx安装部署。第一步:编写config文件在nginx源代码根目录下创建文件夹ngx_http_hello_world_module文件夹,进入该目录,创建文件配置文件config

2015-11-02 09:29:31 2537 4

原创 MYSQL的安装

MySQL安装图解 一、MYSQL的安装1、打开下载的mysql安装文件,双击运行mysql-5.5.40-win32.msi。  2、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。 3、在“DeveloperComponents(开发者部分)

2015-10-30 15:13:07 317

zd1211-firmware-1.5.tar.bz2

TP-LINK TL-WN322G+ 54M无线USB网卡所用驱动,解压后编译安装

2019-05-08

c语言文件操作函数API

c语言文件操作函数API大全

2015-11-30

空空如也

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

TA关注的人

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