zoukankan      html  css  js  c++  java
  • 2017.02.17

    1.模糊查询:like关键字,单引号包括模糊匹配表达式,%代表一个或者多个字符。
    查询地址带有广州的所有department_code
    selet * from zzgjs_department_define where chinese_address like ‘%广州%’
    2.对缓存redis做一层层的封装,spring中只注入一个缓存bean.针对不同的业务需求,比如ITS,UM等,再分别写自己的类封装这个唯一的redis bean,加上分别业务的方法,对
    外暴露出专门接口。这就是分解-封装的思想。
    3.构建程序代码结构,要有分解封装的思想
    4.一般来说。我们会将一些配置的信息放在。properties文件中。
    然后使用${}将配置文件中的信息读取至spring的配置文件。
    首先。我们要先在spring配置文件中。定义一个专门读取properties文件的类,叫PropertyPlaceholderConfigurer。
    这个bean要注入的属性石location,用以指定要读取的配置文件路径。
    如下:
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:jdbc.properties</value>
    <!--要是有多个配置文件,只需在这里继续添加即可 -->
    </list>
    </property>
    </bean>
    这里为什么用locations(还有一个location)
    是因为。一般来说。我们的项目里面。配置文件可能存在多个。
    就算是只有一个。那将来新添加的话。只需在下面再加一个value标签即可。
    然后我们就可以在jdbc.properties文件中填写具体的配置信息了。

    <!-- 配置C3P0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass">
    <value>${jdbc.driverClassName}</value>
    </property>
    <property name="jdbcUrl">
    <value>${jdbc.url}</value>
    </property>
    <property name="user">
    <value>${jdbc.username}</value>
    </property>
    <property name="password">
    <value>${jdbc.password}</value>
    </property>
    </bean>

    jdbc.properties文件写的信息。

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test
    jdbc.username=root
    jdbc.password=root

    30.spring mvc流程及常用注解梳理
    32.在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求。
    31.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用
    @RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。
    32.@Controller 用于标记在一个类上后,
    分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法
    才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做
    Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:

      (1)在SpringMVC 的配置文件中定义MyController 的bean 对象。

      (2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
    <!--方式一-->
    <bean class="com.host.app.web.controller.MyController"/>
    <!--方式二-->
    < context:component-scan base-package = "com.host.app.web" />//路径写到controller的上一层(扫描包详解见下面浅析)

    33.@RequestMapping, value, method;
    34.3、@Resource和@Autowired
    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
    1、共同点

    两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
    2、不同点

    (1)@Autowired

    @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
    public class TestServiceImpl {
    // 下面两种@Autowired只要使用一种即可
    @Autowired
    private UserDao userDao; // 用于字段上

    @Autowired
    public void setUserDao(UserDao userDao) { // 用于属性的方法上
    this.userDao = userDao;
    }
    }
    3.@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称
    (byName)来装配,可以结合@Qualifier注解一起使用。如下:

    public class TestServiceImpl {
    @Autowired
    @Qualifier("userDao")
    private UserDao userDao;
    }
    4.(2)@Resource

    @Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性
    解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定
    name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

    复制代码
    public class TestServiceImpl {
    // 下面两种@Resource只要使用一种即可
    @Resource(name="userDao")
    private UserDao userDao; // 用于字段上

    @Resource(name="userDao")
    public void setUserDao(UserDao userDao) { // 用于属性的setter方法上
    this.userDao = userDao;
    }
    }
    复制代码
    注:最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。

    40.5、@PathVariable
    用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。如:

    42.redis是可以删除key的值的、。redis也是可以删除值的。如:jedis.del(key);
    43.接口类,要以I开头命名
    44.3.每一个service都要继承pafa框架的BaseService,每一个controller都要继承Pafa框架的BaseController,每一个dao都要继承pafa框架的BaseDao。
    BaseDao是在pafa-biz.jar里,BaseService也在pafa-biz.jar包,BaseController在pafa-web.jar包。
    如果你感觉一层直接继承,不方便你项目的运用,还可以再继承一层,添加自己的东西。比如Controller,可以自己定义APPBaseController,其继承BaseController,
    APPBaseController类里添加一些本地化功法和变量,比如添加Logger,添加异常处理返回,生成APPResult等。然后项目所有的controller再继承AppBaseController。

    45.所有具体controller的父类AppBaseController,controller父类里可以包括的方法有:1.添加logger。2.处理token。3.处理异常返回 4.生成APPResult返回,设置返回响应

    46.isDebugEnabled 、isInfoEnabled 为啥要使用
    :为什么要加上logger.isInfoEnabled()?原因有两点。

    1).直接使用logger.info("User " + userId + " is using app " + appId)来输出log,也能够达到log级别为INFO或在INFO以下时才输出:("User " + userId + " is using
    app " + appId),因为logger.info方法内部有判断输出级别的代码。但是在进入logger.info函数之前,("User " + userId + " is using app " + appId) 这个表达式已经通
    过运算拼接成了一个字符串;而如果事先使用 if (logger.isInfoEnabled())进行判断,那么当log级别在INFO以上时,就能省去上述的字符串操作,在高并发和复杂log信息拼
    接的情况下,使用这种标准的方法输出log能够省去不小的系统开销。另外,如果构造log信息的过程需要大量字符串操作,建议使用StringBuilder来完成字符串拼接。

    2).ERROR及其以上级别的log信息是一定会被输出的,所以只有logger.isDebugEnabled和logger.isInfoEnabled方法,而没有logger.isErrorEnabled方法。
    50.例如在应用中有一个输出窗口,一些系统状态信息将被输出到这个输出窗口中。因为 Info 的级别是如此之低,所以为了让用户能够看到有效的输出信息,必须将日志级别开
    放到 Info 级别。但是 Warn 的级别比 Info 要高,所以用户不得不被迫看到一些 Warn 的信息。


    47.1 Log的用途
    不管是使用何种编程语言,日志输出几乎无处不再。总结起来,日志大致有以下几种用途:

    l 问题追踪:通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通过日志可以发现问题。

    l 状态监控:通过实时分析日志,可以监控系统的运行状态,做到早发现问题、早处理问题。

    l 安全审计:审计主要体现在安全上,通过对日志进行分析,可以发现是否存在非授权的操作。
    2.2 日志对性能影响
    不管是多么优秀的日志工具,在日志输出时总会对性能产生或多或少的影响,为了将影响降低到最低,有以下几个准则需要遵守:

    l 如何创建Logger实例:创建Logger实例有是否static的区别,在log4j的早期版本,一般要求使用static,而在高版本以及后来的slf4j中,该问题已经得到优化,获取(创建
    )logger实例的成本已经很低。所以我们要求:对于可以预见的多数情况下单例运行的class,可以不添加static前缀;对于可能是多例居多,尤其是需要频繁创建的class,我
    们要求要添加static前缀。

  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6411112.html
Copyright © 2011-2022 走看看