- 博客(205)
- 资源 (3)
- 收藏
- 关注
原创 Kafka源码解析-生产者
平时使用kafka的过程中,总觉得生产者发送消息是简单的,这是因为在工作中只需要确认生产者和消费者发送和接收消息的内容,就可以完成我们的工作,但是实际上不是的,我们需要考虑不同业务场景的适用性,调整我们的配置方案。
2023-04-01 20:38:19
1124
原创 单机Docker部署应用Kraft模式的Kafka集群
以ubuntu系统为基础,封装自己的镜像,使用单台主机模拟三台主机部署kraft模式的Kafka集群。
2023-01-02 15:45:08
3299
1
原创 Kotlin: warnings found and -Werror specified
1、问题描述Kotlin: warnings found and -Werror specified2、解决方案
2021-12-15 16:32:09
2483
原创 设计模式之罪 2-17 门面模式
门面模式一、定义三、备忘录模式的应用1. 备忘录模式的优缺点2. 备忘录模式的使用场景3. 备忘录模式的注意事项门面模式太简单了,也太常见了,举个例子。现在有一个场景是写信,有四步:写信、写信封、装信和邮寄。为完成这个任务,我们先写一个接口ILetterProcess,描述4个过程:public interface ILetterProcess { //写信 void writeContext(String context); //写信封,地址 void fillEnv
2021-09-02 23:56:39
199
原创 设计模式之罪 2-18 备忘录模式
备忘录模式一、定义二、通用代码1. 发起人角色2. 备忘录角色3. 备忘录管理员角色6. 场景类三、实际例子1. 抽象元素2. 具体元素3. 访问者接口4. 访问者实现5. 场景类四、访问者模式的应用1. 访问模式的优点和缺点2. 访问者模式的使用场景3. 最佳实践一、定义备忘录模式(Memento Pattern)的定义如下:Without violating encapsulation, capture and externalize an object’s internal state so t
2021-09-02 22:39:43
354
原创 设计模式之罪 2-19 访问者模式
访问者模式一、定义二、通用代码1. 抽象元素2. 具体元素3. 抽象访问者4. 具体访问者5. 结构对象6. 场景类三、实际例子1. 抽象元素2. 具体元素3. 访问者接口4. 访问者实现5. 场景类四、访问者模式的应用1. 访问模式的优点和缺点2. 访问者模式的使用场景3. 最佳实践一、定义访问者模式(Visitor Pattern)的定义如下:Represent an operation to be performed on the element of an object structure.
2021-08-30 09:26:32
319
原创 设计模式之罪 2-20 状态模式
状态模式一、定义二、通用代码1. 抽象状态角色2. 具体状态角色3. 环境角色4. 客户类三、实际例子1. 抽象状态角色2. 具体状态角色3. 环境角色4. 客户类四、状态模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践一、定义解释器模式的定义如下:Allow an object to alter its behavior when its internal state changes. the object will appear to change its class.(
2021-08-26 08:34:04
203
原创 设计模式之罪 2-21 解释器模式
解释器模式一、定义二、通用代码1. 抽象表达式2. 终结符表达式3. 非终结符表达式4. 客户类三、桥梁模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践一、定义解释器模式(Interpreter Pattern)的定义如下:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret se
2021-08-24 09:23:24
287
原创 设计模式之罪 2-22 享元模式
享元模式一、定义二、通用代码1. 抽象享元角色2. 具体享元角色3. 享元工厂三、桥梁模式的应用1. 桥梁模式的优点和缺点2. 桥梁模式的使用场景3. 最佳实践一、定义享元模式,即“池技术”的实现。其定义如下:Use sharing to support large number of fine-grained objects efficiently使用共享对象可以有效地支持大量的细粒度的对象#mermaid-svg-1dAqPqkEWX2wS5sD .label{font-family:'tre
2021-08-22 14:43:08
182
原创 设计模式之罪 2-23 桥梁模式
桥梁模式一、定义二、通用代码1. 实现化角色2. 具体实现化角色3. 抽象化角色4. 具体抽象化角色5. 场景类三、桥梁模式的应用1. 桥梁模式的优点2. 桥梁模式的使用场景3. 最佳实践一、定义桥梁模式,也叫桥接模式。其定义如下:Decouple an abstract from its implementation so that the two can vary independently将抽象和实现解耦,使得两者可以独立的变化#mermaid-svg-nUUBD8RjLvfrdb8e .l
2021-08-21 20:45:37
332
原创 设计模式1-6 开闭原则
开闭原则一、定义一、定义开闭原则:对扩展开放,对修改关闭。英文解释:Software entities like classes, modules and functions should be open for extension but closed for modifications.(软件实体如类、模块和函数应该对扩展开放,对修改关闭)是其他5种原则的精神领袖。...
2021-08-21 09:57:30
144
原创 设计模式1-5迪米特法则
迪米特法则一、定义二、举例只和朋友交流朋友之间也有距离三、优点四、最佳实践一、定义迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP):一个对象应该对其他对象有最少的了解。英文解释:Only talk to your immediate friends.(只与直接的朋友通信)二、举例只和朋友交流情景:老师让体育委员清点全班女生人数,类图如下:很明显,类Teacher依赖了非朋友类——Girl类,那么问题来了什么是朋
2021-08-15 22:39:04
188
原创 设计模式1-4 接口隔离原则
接口隔离原则一、定义二、举例三、优点四、最佳实践一、定义接口隔离原则:接口尽量细化,同时接口中的方法尽量少。英文定义1:Clients should not be forced to depend upon interfaces that they don’t use.(客户端不应该依赖它不需要的接口)英文定义1:The dependency of one class to another one should depend on the smallest possible interface.(类
2021-08-15 21:39:47
227
原创 设计模式1-3 依赖倒置原则
依赖倒置原则一、定义二、举例三、优点四、最佳实践一、定义依赖倒置原则(Dependence Inversion Principle, DIP):依赖于抽象,不依赖于具体,即面向接口编程——OOD(Object-Oriented Design,面向对象设计)。英文原始定义:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions shou
2021-08-15 16:15:55
248
原创 设计模式1-2 里氏替换原则
里氏替换原则一、定义二、举例三、里氏替换原则的优点四、最佳实践一、定义里氏代换原则(Liskov Substitution Principle, LSP):只要父类能出现的地方子类就可以出现,并且替换为子类不会发生任何错误或异常。英文定义1:If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of
2021-08-15 11:49:17
174
原创 设计模式1-1 单一职责原则
单一职责原则一、定义二、举例三、单一职责的优点四、最佳实践一、定义单一职责(Single Responsibility Principle, SRP):应该有且仅有一个原因引起类的变更。英文原话解释:There should never be more than one reason for a class to change.PS:定义中的类包括接口、类和方法。二、举例下面举出一个错误样例:应该把用户信息抽取成一个BO(Business Object, 业务对象),把行为抽取成一个Biz(
2021-08-14 22:19:34
164
原创 Spring Boot Actuator 使用介绍
Spring Boot Actuator 使用介绍初识 Actuator原生端点应用配置类度量指标类操作控制类近期在看《Spring Cloud 微服务实战》,由于时间过去几年,对于Actuator监控端点的介绍过时,故作此文更新一下。Spring Boot 版本:2.5.3初识 Actuator在现有的Spring Boot应用中引入该模块非常简单,只需要在pom.xml的dependencies节点中,新增spring-boot-starter-actuator的依赖即可,具体如下:<
2021-08-12 19:13:42
2823
1
原创 一图回答面试题:Spring IOC容器构建的过程
前言:这个题很常见,但网上要么长篇冗余,晦涩难懂,要么寥寥几段,不知所云,故出此图,一图以蔽之,全文背之即可。思路:Spring IOC的构建过程主要调用 AbstractApplicationContext.refresh()方法,该方法refresh()由12个子方法组成,列出如下:...
2021-04-24 17:22:19
473
原创 Redis SET 命令手册
Redis SET 命令手册1. 可选项2. 返回值3. 历史变化4. 案例5. 模式从Redis 1.0.0 起可用时间复杂度:O(1)设置 key 以保存字符串 value。如果 key 已经保存了一个 value,则无论其类型如何,都会覆盖该值。成功的 SET 操作将丢弃与该键任何以前的时间关联的内容。命令格式:SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEP
2021-04-22 18:34:27
779
原创 计算机类学术论文常见出版社对应关系
计算机类学术论文常见出版社对应关系有问题、错误请留言,会持续更新。序号出版社简称出版社全称出版地国家1AAAIASSOC ADVANCEMENT ARTIFICIAL INTELLIGENCEPalo Alto, CAUSA2NIPSNEURAL INFORMATION PROCESSING SYSTEMSLa Jolla, CaliforniaUSA3ACLASSOC COMPUTATIONAL LINGUISTICSStroudsbur
2021-01-07 17:01:02
4769
5
原创 Redis面试:分布式锁
分布式锁基本用法解决超时问题分布式锁面试指数:5/5问题场景:例如一个简单的用户操作,一个线程去修改用户的状态,首先从数据库中读出用户的状态,然后在内存中进行修改,修改完成后,再存回去。在单线程中,这个操作没有问题,但是在多线程中,由于读取、修改、存 这是三个操作,不是原子操作,所以在多线程中,这样会出问题。对于这种问题,我们可以使用分布式锁来限制程序的并发执行。基本用法分布式锁实现的思路很简单,就是进来一个线程先占位,当别的线程进来操作时,发现已经有人占位了,就会放弃或者稍后再试。在
2020-12-03 17:22:37
524
2
原创 matlab生成eps格式图片有空白部分的问题
matlab生成eps格式图片有空白部分的问题问题的解决思路方法过程结果展示问题背景:最近需要写一篇英文论文,论文格式要求使eps格式的矢量图片,而生成就如下图所示,存在大量空白。问题的解决思路思路无非两种:修改matlab生成代码:我没有使用,因为有些代码是别人写的,debug代码的代价太大。剪裁生成后的图片:简单、暴力但是有效!方法过程(1)下载 GhostScript 软件链接: GhostScript9.50(32位)下载地址.提示:即使是 64 位电脑,也是下载这个 3
2020-11-21 13:27:54
2154
原创 Springboot开心学习(第十二天)——Spring Boot 安全管理
文章目录1. Spring Security初体验2. 手工配置用户名密码2.1 配置文件配置2.2 配置类1. Spring Security初体验创建新的项目,依赖:创建一个测试的controllerHelloControllerpackage org.sky.security;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.
2020-08-02 23:41:07
264
原创 Springboot开心学习(第十一天)——Spring Boot 缓存
文章目录1. Spring Cache整合Redis1.1 Key值理解1.2 删除数据库数据时删除缓存数据1.3 修改数据库数据时修改缓存数据1.4 简化cacheNames2. Spring Cache 整合 Ehcache1. Spring Cache整合Redis创建项目,依赖:配置参数Userpackage org.sky.cacheredis;import java.io.Serializable;/** * @author sky * @date 2020/8/1 2
2020-08-02 00:04:42
300
原创 Springboot开心学习(第十一天)——开发者工具与单元测试
文章目录1. Devtool使用1. Devtool使用创建新的项目,依赖如下:写一个测试:@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello(){ return "hello devtool"; }}运行后:修改返回值:@RestControllerpublic class HelloController {
2020-08-01 21:26:47
185
原创 leetcode387. 字符串中的第一个唯一字符
描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示: 你可以假定该字符串只包含小写字母。思路Hash代码public class FirstUniqueCharacterInAString387 { public int firstUniqChar(String s) { int[] array = new int[26];
2020-08-01 09:25:50
155
原创 Springboot开心学习(第十天)——构建 REST 服务
文章目录1. 搭建JPA环境2. Spring Boot中默认提供的增删改查2.1 查询2.2 分页查询2.3 新增2.4 修改2.5 删除3. Spring Boot中自定义查询方法4. REST配置CORS5. 自定义REST配置5.1 XML文件配置5.2 Java类配置6. MongoDB实现REST1. 搭建JPA环境创建新的下项目,依赖:修改pom.xml整体结构仅修改3个文件application.propertiesspring.datasource.type=com.al
2020-07-31 20:04:40
300
原创 Springboot开心学习(第十天)——Springboot整合NoSQL
文章目录1. Springboot整合Redis1. Springboot整合Redis前提:提前地洞redis。创建新的项目,依赖如下:仅设置两个文件配置application.propertiesspring.redis.database=0spring.redis.host=127.0.0.1spring.redis.port=6379HelloControllerpackage org.sky.redis;import org.springframework.bean
2020-07-31 16:41:42
198
原创 leetcode面试题 08.03. 魔术索引
描述魔术索引。 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0示例2: 输入:nums = [1, 1, 1] 输出:1提示:nums长度在[1, 1000000]之间思路遍历代码class Soluti
2020-07-31 08:46:48
279
原创 Springboot开心学习(第九天)
文章目录1. SpringBoot整合Spring Data JPA1. SpringBoot整合Spring Data JPA
2020-07-30 18:52:24
2130
原创 Springboot开心学习(第八天)——Springboot整合持久层技术
文章目录1. Springboot整合JdbcTemplate1.1 新增操作1.2 更新操作1.3 删除操作1.4 查询操作1.4 查询操作(简便)2. Springboot整合JdbcTemplate 多数据源3. Springboot整合Mybatis3.1 xml文件与mapper放在一起3.2 xml文件放在resource下3. Springboot整合Mybatis多数据源1. Springboot整合JdbcTemplate创建新的项目,依赖如下:pom.xml修改这两个地方整体
2020-07-29 23:19:07
216
原创 leetcode538. 把二叉搜索树转换为累加树
题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 13思路通过(右子树->根->左子树)进行遍历
2020-07-29 07:57:38
483
原创 Springboot开心学习(第七天)
文章目录1. Springboot通过CORS实现跨域1.1 模拟问题1.2 单个解决1.3 配置类解决2. SpringBoot加载XML配置3. SpringBoot中注册拦截器4. CommandLineRunner实现系统启动任务5. ApplicationRunner实现系统启动任务6. SpringBoot整合Web基础组件7. SpringBoot路径映射8. SpringBoot使用类型转换器9. SpringBoot整合AOP10. SpringBoot自定义欢迎页面11. SpringB
2020-07-28 23:06:42
209
原创 leetcode543. 二叉树的直径
题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。思路一开始想成图论中的解法,即从任意两个点出发找最长的路径,但想想用在这
2020-07-28 09:33:52
365
原创 Springboot开心学习(第六天)
文章目录1. @ControllerAdvice1.1 三种用法1.2 处理全局异常1. @ControllerAdvice1.1 三种用法处理全局异常预设全局数据请求参数预处理1.2 处理全局异常依然使用文件上传的工程,将上传文件的大小限制为1KBspring.servlet.multipart.max-file-size=1KB启动,上传:抛出异常。解决方案:创建MyCustomException.javapackage org.sky.fileupload;imp
2020-07-27 23:02:49
382
原创 Springboot开心学习(第五天)
文章目录1. 整合Gson2. 整合Fastjson3. 静态资源访问3.1 系统默认位置3.2 自定义静态资源位置3.2.1 修改配置文件3.2.2 Java配置类4. Spring Boot文件上传1. 整合Gson还是在上一个创建的工程里修改pom.xml把json包排除出去,在把gson包依赖添加进来<dependency> <groupId>org.springframework.boot</groupId> <artifactId
2020-07-26 23:34:32
293
原创 Springboot开心学习(第四天)
文章目录1. FreeMarker命令1.1 条件判断 if1.1.1 测试1.2 switch、case、default、break1.2.1 测试1.3 list、break1.3.1 实验1.4 include1.4.1 实验1.5 import1.6 noparse1.6.1 实验1.7 escape2 整合Thymeleaf3. 整合JSP4. 返回Json数据4.2 情景1:有日期格式化需求1. FreeMarker命令1.1 条件判断 if这是一个典型的分支控制命令,该指令的作用完全类似
2020-07-26 07:57:54
457
Hadoop分析气象数据完整版代码
2020-06-05
Sky管理系统及数据库文件.zip
2019-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人