第一篇:Java學(xué)習(xí)之Iterator(迭代器)的一般用法
迭代器(Iterator)
迭代器是一種設(shè)計(jì)模式,它是一個(gè)對象,它可以遍歷并選擇序列中的對象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級”對象,因?yàn)閯?chuàng)建它的代價(jià)小。
Java中的Iterator功能比較簡單,并且只能單向移動(dòng):
(1)使用方法iterator()要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí),它返回序列的第一個(gè)元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
(2)使用next()獲得序列中的下一個(gè)元素。
(3)使用hasNext()檢查序列中是否還有元素。
(4)使用remove()將迭代器新返回的元素刪除。
Iterator是Java迭代器最簡單的實(shí)現(xiàn),為List設(shè)計(jì)的ListIterator具有更多的功能,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素。
迭代器應(yīng)用:
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循環(huán)
Iterator iter = l.iterator();while(iter.hasNext()){
String str =(String)iter.next();System.out.println(str);} */
第二篇:java之webservice_aegis.xml學(xué)習(xí)
*.aegis.xml學(xué)習(xí)
public interface UserInfo {
public User findUserInfosByUserID(String userUniqueID);
public String test();
public Collection findRoleInfosByUserID(String userUniqueID);
}
觀察此接口,受限我們看findRoleInfosByUserID方法,此方法傳入String,返回類型為Collection,此時(shí),我們即需要配置findRoleInfosByUserID方法。
配置步驟,在接口類的同一包下建立和接口名相同的aegis.xml文件,即UserInfo.aegis.xml文件。
UserInfo.aegis.xml
Java代碼
其中,method代表需要配置的方法名,由于XFire可以支持基本類型,針對集合類型時(shí),需要配置,返回類型或參數(shù)類型為基本類型時(shí)不需要特殊配置。
此時(shí),findRoleInfosByUserID方法配置完畢
PS,還拿此接口舉例,如接口中,findRoleInfosByUserID接受的參數(shù)也為集合類型,那么需要在
Java代碼
index=“0”代表方法的參數(shù)的序號,0即第一個(gè)參數(shù)。
componentType代表集合參數(shù)內(nèi)包含的類型,也可以為自定義對象,例如User
注意,如果findRoleInfosByUserID方法有兩個(gè)參數(shù),一個(gè)比如為String,一個(gè)為集合,那么只需要配置集合參數(shù)即可。
二。映射POJO
比如還是上面的UserInfo接口,第一個(gè)方法
public User findUserInfosByUserID(String userUniqueID);
此時(shí),返回類型為User
如果User中僅為基本類型,例如String,int等基本類型,無需配置User
但如果User中還包含有其他類型,比如包含有Set,List,那么需要對其進(jìn)行配置
比如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);
}
此時(shí)User中還包含有SDicSystemAuth的對象,以及SUserDepts等Set集合這種情況主要可能會(huì)出現(xiàn)在使用Hibernate,映射一對一,一對多表時(shí)
這里要特別注意
那么此時(shí)我們需要對User進(jìn)行aegis綁定,控制POJO和XML的映射
配置方法:
在User對象所在包內(nèi)建立User.aegis.xml
由于User中包含Set,那么只需要對集合做設(shè)置即可,DicSystemAuth下面單獨(dú)討論
我們可以分兩次來配置,分別講解
1,Java代碼
此時(shí),配置文件中配置了兩個(gè)Set集合,componentType明確定義了Set集合內(nèi)包含的內(nèi)容
此時(shí),DicSystemAuth即便是自定義的對象類,由于不是集合,XFire也可以對其正確映射。
Java代碼
第二種方式,定義了三個(gè)字段,并使用了ignore屬性,表示這三個(gè)屬性不能被序列化。
那么,何時(shí)會(huì)遇到類似于User中Set集合,不被序列化呢?
當(dāng)客戶端訪問本地代理時(shí),如果User表內(nèi)包含有其他表的關(guān)聯(lián)時(shí),如果基于hibernate的持久層,由于hibernate的惰性加載機(jī)制,加載User時(shí)僅會(huì)將User中的屬性值加載而不會(huì)加載關(guān)聯(lián)表中的值,比如set和SDicSystemAuth對象等,當(dāng)客戶端訪問本地代理,序列化User對象時(shí),如果沒有設(shè)置關(guān)聯(lián)字段是否序列化,那么它會(huì)將其全部序列化,但當(dāng)序列化時(shí),由于hibernate的惰性加載,此時(shí)Session已經(jīng)關(guān)閉,那么在序列化關(guān)聯(lián)字段的時(shí)候,就會(huì)出現(xiàn)session was close的異常。因此解決辦法是在aegis綁定時(shí)制定關(guān)聯(lián)字段的ignore屬性設(shè)置為true。
還有一種解決辦法,就是仍然按照第一種配置方式,明確指明關(guān)聯(lián)的Set集合內(nèi)的對象,但在執(zhí)行序列化前,session關(guān)閉之前,提前將關(guān)聯(lián)字段內(nèi)的值初始化。
用Hibernate.initialize初始化
最后補(bǔ)充一小句
XFire對于自定義的對象可以聰明的找到,前提是它不包含集合例如你的方法返回一個(gè)User對象
User中都是基本類型,或者User中包含有Dept對象的引用,都沒有問題。
但如果你不希望加載user時(shí)序列化Dept出問題,就乖乖把dept初始化或?qū)ept的ignore屬性設(shè)置為true
本篇文章沒什么頭緒,想哪兒寫哪兒,主要是對這段時(shí)間的xfire的基本的學(xué)習(xí)的一個(gè)小結(jié),所以沒有太注重詞語搭配,以看懂為主。。有時(shí)間再來整理整理
注意問題:
當(dāng)遇到需要映射POJO或配置WebService接口方法返回類型(如集合類型,自定義對象類型)時(shí),需要進(jìn)行綁定,此時(shí)aegis的綁定為建立 xxxx.aegis.xml的文件(xxxx為對應(yīng)的實(shí)
體名,如User.aegis.xml)。對于正常的String,int類型的數(shù)據(jù),無需做特別說明就能映射。對于Collection類型,需要如下配置:(例如User對象里包含一個(gè)roleList屬性)
這是如果你的Role對象里都是基本數(shù)據(jù)類型,則可以不寫Role.aegis.xml,但如果Role對象里也有其他類型的對象,則同樣需 要配置Role.aegis.xml。
當(dāng)然如果你不想映射roleList,可以這么配置(所以無需映射的屬性都可以這樣配置):
注意:對于一些非標(biāo)準(zhǔn)的寫法需要做特殊處理。
例如:在User實(shí)體類里有一個(gè)方法getOrg(),返回Department對象,但是User實(shí)體里面并沒有org屬性(正因?yàn)槿绱?,我稱之為非標(biāo)準(zhǔn)寫法),這個(gè)時(shí)候,如果不特殊處理,此處會(huì)出現(xiàn)如下異常:
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)
………………
此時(shí)你無法跟蹤。
解決辦法:在User實(shí)體里增加一個(gè)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(“學(xué)號為1的學(xué)生姓名 ”+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(); } } } 學(xué)習(xí)JAVA之前有必要學(xué)習(xí)C++嗎? 在很多大學(xué)計(jì)算機(jī)或軟件專業(yè)的教程中,C語言及C++往往作為必修課,JAVA往往作為選修或限修課程。C語言是應(yīng)用最廣的語言,在很多工科專業(yè),如機(jī)械、電氣、通信等都會(huì)開設(shè)C語言課程。而C++和JAVA作為高級語言,則往往只有計(jì)算機(jī)類相關(guān)專業(yè)開設(shè)。那么,作為一個(gè)想要往軟件領(lǐng)域發(fā)展的童鞋來說,先學(xué)C++還是先學(xué)JAVA?如果打算畢業(yè)從事java開發(fā),有必要學(xué)習(xí)C++嗎?下面就針對這個(gè)問題給大家以簡要分析: JAVA和C++基本思想相同 JAVA和C++都是面向?qū)ο笏枷?,同屬于高級編程語言。一般來說,做任何高級開發(fā),使用兩種編程語言都可以實(shí)現(xiàn)。JAVA可以算是C++的表親,C++也算是JAVA的前輩。JAVA是參照C++的精髓而創(chuàng)造出的編程語言。JAVA希望能取代C++,同時(shí)使編程變得簡單。JAVA比C++簡單 JAVA比C++簡單的多,因?yàn)镃++里有許多比較難的概念,尤其對于初學(xué)者來說,比JAVA要難的多。JAVA的初衷就是要比C++簡單,而JAVA比C++多的一個(gè)優(yōu)勢即時(shí)跨平臺(tái)性,這實(shí)際上也使java變得簡單,由此可見,JAVA創(chuàng)始人的目的就是使java變成一門容易掌握且強(qiáng)大的簡單高級語言。 時(shí)間充足的大學(xué)生最好了解一下C++ 大學(xué)生時(shí)間比較充足,所以學(xué)一下C++還是很有必要的。因?yàn)镃++中有些內(nèi)容是非常巧妙的,C++在性能方面要強(qiáng)于JAVA。當(dāng)然,是先學(xué)C++再學(xué)java,還是后學(xué)C++,都無關(guān)緊要了,實(shí)際上兩者基礎(chǔ)部分差不多,從繼承和多態(tài)處才開始不同。 快速學(xué)習(xí)者最好精于一門 編程語言,一通百通。你精通了一門,學(xué)習(xí)其他的就很快了。如果你時(shí)間不充足,比如上java培訓(xùn)班的同學(xué)們,時(shí)間緊迫,不可能兼顧學(xué)習(xí)java和c++,肯定是從一門由始而終的學(xué)到底。這樣能夠比較快的掌握編程語言,以后時(shí)間寬松,則需要多接觸一下其他技術(shù),豐富自己的知識技能體系,使自己成為一個(gè)真正的“能手”。 Docker學(xué)習(xí)筆記之一,搭建一個(gè)JAVA Tomcat運(yùn)行環(huán)境 前言 Docker旨在提供一種應(yīng)用程序的自動(dòng)化部署解決方案,在 Linux 系統(tǒng)上迅速創(chuàng)建一個(gè)容器(輕量級虛擬機(jī))并部署和運(yùn)行應(yīng)用程序,并通過配置文件可以輕松實(shí)現(xiàn)應(yīng)用程序的自動(dòng)化安裝、部署和升級,非常方便。因?yàn)槭褂昧巳?器,所以可以很方便的把生產(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響,這是 docker 最普遍的一個(gè)玩法。更多的玩法還有大規(guī)模 web 應(yīng)用、數(shù)據(jù)庫部署、持續(xù)部署、集群、測試環(huán)境、面向服務(wù)的云計(jì)算、虛擬桌面 VDI 等等。 主觀的印象:Docker 使用 Go 語言編寫,用 cgroup 實(shí)現(xiàn)資源隔離,容器技術(shù)采用 LXC.提供了能夠獨(dú)立運(yùn)行Unix進(jìn)程的輕量級虛擬化解決方案。它提供了一種在安全、可重復(fù)的環(huán)境中自動(dòng)部署軟件的方式。LXC命令有些復(fù)雜,若感興趣,這里有 一篇我以前寫的基于LXC,(從無到有,搭建一個(gè)簡單版的JAVA PAAS云平臺(tái)),可以提前復(fù)習(xí)一下。 環(huán)境 本文所有環(huán)境,VMware WorkStation上運(yùn)行ubuntu-13.10-server-amd64,注意是64位系統(tǒng),理論上其它虛擬機(jī)也是完全可行的。 安裝Docker Docker 0.7版本需要linux內(nèi)核 3.8支持,同時(shí)需要AUFS文件系統(tǒng)。# 檢查一下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下,在執(zhí)行Docker時(shí),每次都要輸入sudo,同時(shí)輸入密碼,很累人的,這里微調(diào)一下,把當(dāng)前用戶執(zhí)行權(quán)限添加到相應(yīng)的docker用戶組里面。# 添加一個(gè)新的docker用戶組 sudo groupadd docker # 添加當(dāng)前用戶到docker用戶組里,注意這里的yongboy為ubuntu server登錄用戶名 sudo gpasswd-a yongboy docker # 重啟Docker后臺(tái)監(jiān)護(hù)進(jìn)程 sudo service docker restart # 重啟之后,嘗試一下,是否生效 docker version #若還未生效,則系統(tǒng)重啟,則生效 sudo reboot 安裝一個(gè)Docker運(yùn)行實(shí)例-ubuntu虛擬機(jī) Docker安裝完畢,后臺(tái)進(jìn)程也自動(dòng)啟動(dòng)了,可以安裝虛擬機(jī)實(shí)例(這里直接拿官方演示使用的learn/tutorial鏡像為例): docker pull learn/tutorial 安裝完成之后,看看效果 docker run learn/tutorial /bin/echo hello world 交互式進(jìn)入新安裝的虛擬機(jī)中 docker run-i-t learn/tutorial /bin/bash 會(huì)看到: root@51774a81beb3:/# 說明已經(jīng)進(jìn)入交互式環(huán)境。 安裝SSH終端服務(wù)器,便于我們外部使用SSH客戶端登陸訪問 apt-get update apt-get install openssh-server which sshd /usr/sbin/sshd mkdir /var/run/sshd passwd #輸入用戶密碼,我這里設(shè)置為123456,便于SSH客戶端登陸使用 exit #退出 獲取到剛才操作的實(shí)例容器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 可以看到當(dāng)前操作的容器ID為:51774a81beb3。注意了,一旦進(jìn)行所有操作,都需要提交保存,便于SSH登陸使用: docker commit 51774a81beb3 learn/tutorial 以后臺(tái)進(jìn)程方式長期運(yùn)行此鏡像實(shí)例: docker run-d-p 22-p 80:8080 learn/tutorial /usr/sbin/sshd-D ubuntu容器內(nèi)運(yùn)行著的SSH Server占用22端口,-p 22進(jìn)行指定。-p 80:8080 指的是,我們ubuntu將會(huì)以8080端口運(yùn)行tomcat,但對外(容器外)映射的端口為80。 這時(shí),查看一下,是否成功運(yùn)行。 #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 注意這里的分配隨機(jī)的SSH連接端口號為49154: ssh root@127.0.0.1-p 49154 輸入可以口令,是不是可以進(jìn)入了?你一旦控制了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 # 解壓,運(yùn)行 tar xvf apache-tomcat-7.0.47.tar.gz cd apache-tomcat-7.0.47 bin/startup.sh 默認(rèn)情況下,tomcat會(huì)占用8080端口,剛才在啟動(dòng)鏡像實(shí)例的時(shí)候,指定了-p 80:8080,ubuntu鏡像實(shí)例/容器,開放8080端口,映射到宿主機(jī)端口就是80。知道宿主機(jī)IP地址,那就可以自由訪問了。在宿主機(jī)上,通過curl測試一下即可: curl http://192.168.190.131 當(dāng)然,你也可以使用瀏覽器訪問啦。 真實(shí)情況,可能不會(huì)讓tomcat直接對外開放80端口,一般都會(huì)位于 nginx/apache或者防火墻的后面,上面僅為演示。 小結(jié) 在Docker幫助下搭建一個(gè)Tomcat運(yùn)行時(shí)環(huán)境,總體很簡單,讓我們看到了PAAS的身影。不錯(cuò),使用Docker作為PAAS底層服務(wù),本身就不復(fù)雜。下面有時(shí)間,會(huì)談一談如何使用腳本文件構(gòu)建一個(gè)鏡像實(shí)例,同時(shí)會(huì)談一談Docker的實(shí)現(xiàn)原理和機(jī)制等。 Docker學(xué)習(xí)筆記之二,基于Dockerfile搭建JAVA Tomcat運(yùn)行環(huán)境 前言 在第一篇文字中,我們完全人工方式,一個(gè)命令一個(gè)命令輸入,實(shí)現(xiàn)一個(gè) java tomcat運(yùn)行環(huán)境,雖然也初見成效,但很累人。如果依靠依靠腳本構(gòu)建一個(gè)Tomcat容器實(shí)例,一個(gè)命令可以搞定,何樂而不為呢。好在Docker提 供了Dockerfile作為構(gòu)建Docker鏡像腳本,避免人們一行一行的輸入,真是善莫大焉。Dockerfile腳本可以做到隨時(shí)維護(hù)修改,即可以 分享,更有利于在模板化,更不用說傳輸了,好處那是一大籮筐! 最終目的:打造一個(gè)支持SSH終端登錄、Tomcat7自動(dòng)運(yùn)行的Docker鏡像。編寫一個(gè)Dockerfile 所有環(huán)境,同第一篇文字。在ubuntu下安裝好vim之后(吐槽一下,ubuntu系統(tǒng)內(nèi)置vi命令十分難用,只好求助于vim): sudo vim Dockerfile 編輯一個(gè)Dockerfile文件了,下面就是具體文件內(nèi)容: # VERSION 0.0.1 # 默認(rèn)ubuntu server長期支持版本,當(dāng)前是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 # 設(shè)置root ssh遠(yuǎn)程登錄密碼為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 # 設(shè)置JAVA_HOME環(huán)境變量 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 # 設(shè)置Tomcat7初始化運(yùn)行,SSH終端服務(wù)器作為后臺(tái)運(yùn)行 ENTRYPOINT service tomcat7 start && /usr/sbin/sshd-D 需要注意: 1.ENTRYPOINT,表示鏡像在初始化時(shí)需要執(zhí)行的命令,不可被重寫覆蓋,需謹(jǐn)記 2.CMD,表示鏡像運(yùn)行默認(rèn)參數(shù),可被重寫覆蓋 3.ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一個(gè)生效 多個(gè)存在,只有最后一個(gè)生效,其它無效! 4.需要初始化運(yùn)行多個(gè)命令,彼此之間可以使用 && 隔開,但最后一個(gè)須要為無限運(yùn)行的命令,需切記! ENTRYPOINT/CMD,一般兩者可以配合使用,比如: ENTRYPOINT [“/usr/sbin/sshd”] CMD [“-D”] 在Docker daemon模式下,無論你是使用ENTRYPOINT,還是CMD,最后的命令,一定要是當(dāng)前進(jìn)程需要一直運(yùn)行的,才能夠防容器退出。 以下無效方式: ENTRYPOINT service tomcat7 start #運(yùn)行幾秒鐘之后,容器就會(huì)退出CMD service tomcat7 start #運(yùn)行幾秒鐘之后,容器就會(huì)退出 這樣有效: 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昆明教師招聘考試:學(xué)習(xí)的一般理論之認(rèn)知主 義 一、知識來源 本知識點(diǎn)來自于《教育學(xué)心理學(xué)》,“學(xué)習(xí)的基本理論”章節(jié),本章節(jié)首先介紹了學(xué)習(xí)的本質(zhì)和學(xué)習(xí)的基本分類,學(xué)生在充分的了解了學(xué)習(xí)的基本概念之后,學(xué)習(xí)“學(xué)習(xí)理論”的內(nèi)容,整體知識的條理性會(huì)比較清晰。 二、考情分析 題型:客觀題,選擇題居多。 考察類型:單選題呈現(xiàn)例子,要求學(xué)生能夠區(qū)分不同的心理學(xué)家的觀點(diǎn),以及同一個(gè)心理學(xué)家的不同的觀點(diǎn),例如:布魯納的結(jié)構(gòu)主義和發(fā)現(xiàn)學(xué)習(xí);奧蘇貝爾的有意義的學(xué)習(xí);加涅信息加工的階段。 三、知識點(diǎn)詳情 (一)認(rèn)知主義認(rèn)為知識客觀存在的,學(xué)習(xí)是個(gè)體主動(dòng)地在頭腦內(nèi)部構(gòu)建認(rèn)知結(jié)構(gòu)的過程,不同的心理學(xué)家認(rèn)為,學(xué)習(xí)者頭腦中建構(gòu)的認(rèn)知結(jié)構(gòu)是不同的;是通過頓悟與理解獲得期待。 (二)苛勒:完形——頓悟說 1.觀點(diǎn):學(xué)習(xí)是個(gè)體利用本身的智慧與理解力對情境及情境與自身關(guān)系的頓悟,而不是動(dòng)作的累積或盲目的嘗試,苛勒反對桑代克的“完形-頓悟說”。 2.實(shí)驗(yàn):黑猩猩取香蕉 3.學(xué)習(xí)的實(shí)質(zhì)是在主體內(nèi)部構(gòu)造完形 苛勒認(rèn)為,學(xué)習(xí)過程中問題的解決,都是由于對情境中事物關(guān)系的理解而構(gòu)成一種“完形”來實(shí)現(xiàn)的。 更多公職類考試信息和資料 kunming.offcn.com (三)托爾曼的符號學(xué)習(xí)理論 1.實(shí)驗(yàn):白鼠迷宮實(shí)驗(yàn) 2.托爾曼的學(xué)習(xí)理論基本觀點(diǎn) (1)學(xué)習(xí)是有目的的行為,而不是盲目的。 (2)學(xué)習(xí)是對“符號——完形”的認(rèn)知(形成認(rèn)知地圖)。 (3)在外部刺激(S)與行為反應(yīng)(R)之間存在中介變量(O)。主張將行為主義S—R公式改為S—O—R,O代表機(jī)體的內(nèi)部變化。 (4)潛伏學(xué)習(xí):托爾曼認(rèn)為,外在的強(qiáng)化并不是學(xué)習(xí)產(chǎn)生的必要因素,不強(qiáng)化也會(huì)出現(xiàn)學(xué)習(xí)。 (四)布魯納的認(rèn)知結(jié)構(gòu)學(xué)習(xí)理論 布魯納主張學(xué)習(xí)的目的在于以發(fā)現(xiàn)學(xué)習(xí)的方式,使學(xué)科的基本結(jié)構(gòu)轉(zhuǎn)變?yōu)閷W(xué)生頭腦中的認(rèn)知結(jié)構(gòu)。因此,他的理論常被稱為認(rèn)知結(jié)構(gòu)論或認(rèn)知發(fā)現(xiàn)說。而布魯納強(qiáng)調(diào)的認(rèn)知結(jié)構(gòu)指的是學(xué)科結(jié)構(gòu)的建構(gòu)。 1.學(xué)習(xí)觀 (1)學(xué)習(xí)的實(shí)質(zhì)是主動(dòng)的形成認(rèn)知結(jié)構(gòu) 布魯納認(rèn)為,學(xué)習(xí)的本質(zhì)是主動(dòng)的形成認(rèn)知結(jié)構(gòu)。學(xué)習(xí)者不是被動(dòng)地接受知識,而是主動(dòng)地獲取知識,并通過把新獲得的知識和已有的認(rèn)知結(jié)構(gòu)聯(lián)系起來,積極地建構(gòu)其知識體系。 (2)學(xué)習(xí)包括獲得、轉(zhuǎn)化和評價(jià)三個(gè)過程 獲得:新知識的獲得;轉(zhuǎn)化:轉(zhuǎn)變給定信息,以適合新任務(wù),并獲得更多的知識;評價(jià):評價(jià)是對知識轉(zhuǎn)化的一種檢查,處理知識的方法是否適合新的任務(wù),或者運(yùn)用得是否正確。 更多公職類考試信息和資料 kunming.offcn.com 2.教學(xué)觀 (1)教學(xué)的目的在于理解學(xué)科的基本結(jié)構(gòu) 由于布魯納強(qiáng)調(diào)學(xué)習(xí)的主動(dòng)性和認(rèn)知結(jié)構(gòu)的重要性,所以他主張教學(xué)的最終目標(biāo)是促進(jìn)學(xué)生對學(xué)科結(jié)構(gòu)的一般理解。 學(xué)科的基本結(jié)構(gòu),是指學(xué)科的基本概念、基本原理、基本態(tài)度和方法。而掌握學(xué)科的結(jié)構(gòu),應(yīng)該是學(xué)習(xí)知識方面的最低要求。因此,布魯納把學(xué)科的基本結(jié)構(gòu)放在設(shè)計(jì)課程和編寫教材的中心地位,讓它成為教學(xué)的中心。 (2)提倡發(fā)現(xiàn)學(xué)習(xí) 所謂發(fā)現(xiàn),不只限于發(fā)現(xiàn)人類尚未知曉的事物的行動(dòng),而且還包括用自己頭腦親自獲得知識的一切形式。 A.發(fā)現(xiàn)學(xué)習(xí)有以下四點(diǎn)作用:①提高智能的潛力。②使外部獎(jiǎng)賞向內(nèi)部動(dòng)機(jī)轉(zhuǎn)移。③學(xué)會(huì)將來作出發(fā)現(xiàn)的最優(yōu)方法和策略。④幫助信息的保持和檢索。 B.發(fā)現(xiàn)學(xué)習(xí)有以下四個(gè)特點(diǎn):①強(qiáng)調(diào)學(xué)習(xí)的過程,而不只是最后的結(jié)果。②強(qiáng)調(diào)直覺思維。③強(qiáng)調(diào)內(nèi)部動(dòng)機(jī)。④強(qiáng)調(diào)信息的組織、提取,而不只是存儲(chǔ)。 (3)掌握學(xué)科基本結(jié)構(gòu)的教學(xué)原則 ①動(dòng)機(jī)原則。②結(jié)構(gòu)原則。③程序原則。④強(qiáng)化原則。(口訣:動(dòng)結(jié)程強(qiáng)) (五)奧蘇貝爾的有意義學(xué)習(xí)的接受學(xué)習(xí) 1.有意義學(xué)習(xí)的實(shí)質(zhì)及條件 有意義學(xué)習(xí)的實(shí)質(zhì)是將新知識與已有知識建立起非人為(內(nèi)在的)的和實(shí)質(zhì)性(非字面)的聯(lián)系。非人為的指的是知識本身的聯(lián)系,認(rèn)為沒有辦法改變。(例如:四邊形內(nèi)角和360度,對角線劃分分成兩個(gè)三角形,每個(gè)三角形內(nèi)角和180度)實(shí)質(zhì)性的指知識有可能表述不同,但是本身的含義是一樣的。(例如:“創(chuàng)可貼”和“OK繃”) 有意義學(xué)習(xí)的條件:①學(xué)習(xí)材料具有邏輯意義;②有意義學(xué)習(xí)的心向;③學(xué)習(xí)者認(rèn)知結(jié)構(gòu)中必須具有適當(dāng)?shù)闹R,以便與新知識進(jìn)行聯(lián)系。(三者缺一不可) 2.有意義學(xué)習(xí)的類型 (1)表征學(xué)習(xí):表征學(xué)習(xí)是最低層次的一種學(xué)習(xí)方式,指學(xué)習(xí)一個(gè)符號或一組符號所代表的事物和意義。(“魚”這個(gè)字所代表的的事物) (2)概念學(xué)習(xí):概念是同類事物的共同關(guān)鍵特征或本質(zhì)特征,是區(qū)分事物的關(guān)鍵。(魚是生活在水中的,有鱗有鰭的用鰓呼吸的冷血?jiǎng)游?。所有的魚都符合這樣的特點(diǎn)。) (3)命題學(xué)習(xí):概念和概念之間的關(guān)系。(例如:鯨不是魚.其中涉及到魚和鯨兩個(gè)概念) 3.意義的同化 更多公職類考試信息和資料 kunming.offcn.com 奧蘇貝爾認(rèn)為,學(xué)生能否習(xí)得新知識,主要取決于他們認(rèn)知結(jié)構(gòu)中已有的有關(guān)觀念,有意義學(xué)習(xí)是通過新信息與學(xué)生認(rèn)知結(jié)構(gòu)中已有的有關(guān)觀念的相互作用才得以發(fā)生的,這種相互作用的結(jié)果導(dǎo)致了新舊知識的意義的同化。 4.組織學(xué)習(xí)的原則與策略 (1)逐漸分化原則:即首先應(yīng)該傳授最一般的、包攝性最廣的觀念,然后根據(jù)具體細(xì)節(jié)對它們逐漸加以分化,這樣可以為每個(gè)知識單元的教學(xué)都提供理想的固定點(diǎn),即對新知識起固定作用的先前知識。 (2)整合協(xié)作原則:是指如何對學(xué)生認(rèn)知結(jié)構(gòu)中現(xiàn)有要素重新加以組合。奧蘇貝爾認(rèn)為所有導(dǎo)致整合協(xié)調(diào)的學(xué)習(xí),同樣也會(huì)導(dǎo)致學(xué)生現(xiàn)有知識的進(jìn)一步分化。因此,整合協(xié)調(diào)是意義學(xué)習(xí)中發(fā)生的認(rèn)知結(jié)構(gòu)逐漸分化的一種形式。 (3)先行組織者策略:奧蘇貝爾任務(wù)要產(chǎn)生有意義學(xué)習(xí),新舊知識必須能夠建立起來聯(lián)系,但是我們平時(shí)在學(xué)習(xí)的過程中并不是所有的新知識和舊知識都能建立起來聯(lián)系,這時(shí)候需要人為的制造條件,使新舊知識之間能夠建立起來聯(lián)系,因此奧蘇貝爾提出了先行組織者策略。 先行組織者策略有四個(gè)條件:首先,先行組織者不是人,是一個(gè)學(xué)習(xí)材料;其次先行組織者要先于學(xué)習(xí)的新知識呈現(xiàn);再次,先行組織者的概念要比新知識的概念要大;最后,先行組織者要和新舊知識均有聯(lián)系。 例如:學(xué)生之前學(xué)了四邊形的概念即四條線段組成的封閉圖形;今天老師要給學(xué)生講正方形的概念,在上課之前給學(xué)生呈現(xiàn)了“對邊平行且相等的四邊形是平行四邊形”的概念,在給學(xué)生講“有一個(gè)角是直角,且四條線段相等的平行四邊形是正方形”的概念。其中平行四邊形的概念就屬于先行組織者。 “組織者”可分為兩類:一類是陳述性“組織者”,當(dāng)學(xué)生面對學(xué)習(xí)任務(wù),倘若其認(rèn)知結(jié)構(gòu)中缺乏適當(dāng)?shù)纳衔挥^念可以用來同化新知識,則可以設(shè)計(jì)一個(gè)概括與包容水平高于要學(xué)習(xí)的新材料的組織者,目的在于為新知識提供類屬者,與新知識產(chǎn)生上位關(guān)系。 另一類是比較性“組織者”,用于較熟悉的學(xué)習(xí)材料中,其目的在于比較新材料與認(rèn)知結(jié)構(gòu)中相類似的材料,從而增強(qiáng)似是而非的新舊知識之間的可辨別性,并為這些新觀念提供穩(wěn)定的固定點(diǎn)。 5.接受學(xué)習(xí) 與布魯納的發(fā)現(xiàn)學(xué)習(xí)觀點(diǎn)相反,奧蘇貝爾認(rèn)為,學(xué)生的學(xué)習(xí)主要是接受學(xué)習(xí),學(xué)習(xí)應(yīng)該是通過接受而發(fā)生,而不是通過發(fā)現(xiàn)。他把強(qiáng)調(diào)接受學(xué)習(xí)的教學(xué)方法叫做“講解教學(xué)”。 (六)加涅——學(xué)習(xí)的信息加工論觀點(diǎn) 更多公職類考試信息和資料 kunming.offcn.com 1.學(xué)習(xí)過程的八個(gè)階段 (1)動(dòng)機(jī)階段:激發(fā)動(dòng)機(jī)和興趣; (2)了解階段:選擇學(xué)習(xí)內(nèi)容; (3)獲得階段:所學(xué)的東西進(jìn)入了短時(shí)記憶; (4)保持階段:所學(xué)信息進(jìn)入長時(shí)記憶; (5)回憶階段:提供線索幫助學(xué)生檢索、回憶信息; (6)概括階段:獲得的知識遷移到新的情境; (7)操作階段:應(yīng)用所學(xué)信息; (8)反饋階段:評價(jià)應(yīng)用結(jié)果。 (七)重點(diǎn)知識總結(jié) 認(rèn)知主義強(qiáng)調(diào)學(xué)習(xí)者對知識的主動(dòng)建構(gòu)的過程,知識是客觀存在的,其中,不同的心理學(xué)家認(rèn)為學(xué)習(xí)者形成的認(rèn)知結(jié)構(gòu)不同。 格式塔學(xué)派苛勒反對桑代克的試誤說,認(rèn)為學(xué)習(xí)是“完形-頓悟”的過程;托爾曼認(rèn)為學(xué)習(xí)者是形成認(rèn)知地圖的過程;布魯納認(rèn)為學(xué)習(xí)是學(xué)習(xí)者通過發(fā)現(xiàn)學(xué)習(xí)建構(gòu)學(xué)科結(jié)構(gòu)的過程;奧蘇貝爾的有意義的接受學(xué)習(xí),強(qiáng)調(diào)新舊知識之間的關(guān)系,強(qiáng)調(diào)舊知識的重要性;加涅提出信息加工理論,提出學(xué)習(xí)的八階段。 四、歷年考題 奧蘇貝爾認(rèn)為學(xué)生的學(xué)習(xí)主要是()。 A.機(jī)械學(xué)習(xí)B.有意義的發(fā)現(xiàn)學(xué)習(xí) C.有意義的接受學(xué)習(xí)D.研究性學(xué)習(xí) 【答案】C。解析:奧蘇貝爾提出學(xué)習(xí)是有意義的接受學(xué)習(xí),強(qiáng)調(diào)學(xué)生通過學(xué)生以接受的方式,理解新舊知識之間的關(guān)系。故選C選項(xiàng)。A選項(xiàng),指不理解新舊知識之間的關(guān)系的學(xué)習(xí),如三歲的孩子能背誦五百首唐詩;B選項(xiàng),如:科學(xué)家進(jìn)行科學(xué)鉆研;D選項(xiàng)研究性學(xué)習(xí)是一種以學(xué)生為主的學(xué)習(xí)模式。在教師的輔助下,由學(xué)生策劃、執(zhí)行及自我評估的學(xué)習(xí)方法。它是一種跨學(xué)科的學(xué)習(xí)技巧。學(xué)生透過研習(xí)一個(gè)特定的專題的同時(shí),運(yùn)用現(xiàn)有的知識和技巧來重新綜合,并透過進(jìn)行一些特定的活動(dòng),使學(xué)生能自主地建構(gòu)知識,繼而學(xué)會(huì)這個(gè)新的題目,而達(dá)至學(xué)會(huì)學(xué)習(xí)的目的,并培養(yǎng)學(xué)生的自學(xué)精神。 更多昆明教師考試信息關(guān)注昆明中公教育信息網(wǎng) 更多公職類考試信息和資料第三篇:學(xué)習(xí)JAVA之前有必要學(xué)習(xí)C++嗎
第四篇:Docker學(xué)習(xí)筆記之,搭建一個(gè)JAVA Tomcat運(yùn)行環(huán)境
第五篇:2018昆明教師招聘考試:學(xué)習(xí)的一般理論之認(rèn)知主義