归档 十二月 2010

php 随机显示图片函数

一个随机显示图片的函数,可以将指定文件夹中存放的图片随机地显示出来,可以在很多地方使用^_^,例如博客的展示窗 <?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 != “.” && [...]

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. [...]

SQLite中使用约束解决插入/更新重复问题

一直以来在使用SQL语句的时候都是力求简洁,把SQL精简到最优化以提高效率。这是做Web程序时养成的习惯。不过,最近在一个c#程序中使用到嵌入式数据库SQLite,让我对SQL语句的要求更提高了一步。例如,在向数据库中插入新行时,如果违背了某一唯一性约束。那么整个更新过程就会失败。更要命的是如果同时插入1000条、10000条甚至更多条数据的时候,如果仅仅因为某条数据出错,导致整个过程rollback了,似乎在性能上就得不偿失了。 起初我想了一个比较笨的办法,聪明的你可能已经想到了^_^,先用select语句查询是否存在重复,剔除到重复后在插入新数据。对于大批量数据的插入/更新,这的的确确是个笨办法。 后来想到用触发器做这个,效果不错,但为这么个简单的问题就动用触发器似乎也不合理喔。最后在查询手册的过程发现了一条语句可以很好地解决重复问题。 ON CONFLICT conflict-algorithm conflict-algorithm ::= ROLLBACK | ABORT | FAIL | IGNORE | REPLACE 这个是用在新建数据表的时候,如果是在插入或更新语句中使用就可以使用 OR 代替 ON Conflict。 例如: insert or ignore into table (fields) values (values); 或者干脆使用 replace into table (fields) values (values); replace = insert or replace 很好地解决了更新/插入重复的问题^_^

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 [...]

    第 1 页,共 2 页12