马士兵-J2SE第九章-线程-个人学习笔记

合集下载

马士兵高级架构师笔记

马士兵高级架构师笔记

马士兵高级架构师笔记一、为啥要做这个笔记呢?咱就是说,马士兵老师的高级架构师课程那可老厉害了。

我听的时候就感觉脑子不够用,但又不想错过任何知识点,所以就开始做笔记啦。

这个笔记就像是我的小宝藏,里面全是架构师相关的干货。

每一个知识点都像是一颗小星星,我把它们一颗颗收集起来,就想攒成一个知识的银河系。

二、笔记都有啥内容呢?1. 架构的基础概念这部分就像是盖房子的地基一样重要。

它包括什么是架构,架构在软件开发中的意义,还有不同类型架构的特点。

比如说分层架构,就像蛋糕一样一层一层的,每一层都有它自己的功能,不能乱套。

我当时理解这个概念的时候,就想象自己是个蛋糕师傅,要把每层蛋糕都做得恰到好处。

2. 设计模式这里面有好多有趣的设计模式呢。

像单例模式,就好像整个世界只有一个超级英雄一样,在程序里就是只有一个实例。

还有工厂模式,就像是一个神奇的工厂,可以根据不同的需求生产出不同的对象。

我每次学到一种新的设计模式,就感觉自己又多了一种魔法技能。

3. 架构的性能优化这可是很关键的部分哦。

毕竟我们希望我们做出来的架构跑得又快又稳。

这里面包含了如何提高系统的响应速度,减少资源的占用等等。

比如说缓存的使用,就像我们的大脑会记住一些经常用到的东西一样,程序也可以把一些常用的数据缓存起来,下次再用的时候就可以直接拿出来,不用再重新计算了。

三、这个笔记对我有啥帮助呢?首先,在学习的时候它能让我更好地理解课程内容。

有时候老师讲得很快,我来不及消化,但是一看笔记就清楚多了。

其次,在做项目的时候,我可以把笔记里的知识运用到实际中。

比如说在设计项目架构的时候,我就可以参考笔记里的各种架构模式,选择最适合的那个。

最后,这个笔记也是我学习成长的一个记录,我可以看到自己从对架构一知半解到逐渐掌握的过程,就很有成就感呢。

反正这个马士兵高级架构师笔记对我来说超级重要,就像我的一个学习小助手,陪着我在架构师的学习道路上一路前行。

超级全马士兵hibernate学习笔记(WORD整理版)

超级全马士兵hibernate学习笔记(WORD整理版)

课程内容 (5)1 HelloWorld (5)2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping (5)3 常见的0/R框架(了解) (5)4 hibernate基础配置(重点) (5)5 ID生成策略(重点 AUTO) (5)6 Hibernate核心开发接口介绍(重点) (5)7 对象的三种状态(了解) (5)8 关系映射(重点) (5)9 Hibernate査询(HQL) (5)10 在Struts基础上继续完善BBS200 (5)11 性能优化(重点) (5)12 补充话题 (5)风格 (5)1 先脉络,后细节 (5)2 先操作,后原理 (5)3 重Annotation,轻xml配置文件 (5)资源 (5)1 http://www. (5)2 hibernate zh_CN文档 (5)3 hibernate annotation references (5)环境准备 (5)1 下载hibernate-distribution-3.3.2.GA-dist (5)2 下载hibernate-annotations-3[1].4.0.GA (5)3 注意阅读hibernate compatibility matrix(hibernate 网站download) (5)4 下载slf4jl.5.8 (6)Hibernate HelloWorld (6)1 建立新java 项目,名为hibernate_0100_HelloWorld (6)2 学习建User-library-hibernate,并加入相应的jar包 (6)3 引入mysql的JDBC驱动包 (6)4 在mysql中建立对应的数据库以及表 (6)5 建立hibernate 配置文件hibernate.cfg.xml (6)6 建立Student 类 (6)7 建立Student 映射文件 Student.hbm.xml (6)8 将映射文件加入到hibernate.cfg.xml中 (6)9 写测试类Main,在Main中对Student对象进行直接的存储测试 (6)10 FAQ: (6)11 Note: (6)12 建立能力 (7)建立 Annotation 版本的 HelloWorld (7)1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); (7)2 创建Teacher 类 (7)3 在hibernate lib 中加入annotation的jar包 (7)4 参考Annotaion文档建立对应的注解 (7)5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 .. (7)6 参考文裆进行测试(注意文裆中缺少configure()的小bug) (7)7 FAQ: @不给提示 (7)What is and Why 0/R Mapping (7)1 JDBC操作数据库很繁琐 (7)2 Sql语句编写并不是面向对象的 (7)3 可以在对象和关系表之间建立关联来简化编程 (7)4 0/R Mapping 简化编程 (7)5 0/R Mapping跨越数据库平台 (7)6 Hibernate_0200_OR_Mapping_Simulation (7)0/R Mapping Frameworks (7)1 hibernate (7)2 toplink (8)3 jdo (8)4 JPA (8)Hibernate基础配置 (8)1 对应项目:Hibernate_0300_BasicConfiguration (8)2 介绍MSQL的图形化客户端 (8)3 hibernate.cfg.xml: hbni2ddl.auto (8)4 搭建日志环境并配置显示DDL语句 (8)5 搭建jUnit环境 (8)6 hibernate.cfg.xml:show_sql (8)7 hibernate.cfg.xml:format_sql (8)8 表名和类名不同,对表名进行配置 (8)9 字段名和属性相同 (8)10 字段名和属性名不同 (8)11 不需要psersistence的字段(不用列) (8)12 映射日期与时间类型,指定时间精度 (8)13 映射枚举类型( 比较少用) (9)14 字段映射的位置(field或者get方法) (9)15 @Lob (9)16 课外:CLOBBLOB类型的数据存取 (9)17 课外:Hibernate自定义数据类型 (9)18 hibernate 类型 (9)ID生成策略 (9)1 对应项目:hibernate_0400_ID (9)2 注意: (9)3 xml生成id (9)4 注解方式:@GeneratedValue (9)5 FAQ; (10)6 联合主键 (10)核心幵发接口介绍 (12)1 hibernate_0500_CoreAPI (12)2 Hibernate API文档需要单独下载 (12)3 Configuration (12)4 SessoinFactor (12)5 Session (12)6 SchemaExport (自动建表) (13)7 Query 接口 (13)8 Note: (13)三种对象状态 (14)1 上一个 project (14)2 三种状态的区分关键在于 (14)3 三种状态: (14)4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比如改变属性的 (14)关系映射(重要) (15)对象之间的关系 (15)1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 (15)2 简化问题: (15)3 —对一 (15)4 —对多 (15)5 组件映射 (15)一对一关联 (16)1 一对一单向外键关联 (16)2 一对一双向外键关联 (16)3 一对一单向主键关联(不重要) (17)4 一对一双向主键关联(不重要) (17)5 联合主键 (17)组件映射 (17)1 项目:hibernate_1100_component (17)2 对象关系:一个对象是另外一个对象的一部分 (17)3 数据库表:一张表 (17)4 annotation: @ Embeddable @Embbeded (17)5 xml: 使用<component,例如: (18)多对一与一对多 (18)1 多对一单向关联 (18)2 一对多单向关联 (19)3 一对多(多对一)双向关联 (19)多对多 (20)1 单向关联: (20)2 双向关联: (21)关联关系中的CRUD_Cascade_Fetch (21)1 hibernate_1700_one2many_many2one_bi_crud (21)2 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) (21)3 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 (21)4 铁律:双向关系在程序中要设定双向关联 (22)5 铁律:双向mappedBy (22)6 fetch (22)7 Update时@ManyToOne()中的cascade参数关系 (22)8 Delete时@ManyToOne()中的cascade关系 (22)9 O/RMapping 编程模型 (23)10 要想删除或者更新先做load,除了精确知道ID之外 (23)11 如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据 (23)12 练习:多对多的CRUD (23)关系映射总结 (24)1 什么样的关系,设计什么样的表,进行什么样的映射 (24)2 CRUD,按照自然的理解即可(动手测试) (24)集合映射(不太重要) (24)1 项目名称:hibernate_1800_Collections_Mapping (24)2 Set (24)3 List (与Set差不多多个@OrderBy) (24)4 Map (24)继承映射(不太重要) (24)1 三种方式 (24)作业: (24)1 学生课程、分数的设计(重要) (24)2 设计: (25)3 树状结构的设计(至关重要) (25)Hibernate 查询(Query Language) (26)HQL vs EJBQL (26)1 NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)" 262 总结:QL应该和导航关系结合,共同为査询提供服务。

