jpa 查询 列表_终极JPA查询和技巧列表–第2部分

jpa 查询 列表

这一部分是该系列文章的第一部分 。

JPA:NamedQuery,使用日期查询,有关getSingleResult方法的警告

为了避免重复查询代码,提高性能并简化维护查询,我们可以使用NamedQueries。 NamedQuery使用JPQL作为语法,并在实体类中声明。 类代码更新后,更容易编辑查询。

如果要使用日期作为参数进行查询,则只能发送日期对象,也可以传递描述日期类型的枚举(推荐)。

在下面,您将看到如何创建和使用@NamedQuery以及如何使用日期查询:

package com.model;import java.util.Date;import javax.persistence.*;@Entity
@NamedQuery(name='Dog.FindByDateOfBirth', query='select d from Dog d where d.dateOfBirth = :dateOfBirth')
public class Dog {public static final String FIND_BY_DATE_OF_BIRTH = 'Dog.FindByDateOfBirth';@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;// get and set
}
package com.model;import java.util.*;import javax.persistence.*;@Entity
@NamedQueries({@NamedQuery(name='Person.findByName', query='select p from Person p where p.name = :name'),@NamedQuery(name='Person.findByAge', query='select p from Person p where p.age = :age')})
})
public class Person {public static final String FIND_BY_NAME = 'Person.findByName';public static final String FIND_BY_AGE = 'Person.findByAge';@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;// get and set}
package com.main;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TemporalType;import com.model.Dog;
import com.model.Person;public class Page07 {public static void main(String[] args) {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();int age = 70;List<Person> personByAge = getPersonByAge(em, 70);System.out.println('Found ' + personByAge.size() + ' person(s) with the age of: ' + age);SimpleDateFormat formatter = new SimpleDateFormat('dd/MM/yyyy');Date dateOfBirth = null;try {dateOfBirth = formatter.parse('10/1/1995');} catch (ParseException e) {e.printStackTrace();}List<Dog> dogsByDayOfBirth = getDogsByDayOfBirth(em, dateOfBirth);System.out.println('Found ' + dogsByDayOfBirth.size() + ' dog with birth date of ' + formatter.format(dateOfBirth));/** This queries will raise Runtime Exceptions** em.createQuery('select p from Person p').getSingleResult(); // NonUniqueResultException** em.createQuery('select p from Person p where p.name = 'JJJJ'').getSingleResult(); //NoResultException*/CodeGenerator.closeConnection();}@SuppressWarnings('unchecked')private static List<Dog> getDogsByDayOfBirth(EntityManager em, Date dateOfBirth) {Query query = em.createNamedQuery(Dog.FIND_BY_DATE_OF_BIRTH);query.setParameter('dateOfBirth', dateOfBirth, TemporalType.DATE);return query.getResultList();}@SuppressWarnings('unchecked')private static List<Person> getPersonByAge(EntityManager em, int age) {Query query = em.createNamedQuery(Person.FIND_BY_AGE);query.setParameter('age', age);return query.getResultList();}
}

关于上面的代码:

  • 如果只有一个查询,则可以使用@NamedQuery注释; 如果您有多个查询,则可以使用@NamedQueries批注。
  • 使用日期对象进行查询时,还可以使用TemporalType枚举来详细说明日期的类型。 对于日期查询,可以使用“ java.util.Date ”或“ java.util.GregorianCalendar ”。

getSingleResult()

使用此方法时要小心。 它有一种特殊的方式来处理容易发生的两种行为,并且两种行为都会引发异常:

