Wednesday, May 23, 2007

最近在复习《软件设计师》个东西,
晚上一个人跑去看了将近3个小时书,当中除了一次开小差,想起无数“人生尴尬”外,基本上还是很有效率的。一些技术性的知识点,比如数据结构,软件分析什么的都弄好的,唯一就是那些背的知识点了,什么知识产权之类的...
突然发现放假的五天都没好好看书,就是“犯贱”,要到来不及才有感觉...(考试是这周6)

后面的复习计划,其实也就两天,明天把要考的知识点过一下,吧知识产权那块“送分题”复习,晚上么就等着查漏补缺了!周五按时回家,看会书就早点困,哈哈

也不知道为什么,对这个考试打不起精神,感觉应该是能过的,下午还查了下,及格分是45,有30分好扣,HOHO~~开心(下午做了些题,错的蛮多)

很期待结束周六的考试!!

Labels:

Friday, May 18, 2007

LZW算法的实现(part1)

使用语言:C++以及STL模板
LZW压缩算法的基本原理:提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。
// 解压缩
void LZW::Depression()
{
cout<<"Depression:"< string text;
std::vector<>::iterator iter_end ;
std::vector<>::iterator iter;
string s; CEntry entry;
for(int i=0;i<=t;i++)
{ int k=Codes[i];
//从字典中取出等于K的字符
iter = _dictionary->begin();
iter_end = _dictionary->end();
for(iter;iter!=iter_end;++iter)
{ if((*iter).GetCode()==k)
{ entry.SetEntry((*iter).GetEntry());
entry.SetCode((*iter).GetCode()); }
}

/*exception handler*/
if(entry.GetEntry().empty()==true) entry.SetEntry(s+s[0]);
cout << "i: " << i << "; s: " << s << "; k: " << k
<< " output = " << entry.GetEntry() ; cout< text=text+entry.GetEntry();

if(entry.GetEntry().empty()==false)
{ CEntry tmp_entry;
tmp_entry.SetCode( _dictionary->size()+1 );
tmp_entry.SetEntry(s+ entry.GetEntry()[0] );
_dictionary->push_back( tmp_entry );
}
s=entry.GetEntry();
}
cout< cout<<"The Text:"<}

....待续

Labels:

Thursday, May 17, 2007

哆啦A梦

早上在抓虾上看东西的时候,突然发现下面一个广告,说是免费提供订阅的图标,一点进去,就发现偶钟爱的哆啦A梦,HOHO
订阅到抓虾

Labels:

Tuesday, May 15, 2007

Java学习笔记(lesson4)

字符串的比较
  • 错误方式:state==Student.IN_STTE,虽然两者的值相同,但事实上,两者存的是不同的内存地址(参考普通字符串String内存使用),即有两块内容相同的内存空间
  • 正确方式:state.equals(Student.IN_STTE)
  • 备注.toUpperCase()方法实现大写转换

《Agile Java》中的改变

  • 在Student中增加“学分记录功能”,用于判断不同的学生类型
  • 在Student中增加“所在地”
  • 在CourSession中增加“该课程学分记录”

Labels:

Java学习笔记(lesson3)Part2

StringBuilder动态可变类
  1. 创建StringBuilder buffer = new StringBuilder();
  2. 连接buffer.append() //可连接多个.append() 后缀
  3. 转换格式buffer.toString()

普通字符串String内存使用

  1. String a="abc";String b="abc";此方式,系统只开辟一块内存空间存放abc,而a,b存放相同的内存地址。
  2. String a="abc";String b=new String("abc");此方式,系统开辟两块内存空间,分别存放abc,此举浪费内存资源,应避免!
  3. String对象存放的是指向对应字符串的“地址”。

字符串的不可改变性

  • 若连接一段字符,必须开辟新的空间存放新字符串,而不修改旧的
  • Sun将String设计成不可改变的,是为了让String的行为最优化。

遍历ArrayList类型的方法

  • for(元素类型 元素名:集合名){方法}
  • 例如:for(Student s :students)buffer.append(student.getName());

基本类型在Java中的内存使用量

  • char 2个字节
  • int 4个字节

Labels:

Monday, May 14, 2007

Java学习笔记(lesson3)

教材《Agile Java》
面向对象有一个基本的设计原则:一个类只能做好一件事。即“单职责原则

CourseSession中的getRostrReport函数用于返回该课程的学生清单,但由于“单职责原则”的约束,因此将getRostrReport函数定义成一个独立的类。

getRostrReport类包括:
三个类变量和一个私有变量:
static final String NEWLINE = System.getProperty("line.separator");
static final String ROSTER_REPORT_HEADER = "Student" + NEWLINE + "-------" + NEWLINE; //学生报表的页眉
static final String ROSTER_REPORT_FOOTER = NEWLINE + "# students = ";
//学生报表的页脚
private CourseSession session;

成员方法
RosterReporter(CourseSession session)//构造函数
public String getReport() //打印完整的该课程学生信息

void writeHeader() //打印页眉

//打印该课程的学生信息
void writeBody() {
for (Student student: session.getAllStudents()) {
buffer.append(student.getName());
buffer.append(NEWLINE); }
}

void writeFooter() //打印页脚

System.getProperty("line.separator")函数详解
此方法以一个系统参数属性的键值作为参数,并返回与该键值相关联的系统属性
属性line.separator解释:在Unix中该属性的值为'\n'。在windows中,为'\r\n'
通常在代码中,应该使用line.separator来弥补不同平台之间的差异!

在测试类中使用的技巧
String rosterReporter = new RosterReporter(session).getReport();

Labels: