HibernateTools实现pojo类 数据库schma mapping映射的相互转换
核心
利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项。
概述
在使用Hibernate开发系统持久层时,按照一般开发流程
1、分析业务
2、获得系统实体类
3、写Hibernate的mapping映射文件
4、根据映射文件,生成数据库表
以上这几步是Hibernate开发的起始。根据开发习惯的不同,有些项目组可能会先写POJO类,有的项目可能会先设计数据库,有的项目组可能先写映射文件,其实完成其中的一项时,类结构或者表结构就可以确定了。
既然已经能确定结构了,完全可以使用工具来代替手工完成剩余的工作。
前提
安装Eclipse插件HibernateTools,eclipse插件安装百度下教程非常多,建议采用copy安装或者link安装,再有就是HibernateTools的版本对应着特定的Eclipse版本,所以安装前请先检查自己的eclipse版本。
然后建立项目,本文建立的是Dynamic Web Project,采用了mysql数据库,建立项目后,引入mysql的驱动jar,引入Hibernate(本文用了4.3.5版本)的包,即lib下required文件夹中所有jar
安装完了插件,首先利用tool生成Hibernate配置文件,项目右键-->new,安装完HibernateTools后,多了4种类型的文件,选择第一种:
根据使用的数据库,填入必须的属性:
生成hibernate.cfg.xml的代码:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?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>
- <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.password">123456</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="hibernate.search.autoregister_listeners">false</property>
- </session-factory>
- </hibernate-configuration></span>
相互转换
接下可以进入正题了,本文分别从三项中的每一项入手,生成其他两项。
思路一:由POJO类生成mapping映射文件和DDL
POJO类的代码写起来非常方便,因此首先介绍这种方法,个人认为这种方法效率最高。首先建立两个POJO类
- package org.hibernate.test;
- public class Student implements java.io.Serializable {
- private int id;
- private String name;
- public Student() {
- }
- public Student(int id) {
- this.id = id;
- }
- public Student(int id, String name) {
- this.id = id;
- this.name = name;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- package org.hibernate.test;
- import java.util.ArrayList;
- import java.util.List;
- public class Class implements java.io.Serializable {
- private int id;
- private String name;
- private List students = new ArrayList(0);
- public Class() {
- }
- public Class(int id) {
- this.id = id;
- }
- public Class(int id, String name, List students) {
- this.id = id;
- this.name = name;
- this.students = students;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List getStudents() {
- return this.students;
- }
- public void setStudents(List students) {
- this.students = students;
- }
- }
接下来一步一步生成另外两项,首先项目右键-->new,选择Hibernate下面的第四项,建立mapping映射文件,根据已存在的POJO类,生成Mapping文件
添加两个已经存在的POJO类
下一步,可以预先查看生成的hbm.xml文件,有特殊要求的可以再生成的文件基础上稍作修改。
生成代码:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Student" table="STUDENT">
- <id name="id" type="int">
- <column name="ID" />
- <generator class="assigned"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- </class>
- </hibernate-mapping></span>
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Class" table="CLASS">
- <id name="id" type="int">
- <column name="ID" />
- <generator class="assigned"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- <list name="students" inverse="false" table="STUDENT" lazy="true">
- <key>
- <column name="ID" />
- </key>
- <list-index>
- <column name="idx" />
- </list-index>
- <one-to-many class="org.hibernate.test.Student" />
- </list>
- </class>
- </hibernate-mapping></span>
mapping映射文件生成了,接下来生成ddl,项目右键-->new,选择Hibernate Console Configuration
选择好对应的项后,finish,然后需要在工具栏添加Hibernate code Generation,Windows-->Customer Perspective
然后工具栏多了一个很像运行按钮的图标,单击下拉按钮,选第二项
单击Exporters选项卡,可以看到HibernateTools工具能导出和生成的项很多,可以根据配置有针对性的选择自己想要的项,这里我们勾选Schema Export,然后单击图标1下面的Properties的Add,后出现图标2所示的窗体
选择第二项,这就是要生成我们想要的ddl,如图,当然上图还勾选了DAO Code,生成了操作试题的DAO代码(HibernateTools确实很贴心)
这是生成后的图片
ddl的建表语句:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">create table CLASS (ID integer not null, NAME varchar(255), primary key (ID));
- create table STUDENT (ID integer not null, NAME varchar(255), idx integer, primary key (ID));
- alter table STUDENT add index FKBACA0E1BE081A5FD (ID), add constraint FKBACA0E1BE081A5FD foreign key (ID) references CLASS (ID);
- </span>
DAO代码如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">package org.hibernate.test;
- // Generated 2014-5-30 23:18:05 by Hibernate Tools 4.0.0
- import java.util.List;
- import javax.naming.InitialContext;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.hibernate.LockMode;
- import org.hibernate.SessionFactory;
- import org.hibernate.criterion.Example;
- /**
- * Home object for domain model class Class.
- * @see org.hibernate.test.Class
- * @author Hibernate Tools
- */
- public class ClassHome {
- private static final Log log = LogFactory.getLog(ClassHome.class);
- private final SessionFactory sessionFactory = getSessionFactory();
- protected SessionFactory getSessionFactory() {
- try {
- return (SessionFactory) new InitialContext()
- .lookup("SessionFactory");
- } catch (Exception e) {
- log.error("Could not locate SessionFactory in JNDI", e);
- throw new IllegalStateException(
- "Could not locate SessionFactory in JNDI");
- }
- }
- public void persist(Class transientInstance) {
- log.debug("persisting Class instance");
- try {
- sessionFactory.getCurrentSession().persist(transientInstance);
- log.debug("persist successful");
- } catch (RuntimeException re) {
- log.error("persist failed", re);
- throw re;
- }
- }
- public void attachDirty(Class instance) {
- log.debug("attaching dirty Class instance");
- try {
- sessionFactory.getCurrentSession().saveOrUpdate(instance);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
- public void attachClean(Class instance) {
- log.debug("attaching clean Class instance");
- try {
- sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
- public void delete(Class persistentInstance) {
- log.debug("deleting Class instance");
- try {
- sessionFactory.getCurrentSession().delete(persistentInstance);
- log.debug("delete successful");
- } catch (RuntimeException re) {
- log.error("delete failed", re);
- throw re;
- }
- }
- public Class merge(Class detachedInstance) {
- log.debug("merging Class instance");
- try {
- Class result = (Class) sessionFactory.getCurrentSession().merge(
- detachedInstance);
- log.debug("merge successful");
- return result;
- } catch (RuntimeException re) {
- log.error("merge failed", re);
- throw re;
- }
- }
- public Class findById(int id) {
- log.debug("getting Class instance with id: " + id);
- try {
- Class instance = (Class) sessionFactory.getCurrentSession().get(
- "org.hibernate.test.Class", id);
- if (instance == null) {
- log.debug("get successful, no instance found");
- } else {
- log.debug("get successful, instance found");
- }
- return instance;
- } catch (RuntimeException re) {
- log.error("get failed", re);
- throw re;
- }
- }
- public List findByExample(Class instance) {
- log.debug("finding Class instance by example");
- try {
- List results = sessionFactory.getCurrentSession()
- .createCriteria("org.hibernate.test.Class")
- .add(Example.create(instance)).list();
- log.debug("find by example successful, result size: "
- + results.size());
- return results;
- } catch (RuntimeException re) {
- log.error("find by example failed", re);
- throw re;
- }
- }
- }</span>
到此,我们就由POJO类,生成了hbm.xml文件和DDL
思路二:由hbm.xml生成POJO类和DDL
...
思路三:由数据库表(或DDL)生成POJO类和hbm.xml
...
思路二三请见下一博客!
核心
利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项。
概述
在使用Hibernate开发系统持久层时,按照一般开发流程
1、分析业务
2、获得系统实体类
3、写Hibernate的mapping映射文件
4、根据映射文件,生成数据库表
以上这几步是Hibernate开发的起始。根据开发习惯的不同,有些项目组可能会先写POJO类,有的项目可能会先设计数据库,有的项目组可能先写映射文件,其实完成其中的一项时,类结构或者表结构就可以确定了。
既然已经能确定结构了,完全可以使用工具来代替手工完成剩余的工作。
前提
安装Eclipse插件HibernateTools,eclipse插件安装百度下教程非常多,建议采用copy安装或者link安装,再有就是HibernateTools的版本对应着特定的Eclipse版本,所以安装前请先检查自己的eclipse版本。
然后建立项目,本文建立的是Dynamic Web Project,采用了mysql数据库,建立项目后,引入mysql的驱动jar,引入Hibernate(本文用了4.3.5版本)的包,即lib下required文件夹中所有jar
安装完了插件,首先利用tool生成Hibernate配置文件,项目右键-->new,安装完HibernateTools后,多了4种类型的文件,选择第一种:
根据使用的数据库,填入必须的属性:
生成hibernate.cfg.xml的代码:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?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>
- <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.password">123456</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="hibernate.search.autoregister_listeners">false</property>
- </session-factory>
- </hibernate-configuration></span>
相互转换
接下可以进入正题了,本文分别从三项中的每一项入手,生成其他两项。
思路一:由POJO类生成mapping映射文件和DDL
POJO类的代码写起来非常方便,因此首先介绍这种方法,个人认为这种方法效率最高。首先建立两个POJO类
- package org.hibernate.test;
- public class Student implements java.io.Serializable {
- private int id;
- private String name;
- public Student() {
- }
- public Student(int id) {
- this.id = id;
- }
- public Student(int id, String name) {
- this.id = id;
- this.name = name;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- package org.hibernate.test;
- import java.util.ArrayList;
- import java.util.List;
- public class Class implements java.io.Serializable {
- private int id;
- private String name;
- private List students = new ArrayList(0);
- public Class() {
- }
- public Class(int id) {
- this.id = id;
- }
- public Class(int id, String name, List students) {
- this.id = id;
- this.name = name;
- this.students = students;
- }
- public int getId() {
- return this.id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List getStudents() {
- return this.students;
- }
- public void setStudents(List students) {
- this.students = students;
- }
- }
接下来一步一步生成另外两项,首先项目右键-->new,选择Hibernate下面的第四项,建立mapping映射文件,根据已存在的POJO类,生成Mapping文件
添加两个已经存在的POJO类
下一步,可以预先查看生成的hbm.xml文件,有特殊要求的可以再生成的文件基础上稍作修改。
生成代码:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Student" table="STUDENT">
- <id name="id" type="int">
- <column name="ID" />
- <generator class="assigned"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- </class>
- </hibernate-mapping></span>
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
- <hibernate-mapping>
- <class name="org.hibernate.test.Class" table="CLASS">
- <id name="id" type="int">
- <column name="ID" />
- <generator class="assigned"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- <list name="students" inverse="false" table="STUDENT" lazy="true">
- <key>
- <column name="ID" />
- </key>
- <list-index>
- <column name="idx" />
- </list-index>
- <one-to-many class="org.hibernate.test.Student" />
- </list>
- </class>
- </hibernate-mapping></span>
mapping映射文件生成了,接下来生成ddl,项目右键-->new,选择Hibernate Console Configuration
选择好对应的项后,finish,然后需要在工具栏添加Hibernate code Generation,Windows-->Customer Perspective
然后工具栏多了一个很像运行按钮的图标,单击下拉按钮,选第二项
单击Exporters选项卡,可以看到HibernateTools工具能导出和生成的项很多,可以根据配置有针对性的选择自己想要的项,这里我们勾选Schema Export,然后单击图标1下面的Properties的Add,后出现图标2所示的窗体
选择第二项,这就是要生成我们想要的ddl,如图,当然上图还勾选了DAO Code,生成了操作试题的DAO代码(HibernateTools确实很贴心)
这是生成后的图片
ddl的建表语句:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">create table CLASS (ID integer not null, NAME varchar(255), primary key (ID));
- create table STUDENT (ID integer not null, NAME varchar(255), idx integer, primary key (ID));
- alter table STUDENT add index FKBACA0E1BE081A5FD (ID), add constraint FKBACA0E1BE081A5FD foreign key (ID) references CLASS (ID);
- </span>
DAO代码如下:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">package org.hibernate.test;
- // Generated 2014-5-30 23:18:05 by Hibernate Tools 4.0.0
- import java.util.List;
- import javax.naming.InitialContext;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.hibernate.LockMode;
- import org.hibernate.SessionFactory;
- import org.hibernate.criterion.Example;
- /**
- * Home object for domain model class Class.
- * @see org.hibernate.test.Class
- * @author Hibernate Tools
- */
- public class ClassHome {
- private static final Log log = LogFactory.getLog(ClassHome.class);
- private final SessionFactory sessionFactory = getSessionFactory();
- protected SessionFactory getSessionFactory() {
- try {
- return (SessionFactory) new InitialContext()
- .lookup("SessionFactory");
- } catch (Exception e) {
- log.error("Could not locate SessionFactory in JNDI", e);
- throw new IllegalStateException(
- "Could not locate SessionFactory in JNDI");
- }
- }
- public void persist(Class transientInstance) {
- log.debug("persisting Class instance");
- try {
- sessionFactory.getCurrentSession().persist(transientInstance);
- log.debug("persist successful");
- } catch (RuntimeException re) {
- log.error("persist failed", re);
- throw re;
- }
- }
- public void attachDirty(Class instance) {
- log.debug("attaching dirty Class instance");
- try {
- sessionFactory.getCurrentSession().saveOrUpdate(instance);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
- public void attachClean(Class instance) {
- log.debug("attaching clean Class instance");
- try {
- sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
- log.debug("attach successful");
- } catch (RuntimeException re) {
- log.error("attach failed", re);
- throw re;
- }
- }
- public void delete(Class persistentInstance) {
- log.debug("deleting Class instance");
- try {
- sessionFactory.getCurrentSession().delete(persistentInstance);
- log.debug("delete successful");
- } catch (RuntimeException re) {
- log.error("delete failed", re);
- throw re;
- }
- }
- public Class merge(Class detachedInstance) {
- log.debug("merging Class instance");
- try {
- Class result = (Class) sessionFactory.getCurrentSession().merge(
- detachedInstance);
- log.debug("merge successful");
- return result;
- } catch (RuntimeException re) {
- log.error("merge failed", re);
- throw re;
- }
- }
- public Class findById(int id) {
- log.debug("getting Class instance with id: " + id);
- try {
- Class instance = (Class) sessionFactory.getCurrentSession().get(
- "org.hibernate.test.Class", id);
- if (instance == null) {
- log.debug("get successful, no instance found");
- } else {
- log.debug("get successful, instance found");
- }
- return instance;
- } catch (RuntimeException re) {
- log.error("get failed", re);
- throw re;
- }
- }
- public List findByExample(Class instance) {
- log.debug("finding Class instance by example");
- try {
- List results = sessionFactory.getCurrentSession()
- .createCriteria("org.hibernate.test.Class")
- .add(Example.create(instance)).list();
- log.debug("find by example successful, result size: "
- + results.size());
- return results;
- } catch (RuntimeException re) {
- log.error("find by example failed", re);
- throw re;
- }
- }
- }</span>
到此,我们就由POJO类,生成了hbm.xml文件和DDL
思路二:由hbm.xml生成POJO类和DDL
...
思路三:由数据库表(或DDL)生成POJO类和hbm.xml
...
思路二三请见下一博客!
HibernateTools实现pojo类 数据库schma mapping映射的相互转换的更多相关文章
- HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二
接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...
- Hibernate类中集合的映射
1 pojo类集合属性的映射 在pojo类中定义集合属性. 1.1 List集合属性的映射 package org.guangsoft.pojo; import java.util.List; pu ...
- 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...
- Hibernate - POJO 类和数据库的映射文件*.hbm.xml
POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对 ...
- 通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件
通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件 文章目录 Ja ...
- java web(七): mybatis的动态sql和mybatis generator自动生成pojo类和映射文件
前言: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据 不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还 ...
- Mybatis自动生成实体类、dao接口和mapping映射文件
由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...
- Json映射为Map,避免定义过多pojo类
我们在开发过程中经常会遇到解析Json字符串的情况,这时候采用开源工具可以快速将json字符串映射为pojo对象.而在某些业务场景中,往往为了获得json字符串中某个属性的值而不得不定义一个pojo类 ...
- pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等
pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...
随机推荐
- Javacript中(function(){})() 与 (function(){}()) 区别 {转}
这个问题可以从不同的角度来看,但从结果上来说 :他们是一样的.首先,如果从AST(抽象语法树)的角度来看,两者的AST是一模一样的,最终结果都是一次函数调用.因此,就解析器产生的结果论而言,两者是没有 ...
- Unity Texture 2D Compress
测试了一下 unity 图片 对 apk 的影响. 上两种测试环境 1024 * 1024 带 alpha的话 默认压缩就是RBA 16bit就是2M 不带的话就是 etc 的话 ...
- zend studio 快捷键收集
Ctrl + / 单行注释 Ctrl + Shift + / 添加块注释 Ctrl + Shift + \ 移除块注释 Ctrl + Shift + F 调整代码格式 Ctr ...
- 后缀树系列一:概念以及实现原理( the Ukkonen algorithm)
首先说明一下后缀树系列一共会有三篇文章,本文先介绍基本概念以及如何线性时间内构件后缀树,第二篇文章会详细介绍怎么实现后缀树(包含实现代码),第三篇会着重谈一谈后缀树的应用. 本文分为三个部分, 首先介 ...
- POJ 2674
Linear world Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 2448 Accepted: 564 Descr ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)
127 - "Accordian" Patience 题目大意:一个人一张张发牌,如果这张牌与这张牌前面的一张或者前面的第三张(后面称之为一位置和三位置)的点数或花式相同,则将这张 ...
- To Use Ubuntuubunt
1.rename PC; modify the /etc/hostname. 2.Use root account; 1.set the password for root account: sudo ...
- hdu 4352 XHXJ's LIS 数位DP
数位DP!dp[i][j][k]:第i位数,状态为j,长度为k 代码如下: #include<iostream> #include<stdio.h> #include<a ...
- 机器学习之逻辑回归(Logistic Regression)
1. Classification 这篇文章我们来讨论分类问题(classification problems),也就是说你想预测的变量 y 是一个离散的值.我们会使用逻辑回归算法来解决分类问题. 之 ...
- VS2012如何更新下载TFS上面的代码到本地
现在的代码基本上全都放在TFS上面,如何同步TFS上面的code呢? 1. Open "Team Explorer - Home" 2. Click "Source Co ...