徐文明听课笔记范文

2022-06-18

第一篇:徐文明听课笔记范文

徐文明巴索理论笔记

一、 以巴菲特的眼光发现价值,选择值得投资的股票

1符合国家政策。七大新兴行业

2财务报表分析,整个行业都上升,持续盈利。

注意:选择好股票后符合技术条件时买进,符合卖出条件时卖出,再买、再抛„„

股票的波动是围绕股票价值进行,价格高于价值向下回

归,价格低于价值则向上回归。

3利益分析法:利用财务报表来选择业绩好的股票。

要选择:业绩增长的股票;把握市场投资热点;具有潜在的题材支持;捕捉准确地介入时机。

利益分析法必须掌握的原则:

1) 企业业绩必须环比增加;主业增长

2) 公积金必须达到1.5元以上,净资产要达到3元以上(越高越好)。

3) 总股本要小,有送股潜力

4) 企业的毛利率要达到20%以上

具体把握“三增长”:主营收入;净利润;业绩预增。

二、以索罗斯的胆量获取收益

(一)短线通道操盘

股价运行趋势设为短线趋势和中线趋势。具体用EXPMA,短线参数(7,21);中心参数(12,50)。两线金叉且阳K线放量,成功向上概率大。死叉且阴K线,则向下概率大。中线通道时间跨度长,一旦

形成,很难一下子改变,适合稳健的投资者来操作。一般在中线通道形成金叉后,可以运用短信通道来实现“中线短打”。

操作警示:趋势形成后,一旦出现不再创新高时,就要小心回落风险,可以配合其他指标来判断,比如MACD、DMI、BULL、SKD等指标。运用中短线通道原理还要注意结合手画趋势线的阻力。

(二)运用KDJ与MA均线的关系,如何实现短线差价

技巧1:当KDJ指标的J达到100以上时,每次新高都会有回落,直到没有新高,5日线死叉10日线,并且MACD死叉才宣告行情结束。

技巧2:当KDJ指标的J跌破0的时候,每次新低都会有反弹,直到没有新低,5日线金叉10日线,并且MACD也金叉时,才宣告探底结束。

提示:KDJ之J在20~0之间有可能加速下跌,是高风险区;80~100之间有可能加速上涨,是高收益区。

(三)T+0实战技巧

保护价下低吸

第二篇:名师风采听课心得徐珍珍

“名师风采”听课心得

徐珍珍

曾经看过这样一段话:名师是大树,能改善一方环境,且在枝叶间闪动精彩。最重要的是,名师启发了我们,课堂是个有魅力的地方。于是,我渴望能有机会与名师近距离接触,希望能聆听他们的教育思想,目睹他们的教学风采,也好让自己从中受到启迪,向他们靠边近一点点。今年开学学校为我们搭建了这个平台,有幸聆听了今年暑假新招聘的六位各学科带头人的教学观摩课,使我深受震撼,真正感受到了课堂教学的魅力。同时我还领略了名师的风采,感受了他们对学生、对教育那深情的爱;感受到了他们身上所透露出来的无穷的知识力量;感受到他们对学生身心发展以及教育了解之广、钻研之深。从名师们的授课中,深受启发。

首先是语文学科的张国富老师,张老师整节课的语言真的是太优美了,把我们都吸引了进去。让我们感受到槐乡五月那杨槐花飘香的季节,尽是如此优美。首先张老师先带领学生们一起演唱了《每当老师走过我的窗前》,那歌声一下子把我们拉进了这节课。张老师在讲这节课的时候非常注重孩子们的阅读,他一遍一遍的请学生朗读,又是小姑娘,又是小小子的,同时在孩子们阅读完之后也不是简单的就让他们做下,有一个小姑娘读的特备好,张老师说你读的真是香气迷人,把我们都香醉咯。他的那种对学生评价语言用的真是太完美了。对我们这些刚刚才走上讲台的青年教师来说真的是受益匪浅啊!还有最后在拓展部分,他还是强调我们要去阅读,说我们今天学习了《槐乡五月》,还有三月,八月,利用课后时间再去阅读阅读。读久了,你就能体会语言中的美了。张老师的那节课就跟他教师节晚上演唱的那首歌一样美。接着我又听了体育学科陈萍老师的课---《跳跃》这是一节常态课,可陈老师以她多年的教学经验给我们带来了不一样的惊喜,虽说是常态课可学生们那种投入状态让我们十分欣喜。首先陈老师带领学生们一起做了几个小游戏把孩子们引入教学课堂来。同时陈老师的上课喊口令的语调十分有力度,据说陈老师今天带的这个班是一个比较调皮的班级,可在她的指令下孩子们很快地进入到课堂中来,这不得不说名师就是名师,她们的教学课堂调节能力绝对的。再说说郝勤秀老师的数学课吧,向来人们只要听到数学课第一反应就是很枯燥,没有语文课的语言美。但今天听过郝老师的课,你们一定要把这个观念改掉,因为她让你深深领悟到数学课独特魅力,整节课听来给人的感觉特别的愉悦。郝老师的语言不是那种优美的,她给学生的那种勉励总是令人很开心,如:在她的开课导入中,有一个口算题请学生来回答,320/8等于多少?有一个小姑娘可能由于紧张,说等于4.其他同学立刻就帮她纠正,一般老师这是肯定会说,没事,请坐下。可郝老师却说:你们都知道国家领导人怎么说话的吗?那都是比较慢的,人家可能还没说完就被你们打断了,她可能是这样说的:4.......0.顿时我们就被惊呆了。原来还可以这么说啊?真有趣。这样孩子的积极性不但没被打乱。同时还把其他孩子的注意力也集中了起来。真是太有意思了。在课堂中她还总会给孩子们起外号,调动他们上课的积极性。就连那些原来一直都很调皮的孩子们也会不好意思得再不听。如,她给她们班的蔡辉叫为“小辉辉”,说这节课你真棒、听得真认真。郝老师喜欢死你了!老师送你一个“大大大拇指”。加上郝老师那爽朗的笑声,那课堂氛围是绝对的!还有一个小男生回答之后,她又说了一句惊人的话语,宝宝你今天的表现帅呆了!这在一般人的课堂上是绝对表现不出来的,当时听课的老师都惊呆了。都在心里大为惊叹,太棒了!最后还有陆亚萍老师的音乐课,那也是绝对精悍的。她的上课教态是我最为佩服的,整节课她都能以笑脸面对可爱的孩子们,说说笑笑,多好啊!

