自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 结构思考力-读书笔记

结构思考力李忠秋◆ 前言结构思考力可以帮助我们构化一个结构,在表达核心观点的基础上,有理有据、条理分明地证明这个观点,使我们能够做到清晰思考和有力表达。◆ 第二节 What——强调“先总后分”的立体化思考方式结构思考力是指以结构的视角从多个侧面全面而清晰的、强调“先总后分”的分析事物的一种方法。因为运用结构思考力看待事物时,首先看到的是一个问题的几个方面,强调的是“先总后分”,从而把握事物的关键本质与问题的关键,就如同古诗中提到的“不识庐山真面目,只缘身在此山中”,想要全面

2021-11-24 14:48:29 1608

原创 被讨厌的勇气-思维导图

2021-11-20 16:47:27 1026

原创 如何写出可读性高的代码

函数尽量短小,并且只做一件事,即抽象层次要相同。if,else,while,try,catch,finally里面的代码块应该只有一行,并且配上具有说明性的名称。函数的参数不要超过3个,如果超过3个,则创建对象来作为入参。函数要么做什么事情,要么回答什么事情,即要么设置值,要么返回值。不要两件事情都做,避免逻辑混乱。使用异常替代错误码,因为异常可以将错误处理代码从主路径代码中抽离。很难一次性就写出完美,第一次写完可以粗糙点,不要有完美主义,第二次不断重构即可。分解条件..

2021-11-08 15:14:44 269

原创 代码整洁之道-读书笔记

核心观点:消除重复代码提高表达力提早构建简单抽象第二章 有意义的命名第三章 函数总结:1、函数尽量短小,并且只做一件事,即抽象层次要相同。2、if,else,while,try,catch,finally里面的代码块应该只有一行,并且配上具有说明性的名称。3、函数的参数不要超过3个,如果超过3个,则创建对象来作为入参。4、函数要么做什么事情,要么回答什么事情,即要么设置值,要么返回值。不要两件事情都做,避免逻辑混乱。5、使用异常替代错误码,因为异常可以将错误处理代码从主路径代

2021-11-08 15:03:41 150

原创 重构-读书笔记

定义重构是在不改变软件可观察行为的前提下改善其内部结构。任何不会被修改的变量都可以当成参数传入新的函数,会被修改的变量要格外小心。如果只有一个变量会被修改,可以把它当做返回值。尽量去除临时变量,因为临时变量会被当成参数传来传去,容易跟丢它们。第三章-代码坏味道重复代码同一个类的两个函数含有相同的表达式两个互为兄弟的子类内含相同表达式2个毫不相关的类出现重复代码过长函数每当感觉需要以注释来说明点说明的时候,我们就需要把说明的东西写进一个独立函数中,并以用途命名,不是用实现

2021-11-08 11:10:27 177

原创 MVCC原理

文章目录MVCC原理定义注意事项原理版本链InnoDB的隐藏列一致性视图(ReadView)版本链比较规则MVCC原理定义MVCC(Multi-Version Concurrency Control)多版本并发控制,是数据库控制并发访问的一种手段。注意事项MVCC只在 读已提交(RC) 和 可重复读(RR) 这两种事务隔离级别下才有效。是 数据库引擎(InnoDB) 层面实现的,用来实现读写冲突时不用加锁,提高访问性能。原理通过版本链(undo log)和一致性视图实现MVCC。

2021-06-16 11:07:23 120

原创 AQS原理详解

文章目录定义原理加锁流程解锁流程流程图ReentrankLock原理加锁代码lockacquiretryAcquireaddWaiteracquireQueuedshouldParkAfterFailedAcquire释放锁代码release定义AQS:抽象队列同步器AQS是用来构建锁或者其他同步器组件的基础框架,是整个JUC体系的基石。AQS使用一个volatile修饰的int类型的成员变量state表示同步状态(0表示无锁,大于0表示持有锁),和一个先进先出的双向链表队列来完成阻塞线程的排队工作

2021-06-15 22:41:30 256

原创 第三方接口对接注意事项

