当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪Windows7 x64 跨平台开发环境安装配置      ======================================================================= Windows7 x64 跨平台开发环境安装配置 2013-6-16 ZhangLiang ======================================================================= 要求路径: 1) .........
    ▪从SQLHelper看代码重构                SQLHelper很好地体现了抽象和封装的思想,为了避免每次连接数据库时都要创建连接并实例化连接对象和得到连接对象,我用构造函数对conn进行初始化,并写了GetConn.........
    ▪轻量级前端MVVM框架avalon - 整体架构       官网提供架构图   单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到.........

[1]Windows7 x64 跨平台开发环境安装配置
    来源: 互联网  发布时间: 2013-11-19
=======================================================================
                 Windows7 x64 跨平台开发环境安装配置
 2013-6-16
 ZhangLiang
=======================================================================
要求路径:
1) 所有开发包之根目录:
%DEVPACK_HOME% = C:\DEVPACK

2) JDK 安装目录:
%DEVPACK_HOME%\java

3) Maven 安装目录:
%DEVPACK_HOME%\apache-maven-3.0.5

4) MinGW 安装目录:
%DEVPACK_HOME%\MinGW

5) Android Dev Pack 安装目录:
(tegra-devpack-1.0-windows-2012-05-09-12749879.exe)
%DEVPACK_HOME%\NVPACK

6) Eclipse 安装目录:
%DEVPACK_HOME%\juno

-----------------------------------------------------------------------
                                JDK 6
-----------------------------------------------------------------------
1) 下载 JDK 6:
http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
jdk-6u45-windows-x64.exe

2) 解压至:
%DEVPACK_HOME%\java

3) 配置环境变量
%JAVA_HOME% = %DEVPACK_HOME%\java
%CLASSPATH% = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

增加 %JAVA_HOME%\bin 到 Path 环境变量 ($Path 表示 Path 原来的定义):
Path=$Path;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

-----------------------------------------------------------------------
                               Maven 3
-----------------------------------------------------------------------
1) 下载 Maven3.0.5:
$ wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz

2) 解压:
$ tar -zxf apache-maven-3.0.5-bin.tar.gz

3) 设置环境变量:
新建系统环境变量 M2_HOME
M2_HOME = %DEVPACK_HOME%\apache-maven-3.0.5

增加 %M2_HOME%\bin 到 Path 环境变量:
Path=$Path;%M2_HOME%\bin

4) 关闭后重新打开 cygwin, 验证:
$ mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 21:51:28+0800)
Maven home: C:\DEVPACK\apache-maven-3.0.5
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: C:\NVPACK\jdk1.6.0_24\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

-----------------------------------------------------------------------
                               Eclipse juno
-----------------------------------------------------------------------
1) 下载 eclipse-jee-juno-SR2-win32-x86_64.zip

2) 解压到:
%DEVPACK_HOME%\java\eclipse

3) 安装 m2eclipse

-----------------------------------------------------------------------
                            Android SDK and Tools
-----------------------------------------------------------------------
1) 下载:
tegra-devpack-1.0-windows-2012-05-09-12749879.exe

2) 运行安装到:
%DEVPACK_HOME%\NVPACK

-----------------------------------------------------------------------
                            MinGW Installation
-----------------------------------------------------------------------
参考:
    http://blog.csdn.net/cheungmine/article/details/8918808


作者:cheungmine 发表于2013-6-18 20:23:00 原文链接
阅读:75 评论:0 查看评论

    
[2]从SQLHelper看代码重构
    来源: 互联网  发布时间: 2013-11-19

          SQLHelper很好地体现了抽象和封装的思想,为了避免每次连接数据库时都要创建连接并实例化连接对象和得到连接对象,我用构造函数对conn进行初始化,并写了GetConn()函数,把重复的内容提取出来是重构的重要工作。

 

Imports System.Data.SqlClient
Imports System.Configuration

Public Class SQLHelper
    Private conn As SqlConnection
    Private cmd As SqlCommand
    Private sdr As SqlDataReader
    '构造函数
    Sub New()
        'Dim connStr As String = "Data Source=localhost;Initial Catalog=NewCharge;Persist Security Info=True;User ID=sa;Password=123456"
        Dim connstr As String = System.Configuration.ConfigurationManager.AppSettings("connStr")
        conn = New SqlClient.SqlConnection(connstr)
    End Sub

    Private Function GetConn() As SqlConnection
        If conn.State = ConnectionState.Closed Then
            conn.Open()
            Return conn
        Else
            Return conn
        End If
    End Function

    因为在DAL层,每个类除了要进行数据库的访问,更多的是对数据库进行增删改查的操作,而每次都做重复的工作就造成代码的大量重复,实在不够专业,所以我们写完代码后往往要进行重构和优化。SQLHelper主要是用于简化重复的去写SqlConnection、SqlCommand、SqlDataReader等,它的应用就对整个DAL层进行了优化,原因在于每个类只要实例化一个sqlhelper对象就可以直接调用它了,而只需要给方法传入一些参数如SQL参数、存储过程等,极大地减少了代码量。

 

在SQLHelper中主要有四类,分别是

不带参数的sql增删改语句或存储过程(无返回行或值)

带参数的sql增删改语句或存储过程(无返回行或值)

不带参数的sql查询语句或存储过程,返回DataTable结果集(有返回行或值)

带参数的sql查询语句或存储过程,返回DataTable结果集(有返回行或值)

 

