Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码)

备注:

之前在Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合中写到的框架只是用于测试使用,隔了一段时间之后回头看看,发现有许多需要改进的地方,最近项目中刚好用到,再次补充下!

1.项目目录:

2.需要的jar包列表:

3.spring bean 配置文件applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:context="http://www.springframework.org/schema/context"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  12. http://www.springframework.org/schema/aop
  13. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  14. http://www.springframework.org/schema/context
  15. http://www.springframework.org/schema/context/spring-context-2.5.xsd"
  16. default-init-method="init">
  17.  
  18. <!-- 引入jdbc配置文件 -->
  19. <context:property-placeholder location="classpath:jdbc.properties" />
  20. <!--创建jdbc数据源 -->
  21. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  22. <property name="driverClassName" value="${driver}" />
  23. <property name="url" value="${url}" />
  24. <property name="username" value="${username}" />
  25. <property name="password" value="${password}" />
  26. </bean>
  27.  
  28. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  29. <property name="dataSource" ref="dataSource" />
  30. </bean>
  31.  
  32. <!-- 创建SqlSessionFactory,同时指定数据源 -->
  33. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  34. <property name="configLocation" value="classpath:mybatis.xml"></property>
  35. <property name="dataSource" ref="dataSource" />
  36. </bean>
  37.  
  38. <!-- 可通过注解控制事务 -->
  39. <tx:annotation-driven transaction-manager="transactionManager"/>
  40.  
  41. <!-- 配置事务的传播特性 -->
  42. <!--
  43. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  44. <tx:attributes>
  45. <tx:method name="create*" propagation="REQUIRED" />
  46. <tx:method name="modify*" propagation="REQUIRED" />
  47. <tx:method name="delete*" propagation="REQUIRED" />
  48.  
  49. <tx:method name="*" read-only="true" />
  50. </tx:attributes>
  51. </tx:advice>
  52. -->
  53. <!-- 配置事务的切入点 -->
  54. <!--
  55. <aop:config>
  56. <aop:pointcut id="targetMethod" expression="execution(* com.matol.service.*.*(..))" />
  57. <aop:advisor advice-ref="txAdvice" pointcut-ref="targetMethod" />
  58. </aop:config>
  59. -->
  60. <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->
  61. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  62. <property name="basePackage" value="com.sgl.mapper" />
  63. </bean>
  64. <!-- 负责注册JSR-250 的注释生效 @Resource MapperScannerConfigurer配置会自动启用mapper注解,可省略当前配置
  65. <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
  66. -->
  67. </beans>

5.spring mvc配置文件springmvc-dispatcher.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans default-lazy-init="true"
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8. xmlns:context="http://www.springframework.org/schema/context"
  9. xmlns:mvc="http://www.springframework.org/schema/mvc"
  10. xsi:schemaLocation="
  11. http://www.springframework.org/schema/beans
  12. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  13. http://www.springframework.org/schema/mvc
  14. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
  15. http://www.springframework.org/schema/context
  16. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  17.  
  18. <!-- 通过注解,把URL映射到Controller上,该标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
  19. <mvc:annotation-driven />
  20. <!-- annotation默认的方法映射适配器 mvc:annotation-driven注册后可以省略当前配置
  21. <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
  22. <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
  23. -->
  24.  
  25. <!-- 探测注解的包,包括子集, 在JUnit测试的时候需要 --> <!-- 自动扫描bean,把作了注解的类转换为bean -->
  26. <context:component-scan base-package="com.sgl" />
  27. <!-- 加载组装所以配置文件 context:component-scan注册后可以省略当前配置
  28. <context:annotation-config/>
  29. -->

  30. 静态资源文件访问条件
    <mvc:default-servlet-handler/>
  31.  
  32. <!-- 视图解析器 -->
  33. <bean id="viewResolver"
  34. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  35. <!-- 使用JSP页面进行输出 -->
  36. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  37. <property name="prefix" value="/cms/" />
  38. <!-- 指定了表示层的后缀 -->
  39. <property name="suffix" value=".jsp"></property>
  40. </bean>
  41.  
  42. <!-- 处理文件上传处理 -->
  43. <bean id="multipartResolver"
  44. class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8" />
  45.  
  46. 此处可配置自定义拦截器 
    <!-- <mvc:interceptors>
  47. <mvc:interceptor>
  48. <mvc:mapping path="/*/**" />
  49. <mvc:exclude-mapping path="/cms/login.jsp"/>
  50. <bean class="com.sgl.interceptor.LinkInterator"></bean>
  51. </mvc:interceptor>
  52. </mvc:interceptors> -->
  53. </beans>

