开发一个web项目,通常分为两部分,一部分是GUI,即界面、美工,使用HTML,CSS,JS编写,另一部分则是业务逻辑,即程序、功能,使用PHP编写。而模板引擎则是联系这两部分的“桥梁”,可理解成一个PHP类,里面定义了许多方法,实现了将PHP的原始输出加载上界面样式后再输出。

    没用模板之前的编写的代码是这样的:

$title = 标题;

$content = 内容;

?>

<?php echo $title; ?>

    这样的话美工与逻辑没有分离,简单的说就是PHP程序员不仅要写程序还要精通美工,这往往十分困难,因此需要将这两部分工作分开。

    在此通过自己创建一个简单的模板引擎为例子,更好的体会模板引擎的原理。

    之前说了开发一个web项目分成GUI与业务逻辑两部分,因此我们创建两个文件夹,一个命名为“templates”,里边存放模板,新建一个tpl.html文件,另一个命名为“PHP”,里边存放业务逻辑,新建一个index.php文件。

    tpl.html文件代码通常是这样:

<{$title}>

<{ $content;}>

    可以看出来,和之前的代码相比,tpl.html中只有html代码,没有php代码,但是增加了新的标签,这类标签是自己定义的,里面的内容只有经过模板引擎编译后才能被识别,编译后的文件存放在“templates_c”文件夹下。这个文件主要是界面设计用的,将大量使用到CSSJS等技术。

    这时候tpl.htmlindex.php仍旧是分离的,互不干扰,因此需要一个“桥梁”连接,即模板引擎,其实就是一个PHP类,故在此可以创建一个mytpl.class.phpPHP文件。

    mytpl.class.php文件通常定义一个类MyTpl,类中需定义一个数组tpl_var[]用于存放tpl.html中自定义内容标签的参数,此外还需定义一些方法,这些方法最主要的目的是将tpl.hml中无法识别的的内容标签转换成PHP语句,然后再写到一个“templates_c”文件夹下的tpl_c.html中,这个过程就是所谓的编译。

    通常tpl_c.html文件的代码是这样的:

