自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ThinkWon的博客

敏于观察,勤于思考,善于综合,勇于创新。

  • 博客(315)
  • 收藏
  • 关注

转载 全文搜索引擎 ElasticSearch 还是 Solr?

最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强,导致 Solr 服务一出问题,我们的项目也基本瘫痪,因为所有的依赖查询都无结果数据了。所以考虑开发一个适配层,如果 Solr 搜索出问题,自动切换到新的搜索--ES。...

2022-08-29 23:54:09 587

原创 自定义Maven Archetype模板工程

`Archetype`是一个Maven项目的模板工具包,它定义了一类项目的基本架构。`Archetype`为开发人员提供了创建Maven项目的模板,同时它也可以根据已有的Maven项目生成参数化的模板。

2022-06-30 22:56:29 567

转载 高考的意义是什么

十载寒窗苦读无人问,一朝金榜题名天下知。

2022-06-25 09:39:21 801 7

原创 怎样提高报表呈现的性能

怎样提高报表呈现的性能文章目录怎样提高报表呈现的性能报表性能问题出在什么环节?数据准备的问题和优化数据传输的问题和优化其他环节的问题和优化报表内计算和呈现大报表总结润乾报表资料报表的性能很重要,是一个总被谈及的问题,跑的慢的报表用户体验恶劣,无法忍受。解决这些慢的性能问题,也成了项目方和工程师头疼的事情。一出状况,就得安排技术好的,能力强的工程师去救火,本来利润就薄,还得不断的追加人工成本,而且工程师有时候也无能为力,并不是所有的性能问题都能靠程序员能力解决的这个总会让人头疼的问题没办法解决吗?没有好

2022-05-31 09:00:00 8254 5

原创 写着简单跑得又快的数据库语言 SPL

文章目录数据库语言的目标SQL为什么不行SPL为什么能行游离记录有序性离散性与集合化分组理解聚合理解有序支持的高性能SPL资料数据库语言的目标要说清这个目标,先要理解数据库是做什么的。数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的OLAP和OLTP,数据库的存储都是为这两件事服务的,单纯的存储并不是数据库的目标。我们知道,SQL是目前数据库的主流语言。那么,用SQL做这两件事是不是很方便呢?事务类功能主要解决数据

2022-05-17 08:58:07 2915 6

转载 【思维升级】这几个学习方法,打破你的思维惯性,带你走向高效人生

文章目录A、如何做好计划1、如何做好长期计划和总结?2、如何做好日计划:待办日程清单,工作从容不迫的武器B、如何让学习更有效率1、极其功利的少读书2、极其功利的配置资源3、不要从第一页开始读书4、学习金字塔5、费曼技巧:能有效提高你的认知效率的方法a 选择一个你想理解的概念b 假装你在教某人c 如果遇到问题,就停下来翻书d 简化你的语言6、输出倒逼输入总结作者:我是米粒啊链接:https://www.jianshu.com/p/33b1c5d0fbca来源:简书著作权归作者所有。商业转载请联系作者获

2022-05-12 22:40:24 756

原创 常见分布式ID生成方案

文章目录一、为什么要用分布式ID1、什么是分布式ID2、那么分布式ID需要满足哪些条件二、 分布式ID有哪些生成方式1、基于UUID2、基于数据库自增ID3、基于数据库集群模式4、基于数据库的号段模式5、基于Redis模式6、基于雪花算法(Snowflake)模式7、百度(uid-generator)8、美团(Leaf)号段模式snowflake模式9、滴滴(Tinyid)Http方式接入Java客户端方式接入三、总结一、为什么要用分布式ID在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式

2022-04-03 09:29:14 3818 4

原创 Spring 事件发布监听源码解析

文章目录初始化事件发布器流程注册事件监听器流程容器事件发布流程总结Spring 事件监听机制离不开容器 IOC 特性提供的支持,比如容器会自动创建事件发布器,自动识别用户注册的监听器并进行管理,在特定的事件发布后会找到对应的事件监听器并对其监听方法进行回调。Spring 帮助用户屏蔽了关于事件监听机制背后的很多细节,使用户可以专注于业务层面进行自定义事件开发。然而我们还是忍不住对其背后的实现原理进行一番探讨,比如:事件发布器ApplicationEventMulticaster是何时被初始化的,初始化

2022-04-03 09:26:19 867

原创 Java 8 的异步编程利器 CompletableFuture 详解