马士兵java基础笔记 pdf版 面向对象部分

马士兵java基础笔记 pdf版 面向对象部分

public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000)(1); test.change1(date)(4); test.change2(d1);(7) test.change3(d2);
b.setDay(22),把 b 指向的值改变了,这次真 的变了!
方法执行完后,b 消失,d2 的值变了。
四. 方法重载 类中可以定义相同名字但参数不同的方法。
五. this 关键字 this 指向对象自身的引用。
在类的方法定义中使用 this 关键字代表使用该方法的对象的引用。 当必须指出当前使用方法的对象是谁时要使用 this 有时使用 this 可以处理方法中成员变量和参数重名的情况 this 可以看作是一个变量,它的值是当前对象的引用
_id:1
age = _age; }
_age:25
public static void main(String[] args) {
Person tom = new Person(1, 25); } }
tom:XXX Stack
id:1 age:25
Heap
例子:
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { //构造方法 day = d; month = m; year = y; }

马士兵hibernate文档 (个人完善版)

马士兵hibernate文档 (个人完善版)

3.hibernate.hbm2ddl.auto :在SessionFactory 创建时,自动检查数据库结构,或者将数据库schema 的DDL 导出到数据库。

使用create-drop 时,在显式关闭SessionFactory 时,将删除掉数据库schema。

例如:validate | update | create | create-dropcreate :如果没有表就创建update :如果表结构更新,就更新validate :每次插入表的时候看看表结构有没有更新。

理论上是先建类后建表:这个时候只要你的类建好了,可以跨数据库。

实际中先建表比先建类多,建好表以后要对数据库进行优化,比如建索引,建试图,各种各样的优化。

project\etc目录下面有很多示例性的文档,log4j的文档就在那个下面。

SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); SessionFactory的建立是很耗费时间的,应该像连接池一样,只建立一次,以后要用就直接从那用。

Hibernate文档建议我们自己写一个辅助类,用单例来做。

JUnit的一个bug:@BeforeClasspublic static void beforeClass() {sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();}在这句话的时候配置文件如果有的时候写错了,她悄悄把错误隐藏起来了。

