当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪S3C2440之GPIO        //CAUTION:Follow the configuration order for setting the ports.     // 1) setting value(GPnDAT)     // 2) setting control register  (GPnCON)     // 3) configure pull-up resistor(GPnUP)  &n.........
    ▪编程新贵——AOP,你不得不知道的事      简介         AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态同意添加.........
    ▪sed与awk常用功能      sed和awk有重合,但是可以这样理解,sed是对文本内容进行操作(文本替换),awk是对文本结构进行操作。 1 把filename文件里的zhc替换成hongchangfirst然后放入filename2中。 sed ‘s/zhc/hongchangfirst’ filen.........

[1]S3C2440之GPIO
    来源: 互联网  发布时间: 2013-11-19

  //CAUTION:Follow the configuration order for setting the ports.
    // 1) setting value(GPnDAT)
    // 2) setting control register  (GPnCON)
    // 3) configure pull-up resistor(GPnUP) 

    //32bit data bus configuration 
    //*** PORT A GROUP
    //Ports  : GPA22 GPA21  GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12 
    //Signal : nFCE nRSTOUT nFRE   nFWE  ALE   CLE  nGCS5 nGCS4 nGCS3 nGCS2 nGCS1
    //Binary :  1     1      1  , 1   1   1    1   ,  1     1     1     1
    //Ports  : GPA11   GPA10  GPA9   GPA8   GPA7   GPA6   GPA5   GPA4   GPA3   GPA2   GPA1  GPA0
    //Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0
    //Binary :  1       1      1      1   , 1       1      1      1   ,  1       1     1      1        
    rGPACON = 0x7fffff;

    //**** PORT B GROUP
    //Ports  : GPB10    GPB9    GPB8    GPB7    GPB6     GPB5    GPB4   GPB3   GPB2     GPB1      GPB0
    //Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard
    //Setting: INPUT  OUTPUT   INPUT  OUTPUT   INPUT   OUTPUT   OUTPUT OUTPUT OUTPUT   OUTPUT    OUTPUT
    //Binary :   00  ,  01       00  ,   01      00   ,  01       01  ,   01     01   ,  01        01 
    //rGPBCON = 0x000150;(youlong)
    rGPBCON = 0x015550;
    rGPBUP  = 0x7ff;     // The pull up function is disabled GPB[10:0]

    //*** PORT C GROUP for youlong
    //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0
    //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND 
    //Binary :  10   10  , 10    10  , 10    10  , 10   10  , 10     10  ,  10   10 , 10     10 , 10   10
    //rGPCCON = 0xaaaaaaaa;      
    //rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0]
   
    //*** PORT C GROUP
    //Ports  : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8  GPC7   GPC6   GPC5 GPC4 GPC3  GPC2  GPC1 GPC0
    //Signal : VD7   VD6   VD5   VD4   VD3   VD2   VD1  VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND 
    //Binary :  10   10  , 10    10  , 10    10  , 10   01  , 01     01  ,  01   10 , 10     10 , 10   10
    rGPCCON = 0xaaa956aa;      
    rGPCUP  = 0xffff;     // The pull up function is disabled GPC[15:0]    

    //*** PORT D GROUP
    //Ports  : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
    //Signal : VD23  VD22  VD21  VD20  VD19  VD18  VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9  VD8
    //Binary : 10    10  , 10    10  , 10    10  , 10   10 , 10   10 , 10   10 , 10   10 ,10   10
    rGPDCON = 0xaaaaaaaa;      
    rGPDUP  = 0xffff;     // The pull up function is disabled GPD[15:0]

    //*** PORT E GROUP
    //Ports  : GPE15  GPE14 GPE13   GPE12   GPE11   GPE10   GPE9    GPE8     GPE7  GPE6  GPE5   GPE4 
    //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK IN
    //Binary :  10     10  ,  10      10  ,  10      10   ,  10      10   ,   10    10  , 10     00  ,    
    //-------------------------------------------------------------------------------------------------------
    //Ports  :  GPE3   GPE2  GPE1    GPE0   
    //Signal :  IN     IN    IN      IN 
    //Binary :  00     00  ,  00      00
    //rGPECON = 0xaaaaaaaa;      
    //rGPEUP  = 0xffff;     // The pull up function is disabled GPE[15:0]
 rGPECON = 0xa02aa800; // For added AC97 setting     
    rGPEUP  = 0xffff;    

     //*** PORT F GROUP
    //Ports  : GPF7   GPF6   GPF5   GPF4      GPF3     GPF2  GPF1   GPF0
    //Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0
    //Setting: Output Output Output Output    EINT3    EINT2 EINT1  EINT0
    //Binary :  01      01 ,  01     01  ,     10       10  , 10     10
    rGPFCON = 0x55aa;
    rGPFUP  = 0xff;     // The pull up function is disabled GPF[7:0]

    //*** PORT G GROUP
    //Ports  : GPG15 GPG14 GPG13 GPG12 GPG11    GPG10    GPG9     GPG8     GPG7      GPG6   
    //Signal : nYPON  YMON nXPON XMON  EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI
    //Setting: nYPON  YMON nXPON XMON  EINT19  Output   Output   Output   SPICLK1    SPIMOSI1
    //Binary :   11    11 , 11    11  , 10      01    ,   01       01   ,    11         11
    //-----------------------------------------------------------------------------------------
    //Ports  :    GPG5       GPG4    GPG3    GPG2    GPG1    GPG0   
    //Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA
    //Setting:  SPIMISO1  LCD_PWRDN EINT11   nSS0   EINT9    EINT8
    //Binary :     11         11   ,  10      11  ,  10        10
    rGPGCON = 0x00a2aaaa;// GPG9 input without pull-up
    rGPGUP  = 0xffff;    // The pull up function is disa

    
