返回首页 我的新博客
摘要: python模式下,有时候需要导入 import某些模块或者包。明明这个模块/包是存在的,却提示导入错误,比如,“ImportError: No module named lxml”。 但是当你在命令行下,通过 “pip install lxml” 时,却提示该模块已经存在了,"Requiremen 阅读全文
posted @ 2019-03-14 16:57 buffer的blogs 阅读(8864) 评论(1) 推荐(1) 编辑
摘要: 配置防火墙(服务器安全优化)安全规划:开启 80 22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P OUTPUT ACCEPT # iptables –P FORWARD ACCEPT 以上几步操作是为了在清除所有规则之前,通过所有请求,如果远程操作的话,防止远程链接断开。接下来清除服务器内置规则和用户自定义规则: # iptables –F # iptables -X 打开ssh端口,用于远程链接用: # iptables –A INPUT –p tcp –dport 22 –j ACCEPT 然后关闭I 阅读全文
posted @ 2013-11-18 16:52 buffer的blogs 阅读(11288) 评论(0) 推荐(0) 编辑
摘要: 往往安装完linux之后,本文用的centos6.4,再编译安装其它服务器软件时,总是提示缺少各种库文件,在这里我总结了一下 平时web服务器经常需要的一些库,如下:yum -y install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl k 阅读全文
posted @ 2013-11-18 13:05 buffer的blogs 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 首先将vim更新为最新版yum -y install vim,并安装Vim的加强版vim-enhanced ,以安装支持彩色的组件 yum -y installvim-enhanced接下来配置vim配置文件 vi /etc/vimrc 增加一行 syntax on或者我们干脆下载个干净版的vimrc吧 在这里下载:http://pan.baidu.com/s/17pW6Q为了让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加一行 alias vi='vim'此时,经过上面配置已经可以显示语法高亮了。如果,杯具发生在你身上,经过以上配置还是没有语法. 阅读全文
posted @ 2013-11-18 12:43 buffer的blogs 阅读(8861) 评论(1) 推荐(0) 编辑
摘要: 众所周知,Centos 有个很方便的软件安装工具 yum,但是默认安装完centos,系统里使用的是国外的centos更新源,这就造成了我们使用默认更新源安装或者更新软件时速度很慢的问题。为了使用yum工具能快速的安装更新软件,我们需要将默认的yum更新源配置为国内的更新源。yum更新源配置文件位于centos目录 /etc/yum.repos.d/ 下。首先提供几个国内快速的更新源:教育网资源:1 上海交大:http://ftp.sjtu.edu.cn/centos/服务器位于北京,中国教育网网络中心,下载速度高达十M。北方用户与教育网用户推荐,速度飞快。需要手动创建 CentOS-Base 阅读全文
posted @ 2013-11-16 16:32 buffer的blogs 阅读(52675) 评论(0) 推荐(1) 编辑
摘要: 默认开机启动服务列表:(此表转自 http://www.ha97.com/4815.html,另有多处补充)服务名称功能默认建议备注说明NetworkManager用于自动连接网络,常用在Laptop上开启关闭对服务器无用 服务器一般固定配置网络,不会自动获取ip等abrt-ccpp开启自定对服务器无用abrt-oops开启自定对服务器无用abrtd开启自定对服务器无用acpid电源的开关等检测管理,常用在Laptop上开启自定对服务器无用atd在指定时间执行命令开启关闭如果用crond,则可关闭它auditd审核守护进程开启开启如果用selinux,需要开启它autofs文件系统自动加载和卸 阅读全文
posted @ 2013-10-24 16:35 buffer的blogs 阅读(2666) 评论(0) 推荐(0) 编辑
摘要: 常用端口:20ftp-dataFTP数据端口 21ftp文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 22ssh安全Shell(SSH)服务 23telnetTelnet服务 25smtp简单邮件传输协议(SMTP) 37time时间协议 39rlp资源定位协议 49tacacs用于基于TCP/IP验证和访问的终端访问控制器访问控制系统 50re-mail-ck远程邮件检查协议 53domain域名服务(如BIND) 63whois++WHOIS++,被扩展了的WHOIS服务 67bootps引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务... 阅读全文
posted @ 2013-10-24 15:08 buffer的blogs 阅读(3861) 评论(0) 推荐(1) 编辑
摘要: 一般的网站,特别给客户的网站,由于不可能采用那么久的跟踪性用户化测试,基础测试也得做好。基本的网站测试大致分为a.功能测试 b.性能测试 c.可用性测试 d.兼容性测试 e.安全测试然后继续细分大致如下功能测试1.链接测试2.表单测试3.Cookies测试4.设计语言测试Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaScript、ActiveX、VBScript或Perl等也要进行验证。5.数据库测试性能测试1.... 阅读全文
posted @ 2013-09-09 10:19 buffer的blogs 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 本文是参考《redis中文手册》,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法)。目录(使用CTRL+F快速查找命令):KeyStringHashListSet键(Key)DELKEYSRANDOMKEYTTLEXISTSMOVERENAMERENAMENXTYPEEXPIREEXPIREATOBJECTPERSISTSORT字符串(String)SETSETNXSETEXSETRANGEMSETMSETNXAPPENDGETMGETGETRANGEGETSETSTRLENINCRINCRBYDECRDECRBYSETBITGETBIT 阅读全文
posted @ 2013-09-09 09:46 buffer的blogs 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 在my.cnf文件中各设置参数的含义如下:innodb_data_home_dir这是InnoDB表的目录共用设置。如果没有在my.cnf进行设置,InnoDB 将使用MySQL的datadir目录为缺省目录。如果设定一个空字串,可以在innodb_data_file_path中设定绝对路径。innodb_data_file_path单独指定数据文件的路径与大小。数据文件的完整路径由 innodb_data_home_dir 与这里所设定值的组合。 文件大小以 MB 单位指定。因此在文件大小指定后必有“M”。 InnoDB 也支持缩写“G”, 1G = 1024M。从 3.23.44 开始,在 阅读全文
posted @ 2013-08-08 14:23 buffer的blogs 阅读(463) 评论(0) 推荐(0) 编辑
摘要: http://www.oicto.com/mysql-explain-show/ 阅读全文
posted @ 2013-08-05 10:07 buffer的blogs 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 数据库:mysql5.5表类型:InnoDB数据量:100W条第一种情况:主键采用uuid 32位。运行查询语句1:SELECT COUNT(id) FROM test_varchar;运行查询语句2:SELECT * FROM test_varchar WHERE vname='00004629-b052-11e1-96aa-002655b28d7b';运行查询语句3:SELECT * FROM test_varchar WHERE id='00004599b05211e196aa002655b28d7b';语句1消耗时间平均为:2.7秒;语句2消耗时间平均为 阅读全文
posted @ 2013-08-05 09:43 buffer的blogs 阅读(5897) 评论(0) 推荐(0) 编辑
摘要: UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Micros 阅读全文
posted @ 2013-08-05 09:15 buffer的blogs 阅读(32309) 评论(0) 推荐(0) 编辑
摘要: 有时候我们需要的图片并不适合我们想要的大小, 那么我们就可以用到系统自带的图片裁剪功能, 把规定范围的图像给剪出来。 贴上部分代码://调用图库Intentintent=newIntent();intent.setType("image/*");intent.putExtra("crop","true");//crop=true有这句才能出来最后的裁剪页面.intent.putExtra("aspectX",5);//这两项为裁剪框的比例.intent.putExtra("aspectY",4) 阅读全文
posted @ 2013-08-01 23:04 buffer的blogs 阅读(7241) 评论(0) 推荐(1) 编辑
摘要: 前面介绍过LocationManager有一个addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent)方法,该方法可用于添加临近警告。其参数说明如下:latitude:指定固定点的经度。longitude:指定固定点的纬度。radius:指定半径长度。expiration:指定经过多少毫秒后该临近警告就会过期失效。-1表示永不过期。intent:该参数指定临近该固定点时触发该intent对应的组件.下面这个小程序可以检测手机是否进入和离开了指定点的指 阅读全文
posted @ 2013-08-01 21:36 buffer的blogs 阅读(435) 评论(0) 推荐(0) 编辑
摘要: GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能。GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程序又十分简单,Android为此提供LocationManager类及其他几个辅助类,开发人员可以非常方便地开发出GPS应用。在程序中,通过getSystemService获得LocationManager对象之后,就可以调用LocationManager提供的常用方法:在上面方法中涉及另一个重要的类:LocationProvider(定位提供者),就是GPS定位组件的抽象表示,它提供了如下方法来 阅读全文
posted @ 2013-08-01 21:26 buffer的blogs 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 系统安装qq手机管家等手机管理软件之后,在开机时会自动运行tadb.exe, 这个垃圾进程会让开发android程序时默认的 adb.exe启动不了,这样就没法用手机调试。这并不是说tadb.exe 比 adb.exe 厉害,而是前者比后者垃圾,在用户不知情的情况下偷偷先运行。只要找到tencent软件目录,将目录下腾讯的手机管理软件删除卸载,即可永久解决此问题。 阅读全文
posted @ 2013-08-01 10:08 buffer的blogs 阅读(5048) 评论(0) 推荐(0) 编辑
摘要: 服务端调整系统的参数,在/etc/sysctl.conf中:◦net.core.somaxconn = 2048◦net.core.rmem_default = 262144◦net.core.wmem_default = 262144◦net.core.rmem_max = 16777216◦net.core.wmem_max = 16777216◦net.ipv4.tcp_rmem = 4096 4096 16777216◦net.ipv4.tcp_wmem = 4096 4096 16777216◦net.ipv4.tcp_mem = 786432 2097152 3145728◦net 阅读全文
posted @ 2013-07-23 17:40 buffer的blogs 阅读(3204) 评论(0) 推荐(0) 编辑
摘要: 为了安全,想将http请求响应头里的nginx版本号信息隐藏掉:1. nginx配置文件里增加server_tokens off;server_tokens作用域是http server location语句块server_tokens默认值是on,表示显示版本信息,设置server_tokens值是off,就可以在所有地方隐藏nginx的版本信息。2. 如果php配置文件里设置了fastcgi_param SERVER_SOFTWARE,则找到这一行修改一下:编辑php-fpm配置文件,如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):找到: 阅读全文
posted @ 2013-07-22 10:06 buffer的blogs 阅读(6488) 评论(0) 推荐(1) 编辑
摘要: nginx rewrite 正则表达式匹配大小写匹配~ 为区分大小写匹配~* 为不区分大小写匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录-x和!-x用来判断文件是否可执行flag标记last 相当于Apache里的[L]标记,表示完成rewritebreak 终止匹配, 不再匹配后面的规则。redirect 返回302临时重定向 地址栏会显示跳转后的地址。permanent 返回301永久重定向 地址栏会显示跳转后的地址。logcation的几个使用实例: 1)lo 阅读全文
posted @ 2013-07-22 09:42 buffer的blogs 阅读(36151) 评论(0) 推荐(0) 编辑
摘要: 名称 版本 说明(变量列表来源于文件 ngx_http_variables )$args 1.0.8 请求中的参数;$binary_remote_addr 1.0.8 远程地址的二进制表示$body_bytes_sent 1.0.8 已发送的消息体字节数$content_length 1.0.8 HTTP请求信息里的"Content-Length";$content_type 1.0.8 请求信息里的"Content-Type";$document_root 1.0.8 针对当前请求的根路径设置值;$document_uri 1.0.8 与$uri相同; 阅读全文
posted @ 2013-07-22 09:39 buffer的blogs 阅读(11482) 评论(0) 推荐(0) 编辑
摘要: 1.文件方式缓存哈希子目录缓存2.APCAPC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。http://www.php.net/apc3.Db缓存4.Memcache Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcache是danga的一个项目,最早是Liv 阅读全文
posted @ 2013-07-17 22:35 buffer的blogs 阅读(2531) 评论(0) 推荐(0) 编辑
摘要: 账户设置SFTP的账户直接使用Linux操作系统账户,我们可以用useradd命令来创建账户。首先建立3个要管理的目录:123mkdir /home/sftp/homepagemkdir /home/sftp/blogmkdir /home/sftp/pay创建sftp组和www、blog、pay账号,这3个账号都属于sftp组:123456789101112groupadd sftp useradd -M -d /home/sftp -G sftp wwwuseradd -M -d /home/sftp/blog -G sftp bloguseradd -M -d /home/sftp/pa 阅读全文
posted @ 2013-07-15 17:19 buffer的blogs 阅读(10707) 评论(0) 推荐(2) 编辑
摘要: 众所周知,nginx目前是不支持svn的,并且由于机房网络只开了80和22(ssh)端口,所以这时候就没法单独在服务器上搭建apache+svn 。所以就产生了 nginx + apache + svn的需求,具体做法是将外网通过80端口进来的请求到达nginx之后转发到apache上,然后进行svn操作。具体的安装及详细的配置这里不一一赘述了 网上有很多解决方案。主要说一下,nginx做反向代理到apache的配置及经常容易出现的权限不足问题。首先通过iptables打开一个本机的8080端口作为apache端口,由于机房网络禁用了8080端口,所以这时候请求是不能通过8080端口到达服务器 阅读全文
posted @ 2013-07-02 15:34 buffer的blogs 阅读(3081) 评论(0) 推荐(0) 编辑
摘要: 修改完iptables之后,如果不生效,需要修改一下这个参数echo 1 > /proc/sys/net/ipv4/ip_forward 使iptables转发开启生效,如果设置为0,则不转发另附三个自己的小站,很不错,请支持支持,谢谢~http://www.yiqidache.com 搭车户外装备助手,户外装备导购及咨询发布http://www.letsfeel.com来秀时尚网http://123-dao.com云智能网址导航 阅读全文
posted @ 2013-06-17 16:57 buffer的blogs 阅读(1712) 评论(0) 推荐(0) 编辑
摘要: 有时候文件上传到linux服务器,用vim打开之后只显示一行,并且原来文件换行的地方,显示"^M",遇到这种问题解决办法有多种,在这里我介绍一种亲自在centos6.0上试验过的方法。# %s/^M/^M/g 其中"^M" 是通过 [ctrl+V] 和[ctrl+M] 输入。另附三个自己的小站,很不错哦,请支持支持,谢谢~http://www.yiqidache.com 搭车户外装备助手,户外装备导购及咨询发布http://www.letsfeel.com 来秀时尚网http://123-dao.com 云智能网址导航 阅读全文
posted @ 2013-06-02 15:38 buffer的blogs 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 安装vim之后,将php语法高亮插件 php.vim,放到/usr/share/vim/vimfiles/syntax 目录下php语法高亮插件在这里下载:http://www.vim.org/scripts/script.php?script_id=1571然后配置vim配置文件 vimrc在这里 /etc/vimrc ,增加一行 “syntax on”。 注意这个目录下还有一个配置文件 virc 这个是vi的配置文件。如果此时用vi打开欲编辑的php文件没有看到高亮显示,用vim打开却可以高亮显示。这说明用的vi命令没有关联到vim上。需要关联一下,这样操作#rm /bin/vi (建议你 阅读全文
posted @ 2013-05-28 13:11 buffer的blogs 阅读(3274) 评论(0) 推荐(0) 编辑
摘要: 每次运行AVD都会奔溃,启动不起来。经过查找,找到问题原因是,avd内存设置过大,我设置为1000M,导致了avd运行时直接奔溃解决办法是将avd的运行内存改为了256M,然后在运行就成功启动了两个自己的小站,很不错哦~http://www.letsfeel.com 来秀时尚网http://123-dao.com 云智能网址导航 阅读全文
posted @ 2013-05-26 14:42 buffer的blogs 阅读(205) 评论(0) 推荐(0) 编辑
摘要: iptables简介iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。filter负责过滤数据包,包括的规则链有,input,output和forward;nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做D 阅读全文
posted @ 2012-09-24 20:12 buffer的blogs 阅读(1208) 评论(0) 推荐(0) 编辑
摘要: 1、ubuntu系统修改IP地址:sudo gedit /etc/network/interfacesauto eth0iface eth0 inet staticaddress 219.218.122.168netmask 255.255.255.0gateway 219.218.122.2542、ubuntu系统修改DNS: sudo gedit /etc/resolv.confnameserver 202.194.15.123、使网络生效:sudo /etc/init.d/networking restartUbuntu8.04虚拟机更换host主机后开机无法加载网卡,提示:No suc 阅读全文
posted @ 2011-12-16 20:01 buffer的blogs 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 实际应用中,尤其是在大规模访问的Web项目中,Memcache作为一种优秀的缓存解决方案,被广泛使用。其灵活性和可扩展性受到了广大开发者的青睐。为了提高响应速度,使用Memcache来减少数据查询运算是一种不错的选择。关于Memcache的安装和配置,网上有很多资料,这里就不再赘述。本文以笔者在实际项目中的应用为例,来说明如何使用Memcache缓存MySQL数据,从而达到高效数据响应的目的。需求背景:网站有一个图片放映功能,页面加载时需从数据库中查询管理员所提交放映的图片信息,图片放映区共有9张图片,对应在数据库表中有9条记录。每次用户访问网站时,需查询数据库,并显示图片。当承受大规模用户同 阅读全文
posted @ 2011-09-26 20:13 buffer的blogs 阅读(611) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/v_july_v/article/details/6543438 阅读全文
posted @ 2011-09-25 13:04 buffer的blogs 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 假如有两个表,TableName1和TableName2,两个表字段相同,都是有一个fID(TableName1表为标识,自动+1,TableName2表设置为普通字段),和一个varchar类型的content两个字段。现在要实现TableName2作为TableName1的备份,对TableName1的所有修改(增、删、改)都要对TableName2同时生效。可以使用以下触发器CREATE TRIGGER TableName1_SNY_TO_TableName2 ON TableName1FOR INSERT, UPDATE, DELETEAS delete TableName2 whe. 阅读全文
posted @ 2011-09-21 21:48 buffer的blogs 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shel 阅读全文
posted @ 2011-09-21 15:05 buffer的blogs 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树。1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结点; 中序遍历根结点的右子树。2. 前序遍历(DLR)的递归算法:若二叉树为空,则算法结束,否则: 访问根结点; 前序遍历根结点的左子树; 前序遍历根结点的右子树。3. 后序遍历(LRD)的递归算法:若二叉树为空,则算法结束,否则: 后序遍历 阅读全文
posted @ 2011-09-19 20:13 buffer的blogs 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 服务器高性能程序 磁盘I/O篇Linux IO系统的架构图一.设备--------影响磁盘性能的因素硬盘的转速影响硬盘的整体性能。一般情况下转速越大,性能会越好。硬盘的性能因素主要包括两个:1.平均访问时间2传输速率。平均访问时间包括两方面因素:平均寻道时间(Average Seek Time)是指硬盘的磁头移动到盘面指定磁道所需的时间。一般在3ms至15ms之间。平均旋转等待时间(Latency)是指磁头已处于要访问的磁道,等待所要访问的扇区旋转至磁头下方的时间。一般在2ms至6ms之间。传输速率(Data Transfer Rate)硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒 阅读全文
posted @ 2011-09-06 23:11 buffer的blogs 阅读(696) 评论(0) 推荐(0) 编辑
摘要: 设计模式一书将设计模式引入软件社区,该书的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗称 “四人帮”)。所介绍的设计模式背后的核心概念非常简单。经过多年的软件开发实践,Gamma 等人发现了某些具有固定设计的模式,就像建筑师设计房子和建筑物一样,可以为浴室的位置或厨房的构造方式开发模板。使用这些模板或者说设计模式意味着可以更快地设计更好的建筑物。同样的概念也适用于软件。设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。例如,您可以说您正在编写一个提供松散耦合的消息 阅读全文
posted @ 2011-09-06 23:07 buffer的blogs 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method)使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Constructor)结构理解1.Product是工厂方法生产产品的抽象基类。2.Creator是生产产品的工厂对象抽象基类。Creator提供创建虚方法即工厂方法FactoryMeothod()。FactoryMeothod()由派生类(ConcreteCreator)具体实现,生产对应的具体产品(ConcreteProduct)。3.ConcreteProduct是继承Product的具体产品。4.ConcreteCreator是生 阅读全文
posted @ 2011-09-06 23:05 buffer的blogs 阅读(415) 评论(0) 推荐(0) 编辑
摘要: C++设计模式之Adapter一、功能 将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、结构图 (1)class adapter (2)object adapter 三、实现 和其他很多模式一样,学习设计模式的重点是学习每种模式的思 想,而不应拘泥于它的某种具体结构图和实现。因为模式是灵活的,其实现可以是千变万化的,只是所谓万变不离其宗。 在STL中大量运用了Adapter模式,象function adapter、iterator adpter,它们与这里说的adapte... 阅读全文
posted @ 2011-09-06 23:04 buffer的blogs 阅读(278) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/gyche/archive/2010/12/26/1914652.html其实车牌图像识别从技术上已经比较成熟,从理论上来说无外乎就是如下几个步骤: 灰度化:实际就是对原始车牌图片进行预处理,把彩色图片转化为黑白图片,然后对不符合指定阙值范围的灰度值进行过滤。 车牌定位:这是技术难点之一,根据我的经验,定位车牌位置对于车牌的准确识别而言实际上就成功了60%。很多车牌识别的产品都对车牌的定位预留了很多配置参数,例如截取原始图片的位置参数、车牌的长宽比例、大小等等,这些都是为了提高车牌定位的准确率。 字符分割:车牌定位后是字符分割,本人使用的识别... 阅读全文
posted @ 2011-09-06 21:50 buffer的blogs 阅读(863) 评论(0) 推荐(0) 编辑