6.mybatis配置文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3.  
  4. <configuration>
  5. <typeAliases>
  6. <typeAlias alias="manager" type="com.sgl.model.ManagerInfo" />
  7. </typeAliases>
  8. <mappers>
  9. <mapper resource="com/sgl/mapping/ManagerInfo.xml" />
  10. </mappers>
  11. </configuration>

7.web.xml配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7.  
  8. <display-name>mySpring3 and myBatis3 Project</display-name>
  9.  
  10. <!-- 配置文件位置,默认为/WEB-INF/applicationContext.xml -->
  11. <context-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:applicationContext.xml</param-value>
  14. </context-param>
  15.  
  16. <!-- 字符集过滤器 -->
  17. <filter>
  18. <filter-name>characterEncodingFilter</filter-name>
  19. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  20. <init-param>
  21. <param-name>encoding</param-name>
  22. <param-value>UTF-8</param-value>
  23. </init-param>
  24. </filter>
  25. <filter-mapping>
  26. <filter-name>characterEncodingFilter</filter-name>
  27. <url-pattern>/*</url-pattern>
  28. </filter-mapping>
  29.  
  30. <!-- 上下文Spring监听器 -->
  31. <listener>
  32. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  33. </listener>
  34.  
  35. <!-- servlet控制跳转 -->
  36. <servlet>
  37. <servlet-name>spring3</servlet-name>
  38. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  39. <!-- 配置文件 -->
  40. <init-param>
  41. <param-name>contextConfigLocation</param-name>
  42. <param-value>classpath:springmvc-dispatcher.xml</param-value>
  43. </init-param>
  44. </servlet>
  45. <servlet-mapping>
  46. <servlet-name>spring3</servlet-name>
  47. <url-pattern>/</url-pattern>
  48. </servlet-mapping>
  49.  
  50. <!-- 激活静态资源的默认配置,解决Rest风格兼容 -->
  51. <!-- <servlet-mapping>
  52. <servlet-name>default</servlet-name>
  53. <url-pattern>*.css</url-pattern>
  54. </servlet-mapping>
  55. <servlet-mapping>
  56. <servlet-name>default</servlet-name>
  57. <url-pattern>*.js</url-pattern>
  58. </servlet-mapping>
  59. <servlet-mapping>
  60. <servlet-name>default</servlet-name>
  61. <url-pattern>*.gif</url-pattern>
  62. </servlet-mapping>
  63. <servlet-mapping>
  64. <servlet-name>default</servlet-name>
  65. <url-pattern>*.jpg</url-pattern>
  66. </servlet-mapping>
  67. <servlet-mapping>
  68. <servlet-name>default</servlet-name>
  69. <url-pattern>*.html</url-pattern>
  70. </servlet-mapping>
  71. <servlet-mapping>
  72. <servlet-name>default</servlet-name>
  73. <url-pattern>*.swf</url-pattern>
  74. </servlet-mapping> -->
  75. <context-param>
  76. <param-name>webAppRootKey</param-name>
  77. <param-value>SSM.root</param-value>
  78. </context-param>
  79. <context-param>
  80. <param-name>log4jConfigLocation</param-name>
  81. <param-value>WEB-INF/classes/log4j.properties</param-value>
  82. </context-param>
  83. <context-param>
  84. <param-name>log4jRefreshInterval</param-name>
  85. <param-value>600000</param-value>
  86. </context-param>
  87. <listener>
  88. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  89. </listener>
  90. <welcome-file-list>
  91. <welcome-file>index.jsp</welcome-file>
  92. </welcome-file-list>
  93. </web-app>

7.log4j配置(可能比较多,可以选择性使用):

  1. ### set log levels ###
  2. log4j.rootLogger = ALL , stdout, D , DE
  3. #log4j.rootLogger = ALL, console,allR
  4.  
  5. #system logger
  6. log4j.logger.SysInfoLogger = INFO, SYS_INFO, SYS_ERROR
  7. #log4j.logger.SysErrorLogger = ERROR, SYS_ERROR
  8.  
  9. #business logger
  10. log4j.logger.BizInfoLogger = INFO, BIZ_INFO, BIZ_ERROR
  11. #log4j.logger.BizErrorLogger = ERROR, BIZ_ERROR
  12.  
  13. #gm business logger
  14. log4j.logger.GmBizInfoLogger = INFO, GM_BIZ_INFO, GM_BIZ_ERROR
  15.  
  16. ### \u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
  17. log4j.appender.stdout = org.apache.log4j.ConsoleAppender
  18. log4j.appender.stdout.Encoding = UTF-8
  19. log4j.appender.stdout.File = ${catalina.home}/logs/output.log
  20. log4j.appender.stdout.Target = System.out
  21. log4j.appender.stdout.Threshold = INFO
  22. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
  23. log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss:SSS} [ %p ] %m%n
  24.  
  25. ### \u8F93\u51FA\u5230\u65E5\u5FD7\u6587\u4EF6 ###
  26. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  27. log4j.appender.D.Encoding=UTF-8
  28. log4j.appender.D.File = ${catalina.home}/logs/all_debug.log
  29. log4j.appender.D.MaxFileSize=100KB
  30. log4j.appender.D.Append = true
  31. log4j.appender.D.Threshold = DEBUG
  32. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  33. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss:SSS} [ %p ] - [ %l ] %m%n
  34.  
  35. ### \u8F93\u51FA\u5230\u65E5\u5FD7\u6587\u4EF6 ###
  36. log4j.appender.DE = org.apache.log4j.DailyRollingFileAppender
  37. log4j.appender.DE.Encoding=UTF-8
  38. log4j.appender.DE.File = ${catalina.home}/logs/all_error.log
  39. log4j.appender.DE.Append = true
  40. log4j.appender.DE.Threshold = ERROR
  41. log4j.appender.DE.layout = org.apache.log4j.PatternLayout
  42. log4j.appender.DE.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] - [ %l ] %m%n
  43.  
  44. ### \u4FDD\u5B58\u5F02\u5E38\u4FE1\u606F\u5230\u5355\u72EC\u6587\u4EF6 ###
  45. log4j.appender.SYS_INFO = org.apache.log4j.DailyRollingFileAppender
  46. log4j.appender.SYS_INFO.Encoding=UTF-8
  47. log4j.appender.SYS_INFO.File = ${catalina.home}/logs/system_info.log
  48. log4j.appender.SYS_INFO.Append = true
  49. log4j.appender.SYS_INFO.Threshold = INFO
  50. log4j.appender.SYS_INFO.layout = org.apache.log4j.PatternLayout
  51. log4j.appender.SYS_INFO.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n
  52.  
  53. ### \u4FDD\u5B58\u5F02\u5E38\u4FE1\u606F\u5230\u5355\u72EC\u6587\u4EF6 ###\uFFE5\uFFE5
  54. log4j.appender.SYS_ERROR = org.apache.log4j.DailyRollingFileAppender
  55. log4j.appender.SYS_ERROR.Encoding=UTF-8
  56. log4j.appender.SYS_ERROR.File = ${catalina.home}/logs/system_error.log
  57. log4j.appender.SYS_ERROR.Append = true
  58. log4j.appender.SYS_ERROR.Threshold = ERROR
  59. log4j.appender.SYS_ERROR.layout = org.apache.log4j.PatternLayout
  60. log4j.appender.SYS_ERROR.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n
  61.  
  62. ### \u4FDD\u5B58\u5F02\u5E38\u4FE1\u606F\u5230\u5355\u72EC\u6587\u4EF6 ###
  63. log4j.appender.BIZ_INFO = org.apache.log4j.DailyRollingFileAppender
  64. ###log4j.appender.BIZ_INFO = org.apache.log4j.RollingFileAppender
  65. log4j.appender.BIZ_INFO.Encoding=UTF-8
  66. log4j.appender.BIZ_INFO.File = ${catalina.home}/logs/business_info.log
  67. log4j.appender.BIZ_INFO.Append = true
  68. log4j.appender.BIZ_INFO.Threshold = INFO
  69. log4j.appender.BIZ_INFO.layout = org.apache.log4j.PatternLayout
  70. log4j.appender.BIZ_INFO.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss:SSS} [ %p ] %m%n
  71.  
  72. ### \u4FDD\u5B58\u5F02\u5E38\u4FE1\u606F\u5230\u5355\u72EC\u6587\u4EF6 ###\uFFE5\uFFE5
  73. log4j.appender.BIZ_ERROR = org.apache.log4j.DailyRollingFileAppender
  74. log4j.appender.BIZ_ERROR.Encoding=UTF-8
  75. log4j.appender.BIZ_ERROR.File = ${catalina.home}/logs/business_error.log
  76. log4j.appender.BIZ_ERROR.Append = true
  77. log4j.appender.BIZ_ERROR.Threshold = ERROR
  78. log4j.appender.BIZ_ERROR.layout = org.apache.log4j.PatternLayout
  79. log4j.appender.BIZ_ERROR.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n
  80.  
  81. log4j.appender.GM_BIZ_ERROR = org.apache.log4j.DailyRollingFileAppender
  82. log4j.appender.GM_BIZ_ERROR.Encoding=UTF-8
  83. log4j.appender.GM_BIZ_ERROR.File = ${catalina.home}/logs/gm_business_error.log
  84. log4j.appender.GM_BIZ_ERROR.Append = true
  85. log4j.appender.GM_BIZ_ERROR.Threshold = ERROR
  86. log4j.appender.GM_BIZ_ERROR.layout = org.apache.log4j.PatternLayout
  87. log4j.appender.GM_BIZ_ERROR.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] %m%n

8.控制器:

  1. @Controller
  2. @RequestMapping("/manager")
  3. public class ManagerAction {
  4. private final static String className = ManagerAction.class.getName();
  5. /*可使用@Resource替代@Autowired 例如:@Resource(name = "managerServiceImpl")*/
  6. @Autowired
  7. private ManagerService managerService;
  8.  
  9. @RequestMapping("/login")
  10. public String checkLogin(ModelAndView model) {
  11. ManagerInfo managerInfo=managerService.checkLogin("shupao");
  12. System.out.println(managerInfo.getManagerName());
  13. model.setViewName("index");
  14. LogUtil.businessInfo(className, "manager "+managerInfo.getManagerName()+"login success");
  15. return "index";
  16. }
  17. }

