自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 收藏
  • 关注

原创 24.Java程序员的经典错误

1. 使用Objects.equals比较对象 是JDK7提供的一种方法,可以快速实现对象的比较,有效避免烦人的空指针检查。但是这种方法很容易用错,例如: 1 Long longValue = 123L; 2 System.out.println(longValue==123); //true 3 System.out.println(Objects.equals(longValue,123)...

2023-01-03 18:06:00 53

原创 23.几种序列化方式

什么是序列化 关于序列化相信大家都很了解,在 Java 中我们经常就可以看到很多实体类或者POJO都会实现Serializable接口,有了解过Serializable接口的小伙伴应该都知道,这个接口是一个空接口,只是用来标记的。所谓序列化简单来说就是在传输对象之前将对象转换成二进制字节进行传输,接收端在收到二进制数据后再反序列化转化成普通对象。 所以说序列化最终的目的是为了对象可以...

2022-11-25 02:49:00 53

原创 22.九种Map的遍历方式

通过entrySet来遍历 1、通过for和map.entrySet()来遍历 第一种方式是采用for和Map.Entry的形式来遍历,通过遍历map.entrySet()获取每个entry的key和value,代码如下。这种方式一般也是阿粉使用的比较多的一种方式,没有什么花里胡哨的用法,就是很朴素的获取map 的key和value。 1 public...

2022-11-25 02:44:00 55

原创 5.OAuth2详解

理论 OAuth是一个关于授权(authorization)的开放网络标准,用来授权第三方应用获取用户数据,是目前最流行的授权机制,它当前的版本是2.0。 应用场景 假如你正在“网站A”上冲浪,看到一篇帖子表示非常喜欢,当你情不自禁的想要点赞时,它会提示你进行登录操作。 打开登录页面你会发现,除了最简单的账户密码登录外,还为我们提供了微博、微信、QQ等快捷登录方式。假设选择了快捷登录,它会...

2022-11-25 02:35:00 49

原创 4.http协议

1. (1)http请求报文结构:请求行、请求头、请求体 请求行包括:HTTP Request Method,URI,Protocol Version(请求方法,请求路径,协议版本号)例如“GET /test.html HTTP/1.1”,表示HTTP Request Method为GET方法,URI为/test.htlm,HTTP协议版本号为1.1 HTTP Request Headers:...

2022-10-31 15:31:00 18

原创 21.4种主流的API架构风格对比

本文讨论了四种主要的 API 架构风格,比较它们的优缺点,并重点介绍每种情况下最适合的 API 架构风格。 两个单独的应用程序需要中介程序才能相互通信。因此,开发人员经常需要搭建桥梁——也就是应用程序编程接口(API),来允许一个系统访问另一个系统的信息或功能。 为了快速、大规模地集成不同的应用程序,API 使用协议或规范来定义那些通过网络传输的消息的语义和信息。这些规范构成了 API 的体系结...

2022-10-30 16:57:00 20

原创 20.Linux系统总结(3)

备份 scp 它是Secure Copy的缩写,表示安全拷贝。scp可以使我们通过网络,把文件从一台电脑拷贝到另一台电脑。 scp是基于ssh的原理来运作的,ssh会在两台通过网络连接的电脑之间创建一条安全通信的管道,scp就利用这条管道安全地拷贝文件。 scpsource_filedestination_file#source_file表示源文件,destinat...

2022-10-30 16:00:00 15

原创 19.Linux系统总结(2)

查找文件 locate 搜索包含关键字的所有文件和目录。后接需要查找的文件名,也可以用正则表达式。 安装 locate yum-yinstallmlocate-->安装包updatedb-->更新数据库 [注意]locate命令会去文件数据库中查找命令,而不是全磁盘查找,因此刚创建的文件并不会更新到数据库中,所以无法被查找到,可以执行updatedb命令去更新数...

2022-10-30 15:58:00 18

原创 18.Linux系统总结

Linux 基础 操作系统 操作系统Operating System简称OS,是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁。 操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序。 什么是 Linux Linux 系统内核与 Linux 发行套件的区别 Linux...

2022-10-30 15:54:00 14

原创 17.45个代码优化的小技巧(2)

