2.7  使用MyEclipse可视化开发Hibernate实例

2.7节的例子源代码在配套光盘sourcecode/workspace目录的chapter02_first项目中。

这个实例主要演示如何使用MyEclipse的可视化开发工具开发Hibernate应用,利用MyEclipse可以提高我们开发Java EE应用的效率。操作的数据库表还是guestbook表,所使用MyEclipse的版本为7.0,不同的MyEclipse版本之间对于开发Hibernate应用差异不大。

在7.0版本中,内置了对Hibernate 2.x、3.0、3.1和3.2等Hibernate版本的支持,没有提供对3.3版本的支持。我们可以修改MyEclipse的设置,把对Hibernate 3.2的支持,修改为对Hibernate 3.3的支持。为此启动Eclipse后,选中菜单栏的"Windows"→"Preference"→"MyEclipse Enterprise Workbench"→"Project Capabilities"→"Hibernate"→"Hibernate 3.2"选项,在Library Modules下拉列表框中选中Hibernate 3.2 Core Libray选项,把类库文件替换为Hibernate 3.3的类库文件。如图2 2所示。

  
图2 2  修改MyEclipse中Hibernate 3.2的类库文件
 

2.7.1  设置MyEclipse连接Oracle数据库

为在MyEclipse中设置连接Oracle数据库,在Eclipse中选择Window→Show View→Other→MyEclipse Database→DB Browser选项。右击DB Browser视图的空白部分,选择New选项,如图2 3所示。

 
图2 3  选择New选项

在弹出的窗口中,输入连接Oracle数据库所需要的相应参数,以及Oracle驱动类库的文件名与位置。单击Next按钮,如图2 4所示。

 
图2 4  输入连接Oracle数据库的参数

在Schema Details窗口中,选中Display Selected单选按钮。单击"Add"按钮,在弹出的Selection Needed窗口中选中SCOTT复选框。单击"OK"按钮,如图2 5所示。单击"Finish"按钮,关闭Schema Details窗口。

 
图2 5  选择SCOTT复选框

2.7.2  新建项目并增加Hibernate开发支持

在Eclipse中新建一个Java项目,名为"chapter02_first"。单击MyEclipse→Project Capabilities→Add Hibernate Capabilites选项,增加Hibernate的开发支持,如图2 6所示。

 
图2 6  增加Hibernate的开发支持

弹出Hibernate Support for MyEclipse窗口,在Hibernate Specification选项组中选中Hibernate 3.2单选按钮,选择MyEclipse Libraries和Hibernate 3.2 Core Libaries-<MyEclipse-Library>复选框选项,如图2 7所示,单击Next按钮。

 
图2 7  选择Hibernate类库的版本

其中的选项说明如表2-3所示。

表2-3  选项说明

选项

描述

Hibernate Specification

要添加到项目中的Hibernate具体版本,推荐选择Hibernate 3.2

Enable Hibernate Annotations Support

是否需要Hibernate Annotations的支持

MyEclipse Libraries/User Libraries

选择显示哪个位置的类库

Add checked Libraries to project build-path

选中的类库将会添加当前项目的构建路径中,但是相应的Jar文件将不会复制到项目中,这些Jar文件会在项目部署时复制

Copy checked Library Jars to project folder and add to build-path

选中的类库中的Jar文件将会被复制到项目并添加到构建路径中

Library Folder

一个相对于当前项目的路径,类库中的Jar会被复制到其中

 

在接下来的窗口中输入MyEclipse产生的Hibernate配置文件名及其路径。使用hibernate.cfg.xml文件名,路径保留默认值,如图2 8所示。

 
图2 8  设置生成hibernate.cfg.xml文件的名称及其路径

单击Next按钮,在DB Driver下拉列表框中选中已设置的oracledriver选项,其他选项保留默认值,如图2 9所示。

 
图2 9  选择要使用的数据库

单击"Next"按钮,清除"Create SessionFactory Class"复选框,如图2 10所示,单击Finish按钮结束设置。

 
图2 10  清除Create SessionFactory Class复选框
 

执行上述操作后,MyEclipse会在项目的构建路径中增加Hibernate的相关类库和Oracle的驱动类库。同时生成了开发Hibernate应用所需的hibernate.cfg.xml文件,整个项目的所有类库文件和配置文件如图2 11所示。

 
图2 11  整个项目的所有类库文件和配置文件

