php生成图片缩略图类(支持常用图片格式)

纵饮孤独 提交于 2019-12-10 08:22:27
功能:支持jpg,jpeg,gif,png,bmp图片格式,支持按原图片的比例进行缩放,可以选择在图片缩放的过程中是否需要对图片进行裁切,加入了图片质量控制,可以实现缩略图片质量最高化。完整类的代码如下: <?php /** * 功能:php生成缩略图片的类 */ class ResizeImage{ public $type;//图片类型 public $width;//实际宽度 public $height;//实际高度 public $resize_width;//改变后的宽度 public $resize_height;//改变后的高度 public $cut;//是否裁图 public $srcimg;//源图象 public $dstimg;//目标图象地址 public $im;//临时创建的图象 public $quality;//图片质量 function resizeimage($img,$wid,$hei,$c,$dstpath,$quality=100){ $this->srcimg=$img; $this->resize_width=$wid; $this->resize_height=$hei; $this->cut=$c; $this->quality=$quality; $this->type=strtolower(substr(strrchr(

scala入门-07特质类(trait)的使用

霸气de小男生 提交于 2019-12-10 05:07:36
trait类似于Java8中的可用带default method的接口。 trait中可以带有实现的方法,也可以带有抽象方法,使用trait的方法是with而混入类中。 我们在scala下的org.scala.clazz下创建一个类MyTrait.scala 定义一个特质类 Logger 定义MyLogger类 实现特质类Logger 调用: PS:我们这里使用trait是使用extends,这是因为MyLogger没有继承其他类火灾trait 子trait可以覆盖实现父traitd的方法: 调用: 如果子trait在如果覆盖父trait中已经实现的方法必须使用override关键字: 定义抽象类Account和class MyAccont 调用: 这是demo属于在一个对象中混入trait 来源: oschina 链接: https://my.oschina.net/u/230960/blog/366652

探讨“临时对象”(temporary object)

本秂侑毒 提交于 2019-12-10 04:12:35
MSDN 中对 VS2012 版本的临时对象的说明如下: 在某些情况下,编译器有必要产生临时对象。 当初始化一个 常量引用 ( const reference )时,如果给定的初始化对象类型与目标引用类型不同(但是两者 能够相互转换),需要产生临时对象; 当函数的返回值是用户自定义类型,且程序中未将此返回值拷贝到其他对象中时,需要产生临时对象; 当给定的对象显式向自定义对象类型转换时,产生临时对象; IBM 官网上的给出的描述如下: C++ 中编译器有些时候有必要产生临时对象。通常在初始化引用、计算(评估 evaluation )含有标砖类型转换的表达式、参数传递、函数返回、评估异常抛出表达式( throw expression )。 参考资料: http://msdn.microsoft.com/en-us/library/a8kfxa78(v=vs.110).aspx http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc03cplr116.htm 总之,读完之后,是不是还感觉临时对象捉摸不定呢?的确, C++ 标准中没有明确给出临时对象的产生规则和条件, 由编译器自动产生的

JavaScript和Lua的类继承

别说谁变了你拦得住时间么 提交于 2019-12-09 11:08:25
javascript 本身虽是一门面向对象的编程语言, 但并没有明确提供继承方式.二十多年间,众多高手提供很多模拟继承的实现, 主要的有:对象冒充,call/apply,prototype,以及深复制等. 网上有很多此类教程,在这里就不再赘述这些实现.我所在的团队正在做的项目,需要使用js和lua实现同一份API接口,已达到js和lua的无缝切换.所以,实现类的继承方案至关重要. 接下来,就是具体实现过程, 如有不到之处,还望大家指正. Lua ,是一门很优秀的动态语言,为嵌入而生,如果只是当成脚本使用的话,类的概念其实并不必要, 但是如果想要构成庞大规模的代码量,这就一个亟待的问题, 因为Lua 的操作符重载的支持, 使得这一过程得以实现. javascript: function Class(Super, init ){ //do } lua : function Class(Super , init ) --[[do]] end *Super , 是新生成的类需要继承的父类. *init , 是新生成的类的构造函数. 下面, 我们就来实现这个两个Class函数. 1.在js当中,调用new算符实际就是复制当前构造函数原型.因为Lua中并没有new算符,所以应该将其屏蔽. 2.在lua中想要实现方法的关联,主要使用两种方案, 一是复制,二是覆盖元表__index索引

listview所带来的滑动冲突

雨燕双飞 提交于 2019-12-07 14:25:28
在android中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候。这种情况较常见,典型的launcher,每个屏幕上放上listview就会出现这种情况。 有两点需要注意: 一般来说,view的onTouchEvent返回true,即消耗点击事件,viewgroup的onInterceptTouchEvent返回false,即不拦截点击事件,这一点从android源码中可以看出来。但是listview的父类AbsListView重写了onInterceptTouchEvent,返回了true,注意这里不是一定返回true,但是我觉得这一点可以先忽略。 onTouchEvent和onInterceptTouchEvent的调用顺序。点击事件从父控件向子控件传递,如果父控件不拦截,则交由子控件拦截,如果父控件拦截了,则交由父控件的onTouchEvent处理,如果最终处理点击事件的控件的onTouchEvent返回了false,则将会直接调用其父控件的onTouchEvent,如此向上类推。 其实解决方法也很简单:重写父控件的onInterceptTouchEvent函数,在move的时候根据需要返回true,比如左右滑动返回true,其他情况均返回false。这样,当左右滑动的时候,由于onInterceptTouchEvent返回了true

PHP中Memcache类函数详解

守給你的承諾、 提交于 2019-12-04 05:02:35
Memcache类函数列表如下: Memcache::add – 添加一个值,如果已经存在,则返回false Memcache::addServer – 添加一个可供使用的服务器地址 Memcache::close – 关闭一个Memcache对象 Memcache::connect – 创建一个Memcache对象 memcache_debug – 控制调试功能 Memcache::decrement – 对保存的某个key中的值进行减法操作 Memcache::delete – 删除一个key值 Memcache::flush – 清除所有缓存的数据 Memcache::get – 获取一个key值 Memcache::getExtendedStats – 获取进程池中所有进程的运行系统统计 Memcache::getServerStatus – 获取运行服务器的参数 Memcache::getStats – 返回服务器的一些运行统计信息 Memcache::getVersion – 返回运行的Memcache的版本信息 Memcache::increment – 对保存的某个key中的值进行加法操作 Memcache::pconnect – 创建一个Memcache的持久连接对象 Memcache::replace -对一个已有的key进行覆写操作 Memcache::set

Swift解读专题一——Swift2.2语言预览

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 08:58:04
专题一——Swift2.2语言预览 一、引言 本系列专题是我通过阅读Swift2.2语言开发文档,翻译总结加上自己的理解整理而成。其中大部分结构和内容都来自开发文档,有疏漏和错误之处,还望更多朋友指出,共同交流进步,我的QQ:316045346。 二、从HelloWorld开始 在学习很多编程语言时,都是从HelloWorld入门,下面代码就是一个完整的HelloWorld程序: print("Hello, World!") 分析上面代码,可以发现Swift语言的3个十分明显的特点: 1.开发者不需要引入输入输出相关的函数库。 2.在编写代码时,不需要在语句的结尾处添加分号。 3.全局的代码就是程序的入口,不需要类似C系语言的main()方法来作为程序入口。 三、常量与变量 常量和变量是编程语言中最基础的两类数据类型,常量可以理解为为某个值起一个特定的名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用的量值。变量也可以进行多次修改。分别使用let和var创建常量和变量。例如: let letValue = 4 var varValue = 8 varValue = 16 开发者在进行常量和变量的创建时,并不需要制定类型,编译器与根据第一次赋值的类型来推断出常量或者变量的类型,然而这并不是说Swift语言不严格要求变量或常量的类型,一旦编译器推断了值的类型

使用JMeter的Java请求功能测试Hetty性能

[亡魂溺海] 提交于 2019-11-27 04:08:46
1.JMeter介绍 JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。 2.启动JMeter 进入JMeter的bin目录,然后执行: sudo ./jmeter.sh 3.原始的测试方法 在没有使用JMeter前,我对hetty的性能测试,都是通过自己写多线程代码去完成的,相当苦逼,相当麻烦,不过也能锻炼自己的编码能力,我先贴出比较原始的测试方法,如下: public class RpcHessianClient { public static void main(String[] args) { String url = "http://localhost:8081/apis/hello"; HessianProxyFactory factory = new HessianProxyFactory(); ExecutorService es = Executors.newFixedThreadPool(10); int size = 1000000

工具导航Map