<?php echo $this->tpl_var[</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">title</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">]; ?></head></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal"><body><?php echo $this->tpl_var[</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">content</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">]; ?}></body></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal"></html></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:14px;font-weight:normal"><span style="font-family:'宋体';font-size:20px;font-weight:normal">    可以看出上面的代码是可以被识别的,因为自定义的内容标签已经被替换成</span><span style="font-family:times new roman;font-size:20px">PHP</span><span style="font-family:宋体;font-size:20px">语句了,但是</span><span style="font-family:times new roman;font-size:20px">title</span><span style="font-family:宋体;font-size:20px">和</span><span style="font-family:times new roman;font-size:20px">content</span><span style="font-family:宋体;font-size:20px">的值是多少我们还不得而知,这时候之前创建的</span><span style="font-family:times new roman;font-size:20px">index.php</span><span style="font-family:宋体;font-size:20px">要上场了,通常它代码是这样的:</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:14px;font-weight:normal"><span style="font-family:宋体;font-size:20px"></span></span> </p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">include  </span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:14px;font-weight:normal"><span style="font-family:'宋体';font-size:20px;font-weight:normal">tpl.class.php</span><span style="font-family:宋体;font-size:20px">文件</span></span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">;</span><span style="font-family:'宋体';color:#339966;font-size:14px;font-weight:normal"><span style="font-family:'宋体';color:#339966;font-size:20px;font-weight:normal">//</span><span style="font-family:宋体;font-size:20px">加载模板引擎</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$tpl = new MyTpl();</span><span style="font-family:'宋体';color:#339966;font-size:14px;font-weight:normal"><span style="font-family:'宋体';color:#339966;font-size:20px;font-weight:normal">//</span><span style="font-family:宋体;font-size:20px">实例化一个模板类</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$title = </span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">标题</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">;</span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$content = </span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">内容</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">;</span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$tpl->assign(</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">title</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">,$title);</span><span style="font-family:'宋体';color:#339966;font-size:14px;font-weight:normal"><span style="font-family:'宋体';color:#339966;font-size:20px;font-weight:normal">//</span><span style="font-family:宋体;font-size:20px">调用模板类中的方法,分配变量</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$tpl->assign(</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">content</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">,$content);</span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">$tpl->display(</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">“</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">tpl.html</span><span style="font-family:'times new roman';font-size:20px;font-weight:normal">”</span><span style="font-family:'宋体';font-size:20px;font-weight:normal">);</span><span style="font-family:'宋体';color:#339966;font-size:14px;font-weight:normal"><span style="font-family:'宋体';color:#339966;font-size:20px;font-weight:normal">//</span><span style="font-family:宋体;font-size:20px">调用模板类中的方法,用于显示编译后的内容</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:14px;font-weight:normal"><span style="font-family:宋体;font-size:20px"></span></span> </p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:14px;font-weight:normal"><span style="font-family:'宋体';font-size:20px;font-weight:normal">    上面的代码只是一些简单的描述代码,其中的变量的值可以是直接定义的也可以是从数据库中获取的,此外该文件还可以编写一些复杂的</span><span style="font-family:times new roman;font-size:20px">PHP</span><span style="font-family:宋体;font-size:20px">程序,这也就是之前说的业务逻辑。</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal">    最后用一幅图概括:</span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px;font-weight:normal"></span></p> <p style="margin-top:0px;margin-bottom:0px;" class="p0"><a href="http://img.e-com-net.com/image/info3/8d1b6a47f0c7475b8f36b41beeb8551a.jpg" target="_blank"><img title="捕获.JPG" src="http://img.e-com-net.com/image/info3/8d1b6a47f0c7475b8f36b41beeb8551a.jpg" width="481" height="476" alt="PHP模板引擎原理_第1张图片" style="border:1px solid black;"></a></p> <p style="margin-top:0px;margin-bottom:0px;"> </p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:20px">    这样</span><span style="font-family:'宋体';font-size:14px"><span style="font-family:'宋体';font-size:20px">GUI</span><span style="font-family:宋体;font-size:20px">和业务逻辑的工作就分离了,美工设计人员只需要编写模板文件就可以改变</span><span style="font-family:times new roman;font-size:20px">web</span><span style="font-family:宋体;font-size:20px">的界面,而</span><span style="font-family:times new roman;font-size:20px">PHP</span><span style="font-family:宋体;font-size:20px">程序员则可以专心编写自己的程序。</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-family:'宋体';font-size:14px"><span style="font-family:'宋体';font-size:20px">    公司内部一般都有自己的模板引擎,而通常模板引擎自己写的话完全没有必要,因为市面上已经有一些很成熟的模板引擎了,比如</span><span style="font-family:times new roman;font-size:20px">Smarty</span><span style="font-family:宋体;font-size:20px">,我们只需要懂得如何使用它就好了。</span></span></p> <p style="margin-top:0px;margin-bottom:0px;"><span style="font-size:20px"></span></p> <p><span style="font-size:20px"></span></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1207279990643724288"></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">你可能感兴趣的:(PHP,模板,原理,PHP)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1882643840574222336.htm" title="基于数据可视化SpringBoot+Vue+Uniapp的学生活动管理系统设计与实现(毕业设计实战项目+源码+部署)" target="_blank">基于数据可视化SpringBoot+Vue+Uniapp的学生活动管理系统设计与实现(毕业设计实战项目+源码+部署)</a> <span class="text-muted">Java开源领先者</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Java%E7%BD%91%E7%AB%99%E9%A1%B9%E7%9B%AE/1.htm">Java网站项目</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%AF%95%E8%AE%BE/1.htm">微信小程序毕设</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Java%E7%B2%BE%E5%93%81%E6%AF%95%E8%AE%BE/1.htm">Java精品毕设</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E7%94%9F%E6%B4%BB%E5%8A%A8%E7%AE%A1%E7%90%86/1.htm">学生活动管理</a> <div>博主介绍CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W+,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可</div> </li> <li><a href="/article/1882642957304131584.htm" title="纯分享!!!毕业季答辩PPT模板好物!!!" target="_blank">纯分享!!!毕业季答辩PPT模板好物!!!</a> <span class="text-muted">深刻哥</span> <a class="tag" taget="_blank" href="/search/ppt/1.htm">ppt</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>之前,我曾有幸为大家分享过一份包含500套来自B站某位热门UP主的PPT合集,那份资源以其丰富的内容和多样的设计风格,赢得了不少朋友们的喜爱与好评。而今天,为了更加精准地满足大家的需求,特别是那些即将面临毕业答辩、急需高质量PPT辅助展示的朋友们,我特意准备了一份更加专注且专业的资源——这便是精心挑选的160套收费高质量毕业答辩PPT合集。这份合集不仅数量可观,更重要的是,它涵盖了各个专业领域,无</div> </li> <li><a href="/article/1882636781678030848.htm" title="面试官:Redis中大Key怎么删除?" target="_blank">面试官:Redis中大Key怎么删除?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFgo%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98/1.htm">后端go面试问题</a> <div>首先来看一下该岗位的职责和要求:岗位职责负责公司旗下产品的全新需求开发负责公司中台系统管理系统开发开发临时性工具和数据处理工作设计开发可复用模块,提高开发效率节省维护成本保质保量的完成上级领导安排的技术相关工作任职要求本科以上学历,计算机相关专业优先,3年左右Golang开发经验,有PHP转Go项目经验者优先熟练掌握Golang/PHP语言,熟悉至少一种Golang框架熟练掌握关系型数据库Mysq</div> </li> <li><a href="/article/1882636278650957824.htm" title="多版本并发控制:MVCC的作用和基本原理" target="_blank">多版本并发控制:MVCC的作用和基本原理</a> <span class="text-muted">koping_wu</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>多版本并发控制:MVCC的作用和基本原理1、MVCC简介1.1快照读与当前读的区别1.1.1快照读1.1.2当前读1.2数据库的读写问题1.3MVCC的作用2、MVCC实现原理之ReadView2.1什么是ReadView2.2ReadView的设计思路2.3MVCC整体操作流程1、MVCC简介1.1快照读与当前读的区别mysql在读数据的场景下,根据是否加锁分为了2种读的方式:1.1.1快照读不</div> </li> <li><a href="/article/1882636147331493888.htm" title="SAP API开发方法大全" target="_blank">SAP API开发方法大全</a> <span class="text-muted"></span> <div>Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。</div> </li> <li><a href="/article/1882636148589785088.htm" title="使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头" target="_blank">使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头</a> <span class="text-muted"></span> <div>Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。</div> </li> <li><a href="/article/1882631232571895808.htm" title="WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理" target="_blank">WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理</a> <span class="text-muted">xcLeigh</span> <a class="tag" taget="_blank" href="/search/WPF/1.htm">WPF</a><a class="tag" taget="_blank" href="/search/%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">从入门到精通</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a> <div>WPF基础|深入WPF事件机制:路由事件与自定义事件处理一、前言二、WPF事件基础概念2.1事件的定义与本质2.2常见的WPF事件类型三、路由事件3.1路由事件的概念与原理3.2路由事件的三个阶段3.3路由事件的标识与注册3.4常见的路由事件示例四、自定义事件处理4.1为什么需要自定义事件4.2自定义路由事件的创建4.3自定义非路由事件的创建4.4自定义事件参数的传递五、路由事件与自定义事件处理的</div> </li> <li><a href="/article/1882622530053795840.htm" title="十分钟精通MinIO:minio的原理、部署、操作" target="_blank">十分钟精通MinIO:minio的原理、部署、操作</a> <span class="text-muted">周盛欢</span> <a class="tag" taget="_blank" href="/search/minio/1.htm">minio</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>一、认识MinIOMinio是一个简单易用的云存储服务,就像是一个放在网络上的大文件柜。想象一下,你有一间放满了各种文件的房间,有时候你需要把这些文件分享给朋友或者在不同地方访问它们。Minio就是帮你做到这一点的工具,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要有网络,就能访问或分享这些文件。现在,如果你想要从这个仓库里取出一张图片或一段视频,让网站的访客能看到或者下载,Mini</div> </li> <li><a href="/article/1882620010053038080.htm" title="在KubeFATE中定制化部署联邦学习组件的深入分析" target="_blank">在KubeFATE中定制化部署联邦学习组件的深入分析</a> <span class="text-muted">亨利笔记</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>题图摄于国家大剧院(本文作者系VMware中国研发云原生实验室架构师,联邦学习开源项目KubeFATE/FATE-Operator维护者。)需要加入KubeFATE开源项目讨论群的同学,请关注亨利笔记公众号后回复“kubefate”即可。相关文章在JuypterNotebook中构建联邦学习任务云原生联邦学习平台KubeFATE原理详解用KubeFATE在K8s上部署联邦学习FATEv1.5使用D</div> </li> <li><a href="/article/1882607016933912576.htm" title="Web安全:缓存欺骗攻击;基于缓存、CDN的新型Web漏洞" target="_blank">Web安全:缓存欺骗攻击;基于缓存、CDN的新型Web漏洞</a> <span class="text-muted">Fly不安全</span> <a class="tag" taget="_blank" href="/search/Web%E5%AE%89%E5%85%A8%E5%9F%BA%E7%A1%80/1.htm">Web安全基础</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98%E6%AC%BA%E9%AA%97%E6%94%BB%E5%87%BB/1.htm">缓存欺骗攻击</a><a class="tag" taget="_blank" href="/search/Nginx/1.htm">Nginx</a><a class="tag" taget="_blank" href="/search/CDN/1.htm">CDN</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a> <div>基于缓存、CDN的新型Web漏洞漏洞原理利用方式解决方法Web缓存欺骗漏洞(WebCacheDeception)是一种利用不安全的缓存机制来泄露用户敏感信息的攻击方式。攻击者通过操控请求URL诱导缓存系统将敏感信息缓存并对其他用户公开,可能导致用户数据泄露等严重问题。漏洞原理缓存:现代大多数Web应用会在应用前置CDN或缓存代理,再通过URL来决定是否缓存内容。下面这里放一个Nginx的例子loc</div> </li> <li><a href="/article/1882603863119294464.htm" title="15 分布式锁和分布式session" target="_blank">15 分布式锁和分布式session</a> <span class="text-muted">40岁的系统架构师</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>在java中一个进程里面使用synchronized在new出来对象头信息中加锁,如果是静态方法中在加载的类信息中加锁(我们在锁的原理中讲过)。如果使用lock加锁可以自己指定。这些都是在同一个进程空间中的操作。如果在分布式环境中由于程序不在一个进程空间,就没办法使用这些原子性的元素中加锁,我们需要在不同的进程空间中找原子性的元素。这就是分布式锁基于数据库的分布式锁该方式通过数据库的唯一索引来实现</div> </li> <li><a href="/article/1882600333939634176.htm" title="springcloud负载均衡原理" target="_blank">springcloud负载均衡原理</a> <span class="text-muted">zzyh123456</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>SpringCloud负载均衡的原理主要涉及到客户端负载均衡的实现方式,特别是在微服务架构中如何均匀分配请求到多个服务实例上。以下是SpringCloud负载均衡的详细原理:1.负载均衡概述负载均衡(LoadBalancing)是在分布式系统中,将工作负载(Workload)平均分配给多个服务器或计算机资源,以提高系统的性能、可靠性和可扩展性。在SpringCloud中,负载均衡主要用于微服务架构</div> </li> <li><a href="/article/1882597559751471104.htm" title="出现 Error: listen EACCES: permission denied 0.0.0.0:80 解决方法" target="_blank">出现 Error: listen EACCES: permission denied 0.0.0.0:80 解决方法</a> <span class="text-muted">码农研究僧</span> <a class="tag" taget="_blank" href="/search/BUG/1.htm">BUG</a><a class="tag" taget="_blank" href="/search/Bug/1.htm">Bug</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a> <div>目录1.问题所示2.原理分析3.解决方法1.问题所示执行VUE项目的时候,出现如下问题errorwhenstartingdevserver:Error:listenEACCES:permissiondenied0.0.0.0:80atServer.setupListenHandle[as_listen2](node:net:1468:21)atlistenInCluster</div> </li> <li><a href="/article/1882595919656972288.htm" title="Spring 框架基础:IOC 与 AOP 原理剖析及面试要点" target="_blank">Spring 框架基础:IOC 与 AOP 原理剖析及面试要点</a> <span class="text-muted">翻晒时光</span> <a class="tag" taget="_blank" href="/search/Java%E6%98%A5%E6%8B%9B%E9%9D%A2%E8%AF%95%E6%8C%87%E5%8D%97/1.htm">Java春招面试指南</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在上一篇中,我们深入探讨了Java反射机制,了解了它在运行时动态操作类和对象的强大能力。而今天,我们将进入Spring框架的世界。Spring框架作为Java企业级开发中最流行的框架之一,极大地简化了企业级应用的开发过程。对于春招面试而言,Spring框架的基础知识是重点考察内容,其中控制反转(IOC)和面向切面编程(AOP)是Spring框架的核心思想,下面我们来详细了解。一、控制反转(IOC)</div> </li> <li><a href="/article/1882593138363658240.htm" title="使用Zapier Natural Language Actions与LangChain集成实现自动化工作流" target="_blank">使用Zapier Natural Language Actions与LangChain集成实现自动化工作流</a> <span class="text-muted">srudfktuffk</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍ZapierNaturalLanguageActions(NLA)提供了一种通过自然语言接口访问Zapier平台上5000多个应用和20000多个操作的方法。通过NLA,你可以将自然语言翻译成具体的API调用并获取简化的输出。这使得在复杂的多应用环境中进行自动化操作变得更加轻松。然而需要注意的是,ZapierNLA将在2023年11月17日停用。核心原理解析NLA的核心思想是通过类似O</div> </li> <li><a href="/article/1882583800672743424.htm" title="使用Mojeek Search进行搜索查询" target="_blank">使用Mojeek Search进行搜索查询</a> <span class="text-muted">jkgSFS</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</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%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在这篇文章中,我们将深入讲解如何使用MojeekSearch进行搜索查询,并展示具体的代码实现。您可以从Mojeek网站获取API密钥,并参照本文提供的示例代码进行实际操作。技术背景介绍Mojeek是一款隐私友好的搜索引擎,致力于提供无追踪的搜索服务。借助MojeekSearchAPI,我们能够在应用程序中集成搜索功能,获取到相关的搜索结果。核心原理解析MojeekSearchAPI允许开发者通过</div> </li> <li><a href="/article/1882581404605280256.htm" title="使用AI技术从Telegram导入数据到LangChain" target="_blank">使用AI技术从Telegram导入数据到LangChain</a> <span class="text-muted">fGVBSAbe</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍Telegram是一款全球范围内可供使用的即时通讯软件,支持多种平台并提供安全的加密通讯。对于开发者而言,它提供了丰富的API接口,可以用于自动化数据处理和集成。本文将介绍如何将Telegram中的聊天数据导入到LangChain,这是一种数据处理和分析工具,能够帮助开发者更高效地管理和分析聊天记录。核心原理解析我们将使用LangChain提供的TelegramChatApiLoade</div> </li> <li><a href="/article/1882580141171863552.htm" title="安卓图形化开发!Android插件化主流框架和实现原理,值得收藏!" target="_blank">安卓图形化开发!Android插件化主流框架和实现原理,值得收藏!</a> <span class="text-muted">赵是水瓶座</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a> <div>前言先介绍一下自己吧,不是什么二本渣校也不是什么非专业。我就是重点大学毕业,大学学的是Java,我个人比较乐于学习于是自学Android一年。趁着这次疫情,大洗牌我凭借天生优势,——聪明的脑袋以及自己不断地刻苦的学习,在一众高手之中成功脱颖而出。现在网上都喜欢这么搞,哪有这么多二本渣校逆袭。年薪50w+都是吹出来的,只有你正真拿到年薪50w+你才知道,你要做多少事,付出多少。目录:1.网络2.Ja</div> </li> <li><a href="/article/1882577364106407936.htm" title="常见3D打印技术原理及比较" target="_blank">常见3D打印技术原理及比较</a> <span class="text-muted">HuAo_3D</span> <a class="tag" taget="_blank" href="/search/3D%E6%89%93%E5%8D%B0/1.htm">3D打印</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>3D打印作为一项新兴技术,对于制造行业来说具有革命性的意义,该技术能够有效缩减产品的开发、设计周期,大大提高工作效率,有效节约企业的运营成本,可以帮助企业在风云变化的市场竞争中站稳脚跟。尤其近年来,随着科学技术的飞速发展,3D打印技术也蓬勃发展,并得到社会各界的广泛关注,各类3D打印技术更是如雨后春笋般涌现,下面大家一起来看看各类比较常见的3D打印技术有何不同以及它们的工作原理又是怎样的。1、FD</div> </li> <li><a href="/article/1882571945518624768.htm" title="Nginx 性能优化技巧与实践(二)" target="_blank">Nginx 性能优化技巧与实践(二)</a> <span class="text-muted">计算机毕设定制辅导-无忧学长</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Nginx/1.htm">Nginx</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>五、性能优化之负载均衡篇5.1负载均衡算法介绍Nginx作为一款强大的Web服务器和反向代理服务器,其负载均衡功能是提升Web服务性能和可靠性的关键。Nginx支持多种负载均衡算法,每种算法都有其独特的原理和特点,适用于不同的业务场景。轮询(RoundRobin)是Nginx的默认负载均衡算法,它就像一个有条不紊的调度员,按照顺序将请求依次分发到后端服务器。比如,假设有三个后端服务器A、B、C,当</div> </li> <li><a href="/article/1882570064486526976.htm" title="Vue3 源码解析(六):响应式原理与 reactive" target="_blank">Vue3 源码解析(六):响应式原理与 reactive</a> <span class="text-muted"></span> <div>今天这篇文章是笔者会带着大家一起深入剖析Vue3的响应式原理实现,以及在响应式基础API中的reactive是如何实现的。对于Vue框架来说,其非侵入的响应式系统是最独特的特性之一了,所以不论任何一个版本的Vue,在熟悉其基础用法后,响应式原理都是笔者最想优先了解的部分,也是阅读源码时必细细研究的部分。毕竟知己知彼百战不殆,当你使用Vue时,掌握了响应式原理一定会让你的coding过程更加游刃有余</div> </li> <li><a href="/article/1882564758352228352.htm" title="软考信安12~网络安全审计技术原理与应用" target="_blank">软考信安12~网络安全审计技术原理与应用</a> <span class="text-muted">jnprlxc</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E8%80%83%7E%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">软考~信息安全工程师</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a> <div>1、网络安全审计概述1.1、网络安全审计概念网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后“安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便于发现潜在的网络安全威胁行为,开展网络安全风险分析及管理。常见的安全审计功能是安全事件采集、存储和查询。对于重要的信息系统,则部署独立的网络安全审计系统。</div> </li> <li><a href="/article/1882564127268859904.htm" title="基于数据可视化+SpringBoot+Vue的医院综合管理平台设计和实现(源码+论文+部署讲解等)" target="_blank">基于数据可视化+SpringBoot+Vue的医院综合管理平台设计和实现(源码+论文+部署讲解等)</a> <span class="text-muted">java李杨勇</span> <a class="tag" taget="_blank" href="/search/Java%E7%B2%BE%E5%93%81%E6%AF%95%E8%AE%BE%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">Java精品毕设实战案例</a><a class="tag" taget="_blank" href="/search/Java%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">Java毕业设计实战案例</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%8C%BB%E9%99%A2%E7%BB%BC%E5%90%88%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0/1.htm">医院综合管理平台</a><a class="tag" taget="_blank" href="/search/Java%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">Java毕业设计</a> <div>博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等</div> </li> <li><a href="/article/1882563119432134656.htm" title="人工智能和云计算带来的技术变革:人工智能实现自动化营销的方式" target="_blank">人工智能和云计算带来的技术变革:人工智能实现自动化营销的方式</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/AI%E5%AE%9E%E6%88%98/1.htm">AI实战</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/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/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/RPA/1.htm">RPA</a> <div>1.背景介绍随着人工智能(AI)和云计算技术的不断发展,我们正面临着一场技术革命。这场革命正在改变我们的生活方式、工作方式和商业模式。在这篇文章中,我们将探讨人工智能如何实现自动化营销的方式,并深入了解其背后的核心概念、算法原理、代码实例等。1.1人工智能简介人工智能是一种计算机科学的分支,旨在让计算机具有人类智能的能力,如学习、推理、感知、语言理解等。人工智能的目标是让计算机能够理解自然语言、解</div> </li> <li><a href="/article/1882562357591339008.htm" title="[Effective C++]条款48 模板元编程(TMP)" target="_blank">[Effective C++]条款48 模板元编程(TMP)</a> <span class="text-muted">tianmu_sama</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>本文初发于“天目中云的小站”,同步转载于此。条款48:认识template元编程在条款47我们主要了解了萃取器这种模板元编程,也初步进入了模板元编程的世界.在本条款中,我们将继续认识模板元编程,认识其必要性和应用场景,相比于条款47讲的还算比较深入,本条款真的就只是简介,因为其体量确实非常庞大,甚至可以单独作为一个学科研究.Templatemetaprogramming,模板元编程,简称TMP,是</div> </li> <li><a href="/article/1882561223971631104.htm" title="使用Google Cloud Vertex AI进行文本和多模态生成" target="_blank">使用Google Cloud Vertex AI进行文本和多模态生成</a> <span class="text-muted">sagvWSRJHMNEB</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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍GoogleCloudVertexAI是一个强大的框架,提供了多种AI模型的开放访问和动态部署,包括文本、代码和多模态生成模型。通过VertexAI,用户可以利用不同的基础模型,如Gemini、Palm、和Llama,来实现复杂的AI应用。VertexAI不仅限于文本生成,还支持多模态输入,如图像和音频,极大地扩展了AI应用的潜力。核心原理解析VertexAI提供了一种简化的方式来使用</div> </li> <li><a href="/article/1882552266662146048.htm" title="SQLDatabase Toolkit: 搭建基于SQL数据库的智能问答系统" target="_blank">SQLDatabase Toolkit: 搭建基于SQL数据库的智能问答系统</a> <span class="text-muted">azzxcvhj</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍SQLDatabaseToolkit是一个非常有用的工具集,旨在与SQL数据库进行交互。它的常见应用场景是通过数据库数据构建问答系统,特别是在需要迭代处理和错误恢复的情况下。此工具包在LangChain社区包中提供,支持多种大型语言模型(LLM)或聊天模型的集成。核心原理解析SQLDatabaseToolkit的核心功能包括查询执行、模式查找以及查询检查等。借助这些工具,可以构建一个智</div> </li> <li><a href="/article/1882549618990968832.htm" title="使用NucliaDB进行文本向量化与检索" target="_blank">使用NucliaDB进行文本向量化与检索</a> <span class="text-muted">GEAWfaacc</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍NucliaDB是一款强大的向量数据库,可以帮助开发者进行文本数据的向量化与检索。通过使用NucliaDB,您可以将文本数据存储在知识库中,并执行高效的相似度搜索。本文将介绍如何利用NucliaDB进行文本的向量化处理与检索操作。核心原理解析NucliaDB允许用户将文本数据转换为向量,并存储在知识库中。每个文本数据会生成唯一的向量,这些向量可以用于快速的相似度搜索。例如,如果您存储了</div> </li> <li><a href="/article/1882546341406633984.htm" title="【优选算法】7----三数之和" target="_blank">【优选算法】7----三数之和</a> <span class="text-muted">Rhzkp</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a> <div>来了来了,他来了,又是学习算法的一天~今天的嘉宾是中等难度的算法题----三数之和!------------------------------------------begin------------------------------------题目解析:哇趣!又是给了一个数组,又是需要我们在一个数组中进行操作,但这次不是二元那么简单了,而是三元~讲解算法原理:方法一:肯定还是暴力解法啦,直接</div> </li> <li><a href="/article/1882543319066669056.htm" title="使用SolarChat实现中英韩翻译的实战指南" target="_blank">使用SolarChat实现中英韩翻译的实战指南</a> <span class="text-muted">azzxcvhj</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在这篇文章中,我们将探索如何利用SolarChat这一强大的聊天模型来实现中英韩翻译功能。SolarChat是一个方便的语言模型接口,能够帮助我们将自然语言处理任务集成到项目中。本文将详细介绍这个模型的核心原理,并通过示例代码展示如何使用它进行翻译。技术背景介绍随着人工智能的发展,语言模型在各种自然语言处理任务中扮演了重要角色。特别是在翻译、对话生成等领域,先进的语言模型如SolarChat为我们</div> </li> <li><a href="/article/34.htm" title="Java 并发包之线程池和原子计数" target="_blank">Java 并发包之线程池和原子计数</a> <span class="text-muted">lijingyao8206</span> <a class="tag" taget="_blank" href="/search/Java%E8%AE%A1%E6%95%B0/1.htm">Java计数</a><a class="tag" taget="_blank" href="/search/ThreadPool/1.htm">ThreadPool</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91%E5%8C%85/1.htm">并发包</a><a class="tag" taget="_blank" href="/search/java%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">java线程池</a> <div>对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。     这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁C</div> </li> <li><a href="/article/161.htm" title="java编程思想 抽象类和接口" target="_blank">java编程思想 抽象类和接口</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/%E6%8A%BD%E8%B1%A1%E7%B1%BB/1.htm">抽象类</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3/1.htm">接口</a> <div>接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持   1 ,抽象类 :  如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)   抽象方法 : 在方法中仅有声明而没有方法体    package com.wj.Interface; </div> </li> <li><a href="/article/288.htm" title="[房地产与大数据]房地产数据挖掘系统" target="_blank">[房地产与大数据]房地产数据挖掘系统</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a> <div>        随着一个关键核心技术的突破,我们已经是独立自主的开发某些先进模块,但是要完全实现,还需要一定的时间...        所以,除了代码工作以外,我们还需要关心一下非技术领域的事件..比如说房地产     &nb</div> </li> <li><a href="/article/415.htm" title="数组队列总结" target="_blank">数组队列总结</a> <span class="text-muted">沐刃青蛟</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84%E9%98%9F%E5%88%97/1.htm">数组队列</a> <div>      数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。      以下是数组队列的功能实现代码:   import List.Student; public class</div> </li> <li><a href="/article/542.htm" title="Oracle存储过程无法编译的解决方法" target="_blank">Oracle存储过程无法编译的解决方法</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E3%80%80/1.htm">存储过程 </a> <div>今天同事修改Oracle存储过程又导致2个过程无法被编译,流程规范上的东西,Dave 这里不多说,看看怎么解决问题。   1.     查看无效对象 XEZF@xezf(qs-xezf-db1)> select object_name,object_type,status from all_objects where status='IN</div> </li> <li><a href="/article/669.htm" title="重装系统之后oracle恢复" target="_blank">重装系统之后oracle恢复</a> <span class="text-muted">文强chu</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>前几天正在使用电脑,没有暂停oracle的各种服务。 突然win8.1系统奔溃,无法修复,开机时系统 提示正在搜集错误信息,然后再开机,再提示的无限循环中。 无耐我拿出系统u盘 准备重装系统,没想到竟然无法从u盘引导成功。 晚上到外面早了一家修电脑店,让人家给装了个系统,并且那哥们在我没反应过来的时候, 直接把我的c盘给格式化了 并且清理了注册表,再装系统。 然后的结果就是我的oracl</div> </li> <li><a href="/article/796.htm" title="python学习二( 一些基础语法)" target="_blank">python学习二( 一些基础语法)</a> <span class="text-muted">小桔子</span> <a class="tag" taget="_blank" href="/search/pthon/1.htm">pthon</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95/1.htm">基础语法</a> <div>紧接着把!昨天没看继续看django 官方教程,学了下python的基本语法 与c类语言还是有些小差别: 1.ptyhon的源文件以UTF-8编码格式 2. /   除 结果浮点型 //  除 结果整形 %   除 取余数 *   乘 **  乘方 eg 5**2 结果是5的2次方25 _&</div> </li> <li><a href="/article/923.htm" title="svn 常用命令" target="_blank">svn 常用命令</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a><a class="tag" taget="_blank" href="/search/%E7%89%88%E6%9C%AC%E5%9B%9E%E9%80%80/1.htm">版本回退</a> <div>1 svn回退版本   1)在window中选择log,根据想要回退的内容,选择revert this version或revert chanages from this version 两者的区别:   revert this version:表示回退到当前版本(该版本后的版本全部作废)   revert chanages from this versio</div> </li> <li><a href="/article/1050.htm" title="某小公司面试归来" target="_blank">某小公司面试归来</a> <span class="text-muted">alafqq</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>先填单子,还要写笔试题,我以时间为急,拒绝了它。。时间宝贵。 老拿这些对付毕业生的东东来吓唬我。。 面试官很刁难,问了几个问题,记录下; 1,包的范围。。。public,private,protect. --悲剧了 2,hashcode方法和equals方法的区别。谁覆盖谁.结果,他说我说反了。 3,最恶心的一道题,抽象类继承抽象类吗?(察,一般它都是被继承的啊) 4,stru</div> </li> <li><a href="/article/1177.htm" title="动态数组的存储速度比较 集合框架" target="_blank">动态数组的存储速度比较 集合框架</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/1.htm">集合框架</a> <div>集合框架: 自定义数据结构(增删改查等) package 数组; /** * 创建动态数组 * @author 百合 * */ public class ArrayDemo{ //定义一个数组来存放数据 String[] src = new String[0]; /** * 增加元素加入容器 * @param s要加入容器</div> </li> <li><a href="/article/1304.htm" title="用JS实现一个JS对象,对象里有两个属性一个方法" target="_blank">用JS实现一个JS对象,对象里有两个属性一个方法</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/js%E5%AF%B9%E8%B1%A1/1.htm">js对象</a> <div><html> <head> </head> <body> 用js代码实现一个js对象,对象里有两个属性,一个方法 </body> <script> var obj={a:'1234567',b:'bbbbbbbbbb',c:function(x){ </div> </li> <li><a href="/article/1431.htm" title="探索JUnit4扩展:使用Rule" target="_blank">探索JUnit4扩展:使用Rule</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/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/Rule/1.htm">Rule</a> <div>        在上一篇文章中,讨论了使用Runner扩展JUnit4的方式,即直接修改Test Runner的实现(BlockJUnit4ClassRunner)。但这种方法显然不便于灵活地添加或删除扩展功能。下面将使用JUnit4.7才开始引入的扩展方式——Rule来实现相同的扩展功能。 1. Rule       &n</div> </li> <li><a href="/article/1558.htm" title="[Gson一]非泛型POJO对象的反序列化" target="_blank">[Gson一]非泛型POJO对象的反序列化</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a> <div>当要将JSON数据串反序列化自身为非泛型的POJO时,使用Gson.fromJson(String, Class)方法。自身为非泛型的POJO的包括两种: 1. POJO对象不包含任何泛型的字段 2. POJO对象包含泛型字段,例如泛型集合或者泛型类 Data类 a.不是泛型类, b.Data中的集合List和Map都是泛型的 c.Data中不包含其它的POJO    </div> </li> <li><a href="/article/1685.htm" title="【Kakfa五】Kafka Producer和Consumer基本使用" target="_blank">【Kakfa五】Kafka Producer和Consumer基本使用</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>0.Kafka服务器的配置 一个Broker, 一个Topic Topic中只有一个Partition()   1. Producer: package kafka.examples.producers; import kafka.producer.KeyedMessage; import kafka.javaapi.producer.Producer; impor</div> </li> <li><a href="/article/1812.htm" title="lsyncd实时同步搭建指南——取代rsync+inotify" target="_blank">lsyncd实时同步搭建指南——取代rsync+inotify</a> <span class="text-muted">ronin47</span> <div>1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是 inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotify</div> </li> <li><a href="/article/1939.htm" title="java-9. 判断整数序列是不是二元查找树的后序遍历结果" target="_blank">java-9. 判断整数序列是不是二元查找树的后序遍历结果</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class IsBinTreePostTraverse{ static boolean isBSTPostOrder(int[] a){ if(a==null){ return false; } /*1.只有一个结点时,肯定是查找树 *2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是 6 {6,5}对应的BST是</div> </li> <li><a href="/article/2066.htm" title="MySQL的sum函数返回的类型" target="_blank">MySQL的sum函数返回的类型</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</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/jdbc/1.htm">jdbc</a> <div>今天项目切换数据库时,出错 访问数据库的代码大概是这样: String sql = "select sum(number) as sumNumberOfOneDay from tableName"; List<Map> rows = getJdbcTemplate().queryForList(sql); for (Map row : rows</div> </li> <li><a href="/article/2193.htm" title="java设计模式之单例模式" target="_blank">java设计模式之单例模式</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">java设计模式</a> <div> 在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:   作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的结构   单例模式的特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。   饿汉式单例类   publ</div> </li> <li><a href="/article/2320.htm" title="javascript取当月最后一天" target="_blank">javascript取当月最后一天</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div> <!--javascript取当月最后一天--> <script language=javascript> var current = new Date(); var year = current.getYear(); var month = current.getMonth(); showMonthLastDay(year, mont</div> </li> <li><a href="/article/2447.htm" title="linux tune2fs命令详解" target="_blank">linux tune2fs命令详解</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/tune2fs/1.htm">tune2fs</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6%E5%9D%97%E4%BF%A1%E6%81%AF/1.htm">查看系统文件块信息</a> <div>一.简介: tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。 二.用法: Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g grou</div> </li> <li><a href="/article/2574.htm" title="做有中国特色的程序员" target="_blank">做有中国特色的程序员</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a> <div>  从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有</div> </li> <li><a href="/article/2701.htm" title="Android:TextView属性大全" target="_blank">Android:TextView属性大全</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/textview/1.htm">textview</a> <div>android:autoLink    设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)  android:autoText    如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输</div> </li> <li><a href="/article/2828.htm" title="tomcat虚拟目录安装及其配置" target="_blank">tomcat虚拟目录安装及其配置</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/tomcat%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E/1.htm">tomcat配置说明</a><a class="tag" taget="_blank" href="/search/tomca%E9%83%A8%E7%BD%B2web%E5%BA%94%E7%94%A8/1.htm">tomca部署web应用</a><a class="tag" taget="_blank" href="/search/tomcat%E8%99%9A%E6%8B%9F%E7%9B%AE%E5%BD%95%E5%AE%89%E8%A3%85/1.htm">tomcat虚拟目录安装</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2097184 1.-------------------------------------------tomcat  目录结构 config:存放tomcat的配置文件 temp  :存放tomcat跑起来后存放临时文件用的 work   : 当第一次访问应用中的jsp</div> </li> <li><a href="/article/2955.htm" title="浅谈:APP有哪些常被黑客利用的安全漏洞" target="_blank">浅谈:APP有哪些常被黑客利用的安全漏洞</a> <span class="text-muted">gg163</span> <a class="tag" taget="_blank" href="/search/APP/1.htm">APP</a> <div>首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。由国内移动应用安全检测团队爱内测(ineice.com)的CTO给我们浅谈关于Android 系统的开源设计以及生态环境。 1. 应用反编译漏洞:APK 包非常容易被反编译成可读</div> </li> <li><a href="/article/3082.htm" title="C#根据网址生成静态页面" target="_blank">C#根据网址生成静态页面</a> <span class="text-muted">hvt</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a> <div>HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件是后台管理的首页。包含生成留言板首页,以及显示用户名,退出等功能。根据网址生成页面的方法:   bool CreateHtmlFile(string url, string path) { //http://keleyi.com/a/bjae/3d10wfax.htm stri</div> </li> <li><a href="/article/3209.htm" title="SVG 教程 (一)" target="_blank">SVG 教程 (一)</a> <span class="text-muted">天梯梦</span> <a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a> <div>SVG 简介 SVG 是使用 XML 来描述二维图形和绘图程序的语言。 学习之前应具备的基础知识: 继续学习之前,你应该对以下内容有基本的了解: HTML XML 基础 如果希望首先学习这些内容,请在本站的首页选择相应的教程。 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络的基于矢量</div> </li> <li><a href="/article/3336.htm" title="一个简单的java栈" target="_blank">一个简单的java栈</a> <span class="text-muted">luyulong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%A0%88/1.htm">栈</a> <div> public class MyStack { private long[] arr; private int top; public MyStack() { arr = new long[10]; top = -1; } public MyStack(int maxsize) { arr = new long[maxsize]; top </div> </li> <li><a href="/article/3463.htm" title="基础数据结构和算法八:Binary search" target="_blank">基础数据结构和算法八:Binary search</a> <span class="text-muted">sunwinner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/Binary+search/1.htm">Binary search</a> <div>Binary search needs an ordered array so that it can use array indexing to dramatically reduce the number of compares required for each search, using the classic and venerable binary search algori</div> </li> <li><a href="/article/3590.htm" title="12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!" target="_blank">12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!</a> <span class="text-muted">刘星宇</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int main(void) {     char buff[10];     memset(buff,0,sizeof(buff)); </div> </li> <li><a href="/article/3717.htm" title="ITeye 7月技术图书有奖试读获奖名单公布" target="_blank">ITeye 7月技术图书有奖试读获奖名单公布</a> <span class="text-muted">ITeye管理员</span> <a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a><a class="tag" taget="_blank" href="/search/ITeye/1.htm">ITeye</a><a class="tag" taget="_blank" href="/search/%E8%AF%95%E8%AF%BB/1.htm">试读</a> <div>ITeye携手人民邮电出版社图灵教育共同举办的7月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 7月试读活动回顾: http://webmaster.iteye.com/blog/2092746 本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀): 《Java性能优化权威指南》 </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>