無需部署即可測試JPQL / HQL

您是否曾經想在不完全部署應用程序的情況下測試JPQL / HQL?
我們今天在這里看到的是適用于任何JPA實現的簡單解決方案:Hibernate,OpenJPA,EclipseLink等。

這篇文章中找到的基本源代碼來自于本書:“ Pro JPA 2:掌握Java?持久性API – Mike Keith,Merrick Schincariol ”。 這篇文章將添加到原始代碼中:查詢參數和NamedQuery測試。

模型類和數據生成

下面是模型類的代碼:

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")})
})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;private String name;private int age;public Person() {}public Person(int id) {this.id = id;}public Person(String name, int age) {this.name = name;this.age = age;}@OneToMany(mappedBy = "person", cascade = CascadeType.ALL)private List<Dog> dogs;@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name="address_id")private Address address;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public List<Dog> getDogs() {if (dogs == null) {dogs = new ArrayList<Dog>();}return dogs;}public void setDogs(List<Dog> dogs) {this.dogs = dogs;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic int hashCode() {return getId();}@Overridepublic boolean equals(Object obj) {if (obj instanceof Person) {Person person = (Person) obj;return person.getId() == getId();}return false;}@Overridepublic String toString() {return "Person name: " + name;}
}
package com.model;import java.util.Date;import javax.persistence.*;@Entity
@NamedQueries(value={@NamedQuery(name="Dog.FindByDateOfBirth", query="select d from Dog d where d.dateOfBirth = :dateOfBirth"),@NamedQuery(name="Dog.FindByPerson", query="select d from Dog d where d.person = :personObject")})
public class Dog {public static final String FIND_BY_DATE_OF_BIRTH = "Dog.FindByDateOfBirth";@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;private String name;private double weight;@Temporal(TemporalType.TIMESTAMP)private Date dateOfBirth;public Dog() {}public Dog(String name, double weight, Date dateOfBirth) {this.name = name;this.weight = weight;this.dateOfBirth = dateOfBirth;}public static void main(String[] args) {System.out.println(new Date());}@ManyToOneprivate Person person;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public Date getDateOfBirth() {return dateOfBirth;}public void setDateOfBirth(Date dateOfBirth) {this.dateOfBirth = dateOfBirth;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}@Overridepublic int hashCode() {return getId();}@Overridepublic boolean equals(Object obj) {if (obj instanceof Dog) {Dog dog = (Dog) obj;return dog.getId() == getId();}return false;}@Overridepublic String toString() {return "Dog name: " + name;}
}
package com.model;import javax.persistence.*;@Entity
@NamedQuery(name="Address.FindAll", query="select a from Address a")
public class Address {@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;private String streetName;private int houseNumber;public Address() {}public Address(String streetName, int houseNumber) {this.streetName = streetName;this.houseNumber = houseNumber;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getStreetName() {return streetName;}public void setStreetName(String streetName) {this.streetName = streetName;}public int getHouseNumber() {return houseNumber;}public void setHouseNumber(int houseNumber) {this.houseNumber = houseNumber;}@Overridepublic int hashCode() {return getId();}@Overridepublic boolean equals(Object obj) {if (obj instanceof Address) {Address address = (Address) obj;return address.getId() == getId();}return false;}@Overridepublic String toString() {return "Adress street name: " + streetName;}
}

在上面的代碼中,我們獲得了幾個JPA關系作為示例。

貝婁(Bellow)是將處理事務和將寫入HSQLDB數據庫的數據的類:

package com.main;import java.text.*;
import java.util.Date;import javax.persistence.*;import com.model.*;public class CodeGenerator {private static EntityManagerFactory emf;private static EntityManager em;public static final String PERSON01_NAME = "John";public static final String PERSON02_NAME = "Mary";public static final String PERSON03_NAME = "Anna";public static final String PERSON04_NAME = "Joseph";public static final String PERSON05_NAME = "Mark";public static final String PERSON06_NAME = "I will not have any relationship";public static void startConnection() {emf = Persistence.createEntityManagerFactory("QueryTester");em = emf.createEntityManager();em.getTransaction().begin();}public static void closeConnection() {em.getTransaction().commit();emf.close();}public static void generateData() {int year = 1995;int month = 1;int day = 10;Dog dog01 = new Dog("Yellow", 3.5d, createNewDate(day, month, year));Dog dog02 = new Dog("Brown", 8.5d, createNewDate(++day, ++month, ++year));Dog dog03 = new Dog("Dark", 15.5d, createNewDate(++day, ++month, ++year));Dog dog04 = new Dog("Kaka", 4.3d, createNewDate(++day, ++month, ++year));Dog dog05 = new Dog("Pepe", 8.2d, createNewDate(++day, ++month, ++year));Dog dog06 = new Dog("Casillas", 6.1d, createNewDate(++day, ++month, ++year));Dog dog07 = new Dog("Fish", 6.7d, createNewDate(++day, ++month, ++year));Dog dog08 = new Dog("Lion", 3.1d, createNewDate(++day, ++month, ++year));Dog dog09 = new Dog("Cat", 5.5d, createNewDate(++day, ++month, ++year));Dog dog10 = new Dog("Java", 21.7d, createNewDate(++day, ++month, ++year));Dog dog11 = new Dog("JSF", 23.65d, createNewDate(++day, ++month, ++year));Dog dog12 = new Dog("VRaptor", 24.0d, createNewDate(++day, ++month, ++year));Dog dog13 = new Dog("Ferrari", 3.7d, createNewDate(++day, ++month, ++year));Dog dog14 = new Dog("Porshe", 1.33d, createNewDate(++day, ++month, ++year));Dog dog15 = new Dog("Bike", 4.44d, createNewDate(++day, ++month, ++year));Dog dog16 = new Dog("Rambo", 5.44d, createNewDate(++day, ++month, 2015));Dog dog17 = new Dog("Terminator", 3.88d, createNewDate(++day, ++month, 2016));Dog dog18 = new Dog("John McClan", 3.88d, createNewDate(++day, ++month, 2016));Person person01 = new Person(PERSON01_NAME, 33);person01.getDogs().add(dog01);person01.getDogs().add(dog02);person01.getDogs().add(dog03);person01.setAddress(new Address("Street A", 30));dog01.setPerson(person01);dog02.setPerson(person01);dog03.setPerson(person01);Person person02 = new Person(PERSON02_NAME, 27);person02.getDogs().add(dog04);person02.getDogs().add(dog05);person02.getDogs().add(dog06);person02.setAddress(new Address("Street B", 60));dog04.setPerson(person02);dog05.setPerson(person02);dog06.setPerson(person02);Person person03 = new Person(PERSON03_NAME, 7);person03.getDogs().add(dog07);person03.getDogs().add(dog08);person03.getDogs().add(dog09);person03.setAddress(new Address("Street B", 90));dog07.setPerson(person03);dog08.setPerson(person03);dog09.setPerson(person03);Person person04 = new Person(PERSON04_NAME, 43);person04.getDogs().add(dog10);person04.getDogs().add(dog11);person04.getDogs().add(dog12);person04.setAddress(new Address("Street C", 120));dog10.setPerson(person04);dog11.setPerson(person04);dog12.setPerson(person04);Person person05 = new Person(PERSON05_NAME, 70);person05.getDogs().add(dog13);person05.getDogs().add(dog14);person05.getDogs().add(dog15);person05.getDogs().add(dog16);person05.setAddress(new Address("Street D", 150));dog13.setPerson(person05);dog14.setPerson(person05);dog15.setPerson(person05);dog16.setPerson(person05);Person person06 = new Person(PERSON06_NAME, 45);em.persist(person01);em.persist(person02);em.persist(person03);em.persist(person04);em.persist(person05);em.persist(person06);em.persist(dog17);em.persist(dog18);em.flush();}private static Date createNewDate(int day, int month, int year) {SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");try {return formatter.parse("" + day + "/" + month + "/" + year);} catch (ParseException e) {e.printStackTrace();return null;}}public static EntityManager getEntityManager() {return em;}
}

可以在以下代碼的“ src / META-INF”文件夾中找到“ persistence.xml”文件:

<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0"xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"><persistence-unit name="QueryTester"transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><properties><property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" /><property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:." /><property name="javax.persistence.jdbc.user" value="sa" /><property name="javax.persistence.jdbc.password" value="" /><property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" /><property name="hibernate.connection.shutdown" value="true" /><property name="hibernate.hbm2ddl.auto" value="update" /><property name="hibernate.show_sql" value="false" /><property name="hibernate.format_sql" value="false"/></properties></persistence-unit>
</persistence>

抽象測試班

package com.main;import javax.persistence.Query;import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;import com.model.Person;/*** @author Pro JPA 2 book* @Empowered by uaiHebert* */
public abstract class AbstractQueryTester {protected static void populateParameters(Query query, String parameters) {for (String parameter : parameters.split(";")) {String parameterKey = parameter.split("-")[0];String parameterValue = parameter.split("-")[1];String parameterType = parameter.split("-")[2];query.setParameter(parameterKey, configureParameterValue(parameterValue, parameterType));}}private static Object configureParameterValue(String parameterValue, String parameterType) {if (parameterType.equalsIgnoreCase("integer")) {try {return Integer.parseInt(parameterValue);} catch (Exception e) {throw new IllegalArgumentException("Invalid parameter value as number: " + parameterValue);}}if (parameterType.equalsIgnoreCase("string")) {return parameterValue;}if (parameterType.equalsIgnoreCase("person")) {int personId;try {personId = Integer.valueOf(parameterValue);} catch (Exception e) {throw new IllegalArgumentException("Invalid parameter value as number: " + parameterValue);}return new Person(personId);}throw new IllegalArgumentException("Invalid parameter type: " + parameterType);}protected static void printResult(Object result) throws Exception {if (result == null) {System.out.print("NULL");} else if (result instanceof Object[]) {Object[] row = (Object[]) result;System.out.print("[");for (int i = 0; i < row.length; i++) {printResult(row[i]);}System.out.print("]");} else if (result instanceof Long || result instanceof Double || result instanceof String) {System.out.print(result.getClass().getName() + ": " + result);} else {System.out.print(ReflectionToStringBuilder.toString(result, ToStringStyle.SHORT_PREFIX_STYLE));}System.out.println();} 
}

關于上面的代碼:

  • populateParameters方法將自動填充所有查詢參數。 如果需要,Eclipse控制臺將要求開發人員鍵入查詢信息和查詢參數。 查詢參數應遵循以下語法要求:
    • 0個參數:只需按“ Enter”
  • configureParameterValue方法會將參數值“廣播”為查詢所需的正確類型。 它允許原始值和類。
  • printResult方法將顯示查詢結果。

動態查詢測試

package com.main;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.Query;/*** @author Pro JPA 2 book* @Empowered by uaiHebert* */
public class DynamicQueryTester extends AbstractQueryTester {public static void main(String[] args) throws IOException {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));for (;;) {System.out.print("Type your JPQL and press Enter > ");String dynamicQuery = reader.readLine();if (dynamicQuery.equals("quit")) {break;}if (dynamicQuery.length() == 0) {continue;}System.out.println("Type the namedQuery parameters.");System.out.println("All paramters should be like: id-2-integer;name-John-string");System.out.println("Or just press enter for 0 parameters");String parameters = reader.readLine();try {Query query = em.createQuery(dynamicQuery);if (parameters.length() > 0) {populateParameters(query, parameters);}@SuppressWarnings("rawtypes")List result = query.getResultList();if (result.size() > 0) {int count = 0;for (Object o : result) {System.out.print(++count + " ");printResult(o);}} else {System.out.println("0 results returned");}} catch (Exception e) {e.printStackTrace();}}CodeGenerator.closeConnection();}
}

