http://blog.csdn.net/yerenyuan_pku/article/details/70040220

SSH框架整合思想

三大框架应用在JavaEE三层结构,每一层都用到了不同的框架。SSH框架整合的思想可用下图来表示: 

SSH框架的整合方式一:零障碍整合(带有Hibernate配置文件)

我们先整合Struts2和Spring这两个框架,再整合Spring和Hibernate这两个框架。

整合Struts2和Spring框架

整合Struts2和Spring这两个框架要解决的事情就是把Struts2的Action的创建交给Spring来配置。 
第一步,创建Web项目,导入Struts2框架相关的jar包。 
要进行Struts2的基本的开发,可以参考struts-2.3.24中的apps下的一些示例代码,其中struts2-blank.war是一个Struts2的空的工程。我们只需要将struts2-blank.war解压后进入到WEB-INF下的lib中查看。 

除此之外,对于Struts2还需要了解以下jar包:

  • struts2-convention-plugin-2.3.24.jar:Struts2注解的开发包
  • struts2-json-plugin-2.3.24.jar:Struts2整合AJAX返回JSON数据
  • struts2-spring-plugin-2.3.24.jar:Struts2整合Spring的插件包。在本文中,我只导入了这个jar包。

第二步,编写一个Action。 
在src目录下创建一个cn.itcast.action包,并在该包下创建一个UserAction。

public class UserAction extends ActionSupport {

    @Override
public String execute() throws Exception {
System.out.println("action..........");
return NONE;
} }
  • 1

第三步,创建Struts2的核心配置文件,该核心配置文件的位置是在src目录下面,名称是struts.xml。并且在该核心配置文件配置UserAction。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="demo" extends="struts-default" namespace="/">
<action name="user" class="cn.itcast.action.UserAction"></action>
</package>
</struts>
  • 1

此时UserAction类由Struts2自己创建。 
注意:Struts2和Spring框架整合的时候,Struts2核心配置文件的名称和位置是有固定要求的,即名称只能是struts.xml,且必须位于src目录下面。 
第四步,配置Struts2的过滤器。即在web.xml配置文件中添加如下配置:

<!-- 配置Struts2的过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 1

第五步,导入Spring框架相关的jar包。

  • Spring框架基本开发的jar包: 
  • AOP开发相关的jar包: 
  • 与JDBC开发相关的jar包: 
  • 与事务管理的开发相关jar包: 
  • 整合Hibernate的jar包: 
  • 整和Web项目的jar包: 

第六步,创建Spring的核心配置文件——bean1.xml。

  • 引入约束

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd"> </beans>
    • 1
  • 配置Spring的监听器,即在web.xml配置文件中添加如下配置:

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  • 指定Spring配置文件的位置,即在web.xml配置文件中添加如下配置:

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:bean1.xml</param-value> <!-- 因为bean1.xml配置文件在src目录下,故可直接这样写 -->
    </context-param>

第七步,把UserAction交给Spring进行配置,即在Spring配置文件中添加如下配置:

<!-- 配置action对象 -->
<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype"></bean>

这时,在Spring配置文件——bean1.xml中配置了UserAction对象,在Struts2配置文件——struts.xml中也配置了UserAction对象。很显然,这种做法是不可取的。解决思路是只需要在Spring配置文件里面配置UserAction对象,而不要在Struts2配置文件中配置。所以,Struts2配置文件应该改为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="demo" extends="struts-default" namespace="/">
<!-- 在action标签里面不要写action全路径,class属性值写在Spring配置action对象的bean标签的id值 -->
<action name="user" class="userAction"></action>
</package>
</struts>

到这里,Struts2和Spring框架已经整合好了,现在就需要测试是否真如我们所愿了。 
在src目录下创建一个cn.itcast.dao包,并在该包下编写Dao层的一个类——UserDao.java。

public class UserDao {

    public void add() {
System.out.println("dao..............");
} }

然后在src目录下创建一个cn.itcast.service包,并在该包下编写Service层的一个类——UserService.java,并在该类中调用UserDao类里面的方法。

public class UserService {

    private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} public void add() {
System.out.println("service..............");
userDao.add();
} }

接着在UserAction类里面调用UserService类里面的方法。

public class UserAction extends ActionSupport {

    private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
} @Override
public String execute() throws Exception {
System.out.println("action..........");
userService.add();
return NONE;
} }

相应地,Spring的核心配置文件就要修改为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 配置action对象 -->
<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean> <bean id="userService" class="cn.itcast.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userDao" class="cn.itcast.dao.UserDao"></bean>
</beans>

