Java
文章平均质量分 64
Dylan、
Wubba Lubba dub dub
展开
-
Springboot+vue前后端分离解决跨域问题
后端解决import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class CorsConifg im.原创 2021-10-24 09:51:02 · 306 阅读 · 0 评论 -
Springboot封装JWT工具类,实现拦截器
将JWTUtils放入Utils包中代码如下import com.auth0.jwt.JWT;import com.auth0.jwt.JWTCreator;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import com.auth0.jwt.interfaces.DecodedJWT;import java.util.Calendar;import java.util.Map;.原创 2021-10-23 20:21:21 · 383 阅读 · 0 评论 -
JavaWeb-SpringBoot项目通用响应的设计
依赖:lombok<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency>项目common结构:CommonResponse写法import java.io.Serializable;@Getterpu.原创 2021-10-21 18:08:32 · 243 阅读 · 0 评论 -
HttpServletResponse header设置
设置浏览器的码表:response.setHeader(“Content-type”, “text/html;charset=UTF-8”);设置response的编码:response.setCharacterEncoding(“UTF-8”);设置浏览器码表的简写形式,并间接设置好了response的码表(上面两句的简写):response.setContentType(“text/html;charset=UTF-8”);设置下载的响应头(中文名需要url编码):response.setHea.原创 2021-03-21 19:56:33 · 4902 阅读 · 3 评论 -
让Eclipse和idea一样智能好用(补全代码)
平时习惯IDEA,要是强制你突然转Eclipse肯定不习惯,接下来的的教程,将教你怎么让Eclipse自动补全代码功能和IDEA一样一样的设置代码提示打开 Eclipse 依次选择 Window -> Perferences -> Java -> Editor -> Content Assist,Auto activation triggers for Java:设置框中默认是”.”现在将它改为:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJK原创 2021-03-14 11:42:11 · 4448 阅读 · 0 评论 -
Java-TCP协议模拟Server和Client
源代码//Serverpackage xyz.main;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) throws IOException原创 2021-02-07 17:43:53 · 485 阅读 · 1 评论 -
Java反射练习
Java反射源码package com.he.main;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;public class Main { public static voi原创 2021-02-06 16:53:26 · 212 阅读 · 2 评论 -
Java 反射篇(四)JDK 动态代理总结
文章目录例子源码解析获取动态代理生成的 Class 文件参考什么是代理?代理对象 = 增强代码 + 目标对象什么是动态代理?动态代理是一种方便运行时动态生成代理、动态处理代理方法调用的机制。这个概念是与静态代理相对的,静态代理需要为每一个目标类都手工编写或用工具生成一个对应的代理类,非常繁琐。很多场景都是利用类似机制做到的,比如用来包装 RPC 调用、面向切面的编程(AOP)。动态代理的实现方式有很多,比如 JDK 自身提供的动态代理,或者利用性能更高的第三方字节码生成框架(例如 ASM原创 2021-02-06 15:17:26 · 183 阅读 · 2 评论 -
Java 反射篇(三)泛型 API 总结
文章目录泛型 API泛型术语例子例子一例子二例子三例子四例子五参考泛型 APIJDK 1.5 引入了泛型特性,一同引入的还有 Java Type 类型体系。其中 Type 接口作为核心,是 Java 编程语言中所有类型的通用超级接口(common superinterface),这些类型包括:原始类型(raw types)参数化类型(parameterized types)数组类型(array types)类型变量(type variables)八大原始类型(primitive types)原创 2021-02-06 15:16:39 · 385 阅读 · 1 评论 -
Java 反射篇(二)注解 API 总结
文章目录Annotation@Inherited@Target@Retention@RepeatableAnnotatedElementAnnotatedType参考JDK 1.5 引入了注解,其主要用途如下:生成文档,通过代码里标识的元数据生成 javadoc 文档。编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例。Annotat原创 2021-02-06 15:15:56 · 263 阅读 · 2 评论 -
Java 反射篇(一)基础 API 总结
什么是反射?反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。主要类:java.lang.Classjava.lang.Packagejava.lang.reflect.Fieldjava.lang.reflect.Methodjava.lang.reflect.Constructor// JDK原创 2021-02-06 15:15:14 · 141 阅读 · 0 评论 -
Java网络编程UDP协议之模拟QQ发送信息(无图形化页面)
方法一,做一个Send和Reserve,在2个窗口输入输出信息Reserve:package xyz.main;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class Reserve { public static void main(String[] args) throws IOException { Datagram原创 2021-02-04 22:40:22 · 346 阅读 · 5 评论 -
Java图形化页面代码初探(awt包)
module-info:module MainTest { requires java.desktop;}package xyz.zlqhe.main;import java.awt.*;import java.awt.event.*;public class Main { public static void main(String[] args) { Frame f = new Frame("我的第一个图形化页面"); f.setSize原创 2021-02-04 17:12:58 · 118 阅读 · 0 评论 -
Java设计模式之工厂模式
综述:简单的说工厂模式就是提供一个工厂方法,传入指定的参数得到我想要的对象。为什么要使用工厂模式?1、考虑这样一个问题,对于一个类A,当A被使用的地方很多,则很多地方都会使用new来创建对象,肯定会导致使用A的地方有很多代码重复。2、考虑当A有功能改变时,使用A的地方的所有代码都需要改变,很是麻烦。3、如果一个抽象类有很多子类,当需要更改需求,调用其他子类时,则需要修改业务逻辑的类,这样不符合一般的设计原则。基于以上的问题,工厂模式应运而生。使用工厂模式吧创建对象的操作放在其中,需要使用指定类对原创 2021-02-03 21:00:15 · 184 阅读 · 0 评论 -
Java设计模式:深入理解单例模式
文章目录**引言****单例模式****它的七种写法****1、饿汉式****2、懒汉式(非线程安全)****3、懒汉式(线程安全)****4、双重校验锁(DCL)****5、静态内部类****6、枚举****7. 使用容器**什么是设计模式?简单的理解就是前人留下来的一些经验总结而已,然后把这些经验起了个名字叫Design Pattern,翻译过来就是设计模式,通过使用设计模式可以让我们的代码复用性更高,可维护性更高,让你的代码写的更优雅。设计模式理论上有23种,今天就先来分享下最常用的单例模式。原创 2021-02-03 20:48:22 · 88 阅读 · 0 评论 -
Java多线程总结(一) Java多线程概念及六大状态
进程和线程进程和线程的概念现在的电脑手机,都能宏观**(现在的多核处理器能在真正意义上实现这样的并行处理;但是我们的进程数是不会受处理器核数的影响的,可以比处理器的核心数多,那时候还是要进行时间片的分配,也就是宏观的实现并行处理)**的在同一个时刻做多个事情(比如说,边写博客边听歌呀!)。这是因为有多进程,才能让我们这么方便的做这些事情。简单的说:一个应用程序就可以看作是一个进程(当然会有一个应用有多个进程的情况)。而一个进程(可以直接想象成一个应用程序)能够同时执行多个任务是由多线程来进行实现的(举原创 2021-02-04 17:13:42 · 128 阅读 · 3 评论 -
Java多线程面经题总结
文章目录一、基本概念二、多线程的实现方法三、线程的生命周期三、线程属性四、线程锁五、线程同步六、线程间通信七、线程池八、线程队列九、线程阀一、基本概念什么是进程?什么是线程?进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。CPU很快,那当多个任务要执行的时候怎么办呢?答案是CPU轮流着来执行。执行一段程序代码,当得到CPU的时候,相关的资源必须也已经就位,然后CPU开始执行。这里除了CPU以外所有的就构成了这个程序的执行环境,也就是我们所定义的程序上下文。当这个程序原创 2021-02-03 20:17:25 · 229 阅读 · 0 评论 -
Java 开发必备类库 Apache Commons Lang
文章目录StringUtils判空函数判断是否相等函数是否包含函数索引下标函数截取函数删除函数删除空白函数替换函数反转函数分隔函数合并函数大小写转换和判断缩短省略函数相似度函数BooleanUtilsArrayUtils添加方法克隆方法包含方法获取长度方法获取索引方法判空方法长度相等判断方法空数组转换删除元素方法反转方法截取数组打印数组方法参考Apache Commons 是一个 Apache 项目,专注于可重用 Java 组件的方方面面。Apache Commons 项目由三个部分组成:[外链图片转原创 2021-02-03 20:12:31 · 674 阅读 · 0 评论 -
Java 响应式编程系列---Reactor Operator API 总结
文章目录注意点Mono创建 Mono 流中间操作转换操作空值处理执行操作异常处理终结操作阻塞返回结果Flux创建 Flux 流中间操作转换操作空值处理排序去重分组合并压缩获取元素延迟处理缓冲订阅计数异常处理执行操作终结操作阻塞返回结果参考尽管 Reactive Streams 规范并未指定任何运算符(Operators),但 Reactor 的核心价值之一就是提供了丰富的运算符。从简单的转换、过滤到复杂的编排和错误处理,涉及方方面面。推荐通过参考文档而不是 JavaDoc 来学习 Mono/Flux A原创 2021-02-03 20:10:49 · 1292 阅读 · 0 评论 -
Java 响应式编程系列---Reactor 入门总结
先决条件Reactor Core 需要在 Java 8 及以上版本运行。依赖安装自 Reactor 3 开始(since reactor-core 3.0.4, with the Aluminium release train),Reactor 使用 BOM (Bill of Materials) 模型来管理依赖。BOM 将一组相关的、可以良好协作的构建(Maven Artifact)组合在一起,提供版本管理。避免构件间潜在的版本不兼容风险。为项目引入该 BOM:<dependencyMan原创 2021-02-03 20:09:59 · 1045 阅读 · 0 评论 -
Java 响应式编程系列---响应式编程总结
文章目录历史定义设计思想迭代器模式观察者模式Reactive Streams 规范依赖核心接口接口交互流程响应式编程阻塞带来的性能浪费传统异步编程带来的缺点从命令式过渡到响应式编程参考历史响应式编程(Reactive Programming)概念最早于上世纪九十年代被提出,微软为 .NET 生态开发了 Reactive Extensions (Rx) 库用于支持响应式编程,后来 Netflix 开发了 RxJava,为 JVM 生态实现了响应式编程。随着时间的推移,2015 年 Reactive Str原创 2021-02-03 20:09:15 · 1147 阅读 · 1 评论 -
并发编程系列-Java 线程池总结
文章目录自定义线程池源码解析重要属性线程池状态工作线程数线程工厂阻塞队列拒绝策略执行流程使用工厂类创建线程池为什么要用线程池?线程的创建和销毁是有代价的。如果请求的到达率非常高且请求的处理过程是轻量级的,那么为每个请求创建一个新线程将消耗大量的计算资源。活跃的线程会消耗系统资源,尤其是内存。大量空闲线程会占用许多内存,给垃圾回收器带来压力,而且大量线程竞争 CPU 资源还会产生其它的性能开销。可创建线程的数量上存在限制,如果创建太多线程,会使系统饱和甚至抛出 OutOfMemoryExcepti原创 2021-02-03 20:02:52 · 178 阅读 · 0 评论 -
并发编程系列-Java 并发包总结
工作中常用到一些并发编程类,这里做一些总结。JDK 中涉及到线程的包如下:java.lang内含基础并发类。Runnable无返回结果的异步任务。Thread程序中的执行线程。属性Thread 对象中保存了一些属性能够帮助我们来辨别每一个线程,知道它的状态,调整控制其优先级等:ID每个线程的独特标识。Name线程的名称。Priority线程对象的优先级。优先级别在 1-10 之间,1 是最低级,10 是最高级。不建议改变它们的优先级。Daemon是原创 2021-02-03 20:01:38 · 384 阅读 · 0 评论 -
Java-IO流图解记忆
inputStream:字节输入流 outputStream:字节输出流 Reader:字符输入流 Writer:字符输出流原创 2021-01-31 13:59:30 · 211 阅读 · 0 评论 -
Java 集合框架系列,总结性全文,解决你所有困惑
文章目录集合接口CollectionMap集合实现类抽象类实现通用实现遗留实现并发实现特殊实现适配器实现包装器实现便利实现基础设施算法和工具实现定长/变长可改/不可改可变/不可变随机/顺序访问元素限制能否为 null类型限制数组转 List 方法同步包装器并发集合队列阻塞队列并发队列(非阻塞)并发散列表并发跳表Java SE 9Java SE 8Java SE 7Java SE 6Java SE 5Java SE 1.4迭代器模式迭代器实现与 Stream API 对比与 Reactive Stream 对原创 2021-01-31 10:33:18 · 258 阅读 · 0 评论 -
Java 虚拟机总结----厂商实现总结、运行时数据区总结、垃圾收集器总结、性能监控、故障处理工具总结
目录厂商实现总结运行时数据区PC RegisterJVM StacksFramesHeapMethod AreaRun-Time Constant PoolNative Method Stacksjava 命令JVM StackHeapMethod AreaPermGenMetaspaceDirect Memory内存溢出情况一情况二情况三垃圾收集器总结性能监控、故障处理工具总结分类命令行工具可视化工具反汇编工具命令行工具jpsjstatjmapjstack参考厂商实现总结运行时数据区手绘的运行时数原创 2021-01-31 10:26:21 · 225 阅读 · 0 评论 -
Java 加密篇之算法总结
单向加密单向加密又称为不可逆加密算法,其密钥是由加密散列函数生成的。单向散列函数一般用于产生消息摘要,密钥加密等。例如下图摘要由 SHA-1 生成。SHA1 摘要长度为 20 Bytes (160 bit),一般用 40 位十六进制数表示(1 Byte = 8 bit,4 bit (2^4) = 1 位十六进制数,因此 160 bit / 4 = 40 位十六进制数表):对称加密[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLOO3pRG-16120077428.原创 2021-01-30 19:55:59 · 321 阅读 · 0 评论 -
Eclipse 系列之自定义高效快捷键
好的快捷键可以提高编码的效率。第三方解决方案曾经使用过 Eclipse 的 Vim 插件 viplugin 提升光标移动和文本编辑的效率,但终因一些热键冲突问题而放弃使用了,有兴趣的同学可以参考 《viplugin 用户手册》,付费破解参考这里。其它解决方案还有 vrapper、eclim ,可以自行体验。我的方案经过权衡,还是决定自定义一套属于自己的快捷键。键位主要参考 Vim 和 Bash ,并主要利用闲置的 Alt 键避免冲突,配置总结如下:移动光标类CommandBind.原创 2021-01-30 19:39:18 · 211 阅读 · 1 评论 -
Eclipse 系列之常用默认快捷键
常用的 Eclipse 默认快捷键,总结如下:源码类这一类快捷键是我的最爱,可以极大的提高编程和重构效率。CommandBindingDescriptionQuick FixCtrl+1Suggest possible fixes for a problemContent AssistAlt+/内容辅助(代码提示)Show Source Quick MenuAlt+Shift+S重构RenameAlt+Shift+R重命名Extract F原创 2021-01-30 19:38:16 · 250 阅读 · 2 评论 -
Dubbo源码分析系列之SPI机制
目录关于Java SPI实现SPI需要遵循的标准SPI的实际应用SPI的缺点Dubbo优化后的SPI机制基于Dubbo SPI的实现自己的扩展扩展协议扩展点Dubbo的扩展点原理实现ExtensionLoader.getExtensionLoader.getExtension实例化ExtensionLoadergetExtensioncreateExtensiongetExtensionClassesinjectExtensionAdaptive自适应扩展点getAdaptiveExtensioncreat原创 2021-01-30 11:34:36 · 166 阅读 · 2 评论 -
IntelliJ IDEA导入Zookeeper源码
目录配置ant配置maven基于ant构建zookeeper源码编译导入到IDEA中启动zookeeper配置run configuration配置日志输出连接测试zkClitelnetmaven形式的导入我在使用IDEA导入zookeeper并且尝试运行时,遇到了很多的问题, 如果大家也遇到类似的需求,可以参考这篇文章来做我会基于ant和maven两种形式来构建zookeeper的源码在github上搜索zookeeper, 一般来说,第一个结果就是zookeeper的源码也可以通过直达通道快速进原创 2021-01-30 11:29:27 · 554 阅读 · 0 评论 -
Java,FileInputStream、FileOutputStream字节流一般性操作
package xyz.zlqhe.www;import java.io.*;import java.util.Scanner;public class MainTest { public static void main(String[] args) throws IOException { //拷贝: //Demo_01(); //逐个字节 //Demo_02(); //大数组 //Demo_03(); //小数组 .原创 2021-01-29 22:47:05 · 110 阅读 · 0 评论 -
Java模拟记事本
闲的无聊,写了个Java代码模拟一下记事本 public static void Demo_08() throws IOException{ Scanner sc = new Scanner(System.in); System.out.print("请输入记事本名字:"); String s = sc.nextLine() + ".txt"; System.out.println("此为记事本,请输入:"); Fi.原创 2021-01-29 15:39:06 · 295 阅读 · 1 评论 -
Java中IO流标准异常处理代码
1.7版本之前 private static void Demo_05() throws IOException{ FileOutputStream fout = new FileOutputStream("bbb.txt"); String s = "你好世界"; fout.write(s.getBytes()); fout.close(); //标准异常处理代码 FileInputStream f.原创 2021-01-29 14:52:18 · 126 阅读 · 2 评论 -
如何用Java算出100的阶乘
今天小编突发奇想,一般的C语言和普通的计算器想要算出100的阶乘根本行不通,那么100的阶乘到底多大呢?想到Java中有个BigInteger类,于是,今天就用代码实现一下100的阶乘;import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) throws IOException { Demo_02();原创 2021-01-28 15:23:44 · 3842 阅读 · 0 评论 -
Maven入门,读完这篇就够了
正文Maven概念Maven作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。Maven不仅是构建工具,还是一个依赖管理工具和项目管理工具,它提供了中央仓库,能帮我自动下载构件。maven的安装一:因为本人是window系统,所以这里只介绍window下如何安装,在安装Maven之前,先确认已经安装了JDK.二:接着去Maven官网下载界面下载想要的版本解压到你想要的目录就..原创 2021-01-27 21:41:51 · 193 阅读 · 0 评论 -
Java中Map集合遍历的两种方式比较及其图解
1. Map集合变量之键找值 HashMap<String,String> hm = new HashMap<>(); String s1 = hm.put("张三","北京"); String s2 = hm.put("李四","上海"); String s3 = hm.put("王五","深圳"); String s4 = hm.put("赵六","上海"); Set<String>原创 2021-01-25 22:25:45 · 130 阅读 · 0 评论 -
Java集合框架图解
原创 2021-01-25 17:17:30 · 145 阅读 · 0 评论 -
Java中equals、hashCode方法重载(@Override)及其健壮性判断
方法一 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (age != person.age) return false; retu.原创 2021-01-24 16:28:00 · 702 阅读 · 0 评论 -
Java中Pattern、Matcher的用法,以及正则匹配邮箱的代码演示
java中有Pattern、Matcher类,主要作用于正则匹配由官方文档可知,典型的调用序列为: Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();先将正则表达式转化成模式,再由模式用matcher方法使之成为Matcher匹配器,最后由Matcher匹配器调用一些方法,实现正则表达式的一些功能;Matcher中变量和类型 方法 描述Matcher .原创 2021-01-18 15:43:38 · 814 阅读 · 1 评论