解决的方法:可以对这句话加try catch块8.表名和类名不一致的时候:@Entity@Table(name="_teacher")public class Teacher {10字段名和属性名不一致的时候@Column(name="_name")public String getName() {return name;}11 不需要的字段的设置@Transientpublic String getYourWifeName() {return yourWifeName;}12 映射指定的时间日期@Temporal(TemporalType.TIME)public Date getBirthDate() {return birthDate;}在注解里面如果一个注解的属性名字叫value,你可以不写,直接写后面的值,如@Temporal(value=“TemporalType.TIME”)可写成上面的那样。

JavaSE马士兵笔记word版

JavaSE马士兵笔记word版

第1章Java概述Java语言的特特点一种面向对象的语言;一种平台无关的语言;一种健壮的语言,吸收了C/C++的优势,但去掉了其阻碍程序健壮性的部份(如:指针、内存的申请与释放等)Java的两种核心机制Java虚拟机(Java Virtual Machine)垃圾回收机制(Garbage Collection)源程序(*.java文件)→Java编译器→字节码(*.class文件)→类装载器→字节码校验器→说明器→操作系统平台一次编译,到处运行Java是一种说明型语言JDK(Java Development Kit)软件开发工具包JRE(Java Runtime Environment)运行时环境开发需要JDK;用户只需JREPATH:WINDOWS系统执行命令时要搜寻的途径(如,)CLASSPATH:Java在编译和运行时要找的class所在途径(“.”代表当前途径)java:运行java程序javac:编译java程序java –version一个源文件最多只能有一个public类,其他类数量不限,源文件名必需与public类名一致Java应用程序的执行入口时main()方式:public static void main(String[] args){…} Java语言中严格区分大小写编译后,每一个类都对应一个class文件第2章基础语法标示符由字母、下划线”_”、美元符”$”或数字组成标示符应以字母、下划线、美元符开头Java标示符对大小写灵敏,长度无穷制,注意“见名知意”且不能与Java语言关键字重名goto和const尽管未利用,但也被作为Java的关键字保留程序执行进程:到内存区 2.找到main方式开始执行 3.执行进程中的内存治理Java数据类型的划分boolean类型数据只许诺取值true或false,不能够利用0或非0的整数值取代true和false,这点和c语言不同Java字符采纳Unicode编码,每一个字符占两个字节,因此能够用十六进制编码形式表示,例:char c = ‘\u0061’;Java语言的整型常量默以为int类型,声明long型常量能够后加l或L大体数据类型转换boolean类型不能够转换为其他的数据类型整型,字符型,浮点型的数据在混合运算中彼此转换,转换时遵循以下原那么:容量小的类型自动转换为容量大的类型:byte,short,char->int->long->float->doublebyte,short,char之间不需要彼此转换,他们三者在计算时第一会转换为int类型能够将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围“+”除用于算术加法外,还可用于对字符串进行连接操作,“+”运算符双侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接,当进行打印时,不管任何类型,都自动转换为字符串进行打印break&continuebreak语句用于终止某个语句块的执行。

JAVA笔记(根据马士兵的java视频整理)

JAVA笔记(根据马士兵的java视频整理)

JAVA视频教程尚学堂---手把手教程Call:86-主讲教师马士兵SCM系统--------Java+VC跨平台(电信宽带运营平台-------Java+WEB(J2EE)跨平台远程教学平台----Java+WEB(tomcat)VOD视频监控-----VCERP视频会议---------VC新闻发布系统-----Java+XML(模板)网上商城课堂内容、教学方法、学习方法、预备知识、教学资源JAVA基础贯穿数据结构的知识(时间复杂度、链表)---非常重要语法基础【变量、循环、分支】最核心的东西—原理--学好OO【面向对象是最重要的】有新东西学是好事----个人价值Exception 从Java Web开始,框架巨多无比Array【数组】基础类、常用类I/O StreamCollection/Generic【集合类】Thread【线程】TCP/UDP【网络底层】GUI【Graphic User Interface 图形化用户接口窗口】Meta Data【以后讲,与紧密相关】Regular Expression【正规表达式】JDK初步Java Web编程【主攻一个框架---讲原理,略讲其他框架】针对Web程序J2EE【一套标准,包含Java Web 、JDPC、JSP、SP、JB/开源框架—就分步式来说,目前(2005)无东西与之抗衡】(比较,,)企业级应用J2ME移动设备移动增值SP运营商3G,2.5G,要火爆起来【网络先铺起来,应用才能上来;3G的网络还没有铺开、火爆起来,讲3G的应用超前了】巨无霸式的教学理论举例理论回顾练习讲解【三片面包加两片肉】注重结合工程实践【完全结合】注重传授自学能力【自学的东西相当重要,授人以鱼,不如授人以渔;慢慢学会掌握一定基础后才有,灌输、背,融成血液里的一部分,心中无剑,手中有剑—前提—心中有剑手中也有剑;时间短,强度大,该背就背】个人能力分三个层次知识学习前人的知识---学习能力的一个表现,被动地接受—接受能力{自己学习了知识后考虑如何去应用,去---学习解决问题的方法【类似问题遇到过】灵活运用学到的知识【碰到什么问题采用什么方法】解决问题的思路【最高层次】创造解决问题的方法【思路掌握了,遇到新问题,自己拓展一条思路,解决问题,不可能一口吃成一个胖子,沿着这三个层次一点一点往上升首先打造自己学习知识的能力,先把该掌握的知识掌握了,再谈如何应用---如何教---教大家写项目每一个知识教太深—给项目留得时间特别短---不合适;自学一些东西,慢慢去培养解决问题的思路,试着朝这个方向去培养,工作后慢慢遇到新问题使劲去思考了积累起来逐渐会有这个能力,灵活一点、再灵活一点!基础知识要背—灵活应用的东西不能背,无一定之规,在实践中慢慢锻炼—实践的越多—敲的代码越多(掌握思路后自主敲代码,哪怕敲不出来再看别人的思路—收获远远不一样,学习要自主一点,多思考思路才能开阔—无捷径,努力锻炼自己的就业能力。

马士兵视频列表及Java学习教学大纲

马士兵视频列表及Java学习教学大纲

教学视频资源列表q、jshtmlcss这是基础l、尚学堂科技_马士兵_轻松愉快linux视频教程n、oracle.马士兵r、mysql_avi.马士兵这些单独的数据库和系统模块可以在任何时候都可以,建议在学j2ee之前学j、尚学堂马士兵视频教程_scm_cvs_svncvs是存档工具,建议在学j2ee当中学习p、junit4这个是测试工具,建议在学j2ee中学习s、设计模式.马士兵j2ee中会提到这块的f、马士兵jsp_servlet视频这个是j2ee的基础a、ejb3.0李腾飞ejb现在用的真的不多了d、struts马士兵b、hibernate马士兵c、spring马士兵struts是学习j2ee的第一个框架,简单易上手,也可以考虑struts2,这个跟struts没啥关系,是webwork的升级版hibernate对于懒人来说很好用,但是不适合面对大客户量的访问,那样机器会死的很惨spring还不错,就是要适应繁琐的配置文件g、尚学堂科技_马士兵_java_网上商城项目视频讲解h、尚学堂09年drp项目i、尚学堂科技_马士兵_jdbc_mysql_bbs项目课堂实录视频教程k、尚学堂科技_马士兵_java_系列视频教程_bbs_2007o、尚学堂马士兵视频教程_xml_ajax_dom4j_javadb_metadata学完三大框架之后就可以做上面的项目了,然后ajax的学习也用不了太久,可以边学边学着做e、oa项目最好是在有以上项目经验的基础上,加上学完了ajax再做oa项目,因为oa项目涉及到的技术太多m、网络课堂.尚学堂马士兵_flex_0100_actionscript这个跟上面的不是一个体系,建议当做扩展来学习第一部分:j2se学习视频内容包括:尚学堂科技_马士兵_java视频教程_jdk5.0_下载-安装-配置尚学堂科技_马士兵_java视频教程_j2se_5.0_第01章_java简介_源代码_及重要说明尚学堂科技_马士兵_java视频教程_j2se_5.0_第02章_递归补充尚学堂科技_马士兵_java视频教程_j2se_5.0_第02章_基础语法尚学堂科技_马士兵_java视频教程_j2se_5.0_第03章_面向对象尚学堂科技_马士兵_java视频教程_j2se_5.0_第04章_异常处理尚学堂科技_马士兵_java视频教程_j2se_5.0_第05章_数组尚学堂科技_马士兵_java视频教程_j2se_5.0_第06章_常用类尚学堂科技_马士兵_java视频教程_j2se_5.0_第07章_容器尚学堂科技_马士兵_java视频教程_j2se_5.0_第08章_io尚学堂科技_马士兵_java视频教程_j2se_5.0_第09章_线程尚学堂科技_马士兵_java视频教程_j2se_5.0_第10章_网络尚学堂科技_马士兵_java视频教程_j2se_5.0_第11章_gui尚学堂科技_马士兵_java视频教程_j2se_5.0_专题_日期处理尚学堂科技_马士兵_java视频教程_j2se_专题_正则反射avi第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse 尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_java_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频第三部分数据库视频oracle视频内容包括:01——53讲avi格式第四部分:jdbc和mysql视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_连接池的设计思路.avi第五部分:html & css & js 视频:html & css 视频内容简介:01_html简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_表格和表单_1.avi05_表格和表单_2.avi06_frame.avi07_dreamweaver.avi08_css_1.avi09_css_2_选择方式.avi10_css_3.avi11_css_4.avijs 视频简介:01_js初步及调试.avi02_js基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_dom_bom.avi06_趣味.avi07_实用.avi08_表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_tree.avi第六部分:servlet & jsp视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化bbs项目4 网上商城项目视频4 网上商城项目视频讲解视频第七部分:j2ee学习视频包括:drp项目框架视频学习:struts视频hibernate视频spring视频提高部分:uml统一建模语言视频ssh项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频j2me_3g简介资料面试材料:面试题大汇总+笔记+技巧路线图明细下面给出第二节《java自学路线图》中知识点的明细:一:j2se 面向对象-封装、继承、多态内存的分析递归集合类、泛型、自动打包与解包、annotationio多线程、线程同步tcp/udpawt、事件模型、匿名类正则反射机制2:数据库(oracle或者mysql)sql语句多表连接,内外连接,子查询等管理表、视图、索引、序列、约束等树状结构存储存储过程、触发器数据库设计三范式、3:jdbcjdbc基础连接池树状结构存储与展现datasource & rowsetjdbc连接oracle及mysql4:html_css_jshtml、css、js基础语法js form判断dom编程基础(事件处理等)js常用效果如treeview、下拉联动等js学习方法js调试方法dreamweaver初步(建立html、table、form、css)等5:servlet & jsptomcat基础servlet基础web.xml配置基础web application的结构servlet生命周期request response等常用方法servletcontext类http协议基础(get post)cookiesessionapplicationjsp的几种语法(包括jstl等)注意在项目中练习,不要拘泥于语法细节而裹步不前。

尚学堂科技马士兵JAVA系列视频教程 全【VIP专享】

尚学堂科技马士兵JAVA系列视频教程 全【VIP专享】

尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。

马士兵 J2SE基础 概念总结

马士兵 J2SE基础 概念总结

基础概念(J2SE)(1_Java简介,2_基础语法)1.Java是解释型语言:java需要先编译为.class字节码文件,在执行时用解释器解释成操作系统能识别的文件。

需要经过两次操作。

Java:编译*.java源代码文件---编译器编译---*.class字节码文件,执行*.class字节码文件----解释器解释----操作系统能识别的文件C/C++: 编译 .C 源代码文件----编译器编译----*.exe字节码文件, 执行*.exe字节码文件----操作系统能识别的文件。

2.基础类型的包装类基础类型分配到栈,引用类型分配到堆基础类包装类int Integerchar Charaterboolean Boolean…转换:1. 当需要把String 转换为基础数据类型时,使用对应的基础数据类型的包装类里面的方法。

列:int a = Integer.parseInt(s);2. 将基本类型数据转换为String:int a = 2;String m = String.valueOf(a);3. String转char:String s = “Xforce”char a = s.charAt(1);(3_面向对象编程)重点:1.代码内存分析:06_内存解析_1, 07_内存解析_2,08_内存解析_3,14_TestCircle程序分析_1, 15_TestCircle程序分析_2, 15_TestCircle 程序分析_2.2.动态绑定和多态39_多态_1.avi 40_多态_2.avi 内存分析见39_多态_1.avi TestPolymoph\ Test.java父类引用指向子类对象解释:37_对象转型_1.avi3.抽象类、抽象方法4.接口一、对象和类的概念1.类是同种对象的集合与抽象,类中定义了这一类对象所应具有的静态和动态属性。

二、面向对象设计思想和步骤:(1)分析问题中有哪些类那些对象(2)分析这些对象中应该具有的属性和方法(3)分析类与类之间的关系三、Java类的定义四、局部变和成员变量局部变量:方法或语句块内部(方法的参数叫局部变量)(小)( 必须赋初试值才可以使用)成员变量:方法外部、类的内部(大), 不用初始化,java系统会给你赋初始值五、引用类型(C中的指针,占两块内存)六、构造函数构造函数是定义在java类中的一个用来初始化对象的函数1.构造函数名字与类的名字相同,大小写也保持一致2.使用new+构造方法创建一个新的对象3.构造函数与类同名切没有返回值。

java-hibernate笔记(讲义)-【尚学堂马士兵老师】

java-hibernate笔记(讲义)-【尚学堂马士兵老师】

java-hibernate笔记(讲义)-【尚学堂马士兵老师】知识点终结:1 新建项目2 学习建立user-library-hibernate,并加入相应的jar包a项目右键-build path-configure build path-add libraryb选择user-library,在其中新建library,命命为hibernatec 在该library中加入hibernate所需要的jar包hibernate3.3.2/hibernate3.jar/lib/required目录下的所有包6个Sl4j-nop jar3 引入mysql的JDBC驱动包4 在MYSQL中建数据库和相应的表student(id,name,age)5 建立hibernate配置文件hibernate.cfg.xml参考文档中COPY,修改对应的数据库连接,6 建立student类7 建立映射文件Student.hbm.xml 参考相应文档8 将映射文件加到hibernate-cfg.xml中搭建日志环境并配置显示DDL语句slf的实现:slf4j nodep ,log4j ,jdk logging api ,apache common-log.slf4j.nop.jar是slf-api.jar其相应的接口实现把slf的接口对到log4j的实现,在user library中hibernate,把slf的实现slf4j-nop-1.5.8.jar去掉,添加log4j的实现log4j-1.2.15.jar,再添加一个slf-api和log4j转换器slf4j-log4j12-1.5.8.jar.把slf的接口转换成log4j的接口.最后添加一个log4j的配置文件log4j.properties利用HIBERNA TE导出数据库建表//读取配置文件hibernate.cfg.xmlConfiguration cfg=new AnnotationConfiguration().configure();(有注解时使用AnnotationConfiguration),configure()可以手动指定配置文件名称. Configuration cfg=new Configuration(),会默认读取hibernate.properties文件//创建schemaExport对象import org.hibernate.tool.hbm2ddl.SchemaExport;SchemaExport export=new SchemaExport(cfg);//创建数据库表export.create(true, true);对象映射(采用Annotation注解方式)1 建表Create table teacher(id int primary key,name varchar(20),title varchar(20));2 创建teacher类,并进行注解@import javax.persistence.Entity;import javax.persistence.Id;在bean中加注解@ Entity,@Id(加在getId()上面)3 在hibernate中加入annotation相应的jar包hibernate-annotations.jar/lib目录下加入相应的包ejb3-persistence.jar, hibernate-commons-annotations.jar注意:annotation文档中并没有提到hibernate-annotations.jar包4 参考annotation文档建立对应的注解5 在hibernate.cfg.xml中建立映射<mapping class=”com.xx.xx”/>6 示例//AnnotationConfiguration;Configuration cfg=new AnnotationConfiguration();SessionFactory sf=cfg.configure().buildSessionFactory();Session session=sf.openSession();session.beginTransaction();session.save(t);//session.getTransaction().commit();session.close();sf.close();对象映射(采用配置文件方式)1 在相应的类中建立对应的配置文件.例如Student类对应的配置文件Student.hbm.xml<hibernate-mapping package="com.model"><class name="Student" table=" Student" ><id name="id" column="id"></id><property name="name" column="name" /><property name="age" column="age" /></class></hibernate-mapping>2 在hibernate.cfg.xml中添加该映射文件Student.hbm.xml即可<!-- 建立对应的配置文件关联相应的数据库表 --><mapping resource="com/model/Student.hbm.xml"/>注意包名的写法3 示例//读取配置文件hibernate.cfg.xmlConfiguration cfg=new Configuration().configure();//创建SessionFactorySessionFactory sf=cfg.configure().buildSessionFactory();//创建sessionSession session=sf.openSession();session.beginTransaction();session.save(s);session.getTransaction().commit();session.close();sf.close();hibernate.cfg.xml配置hibernate.hbm2ddl.auto属性取值: validate | update | create | create-drop在sessionfactory创建时,自动检查数据结构,或者将数据库schema(表)的DDL导出到数据库,使用create-drop时,在显式关闭sessionfactory时,将drop掉数据库schema.validate 加载hibernate时,验证创建数据库表结构create 每次加载hibernate,重新创建数据库表结构create-drop 加载hibernate时创建,退出是删除表结构update 加载hibernate自动更新数据库结构表名和类名不同的情况时,对表名进行配置1 在注解中import javax.persistence.Table;@Table(name=”TableName”)2 在XML文件中<hibernate-mapping package="com.model"><class name="Teacher" table="Teacher" >配置对应的table属性为相应的表名<id name="id" column="id"></id>…</class></hibernate-mapping>字段名和属性名相同,默认为对于annotation,如果什么注解都不写的话,相当于加了注解@Basic实体bean中所有的非static非transient的属性都可以被持久化, 除非你将其注解为@Transient.所有没有定义注解的属性等价于在其上面添加了@Basic注解. 通过@Basic注解可以声明属性的获取策略(fetch strategy):对于XML文件中不用写column.字段名和属性名不同时Annotation:@column(name=”column_name”)加上相应的getXXX()方法上XML:column属性不需要persistence的字段import javax.persistence.Transient;@ Transient 意思是说这个属性是透明的,不进行持久化,存储的时候不存进去映射日期和时间类型,指定时间精度Annotation:import javax.persistence.Temporal;@Temporal(TemporalType.TIME)XML:指定type<class name="Teacher" table="Teacher" ><id name="id" column="id"></id><property name="name" type="time" />type=time或date</class>枚举类型的转换@Enumerated(EnumType.STRING)字段映射的位置推荐写在gexXXX方法上在程序中通过Hibernate 来保存java.sql.Clob 或者java.sql.Blob 实例时,必须包含两个步骤:1 在一个数据库事务中先保存一个空的Blob 或Clob 实例。

尚学堂 马士兵 Java视频学习顺序

尚学堂 马士兵 Java视频学习顺序

第一阶段:J2SE基础数据结构正则表达式反射机制第零部分:60分钟零基础体验项目开发第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JA V A视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第01章_JA V A简介_源代码_及重要说明尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第05章_数组尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JA V A视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JA V A视频教程_J2SE_专题_正则表达式尚学堂科技_马士兵_JA V A视频教程_J2SE_专题_递归尚学堂科技_马士兵_JA V A视频教程_J2SE_专题_CLASSPA TH第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JA V A_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频补充知识:设计模式(一部分) ,Java Annotation,Java 反射,专题_日期处理,专题_正则表达式,另外建议补充数据结构的知识。

J2SE_9章

J2SE_9章

a. 在构造函数中输出一条线程已启动的信息
b. 在run()方法内,输出一条信息,表明执行了run()方法,然后调用sleep(),将 这两条语句重复6次,然后从run()返回。 3. 为Thread类撰写两个子类,其中一个的run()在启动后取得第2个Thread object reference,然后调用wait(). 另一个子类的run()在过了数秒之后调用notifyAll() ,唤醒第1个线程,使得第1个线程可以打印消息。
线程的状态
yield new Thread New start sleep、wait、suspend、I/O阻塞 Runnable sleep结束、notify、resume、I/O操作完成 run方法退出 stop方法调用 Not Runnable
stop方法调证:高优先级的线程能抢占低优先级的线程; 若高优先级的线程睡眠, 那么低优先级的线程将能获得运行的机会 2. 创建一个Thread类的子类,覆盖run()方法。要求:





每一个对象除了有一个锁之外,还有一个等待队列 (wait set),当一个对象刚创建的时候,它的等待 队列是空的。 我们应该在当前线程锁住对象的锁后,去调用该对 象的wait方法。 当调用对象的notify方法时,将从该对象的等待队列 中删除一个任意选择的线程,这个线程将再次成为 可运行的线程。 当调用对象的notifyAll方法时,将从该对象的等待 队列中删除所有等待的线程,这些线程将成为可运 行的线程。 wait和notify主要用于producer-consumer这种关 系中。

java笔记马士兵版

java笔记马士兵版

java笔记马士兵版第一章基础语法1.程序执行过程2.java变量的分类3.java数据类型的划分4.数据类型所占的空间大小注意:数值范围数值转换数据类型之间的转化5.运算逻辑符的关系6.do..while 和while的区别执行语句和判断语句执行先后的问题7.break和continue的区别(代码分析)8.方法形式参数:在方法被调用时接收外外界输入的数据。

实参:调用方法时实际传给方法的数据。

返回值:方法执行完毕后返还给调用它的环境的数据。

返回值类型:事先约定的返回值的数据类型,如无返回值,则返回值类型为void。

注意:第二章面向对象1.对象和类的概念2.java与面向对象、类的定义3.Java面向对象的基本概念—引用Java语言中除基本类型之外的变量类型都称之为---引用类型。

Java中的对象通过引用对其经行操作4.构造方法1.当赋值完毕后,栈空间的_id 和_age 会被清除。

2.当没有写构造函数时,编译器会自动添加形如类名(){} 的构造函数。

5.this关键字(代码分析)6.static关键字(代码、内存分析)注意:private static int sid=0; 存储在 data seg 中。

而其余的成员变量存储在stack中。

原因是 static关键字。

7.package和import的语句8.类的集成与权限控制9.方法的重写(代码分析)Super关键字:来引用基类的成分在cc.f()语句中,先执行的是基类的Syso 然后是子类的Syso10.继承中的构造方法11.toString、equals 方法12.对象转型13.动态绑定和多态(代码分析)14.抽象类●用abstract修饰一个方法时,这个方法是抽象方法。

●用abstract修饰一个类时,这个类是抽象的类。

●含有抽象方法的类,必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

●抽象类不能被实例化。

●抽象方法只需声明,而不需实例。

马士兵mysql视频的个人笔记

马士兵mysql视频的个人笔记

如果你的root现在有密码了,那么修改密码为abc的命令是:mysqladmin -u root -p password youyou 注意,命令回车后会问你旧密码,输入旧密码之后命令完成,密码修改成功。

---------02_mysql_startedcreate database mydata; //创建一个数据库use mydata; //使用当前已经创建的数据库create table dept //创建dept表(deptno int primary key,dname varchar(14),loc varchar(13)--部门位置);create table emp(empno int primary key,ename varchar(10),job varchar(10),mgr int,--所属经理编号hiredate datetime,--入职日期sal double,comm double,--奖金deptno int,foreign key (deptno) references dept(deptno) #外键deptno参考dept表的deptno);?:显示帮助信息\. 执行一个SQL的脚本文件,用一个文件名作为参数例如\. c:\\mysql_script\\mydata.sqlcreate table salgrade #创建薪水等级表salgrade(grade int primary key,losal int,hisal int);insert into dept values(10,'a','a');insert into dept values(20,'b','b');insert into dept values(30,'c','c');insert into dept values(40,'d','d');insert into dept(deptno,dname) values(50,'e');insert into dept values(60,'f','f');---------03_page_seperationshow databases; #查看当前MYSQL环境下有多少个数据库show tables; #查看当前使用中数据库下面有多少张表。

马士兵Spring课堂笔记(超级详细版)

马士兵Spring课堂笔记(超级详细版)

课程内容---…详细包括整合struts hibernate------------------------------------1.面向接口(抽象)编程的概念与好处2.IOC/DI的概念与好处a)inversion of controlb)dependency injection3.AOP的概念与好处4.Spring简介5.Spring应用IOC/DI(重要)a)xmlb)annotation6.Spring应用AOP(重要)a)xmlb)annotation7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要)a)opensessionInviewfilter(记住,解决什么问题,怎么解决)8.Spring JDBC面向接口编程…(面向抽象编程)1.场景:用户添加2.Spring_0100_AbstractOrientedProgramminga)不是AOP:Aspect Oriented Programming3.好处:灵活什么是IOC(DI),,,有什么好处1.把自己new的东西改为由容器提供a)初始化具体值b)装配<?xml version="1.0"?>-<beans><bean class="erDAOImpl" id="u"/>(class 是个类。

Id就等于构造了一个对象)<bean class="erService" id="userService"><property bean="u" name="userDAO"/> </bean>(把u这个对象注入到UserService这个类的一个userDAO的一个属性里)-</beans>2.好处:灵活装配Spring简介包括整合struts hibernate------------------------------------1.项目名称:Spring_0200_IOC_Introduction2.环境搭建a)只用IOCi.spring.jar , jarkata-commons/commons-loggin.jar3.IOC容器a)实例化具体beanb)动态装配4.AOP支持a)安全检查b)管理transactionSpring IOC配置与应用1.FAQ:不给提示:a)window – preferences – myeclipse – xml – xml catalogb)User Specified Entries – addi.Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsdii.URI:file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd iii.Key Type: Schema Locationiv.Key: /schema/beans/spring-beans-2.5.xsd2.注入类型a)Spring_0300_IOC_Injection_Typeb)setter(重要)c)构造方法(可以忘记)d)接口注入(可以忘记)3.id vs. Name(可以把Id换成name,没什么区别!)a)Spring_0400_IOC_Id_Nameb)name可以用特殊字符4.简单属性的注入a)Spring_0500_IOC_SimplePropertyb)<property name=… value=….>在配置文件里直接赋值!(在此简单属性为int和string,会自动转换)5.<bean 中的scope属性a)Spring_0600_IOC_Bean_Scopeb)singleton 单例(无论去多少次都是同一个bean)c)proptotype 每次创建新的对象6.集合注入a)Spring_0700_IOC_Collectionsb)很少用,不重要!参考程序7.自动装配a)Spring_0800_IOC_AutoWireb)byNamec)byTyped)如果所有的bean都用同一种,可以使用beans的属性:default-autowire-<bean class="erDAOImpl" name="userDAO"><property name="daoId" value="1"/> </bean><bean class="erDAOImpl" name="userDAO2"><property name="daoId" value="2"/> </bean><bean class="erService"autowire="byType" scope="prototype" id="userService"></bean> </beans>(这里会报错,因为有两个userDAO和UserDAO2都是int类型!)(如果说byname则会显示第一个的内容“1”!,因为UserService类里面的userDAO属性与第一个的名字一样!)8.生命周期a)Spring_0900_IOC_Life_Cycleb)lazy-init (不重要)c)init-method与destroy-methd 不要和prototype一起用(了解)<bean class="erDAOImpl" id="u"></bean><bean class="erService" id="userService" scope="prototype"destroy-method="destroy" init-method="init"></bean></beans>9.Annotation第一步:a)修改xml文件,参考文档<context:annotation-config />b)默认按类型by typec)如果想用byName,使用@Qulifierd)写在private field(第三种注入形式)(不建议,破坏封装)e)如果写在set上,@qualifier需要写在参数上f)10.@Resource(重要)a)加入:j2ee/common-annotations.jarb)默认按名称,名称找不到,按类型c)可以指定特定名称d)推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml11.@Component@Service @Controller @Repository(四个一样的功能!!)a)初始化的名字默认为类名首字母小写b)可以指定初始化bean的名字首先先加载ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); 即读beans.xml里面的内容,然后通过找从com.bjsxt开始“scan”含@component的类,找到之后就初始化对象,结果在其一个属相的set方法上找到一个源为“u”的一个bean,于是就加载那个bean!12.@Scope13.@PostConstruct = init-method;(在构造对象后执行此方法)@PreDestroy = destroy-method;(在容器销毁前执行此方法)什么是AOP1.面向切面编程Aspect-Oriented-Programminga)是对面向对象的思维方式的有力补充2.Spring_1400_AOP_Introduction3.好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码a)Filterb)Struts2的interceptor4.概念:a)JoinPoint 释意:切面与原方法交接点即切入点b)PointCut 释意:切入点集合是com.xyz.someapp.service.下面的任何类,任何方法,任何返回值的一个切入点的集合。