最后,在浏览器地址栏中输入地址http://localhost:8080/Spring_day04_demo1/user.action,即可在Eclipse控制台看到如下输出结果:

action………. 
service………….. 
dao…………..

整合Spring和Hibernate框架

我之前也说过,要整合Spring和Hibernate框架,须解决下面两件事情:

  1. 把Hibernate核心配置文件里面的数据库信息的配置交给Spring来管理。
  2. 把Hibernate里面的SessionFactory的创建交给Spring来管理。

下面我就来详细介绍Spring框架整合Hibernate框架的具体实现。 
第一步,导入Hibernate开发相关的jar包。 
首先导入lib/required目录下所有的jar包,因为在该目录下,包含运行Hibernate项目必须的jar包。 

再导入MySQL数据库的驱动jar包: 

接着再导入日志相关的jar包: 

其中log4j的包由Spring导入。 
在进行这一步时,可能会遇到以下两个问题:

  1. 导入Struts2和Hibernate的jar包时有jar包冲突问题(两个jar包功能相同,但版本不一样),即在Struts2里面有一个这样的jar包: 
     
    在Hibernate里面也有这样的一个jar包: 
     
    解决方式很简单了,就是删除那个低版本的jar包。
  2. Spring整合持久化层框架时,还须导入如下jar包: 

第二步,搭建Hibernate开发环境。

  1. 创建实体类。在src目录下创建一个cn.itcast.entity包,并在该包下编写一个User实体类。

    public class User {
    
        private Integer uid;
    private String username;
    private String address;
    public Integer getUid() {
    return uid;
    }
    public void setUid(Integer uid) {
    this.uid = uid;
    }
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    public String getAddress() {
    return address;
    }
    public void setAddress(String address) {
    this.address = address;
    } }
    • 1
  2. 配置实体类映射关系,即在cn.itcast.entity包中创建User.hbm.xml映射文件:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 2017-4-5 14:44:57 by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
    <class name="cn.itcast.entity.User" table="t_user">
    <id name="uid" type="java.lang.Integer">
    <column name="uid" />
    <generator class="native" />
    </id>
    <property name="username" type="java.lang.String">
    <column name="username" />
    </property>
    <property name="address" type="java.lang.String">
    <column name="address" />
    </property>
    </class>
    </hibernate-mapping>
    • 1
  3. 创建Hibernate核心配置文件,即在src目录下引入hibernate.cfg.xml文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory>
    <!-- 配置关于数据库连接的四个项:driverClass url username password -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql:///hibernateTest</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">yezi</property> <!-- 可以将向数据库发送的SQL语句显示出来 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 格式化SQL语句 -->
    <property name="hibernate.format_sql">true</property> <!-- hibernate的方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 自动创建表 -->
    <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="cn/itcast/entity/User.hbm.xml" />
    </session-factory>
    </hibernate-configuration>
    • 1

    注意:如果只是单纯使用Hibernate框架,那么核心配置文件名称必须是hibernate.cfg.xml且位置必须在src目录下。但Hibernate和Spring框架整合的时候,Hibernate核心配置文件的名称和位置是没有固定要求的。

第三步,把Hibernate核心配置文件中的数据库配置的信息交给Spring进行配置。即把Hibernate核心配置文件中的数据库信息的配置去掉,改在Spring的核心配置文件中配置:

<!-- 配置连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring_lee"></property>
<property name="user" value="root"></property>
<property name="password" value="yezi"></property>
</bean>
  • 1

第四步,把Hibernate里面的SessionFactory的创建交给Spring来配置。具体思路为:服务器启动的时候,加载Spring配置文件,继而把配置文件中的对象都创建完毕。故可把SessionFactory对象的创建也在Spring配置文件进行配置。又因为创建SessionFactory对象的代码不是简简单单new出来的,而是多行代码实现的,核心代码如下:

// 加载核心配置文件
config = new Configuration().configure();
// 创建SessionFactory对象
sessionFactory = config.buildSessionFactory();

所以我们不可能在Spring配置文件中通过一个<bean>标签就简简单单地进行配置。Spring框架针对上面这种情况,帮我们封装了一个类,配置这个类的对象就可以创建SessionFactory对象了。所以我们应在Spring配置文件中添加如下内容:

<!-- 配置sessionFactory的创建 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 1.指定数据库位置 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 2.指定使用的Hibernate核心配置文件位置 -->
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
  • 1

