自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注后端开发

后端开发

  • 博客(75)
  • 资源 (3)
  • 收藏
  • 关注

原创 目前比较常用的Java操作文档工具库

Apache POI:Apache POI是一个开源的Java API,用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。它提供了丰富的功能,如读取、写入、编辑和转换Word文档。JExcelAPI:JExcelAPI是一个开源的Java库,用于读取和写入Excel文件。它提供了简单易用的API,可以操作Excel文件的各种元素,如单元格、行、列等。Apache PDFBox:Apache PDFBox是一个开源的Java库,用于处理PDF文件。

2023-06-30 16:35:44 725 1

原创 JUC-ReentrantLock 源码

ReentrantLock 的 lockInterruptibly() 方法是一个可中断的获取锁的方法,它会在等待锁的过程中响应中断信号,如果当前线程被中断,则抛出 InterruptedException 异常。公平锁会按照线程请求锁的顺序来获取锁,而非公平锁则会优先考虑已经在等待队列中的线程,从而可能导致新的线程插队获取锁。ReentrantLock 是一个可重入锁,它通过一个 int 类型的 state 变量来表示锁的状态,其中高 16 位表示持有锁的线程的数量,低 16 位表示当前线程重入的次数。

2023-06-10 19:12:06 736

原创 STOMP-基于文本的简单消息协议

其中,COMMAND代表STOMP命令,比如CONNECT、SUBSCRIBE、SEND等;:STOMP协议可以用于构建高性能、可伸缩的消息队列系统,支持多个消费者订阅同一个目标。:STOMP协议可以用于构建物联网应用,将设备产生的数据通过STOMP消息传递到后端处理系统进行分析和处理。:STOMP协议可以用于构建事件驱动架构,将系统中的各种事件通过STOMP消息进行传递和处理。:STOMP协议可以用于构建实时通信系统,比如聊天室、协作工具等,支持广播消息和点对点消息。

2023-04-09 11:58:38 1335

原创 实现在线聊天技术有多种方案

WebSocket是实现在线聊天等需要实时性的场景的最佳选择,但由于其实现复杂、对服务器压力较大等原因,也需要考虑到具体的场景和需求。其他方案如Comet、SSE、AJAX轮询等都有各自的优缺点,可以根据具体情况进行选择。

2023-04-09 10:36:18 1174

原创 Java并发编程JUC-小结

Java并发编程JUC(java.util.concurrent)提供了一些可重用的线程安全组件,这些组件可以帮助我们更容易地实现高效且正确的并发程序。

2023-04-04 16:18:45 336

原创 web开发中拦截器和过滤器的作用和区别-附上代码示例

Web开发中,拦截器(Interceptor)和过滤器(Filter)都是常用的组件,它们可以对HTTP请求进行预处理、后处理以及一些额外的操作。在这篇文章中,我们将详细讲述拦截器和过滤器的作用和区别,并使用Java代码举例说明它们的使用。一、拦截器和过滤器的作用二、拦截器和过滤器的区别范围不同拦截器是针对具体的某个请求进行的处理,比如处理SpringMVC框架下的请求。而过滤器则作用于整个应用程序,通过匹配URL路径来确定是否需要过滤该请求。执行顺序不同。

2023-03-31 15:32:36 1684

原创 求解 百钱百鸡 的几种方法(py)

百钱百鸡问题是一个著名的数学问题,可以使用多种方法求解。以上是几种基于 Python 的求解百钱百鸡问题的方法,其中第二种方法是最常用的实现方式。这种方法利用了生成器表达式对问题进行了简化,同时避免了暴力枚举法的问题。这种方法直接进行三重循环枚举所有可能的情况,时间复杂度较高。这种方法利用了数学公式对问题进行了简化,性能较好。

2023-03-29 17:09:15 5310

原创 求第n个斐波那契数的几种方法(python)

