精华内容
下载资源
问答
  • Discuz 二次开发 () 目录结构和运行逻辑 目录结构 DISCUZ使用自己的框架,与现在主流的web框架不同,DISCUZ没有路由表,他的路由是由入口文件来实现的。 api uc.php UCenter 通信文件 /api/addons 应用中心 /...

    Discuz 二次开发 (一) 目录结构和运行逻辑

    目录结构

    DISCUZ使用自己的框架,与现在主流的web框架不同,DISCUZ没有路由表,他的路由是由入口文件来实现的。

    • api

      • uc.php UCenter 通信文件
      • /api/addons 应用中心
      • /api/connect 通讯互联
      • /api/google Google引擎结构处理
      • /api/javascript 数据和广告的js调用
      • /api/manyou manyou应用及搜索等相关服务
      • /api/remote 远程更新
      • /api/trade 支付宝、财付通等交易接口
    • archiver (论坛Archiver静态化目录)

    • config

      • config_global.php 论坛核心参数配置文件
      • config_ucenter.php UCenter核心参数配置文件
    • data (论坛数据缓存目录)

    • install (论坛安装目录(初始化运行时直接请求到此处将重新安装论坛))

    • source (程序后端功能处理目录)

      • discuz_version.php 程序版本号文件

      • /source/admincp 后台管理

      • /source/archiver 论坛archiver静态化程序目录

      • /source/class 核心类库

      • /source/function discuzX自定义函数库

      • /source/include 程序功能组件目录

      • /source/language 程序语言包(kv结构)

      • /source/module 程序功能模块程序包

      • /source/plugins 插件扩展目录

    • static (程序资源目录(头像、图片、下载文件、js文件等等))

    • template (前端模板目录)

      • /default/common 基础css文件、header、footer等公共引入文件

      • /default/collage 大学计划页面

      • /default/dige dige专区页面

      • /default/forum 首页、帖子页面

      • /default/member 会员页面

      • /default/home 家园页面

      • /default/group 群组页面

      • /default/mobile 移动端页面

      • /default/portal 文章页面

      • /default/search 搜索页面

    • uc_client (UCenter客户端)

      • /uc_client/control UC业务处理操作类

      • /uc_client/data 缓存文件目录

      • /uc_client/lib 类库目录(包括数据库操作类,XML类,UCCODE类,邮件发送类)

      • /uc_client/model UC业务模型类

    • uc_server (UCenter服务端 后台ucenter功能实现目录)

    • 根目录文件

      • admin.php 后台入口文件
      • api.php API输出 入口文件
      • collage.php 大学计划入口文件
      • composer.json composer依赖版本记录文件
      • composer.lock composer依赖版本控制文件
      • connect.php 云平台接口文件
      • dige.php dige专区入口文件
      • forum.php 帖子信息入口文件
      • group.php 群组入口文件
      • home.php 家园入口文件
      • index.php 首页
      • member.php 用户入口文件(登录、注册、退出等)
      • misc.php 程序杂项扩展入口
      • plugin.php 插件入口文件
      • portal.php 门户入口文件
      • robots.txt 搜索引擎限制文件
      • search.php 搜索频道入口文件

    2. 运行逻辑

    discuz的入口文件起到了路由的作用。一个标准的discuz请求如下:

    http://localhost/home.php?mod=space&uid=1&do=profile
    
    1. 当在浏览器输入以上url时,首先执行的是跟目录下的 home.php 文件

      <?php
      
      define('APPTYPEID', 1);
      define('CURSCRIPT', 'home');
      
      if(!empty($_GET['mod']) && ($_GET['mod'] == 'misc' || $_GET['mod'] == 'invite')) {
      	define('ALLOWGUEST', 1);
      }
      
      require_once './source/class/class_core.php';  //引入核心类文件,作用为:自动引入类规则,错误和异常处理,单例创建discuz_application类实例,引入默认函数库function.core.php
      require_once './source/function/function_home.php';  //引入discuzX函数库
      
      $discuz = C::app();  //实例化discuz_application类
      $cachelist = array('magic','usergroups', 'diytemplatenamehome','forumlinks','identity'); //加身份组缓存
      $discuz->cachelist = $cachelist; //设置缓存列表
      $discuz->init();  //初始化应用:数据库、系统设置、用户、session、任务、等(discuz_appication类里面)
      $space = array();
      
      $mod = getgpc('mod'); //接收$_GET['mod']数据
      if(!in_array($mod, array('space', 'spacecp', 'misc', 'magic', 'editor', 'invite', 'task', 'medal', 'rss', 'follow'))) {
      	$mod = 'space';
      	$_GET['do'] = 'home';
      }
      
      if($mod == 'space' && ((empty($_GET['do']) || $_GET['do'] == 'index') && ($_G['inajax']))) {
      	$_GET['do'] = 'profile';
      }
      $curmod = !empty($_G['setting']['followstatus']) && (empty($_GET['diy']) && empty($_GET['do']) && $mod == 'space' || $_GET['do'] == 'follow') ? 'follow' : $mod;
      define('CURMODULE', $curmod);
      runhooks($_GET['do'] == 'profile' && $_G['inajax'] ? 'card' : $_GET['do']);
      require_once libfile('home/'.$mod, 'module');  //根据请求时传的mod参数经由上方判断确定加载对应文件
      
      ?>
      

      : libfile()函数在会将对应的模块字符串替换为模块的实际url。
      libfile('home/'.$mod, 'module')的实际访问地址是 /source/module/home/$mod.php

    2. 进入到/source/module/home/home_space.php 文件中 根据请求参数 uid和do的值判断具体的执行过程,有些时候会直接引入响应的程序组件完成逻辑处理(这里引入了 /include/space/space_profile.php)

    3. 在 space_profile.php中判断运行之后输出到模板文件**/template/default/home/space_profile.htm** 中。
      :template()函数在 核心函数库 function_core.php 中 用于加载当前使用模板的模板文件 。根据传参此时加载了 /template/default/home/space_profile.htm 文件

    4. 在模板文件space_profile.htm中 可以直接使用php文件中的数据变量进行赋值渲染输出到浏览器。
      :template模板语法不赘述 详见 模板语法

    展开全文
  • 一次写入,多次读取,开销最小的进制结构化文件格式。 Flatdata是一个提供数据结构的库,用于以最小的开销方便地创建,存储访问打包的内存可映射结构。 使用flatdata ,用户可以使用一种非常简单的模式语言来...
  • 为了解决结构多损伤下的位置识别损伤程度的判定问题,将测量位移频率用于结构的损伤检测研究,并提出了种分阶段的二次损伤识别方法。首先考虑测量位移数据量多且包含信息量较大的特点,利用测量的位移数据进行...
  • 1017: 【顺序结构】一元二次方程 时间限制: 1 Sec 内存限制: 128 MB 提交: 498 解决: 228 题目描述 解一元二次方程ax^2+bx+c=0的解。 输入 a,b,c的值。 输出 两个根X1X2 提示:一元二次方程的两个根为x1=(-b+sqrt...

    1017: 【顺序结构】一元二次方程

    时间限制: 1 Sec 内存限制: 128 MB
    提交: 498 解决: 228
    题目描述
    解一元二次方程ax^2+bx+c=0的解。
    输入
    a,b,c的值。
    输出
    两个根X1和X2
    提示:一元二次方程的两个根为x1=(-b+sqrt(bb-4ac) )/(2a); x2=(-b-sqrt(bb-4ac) )/(2a);
    结果保留两位小数
    样例输入
    1 5 -2
    样例输出
    0.37 -5.37
    提示
    本题数据一定有两个实根,不存在无解的情况

    满分AC代码

    #include<cstdio>
    #include<cmath>
    using namespace std;
    int main()
    {
        double a,b,c,d;
        scanf("%lf %lf %lf",&a,&b,&c);
        d=sqrt(b*b-4*a*c);
        printf("%.2lf %.2lf",(d-b)/(2.0*a),(-b-d)/(2.0*a));
        return 0;
    }
    
    
    展开全文
  • java二次开发源码Culvert:个强大的二级索引框架 二级索引是类似 BigTable 的数据库中的种常见设计模式,它允许用户对表中的个或多个列进行索引。 这种技术可以根据特定列而不是行 id 快速搜索数据库中的记录...
  •  现在国内外关于开放式控制系统的研究和示范应用都着眼于PC机的软硬件开发,其实质就是PC机在I/0接口和人机交互界面上的个专门应用(参见图1),在结构和性能上都存在很大局限性:首先,没有定义独立的适合于数控...
  • 用进化规划与逐步二次规划来实现前馈神经网络的结构优化问题 ,并提出了个相应的学习算法 .针对进化规划与逐步二次规划各自的特点 ,进行了组合 ,使算法不仅具有随机全局...
  • 研究一次和二次烧成对CaO-B2O3-SiC2(CBS)微晶玻璃的烧结性能与介电性能的影响。用X线衍射(XRD)、扫描电镜(SEM)等分析探讨二次烧成对CBS微晶玻璃的微观结构与介电性能的关系。结果表明:与一次烧成相比,二次烧...
  • public class Math { public static int initData = 666; public static UserEntity user = UserEntity(); public int compute() { int a = 1; int b = 2; int c = (a + b) *10; ...}
  • #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; typedef struct Node{ float coef;...//根据多项式各项的系数指数建立链表,返回头指针 Node * Create(int n) { Node *head,*s,...
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Node{
    	float coef;   //系数
    	int exp;    //指数
    	struct Node *next;
    }Node;
    //根据多项式各项的系数和指数建立链表,返回头指针
    Node * Create(int n)
    {
    	Node *head,*s,*rear;
    	int i;
    	head=(Node *)malloc(sizeof(Node));
    	head->next=NULL;
    	rear=head;
    	for(i=1;i<=n;i++)
    	{
    		s=(Node *)malloc(sizeof(Node));
    		printf("输入第%d项的系数和指数:",i);
    		scanf("%f %d",&s->coef,&s->exp);
    		rear->next=s;
    		rear=s;
    	}
    	rear->next=NULL;
    	return head;
    }
    
    //输出链表中的数据元素
    void display(Node *head)
    {
    	Node *p;
    	p=head->next;
    	while(p)
    	{
    		printf("(%.1f,%d)",p->coef,p->exp);
    		p=p->next;
    	}
    	printf("\n");
    }
    
    //两个多项式相加,返回和多项式链表的头指针
    Node *addPolyn(Node *head1,Node *head2)
    {
    	Node *p,*q,*head,*rear,*s;
    	int temp;
    	float sum;
    	p=head1->next;
    	q=head2->next;
    	head=(Node *)malloc(sizeof(Node));
    	rear=head;
    	while(p&&q)
    	{
    		if(p->exp==q->exp)
    			temp=0;
    		else if(p->exp<q->exp)
    			temp=1;
    		else
    			temp=-1;
    		switch(temp)
    		{
    		case 0:
    			{
    				sum=p->coef+q->coef;
    				if(sum!=0.0)
    				{
    					s=(Node *)malloc(sizeof(Node));
    					s->coef=sum;
    					s->exp=p->exp;
    					rear->next=s;
    					rear=s;
    				}
    				p=p->next;
    				q=q->next;
    				break;
    			}
    		case 1:
    			{
    				s=(Node *)malloc(sizeof(Node));
    				s->coef=p->coef;
    				s->exp=p->exp;
    				rear->next=s;
    				rear=s;
    				p=p->next;
    				break;
    			}
    		case -1:
    			{
    				s=(Node *)malloc(sizeof(Node));
    				s->coef=q->coef;
    				s->exp=q->exp;
    				rear->next=s;
    				rear=s;
    				q=q->next;
    				break;
    			}
    		}
    	}
    	while(p)
    	{
    		s=(Node *)malloc(sizeof(Node));
    		s->coef=p->coef;
    		s->exp=p->exp;
    		rear->next=s;
    		rear=s;
    		p=p->next;
    	}
    	while(q)
    	{
    		s=(Node *)malloc(sizeof(Node));
    		s->coef=q->coef;
    		s->exp=q->exp;
    		rear->next=s;
    		rear=s;
    		q=q->next;
    	}
    	rear->next=NULL;
    	return head;
    }
    
    void main()
    {
    	Node *h1,*h2,*h;
    	int m,n;
    	printf("输入第一个多项式的项数:\n");
    	scanf("%d",&m);
    	h1=Create(m);
    	display(h1);
    	printf("输入第二个多项式的项数:\n");
    	scanf("%d",&n);
    	h2=Create(n);
    	display(h2);
    	printf("输出和多项式的系数和指数:\n");
    	h=addPolyn(h1,h2);
    	display(h);
    }
    

    在这里插入图片描述

    展开全文
  • 、数据为中心的体系结构风格 1、注册表:注册表中保存着所有硬件软件配置信息;...、仓库体系结构风格 仓库是存储维护数据的中心场所 eg:数据库,SDK工具包等等。 依据此思想,产生了仓库形式的...

    一、数据为中心的体系结构风格
    1、注册表:注册表中保存着所有硬件和软件配置信息;注册表信息影响或控制系统、应用、软件的行为。期初。硬件与软件的配置信息均被各自保存在一个.ini的配置文件中,散落在系统的各个角落。后来,引入注册表思想,将所有的.ini的文件集中起来。
    在这里插入图片描述
    2、剪贴板
    在这里插入图片描述

    二、仓库体系结构风格
    仓库是存储和维护数据的中心场所
    eg:数据库,SDK工具包等等。
    依据此思想,产生了仓库形式的编译器结构;基于仓库风格的软件研发环境等等。

    三、黑板体系结构风格
    适用于解决此类问题:一个大问题需要被分解成若干个小问题,每个小问题的解决需要不同的问题表达方式和求解模型,分别设计求解程序。例如:基于黑板数据结构的拼图游戏。
    在这里插入图片描述
    黑板体系结构风格一般包含以下几种:知识源、控制器等
    在这里插入图片描述
    应用实例:人工智能、语音助手等。


    二、软件体系结构——虚拟机风格
    1、虚拟机风格:
    Interpreters(解释器)
    Rule-based systems(规则系统)
    Other
    优势:可以模拟非本机功能、可以模拟灾难模型、灵活性
    劣势:比硬件和编译系统慢

    *规则系统的特征:*知识库中的代码;解释器引擎;解释器的状态控制,代码当前的状态(工作内存)。

    复杂规则系统示例如图:
    复杂规则系统的示例
    实际的规则引擎例子:www.jboss.org/drools/

    展开全文
  • 通过对维光子晶格中空间二次谐波的数值模拟理论计算,证明了空间二次谐波的产生是晶格结构发生改变的主要原因。实验表明,通过控制空间二次谐波的产生情况可以有效地改变写入光子晶格的内部结构
  • BUAA 2019 数据结构二次上机

    千次阅读 2020-07-19 16:38:15
    BUAA 2019 数据结构二次上机 这次作业可以用结构体的qsort,不了解的可以参考这篇博文: https://blog.csdn.net/qq_43803508/article/details/103977546 当然不用也是完全可以的 1 五子棋危险判断 【问题描述】 ...
  • 为了研究结构二次振动的振动特点及发生机理,建立了理论...结合工程实际,通过数值模拟分析了栋7层框架结构分别在高架路、地铁轻轨交通诱发地面振动激励下的二次振动响应,验证了提出的理论模型分析的正确性。
  • 然后再对溅射过金属的负模上浇铸PDMS并固化以进行二次倒模,最后对二次倒模出的PDMS微流体结构表面粘连、结构完整性、尺寸等进行观测,从而通过比较得到倒模溅射所需的最佳金属溅射金属薄膜的最优厚度。此方法倒出的...
  • 编写个C语言程序,计算一元二次方程ax^2+bx+c=0的实数根。要求从键盘输入a,bc,然后再输出解方程的结果。 代码如下: #include<stdio.h> #include<math.h> void main() { float a,b,c,d; printf(...
  • 为缓解FTSA( feedback-based two-...该结构通过二次反馈接力调度模式,以多反馈一次N位缓存信息的代价拓展了调度算法的时域空间(N为交换端口数).理论分析表明:在相同条件下,DFTS的时延性能与FTSA的理论性能是一致的.
  • 软件体系结构的第二次实验(解释器风格与管道过滤器风格) 、实验目的 1.熟悉体系结构的风格的概念 2.理解应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件: 软件...
  • 通过对原电力二次系统安全问题、安全分区及防护总体方案框架结构等安全需求进行分析,提出了种改进的主动安全防御摸型,构建了种新的电力二次系统主动安全防御体系结构,给出了具体的部署实现方式。通过摸拟测试...
  • <1>程序文件目录介绍:app – 应用目录 ...我们简单的页面二次开发主要还是关注staticviews这两个文件。 下面在介绍一下这个文件里面对应的目录功能 static里面文件分别是: admin: 后台控制面板...
  • ecshop二次开发手册【基本结构

    千次阅读 2016-07-28 19:59:12
    ecshop二次开发手册【基本结构】   【基本熟悉】 ECShop二次开发指南,二次开发必须知道的基础知识,二次开发手册   前言:ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示、购物流程强大易用的...
  • 有这样个需求,当客户输入卡号,查询出客户的金额,如果金客大于等于1000,提示询问客户是否对帐,如果客户选择对帐,就改对客户数据进行对帐操作(其实就是改丢这个客户的对帐标志),前提是在B/S架构下实现这个...
  • 根据输入的目标串模式串,输出模式串在目标串的所有出现位置。如输入目标串为“123abc456abc789abc”,模式串为“abc”,则输出的所有位置应为3,9,15. #include <iostream> #include<string> #...
  • 2. 编写个程序linklist.cpp,实现单链表的各种基本运算整体建表运算(假设单链表的元素类型为char),并在此基础上设计个程序exp2-2.cpp完成以下功能: (1)初始化单链表h; (2)采用尾插法依次插入元素a...
  • PTA数据结构 7-1 求最小值和次小值 ...对每组输入,在行中输出最小值和次小值,中间以个空格分隔,但行尾没有多余空格。如果输入数据不足两个,则输出“Invalid Input”。如果没有小值,则输出“There is no s
  • 针对线结构光自身分布不均匀且易受环境影响的问题,提出了种基于二次平滑算法的线结构光中心线提取方法。首先对采集的图像进行感兴趣区域裁剪以减少激光条纹中心线提取的计算量;然后用灰度重心法提取激光条纹中心线...
  • 前言:随着设计水平及机械...意义重大,水泵的能耗比例已经成为一个比较重要的部分,下面看看数据中心机柜水冷系统中一次和二次泵孰优孰劣?什么是一次泵系统二次泵系统?在冷源侧和负荷侧合用一组循环泵的称为一次
  • 数据结构实验报告 1 实验要求 1实验目的 通过选择下面 5 个题目之进行实现掌握如下内容 掌握图基本操作的实现方法 了解最小生成树的思想相关概念 了解最短路径的思想相关概念 学习使用图解决实际问题的能力 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,010
精华内容 3,604
关键字:

一次结构和二次结构