首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
141 阅读
2
php接口优化 使用curl_multi_init批量请求
131 阅读
3
2024年备考系统架构设计师
102 阅读
4
《从菜鸟到大师之路 ElasticSearch 篇》
102 阅读
5
PHP 文件I/O
89 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
785
篇文章
累计收到
8
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
785
篇与
的结果
2023-08-29
宝塔操作教程
宝塔操作教程
2023年08月29日
14 阅读
0 评论
0 点赞
2023-08-29
Linux:安装npm
Linux:安装npm1、下载安装包wget http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz版本根据自己需要进行选择。2、安装gccyum install gcc openssl-devel gcc-c++ compat-gcc-34 compat-gcc-34-c++3、解压nodetar -xf node-v0.10.25.tar.gz3、进入node目录cd node-v0.10.254、配置目录./configure --prefix=/usr/local/node5、安装npmmake && make install6、加入链接ln -s /usr/local/node/bin/* /usr/sbin/7、测试时候安装成功node -v npm -v8、切换淘宝镜像: npm set registry 镜像网址npm set registry https://r.cnpmjs.org/
2023年08月29日
10 阅读
0 评论
0 点赞
2023-08-28
PHP+Gtk实例(求24点)
PHP+Gtk实例(求24点)最近要安排我为BIT提供的《PHP高级应用--关于PHP你不知道的》一门课的讲课素材, 其中有部分涉及到PHP和Gtk2开发桌面应用的部分, 于是抽空就想写一了一个demo出来.这是一个经典的求24的算法的PHP实现, 加上了Gtk2的界面, 其实也没什么复杂的, 和MFC开发没什么太大的区别, 唯一的不爽, 就是要自己用代码来写布局。。。有兴趣的同学可以看看.后记: 这里有一个网页版的, 可以用来玩玩: http://www.laruence.com/stashes/compute.php完整源代码(PHP-Gtk example): <?php /** * A 24 maker * @version 1.0.0 * @author laruence<laruence at yahoo.com.cn> * @copyright (c) 2009 http://www.laruence.com */ class TwentyFourCal extends GtkWindow { private $chalkboard; private $inputs; public $needle = 24; public $precision = '1e-6'; function TwentyFourCal() { parent::__construct(); $this->draw(); $this->show(); } /** * 画窗体方法 */ public function draw() { $this->set_default_size(200, 200); $this->set_title("24计算器"); $mesg = new GtkLabel('Please input 4 integer(0-99):'); $this->chalkboard = new GtkLabel(); $this->inputs = $inputs = array( new GtkEntry(), new GtkEntry(), new GtkEntry(), new GtkEntry() ); /** * container */ $table = new GtkTable(4, 1, 0); $layout = array( 'left' => 0, 'right' => 1, 'top' => 0, 'bottom' => 1, ); $vBox = new GtkVBox(false, true); $vBox->pack_start($mesg); foreach ( $inputs as $input ) { $input->set_max_length(2); $table->attach($input, $layout['left'], $layout['right'], $layout['top']++, $layout['bottom']++); } $vBox->pack_start($table); $button = new GtkButton("Calculate"); $button->connect("clicked", array($this, "calculate")); $vBox->pack_start($this->chalkboard); $vBox->pack_start($button, true, false); $this->add($vBox); } public function show() { $this->show_all(); // 显示窗体 } private function notice($mesg) { $this->chalkboard->set_text($mesg); } /** * 取得用户输入方法 */ public function calculate() { $operants = array(); $inputs = $this->inputs; foreach ($inputs as $input) { $number = $input->get_text(); if (!preg_match('/^\s*\d+\s*$/', $number)) { $this->notice('pleas input for integer(0-99)'); return ; } array_push($operants, $number); } $length = count($operants); try { $this->search($operants, 4); } catch (Exception $e) { $this->notice($e->getMessage()); return; } $this->notice('can\'t compute!'); return; } /** * 求24点算法PHP实现 */ private function search($expressions, $level) { if ($level == 1) { $result = 'return ' . $expressions[0] . ';'; if ( abs(eval($result) - $this->needle) <= $this->precision) { throw new Exception($expressions[0]); } } for ($i=0;$i<$level;$i++) { for ($j=$i+1;$j<$level;$j++) { $expLeft = $expressions[$i]; $expRight = $expressions[$j]; $expressions[$j] = $expressions[$level - 1]; $expressions[$i] = '(' . $expLeft . ' + ' . $expRight . ')'; $this->search($expressions, $level - 1); $expressions[$i] = '(' . $expLeft . ' * ' . $expRight . ')'; $this->search($expressions, $level - 1); $expressions[$i] = '(' . $expLeft . ' - ' . $expRight . ')'; $this->search($expressions, $level - 1); $expressions[$i] = '(' . $expRight . ' - ' . $expLeft . ')'; $this->search($expressions, $level - 1); if ($expLeft != 0) { $expressions[$i] = '(' . $expRight . ' / ' . $expLeft . ')'; $this->search($expressions, $level - 1); } if ($expRight != 0) { $expressions[$i] = '(' . $expLeft . ' / ' . $expRight . ')'; $this->search($expressions, $level - 1); } $expressions[$i] = $expLeft; $expressions[$j] = $expRight; } } return false; } function __destruct() { Gtk::main_quit(); } } new TwentyFourCal(); Gtk::main(); //进入GTK主循环 ?>GTK1的API Reference : http://gtk.php.net/manual/en/gtk.gtkentry.phpGTK2的API Reference: 很不完整
2023年08月28日
6 阅读
0 评论
0 点赞
2023-08-28
一个巧妙的分页方法
一个巧妙的分页方法PHP是一个Web脚本语言,在Web应用中最常见的莫过于列表显示。所以页码生成也就犹为常用。 最近我索性写了一个,在生成思想上, 有一些技巧拿与大家分享:先说说需求: 显示的页码数是$size, 当前的页数是$page, 总数是$total, 每页显示的条数是$page_size 首先,要获取总页面数是多少:$total_page = ceil($total/$page_size);这样的写法是不是更简单一些呢?其次,我是这样想的, 这个需求最高的需求是要根据当前的页码,找出size个页码数来。那么就可以转化为: 根据当前的信息, 填充一个size个元素的数组。最终就可以简单的转化为:根据当前的信息,寻找出size个元素的数组的起始元素是什么?我们假设这个起始元素是:page_start;$page_start = 1; $half = intval($size/2); $page_start = max(1, $page - $half); $page_end = min($page_start + $size - 1, $total_page); $page_start = max(1, $page_end - $size + 1);这样写,是不是也很有技巧呢?最后就简单了, 根据起始页和结束页, 生成一个数组, 最后foreach这个数组,生成html代码:$page_numbers = range($page_start, $page_end); $nav_str = ""; foreach($page_numbers as $num){ //....... }源码:/** *A pagination generation class *@class : Pagination *@version: 1.0.0 *@author : huixinchen at baidu.com *@useage: * $pagi = new Pagination($url_prefix, $page_size, $mesgs_count, $pagination_size=10, array $conf); * $navigation_str = $pagi->generate($current_page_number); */ class Pagination{ private $page, $total_page, $total, $page_size, $size; private $prev_str = "<", $next_str = ">"; private $class, $selected_class = "selected", $prev_class="prev", $next_class="next", $de_prev_class="de_prev", $de_next_class="de_next"; private $url_prefix="", $split_char="?"; private $para_name = "page", $target = ""; public function Pagination($url_prefix, $page_size, $total, $size=10, $conf=array()){ $this->page = 1; $this->page_size = $page_size; $this->total = $total; $this->total_page = intval(ceil($total/$page_size)); $this->size = $size; if(!empty($conf)){ $configure = array("prev_str", "next_str", "class", "selected_class"); foreach($conf as $key => $val){ if(in_array($key, $configure)){ $this->$val = $val; } } } $this->url_prefix = $url_prefix; if(strstr($url_prefix, '?') !== false){ $this->url_prefix .= "&" . $this->para_name . "="; }else{ $this->url_prefix .= "?" . $this->para_name . "="; } } public function generate($page){ $this->page = $page; if(isset($this->page[$page])){ return $this->page_str[$page]; } $page_start = 1; $half = intval($this->size/2); $page_start = max(1, $page - $half); $page_end = min($page_start + $this->size - 1, $this->total_page); $page_start = max(1, $page_end - $this->size + 1); $this->page_str[$page] = $this->build_nav_str($page_start, $page_end); return $this->page_str[$page]; } private function build_nav_str($page_start, $page_end){ $page_nums = range($page_start, $page_end); $target = $this->target? " target=\"{$this->target}\"" : ""; if($this->page == 1){ $page_str = <<<html <span class="{$this->de_prev_class}"> {$this->prev_str} </span> HTML; }else{ $page = $this->page - 1; $page_str = <<<html <span class="{$this->prev_class}"> <a href="{$this->url_prefix}{$page}"{$this->target}>{$this->prev_str}</a></span> HTML; } foreach($page_nums as $p){ $page_str .= ($p == $this->page) ? <<<html <span class="{$this->selected_class}">{$p}</span> HTML : <<<html <span class="{$this->class}"><a href="{$this->url_prefix}{$p}"{$this->target}>{$p}</a></span> HTML; } if($this->page == $this->total_page){ $page_str .= <<<html <span class="{$this->de_next_class}"> {$this->next_str} </span> HTML; }else{ $page = $this->page + 1; $page_str .= <<<html <span class="{$this->next_class}"> <a href="{$this->url_prefix}{$page}"{$this->target}>{$this->next_str}</a></span> HTML; } return $page_str; } public function tidy_str(){ ;//void } public function __call($func_name, $arguments){ if(isset($this->$func_name)){ return $this->$func_name; } } public function __destruct(){ unset($this->page_str); unset($this); } }
2023年08月28日
8 阅读
0 评论
0 点赞
2023-08-28
PHP解题
使对象可以像数组一样进行foreach循环,要求属性必须是私有class sample implements Iterator { private $_items = array(1,2,3,4,5,6,7); public function __construct() { ;//void } public function rewind() { reset($this->_items); } public function current() { return current($this->_items); } public function key() { return key($this->_items); } public function next() { return next($this->_items); } public function valid() { return ( $this->current() !== false ); } } $sa = new sample(); foreach($sa as $key => $val){ print $key . "=>" .$val; }
2023年08月28日
10 阅读
0 评论
0 点赞
1
...
70
71
72
...
157