完结
Redis基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。Redis是如今互联网技术架构中,使用最广泛的缓存,在工作中常常会使用到。Redis也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一,因此作为Java开发者,Redis是我们必须要掌握的。
Redis 是 NoSQL 数据库领域的佼佼者,如果你需要了解 Redis 是如何实现高并发、海量数据存储的,那么这份腾讯专家手敲《Redis源码日志笔记》将会是你的最佳选择。
导入需要的Jar:对应的pom.xml配置
pom.xml
4.0.0
com.study
cloud_note_learn
0.0.1-SNAPSHOT
war
org.springframework
spring-webmvc
3.2.8.RELEASE
com.fasterxml.jackson.core
jackson-core
2.2.3
com.fasterxml.jackson.core
jackson-databind
2.2.3
com.fasterxml.jackson.core
jackson-annotations
2.2.3
org.mybatis
mybatis
3.3.0
org.mybatis
mybatis-spring
1.2.3
org.springframework
spring-jdbc
3.2.8.RELEASE
commons-dbcp
commons-dbcp
1.4
mysql
mysql-connector-java
5.1.37
junit
junit
4.12
commons-codec
commons-codec
1.10
实体映射配置:
BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>insert into cn_notebook
(cn_notebook_id,cn_user_id,
cn_notebook_type_id,cn_notebook_name,
cn_notebook_desc,cn_notebook_createtime)
values(#{cn_notebook_id},#{cn_user_id},
#{cn_notebook_type_id},#{cn_notebook_name},
#{cn_notebook_desc},#{cn_notebook_createtime})
<select id=“findByUserId” parameterType=“string”
resultType=“com.dk.cloudnote.entity.Book”>
select * from cn_notebook
where cn_user_id=#{userId}
NoteMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>update cn_note
set cn_notebook_id=#{bookId}
where cn_note_id=#{noteId}
update cn_note
set cn_note_status_id=#{status}
where cn_note_id=#{noteId}
insert into cn_note
(cn_note_id,cn_notebook_id,
cn_user_id,cn_note_status_id,
cn_note_type_id,cn_note_title,
cn_note_body,cn_note_create_time,
cn_note_last_modify_time)
values (#{cn_note_id},#{cn_notebook_id},
#{cn_user_id},#{cn_note_status_id},
#{cn_note_type_id},#{cn_note_title},
#{cn_note_body},#{cn_note_create_time},
#{cn_note_last_modify_time})
update cn_note
set cn_note_title=#{cn_note_title},
cn_note_body=#{cn_note_body},
cn_note_last_modify_time=#{cn_note_last_modify_time}
where cn_note_id=#{cn_note_id}
<select id=“findById” parameterType=“string”
resultType=“com.dk.cloudnote.entity.Note”>
select * from cn_note
where cn_note_id=#{id}
<select id=“findByBookId” parameterType=“string”
resultType=“com.dk.cloudnote.entity.Note”>
select * from cn_note
where cn_notebook_id=#{bookId}
实体类:
Book.java
package com.dk.cloudnote.entity;
import java.io.Serializable;
import java.sql.Timestamp;
public class Book implements Serializable{
private String cn_notebook_id;
private String cn_user_id;
private String cn_notebook_type_id;
private String cn_notebook_name;
private String cn_notebook_desc;
private Timestamp cn_notebook_createtime;
public String getCn_notebook_id() {
return cn_notebook_id;
}
public void setCn_notebook_id(String cn_notebook_id) {
this.cn_notebook_id = cn_notebook_id;
}
public String getCn_user_id() {
return cn_user_id;
}
public void setCn_user_id(String cn_user_id) {
this.cn_user_id = cn_user_id;
}
public String getCn_notebook_type_id() {
return cn_notebook_type_id;
}
public void setCn_notebook_type_id(String cn_notebook_type_id) {
this.cn_notebook_type_id = cn_notebook_type_id;
}
public String getCn_notebook_name() {
return cn_notebook_name;
}
public void setCn_notebook_name(String cn_notebook_name) {
this.cn_notebook_name = cn_notebook_name;
}
public String getCn_notebook_desc() {
return cn_notebook_desc;
}
public void setCn_notebook_desc(String cn_notebook_desc) {
this.cn_notebook_desc = cn_notebook_desc;
}
public Timestamp getCn_notebook_createtime() {
return cn_notebook_createtime;
}
public void setCn_notebook_createtime(Timestamp cn_notebook_createtime) {
this.cn_notebook_createtime = cn_notebook_createtime;
}
}
Note.java
package com.dk.cloudnote.entity;
import java.io.Serializable;
public class Note implements Serializable{
private String cn_note_id;
private String cn_notebook_id;
private String cn_user_id;
private String cn_note_status_id;
private String cn_note_type_id;
private String cn_note_title;
private String cn_note_body;
private Long cn_note_create_time;
private Long cn_note_last_modify_time;
public String getCn_note_id() {
return cn_note_id;
}
public void setCn_note_id(String cn_note_id) {
this.cn_note_id = cn_note_id;
}
public String getCn_notebook_id() {
return cn_notebook_id;
}
public void setCn_notebook_id(String cn_notebook_id) {
this.cn_notebook_id = cn_notebook_id;
}
public String getCn_user_id() {
return cn_user_id;
}
public void setCn_user_id(String cn_user_id) {
this.cn_user_id = cn_user_id;
}
public String getCn_note_status_id() {
return cn_note_status_id;
}
public void setCn_note_status_id(String cn_note_status_id) {
this.cn_note_status_id = cn_note_status_id;
}
public String getCn_note_type_id() {
return cn_note_type_id;
}
public void setCn_note_type_id(String cn_note_type_id) {
this.cn_note_type_id = cn_note_type_id;
}
public String getCn_note_title() {
return cn_note_title;
}
public void setCn_note_title(String cn_note_title) {
this.cn_note_title = cn_note_title;
}
public String getCn_note_body() {
return cn_note_body;
}
public void setCn_note_body(String cn_note_body) {
this.cn_note_body = cn_note_body;
}
public Long getCn_note_create_time() {
return cn_note_create_time;
}
public void setCn_note_create_time(Long cn_note_create_time) {
this.cn_note_create_time = cn_note_create_time;
}
public Long getCn_note_last_modify_time() {
return cn_note_last_modify_time;
}
public void setCn_note_last_modify_time(Long cn_note_last_modify_time) {
this.cn_note_last_modify_time = cn_note_last_modify_time;
}
}
映射Dao接口:
BookDao.java
package com.dk.cloudnote.dao;
import java.util.List;
import com.dk.cloudnote.entity.Book;
public interface BookDao {
public void save(Book book);
public List findByUserId(String userId);
}
NoteDao.java
package com.dk.cloudnote.dao;
import java.util.List;
import java.util.Map;
import com.dk.cloudnote.entity.Note;
public interface NoteDao {
/**
-
根据笔记ID更新笔记本ID
-
@param params noteId:笔记ID;bookId:笔记本ID
-
@return 受影响记录行数
*/
public int updateBookId(Map<String,Object> params);
public int updateStatus(Map<String,Object> params);
public void save(Note note);
public int update(Note note);
public Note findById(String id);
public List findByBookId(String bookId);
}
Dao接口方法测试:
TestBookDao.java
package com.dk.cloundnote.dao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.dao.BookDao;
import com.dk.cloudnote.entity.Book;
public class TestBookDao {
@Test
public void test1(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
BookDao dao = ac.getBean(“bookDao”, BookDao.class);
Book book = new Book();
book.setCn_user_id(“1234”);
book.setCn_notebook_id(“1111”);
book.setCn_notebook_type_id(“1”);
book.setCn_notebook_desc(“testDESC”);
book.setCn_notebook_name(“tname1”);
dao.save(book);
}
}
TestFindByBookId.java
package com.dk.cloundnote.dao;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.dao.NoteDao;
import com.dk.cloudnote.entity.Note;
public class TestFindByBookId {
@Test
public void test(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteDao dao = ac.getBean(“noteDao”, NoteDao.class);
List list = dao.findByBookId(“4b86d1f9-6345-4532-bc50-ee86442f004b”);
for(Note note: list){
System.out.println(note.getCn_note_title()+“||”+note.getCn_note_id());
}
}
}
TestLoadBooks.java
package com.dk.cloundnote.dao;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.dao.BookDao;
import com.dk.cloudnote.entity.Book;
public class TestLoadBooks {
@Test
public void test1(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
BookDao dao = ac.getBean(“bookDao”,BookDao.class);
List list = dao.findByUserId(“1234”);
for(Book book:list){
System.out.println(book.getCn_notebook_name());
}
}
}
TestNoteDao.java
package com.dk.cloundnote.dao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.dao.NoteDao;
import com.dk.cloudnote.entity.Note;
public class TestNoteDao {
@Test
public void test1(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteDao dao = ac.getBean(“noteDao”, NoteDao.class);
Note note = dao.findById(“c7862663-b155-4556-bdd7-1b8ef8decf55”);
System.out.println(note.getCn_note_title()+“|”+note.getCn_note_body());
}
@Test
public void test2(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteDao dao = ac.getBean(“noteDao”, NoteDao.class);
Note note = new Note();
note.setCn_note_body(“ttttttttttttbody”);
note.setCn_note_title(“testTitle”);
note.setCn_note_id(“c7862663-b155-4556-bdd7-1b8ef8decf55”);
int count = dao.update(note);
System.out.println(count);
}
@Test
public void test3(){
String conf = “conf/spring-mybatis.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteDao dao = ac.getBean(“noteDao”, NoteDao.class);
Note note = new Note();
note.setCn_user_id(“test08”);
note.setCn_note_body(“ttttttttttttbody”);
note.setCn_note_title(“testTitle”);
note.setCn_note_id(“we”);
dao.save(note);
}
}
测试运行Dao方法后截图:
A.
B.
C.
D.
业务层代码:
业务接口部分:
BookService.java
package com.dk.cloudnote.service;
import com.dk.cloudnote.util.NoteResult;
public interface BookService {
public NoteResult addBook(String userId,String bookName);
public NoteResult loadUserBooks(String userId);
}
NoteService.java
package com.dk.cloudnote.service;
import com.dk.cloudnote.util.NoteResult;
public interface NoteService {
public NoteResult moveNote(String bookId,String noteId);
public NoteResult recycleNote(String noteId);
public NoteResult addNote(String userId,String title,String bookId);
public NoteResult updateNote(String id,String title,String body);
public NoteResult loadNote(String noteId);
public NoteResult loadBookNotes(String bookId);
}
业务实现部分:
BookServiceImpl.java
package com.dk.cloudnote.service;
import java.sql.Timestamp;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.dk.cloudnote.dao.BookDao;
import com.dk.cloudnote.entity.Book;
import com.dk.cloudnote.util.NoteResult;
import com.dk.cloudnote.util.NoteUtil;
@Service(“bookService”)
public class BookServiceImpl implements BookService{
@Resource
private BookDao bookDao;
public NoteResult loadUserBooks(String userId) {
NoteResult result = new NoteResult();
//根据用户ID查询笔记本信息
List list = bookDao.findByUserId(userId);
result.setStatus(0);
result.setMsg(“查询笔记本成功”);
result.setData(list);//返回笔记本信息
return result;
}
public NoteResult addBook(String userId, String bookName) {
NoteResult result = new NoteResult();
Book book = new Book();
book.setCn_user_id(userId);//用户ID
book.setCn_notebook_name(bookName);//笔记本名
book.setCn_notebook_type_id(“5”);//normal
book.setCn_notebook_desc(“”);
Timestamp time = new Timestamp(System.currentTimeMillis());
book.setCn_notebook_createtime(time);//创建时间
String bookId = NoteUtil.createId();
book.setCn_notebook_id(bookId);//笔记本ID
bookDao.save(book);//添加笔记本
//返回结果
result.setStatus(0);
result.setMsg(“创建笔记本成功”);
result.setData(bookId);//返回笔记本ID
return result;
}
}
NoteServiceImpl.java
package com.dk.cloudnote.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.dk.cloudnote.dao.NoteDao;
import com.dk.cloudnote.entity.Note;
import com.dk.cloudnote.util.NoteResult;
import com.dk.cloudnote.util.NoteUtil;
@Service(“noteService”)
public class NoteServiceImpl implements NoteService{
@Resource
private NoteDao noteDao;
public NoteResult loadBookNotes(String bookId) {
NoteResult result = new NoteResult();
List list = noteDao.findByBookId(bookId);
result.setStatus(0);
result.setMsg(“查询笔记列表成功”);
result.setData(list);
return result;
}
public NoteResult updateNote(String id, String title, String body) {
NoteResult result = new NoteResult();
//更新操作
Note note = new Note();
note.setCn_note_id(id);//笔记ID
note.setCn_note_title(title);//标题
note.setCn_note_body(body);//内容
long time = System.currentTimeMillis();
note.setCn_note_last_modify_time(time);//最后更新时间
noteDao.update(note);
result.setStatus(0);
result.setMsg(“保存笔记完成”);
return result;
}
public NoteResult loadNote(String noteId) {
NoteResult result = new NoteResult();
Note note = noteDao.findById(noteId);
result.setStatus(0);
result.setMsg(“加载笔记内容成功”);
result.setData(note);
return result;
}
public NoteResult addNote(String userId, String title, String bookId) {
Note note = new Note();
note.setCn_note_title(title);//标题
note.setCn_user_id(userId);//用户ID
note.setCn_notebook_id(bookId);//笔记本ID
note.setCn_note_status_id(“1”);//normal
note.setCn_note_type_id(“1”);//normal
note.setCn_note_body(“”);//空串
long time = System.currentTimeMillis();
note.setCn_note_create_time(time);//创建时间
note.setCn_note_last_modify_time(time);//最后修改时间
String noteId = NoteUtil.createId();
note.setCn_note_id(noteId);//笔记ID
noteDao.save(note);//插入cn_note表
//返回结果
NoteResult result = new NoteResult();
result.setStatus(0);
result.setMsg(“创建笔记成功”);
result.setData(noteId);//返回笔记ID
return result;
}
public NoteResult moveNote(String bookId, String noteId) {
//更新笔记本ID
Map<String,Object> params = new HashMap<String,Object>();
params.put(“noteId”, noteId);
params.put(“bookId”, bookId);
noteDao.updateBookId(params);
//返回结果
NoteResult result = new NoteResult();
result.setStatus(0);
result.setMsg(“转移笔记成功”);
return result;
}
public NoteResult recycleNote(String noteId) {
Map<String,Object> params = new HashMap<String,Object>();
params.put(“noteId”, noteId);//笔记ID
params.put(“status”, “2”);//删除状态
noteDao.updateStatus(params);//更新笔记状态
//返回NoteResult
NoteResult result = new NoteResult();
result.setStatus(0);
result.setMsg(“删除笔记成功”);
return result;
}
}
业务层功能 单元测试:
TestAddBook.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.service.BookService;
import com.dk.cloudnote.service.UserService;
import com.dk.cloudnote.util.NoteResult;
public class TestAddBook {
@Test
public void test1(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac= new ClassPathXmlApplicationContext(conf);
BookService service = ac.getBean(“bookService”, BookService.class);
NoteResult result = service.addBook(“test10”, “test10-10bj”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(result.getData());
}
}
TestLoadBookNotes.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
public class TestLoadBookNotes {
@Test
public void test(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
NoteResult result = service.loadBookNotes(“4b86d1f9-6345-4532-bc50-ee86442f004b”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(result.getData());
}
}
TestloadUserBooks.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.service.BookService;
import com.dk.cloudnote.util.NoteResult;
public class TestloadUserBooks {
@Test
public void test1(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
BookService service = ac.getBean(“bookService”,BookService.class);
NoteResult result = service.loadUserBooks(“48595f52-b22c-4485-9244-f4004255b972”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(result.getData());
}
}
TestMoveNote.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
public class TestMoveNote {
@Test
public void test1(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
NoteResult result = service.moveNote(“id-tttt”, “ss19055-30e8-4cdc-bfac-97c6bad9518f”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
}
}
TestNoteService.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.entity.Note;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
public class TestNoteService {
@Test
public void test1(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
NoteResult result = service.loadNote(“1a6e497b-56b5-4eac-8190-b2d726c6f687”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(((Note) result.getData()).getCn_note_status_id());
}
@Test
public void test2(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
Note note = new Note();
note.setCn_note_body(“ttttttttttttbod123y”);
note.setCn_note_title(“testTitle”);
note.setCn_note_id(“c7862663-b155-4556-bdd7-1b8ef8decf55”);
NoteResult result = service.updateNote(note.getCn_note_id(), note.getCn_note_title(),note.getCn_note_body());
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(result.getData());
}
@Test
public void test3(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
Note note = new Note();
note.setCn_user_id(“user”);
note.setCn_note_title(“aaaaa”);
note.setCn_notebook_id(“id-tttt”);
NoteResult result = service.addNote(note.getCn_user_id(),note.getCn_note_title(),note.getCn_notebook_id());
System.out.println(result.getStatus());
System.out.println(result.getMsg());
System.out.println(result.getData());
}
}
TestRecycleNote.java
package com.dk.cloundnote.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
public class TestRecycleNote {
@Test
public void test1(){
String[] conf = {“conf/spring-mvc.xml”,
“conf/spring-mybatis.xml”};
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
NoteService service = ac.getBean(“noteService”,NoteService.class);
NoteResult result = service.recycleNote(“1a6e497b-56b5-4eac-8190-b2d726c6f687”);
System.out.println(result.getStatus());
System.out.println(result.getMsg());
}
}
控制层功能:
AddBookController.java
package com.dk.cloudnote.controller.book;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.BookService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/book”)
public class AddBookController {
@Resource
private BookService bookService;
@RequestMapping(“/add”)//可以省略.do
@ResponseBody
public NoteResult execute(String userId,String bookName){
System.out.println(“AddBookController…”);
NoteResult result = bookService.addBook(userId, bookName);
return result;
}
}
LoadBookdsController.java
package com.dk.cloudnote.controller.book;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.BookService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/book”)
public class LoadBookdsController {
@Resource
private BookService bookService;
@RequestMapping(“/loadbooks.do”)
@ResponseBody
public NoteResult execute(String userId){
System.out.println(“LoadBookdsController…”);
NoteResult result = bookService.loadUserBooks(userId);
return result;
}
}
AddNoteController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class AddNoteController {
@Resource
private NoteService noteService;
@RequestMapping(“/add.do”)//
@ResponseBody
public NoteResult execute(String userId,String title,String bookId){
System.out.println(“AddNoteController…”);
NoteResult result = noteService.addNote(userId, title, bookId);
return result;
}
}
LoadNoteController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class LoadNoteController {
@Resource
private NoteService noteService;
@RequestMapping(“/load.do”)
@ResponseBody
public NoteResult execute(String noteId){
System.out.println(“LoadNoteController…”);
NoteResult result = noteService.loadNote(noteId);
return result;
}
}
LoadNotesController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class LoadNotesController {
@Resource
private NoteService noteService;
@RequestMapping(“/loadnotes.do”)
@ResponseBody
public NoteResult execute(String bookId){
System.out.println(“LoadNotesController…”);
NoteResult result = noteService.loadBookNotes(bookId);
return result;
}
}
MoveNoteController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class MoveNoteController {
@Resource
private NoteService noteService;
@RequestMapping(“/move”)
@ResponseBody
public NoteResult execute(String bookId,String noteId){
System.out.println(“MoveNoteController…”);
NoteResult result = noteService.moveNote(bookId, noteId);
return result;
}
}
RecycleNoteController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class RecycleNoteController {
@Resource
private NoteService noteService;
@RequestMapping(“/recycle”)
@ResponseBody
public NoteResult execute(String noteId){
System.out.println(“RecycleNoteController…”);
NoteResult result = noteService.recycleNote(noteId);
return result;
}
}
UpdateNoteController.java
package com.dk.cloudnote.controller.note;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dk.cloudnote.service.NoteService;
import com.dk.cloudnote.util.NoteResult;
@Controller
@RequestMapping(“/note”)
public class UpdateNoteController {
@Resource
private NoteService noteService;
@RequestMapping(“update.do”)
@ResponseBody
public NoteResult execute(String noteId,String title,String body){
System.out.println(“UpdateNoteController…”);
NoteResult result = noteService.updateNote(noteId, title, body);
return result;
}
}
控制层测试:
浏览器录入_:http://localhost:8088/cloud_note_learn/book/add.do?userId=122&bookName=java_
页面测试结果:
其他控制层代码功能测试同上。
前端逻辑实现:
book.js
//加载用户笔记本列表
function loadUserBooks(){
$.ajax({
url:“http://localhost:8088/cloud_note_learn/book/loadbooks.do”,
type:“post”,
data:{“userId”:userId},
dataType:“json”,
success:function(result){
if(result.status==0){//成功
var books = result.data;//获取服务器返回的笔记本信息
//循环笔记本数组
for(var i=0;i<books.length;i++){
var bookName =
books[i].cn_notebook_name;//获取笔记本名
var bookId = books[i].cn_notebook_id;//获取笔记本ID
//生成笔记本列表li元素
createBookLi(bookId,bookName);
}
}
},
error:function(){
alert(“加载用户笔记本列表失败”);
}
});
};
//创建笔记本列表li
function createBookLi(bookId,bookName){
var sli = ‘
- ’;
-
sli+= ’ ';
sli+= ’ ';
sli+= ’ ';
sli+= bookName;
sli+= ’ ';
sli+= ‘’;
//将bookId绑定到li元素上
var $li = $(sli);
$li.data(“bookId”,bookId);
//添加到笔记本列表ul元素中
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲book_ul").appen…li);
};
//创建笔记本
function sureAddBook(){
//获取请求参数
var bookName = $(“#input_notebook”).val().trim();
//TODO检查格式
//发送Ajax请求
$.ajax({
url:“http://localhost:8088/cloud_note_learn/book/add.do”,
type:“post”,
data:{“bookName”:bookName,“userId”:userId},
dataType:“json”,
success:function(result){
if(result.status==0){
//关闭对话框
//closeAlertWindow();
//添加笔记本li
var bookId = result.data;//笔记本ID
createBookLi(bookId,bookName);
//提示成功
alert(result.msg);
}
},
error:function(){
alert(“创建笔记本失败”);
}
});
};
note.js
//"保存笔记"按钮处理
function updateNote(){
//获取请求参数
var body = um.getContent();//笔记内容
var title = $(“#input_note_title”).val();//笔记标题
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
前端逻辑实现:
book.js
//加载用户笔记本列表
function loadUserBooks(){
$.ajax({
url:“http://localhost:8088/cloud_note_learn/book/loadbooks.do”,
type:“post”,
data:{“userId”:userId},
dataType:“json”,
success:function(result){
if(result.status==0){//成功
var books = result.data;//获取服务器返回的笔记本信息
//循环笔记本数组
for(var i=0;i<books.length;i++){
var bookName =
books[i].cn_notebook_name;//获取笔记本名
var bookId = books[i].cn_notebook_id;//获取笔记本ID
//生成笔记本列表li元素
createBookLi(bookId,bookName);
}
}
},
error:function(){
alert(“加载用户笔记本列表失败”);
}
});
};
//创建笔记本列表li
function createBookLi(bookId,bookName){
var sli = ‘
- ’;
-
sli+= ’ ';
sli+= ’ ';
sli+= ’ ';
sli+= bookName;
sli+= ’ ';
sli+= ‘’;
//将bookId绑定到li元素上
var $li = $(sli);
$li.data(“bookId”,bookId);
//添加到笔记本列表ul元素中
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲book_ul").appen…li);
};
//创建笔记本
function sureAddBook(){
//获取请求参数
var bookName = $(“#input_notebook”).val().trim();
//TODO检查格式
//发送Ajax请求
$.ajax({
url:“http://localhost:8088/cloud_note_learn/book/add.do”,
type:“post”,
data:{“bookName”:bookName,“userId”:userId},
dataType:“json”,
success:function(result){
if(result.status==0){
//关闭对话框
//closeAlertWindow();
//添加笔记本li
var bookId = result.data;//笔记本ID
createBookLi(bookId,bookName);
//提示成功
alert(result.msg);
}
},
error:function(){
alert(“创建笔记本失败”);
}
});
};
note.js
//"保存笔记"按钮处理
function updateNote(){
//获取请求参数
var body = um.getContent();//笔记内容
var title = $(“#input_note_title”).val();//笔记标题
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
[外链图片转存中…(img-SJMwtk6M-1715584015134)]
[外链图片转存中…(img-cQffoVUX-1715584015134)]
[外链图片转存中…(img-VBLn6Kj8-1715584015135)]
[外链图片转存中…(img-jKjeEVsJ-1715584015135)]
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!