一个随机显示图片的函数,可以将指定文件夹中存放的图片随机地显示出来,可以在很多地方使用^_^,例如博客的展示窗 <?php /********************************************** * Filename : img.php * Author : freemouse * web : www.cnphp.info * email :freemouse1981@gmail.com * Date : 2010/12/27 * Usage: * <img src=img.php> * <img src=img.php?folder=images2/> ***********************************************/ if($_GET['folder']){ $folder=$_GET['folder']; }else{ $folder=’/images/’; } //存放图片文件的位置 $path = $_SERVER['DOCUMENT_ROOT'].”/”.$folder; $files=array(); if ($handle=opendir(“$path”)) { while(false !== ($file = readdir($handle))) { if ($file != “.” && [...]
归档 十二月 2010
php 缩略图函数
php 生成缩略图函数非常简单,只是调入了几个GD的系统函数,不过却很实用^_^ array getimagesize ( string $filename [, array &$imageinfo ] ) 取得图像大小 resource imagecreatetruecolor ( int $x_size , int $y_size ) 新建一个真彩色图像 resource imagecreatefromjpeg ( string $filename ) 从 JPEG 文件或 URL 新建一图像 bool imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , [...]
php 生成文字png图片
使用GD生成文字图片是php一项比较常用的功能,笔者今天介绍的是生成文字png图片的函数。喜欢的朋友收藏吧^_^ <? /* php生成文字png图片,可以使用如下方式调用函数: http://www.yourdomian.com/text_png.php3?msg=helloworld+class&rot=15&size=48&font=fonts/ARIAL.TTF */ Header(“Content-type: image/png”); class textPNG { var $font = ‘fonts/TIMES.TTF’; //默认字体. 相对于脚本存放目录的相对路径. var $msg = “undefined”; // 默认文字. var $size = 24; var $rot = 0; // 旋转角度. var $pad = 0; // 填充. var $transparent = 1; // 文字透明度. var $red = 0; // 在黑色背景中… var $grn = 0; [...]
Linode $100,000 美元促销计划
笔者的博客用的是Linode的VPS,性能一直不错。运行半年以来只宕机一次,还是比较稳定的,但Linode的价格比较贵。不过现在有一个$100,000促销活动,是专为新客户设立的,提供每人100美元的优惠,希望加入Linode的朋友们不妨在这个时候出手比较划来。 原文: We are giving away $100,000 in Linode services! Starting this Friday December 17th at 9:00 AM Eastern the first 1,000 new customers to sign up will each receive $100 in service credit. 从这个星期五,美国东部时间:12月17日上午9时开始(北京时间:12月17日晚10点正),新注册的头1000名客户将每人获得100美元的优惠券(可以当钱支付给linode吧^_^) Here’s how it works: Be one of the first 1,000 people to sign up after 9:00 AM Eastern this Friday. [...]
PHP array操作10个小技巧
其实任何一门计算机语言中对array(数组)的操作都是一门学问,PHP也不例外。下面笔者想向各位介绍关于PHP中array操作的10个小技巧及相关的函数。
高效的c#线程池设计
昨天写的 基于信号量Semaphore的c#线程池设计 在实际使用中,容易造成CPU占用偏高,笔者分析认为是由于信号量本身的缺点造成的,因此笔者重新设计了一款更高效的c#线程池,完全不使用waithandle之类的阻塞线程,而是使用更为简单的最大线程数值(一个long整数)来控制线程的运行。如果超过指定的线程数,那么保存在hash表中的线程进入等待队列,当有空闲位置时,才会释放出一个等待队列中的线程启动并运行。 笔者粗略地计算了下,此种方法比基于信号量的效率要高30左右,性能提高是显著的^_^,下面为大家展示代码。 public class MyThreadManager : MyThreadPool, iThreadManager { //线程池的启动、停止控制大同小异,不再赘述 private bool bStart; private bool bPause; private bool bStoped; public bool Running { get { return bStart && !bPause && !bStoped; } } public MyThreadManager(int num):base(num) { ControlCallback = new ThreadControl(Run); bStart [...]
基于信号量Semaphore的c#线程池设计
c#线程池的设计对于多线程程序来说相当重要,而系统自带的线程池ThreadPool有很多缺陷,包括无法暂停和停止等。基于这个原因,笔者自行设计了几款线程池,今天先发布的是基于信号量Semaphore的线程池设计。优点是:结构清晰、代码简洁。缺点是:由于需要有用户模式切换到内核模式,效率较低。 这里就不给出信号量的基本编程原理了,直接上代码^_^ using System; using System.Threading; /************************************************************** * Thread Manager 类 * Author:freemouse * E-mail:freemoue1981@gmail.com * website: http://www.cnphp.info * date: 2010-12-9 * ***********************************************************/ namespace Freemouse.Base.ThreadManage { /// <summary> /// 基于信号量的多线程管理器 /// </summary> public class ThreadManager : SemaphoreThreadPool, iThreadManager { /// <summary> /// 控制启动、停止 /// </summary> private [...]
简单的php web shell
一个简单的php web shell 程序,保存到任意文件后执行 <?php /* ************************************************************** * PHP Web Shell * ************************************************************** */ ?> <html> <head> <title>PHP Web Shell – By freemosue</title> </head> <body> <h1>PHP Web Shell</h1> <?php /* 检测是否设置工作目录. */ if (isset($work_dir)) { /* 如果检测到工作目录则chdir到该目录. */ chdir($work_dir); $work_dir = exec(“pwd”); } else { /* 没有设置工作目录 chdir到 $DOCUMENT_ROOT */ chdir($DOCUMENT_ROOT); $work_dir = $DOCUMENT_ROOT; } [...]
c# 多线程代码之美
c# 多线程控制的方法有很多种,然而如何优雅地控制多线程却是门学问。笔者一直也纠结于此,失败的多线程设计绝对是画虎不成反类猫,不但没有提高性能,效率反而会更低。 下面的一段代码使用了信号量对多线程进行控制,希望读到的朋友能体会到优雅的代码所带来的乐趣。也希望高手们提供更高明的方法。 using System; using System.Threading; namespace MyLab { public delegate void handler(object obj); public class Program { /// <summary> /// 信号量用于控制最大并发线程数 /// </summary> private static Semaphore pool; /// <summary> /// 用于控制暂停、继续 /// </summary> private static ManualResetEvent status; private static int count [...]


