当前位置:  编程技术>综合
本页文章导读:
    ▪c++空白基类最优化(EBO或EBCO)      对于c++中的一个空类  class X { };  事实上并不是空的,sizeof(X)并不等于0, 一般的结果是1。每个X的对象都有一个隐晦的1 bytes,是被编译器安插进去的一个char,这样可以使得这个cl.........
    ▪Extjs--界面基本结构      这几天应新公司要求,开始学习Extjs,然后试着做了一个界面。 目前界面的需求已经都完成了,但是还有很多地方不是很清楚,特地记录学习一下。 写JS页面的时候比较痛苦,很多都忘记了.........
    ▪计算理论重点——Theory of Computation      一个学期的计算理论课程已经结束,给我的感觉吧,计算理论是一门计算机不得不学,学了短期又没用,但是可以培养一些逻辑思维的课程。其最关注的问题是什么是可计算性,什么问题可计.........

[1]c++空白基类最优化(EBO或EBCO)
    来源: 互联网  发布时间: 2013-11-10

对于c++中的一个空类 

class X
{
}; 

事实上并不是空的,sizeof(X)并不等于0, 一般的结果是1。每个X的对象都有一个隐晦的1 bytes,是被编译器安插进去的一个char,这样可以使得这个class的两个objects在内存中配置独一无二的地址。

当X作为另一个类的成员时,如:

class A
{
public:
    X x;
    int a;
};

由于X占一个字节,int占4个字节,再加上编译器的alignment调整,sizeof(Y) = 8。

但是当一个类继承X时:

class Y : public X
{
public:
    int a;
};

这时大部分编译器对于sizeof(Y)的结果是4,而不是8。这就是所谓的空白基类最优化在(empty base optimization-EBO 或 empty base class opimization-EBCO)。在空基类被继承后由于没有任何数据成员,所以子类优化掉基类所占的1 byte。EBO并不是c++标准所规定必须的,但是大部分编译器都会这么做。

作者:WalkingInTheWind 发表于2013-1-11 16:51:24 原文链接
阅读:4 评论:0 查看评论

    
[2]Extjs--界面基本结构
    来源: 互联网  发布时间: 2013-11-10
这几天应新公司要求,开始学习Extjs,然后试着做了一个界面。

目前界面的需求已经都完成了,但是还有很多地方不是很清楚,特地记录学习一下。

写JS页面的时候比较痛苦,很多都忘记了,都是复制例子之后自己改的。除了开头的

Ext.BLANK_IMAGE_URL='../extsrc/resources/images/default/s.gif';
Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";
也不知道具体什么用,先晾着

所有的代码都写在Ext.onReady( )里面了。

Ext.onReady(function(){   
	Ext.QuickTips.init();//QuickTips的作用是读取标签中的ext:qtip属性,并为它赋予显示提示的动作
});



store

//  store
    var store = new Ext.data.Store({      
        proxy: new Ext.data.ScriptTagProxy({//注意后台必须使用callback参数进行包装
            url: globalURL   //会向对应的Action传值
        }), 
        //对返回的呃Json进行解析,获取需要的值
	reader : new Ext.data.JsonReader({
				       	totalProperty : 'totalCount',
					root : 'root'
					}, [{
						name : 'majorId'
					}, {
						name : 'majorName'
					}, {
						name : 'majorCode'
					}, {
						name : 'majorUseFlag'
					},{
						name : 'flag'
					},{
						name : 'majorStime'
					},																
					{
						name : 'majorEtime'
					}																
			])   
       // sortInfo:{field:'majorId', direction:'ASC'}   排序
    });
store.load({params : {start : 0,limit : 30}});    //重新加载一下

checkbox
var checkbox = new Ext.form.Checkbox({
    	id : 'checkbox', 
    	boxLabel : '显示历史'
    	//labelAlign : 'right',  这个属性IE8下目测没有效果
       // name : 'no',  
       // inputValue : 1,  
       // checked : false,  
       // handler : checkboxshow   这个属性IE8下目测没有效果,但是下面的 listeners 就可以了,不知道为什么

		listeners:{
			   'check':function(checkbox,checked){        //这个checked 的值是自动填充的并非要求传入的参数,即是否有勾,为boolean类型						      //checkbox 即他自身
					var delBut = Ext.getCmp('delBut');    //可通过 id 获取对应的组件  
		    			var celBut = Ext.getCmp('celBut');
					if(checked){
						alert("checked");
				    		celBut.show();
				    		delBut.hide();
					}else{
						alert("not checked");
				    		delBut.show();
				    		celBut.hide();
					}
				}
		}
}); 


sm
var sm = new Ext.grid.CheckboxSelectionModel({boxLabel: '全选'}); 	//定义sm,这个 全选 在IE8中目测无效  