还需要修改MyEclipse自动生成的hibernate.cfg.xml文件,增加一些新的配置项并修改Oracle数据库方言类的名称。修改后的hibernate.cfg.xml的内容如下所示(加粗显示部分为需要修改处)。

  1. SRC    hibernate.cfg.xml
  2. <?xml version='1.0' encoding='UTF-8'?>
  3. <!DOCTYPE hibernate-configuration PUBLIC
  4. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  5. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  6. <hibernate-configuration>
  7. <session-factory>
  8. <property name=
  9. "dialect">org.hibernate.dialect.Oracle9iDialect</property>
  10. <property name=
  11. :ora9</property>
  12. <property name="connection.username">scott</property>
  13. <property name="connection.password">tiger</property>
  14. <property name=
  15. "connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  16. <property name="myeclipse.connection.profile">oracledriver</property>
  17. <property name="current_session_context_class">thread</property>
  18. <property name="show_sql">true</property>
  19. <property name="format_sql">true</property>
  20. </session-factory>
  21. </hibernate-configuration>
 

2.7.3  自动生成Guestbook类与映射文件

在Eclipse的DB Browser视图中,右击设置的oracledriver名。选择Open connection选项,如图2 12所示弹出Open Database Connection窗口,输入用户名及密码,如图2 13所示,单击OK按钮。

 
图2 12  选泽Open Database Connection选项
 
图2 13  输入用户名与密码

右击DB Browser视图中的guestbook表,选中"Hibernate Reverse Engineering"选项。如图2 14所示。

 
图2 14  选择Hibernate Reverse Engineering选项
 

弹出"Hibernate Mapping and Application Generation"窗口,输入与生成持久化类(POJO)有关的参数值。在Java src folder文本框中输入生成持久化类的保存路径,在Java package文本框中输入持久化类所使用的包名。选择"Create POJO<>DB Table mapping information、Create a Hibernate mapping file (*.hbm.xml) for each database table"及"Java Data Object (POJO<> DB Table)"复选框,清除"Create abstract class"复选框,如图2 15所示。

 
图2 15  设置生成POJO类与映射文件

单击Next按钮,在打开窗口中的Id Generator下拉列表框中选中sequence选项,其他选项保留默认值,如图2 16所示。

 
图2 16  选择主键生成策略
 

单击"Next"按钮,在打开如图2 17所示的窗口中单击"Finish"按钮。

  
图2 17  设置逆向工程的细节

经过上面的操作之后,MyEclipse会自动生成Guestbook.java和Guestbook.hbm.xml两个文件。Guestbook.hbm.xml文件的内容如下所示,需要修改008行~第010行的内容用来设置序列名。

  1. SRC    Guestbook.hbm.xml
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate
  4. Mapping DTD 3.0//EN"
  5. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  6. <hibernate-mapping>
  7. <class name="com.v512.examples.Guestbook" table="GUESTBOOK"
  8. schema="SCOTT">
  9. <id name="id" type="java.lang.Integer">
  10. <column name="ID" precision="8" scale="0" />
  11. <generator class="sequence">
  12. <param name="sequence">gb_seq</param>
  13. </generator>
  14. </id>
  15. <property name="name" type="java.lang.String">
  16. <column name="NAME" length="20" not-null="true" />
  17. </property>
  18. <property name="phone" type="java.lang.String">
  19. <column name="PHONE" length="20" />
  20. </property>
  21. <property name="email" type="java.lang.String">
  22. <column name="EMAIL" length="40" />
  23. </property>
  24. <property name="title" type="java.lang.String">
  25. <column name="TITLE" length="80" not-null="true" />
  26. </property>
  27. <property name="content" type="java.lang.String">
  28. <column name="CONTENT" length="2000" />
  29. </property>
  30. <property name="createdTime" type="java.util.Date">
  31. <column name="CREATED_TIME" not-null="true" />
  32. </property>
  33. </class>
  34. </hibernate-mapping>

第005行中<class>标签的schema属性设置当前表属于哪个schema,第007行和第013行中<column>标签的precision、scale及length属性设置表中字段的精度、小数点位数和长度,not-null属性设置该字段是否不允许为空。

2.7.4  编写HibernateSessionFactoryUtil.java文件