听名师讲课,如同与大师对话。短短三天的学习,使我深切体会到,要想成为一名优秀的教师,不仅要具有扎实的专业知识,还要有深厚的文化底蕴、良好的教育素养,更要有不断学习、多思多想的意识,这才是改变自己、提高自己的关键。走近名师,感受名师,更使我明白了:教育是我们一生的事业,教室是我们的舞台,学习是我们生活的一部分。教师要想真正拥有自己的今天,把握住明天,就必须勤奋而又智慧性的吮吸知识的甘露,走出属于自己的路。

盐城市第三小学 2013年9月15日

第三篇:linux 网络 笔记(听课笔记)

一网络预备知识

1. IP 主机的标识,32bit 无符号的二进制,通常用点分十进制表示

3个基本类:

A 类:最高字节高位0 1 + 3 网络号 + 主机号

0.0.0.0191.255.255.255 2^162

192.0.0.0239.255.255.255

用途:常用作组播地址

E 类:最高字节高位1111 0

240.0.0.065535

150000 //系统用的

5000124]; //填充字段

本地地址结构体 struct sockaddr_un {

sa_family_t sun_family; // 协议族

char sun_path[108];

//108字节协议地址

};// 传参

void * arg ;

通用地址结构体:

struct sockaddr {

sa_family_t sa_family; // 协议族

char sa_data[14]; //14字节协议地址

};

一创建套接字

Int socket(int domain, int type, int protocol); 功能

domain:指明所使用的协议族,通常为PF_INET/AF_INET,表示互联网协议族(TCP/IP协议族);

type:指定socket的类型:SOCK_STREAM (TCP)或SOCK_DGRAM(UDP) protocol:协议的编号通常赋值"0" 返回值

Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。

失败返回 -1 Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议。 绑定端口

Int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 功能:把sockfd 绑定一个具体的端口 sockfd : 描述符

addr : 本机的结构ip的地址不允许绑定非本机IP 如:(192.168.2.10) addrlen: 告知内核ip地址大小, 必须为实际的地址大小网络为16 正确返回0 失败返回-1

udp接收数据端

Ssize_t recvfrom(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen);) 功能接收数据 Sockfd 描述符

Buf 存放接收到的数据

Len 最多可以接收的数据大小

Flags 接收的方式(默认是阻塞,通常是0) Src_addr 获取发送端的ip地址信息

Addrlen 告知内核发送端ip地址大小(结构大小) 返回值

成功返回实际接收的数据大小

返回值如果为0

表示对方已关闭 失败返回 -1

udp发送数据端

Ssize_t sendto(int sockfd,const void *buf,size_t len,int flags,struct sockaddr *dest_addr,socklen_t addrlen); 功能:发送数据 Sockfd : 描述符

Buf: 用户需要发送的数据缓存地址 Len:用户最多发送的数据大小

Flags:发送方式(默认是阻塞,通常设为0) Dest_addr: 当前数据发送的目标主机ip地址值

Addrlen: 告知目标主机ip地址的大小(结构大小) 返回值

成功返回实际发送的数据大小 失败返回 – 1

Tcp申请三次握手(客户端)

Int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 实现客户端与服务器的连接 Sockfd: 套接字描述符 Addr:服务器ip结构地址

Addrlen:服务器ip结构地址大小 成功返回 0

失败返回-1 注意:再次申请,它会断开先前建立的连接,重新建立新的连接连接:获知对方存在

(Tcp)监听(服务器端)

Int listen(int sockfd, int backlog); 功能:实现对客户端请求的监听(队列机制) Sockfd: 套接字描述符

Backlog:队列的长度,一般设为5 追打可设为8 返回值:

成功返回 0,失败返回 -1