service:

  1. /*@Service(value = "managerService")*/
  2. public interface ManagerService {
  3. public ManagerInfo checkLogin(String name);
  4. }

serviceImpl:

  1. /*@Repository(value = "managerServiceImpl")*/
  2. @Service(value = "managerService")
  3. public class ManagerServiceImpl implements ManagerService {
  4. @Resource(name = "managerMapper")
  5. private ManagerMapper managerMapper;
  6. public ManagerInfo checkLogin(String name) {
  7. // TODO Auto-generated method stub
  8. return managerMapper.checkLogin(name);
  9. }
  10.  
  11. }

mapper:

  1. @Repository(value = "managerMapper")
  2. @Transactional
  3. public interface ManagerMapper{
  4. public ManagerInfo checkLogin(String name);
  5. }

mapping:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.sgl.mapper.ManagerMapper">
  5. <sql id="all_column">
  6. id id,
  7. manager_code managerCode,
  8. manager_name managerName,
  9. status status,
  10. remarks remarks,
  11. deleted deleted,
  12. create_time createTime,
  13. modify_time modifyTime,
  14. password password
  15. </sql>
  16. <select id="checkLogin" parameterType="String" resultType="com.sgl.model.ManagerInfo">
  17. select <include refid="all_column" />
  18. from t_manager_info where manager_name=#{name,jdbcType=VARCHAR}
  19. </select>
  20. </mapper>

