自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 设计模式七大原则

文章目录设计模式的目的设计模式的七大原则单一职责原则接口隔离原则依赖倒置原则里氏替换原则开闭原则迪米特法则合成复用原则设计原则核心思想设计模式的目的代码重用性 (相同功能的代码,不用多次编写)可读性 (编程规范性, 便于其他程序员的阅读和理解)可扩展性 (当需要增加新的功能时,非常方便称为可维护)可靠性 (当我们增加新的功能后,对原来没有影响)高内聚,低耦合设计模式的七大原则...

2020-01-16 16:12:52 201

原创 ActiveMQ 笔记

文章目录JMSJMS对象模型JMS消息模型ActiveMQ 特性ActiveMQ 支持的协议ActiveMQ 常用传输方式和配置TCPJMSJava消息服务 (Java Message Service,即JMS)应用程序接口是一个 Java 平台中关于面向消息中间件 (MOM) 的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 ...

2020-01-10 10:12:10 175

原创 消息中间件设计思路

文章目录五大核心组成协议AMQPMQTTOpenMessage协议Kafka协议持久化消息分发高可用主从共享主从同步多主集群同步部署多主集群转发部署模式Master-Slave 和 Broker-Cluster 的组合高可靠五大核心组成协议持久化机制消息分发机制高可用设计高可靠设计协议三要素语法语义时序(同步)消息中间件常见协议:OpenWire、AMQP、MQTT...

2020-01-09 11:14:04 590

原创 读书笔记——微服务:从设计到部署

目录第一章——微服务简介走向单体地狱微服务——解决复杂问题微服务的优点微服务的缺点第二章——API网关第一章——微服务简介走向单体地狱应用程序变得过于庞大,难以正确修复 bug 和实现新功能复杂的单体应用阻碍了持续部署任何一个模块的 bug 影响到了整个应用的可靠性采用新技术和框架很困难总结一下:您有个成功的关键业务应用程序,它已经发展成为只有少数开发人员(如果有的话)能够理解...

2020-01-09 10:10:28 215

原创 分布式系统课程小记

分布式系统课程总结WelcomeWhat is a Distributed System?Three CharacteristicsContentsWhat Distributed Systems Are, and Why They ExistRead ReplicationShardingConsistent Hashing一个强一致性的公式CAP TheoremDistributed Tran...

2019-11-11 20:08:41 354

原创 【树状数组】LeetCode 307. Range Sum Query - Mutable

问题的提出有一个数组 nums[0 . . . N-1],我们希望能提供如下两个功能:功能1:求出前 i 个元素的和 sum功能2:改变某个元素的值,即nums[i] = x请参考 LeetCode 307. Range Sum Query - Mutable一般情况下,功能1的时间复杂度为O(N),功能2的时间复杂度为O(1)。如果要改进功能1时间复杂度,我们可以依赖一个前缀和数...

2019-11-01 21:32:10 119

原创 【设计模式】抽象工厂模式

简介抽象工厂模式是对工厂方法模式的扩展。工厂方法模式里,每个工厂只能创建一个对应的商品。抽象工厂模式里,工厂的接口里是一系列创造抽象产品的方法,而不再是一个,抽象产品也不再是一个了,而是一系列相关的产品。例子假设有两个生产产商 Factory1(联想) 和 Factory2(华硕),这两个厂商都会生产商品 ProductA(电脑) 和 Product B(鼠标)。但两个产商生产的电脑和鼠标又...

2019-10-29 22:02:21 128

原创 【设计模式】工厂方法模式

简介工厂方法模式主要弥补了简单工厂模式的缺陷。工厂方法模式定义了一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,仅负责具体工厂子类必须实现的接口。这样一来,工厂方法模式就满足了开闭原则。例子有两个产品类,ProductA 和 ProductB,都实现了产品的接口 IProduct。对应了两个工厂类,FactoryA 和 FactoryB,分别负责...

2019-10-29 20:43:17 86

原创 【设计模式】简单工厂模式

简介简单工厂模式,又叫做静态工厂方法模式。由一个静态的工厂决定创建出哪一种产品类的实例。例子假设有两个产品, productA 和 productB。我们在 Test 类中并不直接实例化这两个对象,而是先创建一个静态工厂,再用这个工厂创建相应的 product。总的类关系如下图所示:可以看出,Test 类只与 Factory 和 产品的接口 IProduct 关联。具体的代码如下:...