上面的代碼將啟動一個事務,在運行時內存中創建數據庫數據,并允許開發人員測試任何類型的動態查詢。 要測試JPQL / HQL,開發人員只需在控制臺中鍵入查詢代碼。

要結束循環,請不要鍵入任何查詢數據,只需鍵入“ quit”并按“ Enter”即可。

NamedQuery測試
?

package com.main;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.Query;/*** @author Pro JPA 2 book* @Empowered by uaiHebert* */
public class NamedQueryTester extends AbstractQueryTester {public static void main(String[] args) throws IOException {CodeGenerator.startConnection();CodeGenerator.generateData();EntityManager em = CodeGenerator.getEntityManager();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));for (;;) {System.out.print("Type the NamedQuery name > ");String namedQueryName = reader.readLine();if (namedQueryName.equals("quit")) {break;}if (namedQueryName.length() == 0) {continue;}System.out.println("Type the namedQuery parameters.");System.out.println("Press enter for 0 parameters");System.out.println("Or type all paramters like: id-2,name-4");String parameters = reader.readLine();try {Query query = em.createNamedQuery(namedQueryName);if (parameters.length() > 0) {populateParameters(query, parameters);}@SuppressWarnings("rawtypes")List result = query.getResultList();if (result.size() > 0) {int count = 0;for (Object o : result) {System.out.print(++count + " ");printResult(o);}} else {System.out.println("0 results returned");}} catch (Exception e) {System.err.println(e.getClass() + e.getMessage());}}CodeGenerator.closeConnection();}
}

上面的代碼將啟動一個事務,在運行時內存中創建數據庫數據,并允許測試在模型類中配置的NamedQueries。 要測試NamedQueries,只需在控制臺中鍵入其名稱。

要結束循環,請不要鍵入任何NamedQuery名稱,只需鍵入“ quit”并按“ Enter”即可。

運行應用程序

運行類DynamicQueryTester,然后在控制臺中鍵入以下文本:“ 從Person p中選擇p ”。 按Enter鍵兩次,以下文本將出現在控制臺中:

在第一個“ Enter”鍵上,將顯示一條消息,詢問是否有參數。

在控制臺中鍵入:“ 從Person p中選擇p,其中p.age>:age ”,然后按“ Enter”。 輸入參數:“ age-69-integer ”。 按回車,將顯示以下結果:

要完成正在運行的代碼,請輸入單詞“ quit”,然后按“ Enter”按鈕。

現在運行類NamedQueryTester的代碼。

在控制臺中鍵入NamedQuery名稱“ Dog.FindByPerson”,然后按Enter。 輸入“ personObject-1-person”參數,將顯示以下結果:

將此郵政編碼與您的應用程序代碼一起使用

您可以通過兩種方式使用本文的代碼:將應用程序模型類添加到本文的項目中,或在應用程序中使用該項目的主包中的代碼。