文章目录一个例子回顾 Future一个例子走进CompletableFutureCompletableFuture使用场景创建异步任务supplyAsync方法runAsync方法任务异步回调1. thenRun/thenRunAsync2.thenAccept/thenAcceptAsync3. thenApply/thenApplyAsync4. exceptionally5. whenComplete方法6. handle方法多个任务组合处理AND组合关系OR组合的关系AllOfAnyOfthenCo

2022-03-09 23:32:24 2002 4

原创 IDEA远程调试Java代码

文章目录1 前言2 远程 Debug 调试原理2.1 理论基础2.2 远程调试分类3 主动连接调试3.1 远程服务中开启 Debug 服务3.1.1 对于 SpringBoot3.1.2 对于 Tomcat3.2 IDEA 中指定 Debug 服务器3.3 远程服务器防火墙端口放行4 被动连接调试4.1 对于 Tomcat4.2 对于 SpringBoot5 开始调试6 关闭调试1 前言当我们的代码在线上/测试环境运行出现异常需要进行问题定位时,之前的传统做法是:查看异常日志,根据日志定位到出错代码,然

2022-03-08 23:12:44 2770 1

原创 Docker安装ElasticSearch和Kibana

文章目录1. 安装docker2. 拉取elasticsearch镜像3. 启动elasticsearch3.1 目录结构4. 验证elasticsearch是否启动成功5. 插件安装5.1 安装IK分词器5.2 分词器使用验证6. kibana安装6.1 docker安装kibana6.2 启动kibana7、elasticsearch-head安装8、常见问题处理注意:本方案没有进行数据持久化,切勿用于生产环境1. 安装dockerdocker安装可参考此博客 Docker 从入门到实践系列二 -

2022-02-07 14:47:47 7534 1

原创 企业级spring-boot案例-Spring Boot 上传文件(图片)

文章目录1. 添加依赖2. Spring配置3. 添加Knife4j配置类4. 添加枚举与实体类4.1 响应编码枚举4.2 上传文件信息4.3 统一返回前端的响应对象5. 文件上传接口与实现类5.1 文件上传接口5.2 文件上传接口实现类6. 初始化文件存储空间7. 文件上传控制器8. 启动类企业级spring-boot案例系列文章上线了,涵盖了大部分企业级的spring-boot使用场景,会不定期进行更新,企业级spring-boot案例源码地址:https://gitee.com/JourWon/sp

2022-01-09 09:38:38 1942 4

原创 企业级spring-boot案例-自定义Spring Boot Starter

