- 博客(107)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注
原创 Android Training学习笔记之开始篇
google为了让广大android开发者能够高效地创建优质的app,专门针对开发者提供了Training板块,这个板块的学习资料是最一手的,来自google android工程师之手的。这个资料是每一个android开发者都应该学习的手册,并且它是不断更新的。现在给出它的链接: https://developer.android.com/training/index.html 英文不太好的同学
2016-06-08 10:31:31
1890
原创 Android升华之路------activity的启动模式
话说从工作以来,感觉自己明显变懒了,不怎么愿意动笔写点东西了,这个大学时候完全不一样。但是前人有云:好记性不如烂笔头,于是决定还是坚持写点东西,以来和大家分享一下自己的学习成果,而来督促自己学习进步。嘿嘿!! 废话少说,here we go!! ×××××××××××××××××××××××××××××以上为废话××××××××××××××××××××××××××××××××××××××× 在
2016-06-06 14:25:31
5059
转载 蓝牙的配对和连接的建立过程
蓝牙的建立过程是一个复杂的过程,即使有过相当一段工作和使用经验的人,如果不仔细去了解还是理解不全。平时我们用蓝牙耳机听音乐,和不同的设备共享文件,打电话等,都有一个配对--连接--传输数据的过程。配对,其实就是一个认证的过程。为什么不配对便无法建立连接?任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用认证的方式进行数据交互。同时为了
2014-05-27 20:23:26
4750
原创 求一个文本文件中有多少个单词的方法
需求是给出一个文本文件,求出其中有多少个单词(不用判断单词是否为真的英语单词)。分析:因为不需要判断是否为真的英语单词,这就简单多了。只要以空格,TAB,标点符号等非字母间隔的字符串都是单词(不考虑连字符-)。我的解决方法是判断一个单词,只要满足一个是字母的字符后一个字符不是字母,即可算是一个单词。程序如下:系统IO方式:/*******************************
2014-04-14 16:49:39
2719
原创 一道C语言编程比赛题(时钟追赶问题)
问题描述:The three hands of the clock are rotating every second and meeting each other many times everyday. Finally, they get bored of this and each of them would like to stay away from the other two.
2014-04-14 16:26:29
3329
原创 判断机器的大小端常用的程序
我们知道机器的CPU分为大端和小端,但是如何通过程序区判断呢?这里给出一个常用的,比较好用的办法,先看程序:/************************************************************************* > File Name: HostOrder.c > Author: Baniel Gao > Mail: createchance
2014-04-08 20:55:39
1599
原创 ramdisk的模拟实现
在linux系统中有一种文件系统很特殊,他便是ramdisk,当然完全的ramdisk已经由于其对内存容量的要求已经没人使用了,但是他的升级版本cramfs确实很瘦欢迎,尤其是在嵌入式设备中,当你想创建一个文件系统而又不想让人对其中的文件进行修改,那么cramfs便是很好的选择。在我的这个程序中,模仿ramdisk原理,从内存中开辟一块内存(8M),然后对其进行格式化,挂载使用。当然,这一切的任务
2014-02-24 19:44:23
2226
原创 SQLite实现在线电子词典
需求:服务器:1).提供英英方式的单词查询2).同时记录用户的查询历史2).客户机登陆需要密码客户机:1).登陆需要密码, 并且提供注册新用户功能2).用户的查询即时给予回复3).用户可以查询自己的查询历史4).用户也可以清除自己的历史记录下面是源码, 由于时间仓促,代码难免比较粗糙,希望谅解!server.h:
2014-01-15 21:02:38
7539
4
原创 Linux C IO编程学习笔记(第一天:标准IO)
首先说一下输入输出的概念,所谓的输入输出就是相对于程序而言的,凡是讲数据输送到程序中的过程就是输入,相反就是输出然后,在linux中的IO分为两种,一种是文件io:是由内核提供的,比较简洁,低级IO,没有缓存,另一种是标准IO:是由标准C库提供,功能复杂高级IO,有缓存那么缓存可分为以下几种:1.行缓冲:系统不多见,多用于跟用户交互,当一行满的时候刷新缓冲,一行以\n结束2.满缓冲
2013-12-25 19:17:03
1701
原创 球钟问题的解决--栈和队列
球钟问题描述:球钟是一个利用球的移动来记录时间的简单装置。它有三个可以容纳若干个球的指示器:分钟指示器,五分钟指示器,小时指示器。若分钟指示器中有2个球,5分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32。 工作原理:每过一分钟,球钟就会从球队列的队首取出一个球放入分钟指示器,分钟指示器最多可容纳4个球。当放入第五个球时,在分钟指示器的4个球就会按照他们被放入时的相反顺序
2013-12-21 15:08:17
4157
1
原创 C语言链表实现队列操作
还是操作队列,但是这次换成链表,但是要注意出队的操作。一般的思维是在出队的时候,删除头结点的下一个节点,这样的话确实可以将队列中的节点全部删除,但是如果我们将最后一个节点删除的时候,我们的算法就将tail指针赋值为NULL,这时如果再进行入队操作的时候,就会发生段错误。为什么呢?因为tail指针这是的值已经是NULL了,再将tail的后面接节点的话就会访问非法的内存空间。所以我们在出队操作的时
2013-12-20 17:19:32
5012
原创 C语言连续存储实现队列机制
所谓队列,就是如同生活中的队列一样,拥有以下性质:1).每次加入一个元素时,必须在队尾加入2).每次拿走一个元素时,必须从对头拿走总结起来也就是先进先出,后进后出。从存储上看,队列有两种实现方式,一个是连续存储,一个是离散存储。连续存储就类似于数组,而离散存储就类似于链表,这里我们先实现比较简单的连续存储:由于队列的操作可以在对头也可以在队尾,也就是说他可以在两端操作,这样我们
2013-12-20 13:19:00
1596
原创 C语言单向循环链表解决约瑟夫问题
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因
2013-12-19 21:10:39
3375
翻译 linux内核编码风范CodingStyle(中文版)
Chinese translated version of Documentation/CodingStyleIf you have any comment or update to the content, please post to LKML directly.However, if you have problem communicating in English you
2013-12-18 14:38:18
2828
原创 C语言实现线性存储之连续存储
在数据结构中,数据的存储方式最简单的是线性存储,而线性存储中分为连续存储和链式存储,今天我们实现连续存储在本程序中使用malloc函数构造一个连续存储的内存空间,接着实现对其增,删,改,查,追加,插入等功能,并实现了菜单式界面,由用户自由选择如何对申请到的空间操作在菜单界面下,用户可以输入q来退出程序源代码:/************************************
2013-12-17 20:46:05
1519
原创 scanf函数的特点
今天闲来无事,写个小程序试试scanf的特性,发现:scanf函数在接受输入的时候是分类型的:当接受的是字符型的时候即%c,这时他会接受回车符;当接受的是数值型(如整形,浮点型)的数据的时候,他不会接受回车符。如下代码:/************************************************************************* > Fi
2013-12-17 18:59:03
2413
转载 OpenJDK和JDK区别
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,其大部分
2013-12-16 11:25:49
2392
转载 su和su -的区别
前几天,在一次项目中,犯了一个很低级的错误,但是没弄明白是什么问题。情况是这样的,我们在做灾备,重启系统化,以root用户权限,通过 su oracle ,进去后,oracle的rac 无法正常启动,我没细看,一直在找其他的原因,最后经过同事提醒,说应该执行 su - oracle。果然如他所说,进去后正常启动。 今天忽然想起,又仔细查看了资料,做个笔记,备忘。也提醒自己注意细节。
2013-12-14 11:27:05
1457
原创 强悍的VIM,强悍的配置文件!!!
map :call SaveInputData()func! SaveInputData() exec "tabnew" exec 'normal "+gP' exec "w! /tmp/input_data"endfunc"colorscheme torte"colorscheme murphy"colorscheme desert "colorscheme dese
2013-12-07 15:13:22
2239
原创 C语言编写五子棋程序
五子棋游戏我们大家很多人都玩过,规则简单但是内容千变万化,今天我用C语言写了一个五子棋程序,由于时间仓促程序中难免会有BUG,希望您多多指正阿!!程序的功能:两个人轮流下子,在输入下子的时候,可以输入r来进行悔棋,也可以输入q来退出程序。在本程序中,一共有5个模块,分别为:1.生成棋盘模块:void create_board(char (*board)[N]); 本模
2013-12-07 14:56:22
7955
原创 有关C语言中bool类型的思考
在C99标准中加入了非常好用的bool类型,但是今天在写程序的时候,发现一个很有意思的问题,程序如下:#include #include int main(void){ bool a = -1; if(a+1) printf("aaaaaaaaaaaaa\n"); return 0;
2013-11-27 18:56:06
1389
1
原创 C语言中数值的移位运算
在C语言中的数值可以实现移位运算,由于数值分为无符号(unsigned)和有符号(signed),这两种的数值运算方式不一样。无符号数值的运算很简单,总结一句话就是移位和补零,而有符号数值的移位需要注意一下。当数值是有符号的时候,如果是左移的话就是移位和补零,所以一个正数可以通过移位变成一个负数或者是零;但如果是右移的话,就不太一样。由于是有符号数,可能发生逻辑右移,也可能发生算术右移,这
2013-11-27 18:48:57
2866
转载 计算机为什么采用补码的形式存储数据?
在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,带符号的证书可以表示所有的整数。由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用0、1来表示。通常我们用最高的有效位来表示数的符号(当用8位来表示一个整数时,第8位即为最高有效位,当用16位来表示一个整数时,第16位即为最高有效位
2013-11-27 12:53:08
5719
6
原创 并发服务器的实现(进程与线程)
总体来说,服务器的运行模式大体有两类:循环服务器和并发服务器。所谓的循环服务器就是说他给客户端提供的服务时一个接着一个的,不能同时服务,也就是说当一个用户使用服务器的时候,其他用户不没能使用只能等待。这显然不符合实际服务器的要求,而并发服务器就可以很好地解决这个问题。并发服务器能够同时为多个客户端服务,同时并发服务的能力是服务器性能的一个重要指标。并发服务器的实现总体有以下几种方法:① 服
2013-09-27 22:01:33
2372
转载 关于select函数中timeval和fd_set重新设置的问题
select原型: int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 和select模型紧密结合的四个宏:FD_CLR(int fd, fd_set *set);FD_ISSET(int fd, fd_set *set);FD
2013-09-26 10:52:27
2238
原创 64位linux中使用inet_ntoa报错处理
最近一直使用linux mint 15,我用的是64位操作系统,在进行网络编程的时候,发现一个问题,请看源码:/*get_ip_by_name.c*/#include #include #include #include #include #include int main(int argc,char *argv[]){ struct hostent *h; i
2013-09-25 15:17:06
2303
转载 linux网络编程必看书籍
首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经典教材。目前已经是第五版,本书作者80年代就开发出MINIX,是一个用于操作系统教学的类UNIX(的小型操作系统。而
2013-09-22 15:46:34
1459
原创 线程实现生产者消费者实验
生产者消费者问题描述如下:有一个有限缓冲区和两个线程,生产者和消费者,他们分别不停地把产品放到缓冲区和从缓冲区拿走数据,一个生产者在缓冲区满的时候必须等待,而消费者在缓冲区空时也必须等待,又因为缓冲区时临界资源,故要实现两个线程之间的互斥访问。在本实验中采用管道来模拟有限缓冲区,并使用信号量来解决同步和互斥问题。在这里我们使用三个信号量:mutex,avail,full。其中两个信号量av
2013-09-20 17:11:21
2511
原创 gcc中-pthread和-lpthread的区别
用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:S
2013-09-20 10:56:50
12717
原创 信号量的简单使用
信号量是多任务操作系统中用来实现多个进程或线程之间同步于互斥的,在操作系统中使用PV操作实现信号量的操作。在本例中,首先创建一个子进程,然后利用信号量实现控制父子进程的运行顺序:#include #include #include #include #include #include /*为了得到更好的观察效果,设置延时*/#define DELAY_TIME 3
2013-09-14 18:42:09
3686
原创 一个简单的守护进程的编写
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的
2013-09-12 18:21:15
2292
原创 使用vfork函数时出现总线错误
在学习进程编程的时候,发现了一个有意思的事情,代码如下:#include #include main(){ if( vfork() ==0 ) { printf(“This is the child process\n”); } else { printf(“This is the parent process\n”); } return 0;}这个程序看
2013-09-08 17:43:46
1132
原创 C库函数——getcwd函数
函数原型:char *getcwd(char *buffer,size_t size)函数功能:提供一个size大小的buffer空间,用来存储得到的当前的目录示例代码:#include #include int main(void){ char buf[50]; getcwd(buf,sizeof(buf)); printf("Current working dir
2013-09-07 22:18:51
3795
原创 C库函数——fputc函数
函数原型:int fputc(int c,FILE *stream);作用:将字符c写入stream文件中代码:#include #include int main(int argc,char *argv[]){ FILE *fp; char ch; if( argc != 2 ) { printf("Usage:%s filename\n\a",argv[0])
2013-09-07 18:55:19
3486
1
原创 学生信息管理系统
刚写了一个学生信息管理系统,权当是训练,由于时间仓促,肯定有BUG,如果大家发现了,希望在评论中指出啊!本人不胜感激!(运行平台linux+GCC)#define LEN sizeof(struct student)#define FORMAT "%-8d|%-15s|%-12.1lf|%-12.1lf|%-12.1lf|%-12.1lf\n"#define DATA stu[i].num
2013-09-07 18:36:31
2362
原创 C库函数——fgetc函数
C语言的库函数中有一个fgetc函数,这个函数比较有意思,先看原型:int fgetc(FILE *stream);这个函数可以从文件指针指向的文件中读取一个字符,当第二次读取的时候他会接着上一次读出来,这个实现说明他在读文件的时候创建了一个指向文件中字符的指针,可以一个一个地读出来,并且可以一个一个地后移。而且它还支持中文输出!源码:#include #include int
2013-09-07 18:31:27
2519
原创 经典的文件拷贝函数及算法
#include #include #include #include #include #include #define BUFFER_SIZE 1024int main(int argc,char *argv[]){ int from_fd,to_fd; int read_bytes,write_bytes; char buffer[BUFFER_SIZE]; ch
2013-09-07 17:48:56
1521
原创 C++运算符重载
C++中提供了运算符重载的功能,在大型项目中可以实现泛型,本例以++运算符为例,进行运算符重载,代码:#include using namespace std;class num{public: num() { n = 1; } int get() { return n; } void oper
2013-09-04 18:09:11
868
Java 并发——基石篇.pdf
2019-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