將您的模型類添加到這篇文章的項目中

  • 將模型類復制到“ com.model”包中。
  • 設置persistence.xml以訪問數據庫

使用應用程序主包中的代碼

  • 設置在CodeGenerator類中找到的PersistenceUnit。
  • 使用在libs文件夾中找到的Apache庫:“ commons-lang3-3-1.jar ”。

對于這兩種方法,都需要以下步驟:

  • 編輯方法“ AbstractQueryTester.configureParameterValue ”以接受將與查詢一起使用的所有屬性值/類型/類。
  • 將“ hibernate.hbm2ddl.auto ”配置編輯為“ none”或“ validate”。 該配置位于“ persistence.xml ”文件中。
  • 僅在CodeGenerator類中調用方法以啟動/關閉連接。

提案

在下面,您會發現一些與此代碼有關的建議:

  • 使用反射技術在“ AbstractQueryTester.configureParameterValue ”方法中創建類。
  • 提交后,應用Jenkins驗證某些JPQL是否具有正確的語法。

結束

希望這篇文章對您有所幫助。

單擊此處下載此帖子的源代碼 。

如果您有任何疑問/建議,請將其發布。

參考:在uaiHebert博客上, 如何從我們的JCG合作伙伴 Hebert Coelho進行部署而無需部署即可測試JPQL / HQL 。


