第一篇:Java学习之Iterator(迭代器)的一般用法
迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1)使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2)使用next()获得序列中的下一个元素。
(3)使用hasNext()检查序列中是否还有元素。
(4)使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
迭代器应用:
list l = new ArrayList();l.add(“aa”);l.add(“bb”);l.add(“cc”);for(Iterator iter = l.iterator();iter.hasNext();){
String str =(String)iter.next();System.out.println(str);} /*迭代器用于while循环
Iterator iter = l.iterator();while(iter.hasNext()){
String str =(String)iter.next();System.out.println(str);} */
第二篇:java之webservice_aegis.xml学习
*.aegis.xml学习
public interface UserInfo {
public User findUserInfosByUserID(String userUniqueID);
public String test();
public Collection findRoleInfosByUserID(String userUniqueID);
}
观察此接口,受限我们看findRoleInfosByUserID方法,此方法传入String,返回类型为Collection,此时,我们即需要配置findRoleInfosByUserID方法。
配置步骤,在接口类的同一包下建立和接口名相同的aegis.xml文件,即UserInfo.aegis.xml文件。
UserInfo.aegis.xml
Java代码
其中,method代表需要配置的方法名,由于XFire可以支持基本类型,针对集合类型时,需要配置,返回类型或参数类型为基本类型时不需要特殊配置。
此时,findRoleInfosByUserID方法配置完毕
PS,还拿此接口举例,如接口中,findRoleInfosByUserID接受的参数也为集合类型,那么需要在
Java代码
index=“0”代表方法的参数的序号,0即第一个参数。
componentType代表集合参数内包含的类型,也可以为自定义对象,例如User
注意,如果findRoleInfosByUserID方法有两个参数,一个比如为String,一个为集合,那么只需要配置集合参数即可。
二。映射POJO
比如还是上面的UserInfo接口,第一个方法
public User findUserInfosByUserID(String userUniqueID);
此时,返回类型为User
如果User中仅为基本类型,例如String,int等基本类型,无需配置User
但如果User中还包含有其他类型,比如包含有Set,List,那么需要对其进行配置
比如User代码如下:
Java代码
public class User implements java.io.Serializable {
private Integer userId;
private String loginName;
private String userPassword;
private Integer SOrder;
private String userCa;
private String userName;
private String userTel;
private String userEmail;
private String ZNote;
private String userCode;
private DicSystemAuth SDicSystemAuth;private
Set SGroupUsers = new HashSet(0);private Set
SUserDepts = new HashSet(0);
}
此时User中还包含有SDicSystemAuth的对象,以及SUserDepts等Set集合这种情况主要可能会出现在使用Hibernate,映射一对一,一对多表时
这里要特别注意
那么此时我们需要对User进行aegis绑定,控制POJO和XML的映射
配置方法:
在User对象所在包内建立User.aegis.xml
由于User中包含Set,那么只需要对集合做设置即可,DicSystemAuth下面单独讨论
我们可以分两次来配置,分别讲解
1,Java代码
此时,配置文件中配置了两个Set集合,componentType明确定义了Set集合内包含的内容
此时,DicSystemAuth即便是自定义的对象类,由于不是集合,XFire也可以对其正确映射。
Java代码
第二种方式,定义了三个字段,并使用了ignore属性,表示这三个属性不能被序列化。
那么,何时会遇到类似于User中Set集合,不被序列化呢?
当客户端访问本地代理时,如果User表内包含有其他表的关联时,如果基于hibernate的持久层,由于hibernate的惰性加载机制,加载User时仅会将User中的属性值加载而不会加载关联表中的值,比如set和SDicSystemAuth对象等,当客户端访问本地代理,序列化User对象时,如果没有设置关联字段是否序列化,那么它会将其全部序列化,但当序列化时,由于hibernate的惰性加载,此时Session已经关闭,那么在序列化关联字段的时候,就会出现session was close的异常。因此解决办法是在aegis绑定时制定关联字段的ignore属性设置为true。
还有一种解决办法,就是仍然按照第一种配置方式,明确指明关联的Set集合内的对象,但在执行序列化前,session关闭之前,提前将关联字段内的值初始化。
用Hibernate.initialize初始化
最后补充一小句
XFire对于自定义的对象可以聪明的找到,前提是它不包含集合例如你的方法返回一个User对象
User中都是基本类型,或者User中包含有Dept对象的引用,都没有问题。
但如果你不希望加载user时序列化Dept出问题,就乖乖把dept初始化或将dept的ignore属性设置为true
本篇文章没什么头绪,想哪儿写哪儿,主要是对这段时间的xfire的基本的学习的一个小结,所以没有太注重词语搭配,以看懂为主。。有时间再来整理整理
注意问题:
当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型,自定义对象类型)时,需要进行绑定,此时aegis的绑定为建立 xxxx.aegis.xml的文件(xxxx为对应的实
体名,如User.aegis.xml)。对于正常的String,int类型的数据,无需做特别说明就能映射。对于Collection类型,需要如下配置:(例如User对象里包含一个roleList属性)
这是如果你的Role对象里都是基本数据类型,则可以不写Role.aegis.xml,但如果Role对象里也有其他类型的对象,则同样需 要配置Role.aegis.xml。
当然如果你不想映射roleList,可以这么配置(所以无需映射的属性都可以这样配置):
注意:对于一些非标准的写法需要做特殊处理。
例如:在User实体类里有一个方法getOrg(),返回Department对象,但是User实体里面并没有org属性(正因为如此,我称之为非标准写法),这个时候,如果不特殊处理,此处会出现如下异常:
java.lang.StackOverflowError
at com.ctc.wstx.sw.BaseNsStreamWriter.closeStartElement(BaseNsStreamWriter.java:387)
at com.ctc.wstx.sw.BaseNsStreamWriter.checkStartElement(BaseNsStreamWriter.java:436)
at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:257)
at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:318)
at org.codehaus.xfire.aegis.stax.ElementWriter.writeStartElement(ElementWriter.java:116)
at org.codehaus.xfire.aegis.stax.ElementWriter.
at org.codehaus.xfire.aegis.stax.ElementWriter.getElementWriter(ElementWriter.java:161)
at org.codehaus.xfire.aegis.type.basic.BeanType.getWriter(BeanType.java:421)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:386)
………………
此时你无法跟踪。
解决办法:在User实体里增加一个org属性,在User.aegis.xml里增加对org属性的配置就行了。
客户端访问方法:
package com.nstar.xfire.client;
import java.util.List;
import java.net.MalformedURLException;
import java.util.ArrayList;
import org.codehaus.xfire.*;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.nstar.xfire.IHelloWordService;
import com.nstar.xfire.Student;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args){
Service serviceModel = new ObjectServiceFactory().create(IHelloWordService.class);
XFireProxyFactory factory =
XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url = “http://10.232.75.61:8090/Xfire/services/HelloWordService”;
new
try {
IHelloWordService service =(IHelloWordService)factory.create(serviceModel, url);
List list = new ArrayList();
List list1 = new ArrayList();
list.add(new String(“测试”));
int age = service.getAge(“边苏涛”);
String name = service.getName(1);
Student s = service.getOneStudent(27);
list1 = service.getStudent(list);
System.out.println(“边苏涛's age ==”+age);
System.out.println(“学号为1的学生姓名 ”+name);
System.out.println(“age == ”+s.getAge()+“ name == ”+s.getName()+“ list content ”+s.getList().get(0).toString());
System.out.println(list1.size());
for(int i=0;i System.out.println(list1.get(i).toString()); } } catch(MalformedURLException e){ e.printStackTrace(); } } } 学习JAVA之前有必要学习C++吗? 在很多大学计算机或软件专业的教程中,C语言及C++往往作为必修课,JAVA往往作为选修或限修课程。C语言是应用最广的语言,在很多工科专业,如机械、电气、通信等都会开设C语言课程。而C++和JAVA作为高级语言,则往往只有计算机类相关专业开设。那么,作为一个想要往软件领域发展的童鞋来说,先学C++还是先学JAVA?如果打算毕业从事java开发,有必要学习C++吗?下面就针对这个问题给大家以简要分析: JAVA和C++基本思想相同 JAVA和C++都是面向对象思想,同属于高级编程语言。一般来说,做任何高级开发,使用两种编程语言都可以实现。JAVA可以算是C++的表亲,C++也算是JAVA的前辈。JAVA是参照C++的精髓而创造出的编程语言。JAVA希望能取代C++,同时使编程变得简单。JAVA比C++简单 JAVA比C++简单的多,因为C++里有许多比较难的概念,尤其对于初学者来说,比JAVA要难的多。JAVA的初衷就是要比C++简单,而JAVA比C++多的一个优势即时跨平台性,这实际上也使java变得简单,由此可见,JAVA创始人的目的就是使java变成一门容易掌握且强大的简单高级语言。 时间充足的大学生最好了解一下C++ 大学生时间比较充足,所以学一下C++还是很有必要的。因为C++中有些内容是非常巧妙的,C++在性能方面要强于JAVA。当然,是先学C++再学java,还是后学C++,都无关紧要了,实际上两者基础部分差不多,从继承和多态处才开始不同。 快速学习者最好精于一门 编程语言,一通百通。你精通了一门,学习其他的就很快了。如果你时间不充足,比如上java培训班的同学们,时间紧迫,不可能兼顾学习java和c++,肯定是从一门由始而终的学到底。这样能够比较快的掌握编程语言,以后时间宽松,则需要多接触一下其他技术,丰富自己的知识技能体系,使自己成为一个真正的“能手”。 Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容 器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。 主观的印象:Docker 使用 Go 语言编写,用 cgroup 实现资源隔离,容器技术采用 LXC.提供了能够独立运行Unix进程的轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式。LXC命令有些复杂,若感兴趣,这里有 一篇我以前写的基于LXC,(从无到有,搭建一个简单版的JAVA PAAS云平台),可以提前复习一下。 环境 本文所有环境,VMware WorkStation上运行ubuntu-13.10-server-amd64,注意是64位系统,理论上其它虚拟机也是完全可行的。 安装Docker Docker 0.7版本需要linux内核 3.8支持,同时需要AUFS文件系统。# 检查一下AUFS是否已安装 sudo apt-get update sudo apt-get install linux-image-extra-`uname-r` # 添加Docker repository key sudo sh-c “wget-qO-https://get.docker.io/gpg | apt-key add-”# 添加Docker repository,并安装Docker sudo sh-c “echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list” sudo apt-get update sudo apt-get install lxc-docker # 检查Docker是否已安装成功 sudo docker version # 终端输出 Client version: 0.7.1 Go version(client): go1.2 Git commit(client): 88df052 Server version: 0.7.1 Git commit(server): 88df052 Go version(server): go1.2 Last stable version: 0.7.1 去除掉sudo 在Ubuntu下,在执行Docker时,每次都要输入sudo,同时输入密码,很累人的,这里微调一下,把当前用户执行权限添加到相应的docker用户组里面。# 添加一个新的docker用户组 sudo groupadd docker # 添加当前用户到docker用户组里,注意这里的yongboy为ubuntu server登录用户名 sudo gpasswd-a yongboy docker # 重启Docker后台监护进程 sudo service docker restart # 重启之后,尝试一下,是否生效 docker version #若还未生效,则系统重启,则生效 sudo reboot 安装一个Docker运行实例-ubuntu虚拟机 Docker安装完毕,后台进程也自动启动了,可以安装虚拟机实例(这里直接拿官方演示使用的learn/tutorial镜像为例): docker pull learn/tutorial 安装完成之后,看看效果 docker run learn/tutorial /bin/echo hello world 交互式进入新安装的虚拟机中 docker run-i-t learn/tutorial /bin/bash 会看到: root@51774a81beb3:/# 说明已经进入交互式环境。 安装SSH终端服务器,便于我们外部使用SSH客户端登陆访问 apt-get update apt-get install openssh-server which sshd /usr/sbin/sshd mkdir /var/run/sshd passwd #输入用户密码,我这里设置为123456,便于SSH客户端登陆使用 exit #退出 获取到刚才操作的实例容器ID #docker ps-l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 51774a81beb3 learn/tutorial:latest /bin/bash 3 minutes ago Exit 0 thirsty_pasteur 可以看到当前操作的容器ID为:51774a81beb3。注意了,一旦进行所有操作,都需要提交保存,便于SSH登陆使用: docker commit 51774a81beb3 learn/tutorial 以后台进程方式长期运行此镜像实例: docker run-d-p 22-p 80:8080 learn/tutorial /usr/sbin/sshd-D ubuntu容器内运行着的SSH Server占用22端口,-p 22进行指定。-p 80:8080 指的是,我们ubuntu将会以8080端口运行tomcat,但对外(容器外)映射的端口为80。 这时,查看一下,是否成功运行。 #docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 871769a4f5ea learn/tutorial:latest /usr/sbin/sshd-D About a minute ago Up About a minute 0.0.0.0:49154->22/tcp, 0.0.0.0:80->8080/tcp focused_poincare 注意这里的分配随机的SSH连接端口号为49154: ssh root@127.0.0.1-p 49154 输入可以口令,是不是可以进入了?你一旦控制了SSH,剩下的事情就很简单了,安装JDK,安装tomcat等,随你所愿了。以下为安装脚本: # 在ubuntu 12.04上安装oracle jdk 7 apt-get install python-software-properties add-apt-repository ppa:webupd8team/java apt-get update apt-get install-y wget apt-get install oracle-java7-installer java-version # 下载tomcat 7.0.47 wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.47/bin/apache-tomcat-7.0.47.tar.gz # 解压,运行 tar xvf apache-tomcat-7.0.47.tar.gz cd apache-tomcat-7.0.47 bin/startup.sh 默认情况下,tomcat会占用8080端口,刚才在启动镜像实例的时候,指定了-p 80:8080,ubuntu镜像实例/容器,开放8080端口,映射到宿主机端口就是80。知道宿主机IP地址,那就可以自由访问了。在宿主机上,通过curl测试一下即可: curl http://192.168.190.131 当然,你也可以使用浏览器访问啦。 真实情况,可能不会让tomcat直接对外开放80端口,一般都会位于 nginx/apache或者防火墙的后面,上面仅为演示。 小结 在Docker帮助下搭建一个Tomcat运行时环境,总体很简单,让我们看到了PAAS的身影。不错,使用Docker作为PAAS底层服务,本身就不复杂。下面有时间,会谈一谈如何使用脚本文件构建一个镜像实例,同时会谈一谈Docker的实现原理和机制等。 Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境 前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人。如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不为呢。好在Docker提 供了Dockerfile作为构建Docker镜像脚本,避免人们一行一行的输入,真是善莫大焉。Dockerfile脚本可以做到随时维护修改,即可以 分享,更有利于在模板化,更不用说传输了,好处那是一大箩筐! 最终目的:打造一个支持SSH终端登录、Tomcat7自动运行的Docker镜像。编写一个Dockerfile 所有环境,同第一篇文字。在ubuntu下安装好vim之后(吐槽一下,ubuntu系统内置vi命令十分难用,只好求助于vim): sudo vim Dockerfile 编辑一个Dockerfile文件了,下面就是具体文件内容: # VERSION 0.0.1 # 默认ubuntu server长期支持版本,当前是12.04 FROM ubuntu # 签名啦 MAINTAINER yongboy “yongboy@gmail.com” # 更新源,安装ssh server RUN echo “deb http://archive.ubuntu.com/ubuntu precise main universe”> /etc/apt/sources.list RUN apt-get update RUN apt-get install-y openssh-server RUN mkdir-p /var/run/sshd # 设置root ssh远程登录密码为123456 RUN echo “root:123456” | chpasswd # 添加orache java7源,一次性安装vim,wget,curl,java7,tomcat7等必备软件 RUN apt-get install python-software-properties RUN add-apt-repository ppa:webupd8team/java RUN apt-get update RUN apt-get install-y vim wget curl oracle-java7-installer tomcat7 # 设置JAVA_HOME环境变量 RUN update-alternatives--display java RUN echo “JAVA_HOME=/usr/lib/jvm/java-7-oracle”>> /etc/environment RUN echo “JAVA_HOME=/usr/lib/jvm/java-7-oracle”>> /etc/default/tomcat7 # 容器需要开放SSH 22端口 EXPOSE 22 # 容器需要开放Tomcat 8080端口 EXPOSE 8080 # 设置Tomcat7初始化运行,SSH终端服务器作为后台运行 ENTRYPOINT service tomcat7 start && /usr/sbin/sshd-D 需要注意: 1.ENTRYPOINT,表示镜像在初始化时需要执行的命令,不可被重写覆盖,需谨记 2.CMD,表示镜像运行默认参数,可被重写覆盖 3.ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一个生效 多个存在,只有最后一个生效,其它无效! 4.需要初始化运行多个命令,彼此之间可以使用 && 隔开,但最后一个须要为无限运行的命令,需切记! ENTRYPOINT/CMD,一般两者可以配合使用,比如: ENTRYPOINT [“/usr/sbin/sshd”] CMD [“-D”] 在Docker daemon模式下,无论你是使用ENTRYPOINT,还是CMD,最后的命令,一定要是当前进程需要一直运行的,才能够防容器退出。 以下无效方式: ENTRYPOINT service tomcat7 start #运行几秒钟之后,容器就会退出CMD service tomcat7 start #运行几秒钟之后,容器就会退出 这样有效: ENTRYPOINT service tomcat7 start && tail-f /var/lib/tomcat7/logs/catalina.out # 或者 CMD service tomcat7 start && tail-f /var/lib/tomcat7/logs/catalina.out 这样也有效: ENTRYPOINT [“/usr/sbin/sshd”] CMD [“-D”] 具体请参考官方文档:Dockerfiles for Images kunming.offcn.com 2018昆明教师招聘考试:学习的一般理论之认知主 义 一、知识来源 本知识点来自于《教育学心理学》,“学习的基本理论”章节,本章节首先介绍了学习的本质和学习的基本分类,学生在充分的了解了学习的基本概念之后,学习“学习理论”的内容,整体知识的条理性会比较清晰。 二、考情分析 题型:客观题,选择题居多。 考察类型:单选题呈现例子,要求学生能够区分不同的心理学家的观点,以及同一个心理学家的不同的观点,例如:布鲁纳的结构主义和发现学习;奥苏贝尔的有意义的学习;加涅信息加工的阶段。 三、知识点详情 (一)认知主义认为知识客观存在的,学习是个体主动地在头脑内部构建认知结构的过程,不同的心理学家认为,学习者头脑中建构的认知结构是不同的;是通过顿悟与理解获得期待。 (二)苛勒:完形——顿悟说 1.观点:学习是个体利用本身的智慧与理解力对情境及情境与自身关系的顿悟,而不是动作的累积或盲目的尝试,苛勒反对桑代克的“完形-顿悟说”。 2.实验:黑猩猩取香蕉 3.学习的实质是在主体内部构造完形 苛勒认为,学习过程中问题的解决,都是由于对情境中事物关系的理解而构成一种“完形”来实现的。 更多公职类考试信息和资料 kunming.offcn.com (三)托尔曼的符号学习理论 1.实验:白鼠迷宫实验 2.托尔曼的学习理论基本观点 (1)学习是有目的的行为,而不是盲目的。 (2)学习是对“符号——完形”的认知(形成认知地图)。 (3)在外部刺激(S)与行为反应(R)之间存在中介变量(O)。主张将行为主义S—R公式改为S—O—R,O代表机体的内部变化。 (4)潜伏学习:托尔曼认为,外在的强化并不是学习产生的必要因素,不强化也会出现学习。 (四)布鲁纳的认知结构学习理论 布鲁纳主张学习的目的在于以发现学习的方式,使学科的基本结构转变为学生头脑中的认知结构。因此,他的理论常被称为认知结构论或认知发现说。而布鲁纳强调的认知结构指的是学科结构的建构。 1.学习观 (1)学习的实质是主动的形成认知结构 布鲁纳认为,学习的本质是主动的形成认知结构。学习者不是被动地接受知识,而是主动地获取知识,并通过把新获得的知识和已有的认知结构联系起来,积极地建构其知识体系。 (2)学习包括获得、转化和评价三个过程 获得:新知识的获得;转化:转变给定信息,以适合新任务,并获得更多的知识;评价:评价是对知识转化的一种检查,处理知识的方法是否适合新的任务,或者运用得是否正确。 更多公职类考试信息和资料 kunming.offcn.com 2.教学观 (1)教学的目的在于理解学科的基本结构 由于布鲁纳强调学习的主动性和认知结构的重要性,所以他主张教学的最终目标是促进学生对学科结构的一般理解。 学科的基本结构,是指学科的基本概念、基本原理、基本态度和方法。而掌握学科的结构,应该是学习知识方面的最低要求。因此,布鲁纳把学科的基本结构放在设计课程和编写教材的中心地位,让它成为教学的中心。 (2)提倡发现学习 所谓发现,不只限于发现人类尚未知晓的事物的行动,而且还包括用自己头脑亲自获得知识的一切形式。 A.发现学习有以下四点作用:①提高智能的潜力。②使外部奖赏向内部动机转移。③学会将来作出发现的最优方法和策略。④帮助信息的保持和检索。 B.发现学习有以下四个特点:①强调学习的过程,而不只是最后的结果。②强调直觉思维。③强调内部动机。④强调信息的组织、提取,而不只是存储。 (3)掌握学科基本结构的教学原则 ①动机原则。②结构原则。③程序原则。④强化原则。(口诀:动结程强) (五)奥苏贝尔的有意义学习的接受学习 1.有意义学习的实质及条件 有意义学习的实质是将新知识与已有知识建立起非人为(内在的)的和实质性(非字面)的联系。非人为的指的是知识本身的联系,认为没有办法改变。(例如:四边形内角和360度,对角线划分分成两个三角形,每个三角形内角和180度)实质性的指知识有可能表述不同,但是本身的含义是一样的。(例如:“创可贴”和“OK绷”) 有意义学习的条件:①学习材料具有逻辑意义;②有意义学习的心向;③学习者认知结构中必须具有适当的知识,以便与新知识进行联系。(三者缺一不可) 2.有意义学习的类型 (1)表征学习:表征学习是最低层次的一种学习方式,指学习一个符号或一组符号所代表的事物和意义。(“鱼”这个字所代表的的事物) (2)概念学习:概念是同类事物的共同关键特征或本质特征,是区分事物的关键。(鱼是生活在水中的,有鳞有鳍的用鳃呼吸的冷血动物。所有的鱼都符合这样的特点。) (3)命题学习:概念和概念之间的关系。(例如:鲸不是鱼.其中涉及到鱼和鲸两个概念) 3.意义的同化 更多公职类考试信息和资料 kunming.offcn.com 奥苏贝尔认为,学生能否习得新知识,主要取决于他们认知结构中已有的有关观念,有意义学习是通过新信息与学生认知结构中已有的有关观念的相互作用才得以发生的,这种相互作用的结果导致了新旧知识的意义的同化。 4.组织学习的原则与策略 (1)逐渐分化原则:即首先应该传授最一般的、包摄性最广的观念,然后根据具体细节对它们逐渐加以分化,这样可以为每个知识单元的教学都提供理想的固定点,即对新知识起固定作用的先前知识。 (2)整合协作原则:是指如何对学生认知结构中现有要素重新加以组合。奥苏贝尔认为所有导致整合协调的学习,同样也会导致学生现有知识的进一步分化。因此,整合协调是意义学习中发生的认知结构逐渐分化的一种形式。 (3)先行组织者策略:奥苏贝尔任务要产生有意义学习,新旧知识必须能够建立起来联系,但是我们平时在学习的过程中并不是所有的新知识和旧知识都能建立起来联系,这时候需要人为的制造条件,使新旧知识之间能够建立起来联系,因此奥苏贝尔提出了先行组织者策略。 先行组织者策略有四个条件:首先,先行组织者不是人,是一个学习材料;其次先行组织者要先于学习的新知识呈现;再次,先行组织者的概念要比新知识的概念要大;最后,先行组织者要和新旧知识均有联系。 例如:学生之前学了四边形的概念即四条线段组成的封闭图形;今天老师要给学生讲正方形的概念,在上课之前给学生呈现了“对边平行且相等的四边形是平行四边形”的概念,在给学生讲“有一个角是直角,且四条线段相等的平行四边形是正方形”的概念。其中平行四边形的概念就属于先行组织者。 “组织者”可分为两类:一类是陈述性“组织者”,当学生面对学习任务,倘若其认知结构中缺乏适当的上位观念可以用来同化新知识,则可以设计一个概括与包容水平高于要学习的新材料的组织者,目的在于为新知识提供类属者,与新知识产生上位关系。 另一类是比较性“组织者”,用于较熟悉的学习材料中,其目的在于比较新材料与认知结构中相类似的材料,从而增强似是而非的新旧知识之间的可辨别性,并为这些新观念提供稳定的固定点。 5.接受学习 与布鲁纳的发现学习观点相反,奥苏贝尔认为,学生的学习主要是接受学习,学习应该是通过接受而发生,而不是通过发现。他把强调接受学习的教学方法叫做“讲解教学”。 (六)加涅——学习的信息加工论观点 更多公职类考试信息和资料 kunming.offcn.com 1.学习过程的八个阶段 (1)动机阶段:激发动机和兴趣; (2)了解阶段:选择学习内容; (3)获得阶段:所学的东西进入了短时记忆; (4)保持阶段:所学信息进入长时记忆; (5)回忆阶段:提供线索帮助学生检索、回忆信息; (6)概括阶段:获得的知识迁移到新的情境; (7)操作阶段:应用所学信息; (8)反馈阶段:评价应用结果。 (七)重点知识总结 认知主义强调学习者对知识的主动建构的过程,知识是客观存在的,其中,不同的心理学家认为学习者形成的认知结构不同。 格式塔学派苛勒反对桑代克的试误说,认为学习是“完形-顿悟”的过程;托尔曼认为学习者是形成认知地图的过程;布鲁纳认为学习是学习者通过发现学习建构学科结构的过程;奥苏贝尔的有意义的接受学习,强调新旧知识之间的关系,强调旧知识的重要性;加涅提出信息加工理论,提出学习的八阶段。 四、历年考题 奥苏贝尔认为学生的学习主要是()。 A.机械学习B.有意义的发现学习 C.有意义的接受学习D.研究性学习 【答案】C。解析:奥苏贝尔提出学习是有意义的接受学习,强调学生通过学生以接受的方式,理解新旧知识之间的关系。故选C选项。A选项,指不理解新旧知识之间的关系的学习,如三岁的孩子能背诵五百首唐诗;B选项,如:科学家进行科学钻研;D选项研究性学习是一种以学生为主的学习模式。在教师的辅助下,由学生策划、执行及自我评估的学习方法。它是一种跨学科的学习技巧。学生透过研习一个特定的专题的同时,运用现有的知识和技巧来重新综合,并透过进行一些特定的活动,使学生能自主地建构知识,继而学会这个新的题目,而达至学会学习的目的,并培养学生的自学精神。 更多昆明教师考试信息关注昆明中公教育信息网 更多公职类考试信息和资料第三篇:学习JAVA之前有必要学习C++吗
第四篇:Docker学习笔记之,搭建一个JAVA Tomcat运行环境
第五篇:2018昆明教师招聘考试:学习的一般理论之认知主义