(Tcp)回复三次握手(服务器端) 功能:回复客户端握手申请,建立连接

Int accept(int sockfd,struct sockaddr *addr, socklen_t *addrlen); Sockfd: 套接字描述符

Addr: 对方(客户端)ip 地址

Addrlen:对方(客户端)ip 地址大小

成功返回非负整数(新的socket描述符)失败返回

-1

Tcp 数据接收

Ssize_t recv(int sockfd,void *buf,size_t len,int flags); 功能接收数据

Sockfd: (客户端)是套接字描述符(服务器端)是accept()的返回值 Buf: 存放接收到的数据

Len: 最多可以接收的数据大小

Fags: 发送方式(默认是阻塞,通常设为0) 成功返回实际接收的数据大小失败返回 -1; 返回值如果为0

表示对方已关闭

Tcp数据发送

Ssize_t send(int sockfd,void *buf,size_t len,int flags); 功能:发送数据

Sockfd : (客户端)是套接字描述符(服务器端)是accept()的返回值 Buf: 用户需要发送的数据缓存地址 Len:用户最多发送的数据大小

Flags:发送方式(默认是阻塞,通常设为0) 成功返回实际发送的数据大小失败返回 -1 关闭套接字 @1

Int Shutdown(int sockfd,int how) 功能:指定方式关闭套接字 Socket: 套接字描述符

How: SHUT_RD 或0 (关闭读) SHUT_WR或1(关闭写) SHUT_RDWR或2(关闭读写)相当于close() 成功返回

0 失败返回 -1 @2

Int close(int sockfd) 关闭套接字

Socket: 套接字描述符

成功返回

0 失败返回 -1

UDP 客户端创建流程

1 初始化网络地址结构体(服务器端)

struct sockaddr_in ser_addr ;

