`
文章列表
利用又拍云存储官方php的sdk,我们可以在自己的网站上简单实现上传文件到又拍云。   示例网页   <html> <head>upload to upyun</head> <body> <div id="res"> <form enctype="multipart/form-data" action="upyun.php" method="POST"> Send this file to upyun: ...
我们通过http的user-agent头判断客户端浏览器类型,下面做个测试     <?php echo $_SERVER['HTTP_USER_AGENT']; ?>  用各个浏览器访问的结果如下:     一,电脑端   IE8 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; ...
  O()表示法是处理近似计算的一种数学途径,当我们写下某个特定的排序算法对n个记录进行排序所需时间是O(n2)时,我们的意思是,最坏情况下,所需时间随着n的平方变化。O()表示法对我们在度量时间,内存等的值设置了上限。   有时我们会遇到复杂的O()函数,随着n的增大, 最高阶的项会主宰函数的值,习惯做法是去掉所有低阶项,对任何常数项不予考虑。如O(n2+3n)和O(n2)一样等价,这实际上是O()表示法的弱点。某个O(n2)算法可能比O(n2)算法快1000倍,但是从表示法中看不出来。   下面是一些常见的各种算法运行时间   附表一:   O(1) 常量访问(访问数 ...
  FIFO也称命名管道,是一种文件类型,在文件系统中可见到。管道由于没有名字,所以只能限定在亲缘关系的进程之间的通信。而通过FIFO任意进程之间都能够进行通信了。FIFO的特点如下:   命名管道可用于任何两个进程之间的通信,比管道灵活得多 命名管道作为特殊文件存在文件系统中,当进程使用结束后仍存在文件系统,需要“手动”删除 创建一个命名管道可以用mkfifo [管道名],删除可以用unlink [管道名实现]。当然用C程序创建一个管道文件也是很方便的。 #include<stdio.h> #include<stdlib.h> #include& ...
  进程间通信(IPC)是指在不同进程之间传递信息。linux的进程通信方式有管道,消息队列,信号量,共享内存,套接口等方式,下面一一整理。 首先是管道(PIPE),管道是Unix系统IPC最古老的方式,所有的Unix系统都提供这种通信机制。它的优点在于简单易用,缺点在于有限制,详细见下面几点:   只能用于父子进程或兄弟进程之间通信 大多数系统中都是半双工的,数据信息只能单向流动,如果需要双向通信则需要建立两个管道 传输的是无格式字节流,需要双方约定格式 管道缓冲区是有限的,等等 首先来看父子进程之间通信的例子。 #include<stdio.h> #i ...
首先定义一个二叉树结构如下   class BNode{ private String name; private BNode left,right; public String getName() { return name; } public void setName(String name) { this.name = name; } public BNode getLeft() { return left; } public void setLeft(BNode left) { this.left = l ...
设计数据结构的时候常常为了性能考虑,很容易引入一些冗余的属性,不是说多余的属性不好,我们应该按照一个正常的思维方法去设计数据结构。 看看一个记录路线的数据结构的例子,一条路线有起点,终点以及距离三个基 ...
平时为了业务实现简单,难免写一些if else语句,例如常年堆积起来的业务逻辑代码如下,可以考虑重构使得结构更为清晰:   #define SHANGHAI 100 #define BEIJING 101 #define SHENZHEN 102 #define SHANGHAI_RATE 1.01 #define BEIJING_RATE 1.02 #define SHENZHEN_RATE 1.01 void oldFunction(int base_money,int state){ int rate; int money; if(state ...
支持异常机制的编程语言在资源申请释放上比较麻烦,如果保证所有分支情况下资源都能顺利清除,第一种设计如下   void doSomething(){ Node *n = new Node(); try{ //do something } catch(...){ delete n; throw; } delete n; } 在异常和正常的分支条件下都释放资源,这就违背了DRY(don't repeat yourself)原则,我们可以考虑使用栈来代替上面的实现如下   void doSomething(){ Node n; t ...
Global site tag (gtag.js) - Google Analytics