文章目录1. 未使用Spring Boot Starter前的情况2. Spring Boot Starter简介2.1 什么是Spring Boot Starter(启动器)2.2 Starter 模块整体结构2.3 Spring 官方提供的 Starter 和 Starter 命名规范3. 自定义Spring Boot Starter3.1 根据 starter 命名规范创建一个 spring boot 项目3.2 在 pom.xml 文件中引入依赖3.3 编写`ConfigInfo.java`、`Co

2022-01-03 11:19:33 5695 16

原创 企业级spring-boot案例-Spring事件发布与监听

Spring事件发布与监听

2021-12-09 00:12:03 1586

翻译 企业级spring-boot案例-Spring Boot 启动时的运行方法

企业级spring-boot案例-Spring Boot 启动时的运行方法

2021-12-04 17:37:19 1190 2

转载 如何阅读程序源代码?

文章目录1 我为什么阅读源码2 阅读源码的好处3 阅读源码的困难4 阅读源码的步骤5 阅读源码的方法1 我为什么阅读源码我开始阅读源码是在进行互联网开发的第八九个年头。在此之前,我做过校园网站,接过网站开发的私活,进行过理论算法相关的研究,也设计开发了许多系统。我对我做过的系统都比较有信心,它们也都运行的不错,但是一个疑问却在我的心头逐渐浮现:我的架构和世界最优良架构之间的差距到底有多大?阅读开源项目的源码能给我答案。许多优秀的开源项目历经数千开发者的数万次提交,被数亿用户使用。这些项目从可扩展性、

2021-11-30 00:28:21 2265 1

原创 Java面试总结(2021优化版)发布&1024程序员节

文章目录Java面试总结(2021优化版)文章汇总关于公众号1024程序员节Java面试总结(2021优化版)文章汇总Java面试总结(2021优化版)针对读者反馈的一些错误问题进行了修改,同时删除了一些不常见的面试题,添加了一些高频面试题,是整个【Java面试总结】系列更加的精简,更加贴近于实战,2021版面试总结最新发布在个人微信公众号【技术人成长之路】,欢迎大家关注阅读。【技术人成长之路】,助力技术人成长!更多精彩文章第一时间在公众号发布哦!序号内容链接地址1Java

2021-10-24 00:39:30 70849 25

原创 Docker 从入门到实践系列五 - Dockerfile文件

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1. FROM2. MAINTAINER3. RUN4. CMD5. COPY6. ENV7. ADD8. ENTRYPOINT9. VOLUME10. WORKDIR11. EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfile 执行流程小结什么是DockerFile文件DockerFi

2021-09-12 00:07:57 1603

原创 Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose

文章目录Compose简介概念组成安装与卸载二进制包方式安装测试卸载docker-compose.yml 文件详解概念案例versionservicesimagebuildcontextdockerfilecontainer_namedepends_onportsexposerestartenvironmentenv_filecommandvolumesnetwork_modenetworksaliasesvolumesnetworksCompose 常用命令helpconfigpulluplogspsru

2021-08-08 11:09:03 1833 2

原创 麦肯锡极简工作法-读书笔记

文章目录一、如何快速而正确地分析问题1、从零开始思考2、以事实为基础进行分析麦肯锡对事实重视的原因3、逻辑树分析法逻辑树分析法优点4、麦肯锡的新创公司分析法二、如何收集信息并进行高效沟通1、收集信息,应有序、高效和准确麦肯锡收集信息的基本流程高效收集信息的技巧高效记笔记的方法2、通过客户访谈,收集有效信息访谈的基本流程成功访谈的7个策略3、运用“30秒电梯法则”,进行简洁、有效的沟通3个主要用法3个要求4、运用“知、感、行”进行高效沟通“知、感、行”训练方法三、如何提高逻辑思维能力1、逻辑思考:分析、解决问

2021-07-10 17:40:23 4131 3

原创 Docker 从入门到实践系列三 - Docker 常用命令

文章目录帮助命令镜像命令镜像检索镜像下载镜像列表镜像删除容器命令搜索镜像下载镜像运行容器端口映射启动做端口映射的容器端口映射格式查看端口映射小结查看容器停止容器启动容器重启容器删除容器其他重要命令查看容器日志连接到正在运行容器在运行的容器中执行命令查看容器中正在运行进程查看容器内部细节容器和宿主机互相拷贝文件更多操作命令常用命令小结帮助命令# 查看docker版本docker version# 查看docker基本信息docker info# 查看具体docker命令的解释docker --h

2021-06-06 22:44:19 4532 8

原创 Docker 从入门到实践系列二 - Docker 安装

文章目录查看 centos 版本升级软件包及内核(可选)卸载老版本安装依赖包设置阿里云镜像安装 docker启动 docker将 docker 服务设为开机启动停止 docker检验安装是否成功查看 centos 版本Docker 要求 CentOS 系统的内核版本高于 3.10。通过命令:uname -r查看当前 centos 版本,如版本不符,需升级系统版本。升级软件包及内核(可选)yum -y update卸载老版本yum remove docker docker-clien

2021-06-06 22:40:55 1957 1

转载 MyBatis 源码分析 - 插件机制

文章目录1.简介2. 插件机制原理3. 源码分析3.1 植入插件逻辑3.2 执行插件逻辑4. 实现一个分页插件5. 总结1.简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能。开发 MyBatis

2021-05-14 23:20:13 1447

转载 MyBatis 源码分析 - 缓存原理

文章目录1.简介2.缓存类介绍2.1 PerpetualCache2.2 LruCache2.3 BlockingCache3. CacheKey4.一级缓存5.二级缓存6.总结参考1.简介在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力。作为一个重要的组件,MyBatis 自然也在内部提供了相应的支持。通过在框架层面增加缓存功能,可减轻数据库的压力,同时又可以提升查询速度,可谓一举两得。MyBatis

2021-05-14 23:18:01 1760

原创 人性的弱点-读书笔记

文章目录第一篇、人际关系的基本技巧1、不要批评、指责或抱怨他人2、真诚地赞赏和肯定他人的优点3、重视他人的需求第二篇、赢得他人喜爱的六个方式1、真诚地关心他人2、经常微笑3、名字是任何语言中最甜美、最重要的声音4、学会倾听,鼓励他人多谈他们自己的事情5、与他人谈论他们感兴趣的话题6、 衷心让他人觉得他很重要第三篇、如何让他人想你之所想1、避免与他人辩论2、对他人的意见表示尊重,千万别说你错了3、如果错了,当即承认错误4、友善地对待他人5、首先让别人说“是,是的”6、让对方多说话7、让别人觉得那是他们的主意8

2021-05-14 23:14:10 4297 15

转载 MyBatis 源码分析 - 内置数据源

文章目录1.简介2.内置数据源初始化过程3.UnpooledDataSource3.1 初始化数据库驱动3.2 获取数据库连接4.PooledDataSource4.1 辅助类介绍4.2 获取连接4.3 回收连接4.4 小节5.总结1.简介本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑。搞懂这些数据源的实现,可使大家对数据源有更深入的认识。同时在配置这些数据源时,也会更清楚每种属性的意义和用途。因此,如果大家想知其然,也知其所以然。那么接下来就让我们一起去探索 MyBatis 内置数据源的源

2021-05-01 16:56:53 1023 2

转载 MyBatis 源码分析 - SQL 的执行过程

文章目录* 本文速览1.简介2.SQL 执行过程分析2.1 SQL 执行入口分析2.1.1 为 Mapper 接口创建代理对象2.1.2 执行代理逻辑2.1.2.1 创建 MapperMethod 对象① 创建 SqlCommand 对象② 创建 MethodSignature 对象2.1.2.2 执行 execute 方法2.2 查询语句的执行过程分析2.2.1 selectOne 方法分析2.2.2 获取 BoundSql2.2.2.1 DynamicContext2.2.2.2 解析 SQL 片段2.

2021-04-11 18:08:11 3141 7

转载 MyBatis 源码分析 - 映射文件解析过程

文章目录1.简介2.映射文件解析过程分析2.1 解析映射文件2.1.1 解析 `` 节点2.1.2 解析 `` 节点2.1.3 解析` ` 节点2.1.3.1 解析 `` 和` ` 节点2.1.3.2 解析` 1.简介在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如<cache

