文章列表
scala的类型线性化算法
- 博客分类:
- scala
1、当前实例的具体类型会被放到线性化队列的首个元素位置处
2、按照该实例的父类型的顺序从右到左的放置节点,针对每个父类型执行线性化算法,并将执行结果合并
3、按照从左到右的顺序,对类型节点进行检查,如果类型节点在该节点右边出现过,那么便将该类型移除
4、在类型线性化层次结构末尾处添加AnyRef和Any类型
如果是价值类,使用AnyVal类型替代AnyRef类型
例如
C1
T1 extends C1
T2 extends C1
T3 extends C1
C2 extends T2
C3 extends C2 with T1 with T2 with T3
...
看larbin源代码,看到一个很巧妙的字符串忽略大小写比较实现
A:65(0100 0001),a:97(0110 0001)
A | 32 == a
a & 0xDF == A
bool startWithIgnoreCase (char *amin, char *b) {
int i=0;
while (amin[i] != 0) {
if (amin[i] != (b[i]|32)) return false;
i++;
}
return true;
}
/**
广搜,有两点剪枝
1、当人在牛右边时(i>K),只要-1
2、广搜过程不会超过边界100000
2i超过边界的不可能是最优解 设边界为2k,假设2i>2k,则2i-2k>=2,到达2k花费时间为2i-2k+1>=3 而先-1再乘2,到达2k花费时间为(i-k)*2
*/
#include<stdio.h>#include<queue>#include<string.h>
#define MAX 150000
using namespace std;
in ...
/*
简单的深搜,需要注意题意里一点,如果一开始就遇到墙壁,则不能往该方向移动
*/
#include<stdio.h>#include<string.h>#define MAX 50
int map[MAX][MAX];int w,h,result;int start_i,start_j,end_i,end_j;int d[][2]={ {0,-1} ,{-1,0} ,{0,1} ,{1,0} };void dfs(int i,int j,int step){ int ...
/*
模拟机器人在方格中运动,判断是否会发生碰撞
题目的思路挺简单的,需要注意方格的表示和语言中矩阵的表示的区别,判断行进的位置
做这道题目是还理解了一下C结构体中数据的内存对齐问题,在定义结构体是最好是遵守字节对齐原则,
简单说就是长字节的先定义,这样可以节省一些空间
*/
#include<stdio.h>#include<string.h>
#define MAX 130
char m[MAX][MAX];struct Robot{ int x; int y; int d; }r[MAX];
int main(){ int K,A,B,N,M; ...
C结构体中数据的内存对齐问题
- 博客分类:
- C++学习笔记
转:
C结构体中数据的内存对齐问题
http://blog.csdn.net/hbyh/article/details/2061471
1.先看下面的例子:struct A{ char c1; int i; short s; int j;}a;struct B{ int i; int j; short s; char c1;}b;结构A没有遵守字节对齐原则 ...
poj3295 构造法
- 博客分类:
- poj
一个循环是32次,列举pqrst所有的值的情况,如果32种情况得到的值相同则为正确的。
和计算器比较像,类似算式表达式的前缀式,用递归解
列举32种情况
for(i=0; i<32; ++i) {
switch( str[pos] ) { case 'p':return i&1; case 'q':return i>>1&1; case 'r':return i>>2&1; case 's':return i>>3&1; case 't':return i>>4&1;
...
Printf()输出格式控制
- 博客分类:
- C++学习笔记
printf()用%f输出double型,而scanf却用%lf
格式
printf
scanf
%c
poj1850 组合数学
- 博客分类:
- poj
/* n个字符长度为m的字符串个数C(n,m) 因为字符串要求是升序的,所以字符确定,字符串序列也就相应确定 例如,abcd四个字符长度为2的字符串个数为6,ad对应的字符串序列是ad*/#include<stdio.h>#include<stdlib.h>#include<string.h>
#define NUM 27#define LENGTH 11int tab[NUM][NUM];
//杨辉三角 void yanghui_table() {
int i,j;
memset(tab,0,sizeof(tab)) ...
http://www.koucai.cn/kc/wenlaoshi/qwgxs/20080321/3065.html
(1)速读法 这里的“读”指的是朗读,是用嘴去读,而不是用眼去看,顾名思义,“速读”也就是快速的朗读。 这种训练方法的目的,是在于锻炼人口齿伶俐,语音准确,吐字清晰。 (2)背诵法 我们都背诵过课文。有诗歌、有散文、有小说。背诵的目的是各有不同的。有的是因为老师要求必须背诵,而不得不背,以完成老师交给的学习任务;也有的是为了记忆下某个名诗、名句,以此来丰富自己的文学素养。而我们提倡的背诵,主要的目的是在于锻炼我们的口才。 ...
用 Javascript 获取页面大小、窗口大小和滚动条位置
//语法甘露:var object = //定义小写的object 基本类,用于实现最基础的方法等{isA: function(aType) //一个判断类与类之间以及对象与类之间关系的基础方法{var self = this;32while(self){if (self == aType)return true;self = self.Type;};return false;}};function Class(aBaseClass, aClassDefine) //创建类的函数,用于声明类及继承关系{function class_() //创建类的临时函数壳{this.Type = aBase ...
JavaScript 是一段段地执行的。一段代码中的定义式函数语句会优先执行,这似乎有点象静态语言的编译概念。所以,这一特征也被有些人称为:JavaScript 的“预编译”。
函数就是对象,只不过比一般的对象多了一个括号“()” ...
Hibernate Cannot release connection
分类: Hibernate2010-10-18 10:49 120人阅读 评论(0) 收藏 举报
转自:http://www.jb51.net/article/22403.htm
开发中经常会用到复制的功能,在 IE 下实现比较简单。但要想做到跨浏览器比较困难了。本文将介绍一个跨浏览器的库类 Zero Clipboard 。它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的 document.execCommand("Copy") 更加灵活。 Zero Clipboard 的实现原理 Zero Clipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash。但 ...