Java
2024-08-07 14:45:29 0 举报
AI智能生成
登录查看完整内容
整理自己的Java思路,想写一点有用的东西
作者其他创作
大纲/内容
登录云服务,找到对应的ip,解析一个子ip(必填的项一个填自己要名字前缀、一个填服务器的ip)
解析域名
打包前确定1、数据库地址密码2、redis3、支付回调地址4、图片地址还有当前使用的application是哪个当然还有端口
部署之前:备份原来的代码上传新文件脚本启动查看日志
同步数据库结构、数据同步
部署到服务器
部署上线
MongoDB
终端临时配置redis密码的命令:config set requirepass \"123456\"
密码
redis
rabbitMQ
websocket
XXLjob
Spring Task
定时任务
搜索引擎
nacos
技术点
对应的代码
时间(为空也展示,连续一周)
新增、修改
管理后台的、小程序的
商家的、用户的、后台管理员的
列表查询(假删除记得加筛选)
管理后台、小程序
商家、用户的、管理后台的
回显(要是回显的跟列表的一模一样就不用了)
删除
修改状态
表——>接口?
假删除?
加状态判断?
考虑哪些问题?
建表
数据库常用
格式化:Ctrl+shift+L
移除没用上的import:Ctrl+alt+O
展开/合上所有方法:ctrl+shift + +/-
展开/合上当前方法:Ctrl+ +/-
快捷键
分页
Collections.sort()
升序排序
SysUser sysUser = iSysUserService.getById(StpUtil.getLoginIdAsLong());
获得当前登录的用户id
String s = JSON.toJSONString(page6Top.getValue());//把对象转换成JSON字符串的 JSONObject s = JSON.parseObject(page6Top.getValue());//把JSON字符串转换成对象的JSONArray s = JSON.parseArray(page6Top.getValue());//把JSON字符串转换成数组
JSON相关
对象不为空
对象为空
对象
Integer为空
String相等
String不相等
.endWith()
以什么什么结尾
去除表中的空字符串:(str[0] + \"\").replace(\" \
String
map
CollectionUtils.isEmpty(list)
List为空
CollectionUtils.isNotEmpty(list)
List不空
List
常用工具类(判断等)
我的String.matches(正则表达式String)
// 手机号正则表达式 public boolean isValidPhoneNumber(String phoneNumber) { String regex = \"^(13|14|15|17|18)[0-9]{9}$\"; return phoneNumber != null && phoneNumber.matches(regex); }
正则表达式
常用小语句
常用习惯
maven等环境配置、搭建
常用注解
netstat -ano | findstr 8080
查看端口
taskkill /f /t /im 9380
杀掉端口
win
端口被占用
环境
网管
拦截器
token(长短token、续token)
String token = request.getHeader(\"token\"); if (token == null) { return Result.error( \"token不存在\
验证token
退出登录
Sa-Token
登录
接口加密
常见加密
spring.datasource.dynamic.primary=masterspring.datasource.dynamic.strict=falsespring.datasource.dynamic.datasource.master.url=jdbc:mysql://127.0.0.1:3306/jinchang-recruit?serverTimezone=GMT%2B8spring.datasource.dynamic.datasource.master.username=rootspring.datasource.dynamic.datasource.master.password=EifjMh2Gspring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.dynamic.datasource.slave_1.url=jdbc:mysql://127.0.0.1:3306/jinchang-job-supermarket?serverTimezone=GMT%2B8spring.datasource.dynamic.datasource.slave_1.username=rootspring.datasource.dynamic.datasource.slave_1.password=EifjMh2Gspring.datasource.dynamic.datasource.slave_1.driver-class-name=com.mysql.cj.jdbc.Driver
application.properties
多数据库元
目标:写上传接口,把图片存到数据————>写查看图片的接口,图片能展示
file.getOriginalFilename() = lbxx.jpgfile.getName() = filefile.getContentType() = image/jpegfile.getResource() = MultipartFile resource [file]file.getBytes() = [B@1fa8cd72file.getSize() = 22820
返回值
@GetMapping(\"/test\") public ApiResult test(@RequestParam MultipartFile file) throws IOException { // 原文件名称 System.out.println(\"file.getOriginalFilename() = \" + file.getOriginalFilename()); // 文件的接收参数 @RequestParam MultipartFile file 中的 file System.out.println(\"file.getName() = \" + file.getName()); // 文件的类型 System.out.println(\"file.getContentType() = \" + file.getContentType()); System.out.println(\"file.getResource() = \" + file.getResource()); System.out.println(\"file.getBytes() = \" + file.getBytes()); // 文件大小 System.out.println(\"file.getSize() = \" + file.getSize()); return ApiResult.ok(); }
文件相关的工具方法
PNG:无损压缩,支持透明,适合图标和图形。JPG/JPEG:有损压缩,不支持透明,适合照片。GIF:无损压缩,支持动画和简单透明,适合简单动画和图标。BMP:无压缩,不支持透明,适合高质量无压缩图像。
png jpg jpeg gif bmp 之间的区别
System.getProperty(\"user.dir\"):获取当前用户的工作目录。 例如,如果当前用户的工作目录是 /home/user,那么 System.getProperty(\"user.dir\") 返回 /home/user。
File.separator:文件分隔符,根据操作系统不同,可能是 /(Unix/Linux)或 \\(Windows)。
综合起来,DEFAULT_UPLOAD_URL 的值可能是:在 Unix/Linux 系统上:/home/user/file/在 Windows 系统上:C:\\Users\\user\\file\\
public static final String DEFAULT_UPLOAD_URL = System.getProperty(\"user.dir\") + File.separator + \"file\" + File.separator;
如果断言条件为假,程序将抛出一个 AssertionError 异常,并终止执行。在这个示例中,如果 fileName 为 null,程序将抛出 AssertionError,并输出消息 \"fileName cannot be null\"。
assert——>断言
启用断言:默认情况下,断言是禁用的。要启用断言,需要在运行程序时使用 -ea 或 -enableassertions 选项。例如:java -ea MyClass
assert fileName != null;
lastIndexOf 是 Java 字符串类(String)中的一个方法,用于查找指定字符或子字符串在字符串中最后一次出现的位置。如果找到,返回该位置的索引;如果没有找到,返回 -1。
fileName.lastIndexOf(\".\");
public static String getRandomString2(int length) { Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { int number = random.nextInt(3); long result = 0; switch (number) { case 0: result = Math.round(Math.random() * 25 + 65); sb.append(String.valueOf((char) result)); break; case 1: result = Math.round(Math.random() * 25 + 97); sb.append(String.valueOf((char) result)); break; case 2: sb.append(String.valueOf(new Random().nextInt(10))); break; } } return sb.toString(); }
getRandomString2(8); 该方法可以根据指定的长度生成一个包含大写字母、小写字母和数字的随机字符串。
表示从 fileName 字符串中提取从 lastIndexOf 位置开始到字符串末尾的子字符串。
fileName.substring(lastIndexOf);
filePath.getParentFile():filePath 是一个 File 对象,表示一个文件或目录的路径。getParentFile() 方法返回 filePath 的父目录的 File 对象。如果 filePath 没有父目录,返回 null。exists():exists() 方法是 File 类的一个方法,用于检查文件或目录是否存在。如果文件或目录存在,返回 true;否则返回 false。
filePath.getParentFile().exists()
if (!filePath.getParentFile().exists()) { filePath.getParentFile().mkdirs(); }
文件.transferTo(文件路径)当前这个是文件是接口接到的参数的变量名
file.transferTo(filePath);
最终返回去掉前缀的一半的文件名
return Result.success( \"/file/\" + date + suffix);
/** * 上传文件 */ @ApiOperation(\"上传图片\") @PostMapping(\"/upload\
上传本地
图片上传
根据提供的文件路径创建一个 File 对象。这个 File 对象可以用来表示文件或目录的路径,但它本身并不创建文件或目录。filePath 是一个字符串,表示文件的路径。FileUtils.getFile(filePath) 是 Apache Commons IO 库中的一个方法,用于根据文件路径创建一个 File 对象。
File file = FileUtils.getFile(filePath);
使用 URLEncoder.encode 方法将文件名编码为 UTF-8 格式,以处理文件名中的特殊字符。
设置 HTTP 响应的内容类型为 application/vnd.ms-excel,表示返回的是 Excel 文件。
设置 HTTP 响应头 Content-disposition,指示浏览器将文件作为附件下载,并设置下载时的文件名为 newfilename + \".xlsx\"。
使用 BufferedInputStream 包装 FileInputStream 是一种常见的优化技巧,可以显著提高文件读取的效率。这是因为 BufferedInputStream 在内部使用了一个缓冲区,减少了直接从文件系统读取数据的次数,从而提高了读取性能。
BufferedInputStream提升效率原理
使用 bis.read(buffer) 方法从 BufferedInputStream 中读取数据到缓冲区。循环读取数据,直到文件末尾(返回 -1)。
在 finally 块中关闭 BufferedInputStream 和 FileInputStream,释放资源。
try 块:使用 FileUtils.openInputStream 方法打开文件输入流(注释掉的行是直接使用 FileInputStream 的替代方式)。使用 BufferedInputStream 包装 FileInputStream,以提高读取效率。获取 HTTP 响应的输出流 OutputStream。从 BufferedInputStream 中读取数据到缓冲区,并将缓冲区中的数据写入到输出流中,直到文件读取完毕。catch 块:捕获并打印所有异常的堆栈信息。finally 块:确保在读取文件完成后,关闭 BufferedInputStream 和 FileInputStream,释放资源。
@ApiOperation(value = \"下载导入模板文件\") @GetMapping(\"/downloadImportTemplateFile\
Excel模板下载
@ApiOperation(value = \"导入模板文件\") @PostMapping(\"/importTemplateFile\
Excel导入
Excel
方式二:public static String getMobile(String mobileCode) { //获取access_token String token = redisToken(); // 使用前端code获取手机号码 参数为json格式 String url = \"https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=\
通过微信小程序的code获取用户手机号的静态方法:
小程序的
逻辑、功能
改正.yaml中加:mybatis-plus.mapper-locations=classpath*:**/xml/*Mapper.xml
找不见mapper中的方法org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.app.mapper.PublicAnnouncementMapper.noticeList
400 401 token登录失效
Impl中大小写问题
不是道服务器之后找不见包文件
有不用的xxxMapper.xml注释了,但没删除,删掉就好了
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sysRoleMapper' defined in file
解决方式一:@RequestBody注解去掉
解决方式二:前端修改提交的参数类型(表单提交改成application/json这个)
POST请求,前后端参数没对上
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
运行 'A.test' 时出错 无法解析 org.junit.vintage:junit-vintage-engine:5.8.2
常见报错
开发
swagger
postman测试图片上传
postman测试Excel上传
Apifox/postman
并发性等测试工具
内网穿透
抓包小程序
接口:请求路径:请求参数:(参数类型:表单、JSON、路径参数、简单参数)
测试、抓包、内网穿透
Java
0 条评论
回复 删除
下一页