技术方面网络协议方面确认接口对接的网络协议和请求地址:https/http 端口号 请求地址接口请求方面尽量全部约定 数据传参+响应格式为:application/json POST请求确认请求参数是否必传以及数据类型,非必传字段需要确认是传null还是空字符串。接口安全方面考虑是否需要安全考虑,外网一定要有认证机制。参数是否需要加密。重要【重要】幂等校验方面确保 本公司接口和三方公司接口都有唯一校验功能,防止重复提交【重要】重试机制方面一定要确认是否需要接口调用失败后的

2021-05-11 20:17:28 3094

原创 NIO常见面试题

文章目录NIO和BIO到底有什么区别?有什么关系?解释一下NIO的三大核心概念缓存区Buffer概念通道Channel概念选择器Selector概念缓冲区类型通道的类型BIO有什么缺点,为什么要用NIO为什么NIO是如何实现同步非阻塞的?BIO和NIO应用场景NIO和BIO到底有什么区别?有什么关系?NIO是以块的方式处理数据,BIO是以字节流或者字符流的形式去处理数据。NIO是通过缓存区和通道的方式处理数据,BIO是通过InputStream和OutputStream流的方式处理数据。NIO的通

2021-04-24 16:34:24 1286

原创 NIO实践案例

文章目录使用NIO复制文件案例NIO非阻塞式网络通信入门案例NIO 网络编程应用实例-群聊系统目标服务端代码实现客户端代码实现使用NIO复制文件案例public static void fastCopy(String src, String dist) throws IOException { /* 获得源文件的输入字节流 */ FileInputStream fin = new FileInputStream(src); /* 获取输入字节流的文件通道 */ F

2021-04-24 16:33:48 160

原创 NIO三大核心概念

文章目录NIO核心一:缓冲区(Buffer)概述Buffer 类及其子类缓冲区的基本属性Buffer常见方法缓冲区的数据操作直接与非直接缓冲区NIO核心二:通道(Channel)概述常用的Channel实现类FileChannel 类FileChannel的常用方法NIO核心三:选择器(Selector)概述原理:选择器(Selector)的应用NIO核心一:缓冲区(Buffer)概述一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区 都是 Buffer 抽象类的子类.。Jav

2021-04-24 16:33:22 405

原创 NIO入门知识

文章目录NIO 是什么为什么要用NIONIO和BIO的比较IO模型应用场景NIO三大核心概念Buffer缓冲区Channel通道Selector选择器NIO 是什么Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO可以理

2021-04-24 16:32:44 192

原创 人间值得-读书笔记

人间值得中村恒子 奥田弘美文章目录◆ 前言◆ 第1章:工作是为了什么◆ 02 在思考“这份工作不适合我”之前,先试着挑战一下。不那样的话,人就会止步不前◆ 03 即使你不喜欢工作,也没有关系,尽可能去做总比瞎想强◆ 04 工作的去留自己决定,别人无从干涉◆ 第2章:不要期待过多,对生活中的小事心存感激◆ 06 不强求改变别人,不如把心力放在“自己如何才能快乐生活”◆ 07 即便是家人也要分清彼此,强迫他人,自己和对方都很痛苦◆ 09 尊重别人,别人也会尊重你◆ 10 机会源于偶然,如果有人助力,就顺势而

2020-09-21 11:17:39 1476

原创 使用redisson实现延迟队列

文章目录引入maven延迟队列最佳实践引入maven <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.13.3</version> </dependency>延迟队列最佳实践首先定义一个延迟job,里面包含

2020-09-08 13:49:19 748

原创 终于搞懂了SpringBoot jar包启动的原理

SpringBoot生成的jar包Spring Boot的可执行jar包又称作“fat jar”,是包含所有三方依赖的jar。它与传统jar包最大的不同是包含了一个lib目录和内嵌了web容器。可执行jar包的目录结构通过maven命令打包后,会有2个jar包,一个为application-name.version-SNAPSHOT.jar,一个为application-name.version-SNAPSHOT.jar.original。后者仅包含应用编译后的本地资源,而前者引入了相关的第三方依赖。

2020-09-04 15:47:04 6862

原创 类加载器和类的双亲委托机制详解

文章目录类加载器什么是类加载器类加载器的层次启动类加载器(Bootstrap ClassLoader)扩展类加载器(Extension ClassLoader)应用程序类加载器(Application ClassLoader)类加载的三种方式JVM类加载机制全盘负责父类委托缓存机制双亲委派机制类的双亲委派机制自定义类加载器类加载器什么是类加载器虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的

2020-08-27 16:02:05 188

原创 类的加载机制和生命周期详解

文章目录类的加载机制类的生命周期加载:查找并加载类的二进制数据验证:确保被加载的类的正确性准备:为类的静态变量分配内存,并将其初始化为默认值解析:把类中的符号引用转换为直接引用初始化:对类的静态变量,静态代码块执行初始化操作类初始化的步骤**触发类初始化的时机**以下几种情况不会执行类初始化使用卸载类的加载机制Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。类的生命周期类从被加载

2020-08-27 16:01:03 338

原创 CompletionService学习总结

文章目录CompletionService简介应用场景常用方法应用案例:查询3个网站,汇总结果CompletionService简介CompletionService将Executor和BlockingQueue的功能融合在一起,将Callable任务提交给CompletionService来执行,然后使用类似于队列操作的take和poll等方法来获得已完成的结果,而这些结果会在完成时被封装为Future。CompletionService实现了生产者提交任务和消费者获取结果的解耦,生产者和消费者都不

2020-08-13 10:35:41 402

原创 程序员的成长课-读后感

程序员的成长课第1章 如何选择技术方向努力只有在方向正确时才有价值。1.1 技术成长三阶段模型这个阶段最重要的就是提升专项能力,让自己能够迅速搞定一些别人安排给你的事情,体现出你的价值。这个阶段持续的时间长短因人而异,可能会是1~3年。如果超过3年还没有进入下一个阶段,那么你的成长速度就需要提升了。进入这个阶段非常重要的一种标志就是,你遇到问题,不再从下而上去思考(即从技术实现细节来考虑问题好不好实现、拿技术去裁剪问题或重定义问题),而是从实现细节跳脱出来,站到更高的层面,自顶向下去思考、去分析

2020-08-12 00:10:50 504

原创 线上排查神器arthas总结

文章目录简介安装使用`arthas-boot` (推荐)通过as.sh命令启动通过Cloud Toolkit插件直接进入arthas卸载进入arthas退出arthas快速入门常用命令dashboard:仪表板jad:反编译某个类,或者反编译某个类的某个方法thread 线程相关命令sc:查看JVM已加载的类信息sm:查看已加载类的方法信息watch 方法执行的数据观测查看函数返回值查看函数的请求参数异步保存日志trace:输出方法调用路径,并输出耗时tt:官方名为时空隧道stack:观察方法的调用路径mo

2020-08-11 18:51:01 3366

原创 ElasticSearch学习笔记总结

文章目录ElasticSearch简介什么是ElasticSearchElasticSearch对比Solr什么是全文检索ElasticSearch应用场景ElasticSearch的安装与启动安装ES安装ES的图形化界面插件Enable CORS in elasticsearchElasticSearch相关概念(术语)概述Elasticsearch核心概念索引 index类型 type文档 document字段Field映射 mapping接近实时 NRT集群 cluster节点 node分片和复制 s

2020-08-06 14:34:31 346

原创 分库分表总结

文章目录什么是分库分表为什么要分库分表分库分表的优缺点分库分表的方案水平分库水平分表垂直分库垂直分表分库分表工具分库分表步骤分库分表的问题非Shard key的查询问题非Shard key跨库跨表分页查询问题扩容问题扩容和部署的问题事务问题跨节点Join的问题ID的问题跨分片的排序分页聚合的问题分库的数量总结什么是分库分表从字面上简单理解,就是将原本存储在一个库的数据分块存储在多个库上,将原本存储在一个表的数据分块存储在多个表里面。为什么要分库分表分库分表的目的就是为了缓解数据库的压力,最大限度提高

2020-08-04 15:42:36 269

原创 分库分表总结

文章目录什么是分库分表为什么要分库分表分库分表的优缺点分库分表的方案水平分库水平分表垂直分库垂直分表分库分表工具分库分表步骤分库分表的问题非Shard key的查询问题非Shard key跨库跨表分页查询问题扩容问题扩容和部署的问题事务问题跨节点Join的问题ID的问题跨分片的排序分页聚合的问题分库的数量总结什么是分库分表从字面上简单理解,就是将原本存储在一个库的数据分块存储在多个库上,将原本存储在一个表的数据分块存储在多个表里面。为什么要分库分表分库分表的目的就是为了缓解数据库的压力,最大限度提高

2020-07-28 16:28:01 217

原创 Springboot-事件驱动详解

文章目录spring事件驱动组成定义事件发送事件:publishEvent()方法实现观察者有2种方式注意事项利用@TransactionalEventListener实现监听事件时的事务隔离spring事件驱动组成spring事件驱动由3个部分组成1、ApplicationEvent:表示事件本身,自定义事件需要继承该类。用来定义事件2、ApplicationEventPublisherAware:事件发送器,需要实现该接口。主要用来发布事件.ApplicationContext 也实现了该接口,

2020-07-22 18:53:48 2389

原创 设计模式-观察者模式

文章目录定义介绍角色类图实例定义当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。介绍**意图:**定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。**主要解决:**一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。**何时使用:**一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到

2020-07-22 16:34:43 114

原创 常用hutool和guava的集合工具类总结

Maven <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.0-jre</version> </dependency> <depende

2020-06-05 16:02:18 7121 1

原创 程序员的自我修养-读后感

总结与感悟:优秀的人只是在你没看到的时候花了更多时间去学习和工作而已,你也可以通过不断努力,变的优秀.如果你一直都习惯于听命与人,缺少自己的观点和主张,久而久之你就会变的平庸,变得可有可无.旅行不一定能放松,但是一定能让你发现和感受到新东西.薪资与工作量无关,薪资取决于你的不可替代性. 摆正心态,努力修炼内功,提高自己的不可替代性.有效提升不可替代性的方法:尽可能持续做一件事.不仅仅指技术上的积累,也是指你能完整或较长时间参与同一个项目或开发一个产品.注意,要主动把握这些机会.培养自己持续学习

2020-06-04 22:08:04 735

原创 成为极少数-读后感

文章目录◆ 自序 真正的成长,都需要你孤独地翻山越岭◆ 觉醒:自我驱动的人是不会焦虑的◆ 上进:只有突破才叫上进◆ 动力:我经常对自己吹牛皮◆ 自律:围绕目标的自我约束◆ 专注:做到勤奋的样子很容易◆ 第二章 方向与精进◆ 思维:建立这三个思维,增加竞争优势◆ 规划:业余时间怎样不失控◆ 准备:多做这些能受益终身的事情◆ 写作:写作的价值大,该如何开始和坚持◆ 学习:碎片化学习的正确方法◆ 长板:磨炼我们的“撒手锏”◆ 求索:永远给自己时间和空间◆ 第三章 时间与平台◆ 时间:百忙之中,下一步“闲”棋◆ 复

2020-06-02 22:46:24 3540

原创 常用工具类的集合方法总结

Collections1.反转指定列表中元素的顺序 public static void reverse(List<?> list)2.随机排列集合public static void shuffle(List<?> list)3.交换指定位置的集合 public static void swap(List<?> list, int i, int j)4.用指定的元素替换指定列表中的所有元素public static <T> void f

2020-06-02 17:52:13 1386

原创 幸福的勇气-读后感

文章目录第一章 可恶 的 他人, 可怜 的 自己教育的目的阿德勒心理学的目标论尊重所有的他人是人际交往的前提尊重的第一步就是关心他人兴趣共鸣阿德勒的目的论过去根本不存在以后怎么做第二章 为何要否定赏罚既不可以批评,也不可以表扬问题行为的目的是什么?问题行为的五个阶段第一个阶段是称赞的要求.第二个阶段是引起关注第三个阶段是权力争斗第四个阶段:复仇第五个阶段:证明无能有罚便无罪吗?以暴力为名的交流发怒和训斥同义自己的人生,可以由自己选择第三章 由竞争原理到协作原理褒奖带来竞争共同体的病人生始于不完美自我认同的勇

2020-06-01 22:55:07 1286

原创 代码精进之路-读后感

文章目录总结第一章 命名函数名辅助类方法名约定使用对仗词后置限定词注释第二章 规范日志规范异常第三章 函数参数数量短小的函数职责单一精简辅助代码组合函数模式**SLAP**第八章 抽象构筑金字塔如何提升抽象思维抽象之美第九章 分治写代码的两次创造第十章 技术人的素养结构化思维有目标平和的心态精进总结函数名要具体,名字要体现出是做什么的,而不是怎么做.一个方法不要超过20行.函数职责单一,一个方法只做一件事情.组合函数模式:所有的公有函数(入口函数)读起来像一系列执行步 骤的概要,而这些步骤的真正

2020-06-01 22:53:40 483

原创 JetCache总结

特性全部特性:通过统一的API访问Cache系统通过注解实现声明式的方法缓存,支持TTL和两级缓存通过注解创建并配置Cache实例针对所有Cache实例和方法缓存的自动统计Key的生成策略和Value的序列化策略是可以配置的分布式缓存自动刷新,分布式锁 (2.2+)异步Cache API (2.2+,使用Redis的lettuce客户端时)Spring Boot支持JetCache整合srpingboot配置maven配置 <!--注意版本要对应,不然会报错-->

2020-06-01 22:08:45 3248

原创 重试机制实现总结

原生方法@Overridepublic String helloRerty(String msg) throws InterruptedException { int times = 0; while (times < 3) { try { if (msg.equals("error")) { throw new RuntimeException("error"); }

2020-06-01 22:07:45 1237

原创 Vue常用特性总结

文章目录Vue常用特性表单基本操作表单修饰符自定义指令Vue.directive 注册全局指令Vue.directive 注册全局指令 带参数自定义指令局部指令计算属性 computed侦听器 watch过滤器过滤器中传递参数生命周期常用的 钩子函数数组变异方法替换数组动态数组响应式数据Vue常用特性表单基本操作获取单选框中的值通过v-model <!-- ...

2020-03-31 21:50:56 252

原创 Vue常用指令总结

文章目录常用指令v-cloak:防止页面加载时出现闪烁问题v-text:将数据填充到标签中v-html:将HTML片段填充到标签中v-pre:显示原始信息v-once:只编译一次v-model:用于双向数据绑定v-on:绑定事件事件函数传递参数事件修饰符按键修饰符v-bind:属性绑定绑定class对象-绑定对象语法绑定class对象-绑定数组语法绑定class的细节用法绑定对象和绑定数组 的区别...

2020-03-31 21:50:02 192

原创 docker安装ElasticSearch6.1.8和kibana

文章目录docker安装elasticsearch6.1.81. 下载镜像2. 启动镜像3. 配置跨域4. 重启镜像5. 测试docker安装elasticsearch headdocker安装IK中文分词器docker 安装Kibana安装Kibana设置kibana中文界面docker安装elasticsearch6.1.81. 下载镜像docker pull elasticsearch...

2020-03-26 20:43:08 777

原创 活出生命的意义-读后感

文章目录生命的意义三种发现生命意义的方式勇敢承担与接收生活中的挑战,完成自己的使命每个人的人生意义都是独特的承受痛苦能加深生命的意义磨难是不可避免的,磨难中暗藏着成功的机会每个人都有自己的人生使命,他人无法替代你的使命忍受不必要的痛苦就是自虐人生态度不要只想着成功选择态度和行为方式的自由相信自己吃得苦都是有意义的名言生命的意义三种发现生命意义的方式通过创立某项工作或从事某种事业,去做能体现...

2020-03-26 11:04:03 505

原创 全文检索之Luence学习笔记

文章目录什么是全文检索数据分类结构化数据搜索非结构化数据查询方法1. 顺序扫描法2. 全文检索如何实现全文检索全文检索的应用场景Lucence实现全文检索的流程索引和搜索流程图创建索引1.获得原始文档2.创建文档对象3.分析文档4.创建索引查询索引1.用户查询接口2.创建查询3.执行查询4.渲染结果Field域的属性常见的域入门程序环境搭建创建索引库实现流程代码实现结果展示使用luke工具查看索引...

2020-03-24 11:20:56 767

原创 爬虫实战-使用Webmagic爬取51job的职位信息

案例说明使用SpringBoot+Mybatis plus+Webmagic爬取51job的职位信息,并保存到mysql数据库.创建工程引入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww...

2020-03-23 14:16:39 670

原创 布隆过滤器介绍

文章目录什么是布隆过滤器原理什么是布隆过滤器使用布隆过滤器可以实现去重。优点: 占用的内存要比使用HashSet要小的多,也适合大量数据的去重操作。缺点:有误判的可能。没有重复可能会判定重复,但是重复数据一定会判定重复。布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元...

2020-03-22 20:10:55 118

空空如也

空空如也

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

TA关注的人

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