  • 从查询结果中查找多个对象: NonUniqueResultException
  • 找不到结果: NoResultException

您始终需要使用try / catch以避免在生产环境中引发这些异常。

如果您想实时查看此异常,则在上面的代码中可以找到两个带注释的查询。 它将引发以下异常:

Exception in thread 'main' <span style='text-decoration: underline;'>javax.persistence.NonUniqueResultException</span>: result returns more than one elements
at org.hibernate.ejb.QueryImpl.getSingleResult(<span style='text-decoration: underline;'>QueryImpl.java:287</span>)
Exception in thread 'main' <span style='text-decoration: underline;'>javax.persistence.NoResultException</span>: No entity found for query
at org.hibernate.ejb.QueryImpl.getSingleResult(<span style='text-decoration: underline;'>QueryImpl.java:280</span>)

JPA:NativeQuery,名为NativeQuery

JPA使用的JPQL没有任何特定于数据库的功能。 当JPQL仅提供数据库之间的公用功能时,如何进行查询以调用特定的数据库功能?

从人员p中选择p,其中p.name〜*:name ”该查询语法是对Postgres数据库的有效查询; 如果尝试使用NamedQuery(使用JPQL)运行此查询,则会看到以下异常:

<strong><em>ERROR SessionFactoryImpl:422 - Error in named query: Person.FindByName</em></strong>
<strong><em>org.hibernate.QueryException: unexpected char: '~' [select p from com.model.Person p where p.name ~* :name]</em></strong>
<strong><em>at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:229)</em></strong>
<strong><em>at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)</em></strong>
<strong><em>at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)</em></strong>
<strong><em>at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)</em></strong>
<strong><em>at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)</em></strong>
<strong><em>at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:547)</em></strong>
<strong><em>at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:411)</em></strong>
<strong><em>at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)</em></strong>
<strong><em>at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)</em></strong>
<strong><em>at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)</em></strong>
<strong><em>at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)</em></strong>
<strong><em>at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)</em></strong>
<strong><em>at com.main.CodeGenerator.startConnection(CodeGenerator.java:27)</em></strong>
<strong><em>at com.main.Page05.main(Page05.java:12)</em></strong>
<strong><em>Exception in thread “main” javax.persistence.PersistenceException: [PersistenceUnit: JpaQuery] Unable to build EntityManagerFactory</em></strong>
<strong><em>at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:911)</em></strong>
<strong><em>at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)</em></strong>
<strong><em>at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)</em></strong>
<strong><em>at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)</em></strong>
<strong><em>at com.main.CodeGenerator.startConnection(CodeGenerator.java:27)</em></strong>
<strong><em>at com.main.Page05.main(Page05.java:12)</em></strong>
<strong><em>Caused by: org.hibernate.HibernateException: Errors in named queries: Person.FindByName</em></strong>
<strong><em>at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:424)</em></strong>
<strong><em>at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)</em></strong><strong><em> </em></strong>
<strong><em>at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)</em></strong>
<strong><em> ... 5 more</em></strong>

解决这种情况的方法是使用不使用JPQL作为其语法的查询。 使用NativeQuery,您将能够使用数据库语法进行查询。

您可以在下面的代码中看到如何使用NativeQueries:

package com.main;import javax.persistence.EntityManager;
import javax.persistence.Query;import com.model.Dog;public class Page08 {public static void main(String[] args) {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();String nameOfFirstPerson = getFirstPersonName(em);System.out.println(nameOfFirstPerson);Dog dog = getTopDogDescending(em);System.out.println(dog.getName());CodeGenerator.closeConnection();}/*** Returns the name of the first person using a native sql*/private static String getFirstPersonName(EntityManager em) {Query query = em.createNativeQuery('select top 1 name from person');return (String) query.getSingleResult();}/*** Return an object using a native sql*/private static Dog getTopDogDescending(EntityManager em) {Query query = em.createNativeQuery('select top 1 id, name, weight from dog order by id desc', Dog.class);return (Dog) query.getSingleResult();}
}

关于上面的代码:

  • 注意,我们使用本机查询代替JPQL。 我们可以有一个实体作为本地查询的结果。 方法“ getTopDogDescending ”在本机查询调用之后返回Dog对象。

您还可以将本地查询创建为@NamedNativeQuery。 NamedNativeQuery和NativeQuery之间的区别在于NamedNativeQuery是在其实体类上定义的,并且您只能使用该名称类。