2019-10-29 20:11:38 72

原创 LeetCode 1240. Tiling a Rectangle with the Fewest Squares

先说说一个 cheat 程序周赛的时候第一个思路就是 dp… 直到看到了 Example 3,发现不能用 dp。。但看了看 m 和 n 的边界条件,感觉 Example 3 应该是唯一的一个 special case, 就直接写了 dp, 最后竟然真的就 Accepted 了。。。思路很简单,就直接贴代码了class Solution { public int tilingRecta...

2019-10-27 16:06:39 1170 2

原创 LeetCode 1239. Maximum Length of a Concatenated String with Unique Characters

思路这道题维护一个集合 Set,从索引0开始遍历,每次遍历判断集合里的每个 String 和当前的字符串 arr[i] 能否组成新的无重复字符的字符串,若能,添加到一个临时集合中。每一次遍历后,要将这个临时集合添加到总集合 Set 中,并把当前字符串 arr[i] 也添加到 Set 中,以便下一次的遍历。一些细节位图为了简单表示两个字符串是否有重复,考虑到只有小写字母,我们用一个 int ...

2019-10-27 15:21:20 493

原创 LeetCode 1238. Circular Permutation in Binary Representation

思路题目要求给出任意一种全排列数组。我们可以设计一种算法,每次改变一个比特位,从而生成一个新的数。这个具体的生成算法就是,从最后一位尝试改变,如果改变后的数之前遍历到了,则撤回改变,并尝试下一个数。而其中判决生成的数之前是否已经遍历过了,需要一个 HashMap 记录,这里我们直接用 count 数组记录就行。 public int next(int a, int[] count) {...

2019-10-27 15:06:11 167

转载 【设计模式】模板方法模式

思路父类(抽象类)中定义处理流程的框架(模板方法)和模板中需要的方法(基本方法),子类(具体类)中实现父类的基本方法。例子煮咖啡有四个步骤public class Coffee { void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); ...

2019-10-26 11:30:35 118

原创 LeetCode 1231. Divide Chocolate

这道题一开始没啥思路啊。。硬着头皮写了个递归最后不出意外的超时了。。最后看了解答,发现特别简单,直接二分法。。。二分法对结果进行二分,最小值为0,最大值为平均数。每次二分判断中间值满不满足条件,最后就得到了答案。。。。能用这种方法的关键点在于判断一个值是不是满足特别简单。所以,一旦做过类似的题,应该马上就会想到了。class Solution { public int max...

2019-10-20 14:30:03 872 1

原创 LeetCode 1230. Toss Strange Coins

一开始觉得是计算出一个数学公式。。但肯定不可能那方法肯定是 dp 了。DPdp 数组是一个二维数组,两个坐标分别代表次数和当前是第几个硬币。这一点先想想用递归怎么做,再寻找递归中的关键参数,转化成 dp 的坐标即可。最后要的到结果是 dp[target][N-1]。已知项为 dp 第 0 列的所有项。即 double[][] dp = new double[target+...

2019-10-20 14:25:15 1047 2

原创 LeetCode 1234. Replace the Substring for Balanced String

最开始把题看错了,注意题目要求返回的是最小子串的长度,而不是要修改的次数。。。思路这道题基本的思路是滑动窗口。首先统计每个字符出现的次数,之后相加得到总和,总和除以 4 得到每个字符应该出现的次数。用双指针 left 和 right ,开始都指向 0。right 开始向右移动,直到满足条件。然后 left 向右移动,直到不满足条件。然后 right 又继续向右移动,知道满足条件…… 这样...

2019-10-20 14:16:08 152

原创 LeetCode 1235. Maximum Profit in Job Scheduling

初始想法这道题第一反应是用 dp 来做。首先是创建一个 class Job,里面有三个属性 start,end,profit。class Job{ int start; int end; int profit; public Job(int start, int end, int profit) { this.start = start;...

2019-10-20 14:06:15 750

原创 第一条博客 Hello World

第一个博客——一点想法想法主要技术方向2021秋招加油啊!想法也该开一个博客记录自己的学习历程了。同时准备校招,为之后的复习做好准备。主要技术方向Java 后台开发。包括基本的 Java 语法、并发、JVM、操作系统、计算机网络、SSM 框架的总结。2021秋招加油啊!...

2019-10-16 21:32:52 87

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除