作者:subaochen

组件式编程基础:WELD讲座

组件式编程基础:WELD讲座

下午和实验室的同学们交流了基于组件的编程方法,主要是WELD的基本概念,只是开了一个头,参见附件:weld 希望大家在这段时间做这样几件事情:
* 下载weld-2.4 reference guide,认真阅读并理解CDI的基本概念。
* 试着运行 https://github.com/subaochen/weld-tutorial 里面的几个例子,顺序是basic->qualifiers->produces->alternative->interceptor->decorator。
* 试着运行weld自带的examples
* git clone https://github.com/subaochen/wildfly-quickstart , 争取多翻翻其中的代码。

也和大家聊了蛮久的职业规划,我的个人建议是:

  • 建立长期的个人职业规划,不要只看眼前。
  • 养成记录和博客的习惯。
  • 在github上找到感觉,最终找到中意的项目能参与进去。 大家有疑问欢迎随时探讨!
phabricator使用要点

phabricator使用要点

登录频次

关于项目

关于代码审核

netbeans 8.1的个性化用户名和licence设置

netbeans 8.1的个性化用户名和licence设置

设置个性化用户名

打开菜单工具->模板,入图1所示,直接点击“设置”按钮可以打开个人属性配置文件,在文件中编辑user属性即可。比如我的User.properties文件内容为:

设置个性化licence

讲座:maven入门

讲座:maven入门

2016-9-8下午,实验室讲座如期举行,主要内容是JDBC和Maven入门,重点如下:

JDBC概念

从一个小例子入手,介绍了JDBC的基本概念和使用方法,顺便总结了CLASSPATH环境变量的用法:在执行例子时,postgresql jdbc driver必须在CLASSPATH上。有两种方法可以做到这一点:

  1. 设置CLASSPATH环境变量
  2. java的cp命令行参数

Maven入门

重点介绍了Maven的核心思想:

  • 使用groupId/artifactId/version表达构件在中央仓库的坐标,解决第三方jar包的依赖关系。
  • 管理项目的生命周期管理及其相互依赖管理。
  • 约定重于配置思想的体现:标准的maven java项目的目录结构。

Maven应用实例

通过展现一个简单的pom.xml文件,介绍了pom.xml文件的基本结构和组成部分,希望大家通过不断使用加深对maven的理解。

 

git stash的用法小结

git stash的用法小结

使用场景

案例说明

hibernate入门教程

hibernate入门教程

教程说明

本教程涉及到的代码在:https://github.com/subaochen/hibernate-tutorials-with-postgresql,大部分内容受官方文档和示例的启发而作,欢迎批评指正!

hibernate的设计目的

hibernate是大牛Gavin King

在2001年创建的,当时Gavin King感觉EJB2操作数据库的方式很不爽,就自己写了一个ORM的东西,就是hibernate。

hibernate的官方教程

使用mapping

4.1 .hbm.xml文件

列表 1: Article.hbm.xml

  1. 每个数据表映射为一个Java类,因此每个这样的java类都有一个相应的.hbm.xml文件。
  2. 一般的,需要给每个数据表定义一个id作为主键,这是一个好的设计习惯。
  3. 如果在.hbm.xml文件中忽略了字段类型的映射,则在应用程序的启动阶段,hibernate会根据Java类的相应属性的类型“猜测”获得数据表的字段类型,这会相应的增加应用程序的启动时间。
  4. .hbm.xml文件可以和Java类放在同一个目录下,也可以放在一个独立的目录中,只要在pom.xml文件中设置一下resource的目录即可,参见pom.xml的相关解释。

4.2 hibernate.cfg.xml文件

列表 2: hibernate.cfg.xml

  1. 这里我们使用postgresql数据库,因此在pom.xml中需要导入postgresql driver的依赖,参见pom.xml的相关注释。
  2. 需要在postgresql中事先创建数据库hibernate-demo。
  3. 注意到mapping的设置,如果有多个.hbm.xml文件,需要有相应的多个mapping设置。

4.3 测试客户端类Client.java

列表 3: Client.java

4.4 运行测试

使用annotation

  1. 去掉了Article.hbm.xml文件。
  2. Article.java类使用annnotation表示java类和数据库的映射关系。
列表 4: Article.java

hibernate作为JPA的provider

列表 5: persistence.xml

  1. persistence-unit定义了数据库的引用名称,我们在代码中使用persistence-unit来创建一个EntityManagerFactory,从而获得一个EntityManager:
  2. 每个模型类(数据表的映射类),需要通过<class></class>在persistence.xml中列出。
理解Java的多态

理解Java的多态

多态的概念

先看一个实例[1],假设有如图1所示的类层次结构:

从对象的存储说起

那么Animal dog = new Dog()是什么意思呢?从图1可以看出,此时的dog指针仍然是指向整个Dog对象的指针,但是指针的范围却局限于父类Animal的区域,也就是说,此时的dog指针只能调用父类Animal中的属性和方法,而不能调用Dog子类扩展了的属性和方法。
如果子类没有重写(orverriding)父类的方法,子类和父类的存储是泾渭分明的。如果子类重写(orverriding)了父类中的方法,那么图1中父类中被重写的方法同样会发生变化,即变的和子类中重写的方法一模一样,如图3所示:

方法重载的情形

根据图4可自行分析执行结果。

Java多态的使用方法

5月29日实验室技术交流

5月29日实验室技术交流

下午在311教室,由高自强、封鑫、高义升三位同学就图的概念、深度/广度搜索、最小生成树、最短路径等问题进行了探讨和交流,其中代码部分请大家移步:http://softlab.sdut.edu.cn:3000/gaoziqiang/Date_Structure/src/master/Graph

 

img_20160529_155916_hdr.jpg
img_20160529_152417_hdr.jpg img_20160529_150657_hdr.jpg

看到大家的不断进步,内心还是略激动的。希望大家把知识学的扎实些,再扎实些,比如如果使用图的广度/深度搜索算法去处理一棵二叉树会有怎样的结果?通过类似这样的比较和推演,加深对数据结构和算法的理解。

5月19日实验室内部交流

5月19日实验室内部交流

5月19日下午在311教师交流了《数据结构》中关于排序的算法和C语言实现,赵越伟和郑书亚两位同学的讲解还是比较到位的,表扬一下:-)。遗憾的是,忘记拍照片了。

大家在掌握排序算法的C语言实现的同时,也需要注意以下几点:

  • 算法的思想很重要:如何将复杂的问题转化为若干个简单的问题?这是算法的灵魂,也是最值得思考的地方。
  • 通过各种排序算法的比较获得实验数据,从定量和定性两个角度分析排序算法。
  • 注意培养自己的讲课(演讲)的能力,清晰的表达自己的思想。

最后,提前聊了聊暑假的安排问题,建议大家将暑假作为迅速提升能力的一个好机会:从程序设计语言的角度讲,一个暑假完全可以很好的学会一门语言,比如Java。打算在期末考试完到8月初的这段时间,集中精力帮助大家拿下Java,这样大家至少就掌握了C和Java,一个是面向过程的,一个是面向对象的,在这个基础上,再自学其他的程序设计语言就比较容易了。

附:

郑书亚的课件:冒泡排序和快速排序

赵越伟的课件:插入排序、希尔排序

 

5月12日小组内部交流

5月12日小组内部交流

关于二叉树的基本概念和C语言实现

Linux下的常见画图工具

尽早确立努力的方向

跳至工具栏