使用@NamedNativeQuery的优点是:

  • 易于维护的代码:每个查询都在该类上,如果一个类更新属性,则更新查询将变得更加容易。
  • 帮助提高性能:一旦声明了查询,JPA将对其进行映射并将其语法保留在内存中。 JPA不需要在项目每次使用时都“解析”您的查询。
  • 提升代码重用性:声明@NamedNativeQuery后,必须为“ name”参数提供一个值,并且该名称对于Persistence Unit范围必须是唯一的(您在“ persistence.xml”中设置此值,并由EntityManager)。

您将在下面看到如何声明@NamedNativeQuery:

package com.model;import java.util.*;import javax.persistence.*;@Entity
@NamedQueries({@NamedQuery(name='Person.findByName', query='select p from Person p where p.name = :name'),@NamedQuery(name='Person.findByAge', query='select p from Person p where p.age = :age')
})@NamedNativeQuery(name='Person.findByNameNative', query='select id, name, age from person where name = :name')
public class Person {public static final String FIND_BY_NAME = 'Person.findByName';public static final String FIND_BY_AGE = 'Person.findByAge';@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;// get and set
}

您将可以使用@NamedNativeQuery,就像@NativeQuery一样: em.createNamedQuery(“ Person.findByNameNative”); ”。

这里有一些坏消息。 不幸的是,Hibernate尚未实现@NamedNativeQuery。 如果您尝试使用此批注运行代码,则会看到以下异常:

<em>Caused by: <span style='text-decoration: underline;'>org.hibernate.cfg.NotYetImplementedException</span>: Pure native scalar queries are not yet supported</em>
<em>at org.hibernate.cfg.annotations.QueryBinder.bindNativeQuery(<span style='text-decoration: underline;'>QueryBinder.java:140</span>)</em>
<em>at org.hibernate.cfg.AnnotationBinder.bindQueries(<span style='text-decoration: underline;'>AnnotationBinder.java:339</span>)</em>
<em>at org.hibernate.cfg.AnnotationBinder.bindClass(<span style='text-decoration: underline;'>AnnotationBinder.java:548</span>)</em>
<em>at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(<span style='text-decoration: underline;'>Configuration.java:3977</span>)</em>
<em>at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(<span style='text-decoration: underline;'>Configuration.java:3931</span>)</em>
<em>at org.hibernate.cfg.Configuration.secondPassCompile(<span style='text-decoration: underline;'>Configuration.java:1368</span>)</em>
<em>at org.hibernate.cfg.Configuration.buildMappings(<span style='text-decoration: underline;'>Configuration.java:1345</span>)</em>
<em>at org.hibernate.ejb.Ejb3Configuration.buildMappings(<span style='text-decoration: underline;'>Ejb3Configuration.java:1477</span>)</em>
<em>at org.hibernate.ejb.EventListenerConfigurator.configure(<span style='text-decoration: underline;'>EventListenerConfigurator.java:193</span>)</em>
<em>at org.hibernate.ejb.Ejb3Configuration.configure(<span style='text-decoration: underline;'>Ejb3Configuration.java:1096</span>)</em>
<em>at org.hibernate.ejb.Ejb3Configuration.configure(<span style='text-decoration: underline;'>Ejb3Configuration.java:278</span>)</em>
<em>at org.hibernate.ejb.Ejb3Configuration.configure(<span style='text-decoration: underline;'>Ejb3Configuration.java:362</span>)</em>

JPA:复杂的本地查询

您将能够创建映射到NativeQuery的复合体。 此映射将返回多个类或值。

您可以在下面看到我们的类如何映射此复杂结果以及如何使用它执行查询:

