
java学习
文章平均质量分 84
生生不息~
程序员一枚
展开
-
Java常用API合集(一)
我们前面使用StringBuilder拼接字符串的时候,代码写起来还是有一点麻烦,而StringJoiner号称是拼接神器,不仅效率高,而且代码简洁。经过验证,直接使用Stirng拼接100万次,等了1分钟,还没结束,我等不下去了;Math是数学的意思,该类提供了很多个进行数学运算的方法,如求绝对值,求最大值,四舍五入等,话不多说,直接上代码。这个类可以用来获取JVM的一些信息,也可以用这个类去执行其他的程序。需求:要求将java的int类型数组,转成"【1,2,3】"格式的样式输出。原创 2023-12-15 17:06:36 · 1075 阅读 · 0 评论 -
【反射】Java小白也能手写的简易版框架
在日常实习开发中,反射基本其实是用不太到的。一个我们常见的例子:平时我们用IDEA开发程序时,用对象调用方法,IDEA会有代码提示,idea会将这个对象能调用的方法都给你列举出来,供你选择,如果下图所示。创建一个测试类,在测试中类创建一个Student对象,创建一个Teacher对象,用ObjectFrame的方法把这两个对象所有的属性名和属性值写到文件中去。再次强调一下设置值、获取值的方法时Filed类的需要用Filed类的对象来调用,而且不管是设置值、还是获取值,都需要依赖于该变量所属的对象。原创 2023-12-15 16:51:38 · 1525 阅读 · 0 评论 -
【BigDecimal类—常用API系列】解决java浮点计算精度损失问题
其底层原理会涉及到很多计算机组成原理方面的知识,包括计算机中二进制和十进制之间的转换以及计算机对浮点数的存储等等,这里不深入讲解,作为开发人员知道有这个事情以及解决方案就好啦!使用float和double运算时会造成结果的不准确,因此浮点数运算的时候,我们可以使用java提供的BigDecimal,使用BigDecimal对小数进行运算的时候,会先将数字扩大N倍,同时保存精度,转为整数进行相应的运算,最后再转为小数。运行以上代码,我们会发现,结果并和我们想看到的不太一样。原创 2023-12-13 15:01:57 · 632 阅读 · 0 评论 -
【设计模式】模板方法模式
模板方法模式(Template Method Pattern):定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是一种类行为型模式。原创 2023-12-13 10:11:10 · 1366 阅读 · 0 评论 -
单元测试技术
除了@Test注解,还有一些其他的注解,我们要知道其他注解标记的方法什么时候执行,以及其他注解在什么场景下可以使用。前面的注解是基于Junit4版本的,再Junit5版本中对注解作了更新,但是作用是一样的。②为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须:公共、无参、无返回值)需求:某个系统,有多个业务方法,请使用Junit单元测试框架,编写测试代码,完成对这些方法的正确性测试。③测试方法上必须声明@Test注解,然后在测试方法中,编写代码调用被测试的业务方法进行测试;原创 2023-12-12 23:03:57 · 1464 阅读 · 2 评论 -
【特殊文件(一)】属性文件读写实操
IO流是用来读、写文件中的数据。但是我们接触到的文件大部分都是普通的文本文件,普通的文本文件里面的数据是没有任何格式规范的,用户可以随意编写。但是在java项目的开发中,我们还会遇到一些特殊的文本文件,这些文件是有一些格式要求的,方便程序对文件中的数据进行处理。比如,后面我们会用到两种特殊的文本文件,一种是properties文件,还有一种是xml文件。后缀为.properties的文件,称之为属性文件,它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。原创 2023-12-11 14:59:43 · 920 阅读 · 0 评论 -
【日志技术】附Logback入门教程
而程序中的日志,通常就是一个文件,里面记录了程序运行过程中产生的各种数据。Logback提供了一个核心配置文件logback.xml,日志框架在记录日志时会读取配置文件中的配置信息,从而记录日志的形式。这样我们只要会一套日志框架,那么其他的也就可以通过用,甚至可以在多套日志框架之间来回切换。下面我们快速使用一下Logback日志框架,使用Logback记录几条日志信息到文件中去和将日志信息打印在控制台上。日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下:(优先级依次升高)原创 2023-12-11 14:43:58 · 1248 阅读 · 0 评论 -
【IO流(1)】——基于字节流实现的文件复制及资源释放新写法
我们知道File只能操作文件,但是不能操作文件中的内容。而IO流则就是来操控文件中的内容的,例如上述需求的实现。IO流的作用:就是可以对文件或者网络中的数据进行读、写的操作。如下图所示把数据从磁盘、网络中读取到程序中来,用到的是输入流。把程序中的数据写入磁盘、网络中,用到的是输出流。简单记:输入流(读数据)、输出流(写数据)其核心就是以程序为中心,读到程序内存中来,那就是输入,写到磁盘网络中去那就是输出。IO流在Java中有很多种,不同的流来干不同的事情。原创 2023-12-09 12:05:51 · 1120 阅读 · 0 评论 -
454. 四数相加 II
本题是使用哈希法的经典题目,力扣15.三数之和 (opens new window),力扣18.四数之和 (opens new window)并不合适使用哈希法,因为三数之和和四数之和这两道题目使用哈希法在不超时的情况下做到对结果去重是很困难的,很有多细节需要处理。而这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况,所以相对于题目18. 四数之和,题目15.三数之和,还是简单了不少!原创 2023-12-09 11:37:41 · 443 阅读 · 0 评论 -
Java线程池—附阿里巴巴Java开发手册强制规范要求
线程池就是一个可以复用线程的技术。想象一下,如果不使用线程池会有什么问题?假设:用户每次发起一个请求给后台,后台就创建一个新的线程来处理,下次新的任务过来肯定也会创建新的线程,如果用户量非常大,创建的线程也讲越来越多。然而,创建线程是开销很大的,并且请求过多时,会严重影响系统性能。而使用线程池,就可以解决上面的问题。如下图所示,线程池内部会有一个容器,存储几个核心线程,假设有3个核心线程,这3个核心线程可以处理3个任务。原创 2023-12-08 16:06:25 · 2318 阅读 · 0 评论 -
Java线程安全问题及其三大线程同步“锁”方案
线程安全问题指的是,多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题。下面通过一个取钱的案例演示一下。案例需求如下:场景:杨过和小龙女是一对夫妻,他们有一个共享账户,余额是10万元,杨过和小龙女同时来取钱,并且2人各自都在取钱10万元,可能出现什么问题呢?杨过和小龙女假设都是一个线程,本来每个线程都应该执行完三步操作,才算是完成的取钱的操作。但是真实执行过程可能是下面这样子的 ① 杨过线程只执行了判断余额是否足够(条件为true),然后CPU的执行权就被小龙女线程抢走了。原创 2023-12-08 15:45:37 · 1195 阅读 · 0 评论 -
【多线程】线程的三种常见创建方式
不能直接去调用run方法,如果直接调用run方法就不认为是一条线程启动了,而是把Thread当做一个普通对象,此时run方法中的执行的代码会成为主线程的一部分。此时执行结果是这样的。**线程其实是程序中的一条执行路径。****那怎样的程序才是多线程程序呢?** 例如12306网站就是支持多线程的,因为同时可以有很多人一起进入网站购票,而且每一个人互不影响。再比如百度网盘,可以同时下载或者上传多个文件。这些程序中其实就有多条执行路径,每一条执行执行路径就是一条线程,所以这样的程序就是多线程程序。下面会逐一介原创 2023-12-06 21:37:29 · 1369 阅读 · 0 评论 -
File类—递归文件搜索执行脚本文件
为了实现该需求,我们需要了解File类和Runtime类的基本使用,下面会一一介绍,最后会给出最终的代码实现!4.当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在FIle数组中,包含隐藏文件。3.当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹路径放在File数组中,并把数组返回。3.delete(): 文件可以直接删除,但是文件夹只能删除空的文件夹,文件夹有内容删除不了。1.先调用文件夹的listFiles方法,获取文件夹的一级内容,得到一个数组。原创 2023-12-05 22:49:50 · 1071 阅读 · 0 评论 -
字符集——带你了解UTF-8的前世今生
咱们国家可以用GBK字符集来表示中国人使用的文字,那世界上还有很多其他的国家,他们也有自己的文字,他们也想要自己国家的文字在计算机中处理,于是其他国家也在搞自己的字符集,就这样全世界搞了上百个字符集,而且各个国家的字符集互不兼容。在Unicode字符集中,采用一个字符4个字节的编码方案,又造成另一个问题:如果是说英语的国家,他们只需要用到26大小写字母,加上一些标点符号就够了,本身一个字节就可以表示完,用4个字节就有点浪费。,为了能够显示英文字母,GBK字符集也兼容了ASCII字符集,原创 2023-12-05 22:13:00 · 1870 阅读 · 0 评论 -
JDK8新特性——Lambda表达式
除了基本使用以外,java还提供了Lamdba表达式的几种简化写法。,只有基于函数式接口的匿名内部类才能被Lambda表达式简化。使用Lambda表达式,简化匿名内部类书写,案例如下。Lambda表达式是JDK8新增的一种语法形式,其。在使用Lambda表达式之前,像这样的接口,我们称之为。原创 2023-12-04 21:38:18 · 549 阅读 · 0 评论 -
JDK8新特性——Stream流
Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。Stream流的终结方法的特点是,调用完方法之后,其结果就不再是Stream流了,所以不支持链式编程。,找出姓张,且是3个字的名字,存入到一个新集合中去。流的一般处理流程如下,后面我们一步步学习。1、如何获取List集合的Stream流?2、如何获取Set集合的Stream流?3、如何获取Map集合的Stream流?4、如何获取数组的Stream流?需求:有一个List集合,元素有。原创 2023-12-04 21:31:09 · 761 阅读 · 0 评论 -
【Java内部类】带你玩转Java内部类那些事
内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。当一个类的内部,包含一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。比如:汽车、的内部有发动机,发动机是包含在汽车内部的一个完整事物,可以把发动机设计成内部类。//内部类} }内部类有四种形式,分别是成员内部类、静态内部类、局部内部类、匿名内部类。后面依次介绍!原创 2023-12-01 09:47:05 · 496 阅读 · 0 评论 -
【Java泛型】带你玩转泛型那些事
接下来我们学习一下自定义泛型类,但是有一些话需要给大家提前交代一下:泛型类,在实际工作中一般都是源代码中写好,我们直接用的,就是ArrayList这样的,自己定义泛型类是非常少的。自定义泛型类的格式如下//这里的其实指的就是类型变量,可以是一个,也可以是多个。字母随意public class 类名{接下来,我们自己定义一个MyArrayList泛型类,模拟一下自定义泛型类的使用。注意这里重点仅仅只是模拟泛型类的使用,所以方法中的一些逻辑是次要的,也不会写得太严谨。原创 2023-12-01 09:38:07 · 964 阅读 · 0 评论 -
Java基本类型包装类
文章目录包装器自动装箱包装器有时,我们需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。例如,Integer类对应基本类型int。通常,这些类称为包装器。这些包装器有显而易见的名字:Integer、Long、Float、Double、Short、Byte、Character和Boolean(前6个类派生于公共的超类Number)。包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,包装器类还是final,因此不能派生它们的子类。自动装箱...原创 2023-11-29 08:44:49 · 655 阅读 · 0 评论 -
设计模式应用之java代码实现(一)
本篇博客截取的是**《C#设计模式(第2版)》这本书课后习题里面的各个设计模式的典型习题并完成java代码实现,每个代码实现都有相应的业务需求背景可以帮助更好的理解设计模式,其中包括的设计模式包括外观模式、享元模式、职责链模式、命令模式、备忘录模式、迭代器模式、观察者模式以及状态模式**。后续会继续出其他设计模式的续集并就一些应用广泛的设计模式进行深入剖析。原创 2023-11-27 09:24:15 · 1581 阅读 · 0 评论 -
Java匿名内部类和lambda表达式初探
最近在写java事件处理的时候,一开始我基本都是使用传统的java事件处理机制,把实现的接口对象new出来,传到监听器里面去,然后后面用匿名内部类以及lambda表达式的写法都写了一遍(在很多框架的源码里面匿名内部类以及lambda表达式感觉比较常见),然后我发现我对这个匿名内部类以及lambda表达式只是知道写法,却并不知所以然,我也很好奇三种写法中编译器大概做了哪些优化,所以略微去了解了一下做做笔记。原创 2023-10-22 18:16:28 · 257 阅读 · 1 评论 -
Web项目开发之登录校验分析
会话技术统一拦截技术Cookie(客户端会话跟踪技术)数据存储在客户端浏览器当中Session(服务端会话跟踪技术)数据存储在储在服务端令牌Jwt技术Servlet规范中的Filter过滤器Spring提供的interceptor拦截器。原创 2023-10-25 16:54:30 · 161 阅读 · 1 评论 -
spring三层架构中的全局异常处理器
以上就是全局异常处理器的使用用法,主要涉及到两个注解@RestControllerAdvice //表示当前类为全局异常处理器@ExceptionHandler //指定可以捕获哪种类型的异常进行处理。原创 2023-10-23 23:13:10 · 102 阅读 · 0 评论 -
Java中final关键字详解
文章目录final实例字段final类和方法将方法和类定义为final的主要原因final实例字段可以将实例字段定义为final,这样的字段必须在构造对象时初始化。也就是说,必须确保在每一个构造器执行之后,这个字段的值都已经设置,并且以后不能在修改这个字段。final修饰符对于类型为基本类型或者不可变类的字段尤其有用。(如果类中的所有方法都不会改变其对象,这样的类就是不可变的类。例如,String就是不可变的)对于可变的类,使用final修饰符可能会造成混乱。例如,考虑以下字段:private f原创 2021-02-16 21:45:49 · 1362 阅读 · 0 评论 -
关于java的常见误解和解释
文章目录误解一:JavaScript是Java的简易版误解二:java是解释性的,因此对于关键的应用程序速度太慢了误解三:所有的Java程序都是在网页中运行的误解四:java作为当下的一门热门编程语言,在很多领域发挥着举足轻重的作用,可是很多初学者或者非科班出身的小伙伴总是对于java有着一些这样或者那样的误解,下面将列举出一些常见的误解,并给出相应的解释。误解一:JavaScript是Java的简易版JavaScript是一种可以在网页中使用的脚本语言,它由Netscape发明,最初的名字是Live原创 2021-02-16 20:42:29 · 376 阅读 · 2 评论 -
Chrome浏览器开发者工具使用开发详解
文章目录1.如何调出开发者工具2.开发者工具初步介绍2.1元素(Elements)2.2控制台(Console)2.3源代码(Source)2.4Network详细介绍3.Network主题内容介绍4.请求文件具体说明5.细节补充1.如何调出开发者工具按F12调出右键检查(或快捷键Ctrl+Shift+i)调出2.开发者工具初步介绍chrome开发者工具最常用的四个功能模块:元素(ELements)、控制台(Console)、源代码(Sources),网络(Network)。元素(Ele原创 2021-02-07 19:50:46 · 10477 阅读 · 0 评论 -
Java时间日期类LocalDate的运用
文章目录日期时间LocalDate转化为字符串获取日期时间具体的值字符串转化为日期时间LocalDate时间日期的计算两个日期时间的判断在java中,除了String字符串、int数字类型、double浮点类型,还有一个不太常见但是却也很使用的LocalDate日期类型,这是java8版本才推出的。对于LocalDate日期类型这种工具类,虽然不需要熟练掌握,但是学习它的一些常用用法对于我们日常的一些学习和工作开发都是很有必要的,下面将以代码示例的形式给大家介绍日期类型LocalDate的一些常用用法。原创 2021-02-07 19:25:50 · 2328 阅读 · 2 评论 -
Java常用接口——Map与List详解
文章目录MapList如果大家对算法有一些了解,应该会知道这两个都是具体的数据结构。基于接口的原则,其实大家会想到即使同一个数据结构也可以有多种实现方式。而我们在设计我们的java接口、对象的时候其实并不需要考虑实现,一般就是用接口定义类型。这也是面向接口开发的核心点之一:尽可能用接口来设计属性或者方法。下面我们需要了解一下java当中如何使用这两个数据结构的,详解如下:Map如上图,Map(映射)是遵循Key:value这样的形式的集合。key、value的类型可以是任何的java对象。我们大部原创 2021-02-06 17:11:11 · 942 阅读 · 0 评论 -
java字符串String常用方法操作详解
文章目录String简介字符串长度length取出字符串中的一个字charAt去掉左右多余的空格trim查找字符串indexOf字符串拼接substring字符串开始和结束内容判断startsWith/endsWith字符串替换replaceAll字符串分割split大小写转化toUpperCase/toLowerCase字符串比较equals数字和字符串转化Interger.parseInt字符串转化为数字数字转化为字符串String简介在计算机的世界中,很多时候离不开字符串的处理,因为从纸质的内容变原创 2021-02-05 17:37:09 · 657 阅读 · 0 评论 -
JSON与FastJSON详解
文章目录JSONJSON简介JSON基本格式JSON语法规则JSON值的类型JSON范例FastJSONFastJSON简介对象序列化使用FastJSON序列化对象使用FastJSON反序列化对象反序列化为具体对象反序列化为Map反序列化为ListJSONJSON简介JavaScript Object Notation(JavaScript 对象表示法)是目前最常用的执行对象序列化的方式。虽然 json 最初是为了在 JavaScript 语言中使用的,但实际上 json 本身跟语言没有任何关系,各原创 2021-02-05 12:47:24 · 958 阅读 · 2 评论 -
程序员必备预科知识
程序员必备预科知识计算机硬件和冯·诺依曼结构计算机硬件是指一些物理装置按照系统结构的要求构成一个有机的整体为计算机软件运行提供物质基础。计算机硬件主要包括CPU,内存,主板,显示器,硬盘,主机箱,鼠标,显卡等等。被称为计算机之父的冯·诺依曼提出了冯·诺伊曼结构软件计算机软件按照其功能划分为系统软件与应用软件。系统软件:DOS(Disk Operating System)、Window、Linux、Mac、Android、iOS、Unix;应用软件:qq,微信,WPS等等。程序猿常用快捷键原创 2021-01-23 17:42:54 · 365 阅读 · 0 评论 -
博客入门第一步——markdown的基本语法
优快云-markdown编辑器前沿欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前沿对于一名程序员来说,写博客是十分重要的。首先,写博客能够帮助我们总结和思考,有时候我们一直赶路,却忘了原创 2021-01-21 12:32:45 · 427 阅读 · 0 评论