总结

知识只有在用的时候才能变得活起来!与上篇文章相比,本次程序搭建的过程更加细致,考虑的东西也更加全面。不过还有许多需要探索的地方,还得加油!

Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合(注解及源码)的更多相关文章

  1. Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合

    项目环境背景: 操作系统:win7 JDK:1.7 相关依赖包,截图如下:

  2. 使用IDEA搭建一个 Spring + Spring MVC + Mybatis 的Web项目 ( 零配置文件 )

    前言: 除了mybatis 不是零配置,有些还是有xml的配置文件在里面的. 注解是Spring的一个构建的一个重要手段,减少写配置文件,下面解释一下一些要用到的注解: @Configuration  ...

  3. 使用IDEA搭建一个Spring + AOP (权限管理 ) + Spring MVC + Mybatis的Web项目 (零配置文件)

    前言: 除了mybatis 不是零配置,有些还是有xml的配置文件在里面的. 注解是Spring的一个构建的一个重要手段,减少写配置文件,下面解释一下一些要用到的注解: @Configuration  ...

  4. Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建

    之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...

  5. SSM(Spring+SpringMVC+Mybatis)+Mysql 框架整合搭建流程以及其间注意事项

    复习SSM框架,太久没用自己手动撘一个,发现自己还是有很多地方忘记了和没注意的事项... 首先,直接给出总流程: 零.引jar包 1.引包(或者写maven.pom) 一.数据库部分 设计数据库各表结 ...

  6. spring、mybatis、事务项目整合,附完整代码和数据库文件

    配置依赖项 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...

  7. 最详细的SSM(Spring+Spring MVC+MyBatis)项目搭建

    速览 使用Spring+Spring MVC+MyBatis搭建项目 开发工具IDEA(Ecplise步骤类似,代码完全一样) 项目类型Maven工程 数据库MySQL8.0 数据库连接池:Druid ...

  8. ssm整合说明与模板-Spring Spring MVC Mybatis整合开发

    ssm整合说明 spring+spring mvc+mybatis 说明 源码下载 由于之前存在ssh框架,spring+struts+hibernate,其中spring负责aop与ioc,所以一般 ...

  9. Spring + Spring MVC + MyBatis框架整合

    ---恢复内容开始--- 一.Maven Web项目创建 如有需要,请参考:使用maven创建web项目 二.Spring + Spring MVC + MyBatis整合 1.Maven引入需要的J ...

