Java
文章平均质量分 69
骚人贵
这个家伙很懒什么都不愿意写
展开
-
Hystrix 常见通用的配置
hystrix 应用主要配置方向原创 2022-10-12 19:12:04 · 3231 阅读 · 1 评论 -
[转载]springboot自定义ObjectMapper序列化、配置序列化对LocalDateTime的支持
原文地址背景问题1:项目中使用默认自带的jackson进行前后端交互,实现数据对象的序列化和反序列化,默认的ObjectMapper采用小驼峰的格式,但是调用其他业务的http接口时,ObjectMapper需要使用蛇形的格式,因此就需要自定义ObjectMapper,然后封装RestTemplate。问题2:前后端交互时,JSR310日期序列化时,格式错误;注意点自定义的ObjectMapper不能被IOC管理,因为Springboot默认的ObjectMapper生成条件是:只有当该实例不存在转载 2021-12-30 12:01:01 · 2153 阅读 · 0 评论 -
logback Converter 的一个简单的实现办法
前言原来写了一个关于logback 的源码阅读与自定义自己的Converter 的实现方法。但是太基于配置文件了。要是脱离了配置文件反而不好使了。其实很简单。略改以后完事。实现过程还是说一下原来的那个事前文 >>>>>>>>>>> logback 自定义 Layout需要自定义一个Converter 或者说修改原来的Converter 实现办法。以及对logger的再次封装。好吧我自己定义一个Converter代码如下pub原创 2021-07-20 18:18:24 · 899 阅读 · 0 评论 -
Http request 获取不到请求内容的总结
今日问题先看一段日志输出:POST /upload HTTP/1.1cookie: JSESSIONID=39E2FDADEAEB955EAFF9B91CDD827D07postman-token: 165e07cd-8f52-4988-99a8-9d71f3978b1chost: 127.0.0.1:8080content-type: multipart/form-data; boundary=--------------------------874425391893936909568582原创 2021-07-19 18:07:35 · 1390 阅读 · 0 评论 -
根据昨天的DOM 补充一个jaxb 解析XML的说明
昨天总结了一个关于dom解析xml的东西今天作为昨天内容的一个补充吧,昨天那个点下面连接java jdk 自带 DOM 解析xml 笔记xml 转java object今天补充一个jaxb的xml解析方法。这个jaxb也是jdk自带的解析xml方法,他的方式与dom不同。dom是直接将xml解析成dom 树进行循环迭代进行读取,添加操作。而jaxb是 直接将xml转成相对应的数据对象。先写一个简单的例子一个简单的数据对象类User@XmlRootElement(name = "User")p原创 2021-07-15 13:04:59 · 173 阅读 · 0 评论 -
java jdk 自带 DOM 解析xml 笔记
JDK 自带dom 解析xml时 做的一些总结。前言xml的读取先看一下一个简单的xml 格式<root> <a id='1' cc='2' > <b>ss</b> </a> <c>s2</c> <d> <![CDATA[<e><f>f1</f></e>]]> </d&原创 2021-07-14 18:21:36 · 525 阅读 · 0 评论 -
Spring Boot读取配置文件中的数据
文章目录@value一般常用Map 类型List 类型@ConfigurationProperties一般常用MAP 类型List 类型Environment@value一般常用配置:node.name=001代码:@Componentpublic class CoreConfig { @Value("${node.name:000}") String nodeName; ...... }通过@value 获取 “${}” 内填写配置文件对应得到key内容就可以获取对应的值原创 2020-12-23 13:21:28 · 358 阅读 · 0 评论 -
logback 自定义 Layout
还是因为日志统一管理,作为一个工具开放出去以后再Layout 中的%只能打印到日志类,无法打印到实际调用类中。上次阅读了代码【slf4j 之 ch.qos.logback 源码阅读】 。这次主要实操进行修改。主要日志管理类:public class RLogger { final static Logger log = LoggerFactory.getLogger("BUSINESS"); final static Logger error = LoggerFactory.getLogger("原创 2020-09-01 11:47:16 · 1192 阅读 · 0 评论 -
slf4j 之 ch.qos.logback 源码阅读
文章目录前言LoggerFactoryStaticLoggerBinderContextInitializerContextSelectorStaticBinderDefaultContextSelectorLoggerContextLoggerAppenderAttachableImplOutputStreamAppenderLayoutWrappingEncoderPatternLayoutClassOfCallerConverterLoggingEvent总结一下流程。前言最近有个项目再写日志的时原创 2020-07-17 16:36:10 · 3423 阅读 · 0 评论 -
2020 Redis实战【1】 前置基础与安装
文章目录原创 2020-07-17 11:30:48 · 287 阅读 · 0 评论 -
我的java设计模式 总结 汇总与设计原则
文章目录汇总分类创造型结构型行为型面向对象的六大原则1. 单一职责原则 Signle Responsibility Principle2. 开闭原则 Open Close Principle3. 里氏替换原则 Liscov Substitution Principle4. 依赖倒置原则 Dependency Inversion Principle5. 接口隔离原则 Interface Segregation Principle6.迪米特法则 low of demeter汇总最近复习完了23种设计模式原创 2020-07-14 22:26:31 · 129 阅读 · 0 评论 -
我的java设计模式 总结【15】状态模式 State & 解释器 Intepreter
State 状态模式这个也不难,就是根据状态决定行为。简单来说,就是类里面的方法都要判断当前状态,才能知道该如何运行的时候,将这些需要判断状态的方法抽象出来根据不同的状态获取不同的实现来进行执行方法。例举一个原始的方式:public class Old { int state; public Old(int s) { state = s; } public void method1() { switch (state) { case 1: System.out.println原创 2020-07-14 20:50:59 · 124 阅读 · 0 评论 -
我的java设计模式 总结【14】原型 prototype & 备忘录 memento & 模板方法 templateMethod
原型模式其实就是指再创建一个对象时,直接从原有的对象进行copy即可,省去对对象进行new以及以后的赋值操作。在jdk中已经自带了这个模式的功能。就是Object对象的clone 方法。这个方法必须实现空接口Cloneable,再调用Object的clone方法就可以获取一个新的对象。但还需要知道的是浅克隆与深克隆,通常一个复杂点的对象中不光包含了基础的类型还有引用类型的存在。浅克隆只会克隆对象对其中的引用也是进行了copy,但是两对象对其中的对象进行修改后另外一个引用的值也会修改,通常这个是不可以的,原创 2020-07-14 10:18:28 · 167 阅读 · 0 评论 -
我的java设计模式 总结【13】命令模式Command
文章目录命令模式定义优缺点优点缺点一个样例命令模式定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。优缺点优点降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。方便实现 Undo 和原创 2020-07-13 18:05:28 · 127 阅读 · 0 评论 -
我的java设计模式 总结【12】构建器 builder & 转换器 wrapper & 桥接 Bridge
文章目录构建器转换器桥接模式构建器构建器builder 是用于构建复杂的对象的,也没什么好解释的,这个很简单;举例来说我要创建一个机器人对象,这个机器人对象非常的复杂。可能有好几十种属性,我可以再创建他的时候一次把这几十种属性都通过构造函数传进去,这种方法不是不可以。但是我可以分开创建 头,身子,胳膊,腿,脚等等,对于复杂的对象进行结构化的创建。常见采用链式编程进行编程。最常见的一般带build语句的都是采用了构建器模式进行的。再使用过程中与模板方法相同的,只是这里的语义针对对象的构建,而模板方法原创 2020-07-13 16:46:32 · 366 阅读 · 0 评论 -
我的java设计模式 总结【11】访问者 Visitor
文章目录访问者意义 与 场景说明访问者意义 与 场景关于访问者模式,用处比较局限。其实就是不改变内部实际运行过程而动态的修改内部属性的一种模式。内部实际运行过程时固定的,但是变量不是固定的。那么对于这种这个不固定的变量而固定的运行过程就是访问者模式了,这个需要先举一个例子,是我用到的真实案例。先介绍一下,我们都知道oracle和mysql的日期格式处理都是不一样的。那么对于数据持久化日期的查询与保存都是不一样的内容,但是对于这个保存或查询时间的动作都是固定的。那么这样我们就可以运用到这个模式了。不同原创 2020-07-13 14:57:03 · 125 阅读 · 0 评论 -
我的java设计模式 总结【10】迭代器 Iterator
文章目录迭代器迭代器关于迭代器来说,这种模式属于容器专属的设计模式了。主要用于遍历容器的。我们都知道对于容器的实现,主要有两种,第一种就是数组,数组的物理地址是连续的,当数组满了以后会扩展数组,这种扩展不是说再原先数组的物理地址上接着往后顺而是,创建一块新的连续内存空间并将原有数据拷贝过来。这样就完成了扩展。第二种是链表,链表的物理地址不是连续的,每个链表对象中最基本的就是有两个属性一个是属性,一个是指向下一个链表元素的指针或者是引用。这样只用把需要添加的元素追加到最后面就行,无需扩容,而只要知道原创 2020-07-13 12:49:44 · 101 阅读 · 0 评论 -
我的java设计模式 总结【9】代理 Proxy ,jdk14中proxy源码简读
文章目录代理模式静态代理动态代理JDK的动态代理实现动态代理的原理JDK14 Proxy 生成代理的源码简读Proxy类 newProxyInstance 源码关于getProxyConstructor 方法关于ProxyBuild 中的build 方法defineProxyClass 创建ProxyClass 的方法ProxyGenerator.generateProxyClass 的实现关于generateClassFile 的实现总结code generate 一个开源的动态代理生成办法。代理模原创 2020-07-08 17:17:13 · 230 阅读 · 0 评论 -
Class Cycle java类的生命周期
文章目录Class Cycleloader 类加载加载过程 "parents delegate"The Java Class Loading Mechanism类加载器的类别BootstrapClassLoader 启动类加载器ExtClassLoader 标准扩展类加载器AppClassLoader 系统类加载器CustomClassLoader 用户自定义类加载器核心源码加载流程图机制与作用需要注意关于打破双亲委派的办法加载方式自定义类加载器Linking & Initializing原创 2020-07-08 10:50:32 · 340 阅读 · 0 评论 -
我的java设计模式 总结【8】组合 与 享元 Composite & Flyweight
文章目录Composite 组合模式Composite 组合模式其实关于这个前者网上有很多的介绍,我也只表述一下我自己的看法,就是对于树状类型的设计模式就是这组合模式。目前我们很常见的xml ,json都是层级分明的结构化数据。对于这种xml数据或者json的面向对象编程或者说是将这数据进行对象化的编程模式也是组合模式。当然也意味你需要将实际业务或者需求的数据对象可以进行合理的结构化。而结构化完成后运用合理的组合模式进行开发维护数据对象关系就是这个组合模式的核心。这个模式很容易理解也很简单。再运原创 2020-07-06 20:57:38 · 762 阅读 · 0 评论 -
我的java设计模式 总结【7】 观察者 observer
文章目录observer 观察者模式observer 观察者模式oberserver与chain of responsibility 十分相似,也是调用后出发一系列的工作。但是区别在于观察者是更被动的去执行。最常见与经典的应用就是java 中的 swing组件中的时间处理都是采用这种设计模式进行完成的,当然也有叫什么事件驱动或者说消息订阅,我个人觉得都是一回事。针对于观察者来说,最起码需要有三大类的对象才可以叫观察者模式,第一个事件触发者,就是谁触发或者谁发起了事件,第二个就是观察者,有各式各样不原创 2020-07-06 15:25:00 · 173 阅读 · 0 评论 -
我的java设计模式 总结【6】责任链 Chain Of Responsibility
文章目录责任链模式Servlet Filter中的责任链责任链模式责任链模式,很明显就是链式的处理一系列的任务,一个任务完成再处理下一个,直到链上的任务都完成了。在实际过程中最简单的应用就是对一个字符串的过滤。去掉不同的敏感字符。还有更实际的运用就是j2ee servlet中的Filter 这个应该算是最最经典的应用了。这里可以作为首要案例来分析一下。Servlet Filter中的责任链可以看看源码Filter 与FilterChainFilter 源码public interface Fil原创 2020-07-04 21:37:27 · 144 阅读 · 0 评论 -
我的java设计模式 总结【5】装饰器 Decorator
文章目录装饰器模式 Decorator特点举例JDK中的 Decorator装饰器模式 Decorator特点Decorator 设计模式不会改变原有的东西,只是增加新的外观或者功能,样式等,且随着时间的推移,可以不断的实施修饰操作。在面向对象的程序设计中,扩展系统的原有功能也可以采用继承、组合的方式。继承也不会改变原有类(父类),但是由于工程的复杂和很多不可预测的改变,比如不同业务的数据组合数量简直无法想想,难道我们要为每一种组合都定义一个子类吗?显然这是不现实的,即通过继承的方式来应对未来的功能和原创 2020-07-04 15:33:03 · 1603 阅读 · 0 评论 -
我的java设计模式 总结【4】门面 与 调停者 Facade & Mediator
文章目录门面模式门面模式其实这个设计模式很容易理解,而且也经常用的上,就是一个类似于接口统一组合的方法。很简单举例。你的api接口需要调用后面的很多的service 而不同的service也有很多不同的业务逻辑或者先后顺序的组合,那么就可以通过facade 门面模式来进行统一的管理和维护了。举例来说,添加一个用户,他需要很多的验证,比如姓名,年龄等等其他信息的合法验证。然后再进行数据的添加,以及其他业务关系的关联操作。那么通过facade可以将这类信息的统一验证作为一个facade,数据与数据关系持久原创 2020-07-01 15:11:08 · 225 阅读 · 0 评论 -
我的java设计模式 总结【3】工厂 Factory
文章目录工厂模式简单工厂工厂方法抽象工厂补充工厂模式任何产生对象的方法或者类都可以称之为工厂,工厂就是产生东西的方法。单例也是一种工厂与new的区别可以灵活的控制创建方法可以增加修饰日志输出等简单工厂其实就是很简单的创建对象,或者说根据不同的条件,标识创建不同的对象。参考代码:// 定义一个接口Car public interface Car { String getType();}//根据Car接口来实现两个实现类 //跑车 public class Sport原创 2020-07-01 11:41:12 · 122 阅读 · 0 评论 -
我的java设计模式 总结【2】策略 Strategy
文章目录策略模式举例或场景实现策略模式其实就是对做一件事,有不同的实现方式。这种实现方式就是一种策略,相同的事情不同的策略。举例或场景对数组进行排序:那么排序就是事,而对于排序的实现可以有很多种,可以按照对象不同的属性进行排序,也可以按照不同的算法进行排序,这些都是策略。对对象进行序列化:那序列化就是事,而序列化的不同实现就是不同的策略。比如序列化成json格式。或者xml格式。或者二进制格式等。接口协议:接口就是事,而协议或者数据格式就是策略。比如相同的接口,那么接收不同协议或者数据格式的内原创 2020-06-30 19:41:32 · 118 阅读 · 0 评论 -
我的java设计模式 总结【1】单例 Singleton
文章目录singleton 单例模式几种实现办法第一种 直接初始化第二种 双重检查加锁第三种 静态内部类第四种 枚举实现总结说明singleton 单例模式这个就是单例模式,再一个程序中只能有一个对象实例;或者说唯一的一个对象实例。几种实现办法第一种 直接初始化public class A{ static A a=new A(); private A(){} public static A getInstance(){ return a; }}第二种 双重检查加锁publi原创 2020-06-30 17:48:13 · 155 阅读 · 0 评论 -
关于GC 中G1的一些整理
G1 垃圾回收器英文入门 oracle 官方指导官方入门文档。The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and parallel phases to achieve its target pause time and to maintain原创 2020-06-24 22:05:26 · 697 阅读 · 0 评论 -
关于GC 的CMS 执行过程
目录CMS 执行过程简述第一个阶段 initial mark第二个阶段 concurrent mark第三个阶段 remark第四个阶段 concurrent sweepingCMS 执行过程简述CMS也是根据三色标记法来实现的。但是CMS在执行过程中有4个主要阶段。梳理了一下做个笔记。要先看看三色标记法中的一些概念才能更好的理解这里的东西。第一个阶段 initial mark初始化标记阶段,这个阶段是STW的,是开始标记所有的根元素的操作,因为根元素数量并不多,所以这个STW是可以控制的,不会原创 2020-06-23 10:11:58 · 1023 阅读 · 0 评论 -
Alibaba Arthas 学习与总结
arthas这个是阿里出的一款用于jvm 观察与调优的一个工具。目前来看是最好用的了。git项目地址 文档中文说明快速上手指南这个说明文档很详细了而且都是中文的。我只记录一下我自己学习和使用过程中的一些经验安装方法通过自动下载下载 arthas-boot.jar用再下载目录直接运行java -jar arthas-boot.jar启动后会帮你检查目前正在运行的java程序。若没有java 进程会告诉你让你自己输入java进程编号来启动Can not find java pro原创 2020-06-19 15:41:04 · 227 阅读 · 0 评论 -
JSTACK
JSTACK再jvm调优或者说再解决一些java线程方面的问题时候需要用到的一个工具JSTACK,他可以看到目前正在运行的java程序的栈状态。对于栈我们知道。其实就是栈帧的调用顺序和里面的指令。JSTACK的命令格式jstack [ option ] pidjstack [ option ] executable corejstack [ option ] [server-id@]remote-hostname-or-IP最最最最常用的就是jstack pid 【进程号】。JSTACK 的关原创 2020-06-15 23:55:50 · 202 阅读 · 0 评论 -
GC的日志格式详解
当进行GC日志查看的时候会用到:命令参数:–XX:+PrintGCDetails 通过这个参数可以获得GC 执行的详细信息。对于信息的格式内容为:[回收器运行 (GC触发原因)[触发GC的年代:回收前->回收后(这个年代总大小)] 回收前堆大小->回收后堆大小(堆的总大小),执行了多少时间完成的 时间单位][执行的用户态时间,执行的内核态时间,总用时时间,单位]通过一个简单操作来进行查看新建一个java文件添加如下代码public class DoGc{public st原创 2020-06-13 19:35:01 · 587 阅读 · 0 评论 -
常用的 GC组合与相关命令
常见的GC组合XX:+UseSerialGC = Serial New (DefNew) + Serial Old小型程序。默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器-XX:+UseParNewGC = ParNew + SerialOld这个组合已经很少用(在某些版本中已经废弃)https://stackoverflow.com/questions/34962257/why-remove-support-for-parnewserialold-andd原创 2020-06-13 17:56:40 · 762 阅读 · 0 评论 -
GC中的 三色标记法
最近在看JVM 查资料的时候看到一篇关于三色标记法的文章觉得不错。拿过来收藏一下。因为他的配图是gif。让人一目了然啊。原文地址《三色标记法与读写屏障》以下内容图为摘录:三色标记法:首先要知道 在JVM中如何找到碎片采用的是根可达算法 root searching方法。找到以后进行mark sweep 方法进行标记。然后再root searching 一遍进行回收。所以mark sweep的特点是 地址不连续,再标记的过程中也会有新的对象被放到老年区,这时就会出现碎片,因为要扫两次所以效率略低。三原创 2020-06-12 19:00:19 · 6038 阅读 · 0 评论 -
Stack Frame JAVA运行时数据区域之栈帧
Stack Frame上次说了Java Run-Time Data Areas JAVA运行时数据区这次再说一下对于Stack 中的Frames针对Frames 也首先依旧从 Java Virtual Machine Specification中摘录一下规范的原文 Java Virtual Machine Specification 14版的2.6章节 Frames2.6 FramesA frame is used to store data and partial results, a原创 2020-06-10 19:53:56 · 301 阅读 · 0 评论 -
java Run-Time Data Areas JAVA运行时数据区
Java Virtual Machine Specification以下内容摘录 jvm运行时数据内存摘录自14版的 2.5章节。2.5 Run-Time Data AreasThe Java Virtual Machine defines various run-time data areas that are used during execution of a program. Someof these data areas are created on Java Virtual Machi原创 2020-06-10 15:19:51 · 212 阅读 · 0 评论