bzero(&ser_addr,sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(50001); 服务器端口号 -------网络字节序

ser_addr.sin_addr.s_addr = inet_addr("192.168.1.230") ; 服务器点分制地址-》网络字节序 2 创建数据报套接字

Int sockfd = socket(AF_INET,SOCK_DGRAM,0);(数据报套接字) 3 发送数据到服务器端 Int sento_udp = sendto(sockfd,buf,strlen(buf)+1,0,(struct sockaddr *)&ser_addr,sizeof(struct sockaddr_in));

(服务器地址) 4 接收服务器端的回复

Int recvfrom_udp = recvfrom(sockfd,buf, sizeof(buf),0,NULL,NULL); 5 关闭套接字

Close(sockfd);

UDP 服务器端创建流程

1 初始化网络地址结构体(服务器端)

struct sockaddr_in ser_addr ;

bzero(&ser_addr,sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(50001); 服务器端口号 -------网络字节序

ser_addr.sin_addr.s_addr = inet_addr("192.168.1.230") ; 服务器点分制地址-》网络字节序 2 创建数据报套接字

Int sockfd = socket(AF_INET,SOCK_DGRAM,0);(数据报套接字) 3 绑定套接字

Int bind_udp = bind(sockfd,(struct sockaddr *)&ser_addr,sizeof(struct sockaddr_in));

(服务器地址) 4 接收客户端请求

struct sockaddr_in client_addr ; size = sizeof(struct sockaddr_in) int recvfrom_udp = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&client_addr,&size); (客户端地址) 5

回复客户端

Int sendto_udp =

sendto(sockfd,buf,recvfrom_udp,0,(struct sockaddr *)&client_addr, sizeof(struct sockaddr_in))

(客户端地址) 6 关闭套接字

Close(sockfd);

TCP 客户端创建流程

1 初始化网络地址结构体(服务器端)

struct sockaddr_in ser_addr ;

bzero(&ser_addr,sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(50001); 服务器端口号 -------网络字节序

ser_addr.sin_addr.s_addr = inet_addr("192.168.1.230") ; 服务器点分制地址-》网络字节序 2 创建流式套接字

Int sockfd = socket(AF_INET,SOCK_STREAM,0);(流式套接字) 3

申请三次握手

Int connect_tcp = connect (sockfd,( struct sockaddr *)&ser_addr,sizeof(ser_addr))

(服务器地址) 4 发送数据到服务器端

Int send_tcp = send(sockfd,buf,strlen(buf) + 1,0) 5 接收服务器端的回复

Int recv_tcp = recv (sockfd,buf,sizeof(buf),0) 6 关闭套接字

Close(sockfd);

TCP 服务器端创建流程

1 初始化网络地址结构体(服务器端)

struct sockaddr_in ser_addr ;

bzero(&ser_addr,sizeof(ser_addr)); ser_addr.sin_family = AF_INET; ser_addr.sin_port = htons(50001); 服务器端口号 -------网络字节序

ser_addr.sin_addr.s_addr = inet_addr("192.168.1.230") ; 服务器点分制地址-》网络字节序 2 创建数据报套接字

Int sockfd = socket(AF_INET,SOCK_DGRAM,0);(流式套接字) 3 绑定套接字

Int bind_tcp = bind(sockfd,(struct sockaddr *)&ser_addr,sizeof(struct sockaddr_in));

(服务器地址) 4

监听客户端请求

Int listen_tcp = listen(sockfd,5)

一般为5 最大为8 5 回复客户端的三次握手请求

struct sockaddr_in client_addr ; int len = sizeof(struct sockaddr_in);

Int connectfd = accept(sockfd,( struct sockaddr *)&client_addr,&len)

( 客户端地址) 6 接收客户端请求 7 8 Int recv_tcp = recv(connectfd,buf,sizeof(buf),0); 回复客户端

Int send_tcp = send(connectfd,buf,recv_tcp,0); 关闭套接字

Close(sockfd);

Close(connectfd); 1 .TCP CS 模型

client:

socket //创建流式套接字

|

ser_addr:(struct sockaddr_in) //目标地址结构体(服务器)

|

connect()//3次握手

|

sendto/send/write

|

recvfrom/recv/read

|

.......

|

close()/shutdown()

server:

(1)循环服务器,可以多个客户端服务,但是不能在同一时刻

ser_addr :(struct sockaddr_in)//本机的地址结构体

|

socket (流式套接字)

|

bind(使套接字具有地址属性)

|

listen(创建监听队列)

| while(1) {

accept(握手建立连接,获取对方地址) | while(1) {

recvfrom/recv/read //接收对端(客户端)信息

|

sendto/send/write //向对端回射信息

} |

..... } close

(2) 并发服务器:可以同一时刻为多个客户端服务

ser_addr :(struct sockaddr_in)//本机的地址结构体

|

socket (流式套接字,sockfd)

|

bind(使套接字具有地址属性)

|

listen(创建监听队列)

| while(1) { connectfd = accept(握手建立连接,获取对方地址)

|

pid = fork()

if(pid == 0)

{

close(sockfd);

while(1)

{

recvfrom/recv/read //接收对端(客户端)信息

|

sendto/send/write //向对端回射信息

}

} close(connectfd); | ..... } close(sockfd);

2. 分析三次握手

client

server

SYN = 1 (请求标志)

seq_no = 0(client)

第一次

------------------------------>

SYN = 1(请求标志)

ACK = 1(应答标志)

seq_no = 0(server), ack_no = 1 (==seq_no(client) + 1) 第二次<------------------------------

ACK = 1(应答标志)

seq_no = 1(ack_no(server)),ack_no = 1 ( == seq_no(server) + 1) 第三次 ------------------------------>

3.数据包分析

一帧数据(TCP) = mac头 + IP头 + TCP头 + 用户数据

ttl: 数据包每经过一个路由器,如果停留的时间小于1s,ttl 减一,当ttl 小于0时数据丢弃掉

第三天

fcntl

int fcntl(int fd, int cmd, ... /* arg */ ); 获取或改变文件描述符的属性,一般我们需要改变文件状态标志位 @1 fd : 文件描述符 @2 cmd : 对文件描述符的操作(一般可以获取或者设置当前 file status flags) (F_GETFD,F_SETFD) @3 ...... : 不定参,取决于cmd @4 成功返回值取决于 cmd

失败返回-1 例如 @1

int flag = fcntl(0,F_GETFL)

查看属性有返回值 @2 fcntl(0,F_SETFL,flag | O_NONBLOCK)

添加属性无返回值

IO的特性与接口没有关系,与描述符属性有关,调用fcntl/ioctl (可以直接把你用户的命令传递到内核,可以实现对底层驱动的控制)

一 IO 模型 (4种)

1. 阻塞IO

当资源未准备好时,程序睡眠或者等待,不浪费CPU,效率低,实现非常简单,但是它是应用最广泛的IO

read(sockfd,buf,BUFF_SIZE )/recv/recvfrom

2. 非阻塞IO

当资源未准备好时,直接返回错误码(errno),不断的轮循,浪费CPU,效率高

3. 信号驱动IO(SIGIO)

一种异步的通信机制,底层(内核)向上层(用户层)发信号(SIGIO),当资源可用时,内核向当前进程发送SIGIO信号,用户捕捉(signal)此信号,读取IO资源,如果用户不捕捉,进程会被杀死

signal(SIGIO,hander);//更安全 获取套接字的原有属性

int flag = fcntl(sockfd,F_GETFL);//O_NONBLOCK 添加异步属性,文件描述符可以被多个进程打开,此时内核不知信号发给谁 fcntl(sockfd,F_SETFL,flag | O_ASYNC); 获取当前描述符对应的默认进程号(默认为0) pid = fcntl(sockfd,F_GETOWN ); 改变描述符对应的进程号

fcntl(sockfd,F_SETOWN,getpid());

4 . IO 多路复用

可以同时对多个IO控制,哪个准备好了,执行哪个

IO 多路复用:

1. 建立一个统计表:

fd_set readfds; 2. 添加fd到表中

FD_ZERO(&readfds); //将表清空

FD_SET( fd,&readfds); //将fd 加入 readfds 3 . 监测readfds 这张表(监测已经加入表的fd),会将没有就绪的fd 清0 n = select(fd+1,&readfds,NULL,NULL,NULL); //n ==>有多少fd 就绪,此时不知道哪个就绪 4. 判断哪个fd 就绪,这张表只会保存就绪的fd

FD_ISSET(fd,&readfds) == 1

就绪

FD_ISSET(fd,&readfds) == 0

未就绪

相关函数

void FD_CLR(int fd, fd_set *set); int FD_ISSET(int fd, fd_set *set); void FD_SET(int fd, fd_set *set); void FD_ZERO(fd_set *set);

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 注意:描述符不受限与套接字,任何描述符都行

nfds:select()函数监视的描述符数的最大值,一般取监视的描述符数的最大值+1, 其上限设置在sys/types.h中有定义 #define FD_SETSIZE 256

readfds:select()函数监视的可读描述符集合 wtitefds:select()函数监视的可写描述符集合 errnofds:select()函数监视的异常描述符集合

timeout:select()函数监视超时结束时间,取NULL表示永久等待 返回值:返回总的位数这些位对应已准备好的描述符,否则返回-1 相关宏操作:

FD_ZERO(fd_set *fdset):清空fdset与所有描述符的关系 FD_SET(int fd, d_set * fdset):建立描述符fd与fdset得关系 FD_CLR(int fd, d_set * fdset):撤销描述符fd与fdset得关系

FD_ISSET(int fd, d_set * fdset):检查与fdset联系的描述符fd是否可以读写,返回非零表示可以读写

5. select()函数实现IO多路复用的步骤 (1)清空描述符集合

(2)建立需要监视的描述符与描述符集合的关系 (3)调用select函数

(4)检查监视的描述符判断是否已经准备好 (5)对已经准备好的描述符进程IO操作

表的存放规则:

fd_set readfds; FD_ZERO(&readfds); //将表清空

FD_SET(0,&readfds); //将0 加入 readfds

FD_SET(3,&readfds); //将3 加入 readfds

FD_SET(4,&readfds); //将4 加入 readsds

表头:

|

| 1 0 0 1 1 0 ........... ………… 0

| | | | |

|

| 0 1 2 3 4 5

1023

n = select(4+1,&readfds,NULL,NULL,NULL); 检测就绪,返回就绪个数,未就绪的清零 (由于处理器的速度很快,n通常为1)

若此时0就绪:(n = 1) 表头:

|

| 1 0 0 0 0 0 ........... ………… 0

| | | | |

|

| 0 1 2 3 4 5

1023

若此时有0 和3同时就绪(n = 2) 表头:

|

| 1 0 0 1 0 0 ........... ………… 0

| | | | |

|

| 0 1 2 3 4 5

1023

判断是那个fd就序

If(FD_ISSET(fd,&readfds) == 1)

{

。。。。。。。

}

例:

int sockfd,maxfd,n; int connectfd ,fd; char buf[BUFF_SIZE];

fd_set readfds, tempfds;

maxfd = sockfd;

FD_ZERO(&readfds);

tempfds = readfds;

while(1) { tempfds = readfds; FD_SET(sockfd,&tempfds); //如:有50 client,某一时刻只有sockfd就绪

if(-1 == (n = select(maxfd + 1,&tempfds,NULL,NULL,NULL)))

exit(-1);

for(fd = 0; fd <= maxfd ; fd ++)

{

if(FD_ISSET(fd,&tempfds)) //套接字两种都有可能就绪,如果不是sockfd,那么必定是以连接的套接字

{

if(fd == sockfd) { if(-1 == (connectfd = accept(sockfd,NULL,NULL)))

exit(-1); puts("hander shake !!! ");

FD_SET(connectfd,&readfds); //将新的客户端添加至只读表

maxfd = maxfd > connectfd ? maxfd : connectfd; //时刻保证maxfd 最大

}else //不能用if(fd == connectfd) { bzero(buf,BUFF_SIZE);

if(-1 == (n = recv(fd,buf,BUFF_SIZE,0)))

exit(-1); if(n == 0) {

FD_CLR(fd,&readfds); //将退出的客户端从只读表清除 close(fd);

if(maxfd == fd) {

while(1) {

maxfd --;

if(!FD_ISSET(maxfd,&readfds)) //maxfd 是最后一个需

要监测的

continue;

else {

break;

}

}

}

}

printf("[%d] client buf:%s ",n,buf);

}

} } }

获取套接字属性信息

int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);