翻譯自: https://www.javacodegeeks.com/2012/07/test-jpql-hql-without-deploy.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371779.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371779.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371779.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

freemarker頁面中文亂碼

一、前言 簡單的記錄freemarker遇到的錯誤問題&#xff1a;ftl頁面中文亂碼 由于freemarker整合在ssm框架中&#xff0c;所以筆者直接貼配置代碼 <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-ins…

了解ThreadLocal背后的概念

介紹 我知道本地線程&#xff0c;但直到最近才真正使用過它。 因此&#xff0c;我開始深入研究該主題&#xff0c;因為我需要一種傳播某些用戶信息的簡便方法 通過Web應用程序的不同層&#xff0c;而無需更改每個調用方法的簽名。 小前提信息 線程是具有自己的調用棧的單個…

python加密模塊教程_Python加密模塊的hashlib,hmac模塊使用解析

這篇文章主要介紹了Python加密模塊的hashlib,hmac模塊使用解析,文中通過示例代碼介紹的非常詳細&#xff0c;對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下在寫搬磚腳本中&#xff0c;碰到一個加密的信號標簽文件無法運行。import hashlibimport timem ha…

DAO層–救援通用

泛型可以是使用編譯時驗證&#xff08;類型安全性&#xff09;的功能來創建可重用代碼的強大工具。 不幸的是&#xff0c;我感到主流開發人員仍然對此感到恐懼。 但是&#xff0c;比喻海格的蜘蛛&#xff0c;我會說泛型是被嚴重誤解的生物……:-) 我希望以下示例可以證明它們…

ThreadLocal詳解(實現多線程同步訪問變量)

ThreadLocal翻譯成中文比較準確的叫法應該是&#xff1a;線程局部變量。 這個玩意有什么用處&#xff0c;或者說為什么要有這么一個東東&#xff1f;先解釋一下&#xff0c;在并發編程的時候&#xff0c;成員變量如果不做任何處理其實是線程不安全的&#xff0c;各個線程都 在操…

SCREEN屏幕編程時候必須保證SCREN中詞典的字段格式必須和數據表中字段的類型長度一致!...

此時任意操作都會出現如下問題 /h調試 回車調試被激活任意操作 執行到第23行時候報錯“請輸入一個數值”&#xff0c;檢查數據表中字段參考數據元素以及對應的域均是char類型&#xff0c;此時檢查screen屏幕設置字段類型&#xff0c;/n退出程序 重新進入程序 單擊 點擊屏幕9000…

mysql 阿里云 版本_關于阿里云centos版本,mysql5.7的一些注意事項

1.阿里云進去mysql是默認已經安裝好了的&#xff0c;只需要修改root用戶的密碼。關于修改密碼&#xff1a;1)登陸阿里云&#xff0c;進入root目錄&#xff0c;會有mysql的.sh文件&#xff0c;可以通過運行該文件得到初始密碼。此時用初始密碼登陸mysql&#xff0c;use mysql 切…

JAXB –不需要注釋

似乎存在一個誤解&#xff0c;認為在模型上需要使用批注才能使用JAXB&#xff08;JSR-222&#xff09;實現。 事實是&#xff0c;JAXB是例外配置&#xff0c;因此僅當您要覆蓋默認行為時才需要注釋。 在此示例中&#xff0c;我將演示如何在不提供任何元數據的情況下使用JAXB。 …

zabbix 3.0.3 (nginx)安裝過程中的問題排錯記錄

特殊注明&#xff1a;安裝zabbix 2.4.8和2.4.6遇到2個問題&#xff0c;如下&#xff1a;找了很多解決辦法&#xff0c;實在無解&#xff0c;只能換版本&#xff0c;嘗試換&#xff08;2.2.2正常 | 3.0.3正常&#xff09;都正常&#xff0c;最后決定換3.0.31、Error connecting …

安裝mysql5.7.24rpm_centos7安裝mysql-5.7.24(rpm安裝)

