From ce47ac2ae2dd1fe69ccfe2ef4d4b08a44ee7cdcc Mon Sep 17 00:00:00 2001 From: ourEmpire <1508248159@qq.com> Date: Sun, 24 Nov 2019 17:48:03 +0800 Subject: [PATCH] add api(/users/job_names) --- server/.gitignore | 2 - server/build.gradle.kts | 17 +++-- .../src/main/java/config/CrawlerConfig.java | 12 ++- server/src/main/java/config/JobConfig.java | 20 +++++ server/src/main/java/controller/AdminCtl.java | 1 - .../src/main/java/controller/CommentCtl.java | 17 ++++- server/src/main/java/controller/EmailCtl.java | 3 +- server/src/main/java/controller/UserCtl.java | 18 ++--- .../src/main/java/controller/UserOpCtl.java | 13 +++- server/src/main/java/database/Bayesian.java | 58 ++++++++++++++ .../src/main/java/database/BayesianRepo.java | 10 +++ .../src/main/java/database/BayesianSet.java | 36 +++++++++ server/src/main/java/database/Book.java | 49 ++++++++++-- server/src/main/java/database/JobRepo.java | 1 + server/src/main/java/helper/JWTUtil.java | 4 +- server/src/main/java/helper/Timer.java | 5 +- server/src/main/java/init/Start.java | 22 +++--- server/src/main/java/tool/BookCrawler.java | 75 +++++++++++++++++++ server/src/main/java/tool/BookCrawler.kt | 45 +++++++++++ server/src/main/java/tool/JobCrawler.java | 8 +- server/src/main/java/tool/JobInfoHandle.java | 46 ++++++++++++ server/src/main/resources/UI_designer.json | 9 +-- server/src/main/resources/application.yml | 41 +++++++++- server/src/test/kotlin/MyTest.kt | 6 ++ server/src/test/kotlin/Test.java | 9 +++ 25 files changed, 463 insertions(+), 64 deletions(-) delete mode 100644 server/.gitignore create mode 100644 server/src/main/java/config/JobConfig.java create mode 100644 server/src/main/java/database/Bayesian.java create mode 100644 server/src/main/java/database/BayesianRepo.java create mode 100644 server/src/main/java/database/BayesianSet.java create mode 100644 server/src/main/java/tool/BookCrawler.java create mode 100644 server/src/main/java/tool/BookCrawler.kt create mode 100644 server/src/main/java/tool/JobInfoHandle.java create mode 100644 server/src/test/kotlin/MyTest.kt create mode 100644 server/src/test/kotlin/Test.java diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index ce62f63..0000000 --- a/server/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.gradle/ -.idea/ diff --git a/server/build.gradle.kts b/server/build.gradle.kts index d668bab..2e16c7d 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -6,16 +6,17 @@ import org.springframework.boot.gradle.tasks.bundling.BootWar plugins { java war - kotlin("jvm") version "1.2.71" - kotlin("plugin.allopen") version "1.2.71" - kotlin("plugin.jpa") version "1.2.71" - kotlin("plugin.spring") version "1.2.71" + kotlin("jvm") version "1.3.50" + kotlin("plugin.allopen") version "1.3.50" + kotlin("plugin.jpa") version "1.3.50" + kotlin("plugin.spring") version "1.3.50" id("org.springframework.boot") version "2.1.7.RELEASE" apply false id("io.spring.dependency-management") version "1.0.8.RELEASE" } buildscript { - repositories { + var kotlinVersion = "1.3.50" + repositories { mavenCentral() } dependencies { @@ -65,8 +66,10 @@ dependencies { implementation("org.apache.httpcomponents:httpclient:4.5.9") implementation("org.apache.httpcomponents:httpcore:4.4.11") implementation("org.jsoup:jsoup:1.12.1") + implementation("top.ourfor:lib:+") implementation("org.springframework.boot:spring-boot-starter-data-mongodb") - + implementation("com.hankcs:hanlp:portable-1.7.5") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2") } allOpen { @@ -97,7 +100,7 @@ tasks.withType { } val war: War by tasks -war.archiveName = "job.war" +war.archiveName = "api.rest.war" tasks.getByName("war") { enabled = true diff --git a/server/src/main/java/config/CrawlerConfig.java b/server/src/main/java/config/CrawlerConfig.java index 4284365..15fab6a 100644 --- a/server/src/main/java/config/CrawlerConfig.java +++ b/server/src/main/java/config/CrawlerConfig.java @@ -3,18 +3,20 @@ package config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.HashMap; @Component @ConfigurationProperties(prefix="crawler") public class CrawlerConfig { private HashMap job51; - + private ArrayList douban; public CrawlerConfig() { } - public CrawlerConfig(HashMap job51) { + public CrawlerConfig(HashMap job51,ArrayList douban) { this.job51 = job51; + this.douban = douban; } public HashMap getJob51() { @@ -25,5 +27,11 @@ public class CrawlerConfig { this.job51 = job51; } + public ArrayList getDouban() { + return douban; + } + public void setDouban(ArrayList douban) { + this.douban = douban; + } } diff --git a/server/src/main/java/config/JobConfig.java b/server/src/main/java/config/JobConfig.java new file mode 100644 index 0000000..fec15cf --- /dev/null +++ b/server/src/main/java/config/JobConfig.java @@ -0,0 +1,20 @@ +package config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; + +@Component +@ConfigurationProperties(prefix="job") +public class JobConfig { + private ArrayList jobNames; + + public ArrayList getJobNames() { + return jobNames; + } + + public void setJobNames(ArrayList jobNames) { + this.jobNames = jobNames; + } +} diff --git a/server/src/main/java/controller/AdminCtl.java b/server/src/main/java/controller/AdminCtl.java index 3f39ffa..416d462 100644 --- a/server/src/main/java/controller/AdminCtl.java +++ b/server/src/main/java/controller/AdminCtl.java @@ -73,5 +73,4 @@ public class AdminCtl { } - } diff --git a/server/src/main/java/controller/CommentCtl.java b/server/src/main/java/controller/CommentCtl.java index d870c18..4b7d7f2 100644 --- a/server/src/main/java/controller/CommentCtl.java +++ b/server/src/main/java/controller/CommentCtl.java @@ -47,11 +47,24 @@ public class CommentCtl implements Ctl { //将不良评论和谐掉 - private String harmony(String content){ + public String harmony(String content){ for(String word : words.getWords()){ - content = content.replaceAll(word,"**"); + int index = content.indexOf(word); + while (index > 0) { + StringBuffer buffer = new StringBuffer(content.substring(0, index)); + String right = content.substring(index + word.length()); + char[] chars = new char[word.length()]; + for (int i = 0; i < word.length(); i++) { + chars[i] = '*'; + } + content = new String(buffer.append(chars).append(right)); + index = content.indexOf(word); + } } return content; } + + + } diff --git a/server/src/main/java/controller/EmailCtl.java b/server/src/main/java/controller/EmailCtl.java index bf11fb0..c382614 100644 --- a/server/src/main/java/controller/EmailCtl.java +++ b/server/src/main/java/controller/EmailCtl.java @@ -76,9 +76,8 @@ public class EmailCtl implements Ctl { public boolean check(String email,int verify){ Repo repo = repos.get(email); long nowTime = System.currentTimeMillis(); - if(repo.verify == verify && nowTime - repo.timeStamp < MAX_LIVE){ + if((repo.verify == verify) && (nowTime - repo.timeStamp < MAX_LIVE)) return true; - } return false; } diff --git a/server/src/main/java/controller/UserCtl.java b/server/src/main/java/controller/UserCtl.java index 0d7c21f..f289ffc 100644 --- a/server/src/main/java/controller/UserCtl.java +++ b/server/src/main/java/controller/UserCtl.java @@ -11,6 +11,8 @@ import message.StateCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Random; + @RequestMapping("/users") @RestController public class UserCtl implements Ctl{ @@ -52,12 +54,11 @@ public class UserCtl implements Ctl{ } @PostMapping("/create") - public Message create(@RequestParam String id, - @RequestParam String username, + public Message create(@RequestParam String username, @RequestParam String password, @RequestParam String email, @RequestParam(required = false) String phone, - @RequestParam String sex, + @RequestParam(required = false) String sex, @RequestParam Integer verify) { Message message = messages[Messages.POST]; EmailCtl emailCtl = new EmailCtl(); @@ -66,12 +67,11 @@ public class UserCtl implements Ctl{ .setMsg("验证码失效或错误!") .setData(null); } - - //查找数据库中是否有id的用户 - if(us.getUserMap().get(id) != null){ - return message.setMsg("the user "+id+"is existed") - .setCode(StateCode.FORBIDDEN) - .setData(null); + String id; + while(true) { + //产生一个9位的随机数作为id + id = String.valueOf(new Random().nextInt(1000000000 - 100000000) + 100000000); + if(us.getUserMap().get(id) == null)break; } User newUser = new User(id,username,password,email,phone,sex); us.getUserMap().put(id,newUser); diff --git a/server/src/main/java/controller/UserOpCtl.java b/server/src/main/java/controller/UserOpCtl.java index 64095de..bf3e21f 100644 --- a/server/src/main/java/controller/UserOpCtl.java +++ b/server/src/main/java/controller/UserOpCtl.java @@ -1,6 +1,7 @@ package controller; import com.alibaba.fastjson.JSON; +import config.JobConfig; import database.*; import message.Messages; import message.Messages.Message; @@ -25,12 +26,14 @@ public class UserOpCtl { BookRepo br; @Autowired NodeRepo nr; + @Autowired + JobConfig jobConfig; private Message[] messages = new Messages().getMessages(); @GetMapping("/jc") - public String viewJobAndCompany(@RequestParam String jobName){ + public String viewCompany(@RequestParam String jobName){ Message message = messages[Messages.GET]; //存储返回的页面信息 @@ -75,7 +78,13 @@ public class UserOpCtl { } } - + @GetMapping("/job_names") + public Message getAllJobName(){ + Message message = messages[Messages.GET]; + return message.setCode(StateCode.OK) + .setMsg("option successfully") + .setData(jobConfig.getJobNames()); + } @GetMapping("/location") public Message getLocate() { diff --git a/server/src/main/java/database/Bayesian.java b/server/src/main/java/database/Bayesian.java new file mode 100644 index 0000000..0611aba --- /dev/null +++ b/server/src/main/java/database/Bayesian.java @@ -0,0 +1,58 @@ +package database; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.util.ArrayList; + +@Entity +public class Bayesian { + @Id + //以company中的type作为id便于搜索 + private String type; + //存储熟练度的分类 + private ArrayList proficiencies; + //存储技术 + private ArrayList technologies; + + public Bayesian() { + } + + public Bayesian(String type, ArrayList proficiencies, ArrayList technologies) { + this.type = type; + this.proficiencies = proficiencies; + this.technologies = technologies; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public ArrayList getProficiencies() { + return proficiencies; + } + + public void setProficiencies(ArrayList proficiencies) { + this.proficiencies = proficiencies; + } + + public ArrayList getTechnologies() { + return technologies; + } + + public void setTechnologies(ArrayList technologies) { + this.technologies = technologies; + } + + @Override + public String toString() { + return "Bayesian{" + + "type='" + type + '\'' + + ", proficiencies=" + proficiencies + + ", technologies=" + technologies + + '}'; + } +} diff --git a/server/src/main/java/database/BayesianRepo.java b/server/src/main/java/database/BayesianRepo.java new file mode 100644 index 0000000..95dcfb0 --- /dev/null +++ b/server/src/main/java/database/BayesianRepo.java @@ -0,0 +1,10 @@ +package database; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import java.util.ArrayList; + +public interface BayesianRepo extends MongoRepository { + ArrayList findAll(); + ArrayList findAllByType(String type); +} diff --git a/server/src/main/java/database/BayesianSet.java b/server/src/main/java/database/BayesianSet.java new file mode 100644 index 0000000..93c7482 --- /dev/null +++ b/server/src/main/java/database/BayesianSet.java @@ -0,0 +1,36 @@ +package database; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; + +@Repository +public class BayesianSet { + @Autowired + private BayesianRepo bayesianRepo; + private HashMap bayesianHashMap = new HashMap<>(); + + public BayesianSet() { + } + + public BayesianSet(HashMap bayesianHashMap) { + this.bayesianHashMap = bayesianHashMap; + } + + public HashMap getBayesianHashMap() { + return bayesianHashMap; + } + + public void setBayesianHashMap(HashMap bayesianHashMap) { + this.bayesianHashMap = bayesianHashMap; + } + + public void init(){ + for(Bayesian bayesian: bayesianRepo.findAll()){ + bayesianHashMap.put(bayesian.getType(),bayesian); + } + } + +} diff --git a/server/src/main/java/database/Book.java b/server/src/main/java/database/Book.java index 6344fc0..a21eac1 100644 --- a/server/src/main/java/database/Book.java +++ b/server/src/main/java/database/Book.java @@ -8,15 +8,21 @@ public class Book { @Id private String id; private String name; - private String url; + private String author; + private String bookUrl; //书详细的介绍的url + private String info; //书的简介 + private String coverUrl;//书封面的url public Book() { } - public Book(String id,String name, String url) { + public Book(String id, String name, String author,String bookUrl, String info, String coverUrl) { this.id = id; this.name = name; - this.url = url; + this.author = author; + this.bookUrl = bookUrl; + this.info = info; + this.coverUrl = coverUrl; } public String getId() { @@ -35,12 +41,36 @@ public class Book { this.name = name; } - public String getUrl() { - return url; + public String getAuthor() { + return author; } - public void setUrl(String url) { - this.url = url; + public void setAuthor(String author) { + this.author = author; + } + + public String getBookUrl() { + return bookUrl; + } + + public void setBookUrl(String bookUrl) { + this.bookUrl = bookUrl; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getCoverUrl() { + return coverUrl; + } + + public void setCoverUrl(String coverUrl) { + this.coverUrl = coverUrl; } @Override @@ -48,7 +78,10 @@ public class Book { return "Book{" + "id='" + id + '\'' + ", name='" + name + '\'' + - ", url='" + url + '\'' + + ", author='" + author + '\'' + + ", bookUrl='" + bookUrl + '\'' + + ", info='" + info + '\'' + + ", coverUrl='" + coverUrl + '\'' + '}'; } } diff --git a/server/src/main/java/database/JobRepo.java b/server/src/main/java/database/JobRepo.java index 1759474..d0bf5e4 100644 --- a/server/src/main/java/database/JobRepo.java +++ b/server/src/main/java/database/JobRepo.java @@ -7,4 +7,5 @@ import java.util.ArrayList; public interface JobRepo extends MongoRepository { ArrayList findAllById(String id); ArrayList findAll(); + ArrayList findAllByJobName(String jobName); } diff --git a/server/src/main/java/helper/JWTUtil.java b/server/src/main/java/helper/JWTUtil.java index 21f7048..6177ad1 100644 --- a/server/src/main/java/helper/JWTUtil.java +++ b/server/src/main/java/helper/JWTUtil.java @@ -35,15 +35,13 @@ public class JWTUtil { /** * 校验token是否正确 * @param token 密钥 - * @param id 用户id * @return 是否正确 */ - public boolean verify(String token,String id){ + public boolean verify(String token){ try { Algorithm algorithm = Algorithm.HMAC256(secret); JWTVerifier verifier = JWT.require(algorithm) - .withClaim("id", id) .build(); verifier.verify(token); return true; diff --git a/server/src/main/java/helper/Timer.java b/server/src/main/java/helper/Timer.java index f4f956f..32199a1 100644 --- a/server/src/main/java/helper/Timer.java +++ b/server/src/main/java/helper/Timer.java @@ -25,8 +25,9 @@ public class Timer { @Autowired private CrawlerConfig crawlerConfig; + //每隔1h将缓存数据写入数据库 - @Scheduled(initialDelay = 1000 * 60 * 60,fixedDelay = 1000 * 60 * 60) + @Scheduled(initialDelay = 1000 * 60 * 60L,fixedRate = 1000* 60 * 60L) public void UserInfoUpdate(){ ArrayList userList = us.getUserList(); userList.clear(); @@ -41,6 +42,8 @@ public class Timer { deleteByIdList.clear(); } + + @Scheduled(cron = "0 0 3 * * ?") public void CompanyInfoUpdate(){ HashMap job51 = crawlerConfig.getJob51(); diff --git a/server/src/main/java/init/Start.java b/server/src/main/java/init/Start.java index 446cc85..4a89195 100644 --- a/server/src/main/java/init/Start.java +++ b/server/src/main/java/init/Start.java @@ -1,30 +1,26 @@ package init; -import config.CrawlerConfig; import database.*; -import helper.Timer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import tool.JobCrawler; +import tool.JobInfoHandle; + @Order(1) @Component public class Start implements CommandLineRunner { @Autowired - UserSet us; - @Autowired - CompanyRepo cr; - @Autowired - JobRepo jr; + private UserSet us; + //@Autowired + //private BayesianSet bs; @Autowired - JobCrawler crawler; - @Autowired - CrawlerConfig config; - + JobInfoHandle jih; @Override - public void run(String... args){ + public void run(String... args) { us.init(); + //bs.init(); + jih.test(); } } diff --git a/server/src/main/java/tool/BookCrawler.java b/server/src/main/java/tool/BookCrawler.java new file mode 100644 index 0000000..07eda92 --- /dev/null +++ b/server/src/main/java/tool/BookCrawler.java @@ -0,0 +1,75 @@ +package tool; +/** + * 用于爬取豆瓣网站中关于计算机类的书名,书id,书封面图(链接),书页面链接,书简介 + * + */ +import database.Book; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Component +public class BookCrawler { + //爬取的网址 + //https://read.douban.com/category?page=1&kind=105 + /**爬取书籍的信息 + * @param type 爬取网站的分类 + * @param pages 爬取网站的页数 + */ + public ArrayList getBooks(String type,int pages) throws IOException { + ArrayList books = new ArrayList<>(); + for(int index = 0;index < pages;index++){ + String url = jointUrl(type,index); + Document doc = Jsoup.connect(url).get(); + doc.outputSettings().charset("UTF-8"); + Elements elements = doc.select(".clearfix .article #subject_list .subject-list"); + if(elements.size()==0){ + continue; + } + System.out.println("elements length: "+elements.size()); + for(Element element: elements){ + String bookUrl = element.select(".subject-item .pic .nbg").attr("href"); + if(bookUrl==null){break;} + String id = getId(bookUrl); + String name = element.select(".subject-item .info h2>a").attr("title"); + String coverUrl = element.select(".subject-item .pic .nbg img").attr("src"); + String author = element.select(".subject-item .info .pub").text(); + String info = element.select(".subject-item .info>p").text(); + Book book = new Book(id,name,author,bookUrl,info,coverUrl); + System.out.println(new StringBuilder("book: ").append(book.toString())); + books.add(book); + try { + Thread.sleep(1500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + return books; + } + + private String jointUrl(String type,int index){ + StringBuffer buffer = new StringBuffer("https://book.douban.com/tag/"); + buffer.append(type).append("?start=").append(index).append("&type=T"); + return new String(buffer); + + } + //从bookUrl中提取出书的id + //https://book.douban.com/subject/25985021/ 截取数字为书的id + private String getId(String bookUrl){ + String regEx="[^0-9]"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(bookUrl); + return m.replaceAll("").trim(); + } + + + +} diff --git a/server/src/main/java/tool/BookCrawler.kt b/server/src/main/java/tool/BookCrawler.kt new file mode 100644 index 0000000..dc9a9f2 --- /dev/null +++ b/server/src/main/java/tool/BookCrawler.kt @@ -0,0 +1,45 @@ +package tool; +import com.alibaba.fastjson.JSON +import kotlinx.coroutines.* +import org.jsoup.Jsoup +import java.io.* + +suspend fun main() = coroutineScope { + + val books = ArrayList() + val userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + for(i in 0..49){ + val url = "https://book.douban.com/tag/程序?start=${20*i}&type=T" + var doc = Jsoup.connect(url).header("User-Agent",userAgent).get() + val lis = doc.select("li.subject-item") + + for(li in lis){ + launch { + val name = li.select(".info>h2>a").attr("title") + val author = li.select(".info>.pub").text() + val pic = li.select(".pic>.nbg>img").attr("src") + val desc = li.select(".info>p").text() + books.add(Book(name,author,desc,pic)) + println("name: $name author: $author pic: $pic desc: $desc") + } + } + } + write(File("E:\\repo\\data\\json\\book\\program.json"), JSON.toJSONString(books),"UTF-8") +} + +@Throws(IOException::class) +fun write(file: File, content: String, encoding: String) { + file.delete() + file.createNewFile() + val writer = BufferedWriter(OutputStreamWriter( + FileOutputStream(file), encoding)) + writer.write(content) + writer.close() +} + +data class Book( + val name: String, + val author: String, + val desc: String, + val pic: String +) diff --git a/server/src/main/java/tool/JobCrawler.java b/server/src/main/java/tool/JobCrawler.java index 1731d64..fe9cf85 100644 --- a/server/src/main/java/tool/JobCrawler.java +++ b/server/src/main/java/tool/JobCrawler.java @@ -9,10 +9,8 @@ import database.Job; import org.jsoup.nodes.*; import org.jsoup.*; import org.jsoup.select.Elements; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -@RestController -@RequestMapping("/users/test") +import org.springframework.stereotype.Component; +@Component public class JobCrawler { public ArrayList getCompanies(String url,String type)throws Exception { ArrayList companies = new ArrayList<>(); @@ -20,7 +18,7 @@ public class JobCrawler { doc.outputSettings().charset("UTF-8"); Elements elements = doc.select(".dw_table .el"); elements.remove(0); - elements.first().text(); + elements.first().text();//抛空指针异常,控制页面不在爬取 for (Element element : elements) { Elements els = element.select(".t1>span>a[title]"); String jobName = els.attr("title"); diff --git a/server/src/main/java/tool/JobInfoHandle.java b/server/src/main/java/tool/JobInfoHandle.java new file mode 100644 index 0000000..7b96dec --- /dev/null +++ b/server/src/main/java/tool/JobInfoHandle.java @@ -0,0 +1,46 @@ +package tool; + +import com.hankcs.hanlp.HanLP; +import com.hankcs.hanlp.collection.AhoCorasick.AhoCorasickDoubleArrayTrie; +import com.hankcs.hanlp.dictionary.CoreDictionary; +import com.hankcs.hanlp.dictionary.CustomDictionary; +import database.Bayesian; +import database.BayesianSet; +import database.JobRepo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; + + +@Component +public class JobInfoHandle { + @Autowired + JobRepo jobRepo; + @Autowired + BayesianSet bayesianSet; + + + public void test(){ + + } + + + public void as(String jobInfo,String type){ + ArrayList proficiencies = bayesianSet.getBayesianHashMap().get(type).getProficiencies(); + ArrayList technologies = bayesianSet.getBayesianHashMap().get(type).getTechnologies(); + for(String proficiency: proficiencies) { + while(true){ + int index = jobInfo.indexOf(proficiency); + if(index < 0) break; + + } + } + } + + + + + + +} diff --git a/server/src/main/resources/UI_designer.json b/server/src/main/resources/UI_designer.json index 944242b..8e4de8b 100644 --- a/server/src/main/resources/UI_designer.json +++ b/server/src/main/resources/UI_designer.json @@ -26,11 +26,10 @@ "children": [ {"name": "javaScript DOM 编程艺术", "value": 1801050, "children":[ - {"name": "腾讯网UED体验设计之旅","value": 1445661, - "name": "形式感+:网页视觉设计创意拓展与快速表现","value": 2178611, - "name": "在你身边,为你设计:腾讯的用户体验设计之道","value": 25863515, - "name": "HTML与CSS进阶教程","value": 25752357, - } + {"name": "腾讯网UED体验设计之旅","value": 1445661}, + {"name": "形式感+:网页视觉设计创意拓展与快速表现","value": 2178611}, + {"name": "在你身边,为你设计:腾讯的用户体验设计之道","value": 25863515}, + {"name": "HTML与CSS进阶教程","value": 25752357} ] } ] diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 4b20c16..aa10925 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -55,14 +55,51 @@ crawler: "UI_designer": "UI%25E8%25AE%25BE%25E8%25AE%25A1%25E5%25B8%2588", "software_engineer": "%25E8%25BD%25AF%25E4%25BB%25B6%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588", "software_tester": "%25E8%25BD%25AF%25E4%25BB%25B6%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588" - } + } + douban: + - "科普" + - "互联网" + - "编程" + - "科学" + - "交互设计" + - "用户体验" + - "算法" + - "科技" + - "web" + - "交互" + - "通信" + - "UE" + - "UCD" + - "神经网络" + - "程序" +job: + jobNames: + - "软件工程师" + - "UI设计师" + - "产品经理" + - "项目经理" + - "软件测试师" +ai: + proficiency: + - "了解" + - "具备" + - "熟悉" + - "熟练使用" + - "掌握" + - "精通" + + technology: + - "HTML" + - "JavaScript" + - "软件测试技术" + - "Quartz" comment: words: - "mmp" - - "操你" + - "操你妈" - "尼玛" - "艹" - "他妈的" \ No newline at end of file diff --git a/server/src/test/kotlin/MyTest.kt b/server/src/test/kotlin/MyTest.kt new file mode 100644 index 0000000..ed85606 --- /dev/null +++ b/server/src/test/kotlin/MyTest.kt @@ -0,0 +1,6 @@ + +import java.util.* + +fun main(){ + print((Random().nextInt(1000000000 - 100000000) + 100000000).toString()) +} \ No newline at end of file diff --git a/server/src/test/kotlin/Test.java b/server/src/test/kotlin/Test.java new file mode 100644 index 0000000..b9f2620 --- /dev/null +++ b/server/src/test/kotlin/Test.java @@ -0,0 +1,9 @@ +import java.util.Random; + +public class Test { + public static void main(String[] args) { + String id = String.valueOf(new Random().nextInt(1000000000 - 100000000) + 100000000); + System.out.println(id); + + } +}