- ExtJS4.0学习心得
☆平常心☆
学习笔记extjsfunctionheaderautoloadbordermvc
学习ExtJs4.0知识已有一个月的时间,结合模拟项目——资源池管理系统,谈一谈学习中碰到的问题,解决办法以及收获的经验,希望可以达到互相交流、学习、共成长的目的。ExtJs4.0不同于3.0版本的最重要改变是MVC模式的引入。本文也以MVC模式为切入点,开始介绍我的ExtJs4.0之旅。一、SSH框架搭建后台模拟项目采用了SSH搭建后台,数据库采用Oracle9i,前台可通过action将封装好
- Ext4.0学习笔记(4~9章 MVC、高级组件、布局以及图表)
guangneng521
WebTechnology测试uxjson
第四章MVC学习从这个图中我们可以很清楚的看到M、V、C在ExtJS4.0里面所对应数据类型。靠右边是对应的代码结构。下描述一下这model、store、view、controller以及application这几者之间的关系。(1)application:它是MVC的入口,用来告诉ExtJS到那里去找对应js文件以及启动加载controller与view连个模块的代码。//打开动态加载js功能E
- 使用EXtjs6.2构建web项目
weixin_30871701
开发工具javascript
使用EXtjs6.2构建web项目一、项目简介众所周知ext是一款非常强大的表格控件,尤其是里边的grid为用户提供了非常多的功能,现在主流的还是用extjs4.0—4.2,但是更高一点的版本更加符合人的审美要求。因此,在今天咱们构建一下ext6.2版本的web项目。二、项目准备ExtJS6.2GPL正式版下载地址:https://www.sencha.com/legal/gpl/下载完成之后项目
- Extjs的Requiers作用
王一洋
Javascriptweb前端技术
有的时候项目中要写一些扩展组件,随着扩展组件的增加,会造成有的页面需要使用,而有的页面不需要使用的问题,这对组件的js文件的引用造成了烦恼:如果每个页面都去引用的时候会造成浏览器打开页面的流量的增加而影响资源,如果需要的时候引用管理起来又很麻烦,Extjs4.0帮我们解决了这个问题,那就是Ext.requires。它可以实现根据我们的需要动态加在所需要的组件文件,很灵活也很方便。下面我们用例子进行
- Extjs4.0 之Ext.Class 属性详解 (alias/mixins /uses/requires/singleton等属性)
kunlong0909
Extjs
Ext.Class属性详解:1,alias:相当于别名一样,可以起多个,可以通过xtype和Ext.widget()创建实例:Js代码Ext.define('SimplePanel',{extend:'Ext.panel.Panel',alias:['widget.simplepanel_007','widget.simplepanel_008'],title:'Yeah!'});//通过Ext.
- 新书《Ext JS 4.2实战》即将出版
weixin_34149796
目录:第1章ExtJS4概述1.1从ExtJS4.0到4.071.2从4.1到4.1.1a1.3从4.2到4.2.11.4如何选择版本1.5基础知识1.5.1ExtJS的一些专用术语1.5.2一些常见的配置项1.5.3类的命名规则1.6关于调试1.7小结第2章ExtJS的MVC模式介绍2.1概述2.1.1MVC模式概述2.1.2ExtJS的MVC模式2.2组件查询的机制2.2.1组件管理器:Ext
- extjs4.0以上,tbar换行显示问题
javagys
Web前端
tbar:{xtype:"container",border:false,items:[{//tbar第一行工具栏xtype:"toolbar",items:[]},{//tbar第二行工具栏xtype:"toolbar",items:[]}]}items中写入需要分页的内容,每个{}为一行
- Extjs4.0 Demo
plf112233
技术框架extjs4框架布局
第一步先搭建可以Mian框架,用来作为整体的布局:Ext.create("Ext.panel.Panel",{alias:'widget.mainlayout',renderTo:Ext.getBody(),width:900,height:600,defaults:{split:true,bodyStyle:'padding1px'},layout:'border',//布局items:[{ti
- Ext JS4.0中Tabpanel动态添加和删除Tab和重用Tab的方法
志志
ExtJS
在ExtJS4.0中,Tabpanel动态添加Tab的方法是:vartab=myTabPanel.add(newTab);myTabPanel.setActiveTab(newTab);至于设置不设置为活动的,各人自己的想法。删除tab的方法有两种:第一种是删除指定Id的Tab,当然这个Id是添加Tab的时候自己指定的,删除的时候就用这个Id:myTabPanel.remove(tabid);或者
- Extjs4 之grid组件
weixin_33895695
grid表格是extjs的核心组件之一,它提供了展示大量数据的最佳途径。Grid组件的重要特性包括:智能渲染、标准布局、数据视图、特性支持、虚拟滚动和编辑改进,这些特性共同缔造了功能强大的4.0grid组件。智能渲染:在extjs4.0之前的版本中采用了‘最小公分母’的策略来支持各种丰富的特性,这种方式会对每一个表格产生大量的标签,而这些标签对于简单表格来说是不必要的,而在4.0中默认的表格只会产
- J2EE之 Extjs4.0 Grid 分页显示
兔子侠客
Extjs
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,拖拽改变列宽度,按列排序,这些基本功能ExtJS轻量级实现。自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功
- 使用extjs4.0实现动态列及分页
myairen1365
j2eestruts2extjsextgrid动态列jsonextjsExtJSgridjsonJSONJsonstruts2Struts2动态列
在做信息管理系统类项目时,用户有时需要实现表格的列头(列名字段)可以根据数据库返回的结果集不同而有不同的显示,包括字段名或者字段顺序。比如,同样是邮件列表,可以根据用户个人配置,显示“标题、发送时间、发送人”或者“发送时间、发送人、标题”又或者“标题、正文简介”等。这个时候,如何使用extjs自带的grid组件实现呢?首先,我们需要知道extjs的grid组件与后台程序之间传输数据一般使用json
- eclipse插件spket安装
women525
由于extjs4.0以后的版本都没有jsb文件,所以,安装方法详细写下:step1:下载插件,解压,将解压包里的eclipse文件夹下的features和plugins文件夹复制到eclipse文件夹中。step2:根据不同的版本找到相应的JSB文件,该文件一定要放在extjs4解压后的根目录下。如图:step3:启动Eclipse,依次进入Windows->Preferences->Spket-
- Extjs实现分页效果
雨中深巷的油纸伞
ExtJs
Extjs实现分页还是比较简单的,主要是这套流程弄明白就可以了。(Extjs4.0以后版本适用)首先js文件需要引入PagingMemoryProxy.jsExt.Loader.setConfig({enabled:true});Ext.Loader.setPath('Ext.ux','../../../Scripts/ExtJS/ux');Ext.require(['Ext.ux.pagingM
- ext4 学习笔记二
mer1234567
其他技术
第四章MVC学习从这个图中我们可以很清楚的看到M、V、C在ExtJS4.0里面所对应数据类型。靠右边是对应的代码结构。下描述一下这model、store、view、controller以及application这几者之间的关系。(1)application:它是MVC的入口,用来告诉ExtJS到那里去找对应js文件以及启动加载controller与view连个模块的代码。Js代码//打开动态加载j
- ExtJS4.0源代码分析--类系统之EventObject
tiandidapengniao
ExtJS4.0源代码分析
Ext.EventObject是对浏览器原生事件对象的封装。在JavaScript,事件分为三类:HTMLEvents,MouseEvents,UIEvents。HTMLEvents包括loadunloadselectchangesubmitresetresizescroll,MouseEvents包括*click*dblclick*mousedown*mouseup*mouseover*mous
- extjs mvc分层代码
yxlyxl
javascriptextjsextjsmvc分层代码javascript
楼主前段时间写了一个extjs4.0版本的mvc分层代码,这里记录一下备查文件层次结构:1、LtlSieveOrderApp.js代码如下:Ext.Loader.setConfig({enabled:true,disableCaching:false});Ext.application({name:'ltlsieveorder',controllers:['LtlSieveOrderControl
- Extjs-Combobox三级联动
小韩工作室
extjs
很多网友在问,Extjs4.0ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果。其中注意的一点就是,3.x中的model:'local'在Extjs4.0中用queryMode:'local'来表示,而且在3.x中Load数据时用reload,但是在extjs4.0中要使用load来获取数据。如下图:代码部分先看HTML代码:MHZG.NET
- Extjs实现在Ext.grid列鼠标悬浮显示图片
privateobject
Extjs4
在extgrid中动态显示图片的问题,使用鼠标移入事件和移出事件,extjs4.0测试通过使用grid的鼠标事件:itemmouseleave(Ext.view.Viewthis,Ext.data.Modelrecord,HTMLElementitem,Numberindex,Ext.EventObjecte,ObjecteOpts)选项的鼠标移开事件当鼠标移开选项时触发Parametersthi
- ExtJS 4正式版今天发布
上将军
JavaScriptextjs框架javascript浏览器工具frameworks
我很自豪能代表Sencha和ExtJS团队和大家成功的分享了ExtJS4的预览版、3个beta版和今天发布的正式版等5个版本。ExtJS4从创建之初,就以最全面现代化为目标,它采用了改进的架构和加入了许多新的特性,从而使你可以创建可靠的下一代网络应用程序。框架的每个部分几乎都已升级和优化,已充分利用当今的现代浏览器,同时兼容它们的前辈。下载ExtJS4.0阅读版本说明查看示例我们的社区我想花一点时
- Extjs4.0日历插件与项目整合的详细介绍(二)
Dream2World
Extjs4-0日历
之前已经细说过日历插件的其中一部分,接下来会对view目录下的文件进行详细的介绍,该目录下的文件多数是控制日历插件的展示的,比如显示到日历表上的div层,禁止可拖拽功能以及按照国内日历的习惯,一周从周一开始而不是周天等。1.AbstractCalendar.js该文件主要是为其他的view提供基础服务的抽象类。-控制表头中的一周从周一开始-通过确定开始日期来确定展示一周的日期范围:setStart
- Extjs4.0日历插件与项目整合的详细介绍
Dream2World
Extjs4-0日历
日历插件的calendar目录的src子目录结构介绍data目录是日历插件的数据集,示例中的数据集分为两类:1)calendar日历-CalendarMappings.js:给日历记录提供字段定义以便开发者可以覆盖,比如你的需求需要一些新的字段就可以直接按照它的格式在这继续定义,之所以将字段定义从model中分离出来应该是为了解耦和,方便开发者不至于每次在添加新的字段时都要手动的去重新配置reco
- Extjs4.0日历插件之环境搭建
Dream2World
4.0的日历插件使用环境:Extjs4.0官方提供的一个example下的calendar文件(该calendar文件下的都需要,原样复制到你的工程web目录下即可)...当你启动tomcat时,在网页输入该calendar下的index.html时发现网页什么也没有。正常。效果如下:再次刷新页面时并且解决完index.html中的上述两个文件的引入路径问题后,再次刷新页面后,发现报了一个十分重要
- Ext JS.4.0:动态加载和新的类系统(countDown of Extjs4.0: Dynamic Loading and New Class System)
Ripon
ExtJs4.0
今天,我们很高兴发布了一系列全新的功能在ExtJS4。在接下来的几个星期,我们将推出我们ExtJS的beta版本-包的包装。虽然我们原本计划推出一个完整的beta现在,有些部分的框架已经稳定较预期缓慢,所以我们将要推出的包,而不是增量。今天,我们开始全新的ExtJS的4类系统。JavaScript有没有它自己的类,它可以使一个陌生的环境,新的语言。ExtJS的一直提供自身的一类系统利用语言的强大的
- Extjs4.0 ComboBox如何实现三级联动
yangxiaojun9238
很多网友在问,Extjs4.0ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果。其中注意的一点就是,3.x中的model:'local'在Extjs4.0中用queryMode:'local'来表示,而且在3.x中Load数据时用reload,但是在extjs4.0中要使用load来获取数据。如下图:代码部分先看HTML代码:MHZG.NET
- (七)ExtJs之表单[Ext.form.FormPanel]的使用
fubo1990
ext表单ExtJsextjs4控件
今天我们来学习Ext中的FormPanel。Ext.form.FormPanel的别名有还有Ext.form.Panel和Ext.FormPanel,它们三个在ExtJs4.0以后就可以通用了。FormPanel的创建也是通过config配置的。那么我们来看看FormPanel可以配置的属性。接下来我领大家看一些比较常用的属性1.title是form控件的标题,类型为String2.width用来
- (六)ExtJs小例子之窗体组件(Window)
fubo1990
JavaScriptAjaxextExtJsextjs4
申明:今后我们将使用ExtJs4.0,以前学的3.0的技术还仍然可以使用,只是为了使用更多新技术我们换成使用4.0.点击下载4.0相关资源4.0和3.0引入文件发生了变化。下面是4.0需要引入的文件
1.今天我们学习窗体组件Ext.window.Window。今天我们就是简单认识该组件,在接下来的课程中我们会不断的使用该组件,并且更加深入学习Window组件。2.下面我们看一个简单的window
- (一)ExtJs学习前的准备工作,及第一个Ext小例子HelloWorld
fubo1990
helloworldextExtJs应用
本教程的制作是基于我从零开始学习ExtJs到正式在项目中应用的整个学习过程和方法,其中肯定会有许多不足之处,还请大家多多批评指正。1.先在网上下载ExtJs相关资源,我在(1-5节)用的是ExtJs3.0的版本 3.0下载,以后的我将用ExtJs.4.0,ExtJs4.0对3.0做了兼容处理。4.0下载2.解压下载的rar文件。解压后的文件打开如图所示:3.该文件复制到您的项目中,然后就可以使用E
- Extjs4.0 开发笔记
Extjs4.0
powered by 修改
在desktop.html中修改 <a href="#" target="_blank" alt="Powered by 曲阜师范大学"
&nb
- Extjs4.0 开发笔记-desktop 桌面菜单动态生成
Extjs4.0
extjs4.0 desktop 桌面菜单动态生成
ShortcutModel.js中多添加几个字段,以自己够使用为准:
Ext.define('Ext.ux.desktop.ShortcutModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name' },
{ n
- 基本数据类型和引用类型的初始值
3213213333332132
java基础
package com.array;
/**
* @Description 测试初始值
* @author FuJianyong
* 2015-1-22上午10:31:53
*/
public class ArrayTest {
ArrayTest at;
String str;
byte bt;
short s;
int i;
long
- 摘抄笔记--《编写高质量代码:改善Java程序的151个建议》
白糖_
高质量代码
记得3年前刚到公司,同桌同事见我无事可做就借我看《编写高质量代码:改善Java程序的151个建议》这本书,当时看了几页没上心就没研究了。到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀。
看完整本书,也记了不少笔记
- 【备忘】Django 常用命令及最佳实践
dongwei_6688
django
注意:本文基于 Django 1.8.2 版本
生成数据库迁移脚本(python 脚本)
python manage.py makemigrations polls
说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整
查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上):
python manage.p
- 阶乘算法之一N! 末尾有多少个零
周凡杨
java算法阶乘面试效率
&n
- spring注入servlet
g21121
Spring注入
传统的配置方法是无法将bean或属性直接注入到servlet中的,配置代理servlet亦比较麻烦,这里其实有比较简单的方法,其实就是在servlet的init()方法中加入要注入的内容:
ServletContext application = getServletContext();
WebApplicationContext wac = WebApplicationContextUtil
- Jenkins 命令行操作说明文档
510888780
centos
假设Jenkins的URL为http://22.11.140.38:9080/jenkins/
基本的格式为
java
基本的格式为
java -jar jenkins-cli.jar [-s JENKINS_URL] command [options][args]
下面具体介绍各个命令的作用及基本使用方法
1. &nb
- UnicodeBlock检测中文用法
布衣凌宇
UnicodeBlock
/** * 判断输入的是汉字 */ public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
- java下实现调用oracle的存储过程和函数
aijuans
javaorale
1.创建表:STOCK_PRICES
2.插入测试数据:
3.建立一个返回游标:
PKG_PUB_UTILS
4.创建和存储过程:P_GET_PRICE
5.创建函数:
6.JAVA调用存储过程返回结果集
JDBCoracle10G_INVO
- Velocity Toolbox
antlove
模板toolboxvelocity
velocity.VelocityUtil
package velocity;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.c
- JAVA正则表达式匹配基础
百合不是茶
java正则表达式的匹配
正则表达式;提高程序的性能,简化代码,提高代码的可读性,简化对字符串的操作
正则表达式的用途;
字符串的匹配
字符串的分割
字符串的查找
字符串的替换
正则表达式的验证语法
[a] //[]表示这个字符只出现一次 ,[a] 表示a只出现一
- 是否使用EL表达式的配置
bijian1013
jspweb.xmlELEasyTemplate
今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。
网
- 精通Oracle10编程SQL(1-3)PLSQL基础
bijian1013
oracle数据库plsql
--只包含执行部分的PL/SQL块
--set serveroutput off
begin
dbms_output.put_line('Hello,everyone!');
end;
select * from emp;
--包含定义部分和执行部分的PL/SQL块
declare
v_ename varchar2(5);
begin
select
- 【Nginx三】Nginx作为反向代理服务器
bit1129
nginx
Nginx一个常用的功能是作为代理服务器。代理服务器通常完成如下的功能:
接受客户端请求
将请求转发给被代理的服务器
从被代理的服务器获得响应结果
把响应结果返回给客户端
实例
本文把Nginx配置成一个简单的代理服务器
对于静态的html和图片,直接从Nginx获取
对于动态的页面,例如JSP或者Servlet,Nginx则将请求转发给Res
- Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin
blackproof
maven报错
转:http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin
maven报错:
Plugin execution not covered by lifecycle configuration:
- 发布docker程序到marathon
ronin47
docker 发布应用
1 发布docker程序到marathon 1.1 搭建私有docker registry 1.1.1 安装docker regisry
docker pull docker-registry
docker run -t -p 5000:5000 docker-registry
下载docker镜像并发布到私有registry
docker pull consol/tomcat-8.0
- java-57-用两个栈实现队列&&用两个队列实现一个栈
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/*
* Q 57 用两个栈实现队列
*/
public class QueueImplementByTwoStacks {
private Stack<Integer> stack1;
pr
- Nginx配置性能优化
cfyme
nginx
转载地址:http://blog.csdn.net/xifeijian/article/details/20956605
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必
- [JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术
comsci
java
对图形图像进行精确处理,需要大量的数学工具,即使是从底层硬件模拟层开始设计,也离不开大量的数学工具包,因为我认为,JAVA语言体系在图形图像处理模块上面的研发工作,需要从开发一些基础的,类似实时数学函数构造器和解析器的软件包入手,而不是急于利用第三方代码工具来实现一个不严格的图形图像处理软件......
&nb
- MonkeyRunner的使用
dai_lm
androidMonkeyRunner
要使用MonkeyRunner,就要学习使用Python,哎
先抄一段官方doc里的代码
作用是启动一个程序(应该是启动程序默认的Activity),然后按MENU键,并截屏
# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRun
- Hadoop-- 海量文件的分布式计算处理方案
datamachine
mapreducehadoop分布式计算
csdn的一个关于hadoop的分布式处理方案,存档。
原帖:http://blog.csdn.net/calvinxiu/article/details/1506112。
Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同ja
- 以資料庫驗證登入
dcj3sjt126com
yii
以資料庫驗證登入
由於 Yii 內定的原始框架程式, 採用綁定在UserIdentity.php 的 demo 與 admin 帳號密碼: public function authenticate() { $users=array( &nbs
- github做webhooks:[2]php版本自动触发更新
dcj3sjt126com
githubgitwebhooks
上次已经说过了如何在github控制面板做查看url的返回信息了。这次就到了直接贴钩子代码的时候了。
工具/原料
git
github
方法/步骤
在github的setting里面的webhooks里把我们的url地址填进去。
钩子更新的代码如下: error_reportin
- Eos开发常用表达式
蕃薯耀
Eos开发Eos入门Eos开发常用表达式
Eos开发常用表达式
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2014年8月18日 15:03:35 星期一
&
- SpringSecurity3.X--SpEL 表达式
hanqunfeng
SpringSecurity
使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在<http>配置元素上添加 use-expressions 属性:
<http auto-config="true" use-expressions="true">
这样就会在投票器中自动增加一个投票器:org.springframework
- Redis vs Memcache
IXHONG
redis
1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3. Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Red
- Python - 装饰器使用过程中的误区解读
kvhur
JavaScriptjqueryhtml5css
大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, Cache等。
原文链接:http://www.gbtags.com/gb/share/5563.htm
Python语言本身提供了装饰器语法(@),典型的装饰器实现如下:
@function_wrapper
de
- 架构师之mybatis-----update 带case when 针对多种情况更新
nannan408
case when
1.前言.
如题.
2. 代码.
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="list" index=&
- Algorithm算法视频教程
栏目记者
Algorithm算法
课程:Algorithm算法视频教程
百度网盘下载地址: http://pan.baidu.com/s/1qWFjjQW 密码: 2mji
程序写的好不好,还得看算法屌不屌!Algorithm算法博大精深。
一、课程内容:
课时1、算法的基本概念 + Sequential search
课时2、Binary search
课时3、Hash table
课时4、Algor
- C语言算法之冒泡排序
qiufeihu
c算法
任意输入10个数字由小到大进行排序。
代码:
#include <stdio.h>
int main()
{
int i,j,t,a[11]; /*定义变量及数组为基本类型*/
for(i = 1;i < 11;i++){
scanf("%d",&a[i]); /*从键盘中输入10个数*/
}
for
- JSP异常处理
wyzuomumu
Webjsp
1.在可能发生异常的网页中通过指令将HTTP请求转发给另一个专门处理异常的网页中:
<%@ page errorPage="errors.jsp"%>
2.在处理异常的网页中做如下声明:
errors.jsp:
<%@ page isErrorPage="true"%>,这样设置完后就可以在网页中直接访问exc