第五步,之前我就讲过Spring针对JavaEE三层结构中的每一层都提供了不同的技术,在dao层,Spring提供了JDBC模板的技术,可对数据库进行CRUD操作。Spring提供了很多持久层技术的模板类简化了编程,如下图: 

现在我们就要在dao层里面使用HibernateTemplate模板类,至于它是什么,我待会将做简单介绍。具体操作为:向UserDao里面注入HibernateTemplate模板类对象,并调用HibernateTemplate模板类里面的save方法向数据库表中添加一条记录。这样UserDao类的代码就应修改为:

public class UserDao {

    // 在Dao里面注入HibernateTemplate模板对象
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} public void add() {
// 向表中添加记录
// 使用hibernateTemplate实现添加
// HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory);
// hibernateTemplate.save(entity);
System.out.println("dao.............."); User user = new User();
user.setUsername("李阿昀");
user.setAddress("湖北天门"); hibernateTemplate.save(user);
}
}
  • 1
  • 2

当然了,Spring配置文件的修改是必不可少的啦!所以应向Spring配置文件添加如下配置:

<bean id="userDao" class="cn.itcast.dao.UserDao">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean> <!-- 创建HibernateTemplate模板对象 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<!-- 注入sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
  • 1

第六步,配置Spring的事务管理。

  1. 配置事务管理器

    <!-- 1.配置事务的管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    • 1
    • 2
  2. 注解事务管理的开启

    <!-- 2.开启事务注解 -->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
  3. 在业务层添加一个@Transactional注解

    @Transactional
    public class UserService { private UserDao userDao;
    public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
    } public void add() {
    System.out.println("service..............");
    userDao.add();
    }
    }
    • 1

这时启动tomcat服务器,就会发现数据库中多了一个t_user表,这是理所应当的啦!接着在浏览器地址栏中输入地址http://localhost:8080/Spring_day04_demo1/user.action进行访问,即可看到t_user表多了一条记录,如下:
 
至此,hibernate-5.0.7+struts-2.3.24+spring-4.2.4三大框架就已整合完毕!

HibernateTemplate介绍

HibernateTemplate对Hibernate框架进行了封装,直接调用HibernateTemplate里面的方法即可实现对数据库进行CRUD的操作。 
HibernateTemplate常用的方法如下:

  • Serializable save(Object entity):添加操作
  • void update(Object entity):修改操作
  • void delete(Object entity):删除操作
  • <T> T get(Class<T> entityClass, Serializable id):根据id查询
  • <T> T load(Class<T> entityClass, Serializable id):根据id查询
  • List find(String queryString, Object... values):查询操作的方法

SSH框架整合过程总结

  1. 导入相关的jar包。 
     
    一共有42个jar包。
  2. 搭建Struts2的开发环境 
    • 创建Action,引入struts.xml配置文件,并配置Action
    • 配置Struts2框架的过滤器
  3. 搭建Hibernate的开发环境 
    • 创建实体类
    • 配置实体类和数据库表之间的映射关系
    • 创建Hibernate核心配置文件,主要是引入映射配置文件
  4. 搭建Spring的开发环境 
    • 创建Spring核心配置文件
    • 让Spring配置文件在服务器启动时候进行加载 
      • 配置监听器
      • 指定Spring配置文件的位置
  5. Struts2和Spring框架的整合 
    • 把Struts2的Action的创建交给Spring来配置(记住Action是多实例的对象)。
    • 在struts.xml配置文件中的action标签的class属性里面写上bean的id值。
  6. Spring和Hibernate框架的整合 
    • 把Hibernate核心配置文件里面的数据库信息的配置交给Spring来管理。
    • 把Hibernate里面的SessionFactory的创建交给Spring来管理。
  7. 在dao里面使用HibernateTemplate模板类 
    • 在dao里面注入HibernateTemplate模板类对象
    • 在HibernateTemplate模板对象中注入SessionFactory
  8. 配置Spring的事务管理

SSH框架的整合方式二:不带Hibernate配置文件

Spring整合Hibernate框架的时候,可以不用写Hibernate的核心配置文件。下面我就举个例子来演示。 
首先复制以上SSH项目,再在其基础上进行修改。 
然后查看之前写的Hibernate核心配置文件,可知Hibernate核心配置文件包含如下内容:

  1. 连接数据库必要的参数
  2. Hibernate的属性
  3. 连接池的配置
  4. 映射文件的引入

