Java
文章平均质量分 78
弓长木子_J
Those times when you get up early and you work hard
Those times when you stay up late and you work hard.
Those times when you don't feel like working you're too tired
and you don't want to push youself. But you don it anyway.
That is actually the dream.
This's the dream.
展开
-
Java自定义注解实现
Java自定义注解实现原创 2022-12-11 00:31:32 · 3077 阅读 · 0 评论 -
linux命令:java调用shell脚本与shell脚本调用java程序
linux命令:java调用shell脚本与shell脚本调用java程序原创 2022-12-04 21:34:19 · 3493 阅读 · 0 评论 -
Java电子签章验章知识储备
Java电子签章验章知识储备原创 2022-06-05 22:24:03 · 1151 阅读 · 1 评论 -
零拷贝详解
一、概念1、用户态与内核态⽤户态和内核态是操作系统的两种运⾏状态。(1)内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,⽐如⽹卡、硬盘等,处于内核态的 CPU 可以从⼀个程序切换到另外⼀个程序,并且占⽤ CPU 不会发⽣抢占情况,⼀般处于特权级 0 的状态我们称之为内核态。(2)⽤户态:处于⽤户态的CPU只能受限的访问内存,并且不允许访问外围设备,⽤户态下的 CPU 不允许独占,也就是说 CPU 能够被其他程序获取。注意:1)为什么要有⽤户态和内核态呢? 这个主要是访问能⼒的限制原创 2022-05-18 22:25:50 · 664 阅读 · 0 评论 -
Unsafe的使用
1、调用问题我们直接获取Unsafe,调用其中属性方法时会出现异常:java.lang.SecurityException: Unsafe at sun.misc.Unsafe.getUnsafe(Unsafe.java:90) at UnsafeTest.main(UnsafeTest.java:5)异常分析:Unsafe unsafe = Unsafe.getUnsafe();上面这行代码出现的异常,获取Unsafe时出现异常,查看getUnsafe()方法如下: @CallerS原创 2022-05-03 18:25:30 · 1194 阅读 · 0 评论 -
ThreadLocal详解
一、概括ThreadLocal提供线程局部变量。这些变量不同于它们的正常对应变量,因为每一个访问(通过它的 get 或 set 方法)的线程都有它自己的、独立初始化的变量副本。 ThreadLocal 实例通常是希望将状态与线程相关联的类中的私有静态字段(例如,用户 ID 或事务 ID)。 只要线程处于活动状态并且ThreadLocal 实例可访问,每个线程都持有对其线程局部变量副本的隐式引用;在线程消失后,它的所有线程本地实例副本都将受到垃圾回收(除非存在对这些副本的其他引用)。二、三要素学习T原创 2022-04-10 21:12:41 · 376 阅读 · 0 评论 -
分布式搜索(elasticsearch)
一、初始elasticsearch1、了解ES(1)什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。 (2)什么是elastic stack(ELK)? 是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch。beats、Logstash:数据收集kibana:图形展示elasticsearch:数据存储、搜索的核心功能(3)什么是Lucene? 是原创 2022-03-30 22:14:48 · 3375 阅读 · 0 评论 -
Spring事务失效常见场景
一、事务方法访问修饰符非public,导致事务失效1、实例2、解决方式一:将方法修饰符改为public方式二:开启AspectJ代理模式3、注意 如果事务是static、final的,同样无法通过动态代理,事务也是不会生效的。 Spring的声明式事务是基于动态代理实现的,我们无法重写final修饰的方法; 不管是JDK动态代理还是Cglib的动态代理,就是要通过代理的方式获取到代理的具体对象,而static方法修饰的方法是属于类的,不属于任何对象,所以static方法不能被重写,即原创 2022-03-24 13:40:16 · 21931 阅读 · 0 评论 -
MQ(MessageQueue)的学习使用
一、MQ1、消息的通讯机制同步和异步的定义:(1)所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;(2)所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。2、同步通讯(1)优点:时效性较强,可以立即得到结果。(2)缺点:微服务间基于Feign的调用就属于同步方式,存在一些问题。1)耦合问题 业务增加导致代码迭代开发,复杂度增加,耦原创 2022-03-13 18:16:06 · 3973 阅读 · 0 评论 -
Docker
一、初始Docker二、Docker的基本操作三、Dockerfile自定义镜像四、Docker-Compose五、Docker镜像服务原创 2022-03-09 22:10:43 · 430 阅读 · 0 评论 -
Spring Cloud-Gateway
Spring Cloud-Gateway原创 2022-03-01 00:29:01 · 352 阅读 · 0 评论 -
Spring Cloud-Feign
Spring Cloud-Feign原创 2022-02-28 00:30:06 · 219 阅读 · 0 评论 -
Spring Cloud-Nacos
我们知道Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件,相比Eureka功能更加丰富,在国内受欢迎程度较高。一、Nacos的安装与部署二、Nacos服务分级存储模型服务-实例(一对多)加上地域划分:服务-集群(一对多)、集群-实例(一对多)优点:容灾,就近原则(访问本地集群,效率高,不用跨越多重局域网)如何配置:cloud:nacos:server-addr: localhost:8848 #nacos服务端地址discovery: cluster-name:原创 2022-02-25 00:39:44 · 805 阅读 · 0 评论 -
WebService
原创 2022-02-21 01:49:43 · 789 阅读 · 0 评论 -
Spring Cloud-Ribbon
一、简介Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。 Ribbon是Spring Cloud核心组件之一,它提供的最重要的功能就是负载均衡,和硬件负载均衡F5不同,它的负载均衡是基于客户端的,Zuul网关和Feign可以通过Ribbon轻松的实现服务的负载均衡,同时避免了与业务无关的冗余代码。 Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cl原创 2022-02-18 01:24:08 · 228 阅读 · 0 评论 -
J2EE的13种技术规范
一、J2EE(Java 2 Platform Enterprise Edition,Java 2 平台企业版)可参考百度百科《j2ee》。1、简介 J2EE的全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准,或者说,它是在SUN公司领导下,多家公司参与共同制定的企业级分布式应用程序开发规范。J2EE是市场上主流的企业级分布式应用平台的解决方案。 2、背景 Java的“一次开发,多次运行”,纯面向对象的特原创 2022-02-17 21:06:33 · 3232 阅读 · 0 评论 -
RPC与HTTP
我们常见的远程调用方式有RPC和HTTP,这篇文章就从这两个方面开始介绍。一、RPC(Remote Produce Call,远程过程调用)RPC类似于RMI(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。1、特点:(1)自定义数据格式(2)基于原生TCP通信(3)速度快(4)效率高2、典型代表:(1)早期的webservice(cxf)(2)现在热门的dubboRMI的框架:hessian3、调用流程图4、RPC详解原创 2022-02-16 00:06:33 · 3787 阅读 · 0 评论 -
响应式编程和函数式编程
一、响应式编程(Reactive Programming,RP)1、关键字 关键字:RxJava,观察者模式,EventBus,广播,Gateway 2、定义 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。 例如,对于 a=b+c 这个表达式的处理,在命令式编程中,会先计算 b+c 的结果,再把此结果赋值给变量a,因此b,c两值的变化不会对变量a产生影响。但在响应式编程中,变量a原创 2022-02-12 01:21:50 · 876 阅读 · 0 评论 -
Java函数式接口@FunctionalInterface
一、源码package java.lang;import java.lang.annotation.*;/** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specificati原创 2022-02-10 21:55:17 · 767 阅读 · 0 评论 -
Predicate
predicate原创 2022-02-09 20:57:15 · 363 阅读 · 0 评论 -
微服务技术栈(概括)
微服务技术栈原创 2022-02-08 21:26:19 · 2731 阅读 · 0 评论 -
Gateway
一、网关定义可参考《网关》 网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。下面引用《百度百科》的图:小不点和小明(很小,这里你就是一原创 2022-01-24 00:06:37 · 1186 阅读 · 0 评论 -
数据结构-队列篇
数据结构-队列篇原创 2021-12-28 00:48:47 · 828 阅读 · 0 评论 -
Spring的JavaConfig
spring曾经很多东西也是被诟病的,当然这也是说明有很多进步的空间,其中xml的配置是诟病最多的,后面spring就推出了JavaConfig来进行配置优化。这篇文章就由简入繁进行介绍。一、@Configuration<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001原创 2021-11-08 03:32:58 · 395 阅读 · 0 评论 -
Java中的各种锁分类及应用
这里用表格的形式将Java中的锁以及应用进行罗列,可结合我的另一篇文章《Java中的锁机制》进行阅读学习。原创 2021-08-22 02:19:30 · 392 阅读 · 0 评论 -
JMM之happens-before原则
Java语言规范中有着针对指令重排序的happens-before规则。原创 2021-08-20 01:35:14 · 280 阅读 · 0 评论 -
Callable
面试中或许都遇到过这样的问题:“Java中创建线程的方式有哪些?”,本篇文章要说的Callable接口就是其中一种。原创 2021-08-18 01:28:07 · 402 阅读 · 0 评论 -
CharSequence
CharSequence是一个描述字符串结构的接口。我们常见的String、StringBuilder、StringBuffer这三个字符串相关的类,就是CharSequence的实现类。这样就显而易见了,CharSequence的用处可就大了,就凭借他是三大字符串类所实现的接口,咱不去看源码,大致也能感觉到这个接口应该是有很大作用的。原创 2021-08-17 23:14:20 · 611 阅读 · 0 评论 -
Java中的I/O通信机制模型(BIO/NIO/AIO)
一、什么是I/O?I/O为input(输入)/ output(输出)的简称。Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。二、什么是流?流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。1、Jav原创 2021-08-17 01:49:23 · 744 阅读 · 0 评论 -
Java中一些常见的校验注解
一、javax.validation.constraints中的校验注解1.@Null被注释的元素必须为 null。2.@NotNull被注释的元素必须不为 null。3.@AssertTrue被注释的元素必须为 true。4.@AssertFalse被注释的元素必须为 false。5.@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值。6.@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值。7.@DecimalMin(va原创 2021-08-09 01:32:04 · 4715 阅读 · 0 评论 -
CAS和ASQ原理(源码详解)
前面介绍Java中的锁机制时简单介绍过CAS和ASQ,这篇文章则是进行详细的学习介绍。一、CAS(compareAndSwamp,比较并交换)二、AQS(AbstractQueuedSynchronizer, 队列同步器)原创 2021-08-08 18:52:41 · 629 阅读 · 0 评论 -
Java启动参数详解
Java启动参数的内容是JVM调优的必备知识,也是学习JVM的必经之路,这篇文章就用于记录相关知识。原创 2021-07-23 00:45:41 · 6231 阅读 · 0 评论 -
JDK命令行工具使用详解
这篇文章是基于sun提供的命令行工具使用及操作详解。随着时代的进步,市面上已经有许多支持工作的工具,例如阿里的Arthas(阿尔萨斯)就深受喜爱,实现了JVM自带的几乎所有诊断功能,这篇文章是介绍sun提供的一系列开源分析诊断工具。前面有写过各种JDK命令行工具的简介,详情可查看《JDK目录结构以及自带的工具解析》。一、JPS主要用于查看进程ID(PID)。C:\Program Files\Java\jdk1.8.0_152\bin>jps -helpusage: jps [-help]原创 2021-07-14 01:01:05 · 388 阅读 · 1 评论 -
idea64.exe.vmoptions文件详解
实际开发中常用IDEA的小伙伴,遇到内存问题时可能会修改idea64.exe.vmoptions文件中的部分参数,那么这篇文章就用于详细介绍该文件。一、文件简介idea64.exe.vmoptions和idea.exe.vmoptions两个文件都是IntelliJ IDEA的可执行文件的VM(虚拟机)配置文件,简单来说就是IDEA配置虚拟机参数的位置,不过前者对应的时64位IDEA,后者对应的是32D位的IDEA。注意:这跟项目中的虚拟机参数配置是有区别的,这两个文件针对的是IDEA环境,是IDE原创 2021-07-10 15:44:53 · 24811 阅读 · 7 评论 -
Java中Base64的解析
开始这篇文章之前,首先需要明白,Base64的主要用途并不是加密,而是将二进制数转换成方便在网络上传递的字符。Base64只能算是一个编码算法,对数据内容进行编码从而适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是方式初级又简单(用于加密的话轻松就能破解就没有意义了)。一、简介(什么是Base64)这里直接沿用百度百科中的介绍:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~R原创 2021-06-26 19:09:14 · 3402 阅读 · 1 评论 -
java.lang.reflect(Java反射包)
Java反射包是我们日常经常接触并且也是Java的基础内容,这篇文章就是为了方便学习记录Java反射包下相关的内容,巩固精进Java基础。一、简介java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,方法和构造函数对其底层对等进行操作。二、Java反射包关系图三、Java反射包下类和接口简介我的目的是为了与字节码对象Class一起关联介绍(可以通过Class获取原创 2021-06-24 21:46:05 · 2610 阅读 · 1 评论 -
Java中的锁机制
锁机制无处不在,锁机制是实现线程同步的基础,锁机制并不是Java锁独有的,其他各种计算机语言中也有着锁机制相关的实现,数据库中也有锁的相关内容。这篇文章就是从Java入手,深入学习、理解Java中的锁机制,提升Java并发编程能力。原创 2021-06-11 21:26:49 · 2569 阅读 · 1 评论 -
Java中修饰变量和方法的关键字总结分析
Java关键字我们接触的也都不少了,就以这篇文章收录下一些特殊使用的关键字,作为深入学习的记录。原创 2021-06-07 23:51:03 · 1773 阅读 · 4 评论 -
小码农的十万个为什么!!!(二)
1.@Autowired 与@Resource的区别原文很棒:https://blog.csdn.net/weixin_40423597/article/details/80643990 @Resource的作用相当于@Autowired,只不过**@Autowired按byType自动注入**,而**@Resource默认按 byName自动注入**罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而ty原创 2021-06-02 23:38:19 · 1109 阅读 · 1 评论 -
Gradle的学习及使用
前面我已经写过一篇文章,关于《构建工具:Ant、Maven、Gradle》的文章,其中也对Gradle进行了一些介绍,而本篇文章则是进行更深入学习介绍。一、简介1.为什么我们需要新的构建工具(Gradle)呢? 我们知道maven已经很好了,可以满足绝大多数工程的构建。那为什么我们还需要新的构建工具呢?第一,maven是使用xml进行配置的,语法不简洁。第二,最关键的,maven在约定优于配置这条路上走太远了。就是说,maven不鼓励你自己定义任务,它要求用户在maven的生命周期中使用插件的方原创 2021-05-31 01:47:56 · 739 阅读 · 0 评论