cm
var cm = new Ext.grid.ColumnModel([	//定义cm ,以下为对应的列,和列对应的属性
           sm,
         {
           id:'majorId',
           header: "专业序号",
           width:200,
           dataIndex: 'majorId',
           editor:new Ext.form.TextField()
           
        },{
            id:'majorName',
            header: "专业名称",
            width:200,
            dataIndex: 'majorName',
            editor:new Ext.form.TextField()
           
     //      ,renderer:sourceRenderer
           
        },{
           id:'majorCode',
           header: "专业编码",
           width:200,
           dataIndex: 'majorCode'
           
        },
        {
           id:'majorStime',
           header: "开始时间",
           width:200,
           dataIndex: 'majorStime'
           
        },
        {
           id:'majorEtime',
           header: "结束时间",
           width:200,
           dataIndex: 'majorEtime'
                       

           
        },
        {
            id:'majorUseFlag',
            header: "使用标志",
            width:100,
            dataIndex: 'majorUseFlag',
            editor:new Ext.form.TextField()         
         },
         //这里定义了一组行按钮放在每行的末尾,用于单项删除,后面有 cellclick 事件与之对应
            header: "", 
            dataIndex: "delButton",
            width: 50,
             renderer: function (value, cellmeta) {
             		 return "<INPUT type='button' value='删除'>";}
         }
    ]);
   	cm.defaultSortable = true; 


