当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪ICH4芯片LAN控制器寄存器      Intel手册第六章 寄存器和内存映射 在PCI配置空间里放置的处理器(CPU)的“I/O空间”和“存储器空间”和“PCI配置寄存器套件”里放置ICH4的寄存器。这章讲的是ICH4的“I/O寄存器”和“内存”.........
    ▪spring3学习入门示例工程        1. github地址 https://github.com/zhwj184/springdemo,后续再加入其他内容       springdemo ========== spring3的IOC,AOP,JDBC,orm等各个模块的使用示例集锦,可以作为入门的spring学习.........
    ▪Linux中的可重入函数和不可重入函数      可重入函数 可重入函数(即可以被中断的函数)可以被一个以上的任务调用,而不担心数据破坏。可重入函数在任何时候都可以被中断,而一段时间之后又可以恢复运行,而相应的数据不会.........

[1]ICH4芯片LAN控制器寄存器
    来源: 互联网  发布时间: 2013-11-19

Intel手册第六章

寄存器和内存映射

在PCI配置空间里放置的处理器(CPU)的“I/O空间”和“存储器空间”和“PCI配置寄存器套件”里放置ICH4的寄存器。这章讲的是ICH4的“I/O寄存器”和“内存”映射在寄存器套件层上。寄存器存取被同样的描述。在下一章里,提供寄存器层的地址映射和单独的寄存器位的描述。在寄存器/命令描述章节里,下面的标记法和定义被使用。

RO

只读。在一些情况里,如果一个寄存器是只读的,写这一寄存器的位置没有影响。可是在其它情况里,会有两个不同的寄存器被置于相同的地址位置,既是一个寄存器读出通道,又是另一个寄存器写入通道。详情见I/O和内存映射表。

WO

只写。在一些情况里,如果一个寄存器是只写的,读这个寄存器位置没有结果。可是在其它情况里,会有两个不同的寄存器被置于相同的地址位置,既是一个寄存器读出通道,又是另一个寄存器写入通道。详情见I/O和内存映射表。

R/W

读/写。一个寄存器的特性,能被读和写。

R/WC

读/写清除。一个寄存器的特性,能被读和写。可是,写1清除(设成0)相应的位,写0没有影响。(就是说这个只能把位改成0或不改变位,不能置1,因为写1变0,写0没变化。)

R/WO

一个寄存器的位,它的特性只能被写一次,在电源开启后。在第一次写入后,位成为只读的。

Default

当ICH4被复位时,它设置它的寄存器成为预先决定的预设值状态。预设状态表示最小的功能特征设置要求成功启动系统。因此,它不表示最理想的系统配置。它是系统初始化软件的职责,决定配置、操作范围和适当的操作系统特征,编程相应的ICH4寄存器。

Bold

在ICH4里,粗体文本标示的被突出的寄存器位被实施。清晰的文本的不实施的或被天生的寄存器位将留下。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Intel手册第七章

LAN控制器寄存器s(B1:D8:F0)

ICH4在LAN控制器的ICH4虚拟PCI to PCI桥接的从属设备上集成了PCI设备8,功能0(见5.1.2章节)。这个设备通常在总线1上,不过可能被指派到一个不同编号上,这依赖具体的系统配置。LAN控制器的行为在PCI总线上可以作为控制,也可以作为被控制的动作。作为一个控制者时,LAN控制器与系统主存储器相互通信,进行发送和存储接收数据。作为一个被控制者时,主处理器(CPU)对LAN控制器控制结构的一些寄存器进行读写信息操作。处理器(CPU)同样提供LAN控制器必要的指令和指针(指示器),允许它处理接收和传送数据。

7.1       PCI配置寄存器(B1:D8:F0)

注意:寄存器没显示的偏移将被看作保留选项(详情见6.2章节)

表7-1. LAN控制器PCI配置寄存器地址映射地图(LAN控制器—B1:D8:F0)

偏移

记忆法(缩写)

寄存器名

默认值

类型

00-01h

VID

卖主ID

8086h

只读

02-03h

DID

设备ID

103Ah

只读

04-05h


    
[2]spring3学习入门示例工程
    来源: 互联网  发布时间: 2013-11-19



 1. github地址 https://github.com/zhwj184/springdemo,后续再加入其他内容

     

springdemo
==========

spring3的IOC,AOP,JDBC,orm等各个模块的使用示例集锦,可以作为入门的spring学习示例教程