package com.model;import java.util.*;import javax.persistence.*;@Entity
@NamedQueries({@NamedQuery(name='Person.findByName', query='select p from Person p where p.name = :name'),@NamedQuery(name='Person.findByAge', query='select p from Person p where p.age = :age')})
})
@SqlResultSetMappings({@SqlResultSetMapping(name='personAndAdress',entities={@EntityResult(entityClass=Person.class),@EntityResult(entityClass=Address.class,fields={@FieldResult(name='id', column='ADDRESS_ID')})}),@SqlResultSetMapping(name='personWithDogAmount',entities={@EntityResult(entityClass=Person.class)},columns={@ColumnResult(name='dogAmount')})
})
public class Person {public static final String FIND_BY_NAME = 'Person.findByName';public static final String FIND_BY_AGE = 'Person.findByAge';public static final String MAPPING_PERSON_AND_ADDRESS = 'personAndAdress';public static final String MAPPING_DOG_AMOUNT = 'personWithDogAmount';@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;// get and set
}
package com.main;import java.math.BigInteger;import javax.persistence.EntityManager;
import javax.persistence.Query;import com.model.Address;
import com.model.Person;public class Page09 {public static void main(String[] args) {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();Query query = em.createNativeQuery('select id, name, age, a.id as ADDRESS_ID, houseNumber, streetName ' +'from person p join address a on a.id = p.address_id where p.id = 1',Person.MAPPING_PERSON_AND_ADDRESS);Object[] result = (Object[]) query.getSingleResult();Person personWithAdress = (Person) result[0];Address address = (Address) result[1];System.out.println(personWithAdress.getName() + ' lives at ' + address.getStreetName());query = em.createNativeQuery('select p.id, p.name, count(0) as dogAmount ' +'from person p join dog d on p.id = d.person_id where name = 'Mark' ' +'group by p.id, p.name',Person.MAPPING_DOG_AMOUNT);result = (Object[]) query.getSingleResult();Person person = (Person) result[0];BigInteger total = (BigInteger) result[1];System.out.println(person.getName() + ' has ' + total + ' dogs');CodeGenerator.closeConnection();}
}

关于上面的代码:

  • 使用“ @SqlResultSetMapping ”,您将通知JPA我们想要哪个实体作为结果。 注意,在映射“ personAndAdress ”中,我们编写了将返回的类。 我们还使用了一个名为“ @FieldResult ”的属性。 此属性将映射具有相同名称的查询字段,在我们的查询中,我们获得了人员ID和地址ID。 这就是为什么我们使用“ @FieldResult ”来通知JPA将列ADDRESS_ID映射到Address类的ID属性的原因。
  • 在“ dogAmount ”映射中,我们设置“ @ColumnResult”属性,该属性通知JPA我们将在查询结果中包含一个“ 额外的列 ”,并且此“ 额外的列 ”不属于任何类。

JPA:使用EJB优化查询

每次在事务范围内执行查询时,持久性上下文将使结果保持“ 附加 ”状态。 持久性上下文将“ 监视 ”该对象,以防万一该“ 附加 ”对象中的任何对象收到任何更新。 所有“ 附加的 ”对象更新都将保留在数据库中。

@PersistenceContext(unitName = 'myPU')
private EntityManager em;@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void editPersonName(Integer personId, String personNewName){Person person = em.find(Person.class, personId);person.setName(personNewName);
}

您可以在上面的代码中看到我们不需要调用“ em.merge() ”来更新数据库中的人名。

当我们从数据库中带出一个集合(通常要显示在数据表或报表上)时,所有这些对象都将附加到持久性上下文中。 制作此对象的过程将触发多个过程,数据验证和同步。 当对象数越高时,分配给查询结果的内存就越高,而使所有这些对象保持“ 连接 ”状态的持久性上下文的工作就越高。

将所有这些对象的最终目的地发送到视图时,将所有这些对象“附加”起来有什么意义? 当对象离开EJB项目并转到视图项目时,它们将被视为“分离的”。 在这种情况下,我们无需进行不必要的工作即可从数据库中获取所有数据,进行make(而不是“附加”)并将其发送到视图以使其“分离”。

有一种简单的方法可以使这些对象来自已经分离的数据库。 这种方法的优势在于,持久性上下文将永远不会浪费时间,并且容器处理器会尝试同步查询结果。

您可以在下面的代码中看到此解决方案的工作方式。

