自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王德昌的博客

Java程序员一枚;学海无涯,岂能回头;学习路上关注我,一起共同进步;

  • 博客(114)
  • 资源 (4)
  • 收藏
  • 关注

原创 try-with-resource如何优雅的关闭io流

JAVA的一大特性就是JVM会对内部资源实现自动回收,即自动GC,给开发者带来了极大的便利。但是JVM对外部资源的引用却无法自动回收,例如数据库连接,网络连接以及输入输出IO流等,这些连接就需要我们手动去关闭,不然会导致外部资源泄露,连接池溢出以及文件被异常占用等。传统的手动释放外部资源一般放在一般放在try{}catch(){}finally{}机制的finally代码块中,因为finally代码块中语句是肯定会被执行的,即保证了外部资源最后一定会被释放。同时考虑到finally代码块中也有可能出现异

2020-12-29 13:10:42 21360 102

原创 String.Join的使用,让代码更优美

【善用新语法,让代码更优美】jadk1.8为我们提供了String.join()方法几个使用的例子。让我们在项目灵活的使用它,使代码更加优美package com.niu.demo;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @description: String.Join的使用 * @author: nxq email: niuxiangqian163@16

2020-12-19 14:19:58 30225 54

原创 Python爬虫入门之初遇lxml库

Python爬虫入门之初遇lxml库爬虫是什么所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。爬虫三要素抓取 分析 存储抓取网页urllib库使用import urllib.requestresponse = urllib.request.urlopen('https://laoniu.blog.csdn.net/')print(response.read().dec

2020-12-19 00:42:15 29837 41

原创 【延时任务处理、订单失效】RabbitMQ死信队列实现

订单失效问题订单失效问题比较麻烦的地方就是如何能够实时获取失效的订单。对于这种问题一般有两种解决方案:定时任务处理,延时任务处理定时任务处理用户下订单后先生成订单信息,然后将该订单加入到定时任务中(30分钟后执行),当到达指定时间后检查订单状态,如果未支付则标识该订单失效。 定时去轮询数据库/缓存,看订单的状态。这种方式的问题很明显,当集群部署服务器的时候需要做分布式锁进行协调,而且实时性不高,对数据库会产生压力延时任务处理当用户下订单后,将用户的订单的标识全部发送到延时队列中,3.

2020-12-18 09:48:26 31103 27

原创 Maven子父工程依赖配置,小白也能看得懂

Maven子父工程依赖配置你还在对Maven子父工程依赖配置感到疑惑吗?看了这篇文章你讲对它们有个新的认知在阅读本文之前你要已经了解并使用过maven来管理项目的jar包直接开干环境/版本一览:开发工具:Intellij IDEA 2020.2.3 jdk:1.8.0_211 maven:3.6.3创建父工程新建maven项目 这里不要勾选maven模版设置项目信息修改父工程pom.xml<?xml version="1.0" encoding="UTF.

2020-12-17 15:40:16 33598 11

原创 接口和抽象类的区别?解析接口和抽象类的特点和用法

接口是一种用于声明一组方法的类型,它只定义了方法的签名而没有具体的实现。接口的定义使用interface接口中的方法默认都是抽象方法,不需要使用abstract关键字进行修饰。接口还可以包含常量字段,这些字段默认都是类型的。接口可以被其他类实现,并通过实现接口的方式来声明自己具备接口中定义的方法。接口只能包含抽象方法和常量字段,不能定义具体的方法实现。一个类可以实现多个接口,从而具备多个接口中定义的方法。接口之间可以有继承关系,一个接口可以继承自另一个接口。

2023-08-22 18:09:19 311

原创 Java List的扩容机制原理及应用

在Java中,List是一种非常常用的数据结构,用于存储有序的元素集合。List的底层实现有多种,如ArrayList、LinkedList等。在使用List时,我们经常会遇到一个问题:当元素数量超过了List的初始容量时,List会如何扩容?本文将分析Java List的扩容机制原理,并通过示例代码和测试代码来加强阐述内容。

2023-08-21 17:27:43 1588

原创 SpringBoot 使用Hibernate (JPA)

Hibernate是一个开源的对象关系映射(ORM)框架,为Java语言提供了一种与数据库交互的简单、高效的方式。SpringBoot是一个快速开发框架,简化了Spring应用的配置和部署。本文将介绍如何在SpringBoot项目中使用Hibernate来进行数据持久化操作。

2023-08-20 19:14:44 1076

原创 Java使用Hutool

本文介绍了Java工具集Hutool的基本用法和常见功能,包括字符串处理、日期处理、加密解密和文件操作。通过本文的阐述和示例代码,读者可以更好地理解和使用Hutool工具库,提高Java开发效率。

2023-08-18 15:06:06 852

原创 Windows、Mac、Linux端口占用解决

在本文中,我们介绍了在Windows、Mac和Linux操作系统上解决端口占用问题的方法。通过查找占用端口的应用程序并结束该应用程序的进程,可以解决大部分的端口占用问题。此外,还提供了一些避免端口占用冲突的建议。

2023-08-17 17:54:59 1886

原创 java.net.BindException: Address already in use: bind

"java.net.BindException: Address already in use: bind"是一个常见的Java网络编程异常。它通常在尝试绑定一个已经被占用的端口时抛出。这个异常告诉我们,所尝试绑定的地址已经被其他进程占用了。

2023-08-17 17:50:46 8315 1

原创 GET和POST的区别

本文详细讨论了GET和POST请求的区别,包括语义、参数传递方式、数据长度限制、性能比较、安全性比较和使用场景等方面。了解和正确选择GET和POST请求方法,对于Web开发非常重要。通过使用GET请求,可以获取资源并进行查询操作,GET请求具有良好的性能和可缓存的特性。而POST请求适用于创建、修改和删除资源等操作,相对于GET请求具有更好的安全性。在实际开发中,我们需要根据具体需求合理选择GET或POST请求,并在前端和后端进行适当的验证和防护措施,以确保数据的安全性和正确性。

2023-08-16 18:11:10 297

原创 User-Agent介绍

本文介绍了User-Agent的基本概念、用法和在实际开发中的应用场景。通过合理利用User-Agent信息,我们可以为不同的用户设备和浏览器提供定制化的功能和体验,同时也能够提升网站的兼容性和安全性。

2023-08-15 18:32:17 1789

原创 Go语言入门

本文介绍了Go语言的基础知识和常用功能,包括安装Go、Hello World程序、基本数据类型、控制流程、函数、并发编程和测试等方面。希望读者能通过本文对Go语言有一定的了解,并能在实际项目中灵活运用。

2023-08-14 20:48:45 463

原创 Java线程池参数优化详解和使用场景

线程池在Java多线程编程中扮演着重要的角色。它可以有效地管理和复用线程,避免频繁地创建和销毁线程带来的资源消耗。然而,在实际应用中,线程池的性能和稳定性往往需要根据具体的场景进行参数优化。本文将从线程池的原理入手,结合使用场景,详细介绍线程池的参数优化方法,并给出相应的示例代码和测试用例,加深对线程池的理解。通过本文的介绍,我们了解了Java线程池的原理、参数优化方法和使用场景。合理地设置线程池的参数,可以提高系统的性能和稳定性,提高系统的吞吐量和响应时间。

2023-08-11 20:46:48 278

原创 Java线程池的类型和使用

线程池是一种执行多个任务的并发模型。它由一个线程队列和一组可重用的线程组成,线程池中的线程可以并发地执行多个任务,避免了线程的频繁创建和销毁。本文介绍了Java线程池的类型和使用。通过固定大小的、无限大小的、单线程的以及定时任务的等不同类型的线程池,我们可以根据实际需求选择合适的线程池来提高程序的性能和效率。

2023-08-11 20:39:10 357

原创 Java创建线程的几种方式

在Java中,线程是一种轻量级的执行单元,可以同时执行多个任务。创建线程是Java多线程编程的基本操作之一,本文介绍了Java中创建线程的几种方式,包括继承Thread类、实现Runnable接口、使用Callable和Future、以及使用线程池。通过示例代码和测试用例展示了每种方式的使用方法和原理解释。

2023-08-10 16:17:05 454

原创 MySQL判断非空和非空函数

本文介绍了MySQL中判断字段是否为空的常用方法,包括使用IS NULL和IS NOT NULL以及COALESCE函数。同时,还介绍了对非空字段进行处理的非空函数,包括IFNULL函数和NULLIF函数。通过示例代码和测试用例,我们加强了对这些方法和函数的理解。

2023-08-09 15:38:17 2182 2

原创 Java8新特性,Lambda,Stream流

总结,Java 8引入了一些非常有用的新特性,使Java开发变得更加快速和便捷。这些新特性提高了Java的表现力,提升了开发者的生产力,并使得Java能够更好地满足现代应用开发的需求。description:介绍Java 8的新特性,包括Lambda表达式,Stream API, Optional类, Nashorn JavaScript引擎,新日期和时间API。

2023-08-08 18:36:13 254

原创 SpringBoot配置文件多环境

在应用程序的开发过程中,我们常会设计不同的环境,例如:开发环境、测试环境和生产环境,这些环境对应的数据库等配置可能都是不同的。因此我们需要根据不同的环境加载不同的配置文件。SpringBoot给我们提供了这么一种机制,我们只需要简单的配置就能实现。本文将详细介绍如何在SpringBoot项目中配置多环境,通过简单的配置,实现在不同环境加载不同的配置文件。同时也提供了相应的测试代码来验证配置的有效性。。

2023-08-07 17:00:39 395

原创 SpringBoot跨域及解决方式

跨域”,从字面上理解就是指跨越了域。在这里,“域"是指的是"域名”。在浏览器中,出于安全考虑,同源策略会限制来自不同源(即不同域名、协议或者端口)的"document"或脚本等资源能进行的交互。例如,浏览器允许脚本在用户浏览器内对自身创建的文档或元素进行更改,但是禁止脚本对来自不同源的窗口或文档进行任何操作。以上就是关于SpringBoot跨域问题的讨论以及解决方式,希望对大家有所帮助。在实际的开发过程中,还需要根据实际的业务需求来选择合适的解决方案。

2023-08-06 18:27:22 246

原创 Map按key、value、对象字段排序

在Java中,我们常常使用Map来存储键值对数据。然而,有时候我们需要对Map中的元素进行排序,可能按照key排序,可能按照value排序,甚至是按照对象字段排序。本文就将介绍如何使用Java去实现这些排序。如何使用Java对Map进行按key排序、按value排序和按对象字段排序

2023-08-06 18:07:54 1192

原创 线程、进程的区别

了解Java中的线程和进程,以及单线程和多线程的区别。深入理解并发编程的复杂性,提高程序的性能和效率。

2023-08-05 17:20:55 187

原创 MyBatis的三级缓存

关于MyBatis三级缓存的技术文章,从一级缓存到二级缓存,再到三级缓存,详细分析了它们的实现方式和使用场景,对于理解MyBatis提供的缓存机制有较大的帮助。同时,文章也给出了相应的示例代码和测试用例,以便读者更好地理解和使用MyBatis的缓存机制。

2023-08-04 10:45:50 1167

原创 List与Set的区别

List与Set在Java和Python等主流编程语言中都是重要的集合类型。本文详细介绍了它们的特性、原理,并通过示例代码进行演示。

2023-08-03 14:14:44 1236

原创 CopyOnWriteArrayList底层原理

深入剖析了CopyOnWriteArrayList的底层原理和适用场景,提供了实例代码,帮助读者更好的理解和使用这个类。

2023-08-03 14:06:48 284

原创 Java HashMap什么时候进行扩容呢?

详细介绍了Java中HashMap的扩容机制,讨论了何时触发扩容,以及扩容的具体过程。让我们更深入理解Java中HashMap的工作原理,提高编程效率。

2023-08-02 19:34:30 522

原创 Redis中缓存穿透、击穿、雪崩以及解决方案

详解Redis中的缓存穿透、击穿、雪崩问题及其解决方案,包括布隆过滤器、空值缓存、设置永不过期的热点数据、加互斥锁和设定随机的过期时间等策略。

2023-08-02 18:31:21 635

原创 Jvm启动参数优化和例子

Jvm(Java虚拟机)是Java语言的基石,对于Java应用的性能至关重要。而Jvm启动参数的优化是提高Java应用性能的一个重要手段。Jvm启动参数的优化及示例,包括JVM性能优化、内存管理、垃圾回收、并发等方面的内容,帮助开发者更好地理解和优化Jvm的启动参数。

2023-08-01 16:13:54 232

原创 Java的NullPointerException

这篇文章详细介绍了Java的NullPointerException,包括其原因,以及如何通过使用Java 8的Optional类以及Java 7的Objects.requireNonNull()方法来避免NullPointerException。

2023-08-01 11:02:30 120

原创 Redis的基本使用命令

本文详细介绍了Redis数据库中的一些核心和常用的命令,涵盖了Key命令,String命令,Hash命令,List命令以及Set命令的使用方法。

2023-07-31 19:35:30 480

原创 如何理解MySQL的事务

事务是数据库管理系统执行过程中的一个逻辑单位,由一条或多条SQL语句构成。MySQL是一种关系型数据库,支持ACID四大特性(Atomicity 原子性,Consistency 一致性,Isolation 隔离性,Durability 持久性)的事务处理。这个概念在数据库操作中,对于保证数据的一致性和完整性起到关键作用。

2023-07-31 17:09:12 364

原创 OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图功能的chatgpt!

OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆功能的chatgpt!预览模型:GPT-3.5-turbo。

2023-03-23 16:08:46 7942 7

原创 zsh compinit: insecure directories, run compaudit for list.Ignore insecure directories and continue

解决:zsh compinit: insecure directories, run compaudit for list.Ignore insecure directories and continue [y] or abort compinit [n]?

2022-10-28 10:40:52 891

原创 getUserProfile:fail can only be invoked by user TAP gesture

获取用户信息失败,error:getUserProfile:fail can only be invoked by user TAP gesture官方获取用户信息调整通告:小程序登录、用户信息相关接口调整说明 | 微信开放社区解决wx.getUserProfile(Object object)该接口必须用户点击才可以调通,所以改造下方法getUserInfo(e) { var _this = this wx.showModal({ title: '温馨提示

2021-12-25 18:07:33 20923

原创 (程序员面试金典)面试题 01.04. 回文排列

学而不思则罔思而不学则殆。此处仅记录我在力扣学习算法与数据结构的笔记,用于加深记忆难度:简单给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)思路: 看看奇数的字符是否超过一个,超过一个则定然不是回文串。想办法计数先看一下结果:执行用时:...

2021-10-16 16:35:30 452

原创 (程序员面试金典)面试题 01.03. URL化

学而不思则罔思而不学则殆。此处用于仅记录我在力扣学习算法与数据结构的笔记力扣https://leetcode-cn.com/problems/string-to-url-lcci/URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例 1:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"..

2021-10-16 15:31:35 295

原创 Java重载方法匹配优先级

Java重载方法匹配优先级 在我们学习Java的时候关于重载有个小的知识点叫方法重载匹配优先级。虽然javac编译器能确定方法的重载版本,但是在很多情况下重载的版本并不是唯一的,往往只能确定一个相对合适的版本。请看以下代码你觉得输出的内容是什么呢?package cn.laoniu;import java.io.Serializable;public class Reload { public void sayType(Character arg) { System.ou...

2021-04-13 19:40:07 1295 2

原创 Call From localhost/127.0.0.1 to ubuntu-linux:9000 failed on connection exception:

java操作Hadoop的时候:Call From localhost/127.0.0.1 to ubuntu-linux:9000 failed on connection exception连接拒绝当指定地址有一台机器,但客户端使用的特定TCP端口上没有程序监听时,您将获得ConnectionRefused异常-并且没有防火墙阻止静默删除TCP连接请求。如果您不知道什么是TCP连接请求,请查阅规范。除非两端存在配置错误,否则常见的原因是Hadoop服务没有运行。当集群关闭时,这种堆栈.

2021-03-03 18:15:29 2124 5

原创 mybatis plus 出现 Invalid bound statement (not found)

mybatis-plus 3.4.1按照官网的配置出现了如下错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.niu.manager.mapper.DepartmentMapper.selectList at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:...

2020-12-31 14:43:11 28543 22

java作业学生成绩管理系统(控制台实现)

java作业学生成绩管理系统(控制台实现),适合刚学习java面向对象的同学

2020-12-24

html js获取当前位置

html js获取当前位置

2020-12-19

Visual Studio_2019.dmg

Visual Studio_2019.dmg下载 mac版本

2020-12-19

redis-port.redis-port

redis-port工具,可以用来跨服务器,机房,集群等进行传输

2019-10-25

空空如也

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

TA关注的人

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