- 博客(38)
- 收藏
- 关注
原创 分享一个SQLite入门教程
***SQLite入门教程***这个相当与一个手册吧,感觉很好。为什么好呢?首先觉得适合我吧,它对于某个知识点介绍的内容简洁,而且都是常用的,抓住重点介绍,没有像其他教程手册一样说得很细、牵涉面广。但是基本上你会用到的东西它都给你列出来了。比较适合像我这样的初学者或则想快速上手的人来学习。
2016-09-14 13:58:15
451
原创 静态库不要strip
根据strip的功能表示,strip经常用来去除目标文件中的一些符号表、调试符号表信息,减少包的大小.我自己做了一函数库,同样的代码生成了一个mylib.so和一个mylib.a文件,之后使用了 strip mylib.so 和strip mylib.a 这两条命令去除一些符号表和调试符号表信息, 感觉这两个库文件的体积大小确实缩小了,使用 nm 命令也不会输出这两个库文件的符号清单.
2016-09-14 13:44:33
3134
原创 移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL
2016-09-14 13:41:33
470
原创 编译在arm板上使用的sqlite3的静动态库
采用的是sqlite-autoconf-3080002.tar.gz 解压 tar xvf sqlite-autoconf-3080002.tar.gz进入 cd sqlite-autoconf-3080002/ 采用的是 arm-none-linux-gnueabi-gcc(g++)编译。 ./configure --host=arm-none-
2016-09-14 13:29:02
557
转载 Linux网络编程 - TCP Socket 简单练习:线程池实现并发服务器
服务器函数执行流程maininit_systemcreat_pthread_poolchild_workthread_managertask_managerprocess_client
2016-09-05 10:36:52
3661
转载 Linux网络编程 - TCP Socket 简单练习:select同时监测多个描述符
运行方式服务器端,可以直接运行命令,也可以带参数运行,如果不带参数运行,则程序自主获取主机ip,然后默认设定port和lisnum的值。其中port默认为6666,lisnum默认为5.[cpp] view plain copy print?./socket_select_server IP地址(可选) 端口号(可选)监听队列大小(可
2016-09-05 10:31:03
675
转载 Linux网络编程 - TCP Socket 简单练习:新进程辅助通信
补充:在进行地址转换时用inet_pton[cpp] view plain copy print?//将ip地址转换为32位网络地址 inet_addr inet_aton或者inet_pton //但为了安全,最好用inet_pton代替inet_addr和inet_aton这两个函数 //三种方式使用方法如下,其中
2016-09-05 10:28:00
349
转载 Linux网络编程 - 域名与IP信息解析
现实中需要实现IP地址与域名的转换,常见的解析方式为DNS方式。还可以使用/etc/hosts文件进入简单的解析,解析中采用的顺序由文件/etc/hosts.conf决定。如下所示通过域名返回主机信息struct_hostent示例代码[cpp] view plain copy print?
2016-09-05 10:25:01
558
转载 Linux网络编程 - UDP网络编程应用
1. UDP网络编程基础UDP通信流程对于UDP方式,发送数据时需要显示指定数据包的目的地址,因此不能使用read/write/send/recv函数。使用sendto和recvfrom第一个参数为发送的目标socket对象。第二个参数为欲发送的数据信息。第三个参数为发送数据的大小。第四个参数为flags,如send函数所示。
2016-09-05 10:09:31
617
转载 Linux网络编程 - TCP高级应用:socket文件描述符属性控制
1. getsockopt和setsockopt修改socket属性int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optl
2016-09-05 09:43:38
1573
转载 Linux网络编程 - TCP高级应用:多路复用
文件I/O方式比较1. 阻塞式文件IO2. 非阻塞式文件IO3. 多路复用IO4. 信号驱动IO(也叫驱动异步IO)IO阻塞与非阻塞操作阻塞:如果没有数据可操作,该函数调用将阻塞,导致对应进程暂停执行,当有数据继续执行并返回。默认read/write函数,以及recv/send函数采用阻塞方式非
2016-09-05 09:37:11
2756
转载 Linux网络编程 - 网络调试工具
tcpdump的使用参考链接:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/05/1771563.html我们用尽量简单的话来定义tcpdump,就是:dump the traffice on anetwork.,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其
2016-09-05 09:25:16
5378
转载 Linux网络编程 - BSD Socket网络通信编程
TCP通信编程流程首先,服务器端需要做以下准备工作:(1)调用socket()函数。建立socket对象,指定通信协议。(2)调用bind()函数。将创建的socket对象与当前主机的某一个IP地和端口绑定。(3)调用listen()函数。使socket对象处于监听状态,并设置监听队列大小。客户端需要做以下准备工作:(1)调用socket()函数。建立soc
2016-09-05 09:16:48
1915
原创 ubuntu下配置nfs挂载
1、装nfs,命令:(安装nfs-kernel-server的时候系统会自动下载另外一个包portmap)#apt-get install nfs-kernel-server#sudo apt-get install nfs-common2、修改nfs配置文件/etc/exports在文件的末尾加上你的共享目录和权限/home/lmz/work 192.168.1.11
2016-09-02 17:05:36
2356
原创 基于hisilicon的arm平台搭建gdb+gdbserver调试环境
1、准备工作建立安装目录,并修改目录权限www.linuxidc.com@ubuntu:~$ sudo mkdir -p /opt/crosstool/arm-gdbwww.linuxidc.com@ubuntu:~$ sudo chown -R /opt/crosstool/arm-gdb下载gdb-6.5.tar.bz2(或者更新版的gdb)www.linuxidc.com
2016-08-30 14:32:30
2835
1
转载 Linux网络编程 - 网络通信基础
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]1linux文件操作1 系统调用11 函数open12 函数close13 函数read14 函数write15 函数ioctl16 函数lseek17 函数fstat和stat和lstat17 函数dup和dup22 库函数21 函数fopen22 函数fread23 函数
2016-08-29 18:38:55
642
原创 C语言之堆栈详解
原文:http://blog.youkuaiyun.com/fk961859482/article/details/42005935 在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点: 堆,列队优先,先进先出。
2016-08-29 10:59:42
837
原创 C语言之基本数据类型
C语言基本数据类型简介1.概述 C 语言包含的数据类型如下图所示:2.各种数据类型介绍2.1整型 整形包括短整型、整形和长整形。2.1.1短整形 short a=1;2.1.2整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前、高位在后,例如
2016-08-29 10:48:45
517
原创 Linux线程池(C语言)及简单实现示例
线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程池提供了
2016-08-29 10:45:25
571
原创 Linux线程编程 - 线程属性控制
获取线程ID实例函数pthread_self()将返回当前线程的ID值。1. 在当前Linux下,线程ID在某进程中是唯一的,在不同的进程中创建的线程可能出现ID值相同的情况。2. 而在内核中,每个线程都有自己的PID(但通过ps命令不能查看,也不会再/proc目录下生成对应PID的编号的目录),用户可以通过syscall函数返回。[cpp] v
2016-08-29 10:12:13
572
原创 Linux线程编程 - 多线程异步管理之信号
线程在信号操作时的特性 (1)每一个线程可以向别的线程发送信号。pthread_kill()函数用来完成这一操作。(2)每一个线程可以设置自己的信号阻塞集合。pthread_sigmask()函数用来完成这一操作,其类似于进程的sigprocmask()函数。(3)每个线可以设置针对某信号处理的方式,但同一进程中对某信号的处理方式只能有一个有效,即最后一次设置的处理方式。(4)
2016-08-29 10:07:08
1077
原创 Linux线程编程 - 线程同步机制之信号量
信号量既可以作为二值计数器(即0,1),也可以作为资源计数器. 信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。函数sem_trywait()和函数pthread_ mutex_trylock()起同样的作用,它是函数sem_wa
2016-08-29 10:02:57
431
原创 Linux线程编程 - 线程同步机制之读写锁通信机制
概述读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态,要么是不加锁状态,而且一次只有一个线程对其加锁。读写锁可以有三种状态:读模式下加锁状态,写模式下加锁状态,不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可用同时占有读模式的读写锁。读写锁也叫做共享-独占锁,当读写锁以读模式锁住时,它是以共享模式锁住的,当它以写模式锁住时,它是以独占模式锁住的。
2016-08-29 09:02:56
675
原创 Linux线程编程 - 线程同步机制之条件变量
前一节中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。当线程A释放锁后,线程B和线程A多锁的竞争是平等的,所以会造成线程A继续抢占到锁,如果线程A一直抢占到锁,那么线程B就一直不会执行。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程
2016-08-26 17:35:55
674
原创 Linux线程编程 - 线程同步机制之互斥锁
互斥锁基本原理互斥以排他方式防止共享数据被并发修改。互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁绑定后,对该共享资源的访问如下操作:(1)在访问该资源前,首先申请该互斥锁,如果该互斥处于开锁状态,则申请到该锁对象,并立即占有该锁(使该锁处于锁定状态),以防止其它线程访问该资源;如果该互斥锁处于锁定状态,默认阻塞等待;(2)只有锁定该互
2016-08-26 16:43:57
624
原创 Linux线程编程 - 线程退出与等待
线程退出新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出:调用pthread_exit函数退出。调用pthread_cancel函数取消该线程。创建线程的进程退出或者整个函数结束。其中的一个线程执行了exec类函数执行新的进程。等待线程退出线程示例[cpp] view plai
2016-08-26 14:42:28
6653
原创 Linux线程编程 - 线程概念及创建线程
线程与进程的对比线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。进程在使用时占用了大量的内存空间,特别是进行进程间通信时一定要借助操作系统提供的通信机制,这使得进程有自身
2016-08-26 13:56:24
663
原创 Windows编程中各种操作文件的方法
windows编程中文件操作有以下几种常见方法:1.C语言中文件操作。2.C++语言中的文件操作。3.Win32 API函数文件操作。4.MFC CFile类文件操作。5.MFC CFileDialog类的文件操作。6.注册表文件操作。下面我来详细说明一下各种文件操作方法:1. C语言中文件操作.需要包含的头文件stdio.h写入文件:F
2016-08-26 10:19:06
3511
原创 秒杀多线程第十篇 读者写者问题
下面利用信号量和互斥量来做一个读写锁类,代码如下:////////////////////////////////////////////////////////////////////////////读写锁功能:该类为多线程做对资源的读写锁,其中信号量用来读写互斥和写写互斥,互斥量用来读读互斥思路概要:看代码中的注释可知////////////////////////////
2016-08-24 10:05:28
355
转载 秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量
转载出处:秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量总结篇的话,就没有什么多说的了,每个人对知识的理解点不同,做出的总结也会不同,该篇文章作者做的总结很不错,至于我自己的总结的话,后续在实际项目中用到或者对这些知识更熟练,有更好的掌握在来做总结。
2016-08-24 09:38:33
355
转载 秒杀多线程第八篇 经典线程同步 信号量Semaphore
转载出处:秒杀多线程第八篇 经典线程同步 信号量Semaphore文章中介绍了对信号量的使用,在这里就不再做说明,以后如果在项目中用到将继续更新。。。转载出处:秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量首先来看下关于线程同步互斥的概念性的知识,相信大家通过前面的文章,已经对线程同步互斥有一定的认识了,也能模糊的说出线程同步互斥的各种概念性知识,
2016-08-23 15:35:25
480
转载 秒杀多线程第七篇 经典线程同步 互斥量Mutex
转载出处:秒杀多线程第七篇 经典线程同步 互斥量Mutex学习笔记:该篇文章已经足够详细的介绍了互斥量的使用,如果在以后的项目中用到的话将更新遇到的问题。
2016-08-23 15:30:19
238
转载 秒杀多线程第六篇 经典线程同步 事件Event
转载出处:秒杀多线程第六篇 经典线程同步 事件Event学习笔记:这篇文章已经介绍的十分详细,此处记录一下看这篇文章时产生的疑问和对该疑问的解答。关键段来处理各子线程间的互斥。详见代码:[cpp] view plain copy#include #include #include long g_nN
2016-08-23 13:47:45
463
转载 秒杀多线程第三篇 原子操作 Interlocked系列函数
转载:秒杀多线程第三篇 原子操作 Interlocked系列函数学习笔记原子操作只能做到各子线程间互斥,不能做到主线程和子线程的同步由于线程执行的并发性,很可能线程A执行到第二句时,线程B开始执行,线程B将原来的值又写入寄存器eax中,这样线程A所主要计算的值就被线程B修改了。这样执行下来,结果是不可预知的——可能会出现50,可能小于50。 因此在多线程
2016-08-16 10:31:32
341
转载 秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
转载:多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
2016-08-12 09:40:28
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人