- 博客(29)
- 收藏
- 关注
原创 Elasticsearch之原理深入理解
一、定义Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。二、基本概念(一)索引 Index一个索引就是一个拥有几分相似特征的文档的集合。比
2020-08-28 23:15:29 5031 1
原创 设计模式之结构型模式
结构型模式一、适配器模式(一)定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。(二)应用实例:读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。(三)构成要素:二、桥接模式(一)定义:桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
2020-08-21 15:58:19 4654
原创 Kafka入门概述及原理介绍
Kafka一、Kafka是什么Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统.二、Kafka的特点Kafka高吞吐量: Kafka的高吞吐量体现在读写上,分布式并发的读和写都非常快,写的性能体现在以o(1)的时间复杂度进行顺序写入。读的性能体现在以o(1)的时间复杂度进行顺序读Kafka delivery guarantee(message传送保证):(1)At most
2020-08-20 08:51:06 4396
原创 设计模式之行为型模式
行为型模式一、模板方法模式(一)定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。(二)模式说明:例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。(三)构成要素:(四)应用案例出国留学手续一般经过以下流程:索
2020-08-19 17:22:50 7033
原创 LeetCode-5:实现链表的首尾链接
题目将给定的单链表L: L 0→L 1→…→L n-1→L n,重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…要求使用原地算法,并且不改变节点的值例如:对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→…You must do this in-place wi
2020-08-19 10:19:44 3050
原创 ZooKeeper之入门概述与原理
文章目录一、定义二、特点三、结构四、Client与Zookeeper连接session五、事务操作六、Zookeeper Water监听器七、集群架构八、Zookeeper应用场景一、定义ZooKeeper是一个开源的分布式协调服务。ZooKeeper是一个典型的分布式数据一致性的解决方案。分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。二、特点(一)顺序一致性:从同一个客户端发起的事务请求,最终将会严格
2020-08-17 22:13:03 6903
原创 设计模式之六大原则
设计模式的六大基本原则一、开闭原则(一)定义:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。(二)目的:开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。对软件测试的影响软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。可以提高代码的可复用性粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和
2020-08-16 16:31:20 4346
原创 设计模式之创建型模式
创建型模式一、工厂模式(一)定义:在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。(二)应用实例:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,也就是说不需要知道这个汽车里面的具体实现,只需要知道这辆车的名字即可。(三)构成要素:二、抽象工厂模式(一)定义:在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。抽象工厂更像是对工厂的工厂模式。(二)
2020-08-16 16:02:58 6883
原创 记一次钉钉群聊机器人的开发
文章目录一、需求描述二、开发思路三、开发步骤(一)阅读开发文档(二)创建机器人(三)了解消息格式(四)传参并调用(五)其他四、总结一、需求描述为实现更好的沟通,先需要实现以自定义形式向钉钉群聊内发送文本内容及图片消息。二、开发思路(一)明确需求。即向钉钉群聊内发送自定义文本或图片消息(二)阅读钉钉开发手册。钉钉具有一套面向开发者的开发手册,其上描述了钉钉对外提供的API接口,我们可以通过调用接口实现相应功能。(三)了解接口要求。在我们调用接口时,需要向其中传递符合规范的参数,并以规定的方式调用,
2020-08-12 18:51:37 5947
原创 LeetCode-04:实现链表的插入排序
题目使用插入排序对链表进行排序。Sort a linked list using insertion sort.输入{3,2,4}输出{2,3,4}思路若要使得时间复杂度为O(nlogn),常用排序算法有归并算法,但常用归并算法采用了递归的形式,因此此题解法暂时无法满足空间复杂度为常数的条件。关键点:1、题干给出的数据结构为链表,注意理清链表中结点的链接变换关系。如node.next=node与node=node.next之间的差异,前者意为将node的指针指向node,后者意为
2020-08-11 15:24:02 1313
原创 LeetCode-3:O(nlogn)时间内使用常量级空间复杂度对链表进行排序
题目在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。Sort a linked list in O(n log n) time using constant space complexity.输入{3,2,4}输出{2,3,4}思路若要使得时间复杂度为O(nlogn),常用排序算法有归并算法,但常用归并算法采用了递归的形式,因此此题解法暂时无法满足空间复杂度为常数的条件。关键点:1、题干给出的数据结构为链表,注意理清链表中结点的链接变换关系。如node.next
2020-08-05 17:27:37 1826
原创 LeetCode-2:逆波兰式运算
题目计算逆波兰式(后缀表达式)的值运算符仅包含"+","-","*“和”/",被操作数可能是整数或其他表达式例如:[“2”, “1”, “+”, “3”, “*”] -> ((2 + 1) * 3) -> 9↵ [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6思路利用数据结构栈进行数据的存储与操作。关键点:1、使用Java自带的栈类型Stack stack=new Stack();2、题干中给出的是字符串,数据
2020-08-03 16:26:37 1164
原创 LeetCode-1:最短子树深度
题目求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。思路递归,若为空树返回0;若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)若右子树为空,则返回左子树的最小深度+1;若左右子树均不为空,则取左、右子树最小深度的较小值,+1;代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; *
2020-08-02 16:33:27 1672
原创 面试官看了都说好的Synchronized详解
互斥同步Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized,而另一个是 JDK 实现的 ReentrantLock。synchronized1. 同步一个代码块public void func() { synchronized (this) { // ... }}它只作用于同一个对象,如果调用两个对象上的同步代码块,就不会进行同步。对于以下代码,使用 ExecutorService 执行了两个线程,
2020-06-16 20:04:31 3524
原创 Redis十分钟进阶实战教程(进阶篇)
上回书说到:零基础入门Redis实战教程(基础篇)文章目录五、Redis.conf详解六、Redis持久化七、Redis发布订阅八、Redis主从复制九、Redis缓存穿透和雪崩五、Redis.conf详解启动的时候,就通过选择特定的配置文件来启动!(一)配置文件 unit单位 可以使得对大小写不敏感!(二)包含区域INCLUDES(引入其他配置文件)就是好比我们学习Spring中的@Improt(三)网络配置(连接信息)bind 127.0.0.1 # 绑定的ipprotected
2020-06-12 23:44:39 8378
原创 零基础入门Redis实战教程(基础篇)
文章目录一、NoSQL二、Redis(一)什么是Redis(二)基础的知识(三)五大数据类型(四)三种特殊数据类型(五)Redis事务(六)Watch监控(七)Redis总结和问题三、Jedis四、Redis整合SpringBootRedis一、NoSQL(一)什么是NoSQLNoSQL = Not Only SQL (不仅仅是SQL)关系型数据库:表格 ,行 ,列泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区! 暴
2020-06-10 14:40:36 11211 1
原创 SpringMVC快速上手教程及SSM整合案例
文章目录一、什么是MVC二、什么是SpringMVC三、SpringMVC案例四、SpringMVC:Controller 及 RestFul风格(重点)五、SpringMVC:结果跳转方式六、SpringMVC:数据处理七、SpringMVC:拦截器八、SSM(Spring+SpringMVC+Mybatis)一、什么是MVC什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC.
2020-06-09 11:11:56 11478
原创 小白也能看懂的Innodb执行引擎及MVCC原理
文章目录一、InnoDB实现事务四大特性二、InnoDB的实现原理三、并发一致性问题四、隔离级别五、Undo log六、MVCC七、Redo log一、InnoDB实现事务四大特性原子性(Atomicity):原子性指整个数据库事务是不可分割的工作单位。事务中所有的数据库操作,要么全部提交成功,要么全部失败回滚。一致性(Consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。隔离性(Isolation):事务的隔离性要求每个读写事务的对象对其他事务的操作对象能相互分离,即
2020-06-05 20:59:53 3320
原创 SpringAOP详解三种实现方式及其使用案例
文章目录一、AOP(一)什么是AOP(二)AOP与代理模式(三)AOP在Spring中的作用(四)使用Spring实现AOP(重点)(五)Spring中的事务(六)Spring的事务传播级别二、整合Mybatis案例一、AOP(一)什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,体现了横切的思想,意思是在添加某项功能的时候,是以切面插入的方式实现的,对原有的代码不会产生改变。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的
2020-06-04 14:06:03 3836 1
转载 GitHub中的Fork、Pull Request、Merge都是个啥意思?
作者:beepony链接:https://www.zhihu.com/question/21682976/answer/79489643来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 尝试用类比的方法来解释一下。想想我们中学考试,老师改卷的场景吧。你做的试卷就像仓库,你的试卷肯定会有很多错误,就相当于程序里的 bug。老师把你的试卷拿过来,相当于先 fork。在你的卷子上做一些修改批注,相当于 gi.
2020-06-02 22:15:55 4645
原创 SpringIOC详解自动注入与自动装配
文章目录一、Spring介绍二、IOC(一)什么是IOC(二)实现的两种方式(三)使用案例(四)Bean注入方式(重点)(五)Bean的作用域(六)Bean的自动装配(重点)(七)bean的使用方式(重点)一、Spring介绍Spring:春天---->给软件行业带来了春天!Spring是一个开源的轻量级 Java 开发应用框架,其目的是用于简化企业级应用程序开发Spring框架即以interface21框架为基础,经过重新设计,并不断丰富内涵,于2004年3月24日,发布了1.0正式版。
2020-06-01 22:03:35 5527 1
原创 零基础入门Mybatis实战教程(基础篇)
本篇文章主要讲解Mybatis中的主要概念与基本用法,图文并茂,并附有相应的实操代码,适用于小白入门学习。
2020-05-30 12:46:37 11704 1
原创 通俗易懂的Java内存模型与Volatile详解
文章目录一、Java 内存模型二、volatile详解一、Java 内存模型 Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。(一)主内存与工作内存 处理器上的寄存器的读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 加入高速缓存带来了一个新的问题:缓存一
2020-05-28 18:38:45 3022
原创 初识关系型数据库事务与Spring事务
文章目录一、事务四大特性二、数据不一致性问题三、隔离级别四、Spring的事务隔离级别五、Spring的事务传播级别一、事务四大特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)原子性:是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性:是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行
2020-05-26 11:51:17 3022
原创 List、Set、Map接口之快速入门
文章目录一、List二、Set三、Map一、List(一)特点 List的主要特征是其对象以线性方式存储,集合中允许存放重复对象,允许按照对象在集合中的索引位置检索对象。(二)实现类1、ArrayList:(1)底层数据结构是数组,查询快、增删慢(2)线程不安全,效率高2、Vector:(1)底层数据结构是数组,查询快,增删慢(2)线程安全,效率底,使用Synchronize3、LinkedList:(1)底层数据结构是链表,查询慢,增删
2020-05-24 13:08:26 3078
原创 IDEA连接MySQL失败:Server returns invalid timezone. Go to Advanced tab and set serverTimezon
文章目录一、错误情况二、错误原因三、解决方法四、再次连接测试一、错误情况二、错误原因MySQL未正确设置时区。三、解决方法(一)进入MySQL根目录命令行(二)登录数据库(三)设置时区,输入set global time_zone=’+8:00’;四、再次连接测试再次连接数据库即可成功。...
2020-05-24 12:43:12 2963
原创 JVM条理混乱?看完这篇你就理清楚了(言简意赅版)
本文言简意赅的介绍了JVM主要功能与结构以及GC垃圾回收机制,图文并茂,实乃小白入门好帮手
2020-05-21 13:01:38 11672
原创 JavaWeb全面知识总结之呕血三天精心整理
本文内容一万余字,以HTTP协议内容与Servlet API接口为中心,图文并茂地发散讲解Java Web中各项重要技术如Cookie、JSP、JDBC、Filter过滤器等。实乃小白入门、期末恶补的好助手。
2020-05-20 18:18:03 12981 1
原创 从零开始嵌入聊天机器人服务(小白适用)
文章目录一、为什么需要聊天机器人三、搞到了该如何使用呢(一)青云客(初学者强推)(二)图灵机器人(三)海知智能机器人四、使用总结一、为什么需要聊天机器人(一)公众号、客服自动回复 ×(二)在线闲聊 ×(三)应付对象 √# 二、那么在哪里才能搞得到机器人汇总:https://blog.csdn.net/wenxuhonghe/article/details/100703398这个帖子里列出了常见的一些机器人API,提供了各机器人的官网及其特点,十分详细,
2020-05-19 18:41:42 4211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人