- 博客(51)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 我的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
134
转载 [转载]springboot自定义ObjectMapper序列化、配置序列化对LocalDateTime的支持
原文地址背景问题1:项目中使用默认自带的jackson进行前后端交互,实现数据对象的序列化和反序列化,默认的ObjectMapper采用小驼峰的格式,但是调用其他业务的http接口时,ObjectMapper需要使用蛇形的格式,因此就需要自定义ObjectMapper,然后封装RestTemplate。问题2:前后端交互时,JSR310日期序列化时,格式错误;注意点自定义的ObjectMapper不能被IOC管理,因为Springboot默认的ObjectMapper生成条件是:只有当该实例不存在
2021-12-30 12:01:01
2173
转载 keil 代码格式化分享
转自 此处blog我用的keil 版本为5.27.1.0上文中配置有一处 处理失败就是"$E*.c " "$E*.h"此处配置。应去掉双引号$E*.c $E*.h可以正常运行。格式化后Build output 窗口有格式化执行后提示顺道分享一下。我keil所用开发环境ide keygen style阿里云盘连接 不限速...
2021-08-31 12:58:16
341
原创 logback Converter 的一个简单的实现办法
前言原来写了一个关于logback 的源码阅读与自定义自己的Converter 的实现方法。但是太基于配置文件了。要是脱离了配置文件反而不好使了。其实很简单。略改以后完事。实现过程还是说一下原来的那个事前文 >>>>>>>>>>> logback 自定义 Layout需要自定义一个Converter 或者说修改原来的Converter 实现办法。以及对logger的再次封装。好吧我自己定义一个Converter代码如下pub
2021-07-20 18:18:24
944
原创 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
1411
原创 根据昨天的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
179
原创 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
561
原创 java 中的位移运算
位移运算首先要值知道符号,哪里是符号怎么标识的一个基础知识对于一个数值型的二进制数 首位就是它的符号位 0代表正数 1代表负数假设一个int 类型的数值 6 再内存中的二进制标识是:00…00110那么 -6 则为10…00110位移操作对正数6 二进制为 00…00110那么对它进行 >> 右移操作即 原先的00…00110 整体会移动 00…00011就是数据全部向右边进行了一位移动,原来的第二位变成第一位 第三位变成了第二位,如此如此。>>
2021-06-23 15:36:15
282
原创 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
423
原创 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
1217
原创 2020 Redis实战【7】Redis的数据库功能详解 >>> RDB 与 AOF 详详详解
文章目录Redis的数据库功能关于数据库的数据持久化关于持久化关于数据的保存方式关于保存的办法阻塞方式非阻塞方式Redis的持久化操作Linux 中的一些小知识进程与子进程Copy On WriteRDB阻塞试的保存数据 命令:SAVE非阻塞的数据保存 命令:BGSAVE配置文件非阻塞的数据保存savestop-writes-on-bgsave-errorrdbcompressionrdbchecksumdbfilenamedirRDB的优缺点缺点优点AOFRedis的 AOF相对于RDB的优缺点优
2020-08-28 16:24:55
588
原创 2020 Redis实战【6】 缓存数据的选型与数据的清除(配置,key的过期)
数据选型适用于缓存数据库的数据之所用缓存,需要注意以下几点:数据时不会被持久化的。不持久化就意味着数据的重要性并不是“很高”或者说没有那么的“重要”。一部分数据,不是全量的全部的。全量的数据那么直接就是数据库了。数据库作为持久化才会保存全部的数据。热数据,会被频繁使用的数据。 反之不被使用的数据或者说不被频繁使用的数据不需要进行缓存处理。随着业务而改变的动态的数据。数据存在于缓存,热度可能基于访问量或者时间变化,那么业务导致的热数据就应该被缓存也印证了上一点。数据的清除通常对于redis
2020-08-26 09:57:35
296
原创 2020 Redis实战【4】管道 Pipelining, 发布与订阅 Pub/Sub, 事物 Transactions
文章目录管道 Pipelining发布与订阅 Pub/Sub定义命令及描述事物Transactions事物的开启事物提交事物的取消注意项管道 Pipeliningredis官网说了管道Pipelining的意思,但是在我理解来看Pipelining这个功能通过批量提交完成对应的功能并返回;之所以这么做是可以减少通信之间的消耗以及等待的时间。就好比数据库批量执行sql一样。redis的client也是可以通过socket来完成批量的提交。对于redis批量请求的处理是根据换行符来判定的。一个换行符就是一
2020-08-25 14:59:56
194
原创 2020 Redis实战【5】 Module >> Bloom Filter 安装与使用
文章目录关于bloom filter布隆过滤器安装过程关于 Bloom Filter 所使用到的redis命令增加 BF.ADD判断 BF.EXISTS本文介绍一下redis中实现的 布隆过滤器的安装与使用关于bloom filter布隆过滤器具体不细讲了。就是一个粗略过滤器。具体百度有介绍。能看这个的说明你起码了解过滤器或者有需要用到过滤器。安装过程redis.io 中访问导航栏中的module 模块中可以看到所有的 redis中的module 找到对应的 RedisBloom点击r
2020-08-25 14:53:50
499
原创 少儿 SCRATCH 入门
文章目录关于SCRATCH第一章,程序的概念与鼠标的简单操作程序是什么?鼠标的简单操作。移动鼠标:点击鼠标:鼠标拖拽第二章 SCRATCH 界面的初步认识主界面开始舞台的表演第三章 来吧和大家打个招呼角色的选择角色中的垃圾桶标记绿旗子就代表了开始说出你想说出的话准备表演SCRATCH中的代码块执行顺序代码块必须要连再一起才行关于SCRATCH是一个孩子用来做程序开发的工具。就像垒积木一样的操作十分简单。具体网上介绍很多。我也是陪孩子学习的过程中进行一下知识点的记录。第一章,程序的概念与鼠标的简单操作
2020-08-08 20:05:55
765
原创 2020 Redis实战【3】List,Set,Hash,Sorted_Set
文章目录LIST栈类型与队列类型数组类型阻塞的队列SET交并差的计算交集并集差集随机对象HASHLIST对于redis的LIST就是一个链表 具体的链表模型见下图这是一个双向链表,再KEY中存储了链表头的引用head与尾的引用tail。对于LIST的命令其实也是可以通过命令 help @LIST来查询的。例举几个常用的命令栈类型与队列类型栈与队列的类型主要是根据同向与反向操作LIST来实现的RPUSH key value [value …]LPUSH key value [value
2020-07-22 11:05:15
176
原创 2020 Redis实战【2】 cli命令行 与 String类似的数据
文章目录CLI 命令行常用启动参数帮助命令的使用。全局的命令String类型命名字符串类型 String数值类型 int位图类型 bitmapCLI 命令行cli是redis自带的一个客户端命令。是一个控制台式的交互命令。启动方式上一次直接安装完成后也配置好了环境变量。那么这次启动直接运行即可。redis-cli需要了解的是通过帮助可以看到其他redis-cli 登录时使用的参数redis-cli -h 通过这个命令可以查看redis-cli的所有启动配置参数。常用启动参数-h <
2020-07-21 16:39:39
346
原创 slf4j 之 ch.qos.logback 源码阅读
文章目录前言LoggerFactoryStaticLoggerBinderContextInitializerContextSelectorStaticBinderDefaultContextSelectorLoggerContextLoggerAppenderAttachableImplOutputStreamAppenderLayoutWrappingEncoderPatternLayoutClassOfCallerConverterLoggingEvent总结一下流程。前言最近有个项目再写日志的时
2020-07-17 16:36:10
3562
原创 我的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
134
原创 我的java设计模式 总结【14】原型 prototype & 备忘录 memento & 模板方法 templateMethod
原型模式其实就是指再创建一个对象时,直接从原有的对象进行copy即可,省去对对象进行new以及以后的赋值操作。在jdk中已经自带了这个模式的功能。就是Object对象的clone 方法。这个方法必须实现空接口Cloneable,再调用Object的clone方法就可以获取一个新的对象。但还需要知道的是浅克隆与深克隆,通常一个复杂点的对象中不光包含了基础的类型还有引用类型的存在。浅克隆只会克隆对象对其中的引用也是进行了copy,但是两对象对其中的对象进行修改后另外一个引用的值也会修改,通常这个是不可以的,
2020-07-14 10:18:28
174
原创 我的java设计模式 总结【13】命令模式Command
文章目录命令模式定义优缺点优点缺点一个样例命令模式定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。优缺点优点降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。方便实现 Undo 和
2020-07-13 18:05:28
131
原创 我的java设计模式 总结【12】构建器 builder & 转换器 wrapper & 桥接 Bridge
文章目录构建器转换器桥接模式构建器构建器builder 是用于构建复杂的对象的,也没什么好解释的,这个很简单;举例来说我要创建一个机器人对象,这个机器人对象非常的复杂。可能有好几十种属性,我可以再创建他的时候一次把这几十种属性都通过构造函数传进去,这种方法不是不可以。但是我可以分开创建 头,身子,胳膊,腿,脚等等,对于复杂的对象进行结构化的创建。常见采用链式编程进行编程。最常见的一般带build语句的都是采用了构建器模式进行的。再使用过程中与模板方法相同的,只是这里的语义针对对象的构建,而模板方法
2020-07-13 16:46:32
391
原创 我的java设计模式 总结【11】访问者 Visitor
文章目录访问者意义 与 场景说明访问者意义 与 场景关于访问者模式,用处比较局限。其实就是不改变内部实际运行过程而动态的修改内部属性的一种模式。内部实际运行过程时固定的,但是变量不是固定的。那么对于这种这个不固定的变量而固定的运行过程就是访问者模式了,这个需要先举一个例子,是我用到的真实案例。先介绍一下,我们都知道oracle和mysql的日期格式处理都是不一样的。那么对于数据持久化日期的查询与保存都是不一样的内容,但是对于这个保存或查询时间的动作都是固定的。那么这样我们就可以运用到这个模式了。不同
2020-07-13 14:57:03
131
原创 我的java设计模式 总结【10】迭代器 Iterator
文章目录迭代器迭代器关于迭代器来说,这种模式属于容器专属的设计模式了。主要用于遍历容器的。我们都知道对于容器的实现,主要有两种,第一种就是数组,数组的物理地址是连续的,当数组满了以后会扩展数组,这种扩展不是说再原先数组的物理地址上接着往后顺而是,创建一块新的连续内存空间并将原有数据拷贝过来。这样就完成了扩展。第二种是链表,链表的物理地址不是连续的,每个链表对象中最基本的就是有两个属性一个是属性,一个是指向下一个链表元素的指针或者是引用。这样只用把需要添加的元素追加到最后面就行,无需扩容,而只要知道
2020-07-13 12:49:44
108
原创 我的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
300
原创 Class Cycle java类的生命周期
文章目录Class Cycleloader 类加载加载过程 "parents delegate"The Java Class Loading Mechanism类加载器的类别BootstrapClassLoader 启动类加载器ExtClassLoader 标准扩展类加载器AppClassLoader 系统类加载器CustomClassLoader 用户自定义类加载器核心源码加载流程图机制与作用需要注意关于打破双亲委派的办法加载方式自定义类加载器Linking & Initializing
2020-07-08 10:50:32
523
原创 我的java设计模式 总结【8】组合 与 享元 Composite & Flyweight
文章目录Composite 组合模式Composite 组合模式其实关于这个前者网上有很多的介绍,我也只表述一下我自己的看法,就是对于树状类型的设计模式就是这组合模式。目前我们很常见的xml ,json都是层级分明的结构化数据。对于这种xml数据或者json的面向对象编程或者说是将这数据进行对象化的编程模式也是组合模式。当然也意味你需要将实际业务或者需求的数据对象可以进行合理的结构化。而结构化完成后运用合理的组合模式进行开发维护数据对象关系就是这个组合模式的核心。这个模式很容易理解也很简单。再运
2020-07-06 20:57:38
769
原创 我的java设计模式 总结【7】 观察者 observer
文章目录observer 观察者模式observer 观察者模式oberserver与chain of responsibility 十分相似,也是调用后出发一系列的工作。但是区别在于观察者是更被动的去执行。最常见与经典的应用就是java 中的 swing组件中的时间处理都是采用这种设计模式进行完成的,当然也有叫什么事件驱动或者说消息订阅,我个人觉得都是一回事。针对于观察者来说,最起码需要有三大类的对象才可以叫观察者模式,第一个事件触发者,就是谁触发或者谁发起了事件,第二个就是观察者,有各式各样不
2020-07-06 15:25:00
182
原创 我的java设计模式 总结【6】责任链 Chain Of Responsibility
文章目录责任链模式Servlet Filter中的责任链责任链模式责任链模式,很明显就是链式的处理一系列的任务,一个任务完成再处理下一个,直到链上的任务都完成了。在实际过程中最简单的应用就是对一个字符串的过滤。去掉不同的敏感字符。还有更实际的运用就是j2ee servlet中的Filter 这个应该算是最最经典的应用了。这里可以作为首要案例来分析一下。Servlet Filter中的责任链可以看看源码Filter 与FilterChainFilter 源码public interface Fil
2020-07-04 21:37:27
150
原创 我的java设计模式 总结【5】装饰器 Decorator
文章目录装饰器模式 Decorator特点举例JDK中的 Decorator装饰器模式 Decorator特点Decorator 设计模式不会改变原有的东西,只是增加新的外观或者功能,样式等,且随着时间的推移,可以不断的实施修饰操作。在面向对象的程序设计中,扩展系统的原有功能也可以采用继承、组合的方式。继承也不会改变原有类(父类),但是由于工程的复杂和很多不可预测的改变,比如不同业务的数据组合数量简直无法想想,难道我们要为每一种组合都定义一个子类吗?显然这是不现实的,即通过继承的方式来应对未来的功能和
2020-07-04 15:33:03
1610
原创 我的java设计模式 总结【4】门面 与 调停者 Facade & Mediator
文章目录门面模式门面模式其实这个设计模式很容易理解,而且也经常用的上,就是一个类似于接口统一组合的方法。很简单举例。你的api接口需要调用后面的很多的service 而不同的service也有很多不同的业务逻辑或者先后顺序的组合,那么就可以通过facade 门面模式来进行统一的管理和维护了。举例来说,添加一个用户,他需要很多的验证,比如姓名,年龄等等其他信息的合法验证。然后再进行数据的添加,以及其他业务关系的关联操作。那么通过facade可以将这类信息的统一验证作为一个facade,数据与数据关系持久
2020-07-01 15:11:08
251
原创 我的java设计模式 总结【3】工厂 Factory
文章目录工厂模式简单工厂工厂方法抽象工厂补充工厂模式任何产生对象的方法或者类都可以称之为工厂,工厂就是产生东西的方法。单例也是一种工厂与new的区别可以灵活的控制创建方法可以增加修饰日志输出等简单工厂其实就是很简单的创建对象,或者说根据不同的条件,标识创建不同的对象。参考代码:// 定义一个接口Car public interface Car { String getType();}//根据Car接口来实现两个实现类 //跑车 public class Sport
2020-07-01 11:41:12
187
原创 我的java设计模式 总结【2】策略 Strategy
文章目录策略模式举例或场景实现策略模式其实就是对做一件事,有不同的实现方式。这种实现方式就是一种策略,相同的事情不同的策略。举例或场景对数组进行排序:那么排序就是事,而对于排序的实现可以有很多种,可以按照对象不同的属性进行排序,也可以按照不同的算法进行排序,这些都是策略。对对象进行序列化:那序列化就是事,而序列化的不同实现就是不同的策略。比如序列化成json格式。或者xml格式。或者二进制格式等。接口协议:接口就是事,而协议或者数据格式就是策略。比如相同的接口,那么接收不同协议或者数据格式的内
2020-06-30 19:41:32
129
原创 我的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
162
原创 关于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
704
原创 关于GC 的CMS 执行过程
目录CMS 执行过程简述第一个阶段 initial mark第二个阶段 concurrent mark第三个阶段 remark第四个阶段 concurrent sweepingCMS 执行过程简述CMS也是根据三色标记法来实现的。但是CMS在执行过程中有4个主要阶段。梳理了一下做个笔记。要先看看三色标记法中的一些概念才能更好的理解这里的东西。第一个阶段 initial mark初始化标记阶段,这个阶段是STW的,是开始标记所有的根元素的操作,因为根元素数量并不多,所以这个STW是可以控制的,不会
2020-06-23 10:11:58
1089
原创 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
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人