下面是我写的第一个不带参数的sql增删改语句

 

 ''' <summary>
    ''' 执行不带参数的sql增删改语句
    ''' </summary>
    ''' <param name="sql">sql语句</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ExecuteNonQuery(ByVal sql As String) As Boolean
        Dim conn = GetConn()
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)
        If cmd.ExecuteNonQuery() > 0 Then
            conn.Close()
            Return True
        Else
            Return False
        End If
    End Function

 

          事实上我们常使用的不只有sql语句,还包括存储过程。所以,sql语句变成了cmdText,而究竟是sql语句还是存储过程则要看cmdType,需要给函数增加一个参数。因此对该函数做如下重构

  

  ''' <summary>
    ''' 执行不带参数的sql增删改语句或存储过程
    ''' </summary>
    ''' <param name="cmdtxt">增删改语句或存储过程</param>
    ''' <param name="cmdtype">命令类型文本或存储过程</param>
    ''' <returns>受影响的行数</returns>
    ''' <remarks></remarks>

    Public Function ExecuteNonQuery(ByVal cmdtxt As String, ByVal cmdtype As CommandType) As Integer
        Dim conn = GetConn() '定义并得到一个数据库连接对象
        Dim cmd As SqlCommand = New SqlCommand(cmdtxt, conn) '定义一个命令对象
        cmd.CommandType = cmdtype
        Dim res As Integer
        Try
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then '关闭数据库连接
                conn.Close()
            End If
        End Try
        Return res
    End Function

 

在第二个方法中我用到了异常处理Try…Catch语句,其实抛异常主要是在BLL层,这里没多大必要。

 

其余三个方法如下:

 

 ''' <summary>
    ''' 执行带参数的sql增删改语句或存储过程
    ''' </summary>
    ''' <param name="cmdtext">增删改语句或存储过程</param>
    ''' <param name="cmdtype">命令类型文本或存储过程</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns>受影响的行数</returns>
    ''' <remarks></remarks>
    Public Function ExecuteNonQuery(ByVal cmdtext As String, ByVal cmdtype As CommandType, ByVal paras As SqlParameter()) As Integer
        Dim conn = GetConn()
        Dim cmd As SqlCommand = New SqlCommand(cmdtext, conn)
        Dim res As Integer
        cmd.CommandType = cmdtype
        cmd.Parameters.AddRange(paras)
        Try
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()
            End If
        End Try
        Return res

    End Function
    ''' <summary>
    ''' 执行不带参数的sql查询语句或存储过程,返回DataTable结果集
    ''' </summary>
    ''' <param name="cmdtext">sql查询语句或存储过程</param>
    ''' <param name="cmdtype">命令类型文本或存储过程</param>
    ''' <returns>返回DataTable结果集</returns>
    ''' <remarks></remarks>
    Public Function ExecuteQuery(ByVal cmdtext As String, ByVal cmdtype As CommandType) As DataTable
        Dim conn = GetConn()
        Dim cmd As SqlCommand = New SqlCommand(cmdtext, co      
    
[3]轻量级前端MVVM框架avalon - 整体架构
    来源: 互联网  发布时间: 2013-11-19

官网提供架构图

 

单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程

如图

  • 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面,绑定事件,切换类名,什么脏活都揽
  • 右边是ViewModel 视图模式,就是开发者通过avalon.define("xxx", function(vm){vm.firstName = "模型"})
  • 既然是MVVM 那么还有个M跑哪里去了,M在MVVM定义中,M只是一个过客,被VM给再次包装,它与其他表示业务状态的东西融入VM(ViewModel)中,一个普通的JS对象,可能是后台传过来的,也可能是直接从VM中拿到 vm.firstName = "模型" 这个就是M咯,所以作者在图中就没体现出来吧

从定义ViewModel开始,扫描到vm关联的东东 形成访问器,好吧其实整个就这么简单

打开avalon源码,我们就看到这样的结构

(function(DOC) {

     内部代码

})(document);

这种基本的结构虽然已经被写烂了 ,但是既然是分析就从来到位来一遍吧.

自调用匿名函数

jquery为例

  • 这是一个自调用匿名函数。什么东东呢?在第一个括号内,创建一个匿名函数;第二个括号,立即执行
  • 为什么要创建这样一个“自调用匿名函数”呢?
  •    通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。 

         3.  匿名函数从语法上叫函数直接量,JavaScript语法需要包围匿名函数的括号,事实上自调用匿名函数有两种写法

    写法1
    (function() {
        console.info( this );
        console.info( arguments );
    }( window ) );
    
    写法2
    (function() {
        console.info( this );
        console.info( arguments );
    })( window );

     

           4.为什么要传入window呢?

           通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;这还不是关键所在,更重要的是,将window作为参数传入,可以在压缩代码时进行优化,看看jquery-1.6.1.min.js:

    (function(a,b){})(window); // window 被优化为 a

         5.为什么要在在参数列表中增加undefined呢?

         在 自调用匿名函数 的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。

    undefined = "now it's defined";
    alert( undefined );

    浏览器测试结果:

           6.注意到源码最后的分号了吗?

            分号是可选的,但省略分号并不是一个好的编程习惯;为了更好的兼容性和健壮性,请在每行代码后加上分号并养成习惯。

     

    总体架构

    按代码结构

        (function(DOC) {
    
               //命名空间
               avalon = function(el) {
                    return new avalon.init(el);
               };
    
               //avalon挂在工具函数
    
               // 迷你jQuery对象的原型方法
    
               //css操作相关的方法
    
               //ecma262兼容补丁
    
               //nextTick 高级定时器
    
               //Observable 观察者模式
    
               //Define 模型定义方法
    
               //Parse 解析求值函数与执行作用域
    
               //Scan 节点扫描
    
               //Bind html自定义标签绑定处理方法
    
            })(document);

    整个结构基本如上

    以后会分析具体的每个实现,源码分析尽量到行...

    作者:u010869338 发表于2013-6-19 11:26:56 原文链接
    阅读:81 评论: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++实现)——解释器模...
    ▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
    ▪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(请将#改为@)

    ▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant iis7站长之家