ThinkPHP学习

ThinkPHP

按照MVC模式开发的一个框架,也叫TP框架。
优点:
1.  快速,稳定的搭建系统程序
2.  可以使开发人员精力集中在业务逻辑上,不需要关心程序的底层架构
3.  可以节省大量的代码,后期的升级、维护、优化十分方便
4.  有利于团队的代码风格统一。
相关的一些框架
1、zend framework
zend公司开发的官方的框架,功能很强大,重量级框架。
2、Yii
国人自己开发的重量级框架,该框架的特点就是代码的可重用性非常好。
3、CI(code Igniter)
    轻量级的框架,
4、cakePHP
    外国的PHP开发框架
5、ThinkPHP
这是国人开发的,免费、开源的,简单的、面向对象的,轻量级的PHP框架。



在ThinkPHP\Library\Think文件夹中,几个重要的文件
1、App.class.php     框架核心类文件
2、Think.class.php       每次请求都要执行的类
3、Controller.class.php      控制器的父类
4、Model.class.php       模型的父类
5、View.class.php            试图的父类


搭建ThinkPHP的环境
在站点下新建index.php,代码如下
define("APP_PATH",'./Application/');
require './ThinkPHP/ThinkPHP.php';

运行后出现欢迎界面,在说明系统自动生成了ThinkPHP的项目目录,并写入了初始的控制器和方法。



创建控制器
1.  控制器存放在Controller文件夹中
2.  命名规范:控制器的名称+Controller.class.php
3.  类名和文件的名称要一致
4.  类名用帕斯卡命名法

5.  尽量区分大小写,windows不区分大小写,但Linux中区分
6.  ThinkPHP默认的编码是UTF-8的。
7.  如果地址中没有写控制器,这默认调用Index控制器,如果没有写方法,则默认调用index方法

命名法:
1、帕斯卡命名法:首字母大写   UserName   MyNameIsLiping
2、骆驼命名法:userName     _user_name
3、匈牙利命名法:前缀(类别)+名字     radSex    txtUsername   iIength  oStu


ThinkPHP的路由

'VAR_MODULE' => 'm',  //默认模块获取变量
'VAR_ADDON' => 'addon',  //默认插件控制器命名空间变量
'VAR_CONTROLLER' => 'c', //默认控制器获取变量
'VAR_ACTION' => 'a',  /默认操作获取变量


1.普通模式
localhost/index.php?m=home&c=goods&a=show

2.pathinfo模式
http://网址/入口文件(index.php)/分组(平台)/控制器/方法
localhost/index.php/home/goods/index  

3.rewrite()重写模式
4.兼容模式
参数s=/分组/控制器/方法。
localhost/index.php?s=/home/goods/show

ThinkPHP中,默认使用pathinfo模式。




定义和调用TP的模板
所有的模板都要放在view文件夹下。
规则:一个控制器对应一个文件夹,一个方法对应一个文件

TP模板的调用
public function index(){
    //$this->display();    当前控制器的方法
    //$this->display("show");   //当前控制器的show方法
    //$this->display("Goods/index"); //Goods控制器下的index方法
    $this->display("./Application/Public/test.html");  模板页面的绝对地址
}