關于mysql的4個rpm包node[rootelk-200 ~]# ls mysql/ -lhtotal 192M-rw-r--r-- 1 root root 25M Aug 26 12:38 mysql-community-client-5.7.24-1.el7.x86_64.rpm-rw-r--r-- 1 root root 275K Aug 26 12:38 mysql-community-common-5.7.24-1.el7.x86_64.rpm-rw-r--r-- 1 root ro…

Java鎖實現

我們都使用第三方庫作為開發的正常部分。 通常&#xff0c;我們無法控制其內部。 JDK隨附的庫是一個典型示例。 這些庫中的許多庫都使用鎖來管理競爭。 JDK鎖具有兩種實現。 人們使用原子CAS樣式指令來管理索賠過程。 CAS指令往往是最昂貴的CPU指令類型&#xff0c;并且在x86上…

一鍵生成APP官網

只需要輸入蘋果下載地址&#xff0c;安卓市場下載地址&#xff0c;或者內測下載地址&#xff0c;就能一鍵生成APP的官網&#xff0c;方便在網上推廣。 好推APP官網 www.hotapp.cn/app 轉載于:https://www.cnblogs.com/likwo/p/6223889.html

python 字符ab+字符c 2_“ab”+”c”*2 結果是: (1.3分)_學小易找答案

【判斷題】藥物效應動力學簡稱藥效學,是研究藥物對機體的作用?【單選題】以下關于Python語言中“縮進”說法正確的是:?????????????????????????????????????????????????????????????????????????…

數據結構及算法 -- 目錄

排序算法 -- 目錄 啦啦啦轉載于:https://www.cnblogs.com/ClassNotFoundException/p/7122848.html

Spring MVC集成測試

在Spring MVC中對控制器進行集成測試的一種方法是使用Spring提供的集成測試支持。 對于Junit4&#xff0c;此支持包括一個名為SpringJunit4ClassRunner的自定義Junit Runner和一個用于加載相關Spring配置的自定義批注。 樣本集成測試將遵循以下原則&#xff1a; RunWith(Spri…

spark 快速入門 java API

Spark的核心就是RDD&#xff0c;對SPARK的使用入門也就是對RDD的使用&#xff0c;包括action和transformation 對于Java的開發者&#xff0c;單單看文檔根本是沒有辦法理解每個API的作用的&#xff0c;所以每個SPARK的新手&#xff0c;最好按部就班直接學習scale, 那才是一個高…

網頁設計上機考試原題_Dreamweaver上機考試題目dreamweaver試題庫網頁制作試題.doc...

網頁設計上機考試題集注意&#xff1a;所有題目中涉及的素材都在考試文件夾內&#xff0c;其中圖片在下面的pic文件夾中&#xff0c;音樂、flash在media文件夾。1) 在1.html中的頂部添加一個錨點鏈接&#xff0c;點擊之能立即到達頁面最底端。2) 將1.html中的所有鏈接的默認樣式…

35數據結構與算法分析之---最短路徑

本系列是閱讀《數據結構與算法應用實踐教程》第2版 主編 李文書 北京大學出版社 的讀書筆記&#xff0c;加上自己的理解&#xff0c;更多的是學習的記錄與反思&#xff0c;如有不妥&#xff0c;歡迎指正&#xff0c;非常感謝。轉載于:https://www.cnblogs.com/guochaoxxl/p/712…

Quartz 2 Scheduler示例

Quartz是一個開源作業調度框架。 它可用于管理和計劃應用程序中的作業。 步驟1&#xff1a;建立已完成的專案 創建一個Maven項目&#xff0c;如下所示。 &#xff08;可以使用Maven或IDE插件來創建它&#xff09;。 步驟2&#xff1a;圖書館 Quartz依賴項已添加到Maven的po…

sql server 2008 com.microsoft.sqlserver.jdbc.SQLServerException: 通過端口 1433 連接到主機

原內容搬遷到了新網站&#xff0c;給你帶來的不便&#xff0c;敬請諒解&#xff01; 》 http://www.suanliutudousi.com/2017/08/28/sql-server-2008-com-microsoft-sqlserver-jdbc-sqlserverexception-%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3-1433-%E8%BF%9E%E6%8E%A5%E5%88%B0…