暖宝宝官方认证铲屎官
springboot源码解析-@RequestMapping是怎么工作的
发布于: 2020-12-01 更新于: 2020-12-03 分类于: java

絮叨几句

这是一篇探究源码的文章,想学习一下优秀框架的设计思路,spring的功能太多了,一下子就看完也不可能,也没那个能力,这里就以springMVC中路由映射注解@RequestMapping为切入点,看它是怎么工作的。

学习源码时,方法很重要!!!不建议直接打开源码自己闷头看,这样会很浪费时间,你需要先理清作者的设计思路,再一点点的看明白,会很浪费时间,如果有其它大佬写过你想学习的点,那你完全可以先看下TA的文章,先了解一下...

阅读更多
使用Idea新建Springboot项目,整合jsp
发布于: 2020-11-30 更新于: 2020-12-01 分类于: java

最近在看杨开振的《深入浅出springboot2.x》这本书,看到SpringMVC这两章时,就想建个demo试试,他用的是jsp作模板,这个东西现在基本是被淘汰了的,不过学习嘛,用这个来了解一下spring的工作流程还是可以的,结果在建项目时遇到了点坑,这里记录下

问题1:springboot集成jsp需要哪些package?

答:

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

测试下来,只要上面两个package即可,测试了多个springboot多个版本(2.0.0-2.3.6),只要加了上面两个package都是可以正常解析jsp模板的

注意:package引入时不要加scope->provided选项,否则可能会因为idea设置导致无法使用问题,如果你遇到了这个问题,也可以参考这里(传送门)尝试解决

阅读更多
使用Systemback制做Ubuntu18.04镜像
发布于: 2020-11-09 更新于: 2020-11-10 分类于: Linux

最近因工作需要,想制做Ubuntu Desktop 18.04版本的系统镜像,在网上看了下SystemBack这个工具还不错,就试了下,试了下确实好用,不过有些问题还是需要注意一下的,并且这个工具还原时需要手动设置挂载点,这个对于不熟悉Linux的童鞋来说,可能还真有点坑,所以这里记录一下使用过程吧

here wo go!!!😜

安装

这个工具没有18.04的源了,只能用16.04的,但是CSDN上很多教程都不提这一点,只是无脑的抄了别人的文章,我刚开始时就被坑了,按照CSDN上的一些垃圾教程,直接添加了18.04的ppa,结果后面安装时失败,各种问题,下面是正确的安装方式

1
2
3
4
sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 382003C2C8B7B4AB813E915B14E4942973C62A1B
sudo apt update
sudo apt install systemback

如果你没遇到问题,那恭喜你已经安装成功了,可以继续看下面的使用部分了,如果失败那请搜索错误原因吧,因为我按照上面的方式装过好几次都是正常的😉
如果已经看了垃圾教程,装了ppa,就要先删除

1
sudo add-apt-repository --remove ppa:nemh/systemback

阅读更多
Couldn't get file path for photo on ANDROID 10
发布于: 2020-11-03 更新于: 2021-02-18 分类于: Android

昨天在使用RN的react-native-image-picker(v2.3.4)组件时遇到了一个问题,通过yarn添加组件后,根据文档导入变量并调用相机拍照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import ImagePicker from 'react-native-image-picker';
cameraOperation() {
const options = {
title: 'Take a photo',
//自定义按钮,目前没发现有什么用
customButtons: [{ name: 'fb', title: 'Choose photo from Facebook' }],
storageOptions: {
skipBackup: true,
path: 'images'
}
};
ImagePicker.showImagePicker(options, (response) => {
//path:图片的存储路径
//uri:在当前app内的存储路径
//width、height:拿到的图片的宽高
//data:图片的base64格式数据
console.log('Response = ', response);
if (response.didCancel) {
console.log('User cancled image picker');
}
else if (response.error) {
console.error('ImagePicker error:', response.error);
}
else if (response.customButton) {
console.log('User tapped custom button:', response.customButton);
}
else {
console.log(response.uri);
const source = { uri: response.uri };
this.setState({ avatarSource: source });
}
});
}

然而在运行时,却抛出了标题所述的错误,开始不得其解,后来搜索了一下资料,原来是因为API29的原因,API29对应的安卓版本是Android10,而Android中引入了分区存储(Scoped storage)的概念,这样做的初衷是为了避免APP乱写文件从而产生很多乱七八糟的冗余文件,更好的保护用户数据,具体的介绍可以看这里(传送门

阅读更多