随机推荐

  1. 【转】Ubuntu安装基础教程

    原文网址:http://teliute.org/linux/Ubsetup/lesson23/lesson23.html 二十三.安装Ubuntu14.04 返回目录 下一课 14.04 版安装与前面 ...

  2. my sql 实现批量操作及注意问题

    使用in来实现批量操作是个很不错的想法: /*实现查询*/ select * from goods where goodsid in (102,103); /*实现批理删除*/ delete from ...

  3. [NOIP2011]数的划分

    本题地址:http://www.luogu.org/problem/show?pid=1025 题目描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序).例如:n=7,k=3,下面三 ...

  4. AIX 添加开机启动项

    在学习本主题之前,还是先学习一些AIX关于启动的基础知识,如果你只关心如何开机自动重启程序,请跳过第一章.第二章. ----------------------------第一章 AIX开机启动过程介 ...

  5. 微软Azure运营方世纪互联遭做空后强劲反弹

    http://www.cnblogs.com/sennly/p/4135594.html 最近几天微软Azure的运营方世纪互联被Trinity做空,股价震荡巨大,先让我们回顾下整个事件: 9月11日 ...

  6. #pragma once

    这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次. #pragma once是编译器相关的,就是说即使这个编译系统上有效,但在其他编译系统也不一定可以, ...

  7. HDOJ-ACM1016(JAVA) 字典序全排列,并剪枝

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5576273.html 题意: 一个环是用图中所示的n个圆组成的.把自然数1.2.…….n分别放入每个圆中,并在相邻 ...

  8. C++ Primer 练习7.32(C++ Primer读书笔记)

    第七章 类 练习7.32  定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在W ...

  9. Linux中find、grep命令详细用法

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...

  10. android 处理图片之--bitmap处理

    -2.从资源中获得bitmap Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res, R.drawabl ...