搜档网
当前位置:搜档网 › Openstack Neutron扩展实现细节

Openstack Neutron扩展实现细节

Openstack Neutron扩展实现细节
Openstack Neutron扩展实现细节

Openstack Neutron扩展实现细节

1目的

本文已QOS为例子,记录通过Neutron的扩展机制扩展网络服务所注意的细节,帮助后续的开发人员快速上手

2Neutron的架构

Neutron分为三个部分:neutron-client,neutron-server,网络服务代理。

Neturon-client提供两种接口,Shell命令行与开发SDK;内部完成REST请求的封装、发送,应答的处理。

Neutron-server处理来自client的请求,根据请求的路径调用相应的插件进行处理,配置信息存储导数据库,调度选择目标代理,并将网络配置发送给相应的代理

Agent是网络服务直接提供的部分,不同的网络服务由不同的代理完成,比如二层网络的配置由Openvswitch-agent完成。L3-agent完成路由的配置,dhcp-agent

完成dnsmasq的配置,lbass-agent完成各种硬件或软件的负载均衡的配置

3Neutron的代码的修改

Neutron代码主要是要增加常量定义

neutron\plugins\common\constants.py

QOS="QOS"

EXT_TO_SERVICE_MAPPING = {

'dummy': DUMMY,

'lbaas': LOADBALANCER,

'lbaasv2': LOADBALANCERV2,

'fwaas': FIREWALL,

'vpnaas': VPN,

'metering': METERING,

'qos':QOS,

'router': L3_ROUTER_NAT

}

4Neutron的Server部分

4.1扩展的Rest接口定义

4.1.1资源的属性定义表

资源的属性定义表格式如下,定义了Rest接口提供了配置的资源类型,对资源进行操作的属性要求;RESOURCE_ATTRIBUTE_MAP的key为每一种资源名的复数形式,Value为该资源的scheme描述。

RESOURCE_ATTRIBUTE_MAP = {

'qos_rules': {

'id': {'allow_post': False, 'allow_put': False,

'validate': {'type:uuid': None},

'is_visible': True,

'primary_key': True},

'tenant_id': {'allow_post': True, 'allow_put': False,

'validate': {'type:string':attr.TENANT_ID_MAX_LEN},

'required_by_policy': True,

'is_visible': True},

'network_id': {'allow_post': True, 'allow_put': False,

'validate': {'type:uuid': None},

'is_visible': True},

'port_id': {'allow_post': True, 'allow_put': False,

'validate': {'type:uuid': None},

'is_visible': True},

'max_kbps': {'allow_post': True, 'allow_put': True,

'is_visible': True, 'convert_to': convert_to_unsigned_int_or_none},

'max_burst_kbps': {'allow_post': True, 'allow_put': True,

'is_visible': True,'convert_to': convert_to_unsigned_int_or_none},

}

}

REST接口有post,put,get,delete四种方法,post为创建资源,put为修改某个资源,get为获取某个资源,delete为删除某个资源

资源的每个属性都定义了一些约束:

allow_pos True:创建时可以指定;False:创建时不能指定

allow_put True:可以修改;False:不允许修改

validate:验证值的合法性,可以验证最大长度,数据类型,或者是枚举值

is_visible:是否可见,list资源时属性值是否可以返回

4.1.2扩展的描述

该文件的路径为$包名/extensions/qos.py

class Qos(extensions.ExtensionDescriptor):

@classmethod

def get_name(cls):

return "QOS service"

@classmethod

def get_alias(cls):

return "qos"

@classmethod

def get_description(cls):

return "Extension for QOS service"

@classmethod

def get_namespace(cls):

return "https://www.sodocs.net/doc/842961718.html,/neutron/QOS/API_1.0"

@classmethod

def get_updated(cls):

return "2015-04-07T10:00:00-00:00"

@classmethod

def get_resources(cls):

special_mappings = {}

plural_mappings = resource_helper.build_plural_mappings(

special_mappings, RESOURCE_ATTRIBUTE_MAP)

attr.PLURALS.update(plural_mappings)

return

resource_helper.build_resource_info(plural_mappings,RESOURCE_ATTRIBUTE_MAP,c onstants.QOS)

@classmethod

def get_plugin_interface(cls):

return QOSPluginBase

def update_attributes_map(self, attributes):

super(Qos, self).update_attributes_map(

attributes, extension_attrs_map=RESOURCE_ATTRIBUTE_MAP) def get_extended_resources(self, version):

if version == "2.0":

return RESOURCE_ATTRIBUTE_MAP

else:

return {}

扩展的描述需要从extensions.ExtensionDescriptor继承, get_name, get_description, get_namespace, get_updated四个函数返回的内容,是在调用neutron ext-show qos命令时显示的内容。

def get_resources(cls):

special_mappings = {}

plural_mappings = resource_helper.build_plural_mappings(

special_mappings, RESOURCE_ATTRIBUTE_MAP)

attr.PLURALS.update(plural_mappings)

return

resource_helper.build_resource_info(plural_mappings,RESOURCE_ATTRIBUTE_MAP,c onstants.QOS)

4.1.3插件接口的定义

插件的接口必须从ServicePluginBase继承,get_plugin_name, get_plugin_type,

get_plugin_description必须实现,为插件的基础信息。

@six.add_metaclass(abc.ABCMeta)

class QOSPluginBase(ServicePluginBase):

def get_plugin_name(self):

return constants.QOS

def get_plugin_type(self):

return constants.QOS

def get_plugin_description(self):

return 'qos service plugin'

@abc.abstractmethod

def get_qos_rules(self, context, filters=None, fields=None):

pass

@abc.abstractmethod

def get_qos_rule(self, context, id, fields=None):

pass

@abc.abstractmethod

def create_qos_rule(self, context, qos_rule):

"""

qos_rule={'qos_rule':{'network_id':'uuid','port_id':'uuid','max_kbps':10,'max_burst_k bps':10}}

"""

pass

@abc.abstractmethod

def update_qos_rule(self, context, id, qos_rule):

pass

@abc.abstractmethod

def delete_qos_rule(self, context, id):

pass

必须为每个资源定义5个接口,分别为:

#list资源的接口

def get_资源复数名(self, context, filters=None, fields=None)

#show单个资源的接口

def get_资源单数名(self, context, id, fields=None):

#create单个资源的接口

def create_资源单数名(self, context, data):

#update单个资源的接口

def update _资源单数名(self, context, id,data):

#delete单个资源的接口

def delete _资源单数名(self, context, id):

4.1.4插件的数据库实现

4.1.4.1定义数据库模型类

class QosRule(model_base.BASEV2, models_v2.HasId,models_v2.HasTenant): __tablename__ = 'qos_rules'

__table_args__ = (

sa.schema.UniqueConstraint('port_id',

name='uniq_qos_rule_port'), )

network_id = sa.Column(sa.String(36),nullable=False)

port_id = sa.Column(sa.String(36),nullable=False)

max_kbps = sa.Column(sa.Integer)

max_burst_kbps = sa.Column(sa.Integer)

4.1.4.2插件数据库操作类

需要多重继承插件接口类与base_https://www.sodocs.net/doc/842961718.html,monDbMixin

