Java程序猿搬砖笔记(十二)

news2024/11/22 14:07:12

文章目录

    • @PostConstruct注解
    • Mybatis的mapper-locations配置
    • @JsonFormat实现原理
    • IDEA String Manipulation插件使用及设置快捷键
    • 在Windows中测试服务器端口是否开放
    • Centos开放端口
    • Nginx常用配置详解
    • Nginx里面的路径定位关键词root、alias
    • zuul里面的prefix 和 strip-prefix学习
    • 解决Mybatis嵌套的结果集不能被安全地转为自定义ResultHandler
    • Mybatis中文文档
    • TortoiseGit+TortoiseGit中文语言包详细安装使用教程(windows版)
    • Java文件类型校验之Apache Tika
    • Jackson解析器接收JSON实体,需要这个实体有无参构造方法,否则会报错
    • Excel中数字变成E+的原因分析及两种解决方法
    • Excel快速对当前列下面的空单元格填充
    • MySQL统计每分钟的记录数
    • SpringBoot项目中某些Maven依赖可以不加版本号的原因
    • 在线SQL转Java实体工具
    • EasyExcel模板填充

@PostConstruct注解

示例代码:

@Configuration
@ComponentScan({"com.aspirecn.external.reward"})
@MapperScan("com.aspirecn.external.reward.mapper")
@Slf4j
public class ExternalRewardConfiguration {
   @PostConstruct
    private void init() {
        log.info("自动装配ExternalRewardConfiguration");
    }
}

参考链接

Mybatis的mapper-locations配置

  • 当mapper接口和mapper接口对应的配置文件在命名上相同、所在的路径相同时,则mapper-locations可以不用配置,配置也不会生效。
  • 当mapper接口和mapper接口对应的配置文件在命名上不相同、或者所在的路径不相同时,需要配置mapper-locations才能实现接口的绑定

YML文件配置参考:

mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml,classpath*:com/reward/promotion/mapper/*.xml

mapper和xml对应不上会报错:

Invalid bound statement (not found): com.reward.promotion.mapper.CompanyRecordMapper.queryRecordList

@JsonFormat实现原理

参考链接

IDEA String Manipulation插件使用及设置快捷键

设置步骤演示:
1、快捷键"ALT+M" -> Switch Case -> Open Settings -> 增加"小写下划线转驼峰"操作
在这里插入图片描述
2、打开IDEA设置 -> 点击Keymap -> 搜索"小写下划线转驼峰" -> 将快捷键设置为"ALT+SHIFT+U"
在这里插入图片描述
注意:版本9以后才实现了"小写下划线snake_case"功能
参考链接

在Windows中测试服务器端口是否开放

命令语法:telnet 服务器id 服务器端口
示例命令:telnet 10.12.7.181 9098

Centos开放端口

1、开启防火墙
systemctl start firewalld
2、开放某个端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
其中zone表示作用域,参数permanent表示永久生效
3、重启防火墙
firewall-cmd --reload

Nginx常用配置详解

参考链接

Nginx里面的路径定位关键词root、alias

1、root:设置请求的根目录。是最上层目录的意思。
处理结果为:root路径+location路径
2、alias:用来更改location的路径。是目录别名的意思。
处理结果为:使用alias路径替换location路径
3、如果location路径是以/结尾,则alias也必须是以/结尾,root没有要求。
参考图片
参考链接

zuul里面的prefix 和 strip-prefix学习

1、strip-prefix
true 移除前缀 false 不移除(增加)前缀
2、strip-prefix可用于全局配置和zuul.prefix结合使用
strip-prefix可用于路由配置和zuul.routes.routeName.path结合使用

从2.8路由前缀开始看就好,前面的例子举得不太好。
参考链接

解决Mybatis嵌套的结果集不能被安全地转为自定义ResultHandler

报错信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Mapped Statements with nested result mappings cannot be safely used with a custom ResultHandler. Use safeResultHandlerEnabled=false setting to bypass this check.

意思:不允许自定义ResultHand处理器

解决方法:

# 增加配置:safe-result-handler-enabled: false
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    call-setters-on-nulls: true
    safe-result-handler-enabled: false

参考链接

Mybatis中文文档

参考链接

TortoiseGit+TortoiseGit中文语言包详细安装使用教程(windows版)

官方下载链接、详细安装使用教程

Java文件类型校验之Apache Tika

Java文件类型校验之Apache Tika、Java实现流和文件的转换 将InoutStream转为File输出到磁盘

Jackson解析器接收JSON实体,需要这个实体有无参构造方法,否则会报错

奖励平台动态登录时,LoginParam没有无参构造方法(@NoArgsConstructor)会报org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com…entity错误

Excel中数字变成E+的原因分析及两种解决方法

原因:
Excel中默认数字在超过11位后,就用科学计数法的显示方式。

解决方法:
方法一:单元格格式设置为数值,小数位数改为0
单元格格式设置为数值
这种方式适用于数据库导出Excel后,某些字段自动转为了科学计数法的情况。
保存时会提示格式不兼容,本质是文件的实际是TXT格式,需要另存为xlsx,设置的格式才有效果

方法二: 自定义单元格格式,类型设置为0
自定义单元格格式
这种方法适用输入的数字长度超过11位但是不超过15位,超过15位后的数字会自动变为0。

方法三:单元格格式设置为文本
这种方式数字超过15位也可以正常显示,但是做数值运算会有问题。

参考链接

Excel快速对当前列下面的空单元格填充

方法一:双击单元格右下角也可以实现快速填充,填充的范围为遇到非空值。
效果如下:
在这里插入图片描述

该方式适合整列都为空的情况。

方法二:ctrl+g快捷键实现快速填充
步骤:选中当前列 -> ctrl+g快捷键,定位 -> 点击空值 -> 输入要填充的值 -> ctrl+回车
效果如下:
在这里插入图片描述

该方式功能更强大,支持筛选后的部分空值填充。
参考链接

方法三:复制单个单元格,然后拖动进度条到最后填充
步骤:
筛选出空白单元格 -> 输入要填充的值 -> ctrl+c,复制 -> 拖动进度条到最后 -> ctrl+v粘贴
效果如下:
在这里插入图片描述

MySQL统计每分钟的记录数

原理:
利用unix_timestamp和floor函数,把秒转换成整数(取整),然后对这个整数进行分组取数量。
核心代码:

floor(unix_timestamp(record.create_time) / 60)

参考代码:

-- 按分钟统计投票次数
SELECT
    t.create_time '投票时间',count(t.id) '投票次数'
FROM
    (
        SELECT
            record.id,
            record.create_time,
            floor(
                        UNIX_TIMESTAMP(record.create_time) / 60
                ) create_timestamp
        FROM
            `t_vote_user` record
    ) AS t
group BY t.create_timestamp
ORDER BY t.create_time;

SpringBoot项目中某些Maven依赖可以不加版本号的原因

因为spring-boot-dependencies是spring-boot-starter-parent的父依赖,spring-boot-dependencies-XXX.pom中的dependencyManagement有常用依赖包的默认版本号,有助于统一版本号。
所以当在Springboot项目中引入了spring-boot-starter-parent或spring-boot-dependencies,则可以不用引入依赖包版本号。
如果非要想自己填写版本号也是可以的,这样会覆盖官方版本号(不建议随便修改依赖包版本号,免得版本号不兼容)。
参考链接

在线SQL转Java实体工具

参考链接

EasyExcel模板填充

通用导出方法:

public class ExportExcelUtil<T> {
    /**
     * 给模板填充数据导出浏览器
     *
     * @param: list
     * @param: path
     * @param: fileName
     * @return void
     * @author liquanhong
     * @date 2023/3/9/
     */
    public void exportWithTemplate(List<T> list, String path, String fileName, HttpServletResponse response) throws Exception{
        // 1、加载导入模板
        Resource resource = new ClassPathResource(path);
        // 2、设置浏览器响应信息
        String newFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
        dealResponse(response,newFileName);
        // 3、开始导出
        ExcelWriter excelWriter = EasyExcel
                .write(response.getOutputStream())
                .withTemplate(resource.getInputStream())
                .build();
        WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
        excelWriter.write(list, writeSheet);
        excelWriter.finish();
    }
}

参考链接、参考链接、官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【三十天精通Vue 3】第二十四天 Vue3 移动端适配和响应式布局

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、 移动端适配概述1.1 为什么需要移动端适配&#xff1f;1.…

3.5 并行存储器

学习步骤&#xff1a; 如果我要学习并行存储器&#xff0c;我会采取以下几个步骤&#xff1a; 了解并行存储器的基本概念和原理。学习并行存储器的前提是要对存储器的基本原理有所了解&#xff0c;包括存储器的分类、工作原理、读写时序等。 学习并行存储器的特点和应用。并行…

Java每日一练(20230502)

目录 1. 二叉搜索树的最近公共祖先 &#x1f31f;&#x1f31f; 2. 随机分组问题 &#x1f31f; 3. K 个一组翻转链表 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

Vue 框架入门介绍

前言 前端时间工作任务没有那么忙&#xff0c;在技术总监沟通中他认为我自己花点时间做技术扩展&#xff0c;由于项目中用到前端部分功能&#xff0c;框架用的是Vue&#xff0c;本身项目中和前端同时接触比较多&#xff0c;而且公司有现成的项目可以供我去练习&#xff0c;所以…

存储资源调优技术——SmartMigration智能数据迁移技术

目录 基本概念 工作原理 注意事项 基本概念 智能数据迁移技术是业务迁移的关键技术 在不中断主机业务的情况下&#xff0c;实现源LUN上的业务完整--业务相关的所有数据 迁移到目标LUN上 工作原理 业务数据同步 创建SmartMigration&#xff0c;源LUN和目标LUN之间建立Pair关系&a…

RabbitMq、Kafka、RocketMq整理