[2]编程新贵——AOP,你不得不知道的事
    来源: 互联网  发布时间: 2013-11-19

简介

        AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态同意添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一个实现。

        主要可以应用在日志记录、性能统计、安全控制、事务处理、异常处理等等。意图为将日志记录、性能统计、安全控制、事务处理、异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

        AOP在Spring中得到了丰富支持,应用对象只实现它们应该做的——完成业务逻辑,仅此而已。它们并不负责(甚至是意识)其他的系统级关注点,例如日志或事物支持。

        有了这些,我对此的理解为:一个好的系统进行设计,可以让码农做出完美的系统。他们不需要考虑事务,不需要考虑日志,不需要考虑安全,不需要考虑性能,只是关注自己实现的那一部分业务逻辑即可。


那么AOP和OOP又有什么区别和联系呢?

        可以说AOP是对OOP一个很好的补充。我们平时编程的过程中,难免会遇到一些代码,这些代码我们无法抽象成一个父类或者方法,因为他们分布在每个类的角落、每个类的边边角角。

        在软件开发中,我觉得最重要的思想就是:面对写了3遍以上的代码,一定要考虑是否可以将其进行抽象,当我们再复制粘贴的时候,我们就已经失去了思考。

        正是因为这种思想,所以不断有新的名词涌进我们的视野,从面相过程到面相对象,再到现在的面相切面,这些名词的出现,没有一个不使得我们的代码一步步的在减少,相反的就是系统复杂度高了。一个功能不再是只有一个模块就可以完成,往往需要调用好几个类才可以完成一个功能。实现了由一体式房屋到搭积木式房屋的过度。

        所以AOP和OOP不是对立的,只是一个很好的补充而已。OOP没有AOP可以做出系统,只是有了之后,代码结构更加清晰。AOP如果缺少了OOP的支持,那么它的存在可以说就没有那么多的价值了


说的这么热闹,那么AOP到底应该如何进行开发呢?

        1.发现切面,也称关注点,这也是最最关键的,发现的窍门就是查找你那重复了不只3便的代码吧。

        2.实现关注点,简单的说就是将你那重复了不只3便的代码同意放到一个类里。

        3.组合关注点,就是确定在什么时候执行关注点。例如你关注点里有3个动作,这3个动作分别是在某个方法的执行成功、失败、异常执行的,那么只需要简单的配置一下即可。


下面通过一个示例来进一步说明一下如何开发AOP(分别通过注解和配置文件来实现)

接口和实现类:

public interface UserManager {
	public void addUser(String username,String password);
}

public class UserManagerImpl implements UserManager {
	@Override
	public void addUser(String username, String password) {
		System.out.println("UserManagerImpl.addUser()");
	}
}

采用注解方式实现:

@Aspect  //发现切面
public class SecurityHandler {
	
	/**
	 * 定义Pointcut,Pointcut的名称为addAddMethod(),此方法没有返回值和参数
	 * 该方法就是一个标识,不进行调用
	 */
	@Pointcut("execution(* add*(..))")  //组合关注点
	private void addAddMethod(){};
	
	/**
	 * 定义Advice,表示我们的Advice应用到哪些Pointcut订阅的Joinpoint上
	 */
	@Before("addAddMethod()")   //组合关注点
	//@After("addAddMethod()")
	private void checkSecurity() {  //实现关注点
		System.out.println("-------checkSecurity-------");
	}		
}

采用配置文件方式实现(将上述类中的注解、addAddMethod方法去掉,在applicationContext.xml中进行配置):

<!-- 声明使得在程序可以认识关于AOP的注解 -->
	<aop:aspectj-autoproxy />
	<bean id="userManager" class="com.jianxin.spring.UserManagerImpl" />
	<bean id="securityHandler" class="com.jianxin.spring.SecurityHandler"/>
	<aop:config>
		<aop:aspect id="securityAspect" ref="securityHandler">
			<aop:pointcut id="addAddMethod" expression="execution(* add*(..))"/>
			<aop:before method="checkSecurity" pointcut-ref="addAddMethod"/>
		</aop:aspect>
	</aop:config>

测试程序

public class Client {
	public static void main(String[] args) {
		BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserManager userManager=(UserManager)factory.getBean("userManager");
		userManager.addUser("张三", "123");
	}
}

        至此,示例就完成了,最后再说一下,有了AOP,OOP显得更加完美。AOP做的更多的是服务性的工作,OOP做的是主要工作。



作者:jianxin1009 发表于2013-6-7 10:43:00 原文链接
阅读:76 评论:0 查看评论

    
[3]sed与awk常用功能
    来源: 互联网  发布时间: 2013-11-19

sed和awk有重合,但是可以这样理解,sed是对文本内容进行操作(文本替换),awk是对文本结构进行操作。


1 把filename文件里的zhc替换成hongchangfirst然后放入filename2中。

sed ‘s/zhc/hongchangfirst’ filename > filename2


2 sed脚本放在scriptname文件中。

sed -f scriptname filename


3输出filename文件中的第一列和第三列到filename2文件中

awk ‘{ print $1; print $3 }’ filename > filename2


4 分隔符默认是空格等,可以用-F, 改变成逗号为分隔符,改成冒号 -F:

awk -F, '{print $2}' filename > filename2


5 awk脚本放入了scriptname文件中

awk -f scriptname filename > filename2

sort | uniq 


6列出你最长用的10个命令

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head


原文:http://blog.csdn.net/hongchangfirst/article/details/8447670

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst


作者:hongchangfirst 发表于2013-6-7 10:37:14 原文链接
阅读:49 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈... iis7站长之家
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


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

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

浙ICP备11055608号-3