class QOSPluginDB(QOSPluginBase,base_https://www.sodocs.net/doc/842961718.html,monDbMixin): def _make_qos_dict(self, qos, fields=None):

res = {'id': qos['id'],

'tenant_id': qos['tenant_id'],

'network_id':qos['network_id'],

'port_id':qos['port_id'],

'max_kbps':qos['max_kbps'],

'max_burst_kbps':qos['max_burst_kbps']}

return self._fields(res, fields)

def _get_qos(self,context,id):

try:

return self._get_by_id(context, QosRule, id)

except exc.NoResultFound:

raise QosNotFound(Qos_id=id)

def create_qos_rule(self, context, qos_rule):

tenant_id = self._get_tenant_id_for_create(context, qos_rule)

with context.session.begin(subtransactions=True):

qos_db = QosRule(id=uuidutils.generate_uuid(),

tenant_id=tenant_id,

network_id=qos_rule['network_id'],

port_id=qos_rule['port_id'],

max_kbps=qos_rule['max_kbps'],

max_burst_kbps=qos_rule['max_burst_kbps']) context.session.add(qos_db)

return self._make_qos_dict(qos_db)

def get_qos_rule(self, context, id, fields=None):

LOG.debug(_("get_qos_rule() called"))

qos = self._get_qos(context, id)

return self._make_qos_dict(qos, fields)

def get_qos_rules(self, context,filters=None, fields=None):

LOG.debug(_("get_qos_rules() called"))

return self._get_collection(context, QosRule,

self._make_qos_dict,

filters=filters, fields=fields) def update_qos_rule(self, context, id, qos_rule):

LOG.debug(_("update_qos_rule() called"))

with context.session.begin(subtransactions=True):

qos_db = self._get_qos(context, id)

qos_db.update(qos_rule)

return self._make_qos_dict(qos_db)

def delete_qos_rule(self, context, id):

LOG.debug(_("delete_qos_rule() called"))

with context.session.begin(subtransactions=True):

qos = self._get_qos(context, id)

context.session.delete(qos)

4.1.5插件调度类的实现

Agent可以在不同的计算节点,网络节点上运行,插件调度类找到对应的Agent;根据Agent的主机名,获取需要的配置信息。

调度类从agentschedulers_db.AgentSchedulerDbMixin继承

class QosAgentSchedulerDbMixin(agentschedulers_db.AgentSchedulerDbMixin):

def get_agent_by_qos(self, context, qos_rule_id, active=None): #根据QOS的ID,查询Agent

query = context.session.query(QosAgentBinding)

query = query.options(joinedload('agent'))

binding = query.get(qos_rule_id)

if (binding and self.is_eligible_agent(

active, binding.agent)):

return {'agent': self._make_agent_dict(binding.agent)} return None

def get_qos_agents(self, context, active=None, filters=None): #查询所有qos类型的agent

query = context.session.query(agents_db.Agent)

query = query.filter_by(agent_type=qos_const.AGENT_TYPE_QOS) if active is not None:

query = query.filter_by(admin_state_up=active)

if filters:

for key, value in filters.iteritems():

column = getattr(agents_db.Agent, key, None)

if column:

query = query.filter(column.in_(value)) return [agent

for agent in query

if self.is_eligible_agent(active, agent)]

def bind_qos_on_agent(self, context, qos_rule_id,agent_id): with context.session.begin(subtransactions=True):

bind = QosAgentBinding(qos_rule_id=qos_rule_id,

agent_id=agent_id)

context.session.add(bind)

return self._make_qos_dict(bind)

def list_qos_on_agent(self, context, host):

#查询Agent上的所有qos规则

id=None

agent = self.get_qos_agents(context,True,{'host':[host]})

if len(agent)>0:

id = agent[0]["id"]

query = context.session.query(QosAgentBinding.qos_rule_id)

query = query.filter_by(agent_id=id)

qos_ids = [item[0] for item in query]

if qos_ids:

return {'qos_rules': self.get_qos_rules(context, filters={'id': qos_ids})} else:

return {'qos_rules': []}

def schedule(self,context,qos_rule,activ_agent):

#根据规则的定义选择agent

bind_port = None

with context.session.begin(subtransactions=True):

bind_port = context.session.query(PortBinding.host).filter_by(port_id=qos_rule["port_id"]).first() if bind_port:

for agent in activ_agent:

if bind_port[0] == agent.host:

return agent

msg = _('%(agent_type)s on host %(host)s is invalid.')

LOG.warn(msg, {'agent_type': agent['agent_type'],

'host':bind_port})

LOG.warn("port_id = %s not running",qos_rule["port_id"])

return None return None

4.1.6发送给Agent的RPC封装

Agent完成资源在具体设备或软件的配置,当创建、删除、修改资源时,需要将信息发送到Agent。

class QOSAgentApi(object):

"""neutron server插件端发送到agent端的rpc."""

def __init__(self, topic):

target = messaging.Target(topic=topic, version='1.0')

self.client = n_rpc.get_client(target)

def update_qos_rule(self,context,host,qos):

cctxt = self.client.prepare(server=host)

return cctxt.call(context, 'update_qos_rule',qos=qos)

def delete_qos_rule(self,context,host,port_id):

cctxt = self.client.prepare(server=host)

return cctxt.call(context, 'delete_qos_rule',port_id=port_id)

4.1.7处理Agent消息的callback

class QosCallbacks(object):

"""neutron server处理agent端发送的rpc请求."""

target = messaging.Target(version='1.0')

def __init__(self, plugin):

super(QosCallbacks, self).__init__()

self.plugin = plugin

def get_ready_qos_rules(self, context, host=None):

rule_set={}

with context.session.begin(subtransactions=True):

qos_rules = self.plugin.list_qos_on_agent(context, host)

for rule in qos_rules["qos_rules"]:

rule_set[rule['port_id']] = rule

return rule_set

4.1.8插件实现

必须要从插件接口类继承

class QosPlugin(QOSPluginDB,QosAgentSchedulerDbMixin):

supported_extension_aliases = ["qos","service-type"]

def __init__(self):

self.agent_rpc = QOSAgentApi(qos_const.QOS_AGENT)

self.agent_endpoints = [

agent_callbacks.QosCallbacks(self),

agents_db.AgentExtRpcCallback(self)

]

self.conn = n_rpc.create_connection(new=True)

self.conn.create_consumer(qos_const.QOS_PLUGIN,self.agent_endpoints,fanout=Fal se)

self.conn.consume_in_threads()

def create_qos_rule(self, context, qos_rule):

def update_qos_rule(self, context, id, qos_rule):

def delete_qos_rule(self, context, id):

5Neutron的Agent部分

5.1AgentMnager的实现

从periodic_task.PeriodicTasks继承,可以周期性执行某些任务

class QOSAgentManager(periodic_task.PeriodicTasks):

# history

# 1.0 Initial version

target = oslo_messaging.Target(version='1.0')

def __init__(self, conf):

super(QOSAgentManager, self).__init__()

self.conf = conf

self.context = ncontext.get_admin_context_without_session()

self.plugin_rpc = agent_api.QOSAgentApi(

qos_const.QOS_PLUGIN,

self.context,

self.conf.host

)

self._load_drivers()

self.agent_state = {

'binary': 'neutron-qos-agent',

'host': conf.host,

'topic': qos_const.QOS_AGENT,

'configurations': {'device_drivers': self.device_driver.__class__.__name__},

'agent_type': qos_const.AGENT_TYPE_QOS,

'start_flag': True}

self.admin_state_up = True

self._setup_state_rpc()

self.needs_resync = False

self.qos_rules={}

# pool_id->device_driver_name mapping used to store known instances def _load_drivers(self):

#加载驱动,QOS可以通过OVS实现也可以通过其他方式实现,根据配置加载不同的驱动,取决与二层虚拟化的实现

self.device_driver = None

driver = provconfig.get_provider_driver_class(self.conf.device_driver,DEVICE_DRIVERS) try:

self.device_driver = importutils.import_object(driver,cfg,self.plugin_rpc)

except ImportError:

msg = _('Error importing QOS device driver: %s')

raise SystemExit(msg % driver)

def _setup_state_rpc(self):

self.state_rpc = agent_rpc.PluginReportStateAPI(

qos_const.QOS_PLUGIN)

report_interval = self.conf.AGENT.report_interval

if report_interval:

heartbeat = loopingcall.FixedIntervalLoopingCall(

self._report_state)

heartbeat.start(interval=report_interval)

def _report_state(self):

#上报agent的状态

try:

self.state_rpc.report_state(self.context, self.agent_state)

self.agent_state.pop('start_flag', None)

except Exception:

LOG.exception(_LE("Failed reporting state!"))

def initialize_service_hook(self, started_by):

self.sync_state()

@periodic_task.periodic_task

def periodic_resync(self, context):

if self.needs_resync:

self.needs_resync = False

self.sync_state()

def sync_state(self):

known_rules = set(self.qos_rules.keys())

try:

ready_rules = self.plugin_rpc.get_ready_qos_rules()

https://www.sodocs.net/doc/842961718.html,("load ready_rules:%r",ready_rules)

for port_id in known_rules - set(ready_rules.keys()):

self._destroy_qos_rule(port_id)

for port_id,rule in ready_rules.items():

if port_id in self.qos_rules:

if rule != self.qos_rules[port_id]:

https://www.sodocs.net/doc/842961718.html,("port_id = %s has update old_rule=%r new_rule=%r",port_id,self.qos_rules[port_id],rule)

self.update_qos_rule(None,rule)

else:

https://www.sodocs.net/doc/842961718.html,("port_id = %s create rule=%r",port_id,rule)

self.update_qos_rule(None,rule)

except Exception:

LOG.exception(_LE('Unable to retrieve ready devices'))

self.needs_resync = True

def _destroy_qos_rule(self,port_id):

try:

self.device_driver.delete({'port_id':port_id})

except Exception:

LOG.exception(_LE('Unable to destroy qos rule on port: %s'), port_id)

self.needs_resync = True

def delete_qos_rule(self,context,port_id):

LOG.debug("begin call delete_qos_rule port_id=%s",port_id)

self._destroy_qos_rule(port_id)

def update_qos_rule(self,context,qos):

LOG.debug("begin call update_qos_rule rule=%r",qos)

try:

port_id = qos['port_id']

self.qos_rules[port_id] = qos

self.device_driver.update(qos)

LOG.debug("update_qos_rule end")

except Exception:

import traceback

LOG.exception("%s",traceback.format_exc())

LOG.exception(_LE('Unable to update qos rule on port: %s'), qos['port_id'])

self.needs_resync = True

def agent_updated(self, context, payload):

"""Handle the agent_updated notification event."""

if payload['admin_state_up'] != self.admin_state_up:

self.admin_state_up = payload['admin_state_up']

if self.admin_state_up:

self.needs_resync = True

else:

for port_name in self.qos_rules.keys():

https://www.sodocs.net/doc/842961718.html,(_LI("Destroying qos rule on port %s due to agent "

"disabling"), port_name)

self._destroy_qos_rule(port_name)

https://www.sodocs.net/doc/842961718.html,(_LI("Agent_updated by server side %s!"), payload)

5.2驱动部分

Agent的驱动部分对具体设备进行配置

这里QosOVSAgentDriver对OVS添加QOS的定义

class QosOVSAgentDriver(AgentDeviceDriver):

def __init__(self,cfg,plugin_rpc):

super(QosOVSAgentDriver, self).__init__(cfg,plugin_rpc)

# TODO(QoS) check if we can get this configuration

# as constructor arguments

self.br_int_name = cfg.CONF.OVS.integration_bridge

self.br_int = None

self.handlers = {}

self.initialize()

def initialize(self):

self.br_int = QosOVSBridge(self.br_int_name)

def create(self, rules):

self._update_bw_limit_rule(rules)

def update(self, rules):

self._update_bw_limit_rule(rules)

def delete(self, rules):

self._delete_bw_limit_rule(rules)

def _update_bw_limit_rule(self, rule):

def _delete_bw_limit_rule(self, rule):

6Neutron的Client部分

6.1SDK的封装

neutronclient\neutron\v2_0\增加目录:qos

添加qos的命令定义

neutronclient\neutron\v2_0\qos\qos_rule.py

创建的命令需要从neutronv20.CreateCommand继承

class CreateQosRule(neutronv20.CreateCommand):

resource = 'qos_rule'

list_columns = ["id"]

_formatters = {}

def add_known_arguments(self, parser):