马士兵JAVA基础知识整理

马士兵JAVA基础知识整理

东北石油大学计算机与信息技术学院李勇勇Java语言基础知识整理一.计算机语言的发展史及历史地位第一代语言打孔机——纯机器语言 1.第二代语言 2.汇编第三代语言 3.(1)C、Pascal、Fortran面向过程的语言(2)C++面向过程/面向对象(3)java跨平台的纯面向对象的语言(4).NET跨平台语言4.java语言特点(1)一种面向对象的语言(2)一种平台无关的语言,提供程序运行的解释环境(3)一种健壮的语言,吸收了c/c++语言的优点,但去掉了影响程序健壮性的部分(如:指针、内存的申请与释放等)。

二.Java程序运行机制及运行过程1.java两种核心机制(1)Java虚拟机(Java Virtual Machine)(2)垃圾收集机制(Garbge Collection)2.java运行过程源程序(*.java文件)—>java编译器—>字节码(*.class文件)—>类装载器—>字节码校验器—>解释器—>操作系统平台4.java虚拟机(1)java虚拟机可以理解为是一个以字节码为机器指令的CPU。

(2)对于不同的运行平台有不同的虚拟机。

(3)Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。

5.垃圾收集机制(1)不再使用的内存空间应回收—垃圾收集。

