java
文章平均质量分 87
java的一些内容
$码出未来
~~~
展开
-
JUC系列 | CopyOnWriteArrayList源码解析
原创不易,转载请注明出处文章目录1.原理介绍1.1 底层原理:1.2 原理图解1.3 优缺点/适用场景2.源码分析2.1 add 方法源码分析2.2 get方法2.3 remove 方法1.原理介绍CopyOnWriteArrayList从名字上也能看出来,写时复制的一个ArrayList(关于采用写时复制机制其他工具源码分析我们写过2篇,可以一块学习下,原理是一样的《Tomcat中基于ArrayList实现的数组栈ArrayStack源码剖析》,《深度解析Kafka中CopyOnWriteMa.原创 2021-08-24 23:06:51 · 217 阅读 · 0 评论 -
Tomcat中基于ArrayList实现的数组栈ArrayStack源码剖析
原创不易,转载请注明出处文章目录前言1.ArrayList介绍2.ArrayStack介绍2.1 压栈原理图解2.2 弹栈原理图解3.ArrayStack源码剖析前言最近在看tomcat源码的时候,在它加载解析配置文件的时候使用到了一个数据结构ArrayStack ,它是tomcat里面实现的一个基于ArrayList实现的数组栈,提供了压栈,弹栈几个方法,源码实现很简单,但是思路值得学习。1.ArrayList介绍ArrayList 这个数据结构不用多说,搞java 开发的小伙伴几乎天天用.原创 2021-08-12 20:35:50 · 395 阅读 · 0 评论 -
tomcat使用apr优化
1.apr介绍tomcat中有三种运行方式,分别是BIO,NIO,APRtomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成org.apache.coyote.http11.Http11NioProtocol,重启即可生...原创 2020-04-21 15:38:46 · 1204 阅读 · 0 评论 -
Skywalking初体验
一.软件安装1.准备软件包 ElasticSearch安装包,下载地址, 这里选择的是6.6.1版本的es Skywalking安装包,下载地址,这里选择apache-skywalking-apm-6.2.0.tar.gz 2.ElasticSearch安装<1>下载完es安装包后,然后解压安装包tar-zxvfelasticsearch...原创 2020-04-11 22:27:26 · 710 阅读 · 0 评论 -
Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
在maven的pom文件配置<properties> <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding></properties>就可以配置项目编译编码了。...原创 2019-11-01 14:31:59 · 332 阅读 · 0 评论 -
maven项目打成jar包执行提示没有主清单属性
问题:使用maven创建了一个普通的java项目,然后打成jar 包,java -jar 执行,出现没有主清单属性解决:在pom文件中添加build插件 <build> <plugins> <plugin> <groupId>org.apache.mave...原创 2019-11-01 14:13:07 · 2157 阅读 · 0 评论 -
Lombok 学习
一、Lombok 简介Lombok 是一款 Java 开发插件,使得 Java 开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的 Java 模型对象(POJO)。在开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样的方法以及各种业务对象模型的 accessor 和 toString 等方法的大...原创 2019-10-31 16:06:22 · 290 阅读 · 0 评论 -
手动实现一个简单JDK版动态代理
一.实现步骤根据目标类的接口类型生成代理类的java文件。 编译代理类java文件为.class字节码文件。 将编译好的字节码文件加载到jvm中。 生成代理类对象并返回。二.代码实现1.Proxy类public class CLProxy { private static final String ENTER= "\r\n"; private sta...原创 2019-09-22 19:55:10 · 497 阅读 · 0 评论 -
java操作hbase增删改查
一.准备java操作hbase需要使用Apache HBase Client客户端包。maven坐标(可以根据自己hbase版本选择对应的hbase client):<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</...原创 2019-09-01 17:54:47 · 526 阅读 · 0 评论 -
javassist使用
一.介绍 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类...原创 2019-08-31 11:16:00 · 472 阅读 · 2 评论 -
volatile的定义与原理
一.定义java语言规范第三版对volatile的定义如下:java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。java语言提供了volatile,在某些情况下比锁更加方便,如果一个字段被声明称volatile,java线程内存模型能够确保所有线程看到这个变量的值是一致的。二. volatile如何保证可见性我们在...原创 2019-08-20 22:10:33 · 372 阅读 · 0 评论 -
xxl-job源码解读之任务调度器(核心)
一.任务调度器介绍在xxl-job中,有两个角色,一个是执行器,另一个就是调度中心了。而任务调度器可以说是调度中心的最核心,我们发往执行器的任务,都是从任务调度器发出来的(除手动执行的)。二.原理解读首先我们要带着这几个问题来解读原理:1.分布式任务调度有个很重要的点,就是怎样保证一次任务调度被消费一次,也就是怎样保证幂等性?2.是怎样实现调度的,调度流程是什么样的?3.出...原创 2019-08-01 23:09:25 · 2188 阅读 · 0 评论 -
Callable,FutureTask,Future详解
目录一.介绍1.Callable2.Future3.FutureTask二.简单使用1.使用Thread类实现2.使用线程池实现三.源码详解1.Callable接口2.Future接口3. FutureTask一.介绍1.Callable<T>Callable<T>是一个接口,有一个唯一的抽象方法call方法...原创 2019-07-28 13:40:35 · 457 阅读 · 0 评论 -
深度解析xxl-rpc之服务提供者
目录原创 2019-04-28 14:25:33 · 4865 阅读 · 2 评论 -
深度解析xxl-rpc之请求响应实体
在com.xxl.rpc.remoting.net.param包下面有两个原创 2019-04-30 10:46:31 · 2449 阅读 · 0 评论 -
javaWeb之Servlet详解
Servlet详解1.servlet简单介绍 servlet是javaweb三大组件之一,他与filter ,listener 共同组成了javaweb的三大组件,Servlet(Server Applet)是Java Servlet的简称,解释为运行在服务器端的java小程序, 作用:用来接收客户端的请求,处理业务逻辑,响应动态内容2.使用 创建一个java类,实现...原创 2019-07-18 11:10:57 · 195 阅读 · 0 评论 -
javaWeb之jsp
jsp简介: JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,在jsp中既可以写html 代码 ,又可以写java代码作用:将页面显示与业务逻辑相分离;通常分为三部分: java 代码 html代码 jsp指令jsp本质: 当你发起请求时,服务器会根据匹配的规则,匹配给jsp...原创 2019-07-19 08:58:39 · 111 阅读 · 0 评论 -
InheritableThreadLocal原理解析
InheritableThreadLocal使用在该《ThreadLocal原理解析》篇文章中ThreadLocal有一个问题就是子线程不能继承父线程的变量。那么本篇所分析的InheritableThreadLocal类就是为了解决这个问题诞生的。ThreadLocal问题演示 public static ThreadLocal<String> threadLocal...原创 2019-07-18 20:21:27 · 823 阅读 · 0 评论 -
ThreadLocal原理解析
当我们在使用多个线程访问一个共享变量的时候特别容易带来数据安全问题,尤其是我们在对一个共享变量写操作的时候,我们通常的解决方案是加锁,使对该共享变量的操作串行化,那么有没有一种方式可以做到,创建一个变量,每个线程对其访问的时候访问的是自己线程变量呢?使用ThreadLocal就可以实现。ThreadLocal它提供了一个本地线程变量,通俗的讲就是你创建了一个ThreadLocal变量,线程a在给...原创 2019-07-17 22:20:21 · 1207 阅读 · 1 评论 -
深度解析xxl-rpc之项目结构一览
一.项目结构项目github仓库地址:链接,我们首先要克隆下来。然后看到的项目结构如图:xxl-rpc-core项目是rpc的实现代码。xxl-rpc-simple项目是使用demo。1.xxl-rpc-core我们来看下core这个项目结构:作者按照组件功能来划分了rpc项目,分别划分4个包。1.1 registryregistry主要是服务发现与注册功能的包。包括zook...原创 2019-07-20 23:27:30 · 791 阅读 · 0 评论 -
cron表达式详解
表达式解释*注:表格中位置列 是 cron表达式从左 到右的位置位置 含义 取值范围 符号 1 秒 0-59 , - * / 2 分 0-59 , - * / 3 时 0-23 , - * / 4 日 1-30(31) , - * / L W C ? 5 月 ...原创 2019-08-02 21:05:41 · 752 阅读 · 0 评论 -
深度解析xxl-rpc之服务调用者
一.服务的调用者服务调用者总揽:在remoting包中的invoker包就是服务调用者,包括配置,bean代理,负载均衡策略,调用方案等。二.生成代理2.1 @XxlRpcReference我们先来看下 @XxlRpcReference注解,这个注解中定义了服务调用者的一些使用的一些策略。@Target({ElementType.FIELD})@Retention(Retentio...原创 2019-07-21 19:15:03 · 1682 阅读 · 0 评论 -
深度解析xxl-rpc之服务注册与发现
一.介绍包结构:正如上图所示,一个注册抽象类ServiceRegistry和三个实现类LocalServiceRegistry,XxlRegistryServiceRegistry,ZkServiceRegistry二.源码解析2.1ServiceRegistryServiceRegistry 抽象类,定义了注册客户端启动,停止,注册,发现的抽象方法。很简单。从注册,发现方法中可以看...原创 2019-07-22 15:21:10 · 956 阅读 · 1 评论 -
深度解析xxl-rpc之负载均衡算法
介绍原创 2019-07-26 21:13:05 · 798 阅读 · 0 评论 -
java SPI机制详解
目录一.SPI是啥1.定义2.图解3.使用场景二.使用规则三.demo演示1.定义接口与实现类2.编写配置3.测试四.源码分析1.创建2.加载3.获取五.SPI的优缺点一.SPI是啥1.定义SPI全称为 Service Provider Interface,是java中提供的一套可以被第三方实现和扩展的API接口机制...原创 2019-07-23 15:54:02 · 692 阅读 · 1 评论 -
xxl-rpc使用教程
目录简介服务提供方服务调用方一. 简介XXL-RPC 是一个分布式服务框架,提供稳定高性能的RPC远程服务调用功能。拥有"高性能、分布式、注册中心、负载均衡、服务治理"等特性。官网地址:http://www.xuxueli.com/xxl-rpc/#/二.服务提供方2.1 准备引入xxl-rpc-core核心依赖与公共api接口依赖<dependency> ...原创 2019-04-26 10:47:38 · 2755 阅读 · 0 评论