使用Docker部署Wikitten个人知识库教程
Wikitten是一个简洁、易用的静态Wiki工具,可以帮助用户管理个人知识库。通过Docker部署Wikitten,不仅能够简化部署流程,还能提高应用的可移植性。以下是如何使用Docker和Docker Compose部署Wikitten个人知识库的详细步骤。
2025年01月13日
Wikitten是一个简洁、易用的静态Wiki工具,可以帮助用户管理个人知识库。通过Docker部署Wikitten,不仅能够简化部署流程,还能提高应用的可移植性。以下是如何使用Docker和Docker Compose部署Wikitten个人知识库的详细步骤。
2025年01月13日
按照清单 4-8 的示例创建 UsersController 类。
package com.apress.users;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import java.net.URI;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
@AllArgsConstructor
@RestController
@RequestMapping("/users")
public class UsersController {
private SimpleRepository<User,Integer> userRepository;
@GetMapping
public ResponseEntity<Iterable<User>> getAll(){
return ResponseEntity.ok(this.userRepository.findAll());
}
@GetMapping("/{id}")
public ResponseEntity<User> findUserById(@PathVariable Integer id){
return ResponseEntity.of(this.userRepository.findById(id));
}
@RequestMapping(method = {RequestMethod.POST,RequestMethod.PUT})
public ResponseEntity<User> save(@RequestBody @Valid User user){
User result = this.userRepository.save(user);
URI location = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(user)
.toUri();
return ResponseEntity.created(location).body(this.userRepository.findById(result.id()).get());
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Integer id){
this.userRepository.deleteById(id);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Map<String, String> handleValidationExceptions(MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
ex.getBindingResult().getAllErrors().forEach((error) -> {
String fieldName = ((FieldError) error).getField();
String errorMessage = error.getDefaultMessage();
errors.put(fieldName, errorMessage);
});
errors.put("time", LocalDateTime.now().format(java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME));
return errors;
}
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Map<String,Object> handleHttpMessageNotReadableException(HttpMessageNotReadableException ex){
Map<String,Object> errors = new HashMap<>();
errors.put("code",HttpStatus.BAD_REQUEST.value());
errors.put("message",ex.getMessage());
errors.put("time", LocalDateTime.now().format(java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME));
return errors;
}
}
2025年01月13日
转载自:https://www.cnblogs.com/tinywan/p/6777592.html
(1)错误页面显示
错误日志:
// :: [error] #: * recv() failed (: Connection reset by peer) reading response header upstream,
client: ., server: live.baidu.com, request: , upstream: show.baidu.com, host:
2025年01月13日
简介
Go 的 net/http 包是构建 HTTP 服务的核心库,功能强大且易于使用。它提供了基本的 HTTP 客户端和服务端支持,可以快速构建 REST API、Web 应用等服务。
本文将介绍 net/http 包的核心功能,并通过实际代码演示如何使用该包构建 HTTP 服务器和客户端。
2025年01月13日
在上篇文章末尾,提到了登录功能还有一些缺陷,就是如何避免绕过登录功能直接登录,这篇文章主要解决这个问题,因此引入了一个新的内容,来协助我们完成这个功能。
前言:
在前面文章当中,当时登录时,我们需要加上
2025年01月13日
内存溢出,通俗的理解,就是你要求分配的内存超出了JVM能给你的,JVM不能满足需求,于是产生溢出。 为了便于理解,本文我们将使用一个案例来说明内存溢出。
首先,还是先看看本文的主要框架:
1public class PrintGCDetailsDemo {
2 public static void main(String[] args) {
3 //JVM最大堆空间
4 System.out.println("Xmx=" + Runtime.getRuntime().maxMemory() / 1024.0 / 1024 + "M");
5 //JVM堆空闲空间
6 System.out.println("free mem=" + Runtime.getRuntime().freeMemory() / 1024.0 / 1024 + "M");
7 //当前可用的总空间
8 System.out.println("total mem=" + Runtime.getRuntime().totalMemory() / 1024.0 / 1024 + "M");
9 }
10}
2025年01月13日
前一阵子发现服务会有偶发的服务不可用的情况,记录一下这个问题的排查过程。
现象是这样的:每天到了某个时间点,就会出现服务不稳定的情况,偶发接口调不通。
线上业务使用了lvs-nginx-tomcat三层结构,首先查看tomcat监控,没有什么特别异常的情况,响应时间和错误码没发现有什么异常,CPU、IO等等指标也都正常。
再查看nginx上的监控,发现在某个时刻这个服务的5xx报错突增,大概7、8秒之后又恢复了。
继续在nginx服务器上找线索,发现Nginx在那个时间点会出现报错:
2025年01月13日
对于很多梦幻玩家而言,经验都是一个稀缺资源。无论是新区冲级,普通玩家的潜能果,动辄都要几十亿的经验。等级越高,经验的开支就越大,灵宝、法宝,乾元丹,化圣,以至于千亿兽决,经验都是一个多多益善的好东西。
口袋版里刷经验,常规任务,如各类葫芦、帮派任务等,1块钱可以换大概70-90万经验。如果是修行任务,1块钱则是130-140万经验。如果舍得下本,口袋版一天刷几千万经验并不是一件难事。
2025年01月13日
平南这三所新建学校
涵盖了从幼儿园到小学、初中学段
分别是:
平南县工业园幼儿园
平南县工业园小学
平南县工业园初中
这三所学校位于临江工业园内
2025年01月13日
我们在制作Excel表格过程中,经常会突然出现各种各样的错误提示,令我们很是头大,影响工作效率。
我们整理了一些常见的提示和错误信息,方便大家对照了解,提前知晓,有备无患,及时解决问题。
01