java
文章平均质量分 91
怎么起个名就那么难
这个作者很懒,什么都没留下…
展开
-
nacos 2.1.0集群生产环境多节点部署
nacos 2.1.0集群生产环境多节点部署JAVA 开发版本版本说明适配 Spring Boot 为 2.4,Spring Cloud Hoxton 版本及以下的 Spring Cloud Alibaba 版本如下:1.8.52.1.04.9.41.5.21)环境准备。原创 2023-01-12 16:16:29 · 1886 阅读 · 0 评论 -
线性查找算法
线性查找算法线性查找算法JAVA代码实现线性查找算法JAVA代码实现线性查找算法(初始版本)JAVA代码实现线性查找算法(对象版本)线性查找算法生活中的例子:你有很多照片都放在了一块,你找到自己想要的一张照片,你会从第一张开始找,第一张不是,第二张不是,第三张不是。。。。以此类推,找到自己想要的,若找不到,你会感觉为什么没有,是不是丢了,心情很是低落,我草丢了!!!!!!!程序中的例子:一个数组存储了很多数字,例如 1,2,3,4,9,5,7 这样的数据 你想查找某个数字,而你并不知道他的下标,原创 2022-02-11 15:42:43 · 502 阅读 · 0 评论 -
synchronized详解
多线程系列文章目录多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问。 可变:资源可以在其生命周期内被修改引出的问题:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问!文章目录多线程系列文章目录一、如何解决线程并发安全问题?二、synchronized原理详解三丶synchronized底层原理Monitor监视器锁什么是monitor?对象的内存布局原创 2021-04-29 16:51:52 · 628 阅读 · 0 评论 -
CPU缓存一致性协议MESI
文章目录一、CPU高速缓存(Cache Memory)CPU为何要有高速缓存带有高速缓存的CPU执行计算的流程多核CPU多级缓存一致性协议MESIMESI优化和他们引入的问题一、CPU高速缓存(Cache Memory)CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运原创 2021-04-27 13:24:48 · 92 阅读 · 0 评论 -
JMM&synchronized&volatile详解
系列文章目录Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),用于存储线程私有的数据,而Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内存原创 2021-04-27 13:05:44 · 356 阅读 · 0 评论 -
操作系统底层工作认识
多线程系列文章目录提示:计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼计算机模型。提示:写完文章后,目录可以自动生成原创 2021-04-27 12:09:09 · 624 阅读 · 0 评论 -
Mysql锁机制与事务隔离
Mysql系列文章目录我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。接下来,我们会深入讲解这些机制,让大家彻底理解数据库内部的执行原理。文章目录Mysql系列文章目录前言一、事务及其ACID1.并发事务处理带来的问题更新丢失(Lost原创 2021-04-22 16:39:51 · 176 阅读 · 0 评论 -
JVM常量池详解
JVM系列文章目录提示:这里咱们要说的常量池,常量池就是咱们面试中所说的常量池,谈谈你对常量池的认识?面试官一问咱们就懵逼了,你要记得你脑子中有一张图!!! 剩下的就好办了提示:请各位大佬批评指正!!文章目录JVM系列文章目录前言一、Class常量池与运行时常量池二、字符串常量池八种基本类型的包装类和对象池前言提示:学习的时候会有点头疼哦一、Class常量池与运行时常量池Class常量池可以理解为是Class文件中的资源仓库。 Class文件中除了包含类的版本、字段、方法、接口等描述原创 2021-04-13 14:44:45 · 1649 阅读 · 4 评论 -
GC垃圾收集器G1
JVM系列文章目录提示:强大的垃圾回收器文章目录JVM系列文章目录前言一、G1收集器(-XX:+UseG1GC)被视为JDK1.7以上版本Java虚拟机的一个重要进化特征。它具备以下特点:前言提示:G1(Garbadge First Collector)作为一款JVM最新的垃圾收集器,可以解决CMS中Concurrent Mode Failed问题,尽量缩短处理超大堆的停顿,在G1进行垃圾回收的时候完成内存压缩,降低内存碎片的生成。G1在堆内存比较大的时候表现出比较高吞吐量和短暂的停顿时间,而原创 2021-04-08 12:35:55 · 635 阅读 · 0 评论 -
Elastic-job三种模式(JAVA-API实现)
Elastic-Job java-api方式实现为什么要用定时任务?1.数据备份每天凌晨 每天凌晨2点,因为凌晨的时候系统不是繁忙,不使用定时任务,就是用人工操作2.心跳的监控,每隔10分钟去监听接口,是否正常,没有定时任务需要人工去查一下3.每隔5分钟去淘宝京东抓取订单,有些卖家在不同的平台上架,总不能商家去每隔平台定时自己拉取一下吧4.订单的支付,由于用户30分钟没有付款,自动取消该订单 是企业应用系统中必要的,是必须要的 解决掉了,大量的人力和物力 ,SpringTask 支持单点原创 2020-12-29 15:23:17 · 1149 阅读 · 0 评论 -
23种设计模式(九)桥接模式
桥接模式一般问题:一个类需要在两个以上维度扩展,采用继承方式会导致子类数量过多核心方案:将抽象部分与实现部分分离,使其都可以独立变化银行,我有活期账户,定期账户,不同的银行,打开账户public interface Account { Account openAccount(); void showAccountType();}public abstract class Bank { protected Account account; public Ba原创 2020-12-29 10:52:08 · 352 阅读 · 1 评论 -
23种设计模式(八)组合模式
组合模式树形结构,组合对象,单个对象,符合开闭原则,可以增加叶子节点根据课程举例子:课程与目录类组合 叶子节点public abstract class CatalogComponent { public void add(CatalogComponent catalogComponent){ throw new UnsupportedOperationException("不支持添加操作"); } public void remove(CatalogCo原创 2020-12-24 15:14:40 · 340 阅读 · 0 评论 -
23种设计模式(七)享元模式
享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。相似对象,对象的复用生活中的例子:年底了,部门领导要做汇报,有很多部门,但是汇报内容,今天给王总汇报,明天李总,正好是轮休,但是这个稿子,一份就行了实现了复用性部门接口public interface Employee { void report();}public class Manag原创 2020-12-24 11:50:43 · 338 阅读 · 1 评论 -
23种设计模式(六)适配器模式
适配器模式优点:1、可以让任何两个没有关联的类一起运行。2、提高了类的复用。3、增加了类的透明度。4、灵活性好。缺点:1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。接下来我拿充电器举例子,我们平时用的家用原创 2020-12-24 10:01:02 · 337 阅读 · 0 评论 -
23种设计模式(五)装饰者模式
装饰者模式扩展原有对象的功能:我买个房子(对象),我装修(不在原有的对象上进行操作),就是装饰者,动态添加,动态撤销接下来我用代码举例子:早晨我要买早餐,买的煎饼(对象),(装饰者)我有点饿加一个鸡蛋,再加一个香肠,在加一包辣条,我感觉吃不饱,我又加了一个鸡蛋在原有的基础上进行扩展抽象煎饼类煎饼的描述,价格public abstract class ABattercake { protected abstract String getDesc(); protected abst原创 2020-12-24 09:46:40 · 386 阅读 · 0 评论 -
23种设计模式(四)外观模式
外观模式通过父系统调用子系统,也就是父系统是入口,调用不同的子系统,遵守迪米特法则,最少知道原则优点:简化调用过程,无需了解子系统,防止带来风险减少系统依赖,减少系统耦合性生活中的例子:例如我在CF官网,我用积分兑换,装备,我只需要知道我能兑换装备,我不需要他具体执行的什么,具体能不能到我的账号,内部验证积分是否充足,然后减抠积分,然后通过虚拟装备系统发放到某个人的账户装备public class Equipment { private String name; publi原创 2020-12-23 14:46:02 · 330 阅读 · 1 评论 -
23种设计模式(三)原型模式
原型模式原型模式的适用场景:1.类初始化消耗资源较多2.new一个对象需要非常繁琐的过程(数据准备,访问权限等)3.构造函数比较复杂4.循环产生大量对象时优点:1.原型模式比new一个对象性能要高2.简化创建过程缺点:1.必须配备克隆方法(必须重写object的克隆方法)2.对克隆对象,进行复杂改造的时候,容易引入风险重要的是克隆常用的场景:积分抽奖,邮箱,短信ctl +t 点击 那个箭头 进行搜索...原创 2020-12-23 12:18:22 · 379 阅读 · 0 评论 -
Spring security Oauth2+JWT
企业级认证授权技术一丶用户认证与授权每个项目最基本的也是最重要的是安全,用户认证与授权,是最重要的,用户认证身份。1.1什么是用户身份认证?用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。1.2什么是用户授权?用户认证通过后去访问系统的资源,系统会判断用户是否拥有访问资源的权限,只允许访问有权限的系统资源,没有权限的资源将无法访问,这个过程叫用户授权。二丶SSO单点登录单点登录(S原创 2020-12-22 14:24:53 · 1247 阅读 · 0 评论 -
23种设计模式(二)单例模式
单例模式优点:在内存中只有一个实例,减少了内存的开销可以避免对资源的多重占用缺点:没有接口,无法扩展必须点私有构造器,线程安全的,序列化与反序列化对单利的破坏,反射攻击懒汉式单例模式public class LazySingleton { private static LazySingleton lazySingleton=null; private LazySingleton(){ } public static LazySingleton getInst原创 2020-12-18 19:29:51 · 433 阅读 · 0 评论 -
23种设计模式(一)建造者模式
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。用户只需要指定需要建造的类型就可以得到他们,建造的细节完全不需要知道的产品丶抽象建造者丶具体建造者丶指挥者丶 是有这四个组成类型:创建型优点:封装性好,创建和使用分离扩展性好丶建造类之间独立丶一定程度上解耦缺点:产生多余的Builder对象产品内部发生变化,建造者都要修改,成本较大生活中的例子:现实中有很多例子,例如电冰箱,电脑,手机,食品等,课程,接下里为了理解,我拿课程去举例子:产品:课原创 2020-12-16 18:11:53 · 391 阅读 · 1 评论 -
设计模式(三)抽象工厂,不属于23中设计模式
抽象工厂直接上图,为什么说是抽象工厂,在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。也就是说,不用知道他怎么构建这个实力的。如上图:一个产品族,例如美的,海尔,格力,这三个品牌 这就是三个产品族,例如说美的 美的下面产洗衣机(正方形),电冰箱(圆形),空调(椭圆形) 这是一个产品族,然后产品的等级结构,那就是说这个空调是3匹的还是1.5匹的,还是1匹的等等 虽然很抽象,但是很现实接下来代码实现:代码的UML图,课程原创 2020-12-15 19:47:25 · 370 阅读 · 0 评论 -
设计模式(二)不属于23中设计模式
工厂方法工厂方法的优点:客户端只需要知道,我只关心所需产品对应的工厂,无需关心创建细节,加入新的产品符合开闭原则,提高可扩展性;工厂方法的缺点:类的个数不断增加,类的个数不断增多,增加复杂度,增加了系统的抽象性,和理解难度工厂方法创建的过程,依赖于子类的进行构建,契约为父类,实现为子类生活中较好的例子: 如下例子很好理解: 视频为抽象方法,这个是已知的,定义为抽象方法,然后有前端视频,Python视频,java视频 这属于产品组,但是我想要获取视频,肯定是通过产品的工厂去获取,产品工厂,不同视原创 2020-12-14 14:56:58 · 367 阅读 · 0 评论 -
设计模式(一)简单工厂模式
简单工厂模式(不属于23中设计模式)简单工厂模式,见名之意,工厂用来做什么的,在生活中,工厂就是造东西的,为什么称之为简单工厂模式,简单工厂模式不属于23设计模式中,但是他是工厂模式的设计的思想接下来举例子,类似于我传入相应的参数,他就会帮我造出来一个对象,我只需要把我的需求给他,他就会给我造出对应的东西简单工厂模式:JDK源码解析为操作日历字段(例如获得下星期的日期)提供了一些方法,此类,大家看到了这应用了简单工厂模式大家看不懂这个图不要着急:接下来一一解析获取实例,继续往下看到这里大原创 2020-12-14 13:02:11 · 346 阅读 · 0 评论 -
设计模式的五大原则(五)
迪米特原则一个对象对其他对象最少的了解,又叫做最少知道的原则尽量降低,类与类之间的耦合,类之间的弱耦合,如果大量使用迪米特法则生活中的迪米特原则例如:Boos 让部门经理我要你们部门的人的所有材料,显然Boos不会亲自干这个事了,Boos通知部门经理,部门经理在通知工作人员你们把材料交到我的手中,经理整理完事之后,进行汇总,在交到Boos手中 Boos不知道过程,我只要结果,我不认识你们部门的所有人,我只认识你们领导代码中的迪米特原则我们模仿这样一个场景 Boos下发指令找团队负责人,团队负责人原创 2020-12-11 16:46:27 · 402 阅读 · 1 评论 -
设计模式的五大原则(四)
接口的隔离原则用多个专门的接口,而不使用单一的总接口,客户端不应该依赖其他接口一个类对应一个类的依赖应该建立在最小的接口上。建立单一接口,不要建立,庞大臃肿的接口尽量细化接口,接口中的方法越少,比较好,适度就好符合我们开发中的高内聚低耦合的特性,在开发的时候考虑到要修改的地方例如说:动物有的会吃,会飞,会游泳,但是如果把他定义在一个接口中,例如Dog类去实现接口,显然, 会吃,不会飞,会游泳 这样的话 会飞这个方法只能为空了,以此类推鸟会吃,会飞,但是大雁会飞,企鹅会游泳 这样的话 另外原创 2020-12-11 15:17:55 · 361 阅读 · 0 评论 -
设计模式的五大原则(三)
单一原则1.降低类的复杂度,一个类只负责一个职责。这样写出来的代码逻辑肯定要比负责多项职责简单得多。2.提高类的可读性,提高系统的可维护性。3.降低变更引起的风险。变更是必然的,如果单一职责原则遵守得好,当修改一个功能的时候可以显著降低对其他功能的影响。需要说明的一点是,单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。比如说单一职责原则不仅仅适用于类,还适用于方法。如果一个类负责两个 功能 如果需求变更 导致2不能用了 ,要将类拆分一个类 一个接口原创 2020-12-11 13:08:09 · 441 阅读 · 0 评论 -
设计模式的五大原则(二)
依赖倒置原则优点:可以减少类间的耦合性丶提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险,Spring的 IOC DI 依赖注入也采用了依赖倒置生活中的的依赖倒置原则:例如说:春运都回家,但是回家的地点则不同,那每个人到站不同,但是都会从12306买票回家代码中演示依赖倒置我拿课程去举例子:接下来创建一个接口ICourse,抽象方法学习课程public interface ICourse { void studyCourse();}有不同的课程,我想学习哪原创 2020-12-11 12:27:52 · 394 阅读 · 0 评论 -
设计模式的五大原则(一)
开闭原则生活中的开闭原则代码演示开闭原则开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式五项原则中定义最模糊的一个了,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。以前,如果有人告诉我“你进行设计的时候一定要遵守开闭原则”,我会觉的他什么都没说,但貌似又什么都说了。因为开闭原则抽象。生活中的开闭原则例如说:公司规定每天工作8小时,这是闭规则但是弹性工作制,只需要遵守每天工作八小时即可,这么说虽原创 2020-12-11 10:38:11 · 574 阅读 · 6 评论