Spring整合Hibernate框架的时候,虽然可以不用写Hibernate的核心配置文件,但还是要把Hibernate核心配置文件中的基本信息配置和映射文件的引入放到Spring配置文件中进行配置。所以Spring配置文件的内容应修改为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 配置连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///spring_lee"></property>
<property name="user" value="root"></property>
<property name="password" value="yezi"></property>
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- <property name="configLocations" value="classpath:hibernate.cfg.xml"></property> -->
<!-- 如果不写Hibernate的核心配置文件,你就不需要写上面这行配置了 -->
<!-- 1.把Hibernate的基本信息的配置(写在这儿) -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 2.把映射文件引入 -->
<property name="mappingResources">
<list>
<value>cn/itcast/entity/User.hbm.xml</value>
<!-- <value>...</value> -->
</list>
</property>
</bean> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <tx:annotation-driven transaction-manager="transactionManager"/> <bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean> <bean id="userService" class="cn.itcast.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean> <bean id="userDao" class="cn.itcast.dao.UserDao">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>

至此,hibernate-5.0.7+struts-2.3.24+spring-4.2.4三大框架就又整合完毕!两种方式任君选择!

(转)hibernate-5.0.7+struts-2.3.24+spring-4.2.4三大框架整合的更多相关文章

  1. Struts2+Hibernate+Spring(SSH)三大框架整合jar包

    Struts2 + Spring3 + Hibernate3 框架整合 1. 每个框架使用 (开发环境搭建 )* 表现层框架 struts2 1) jar包导入: apps/struts2_blank ...

  2. JavaWeb_(SSH)三大框架整合struts+hibernate+spring_Demo

    三大框架整合 一.SSH导包 二.书写Spring 三.书写Struts 四.整合Spring与Struts 五.书写(与整合)Hibernate.引入c3p0连接池并使用hibernate模板 六. ...

  3. springMVC系列之(四) spring+springMVC+hibernate 三大框架整合

    首先我们要知道Hibernate五大对象:,本实例通过深入的使用这五大对象和spring+springMVC相互结合,体会到框架的好处,提高我们的开发效率 Hibernate有五大核心接口,分别是:S ...

  4. SSH(Struts、Spring、Hibernate)三大框架整合

    1. 新建数据库ssh_db -> 新建表user_tb(id为主键,自动递增) 2. 导入jar包(struts.hibernate 和 spring) 3. 注册页面reg.jsp,将表单的 ...

  5. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

    hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...

  6. [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

      hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6 ...

  7. JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    一.整合原理 二.导包(41个) 1.hibernate (1)hibernate/lib/required (2)hibernate/lib/jpa | java persist api java的 ...

  8. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  9. SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

    转自:https://blog.csdn.net/bieleyang/article/details/77862042 SSM框架是spring MVC ,spring和mybatis框架的整合,是标 ...

随机推荐

  1. create python project steps

    Setting Up Your First Project You don't have to manually create the structure above, many tools will ...

  2. (6)servlet-创建一个servlet类

    1,在项目的src目录下,右键[New]-[Servlet] 2,在弹出窗口中填写信息 Package:所在包名 Name:servlet的类名 Which method stubs would yo ...

  3. ubuntu下nginx的安裝

    本系列的lnmp的大框架基本上是按照http://www.linuxzen.com/lnmphuan-jing-da-jian-wan-quan-shou-ce-si-lnmpda-jian-yuan ...

  4. 一步一步学Silverlight 2系列(4):鼠标事件处理

    一步一步学Silverlight 2系列(4):鼠标事件处理   概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言V ...

  5. vs 中switch语句快捷键列出枚举

    先switch然后两下tab会补完到default,光标显示在switch后的变量这时输入枚举,输完后回车,自动补完所有枚举的case

  6. bzoj 1502 月下柠檬树【Simpson积分】

    投影到地面之后,会发现圆形在平行光下面积和形状是不会变的,也就是所要求的图形是若干个圆和把相邻两个圆连起来的公切线所组成的. 公切线和圆间距瞎求一下就行,注意要去掉被完全覆盖的圆 然后simpson即 ...

  7. 洛谷P4364 [九省联考2018]IIIDX(线段树)

    传送门 题解看得……很……迷? 因为取完一个数后,它的子树中只能取权值小于等于它的数.我们先把权值从大到小排序,然后记$a_i$为他左边(包括自己)所有取完他还能取的数的个数.那么当取完一个点$x$的 ...

  8. C# 后台处理http请求

    using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Syst ...

  9. 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装

    准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...

  10. maven-将依赖的 jar包一起打包到项目 jar 包中

    前言: 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全,以下有两种方法可以规避这个问题. 一.在pom.xml 文件中 ...