这种方法利用了矩阵快速幂算法来计算斐波那契数列,比起前两种方法在处理大规模数据时具有更高的性能表现,但代码量较大。以上是几种基于 Python 的求解第 n 个斐波那契数的方法,其中第二种方法是最常用的实现方式。这种方法利用了循环来避免了递归带来的性能问题,具有较好的性能表现。这种方法简单易懂,但时间复杂度是指数级别的,不适用于大规模计算。1.使用递归函数计算第n个斐波那契数。3.使用矩阵乘法计算第n个斐波那契数。2.使用循环计算第n个斐波那契数。

2023-03-29 17:07:07 7599

原创 求N!的几种方法(python)

以上三种方法都可以用来求解 N!,其中第二种方法是递归实现,比较简洁但可能会受到递归深度限制;第一种和第三种方法都利用了循环或内置函数来避免递归深度限制,具有良好的性能表现。3.使用 reduce 函数计算 N!1.使用 for 循环计算 N!2.使用递归函数计算 N!

2023-03-29 17:05:05 11815

原创 如何看待 Chat-GPT 的崛起

ChatGPT是一款由OpenAI研发的自然语言生成模型,其能够高度还原人类语言表达,成为了许多领域内的重要工具。ChatGPT的崛起带来了许多机会,但同时也引发了就业焦虑问题。本文将从以下几个方面探讨ChatGPT的崛起所引起的就业焦虑问题。

2023-03-29 16:41:42 2151

原创 通过Interceptor以及Redis实现接口访问防刷

我们使用了Redis作为存储桶,每个IP地址对应一个key,每一次请求就将key中的计数器加一,并设置一个过期时间为1秒钟。上述代码中,我们通过注解扫描所有带有@RateLimit注解的方法,并在应用程序启动时生成对应的拦截器和key。首先,创建一个自定义拦截器类,实现HandlerInterceptor接口,并在preHandle方法中添加接口防刷逻辑。这样,我们就可以实现接口访问防刷功能了。然后,在服务启动时,使用反射扫描所有带有@RateLimit注解的方法,并生成对应的拦截器和key。

2023-03-29 16:23:24 971

原创 Java 8 新特性之 Stream 流(三)缩减操作

其中R指定了结果的类型,T,U分别是第一参数的类型和第二个参数的类型,因此apply()对他的两个操作数(t,u)应用到同一个函数上,并返回结果,而对BinaryOperator来说,他在扩展 BiFunction时,指定了所有的类型参数都是相同的T,因此对于BinaryOperator函数式接口的apply来说,他也就变成了 T apply(T t, T u),此外,还有一个需要注意的地方是,在应用reduce()时,apply()的第一个参数t,包含的是一个结果,u包含的是下一个元素。

2023-03-13 21:25:27 202

原创 Java 8 新特性之Stream流(二)关键

继续探索流API的高级功能之前,我们先从接口级别全面了解一下流API,这个对于我们来说是至关重要的。下面是一张流API关键知识点的UML图。

2023-03-04 15:15:15 424

原创 Java 8 新特性--Stream流(一)基础篇

我们应该知道(绝对知道~)API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能。所以对于流API来说,重点是怎么理解"流"这个概念,所谓的流:就是数据的渠道,所以,流代表的是一个对象的序列它和Java I/O类里使用的"流"不同。虽然在概念上与java.util.stream中定义的流是类似的,但它们是不同的,流API中的流是描述某个流类型的对象。流API中的流操作的数据源,是数组或者是集合。

2023-03-02 16:30:05 305

原创 Java8 之新特性-补充篇

JDK8使用了Metaspace(JEP 122)替换永久代(PermGen space)。参数使用-XX:MetaSpaceSize和-XX:MaxMetaspaceSize代替原来的-XX:PermSize和-XX:MaxPermSize。另外,可以看下LocalDate、LocalTime、LocalDateTime、Duration的用法。还有一些别的新特性,个人觉得某些新特性用处不是很大。base64编码解码已经被加入到了jdk8中了。可以运行js代码的引擎。

2023-03-02 12:07:09 118

原创 Java8 新特性--重复注解

下面是JDK8中的重复注解()定义的源码。Class

2023-02-22 20:48:20 199

原创 Java8 新特性--接口默认方法与静态方法

有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。之前讲过的JDK8的list.foreache方法,看下源码,其实也是java.lang.Iterable接口的默认方法。4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。