各种页面响应的调用函数
	function doadd(){
		var newrrecord = new newrecord({
					majorId:'',
					majorName : '',
					majorCode : '',
					majorUseFlag:'',
					flag: '1'        //这个 flag 用来区别是 新建 还是 修改 
				})
		grid.stopEditing();
		store.insert(0, newrrecord);
		
	}
	
	function dosave() {
		var m = grid.store.getModifiedRecords();
		var jsonData = '[';
		for (var i = 0; i < m.length; i++) { 	// m表示被修改的行
			if(m[i].get('majorId')==''){
				Ext.Msg.alert('信息提示', '专业序号不能为空!');
				return false;
			}
			if(m[i].get('majorName')==''){
				Ext.Msg.alert('信息提示', '专业名称不能为空!');
				return false;
			}
			/*if(m[i].get('majorCode')==''){
				Ext.Msg.alert('信息提示', '专业编码不能为空!');
				return false;
			}
			if(m[i].get('majorUseFlag')==''){
				Ext.Msg.alert('信息提示', '使用标志不能为空!');
				return false;
			}*/
			var n=store.getCount();
			jsonData = jsonData + Ext.util.JSON.encode(m[i].data) + ',';
		}
		jsonData += ']';
		if (jsonData == '[]') {
			Ext.Msg.alert('信息提示', '没有发现保存项,请确认有保存项!');
			return false;
		}

		Ext.Msg.confirm('信息', '确定要保存所选项吗?', function(btn) {
			if (btn == 'yes') {
				Ext.MessageBox.wait("正在保存", "请稍候...");
					Ext.Ajax.request({
				   	url : '../control/IndexMajor?act=saveMajor',
				   	params : {
				                   jsonData : jsonData
				   	},
				   	method: 'POST',
			       		success: function (request) {
			          	        var message = request.responseText;								
						var resp=Ext.util.JSON.decode(request.responseText);
						if(resp.success == 'fail'){
							Ext.Msg.alert('信息','<center>保存项保存失败!<p>'+ resp.Info+'</center>');
						}
						else{
							Ext.Msg.alert('信息','保存项保存成功!');
							store.each(function(record) {
								record.commit();
							})
							loadF = 0;
							selectedrecord = null;							
							grid.getView().refresh();
							saved=true;	
							store.reload();
							renderGrid();
						}  
			       		},			
				   	failure: function ( result, request) { 
					        Ext.Msg.alert('错误','保存时出现未知错误.');  
				   	} 
				  });
		
			}
		})

	}

	
	function dodelete(){
		var m = grid.getSelections();
		if(m.length <= 0){
			Ext.Msg.alert('信息','<center>请至少选择一行数据!</center>');
		}else{
			Ext.MessageBox.confirm('确认删除', '你真的要删除所选行记录吗?', function(btn) {
					if (btn == 'yes') {
						Ext.MessageBox.wait("正在删除", "请稍候...");
						var majorCodes = '';
				            	for(var i=0;i<m.length-1;i++){
				             		majorCodes += m[i].get('majorCode')+','; 
				           	}
				            	majorCodes +=m[m.length-1].get('majorCode');	
						Ext.Ajax.request({
					   		url : '../control/IndexMajor?act=deleteMajor',
					   	params : {
					        	majorCodes : majorCodes
					   	},
					   	method: 'POST',
				       		success: function (request ) {
							var resp=Ext.util.JSON.decode(request.responseText);
							if(resp.success == 'fail'){
								Ext.Msg.alert('信息','<center>记录删除失败!<p>'+ resp.Info+'</center>');
							}
							else{
								Ext.Msg.alert('提示', '记录删除成功!');
								store.reload();
								grid.getView().refresh();
								store.commitChanges();
							}
				       		},			
					   	failure: function ( result, request) { 
						        Ext.Msg.alert('错误','删除时出现未知错误.'); 
					   	} 
					  });
					}
				})
			}
	}
	
	//撤销删除
	function canceldel(){
		historyFlag = "mark";
		var m = grid.getSelections();
		if(m.length <= 0){
			Ext.Msg.alert('信息','<center>请至少选择一行数据!</center>');
		}else{
			Ext.MessageBox.confirm('确认撤销删除', '你真的要恢复所选行记录吗?', function(btn) {
						if (btn == 'y      
    
[3]计算理论重点——Theory of Computation
    来源: 互联网  发布时间: 2013-11-10

一个学期的计算理论课程已经结束,给我的感觉吧,计算理论是一门计算机不得不学,学了短期又没用,但是可以培养一些逻辑思维的课程。其最关注的问题是什么是可计算性,什么问题可计算,问题之间的映射/归约,计算代价及难易。在分析问题和检验模型计算能力之前需要掌握的工具是形式语言、图灵机等。本文主要对计算理论中的重点进行了总结,总结了一些定理和理解上容易有障碍的知识点,但是里面还有一些点没有提到,比如NFA、DFA的相互转化,CFL和PDA的相互转化,需要书中的题目和证明辅助。

 

 Summary

1.    与自然数集合N等势的集合是可数无穷的,称有穷的or可数无穷的集合是可数的。非可数的集合称作不可数的。

2.    DFA( K, Σ, s,F, δ ) ;NFA(K, Σ,s,F,Δ)

3.    每台NFA都有一台等价的DFA(method:find closure)

4.    有穷自动机接受的语言类 = 正则语言类(正则表达式描述的语言类)

5.    正则语言在各种运算下封闭

6.    语言是正则的,iff 其等价语言中有有穷个等价类。

7.    DFA状态最小化->寻找等价类(初始等价类F & K-F)

8.    CFL(V,Σ,R,S)

9.    存在非正则的CFL

10.  能够生成>=两棵语法分析树的字符串的文法叫做歧义的。

11.  PDA M=(K,Σ,Γ,Δ,s,F),Γ为栈符号

12.  PDA接受的语言正好是CFL

13.  正则语言(xynz)和CFL(uvnxynz)的泵定理

14.  L={anbn}∈CFL,L={anbncn}∉CFL,L={an,n为素数}不是CFL

15.  Chomsky范式(CNF):若RÍ(V-Σ)×V2,则称G=(V,Σ,R,S)为Chomsky范式

16.  CFG到CNF的转化:

1)   消除长rules

2)   消除空rules(A->e)

3)   消除短rules(A->a or A->B)

17.  对任意CFL G,都可以在多项式时间构造Chomsky范式G’,使得L(G’)=L(G)-(Σ∪{e})

18.  没有chomsky范式能够表示length<2的字符串,所以包含<2的字符串的语言不能转化到chomsky范式。

19.  确定型CFL(确定型PDA接受的语言类)在补下封闭。

20.  TM (K,Σ,δ,s,H),注意字母表Σ不包含←和→

21.  若存在TM判定L,则称L是递归的。

22.  如果对于所有w属于Σ*,M(w) = f(w),我们说M计算函数f,若存在TM计算f,则f称为递归的。

23.  半判定语言的TM都不是算法

24.  多带、多带头、双向无穷带or多维带的TM,其判定or半判定的任何语言及任何函数,都分别可用标准TM判定、半判定or计算。

25.  非确定型TM:一个格局可在一步里产生多个其他格局

26.  若非确定型TM M半判定或者判定语言L,或者计算函数f,则存在标准型TM M’半判定or判定L,or计算函数f。

27.  文法是CFG的推广,任何CFG都是文法。G=(V,Σ,R,S)

28.  语言被文法生成iff它是r.e.的。

29.  所有数值函数都是原始递归的

30.  原始递归函数集是递归可枚举的。

31.  特殊语言/问题:

H = {“M””w”: M在w上停机 }

H1 = {“M”:M在“M”上停机 }

﹁H1 = { w:要么w不是一台TM的编码,

要么w是M的编码,M是一台在”M”上不停机的TM }

H:r.e. ;    H1:r.e.;  ﹁H1:非r.e. ;   2-SAT∈P;  SAT∈NP




32.  没有算法的问题称作不可判定的or不可解的,如TM的停机问题

33.  证明不可判定:从通用图灵机U通过递归函数归约到L,如果L是递归的则U是递归的。

i.e.若L1非递归,并存在L1到L2的归约,则L2也非递归。

递归函数是Turing Computable的。

34.  语言是图灵可枚举的,iff存在枚举它的图灵机。(M通过空格代开始,周期性的经过特殊状态q来枚举L,任意顺序且可重复)

35.  不可判定语言与递归语言互为补集,与r.e.语言有交集。

36.  语言是r.e.,iff它是图灵可枚举的;语言是递归的,iff它是以字典序Turing可枚举的。

37.  P在并、连接和补运算下封闭,NP在并、连接运算下封闭。若NP在补下封闭,则NP=P。

38.  H = {“M””w”: M在最多2|w|步后停机} ∉ P

39.  所有正则语言和所有CFL都属于P

40.  NP问题:

A.   机器角度去定义:被多项式界限非确定型图灵机判定的所有语言的类。

B.   基于verifier的定义:NP问题上建立的非确定机包含两步:

1)       非确定地猜一个解

2)       用

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
linux iis7站长之家
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3