ARTS 第 4 周
每周完成一个ARTS:
Algorithm:每周做一个 leetcode 的算法题
Review:阅读并点评写作一篇英文技术文章
Tip:学习至少一个技术技巧
Share:分享一篇有观点和思考的技术文章。
Table of Contents
- Algorithm 替换空格
- Review 使用Springboot快速构建项目原型
- Tip Markdown编辑器推荐
- Share 阮一峰博客
Algorithm
leetcode 替换空格
题目描述:实现一个函数,把字符串 s 中的每个空格替换成" "。
代码语言:txt复制输入:s = "We are happy."
输出:"We are happy."
public class 替换空格_剑指Offer_05 {
public static void main(String[] args) {
String s = "We are happy.";
System.out.println(replaceSpace(s));
}
public static String replaceSpace(String s){
int length = s.length();
char[] array = new char[length*3];
int size=0;
for (int i = 0; i < length; i ) {
char c = s.charAt(i);
if (c==' '){
array[size ]='%';
array[size ]='2';
array[size ]='0';
}
else {
array[size ] = c;
}
}
String newString = new String(array, 0, size);
return newString;
}
}
leetcode链接
Review
Spring Boot Tutorial – How to Build Fast and Modern Java Apps
文章中作者演示了如何使用Springboot快速构建项目原型。搭建了一个便利设施预订系统,用户将登录并预订一段时间来使用健身中心、游泳池等,每个便利设施都将具有一定的容量(可以同时使用该服务的人数)。预期效果如下
项目前提条件:
- 了解Java和面向对象编程OOP
- 了解基本的关系型数据库
- Spring基础知识
- HTML基础知识
该应用程序的功能列表
类似于公寓大楼的预订系统。
- 用户应该能够登录。 我们将假设居民的帐户是预先创建的,并且不会有注册功能。
- 用户应该能够查看他们的预订。
- 用户应该能够通过选择设施类型、日期和时间来创建新的预订。
- 只有登录用户才能看到预订页面并创建预订。
- 我们应该检查容量,并且仅在当前预留数量不超过容量时才创建新预留。
使用的技术
Bootify
Hibernate
Spring Boot
Maven
JPA
Swagger
H2 In-Memory Database
Thymeleaf
Bootstrap
Spring Security
具体实践
项目代码地址
代码语言:txt复制https://github.com/yigiterinc/amenity-reservation-system.git
使用Bootify新建项目和依赖
新建实体:
Reservation实体,(包含与每个预约相关的数据的预约,比如预约日期、预约开始时间、结束时间和拥有这个预约的用户。)
User实体,
Amenity实体,拥有便利设施类型及其容量的便利设施实体
测试和探索生成的代码
接口文档swagger地址:http://localhost:8080/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/
H2数据库:http://localhost:8080/h2-console/
jdbc:h2:mem:amenity-reservation-system
调整生成的代码
创建控制器和查看文件以显示数据
定义不同类型的便利设施
创建枚举类型AmenityType
展示用户的预定信息
使用Thymeleaf创建视图
实现创建预定
使用Spring Security向应用程序添加身份验证和授权
显示登录用户的预订
检查设施的容量
Tip
使用Markdown写文章方便,排版也美观,分享几款markdown工具。
Typora
个人使用最顺手的Markdown编辑器。已经开始收费,目前公布价格是89元,可在3台设备上使用,价格不贵,可以支持一下。
另外,如果暂时不想购买,可以使用beta版,Typora最后一个免费版本是0.11.18。
下载地址:https://www.typora.io/releases/all
也可以看一下这篇文章,typora beta版本
EverNote(印象笔记)
比较好用的在线笔记,支持markdown格式
Notable
Notable一款开源的高颜值、跨平台的Markdown编辑器。
Atom
文本编辑器,可以通过插件支持markdown编辑,具体步骤可以参考网上教程
Share
分享阮一峰博客的一期文章:《软件订阅制的胜利》
作者认为:软件订阅制是未来的趋势。 因为这对于软件公司很有利,销售软件从一次性收入变成了经常性收入,能够产生稳定的现金流。只要用户使用,就必须付费,连续使用就必须连续付费。而且总能让用户使用软件的最新版,不用担心旧版本问题。对于用户来说,相对不那么有利,相比之前的一次性购买,使用越久,费用可能越高。