2023-02-22 20:46:51 140

原创 Java8 新特性-函数式接口

先来看看传统的创建线程是怎么写的@Override});t1.start();再来看看使用了函数式接口是怎么写的t2.start();Runnable接口直接可以使用Lambda表达式来编写,这是因为Runnable接口是一个函数式接口,来看看Runnable的源码。,表明该接口是一个函数式接口。在JDK8中,除了Runnbale接口,还有像Comparator、Callable等接口都加上了该注解定义为函数式接口。

2023-02-22 20:44:30 3512

原创 Java 程序员必须掌握的常用 Linux 命令。

Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,下面整理了一些常用的Linux操作命令。以上命令仅供参考,欢迎留言补充。

2023-02-20 21:24:55 645

原创 Java8 新特性--方法引用

方法引用是只需要使用方法的名字,而具体调用交给函数式接口,需要和Lambda表达式配合使用。上面两种写法是等价的。

2023-02-20 19:33:52 187

原创 Java8 新特性--Optional

为value创建一个Optional对象,如果value为空则 会报出NullPointerException异常。判断当前value是否为null,如果不为null则返回true,否则false。,一个可以包含null值的容器对象,可以用来代替xx!为value创建一个Optional对象,但可以允许value为null值。如果有值则返回,没有则用函数式接口抛出生成的异常。返回当前值,如果为null则返回other。如果不为null值就执行函数式接口的内容。返回当前的值,如果为空则报异常。

2023-02-20 17:39:11 586

原创 Java8 新特性--Lambda表达式

Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。

2023-02-20 16:28:26 98

转载 安装好CentOS后,使用yum安装报错 转载

安装好CentOS后,使用yum安装报错 转载文章标签Linuxcentosyum源加载清理缓存文章分类其它其它阅读数141安装好CentOS后,使用yum安装报错安装好CenOS7后,自带的yum不能直接使用,使用会出现如下问题:t已加载插件:fastestmirror, langpacks File contains no section headers.已加载插件:fastestmirror, langpacks正在尝试其它镜像。1.2.3.4.5.

2022-12-26 12:23:56 1257

原创 17.JUC并发编程-狂神笔记

源码 + 官方文档java.util.concurrent普通的线程代码 ThreadRunnable没有返回值,效率相比Callable相对较低!进程:一个程序,QQ.exe一个进程往往可以包含多个线程,至少包含一个;Java默认有几个线程?-- 2个 mian线程,GC线程对于java而言:Thread/Runnable/Callablejava真的可以开启线程吗? – 不可以Thread部分源码并发(多线程操作同一个资源)并行(多个人一次行走)查询cpu核数并发编程的本质:充分利用CPU的资源

2022-09-25 08:03:53 237

原创 14.网络编程详解-狂神笔记

网络编程打电话 – 连接 – 接了电话 – 通话 ()发短信 – 发送了就完事了 – 接收 ()计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。:传播交流信息,数据交换,通讯javaWeb:网页编程 (B/S架构)网络编程:TCP/IP (C/S架构)

2022-09-24 17:35:30 124

原创 13.多线程详解-狂神笔记

普通方法调用和多线程调用注意:很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。04、网图下载实现多线程同步下载图片05、实现Runnable接口定义MyRunnable实现Runnable接口实现run方法,编写方法体创建线程对象,调用start()方法启动线程小结多个线程操作同一个资源的情况下,线程不安全输出(可以看到并发的问题)小明拿到了第1

2022-09-24 11:14:39 244

原创 12.IO详解-狂神

待更新。。。

2022-09-24 11:12:32 89

原创 16.注解和反射-狂神笔记

使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口分析@interface用来声明一个注解,格式:public @interface 注解名{ 定义内容 }其中的每一个方法实际上是声明了一个配置参数方法的名称就是参数的名称返回值类型就是参数类型(返回值只能是基本类型,Class,String,enum)可以通过default来声明参数的默认值如果只有一个参数成员,一般参数名为value。

2022-09-24 11:09:23 108

原创 javaweb-servlet web应用流程