sockfd套接字描述符 level选项级别SOL_SOCKET(man 7 solcket)(通用套接字)

IPPROTO_IP

(man 7 ip)得到选项名

IPPROTO_TCP

(man 7 tcp) optname选项名

SO_BROADCAST(广播)……

optval存放获取到的选项值的缓冲区地址&n

int n; optlen存放缓冲区长度的地

&len

int len = sizeof(n) 成功返回 0

失败返回 -1

第四天

设置套接字属性信息

int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);

sockfd套接字描述符

evel选项级别SOL_SOCKET

(man 7 solcket) (通用套接字)

IPPROTO_IP

(man 7 ip)得到选项名

IPPROTO_TCP

(man 7 tcp) optname选项名

SO_BROADCAST(广播)IP_ADD_MEMBERSHIP(组播)

组播结构体:struct ip_mreqn { truct in_addr imr_multiaddr; /* 组播ip

struct in_addr imr_address; /* 服务器ip

int imr_ifindex;

/* interface index */通常为0

}; optval存放需要设置的选项值的缓冲区地址&n int n = 1(打开广播), int n = 0(关闭广播) optlen存放缓冲区长度的地址

sizeof(n) 成功返回 0

失败返回 -1

Int on = 1 setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)) 使先前进程创建的端口能重新绑定

