一文教你搞定Java Optional类判空操作

2022-10-04
目录 概述 创建Optional实例 获取Optional中的值 判断Optional是否为空 Optional中的过滤.转换方法 概述 最近项目组内做code review,充斥着大量的.原始的.丑陋的判空语句,大致类似下面的代码: if (user != null) { Address address = user.getAddress(); if (address != null) { Country country = address.getCountry(); if (country

Java面向对象之内部类详解

2022-10-03
目录 前言 内部类概述 内部类的分类 成员内部类 局部内部类 前言 在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类.本篇博客将总结内部类的使用. 内部类概述 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类. 在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类. 内部类一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称.

Java使用ArrayList实现扑克牌的示例代码

2022-10-03
目录 前言 一.项目要求 二.具体实现 2.1 Card类 2.2 生成扑克牌 2.3 打乱顺序 2.4 发牌 三.Test.java 前言 学习了关于集合类的知识,我们可以做一个小项目来加深对集合类知识的学习! 一.项目要求 代码实现,一副扑克牌(不包括大小王)的购买.打乱.发牌. 二.具体实现 2.1 Card类 class Card { private int rank;//数字 private String suit;//花色 public Card(int rank, String s

Java数据结构之线段树中的懒操作详解

2022-10-03
目录 一.问题提出 二.区间更新 三.区间查询 四.实战 1.问题描述 2.输入 3.代码 4.测试 一.问题提出 对于线段树,若要求对区间中的所有点都进行更新,可以引入懒操作. 懒操作包括区间更新和区间查询操作. 二.区间更新 对 [l,r] 区间进行更新,例如将 [l,r] 区间所有元素都更新为 v,步骤如下. 1.若当前节点区间被查询区间[l,r]覆盖,则仅对该节点进行更新并做懒标记,表示该节点已被更新,对该节点的子节点暂不更新. 2.判断是在左子树中查询还是在右子树中查询.在查询过程中,

利用Go语言快速实现一个极简任务调度系统

2022-10-03
目录 引子 思路 实战 交互界面 定时任务 任务执行 代码效果 总结 引子 任务调度(Task Scheduling)是很多软件系统中的重要组成部分,字面上的意思是按照一定要求分配运行一些通常时间较长的脚本或程序.在爬虫管理平台 Crawlab 中,任务调度是其中的核心模块,相信不少朋友会好奇如何编写一个任务调度系统.本篇文章会教读者用 Go 语言编写一个非常简单的任务调度系统. 思路 我们首先理清一下思路,开发最小化任务调度器需要什么. 交互界面(API) 定时任务(Cron) 任务执行(Ex

Python实现自动填写脚本流程详解

2022-10-02
目录 前言 环境使用 模块使用 本次案例代码实现思路 最终效果 代码实现 前言 环境使用 Python 3.8 Pycharm 模块使用 import requests —> 数据请求模块 pip install requests import parsel —> 数据解析模块 pip install parsel from selenium import webdriver —> 自动测试模块 pip install selenium==3.141.0 本次案例代码实现思路 打开考试网

Vue生命周期实例分析总结

2022-10-02
目录 1. 概述 2. 页面钩子函数 3. 生命周期函数 1. 概述 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如需要设置数据监听.编译模板.挂载实例到 DOM.在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数,给予用户机会在一些特定的场景下添加他们自己的代码. 简单来说,生命周期钩子函数就是一堆回调函数,在我们创建实例时,这些回调函数按顺序执行. 2. 页面钩子函数 名称 作用 beforeCreate 在实例初始化之后,数据观测和事件配置之前

深入了解C++智能指针的使用

2022-10-02
目录 一.C++11智能指针概述 二.C++98中的智能指针 三.C++11中的智能指针 1.unique_ptr 2.shared_ptr 3.weak_ptr 一.C++11智能指针概述 在C++中,动态内存的使用时有一定的风险的,因为它没有垃圾回收机制,很容易导致忘记释放内存的问题,具体体现在异常的处理上.想要释放掉抛异常的程序的一些内存,往往需要多次抛异常,这种处理方式是十分麻烦的. 智能指针的本质就是使用一个对象来接管一段开辟的空间,在该对象在销毁的时候,自动调用析构函数来释放这段内存

SpringBoot嵌入式Servlet容器与定制化组件超详细讲解

2022-10-02
目录 嵌入式Servlet容器 1.原理分析 2.Servlet容器切换 3.定制Servlet容器配置 定制化组件 嵌入式Servlet容器 在Spring Boot中,默认支持的web容器有 Tomcat, Jetty, 和 Undertow 1.原理分析 那么这些web容器是怎么注入的呢?我们一起来分析一下 当SpringBoot应用启动发现当前是Web应用,它会创建一个web版的ioc容器ServletWebServerApplicationContext 这个类下面有一个createW

动态上传jar包热部署的实战详解

2022-10-02
目录 定义简单的接口 该接口的一个简单的实现 反射方式热部署 注解方式热部署 测试 近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中.系统完成热部署,并切换该接口的实现. 定义简单的接口 这里以一个简单的计算器功能为例,接口定义比较简单,直接上代码. public interface Calculator {     int calculate(int a, int b);     int add(int a, int b);

SpringBoot DataSource数据源实现自动配置流程详解

2022-10-02
目录 一.重点概念 1.什么是DataSource数据源 2.数据库连接池 二.导入依赖 三.分析自动配置 1.DataSourceAutoConfiguration类 2.DataSourceTransactionManagerAutoConfiguration类 3.JdbcTemplateAutoConfiguration类 4.JndiDataSourceAutoConfiguration类 5.XADataSourceAutoConfiguration类 四.代码样例 一.重点概念 1

Java使用POI导出Excel(一):单sheet

2022-10-02
相关文章: Java使用POI导出Excel(一):单sheet Java使用POI导出Excel(二):多个sheet 相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖  <!--Excel工具--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>po

Python&nbsp;tkinter实现桌面软件流程详解

2022-10-02
目录 前言 环境使用 模块使用 界面代码 功能代码 前言 tkinter:GUI桌面应用开发模块,写软件界面你还可以打包成exe软件, 哪怕你没有python环境, 一样可以用虽然不一定要有界面, 但是有界面, 用户体验很棒… 环境使用 Python 3.8 Pycharm 模块使用 import tkinter import webbrowser 最终实现的效果 界面代码 创建窗口 root = tk.Tk() # 设置标题 root.title('我是标题') # 设置窗体大小 root.g

Java设计模式之命令模式

2022-10-02
本文通过解决老王经常搞错借书人的问题,来引出行为型模式中的命令模式.为了在案例之上理解的更加透彻,我们需要了解命令模式在源码中的应用.最后指出命令模式的应用场景和优缺点. 读者可以拉取完整代码到本地进行学习,实现代码均测试通过后上传到码云. 一.引出问题 老王的书房藏书越来越多,每天来借书的人络绎不绝.每天有人借书.还书.老王将A借的书算到B头上的乌龙事件频出.老王和小王就商量着手解决这个问题. 小王提议,在老王和借书者之间再增加一个“记录员”角色,记录员只管报名字就行了,具体是借什么书由借书者

Vue计算属性与侦听器和过滤器超详细介绍

2022-10-02
目录 1. 计算属性 1.1 使用方法 1.2 案例-购物车合计使用计算属性 2. 侦听器 3. 过滤器 1. 计算属性 1.1 使用方法 概述: 模板中放入太多的逻辑会让模板过重且难以维护,使用计算属性可以让模板变得简洁易于维护.计算属性是基于它们的响应式依赖进行缓存的,计算属性比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化. 计算属性定义在Vue对象中,通过关键词computed属性对象中定义一个个函数,并返回一个值

Java使用POI导出Excel(二):多个sheet

2022-10-02
相关文章: Java使用POI导出Excel(一):单sheet Java使用POI导出Excel(二):多个sheet 相信在大部分的web项目中都会有导出导入Excel的需求,但是在我们日常的工作中,需求往往没这么简单,可能需要将数据按类型分类导出或者数据量过大,需要分多张表导出等等.遇到类似的需求该怎么办呢,别慌,往下看. 一.pom引用 pom文件中,添加以下依赖 <!--Excel工具--> <dependency> <groupId>org.apache.p

图文详解Java中的序列化机制

2022-10-01
目录 概述 对象序列化和反序列化机制 修改默认的序列化机制 使用transient关键字 自定义readObject.writeObject方法 实现Externalizable接口 serialVersionUID的作用 使用序列化clone 概述 java中的序列化可能大家像我一样都停留在实现Serializable接口上,对于它里面的一些核心机制没有深入了解过.直到最近在项目中踩了一个坑,就是序列化对象添加一个字段以后,使用方系统报了反序列化失败,原因是我们双方的序列化对象没有加上seri

WPF实现窗体亚克力效果的示例代码

2022-10-01
WPF 窗体设置亚克力效果 框架使用大于等于.NET40. Visual Studio 2022. 项目使用 MIT 开源许可协议. WindowAcrylicBlur 设置亚克力颜色. Opacity 设置透明度. 实现代码 1) 准备WindowAcrylicBlur.cs如下: using System; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Interop; usi

.Net中Task&nbsp;Parallel&nbsp;Library的基本用法

2022-10-01
我们知道,每个应用程序就是一个进程,一个进程有多个线程.Task Parallel Library为我们的异步编程.多线程编程提供了强有力的支持,它允许一个主线程运行的同时,另外的一些线程或Task也同时运行.本篇体验基本用法. 基本用法 Taks的构造函数接收的类型是Action,也就是一个委托. static void Main(string[] args) { var t1 = new Task(() => { Console.WriteLine("任务1开始"); Thr

Java&nbsp;BigDecimal正确用法详解

2022-10-01
目录 一.背景 二.事故案例 1.问题 2.问题复现 3.源码分析 4.原因分析 三.总结 四.工具类 一.背景 BigDecimal 平时主要用于计算金钱时,其自身提供了很多的构造方法,但是这些构造方法使用不当会造成精度丢失,从而引起事故. 二.事故案例 1.问题 收银台计算商品价格报错,导致订单无法支付 2.问题复现 public static void main(String[] args) { BigDecimal bigDecimal=new BigDecimal(88); Syste