原理

joomla mvc架构, 原理

走远了吗. 提交于 2020-04-07 12:29:47
component基本结构与访问方式 如访问:http://example.com/index.php?option=com_ helloworld Joomla将定位到:/components/com_ helloworld ,并且加载里面的 helloworld .php helloworld .php的工作就是加载相应的 controller ,继而调用相应的 view 含view, task的访问方式 如访问:http://domain.com/index.php?option= com_helloworld &view= helloworld &task= display &layout= default joomla将定位到:看下面标红的,其实是先定位到 helloworld .php,然后调实例化 HelloWorldController,并调用指定的task方法,此处为display,在display里再去实例化 HelloWorldViewHelloWorld 类,继而调用其display方法。所以此处可以说直接定位到 components/com_helloworld/views/helloworld/view.html.php 注意这里的view和task不是必须的,但按以下默认规则: task 默认值:display 通过

PHP 模板引擎SMARTY 原理

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-16 11:55:12
某厂面试归来,发现自己落伍了!>>> 一、MVC需要模板 MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了"模型"、"视图"和"控制",目的就是让不同的开发角色在大中型项目中各司其职。在网络应用程序的开发中,可以用下图来表示各概念之间的关系。 该图展示了一个简单的WEB应用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了应用服务器加工。开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。 96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着网络的一步步提速,页面大小也从当初的二、三十K暴涨了十倍。写CGI程序就产生了一个迫切的要求:分开PERL和HTML源码。于是,社会进步体现在开发小组内部的分工上。由于美工和程序员对互相的工作并不是十分熟悉,在进行合作的过程中需要用一种约定的"语言"进行交流。 这种语言并不是我们的母语或者英语,术语叫做"模板",逻辑和表示依靠它联系。它是结合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可以按照用户所希望的格式来显示经过逻辑层处理过的数据。如果你有Windows平台下MFC的开发经验,那么一定会很熟悉Document/Document Template/View的封装

ArrayList工作原理

泪湿孤枕 提交于 2020-02-29 14:40:17
1.前言 List接口中,重要的两个实现是ArrayList和LinkedList,其中ArrayList又比LinkedList常用。这是因为ArrayList的读取性能远远高于LinkedList。本篇博文将介绍ArrayList,稍后介绍LinkedList及其两者的区别。 2.ArrayList简介 2.1 ArrayList是什么 Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface,this class provides methods to manipulate the size of the array that is used internally to store the list. ArrayList是实现了List接口的、大小可变的数组队列 。能够实现所有List接口的可选操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)--

Jetty源码学习4-基本架构与工作原理

孤者浪人 提交于 2019-12-18 23:43:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引言 Jetty相较于Tomcat更加轻便,虽然架构更加简单,但是看起来可并不轻松。Spring是设计初衷是用来管理应用中的实例Bean,因而是基于Bean的架构;Jetty则更倾向于流程和组件的管理,采用了基于handler的架构。handler的嵌套和链式结构,LifeCycle和doStart、doHandler模式无不印证了这点。 本文主要从基本架构、LifeCycle结构、Handler体系结构、Jetty启动过程、接受并处理请求的流程和与Tomcat的比较来简要介绍下Jetty,细节部分后面的博文会有分析。 Jetty的基本架构 前面的博文谈及应用服务期的架构已经说过了几个基本模块的概念,connection、Threadpool等~拷贝了 许令波 画的图(文中关于基本架构的描述挺详细的,参考了其目录结构哈~不过对于有些知识点有自己的看法,因此总结该文): 该博文中谈到“ Jetty 中还有一些可有可无的组件,我们可以在它上做扩展。如 JMX,我们可以定义一些 Mbean 把它加到 Server 中,当 Server 启动的时候,这些 Bean 就会一起工作。 ”我的理解是,Jetty中的JMX是提供给server的Container,使得注册到server的Handler同时注册到JMX上

关于PriorityQueue 二叉堆的问题

