学习笔记
文章平均质量分 75
人间不值得T皿T
在知识的海洋里,我竟然是一条淡水鱼
展开
-
23种设计模式笔记(下)
软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。......原创 2022-06-14 14:04:34 · 480 阅读 · 0 评论 -
23种设计模式笔记(上)
设计模式介绍设计模式分为三种类型,共23种 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:模版方法模式、命令模式、访问者模式、选代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。单例模式基本介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一原创 2022-06-07 11:46:22 · 195 阅读 · 0 评论 -
七大设计原则
设计模式的目的编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好:1)代码重用性([即:相同功能的代码,不用多次编写)2)可读性(即:编程规范性,便于其他程序员的阅读和理解)3)可扩展性(即:当需要增加新的功能时,非常的方便)4)可靠性(即百当我们增加新的功能后,对原来的功能没有影响)5使程序呈现高内聚,低耦合的特性)七大设计原则单一职责原则对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职.原创 2022-04-01 17:20:29 · 235 阅读 · 0 评论 -
JVM学习笔记(五)垃圾回收算法
上篇文章:JVM学习笔记(四)StringTable概述什么是垃圾?垃圾收集。不是Java语言的作生产物。早在1960年。第一门开始使用内存动态分配和拉圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候同收?如何回收?什么是垃圾(Garbage)呢?垃圾是指在运行程序中没有任何指针指向的对象。这个对象就是需要被回收的垃圾如果不及时对内存中的垃圾进行清理。那么这些垃圾对象所占的内存空间会一直保留到应用程序结束。被保留的空向无法被其他对象使用。甚至可原创 2022-01-12 17:03:02 · 274 阅读 · 0 评论 -
JVM学习笔记(四)StringTable
基本特性String:字符串。使用一对""引起来表示。String a = "abc"; // 字面量声明方式String b = new String("abc");String声明为final的。不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口,表示String可以比较大小String在JDK8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]...原创 2022-01-05 15:16:20 · 327 阅读 · 0 评论 -
JVM学习笔记(三)执行引擎
上篇文章:JVM学习笔记(二)运行时数据区对象的实例化创建对象的步骤判断对象对应的类是否加载,链接,初始化虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化。(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加戮器以ClassLoader+包名+类名为Key进行查对应的.class文件。如果没有找到文件,则抛出ClassNotFoundException异常,如果原创 2021-12-28 15:32:50 · 134 阅读 · 0 评论 -
JVM学习笔记(二)运行时数据区
运行时数据区本地方法栈本地方法接口简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如c。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个c的函数。"A native method is a Java method whose implementation isprovided by non-jav原创 2021-12-16 17:36:36 · 1270 阅读 · 0 评论 -
JVM学习笔记(一)JVM体系结构
概要什么是JVM虚拟机Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。Java技术的核心就是Java虚拟机(JVM,Java virtual Machine) ,因为所有的Java程序都运行在Java虚拟机内部。作用:Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一原创 2021-12-07 17:15:48 · 453 阅读 · 0 评论 -
SpringCloud Alibaba学习笔记(三)Seata
前言分布式事务由来随着微服务的发展,原来的单体应用被拆分成微服务应用,原来的三个模块被 拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成.此时每个服务内部的数据一致性由本地事务来保证,但是全局数据一致性问题没法保证Seata简介Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各原创 2021-09-07 18:28:17 · 235 阅读 · 2 评论 -
SpringCloud Alibaba学习笔记(二)Sentinel
介绍官网地址:https://sentinelguard.io/zh-cn/什么是SentinelSentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等原创 2021-08-29 15:50:25 · 541 阅读 · 0 评论 -
SpringCloud Alibaba学习笔记(一)Nacos
简介SpringCloud alibaba Gitub地址:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.mdAlibaba是什么spring Cloud for Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了让大家所熟知的 Spring 框架,其优秀的设计模式和抽象理念,以给使用阿里巴巴产品的 Java 开发者带来使用 Spring Boot 和 Spring Cloud原创 2021-08-19 16:30:32 · 375 阅读 · 1 评论 -
傻瓜式使用SpringSecurity完成前后端分离+JWT+登录认证+权限控制
流程分析流程说明:客户端发起一个请求,进入 Security 过滤器链。当到 LogoutFilter 的时候判断是否是登出路径,如果是登出路径则到 logoutHandler ,如果登出成功则到 logoutSuccessHandler 登出成功处理。如果不是登出路径则直接进入下一个过滤器。当到 UsernamePasswordAuthenticationFilter 的时候判断是否为登录路径,如果是,则进入该过滤器进行登录操作,如果登录失败则到 AuthenticationFailureHan原创 2021-06-01 10:24:44 · 1998 阅读 · 1 评论 -
HttpClient工具类
简介HTTP 协议是 Internet 上使用得最多、最重要的协议之一,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。使用htt原创 2021-03-18 09:39:38 · 2029 阅读 · 2 评论 -
通过MultipartFile实现图片上传
前言:文件的上传一般使用输入流InputStream用于参数的接收,后续使用输出流outputStream实现文件的输出这里使用Spring框架下的MultipartFile类完成文件的上传MultipartFile 封装了输入流/输出流VO类–封装ImageVO与前端页面交互@Data@Accessors(chain=true)@NoArgsConstructor@AllArgsConstructorpublic class ImageVO { //{"error":0,"url原创 2021-02-01 11:36:37 · 1147 阅读 · 0 评论 -
RestFul风格的两种用法
动态获取url中的请求路径地址可以实现通用页面跳转/** * RestFul语法1 * 1.参数必须使用{}进行包裹 * 2.参数与参数之间必须使用/分割 * 3.参数的位置必须固定的 * 4.在方法中添加一个同名的参数,并且使用注解@PathVariable动态获取 * * @PathVariable * value/name 标识参数名称,解决参数名称不一致的问题原创 2021-02-01 09:58:54 · 279 阅读 · 0 评论 -
HttpClient-POST请求基本使用
##POST请求-有参获取到响应内容以后转换成JSON再转换成JAVA对象public class TestHttpCient{ //UAT public static final String UAT_POSTURL = "http://172.16.194.158:8100/123/321"; //SIT public static final String SIT_POSTURL = "http://172.16.194.159:8100/123/321";原创 2021-02-01 09:25:59 · 321 阅读 · 0 评论 -
Java对象与JSON互相转换--ObjectMapper
编写ObjectMapper工具类public class ObjectMapperUtil { private static final ObjectMapper MAPPER = new ObjectMapper(); //对象转JSON public static String toJson(Object obj) { try { String json = MAPPER.writeValueAsString(obj); return json; } catc原创 2021-01-29 16:18:12 · 203 阅读 · 0 评论