java
文章平均质量分 62
一朵纯洁的小白花
这个作者很懒,什么都没留下…
展开
-
SpringCloud搭建应用
springcloud:成熟的微服务框架,定位为开发人员提供工具,以快速构建分布式系统。6、整体系统发布统一ip端口,使用网关Zuul,也可对请求进行过滤器的编写。5、服务宕机,容灾,避免大面积服务瘫痪,使用熔断器Hystrix。4、服务调用正常,考虑服务的负载均衡,使用Ribbon。三、利用Fegin实现服务间调用(子模块业务间调用)2、服务注册与发现Eureka,注册服务方便引用。二、Eureka客户端搭建(子模块服务注册)本文先到此为止,后续待补充。3、利用Fegin实现服务间调用。原创 2022-11-04 17:58:44 · 597 阅读 · 0 评论 -
线程池详解
创建一个线程池,指定线程数量5,默认使用无界队列LinkedBlockingQueue,大量任务执行未完成的情况下,可能会造成OOM内存溢出异常。无界线程数量,直接交换队列,线程存活默认60s自动回收,可能会创建数量特别多的线程导致OOM内存溢出异常。1.newFixedThreadPool 固定线程池(核心线程数=最大线程数,队列满后无法增加线程)五、线程池线程数量设置多少合适(最佳:不同程序做不同的压测得出最优线程数量)线程池的组成部分:线程池管理器、工作线程、任务队列、任务接口(Task)原创 2022-10-27 10:13:39 · 1227 阅读 · 0 评论 -
非对称加密算法SM2
SM2是于2010年12月17日发布的椭圆曲线公钥密码算法。SM2算法和都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家体系中被用来替换。随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2替换RSA算法。...原创 2022-09-01 17:26:09 · 2924 阅读 · 0 评论 -
java设计模式—适配器模式
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。3、通过接口转换,将一个类插入另一个类系中。...转载 2022-08-15 16:02:30 · 3986 阅读 · 0 评论 -
java发起HTTP 请求的多种方式
java发起HTTP 请求的多种方式,常用的类为 cn.hutool.http.HttpUtil但方式有限,需加工,可根据实际情况进行选择原创 2022-06-16 15:08:48 · 9802 阅读 · 0 评论 -
Base64Utils 图片base64互转
分享一些常用的java工具类,图片文件和base64进行互转原创 2022-06-15 09:18:36 · 207 阅读 · 0 评论 -
redis分布式锁实现
单体应用多线程锁使用synchronized关键字或ReentrantLock类来保证线程的顺序执行个别场景使用JDK1.5之后提供的大量原子类AtomicInteger(基于CAS的乐观锁)测试锁模拟并发可使用闭锁:CountDownLatch类对象模拟ReentrantLock的公平锁和非公平锁机制 ReentrantLock有两个构造方法,默认的构造方法中,sync = new NonfairSync();我们可以从字面意思看出它是一个非公平锁。再看看第二个构造方...原创 2022-04-27 16:38:32 · 1271 阅读 · 1 评论 -
JVM调优 理论篇
主要这几个方面内存结构、类加载机制、编译器优化、垃圾收集算法、垃圾收集器一、内存结构二、类加载机制1、编译生成class文件 javac 文件名 或 idea工具编译2、加载读取类的二进制流转为方法区数据结构,并存放到方法区在java堆中产生Java.lang.class对象3、链接(验证、准备、解析)验证:1.验证class文件是否符合规范 文件格式的验证(是否以0XCAFEBABE开...原创 2022-03-18 17:42:27 · 421 阅读 · 0 评论 -
spring AOP介绍和应用领域
aop原创 2022-02-16 11:27:34 · 383 阅读 · 0 评论 -
springboot和springmvc的区别
用最简练的语言概括就是:Spring 是一个“引擎”;Spring MVC 是基于Spring的一个 MVC 框架 ;Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。Spring MVC的功能Spring MVC提供了一种轻度耦合的方式来开发web应用。Spring MVC是Spring的一个模块式web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领.原创 2022-02-15 15:40:22 · 183 阅读 · 0 评论 -
java基础-Interface和Abstract的区别
共同点A.两者都是抽象类,都不能实例化B.Interface实现类和abstract继承类都必须实现抽象方法不同点A.Interface需要实现,用implements;Abstract 需要继承,用exendsB.一个类可以实现多个Interface ;一个类只能继承一个AbstractC.Interface强调功能的实现;Abstract强调从属关系D.Interface的所有抽象类都只有声明没有方法体;Abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子原创 2022-02-14 13:56:04 · 253 阅读 · 0 评论 -
java设计模式—工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一.原创 2022-02-08 15:31:49 · 110 阅读 · 0 评论 -
java设计模式—策略模式
策略模式:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。它也被成为政策模式,是一种行为型模式。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何解决:将这些算法封装成一个一个的类,任意地替换。关键代码:实现同一个接口。优点 :1、算法可以自由切换。 .原创 2022-02-08 15:08:54 · 398 阅读 · 0 评论 -
java数据结构-集合框架
数据结构:就是容器中存储数据的方式;对于集合容器,有很多种。因为每一个容器的自身特点不同,其实原理在于每个容器的内部数据结构不同;集合容器在不断向上抽取过程中,出现了集合体系。集合框架:用于存储数据的容器;是为表示和操作集合而规定的一种统一的标准的体系结构;任何集合框架都包含三大块内容(对外的接口、接口的实现和对集合运算的算法)。特点:对象封装数据,对象多了也需要存储,集合用于存储对象;对象的个数确定可以使用数组,对象的个数不确定的可以用集合,因为集合是可变长度的。集合和数组的区别:数组是原创 2022-02-08 11:57:04 · 142 阅读 · 0 评论 -
synchronized和lock两种锁的比较
两者区别:1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁 tryLock方法3.synchronized会自动释放锁(a线程执行完同步代码会释放锁;b线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待原创 2022-01-24 18:49:19 · 466 阅读 · 0 评论 -
MyBatis的面试小知识点(不定时补充)
1、#{}和${}的区别是什么?${}是字符串替换,#{}是预处理;Mybatis在处理${}时,就是把${}直接替换成变量的值。而Mybatis在处理#{}时,会对sql语句进行预处理,将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;使用#{}可以有效的防止SQL注入,提高系统安全性。2、mapper.xml文件,都会对应一个Dao接口(Mapper层),这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?Mapp原创 2021-12-30 18:10:13 · 136 阅读 · 0 评论 -
重写(Override)与重载(Overload)的区别和联系(详细易理解)
java面向对象编程有三大特性:封装、继承、多态下面单独说多态:爷爷、爸爸、儿子三个独立的人,爸爸是儿子的爸爸、还是爷爷的儿子,即一个事物出现多种形态多态体现为父类引用变量可以指向子类对象前提条件:必须存在子父类关系(注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法)多态的定义与使用格式:父类类型 变量名=new 子类类型()理解即为:多态是同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同的实例而执行不同操作。重写和重载正是多态的一种表现原创 2021-12-30 16:54:23 · 716 阅读 · 0 评论 -
过滤器(Filter)和拦截器(Interceptor)的区别和执行顺序
一、过滤器(Filter)依赖于servlet容器。它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的,是用来做一些过滤操作,获取我们想要获取的数据,比如:在Javaweb中,对传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者Controller进行业务逻辑操作。通常用的场景是:在过滤器中修改字符编码(CharacterEncodingFilter)、在过滤器中修改...原创 2021-12-15 14:39:27 · 1278 阅读 · 0 评论 -
Spring IOC 注解@Resource和@Autowire的区别
Spring的IOC(控制反转)作为依赖倒置原则的一种代码设计思路,把原先在代码里面需要实现的对象创建,依赖管理等反转给IOC容器来进行集中管理,类解耦,提高java应用程序的性能,减轻jvm的内存压力。DI(依赖注入)作为具体的IOC动作,就是把容器中创建存放好的对象,通过DI机制去完成类中存在依赖关系的对象实例化的问题。要完成依赖注入,有以下几种规范1:set注入2:构造函数注入3:注解注入(@Resource、@Autowire)4:工厂方法注入..........等注原创 2021-12-13 16:41:37 · 1148 阅读 · 1 评论 -
java异常体系详解
java存在很多异常类,Java语言设计者将异常划分为两类:Error和Exception并且定义了基类java.lang.Throwable作为所有异常的超类体系结构大致如下:Throwable:有两个重要的子类:Exception(异常)和Error(错误)一、Error(错误):是程序中无法处理的错误,表示运行应用程序中出现了严重的错误,此类错误一般表示代码运行时jvm出现问题,通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundErro原创 2021-12-05 17:39:50 · 356 阅读 · 0 评论 -
java程序导出mysql数据生成sql脚本,数据迁移
通过sql语句查询,获取数据集,通过程序,导出insert或其他语句,生成sql文件。库名,表名,条件,sql动作,都可进行指定,或直接写全sql。具体代码如下:package com;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.*;import java.util.ArrayList;原创 2021-11-09 16:11:47 · 2369 阅读 · 0 评论 -
MYSQL判断索引是否存在,不存在则创建索引(亲测可用)
springboot集成flyway管理数据库版本使用存储过程平滑更新系统数据库这是一个不存在就添加索引的例子,若需求是存在则删除 微调下面的 if not exists 即可DROP PROCEDURE IF EXISTS add_index;DELIMITER $CREATE PROCEDURE add_index()BEGINDECLARE target_database VARCHAR(100);DECLARE target_table_name VARCHAR(100).原创 2021-08-19 18:53:32 · 9104 阅读 · 0 评论 -
PO,VO,DAO,BO,POJO 之间的区别
VOvalue object:值对象。通常用于业务层之间的数据传递,由new创建,由GC回收。POpersistant object:持久层对象。对应数据库中表的字段。VO 和 PO 都是属性加上属性的 get 和 set 方法;表面看没什么不同,但代表的含义是完全不同的。DTOdata transfer object:数据传输对象。表里面有十几个字段:id,nam...原创 2019-12-24 16:12:25 · 160 阅读 · 0 评论 -
@RequestMapping的四个参数value、method、params、heads
DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息请求所对应的处理方法RequestMapping用来处理请求地址映射的注解,可用于类或方法上用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径使用RequestMapping修饰类@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法请求参数...原创 2019-10-15 11:41:30 · 1369 阅读 · 0 评论 -
使用摘要算法SHA1保证数据传输过程中的完整性
前台js加密,将摘要和参数传递到后台后台根据参数加密,与摘要进行比对,确定数据的完整性js算法如下:// 字符串加密成 hex 字符串function SHA1(s) { //加盐值 随意定义盐值,与后台保持一致 s+="1qaz!QAZ"; var data = new Uint8Array(encodeUTF8(s)) var i, j, t;...原创 2019-07-24 14:09:28 · 1764 阅读 · 0 评论 -
使用Gson把json字符串转成Map
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import ...原创 2019-07-24 14:13:59 · 3533 阅读 · 0 评论 -
密码复杂度校验(长度,数字,大小写,特殊字符,连续等)
import org.apache.commons.lang.StringUtils;/**** @ClassName: PwdCheckUtil.java* @Description: 密码校验工具类*/public class PwdCheckUtil { public static String[] KEYBOARD_SLOPE_ARR = { ...原创 2019-07-24 14:19:37 · 2699 阅读 · 0 评论 -
java获取echarts图表(饼图,柱状图,折线图等等)
适用场景:前台展示echarts饼图,柱状图,折线图等等,后台生成文档或者其他需要把图片获取到1.前台echarts图搭建<!-- 引入 ECharts 文件 --> <script src="echarts.min.js"></script><body> <!-- 为 ECharts 准备一个具备大小(宽高)的...原创 2019-07-31 15:22:00 · 1835 阅读 · 0 评论 -
java生成带有图片的word的文档
生成带有图片的word的文档@RequestMapping(params ="getWordByDate",produces = "text/html;charset=UTF-8") @ResponseBody public String getWordByDate(String ImgInfo,String startDate,String endDate) throws ...原创 2019-07-31 15:37:51 · 1853 阅读 · 0 评论 -
java mysql 通用aes加密算法
通用的aes加密,使用场景,插入数据时,使用java进行加密数据,查询时,通过sql进行解密,不用取出再遍历解密(更正:to_base64只适用mysql5.6之后的,之前的没有这个函数,不适用,可以使用HEX,UNHEX ,当然java要用对应的方法解密)如下:import javax.crypto.Cipher;import javax.crypto.spec.Sec...转载 2019-08-06 13:49:56 · 2380 阅读 · 0 评论 -
结果集对象json转list
方法1:com.alibaba.fastjson.JSONArrayimport com.alibaba.fastjson.JSONArray;String data=results.get("dataList").toString();List<Map<String,String>> list = (List<Map<String,Strin...原创 2019-09-16 10:33:02 · 211 阅读 · 0 评论 -
HMACSHA256加密算法 java实现
import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;public class HMACSHA256 { /** * 将加密后的字节数组转换成字符串 * * @param b 字节数组 * @return 字符串 */ public static Stri...原创 2019-07-24 13:54:30 · 5294 阅读 · 1 评论