こ雲淡風輕ζ 提交于 2019-12-14 21:50:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 场景:最近在研究java中的队列,当研究到优先队列的时候去读 PriorityQueue的源码的时候发现一种数据结构,我数据结构这块基本上上是空白,所以让我晦涩难懂啊,于是我查阅了大量资料以及手动书写程序代码测试后,终于搞懂了这种数据结构交二叉堆,其实堆就是一个数组,只不过用数组的结构来存储一颗近似二叉树 呵呵,闲话少叙,看我上代码 有关资料: 堆(数据结构) 二叉堆 堆排序 看我演示代码: package test.queue; import java.util.PriorityQueue; import java.util.Queue; /** * Author: skyline{http://my.oschina.net/skyline520} * Created: 13-6-1 上午8:07 */ public class TestQueue { public void printPriorityQueue(){ Queue<Integer> priorityQueue = new PriorityQueue<Integer>(); priorityQueue.add(1); priorityQueue.add(9); priorityQueue.add(3); priorityQueue.add(8)

android IPC及原理简介

末鹿安然 提交于 2019-12-13 11:39:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是Android操作系统,所谓的Android:是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance)开发。 Linux系统中进程间通信的方式有:socket, named pipe,message queque, signal,share memory。Java系统中的进程间通信方式有socket, named pipe等。android应用程序理所当然可以应用JAVA的IPC机制实现进程间的通信, 取而代之的是Binder通信。Google为什么要采用这种方式呢,这取决于Binder通信方式的高效率。 Binder通信是通过linux的binder driver来实现的。Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回。 Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。Android中的Binder通信是基于Service与Client的,所有需要IBinder通信的进程都必须创建一个IBinder接口。

(转载)Hive学习笔记--Hive 原理

旧街凉风 提交于 2019-12-09 22:47:27
第一部分:Hive原理 为什么要学习 Hive 的原理 •一条Hive HQL将转换为多少道MR作业 •怎么样加快Hive的执行速度 •编写Hive HQL的时候我们可以做什么 •Hive 怎么将HQL转换为MR作业 •Hive会采用什么样的优化方式 Hive 架构 & 执行流程 Hive 执行流程 •编译器将一个Hive QL转换操作符 •操作符是Hive的最小的处理单元 •每个操作符代表HDFS的一个操作或者一道MapReduce作业 Operator •Operator都是hive定义的一个处理过程 •Operator都定义有: •protected List <Operator<? extends Serializable >> childOperators; •protected List <Operator<? extends Serializable >> parentOperators; •protected boolean done; // 初始化值为false •所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作 Hive 执行流程 操作符 描述 TableScanOperator 扫描hive表数据 ReduceSinkOperator 创建将发送到Reducer端的<Key,Value

关于WordPress建站的原理二三事

﹥>﹥吖頭↗ 提交于 2019-12-06 19:48:53
在写关于仿站文章详情页如何制作之前,我觉得有必要就一些原理性的问题,做一些说明。文章详情页的核心模块和首页有很多相似的地方,比如调用文章的标题、文章的内容、文章分类、作者等,实现起来都差不多,因此,了解了首页制作的基本原理,文章详情页的制作就不是很困难了。   在报告(二)中,我更多的是记录制作的过程,很少有说到背后的原理,用到的WP函数都是什么意思呢?我一开始在第一次做的时候也不理解,@筑梦百科逍棽客老师给我的回答是,你先看看怎么用,在用的过程中慢慢理解了基本原理,然后再去找相关函数的字典去查查意思和更多的其他用法会比较好一点。以下是我想说的关于我理解中的WP 网站建设 。有错误的地方希望指正包涵。    1.WordPress建站,其实就是WP的主题开发。   主题是放在\wp-content\themes里头自己命名的独立文件夹,里面放置主题要的所有文件,包括首页、详情页以及其他各种php页面文件、CSS文件、JS文件、图片、以及功能函数文件等。这些文件都是根据你的主题复杂性而不同的。我觉得主题的好处就是,你可以自由选择启用或者停用,可以用WP开发不同的主题,主题之间独立存在不会相互影响到。    2.WP主题开发核心是如何将静态html文件转化成动态php文件。   即静态的html与WP的后台管理系统联系起来,实现内容的动态更新。如何实现呢?就是将原本html中静态的内容

IE zoom:1 原理 以及应用

吃可爱长大的小学妹 提交于 2019-12-04 19:36:19
IE zoom:1 原理 zoom: 1 是为了 IE 早期的浏览器,有 layout 的毛病,所以用 zoom: 1 代表这个 div 是有高度宽度的 效果跟 overflow: hidden 可以装载浮动物件一样 我们经常在调试浏览器兼容的过程中,经常会用到zoom:1。 _zoom是CSS hack中专对IE6起作用的部分。IE6浏览器会执行zoom:1表示对象的缩放比例,但这里 overflow:hidden;和_zoom:1;是连起来用的,作用是清除border内部浮动。 同理,还可以使用同样方法清除margin属性在IE浏览器中的重叠问题。 触发IE浏览器的haslayout 解决ie下的浮动,margin重叠等一些问题。 5、检查 IE 下是否触发 haslayout 很多的 IE 下复杂 CSS BUG 都与 IE 特有的 haslayout 息息相关。熟悉和理解 haslayout 对于处理复杂的 CSS BUG 会事半功倍。推荐阅读 old9 翻译的 《On having layout》(如果无法翻越穿越伟大的 GFW,可阅读 蓝色上的转帖 ) 快捷提示:如果触发了 haslayout,IE 的调试工具 IE Developer Toolbar 中的属性中将会显示 haslayout 值为 -1 IE 里面的hasLayout 大家都知道IE6之支持<a>标签的

页面渲染深入解析

♀尐吖头ヾ 提交于 2019-12-04 14:59:22
基本渲染过程 用户请求的资源通过浏览器的网络层到达渲染引擎后,渲染工作开始。每次渲染文档通常不会超过8K的数据块,其中基础的渲染过程如下图所示: 第一步: 渲染引擎首先解析HTML文档,转换为一棵DOM树; 第二步:接下来不管是内联式,外联式还是嵌入式引入的CSS样式也会被解析,渲染出另 外一棵用于渲染DOM树的树-渲染树(render tree) ,渲染树包含带有颜色,尺寸等显示属性的矩形,这些矩形的顺序与显示顺序一致; 第三步:然后就是对渲染树的每个节点进行布局处理,确定其在屏幕上的显示位置; 第四步: 就是遍历渲染树并用UI后端层将每一个节点绘制出来。 以上步骤是一个渐进的过程,为了提高用户体验,渲染引擎试图尽可能快的把结果显示给最终用户。它不会等到所有HTML都被解析完才创建并布局渲染树。它会在从网络层获取文档内容的同时把已经接收到的局部内容先展示出来。 不同渲染引擎具体不同的渲染流程 上面只是介绍了渲染引擎一般的处理流程,针对不同的渲染引擎具体步骤可能有所不同,就拿常见的webkit跟gecko来说吧。 首先是webkit的详细渲染流程: 火狐等浏览器的gecko渲染流程: 从上面两幅图可以看出,尽管两者使用了不同的“专业术语”,但是从图上可以看出,两者的渲染过程可谓大同小异,正是于此,我们可以再把具体的过程统一分离出来。 优化css部分 那么如何写出高效的css代码呢