Java日常
文章平均质量分 64
Java日常
JueDream
这个世界都是教我们如何成功,却没人教我们如何接受失败和平庸。
展开
-
Bouncy Castle 密钥生成发放证书
Bouncy Castle 生成KeyPair、生成CSR请求文件、生成Certificate证书、签发Certificate证书原创 2022-08-16 14:24:26 · 2840 阅读 · 1 评论 -
SpringBoot-Skywalking分布式链路追踪(二)验证
没关系的,大家都会做错选择,会莫名其妙掉眼泪,走在路上会突然崩溃,但这并不影响我们去看看晚霞,再次爱上这个世界。一.准备1.开发工具验证在Idea开发工具服务配置中VM options 中添加:-javaagent:D:\YlDream\Java\apache-skywalking-apm-bin\agent\skywalking-agent.jar-Dskywalking.agent.service_name=skywalking-mumu-service-Dskywalkin..原创 2021-11-25 16:51:55 · 7295 阅读 · 0 评论 -
SpringBoot-Skywalking分布式链路追踪(一)环境准备
“你已经做得很好了,我把这句话存在这里,在需要勇气的时候,请替我悄悄说给你自己听”一.概览skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 ,2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。skywalking支持dubbo,SpringCloud,SpringBoot集成,代码无侵入,通信方式采用GRPC,性能较好,实现方式是java探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。Skywa...原创 2021-11-25 14:07:46 · 2004 阅读 · 0 评论 -
Springboot-Sharding-Jdbc-Seata集成(五)分布式事务
只有莲花才能比得上你的圣洁,只有月亮才能比得上你的冰清。一.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4..原创 2021-11-18 10:16:16 · 2000 阅读 · 5 评论 -
Springboot-Sharding-Jdbc-Seata集成(四)环境准备
对待自己温柔一点。你只不过是宇宙的孩子,与植物、星辰没什么两样。一.概览Seata的分布式事务解决方案是业务层面的解决方案,只依赖于单台数据库的事务能力。 Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的 分布式解决方案。 Seata框架中一个分布式事务包含3中角色:Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。 Transaction Manager (T..原创 2021-11-18 10:01:35 · 1387 阅读 · 0 评论 -
Springboot-Sharding-Jdbc集成(三)读写分离+数据分片
天空是蓝色的, 太阳是黄色的 大地是棕色的 海洋是蓝色的 草是绿色的 鲜花是五颜六色的 心跳是红色的❤️ 而你是属于我世界的颜色一.pom.xml文件引入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat..原创 2021-11-18 09:38:22 · 703 阅读 · 0 评论 -
Springboot-Sharding-Jdbc集成(一)环境准备
知道自己是什么年纪 并把这个年纪能做好的事情尽力做好 才可能有下个年纪的随心所欲一.概览ShardingSphere-Jdbc定位为轻量级Java框架,在Java的Jdbc层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,可理解为增强版的Jdbc驱动,完全兼容Jdbc和各种ORM框架。文档地址:https://shardingsphere.apache.org/document/current/cn/overview/二.MySQL主从复制原理从库B...原创 2021-11-18 09:20:16 · 1487 阅读 · 0 评论 -
Springboot-Sharding-Jdbc集成(二)读写分离
我遇见你,我记得你,这座城市天生就适合谈恋爱,你天生就适合我的灵魂。一.pom.xml 引入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.原创 2021-11-18 09:06:27 · 764 阅读 · 0 评论 -
Redis实现分布式锁(SetNx+Lua)
鬼魇举臂围城,覆淹星火,你恰是回头 万人中只一眼,却足以救我 ——《不可谖兮 》 伦桑一、SetNx+Lua1.setNxSET key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL] 必选参数说明: SET:命令 key:待设置的key value:设置的key的value,最好为随机字符串 可选参数说明: NX:表示key不存在时才设置,如果存在则返回 null XX:表示key存在时才设置,如果不..原创 2021-11-18 08:28:31 · 789 阅读 · 0 评论 -
Java内存模型之JMM角度分析DCL-XXOO
前言DCL,即Double Check Lock,中卫双重检查锁定。(单例模式)一、单例模式 3 -- 双重加锁(双重检查模式 (DCL))package com.yl.springboottest.consurrency.jmm.dcl;/** * 描述: Java内存模型之从JMM角度分析DCL * * DCL,即Double Check Lock,中卫双重检查锁定。(单例模式) * * @author: yanglin * @Date: 2020-12-07-9...原创 2020-12-11 16:14:31 · 616 阅读 · 0 评论 -
Java内存模型之重排序-XXOO
前言在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:1.在单线程环境下不能改变程序运行的结果;2.存在数据依赖关系的不允许重排序换一句话:无法通过happens-before原则推导出来的,JMM允许任意的排序。一、as-if-serial语义as-if-serial语义的意思是,所有的操作均可以为了优化而被重排序,但是你必须要保证重排序后执行的结果不能被改变,编译器、runtime、原创 2020-12-11 15:12:43 · 346 阅读 · 0 评论 -
Java内存模型-happens-before-XXOO
一、happens-before在JMM(Java内存模型)中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用happ.原创 2020-12-11 15:00:37 · 522 阅读 · 0 评论 -
Java-volatile线程访问共享变量(二)-XXOO
一、volatile的特性1.volatile可见性;对一个volatile的读,总可以看到对这个变量最终的写;2.volatile原子性;volatile对单个读/写具有原子性(32位Long、Double),但是复合操作除外,例如i++;3.JVM底层采用“内存屏障”来实现volatile语义;二、volatile与happens-before示例:class VolatileTest1 { int i = 0; volatile bool原创 2020-12-11 14:50:11 · 334 阅读 · 0 评论 -
Java-Volatile线程访问共享变量(一)-XXOO
一、Volatile是什么?volatile是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对volatile的定义:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。通俗点讲就是说一个变量如果用volatile修饰了,则Java可以确保所有线程看到这个变量的值是一致的,如果某个线程对volatile修原创 2020-12-11 14:41:05 · 980 阅读 · 0 评论 -
Java同步Synchronized-XXOO
一、Synchronized是什么?synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。二、代码实现1.实现方式Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:1.普通同步方法,锁是当前实例对象2.静态同步方法,锁是当前类的class对象3.同步方法块,锁是括号里面的对象public synchronized void synchronizedStart1(原创 2020-11-27 13:51:12 · 1199 阅读 · 0 评论 -
Java-J.U.C之并发工具类CountDownLatch-XXOO
一、CountDownLatch是什么?CountDownLatch是通过一个计数器来实现的,当我们在new 一个CountDownLatch对象的时候需要带入该计数器值,该值就表示了线程的数量。每当一个线程完成自己的任务后,计数器的值就会减1。当计数器的值变为0时,就表示所有的线程均已经完成了任务,然后就可以恢复等待的线程继续执行。在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDownlatch与CyclicBarrier的区别:1.CountDownL原创 2020-11-27 13:45:44 · 430 阅读 · 0 评论 -
Java-J.U.C之并发工具类CyclicBarrier-XXOO
一、CyclicBarrier是什么?CyclicBarrier,一个同步辅助类,在API中是这么介绍的:它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待, 此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。 通俗点讲就是:让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时, 屏障才会开门,所有被屏障拦截的线原创 2020-11-27 13:36:29 · 534 阅读 · 0 评论 -
数据结构之红黑树-XXOO
前言红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。一、红黑树的特性1、每个节点非红即黑2、根节点为黑色3、每个叶子节点为黑色。叶子节点为NIL节点,即空节点4、每个红色节点的两个子节点一定是黑色的5、从一个节点到该节点的子孙节点的所有路径包含相同个数的黑色节点红黑树插入一般是用红色插入,因为黑色插入必定会破坏平衡,但是红色则不一定。红黑树是黑色完美平二、代码示例pa...原创 2020-11-17 09:51:04 · 547 阅读 · 0 评论 -
多线程任务类型-CPU/I/O-XXOO
一、多线程任务类型多线程任务类型分为CPU 密集型以及I/O 密集型任务CPU 密集型* 这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1,* 比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务暂停而带来的影响。* 一旦任务暂停,CPU 就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用 CPU 的空闲时间。I/O 密集型任务* 这种任务应用起来,系统会用大部分的时间来处理 I/O 交互,而线程在处原创 2020-11-16 15:50:45 · 1028 阅读 · 0 评论 -
Hutool-Excel大数据生成-XXOO
一、准备对于大量数据输出,采用ExcelWriter容易引起内存溢出,因此有了BigExcelWriter。* ExcelUtil Excel工具类,读取的快捷方法都被封装于此* ExcelReader Excel读取器,Excel读取的封装,可以直接构造后使用。* ExcelWriter Excel生成并写出器,Excel写出的封装(写出到流或者文件),可以直接构造后使用。<!--hutool common 工具包--> <dependency>.原创 2020-11-16 15:01:30 · 4000 阅读 · 4 评论 -
Jacob操作Word文档转换-XXOO
前言JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32程序库。一、准备<!--添加本地的jacob.jar包--> <dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifactId> <version>1.19</version> <原创 2020-11-16 14:52:34 · 515 阅读 · 0 评论 -
Java集合之HashMap及扩容机制-XXOO
前言HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null值,因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap是线程不安全的。一、HashMap构造方法通过源码的分析,我们可以看到ArrayList有三种构造方法- 空的构造函数- 自定义初始容量-自定义默认初始容量与哈希因子- 通过传入Map元素列表进行生成 /** * C.原创 2020-11-16 14:21:18 · 710 阅读 · 0 评论 -
Java集合之ArrayList及扩容机制-XXOO
前言ArrayList就是动态数组,其实就是Array的复杂版本,它提供了动态的添加元素和删除元素的方法,其实现了Collection 和 List接口,能够灵活的设置数组的大小。同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。一、ArrayList构造方法通过源码的分析,我们可以看到ArrayList有三种构造方法- 空的构造函数- 根据传入的数值大小,创建指定长度的数组-原创 2020-11-16 09:58:47 · 916 阅读 · 0 评论 -
设计模式之状态模式XXOO
文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结一、状态模式是什么?(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。1.要点:1.1、有一个对象,它是有状态的。1.2、这个对象在状态不同的时候,行为不一样。1.3、这些状态是可以切换的,而非毫无关系。2.三个角色:2.1、Context:它就是那个含有状态的对象,它可以处理一些请求,这些请求最终产生.原创 2020-11-16 09:10:37 · 761 阅读 · 0 评论 -
关于jasperreports 提示 java.lang.ExceptionInInitializerError
前言公司老项目需要添加关于jasperreports打印功能,刚好有一个maven项目有类似的功能,所以做了下代码迁移。本人项目相关环境 JavaWeb项目+struts2,在这其中遇到的一些问题做下汇总。希望对大家有所帮助。总结异常1.java.lang.NoSuchMethodError问题一般这样的都是缺少相关的jar,这里也给出本人使用的相关的jar。commons-collections-3.2.1.jarcommons-digester.jarcommons-b.原创 2020-11-13 10:00:49 · 1043 阅读 · 0 评论 -
Tomcat-Start-XXOO
Tomcat的下载和安装Tomcat 官网下载解压版或者.exe安装版本https://tomcat.apache.org/安装解压后目录如下tomcat根目录在tomcat中叫<CATALINA_HOME><CATALINA_HOME>/bin:存放各种平台下启动和关闭Tomcat的脚本文件.其中 有个档是catalina.bat,打开这个windos配置文件,在非注释行加入JDK路径,例如 : SET JAVA_HOME=C:\j2sdk1.4..原创 2020-11-03 16:40:20 · 949 阅读 · 0 评论 -
设计模式之策略模式XXOO
一、设计模式一策略模式定义策略模式的目的是封装一系列的算法,它们具有共性,可以相互替换,也就是说让算法独立于使用它的客户端而独立变化,客户端仅仅依赖于策略接口 。汇总:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。 策略模式把对象本身和运算规则区分开来,因此我们整个模式也分为三个部分。1).环境类(Context):用来操作策略的上下文环境。2).抽象策略类(Strategy):策略的抽象。3).具体策略类(ConcreteStrategy):具体的策略实现。例..原创 2020-11-03 13:59:49 · 870 阅读 · 0 评论 -
二十三种设计模式彩图XXOO
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。二、设计模式的六大原则总原则:开闭原则(Open Close Principle)开闭原则就是说对扩展开放,.原创 2020-11-03 11:03:45 · 2433 阅读 · 0 评论 -
Java-深复制|浅复制 (深拷贝|浅拷贝)XXOO
描述1、浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。2、深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。在 Java 中,所有的 Class 都继承自 Object ,而在 Object 上,存在一个 clone() 方法,它被声明为了 protected ,所以我们可以在其子类中,使用它。而无论是浅拷贝还是深拷贝,都需要实现 clone() 方法,来完成操作。代码实践public static原创 2020-10-29 11:44:29 · 448 阅读 · 1 评论 -
Java-String 字符串XXOO
描述- String:字符串,使用一对 ”” 引起来表示- String s1 = "mogublog" ; // 字面量的定义方式- String s2 = new String("moxi"); // new的定义方式- String声明为final的,不可被继承- String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示string可以比较大小- String在jdk8及以前内部定义了final char[] valu..原创 2020-10-29 11:24:54 · 2651 阅读 · 1 评论 -
多线程-ThreaLocal-线程局部变量-ThreadLocalMap学习
基本结构ThreadLocalMap是ThreadLocal的内部类,内部独立实现了Map功能、Entry功能。成员变量 /** * The initial capacity -- MUST be a power of two. * 他的初始容量——必须是2的幂次方。 */ private static final int INITIAL_CAPACITY = 16; /**原创 2020-10-19 15:51:45 · 315 阅读 · 3 评论 -
多线程-ThreaLocal-线程局部变量学习
定义从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。作用:提供线程内局部变量,不同线程之间互不干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。换一句话就是为每一个使用该变量的线程都提供一个变量值的副本,使每.原创 2020-10-16 09:14:11 · 243 阅读 · 0 评论 -
设计模式之代理模式XXOO
定义代理模式可以分为两种,一种是静态代理,一种是动态代理。静态代理:代理类一般会持有一个被代理的对象引用,且对于不关心的方法全部委托给被代理的对象处理。自己处理关心的方法。这种代理方式是死板的,它不是在运行时动态创建,它就是硬编码,你代码编译前写的是什么,编译后就是什么。换句话就是你按下CTRL+S的那一刻,就会被代理对象生成一个不可动态改变的代理类。静态代理一般对于代理的对象是单个或者多个固定的类(数量不会太多)使用。效果会比动态代理要好。动态代理:动态代理又分为JDK动原创 2020-10-15 09:59:18 · 4765 阅读 · 0 评论 -
设计模式之单例模式XXOO
原由为了尽可能的节约内存空间,减少GC消耗,并且使应用可以正常运行。 一个类能否做成单例,最容易区别的地方就在于,这些类,在应用中如果有两个或者两个以上的实例会引起错误, 又或者就是这些类,在整个应用中,同一时刻,有且只能有一种状态。创建静态实例,带有static关键字的属性在每一个类中都是唯一的。 限制客户端随意创造实例,即私有化构造方法,此为保证单例的最重要的一步。 给一个公共的获取实例的静态方法,注意,是静态的方法,因为这个方法是在我们未获取到实例的时候就要提供给客户端调用的,所以.原创 2020-10-14 15:38:49 · 535 阅读 · 0 评论 -
redis工具类-示例
应公司架构原因,没有使用spring,于是就只能自己编一个redis工具类,请大家多多指教。redisUtils 工具类package com.bpe.core.db;import java.io.Serializable;import java.util.List;import java.util.Set;import org.slf4j.Logger;import or...原创 2019-10-12 14:08:56 · 190 阅读 · 0 评论 -
JAVA jsp页面EL表达式失效
这么个我纠结好久,最后解决了,现在分享给大家: 在jsp页面加上<%@ page isELIgnored=”false” %>就可以了。 至于其它的方法我就没有深究了。原创 2017-02-26 11:20:01 · 346 阅读 · 0 评论 -
Android 从Java后台取数据之解析XML
Android 从Java后台取数据。数据格式一般有两种,XML和JSON。下面我给大家分享一下解析XML的三种方式。 第一种:使用DOM解析(原生态)try { //1 使用DOM解析 //得到DOM工厂 DocumentBuilderFactory b原创 2017-02-26 15:10:34 · 336 阅读 · 0 评论 -
Android 从Java后台取数据之JSON
Android 从Java后台去数据,数据的第二种格式:JSON 解析JSON最主要就是两个类:jsonOBject和jsonArray 下面我给大家分享三种方法: 第一种:原生态try { JSONObject jsonObject=new JSONObject(stringBuffer.toString());原创 2017-02-26 15:15:12 · 605 阅读 · 0 评论 -
MyBatis入门(一)---基本使用
一、MyBatis简介1.1、概述MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。1.2、ORMor原创 2017-02-26 23:30:15 · 172 阅读 · 0 评论 -
JAVA的三大框架的作用
三大框架可以帮助我们减少代码冗余,提高运行速度,便于维护,规范编程struts 主要负责表示层的显示,spring 利用它的IOC和AOP来处理控制业务(负责对数据库的操作),hibernate 主要作用是数据的持久化到数据库一、SpringSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。 它提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯原创 2017-02-27 09:13:27 · 1309 阅读 · 0 评论