一单播广播组播

1. 单播:接收方为一个,用户发送的包,可以到达指定的主机,一对一的通信, 数据包经过路由器或者交换机,不经过复制,需要转发

好处:服务器可以及时的为客户端响应 坏处:如果客户端的个数太大,会造成超载

host1 -------route/swith(转发)-----------> host2 2. 广播:接收方为局域网内,所有主机, 属于一对所有,数据包经过路由器或者交换机 需要经过复制,转发,不存在CS,存在发送方,和接收方,使用UDP 注意:默认不允许发送 好处:效率高

坏处:如果大量发送会造成广播风暴

广播地址:主机号为全1,如,C类私有网络:192.168.1.255 广播MAC :FF:FF:FF:FF:FF:FF

host1------------route/swith(复制,转发) ------------------->host2

|

-------->host3

|

....

|

-------->host254

udp广播发送方:默认不允许

1). 创建数据报套接字(填充地址结构体(广播IP))

2). 设置套接字属性,允许发送广播包 (setsockopt) int on = 1;

setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int ))(设置属性)

int on ; socklen_t len ; len = sizeof(on); getsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,&len)

2). 发送数据报到广播ip

udp广播接收方:默认允许

1). 创建数据报套接字(填充地址结构体(广播ip))

2). 绑定广播地址(ip)

3). 直接接收对方ip

3. 组播

接收方为局域网多个主机,将具有相同需求的主机加入一个组,然后组内任何一个主机的包,组内所有成员都会收到,是广播的优化 优点:有针对性,相对广播可以降低网络带宽 缺点:相对单播,缺少校错机制

组播地址:D类IP 224.0.0.0 - 239.255.255.255 组播的MAC:01:00:5e:*.*.* (IP地址的低23bit)

(获取属性) host1------route(IGMP 网络组管理协议网络层)/swith(复制,转发) ------->host2

|

------------------------->host3

|

....

|

-------->host(多个<= 254)

Udp组播发送方

1). 创建数据报套接字(填充地址结构体组播ip)

2). 直接发送组播ip

Udp组播接收方

1). 创建数据报套接字(填充地址结构体组播IP)

2). 绑定组播地址(ip)

3). 设置属性,将当前主机ip加入组(IGMP) //需要路由器

struct ip_mreqn mulgroup; bzero(&mulgroup,sizeof(mulgroup)); mulgroup.imr_multiaddr.s_addr = inet_addr(组播ip);

mulgroup.imr_address.s_addr = inet_addr(本机ip); mulgroup.imr_ifindex = 0;

setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mulgroup,sizeof(mulgroup))

4). 直接接收对方ip

第五天: 说明:

网络中套接字通常是,当没有相应资源时是阻塞的,如果有资源可读,就会直接返回 网络中环境是异常复杂的,这个时候我们对异常处理,需要超时检测

一超时检测

1. 设置套接字选项

Struct timeval tv; 套接字超时属性 (结构体)

tv.tv_sec = 3; 秒

tv.tv_usec = 1000; 微秒

setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)) connectfd = accept(sockfd,NULL,NULL) connectfd 继承sockfd的属性(这里应用的是超时属性) if(errno == EAGAIN)continue;

2. select

//如果没有任何一个fd就绪则超时,超时返回0,每次超时之后,tv值不会重置,需要用户自己重置

struct timeval tv; tv.tv_sec = 2; tv.tv_usec = 0; n = select(sockfd + 1,&readfds,NULL,NULL,&tv)) if(n == 0) {

printf("timeout %d .... ",++count);

continue; }

3. alarm信号 //特性不会阻塞,会更新