在org.springweb.context.test包下
1.IOC
    * spring框架设计理念(POJO化)
    * 1.IOC 概念,作用,优点 Donnot call me,we will call you.  beanfactory,applicationcontext(事件发布,国际化支持)
    * 2.注入方法 setter,construtor(参数太多,可变参数列表),接口注入  
    * 3.注入类型 bean,基本类型,map,list等
    * 4.注入方式 byname,bytype,default
    * 5.annotation(autowired,resource,@Qualifier)
    * 6.bean的生命周期 init-method,destroy-method,initiableBean, DisposableBean,lasyinit,singleton,prototype @PostConstruct @PreDestroy
    * 7.postProcessBean
    * 8.IOC 应用场景,datasouce配置,线程池配置,
    * 9.工厂方法与 FactoryBean
    * 10 messagesource,propertyplaceholder
执行SpringContextIOCMain main函数
   

             public class SpringContextIOCMain {

             public static void main(String[] args) {
             	//编码方式,xml配置方式,properties方式
             	//FileSystemXmlApplicationContext ClassPathXmlApplicationContext XmlWebApplicationContext
             	ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
             	HelloService helloSerice = (HelloService) context.getBean("helloService");
             	helloSerice.sayHello();
             	
             	HelloService helloSerice1 = (HelloService) context.getBean("helloService");
             	helloSerice1.sayHello();
          	
          	
          	//remoteReadServicepostProcessor
          //		RemoteReadService remotePostProcess = (RemoteReadService) context.getBean("remoteReadServicepostProcessor");
          //		System.out.println(remotePostProcess.getCon());
          //		
          	//messageSource
          //		MessageSource messageSource = (MessageSource) context.getBean("messageSource");
          //		System.out.println(messageSource.getMessage("loginfail", new Object[]{"a","b"}, Locale.ENGLISH));
          //		System.out.println(messageSource.getMessage("loginfail", new Object[]{new Date().toString()}, Locale.getDefault()));
          }
          }

2.AOP 主要内容和示例
   
    * 1.AOP概念,应用场景(安全检查,日志记录,监控,事务管理)
    * 2.实现方式(动态代理(所有实现横切关注点的逻辑都得实现InvokationHandler接口),动态字节码增强(生成子类,将横切逻辑加到子类中,不需要实现接口,但是父类不能为final))
    *          spring 默认用动态代理,不能再用字节码(ASM,CGLIB)增强
    * 3. joinpoint(切入点),pointcut(切入点表达式,正则,方法名等),advice(before advice,after advice(after return advice,
    *     after throwing advice, after finally advice,),around advice(filter)),spring AOP 使用proxyfactory完成织入工作。
    * 4. 实现原理:代理模式, 动态代理示例,cglib示例
    * 5. PointCut,JdkRegexpMethodPointcut,NameMatchMethodPointcut
    * 6. advice AfterAdvice BeforeAdvice AspectJAroundAdvice ThrowsAdvice AfterReturningAdvice(批处理方法状态插入数据库)
    * 7. advisor Advisor DefaultPointcutAdvisor order
    * 9. 其他 AspjectJ ajc编译器,编译时织入;JBoss AOP使用自定义的classloader;spring aop使用ProxyFactory  ProxyFactory基于类的代理  AOPProxy AOPProxyFactory
    
    * 10. proxyFactoryBean
    * 11. 自动代理 基于BeanPostProcessor, BeanNameAutoProxyCreator和DefaultAdvisorAutoProxyCreator(针对advisor,自动扫描xml中所有的advisor配置生成代理对象)两个自动代理实现   
    * 12. TargetSource HotSwappableTargetSource(实现数据源替换,热备呼唤) PrototypeTargetSource SingletonTargetSource
    * 
    * 13. aspectj annotation
    
