关于论坛

今天了解了几个开源的论坛: phpBB、MyBB、smf,简单写一下心得

这三个论坛在sae上都有修改后的,可以直接安装

mybb不是完全面向对象的实现,代码结构不太好看;

smf的代码更是完全的面向过程的写法,尤其把函数都放到一个数组里面,通过数组的方式来使用,是非常的不编辑器友好的;

mybb和smf都是国外的开源软件,都在持续的维护着呢。

mybb和phpbb都可以安装插件之后通过tabatalk这个手机app来访问,参看: http://tapatalk.com  但是,目前只有iphone上有这个app,而且这个app还是收费的。

mybb可以通过插件: http://www.mybbgm.com/download.php 实现手机友好的访问

 

PHP Soap 生成WSDL

缘起:

1. 开发一个http的webservice,接口定义是比较费时的,使用现成的webservice还是比较不错的

2. 常用的webservice有Soap和RPC,Soap是业界的标准,而RPC则比较轻量级

3. 使用Soap时,如果手动来写wsdl文件是非常糟糕的事情,下面提供自动生成wsdl的方法

4. 使用Soap时,编辑器很难提示类有什么方法,如果给编辑器一个soap的插件帮助提示,便是极好的,有没有呢?

 

一些参考资料:

http://stackoverflow.com/questions/12490298/perfect-soap-wsdl-web-service-in-php

 

一个可以生成wsdl的PHP类,参考资料: http://www.cnblogs.com/phpdragon/archive/2012/06/10/2544171.html

 

Ubuntu12.04升级之苦旅

缘起:

想在ubuntu上做一些实验,原来在virtualbox中安装的ubuntu12.04分配了8G的磁盘空间,而且没有分区,即将用完,于是考虑扩大一下磁盘容量,把/usr目录给移到一个单独的分区

开始

第一步:  使用virtualbox自带的工具给磁盘扩容,当然,扩容之后的磁盘会多一个未分区的空间,还需进一步的分区、格式化,才能使用,ubuntu的分区、格式化可以使用gpart软件

参考资料: http://hi.baidu.com/xuhuan_scu/item/83c93f426159d1f2a4c066d4

第二步:  因为系统运行期间移动 /usr 目录是不靠谱的,所以:

1.  使用virtualbox的功能把磁盘copy一份,新建一个虚拟机

2. 在新建的虚拟机上挂载要修改的虚拟机的磁盘

2.1 将主分区挂载到 /data_root 目录; 将新创建分区挂载到 /data_usr 目录