package com.main;import java.util.List;import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;import com.model.Person;@Stateless
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class PersonDAO {@PersistenceContext(unitName = 'myPU')private EntityManager em;@TransactionAttribute(TransactionAttributeType.REQUIRED)public void editPersonName(Integer personId, String personNewName){Person person = em.find(Person.class, personId);person.setName(personNewName);}@SuppressWarnings('unchecked')public List<Person> listAll(){Query query = em.createQuery('select p from Person p');return query.getResultList();}@SuppressWarnings('unchecked')public List<Person> listAllWithoutDogs(){Query query = em.createQuery('select p from Person p where p.dogs is empty');return query.getResultList();}
}

在上面的代码中,我们获得了一个DAO类,即EJB。 默认情况下,我们的EJB缺少事务(“ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) ”),使用这种事务,持久性上下文将不会“ 附加 ”查询结果。 查询返回的对象将被视为“ 分离 ”。

请注意,方法“ editPersonName ”的注释相同:“ @TransactionAttribute(TransactionAttributeType.REQUIRED) ”。 这种事务向EJB指示如果还没有启动任何新事务,则应该启动一个新事务。 您可以为该类设置事务属性,但是方法可以覆盖此属性,就像我们在“ editPersonName ”中所做的一样 。 方法事务定义将优先于类事务定义。

JPA:分页

如果要进行JPA分页,请像下面的方法一样:

package com.main;import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.Query;import com.model.Dog;public class Page11 {@SuppressWarnings('unchecked')public static void main(String[] args) {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();Query query = em.createQuery('select d from Dog d');List<Dog> dogs = query.getResultList();System.out.println('Total of dogs found: ' + dogs.size());query.setMaxResults(5);query.setFirstResult(0);List<Dog> fiveFirstDogs = query.getResultList();System.out.print('Total of dogs found: ' + fiveFirstDogs.size() + ' ');for (Dog dog : fiveFirstDogs) {System.out.print(dog.getName() + ' ');}System.out.println();query.setMaxResults(5);query.setFirstResult(5);List<Dog> fiveSecondDogs = query.getResultList();System.out.print('Total of dogs found: ' + fiveSecondDogs.size() + ' ');for (Dog dog : fiveSecondDogs) {System.out.print(dog.getName() + ' ');}CodeGenerator.closeConnection();}
}

关于上面的代码:

  • 方法“ setMaxResults ”将设置查询将返回的结果量。
  • 方法“ setFirstResult ”将设置将要带来的第一行。

在第一个查询中,我们搜索了数据库中的所有数据。

在第二个查询中,我们从位置0开始获得了五个结果。

在上一个查询中,我们再次获得了五个结果,但是从位置5开始。

请记住,第一个位置始终为零而不是一个。

JPA:数据库提示

数据库供应商向我们提供了名为“提示”的特定功能。 这些提示非常有用,因为它们可以优化查询并帮助我们完成其他任务。 每个数据库都有自己的提示,并且这些值不可移植。

在下面,您可以看到一些提示:

  • SQLServer:OPTION(OPTIMIZE FOR(@name ='Mark',@age UNKNOWN));
  • Oracle:选择/ * + first_rows(100)* /名称
  • MySQL:从人忽略索引中选择*(col3_index)

每个数据库供应商都将规则设置为其提示,诸如语法和执行命令之类的规则。

有两种定义提示的方法:

package com.main;import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.Query;import com.model.Dog;public class Page12 {@SuppressWarnings('unchecked')public static void main(String[] args) {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();Query query = em.createQuery('select d from Dog d');query.setHint('org.hibernate.timeout', 1000);List<Dog> dogs = query.getResultList();System.out.println('Found ' + dogs.size() + ' dogs');CodeGenerator.closeConnection();}
}
package com.model;import java.util.*;import javax.persistence.*;@Entity
@NamedQueries({@NamedQuery(name='Person.findByName', query='select p from Person p where p.name = :name'),@NamedQuery(name='Person.findByAge', query='select p from Person p where p.age = :age', hints={@QueryHint(name='org.hibernate.timeout', value='1000')})
})
@SqlResultSetMappings({@SqlResultSetMapping(name='personAndAdress',entities={@EntityResult(entityClass=Person.class),@EntityResult(entityClass=Address.class,fields={@FieldResult(name='id', column='ADDRESS_ID')})}),@SqlResultSetMapping(name='personWithDogAmount',entities={@EntityResult(entityClass=Person.class)},columns={@ColumnResult(name='dogAmount')})
})
public class Person {public static final String FIND_BY_NAME = 'Person.findByName';public static final String FIND_BY_AGE = 'Person.findByAge';public static final String MAPPING_PERSON_AND_ADDRESS = 'personAndAdress';public static final String MAPPING_DOG_AMOUNT = 'personWithDogAmount';@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;// get and set
}

