2016年6月

编译php源码错误集与解决


起步

服务器Ubuntu14.04已后lamp开发环境,却还是没有不能顺利编译php源码,在此整理编译过程。

获取源码与编译

确保已安装了gitsudo apt-get install git -y,因为这可以看到PHP每次修改的内容及日志信息和跟进作者的更新。

git clone https://github.com/php/php-src.git
cd php-src
sudo apt-get install build-essential
./buildconf
./configure --disable-all # 为了尽快得到可以测试的环境,我们仅编译一个最精简的PHP
make
./sapi/cli/php -v

-v参数表示输出版本号,如果命令执行完后看到输出php版本信息则说明编译成功。

20160628170052.png


用ownCloud创建私有云


起步

由于金山,微博,华为等云盘相继不再提供服务,我们用开源的ownCloud为自己创建云存储。

安装ownCloud

ownCloud内核是用PHP5写的,支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。这里我的环境是lamp环境。 php5.6 apache2.4 mysql5.6

获取ownCloud

wget https://download.owncloud.org/community/owncloud-9.0.2.tar.bz2

然后解压:

tar xvf owncloud-9.0.2.tar.bz2


Java IO


Java IO

java.io.File类用于表示文件(目录)

File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问

File file = new File("F:\\临时文档\\958032738");//填入相对或绝对地址
//判断文件(夹)是否存在
if(!file.exists())
    file.mkdir(); //创建文件夹
else
    file.delete();//删除文件夹
//是否是一个目录  如果是目录返回true,如果不是目录or目录不存在返回的是false
System.out.println(file.isDirectory());
//是否是一个文件 如果是文件返回true,如果不是文件or文件不存在返回的是false
System.out.println(file.isFile());
//new file 的构造方式
File file2 = new File("e:\\javaio\\日记1.txt");
File file3 = new File("e:\\javaio","日记1.txt");
if(!file2.exists())
    try {
        file2.createNewFile();//创建文件
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
else 
    file2.delete();//删除文件
         //常用的File对象的API
System.out.println(file);//file.toString()的内容 F:\临时文档\958032738
System.out.println(file.getAbsolutePath());//绝对地址 F:\临时文档\958032738
System.out.println(file.getName());//文件(夹)名   958032738
System.out.println(file.getParent());//父文件夹 toString F:\临时文档
System.out.println(file.getParentFile().getAbsolutePath());//F:\临时文档
//列出该目录下的所有文件(夹) 返回的是文件(夹)的名字数组(非路径)
String filenames[] = file.list();
for(String filename:filenames)
    System.out.println(filename);

目录文件遍历


《垃圾收集》学习笔记_


第一章 简介

内存分配3种方式

静态分配:

局限 每个数据结构的大小必须在编译时可知 过程不能递归,因为对于过程的每个活动(过程体的一次执行),局部名字在内存中共享相同位置(这时一般用的是栈分配) 无法动态创建数据结构 优点 效率高,不需要在程序执行时创建和销毁栈帧 编译器知道所有数据的内存位置,可直接访问存储位置 内存需求预知,不会发生OOM

栈分配:

特点 可递归调用 栈分配的局部值,无法从过程体的一次执行保存到过程体的下一次执行(这时一般用的是静态分配) 被调用者的生命周期<=它的调用者 只有大小能在编译时确定的对象,才能作为过程的结果返回

堆分配

动态大小的对象可作为过程结果返回 数据结构大小不固定 允许把一个过程作为另一个过程的结果返回