10 2012 档案
浅析 MySQL int char bit set enum 的优劣与运用
摘要:很多时候, int char bit set enum这几种类型都可以替换着用,下面对这几种类型的优劣稍作浅析以在数据库中建立用户表的性别(gender)字段为例,分别用以下几种类型各有什么优缺点1. int: gender tinyint unsigned not null可以这样定义gender列,好处是储存空间小( 1 Byte ),可扩展性好(range 0~255)坏处是没有强约束(可以在代码里控制),可读性不好,无从知道 0 1 2 到底什么意思2. char(1): gender char(1) not null优劣与int类似3. bit(1): gender bit(1) n
阅读全文
饮料供应问题
摘要:问题描述: 有一个饮料公司,供应 t_max 种饮料, 最大供应容量为 v_max, 每种饮料由如下属性组成 T { C, V, H }, 其中C,V,H分别代表每种饮料的最大供应数量(瓶数),每瓶的容量,没瓶的客户满意度。问题: 给出饮料序列,求满意度最高的饮料组合(每种饮料各需要多少瓶,以及满意度的最大值)最优化问题一般可以用动态规划或者贪心算法解决,此处容易将问题化为递推式用 f(v, t) 表示供应容量为 v 时, 第 t ~ t_max - 1 种饮料的最优满意度(饮料编号从0~t_max-1)。k表示第t中饮料需要k瓶,有如下式子f(v, t) = k * H[t] + f(v -
阅读全文
从MySQL临时表谈到filesort
摘要:内部临时表的类型和产生时机相关,翻译自:http://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.htmlIn some cases, the server creates internal temporary tables while processing queries. Such a table can be held in memory and processed by theMEMORYstorage engine, or stored on disk and processed by theMyISAMstor
阅读全文
对已知有限集合中缺失或重复元素的查找
摘要:问题描述: 一直有限集U,U内元素各不相同,先从U中删去/添加元素 x1, x2, ... , xn (0<=n<=U.length, xi 属于 U)得到 U',找出所有删去/添加的元素, 要求时间复杂度为O(n),空间复杂度为O(1)1.先讨论最简单的情况,我们只从集合U中删除/添加 1个元素例如, U = {5, 3, 1, 4, 2} U' = {5, 3, 1, 2}又如 U = {5, 3, 1, 4, 2} U' = {5, 3, 1, 4, 1, 2}这种情况解法很简单,一般来讲如下:1) 设sum(U)表示集合U所有元素之和,则删除的元素为
阅读全文
Java 变参函数的实现
摘要:Java的变参函数实现实际上参数是一个数组,其简单用法如下public class Test { private static void variableParam(Object... args) { for (Object v : args) { System.out.print(v.toString() + " "); } System.out.println(); } private static void variableParam2(int a, int... args) { System...
阅读全文
Java 静态(static)与非静态语句执行顺序
摘要:Java中的静态(static)关键字只能用于成员变量或语句块,不能用于局部变量static 语句的执行时机实在第一次加载类信息的时候(如调用类的静态方法,访问静态成员,或者调用构造函数), static 语句和 static 成员变量的初始化会先于其他语句执行,而且只会在加载类信息的时候执行一次,以后再访问该类或new新对象都不会执行而非 static 语句或成员变量,其执行顺序在static语句执行之后,而在构造方法执行之前,总的来说他们的顺序如下1. 父类的 static 语句和 static 成员变量2. 子类的static 语句和 static 成员变量3. 父类的 非 static
阅读全文
Java 的垃圾回收机制
摘要:先看一段转载,原文出自http://jefferent.iteye.com/blog/1123677虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。 年轻代: 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代分三个区。一个Eden区,两个 Survivor区(一般而言)。大部分对象在Eden区中生成。..
阅读全文
第三章 磁盘分区
摘要:1. 硬件设备在Linux中的命名IDE硬盘: /dev/hd[a-d]SATA/SCSI/USB硬盘/U盘: /dev/sd[a-p]打印机: 25针 /dev/lp[0-2] USB: /dev/usb/lp[0-15]鼠标: USB /dev/usb/mouse[0-15] PS2: /dev/psaux当前cdrom和鼠标: /dev/cdrom /dev/mouse2. 磁盘分区的构成磁盘的第一个扇区(Sector 512 Bytes)存放主引导分区(MBR, Master Boot Record 446 Bytes)和分区表(Partition Table 64 Bytes)MBR
阅读全文
第二章 一切都是对象
摘要:1. Java数据的存储1) 寄存器: 位于CPU,不可直接控制2) 堆栈(The Stack): 位于内存,用于存储基本类型和对象引用。可以通过堆栈指针获得处理器支持,其速度仅次于寄存器,Java系统需要知道存储在堆栈中所有项的生命周期。3) 堆(The Heap): 位于内存,用于存储Java对象,他更灵活,不需要知道对象的生命周期,但是分配和清理堆需要更多的时间4) 静态存储区: 存放静态(static)成员5) 常量存储去: 存放常量(final)成员6) 非RAM存储: 存放流对象和持久化对象参见这里:http://zmesky.blog.163.com/blog/static/20
阅读全文
Java 旋转数组查找旋转点和任意元素(元素可重复)
摘要:public class Test { // 已知数组A是由有序数组B(数组B未知)向右移动n(0<=n<=B.length)位得到 // 例如 A = {4, 5, 1, 2, 3} 由 B = {1, 2, 3, 4, 5} 向右移动2位得到 // 求在数组A中搜索元素x private static int search(int[] a, int h, int t, int x) { if (h > t) return -1; int result = -1; int mid = (h + t) / 2; i...
阅读全文
Java 求最大连续子序列积及其起始结束坐标
摘要:public class Test { // 最大连续子序列积 // 假设有集合A,Max[n]表示从A[0]~A[n]的以A[n]结尾的最大连续子序列积, // Min[n]表示从A[0]~A[n]的以A[n]结尾的最小子序列积,则有如下递推式 // Max[n] = Max{ Max[n-1]*A[n], A[n], Min[n-1]*A[n] } // Min[n] = Min{ Max[n-1]*A[n], A[n], Min[n-1]*A[n] } private static void getMaxProduct(float[] a) { ...
阅读全文
C语言 学生信息管理系统
摘要:没写过C语言,学了一晚上C的结果,为交作业新鲜出炉的环境是 Ubuntu. 编译器 gcc#include<stdio.h>#include<stdlib.h>#include<memory.h>#include<termio.h>#define STDIN_FILENO 0#define MAX_LEN 8#define BACKSPACE 8#define ENTER 13#define ALARM 7#define DATA_FILE "./data.txt"#define USERNAME "root&quo
阅读全文
Ubuntu 安装 Java EE
摘要:JavaEE与JavaSE的JDK关系JavaEE其实属于JavaSE的扩展,里面包含Web开发的一些类库,比如servlet,jsp等所以说我们安装JavaEE需要先有JavaSE,但是现在oracle直接提供了JavaEE + JavaSE + GlassFish的打包下载http://www.oracle.com/technetwork/java/javaee/downloads/index.html往下看,找到Java EE 6 Development Kit Bundles with JDK这行大字,下面就是里面包含的东西Includes:JDK 7 Update 7GlassFis
阅读全文
笔试面试总结,一个新的开始
摘要:总算是拿到了offer,总结一下自己还欠缺的地方1.数据结构和算法,硬伤,继续刷题2.转为开发Java,重新捡起Java,努力学习,目前4大框架皆处于开发指南的水平,甚至不如,考虑是否需要深入理解其内部实现,或者找书系统的学习,Thingk in Java, Core Java3.操作系统Linux,包括各种命令使用,及其内部实现的一些原理,如:文件系统,进程管理4.网络:这个不好说,暂时不知道到底该补什么5.项目:暂时可以不做了,小网站再做也不能有太大成长
阅读全文
PHP 传引用调用
摘要:我一直认为,基础数据类型都是传值调用,而具体的类都是传引用调用,其实没有传引用调用,所有的函数参数都是传值调用(除了PHP的&或指针调用)1$a = 1;test($a);echo $a;function test($a) { $a = 2; }输出的是 12$a = new Man;$a->age = 1;test($a)echo $a->age;class Man { public $age; }function test(Man $a) { $a->age = 2; }这里输出是23$a = new Man;$a->age = 1;test($a...
阅读全文
mysql_connect 与 memcache_connect
摘要:突然想到前段时间笔试的这一题,问你mysql_connect 与 memcache_connect 应该哪个在在前,哪个在后答案应该是先 memcache_connect 再 mysql_connect,因为memcache存在不稳定因素,容易发生阻塞,一旦memcache发生阻塞,如果是先mysql_connect,就会造成生成大量mysql空链接而无法释放一个类似的问题是 echo $html 和 mysql_connect应该哪个在前按照网上看到的以为叫caoz的朋友的说法,应该是mysql_connect在前,echo $html会等待网络传输,并发量高的时候会造成数据库链接的阻塞
阅读全文
[转]Nginx.conf介绍
摘要:在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络.#运行用户user www-data;#启动进程,通常设置成和cpu的数量相等worker_processes 1;#全局错误日志及PID文件error_log /var/log/nginx/error.log;pid /var/run/nginx.pid;#工作模式及连接数上限events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 worker_connections 1024;#单个
阅读全文
Ubuntu 编译安装 Nginx PHP MySQL Memcached
摘要:先看一段转载,转载自nginx.cnnginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx本文以php-fpm为例介绍如何使nginx支持PHP一、编译安装php-fpm什么是PHP-FPMPHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进
阅读全文
PHP 浅析PHP垃圾回收机制对内存泄露的处理
摘要:上次说到了refcount和is_ref,这里来说说内存泄露的情况$a = array(1, 2, &$a);unset($a);在老的PHP版本中,这里就会出现内存泄露,分析如下:执行第一行,可以知道$a和$a[2]指向的zval refcount=2,is_ref=1然后执行第二行,$a将会从符号表中被删除,同时指向的zval的refcount--,此时refcount=1,因为refcount!=0,故此zval不会被当做垃圾回收,但是此时我们却失去了$a[2]指向这个zval的入口,因此这个zval成了一块内存垃圾同样的道理可以发生在类内部引用里,例如$a = new Man(
阅读全文
PHP 浅析PHP的引用计数机制
摘要:PHP的变量声明并赋值后,变量名存在符号表中,而值和类信息存在zval中,zval中包含四个变量,is_ref,refcount,value,type,zval源码如下struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_uchar type; /* active type */ zend_uchar is_ref__gc; }; refcount表示value地...
阅读全文
SQL 笔试题集锦
摘要:1.一道SQL语句面试题,关于group by表内容:info 表date result2005-05-09 win2005-05-09 lose2005-05-09 lose2005-05-09 lose2005-05-10 win2005-05-10 lose2005-05-10 lose如果要生成下列结果, 该如何写sql语句? win lose2005-05-09 2 22005-05-10 1 2答案:(1) select date, sum(case when result = "win" then 1 else 0 end) as "win"
阅读全文
PHP 括号配对判断及修正
摘要:1 <?php 2 #判断输入的括号序列是否合法 3 #解决思路,如果在某一段出现了右括号数比左括号数大,则非法,否则到最后判断左括号和右括号是否相等即可 4 define("LEFT", "("); 5 define("RIGHT", ")"); 6 7 function validate($seq) { 8 $len = strlen($seq); 9 $left = 0;10 $right = 0;11 12 for ($i = 0; $i < $len; $i++) {13 ...
阅读全文
PHP Catalan数的几个应用
摘要:1 <?php 2 #给定入栈序列,求出栈序列组合总数 3 #这是一个catalan数问题 4 #设共有n个数入栈,将入栈序列和出栈序列写在一起共有2n个数 5 #将第一个入栈的数作为基点,则第一个数肯定是在第2i+1的位置出栈 6 #否则第一个数入栈编号是0,如果是在2i,则在第一个数入栈和出栈之间共有2i-1个数,是奇数 7 #既然是奇数,则说明有数在第一个数出栈之前入栈却没有出栈,矛盾 8 #那么,我们可以找到地推规律,设f(2n)表示n个数的入栈出栈序列总数 9 #则 f(2n) = f(0)f(2n-2) + f(2)...
阅读全文
PHP 平分数组
摘要:1 <?php 2 /** 3 *一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值 4 *比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; 5 *{3,6}{2,4,3} m=2 6 *{3,3}{2,4}{6} m=3 所以m 的最大值为3 7 **/ 8 9 #解题思路10 #首先m必须满足两个条件11 #1. 1<=m<=n12 #2. sum(a) % m = 0,即sum(a)必须是m的倍数,其中a为待切分数组13 #解题步骤:14 #1. m...
阅读全文
PHP 求链表并集
摘要:1 <?php 2 #合并两个非降序链表并去重,并且不能修改原链表数据 3 #非降序,则链表内部有可能重复 4 5 class Node { 6 public $data = null; 7 public $next = null; 8 } 9 10 function traverse($head) { 11 while ($head != null) { 12 echo $head->data . " "; 13 $head = $h...
阅读全文
词语搭配系统
摘要:1 <?php 2 /** 3 *设计一个系统处理词语搭配问题,比如说中国和人民可以搭配, 4 *则中国人民人民中国都有效。要求: 5 *系统每秒的查询数量可能上千次; 6 *词语的数量级为10W; 7 *每个词至多可以与1W 个词搭配 8 *当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。 9 **/10 11 /**12 *解决思路13 *假设10W的词语都是二字词语,UTF8存储,则每个词语占 2*3 bytes = 6 bytes14 *现在先对10W个词语建一棵二叉查找树,...
阅读全文
PHP 串联珠子问题
摘要:1 <?php 2 #串连珠子问题(类似于关键字搜索) 3 4 function shortest_sub($a, $m) { 5 $color = array(); #用于存储当前子串某种颜色出现的次数,如color[0] = 2表示颜色0出现2次 6 $sum = 0; #用于存储当前子串共出现了几种颜色 7 $bstart = 0; #最短字串的开始坐标 8 $blen = count($a); #最短子串长度 9 10 #将color数组初始化为011 for ($i =...
阅读全文
PHP 有n 个长为m+1 的字符串, 如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接, 问这n 个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误
摘要:1 <?php 2 #有n个字符串,每个数组长度m+1,如果数组的后m个元素和另一个数组的前m个元素相同,则两个数组可以相连 3 #求n个数组中连接起来的最长路径是多少,如果遇到环路则报错退出 4 5 function longest($a, $m) { 6 $len = count($a); 7 #把二维数组$a的每个字符串元素看成一个节点 8 #建立节点之间的联通关系数组g,g[i][j]代表节点ij之间的最长路径 9 10 #初始化g,讲可连通的节点值设为111 $g = arra...
阅读全文
PHP 队伍比赛问题
摘要:n 支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系, 存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支。 所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中, 比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是4 对3, 5 对8。....... 胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排, 下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是4 对5,直至出现第一名 编程实现,给出二维数组w,一维数组order 和用于输出比赛名次
阅读全文
PHP 二叉树非递归遍历
摘要:1 <?php 2 #二叉树的非递归遍历 3 class Node { 4 public $data; 5 public $left; 6 public $right; 7 } 8 9 #前序遍历,和深度遍历一样10 function preorder($root) {11 $stack = array();12 array_push($stack, $root);13 while (!empty($stack)) {14 $cno...
阅读全文
PHP 输入n,判断从1~n序列中十进制数里1出现的次数
摘要:1 <?php 2 #输入n,判断从1~n序列中十进制数里1出现的次数 3 #例如输入12,则含有1的数字有1,10,11,12, 这里1一共出现了5次 4 5 #判断十进制数出现1的次数 6 function count1dec($x) { 7 $i = 1; 8 $count = 0; 9 10 #从个位数开始获取x的每一位数,并判断是不是111 while ($x >= pow(10, $i - 1)) {12 $r = floor($x % pow(10,...
阅读全文
PHP 输入两个整数序列。其中一个序列表示栈的push 顺序, 判断另一个序列有没有可能是对应的pop 顺序
摘要:<?php #输入一个栈的压栈序列和一个弹栈序列,判断该弹栈序列是否可能是压栈序列的输出 #例如压栈序列 12345,则弹栈序列可以是 54321 或者 45321 #解题思路,建一个空栈,按照压栈序列入栈,当压入的栈顶元素与弹栈序列的指针指向元素相同时,将元素弹出 #直到将压栈序列的元素全部压完,如果弹栈序列是正确的,则最后栈内元素可以按照弹栈序列顺序弹出,最后栈为空 #否则栈不为空 function test($push, $pop) { $len = count($push); $stack = array(); ...
阅读全文
PHP 输入一个整数,求该整数的二进制表达中有多少个1
摘要:1 <?php 2 #计算某个二进制数共有几个1 3 #例如十进制11 = 二进制1011,则结果是3个1 4 5 #解题思路:利用 n & (n - 1) 可以将最后一个1变0 6 # xxxx1000 & (xxxx1000 - 1) = xxxx1000 & xxxx0111 = xxxx0000 7 # 1011 & (1011 - 1) = 1011 & 1010 = 1010 8 #直到最后一个1被与为0,得出结果 9 10 function count1($n) {11 $r = 0;12 ...
阅读全文
PHP 跳台阶问题
摘要:1 <?php 2 #跳台阶问题 3 #规定跳台阶有两种跳法,一次跳1阶或一次跳2阶,问有n个台阶共有几种跳法 4 #如果n=1,则只有一种跳法,n=2有两种跳法-一次跳1阶,一次跳2阶 5 #如果n > 2时,可以分为两种情况,第一种是第一次跳1阶,那么剩下的跳法就是f(n - 1)种了 6 #第二种是第一次跳2阶,那么剩下的跳法就是f(n - 2)种,则f(n) = f(n - 1) + f(n - 2) 7 #于是有递推公式 8 # | 1 n = 1 9 # f(n) = < 2 n = 2...
阅读全文
PHP 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来
摘要:1 <?php 2 #输入sum和n,要求输出1,2...n里所有和为sum的组合 3 #这是一个可划分子问题问题 4 #若用f(sum, n)表示问题的界,则元素组合共有两种情况 5 #1. 和为sum的组合里包括n,则f(sum, n) = f(sum - n, n - 1) 6 #2. 和为sum的组合里不包括n,则 f(sum, n) = f(sum, n - 1) 7 #所以 f(sum, n) = f(sum - n, n - 1) U f(sum, n - 1) 8 9 function combination($sum...
阅读全文
PHP Fabonacci数列
摘要:1 <?php 2 #Fibonacci数列问题 3 #f(1) = 1 4 #f(n) = f(n - 1) + f(n - 2) 5 #求f(n) 6 7 #递归方法 8 function fibonacci($n) { 9 if ($n == 0) {10 return 0;11 }12 13 if ($n == 1) {14 return 1;15 }16 17 return fibonacci($n - 1...
阅读全文
PHP 创建二叉树镜像(交换左右子树)
摘要:1 <?php 2 #生成二叉树镜像(交换树的所有左右节点) 3 4 class Node { 5 public $data = null; 6 public $parent = null; 7 public $left = null; 8 public $right = null; 9 }10 11 #递归方法12 function mirror_recursive($root) {13 if ($root === null) {14 retur...
阅读全文
PHP 查找链表倒数第i个节点
摘要:1 <?php 2 #查找链表倒数第i个节点,倒数第0个为最后一个节点 3 class Node { 4 public $data = null; 5 public $next = null; 6 } 7 8 #第一种方法,先算出链表总长,然后向后寻找n-i个节点 9 function last_i($head, $i) {10 $cnode = $head;11 $n = 0;12 while ($cnode != null) {13 $n++;...
阅读全文
PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
摘要:1 <?php 2 class Sum0 { 3 public function sum() { 4 return 0; 5 } 6 } 7 8 class Test { 9 private $a = array();10 11 public function __construct() {12 $this->a[0] = new Sum0();13 $this->a[1] = $this;14 ...
阅读全文
PHP 不用加减乘除做加法
摘要:1 <?php 2 #不用加减乘除做加法 3 #思路:使用位运算实现 4 #先算出二者不进位的相加结果,xor实现 5 #再算出二者的进位结果,位与和位移实现 6 #最后把两个结果相加 7 8 function cplus($num1, $num2) { 9 if ($num2 == 0) {10 return $num1;11 }12 13 $sum = $num1 ^ $num2;14 $carry = ($num1 & $num2) << 1;15 ...
阅读全文