2.2 把 /data_root/usr/ 下的文件全部copy到 /data_usr/ 中,命令: cp -pr /data_root/usr/*  /data_usr/

2.3 修改 /data_root/etc/fstab 文件, 将新的分区挂载到 /usr 目录上

3. 用修改后的磁盘启动系统,发现/usr 目录已经移动到了新的分区上了

 

第三步: 升级系统

1. 由于刚才一个系统上挂载了两个可以启动的磁盘,导致grub出问题,更新系统的时候会帮助修复grub

2. 系统升级后,重启系统,出现“The System is running in low graphics mode”的问题,解决办法: http://blog.csdn.net/love_world_/article/details/8644483

 

3. 升级后的系统无法切换到“无缝模式”,重新安装“增强工具”,提示缺少内核头文件,其实不是这么回事儿,参考资料: http://blog.csdn.net/wzwind/article/details/6656331  虽然不在报错,但是安装后还是无法切换到“无缝模式”

 

关于JAVA内存

JAVA 内存模型

参考资料:

http://developer.51cto.com/art/201009/225071.htm

http://www.infoq.com/cn/articles/java-memory-model-1

http://baike.baidu.com/view/8657411.htm

 

JAVA内存大小设置:

http://www.rsky.com.cn/Article/java/201002/11289.html

http://developer.51cto.com/art/200907/135038.htm

 

问题: 如果设置的内存大小超过了系统的物理内存大小,则数据放到何处?

这样的话,虚拟机就跑不起来的

关于JAVA线程和线程池的学习

Java线程:

Java线程不等于系统线程,Java线程和系统线程也没有必然的映射关系。

参考文档:

http://wenku.baidu.com/view/2ffaac1fa8114431b90dd8fe.html

java的线程概念与操作系统的线程概念是不同的,java的线程概念差不多与windows线程概念一致,但是java既然目标是跨平台语言,那么它的线程机制概念是在所有平台上都是一样的,但是实际实现又不是如此,这要从进程与线程的概念中谈起:
首先在windows系列系统中,进程所拥有的内存空间都是独立的,此进程所持有的内存其它进程是不可以直接访问的,而且在windows系统内部一个进程就是一个运行的运用程序,而为了解决应用程序内部的并行问题便有了线程的概念,线程没有自我独立的内存空间,在一个进程中所有的线程共享这个进程所持有的内存空间。
而在某些Unix系统当中,进程所持有的内存空间是可以被其他进程进行访问的,而且一个运用程序可能不止一个进程,这样的系统没有线程的概念,运用的并行问题有多个进程协调来解决。
java为了实现平台无关性,必须解决这样一个问题,因此java建立了一套自己的进程与线程机制,这套机制与windows系统的颇为相似,但是底层实现确实根据不同平台的机制进行实现,比如windows下的线程机制就是利用windows本身的线程机制加上某些改进进行处理的,而某些没有线程的Unix系统则是用进程来替代线程进行实现的,然后在其中确立一个主进程来替代自身进程。虽然这样的实现解决了大部分的线程平台无关性,但是也有些无法解决的,比如线程优先级,windows下线程是有优先级的,但是某些Linux系统,某些Unix系统,进程与线程直接不区分优先级,因此优先级在每个系统下的表现形式就不一样,例如低优先级的进程可能在windows下被饿死,但是在linux下,根本就无法感觉它优先级较低,还有,在建立一个线程与杀死一个线程运用所带来的开销也会不同,在windows下建立或杀死线程可能是不需要什么开销的,但是在没有线程概念的进程行操作系统中,杀死或者建立线程可能带来巨大开销

 

—————————————————————————————————————————————–

Java自带的线程池ThreadPoolExecutor详细介绍说明和实例应用

http://fulong258.blog.163.com/blog/static/17895044201082951820935/
http://www.cnblogs.com/jersey/archive/2011/03/30/2000231.html

 

Java线程示例

http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html

 

update-alternatives学习笔记

转自: http://blog.csdn.net/heyutao007/article/details/5441482

Linux 发展到今天,可用的软件已经非常多了。这样自然会有一些软件的功能大致上相同。例如,同样是编辑器,就有 nvi、vim、emacs、nano,而且我说的这些还只是一部分。大多数情况下,这样的功能相似的软件都是同时安装在系统里的,可以用它们的名称来执行。例如,要执行 vim,只要在终端下输入 vim 并按回车就可以了。不过,有些情况下我们需要用一个相对固定的命令调用这些程序中的一个。例如,当我们写一个脚本程序时,只要写下 editor,而不希望要为“编辑器是哪个”而操心。Debian 提供了一种机制来解决这个问题,而 update-alternatives 就是用来实现这种机制的。

1)首先要介绍的参数是 –display。它使我们可以看到一个命令的所有可选命令。执行:
update-alternatives –display editor
可以看到我的机器上的所有可以用来被 editor 链接的命令。

2)–config。这个选项使我们可以选择其中一个命令程序来作为editor,执行:
update-alternatives –config editor

首先,update-alternatives 在一般情况下是由postinst 和 prerm 这样的安装脚本自动调用的,所以一个 alternative 的状态有两种:自动和手动。每个 alternative 的初始状态都是自动。如果系统发现管理员手动修改了一个 alternative,它的状态就从自动变成了手动,这样安装脚本就不会更新它了。如果你希望将一个 alternative 变回自动,只要执行代码:
update-alternatives –auto editor

general name — 这是指一系列功能相似的程序的“公用”名字(包括绝对路径),比如 /usr/bin/editor。
link — 这是指一个 alternative 在 /etc/alternative 中的名字,比如 editor。
alternative — 顾名思义,这是指一个可选的程序所在的路径(包括绝对路径),比如 /usr/bin/vim。

-auto,–display 和 –config 跟的都是 link。我们要说的第三个概念是优先级。这个比较简单,当然优先级越高的程序越好啦。最后一个概念是主和从的 alternative。想想看,你将 /usr/bin/editor 链接到了 vim,可是当你执行 man editor 时看到的却是 emacs 的 manpage,你会做何感想呢?这就引出了主和从 alternative 的概念了:当更新主的 alternative 时,从的 alternative 也会被更新。

另外两个选项:
第一个是 –install。它的格式是:  代码:

update-alternatives –install gen link alt pri [–slave sgen slink salt] …

gen,link,alt,pri 分别是我们上面说过的。如果需要从的 alternative,你可以用–slave 加在后面。如果你在向一个已经存在的 alternative 组中添加新的 alternatives,该命令会把这些 alternatives 加入到这个已经存在的 alternative 组的列表中,并用新的可选命令作为新的命令;否则,将会建立一个新的自动的 alternative组。

呜呼!我加入了一个错误的 alternative。我不想要这个 alternative 了。在这种情况
下,可以执行下面的命令:代码:

update-alternatives –remove name path

搭建一个微博系统

 

下载window版本redis:

https://github.com/dmajkic/redis

windows上让redis作为服务启动:

https://github.com/kcherenkov/redis-windows-service  可以直接下载里面编译好的二进制文件

下载retwis:

http://redis.googlecode.com/files/retwis-0.3.tar.gz   这个包中的redis协议不是最新的,可在下面地址下载:

http://phpor.net/download/retwis.zip

 

参考文档:

http://blog.csdn.net/archimedes_zht/article/details/6892511