坚信科学,分享技术

Tag Archives: php

用java操作bdb的方法记录二

在科学院之前的一篇文章中,介绍过普通的操作BDB的方法,见: java使用bdb手记(Berkeley DB Java api记录) 下文记录的是利用BDB的事务来完成的一个put和一个get方法的代码。其速度与原始的操作方法相当。 ================================================代码段============================== /** * @author zhen.chen * @createTime 2010-2-20 上午10:43:31 */ package com.renren.nuclear.storage; import java.io.File; import java.util.ArrayList; import java.util.List; import com.sleepycat.je.Cursor; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseEntry; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.Environment; import com.sleepycat.je.EnvironmentConfig; import com.sleepycat.je.LockMode; …

Continue reading

Posted in java, 架构研究 | Tagged , , | 2 Comments

解读PHP开源项目中列表和hook方法:while(has_items()): thme_ite();和apply_filters

在wordpress,lilina等开源项目中,常常会看到一些莫名的代码,来无影去无踪,看上去很有意味,特地拿来分析分析,看看一般的作法。 part 1  列表 循环显示 先看代码: <?php $num = 0; if(has_items()) { while(has_items()): the_item(); } ?> 以上代码,出自某开源项目。。。 再进入the_item()函数内部,可以看到一个关键的函数: * Returns the current item * * @since 1.0 * * @return bool|stdClass False if item doesn't exist, otherwise returns the specified …

Continue reading

Posted in php | Tagged , , | Leave a comment

java线程控制器代码分享-根据cpu情况决定线程运行数量和情况