/* function: 中断当前进程阻塞的系统调用,在哪里阻塞在哪里中断

signum: 捕捉的信号

act: 设置之后的信号属性

oldact: 获取先前默认的属性

*

int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);

struct sigaction {

void (*sa_handler)(int); //signal 的信号处理函数

void (*sa_sigaction)(int, siginfo_t *, void *); //sigaction最早的信号处理函数

sigset_t

sa_mask; //信号屏蔽码,可以屏蔽指定信号

int

sa_flags; //信号属性

void (*sa_restorer)(void); //linux 不支持

};

二 UNIX 域套接字编程

1. 本地(本机)进程间通信

2. 不经过OSI /TCP/IP 体系结构,不存在打包和拆包过程

3. 可以完全套用TCP/UDP CS 模型

练习: 实现UNIX本地进程通信

三 tftp 实现

第四篇:听课笔记

教学内容:苏教版小学语文第七册《九色鹿》 教学时间:2005年11月

师:海安县实验小学

仲剑锋 教学过程:

一、 复习巩固

1、回忆主要内容

2、九色鹿给你留下了什么印象? 师引导:第一小节呢?

指名,相机板书:美丽善良 勇于救人

随感:导入有些困难,学生平时积累比较匮乏。

二、 精读课文

1、通过你的朗读,调达好象是一个什么样的人? 指名:(1)知恩图报

(2)老实 课件出示:千恩万谢

知恩图报 感恩戴得 有恩必报

随感:很有必要的出示,是帮助学生积累词语的好机会,适当的读背记忆也许效果会好些。

2、如何读好这些词?(要读出敬佩之情) 自由读、指名读 师生评价。

3、他到底是不是这样一个人呢? (1) 指名读第六小节 师指导:王妃的高兴要读出来 再指名读。

(2) 指名读第七小节 (3) 指名读第八小节 师指导:读出春光的美丽

随感:通过指导学生朗读来体会人物角色的特点,这是阅读教学中比不可少也不容忽视的环节。

4、调达是怎么做的?指名读句。

出示:调达看了皇榜,心想发财的机会来了。 (1) 他眼前似乎看见了什么?心里在想什么? (指导体会财迷心窍的样子) 指导读。

(2) 着重推敲“就“

调达当时只想到了什么?(金钱) 他忘记了什么?(别人的恩) 指导理解词语“见利忘义“。

随感:很令人叫绝的理解词语方法,通过联系文本内容来辅助理解,学生会感到很轻松。

(3) 此时你觉得调达是个怎样的人? 出示词语:见利忘义

忘恩负义 背信弃义 恩将仇报

指名读、指导读 自由读背词语。

5、了解了他的为人,能读出不同的见解出来吗? 出示语句:„„“谢谢你的救命之恩„„” 指名读(生1读得很虚伪) 师:同意他的观点吗?

生2:不同意,当时他还不知道有发财的机会,把他读得太卑鄙了。 生读。 „„

师总结:„„读书要有自己的见解„„

随感:新课程强调不能拘泥于文本,而是学会跳出文本内容,以学生自己独特的理解为重心,注重学生的阅读感受,这里教者引导辩论,让学生大胆读出了自己的收获。

6、当调达带着国王的军队来到九色鹿面前,九色鹿心情怎样?(气愤) 出示语句 指名读。 师生评价。

九色鹿这番话有几层意思?指名说。 (1) 第一层:气愤 指名读,生评价,再读 重点词“竟然”(出乎意料) (2) 第二层:

指名读,师评价(字字千钧,义正言辞) 有不同的读法吗?能让国王知道自己错了吗? 师范读:这样读有道理吗?能帮我说说我的道理吗? (要尊重国王) 自由读,指名读。

随感:阅读教学中,教师的示范朗读是很有必要的,从而为学生指引正确的情感方向。

7、再用一些词来赞美九色鹿? 相机板书:临危不乱

聪明过人

8、指名读国王的做法

9、练笔:

九色鹿,我(称赞、敬佩、提醒)你:(

)。 调达,我(斥责、讨厌、劝告)你:(

)。 师生交流

三、 总结、作业:

师朗诵名言:

1、滴水之恩,当以涌泉相报。

2、人的最大美德莫过于诚信,诚信是人之根业之本。

作业:搜集有关诚信的名言警句。

第五篇:听课笔记

听课对象:刘珊珊老师 扬中市实验小学 听课题目:Goodbye,电子游戏!

一、激趣导入

1.播放四首熟悉的电子游戏里的歌曲,让学生猜出游戏名称 2.小调查,某小学玩过电子游戏的人数比例图 3.分小组讨论:玩电子游戏到底好不好?

二、了解电子游戏的危害

1.视频资料:关于长时间玩电子游戏对身体的危害 2.专家连线,采访互动

(1)了解玩电子游戏,除了对身体的危害,还有哪些危害? (2)学生自主向专家提问

(3)结束采访后,学生总结玩电子游戏的危害

三、宣传标志的创作 1.提问导入

如何让其他人了解到电子游戏的危害?有哪些手段? 2.图片示例

关于宣传标志的图片 3.小组合作设计标志

主题:远离电子游戏安全标志

4.作品张贴在黑板上,学生说明创意,教师一一点评 5.评选出最佳创意奖在学校张贴宣传

四、活动结束,教师总结 1.问一问,想一想,答一答

不玩电子游戏,可以玩那些游戏?

2.老师提前准备好游戏道具放在学生抽屉里,让学生自主找一找玩一玩 3.请学生谈谈这节课的收获与感想

听课对象:狄莺老师 丹阳市实验小学 听课题目:纽扣

一、激趣导入 1.谜语导入

关于纽扣的谜语 2.图片示例

看一看,下面的两件衣服,衣服上的纽扣有什么不同? 3.小组分工

观察准备好的纽扣道具,一起交流汇报

二、了解纽扣的知识

1.纽扣在中国/外国的历史

图片展示,老师讲解

2.学生课前收集关于纽扣的资料,在课堂上说一说关于纽扣的有趣的事情 3.学习纽扣的其他用途 4.了解各式各样纽扣的分类

通过形状,颜色等进行分类

三、小小设计师

1.请学生来设计一枚纽扣

2.上讲台展示作品,大家一起欣赏

听课对象:潘逸潇老师 镇江新区银山小学 听课题目:冲上云霄,放飞梦想

一、激趣导入

播放准备的视频资料,了解关于飞机的发展史

二、了解飞机知识

1.了解并学习飞机发展的几个阶段 2.让大家分享交流自己坐飞机的经历 3.教会学生登机的步骤

三、模拟情景

老师先示范一遍登机的情境顺序,再请学生上讲台模拟登机的过程,并指出问题

四、动一动

自主动手折纸飞机,写上自己的梦想,放飞纸飞机

五、教师总结

听课对象:孙曦老师 润州实验小学 听课题目:叶的世界

一、激趣导入

观察树叶,快速找不同

二、走进树叶的世界 1.学习并了解叶的结构

2.读《走进叶子》漫画,仔细观察叶子,找出你认为最美的一片 3.用投影设备在大屏幕上观察的叶子

4.学生分享自己提前准备好的树叶,介绍自己的树叶的特点

三、深层递进

1.播放关于叶子的电影、照片、图画、诗歌,给学生欣赏

欣赏小诗:动物与叶子,了解动物与叶子的密切联系

头脑风暴:人与叶子,叶子的一生就如同人的一生一样

诗歌欣赏:做一片美丽的叶子

图片欣赏:多种多样的树叶,了解叶子的多种用途 2.留住你对叶子的喜爱

小组讨论:做什么?该怎么做?

小组合作树叶作品,上台展示

四、教师总结

听课对象:李星老师 镇江市红旗小学 听课题目:走进菊花

一、小组活动形式导入

采取分组活动的形式,请组长介绍自己小组研究的主题、目标,大家互相交流

二、制定计划表格 1.制定活动表格

2.向大家交流自己小组的活动过程 3.填写活动表格

填写研究主题、小组成员、研究目标、研究任务、研究方法和成果等 4.活动完成,分小组展示计划表格,说说自己的表格特点

三、根据小组制定的表格,实施研究

四、活动结束,教师总结

听课对象:黄娅琴老师 镇江市桃园小学 听课题目:我和“肉肉”有个约会

一、激趣导入

1.图片欣赏:多肉植物 2.小组活动:确定研究目标

二、活动研究 1.教师示例

研究:佛珠名字的由来

2.根据确定的研究目标,对准备的资料进行整理归纳 3.根据活动结果,填写肉肉家族调查表

填写小组名称、成员、研究目标、资料类型、资料来源和我们的发现 4.完成调查表

5.上讲台分享各小组研究成果

三、活动结束,教师总结

听课对象:徐智慧老师 句容郭庄中心小学 听课内容:综合实践活动,方法指导课 听课题目:怎样设计调查问卷

一、分析问卷调查的组成形式 1.问卷主题 2.指导语

3.正文(问题)

4.结束语(感谢语) 5.调查人名字及调查日期

二、问卷调查的问题是怎样产生的?

三、自己试一试

1.小组合作设计一份调查问卷

2.上讲台分享设计的调查问卷,与大家交流

四、活动结束

听课总结

十一月份,我们参加了“镇江市第十二届新秀杯小学综合实践青年教师课堂教学评比”的实践课活动。我们不是去上课的,而是去听课学习的。通过两天的观摩学习,我不仅听到了很多节不同类型的课,更是在这里学习到了很多教学技巧。通过这次听课学习,我收获了很多,每一节课都有值得我学习借鉴的地方。下面我来和大家说一说。

我听课时注意到老师们都采取不同的方式来调动学生的积极性,大都采用小组讨论、小游戏或创设一个情境让学生表演等等。这些方法对于调动学生积极性和主动性都很有效。可以明显感受到学生的积极性都被调动起来了。我学习到了,以后在课堂教学中,也可以采取这个方式。

我还发现老师们上课时很注重课堂活动的形式,任何活动的设计都是围绕学生获得语言知识和语言技能而设计的,与教学内容密切联系,能使学生更加深入的了解到知识。

因为每个学生在学习上所表现出的兴趣、天分和能力以及学习方法都是不同的,在学习能力上的体现也不同。所以老师们的课堂活动的设计都是面向全体的学生的,让每个学生都加入进去,让每个学生都有学习任务可参与,使每个学生的学习都能得到发展。

老师们的课堂教学活动的设计突出了真实化、生活化。我记得课程标准提出:“活动要以学生的生活经验和兴趣为出发点,内容和方式尽量真实;并积极促进学科间相互渗透和联系,使学生的思维和想象力,审美情趣和创新精神等综合素质得到发展。”所以,我看到教师们设计的课堂教学活动很贴近学生的实际生活,撞击出了学生灵感的火花,让学生的思维空间得到发展。把活动的设计拉近了学生的生活中,他们的注意力自然就变得持久了。

通过这次听课,我开阔了眼界,看到了自己的不足。课堂是教师充分展示魅力和智慧的舞台,我们应不断学习,不断反思,取长补短,让自己的课堂真正精彩起来。

上一篇:信息科部门职责范文下一篇:小学班队会安排范文