MQ的主要作用:异步提高性能、解耦提高扩展性、削峰。 一、常见中间件对比 Kafka、RocketMq和RabbitMq最大的区别就是:前两个是分布式存储。 1.1、ActiveMq 优点:1)完全支持jms规范的消息中间件 ,2)提供丰富的api, 3)多种集群构建模式。 缺点:)在高并发的场景下,性能可…

计算机视觉——day88 读论文:基于驾驶员注意视野的交通目标检测与识别

基于驾驶员注意视野的交通目标检测与识别 II. RELATED WORKSA. 通用对象检测B. 交通标志检测与识别C. 车辆检测D.行人检测E. 交通灯检测 III. PROPOSED METHODA. The RoadLAB DatasetB. 驾驶员注视定位C. 目标检测阶段模型A模型B D.数据扩充E.综合检测结果F.物体识别阶段 IV. 实…

【Git】Git(分布式项目管理工具)在Windows本地/命令行中的基本操作以及在gitee中的操作,使用命令行、window,进行提交,同步,克隆

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

​【五一创作】基于mysql关系型实现分布式锁

看完该文预计用时&#xff1a;15分钟 看之前应具体的技术栈&#xff1a;springboot mysql nginx&#xff08;了解即可&#xff09; 目录 0.写在前面 1. 从减库存聊起 1.1. 环境准备 1.2. 简单实现减库存 1.3. 演示超卖现象 1.4. jvm锁问题演示 1.4.2. 原理 1.5. 多服务问…

Linux CentOS本地搭建Web站点,并实现公网访问

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章&#xff1a;Linux CentOS本地搭建…

ChatGPT提示词工程(六):Expanding扩展

目录 一、说明二、安装环境三、扩展&#xff08;Expanding&#xff09;1. 自定义自动回复客户电子邮件2. 提醒模型使用客户电子邮件中的详细信息3. 参数 temperature 一、说明 这是吴恩达 《ChatGPT Prompt Engineering for Developers》 的课程笔记系列。 本文是第六讲的内容…

linux编写脚本之快速入门

前言 在进行Linux测试时编写脚本是必不可少的。最近经常使用Linux&#xff0c;感觉太频繁地敲击键盘有些累了&#xff0c;于是想到了Shell脚本。可以把太多的命令写成一个脚本&#xff0c;这样每次执行一遍 shell文件&#xff0c;就可以省去了敲击键盘的时间。于是在网上搜了一…

3.7 虚拟存储器

学习目标&#xff1a; 建议按照以下学习目标进行学习&#xff1a; 了解虚拟存储器的基本概念和原理。包括什么是虚拟存储器、虚拟地址和物理地址、虚拟内存、页面置换算法等。 了解虚拟存储器的实现方式。包括基于请求分页、请求分段和请求段页混合的虚拟存储器实现方式&…

前置操作:Kubernetes快速安装组件Kubectl Kubeadam Kubeinit

文章目录 配置K8S主从集群前置准备操作一&#xff1a;主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二&#xff1a;安装自动填充&#xff0c;虚拟机默认…

对接ChatGPT开发对话机器人小程序

前言 ChatGPT已经非常火爆了&#xff0c;企业开始招聘ChatGPT工程师&#xff0c;可能对接ChatGPT接口进行企业级开发是程序员必备的技能了。本篇文章主要是基于ChatGPT开发接口进行对接&#xff0c;使用微信小程序制作一款自己的聊天机器人&#xff0c;通过这一案例你可以展开…

图神经网络:在KarateClub上动手实现图神经网络

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 文献阅读&#xff1a;代码实操&#xff1a; 文献阅读&#xff1a; 参考文…

JavaWeb05(删除增加修改功能实现连接数据库)

目录 一.实现删除功能 1.1 url如何传参&#xff1f; xx.do?参数参数值&参数名参数值 1.2 servlet如何拿对应值&#xff1f; //根据参数名拿到对应的参数值 String str req.getParameter("参数名") 1.3 如何询问&#xff1f; οnclick"return con…

区位码-GB2312

01-09区为特殊符号 10-15区为用户自定义符号区&#xff08;未编码&#xff09; 16-55区为一级汉字&#xff0c;按拼音排序 56-87区为二级汉字&#xff0c;按部首/笔画排序 88-94区为用户自定义汉字区&#xff08;未编码&#xff09; 特殊符号 区号:01 各类符号 0 1 2 3 4 …

I/O多路转接——epoll服务器代码编写

目录 一、poll​ 二、epoll 1.epoll 2.epoll的函数接口 ①epoll_create ②epoll_ctl ③epoll_wait 3.操作原理 三、epoll服务器编写 1.日志打印 2.TCP服务器 3.Epoll ①雏形 ②InitEpollServer 与 RunServer ③HandlerEvent 四、Epoll的工作模式 1.LT模式与ET…

第二十一章 光源

光源是每个场景必不可少的部分&#xff0c;光源除了能够照亮场景之外&#xff0c;还可以产生阴影效果。 Unity中分为四种光源类型&#xff1a; 1. 方向光&#xff1a;Directional Light 用于模拟太阳光&#xff0c;方向光任何地方都能照射到。 2. 点光源&#xff1a;Point L…