TP系统常量
function show(){
    echo '';
    echo '当前请求的地址:'.__SELF__.'
'; echo '当前分组:'.__MODULE__.'
'; echo '当前控制器:'.__CONTROLLER__.'
'; echo '当前方法:'.__ACTION__.'
'; } * 项目后台的搭建 1、在Application文件夹下新建一个Admin文件夹,在Admin文件夹中新建Controller和View文件夹。 2、在Admin\Controller控制器中新建一个LoginController.class.php页面,代码如下: namespace Admin\Controller; use Think\Controller; class LoginController extends Controller{ public function login(){ $this->display(); } } 3、在login.html中更改css、js、img的路径
...
4、在Admin\Controller文件夹中新建ManagerClass.php文件 namespace Admin\Controller; use Think\Controller; class ManagerController extends Controller{ public function index(){ $this->display(); } public function head(){ $this->display(); } public function left(){ $this->display() } public function right(){ $this->display() } } 5. 对应的index文件 </noframe> 6、注意更改index、head、left、right页面中的路径 </code></pre> <ul> <li>ThinkPHP的开发模式</li> </ul> <pre><code>tp框架有两种使用模式:开发模式(调试模式),一种是生产模式(运行模式) define('APP_DEBUG', true); //调试模式 define('APP_DEBUG', false); //调试模式 运行模式会把很多核心文件代码缓存成" common~runtime.php"文件,把原来每次需要加载许多文件的请求现在只要请求一个缓存文件,节省了很多文件的打开,关闭的开销。 在页面的底部显示日志信息 在配置文件中,添加如下配置 return array( 'SHOW_PAGE_TRACE' = > true ); 配置完成后,在浏览器的右下角会显示php logo。 如果想看源码的话,在behavior文件夹下的ShowPageTraceBehavior.class.php public function run(&$params){ if(!IS_AJAX && !IS_CLL && C('SHOW_PAGE_TRACE')){ echo $this->showTrace; } } 把ThinkPHP的引擎改成Smarty return array( 'TMPL_ENGINE_TYPE'=>'Smarty', ); Smarty引擎存放在vender目录下 smarty驱动存放在Library/Think/Template/Driver 下的Smarty.class.php 若想修改Smarty的配置(不建议修改) 'TMPL_ENGINE_CONFIG' => array( 'template_dir'=>'', 'compile_dir'=>'', 'cache_dir'=>'' ); 空操作 系统在找不到请求的方法的时候,会定位到__empty()方法处理,利用这个机制,我们可以对用户请求的不存在的所有操作进行统一处理。 public function _empty(){ echo '<meta charset=utf-8 />'; echo '非法操作'; } 空控制器 当系统请求找不到控制器,会定位到空控制器上EmptyController。 <?php namespace Admin\Controller; use Think\Controller; class EmptyController extends Controller{ public function _empty(){ echo '<meta charset=utf-8 />'; echo '页面不存在'; } } ?> 跨控制器调用 1、直接实例化 public function test(){ $obj = new ManagerController(); $obj->managertest(); } 2. A() A()用来实例化其他控制器的。 $obj = A("Manager"); $obj->managertest(); 3、R() R()和A()基本一样,唯一不同的是R()函数在实例化控制器的时候把操作方法一起传递过去,省略了方法的调用 R('Manager/managertest'); </code></pre> <ul> <li>TP框架的配置文件</li> </ul> <pre><code>惯例配置:ThinkPHP/conf/convention.php 应用配置:Application/Common/conf/config.php 调试配置:Application/Common/conf/debug.php 模块配置:Application/Home/conf/config.php 加载顺序 惯例配置->应用配置->调试配置->模块配置 优先级: 模块配置>调试配置>应用配置>惯例配置 C('配置的名称') 用来获取配置信息。 判断 <if condition='表达式'> <elseif condition='表达式' /> <else/> </if> </code></pre> <ul> <li>TP表达式中运算符</li> </ul> <table> <thead> <tr> <th>PHP运算符</th> <th>对应TP中的运算符</th> </tr> </thead> <tbody> <tr> <td><</td> <td>lt</td> </tr> <tr> <td>></td> <td>gt</td> </tr> <tr> <td>==</td> <td>eq</td> </tr> <tr> <td>>=</td> <td>egt</td> </tr> <tr> <td><=</td> <td>elt</td> </tr> </tbody> </table> <pre><code>使用: your scores: {$score}<br> <if condition='$score egt 90'> 你是我的骄傲 <elseif condition='$score egt 80'> Good! <elseif condition='$score egt 70'> Well! <elseif condition='$score egt 60'> Come on! <else/> Try Again! </if> 循环 <for start='开始值' end='结束值' comparison="" step="步长" name="循环变量名"> </for> <for start='1' end='100' step="10" name='b'> {$b}:hi<br> </for> 连接数据库 <?php return array( 'SHOW_PAGE_TRACE'=>TRUE, 'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'DB_NAME'=>'db_name', 'DB_USER'=>'root', 'DB_PWD'=>'123', 'DB_PORT'=>'3306', 'DB_PREFIX'=>'sw_', //数据库表前缀 ); ?> 在配置文件中,做如上的配置,即可连接数据库 </code></pre> <ul> <li>创建Model模型</li> </ul> <pre><code>把"Home/Model"文件夹剪切到Application文件夹下,让Home和Admin共同使用。 第一种实例化模型的方法 public function test(){ $goods = new \Model\GoodsModel(); echo '<pre>'; var_dump($goods); } 第二种: public function test(){ $goods=M("goods"); echo '<pre>'; var_dump($goods); } 第三种: public function test(){ $goods=D("goods"); echo '<pre>'; var_dump($goods); } 在tp3.2以后,M()和D()是一样的,在3.2之前版本中 M() 类似于是 new Model(); D('goods') 类似于 new GoodsModel(): 提示:我们可以看到goods表的信息,在GoodsModel中没有写代码,所有的业务逻辑都是Model类来实现的。 对表的操作 增加:M('表名')->add($data); 删除:M('表名')->delete($id); 更新:M('表名')->save($data); 查询:M('表名')->select(); 普通查询(显示所有的商品) 1、GoodsController中的代码如下: namespace Admin\Controller; use Think\Controller; class GoodsController extends Controller{ public function showlist(){ $list=M('goods')->select(); $this->assign('list',$list); $this->display(); } } 2.在模板中循环取出 <volist name="list" id="vo"> //list数组名称,vo循环变量 <tr id="product1"> //$i从1开始,$key从零开始 <td>{$i}</td> <td>{$vo.goods_name}</td> <td>{$vo.goods_number}</td> <td>{$vo.goods_price}</td> <td>![](/aaa/a.jpg)</td> <td>{$vo.goods_brand_id}</td> <td>{$vo.goods_create_time}</td> <td><a href="#">Modify</a></td> <td><a href="javascript:;" onclick="delete_product(1)">delete</a></td> <td></td> <tr> </volist> 3.获取一条记录 $goods=M('goods')->find(); var_dump($goods); 条件查询 //查询主键为1的记录 $list=M('goods')->select(1); //查询编号是2,3,4,5的记录 $list=M('goods')->select("2,3,4,5"); //where条件 $list=M("goods")->where("goods_name like 'iphone%'")->select(); $list=M("goods")->where("goods_name like 'iphone%' and goods_price>=102")->select(); /limit $list=M("goods")->limit(5)->select(); $list=M("goods")->limit(2,5)->select(); //where and limit $list=M("Model")->where("goods_price>1000")->limit(3)->select(); //排序 $list=M("goods")->where("goods_price desc")->select(); //指定字段 $list=M("goods")->field("goods_nae,goods_price")->select(); //having $list=M("goods")->having("goods_price>2000")->select(); //分组 $list=M("goods")->group("goods_brand_id")->field("goods_brand_id,max(goods_price) m")->having('m>2000')->select(); having和where的区别 区别一: where后面跟的字段必须在数据表中有 having后面跟的字段必须在数据集中有 区别二: select * from 表 where 条件 group by 分组 having 条件 动态查询 getby+字段名 $data=M('goods')->getBygoods_id(9); //返回一条记录 聚合函数 $goods=M("goods"); $goods->count(); $goods->max("goods_price"); $goods->min("goods_price"); $goods->mavg("goods_price"); $goods->sum("goods_price"); 数据添加 1、通过关联数组的方法添加:如果主键自动增长 则返回自动增长的编号,否则返回受记录的记录数.如果SQL遇见有错误,则返回false; $data = array( 'good_name'=>'phone', 'goods_price'=>2400 ); echo M('goods')->add($data); 2、通过AR(active record)方式来添加 $goods=M('goods'); $goods->goods_name = 'TV'; $goods->goods_price = 45332; echo $goods->add(); 数据修改 1、通过关联数组的方法 $data = array( 'goods_name'=>'phone222', 'goods_price'=>2234, 'goods_id'=>22 ); echo M('goods')->save($data); //返回受影响的记录 2、通过AR(active record)方式 $goods=M("goods"); $goods->goods_name='TV333'; $goods->goods_price =22334; $goods_goods_id = 222; echo $goods->save(); 删除数据 M("goods")->delete(123); M("goods")->delete("112,33"); M(goods)->where("goods_name='apple'")->delete(); $goods=M('goods'); $goods->goods_id = 33; $goods->delete(); 执行SQL语句 //查询用query方法 $list=M()->query('select * from sw_goods'); var_dump($list); //增加,删除,修改用execute方法 echo M()->execute('delete from sw_goods where good_id=23'); </code></pre> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1275368069933318144"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(ThinkPHP学习)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1903947193799208960.htm" title="复试英语面试常见问题整理自用,考研复试英语问题汇总" target="_blank">复试英语面试常见问题整理自用,考研复试英语问题汇总</a> <span class="text-muted">旅人_Eric</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a><a class="tag" taget="_blank" href="/search/%E5%A4%8D%E8%AF%95/1.htm">复试</a> <div>更多复试资料获取方式在文末,个人整理,完全免费!更多复试资料获取方式在文末,个人整理,完全免费!Whydidyouchooseouruniversity?Firstly,itprovideshigh-qualitycomputer-relatedknowledgeandagoodacademicatmosphere.Secondly,IthinkChangshaisabeautifulcityan</div> </li> <li><a href="/article/1903408273487360000.htm" title="基于ThinkPHP6用户登录逻辑,结合FastAPI框架实现用户登录系统的全流程解析" target="_blank">基于ThinkPHP6用户登录逻辑,结合FastAPI框架实现用户登录系统的全流程解析</a> <span class="text-muted">Wiktok</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a> <div>基于ThinkPHP6用户登录逻辑,结合FastAPI框架实现用户登录系统的全流程解析,涵盖路由配置、数据验证、JWT令牌生成与鉴权、中间件依赖等核心环节:1.路由配置与请求处理路由定义:使用APIRouter组织用户认证相关接口(注册、登录),并通过app.include_router()集成到主应用。例如:#routers/auth.pyfromfastapiimportAPIRouterro</div> </li> <li><a href="/article/1903315446686347264.htm" title="【DeepThinking】人生反思洞察之「知行合一」(经验贴)" target="_blank">【DeepThinking】人生反思洞察之「知行合一」(经验贴)</a> <span class="text-muted">碣石潇湘无限路</span> <a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E6%80%9D%E8%80%83/1.htm">深度思考</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%A1%8C%E5%90%88%E4%B8%80/1.htm">知行合一</a> <div>引言最近,我深刻体会到一种焦虑:既有生活的现实压力,也有对人生方向的迷茫与无奈。回顾自身,我发现这并不是物质层面的匮乏或欲望驱动,而是对“我是谁”“我想要什么”“我能做什么”的追问。这种焦虑,常常让我想起人的出生:起初我们依赖父母和环境,被动地活着;成年后,我们凭借主动学习、工作和不断积累的信念,去实现自我价值。但终有一天,我们会停下来审视自己,看清一些本质问题,并且发觉自己需要对这一生负责:我应</div> </li> <li><a href="/article/1902525355743309824.htm" title="多学科视角下探索开源&Github、Git初步学习" target="_blank">多学科视角下探索开源&Github、Git初步学习</a> <span class="text-muted">Bulestar_xx</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>Think1.Github作为现今最主流的代码托管平台、协作平台甚至是“社交平台”,本身是闭源的。一方面,它是和大多数开发者连接最紧密的开源阵地,另一方面,拥有传统“黑客精神”的人认为将用户身份绑定这样一个闭源平台上恰恰与开源背道而驰。请从早期自由软件运动与现代开源模式变迁的视角,谈一谈你对上述两种认知的理解。2.在拓展阅读《开放式协作》第二章中国根据用户增长和贡献者增长将所有项目分为了四种类型,</div> </li> <li><a href="/article/1902496845624569856.htm" title="thinkphp5模型查询数据库,查出来的字段直接修改成另外的名字" target="_blank">thinkphp5模型查询数据库,查出来的字段直接修改成另外的名字</a> <span class="text-muted">知码客</span> <a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E9%9A%8F%E7%AC%94/1.htm">个人随笔</a><a class="tag" taget="_blank" href="/search/thinkphp5/1.htm">thinkphp5</a><a class="tag" taget="_blank" href="/search/php%E5%BC%80%E5%8F%91/1.htm">php开发</a> <div>在ThinkPHP5中,如果你希望在查询数据库时将返回的字段名直接修改为其他名称,可以通过以下几种方式实现:方法1:使用field方法指定字段别名在查询时通过field方法直接为字段指定别名(使用AS关键字)。示例代码://使用Db类查询$result=Db::name('user')->field('idASuser_id,nameASfull_name')->select();//使用模型查询</div> </li> <li><a href="/article/1902297842836369408.htm" title="基于thinkphp5小区物业管理系统设计与实现(源码+lw+部署文档+讲解等)" target="_blank">基于thinkphp5小区物业管理系统设计与实现(源码+lw+部署文档+讲解等)</a> <span class="text-muted">阿逸学长</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/java%E6%AF%95%E8%AE%BE%E7%B2%BE%E9%80%89%E6%A1%88%E4%BE%8B/1.htm">java毕设精选案例</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E8%AE%BE/1.htm">毕设</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>基于thinkphp5小区物业管理系统设计与实现(源码+lw+部署文档+讲解等)文章目录基于thinkphp5小区物业管理系统设计与实现(源码+lw+部署文档+讲解等)引言项目概述功能介绍系统管理员:社区业主:技术栈功能截图示例代码数据库操作示例源码获取引言博主介绍:✌专注于Java技术领域和学生毕业项目实战,欢迎大家交流✌主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、</div> </li> <li><a href="/article/1901918870625644544.htm" title="Thinkpad 电池设置 (Ubuntu)" target="_blank">Thinkpad 电池设置 (Ubuntu)</a> <span class="text-muted">CaspianSea</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/battery/1.htm">battery</a><a class="tag" taget="_blank" href="/search/Thinkpad/1.htm">Thinkpad</a> <div>1.安装下面的包:sudoadd-apt-repositoryppa:linrunner/tlpsudoapt-getupdatesudoapt-getinstalltlptlp-rdwsudoapt-getinstalltp-smapi-dkmsacpi-call-tools2.执行sudogedit/etc/default/tlp在末尾加入:#Mainbattery(valuesin%)STA</div> </li> <li><a href="/article/1901624746194300928.htm" title="大模型RAG实战|混合检索:BM25检索+向量检索的LlamaIndex实现" target="_blank">大模型RAG实战|混合检索:BM25检索+向量检索的LlamaIndex实现</a> <span class="text-muted">AIGC大模型 吱屋猪</span> <a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/AI-native/1.htm">AI-native</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a> <div>ThinkRAG大模型RAG实战系列文章,带你深入探索使用LlamaIndex框架,构建本地大模型知识库问答系统。本系列涵盖知识库管理、检索优化、模型本地部署等主题,通过代码与实例,讲解如何打造生产级系统,实现本地知识库的快速检索与智能问答。本文我将介绍一种效果更好的混合检索方法,在实际问答场景中,优于向量数据库自带的混合检索功能。1什么是混合检索目前,大模型RAG系统中普遍采用混合检索来提升检索</div> </li> <li><a href="/article/1901187603701493760.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)示例3:行选择前言页面效果指令输入定义属性数据相关样式与布局相关功能相关定义事件其他think组件代码代码测试示例3,整理后主要代码定义组件\src\views\TableView</div> </li> <li><a href="/article/1901057488455790592.htm" title="php后端分页_thinkphp5框架前后端分离项目实现分页功能的方法分析" target="_blank">php后端分页_thinkphp5框架前后端分离项目实现分页功能的方法分析</a> <span class="text-muted">淡定男</span> <a class="tag" taget="_blank" href="/search/php%E5%90%8E%E7%AB%AF%E5%88%86%E9%A1%B5/1.htm">php后端分页</a> <div>本文实例讲述了thinkphp5框架前后端分离项目实现分页功能的方法。分享给大家供大家参考,具体如下:方法一利用tp5提供的paginate方法实现自动分页参数page第几页,paginate分页方法会自动获取size每页数量代码/***Notes:消费记录*Date:2019/6/25*Time:15:43*@paramRequest$request*@return\think\response</div> </li> <li><a href="/article/1901031646962970624.htm" title="记一次联想ThinkBook 16P G5 IRX ,麦克风无声音问题的解决" target="_blank">记一次联想ThinkBook 16P G5 IRX ,麦克风无声音问题的解决</a> <span class="text-muted">花花鱼</span> <a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E9%A2%91/1.htm">音频</a> <div>1、微信语音麦克风无声音在电脑上微信电话,麦克风的功能没有,或者说你要录个屏给客户,发现讲不了话,也是比较的麻烦。2、联系客服建议升级声卡驱动,然后更新了以后,一个样没什么区别。各种设置,发现还是不行。3、声音设置当然,图片上的是静音麦克风了,按一下键就可以去掉。4、专家给了工具解决旧版驱动残留文件清除工具.zip链接:https://pan.baidu.com/s/1eVjT_QjYk_vz10</div> </li> <li><a href="/article/1900843652146589696.htm" title="国产 DeepSeek V3 被秒成“前浪“?谷歌开放最强 Gemini 2.0 全家桶:速度快60倍,上下文还长16倍!" target="_blank">国产 DeepSeek V3 被秒成“前浪“?谷歌开放最强 Gemini 2.0 全家桶:速度快60倍,上下文还长16倍!</a> <span class="text-muted">Bryan Ding</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a> <div>谷歌向所有人发布了Gemini2.0——迄今为止谷歌“功能最强大”的人工智能模型套件。1谷歌Gemini2.0向所有人开放去年12月,谷歌发布Gemini2.0Flash的实验版本,正式开启了代理型AI的新时代。Gemini2.0Flash是谷歌为开发者群体打造的高效主力模型,具有低延迟、高性能等优势。今年早些时候,谷歌在GoogleAIStudio中更新了2.0FlashThinkingExpe</div> </li> <li><a href="/article/1900617864818257920.htm" title="PHP语言的学习路线" target="_blank">PHP语言的学习路线</a> <span class="text-muted">AI向前看</span> <a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>PHP语言的学习路线PHP(HypertextPreprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。由于其易学易用、功能强大,PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起,掌握PHP语言将为你的职业发展和技术提升提供重要助力。本文将为你提供一条系统化的PHP学习路线,帮助你从零基础逐步成为PHP开发高手。第一部分:基础知识1</div> </li> <li><a href="/article/1900302084247449600.htm" title="ThinkPHP API接口开发的深入探讨" target="_blank">ThinkPHP API接口开发的深入探讨</a> <span class="text-muted">2401_85969209</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>ThinkPHPAPI接口开发的深入探讨随着Web技术的飞速发展,API(应用程序编程接口)作为不同软件系统间通信的桥梁,其重要性日益凸显。ThinkPHP,作为一款流行的PHP开发框架,为API接口的开发提供了强大的支持。本文将详细探讨ThinkPHPAPI接口开发的各个方面,包括框架优势、开发流程、安全性考虑等。一、ThinkPHP框架在API接口开发中的优势ThinkPHP以其简洁、快速、安</div> </li> <li><a href="/article/1899940870027800576.htm" title="ThinkPHP框架中各模块通过MVC架构和扩展机制协同工作形成完整的请求处理流程" target="_blank">ThinkPHP框架中各模块通过MVC架构和扩展机制协同工作形成完整的请求处理流程</a> <span class="text-muted">Wiktok</span> <a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a> <div>在ThinkPHP框架中,各模块通过MVC架构和扩展机制协同工作,形成完整的请求处理流程。以下是核心模块的功能及协作关系分析:一、路由(Route)作用:负责将HTTP请求的URL映射到具体的控制器和方法,支持动态参数解析、RESTful风格接口定义,并实现URL的优雅化(如隐藏入口文件)31119。协作关系:与控制器配合:路由解析后直接调用对应控制器的操作方法,例如Route::get('use</div> </li> <li><a href="/article/1899888356603523072.htm" title="ThinkPHP6中间件深度解析:原理、流程与实战指南" target="_blank">ThinkPHP6中间件深度解析:原理、流程与实战指南</a> <span class="text-muted"></span> <div>一、中间件的核心价值在Web开发中,中间件是处理HTTP请求/响应的重要机制。ThinkPHP6通过中间件实现了:解耦处理逻辑:将非业务代码(如鉴权、日志)从控制器中剥离灵活组合:按需为不同路由配置不同处理流程双向处理:支持请求到达前和响应返回前的双向处理统一管理:集中处理通用逻辑,提升代码复用性二、核心原理剖析1.管道模式(Pipeline)ThinkPHP6中间件基于经典管道模式实现,请求像水</div> </li> <li><a href="/article/1899752743296364544.htm" title="多功能同城兴趣爱好社交圈子系统/小程序内容建设/商业化路径/未来发展" target="_blank">多功能同城兴趣爱好社交圈子系统/小程序内容建设/商业化路径/未来发展</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%90%8E%E7%AB%AFuniappphp/1.htm">前端后端uniappphp</a> <div>运营同城社交兴趣圈子小程序需要从用户增长、内容生态、社区氛围、商业化等多个维度进行系统化布局。基于thinkphp6+uniapp研发一、用户增长策略冷启动阶段种子用户获取:与本地高校、社团、兴趣组织合作,邀请KOL(关键意见领袖)入驻。通过线下活动(如兴趣沙龙、同城聚会)引导用户注册。裂变机制:设计邀请奖励(如积分、虚拟货币),老用户邀请新用户可获得奖励。推出“师徒系统”,老用户带领新用户完成指</div> </li> <li><a href="/article/1899689880095617024.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例页面效果指令输入think组件代码使用示例:实现说明:注意事项:代码测试测试代码正常跑通,附其他基本代码编写路由src\rou</div> </li> <li><a href="/article/1899611834512633856.htm" title="参考thinkphp架构的FastAPI实现思路" target="_blank">参考thinkphp架构的FastAPI实现思路</a> <span class="text-muted">Wiktok</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a> <div>FastAPI是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+并使用了类型提示。虽然FastAPI和ThinkPHP的设计理念和语言不同,但FastAPI同样可以实现ThinkPHP的核心功能,如路由、模型、视图、中间件、JWT、Session等。以下是如何用FastAPI实现这些功能的详细说明:一、路由(Route)FastAPI实现:FastAPI使用装饰器定义</div> </li> <li><a href="/article/1899379260221616128.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之功能优化,添加列宽调整功能Table12页面效果指令输入think组件代码功能增强说明:注意事项:代码测试测试代码正常跑通,附其他基本代码编写路由src\router\index</div> </li> <li><a href="/article/1899244465260916736.htm" title="Ubuntu16.04切换内核启动" target="_blank">Ubuntu16.04切换内核启动</a> <span class="text-muted">StruggleYouth</span> <a class="tag" taget="_blank" href="/search/ubuntu%E7%B3%BB%E7%BB%9F%E6%93%8D%E4%BD%9C/1.htm">ubuntu系统操作</a> <div>1.该命令显示内核的启动顺序zgw@zgw-ThinkPad:~$grepmenuentry/boot/grub/grub.cfgif[x"${feature_menuentry_id}"=xy];thenmenuentry_id_option="--id"menuentry_id_option=""exportmenuentry_id_optionmenuentry'Ubuntu'--class</div> </li> <li><a href="/article/1899174454773215232.htm" title="LLM论文笔记 20: How to think step-by-step: A mechanistic understanding of chain-of-thought reasoning" target="_blank">LLM论文笔记 20: How to think step-by-step: A mechanistic understanding of chain-of-thought reasoning</a> <span class="text-muted">Zhouqi_Hua</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">大模型论文阅读</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a> <div>Arxiv日期:2024.5.16机构:IIT关键词CoT本质LLM推理本质核心结论1.CoT推理的功能组件尽管不同阶段的推理任务具有不同的推理需求,模型内部的功能组件几乎是相同的(共享而非独享)不同的神经算法实际上是由类似归纳头(inductionheads)等机制组合而成2.注意力机制中的信息流动attentionheads在不同的模型层之间传递信息,特别是当它们涉及到本体论相关(ontolo</div> </li> <li><a href="/article/1898006334117310464.htm" title="对比 ThinkPHP 中间件 和 Java AOP" target="_blank">对比 ThinkPHP 中间件 和 Java AOP</a> <span class="text-muted">众乐乐_2008</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>是的,ThinkPHP的中间件(Middleware)类似于Java的AOP(Aspect-OrientedProgramming,面向切面编程),特别是SpringAOP中的拦截器(Interceptor)或过滤器(Filter)。两者都是在请求进入控制器之前、或者响应返回客户端之前,拦截并执行额外的逻辑,比如身份验证、日志记录、数据转换等。对比ThinkPHP中间件和JavaAOP特性Thin</div> </li> <li><a href="/article/1897810176107409408.htm" title="深入探究LLamaFactory推理DeepSeek蒸馏模型时无法展示<think>思考过程的问题" target="_blank">深入探究LLamaFactory推理DeepSeek蒸馏模型时无法展示<think>思考过程的问题</a> <span class="text-muted">羊城迷鹿</span> <a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/LLama-Factory/1.htm">LLama-Factory</a><a class="tag" taget="_blank" href="/search/%E6%80%9D%E7%BB%B4%E9%93%BE/1.htm">思维链</a> <div>文章目录问题背景初始测试与问题发现LLaMAFactory测试结果对照实验:Ollama测试系统性排查与解决方案探索1.尝试更换模板2.深入研究官方文档3.自定义模板实现优化界面展示:实现思考过程的可视化实现方法参数调整影响分析实验一实验二进入大模型应用与实战专栏|查看更多专栏内容问题背景最近在本地环境中部署了DeepSeek-R1-Distill-Qwen-1.5B,即由Qwen2.5-Math</div> </li> <li><a href="/article/1897366136798900224.htm" title="thinkphp 微信商家转账功能(小程序)" target="_blank">thinkphp 微信商家转账功能(小程序)</a> <span class="text-muted">小花小草小绿</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1/1.htm">微信</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a> <div>首选需要给微信商户的运营账户充钱,保证账户有钱首选需要给微信商户的运营账户充钱,保证账户有钱首选需要给微信商户的运营账户充钱,保证账户有钱protected$mch_id='16xxx';//商户号protected$appid='wxxxx';//商户号Appidprotected$cert_pem='/www/wwwroot/xxxx/public/cert/apiclient_cert_10</div> </li> <li><a href="/article/1896980826445377536.htm" title="vector push_back 时间复杂度分析" target="_blank">vector push_back 时间复杂度分析</a> <span class="text-muted">Bob__yuan</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>  《C++程序设计语言》第4部分:标准库,里边写vector,第一句如下:TheSTLvectoristhedefaultcontainer.Useitunlessyouhaveagoodreasonnotto.Ifyoursuggestedalternativeisalistorbuilt-inarray,thinktwice.  vector确实是非常常用,比较基础,不想其他花里胡哨的con</div> </li> <li><a href="/article/1896843887977230336.htm" title="PHP对接微信支付v3版本" target="_blank">PHP对接微信支付v3版本</a> <span class="text-muted">李钢蛋</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1/1.htm">微信</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>【以下内容是在thinkphp框架中编写的,做简单修改就可使用】一、扩展1-1、支付扩展扩展路径:extend/wxpay/Wx.php,根据项目实际情况修改。getSerialNoFromCert($this->apiclient_cert_url);$this->serial_no=$serial_no;$this->private_key=file_get_contents($this->a</div> </li> <li><a href="/article/1896838213138444288.htm" title="php slaveok_MongoDb - ThinkPHP 5.1 完全开发手册" target="_blank">php slaveok_MongoDb - ThinkPHP 5.1 完全开发手册</a> <span class="text-muted">bellebiself</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/slaveok/1.htm">slaveok</a> <div>使用Mongo之前,需要装PHP的mongo扩展,访问http://pecl.php.net/package/mongodb,选择最新的版本即可,然后选择你的PHP版本对应的扩展。然后使用Composer安装扩展包:composerrequiretopthink/think-mongo接下来,需要修改数据库配置文件中的相关参数://数据库类型'type'=>'\think\mongo\Connec</div> </li> <li><a href="/article/1896836448913518592.htm" title="php where嵌套查询,thinkphp _complex 复合查询 where多个子组实现" target="_blank">php where嵌套查询,thinkphp _complex 复合查询 where多个子组实现</a> <span class="text-muted">WebKing</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/where%E5%B5%8C%E5%A5%97%E6%9F%A5%E8%AF%A2/1.htm">where嵌套查询</a> <div>SELECT*FROM`user`WHERE(`mobile`='13824653465'OR`nickname`='evan'OR`openid`='14545-fdes')AND(`bind_seller`='fdaflj24214'OR`seller_type`='1')AND(`reg_time`10)THINKPHP数组where实现多个复合查询,例如上面的sql。查询官方手册,感觉无法</div> </li> <li><a href="/article/1896824725678649344.htm" title="Linux查看TP6 command定时任务并重启" target="_blank">Linux查看TP6 command定时任务并重启</a> <span class="text-muted">落落鱼2013</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/1.htm">定时任务</a> <div>TP6定时任务设置:1、在项目根目录/app/command目录下创建定时任务类文件MemberSubmit.php使用$this->setName('memberSubmit')方法设置名称为memberSubmit的定时任务。namespaceapp\command;usethink\console\Command;usethink\console\Input;usethink\console</div> </li> <li><a href="/article/57.htm" title="多线程编程之join()方法" target="_blank">多线程编程之join()方法</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/JOIN/1.htm">JOIN</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a> <div>现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢? &nbsp; Java实现过程如下: public class T1 implements Runnabl</div> </li> <li><a href="/article/184.htm" title="java中switch的使用" target="_blank">java中switch的使用</a> <span class="text-muted">bingyingao</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/break/1.htm">break</a><a class="tag" taget="_blank" href="/search/continue/1.htm">continue</a> <div>java中的switch仅支持case条件仅支持int、enum两种类型。 用enum的时候,不能直接写下列形式。 switch (timeType) { case ProdtransTimeTypeEnum.DAILY: break; default: br</div> </li> <li><a href="/article/311.htm" title="hive having count 不能去重" target="_blank">hive having count 不能去重</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E5%8E%BB%E9%87%8D/1.htm">去重</a><a class="tag" taget="_blank" href="/search/having+count/1.htm">having count</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E6%95%B0/1.htm">计数</a> <div>hive在使用having count()是,不支持去重计数 &nbsp; hive (default)&gt; select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)&gt;1 limit 10;&nbsp; FAILED: SemanticExcep</div> </li> <li><a href="/article/438.htm" title="WebSphere对JSP的缓存" target="_blank">WebSphere对JSP的缓存</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/WAS+JSP+%E7%BC%93%E5%AD%98/1.htm">WAS JSP 缓存</a> <div>&nbsp; &nbsp; &nbsp; 对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。 &nbsp; &nbsp; &nbsp; &nbsp;现服务</div> </li> <li><a href="/article/565.htm" title="设计模式总结" target="_blank">设计模式总结</a> <span class="text-muted">朱辉辉33</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>1.工厂模式 &nbsp; 1.1 工厂方法模式 (由一个工厂类管理构造方法) &nbsp;&nbsp;&nbsp;&nbsp; 1.1.1普通工厂模式(一个工厂类中只有一个方法) &nbsp;&nbsp;&nbsp;&nbsp; 1.1.2多工厂模式(一个工厂类中有多个方法) &nbsp;&nbsp;&nbsp;&nbsp; 1.1.3静态工厂模式(将工厂类中的方法变成静态方法) &n</div> </li> <li><a href="/article/692.htm" title="实例:供应商管理报表需求调研报告" target="_blank">实例:供应商管理报表需求调研报告</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E7%B3%BB%E7%BB%9F/1.htm">报表系统</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8C%96%E9%80%89%E5%9E%8B/1.htm">信息化选型</a> <div>引言 随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标 1、通过报表为采购决策提供数据分析与支撑 2、对供应商进行综合评估以及管理,合理管理和</div> </li> <li><a href="/article/819.htm" title="mysql" target="_blank">mysql</a> <span class="text-muted">林鹤霄</span> <div>转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html mysql -uroot -p ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) &nbsp; [root@centos var]# service mysql</div> </li> <li><a href="/article/946.htm" title="Linux下多线程堆栈查看工具(pstree、ps、pstack)" target="_blank">Linux下多线程堆栈查看工具(pstree、ps、pstack)</a> <span class="text-muted">aigo</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>原文:http://blog.csdn.net/yfkiss/article/details/6729364 &nbsp; 1. pstree pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)&nbsp;&nbsp;&n</div> </li> <li><a href="/article/1073.htm" title="html input与textarea 值改变事件" target="_blank">html input与textarea 值改变事件</a> <span class="text-muted">alxw4616</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>// 文本输入框(input) 文本域(textarea)值改变事件 // onpropertychange(IE) oninput(w3c) $('input,textarea').on('propertychange input', function(event) { &nbsp; &nbsp; &nbsp;console.log($(this).val()) }); &nbsp; </div> </li> <li><a href="/article/1200.htm" title="String类的基本用法" target="_blank">String类的基本用法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/String/1.htm">String</a> <div>&nbsp; 字符串的用法; &nbsp; &nbsp; // 根据字节数组创建字符串 byte[] by = { 'a', 'b', 'c', 'd' }; String newByteString = new String(by); &nbsp; &nbsp; &nbsp; &nbsp; 1,length() &nbsp;获取字符串的长度 &nbsp; &nbsp; &nbs</div> </li> <li><a href="/article/1327.htm" title="JDK1.5 Semaphore实例" target="_blank">JDK1.5 Semaphore实例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/Semaphore/1.htm">Semaphore</a> <div>Semaphore类 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。 S</div> </li> <li><a href="/article/1454.htm" title="使用GZip来压缩传输量" target="_blank">使用GZip来压缩传输量</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/GZip/1.htm">GZip</a> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PJL Compressi</div> </li> <li><a href="/article/1581.htm" title="【Java范型三】Java范型详解之范型类型通配符" target="_blank">【Java范型三】Java范型详解之范型类型通配符</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>&nbsp; &nbsp; 定义如下一个简单的范型类, &nbsp; package com.tom.lang.generics; public class Generics&lt;T&gt; { private T value; public Generics(T value) { this.value = value; } } </div> </li> <li><a href="/article/1708.htm" title="【Hadoop十二】HDFS常用命令" target="_blank">【Hadoop十二】HDFS常用命令</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>1. 修改日志文件查看器 &nbsp; hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml cat edits.xml &nbsp; 修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志 &nbsp; 2. fsimage查看HDFS中的块信息等 &nb</div> </li> <li><a href="/article/1835.htm" title="怎样区别nginx中rewrite时break和last" target="_blank">怎样区别nginx中rewrite时break和last</a> <span class="text-muted">ronin47</span> <div>在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。 location&nbsp;/ &nbsp;&nbsp; {&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;proxy_pass&nbsp;http://test;&nbsp;</div> </li> <li><a href="/article/1962.htm" title="java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m" target="_blank">java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.List; import java.util.Stack; public class CombinationToSum { /* 第21 题 2010 年中兴面试题 编程求解: 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等</div> </li> <li><a href="/article/2089.htm" title="eclipse svn 帐号密码修改问题" target="_blank">eclipse svn 帐号密码修改问题</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a><a class="tag" taget="_blank" href="/search/svn%E5%B8%90%E5%8F%B7%E5%AF%86%E7%A0%81%E4%BF%AE%E6%94%B9/1.htm">svn帐号密码修改</a> <div>问题描述: &nbsp;&nbsp;&nbsp;&nbsp; Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。 解决思路: &nbsp;&nbsp;&nbsp;&nbsp; 删除subclipse记录的帐号、密码信息,重新输入</div> </li> <li><a href="/article/2216.htm" title="[电子商务]传统商务活动与互联网的结合" target="_blank">[电子商务]传统商务活动与互联网的结合</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1/1.htm">电子商务</a> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如何避免销售量和利润率增加的</div> </li> <li><a href="/article/2343.htm" title="java 解析 properties-使用 Properties-可以指定配置文件路径" target="_blank">java 解析 properties-使用 Properties-可以指定配置文件路径</a> <span class="text-muted">cuityang</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/properties/1.htm">properties</a> <div>#mq xdr.mq.url=tcp://192.168.100.15:61618; import java.io.IOException; import java.util.Properties; public class Test { String conf = &quot;log4j.properties&quot;; private static final</div> </li> <li><a href="/article/2470.htm" title="Java核心问题集锦" target="_blank">Java核心问题集锦</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a><a class="tag" taget="_blank" href="/search/%E6%A0%B8%E5%BF%83/1.htm">核心</a><a class="tag" taget="_blank" href="/search/%E9%9A%BE%E7%82%B9/1.htm">难点</a> <div>注意,这里的参考文章基本来自Effective Java和jdk源码 1)ConcurrentModificationException 当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是: 1)用listIterator, 它支持在遍历的过程中修改元素, 2)不用listIterator, new一个</div> </li> <li><a href="/article/2724.htm" title="1分钟学会Markdown语法" target="_blank">1分钟学会Markdown语法</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/markdown/1.htm">markdown</a> <div>markdown 简明语法 基本符号 *,-,+ 3个符号效果都一样,这3个符号被称为&nbsp;Markdown符号 空白行表示另起一个段落 `是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签 换行 单一段落( &lt;p&gt;) 用一个空白行 连续两个空格 会变成一个 &lt;br&gt; 连续3个符号,然后是空行</div> </li> <li><a href="/article/2851.htm" title="Gson使用二(GsonBuilder)" target="_blank">Gson使用二(GsonBuilder)</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a><a class="tag" taget="_blank" href="/search/GsonBuilder/1.htm">GsonBuilder</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述 &nbsp; &nbsp; GsonBuilder用来定制java跟json之间的转换格式 &nbsp; 二.基本使用 实体测试类: 温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField</div> </li> <li><a href="/article/2978.htm" title="报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList" target="_blank">报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f</div> </li> <li><a href="/article/3105.htm" title="JavaWeb之JSP指令" target="_blank">JavaWeb之JSP指令</a> <span class="text-muted">ihuning</span> <a class="tag" taget="_blank" href="/search/javaweb/1.htm">javaweb</a> <div>&nbsp; 要点 &nbsp; JSP指令简介&nbsp; page指令&nbsp; include指令&nbsp; &nbsp; JSP指令简介&nbsp; &nbsp; JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。 JSP指令的基本语法格式: &lt;%@ 指令 属性名=&quot;</div> </li> <li><a href="/article/3232.htm" title="mac上编译FFmpeg跑ios" target="_blank">mac上编译FFmpeg跑ios</a> <span class="text-muted">啸笑天</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl 2、安装yasm-1.2.0 curl http://www.tortall.net/projects/yasm</div> </li> <li><a href="/article/3359.htm" title="sql mysql oracle中字符串连接" target="_blank">sql mysql oracle中字符串连接</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: + CONCAT() 的语法如下: Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。 请注意,Oracle的CON</div> </li> <li><a href="/article/3486.htm" title="Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate" target="_blank">Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>// 报错如下: $ git pull origin master fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce rtificate &nbsp; // 原因: 由于git最新版默认使用ssl安全验证,但是我们是使用的git未设</div> </li> <li><a href="/article/3613.htm" title="windows命令行设置wifi" target="_blank">windows命令行设置wifi</a> <span class="text-muted">surfingll</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/wifi/1.htm">wifi</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0%E6%9C%ACwifi/1.htm">笔记本wifi</a> <div>还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么 教你命令行设置 笔记本电脑wifi: 1、开启wifi命令 netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456 netsh wlan start hostednetwork pause 其中pause是等待输入,可以去掉 2、</div> </li> <li><a href="/article/3740.htm" title="Linux(Ubuntu)下安装sysv-rc-conf" target="_blank">Linux(Ubuntu)下安装sysv-rc-conf</a> <span class="text-muted">wmlJava</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/sysv-rc-conf/1.htm">sysv-rc-conf</a> <div>安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf 操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。 &nbsp; &nbsp; 背景知识 sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf</div> </li> <li><a href="/article/3867.htm" title="svn切换环境,重发布应用多了javaee标签前缀" target="_blank">svn切换环境,重发布应用多了javaee标签前缀</a> <span class="text-muted">zengshaotao</span> <a class="tag" taget="_blank" href="/search/javaee/1.htm">javaee</a> <div>更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。 &nbsp; 然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。 &nbsp; 检出</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>