首先我先来介绍什么是组件:组件就是符合规范的,实现特定功能,并且可以部署在容器上的软件模块,简单的说我们写的servlet就是组件。由于我们平时开发的web程序都是基于HTTP的所以我们在编写Servlet是一般都是去继承HttpServlet,重写里面的方法。之后我们把整个工程进行编译,部署到tomcat目录下进行发布,启动tomcat,访问Servlet,只需要在浏览器中输入http://ip:port/appname/web.xml中对应servlet的url-pattern的配置即可。

2022-09-07 22:09:31 95

原创 正则表达式-常用方法封装

代码】正则表达式-常用方法封装。

2022-08-09 14:16:21 186

原创 大专程序员--专升本

大专程序员,专升本之路

2022-07-27 10:33:56 2396

原创 uniapp项目实践分享

推荐几个uniapp项目

2022-07-16 16:32:48 4162 1

原创 taro VS uniapp 前端框架 跨平台 小程序

Taro 介绍简介Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ / 飞书 小程序 / H5 / RN 等应用。现如今市面上端的形态多种多样,Web、React Native、微信小程序等各种端大行其道。当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。特性多端转换支持Taro 3 可以支持

2022-05-18 21:19:56 6238

原创 使用react开发Chrome Extension

前言写这篇文章前先说说为啥接触chrome插件开发的原因吧:就在一个星期前我到了上海找到了人生中第一份IT实习工作,面试岗位是前端,当公司当时只招js前端就只用js和jq好吧我想这先进去干干吧反正都是前端,第二天报到就开始上班了,听带我的师傅介绍才知道公司主要业务方向是干浏览器插件的,而我的工作是维护运营的插件,基本上每天的工作就是cv在加一点js和jq,干了一个星期就和部门老大说了自己想干前端开发的想法,他也挺好说话,最终让我试试,叫我先用react(公司前端主要react而我主学vue)做个chro

2021-07-25 21:17:07 666

原创 H5 canvas小案例-钟表

效果图:直接上代码:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>钟表</title> <style type="text/css"> body{ width: 100vw; height: 100vh; overflow: hidden; display: flex; justify-

2021-07-08 07:02:29 151

原创 前端面试-考点总结

前端面试考点总结:

2021-07-08 06:54:14 83

原创 前端面试-自我介绍

一、自我介绍:​ 1、基本情况(姓名、学校(985,211必填不知名大学就算了,很现实)、专业)​ 2、项目经验 : - 项目名称(xxxx), - 项目技术栈(举例:vue全家桶(vue vuex vue-router...),饿了么UI、Ant design,axios异步请求), - 担任角色(前端开发), - 主要任务(设计页面样式和页面交互逻辑), - 收获 (经历此项目后,我对前后端分离开发有了更多的理解,也对所学知识巩固了一下),​ 3、公司背景了解(在贵公司官网看到公司的某

2021-07-08 06:50:35 12525

原创 Vue-router实现路由懒加载

2021-06-20 00:02:42 124

原创 react设置代理-解决同源问题

注意:在src下创建setupproxy.js文件const proxy = require('http-proxy-middleware')module.exports = function(app) { app.use( proxy('/api1', { //api1是需要转发的请求(所有带有/api1前缀的请求都会转发给5000) target: 'http://localhost:5000', //配置转发目标地址(能返回数据的服务器地址) changeO

2021-06-19 22:05:50 174

原创 异步请求-axios再封装

export function axios_get(url) { return new Promise((selove,reject) =>{ axios.get(url) .then(res =>{ if (res.status === 200) { selove(res.data); }else{ s.

2021-06-19 21:36:44 115

weatherbuild.zip

使用react开发的Chrome Extension,解压后将里面的build文件导入浏览器即可,可能会有一些谷歌浏览器版本问题主要出现在manifest.json配置文件中每个版本配置文件字段有些差异,大家可以通过评论咨询我或者自行通过网络解决不难的。

2021-07-25

2021年前端面试题精选大全.docx

前端面试总结.....

2021-06-07

Vue框架面试题总结.docx

vue面试题

2021-06-07

空空如也

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

TA关注的人

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