(2)在c/c++语言中,由程序员负责回收无用的内存空间。

(3)Java语言消除了由程序员负责回收无用的内存空间的责任,它提供了一种系统级线程跟踪存储空间的分配情况,检查并释放那些可以被释放的存储器空间。

(4)垃圾收集在java程序运行过程中自动进行,程序员无法精确进行控制和干预。

三.Java Application初步1.java源文件以“java”为扩展名。

源文件的基本组成部分是类(class)。

2一个源文件最多只有一个public类,其他类的个数不限,如果源文件包括一个public类,它必须按该类名命名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章Java多线程机制线程基本概念Runnable线程类接口线程创建和启动线程的调度好优先级线程的状态控制sleep join yield线程同步synchronized wait notify/notifyAll1进程:一个独立程序的每一次运行称为一个进程。

执行进程是指进程里面主线程mian方法开始执行了(静态概念)。

机器上运行的都是线程2线程是一个程序不同的执行路径是一个程序内部的顺序控制流)main方法:一个主线程,主分支3一个时间点上一个CPU只能有一个线程执行每个进程都有独立的代码和数据空间,进程间的切换会有很大开销。

线程可以看成轻量级的进程同一类线程共享代码和数据空间,每个线程有独立的运行栈个程序计数器,线程切换开销小。