27、资源释放写到 finally 比如在使用一个 api 类锁或者进行 IO 操作的时候,需要主动写代码需释放资源,为了能够保证资源能够被真正释放,那么就需要在 finally 中写代码保证资源释放。 如图所示,就是 CopyOnWriteArrayList 的 add 方法的实现,最终是在 finally 中进行锁的释放。 28、使用线程池代替手动创建线程 使用线程池还有以下好处: 降低...

2022-10-30 15:44:00 22

原创 16.45个代码优化的小技巧

1、规范命名 命名是写代码中最频繁的操作,比如类、属性、方法、参数等。好的名字应当能遵循以下几点: 见名知意 比如需要定义一个变量需要来计数 int i = 0; 名称 i 没有任何的实际意义,没有体现出数量的意思,所以我们应当指明数量的名称 int count = 0; 能够读的出来 如下代码: private String sfzh; private String dhhm; ...

2022-10-30 15:38:00 39

原创 15.几种序列化方式

什么是序列化 关于序列化相信大家都很了解,在 Java 中我们经常就可以看到很多实体类或者POJO都会实现Serializable接口,有了解过Serializable接口的小伙伴应该都知道,这个接口是一个空接口,只是用来标记的。所谓序列化简单来说就是在传输对象之前将对象转换成二进制字节进行传输,接收端在收到二进制数据后再反序列化转化成普通对象。 所以说序列化最终的目的是为了对象可以...

2022-10-30 15:26:00 16

原创 14.docker 15问

目录 什么是Docker? Docker的应用场景有哪些? Docker的优点有哪些? Docker与虚拟机的区别是什么? Docker的三大核心是什么? 如何快速安装Docker? 如何修改Docker的存储位置? Docker镜像常用管理有哪些? 如何创建Docker容器? Docker在后台的标准运行过程是什么? Docker网络模式有哪些? 什么是Docker的数据卷 如何搭建Dock...

2022-10-30 15:22:00 30

原创 13.17个提升开发效率的“轮子”(3)

8. IOUtils IO流在我们日常工作中也用得比较多,尽管java已经给我们提供了丰富的API。 但我们不得不每次读取文件,或者写入文件之后,写一些重复的的代码。手动在finally代码块中关闭流,不然可能会造成内存溢出。 有个好消息是:如果你使用org.apache.commons.io包下的IOUtils类,会节省大量的时间。 8.1 读取文件 如果你想将某个txt文件中的数据,读取到字...

2022-10-30 14:48:00 19

原创 12.17个提升开发效率的“轮子”(2)

5. BooleanUtils 在java中布尔值,随处可见。 如果你使用了布尔的包装类:Boolean,总感觉有点麻烦,因为它有三种值:null、true、false。我们在处理Boolean对象时,需要经常判空。 头疼!!! 但如果使用BooleanUtils类处理布尔值,心情一下子就愉悦起来了。 5.1 判断true或false 如果你想判断某个参数的值是true或false,可以直接使用...

2022-10-30 14:35:00 25

原创 11.17个提升开发效率的“轮子”

前言 在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子。 如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率。 今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。 本文会分享17个我们日常工作中一定会用得到的小工具,主要内容如下: 1. Collections 首先出场的是java.util包下的Colle...

2022-10-30 14:28:00 19

原创 10.常用的lambda表达式

