- 博客(278)
- 收藏
- 关注
原创 【设计模式--->创建型模式】叩心自问 :单例设计模式的八种写法,以及优缺点分析
叩心自问1:什么是单例模式? 叩心自问2:单例设计模式的八种方式? 叩心自问2.1: 饿汉式(静态常量) 叩心自问2.2: 饿汉式(静态代码,效率低,可用) 叩心自问2.3: 懒汉式(线程不安全,×××) 叩心自问2.4:懒汉式(线程安全,同步方法,效率低,不推荐) 叩心自问2.5:懒汉式(线程不安全,同步代码块,×××) 叩心自问2.6: 双重检查 (线程安全,效率高,推荐) 叩心自问2.7:静态内部类(线程安全,效率高,推荐) 叩心自问2.8: 枚举 (线程安全,反序列化,效率高,推荐) 叩心自问..
2022-01-09 18:32:44 731
原创 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C”之collections框架:ConcurrentHashMap扩容迁移等方法的源码分析
参考文献:jdk不同版本下HashMap和ConcurrentHashMap的对比 前言前言众所周知,Map是非常经典的数据结构,常用于在内存中存放数据;本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,不过在讨论前,我认为有必要了解它的由来,以及它所谓的前身"HashMap",了解其发展,有助于我们更深刻的认识 ConcurrentHashMap;如果对于HashMap不了解的,可以先去学习HashMap;HashMap:底层是基于 数组 + 链表 组成的.
2021-06-24 07:29:43 4413 35
原创 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C”之ThreadLocal深入分析
参考文献:主要的参考文献:一文让你彻底明白ThreadLocalThreadLocal使用与原理拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉 ThreadLocal相关介绍ThreadLocal的简单介绍ThreadLocal实现原理ThreadLocal实现原理之底层数据结构底层数据结构threadLocals之散列方式底层数据结构threadLocals之散列方式带来的哈希冲突底层数据结构threadLocals之初始容量及扩容可以被继承的ThreadLocal——Inh.
2021-06-20 22:05:07 460 7
原创 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C.L”之线程池(最全,最深,最喜欢)
参考博客:点击!!!!!主要参考,点击!!!!!点击!!!!!延迟队列详情点击!!点击!!!!! 为什么提出线程池?什么是线程池技术:线程池的优势:线程池的设计思路及执行流程:线程池的结构浅谈线程池ThreadPoolThread:ThreadPoolThread的属性:ThreadPoolThread的构造方法:七个小矮人之第五个小矮人:任务队列七个小矮人之第六个小矮人:线程工厂七个小矮人之第七个小矮人:拒绝策略ThreadPoolThread的方法:线程池ThreadPoolThread.
2021-06-19 10:45:59 1446 7
原创 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C.L”之重入锁(ReetrantLock)、公平锁、非公平锁及Condition的应用
部分文章内容参考如下!!!部分文章内容参考如下!!!关键字synchronized的功能扩展:重入锁ReentrantLockReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。互斥锁: 在同一个时间点只能被一个线程持有;可重入: 单个线程能多次获得相同的锁;ReentrantLock分为“公平锁”和“非公平锁”。区别:体现在获取锁的机制上是否公平。ReentraantLock是通过一个FIFO的等待队列来管理获取该锁所有线程的。在“公平锁”的机制下,线程依.
2021-06-04 22:50:19 469
原创 重拳出击之《JVM》面试官版 (初哥勿看)
JVM发展史,虚拟机发展史模块java技术体系包括了几个组成部分?javaME、SE、EE分别是什么?都说JDK7版本是第一个里程碑版本,为什么?什么是动态类型语言?什么是动态语言?什么是强类型语言?Java语言是属于哪家公司所有?虚拟机分为几类执行引擎?(2类)==》即时编译器优化的代码放在哪里?“Java语言很慢”的 原因?(由第一款虚拟机引起)HotSpot虚拟机以及ExactVM有什么先进的技术?为什么使用了准确式内容管理,就可以提高性能了?===》不使用句柄方法的原因是什么HotSpot的即时编.
2022-04-02 08:59:34 1571
原创 【美团一题】中位数
双指针:public class meituanText { public static void main(String[] args) {// int[] arr={1,2,3};// int n = arr.length; Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[] arr=new int[n]; for(int i=.
2022-03-26 19:56:35 486
原创 【设计模式--->行为型模式】叩心自问:策略模式
什么是策略模式?sadasd策略模式(Strategy Pattern)中,定义算法族,分别封装起来行为接口, 让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。sadasd这算法体现了几个设计原则 :sadassdsdd第一、把变化的代码从不变的代码中分离出来;sadssddasd第二、针对接口编程 而不是具体类(定义了策略接口);sadsdddasd第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。sada dUML图如下:sadsdsddsdsdsdsa sa.
2022-01-12 22:15:43 622
原创 【设计模式--->行为型模式】叩心自问:观察者模式
由天气预报问题解析观察者模式 观察者模式 由天气预报问题解析观察者模式sadasd天气预报需求:气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。sada d普通方案:ssdada d通过对气象站项目的分析,我们可以初步设计出一个WeatherData类 :ssd ssdada dCurrentConditions : (当前的天气情况) 可以理解成是我们气象局的网站sada d..
2022-01-12 20:47:03 564
原创 【设计模式--->行为型模式】叩心自问:模板模式
叩心自问:什么是模板模式? 叩心自问:模板方法模式在Spring框架应用的源码 模板方法模式的注意事项和细节 叩心自问:什么是模板模式?sadasd模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。 它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。sada d【注】:模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以..
2022-01-12 19:08:50 414
原创 【设计模式--->结构型】叩心自问 :代理模式
叩心自问1:什么是代理模式? 静态代理模式: 动态代理模式: Cglib代理模式: 代理模式的变体: 叩心自问1:什么是代理模式?sadasd为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作, 即扩展目标对象的功能。sada d【注】:被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象sadasd代理模式有不同的形式, 主要有三种静态代理、动态代理 (JDK代理、接口代理)和 Cglib代理..
2022-01-12 12:25:22 732 2
原创 【设计模式--->结构型】叩心自问 :桥接设计模式
叩心自问1:什么是桥接模式? 典型的桥接问题 代码示例(桥接模式解决手机问题): 桥接模式在JDBC的应用: 桥接模式的注意事项和细节 叩心自问1:什么是桥接模式?sadasd桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。sada d【注】:桥接模式属于 结构型模式。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分..
2022-01-11 22:50:16 730
原创 【设计模式--->结构型模式】叩心自问 :适配器设计模式
叩心自问1:什么是适配器模式? 叩心自问2:适配器模式的工作原理? 叩心自问3:类适配器模式(不推荐) 叩心自问4:对象适配器模式(推荐 ✔✔) 叩心自问5:接口适配器模式(推荐 ✔✔) 叩心自问5:对象适配器模式的应用实例 叩心自问6:适配器模式在SpringMVC中的应用 叩心自问7:手写SpringMVC通过适配器模式获得相对应Controller的源码: 叩心自问1:什么是适配器模式?sadasd适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表示 ..
2022-01-11 21:28:21 690
原创 【设计模式--->创建型模式】叩心自问 :原型模式
叩心自问1:什么是原型模式?优点? 在分析原型模型前,我们先分析一个普通的案例,创建5只属性完全一样的羊: 原型模式 原型模式引出的相关问题(深拷贝、浅拷贝) 深拷贝的实现方式①、重写clone方法: 深拷贝的实现方式②、序列、反序列化: 叩心自问2:原型模式在Spring中的应用场景: 叩心自问3:原型模式的注意事项和细节 叩心自问1:什么是原型模式?优点?sadasd原型模式(Prototype模式) :用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。sadasd【注】:原..
2022-01-10 22:40:33 400
原创 【设计模式--->创建型模式】叩心自问 :工厂设计模式(简单工厂设计模式,工厂方法模式,抽象工厂方法)
叩心自问1:什么是简单工厂模式?应用场景? 在分析工厂模型前,我们先分析一个普通的案例,订购Pizza????的流程: 基于简单工厂模式的订购设计: 基于工厂方法模式 叩心自问2:什么是工厂方法模式? 叩心自问3:什么是抽象工厂模式? 叩心自问4:工厂模式的应用场景有什么? 叩心自问5:工厂模式的意义? 叩心自问1:什么是简单工厂模式?应用场景?sadasd简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例(通俗来讲:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)。sadasd
2022-01-10 15:13:54 536
原创 【设计模式】叩心自问:什么是设计模式? 设计模式的目的是什么?设计模式依据哪些(七种)原则设计的?设计模式有哪些?分类?
aas 叩心自问 1 :设计模式的目的是什么? 叩心自问 2 :什么是设计模式? 叩心自问 3:设计模式依据哪些(七种)原则设计的? 3.1、单一职责原则 3.2、接口隔离原则 3.3、依赖倒转原则 3.4、单一职责原则 3.5、单一职责原则 3.6、单一职责原则 3.7、单一职责原则 叩心自问 1 :设计模式的目的是什么?sadasd编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好的:sadasd①.
2022-01-07 18:20:09 1606 3
转载 【SE】异常、枚举类
Java异常架构与关键字 Java异常架构与关键字ssss在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。ssss①:异常:在ssssss1、Throwable: Thrssss【注】:这些错误是不ssssss3、Exception: 其它因编sdsssssss异常分类...
2021-12-28 18:51:21 436 1
原创 【SE】:反射与动态代理模式、代理模式源码解析
Java反射机制概述java为什么可以成为"准动态语言"?反射测试: 理解Class类并获取Class实例 Class类的理解 获取Class实例的4种方式 Class实例对应的结构的说明 类的加载与ClassLoader的理解 类的加载过程(具体可以看jvm模块) 什么时候会发生类初始化? 类加载器测试: 类加载器应用: 使用ClassLoader加载配置文件 通过反射,创建运行时类的对象 获取运行时类的完整结构 调用运行时类的指定结构 Java反射机制概述ssssReflection(反射)是J..
2021-12-27 21:59:08 749
原创 【SE】:Java异常、由浅入深、由原理入面试题
Java异常架构与关键字 异常处理机制 机制1:try-catch-finally try-catch的使用规则: try-catch-finally中finally的使用: 机制2:throws throws的使用规则: 重写方法声明抛出异常的原则: 手动抛出异常 用户自定义异常类 异常总结: 参考: Java异常架构与关键字ssss在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,..
2021-12-27 15:33:02 1369
原创 【项目相关技术】前端由来、vscode安装使用、ECMAScript 6、Vue、element-ui、Node.js、npm、模块化、WebPack
前端开发的由来? vscode安装和使用sda ①、下载地址:[https://code.visualstudio.com/](https://code.visualstudio.com/)sda ②、插件安装:sda ③、创建项目并保存工作区 ECMAScript 6sda ①、什么是 ECMAScript 6sda ②、ECMAScript 和 JavaScript 的关系 ES6的基本语法sda ①、let声明变量:sda ②、const声明常量(只读变量)sda ③、解构赋值sda ④、模板字符..
2021-12-15 21:35:59 2307
原创 【项目相关技术】:父工程的创建、gitee和IDEA使用、面向接口编程、swagger2测试、自定义异常处理、日志、VO/PO、XXMapping、TODO
< packaging>pom< /packaging>是什么意思? 2.2、创建 User 表 3、创建项目 3.1、初始化工程 < packaging>pom< /packaging>是什么意思?ssdssMyBassssddsss①、只 2.2、创建 User 表dss其对应的数据库 Schema 脚本如下:想 3、创建项目 3.1、初始化工程dss使用...
2021-12-14 16:08:03 5127
原创 【项目相关技术】:mybatis-plus简单应用
MyBatis-Plus入门 1、简介 2、创建并初始化数据库 2.1、创建数据库(mybatis_plus)![()](https://img-blog.csdnimg.cn/c1fc9b7003d74083b0d62584551b2594.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc2xvdyBpcyBmYXN0Lg==,size_20,color_FFFFFF,t_70,g_se,x_1..
2021-12-12 00:16:26 428
原创 【力扣动态规01背包问题】:416. 分割等和子集 1049. 最后一块石头的重量 II
dda本文基于公众号"代码随想录",总结而来:https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html#_01-%E8%83%8C%E5%8C%85dsada关于动态规划的背包问题,我们重点掌握01背包和完全背包就够用了(完全背包又是也是01背包稍作变化而来,即:完全背包的物品数量是无限的。)。 01 背包01 背包示例讲解01 背包示例讲解--
2021-12-07 08:52:46 819
原创 【mongodb双响曲】:mongodb的基本使用
asdsps:文章是基于哔哩哔哩黑马讲解总结而成,链接就不放了,估计看到这的多少也都知道查找路径。 MongoDB相关概念 为什么要使用MongoDB? “三高”需求: 具体的应用场景: 这些应用场景中,数据操作方面的共同特点是: 什么时候选择MongoDB? MongoDB简介 体系结构: MySQL和MongoDB对比: 数据模型 BSON数据类型参考列表: MongoDB的特点 MongoDB相关概念 为什么要使用MongoDB?ssdss传统的关系型数据库(如MySQL),在数据操作的.
2021-12-06 18:29:24 1043
原创 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树
/**动态规划专题:这是最简单的并且已经给出了转移方程,平时我们用dp[]数组来表示转移方程 转移方程: dp[n] = dp[n-1]+dp[n-2] 初始值:dp[0] = 0 , dp[1] = 1 */class Solution { public int fib(int n) { if(n ==0) return 0; int[] dp = new int[n+1]; .
2021-12-03 08:41:31 449
原创 【基于狂神Docker双响曲】:2、Docker进阶
本文基于狂神对于Docker的讲解归纳的笔记:https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=1166728958409685445&spm_id_from=333.337.0.0 1. 容器数据卷 2. 实战:安装MySQL 3. 具名和匿名挂载 1. 容器数据卷ss(1)什么是容器数据卷?sdsds将应用和环境打包成一个镜像!sdsds数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据
2021-12-02 17:31:37 3575 5
原创 【基于狂神Docker双响曲】:1、Docker入门及常用部署
本文基于狂神对于Docker的讲解归纳的笔记:https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=1166728958409685445&spm_id_from=333.337.0.0 1. Docker概述 2. 虚拟化技术和容器化技术 3. Docker的基本组成 1. Docker概述ss(1)基本介绍 (官网:https://docs.docker.com/)sdsdsDocker 是一个开源的应用容器
2021-12-01 21:31:28 831
原创 字节阿里高频50题:41. 缺失的第一个正数 440. 字典序的第K小数字(树的变体,经典)
/**解题思路:思路是剑指Offer的的3题:数组中重复的数字,最小正整数,也就是本来应该nums.length个个数 */class Solution { public int firstMissingPositive(int[] nums) { int n= nums.length; for(int i=0 ; i<n ; i++){ while(nums[i] > 0 && nums[i] <= .
2021-12-01 09:16:32 373
原创 【git】【记录于狂神,仅为自用】
asds 所学内容都基于"狂神"。https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ 什么是版本控制?常见的版本控制工具版本控制分类什么是版本控制?常见的版本控制工具版本控制分类
2021-11-30 11:46:40 203
原创 字节阿里高频50题:135. 分发糖果 143. 重排链表(双指针,注意细节,因为返回值是void) 54. 螺旋矩阵 (细节处理)
/**解题思路:其实有一道类似题,在前100或者剑指offer里面,我们考虑两个数组,分别以左向右,以右向左规则的两个数组,然后找其中最大值 */class Solution { public int candy(int[] ratings) { int len = ratings.length; int res = 0; //返回值 //两个数组 int[] lft = new int[len]; int[] .
2021-11-30 09:34:00 481 2
原创 基于Linux的《Vim使用及账号用户管理》【仅自用】
asds 来自狂神,https://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&mid=2247483895&idx=1&sn=b685934ee0d08b9d01cc0c35ed7fed71&scene=19#wechat_redirect 什么是Vim编辑器 ?三种使用模式?Vim 按键说明账号管理用户组管理磁盘管理什么是Vim编辑器 ?adsdssa三种使用模式?adsdssaVim 按键说明adsdssa账号.
2021-11-29 22:34:50 386
原创 Linux常用【基本命令】,【涉及很浅,有时间再系统学习Linux】【只为自己记录用】
asds 所学内容都基于"狂神"。https://mp.weixin.qq.com/mp/homepage?__biz=Mzg2NTAzMTExNg==&hid=2&sn=1650b6338f6469ca519b080fdbbbd333 Linux概述: 走近Linux系统: 常用的基本命令 基本属性 文件内容查看 Linux概述:asa①、我们为什么要学习Linux?asalinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展.
2021-11-29 21:52:49 794
原创 基于租赁【“阿里云“服务器】的【Centos7】版本的Linux相关使用以及【宝塔界面】【只为记录一个大致过程,供自己以后查阅用】
asds 当学完SpringBoot,简单了解SpringCloud后,我突然不知道再系统学什么,比如Docker,RabbitMQ,Git,还是Netty等,每次看不多少就发现他们有一个核心问题:Linux的相关使用。 asds 而对于Linux,虽然可以双系统,但是毕竟要占用一定的系统资源,所以没必要,而我们也学了虚拟机,所以同样可以考虑基于虚拟机来学习Linux,但也是要占用系统资源,并且作为一名合格的程序员,都应该有一个"属于"自己的服务器来学习,因此,我最后考虑租赁一个"服务器"来学习Lin.
2021-11-29 18:48:55 1050
原创 字节阿里高频50题:92. 反转链表 II 25. K 个一组翻转链表 (字符串)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * }.
2021-11-29 15:12:52 202
原创 字节高频50题:103. 二叉树的锯齿形层序遍历 199. 二叉树的右视图 (都是bfs) 93. 复原 IP 地址(回溯,dfs)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { .
2021-11-29 13:42:59 1624
原创 阿里高频50题: 1278.分割回文串 III(背包问题,动态规划) 151. 反转字符串里的单词
dasd/**解题思想:动态规划、背包问题 */class Solution { public int palindromePartition(String s, int k) { //字符串长度 int length = s.length(); //dp[i][j]表示前i个字符分割成k个子串所需修改的最少字符数,初始值我们赋值尽可能大 int[][] dp = new int[length+1][k+1]; .
2021-11-27 10:06:44 524
原创 阿里高频50题: 13.罗马数学转整数 879. 盈利计划(背包问题,动态规划,很好)
das/**解题思路:常规思想就不说了,但是在评论中找到了很精妙的方法 */class Solution { public int romanToInt(String s) { //首先是把六种情况用别的字母代替 s = s.replace("IV","a"); s = s.replace("IX","b"); s = s.replace("XL","c"); s = s.replace("XC","d");
2021-11-26 10:58:45 306
原创 回顾经典,八大算法。
ssss其实早在一年前,对于八大算法就能1个多小时全部复现出来,起初没觉得有什么,但什么随着力扣刷题,发现八大排序算法越来越重要,因此,我觉得有必要对其进行总结,或许已经有很多人对其总结了,不过总是不如自己亲身经历一遍,再复现一遍,算法重要,思维更重要。ssss排序的分类:ssdssss①、内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序sdsssss②、外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序ssss而我们所说的方法,都是内部方法。s
2021-11-23 21:48:55 14129 11
原创 剑指Offer(第二版): 41. 数据流中的中位数 44. 数字序列中某一位的数字(找规律题) 20. 表示数值的字符串 6. Z 字形变换
dsdasddsadsdasclass MedianFinder { Queue<Integer> A, B; /** initialize your data structure here. */ public MedianFinder() { A = new PriorityQueue<>(); B = new PriorityQueue<>((x,y)->(y-x)); }
2021-11-21 19:48:58 329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人