您可以在@NamedQuery和直接在查询中设置提示。

您必须始终记住提示的缺点 。 在NamedQuery上设置提示后,您的代码将无法移植到其他数据库供应商。 一种解决方案是仅使用查询而不是NamedQuery。 在将提示添加到查询之前,您可以检查当前数据库是否支持该提示。 您可以使用属性文件来定义应用程序的当前数据库。

继续本系列的第三部分

参考: uaiHebert博客上来自JCG合作伙伴 Hebert Coelho的JPA查询和技巧 。


翻译自: https://www.javacodegeeks.com/2012/07/ultimate-jpa-queries-and-tips-list-part_09.html

jpa 查询 列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新

IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新 IE针对Ajax请求结果的缓存/ IE浏览器同一个请求第二次是缓存 一.在AJAX请求的属性上直接设置cache function getSetServer (selectIDs) {$.ajax({url:/kl_eas/v1/monitor/servers? new Date().toTimeString…

亿联本科java_厦门亿联2018面试题

一、选择器public class EqTest {public static void main(String[] args) {EqTest e new EqTest();}public EqTest() {String s "Java";String s2 "java";//if (s.equalsIgnoreCase(s2)){System.out.println("相等");} else {System.out.pri…

如何将云持久存储添加到JBoss Cool Store

我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 上个月&#xff0c;我们提供了一个完整的零售示例&#xff0c;其中的JBoss Cool Store运行在您的堆栈的OpenShift Enterprise层上&#xff0c;由…

吴莫烦

https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/2-1-NN/转载于:https://www.cnblogs.com/lhuser/p/8446525.html

mysql 表单属性_php表单常用属性有什么?

程序开发中&#xff0c;必不可少的会使用到form表单&#xff0c;以前只是在前端开发时简单使用&#xff0c;对它的属性不甚了解&#xff0c;最近在后端学习中&#xff0c;不断接触到它的属性,现记录一二。下面本篇文章给大家介绍php表单常用的5个属性。actionaction规定了提交表…

centos-安装python3.6环境并配置虚拟环境

python3.6下载地址&#xff1a;https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz linux下python环境配置 统一目录&#xff1a; 源码存放位置 $HOME/tools安装目录&#xff1a; /application安装python环境&#xff1a; 1. 下载 # 创建下载目录 mkdir $HOME/tools #…

java构造器详解_Java中关于构造器的使用详解

这篇文章主要介绍了Java构造器使用方法及注意事项的相关资料,这里举例说明如何使用构造器及需要注意的地方&#xff0c;需要的朋友可以参考下Java构造器使用方法及注意事项超类的构造器在子类的构造器运行之前运行&#xff0c;也就是说&#xff0c;在创建对象时&#xff0c;先运…

i219 2012驱动_2012年I / O之后

i219 2012驱动从注册到赠品&#xff0c;每年的I / O疯狂都在不断发展。 在今年20分钟内被出售&#xff0c;并没有阻止Google赠送更多的东西。 以这种速度并有望在明年发布Google Glass&#xff0c;明年注册很可能会变得更加混乱&#xff01; 因此&#xff0c;Google&#xff0c…

Mac 工程化工具

工程化工具 一、HomeBerw 安装 / 卸载 Mac系统的包管理器&#xff0c;用于安装NodeJS和一些其他必需的工具软件 1.安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 译注&#xff1a;在Max OS X 10.11&…

java的sql的like_[Java教程]SQL like 模糊查询, in

[Java教程]SQL like 模糊查询, in0 2018-09-14 11:00:38​[{"互联网":["网络媒体","微博","墨迹天气","河北天气","其他"]},{"气象部门":["灾害大典","灾情普查","灾情直报&q…

9.管好进程和服务

1.查看进程 1.进程分类进程一般分为交互进程、批处理进程和守护进程三类。上述三种进程各有各的作用&#xff0c;使用场合也有所不同。 交互进程&#xff1a;由一个 shell 启动的进程。交互进程既可以在前台运行&#xff0c;也可以在后台运行。 批处理进程&#xff1a;这种…

惠而浦:使用Netty和Kafka的微服务

介绍 在上一个博客中 &#xff0c;我介绍了Netty用作Web服务器。 该示例运行良好……只要需要广播服务器即可。 大多数情况下不是很有用。 更有可能的是&#xff0c;每个客户端仅接收针对其的数据&#xff0c;并保留了特殊情况下的广播&#xff0c;例如“服务器在15分钟内停机…

石化总部java面试题_中国石化面试经验

面试过程&#xff1a;首先&#xff0c;上午进行面试人员签到&#xff0c;大约100人左右。一共要2个人。下午1点半开始统一面试。人员较多&#xff0c;所以每个人只有3分钟时间&#xff0c;一共最少8位面试官。过程中&#xff0c;他们很少提问题&#xff0c;如果你的技术比较新颖…

ajax标准

$.ajax({url:"localhost:8889/server", //请求的url地址dataType:"json", //返回格式为jsonasync:true,//请求是否异步&#xff0c;默认为异步&#xff0c;这也是ajax重要特性data:{"id":"value"}, //参数值type:"GET&qu…

java 生成器 设计模式_Java中的生成器设计模式

java 生成器 设计模式Java 中的 Builder设计模式是一种创建模式&#xff0c;即用于创建对象&#xff0c;类似于 工厂方法设计模式 &#xff0c;这也是创建设计模式。 在学习任何设计模式之前&#xff0c;我建议先找出特定设计模式要解决的问题。 众所周知&#xff0c; 必要性是…

python倒排索引实现_倒排索引原理和实现 - uncle_LLD的个人空间 - OSCHINA - 中文开源技术交流社区...

关于倒排索引搜索引擎通常检索的场景是&#xff1a;给定几个关键词&#xff0c;找出包含关键词的文档。怎么快速找到包含某个关键词的文档就成为搜索的关键。这里我们借助单词——文档矩阵模型&#xff0c;通过这个模型我们可以很方便知道某篇文档包含哪些关键词&#xff0c;某…

Spring RESTful Web服务中的异常处理

1.简介 我们可能已经在Spring中遇到了几种处理RESTful Web服务应用程序中异常的方法。 在本文中&#xff0c;我们将尝试探索可以采取的最佳方法来实现有效的异常处理。 2.问题陈述 让我们创建一个简单的应用程序&#xff0c;该应用程序将在REST URI中标识员工姓名。 如果请求中…

java调python画图_Python Matplotlib plot 绘图

1、绘制x和y点plot()函数用于在图中绘制点(标记)。默认情况下&#xff0c;plot()函数在点到点之间画一条线。该函数具有用于在图中指定点的参数。参数1是一个数组&#xff0c;其中包含x轴上的点。参数2是一个包含y轴上的点的数组。如果需要绘制从(1&#xff0c;3)到(8&#xff…

区块链以信用为基础,所以目前在中国不可行.

还是先整一套规范的含金量高的信用体系再说吧.转载于:https://www.cnblogs.com/diggingdeeply/p/impossible_success_in_china_right_now_bcoz_of_lack_credit.html

java cunstructor_参加JavaScript面试,必须搞懂的问题(推荐)

一. JavaScript中的对象.JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property. 通常情况下, JavaScript中建立一个对象用"new"加上constructor function来实现. 如new Date(), new Object()等.var boo…