1. list转map 工作中,我们经常遇到list转map的案例。Collectors.toMap就可以把一个list数组转成一个Map。代码如下: 1 public class TestLambda { 2 3 public static void main(String[] args) { 4 5 List<UserInfo> userI...

2022-10-30 14:10:00 19

原创 9.java泛型方法

1. 定义泛型方法 (1) 如果你定义了一个泛型(类、接口),那么Java规定,你不能在所有的静态方法、静态初块等所有静态内容中使用泛型的类型参数。例如: 1 public class A<T> { 2 public static void func(T t) { 3 //报错,编译不通过 4 } 5 } (2) 如何在静态内容(静态方法)中使用泛型,...

2022-10-18 20:58:00 15

原创 8.函数式接口

函数式接口概念:一个接口中的抽象方法只有一个,那么这个接口就是一个函数式接口。 1、通过注解检测一个接口是否是一个函数式接口: @FunctionalInterface 在接口上直接加上注解,如果这个接口是一个函数式接口则不报错,否则编译报错 2、作用: (1)是Lambda表达式的使用前提 (2)概念层面,为了表示接口就代表这个抽象方法,所以将名起为函数式接口 内置函数式接口在jdk8之后,官...

2022-10-17 20:51:00 19

原创 3.lambda表达式

一、说明 Lambda表达式是什么 Lambda 表达式也称为闭包,是Java 8 发布的新特性 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中) 为什么要使用Lambda表达式 避免匿名内部类定义过多,可以让代码简洁紧凑,留下核心的逻辑 二、理解 语法格式 1 (parameters) -> expression[表达式] 2 (parameters) -...

2022-10-17 20:26:00 20

原创 7.lambda表达式

一、说明 Lambda表达式是什么 Lambda 表达式也称为闭包,是Java 8 发布的新特性 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中) 为什么要使用Lambda表达式 避免匿名内部类定义过多,可以让代码简洁紧凑,留下核心的逻辑 二、理解 语法格式 1 (parameters) -> expression[表达式] 2 (parameters) -...

2022-10-16 18:46:00 19

原创 6.Stream

stream使用及原理 元素 Stream是一个来自数据源的元素队列,Stream本身并不存储元素。 数据源(即Stream的来源)包含集合、数组、I/O channel、generator(发生器)等。 聚合操作 类似SQL中的filter、map、find、match、sorted等操作 管道运算 Stream在Pipeline中运算后返回Stream对象本身,这样多个操作串联成一个Pipe...

2022-10-15 23:11:00 82

原创 2.枚举 enum

基本介绍 枚举对应英文(enumeration,简写 enum) 枚举是一组常量的集合 枚举属于一种特殊的类,里面只包含一组有限的特定的对象 不需要提供 setXxxx() 方法,因为枚举对象值通常为只读 对枚举对象/属性使用static+final共同修饰     static+final只有修饰基本数据类型、String类型才不会加载类,修饰对象或者方法还是...

2022-10-14 19:19:00 29

原创 1.中台

1.中台:系统架构中的一个模块 2.中台某种意义上来讲,和开放平台非常相似,就是对外提供底层能力 3.前台:是系统的前端平台,是直接与终端用户进行交互的应用层 后台:是系统的后端平台,终端用户是感知不到他的存在,后台的价值是:存储和计算企业的核心数据 4.分类:   业务中台:支付中心,用户中心,交易中心,商品中心,搜索中心   技术中台:MQ,RPC框架,分布式事务,分布式缓存,容器,分...

2022-10-09 20:02:00 17

原创 5.@AliasFor注解

注解定义如下: 1 @Retention(RetentionPolicy.RUNTIME) 2 @Target(ElementType.METHOD) 3 @Documented 4 public @interface AliasFor { 5 6 @AliasFor("attribute") 7 String value() default ""; 8 ...

2022-10-08 18:54:00 15

原创 4.open feign

一、OpenFeign是什么OpenFeign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可 二、OpenFeign能干什么Feign旨在使编写Java Http客户端变得更容易。前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对...

2022-10-07 18:47:00 10

原创 3.postman

一文带你全面解析postman工具的使用(基础篇) postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一 。那么接下来就介绍下postman到底有哪些功能,它们分别都能干些什么 。下面先通过一张图来直观地来看下postman中所包含的功能 。 当然,以上...

2022-10-04 15:07:00 11

原创 2.jwt

JWT详解 1. 介绍 JWT简称 JSON Web Token,也就是通过**JSON形式作为Web应用中的令牌**,用于各方之间安全地将信息作为JSON对象传输,在数据传输的过程中还可以完成数据加密、签名等相关处理。 2. 流程图  2.1 认证流程 首先,前端通过Web表单将自己的用户名和密码发送到后端的接口。这一过程一般是一个HTTP POST请求。建议的方式是通过SSL加密的传输(h...

2022-10-03 17:25:00 17

原创 1.MarkDown常规使用语法

MarkDown常规使用语法 1.标题 几级标题就几个 #,从一级标题到六级标题 # 一级标题 ## 二级标题 ... 2.字体 *斜体* **粗体** 3.分割线 --- 4.列表 4.1 有序列表 1.zhangsan 2.lisi 3.wangwu 4.2 无序列表 * zhangsan * lisi * wangwu 4.3 列表嵌套 只需要删除新生成的列表标识符号,然后按Tab键...

2022-10-01 18:11:00 19

原创 8.Docker学习

尚硅谷-Docker教程 笔记 第一章 Docker简介 1.是什么? 一种容器化虚拟技术。将 应用程序+运行环境+配置依赖 打包成镜像,运行镜像成为容器实例。而Docker容器在任何操作系统上都是一致的,这就实现了系统的跨平台、跨服务器,达到系统平滑移植。“一次镜像,到处运行”。 2.容器与虚拟机的比较 虚拟机是在硬件层面实现虚拟化 Docker容器是在操作系统层面实现虚拟化 与传统虚拟机相比...

2022-09-22 17:14:00 11

原创 7.Linux学习

尚硅谷-Linxu教程 笔记 第一章 Linux入门 第二章 VM与Linux的安装 第三章 Linux文件与目录结构 1./media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下 2./mnt:系统提供该目录是为了让用户临时挂在别的文件系统的,我们可以将外部的存储挂在到/mnt上,然后进入该目录就可以查看里面的内容了 第四章 vi/...

2022-09-21 21:08:00 13

原创 6.idea教程

动力节点-idea教程笔记 这个教程中涉及到了debug,git操作等等,可以好好看看

2022-09-18 11:56:00 16

原创 5.Maven学习

尚硅谷-Maven教程笔记 1.maven:(项目管理工具)构建管理工具,依赖管理工具 第一章 Maven概述第一节 为什么要学习Maven?1.Maven作为依赖管理工具(1)jar包规模过大(2) jar包的来源不统一(3)jar包之间的依赖关系复杂2.Maven作为构建管理工具(1)在idea中,构建是idea替我们做的(2)脱离idea环境仍需构建 3.总结: 管理规模庞大的 ja...

2022-09-18 10:55:00 12

原创 4.git总结

一,git概述 1.git:分布式版本控制系统 2.git工作机制 3.代码托管中心=远程库4.代码托管中心局域网:GitLab互联网:GitHub Gitee 码云5.git的版本控制都是在本地库中做的 二,git常用命令 1.git工作流程图 2.git常用命令 git init              初始化本地库git status            查看本地库状态g...

2022-09-13 13:22:00 12

原创 3.git学习-黑马程序员git

二,概述 1.git工作概述 2.git工作流程图 三,git安装与常用命令 1.Linux基本命令 ls/ll    查看当前目录cat    查看文件内容touch   创建文件vi    vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编辑器) 2.获取本地仓库 git init 3.基础操作指令 git ad...

2022-09-13 10:09:00 73

原创 2.Linux入门

黑马程序员-Linux入门 笔记一、Linux概述二、Linux安装三、Linux目录结构 / 根目录 bin 命令文件(binaries,二进制可执行文件)sbin 命令文件(super binaries,系统设置相关命令,只有root用户可以访问)boot 引导启动文件(内核,引导文件)root root用户主目录(超级用户,系统管理员)home 普通用户主目录usr 系统软件资源目录(u...

2022-09-10 11:28:00 13

原创 1.git入门

尚硅谷-Git教程 笔记 第1章 Git概述1.分布式版本控制系统2.git工作机制 3.代码托管中心=远程库4.代码托管中心局域网:GitLab互联网:GitHub Gitee 码云5.git的版本控制都是在本地库中做的 第2章 git安装 第3章 Git常用命令命令名称               作用git config --global user.name   用户名 设置用户...

2022-09-07 20:05:00 13

原创 1.spring boot面试题

Spring Boot基础 1.什么是spring boot? 通过自动配置方式简化Spring应用的开发,弱化配置,遵循约定大于配置的原则,使开发者专注于业务开发而无需过多考虑配置相关操作,通过启动类的main方法一键启动应用。 2.spring boot有哪些有点? 1、独立运行 内嵌了servlet,tomat等,不需要打成war包部署到容器中,只需要将SpringBoot项目打...

2022-08-21 15:49:00 12

原创 十六。算法题面试前注意点

1.二分查找步骤:(1)二段性 (2)ML/NB 2.找ML,要向上取整;找NB,要向下取整 3..若是NB,right初始值可以是num.length。因为NB的时候向下取整,不会越界 4.定义Deque的时候,一定得用泛型 ...

2022-08-07 16:21:00 12

原创 3.MySQL面试题3

1.B+树中,每个节点对应磁盘的一页

2022-07-30 21:52:00 9

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除