- 博客(54)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
原创 JVM杂记:对多态实现原理、虚方法表、虚方法、静态解析、动态链接的一些思考
文章目录0.前言1.前置知识1.1 虚方法和非虚方法1.2 符号引用和直接引用0.前言最近在学JVM,但学的很痛苦,因为JVM的知识点都不连贯,而且也没找到什么资料,也很难进行验证。如标题,在学习的过程中遇到了这些概念,刚开始很难理解,后来不停找资料、看视频、看书,算是得出了一些个人总结,不一定完全准确,希望对大家有个借鉴。下面的讲解,需要大家提前对JVM有一部分了解,比如类加载、JVM内存模型等、字节码文件等知识,会按照源代码,然后编译成字节码文件,然后字节码文件被加载进虚拟机内存的顺序讲起。1
2021-08-10 15:51:24 1618
原创 深究AQS
文章目录0. 前言0.1 AQS是什么0.2 AQS怎么学0.3 AQS有什么用1. 独占模式2. 共享模式3. 条件队列0. 前言0.1 AQS是什么0.2 AQS怎么学0.3 AQS有什么用1. 独占模式2. 共享模式3. 条件队列
2021-04-22 14:04:07 468 1
原创 22种设计模式——策略模式
文章目录1. 概述2. 特点3. 实现1. 概述策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。先从问题引入:2. 特点优点缺点使用场景3. 实现UML类图Java实现...
2021-03-31 17:22:36 166
原创 22种设计模式——观察者模式
文章目录1. 概念2. 特点3. 实现1. 概念观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。观察者模式的应用场景挺常见的,他还有另外一个名字,说出来你大概就懂了这个模式是在干什么的,叫做订阅——发布者模式,是不是突然就有想法了,我们下面先从具体使用场景来引入它。假如你有两种类型的对象: 顾客和 商店 。 顾客对商店里的iPhone最新版非常感兴趣, 而该产品很快将会在商店里出售。顾客可以每天来商店看看产品是否到货。 但如果商
2021-03-31 12:02:42 682
原创 使用nginx代理访问本地服务器资源
前言之前对于nginx只是存在于传说中的了解,只知道它能干什么,但也没有具体操作过(因为一般这个我都让我的hxd做了)。所以今天在开发的时候遇到一个问题,我做了一个文件上传功能,但是前端那边反映我给出的url他访问不到报404。我突然明白了,这是没有做nginx代理。然后我就开始了我的nginx代理。具体操作首先找到nginx的配置,我是有宝塔面板的,所以我在宝塔面板就可以直接改了。首先打开nginx配置。找到server,记得修改监控端口80,因为80是http的默认端口,如果你的连接是htt
2021-03-30 11:41:02 990
原创 22种设计模式——中介者模式
文章目录1. 概述2. 特点3. 实现1. 概述中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。顾名思义,从中介者模式的名字你大概就可以猜测出这个模式主要是实现类似于中介的一些功能,那中介有什么功能呢?起连接的作用,连接起双方,协调沟通。这个功能在代码中体现为调节两个类的依赖关系,那调节两个类的依赖关系有什么作用呢?很简单,为了解耦。前面简单乱推了中介者模式的作用,虽然有点勉强,但中介者模式确实就是用于解
2021-03-25 15:16:30 155
原创 22种设计模式——模板方法模式
文章目录1. 概述2. 特点3. 实现1. 概述模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。我们说一种设计模式简单,一种是说他的使用场景明确,不会轻易和别的模式弄混,比如单例模式;然而还有一种就是实现简单,模板模式正是后者,它实在不能再简单了,它其实就是抽象类的使用方法。从问题引入:假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式 (PDF、 DOC 或 CSV) 的文档, 程序则会试图从这些文件中抽
2021-03-24 10:39:24 221
原创 22种设计模式——责任链模式
文章目录1. 概念2. 特点3. 实现1. 概念责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。这种模式是一种很容易理解,且很实用的模式。话不多说,从问题引入:请假问题,在工作的时候请假其实是一件蛮复杂的事情,需要通过层层的审批。所以我们以张三为例,来讲一下他们公司的请假流程。现在张三他突然得了肠胃炎很急,需要请假一个下午,所以他把请假报告给了开发经理赵四,赵四见他很着急而且请假时间只有一个下午,所以
2021-03-22 22:05:41 215
原创 22种设计模式——代理模式
文章目录1. 概述2. 特点3. 实现1. 概述代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。代理模式,相信大家都不陌生啦,反射和spring里面就是用到了代理模式,不管你学没学过,大家再来深入了解一下代理模式,有一点还是需要说下,下面的代理模式实现是使用了Java给我们提供的JDK代理和Cglib代理。老惯例从问题引入。先来看下代理模式的概念:为某些对象提供一种代理以控制对这个对象的访问。为什么要控制某
2021-03-17 11:44:08 182 2
原创 计算机网络
文章目录1. 网络总体框架与一些概念1.1 因特网2. 应用层3. 运输层4. 网络层4.1 数据平面4.2 控制平面5. 链路层和局域网1. 网络总体框架与一些概念1.1 因特网对这个名字大家一定都不会陌生,但因特网到底是什么呢?可以从两个角度来回答这个问题:第一种角度,是从它的组成来描述,描述组成它的软硬件;第二种角度,是从它的功能来描述,将其视为为分布式应用提供基础服务的联网设施来描述。2. 应用层3. 运输层4. 网络层4.1 数据平面4.2 控制平面5. 链路层和局域
2021-03-16 14:44:00 139
原创 22种设计模式——享元模式
文章目录1. 概述2. 特点3. 实现1. 概述享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。从问题引入,假如你希望在长时间工作后放松一下, 所以开发了一款简单的游戏: 玩家们在地图上移动并相互射击。 你决定实现一个真实的粒子系统, 并将其作为游戏的特色。 大量的子弹、 导弹和爆炸弹片会在整个地图上穿行, 为玩家提供紧张刺激的游戏体验。尽管该游戏在你的电脑上完美运行, 但是你的朋友却无法长时间进行
2021-03-13 14:48:24 193
原创 22种设计模式——组合模式
文章目录1. 概述2. 特点3. 实现1. 概述组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。这种设计模式也蛮简单的,说一种设计模式简单,怎么看的呢?看它的应用场景,应用场景很清晰就很简单,因为具体实现其实可以说是死代码,只要记住哪种场景可以使用哪种模式即可,代码实现倒是不必死记硬背,明确使用场景倒是首要的。组合模式的使用场景很清楚,它适用于多个对象之间的关系是树状的情况(程序员应该不会不知道树的吧),这种场景其实也挺常见的,比如我们的学校架
2021-03-11 15:30:47 398 1
原创 22种设计模式——装饰者模式
文章目录1. 概述2. 特点3. 实现1. 概述装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。注意,装饰模式和桥接模式很相似,没学过桥接模式的小伙伴,可以看这篇博客:22种设计模式——桥接模式。装饰者模式和桥接模式的出发点都是一样的,都是为了解决类爆炸的问题,先讲下这个问题:举个例子,比如星巴克卖咖啡,咖啡种类有:美式、拿铁、摩卡,同时咖啡还可以加料:牛奶、巧克力、糖。这时如果按普通的方式,那是不是就要同时存在9(3 X 3)个子类,如果新增一
2021-03-10 13:20:22 178
原创 22种设计模式——适配器模式
文章目录1. 概念2. 特点3. 实现1. 概念适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。它和桥接模式有点像,都是连接两个不同维度的东西,但关键在于桥接模式是从设计之初就开始使用,而适配器模式更适用于遇到问题了再使用。老样子,还是先从问题引入概念。假如你正在开发一款股票市场监测程序, 它会从不同来源下载 XML 格式的股票数据, 然后向用户呈现出美观的图表。在开发过程中, 你决定在程序中整合一个第三方智能分析函数库。 但是遇到了一个问题, 那就是分析函数库只兼容 JSO
2021-03-09 01:00:06 264 3
原创 22种设计模式——建造者模式
文章目录1. 概述2. 特点3. 实现1. 概述生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。在我看来,五种建造者模式,可以分为三种:原型模式、单例模式、其他三种建造者模式。这样分是因为原型和单例的特点和适用场景是很明显的,而其他三种建造者模式的特点和适用场景则很相似。2. 特点3. 实现...
2021-03-01 20:26:54 258
原创 22种设计模式——抽象工厂模式
文章目录1. 概述2. 特点3. Java实现1. 概述抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。顾名思义,抽象工厂模式肯定和工厂模式有什么关系,实际上它是工厂模式的一种变种,它的核心内容和工厂模式差不多,都是实现了创建对象的解耦,不了解工厂模式的小伙伴可以看我写的这篇博客:工厂模式抽象工厂模式和工厂模式的不同点就在于它们针对的对象不一样,工厂模式针对的是位于同一产品等级的情况,抽象工厂模式则是同时针对产品等级和产品族的情况。什么是产品等级和产品族?这样说
2021-02-24 16:00:54 194
原创 22种设计模式——工厂模式
文章目录1. 概述1.1 目的1.2 解决的问题2. 特点3. 实现3.1 具体实例3.2 UML类图3.3 Java代码1. 概述工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。1.1 目的上面那段话其实就是工厂模式的目的,但说的比较抽象,这里来通俗地解释下。首先工厂模式是一种创建型模式,那很明显这个模式就是和对象的创建有关,所以对象的new操作就会比较特殊。在工厂模式中,对象不是直接在客户端中new出来,而是调用工厂类的工厂方法新建对象(也就
2021-02-22 22:40:04 713
原创 22种设计模式——原型模型
文章目录1. 概念2. 特点3. 实现1. 概念原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类,即无需关心复杂的复制逻辑。目的:根据一个已有的对象,创建出另外一个一模一样的对象。解决的问题:复杂的复制逻辑如果你有一个对象, 并希望生成与其完全相同的一个复制品, 你该如何实现呢? 首先, 你必须新建一个属于相同类的对象。 然后, 你必须遍历原始对象的所有成员变量, 并将成员变量值复制到新对象中。不错! 但有个小问题。 并非所有对象都能通过这种方式进
2021-02-12 17:20:51 1920 2
原创 22种设计模式——单例模式
0. 文章目录1. 概念2. 特点3. 八种实现1. 概念顾名思义,单例模式也就是说只有一个实例,这种模式也是属于很常用的一种设计模式,也很容易理解。目的单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。解决的问题保证一个类只有一个实例。 为什么会有人想要控制一个类所拥有的实例数量? 最常见的原因是控制某些共享资源 (例如数据库或文件) 的访问权限。它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此
2021-02-12 14:07:42 235 2
原创 动态规划
文章目录1. 概念2. 模板代码3. 例题3.1 摆动序列3.2 最长湍流子数组1. 概念2. 模板代码3. 例题3.1 摆动序列3.2 最长湍流子数组
2021-02-09 12:30:57 246
原创 Linux系统解决中文文件名乱码问题
前言做项目的时候,遇到了一个BUG,如题目,项目中有一个接口的功能是上传文件,但是假如文件名有中文的话,上传后的文件名全是??。百度了一下,发现是我的服务器不支持中文,所以下面要给我的服务器换下编码。网上很多博客有很多种做法,但要注意下版本:有的方法是unbutun的,有些是centos的,对我来说都不起作用就很烦。下面我的方法两个系统版本都支持。操作查询当前编码locale这句执行以后,会出现下面的东西,我这个是已经可以使用中文的了,因为是utf-8,如果是别的编码可能就没办法显示中
2021-01-27 14:43:50 769
原创 Navicat使用SSH连接到远程数据库
前言以前连接数据库一直采用的是直接连接的方式,即知道IP地址、账号密码然后直接连接,如下:但这次由于是连接公司的数据库,这样直接连接的方式不太安全,必须使用SSH连接。操作SSH连接操作如下:选择SSH连接输入SSH连接数据库的服务器的主机账号和密码,注意这里的账号和密码是连接服务器的账号和密码回到常规页面,主机要输入localhost,账号和密码就是远程服务器的数据库的账号密码,而不是本地的账号密码...
2021-01-27 14:34:02 882
原创 Java集成spring-security + JWT
前言权限管理几乎是每一个后台都要有的功能,spring家族贴心的给我们提供了spring-security,这是一个权限管理框架,本质上是一系列过滤器组成的。当初学这个学了好久,网上也没有很正规的教程,博客也很多,看的很乱,但最终还是配置好了了。但过一段时间就又全部忘记了,最近几天重新看了一遍,这里做一个笔记,也是做一个分享。spring-security有很多种模式,我下面实现的是用户-角色模式(其实我也不知道是不是叫这个名字),就是说用户和角色是多对多的关系,一个用户能有多个角色,一个角色同时有多
2021-01-25 15:00:00 470 1
原创 在线浏览ipynb文件
前言我又接到奇奇怪怪的需求了,要求在线浏览ipynb,但我学的是Java,我之前连python都没接触过,甚至对这个文件格式都要先百度一下就很烦,但为了工资还是要继续的对吧。首先讲一下我的思路,我以为是先把他转换为PDF,再让我的前端好兄弟调用pdf.js来在线浏览(这个能防止别人下载,只能看不能碰)。但是这个单靠Java实现不了,也找不到什么插件或者jar包来帮忙实现,这个想法只能舍弃。最后我想把它转成.txt文件,因为.txt也可以转化成PDF。是可以这么做,ipynb文件是可以直接变成txt,但
2021-01-20 22:36:38 7017 5
原创 Java使用aspose实现其他格式转PDF
前言最近在做项目,有一个需求是要把上传来的各种文档转成PDF,比如有word、ppt、excel等。之前没了解过这种需求,网上转了一圈,有很多种方法,给我吓坏了,以为是什么很难得需求,其实不过如此。不过确实有点难搞,这个需求还有系统要求(window和Linux不一样),也要区分文档的类型(ppt和pptx,doc和docx,xls和xlsx)。我这里采用aspose来完成其他格式转PDF。先上资源,aspose是需要钱的,所以用的破解版哈哈,而且maven仓库上是没有的,需要自己手动导入jar包。c
2021-01-17 21:38:30 1158 6
原创 深究IO模型
文章目录0.前言1. 两对基本概念1.1 阻塞与非阻塞1.2 同步与异步2. 操作系统层面的IO模型2.1 阻塞IO2.2 非阻塞IO2.3 多路复用IO2.4 信号驱动IO2.5 异步IO3. Java层面的IO模型3.1 BIO3.2 NIO3.3 AIO0.前言本文讲的IO模型主要是讲的是网络IO模型,而且编程语言使用的是Java语言。对于网络IO,个人觉得最重要一点是要弄清是从哪个方面来划分的。主要分成两个角度:一个是操作系统的角度,一个是Java语言的角度。网上很多博客没有说清楚划分角度,只
2020-11-10 11:37:13 157
原创 深究AQS与各种同步组件
文章目录1.知识补充 —— 模板模式2.AQS概述1.知识补充 —— 模板模式在学习AQS之前,非常有必要了解一个设计模式——模板方法模式,因为AQS其实就是使用了这个设计模式,学习这个模式有利于我们明白AQS的工作流程以及为什么要那么做的。废话不多说,看下面。模板方法模式,顾名思义就是提供一个模板,我们要做的事情就是使用这个模板,然后根据我们自己的需求,修改里面的一些细节,但大致骨架还是使用模板提供给我们的。Java是面向对象的,所以模板方法模式在Java里面,模板就是一个类,而我们要自定义修改的
2020-11-10 11:03:47 274
原创 深究线程状态及切换
文章目录线程状态1.知识补充1.1 并行和并发1.2 锁池、等待池2.线程状态线程状态1.知识补充1.1 并行和并发并发:两个或多个事件在用一个时间段内发生并行:两个或多个事件在同一时刻发生(同时发生)在我们的计算机中,如果你的CPU是多核的,这个核的数量就是处理任务的线程的数量,比如你是双核的,那你的计算机便能并行处理两个任务。如果你只有单核,但又有多个任务或者双核有两个以上的任务,这时候怎么办呢?这时候就是并发处理任务了。并发处理时,我们的CPU会在多个线程间反复横跳,一下子
2020-10-11 22:59:14 612
原创 深究volatile关键字和synchronized关键字
文章目录1.volatile1.1 并发编程三特性1.1.1 原子性1.1.2 可见性1.1.3 有序性1.2 计算机内存模型(硬件)1.3 Java内存模型(软件)1.4 volatile作用1.5 volatile原理1.volatile1.1 并发编程三特性1.1.1 原子性原子性,指操作是不可中断的,要么执行完成,要么不执行,像一个原子一样无法分割,如果你了解过mysql的事务,相信对这个概念并不陌生。基本数据类型的访问和读写都是具有原子性,当然long和double的非原子性协定除外。i
2020-09-23 14:23:05 329
原创 springMVC
文章标题MVC回顾什么是MVCModel1时代Model2时代springMVCspringMVC原理简析springMVC的使用1.配置版2.注解版Restful风格页面跳转1.视图解析器说明2.资源跳转数据处理1.乱码问题2.处理提交数据3.数据显示到前端MVC回顾什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC
2020-08-11 22:49:40 195
原创 spring
目录spring简介spring简介总所周知,spring是SSM框架之一,框架有什么作用呢我就不多说了,其实这种概念性的东西要等上手或者熟悉以后才能深刻体会,这里就讲一下最近的学习后我对spring的理解。spring是一个框架,它有两个作用:控制反转和面向切面编程。控制反转...
2020-08-07 16:45:13 259 1
原创 mybatis
文章目1.第一个mybatis程序2.mybatis简述3.mybatis使用1.简单的CURD1.参数问题2.事务问题2.复杂的CRUD1.模糊查询3.配置解析1.environment2.mappers1.第一个mybatis程序现在来创建我们的第一个mybatis程序,先练下手。首先创建一个maven项目,在pom.xml里导入我们的项目环境这里说明一下:mysql连接包用5.1.47,不用8.0版本,那个设置有点区别,下面项目都用5.1.47版本Maven静态资源过滤问题,所以要配置
2020-08-05 22:16:23 263
原创 mysql高级特性
文章目录函数1.常用函数2.聚合函数3.其他函数函数1.常用函数数学函数select ABS(-8) --绝对值select CEILING(6.4) --向上取整select FLOOR(6.4) --向下取整select RAND() --获取随机数select SIGN(-5) --判断一个数符号,0是0,负数是-1,正数是1字符串函数select CHAR_LENGTH(`你好呀`) --获取字符串长度select CONCAT(`你`
2020-07-30 23:22:44 304
原创 简述:maven的概念、安装、使用
前言:maven概念对于maven,大家应该都不会陌生,没有用过也有听过,那它到底是什么呢?maven其实就是一个项目管理工具,是阿帕奇开源的一个Java项目工具,可以帮助我们更方便的管理和构建项目。大家都知道,我们在做项目的时候,经常要引入很多jar包,一般项目都有十几二十个jar包,我们都要去网上下载然后导入就很麻烦。更痛苦的是,有时候还有jar包冲突,所以这时候maven就出现了,它完美地解决了这一个问题,这也只是maven的作用之一。还有我们也都知道,一个项目中对于项目结构的拆分是很清晰的,比
2020-07-29 16:12:41 214
原创 Java设计模式
前言:设计模式简述设计模式是一种编程思想,它实际就是面向对象思想的实际运用。它体现了复用性、低耦合性、高扩张性等等面向对象的思想,能大大提高我们的项目质量。总共有23种设计模式,这些模型在大多时候是混合在一起使用的,它们各自有优点和缺点,应结合实际正确使用。创建型模式单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式结构式模式设配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式行为型模式模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、
2020-07-28 22:31:32 169
TA创建的收藏夹 TA关注的收藏夹
TA关注的人