多线程:在操作系统中能同时运行多个任务(程序)。

多线程:在同一个应用程序中有多个顺序流同时执行。

二、线程的创建和启动1实现Runnable接口(常用)设计一个实现Runable接口的类,根据需要重写run方法;建立该类的对象,以此对象为参数建立Thread类的对象;调用Thread类对象start方法启动线程,将执行权转交到run方法。

2继承Thread类定义一个从Thread类继承的子类并重写其run方法然后生成该类的对象,调用Thread类对象start方法启动线程说明:Runnable接口ng.Runnable–Java多线程机制的一个重要部分,实际上它只有一个run()方法–Thread类实现了Runnable接口,相对于Thread类,它更适合于多个线程处理同一资源–实现Runnable接口的类的对象可以用来创建线程,这时start方法启动此线程就会在此线程上运行run()方法–在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程Thread类ng.Thread–在Java程序中创建多线程的方法之一是继承Thread类–封装了Java程序中一个线程对象需要拥有的属性和方法–从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。

这个子类应该重写Thread 类的run方法,在run方法中写入需要在新线程中执行的语句段。

这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。

原线程将同时继续往下执行–Thread类直接继承了Object类,并实现了Runnable接口。

它位于ng包中,因而程序开头不用import 任何包就可直接使用例子:Thread\TestThread1.java 开始使用Eclipse1实现Runnable接口(多线程程序交替执行.多态(接口,常用))package Thread;public class TestThread1 {public static void main(String args[]) {Runner r = new Runner();Thread t = new Thread(r);//主线程;t.start();//启动分支线程for(int i=0; i<100; i++) {System.out.println("Main Thread:----" + i);}}}class Runner implements Runnable {public void run() {//线程运行体;for(int i=0; i<100; i++) {System.out.println("Runner1 :" + i);}package Thread;public class TestThread1_1 {public static void main(String args[]) {Runner1 r = new Runner1();r.run();for(int i=0; i<100; i++) {System.out.println("Main Thread:------" + i);}}}class Runner1 implements Runnable {public void run() {for(int i=0; i<100; i++) {System.out.println("Runner1 :" + i);}}}3继承Thread类(继承,不常用)package Thread;public class TestThread1_2{public static void main(String arg[]){Runner1_2 r = new Runner1_2();r.start();for (int i = 0 ;i <= 100; i++){System.out.println("Main Thread:!!!!"+i);}}}class Runner1_2 extends Thread{public void run(){for (int i = 0 ;i <= 100; i++){System.out.println("Runner2:!!!!"+i);}}}2010-4-2 21:04:16 – 2010-4-14 16:28:59三、线程状态转换四、线程控制基本方法Sleep/Join/Yield方法Sleep/Join(需要捕获异常)例子1 Thread/TestInterrupt.Java (线程结束的方式)package Thread;import java.util.*;public class TestInterrupt {public static void main(String arg[]){MyThread thread = new MyThread();thread.start();try{Thread.sleep(10000);}//主线程睡眠…catch(InterruptedException e){}thread.interrupt();//中断线程。

}}class MyThread extends Thread{boolean flag = true;public void run(){//重写的方法不能抛出不必被重写方法不同的方法,此处不能写throws InterruptedException while(flag){System.out.println("----"+ new Date()+"----");try{sleep(1000);}catch(InterruptedException e){//捕获抛出的异常return;//停止}}}}例子2 Thread/TestJoin.Java (线程合并方式)package Thread;public class TestJoin {public static void main(String[] args) {MyThread2 t1 = new MyThread2("abcde");t1.start();//启动分支线程try {t1.join();//把T1分支线程合并到当前线程} catch (InterruptedException e) {}for(int i=1;i<=10;i++){System.out.println("i am main thread");}}}class MyThread2 extends Thread {MyThread2(String s){super(s);}public void run(){for(int i =1;i<=10;i++){System.out.println("i am "+getName());try {sleep(1000);} catch (InterruptedException e) {return;}}}}例子3 Thread/TestYield.Java (让出Cup)package Thread;public class TestYield {public static void main(String[] args) {MyThread3 t1 = new MyThread3("t1");MyThread3 t2 = new MyThread3("t2");t1.start(); t2.start();}}class MyThread3 extends Thread {MyThread3(String s){super(s);}public void run(){for(int i =1;i<=100;i++){System.out.println(getName()+": "+i);if(i%10==0){yield();}}}}五、线程优先级Priority例子Thread/TestPriority.Javapackage Thread;public class TestPriority {public static void main(String[] args) {Thread t1 = new Thread(new T1());Thread t2 = new Thread(new T2());t1.setPriority(Thread.NORM_PRIORITY + 3);//提高优先级t1.start();t2.start();}}class T1 implements Runnable {public void run() {for(int i=0; i<1000; i++) {System.out.println("T1: " + i);}}}class T2 implements Runnable {public void run() {for(int i=0; i<1000; i++) {System.out.println("------T2: " + i);}}}2010年4月14日21:40:41 – 2010-4-15 16:23:44六、例子TestThread2-6TestThread2一个线程类可以启动两个线程package Thread;public class TestThread2 {//一个线程类可以启动两个线程public static void main(String args[]) {Runner2 r = new Runner2();Thread t1 = new Thread(r);Thread t2 = new Thread(r);t1.start();t2.start();}}class Runner2 implements Runnable {public void run() {for(int i=0; i<30; i++) {System.out.println("No. " + i);}}}正常停止线程TestThread4package Thread;public class TestThread6 {public static void main(String args[]){Thread t = new Runner6();t.start();for(int i=0; i<50; i++) {System.out.println("MainThread: " + i);}}}class Runner6 extends Thread {public void run() {System.out.println(Thread.currentThread().isAlive());for(int i=0;i<50;i++) {System.out.println("SubThread: " + i);}}}七、线程同步引入:两人同时取同一账户的钱两个线程访问同一资源,进程之间协调的问题解决:在进程访问独占资源时先锁定再访问synchronized 最好只锁定一个对象package Thread;public class TestSync implements Runnable {Timer timer = new Timer();public static void main(String[] args) {TestSync test = new TestSync();Thread t1 = new Thread(test);Thread t2 = new Thread(test);t1.setName("t1");t2.setName("t2");t1.start();t2.start();}public void run(){timer.add(Thread.currentThread().getName());//拿到当前线程的名字}}class Timer{private static int num = 0;public void add(String name){//public synchronized void add(String name){ //synchronized "锁定"关键字//synchronized (this) {//锁定num ++;try {Thread.sleep(1);} //让线程睡眠,给另一个线程执行的机会,更容易看到xiacatch (InterruptedException e) {}System.out.println(name+", 你是第"+num+"个使用timer的线程");//}}}t2, 你是第2个使用timer的线程t1, 你是第2个使用timer的线程问题出现在线程执行方法时被另一个线程打断了.07_线程同步_3.aviThread/TestDeadLock.java两个线程锁定了互斥的对象package Thread;//一个线程类模拟两个线程。

相关文档
最新文档