第一篇: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昆明教師招聘考試:學習的一般理論之認知主義