自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 java mysql 数据库备份和还原操作

扫VX 领Java资料,前端,测试,python等等资料都有package com.itenp.gen.action;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWri..

2021-12-24 11:42:04 915

转载 JDK环境配置&IDEA新建一个JAVA项目

一、JDK环境配置1.下载安装包下载地址<www.oracle.com>2.下载好安装包后,双击进入安装向导3.点击“下一步”(可修改默认安装路径)4.安装完成后点击“关闭”5.坏境配置(1)打开“此电脑”——>右键——>“属性”(2)进入“高级系统设置”(3)点击“环境变量”(4)“系统变量”——>“新建”扫VX 领Java资料,前端,测试,python等等资料都有(新建:变量名“JAVA_HOME”;变..

2021-12-24 11:40:54 577

转载 Java 创建 PDF 文件包的两种方法

1.概述PDF文件包可方便在仅打开一个窗口的情况下阅读多个文档,通过将多个PDF文档或其他非PDF文档封装在一起,打开文件包后可以随意切换查看文件包中的文档,在需要编辑更改的情况,也可以打开文本包中的文档进行编辑。下面,通过Java程序来演示如何来创建PDF文件包。这里分以下两种情况来添加,方法类似。(1)创建文件包,添加文件夹(父/子文件夹),并添加文档到文件包(2)创建文件包,添加多个文档到文件包2.本次运行环境代码编译环境:IntelliJ IDEA JDK版本:1.8.0...

2021-12-24 11:39:29 565

转载 JVM,我就不信学不会你了

JVM 对 Java 有多重要,对程序员面试有多重要,这些不用多说。如果你还没意识到学 JVM 的必要性,或者不知道怎么学 JVM,那么看完这篇文章,你就能知道答案了。曾经的我很不屑于学 JVM,但是后来发现不学不行。这就像和媳妇吵架之后我不想道歉一样,不道歉那是不可能的,道歉是早晚的事儿,逃不掉。后来我明白了:认怂越晚,结局越惨。但是我学的时候才知道:JVM,你太过分了,太难学了!我的学习过程可以说非常坎坷,不过经历坎坷之后,我倒是发现学 JVM 的门道很多。以我的经验加上和同

2021-12-24 11:38:34 235

转载 Java 设置PDF跨页表格重复显示表头行

在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好。下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.setRepeatHeader(true);即可。具体参考如下方法步骤。1.导入Jar包这里导入的是Free Spire.PDF for Java的jar包,下载后,解压文件,在Java程序中将解压路径下lib文件中的spire.pdf.jar导入Java程序。导入结果:2.Java代..

2021-12-24 11:37:22 707

原创 IntelliJ IDEA常用设置,常用快捷键以及常用插件

简单介绍IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一。Intellij IDEA 最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。下面介绍 IntelliJ IDEA的一些常用设置,快捷键和茶馆用插件推荐,让你快速上手!一 基本设置1.设置IDEA背景图片file->settings->keymap,也可以ctrl+a

2021-12-24 11:35:25 677

原创 JavaWeb中的Filter过滤器和Listener监听器

一 Filter1 Filter的概念Filter:一个实现了特殊接口(Filter)的Java类. 实现对请求资源(jsp,servlet,html,)的过滤的功能.过滤器是一个运行在服务器的程序, 优先于请求资源(Servlet或者jsp,html)之前执行. 过滤器是javaweb技术中最为实用的技术之一2 Filter的作用Filter的作用是对目标资源(Servlet,jsp)进行过滤,其应用场景有: 登录权限检查,解决网站乱码,过滤敏感字符等等3 Filter的入门案例..

2021-12-24 11:34:05 194

原创 java类下载壁纸练习小代码

public static String test65(int start) { BufferedReader reader = null; StringBuffer sb = new StringBuffer(); String initUrl = "http://bz.hzwdd.cn/api.php?cid=6&start="+start+"&count=10"; URL url = URLUtil.url(initU.

2021-12-24 11:33:10 546

转载 正则引擎的几种分类

正则表达式引擎是正则表达式匹配算法的基础。其有多种不同的实现,但大多数都是基于Henry Spencer的NFA引擎。正则引擎有两个大分类,DFA和NFA,像Perl、Java、.Net、PHP、Python、Ruby……等大多是工具都是用了NFA引擎。少数广泛被使用的工具如mawk使用了POSIX NFA引擎(NFA的一种变种)。以高效著称的工具采用了更为高效的DFA引擎。诸如GNU awk,GNU egrep和Tcl之类的一些工具结合了NFA / DFA两种引擎,将两者的优点结合在一起。基于不同

2021-12-23 17:33:24 224

转载 JDBC基本操作

JDBC基本操作create table user( id int primary key auto_increment, name varchar(50) ) ENGINE = InnoDB DEFAULT CHARSET = utf8;JDBC概念JDBC是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口,定义了用来访问数据库的标准的Java类库连接步骤 加载驱动 进行数据库连接 // 驱动private stati

2021-12-23 17:32:42 113

转载 直观讲解一下 RPC 调用和 HTTP 调用的区别

OSI网络七层模型在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层:(从上到下) 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据;

2021-12-23 17:31:43 378

转载 Java 设置Excel条件格式(高亮条件值、应用单元格值/公式/数据条等类型)

概述在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式。本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,因不同设置需要,本文分别从以下示例要点来介绍:示例1:1. 应用条件格式用于高亮重复、唯一数值2. 应用条件格式用于高亮峰值(最高值、最低值)3. 应用条件格式用于高亮低于或高于平均值的数值示例2:1. 应用单元格值类型的条件格式2. 应用公式类型的条件格式3. 应用

2021-12-23 17:30:02 524

转载 JAVA Thread Dump 文件分析

Thread Dump介绍Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了每个线程的所有信息,例如: 线程状态、线程 Id、本机 Id、线程名称、堆栈跟踪、优先级。Thread Dump特点 能在各种操作系统下使用 能在各种Java应用服务器下使用 可以在生产环境下使用而不影响系统的性能 可

2021-12-23 17:29:15 516

转载 Java 将PDF转为线性PDF

线性化PDF文件是PDF文件的一种特殊格式,可以通过Internet更快地进行查看。线性化的PDF,在页面数量很多的情况下,更能突出表现出快速浏览的优势。下面是通过后端Java程序实现将PDF文件转为线性化PDF的方法。程序环境IntelliJ IDEA Spire.PDF for Java4.12.1方法步骤步骤1.导入PDF Jar包。可通过以下两种方法实现:方法1:通过Maven仓库安装。在pom.xml中配置如下:<repositories> ..

2021-12-23 17:27:47 197

转载 Redis使用场景

1、计数器可以对 String 进行自增自减运算,从而实现计数器功能。Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。2、缓存将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。3、会话缓存可以使用 Redis 来统一存储多台应用服务器的会话信息。当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。4、全页缓存(FPC)除基本的会话token之外,Re

2021-12-23 17:26:52 108

转载 Redis的基本数据类型

1、redis基础1)redis 中的数据类型有哪些?Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。Redis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n),这点让人非常意外。 当列表弹出了最后一个元素之后,该数据结构自动被删除,内存被回收。

2021-12-23 17:26:14 795

转载 Java设计模式之建造者模式

建造者模式:使用多个简单的对象一步步构建成一个复杂的对象,它提供了一种创建对象的最佳方式。建造者模式的使用目的:将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。优点:建造者独立,易拓展;便于控制细节风险。示例场景在游戏开发中,英雄Hero表示一个人物,他们以不同职业Occupation的形式来展现,比如可以转职成战士或者射手,战士的装备是长剑、重甲,射手的装备是弓、皮甲。让我们使用建造者模式来创建不同职业的英雄,这个过程中要注意区分和抽象工厂模式的区别。创建

2021-12-22 11:53:23 214

转载 Log4j 2 杀不死 Java

Java 作为顶级编程语言之一,已经在企业级软件开发领域活跃 25 年了。有人不断宣传 Java 已死,同时也有人坚称 Java 活得好好的。最近,又有报道称 log4j 2 漏洞将再次“杀死” Java。我们曾开玩笑说,Java 博物馆就好像是一个墓园,记录了每一次“死亡”的经过。上周,技术圈被 log4j 2 漏洞掀起巨浪,各大安全公司纷纷发文介绍该漏洞的危害,并给出了各种临时解决方案。还有一些博主也发表文章教我们如何找到易受攻击的地方,并采取相应的防御措施。还有大量帖子跟着起哄,讨论如何采用一.

2021-12-22 11:52:02 144

转载 MVCC 水略深,但是弄懂了真的好爽

@[toc] 前面写了一篇文章和大家分享了 MySQL 中查询表记录数的问题,里边涉及到一个知识点 MVCC 多版本并发控制。这个问题不搞懂,总感觉缺点什么。因此今天我想花点时间和大家聊一聊 MVCC。要搞懂 MVCC,最好是要先懂 InnoDB 中事务的隔离级别,不然单纯看概念很难弄明白 MVCC。1. 隔离级别1.1 理论MySQL 中事务的隔离级别一共分为四种,分别如下:序列化(SERIALIZABLE) 可重复读(REPEATABLE READ) 提交读(READ COMMI

2021-12-22 11:50:55 206

转载 处理异常的标准姿势一定要学会

前言在Java中应该如何处理异常,这个话题看似简单,不就是try...catch嘛,但是往往BUG更容易出现在一些简单地、我们更容易忽略的地方。大多数成熟的开发团队对于如何进行异常处理都有一套规范和最佳实践。本期内容我整理了一些在我的团队正在使用的9个最佳实践,希望能让你对异常处理有所帮助。1、使用finally或try...with...resource关闭资源如果我们在try代码块中需要使用到一些资源,比如InputStream,在使用完之后我们需要将资源关闭。这是一个错误示例

2021-12-22 11:49:57 112

转载 Java18都在路上了,你还在用Java8吗

Java18都快推出了,还有很多的小伙伴可能还在用Java8,可能还不知道很多高版本提供的一些好用的特性,下面我整理了一下从Java9~Java17中我个人觉得一些比较实用的特性,让大家在推动公司Java版本的升级时有更多的理由。可能很多公司会为了“稳定性”而拒绝升级高版本的JDK,就和以前Java8刚推出时,还在用JDK1.6的人拒绝升级一样。但实际上是有多少是真的为了稳定性,还有多少只是公司单纯的拒绝新的技术,这谁知道呢?^ _ ^一些特性JEP 286: Local-Variable

2021-12-22 11:48:59 195

转载 你真的会用 @Transactional 吗?

先别急着回答,看完再说也不迟嘛。我们都知道在 Spring 项目中,我们可以直接使用注解 @Transactional 来标识一个事务方法。然而,你可能并不知道这个事务是不是按照你想的方式执行。下面我们就一起来看看几种情况,你以为的事务管理可能并不是你以为的事务管理。0 经典错误案例 @Transactional void transfer() { try{ //... } catch (Exception e){ ...

2021-12-22 11:47:12 266

转载 解决org.apache.ibatis.binding.BindingException: Invalid bound

解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 问题org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。截图为网络中搜索到的常见原因:

2021-12-22 11:45:43 621

转载 Redis最常用的使用场景

1、计数器可以对 String 进行自增自减运算,从而实现计数器功能。Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。2、缓存将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。3、会话缓存可以使用 Redis 来统一存储多台应用服务器的会话信息。当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。4、全页缓存(FPC)除基本的会话 token 之外,Redi

2021-12-22 11:45:07 72

转载 Java中List排序的3种方法

在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进行排序,这个时候,我们就需要对 List 集合进行自定义排序操作了。 ​List 排序的常见方法有以下 3 种:使用 Comparable 进行排序; 使用 Comparator 进行排序; 如果是 JDK 8 以上的环境,也可以使用 Stream 流进行排序。下面我们分别来看各种排序方法的具体实

2021-12-21 16:45:17 1433

转载 SpringBoot Redis 解决重复提交问题

前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据。2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token。

2021-12-21 16:44:23 432

转载 从源码分析String类中的常用方法

0.构造方法字符串的构造方法有多种,可以通过String、byte、char、int、StringBuffer 、StringBuilder 等数据类型构造,部分构造方法如下:String():初始化新创建的 String对象,使其表示空字符序列。public String() { this.value = "".value; }复制代码String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列。public S

2021-12-21 16:42:40 188

转载 Jaeger的客户端采样配置(Java版)

关于采样(Sampling) 采样很好理解:使用Jaeger时,未必需要将所有请求都上报到Jaeger,有时候只要抽取其中一部分观察即可,这就是按照一定策略进行采样; Jaeger SDK是支持多种采样配置的,在分布式系统中,他们遵循的原则是前置判定(consistent upfront 或者head-based),简单来说,假如consumer服务调用provider服务,那么某一次请求只要consumer决定不采样,那么provider在处理这个请求的时候也不会采样,也就是说对于一次完整

2021-12-21 16:41:44 474

转载 HttpClient使用不当,服务挂了,是时候系统学习一下了

背景最近发生了两件事,觉得有必要系统的学习一下Apache的HttpClient了。事件一:联调微信支付接口,用到HttpClient,花时间整理了一番。如果有一篇文章,读一读就可以掌握HttpClient 80%的内容,再有可以直接用的Demo,下次再遇到是不是就可以非常容易集成了?这篇便是这篇文章的目标之一。事件二:上家公司同事发消息求助,说系统JVM溢出,找不到原因不了。查看了发来的日志文件,基本定位是HttpClient调用三方接口时内存溢出导致的。无论出于哪种原因,HTTP调用的熟

2021-12-21 16:39:53 246

转载 花十分钟了解一下MySql主从复制策略

1: 为什么需要高可用MySql单机是可以使用,但是如果有一天MySql突然挂了,那么整个服务就都不可用了,这是不能接受的,总得有个兜底的方案2:MySql高可用MySql高可用也就是要保证即使有一台服务器挂了,也要保证服务能正常运行,所以在生产环境下至少也要保证有 一主一从 的架构,既然涉及到了主从,那么就会有数据同步的问题,MySql提供了几种数据同步策略3:MySql主从复制原理在主从进行同步过程中会涉及到三个线程:从库的I/O线程:主要是获取主库的binlog日志,获取到

2021-12-21 16:38:54 183

转载 Java 加密解密和数字签名

在做项目中,只要涉及敏感信息,或者对安全有一定要求的场景,都需要对数据进行加密。在Java中原生API即可实现对称加密与非对称加密,并支持常用的加密算法。对称加密对称加密使用单钥完成加解密,加密和解密采用相同的密钥。对称加密的速度快,常用于大量数据进行加密。主流的算法有:AES,3DES。生成3DES密钥/** * 对称加密-3DES算法,取代旧的DES */SecretKey desKey = KeyGenerator.getInstance("DESede").generateKe

2021-12-21 16:38:09 215

转载 JavaWeb随机生成验证码并登录验证

ImageUtils类package com.xiaobear;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;imp

2021-12-20 12:26:42 389

转载 Spring Boot整合shiro(eclipse版)

在 Spring Boot 中整合 Shiro ,有两种不同的方案:第一种就是原封不动的,将 SSM 整合 Shiro 的配置用 Java 重写一遍。 第二种就是使用 Shiro 官方提供的一个 Starter 来配置,但是,这个 Starter 并没有简化多少配置。这里演示第二种,因之后大多数都是用注解来进行开发1、创建spring Boot工程导入依赖<!--主要的依赖--><dependency> <groupId>org.apach

2021-12-20 12:25:51 193

转载 Log4j2又爆雷,2.16.0存在DOS风险,升级2.17.0可解决

本以为,经过上周的2.16.0版本升级,Log4j2的漏洞修复工作,大家基本都要告一段落了。万万没想到,就在周末,Log4j官方又发布了新版本:2.17.0该版本主要修复安全漏洞:CVE-2021-45105影响版本:2.0-alpha1 至 2.16.0(1.x用户继续忽略)该漏洞只有当日志配置使用带有Context Lookups的非默认 Pattern Layout(例如$${ctx:loginId})时,攻击者可以通过构造包含递归查找的恶意输入数据,触发无限循环,导致 Sta

2021-12-20 12:17:41 922

转载 Spring 5 源码解析- XML中Bean配置加载

spring-framework 加载配置文件过程: 根据业务系统运行的环境,选择 ApplicationContext 接口合适的实现类,启动系统先初始化上下文环境,然后通过BeanDefinitionReader 的实现类读取Bean的配置文件。这里配置文件可以是 xml文件,properties文件,yml文件等,也可以是注解形式扫描配置。配置文件读取成功后,将相应的配置转换成 BeanDefinition 的对象实例保存在DefaultListableBeanFac...

2021-12-20 12:15:47 248

转载 Docker 安装&卸载

安装#环境准备 #查看环境 uname -r # 系统内核在3.10以上 # CentOS 7 以上 cat /etc/os-release# 1、卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \

2021-12-20 12:14:35 340

转载 bat脚本一键配置java开发环境

背景在新电脑配置或者新人入职时需要对java开发相关环境进行配置安装,但时常会因为安装配置不到位或者操作错误导致时间的浪费,所以在空余时间收集了一系列软件的免安装版本,并且编写了相关配置脚本,让环境安装变得标准化。概览安装包目录如下如所示BaseEnv包含jdk(1.8),maven(3.2.5)ProgramEnv包含idea(2019.2)SoftEnv包含mysql(5.7),navicat(15),redis,redismanage(1.5.8)remark为安装总说

2021-12-20 12:12:09 640

转载 Java应用日志如何与Jaeger的trace关联

关于MDC 关于sl4j的MDC不是本篇的重点,因此只把本篇用到的特性简单说说即可,经验丰富的您如果对MDC已经了解,请跳过此节 在sl4j的配置文件中可以配置日志的格式,例如logback的配置文件如下,可见模板中新增了一段内容[user-id=%X{user-id}]: <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qo

2021-12-20 12:10:29 214

转载 SpringAOP多切面

多切面执行时,采用了责任链设计模式。切面的配置顺序决定了切面的执行顺序,切面执行的过程,有几种方法调用的过程,在环绕通知的proceed()执行时间,去执行下一个切面或如果没有方法下一个切面执行目标,从而实现了如下的执行过程:(目标方法执行一次)执行的顺序和配置顺序等有关目标方法执行前:可以后,环绕前(顺序)目标执行后:最终,环绕后,最终(可以改变)链设计责任:为拉尔请求的和接收者之间的这个发送请求,而使许多对象有机会处理请求。有对象处理它因为责任链设计模式第一次切面中调用破方法后,

2021-12-20 12:08:36 965

转载 MyBatis从入门到入土——主键的获取

增删改返回值说明mybatis中对db执行增删改操作,不管是新增、删除、还是修改,其本质都是使用jdbc中对应的方法,即java.sql.Statement的executeUpdate的方法,或者java.sql.PreparedStatement的executeUpdate方法。所以问题的关键在于掌握这两个方法的内容,而这两个方法的参数不一致但是返回值都是int,用来表示影响的行数。而Mybatis的返回值再支持int的基础上,还支持Integer、long、Long、boolean、Bool

2021-12-17 11:49:37 1639

空空如也

空空如也

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

TA关注的人

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