2021-04-04 00:07:17 2650 3

原创 如何阅读一本书-读书笔记

文章目录作者介绍本书主要内容第一篇 阅读的层次阅读的活力与艺术阅读的层次基础阅读检视阅读如何做一个自我要求的读者第二篇 阅读的三个层次:分析阅读第一阶段:了解这本书在谈什么第二阶段:作者是如何将内容写出来的第三阶段:评论这本书,批判思考第三篇 阅读不同读物的方法如何阅读实用型的书如何阅读想象文学阅读故事、戏剧与诗歌的一些建议如何阅读历史书如何阅读科学与数学如何阅读社会科学第四篇 阅读的最终目标主题阅读阅读与心智的成长作者介绍莫提默·J·艾德勒(1902-2001)以学者、教育家、编辑人等多重面貌享有盛

2021-04-03 23:12:32 2444 7

原创 VMware Workstation Pro 16搭建CentOS8虚拟机集群

文章目录准备工作安装VMware Workstation Pro 16创建Linux虚拟机设置网络模式NAT(网络地址转换模式)安装CentOS8其他配置将服务器修改为静态IP关闭防火墙更换为阿里云yum源安装jdk搭建集群环境克隆虚拟机调整测试在日常学习、工作当中,我们经常需要用到分布式集群环境,如nacos集群,mysql集群,zookeeper集群,redis集群,大数据集群等,而通常并没有那么多的物理机器可以使用,因此,通过虚拟机搭建一套分布式集群环境以供开发和测试,是一个不错的选择。那今天我们就

2021-03-21 22:59:17 2672 4

原创 CentOS8安装GitLab13.7.2

文章目录卸载gitlab安装依赖库安装gitlab-ce登录gitlabgitlab日常使用文件路径gitlab服务构成gitlab常用命令卸载gitlab注意:如果之前没有安装gitlab可以跳过卸载gitlab步骤,直接进入安装依赖库1、停止gitlab# 停止gitlabgitlab-ctl stop# 查看gitlab状态gitlab-ctl status输出结果,如果都是down说明停止成功2、卸载gitlab(注意这里写的是gitlab-ce)rpm -e gitlab-

2021-03-21 21:30:14 1666 1

原创 CentOS8搭建Nacos1.4.0集群

文章目录序言预备环境准备下载安装包搭建Nacos集群数据库配置在Linux中安装并启动Nacos服务数据库与集群配置修改nacos 启动脚本注册Nacos服务,并设置为开机启动项Nacos单机验证Nacos集群部署配置Nginx负载均衡解压nginx安装第三方的开发包安装与配置nginx将nginx设置为开机启动项负载均衡集群验证序言在生产环境中,一般使用Nacos保证高可用,这里部署三个节点Nacos,通过Nginx负载均衡,服务架构如下图预备环境准备请确保是在环境中安装使用使用Linux系