在Hibernate应用中,如果只使用一个数据库,则通常只需要一个SessionFactory对象。为了方便整个应用取得同一个SessionFactory对象,我们应用设计模式中的单态模式。编写一个SessionFactory的工具类HibernateSessionFactoryUtil,HibernateSessionFactoryUtil.java文件的内容如下:

  1. SRC    HibernateSessionFactoryUtil.java
  2. package com.v512.util;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. public class HibernateSessionFactoryUtil {
  6. private static final SessionFactory sessionFactory;
  7. static {
  8. try {
  9. sessionFactory = new Configuration().configure().
    buildSessionFactory();
  10. catch (Throwable ex) {
  11. /*
  12. 013              * 需要 捕获Throwable对象,
  13. 014 * 否则捕获不到 Error及其子类,以及NoClassDefFoundError类型的错误
  14. 015              */
  15. throw new ExceptionInInitializerError(ex);
  16. }
  17. }
  18. private HibernateSessionFactoryUtil() {
  19. }
  20. public static SessionFactory getSessionFactory() {
  21. return sessionFactory;
  22. }
  23. }

HibernateSessionFactoryUtil类在载入JVM后新建Configuration对象,读取hibernate.cfg.xml文件,创建SessionFactory对象,通过HibernateSessionFactoryUtil类所提供的getSessionFactory()静态方法获取SessionFactory对象。

2.7.5  编写HibernateTest.java

编写一个测试的HibernateTest.java文件,通过Hibernate实现对guestbook表中数据的CRUD操作,在其中定义addGuestbook()、updateGuestbook()、getGuestbook()、getGuestbooks()、deleteGuestbook()和printGuestbook()方法。该文件的内容如下:

  1. SRC    HibernateTest.javaa
  2. package com.v512.examples;
  3. import java.util.List;
  4. import org.hibernate.Query;
  5. import org.hibernate.Session;
  6. import org.hibernate.Transaction;
  7. import com.v512.util.HibernateSessionFactoryUtil;
  8. public class HibernateTest {
  9. public void addGuestbook(Guestbook gb) {
  10. 011Session session = HibernateSessionFactoryUtil.
  11. getSessionFactory().
  12. getCurrentSession();
  13. Transaction tx = session.beginTransaction();
  14. session.save(gb);
  15. tx.commit();
  16. }
  17. public Guestbook getGuestbook(Integer id) {
  18. Session session = HibernateSessionFactoryUtil.
  19. getSessionFactory().
  20. getCurrentSession();
  21. Transaction tx = session.beginTransaction();
  22. Guestbook gb = (Guestbook) session.get
  23. (Guestbook.class, id);
  24. tx.commit();
  25. return gb;
  26. }
  27. public List<Guestbook> getGuestbooks() {
  28. Session session = HibernateSessionFactoryUtil.
  29. getSessionFactory().
  30. getCurrentSession();
  31. Transaction tx = session.beginTransaction();
  32. Query query = session.createQuery("from Guestbook");
  33. List<Guestbook> list = query.list();
  34. tx.commit();
  35. return list;
  36. }
  37. public void updateGuestbook(Guestbook gb) {
  38. Session session = HibernateSessionFactoryUtil.
  39. getSessionFactory().
  40. getCurrentSession();
  41. Transaction tx = session.beginTransaction();
  42. session.saveOrUpdate(gb);
  43. tx.commit();
  44. }
  45. public void deleteGuestbook(Integer id) {
  46. Guestbook gb = getGuestbook(id);
  47. Session session = HibernateSessionFactoryUtil.
  48. getSessionFactory().
  49. getCurrentSession();
  50. Transaction tx = session.beginTransaction();
  51. session.delete(gb);
  52. tx.commit();
  53. }
  54. public void printGuestbook(Guestbook gb) {
  55. System.out.print("id:" + gb.getId() + "\t");
  56. System.out.print("name:" + gb.getName() + "\t");
  57. System.out.print("title:" + gb.getTitle() + "\t");
  58. System.out.print("content:" + gb.getContent() + "\t");
  59. System.out.println("createdTime:" + gb.getCreatedTime());
  60. }
  61. public static void main(String[] args) {
  62. HibernateTest test = new HibernateTest();
  63. Guestbook gb = test.getGuestbook());
  64. System.out.println("-------------------------
  65. 读取单一记录-----------------------------");
  66. test.printGuestbook(gb);
  67. System.out.println("-------------------------
  68. 读取所有记录-----------------------------");
  69. List<Guestbook> list = test.getGuestbooks();
  70. for (Guestbook g : list) {
  71. test.printGuestbook(g);
  72. }
  73. System.out.println("-------------------------
  74. 更新记录---------------------------------");
  75. gb.setName("关羽");
  76. test.updateGuestbook(gb);
  77. test.printGuestbook(gb);
  78. System.out.println("-------------------------
  79. 删除记录---------------------------------");
  80. test.deleteGuestbook());
  81. HibernateSessionFactoryUtil.getSessionFactory().close();
  82. }
  83. }

当使用HibernateTest类中getGuestbook()方法根据id值获取一条记录时,Hibernate找到数据库中这条记录,然后再生成这条记录所对应的持久化对象返回。updateGuestbook()方法更新一条记录时首先找到这条记录所对应的持久化对象,然后调用这个对象的setter方法修改属性值,并通过Hibernate完成数据库中数据的更新;deleteGuestbook()方法删除一条记录时首先找到这条记录所对应的持久化对象,然后通过Hibernate删除持久化对象删除进而数据库中所对应的数据。

2.7.6  程序运行结果

这个实例使用Hibernate完成对数据库中数据的CRUD操作,借助MyEclipse的帮助开发Hibernate应用,不需要手工编写持久化(POJO)类、Hibernate的配置和映射文件。Hibernate通过操作持久化对象完成对数据库数据的CRUD操作, HibernateTest.java运行结果如下:

  1. -------------------------读取单一记录-----------------------------
  2. id:    name:刘伟 title:大家好
  3. content:欢迎大家学习Hibernate技术。
  4. createdTime: -- ::59.0
  5. -------------------------读取所有记录-----------------------------
  6. id:    name:刘伟 title:大家好
  7. content:欢迎大家学习Hibernate技术。
  8. createdTime: -- ::59.0
  9. -------------------------更新记录---------------------------------
  10. id:    name:关羽 title:大家好
  11. content:欢迎大家学习Hibernate技术。
  12. createdTime: -- ::59.0
  13. -------------------------删除记录---------------------------------
 

2.7.7  使用 HQL 编辑器调试HQL语句

MyEclipse中包含一个Hibernate编辑器和多个相关视图,允许根据当前项目的配置来调试HQL语句。"Hibernate Dynamic Query Translator"视图显示当前HQL语句所对应的SQL语句;"Hibernate Query Result"视图查看HQL语句的执行结果,返回的持久化对象的属性值通过"Properties"视图显示;"Query Parameters"视图可以为调试的HQL语句输入需要的参数值。

右击Package Explorer视图中的chapter02_first项目,选中快捷菜单中的"MyEclipse→Open HQL Editor"选项,如图2 18所示。

 
图2-18  MyEclipse→Open HQL Editor选项

打开HQL编辑器,输入"from Guestbook"。单击运行图标执行查询,并且通过相关视图查看查询结果,如图2 19所示。

 
图2 19  在HQL编辑器中执行HQL查询并查看结果

还可以使用"Query Parameters视图输入需要绑定参数的HQL查询语句,如图2 20所示。

 
图2 20  使用Query Parameters 视图输入需要绑定参数的HQL查询语句
 

2.8  Hibernate应用的开发方式

2.8.1  自底向上,从数据库表到持久化类

采用自底向上的开发方式,采用手工或者MyEclipse等开发工具直接根据数据库中表的结构生成对应的映射文件和持久化类。这是实际开发中最常用的一种方式,也是本书所推荐的方式。通过这种方式最小化了手工编码,降低了出错的可能性。

2.8.2  自上向下,持久化类到数据库表

首先编写持久化类,然后根据持久化类的代码手工编写或者采用工具生成映射文件,进而生成数据库表结构。这种方式在实际开发中也经常使用,可能出现的问题是生成的数据库表结构与实际需要的数据库表结构之间的差异,需要手工调整。

2.8.3  从中间出发,向上与向下发展

首先编写持久化类与数据库表的映射文件,然后根据映射文件手工编码或者采用工具向上生成持久化类,向下生成数据库表结构。

2.9  设置Hibernate使用连接池

Hibernate默认使用一个功能简单的连接池,通常只用于开发阶段测试之用。为了更高效地使用Hibernate,可以设置Hibernate使用第三方C3P0或者应用服务器(容器)所带的数据库连接池。

2.9.1  设置使用Tomcat中的连接池

如果开发运行在应用服务器中的程序,建议其中配置的连接池,如允许Hibernate使用通过在Tomcat中所配置的连接池。为此修改Tomcat中的context.xml文件,该文件位于tomcat安装目录的conf子目录中,同时还需要将Oracle数据库的驱动类库ojdbc6.jar或者ojdbc14.jar添加到tomcat的lib目录下。修改后的context.xml文件内容如下:

  1. SRC    context.xml
  2. <Context reloadable="true">
  3. <WatchedResource>WEB-INF/web.xml</WatchedResource>
  4. <Resource name="jdbc/oracleds" auth="Container"
  5. type="javax.sql.DataSource" maxActive="100"
  6. maxIdle="30" maxWait="10 000" username="scott" password="tiger"
  7. driverClassName="oracle.jdbc.OracleDriver" url=
    "jdbc:oracle:thin:@localhost:1521:ora9" />
  8. </Context>

设置Tomcat提供的连接池之后,要在Hibernate的配置文件(hibernate.cfg.xml)中添加connection.datasource属性,如下面的代码所示:

  1. <property name="connection.datasource">
  2. java:comp/env/jdbc/oracleds</property>

其中的java:comp/env/jdbc/oracleds是Tomcat中设置的数据源对象的JNDI名称。

2.9.2  使用C3P0连接池

如果让Hibernate使用第三方C3P0连接池,则在Hibernate的配置文件中添加如下的配置信息,还需要把C3P0类库添加到当前项目的构建路径下。

  1. <property name="connection.provider_class">
  2. org.hibernate.connection.C3P0ConnectionProvider
  3. </property>
  4. <property name=</property>
  5. <property name=</property>
  6. <property name=</property>
  7. <property name=</property>
  8. <property name=</property>
  9. <property name=</property>

- hibernate.c3p0.min_size:设置连接池的最小连接数。

- hibernate.c3p0.max_siz:设置连接池的最大连接数。

- hibernate.c3p0.timeout:设置连接池中的连接的最大空闲时间,超时后会被删除,单位为秒。

- hibernate.c3p0.max_statements:设置连接池中Statement对象的最大数量。

- hibernate.c3p0.idle_test_period:设置检查连接池中空闲连接的间隔时间,单位为秒。

- hibernate.c3p0.acquire_increment:设置连接池的连接用完后每次新建连接的数量。

2.9.3  使用自定义连接池

在Hibernate应用中还可以使用定义连接池,该连接池需要实现org.hibernate.connection.ConnectionProvider接口,并在Hibernate配置文件中设置hibernate.connection.provider_class属性,其值为这个实现类的名称。

2.10  使用C3P0连接池

2.10节的例子源代码在配套光盘sourcecode/workspace目录的chapter02_first项目中。

2.10.1  创建chapter02_c3p0项目

在这个实例中让Hibernate使用第三方C3P0连接池获取操作数据库的连接对象,通过复制chapter02_first项目创建chapter02_c3p0项目。同时还需要把C3P0连接池的类库(c3p0-*.*.*.jar)添加到当前项目的构建目录下。当前项目构建路径中的类库如图2 21所示。

 
图2 21  chapter02_c3p0项目构建路径中的类库
 

2.10.2  编辑hibernate.cfg.xml文件

当前项目使用了C3P0的连接池技术,修改hibernate.cfg.xml文件以配置相应的参数,其内容如下:

  1. SRC    hibernate.cfg.xml
  2. <?xml version='1.0' encoding='UTF-8'?>
  3. <!DOCTYPE hibernate-configuration PUBLIC
  4. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  5. "http://hibernate.sourceforge.net
  6. /hibernate-configuration-3.0.dtd">
  7. <hibernate-configuration>
  8. <session-factory>
  9. <property name="connection.driver_class">oracle.jdbc.driver.
  10. OracleDriver</property>
  11. <property name="connection.url">jdbc:oracle:thin:@localhost:
  12. :ora9</property>
  13. <property name="dialect">org.hibernate.dialect.
  14. Oracle9iDialect</property>
  15. <property name="connection.username">scott</property>
  16. <property name="connection.password">tiger</property>
  17. <!-- C3P0 连接池的配置 -->
  18. <property name="connection.provider_class">
  19. org.hibernate.connection.C3P0ConnectionProvider
  20. </property>
  21. <property name=</property>
  22. <property name=</property>
  23. <property name=</property>
  24. <property name=</property>
  25. <property name=</property>
  26. <property name=</property>
  27. <property name="current_session_context_class">thread</property>
  28. <property name="show_sql">true</property>
  29. <property name="format_sql">true</property>
  30. <mapping resource="com/v512/examples/Guestbook.hbm.xml" />
  31. </session-factory>
  32. </hibernate-configuration>
 

2.10.3  chapter02_c3p0项目的运行与输出

chapter02_c3p0项目中,其他文件都不需要修改,运行HibernateTest类输出的结果chapter02_first项目运行输出结果完全一样。

使用MyEclipse可视化开发Hibernate实例的更多相关文章

  1. Hibernate 使用MyEclipse简化开发

    在平时开发中写配置文件比较繁琐,在这里写一下如何使用myEclipse简化开发. 1.打开MyEclipse,创建数据库连接 单机测试连接按钮,如果出现成功建立连接,则连接成功. 然后Finish 2 ...

  2. MyEclipse下Spring+Hibernate整合

    目前,SSH(Struts+Spring+Hibernate)是Web开发的一种常用框架组合,Struts实现了MVC,Hibernate实现了关系对象映射,Spring实现了基于Bean的配置管理. ...

  3. Hibernate实例二

    Hibernate实例二 一.测试openSession方法和getCurrentSession方法 hebernate中可以通过上述两种方法获取session对象以对数据库进行操作,下面的代码以及注 ...

  4. Hibernate实例

    Hibernate实例 一.Hibernate简介 Hibernate是简化项目中连接数据库的一个框架工具 Hibernate是Java领域类技术成熟稳定的ORM框架 * ORM是对象关系映射 * 使 ...

  5. React 可视化开发工具 shadow-widget 的非可视开发方法

    Shadow Widget 提倡在可视设计器中开发用户界面,输出转义标签,而非 JSX.许多童鞋可能不知道 SW 同样支持用 JSX 设计界面,开发体验比原生 React 编程好出很多,本文就介绍这方 ...

  6. [资料搜集狂]D3.js数据可视化开发库

    偶然看到一个强大的D3.js,存档之. D3.js 是近年来十分流行的一个数据可视化开发库. 采用BSD协议 源码:https://github.com/mbostock/d3 官网:http://d ...

  7. 如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法

    最近学习了下如何在MyEclipse中通过hibernate使用jtds驱动连接数据库,并向数据库添加数据的方法,虽然MyEclipse中自带了连接数据库的方法,我也尝试了下其他方法,如有不当之处请指 ...

  8. 主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

    \Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass ...

  9. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

随机推荐

  1. textarea元素在加上runat="server"后运行报错解决

    当出现这个报错的时候,在后台引用相应的命名空间,为 using System.Web.UI; using System.Web.UI.HtmlControls;using System.Web.UI. ...

  2. banner轮播图js

    例子1: if(!$('.side_ul ul').is(":animated")){            var wli = $('.side_ul li').width()+ ...

  3. live555源代码编译

    参考http://www.cnblogs.com/MikeZhang/archive/2013/04/24/live555Windows_20130424.html 环境:windowsxp + VS ...

  4. SimPholders2 模拟器 App 文件路径查看工具

    SimPholder2.app 官网下载地址:http://www.simpholders.com ​当使用 Xcode beta 版本切换到 Xcode 正式版本时,点击 SimPholders2. ...

  5. java日期类型转换总结date timestamp calendar string

    用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式.         Timestamp转化为String: S ...

  6. scala言语基础学习

    scala变长参数: 递归累加: scala异常的使用: array和arraybuffer的使用 定长array: arraybuff:

  7. 最短路--floyd算法模板

    floyd算法是求所有点之间的最短路的,复杂度O(n3)代码简单是最大特色 #include<stdio.h> #include<string.h> ; const int I ...

  8. 越狱Season 1-Episode 7: Riots, Drills and the Devil: Part 2

    Season 1, Episode 7: Riots, Drills and the Devil: Part 2 -Pope: Belick, get those guys in line guy: ...

  9. 【HAOI2006】【BZOJ1051】【p1233】最受欢迎的牛

    BZOJ难得的水题(其实是HA太弱了) 原题: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B ...

  10. kuangbin_ShortPath J (POJ 1511)

    其实虽然一开始有被这个题的8000MS 和 256MB限制又被吓到 但是严格来说跟之前的POJ 3268是一样的做法只是数据大了点 但是问题就出在数据大了点上 其实严格来说也不大 1e6 数组加起来大 ...