parser.add_argument(

'--network-id',required=True,help=_('network ID.'))

parser.add_argument(

'--port-id',required=True,help=_('Port ID.'))

parser.add_argument(

'--max-kbps',required=True,help=_('max bandwidth in kps.')) parser.add_argument(

'--max-burst-kbps',required=True,help=_('max burst bandwidth in kps.'))

def args2body(self, parsed_args):

body={self.resource:{}}

neutronv20.update_dict(parsed_args,body[self.resource],['network_id','port_id','max _kbps','max_burst_kbps'])

return body

class ListQosRule(neutronv20.ListCommand):

resource = 'qos_rule'

list_columns = ["id",'network_id','port_id','max_kbps','max_burst_kbps']

_formatters = {}

pagination_support = True

sorting_support = True

class UpdateQosRule(neutronv20.UpdateCommand):

resource = 'qos_rule'

class ShowQosRule(neutronv20.ShowCommand):

resource = 'qos_rule'

class DeleteQosRule(neutronv20.DeleteCommand):

resource = 'qos_rule'

ListCommand最终调用neutronclient\v2_0\client.py中定义的list_ resource(复数形式)

UpdateCommand最终调用neutronclient\v2_0\client.py中定义的update_ resource ShowCommand最终调用neutronclient\v2_0\client.py中定义的show_ resource( DeleteCommand最终调用neutronclient\v2_0\client.py中定义的delete_ resource( 6.2Client的api接口定义

修改neutronclient\v2_0\client.py

qos_rules_path="/qos/qos_rules"

qos_rule_path="/qos/qos_rules/%s"

EXTED_PLURALS = {

@APIParamsCall

def update_qos_rule(self, qos_rule_id, body=None):

"""Update a new qos rule."""

return self.put(self.qos_rule_path % qos_rule_id, body=body) @APIParamsCall

def list_qos_rules(self, retrieve_all=True, **_params):

"""Fetch a list of all new qos rule for a tenant."""

return self.list('qos_rules', self.qos_rules_path,

retrieve_all, **_params)

@APIParamsCall

def show_qos_rule(self, qos_rule_id, **_params):

"""Fetch information of a certain packet filter."""

return self.get(self.qos_rule_path % qos_rule_id,

params=_params)

@APIParamsCall

def delete_qos_rule(self, qos_rule_id):

"""Delete the specified packet filter."""

return self.delete(self.qos_rule_path % qos_rule_id)

6.3定义shell命令

neutronclient\shell.py

COMMAND_V2 = {

'nec-packet-filter-delete': packetfilter.DeletePacketFilter,

'qos-rule-create':qos_rule.CreateQosRule,

'qos-rule-update':qos_rule.UpdateQosRule,

'qos-rule-list':qos_rule.ListQosRule,

'qos-rule-show':qos_rule.ShowQosRule,

'qos-rule-delete':qos_rule.DeleteQosRule,

}

7打包

7.1数据库建库代码

neutron-qos\neutron_qos\db\migration\alembic_migrations\versions增加文件kilo_release.py文件,文件内容如下

revision = 'kilo'

down_revision = 'qos'

def upgrade():

"""A no-op migration for marking the Kilo release."""

Pass

neutron-qos\neutron_qos\db\migration\alembic_migrations\versions增加文件qos.py,文件内容如下:

revision = 'qos'

down_revision = 'start_neutron_qos'

from alembic import op

import sqlalchemy as sa

def upgrade():

op.create_table(

u'qos_rules',

sa.Column(u'tenant_id', sa.String(255), nullable=True),

sa.Column(u'id', sa.String(36), nullable=False),

sa.Column(u'network_id', sa.String(36), nullable=False),

sa.Column(u'port_id', sa.String(36), nullable=False),

sa.Column(u'max_kbps', sa.Integer(), nullable=False),

sa.Column(u'max_burst_kbps', sa.Integer(), nullable=True),

sa.PrimaryKeyConstraint(u'id'),

sa.UniqueConstraint(u'port_id'),

)

op.create_table(

u'qosagentbindings',

sa.Column(u'qos_rule_id', sa.String(36), nullable=False),

sa.Column(u'agent_id', sa.String(36), nullable=False),

sa.PrimaryKeyConstraint(u'qos_rule_id'),

sa.ForeignKeyConstraint([u'qos_rule_id'], [u'qos_rules.id']),

sa.ForeignKeyConstraint([u'agent_id'], [u'agents.id']), )

7.2代码结构

-neutron-qos

AUTHORS

ChangeLog

MANIFEST.in

setup.cfg

PKG-INFO

README.rst

Requirements.txt

Setup.py

-bin

neutron-qos-agent

-etc

neutron-qos-agent.service

qos_agent.ini

-neutron_qos

-patch

neutron.tar.gz

neutronclient.tar.gz

7.3MANIFEST.in

include README.rst

include ChangeLog

include LICENSE

include neutron_qos/db/migration/alembic.ini

include neutron_qos/db/migration/alembic_migrations/versions/qos.py include neutron_qos/db/migration/alembic_migrations/versions/kilo_release.py include neutron_qos/db/migration/alembic_migrations/versions/

start_neutron_qos.py

include patch/neutron.tar.gz

include patch/neutronclient.tar.gz

include etc/neutron-qos-agent.service

include etc/qos_agent.ini

include bin/neturon-qos-agent

exclude .gitignore

exclude .gitreview

global-exclude *.pyc

7.4setup.cfg

[metadata]

name = neutron-qos

version = 1.0.1

summary = OpenStack Networking QOS as a Service

description-file =

README.rst

author = tangjuan

author-email = tangj@https://www.sodocs.net/doc/842961718.html,

home-page =https://www.sodocs.net/doc/842961718.html,

classifier =

Environment :: OpenStack

Intended Audience :: Information Technology

Intended Audience :: System Administrators

License :: OSI Approved :: Apache Software License

Operating System :: POSIX :: Linux

Programming Language :: Python

Programming Language :: Python :: 2

Programming Language :: Python :: 2.7

[files]

packages =

neutron_qos

data_files =

/etc/neutron =

etc/qos_agent.ini

/usr/lib/systemd/system =

etc/neutron-qos-agent.service

/usr/bin =

bin/neturon-qos-agent

/tmp=

patch/neutron.tar.gz

patch/neutronclient.tar.gz

[global]

setup-hooks =

pbr.hooks.setup_hook

[entry_points]

device_drivers =

ovs=neutron_qos.agent.driver.ovs_driver:QosOVSAgentDriver console_scripts =

neutron-qos-agent = neutron_qos.agent.agent:main [wheel]

universal = 1

7.5setup.py

try:

import multiprocessing # noqa

except ImportError:

pass

setuptools.setup(

setup_requires=['pbr>=1.3'],

pbr=True)

细微处见真情作文800字

细微处见真情作文800字 时光飞逝,日月如梭,一件件往事都成了我的美好回忆,但有几件事,是我永生不能忘怀的,就是那一个个“细微的动作”。 奶奶平时不仅要照顾我,还要做很多家务活,把自己的身体都给累垮了。也就是因为这样,时间长了,奶奶便得了高血压,前不久只能躺在家里休息。当时我还不知道这个情况。我看着奶奶成天躺在床上,心想:“都这个时候了,为什么奶奶还不起来?”到了中午,爷爷在工作还没回来,我的肚子饿得咕咕叫。我对奶奶说:“奶奶,我要吃中饭。”奶奶和蔼地说:“爷爷还没回来。”我生气地吼道:“你就不能给我做吗?”奶奶想都没想,说:“好的,我给你做。”奶奶从床上坐了起来,摇了摇头清了清思绪。奶奶很快开始做饭了,不一会儿就做好了。奶奶一摇一摆,我真怕她会摔跤,她很快把饭菜一一端上来。我便大摇大摆地走出来吃饭了,吃的时候一直在说:“这个菜太咸,那个汤太淡。”但奶奶心平气和地说:“我得了高血压,就忍一忍吧。”听到这句话,我顿时感到无比羞愧,奶奶生病了,我还这么要求她,我的眼泪即将涌出,但奶奶摸了摸我的头,说:“不要紧的,奶奶照顾你是应该的。”奶奶对我的照顾,我永生难忘。

记得在我五年级的时候,我当时的班主任姓王。一天,我得了喉炎,痛得连喝水都不行。王老师上课时看出了我喉炎这个情况,下课后,王老师把我带到她的办公室,特意去帮我买来茶叶蛋和豆浆。可谁知道,当时学校门口没有卖的,王老师绕了好几条街才帮我买来。而且,老师用的还是自己的吃饭时间。我问老师:“老师。你吃饭了吗?”老师说:“我吃了,你就不用管了。”老师嘴里这么说,但我知道老师没吃。等我吃完后,老师摸着我的头,关切地询问了我好几次喉咙还痛不痛。我想不通老师为什么可以对我这么好。 就是这两件事,就是这两个小动作,两次摸了我的头,就好像刻在我心上。父亲、母亲,是你们给予了我生命;爷爷、奶奶,是你们照顾了我十多年;老师,是你们给了我知识。没有你们,就没有我。谢谢你们对我的无微不至的关怀和照顾。

作文:细微之处见真情

细微之处见真情 就像高人总是住在闹市里,就像金子总是混在沙子里,真情总是弥漫在细微之处。 一次放假回家,走晚了,什么车也没找到,只能到马路上等公交车。上车了,车上已经没有座位了—除了那个人旁边。那个人头发像被炮炸了一样,枯草般的颜色,而且根根奋发向上,而他的牛仔夹克上技能还拖着一条银链子,真像拴狗链,我从心里讨厌这位散发着烟味的青年。 我极不情愿的坐在他旁边,他闭着眼,听着歌,嘴里还哼着:“我们的爱,太无奈···”我想笑但还是忍住了,心想:“和你坐一起,我很无奈。” 公交车缓缓地开着,我打量着车上的

人。前面有两个背书包的学生有说有笑;那边一个提公文包的男士一会看一下时间,一会翻一下公文包;后面几个妇女大声的聊着天。 公交车缓缓地停住了,一个老头上来了。公交车又缓缓地启动。 那两个学生不说话了,似乎睡着了;那个拿公文包的男士终于从包里翻出一张报纸,全神贯注的看着;后面的几个妇女谈笑得更大声了。我呢?我坐着思想斗争:谁都不起来,我起来,别人不会认为我傻吗?可是我确实应该让座。车上的空气中散发着令人窒息的气氛,窗外的天蓝的不像话。 正当我犹豫之时,旁边的“小混混”伸了个懒腰,正好看见那个弯腰驼背的老头吃力

的抓着扶手。我看见他眉头稍皱了一下,便把耳机装了起来,站起身,走到老头旁边,努努嘴,示意老头坐下。然后他一伸手抓住扶手,带的银链子哗哗一阵响,似乎在唱着歌。 车还是缓缓地开着,我的心却再也平静不下来。这个细微的动作让我看清了这个“非主流”面貌下却又一颗美好心灵的青年,让我看清了他在细微之处表现出来的片片真情,也让我倍感后悔和自责。我多么希望车开的快点,别让我的心受如此大的煎熬。有风吹过,那条银链子又唱起了歌;阳光依旧,银链子发出别样的光芒,照在我的心头。 就像高人身居闹市也非同寻常,就像金子藏在沙子里也闪闪发光,细微之处的真情更能

作文指导----于细微处见真情

语文作文训练 记叙文中的细节描写 学习目标: 1.学会细心观察,用心捕捉生活中的细节。 2.理解细节描写的作用。 3.掌握细节描写的基本方法。 学习过程: 1.导入(文段比较欣赏) 2.细节描写的涵义和分类 细节描写,是指对人物、景物或场面的某些具有典型特征的细小环节进行具体、生动而又细腻的描绘,以达到“见精神”的描写方法。 细节描写的分类人物细节描写:景物细节描写 3.细节描写的作用 成功的细节描写,作用巨大,能使读者如闻其声,如见其形,如临其境,感同身受,震人心魄,令人过目不忘,回味无穷,增强文章的形象性、生动性、真实性。 4.细节描写的方法 如何写好细节——在关键处驻足,“慢”说细微之处 方法一:细化动作、延长过程 可我能感觉妈妈并没有出去,反而好像到了我的床前。我微微睁开眼,妈妈果然站在我的床边,眼睛愣愣地看着我。 ……眼睛看着我,我分明地感觉她的目光在我的头发上抚摸,妈妈好长时间没有爱抚我的头发了,她在回忆那逝去的岁月吗?妈妈的目光抚上了我的眉,漫上了我的眼,我的眼珠不自觉地转动了几下,她的目光便一如我儿时她那双温柔的手,轻轻地按摩着我的眼睑,我知道她在让我好好睡眠。妈妈的目光滑到了我的脸颊上,似乎在找寻着什么,我知道那是在找她自己影子,又似乎在欣赏着什么,我知道,那是在欣赏凝聚她一生心血的艺术品。…… 方法二:运用修辞,画其神韵

可我能感觉妈妈并没有出去,反而好像到了我的床前。我微微睁开眼,妈妈果然站在我的床边,眼睛愣愣地看着我。 眼睛愣愣地看着我,那是什么样的眼神啊!那是第一缕晨曦对娇花的抚弄,那是三月里的春风对碧水的温柔,那是夏日晚霞对嫩柳的辉映,那是秋夜月光对修竹的依恋,那是冬日里的朝阳与小草的交谈! 方法三:想象联想,添其内涵 我的初中语文老师讲课有一个习惯性的动作,讲着讲着,他就会将眼睛向上看,令人忍俊不禁。 当他沉浸在他描述的文学世界里的时候,他的眼光就会一点点远离我们,开始望向天花板,仿佛在那里,寻找着精神的栖息地,构建着一个新世界,于是我们也随着老师的目光,追索着他描述的世界,走过万水千山,看遍诗词赋文,阅尽风流人物,…… 细节描写须遵循的三条原则: a、真实。 b、典型。 c、细致。 5.课堂演练 训练1 粗汉与淑女: 他端起碗,拿起筷,夹了菜放进嘴里,吃起来。 她端起碗,拿起筷,夹了菜放进嘴里,吃起来。 细节描写淑女的吃相:她小心翼翼地端起碗,挑了几缕菜叶,慢慢地送到嘴边,害羞似的张开樱桃小嘴,又迅速地合上,极小幅度地嚼着食物,还不停地用餐巾纸擦拭唇角的余油。 训练2细节描写的综合运用——扩展句子补充细节 我看见一个小姑娘,年龄不大,长得很瘦,穿得也很差。 提示:①“小”到什么程度?②怎么个“瘦法”?③穿得有多“差”? 训练3.他抱住娘,在娘的脸颊上亲了一下。 请运用一系列动词将这句话的内容充实起来 6、课堂小结 学会观察学会感受 学会思考学做生活有心人 7、牛刀小试 根据你平时测验时的观察(或体验),把下面一段话改成具体描写的文段,200字左右。 昨天测验英语,我几次想拿出书来看,由于老师看得紧,都没有成功,最后一次还是被老师发现了,我觉得很不好意思。

六年级作文:于细微处见真情作文800字

于细微处见真情 人世间好比一面明镜,在这面明镜中,你可以清晰的看见人们的举止言谈。甚至更细微的东西西都会从中流露,显现出来。当然,这些细微的都必须得经过我们认真的寻找才可以觅得。 “春蚕到死丝方尽,蜡炬成灰泪始干。”这句古诗的意思是指那些无私奉献的人。好比如说是老师这个职业。而在我身边也有这样一位,一个愿意无私奉献的人。而且从她的身上对我的细心的无微不至对我有很大的影响。 当时我刚上到八年级的时候,大家伙还都是不太熟悉,而我也正是一个“胆怯”的人,看到他们也没有一个我认识的朋友,便独自一人跑到了门口,蹲在那里,低着头。忽然我看见了一个“巨大”的身影,站在我的面前,在那一瞬间,我仿佛看到了一缕阳光照进我的心房,抬头慢慢的仰起头,原来是一位老师。可是当时我还并不知道他是我的班主任,变胆怯的站了起来,但还是不肯抬头看那位老师,而老师却细声细语蹲着下来对我说话,我到现在还铭记于心:同学,你怎么了?我看你不高兴,是不是有遇到什么困难了吗?在她反复的温柔地问了几次后,我才抬头勇敢地对她说:“我刚到这个班里看到的都是一些新面孔,而且也没有一个我认识的同学,所以我很害怕。也不敢进到教室里面去。”说完我又低下了头。那位老师说:“没有什么大不了的,要相信你自己,要敢于跨出这一步,敢于面对任何陌生人。我们每个人在人生路上都需要努力,积极向上,敢于面对任何挑战。可不应该让这些小小的挫折就把我们给打败了。我刚来这里工作的时

候也没有一个认识的人,也和你一样很孤独,但是我就对我自己说:“一个新的环境,就是一个新的开始,新的环境,要学会自己去适应。现在我也认识了很多新同事,工作也很开心。要相信你自己一定会做的比老师好!一定要自信奥!”说完后,她对我微笑。而这个微笑也让我恢复了信心,勇敢的站了起来,昂首挺胸地跨进了教室。老师又对我说:“我先自我介绍一下,我姓张,可以叫我张老师,以后我们可以成为无话不谈的好朋友。我回答道:“嗯,你好张老师,我是赵嘉怡,那我们以后真的就是好朋友了吗,我真的是太高兴了!”“好了,马上就要上课了,你也赶紧进教室吧!”老师说道。后来我俩一起进了教室,这会儿我才知道,原来她就是我的那个班主任呀! 张老师在我胆怯的时候一直耐心的鼓励着我,低声细语而又温柔,让我重获信心。可见这个老师的品质有多么高尚,虽然这只是一个小小的事情,微不足道,但它却体现了老师对同学的关怀,这就是真情!

于细微处见真情-亲情作文专题

于细微处见真情——“亲情”话题写作指导 写作任务 Writing task 亲情,一个温暖的词语,亲情,一个永不褪色的话题,亲情,一种奇妙无比的力量。我们一来到这个世界,就被亲情浓浓地包围着,这是一种与生俱来的宝贵财富。但往往,我们却因为习以为常,而忽略了亲情,漠视了亲情。今天,让我们回顾生命中的亲情,用笔写下那些令你感怀的亲情片段或瞬间,以此来感悟亲情,尊敬亲人,怀着一颗感恩之心,懂得亲情所蕴含的意义。 请以“亲情”为话题,写一篇600字左右的文章,题目自拟。 【题解】 亲情,就是亲人之间的感情,是母爱、父爱、手足之情,是亲人之间的互爱牵挂,是长者对幼者的疼爱,当然,也是子女儿孙对长辈的孝敬之情。我们每个人的成长都离不开亲人精心的呵护,亲人正确的引导,亲人关注的目光,亲人全力的支持……这些浓浓的亲情时时包围着我们,滋润着我们,使我们不断成长。 亲情的故事太多太多,无法说尽,但在你的记忆中,总有那么几个片段或瞬间击中你,让你感动,让你感悟到亲情之爱、亲情之伟大。 写作亲情类作文,应特别关注以下两点: 一、选材真实、典型——只有真实,你才会写出真情实感;只有典型,才是属于你的独一无二的材料。 二、细节描摹,于细微之处见真情——“慈母手中线,游子身上衣”,细节,能以小见大,一滴水能反映太阳的光辉;细节,最能打动人心,细节,是写作亲情类文章的必备要素。 于细微处见真情 ——“亲情”话题写作指导 大同初级中学唐铭 “亲情”这个话题很大,用几百字把亲情写好并非易事,所以写作前一定要找好切入点,选好合适的材料,以小见大,精心描摹,于细微处见真情。 一、立意深刻,选材典型 亲情类文章可以从以下几个角度来立意和选材:

六年级作文:于细微处见真情作文500字

于细微处见真情 【于细微处见真情】 任子奕 有些感情许多人以为只有经历大风大浪才能看见,然而并不是。在许多微不足道的事情中也能看见真情。 “慈母手中线,游子身上衣。临行密密缝,意恐迟迟归”。唐朝诗人孟郊的母亲在儿子临走前为儿子缝衣裳,密密麻麻的针线不仅缝了一件结实的衣裳,而且将母爱也缝进去了。这样一件母亲为临行的儿子缝衣裳的小事,看似微不足道,但却充满了爱。孟郊的《游子吟》通篇采用白描的手法,不加任何修饰,却将慈母的形象展现了出来,成为了一首妇孺皆知,脍炙人口的千古名诗。 恍然想起四年前,回了一趟太姥姥家。临走时,太姥姥拿给我一件极厚的棉袄。冬天时我常穿着这一件棉袄就可以出门了。棉袄是太姥姥亲手做的,她亲自买回来布,并自己剪裁。长长的衣袖,高高的衣领上缝着密密麻麻的棉线与太姥姥对我的关爱。 太姥姥的腿脚不好。走路总拄着一根拐杖,不然就走不了。她的背驼得也很严重,几乎成九十度弯曲。想起这些,我的泪不禁留了下来。这样一个瘦小老太太是如何自己买回来那些布,和那些棉花,并一针一线地为子孙缝制出一件又一件温暖的衣裳的。 于细微处见真情。也许你会认为这样的事件太小了,简直不值一提,可我不这么认为。人一生中能遇到几次轰轰烈烈,撼天动地的大事?难道只有大事才值得我们去记录和回忆吗?小事不也同样可以

显现出人间的真情。让我们在细微处来寻找那些可能被我们轻看,可能被我们丢失的那份真情吧! 在细微处寻找真情,在细微处也能看见真情! 【于细微处见真情】 文/张欣悦 生活中要说大事,也许除了生死其他的都是些鸡毛蒜皮的小事,但是细微之处的小事却也能饱含着真情。 “你怎么又在玩手机呀!你没看见都快考试了吗?你就不能去复习一下你的八科吗?,你看看你的八科,你的阅读这么差,不应该多看些课外书吗?整天抱着手机,手机有那么好玩吗?有玩手机的时间,你就能多看会儿你的书了,我看你没有手机你能活不……?”耳边又传来妈妈絮絮不止,洪流般的话语像开了闸门似的,涌进我的大脑。我心里的那簇小小的火苗,瞬间如火山爆发般喷涌而出。连窗外的盆栽也察觉到屋内中的怒火中烧,低垂着脑门,摇晃着摇晃着…… “什么叫做玩手机呀?这玩手机也会有许多值得学习的地方!就比如,我看小说的话,里面有许多的好词好句,知道我去学习呢!你就知道说我,你怎么不去看看弟弟呢!”心中沉积了许久的话,完全没有经过大脑的过滤,删改,一股恼的全在心中说了一遍。然而另一边却只是垂头叹息。看到这,我的心先是被拨动一半,轻轻地颤动。微风拂过,无情的秋风似乎也在无声地批评我这种无理的行为。虽然没有发泄出来。 波光荡漾,白云飘忽,霎那间,又到了该上学的时间。“你有钱

细微处见真情作文8篇

细微处见真情作文8篇 【篇一:细微之处见真情】 世界处处有真情,因为有真情,世界才变得更加的精彩。爱不一定要很伟大,但真情却不平凡。其实,细微之处也可以见真情。 放假了,我兴奋的坐上公共汽车回家了,打开窗户,天是那样的蓝,云是那样的白,随着车子的飞奔,两旁的树木飞一般的后退,这样幽静的景色让人心旷神怡。 回到家,见表姐夫来到了我家。原来,他是要接我去玩的。到了他家,我最想见到的就是表姐一年前生的儿子阳。 果然,我一进门就见到了阳在床上叽叽喳喳的撇着嘴说些什么,他已经会说话,听表姐夫说,阳正在学走路。我非常高兴,抱着阳亲了几口,他对我露出可爱至极的婴儿般的笑容,表姐教阳喊表叔,他真的喊了一声,他太乖了,一点也不认生。 最后,表姐夫教阳学走路,他满脸堆笑,抱着阳站立起来,阳不知以所然毫不配合,又坐了下去。又经过几次,阳慢慢地伸出了脚,身体摇摇摆摆,表姐夫稳住了他,他又伸出了另一只脚,我和表姐夫很高兴。 阳也回头对我们笑了笑,喊了声“爸爸”,又继续小心翼翼的伸出一只脚,手也轻轻的摆动着。阳好像累,坐了下去,表姐就喂了一些奶给阳,阳非常的勤奋,经过表姐夫的一番指导后,阳可以轻松的

走几步了。 就在我们正高兴的看着阳走路时,阳走着走着,非常小心,缓慢。突然,阳的脚被一件衣服挡到了,阳就往下一倒,幼小的他满脸恐惧,因为是地板,阳碰到那可就要受伤,正当我们不知所措时,表姐夫一扑,抱住了阳,就是这个细微的小动作,使我们落下了心里的大石头,也使阳避免受到伤害。 世界处处有学问,世间处处有真情。小动作大作用。也许一个小动作可以表现出大感情,所以细微处也可以见真情。 【篇二:细微之处见真情】 晨曦要感谢阳光给予人们的温暖,花儿要感谢小草无私衬托的鲜艳,小鸟要感谢树枝让它有高歌的舞台……生活处处洋溢着真情。 记得那是一个月朗星稀的夜晚。轻风抚摸着大地,月亮也洒下她那柔和的光芒,轻轻地铺在我的窗台,我望着星儿,同它一起闪烁着疲惫的双眼。漫长的一天就要过去了,而我的心里空空的,一片寂寥。唉!此夜无眠。 “嘟…”的电话声打破了我心中的寂寥,在脑海中激起一圈圈涟漪。不用想,这也是妈妈打来的。而我却不知是接还是不接…… 姥姥生病了,妈妈回了老家照顾她。我仍清晰地记得她临走时那千篇一律的叮嘱,奇怪的是我并不讨厌。爸爸总是早出晚归,再加上妈妈没在家,我很不堪重负地生病了。姥姥生病了,妈妈就回老家了。那我生病了,妈妈是否也会很快回来。不禁兴奋起来,但姥姥年纪大了,又需要人陪,好不容易有人去了,而我却又要把人叫回来,是不

于细微处见真情

作文教学案例:于细微处见真情 一、教学目的:针对学生在记叙文中存在的问题:文章缺乏真情实感,行文干巴,没有感染力,通过教学使之明确:在记叙文写作中显示真情实感的方法,即“于细微处见真情”。二、教学重点:探讨记叙文细节描写的方法,真实、生动、典型和富有个性,唤醒读者的情感储备,写出细节的深长意味。三、教学难点:在细节描写中怎样找动情物,抓触发点,以细节显示真情实感。四、教学设想:列夫托尔斯泰说:“艺术起于至微”,这里的“至微”就是指那些显示人情美、人性美,具有永久艺术价值的细节。成功的细节描写往往能达到“一瞬传情,一目传神”的艺术境界。在高考作文复习备考中,发现学生不会写记叙文了,学生从小学到高中都在进行记叙文的训练,可是记叙文越写越差,究其原因就是缺乏真情实感的流露,这种真情实感的缺乏又源于对生活细节的捕捉。怎样使学生的记叙文具有打动读者内心世界的动人之处,在作文中显示细节描写这样的亮点是很重要的。那么必须引导学生进一步的掌握记叙文细节描写的方法。五、教学实录:1、以歌曲《同桌的你》导入新课,找出这首歌以细节感人的地方。导入新课:列夫托尔斯泰说:“艺术起于至微”,这里的“至微”就是指那些显示人情美、人性美,具有永久艺术价值的细节。成功的细节描写往往能达到“一瞬传情,以目传神”的艺术境界。在高考作文复习备考中,发现同学们不会写记叙文了,从小学到高中都在进行记叙文的训练,可是记叙文越写越差,究其原因就是缺乏真情实感的流露,这种真情实感的缺乏又源于对生活细节的捕捉不够。怎样使记叙文具有打动读者内心世界的动人之处,在作文中显示细节描写这样的亮点是很重要的。那么必须进一步的掌握记叙文细节描写的方法。板书:课题:记叙文的细节描写2、展示一篇学生的记叙文习作,扣住了主题,语句也通顺,可就是读了味同嚼蜡,究其原因就是缺乏真情实感,怎样才能使文章有真情实感呢,就是要注重“于细微处见真情”,在细节描写中找动情物,抓触发点,以细节显示真情实感。板书:于细微处见真情3、教师讲述:记事写人离不开情节,但重要的却是刻画人物。人物形象塑造的成功与否决定着文章的成败。刻画人物通常用肖像、语言、心理和动作等描写手法,但当你觉得没有重大行动和众多语言或无法具体的刻画人物时,不妨借助细节的刻画来完成。一举手,一投足,一句话,一个眼神,都能表现人物感情,透视人物心理,揭示人物性格,使人物形象栩栩如生,形神毕现,收到点滴传神的艺术效果。这一次作文训练的目的在于认识到记叙文贵在细节传神,当你觉得缺少感人的事情时,不妨把人物放在显微镜下透视,你就会发现许多动人感人之处。人们常把细节描写比作作品的血肉,艺术的生命。所谓把人物放到显微镜下透视,就是要我们在描写人物时抓住肖像、语言、心理和行动的细节,以小见大,于细微处揭示人物的内心世界和性格特征,达到细节传神,以情动人的目的。选择和提炼细节应当做到:真实、生动、典型和富有个性(板书)4、引导学生回顾教材中记叙文的典范篇目,体味细节描写的传神之处:如《项脊轩志》中记叙一些日常生活和家庭琐事来表现母子、夫妻、兄弟之间的深情,细节真实生动,回忆母亲和祖母的往事,结尾对妻子所植的那一株枇杷树的描写等等。如《祝福》中对祥林嫂的眼睛三次变化的描写。如《背影》中对父亲买橘子时爬月台时背影的描写。如《阿Q正传》中对阿Q心理活动细节的描写。如《陈奂生上城》中对陈奂生住在旅馆中的心理与行动的描写。…… 5、名篇导航:展示《学生阿D》,学生找出细节描写的地方是怎样显现真实、生动、典型和富有个性的。明确:写同学或自己的性格,如果平淡的

细微之处见真情

细微之处见真情 1爱,不需要山盟海誓的承诺,有时只是一个关切的眼神,真情,不需要生死离别的见证,有时只是在细微之处不经意的流露。母亲对我的爱,就体现在细微之处,在不经意间,就给我的心注入一丝温暖。 2妈妈一直为了这个家而忙碌着,有一段时间,她每天深夜才回来,我早已进入了梦乡,一个月了,都见不了几次面。因此,在梦里,我的眼角常含着泪水,我想紧紧抓住那双手,永远不想分开!终于有一天,睡梦中的我被开门声惊醒,我睁开惺松的双眼,朦胧中,我的视线中进入一个熟悉而又陌生的身影,是妈妈!只见妈妈先细细打量着我熟睡的脸庞,然后将我的手轻轻放入被窝中,又来到床头,仔仔细细地用手将被子一点一点的掩实,轻柔而小心,似乎害怕我从睡梦中惊醒,就那样,一寸一寸,一点一点,从床头到床尾,帮我掩实每一处,最后用手轻轻整理我的脸边零乱的发丝,才轻轻地转身离开。 3那一刻,我没用手抓住她的手,应该是不敢。因为我怕我会抑制不住自己的感情,只会让泪水肆意地流淌,只敢一个人默默在被窝里流泪,我咬住被子,生怕声音被她听见,我不想让她伤心,她已经付出够多了!原来,在这一个个宁静的夜晚,她都会来看我,替我理好被子,这是怎样一种深沉的爱啊!在这细微之处,母亲的关爱亦如小溪,缓缓流过我的心田,使我那荒芜的土地不致于贫瘠,到如今,已盛开出动人的花,倾吐着款款真情。

4还记得,妈妈的爱是那忙碌于厨房的身影,她可以为了我,一点点地往汤里加盐,一遍又一遍的品尝,妈妈的爱是那药盒中的小纸条,清秀的小字叮嘱我该如何吃药以及关爱的话语;妈妈的爱是冬天里的热水,我握着水瓶,水汽使我的双眼变得模糊…… 5妈妈对我的爱,如细水长流,永远静静地流淌,毫无波澜,毫无起伏,但那每一点,每一滴都是我人生的珍宝,那真情就在细微之处不经意地流过我的心田,泛起小小的幸福的涟漪…… 6母亲,你细微之处的爱已将我包围,我深感真情的温暖,我该拿什么回报你呢? 7只愿将世上最纯净的百合献给您,那淡雅的芬芳就是那细微之处的真情! 学生习作——细微之处见真情 1爱是沙滩上柔软的沙粒,尘埃般微小细腻而又弥散着缱绻的气息,温柔地注入我们渺小的心灵。 2上初中以来,我常常莫名地烦恼,青春的心裹着叛逆的外衣,躁动不安地掩饰着灵魂的空虚。我粗暴地拒绝着来自家人的爱,却不知是用自己的错误伤害着爱我的人和自己。 3七月,透蓝的天空悬着火球般的太阳,窗外不时传来几声聒噪的蝉鸣。我坐在书桌前为一道想不出来的几何题烦闷不已。厕所里传来的水响声扰乱我繁杂的思绪,积蓄的烦躁一时倾泻出来,手中的笔已重重地摔在桌子上。

从细微处见真情

从细微处见真情 ——浅谈如何呵护“留守儿童” 随着经济的发展,越来越多的农民工父母为了谋生外出打工,用勤劳和智慧获取家庭收入,为经济发展和社会稳定作出了贡献,却把他们的幼小子女留在了农村家里,导致孩子与父母相伴的时间甚少,成为儿童中一个特殊的弱势群体———留守儿童。我们这些班主任与孩子每天接触的时间最长,我们要责无旁贷的呵护这些干渴的幼苗。 一、关爱孩子的精神成长 把孩子喜怒哀乐放在心上,注重孩子的生理心理活动、道德情操、审美情趣的教育。与孩子沟通交流情感,弥补留守孩子亲情的缺失。心理健康问题已是留守儿童最容易出现的问题,留守儿童的心理健康问题表现为隐性,是不容易发觉的问题,主要表现如下: 1、性格孤僻内向。留守儿童年龄幼小,离开父母尽管有的是爷爷奶奶和其他亲戚监管,但是毕竟与父母是亲疏不同的,遇到一些麻烦事情会显得柔弱无助,久而久之变得不愿与人交流,性格孤僻内向,不开朗。 2、有自卑心理情绪。儿童大都具有攀比心理,留守儿童由于自己父母不在身边,自己没有依靠和坚强的保护,因此,与父母全在身边的儿童相比,容易产生自卑的心理障碍,有的甚至自暴自弃,丧失信心,学习上降低要求,上进心不强。 3、产生反抗或逆反心理。留守儿童总感到别人在欺负他,一点小事就计较当真,与人交流时充满警惕甚至敌意。对老师、监护人、亲友的管教和批评,产生较强的逆反心理,容易激进冲动,干出一些不可理喻的事情。如:与家人顶撞,不听亲人劝告;不听老师的教导,与教师对着干。 4、产生怨恨父母心理。有少数孩子认为家里穷,父母无能耐,才会出去打工挣钱。对父母外出打工,把自己留在家里不理解,由此而产生怨恨情绪。有的孩子在父母回家后疏远父母,产生情感隔膜,甚至埋怨父母的无情。 我们老师既要做思想道路的引路人,又要做孩子学习进步的引导者,生活的保护者。因此要多与留守儿童谈心,弥补留守儿童的亲情缺失;多鼓励支持孩子参加学校的各项活动;多进行家访,了解孩子在家活动和学习情况;知道留守儿童的个人基本情况和家庭情况;定期与留守儿童父母电话交流沟通,并采取针对措施,提供必要的帮助。用关爱、亲情为留守儿童营造温馨的家园氛围。 三、正确的教育孩子。 留守孩子身上所具有的狭隘、偏执性格缺陷,使我们的工作就更是复杂了,那么针对孩子的不同情况,我们应采取不同的教育方法,对症下药,因材施教,

于无声处见真情——细节描写的三种方法

作文教学方案设计上海交大南洋中学:贾红 于细微处见真情 一、教学目标: 在记叙文或记叙性的散文中学会写出独特感受的方法,在文章主题确定的情况下,于细微处写真情,明确于细微处写真情的方法。 二、教学重点: 探讨记叙文或记叙性的散文中细节描写的方法,细节描写要真实、精细、独特。唤醒读者的情感储备,写出细节的深长意味。 三、教学难点: 在细节描写中怎样做到真实、精细、独特。具体学习三种细节描写的方法。 四、课时安排:两课时,一课时方法指导,一课时写作训练。 五、教学过程 (一)回顾上节课的内容:写出你独特的感受——文章主题的确定 心灵感悟→感情波澜→捕捉→提炼→抒发真实而富有个性特征的感受→表达独到的主题方法:1、描画自己独特的经历。2、表现人情的冷暖炎凉。3、写出独特真实的细节。 (二)新课引导 1、导入新课:列夫托尔斯泰说:“艺术起于至微”,这里的“至微”就是指那些显示人情美、人性美,具有永久艺术价值的细节。独特的感受表现在成功的细节描写中,往往能达到“一瞬传情,以目传神”的艺术境界。本节课进一步学习写出你独特感受的方法,即于细微处见真情——细节描写要真实、精细、独特。 板书课题:于细微处见真情——细节描写要真实、精细、独特。 2、展示本次学生学生的习作《青春的细节》片段节选。 我徜徉在同学们真实、精细、独特的感受中,好像感觉到同学们青春的脉搏跳动着节奏,同学们选择了一些青春的细节来表达独特的感受,这些细节片段是在文中“真实、精细、独特”的。 3、引导学生具体学习细节描写的方法。 文学作品必须写好细节。著名作家李准说:“没有细节就不可能有艺术作品。”细节描写常常给人以生动的感受和震撼人心的力量。 引导学习方法一:细节描写要真实。所谓真实,就是艺术的真实,要符合生活实际,不是虚假的。这就要求作者必须对现实生活及周围的事物进行深入细致的观察,写出自己真切的体验和细微的感受。 学生看老师续写的《常春藤》是真实的吗?(宦嘉予读文章) 明确景物描写、人物对话描写都符合原著的主题内容。 方法二:细节描写要精细。所谓精细,就是要精确细致。就要像雕刻家一样,对人物、事物进行细如发丝地描绘。一定要注意写细小的地方,不易被别人发现被别人发觉的地方,要注意挖掘细微之处。如一个不被众人关注的动作,一个让人难忘的眼神,一个微妙的心理活动,一句特别的话语。 学生举出《一碗阳春面》的例子,是怎样做到在细节方面精雕细刻的。 方法三:所谓独特,即独有而特别。俗话说,世界上没有两片相同的树叶。任何事物都是有差异的。如独特的视角,独特的发现,独特的感悟和思考。。 学生举出《促织》中有哪些独特的视角、独特的发现和独特的感悟和思考。 4、上次优秀作文的同学根据自己的写作谈体会,怎样在细节描写中做到“真实、精细、独特”。臧旻敏和金炎谈《青春的细节》的写作体会,娄静怡谈《爱的真谛》的写作。(陈晓宇读金炎的《青春的细节》,叶易旋读臧旻敏的《青春的细节》) (二)写作训练 以“学会感恩”为题,写一篇800字左右的记叙文或记叙性的散文。(教材26页)学习细节描写的方法。 提示学生:1、找一个动情物和情感的触发点,如“一碗阳春面”“促织”“过母亲节”等等。2、模仿《那过去了的……》《我们是怎样过母亲节的——一个家庭成员的自述》选择几个场面描写。3、运用这三种方法进行细节描写。

高一作文:细微处见真情作文800字

细微处见真情 真情的范畴,可以扩到很大很大,大到包罗万象,气吞山河;真情的范畴,也可以缩的很小很小,小到只能容下你我。 真情有时细的微不足道,不可名状,但这些渺小的情感却使我们感动不已,甚至铭记一生。 一句严厉的批评可以是真情,它就像是一道闪电,为你滋润的未来照亮前途。 一声关心的问候可以是真情,它就像是一阵和煦的春风,为你抚平内心的焦躁。 一个可爱的笑脸可以是真情,它就像是一片安详的落叶,激起圈圈感动的涟漪。 岁月无情,这一点老人比我们更清楚。当我们还在嚣张的挥洒青春时,老人们已经开始谨慎的回味一生并感悟生活了。 也许正是如此,我的外婆总是很和气,很安详。 我的外婆虽然已经年纪不小了,满头银丝,满脸皱纹,但她笑起来很温馨,让人不免联想到质朴的蔷薇。 有一次,我去外婆家里玩,一进门就与外婆那温馨的笑撞了个满怀。外婆的笑穿透了我内心由于长年封闭而冰冷的心门,直达我内心最柔软的地方,我好像被感染了,随她笑着。 此时,看窗外,景色很美很明媚。 进了屋,我才忘了说句“外婆好”,转身,却不见了外婆的踪影。咦?外婆刚才还在这儿呢,现在到哪儿去了?我狐疑的看着四周。“予

晴,把这双拖鞋穿上。”外婆快步走了过来,手里拿着双蓝色的布拖鞋。我穿上了鞋,感觉暖暖的,很舒服,难道这就是爱的温暖吗?幻想之余,我说了句:“谢谢外婆!”外婆先是惊愕的一愣,然后就温柔的笑了起来,眼里有止不住的、向外倾泄的感动。 外婆给我拿来一盒饼干,是我最喜欢的口味。我打开电视,一边吃一边看。“拖鞋穿得舒服吗?”外婆好似漫不经心的突然一问。“呃?”我拿着饼干的手垂在半空中,把头转向了外婆。 外婆双手不停的揉搓着,而她的眼睛则紧紧的盯着自己的手,一副紧张、不安而又期待的样子。 “嗯,当然舒服啦,外婆给我做的嘛!”我用漫不经心的口气轻轻地说出了这句话。 事实上,这双拖鞋并算不上“靓丽”,但它有它自己的作用,就如我的外婆给我点滴细微的关爱,它也给我阵阵感动的温暖。 它,朴素的就像老人。 外婆又一次笑了,笑得很灿烂,很飞扬,也再次把爱给了我。 通过这双小小的拖鞋,我感受到了奇异的温暖,细微之处,我见到了外婆的真情。它的美好,甚于一切。外婆那温和的笑脸,我将它与那细微的真情锁在一起,放在我内心中最牢固的位置。

于细微处见真情作文800字【于细微处见真情】

于细微处见真情作文800字【于细微处见真情】 “喂!小黄吗?”国庆长假的最后一天,正加班进行高新技术统计报表数据处理的我接到宜章县新山达化肥有限公司统计员打来电话。“我上午报的湘工B204表高新技术产品总产值指标加错了,多了5万元,请予以纠正。”我心里暗暗佩服他的细致与执著。宜章县新山达化肥有限公司统计员名叫兰盛芳,是原宜章县氮肥厂统计员,我们亲切地叫他老兰。50多岁的老兰瘦小精干,从事统计工作已有20多个年头,是统计战线的“老黄牛”。宜章县氮肥厂破产后,老兰因工作求真务实被重组后的宜章县新山达化肥有限公司聘用,身兼企业会计和统计员两职。珍惜来之不易的再就业机会,老兰干起工作来不知疲倦,仿佛年轻了许多。每天早上7点,老兰便早早地来到生产车间。从煤管车间到合成车间,从原料仓库到成品仓库,老兰认真搜集每日做报表所用的原始数据,包括原煤消耗、电力消耗、润滑油消耗、原材料消耗、产品产量等,一项不漏。光搜集每天的原始数据,得花上老兰近两个小时时间。根据每天搜集的原始数据,老兰精心整理出每月的产值报表、产品产量报表和每季的能源消费报表、高新产品统计报表。有一处细节彰显出老兰与一般统计员的不同:每一次报送的报表,老兰都会用自制的封面装订成册,规范而又工整,美观而不失大方。20多个春秋,老兰风雨无阻地报送报表,从未迟报过一次。今年9月份,县统计局基层基础工作检查组一行来到新山达化肥有限公司,对老兰的统计工作给予了很高的评价。老兰的档案柜里,历史台帐、原始凭证一应俱全,十多年的历史报表摆放得整整齐齐,光亮如新。望着这些,老兰的心中充满了成就感。听说今年全省都在抓企业统计信息化建设,老兰心头泛起一股涟漪。如能实现电脑做报表、做台帐,工作效率和统计数据质量将会大大提高,那将是何等的惬意!老兰把想法跟公司黄总一说,黄总倒是开明爽快,立马给公司统计站配置了一台电脑和一台打印机。现在,老兰又多了一件事——学电脑。50多岁的人学电脑,无论如何都是新鲜事,而且不是一件容易的事。可老兰硬是凭着不服老、不服输的执著,从五笔打字学起,到电子表格、文档编辑,一步一个脚窝,踏踏实实走来。老兰不放过每一次学习的机会,每逢到县统计局送报表,老兰都要虚心地向计算站的行家请教电脑知识。经过近两个月的刻苦钻研,老兰已可以熟练地使用电脑制表,并通过电子邮件传送报表了。细微决定统计数据的质量,细节决定统计工作的成败。老兰享受着统计信息化带来的高效快捷,眼睛盛满着幸福的喜悦。

细节之处见真情_初中作文

细节之处见真情 本文是关于初中作文的细节之处见真情,感谢您的阅读! 人生如一部纪录片,这部纪录片由有无数个细节组成的,细节蕴含人间真情,生活中正是有了这些细节,我们才可以体会到人生的酸甜苦辣,关注细节就是在品味人生的美丽。前些日子发生的这件事,让我永远难忘。 由于我搬了新家,离学校近了,中午不用再去奶奶家吃饭了,于是我渐渐的忘了奶奶,也不去看她了。那天周末,我接到了奶奶的一个电话,她说想我了,让我下午上她那去玩。初三放假是多么不容易,我还想在家自己看会电视呢。可是由于奶奶的请求,我才勉强答应吃饱了饭去看她。 下午,我到了奶奶家,奶奶的脸上顿时笑逐颜开,他拿出了花花绿绿的零食都是我小时愿意吃的,她热情的让我吃,我却说我要减肥不能吃甜食。奶奶看了看我坐下了,我也坐下不知说什么好。一会儿奶奶突然似想起了什么,跑到屋外,我也起身去看看。 只见奶奶拖来了一根常常的竹竿,站在院里的枣树下又吃力的把它举起,拖着笨重的身子踮着脚使劲抽打着树上那几粒屈指可数的枣,一下一下。枣被打下来了,她吃力的弯下腰去捡枣,她的脸憋得通红,头上也冒出了汗珠。我看到这急忙跑出去帮她。捡完后,奶奶把枣分成了两份,一份干瘪瘦小,另一份相比还算新鲜饱满,他把后者给了我,她说:“你从小爱吃枣,你好久也不来,树上这些枣是我给你留的,今天你好不容易来了,趁着还没坏特意打下来给你吃,吃吧,可甜了!”听到这,我的眼泪再也忍不住了,流到嘴里,涩涩的。望着那几枚红的像火的枣,我羞愧极了。并承诺以后经常来看奶奶。 秋风萧瑟,落叶纷飞,我仿佛又看见了奶奶胖矮的身影,打枣时的动作,分枣的情景。在这些不起眼的细节中,我感悟到了人间真情,收获了奶奶那满满的爱。 本文来自于互联网,仅供参考和阅读

于细微处见真情

初三作文素材序列化写作训练(一)于细微处见真情——“亲情”话题写作指导

2、动作描写——用精确的动词描写人物连续性动作或细微动作(如背影 中父亲爬月台的动作描写)。 3、语言描写——符合人物身份,少而精当,可结合神态描写。 4、自己“动情瞬间”感受的描写——细腻描写自己在当时“动情瞬间” 情境中的感受,以情激情,让读者产生共鸣。 三、角度新,切入小,写法巧 角度新:如不写长辈对你的爱,而是写你对长辈的感恩与回报;写亲人与亲人之间的爱——如外公与外婆的互爱,父亲对母亲的爱等等。 切入小:假借于物——如一件细小的东西,一杯牛奶,一粒纽扣,一封信,一束花等,都能借其寄托真情。 写法巧:如采用穿越时空法(倒叙、插叙)、欲扬先抑法、巧设悬念法、一波三折法、环境烘托法等,方法有很多,但要选择合适的方法用到你的作文中,这样你的文章才能脱颖而出,令人耳目一新,获得读者的青睐。 注意了以上几点,相信你会写出一篇能打动人心的亲情作文。 素材卡片 语段一 【名家笔下的亲情】 老海棠树近房高的地方,有两条粗壮的枝丫,弯曲如一把躺椅。儿时,我常爬上去,一天天地在那儿玩。奶奶在树下喊:“下来吧,你就这么一天到晚待在上头?”是的,我在那儿看小人书、射弹弓,甚至写作业。“饭也在上头吃?”她又问。对,在上头吃。奶奶把盛好的饭菜举过头顶,我两腿攀紧树丫,一个海底捞月把碗筷接上来。“觉呢,也在上头睡?”没错,四周都是花香呢。奶奶只是站在地上,站在老海棠树下,望着我。她必然是羡慕,猜我在上头都能看见什么。【史铁生《老海棠树》】 语段二 这样,我们在阳光下,向着那菜花、桑树和鱼塘走去。到了一处,我蹲下来,背起了母亲,妻子也蹲下来,背起了儿子。我的母亲虽然高大,然而很瘦,自然不算重;儿子虽然很胖,毕竟幼小,自然也轻:我和妻子都是慢慢地,稳稳地,走得很仔细,好像我背上的同她背上的加起来,就是整个世界。 【莫怀戚《散步》】语段三 我说道:“爸爸,你走吧。”他望车外看了看,说:“我买几个橘子去。你就在此地,不要走动。”我看那边月台的栅栏外有几个卖东西的等着顾客。走到那边月台,须穿过铁道,须跳下去又爬上去。父亲是一个胖子,走过去自然要费事些。我本来要去的,他不肯,只好让他去。我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍,蹒跚地走到铁道边,慢慢探身下去,尚不大难。可是他穿过铁道,要爬上那边月台,就不容易了。他用两手攀着上面,两脚再向上缩;他肥胖的身子向左微倾,显出努力的样子。这时我看见他的背影,我

于细微处见真情——《爱如茉莉》赏析(外一篇

---------------------------------------------------------------范文最新推荐------------------------------------------------------ 于细微处见真情——《爱如茉莉》赏析(外一篇) 感人心者,莫先乎情。本文是一篇以情感人的美文。作者从我一个妙龄女孩的视角入手,讴歌了人类最崇高、最圣洁、最美好的爱情。阅读本文,如品香茗,余香满口;如饮甘泉,沁人心脾。 走进作者笔下父亲母亲的情感世界,我们没有听见他们感人肺腑的爱情表白,没有看见他们卿卿我我的浪漫举动,但是从他们日常生活的一举一动中,我们却分明感觉到一种真情的存在、至爱的可贵。 细节是文章的血肉,细节描写是刻画人物形象的重要手段 手段。善于撷取生活中的细节来刻画人物是本文的一个显著特点。作者善于从日常生活中选取那些感受最深的细节,表现人物的风貌,寄托内心的感情。妈妈住院了,嘱咐我给爸爸买饺子;爸爸嘱咐我带茉莉花到医院去;爸爸牵着妈妈的手,伏在床沿边睡着了;妈妈睡觉不敢翻身,连手脚都麻木了。这些传神的细节描写,无不真切感人,令人过目不忘,歌颂了父母至真至纯的爱情相互关爱,相互体贴, 1 / 4

无私奉献,无怨无悔。这些细节,使文章充满了融融的爱意,不仅温暖了作者的情怀,也温暖了读者的情怀。 文章以爱如茉莉为题,茉莉花在文中多次出现,是文章中不可缺少的重要道具,被作者赋予了深刻的内涵。文章写茉莉花的洁白纯净、平淡无奇、默默奉献,实则映衬父母时刻互相牵挂对方;以花衬人,爱美如花,虚实相生,物我交融,达到了高度的统一。当女儿问妈妈真爱像什么时,妈妈并未给出一个明确的答案,而只是含糊地说出,爱像茉莉。其实,真爱无言,爱是无法用语言来表达的。父母用行动诠释了爱的内涵,道出了爱的真谛。 生活中不是缺少美,而是缺少美的发现。作者留心观察生活,从平常生活中挖掘出了美的矿藏。我们在品读和情感的濡染中,为一种美丽的情怀而激动,心谷弥漫着幽雅的茉莉花馨香。平淡生活有诗意,于细微处见真情。 割不断的思乡情《乡情》赏析 美不美,家乡水;亲不亲,故乡人。每个人都对生于斯、长于斯的故乡有一种魂牵梦萦的情感,这种思乡之情是人类共有的普遍情感。本文是一篇情文并茂的思乡力作。

细微处见真情分析

细微处见真情——作文讲评教学设计 本学期在学习了贾平凹的《我不是个好儿子》后,为了让学生加深对细节描写的表现力的体会,要求学生写一篇关于亲情的文章。全班56位同学除两位同学写成议论文体外,其余同学都写的是记叙文。在随后的作文指导中我着重强调和落实的还是细节描写。 有部分同学的细节描写很精彩,在评讲中,我用课件的形式将其好的片段投影,并加以点评。有时适时做了补充和延伸。用学生自己的作文作为评点的模本,学生能区分出优异,真正领悟什么是细节描写,什么样的细节具有表现力,如何选取细节描写等,基本完成了教学目标。课堂实录如下: 一、师展示优秀范文: 范文1: 济钢高二11班景黎明:52分 此文最大的亮点是抓住生活中的一个小片段,即生活细节,细致地刻画,使父母对自己的爱细腻、真实地表现了出来。如:“我听见一对脚步声在门口停下了,随即是一串金属碰撞的声音,那么清脆,一个物体被轻轻插进锁孔,一拧(短句,语言简洁,传神)”,门轻轻开了。 “轻点,孩子睡着了。”这是母亲的声音。——语言极简洁。

我能感受到母亲踮着脚尖向我走来。——观察细致。 ……我佯装睡着,母亲近了,更近了。“又踹被子了”。(读着如亲临其境,勾起自己的类似的回忆,如此真实可感。) 母亲轻轻拉过被子,又踮着脚尖(观察、描写细腻传神)一步步轻轻离去。 文章最后用排比形式举朱自清、史铁生、傅聪的例子,材料翔实,但都描写地过于简单。使全文有头重脚轻、戛然而止之感。建议再详细地引入这几篇文章,如“朱自清《背影》里那身材矮胖却坚持蹒跚爬过月台给儿子买橘子的父亲的背影让我们读懂了父爱的深沉和细腻;史铁生《秋天的怀念》里那身患重病的母亲为了让突然瘫痪的儿子快活些,不厌其烦地要推着儿子去北海看菊花。她让我们读懂了:儿子的痛苦在母亲那里是加了倍的……傅聪……”(这样拓展一下,举的例子会显得更厚重) 范文2: 济钢高二11班张潇潇:50分 开头语言精雕细琢,排比句式,比喻的修辞,较优美。 二、三段举例,通过讲述生活中的小事来诠释母爱、父爱,细节抓得好,很有表现力。 且二、三两段语言很简洁,不拖泥带水。两段形式上很相近,如二段开头“寒夜的冬日里晨光……”三段开头“漆黑的夜晚里……”,这样显得文章的结构很有逻辑性。

于细节处见真情

于细节处见真情 杨洋是我现在任教的学生,他个头很高,头发经常散乱着,衣服也不怎么干净,坐在教室后排,时不时发出的两声洋腔怪调就会引得全班哄堂大笑。说心里话,我对这样的学生很反感,哪个老师不喜欢听话乖巧的孩子呢? 有一次课间,杨洋破天荒地竟来问我数学题,我十分惊讶。其实,他问的题也不是什么难题,鉴于他平时的表现,现在又难得来求教,我就格外地给他讲得仔详细一些。很快,从他的表情上我能看出,他确实是听懂了。我夸了他两句,他的笑脸灿烂得就像一朵盛开的小花,他连声说“谢谢老师。”转身就要回去,我又叫住了他,我抚摸着他的头笑着说:“小子,别光玩,有空也去理理发,头发长了。”我见他有瞬间表情的凝固,随后,他深情地说了句“谢谢李老师。”转身就走了。 第二天上课,我忽然发觉教室比平时安静了许多,更难得的是杨洋竟像换了一个人似的,他不但认真听,而且还做笔记。大家听讲情绪比较高,我自然讲得也格外投入,下课了,我还有点余犹未尽的感觉。 后来,我又发现杨洋变了,变得守纪、勤学起来。我的同事有时也议论杨洋这小子啥时变好了呢? 突然有一天,他的语文老师对我说:“李老师,你看看杨洋这篇作文吧。”我好奇地接过来,作文题目是《我感激的人》。里面提到他是一个留守孩子,爸爸妈妈常年在外地打工,家里只有年迈的爷爷奶奶。里面又特意提到那次我给他讲数学题、提醒他理发的事,令他好感动,他说他知道了在老师眼里,并不像他以前一直想象的那样是一个差生的形象。以前只有爸爸妈妈提醒我理发,现在他们不在身边,是李老师提醒我理发,让我感到了久违的家的温暖,老师并没有歧视我,而是关心我,信任我,鼓励我,我不能再沉沦下去了,我不能再辜负父母、老师对我的鼓励和爱,特别是信任,我都16岁了…… 读完后我也很感动,我想到了我的求学路,从小学、初中、高中到大学,哪个阶段离开了老师的辛勤培育呢?特别是我上初一时,如果没有班主任王秀琴老师的及时鼓励与引导,也许我的命运是另一个样子。此时此刻,我忽然感到了老师的重要性,老师的举手投足,甚至是认为无所谓无的一些言行,也许会对学生产生深远的影响。如果,在教学和生活等细小的环节上我们都能重视的话,也许我们会把教育工作做得更完美一些,也许会有更多的学生因此而走向更广阔的天地。

相关主题