![](https://img-blog.csdnimg.cn/e5e5a3adf74a4a21ac14a3a0079db63b.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 69
总结日常Java代码中的小知识,多多学习,多多交流
有翅膀的猫
我们不生产代码,我们只是Github的搬运工
展开
-
system.exit(0) 和 system.exit(1)区别
system.exit(0):程序正常执行结束退出。在 if-else 判断中,如果程序按照预想的执行,到最后需要停止程序,那么使用System.exit(0)。system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出。exit的参数应该是决定于程序的执行是好是坏的。这是一种从较老的编程语言中继承而来的,在这些语言中,知道什么地方出错了以及出什么错了是很有用的。二者都是用来结束当前正在运行中的 JVM,退出程序的意思,如果 status 是非零参数,那么表示是非正常退出。原创 2023-02-23 10:21:41 · 1777 阅读 · 0 评论 -
SELECT...INTO语法
SELECT…INTO用来将查询结果存储在变量或者写入文件中。SELECT......SELECT…INTO var_list,将查询结果存储在变量中;SELECT…INTO OUTFILE 将查询结果写入一个文件,还可以指定列和行终止符以生成特定的输出格式。SELECT…INTO DUMPFILE 将单行数据写入文件,没有任何格式。在SELECT的语法展示中,INTO子句在整个语句的尾部。但是让INTO子句紧跟select_expr列表后。...原创 2022-08-30 19:02:56 · 29654 阅读 · 2 评论 -
idea工具中maven的Lifecycle功能讲解
如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错,因为找不到所依赖的b项目,说明a项目在本地仓库是没有找到它所依赖的b项目,这时就用到install命令。该命令包含了package命令功能,不但会在项目路径下生成class文件和jar包,同时会在你的本地maven仓库生成jar文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户/.m2目录下。执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件。...原创 2022-08-15 14:01:58 · 6828 阅读 · 0 评论 -
java Lambda表达式
定义一个接口(LambdaMapper),里面定义一个抽象方法,intadd(intx,inty)有的小伙伴看到这里可能还是有点迷茫,没关系,接着往下看,新知识的学习是需要慢慢理解和体会的。定义一个接口,在java程序中要想使用接口必须提供该接口的实现类,实现接口的抽象方法进行使用。还有一种方法就是通过匿名内部内(匿名内部类的好处就是我们不需要去专门编写一个实现类去实现接口)日常求赞你好技术人,先赞后看养成习惯,你的赞是我前进道路上的动力,下期更精彩。然后通过实现类对象进行使用。...原创 2022-07-18 10:53:39 · 248 阅读 · 0 评论 -
Java 8 Stream 新特性
1)Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。(2)在我们日常使用Java的过程中,免不了要和集合打交道。对于集合的各种操作有点类似于SQL——增删改查以及聚合操作,但是其方便性却不如SQL。(3)所以有没有这样一种方式可以让我们不再使用一遍又一遍的循环去处理集合,而是能够便捷地操作集合?答案是有的,它就是——Java8引入的Stream,亦称为流。流的功能核心简单来说,流是对数据源数据源流的来源。.........原创 2022-07-16 09:46:51 · 740 阅读 · 0 评论 -
java字符串编码和解码问题
1、在java开发中经常会遇到中文文字编码问题,该怎么解决?首先我们先了解一下,什么是编码?什么是解码?//举个例子:(1)编码: String -> byte[ ];常用方法: str.getBytes(charsetName)(2)解码: byte[ ] -> String;常用方法: new String(byte[ ],charsetName);2、为什么会出现乱码?1、正确演示正常显示的字符串无乱码解码后的字符串对象可以用任意方式编码。但解码要正常显示,必须用对应的编码方式解码。原创 2022-07-13 21:38:43 · 3595 阅读 · 0 评论 -
springboot单元测试
1.引入依赖编写单元测试可以帮助开发人员编写高质量的代码,提升代码质量,减少Bug,便于重构。Spring Boot提供了一些实用程序和注解,用来帮助我们测试应用程序,在Spring Boot中开启单元测试只需引入spring-boot-starter-test即可,其包含了一些主流的测试库。引入spring-boot-starter-test:<dependency> <groupId>org.springframework.boot</groupId>原创 2022-04-15 09:48:20 · 1890 阅读 · 0 评论 -
Cookie、Session、Token、JWT区别?
Cookie、Session、Token、JWT1、什么是认证(Authentication)一句话就是:验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)互联网中的认证:用户名密码登录邮箱发送登录链接手机号接收验证码只要你能收到邮箱/验证码,就默认你是账号的主人2、什么是授权(Authorization)一句话就是:用户授予第三方应用访问该用户某些资源的权限你在安装手机应用的时候,APP 会询问原创 2022-03-24 14:38:03 · 366 阅读 · 4 评论 -
token基本流程
token在项目中的使用token是对session的一个升级,解决了前后端分离的session不能共享的一个难题1、token基本流程(1)用户登陆,发送手机号码和验证码(2)后台接收参数,查找用户,用户存在就生成token,返回给前端(3)前端登陆成功,把token存到vuex(做持久化)(4)使用axios拦截器,读取vuex中的token,并放入请求头(5)请求其他接口,就会带上token(6)后台在需要登陆的接口上,获取token,解密token获得userId,返回前端需要的数原创 2022-03-15 10:46:36 · 17443 阅读 · 0 评论 -
小谈什么是前后端分离?
什么是前后端分离?学习目标什么是前后端分离?前后端分离初了解为什么要前后端分离?1、前后职责分离2、前后技术分离3、前后分离带来了用户用户体验和业务处理解耦4、前后分离,可以分别归约两端的设计前后分离架构接口设计用户认证基于 Cookie/Session 的认证方案基于 OAuth 的认证方案基于 Token/JWT 的认证方案前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不穷的问题,甚至原创 2021-12-20 20:57:12 · 2552 阅读 · 2 评论 -
连不懂代码的客户都来问Log4j2的0day漏洞
影响太大了!连不懂代码的客户都来问Log4j2的0day漏洞知名的Java日志组件 Apache Log4j2 就刷爆了圈子。它被发现了一个 0 Day 漏洞,该Log4J2 漏洞可以让黑客通过日志记录远程执行代码(Remote Code Execution)。由于这个日志库被普遍使用,而这个漏洞又非常容易使用,所以造成的风险也非常严重,让人不得不提高防范。就连不懂代码的客户都来问系统是否存在这个问题。1、受影响的版本受本次漏洞影响的版本范围为Apache log4j2 2.0 - 2.14.1。2原创 2021-12-17 11:44:11 · 277 阅读 · 5 评论 -
nativeQuery = true是什么意思?
nativeQuery = true是什么意思?1、nativeQuery = true时有nativeQuery = true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了,比如:@Query(value = "select * from tbl_instance where tbl_instance.siteid = ?1", nativeQuery = true) List<Instance> findBySit原创 2021-12-15 15:27:08 · 2455 阅读 · 10 评论 -
Java字符串为空的判定
Java字符串为空的判定一、判断一个字符串str不为空的方法有:1、str == null;2、"".equals(str);3、str.length <= 0;4、str.isEmpty();注意:length是属性,一般集合类对象拥有的属性,取得集合的大小。例如:数组。length就是取得数组的长度。length()是方法,一般字符串类对象有该方法,也是取得字符串长度。例如:字符串。length();说明:1、null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,原创 2021-12-15 11:43:53 · 7298 阅读 · 4 评论 -
MySQL之表(或数据库)操作语言-01
MySQL之表操作语言MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等。而这两个方面又可以细分如下:MySQL常用语句1.表(或者数据库)的CRUD2.表数据的CRUD,其中表数据查询使用最多,也更复杂。查询可以按照单表还是多表可以分为:单表SELECT查询和多表的联结查询(INNER JOIN, LEFT JOIN, RIGHT JOIN和FULL JOIN)以及组合查询UNION和UNION AL原创 2021-12-07 18:49:37 · 184 阅读 · 2 评论 -
PostgreSql常用命令
PostgreSql常用命令一、 连接数据库成功之后所有的命令都是使用 ” \ “+ 字符 \? \ 所有命令帮助 \l show databases, 列出所有数据库 \di 列出连接数据库中所有index \dv 列出连接数据库中所有view \h sql命令帮助 \dt show tables, 列出连接数据库中所有表 \d \d后面什么都不带,将列出当前数据库中的所有表。 \d后面跟一个表名,表示显示这个表的结构定义原创 2021-12-07 17:49:24 · 14168 阅读 · 6 评论 -
Linux的环境变量
Linux的环境变量学习目标Linux的环境变量一、Linux的变量种类二、设置变量的三种方法三、PATH声明,其格式为:一、Linux的变量种类按变量的生存周期来划分,Linux变量可分为两类:1、永久的:需要修改配置文件,变量永久生效。2、临时的:使用export命令声明即可,变量在关闭shell时失效。二、设置变量的三种方法1、在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效原创 2021-12-03 13:55:31 · 2950 阅读 · 1 评论 -
线程池的三种使用方式
线程池的三种使用方式**注意:**下面这三种是 用 Executors 很常见的创建方式,但是阿里巴巴手册不推荐ThreadPoolExecutor: 是ExecutorService的一个实现类,也是java中最常用的线程池类【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行 规则,规避资源耗尽的风险。 说明: Executors 返回的线程池对象的弊端如下:1) FixedThreadPo原创 2021-11-18 18:12:33 · 2100 阅读 · 8 评论 -
execute和submit的区别
1、execute和submit的区别提交任务的类型:execute和submit都属于线程池的方法,execute只能提交Runnable类型的任务submit既能提交Runnable类型任务也能提交Callable类型任务。异常:execute会直接抛出任务执行时的异常,可以用try、catch来捕获,和普通线程的处理方式完全一致submit会吃掉异常,可通过Future的get方法将任务执行时的异常重新抛出。返回值:execute()没有返回值submi原创 2021-11-18 18:03:07 · 20854 阅读 · 3 评论 -
@ConfigurationProperties注解
@ConfigurationProperties注解@ConfigurationProperties是springboot提供读取配置文件的一个注解注意:前缀定义了哪些外部属性将绑定到类的字段上根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配我们可以简单地用一个值初始化一个字段来定义一个默认值类本身可以是包私有的类的字段必须有公共 setter 方法这个prefix 必须小写,不然会报错示例1:作用于Class类及其用法配置文件:person:原创 2021-11-16 22:03:17 · 9316 阅读 · 5 评论 -
Maven命令安装jar包到本地仓库
Maven命令安装jar包到本地仓库1、问题描述在lib包下 ,导入uxdbjdbc后,在maven仓库中,也导入这个包,但是maven仓库这个依赖就会找不到,一直报红那么该怎么做?2、解决办法2-1、不要maven依赖我们也可以不写maven仓库中这个依赖,因为lib包中的uxdbjdbc我们右键 Add as Library已经将jar包导入项目了2-2、cmd命名导入但是我们如果,必须将这个 jar包 和 依赖 都必须导入,使用命名形式。(1)找到我们项目中有 pom.xml 文件原创 2021-11-16 14:04:50 · 1430 阅读 · 9 评论 -
JSP页面不识别JSTL和EL表达式问题
JSP页面不识别JSTL和EL表达式问题1、方法一:"isELignored=false"的作用 (得在每个jsp页面中加入,比较繁琐)在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。 在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL在page directive中的isELIgnored属性用来指定是否忽略格式为: <%@ page isELIgnored="true|false"%> 如果设定原创 2021-11-14 00:24:39 · 557 阅读 · 2 评论 -
Address localhost:1099 is already in use详细解决办法
IDEA:Address localhost:1099 is already in use详细解决办法启动IDEA运行项目发现端口被占用了1、问题报错:Error running exam-web: Address localhost:1099 is already in use2、解决办法:2-1、方式一:直接修改Tomcat端口配置修改相应端口号为其他(被占用端口会自行销毁,不必理会)2-2、方式二:找到占用该端口号的进程并结束后重启Tomcat在cmd中可以用命令要 销毁这个正在原创 2021-11-14 00:16:31 · 21020 阅读 · 3 评论 -
SpringBoot实现拦截器和源码分析
SpringBoot实现拦截器和源码分析1、定义拦截器preHandle方法实在是controller执行之前执行postHandle方法是在controller执行后执行afterCompletion方法在模板渲染后执行示例:/** * 登录检查 * 1、配置好拦截器要拦截哪些请求 * 2、把这些配置放在容器中(之前在servlet的时候,实在xml里写,拦截哪些路径) * 3、 */@Slf4jpublic class LoginInterceptor implement原创 2021-11-11 20:30:27 · 588 阅读 · 2 评论 -
SpringBoot中原生组件(Servlet、Filter、Listener)
SpringBoot中原生组件(Servlet、Filter、Listener)的使用1、使用Servlet API@ServletComponentScan(basePackages = "com.atguigu.admin") :指定原生Servlet组件都放在那里 @WebServlet(urlPatterns = "/my"): 思考:直接响应,没有经过Spring的拦截器?@WebFilter(urlPatterns={"/css/*","/images/*"})@WebListener原创 2021-11-11 20:20:06 · 257 阅读 · 0 评论 -
SpringBoot配置文件yaml书写方式
SpringBoot配置文件yaml书写方式今天主要介绍yaml 方式(现在主流的形式)1、properties就是以前的properties用法示例:server.port=88882、yaml2.1、简介AML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。非常适合用来做以数据为中心的配置文件2.2、基本语法原创 2021-11-10 17:24:17 · 678 阅读 · 0 评论 -
SpringBoot中.properties文件绑定
SpringBoot中.properties文件绑定两种方式1、方式一:@ConfigurationProperties + @Component@ConfigurationProperties是springboot提供读取配置文件的一个注解@component是spring中的一个注解,它的作用是实现bean的注入示例:/** * 方式一: * 1、只有在容器中的组件才会拥有 SpringBoot提供的强大功能,所以用@Component 先把他放在容器中 2、mycar是在 a原创 2021-11-09 17:10:01 · 585 阅读 · 4 评论 -
@Configuration和@Bean注解
@Configuration和@Bean 给容器中添加bean组件@Configuration属于 SpringBoot的 组件添加功能的注解1、基本使用Full模式与Lite模式配置 类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式2、思考:SpringBoot怎么给容器中添加Bean组件?在之前Spring的时候,我们都是用 xxx.xml 给bean注入那么现在是(1)@Configuratio原创 2021-11-09 16:56:56 · 1572 阅读 · 0 评论 -
SpringBoot中REST风格传参使用
SpringBoot中REST风格传参使用1、rest使用与原理● @xxxMapping;● Restful风格支持(使用HTTP请求方式动词来表示对资源的操作)○ 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户○ 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户○ 核心Filter;HiddenHttp原创 2021-11-04 19:18:22 · 1242 阅读 · 0 评论 -
SpringBoot 注解大全
SpringBoot 注解大全一、注解(annotations)列表1、@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@SpringBootApplicationpublic class Boot02YamlApplication { public static原创 2021-11-03 19:33:39 · 523 阅读 · 0 评论 -
Java中解决CAS机制出现的ABA问题
Java中解决CAS机制出现的ABA问题?1、先了解一下什么是CAS?一句话总结就是: 比较并交换(compare and swap)是一条CPU并发原语CAS的公式如下:CAS(V,A,B)1:V 表示内存中的地址2:A 表示预期值3:B 表示要修改的新值CAS的功能:就是预期值A与内存中的值相比较,如果相同则将内存中的值改变成新值B2、CAS的底层原理?换句话说也就是CAS为什么能保证原子性?(1)靠的是底层的Unsafe类(2)Unsafe类是CAS的核心类,由于java无法原创 2021-11-02 14:07:49 · 4105 阅读 · 3 评论 -
集合初始化时, 指定集合初始值大小
集合初始化时, 指定集合初始值大小【阿里巴巴手册推荐】集合初始化时, 指定集合初始值大小。说明: HashMap 使用 HashMap(int initialCapacity) 初始化,正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子 ( 即 loaderfactor) 默认为 0.75, 如果暂时无法确定初始值大小, 请设置为 16。反例: HashMap 需要放置 1024 个元素, 由于没有设置容量初始大小,随着元素不断增加,容量 7 次原创 2021-11-01 16:03:34 · 1775 阅读 · 0 评论 -
Arrays.asList()把数组转换成集合易错点
工具类 Arrays.asList()把数组转换成集合【阿里巴巴手册规定】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。说明: asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。1、测试一下 add/remove/clear原创 2021-10-28 15:15:00 · 533 阅读 · 0 评论 -
ArrayList的subList会出现的异常
【强制】ArrayList的subList结果不可强转成ArrayList【阿里巴巴手册规定】ArrayList的subList结果不可强转成ArrayList,否则会抛出 ClassCastException异常: java.util.RandomAccessSubList cannot be cast to java.util.ArrayList ;说明: subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是ArrayList 的一个视图,原创 2021-10-28 14:40:07 · 906 阅读 · 0 评论 -
IDEA 方法返回值和返回类型自动补全快捷键设置
IDEA 方法返回值和返回类型自动补全快捷键设置今天遇到一个很奇怪的问题,我新装的IDEA,默认的返回类型补全快捷键应该是 Ctrl + Alt +V但是怎么也不起作用了,所以想去设置一下,然后找了半天,下面是具体步骤1、点击File,找到Settings,点击进入2、然后找到Keymap,再找到右边的Main menu,点击进入3、然后找到Refactor点击进入4、接着找到下面的 Extract,点击进入5、找到第一行Variable,这个后面对应的就是我们的快捷键6、修改的话原创 2021-10-19 16:32:09 · 7921 阅读 · 0 评论 -
正则表达式的预编译功能
正则表达式的预编译功能在阿里巴巴开发手册中规定如下:【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。说明: 不要在方法体内 定义: Pattern pattern = Pattern.compile(规则);(1)在IDEA中尝试这段代码,看会出现什么提示? public void t(){ Pattern pattern = Pattern.compile(".*:(.*)://.*/(.*)\\?.*$"); }(2)打开阿里原创 2021-10-19 11:03:56 · 4063 阅读 · 0 评论 -
foreach 循环里进行元素的 remove/add 操作
不要在 foreach 循环里进行元素的 remove/add 操作1、remove 元素请使用 Iterator方式,如果并发操作,需要对Iterator对象加锁// A code blockList<String> a = new ArrayList<String>();a.add("1");a.add("2");for (String temp : a) {if ("1".equals(temp)) {a.remove(temp);}}说明:如果将if原创 2021-10-14 09:55:39 · 2474 阅读 · 0 评论