执行SpringContextAOPMain main函数
    
    public class SpringContextAOPMain {


         public static void main(String[] args) {
      		//编码方式,xml配置方式,properties方式
      		//FileSystemXmlApplicationContext ClassPathXmlApplicationContext XmlWebApplicationContext
      //		ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
      //		HelloService helloSerice = (HelloService) context.getBean("helloService");
      //		helloSerice.sayHello();
      //		
      		
      		//基于proxyFactory 的基于接口代理实现
      		ProxyFactory weaver = new ProxyFactory(new SpringHelloServiceImpl());  
      //		weaver.setInterfaces(interfaces);
      //		weaver.setExposeProxy(true);
      		NameMatchMethodPointcutAdvisor advisor = new NameMatchMethodPointcutAdvisor();  
      		advisor.setMappedName("sayHello");  
      		advisor.setAdvice(new ProxyFactoryProxyAdvisor());  
      		weaver.addAdvisor(advisor);  
      		HelloService proxyObject =(HelloService)weaver.getProxy();  
      		proxyObject.sayHello();
      		System.out.println(proxyObject.getClass()); 
      		
      		//基于proxyFactory的基于类的代理实现
      		ProxyFactory weaver1 = new ProxyFactory(new HelloServiceWithoutInterface());  
      //		weaver.setInterfaces(interfaces);
      		NameMatchMethodPointcutAdvisor advisor1 = new NameMatchMethodPointcutAdvisor();  
      		advisor1.setMappedName("sayHello");  
      		advisor1.setAdvice(new ProxyFactoryProxyAdvisor());  
      		weaver1.addAdvisor(advisor1);  
      		HelloServiceWithoutInterface proxyObject1 =(HelloServiceWithoutInterface)weaver1.getProxy();  
      		proxyObject1.sayHello();
      		System.out.println(proxyObject1.getClass()); 
      		
      		//默认基于接口的代理,可以通过设置下面两个强制基于类的代理
      		weaver.setProxyTargetClass(true);
      		SpringHelloServiceImpl proxyObject2 =(SpringHelloServiceImpl)weaver.getProxy();  
      		proxyObject2.sayHello();
      		System.out.println(proxyObject2.getClass()); 
      		
      		//proxyFactoryBean FactoryBean的proxy代理实现  xml配置AOP
      		ApplicationContext context = new ClassPathXmlApplicationContext("aopbean.xml");
      		HelloService helloService = (HelloService) context.getBean("myproxefactorybean");
      		helloService.sayHello();
      		
      		HelloServiceImpl HelloServiceImpl = (HelloServiceImpl) context.getBean("myproxefactorybean");
      		HelloServiceImpl.sayHello();
      		
      		//自動代理實現
      		HelloService autoProxyHelloService = (HelloService) context.getBean("autoproxyhelloService");
      		autoProxyHelloService.sayHello();
      		
      	}
      }

3. 基于AspectJ的AOP示例,执行AspectjSpringContextAOPMain main函数

    public class AspectjSpringContextAOPMain {

   
      public static void main(String[] args) {
   
   		
      		//proxyFactoryBean FactoryBean的proxy代理实现  xml配置AOP
      		ApplicationContext context = new ClassPathXmlApplicationContext("aopbeanaspectJ.xml");
      		UserService service =(UserService) context.getBean("userService");  
           service.print();  
   		
           NextService NextService =(NextService) context.getBean("NextService");  
           NextService.print();  
   	}
   }


4. spring DAO ,包括JDBCTemplate,集成ibatis和hibernate示例

     * 1.DAO Data acess object
    *  2. DataAccessException 数据库访问如何封装底层各个数据库的异常信息
    * 统一数据访问异常体系 
    * 3. jdbc API JDBCTemplate(封装所有jdbc访问代码,统一格式与规范 SimpleJdbcOperations
    *   SimpleJdbcTemplate,NameParameterJdbcTemplate
    * 4. DataSource DriverManagerDataSource SimpleDriverDataSource c3p0 dbcp
    *  4. 设计模式:模板方法 
    *  5. 基于操作对象的访问方式 SqlQuery,SqlUpdate,SqlCall,SqlFunction
    * 
    *   RDBMSOperation
    * 
    * 
    * 
    * 6.ORM: ibatis,hibernate  hibernateTemplate demo
    * 7. JDO java data object 对象持久化规范  JPA java持久化API
    * 8 扩展 FTPClientTemplate HttpClientTemplate
    * 
    
    
执行 SpringContextDAOMain main函数
   
    public class SpringContextDAOMain {

      
         public static void main(String[] args) throws IOException {
      		ApplicationContext context = new ClassPathXmlApplicationContext("jdbcbean.xml");
      		JdbcTemplateTest jdbcTemplateTest = (JdbcTemplateTest) context.getBean("jdbctest");
      //		jdbcTemplateTest.query();
      //		jdbcTemplateTest.insert();
      //		jdbcTemplateTest.delete();
      //		jdbcTemplateTest.insertBatch();
      //		jdbcTemplateTest.update();
      //		jdbcTemplateTest.updataBatch();
      //		jdbcTemplateTest.create_or_dropTable();
      //		jdbcTemplateTest.callpreparecall();
      		
      		//ibatis
      		//spring xml声明配置方式
      		MyIbatisTest myIbatisTest = (MyI      
    
[3]Linux中的可重入函数和不可重入函数
    来源: 互联网  发布时间: 2013-11-19

可重入函数

可重入函数(即可以被中断的函数)可以被一个以上的任务调用,而不担心数据破坏。可重入函数在任何时候都可以被中断,而一段时间之后又可以恢复运行,而相应的数据不会破坏或者丢失。
可重入函数使用的变量有两种情况:
1.使用局部变量,变量保存在CPU寄存器中或者堆栈中;
2.使用全局变量,但是这时候要注意保护全局变量(防止任务中断后被其它任务改变变量)。
?
1
2
3
4
5

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3