2021-03-21 21:26:22 1913 3

原创 CentOS8安装Docker

文章目录卸载老版本安装依赖包设置阿里云镜像安装Docker Engine - Community --此命令会安装最新版本(latest)安装低版本Docker查询可安装的Docker版本手动安装container.io安装containerd.io替换冲突的安装包启动与测试卸载老版本yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker

2021-03-21 21:16:47 2488 1

原创 CentOS8安装MySQL8

文章目录检查是否已安装(强力卸载)安装MySQL8.0查看 mysql 是否安装成功设置MySQL服务为开机启动项启动 mysql 服务相关安装目录mysql 登录(不用密码登录)重置 root 密码重新登录(使用新密码)navicat远程连接检查是否已安装(强力卸载)for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;donerm -rf /var/lib/mysql && rm -rf /etc/my.cnf &&amp

2021-03-21 21:11:18 2635

转载 MyBatis 源码分析 - 配置文件解析过程

文章目录* 本文速览1.简介2.配置文件解析过程分析2.1 配置文件解析入口2.2 解析 properties 配置2.3 解析 settings 配置2.3.1 settings 节点的解析过程2.3.2 元信息对象创建过程2.3.2.1 DefaultReflectorFactory 源码分析2.3.2.2 Reflector 源码分析2.3.2.3 PropertyTokenizer 源码分析2.3.3 小结2.4 设置 settings 配置到 Configuration 中2.5 解析 typeA

2021-03-14 23:14:02 2604 3

原创 MyBatis 源码分析 - MyBatis入门

文章目录1.本文速览2.什么是 MyBatis3.为什么要使用 MyBatis3.1 使用 MyBatis 访问数据库3.2 JDBC 和 Spring JDBC 简介3.3 MyBatis 和 Hibernate 比较4.如何使用 MyBatis4.1 在pom.xml添加依赖4.2 在application.yml配置4.3 mapper文件4.4 创建用户表与添加用户数据4.5 创建实体类4.6 新建dto和vo对象4.7 bean转换工具类4.8 用户service接口4.9 用户controlle

2021-03-14 23:09:44 4601 7

原创 Java8新特性-Base64

文章目录Base64 编码由来什么是 Base64 和 Base64 的使用场景什么是 Base64Base64 的使用场景Base64 编码原理Base64 编码过程Base64 解码原理Base64 编码字符串实例Base64 具体实现对字符串进行 Base64 编解码Encoder方式UrlEncoder方式MimeEncoder方式对文件进行 Base64 编解码文件与 Base64 字符串转换工具类文件转 Base64 字符串Base64 字符串转文件Base64 编码由来为什么会有Base6

2021-02-13 00:52:27 4900 9

原创 Java8新特性-Stream

文章目录简介Stream 的特性创建Stream通过集合创建流通过数组创建流通过Stream.of方法创建流创建规律的无限流创建无限流创建空流Stream操作分类中间操作无状态filtermapflapMap有状态distinctsortedsortedreversedthenComparinglimitskipconcat终结操作非短路操作forEachreducecollecttoList,toSet,toSetgroupingBypartitioningBymax、mincountsummarySta

2021-02-12 23:38:15 5891 4

原创 Java8新特性-Optional

文章目录简介Optional源码分析和使用场景属性和构造常用方法get()方法isPresent()方法ifPresent(Consumer<? super T> consumer)方法filter()方法map()方法flatMap()方法orElse()方法orElseGet()方法orElseThrow()方法Optional实战空判断断言使用误区总结在学习Optional之前我们先来看下面的例子。在我们开发过程中,碰到的异常中NullPointerException必然是排行第一的。所

2021-02-11 20:42:02 4507 13

原创 Java8新特性-Lambda表达式

文章目录简介使用Lambda表达式的优缺点基本概念函数式接口接口默认方法嵌套类(Nested Classes)使用Lambda表达式的前提基础语法Lambda表达式的重要特征目标类型与类型推断作用域方法引用静态方法引用指定对象实例方法引用特定类型任意对象方法引用超类方法引用构造器方法引用数组构造器方法引用Java8内置的函数式接口消费型接口供给型接口函数型接口断言型接口简介Lambda表达式(也称闭包),是Java8中最受期待和欢迎的新特性之一。Lambda表达式本质是一个匿名函数,但是它并不是匿名类的

2021-02-08 23:22:03 7933 5

空空如也

空空如也

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

TA关注的人

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