在人人网海量存储系统的存储引擎部分,为了提高CPU和网络的使用情况,使用了java多线程管理并行操作的方式。 在java中控制线程是一件很简单的事情,jdk提供了诸多的方法,其中比常用的两个是notify()和wait(),一个是唤醒,一个等待线程,在下面的代码中,将看到一个线程分配器,根据cpu的负载情况,自动完成对应线程的唤醒或者是等待操作。整个过程是一个平滑的过程,不会因为线程的切换而导致机器负载出线锯齿。 先看一个类,读取Linux系统TOP等指令拿到系统当前负载: import java.io.BufferedReader; import java.io.InputStreamReader; /** * 节点的cpu 内存 磁盘空间 情况 * * @author zhen.chen * */ public class NodeLoadView { /** * 获取cpu使用情况 * * @return * @throws Exception */ public double getCpuUsage() throws Exception { double …

Continue reading

Posted in java | Tagged , , , | 2 Comments

PHP上传文件类型彻底判断方案及PHP+nginx上传大小彻底控制方案

上回科学院发过一篇讲述上传判断的文章,位置是 PHP JAVA C上传文件如何准确判断文件类型-mime知识普及 本文目的在于,进一步更正前文所述的mime判断方式,以及增加一个nginx环境里的文件上传大小所影响的代码。 上传类型控制: 在我(54chen)工作中发现,其实修改文件的后缀,浏览器就会很傻瓜地传送错误的mime类型,所以前文的判断是一个半错误的方法(除了C代码是正确的)。 网上流传一段PHP读取文件头判断文件类型的方法,有一些bug,经我(54chen)修改实测,应该是这个样子: /** * 读取文件前几个字节 判断文件类型 * * @return String */ function checkTitle($filename) { $file     = fopen($filename, "rb"); $bin      = fread($file, 2); //只读2字节 fclose($file); $strInfo  = @unpack("c2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; …

Continue reading

Posted in linux, php | Tagged , , , | 4 Comments

ubuntu 9.10快速安装nginx+php环境手记[54chen科学院]

我(54chen)因为场景需要,特地在ubuntu9.10中安装nginx+php的环境,要快速不要优化,记录如下: sudo apt-get install php5 php5-cgi php5-cli php5-gd php5-curl php5-mysql nginx sudo apt-get install lighttpd spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi 上面的操作解读: 1.安装php nginx 2.安装lighttpd,为啥要安装这个,因为他有个spawn-fcgi,因为apt下来的php不是php-fpm。 3.用spawn-fcgi启动php-cgi在9000端口监听。 sudo vim /etc/php5/cgi/php.ini 修改php.ini文件 cgi.fix_pathinfo=1; 这样php-cgi方能正常使用SCRIPT_FILENAME这个变量 sudo …

Continue reading

Posted in linux, php | Tagged , , | 1 Comment

java List转byte[]的方法

先做一个试验: Test.java package test; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<Integer> lst = new ArrayList<Integer>(); for (int i = 0; i < 100; i++) { lst.add(i); } System.out.print(lst.toString()); } } 得到结果:列出了所有的数字 [0, …

Continue reading

Posted in java | Tagged , | 1 Comment

java nio学习手记[收集]

传统的并发型服务器设计是利用阻塞型网络I/O 以多线程的模式来实现的,然而由于系统常常在进行网络读写时处于阻塞状态,会大大影响系统的性能;自Java1. 4 开始引入了NIO(新I/O) API,通过使用非阻塞型I/O,实现流畅的网络读写操作,为开发高性能并发型服务器程序提供了一个很好的解决方案。这就是java nio. 传统的阻塞型网络 I/O的不足: Java 平台传统的I/O 系统都是基于Byte(字节)和Stream(数据流)的,相应的I/O 操作都是阻塞型的,所以服务器程序也采用阻塞型I/O 进行数据的读、写操作。本文以TCP长连接模式来讨论并发型服务器的相关设计,为了实现服务器程序的并发性要求,系统由一个单独的主线程来监听用户发起的连接请求,一直处于阻塞状态;当有用户连接请求到来时,程序都会启一个新的线程来统一处理用户数据的读、写操作。 这种模式的优点是简单、实用、易管理;然而缺点也是显而易见的:由于是为每一个客户端分配一个线程来处理输入、输出数据,其线程与客户机的比例近似为1:1,随着线程数量的不断增加,服务器启动了大量的并发线程,会大大加大系统对线程的管理开销,这将成为吞吐量瓶颈的主要原因;其次由于底层的I/O 操作采用的同步模式,I/O 操作的阻塞管 理粒度是以服务于请求的线程为单位的,有可能大量的线程会闲置,处于盲等状态,造成I/O资源利用率不高,影响整个系统的性能。 对于并发型服务器,系统用在阻塞型I/O 等待和线程间切换的时间远远多于CPU 在内存中处理数据的时间,因此传统的阻塞型I/O 已成为制约系统性能的瓶颈。Java1.4 版本后推出的NIO 工

Continue reading

Posted in java | Tagged , | Leave a comment

“先进的互联互通技术”–使用ice联通php和java [part 2 client]

[信曾哥,转载的都给我保留原链接地址:http://www.54chen.com/784-the-advanced-interconnection-technology-the-use-of-ice-unicom-php-and-java-part-2-client/] 这一part的目标是建立起ice的php环境,以及写PHP代码调用上一part中的10000端口的java代码。 在part 1中,我们建立了一个Server在10000端口等着我们,地址见 http://www.54chen.com/779-the-advanced-interconnection-technology-the-use-of-ice-unicom-php-and-java/ 建立带ice的PHP环境 不管是nginx+php-cgi还是别的啥,这里只表述php编译过程。 本例以 Ice 3.2.1为例 下载的位置和参考的文档都在下面 http://www.zeroc.com/download_3_2_1.html http://www.zeroc.com/doc/Ice-3.2.1/manual/Slice.5.10.html#50592 1.下载IcePHP包,进行编译。在此之前,你还需要安装Ice,记好使用3.2.1版本,如果你是用的tar.gz包,在/opt/Ice-3.2.1/,如果是rpm包,在/usr/下。 2.运行 export ICE_HOME=/opt/Ice-3.2.1 设置好ICE_HOME后进IcePHP目录直接make  make install。 此时在/opt/

Continue reading

Posted in java, php | Tagged , , | 4 Comments

“先进的互联互通技术”--使用ice联通php和java [part 1 server]

PHP没有中间件,导致了对很多麻烦。比如,对数据库的操作必须要链接数据库,然后做SQL操作。WEB程序直接操作数据库的方法,这样会带来很多人为因素的事故隐患,以及管理上的麻烦,尤其是对大型的网站应用来说。规范的模式应该是,WEB程序传递参数到一个服务程序上,由该服务程序进行判断并最终操作数据库或者其它数据文件,这样做到了明确权限控制,和业务类型集中管理。去年伴随着ICE的推出,PHP终于有了可以使用的中间件。在PHP的发展史上,应该是一个里程碑。 ICE入门 ICE(Internet Communications Engine 网络通讯引擎),是由Corba原核心成员开发的一个开源中间件,据称其各种性能完全优于Corba。除此之外,我们第一次见到了直接支持PHP的中间件。 ICE的安装,去http://www.zeroc.com/download.html 下载一个Ice针对PHP的安装包,按照说明安装上。 ICE的使用:使用Slice(ICE的一种简单语法脚本),编写一个xx.ice文件。可以使用slice2cpp或slice2java等生成一个cpp或java的ICE框架程序,然后在这个框架程序中进行代码编写。ICE在PHP的应用继承了PHP的一贯传统——简单,只需要在php.ini中加载该xx.ice,在PHP中就可以使用了。 ICE在PHP应用中的缺点,无法使用PHP编写Server端,其实这也是PHP的一个缺陷——没有完善的多进程和多线程管理机制。因此,Server端可以采用ICE所支持的其它语言进行编写,比如JAVA/C++/VB/PYTHON等。 开始传说中的“

Continue reading

Posted in java, php, 架构研究 | Tagged , , | 3 Comments

[五四陈]java项目管理神兵利器maven和nexus使用手记

"尽管 Ant 对于构建 Java 程序而言是事实上的标准工具,但这个工具在许多方面都不胜任项目管理任务。相反,Ant 提供的东西,Maven(出自 Apache Jakarta 项目的高级项目管理工具)都能提供,而且更多。" --转自IBM开发者网络 适用场景 如果你的项目互相有jar包的依赖,WEB-INF/lib下有大量杂乱的jar包,svn里lib目录下时常要更新东西,并且你为此伤透了脑筋,团队战斗力无法提升,那么,你就需要这两样利器了。 主角出场 windows环境居多 http://maven.apache.org/ 项目的主页,有洋文 http://maven.apache.org/download.html 下载的地方 安装的说明-好yy的居然有中文! http://www.sonatype.com/books/maven-book/reference_zh/installation.html 大概意思就是下一个包然后设置环境变量。主要目的就是让你的本地环境能够执行mvn。 跑龙套的出场 linux环境犹佳 http://nexus.sonatype.org/ 项目的主页,有洋文 http://nexus.sonatype.org/downloads/ 下载的地方 安装的说明 http://www.sonatype.com/books/nexus-book/reference/install.html 就是下一个包然后以webserver方式运行下。主要目录是让你的jar包能有个放处。 类似 ./bin/jsw/macosx-universal-32/nexu

Continue reading

Posted in java, 架构研究 | Tagged , , | 2 Comments
Page 3 of 512345