- 博客(16)
- 资源 (14)
- 收藏
- 关注
原创 最大流问题(Ford-Fulkerson算法)
最大流量问题 对于最大流量问题的详细分析和理论参见算法导论,Ford-Fulkerson算法,伪代码如下:SetFtotal = 0Repeat until there is no path from s to t: Run DFS from s to find a flow path to t Letcp be the minimum
2015-03-30 20:41:31 2761
原创 Java集合中二分查找算法实现
Java集合中二分查找算法实现Arrays.binarySearch实现了对有序数组特定区间的二分查找,虽然我们觉得很简答,但是阅读源码的确能看到实现这些库的优秀技巧,总是在追求完美和高效。值得学习的地方有:(1)边界检查;(2)求中位数的时候使用位移操作,而不是 x/2;(3)如果查找的元素不在数组中,通过返回值昭示了应该插入的位置,而不是直接返回-1;
2015-03-30 16:51:16 3137
原创 Linux使用du和df命令结果不一致
Linux下面通常用du和df命令看磁盘空间的使用情况,基本语法如下:df - report file system disk space usagedf [OPTION]... [FILE]...-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)du -
2015-03-30 16:09:18 4569
原创 安装Virtualbox Guest Additions(解决Virtualbox中Ubuntu分辨率过小)
问题:Virtualbox中Ubuntu分辨率过小,操作极其不方面。解决:需要安装Virtualbox Guest Additions。步骤如下:1.下载Virtualbox Guest Additions,从这里下载 ;2. 为主机增加一个虚拟光驱 ;3. 进入系统后,点击“设备”-> “安装增加功能”,就可以从刚才增加的光驱中进行挂载安装(如
2015-03-29 13:31:38 2344
原创 C语言不支持引用传递和函数重载
C语言不支持引用传递和函数重载(1)ANSI C不支持引用(pass by reference),通过对指针的传值可以到达需求,C++才支持引用。(2)C语言不支持函数重载。测试如下:
2015-03-25 21:48:04 1507
原创 通过Edit Distance问题理解动态规划算法
动态规划算法理解 动态规划(Dynamic Programming)是通过组合子问题的解来解决问题。所以对于一个问题是否能够用DP,就要看是否具有相同的子问题结构,而且计算有重叠。导致直接用递归来解决的话就带来巨大开销,甚至栈溢出,动态规划就是一种改进暴力递归的策略,有自顶向下和自底向上2个角度来看问题。Top-Down的话就是为了避免递归过程中的重复计算,会记录下中间步骤可以
2015-03-25 21:24:47 2327
原创 多维数组作为函数参数的形式
多维数组作为函数参数的形式 今天在看CSAPP的时候,直接敲入了书中的代码片段(P582),没有多加思考,却出现了段错误coredump,然后再纠结:被调用函数是否可以访问到主函数中的数据,函数中的自动变量存在栈中?最后才知道是函数声明的问题。所以通过这篇文章理清了数组作为参数时如何实践,同时不要忽略编译器给我们的警告。问题: $vi 2.c $ gcc
2015-03-24 14:26:14 3792
原创 Linux pipe 源码分析
Linux pipe 源码分析 管道pipe作为Unix中历史最悠久的IPC机制,存在各个版本的Unix中,主要用于父子进程之间的通信(使用fork,从而子进程会获得父进程的打开文件表),pipe()系统调用底层的实现就相当于一个特殊的文件系统,每次调用的时候创建一个inode关联着两个file,一个用于读,一个用于写,从而实现数据的单向流动。用户层API:
2015-03-20 17:13:38 3119 1
原创 Linux select 机制深入分析
Linux select 机制深入分析 作为IO复用的实现方式,select是提高了抽象和batch处理的级别,不是传统方式那样阻塞在真正IO读写的系统调用上,而是阻塞在select系统调用上,等待我们关注的描述符就绪。当然现在更好的方式是epoll,比如Java中的NIO底层就是用的epoll。这篇文章只是为了搞懂select机制的原理,不看源码就不能说懂这些IO复用手
2015-03-20 13:35:34 7733 3
原创 创建并使用静态库(ar 命令)
创建并使用静态库(ar 命令) archive命令的功能是:创建或修改归档文件或者从归档文件中析取信息。可以简单的理解为一个打包工具,将成员文件按照一定的规则构建到.a文件中,通常这种类型的归档文件用来将常用的例程组织为一个静态库,方便应用程序的链接。重要参数:d - 从archive中删除模块,若指定v选项的话还会在删除的过程中打印信息;r - 以替换的方式
2015-03-19 20:20:49 2863 1
原创 Ubuntu下安装MySQL 5.6.23
Ubuntu下安装MySQL 5.6.231.下载对应Linux-generic的源码包,解压,将解压后的文件夹重命名为mysql,移动到/usr/local目录下;tar –xzf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gzmv mysql-5.6.23-linux-glibc2.5-x86_64 mysql sudo mv mysql
2015-03-19 09:56:03 1899
原创 在Linux下查看系统版本号信息命令总结
vonzhou@de16-C6100:~$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 12.04.4 LTSRelease: 12.04Codename: precisevonzhou@de16-C6100:~$ u
2015-03-19 09:04:24 2477
原创 文件操作命令
1.ls列出文件信息:文件类型:d 目录(directory)l 符号链接(link)s 套接字文件(socket)b 块设备文件(block device file)c 字符设备文件(character)p 命名管道文件(named pipe ,FIFO)- 普通文件创建文件命令:touch filename改变文件权限:chmod [who
2015-03-18 21:44:49 918
原创 单例模式(Singleton Pattern)
单例模式确保一个类只会有一个实例,而且会提供一个全局访问点,特别用于资源敏感的对象。在实现的时候要考虑多线程环境,就需要同步。在Singleton4实现中用双重检查加锁,减少同步粒度,从而只会在第一次(不超过两次)请求该实例的时候才会进行同步,在这里,之所以要Double Check的原因是:假设线程P1,P2都执行到了pointA处,此时P1获得对象锁,进入了同步块,然后发现此时unique
2015-03-17 21:24:14 698
原创 Java中都是值传递 pass-by-value
注意 ,在Java中都传值,而不是引用,对于对象实例,也只是传递的是引用的值,所以要理清思路。
2015-03-09 22:12:48 1653
原创 剑指offer实践(Java)
移步github : https://github.com/vonzhou/learning-java/tree/master/src/oj/swordoffer
2015-03-08 16:41:27 1041
Makecert.exe(证书创建工具)
2015-05-14
MySQL必知必会(高清)
2015-03-19
Java并发编程实践pdf及源码
2014-09-15
mentohust for linux
2014-06-17
Smart grid
2013-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人