
java
MINKI_W
莽呀
展开
-
SpringCloud的Zuul路由网关入门
zuul是用户请求进来之后最先访问的服务, 目的是为了实现我们外部访问的统一接口, 同时起到过滤,代理的作用配置起来非常简单, 只需要导入依赖, 配置启动类, 启动类配置相应的EnablexxxProxy注解, 最后在我们的SpringBoot.yml中配置zuul注册到eureka的地址等信息即可:server: port: 9527spring: application: name: springcloud-zuuleureka: client: service-ur原创 2021-03-22 00:09:30 · 201 阅读 · 0 评论 -
Feign入手教学
Feign其实就是Ribbon再套了一层,什么意思,Feign是通过Serivce中写接口原创 2021-03-21 13:44:31 · 276 阅读 · 0 评论 -
什么是Restful?
restful:representational state transfer(表象性状态转变)举例理解:以前的url可能这样写的:比如一个获取所有信息的请求:localhost:8080:/user/queryall/ 这个queryall是给谁看的, 这玩意是给开发成员看的吧按理说,但是这样设计我们的controller, 用户也看见了,没啥用.用了restful风格会怎样呢? 那么查询所有信息的url可能就变成这个样子了:localhost:8080:/user 而且更原创 2021-03-21 00:59:08 · 155 阅读 · 0 评论 -
SpringCloud之Eureka初接触
上一篇讲到如何利用zookeeper服务治理与发现和dubbo rpc通信框架进行小心分布式系统的搭建SpringBoot+Dubbo+Zookeeper快速搭建分布式简单的生产消费模型今天我们使用SpringCloud中的Eureka来进行简单的分布式服务搭建我们需要先建一个mysql的表用来练习数据库名为db01,表明dept以及其字段名和属性上图可见,插入部分数据ok我们有了基础的数据库然后,我们构建简单的三个微服务,一个实体类api,一个provider(服务提供者),一个cons原创 2021-03-20 01:13:09 · 204 阅读 · 1 评论 -
SpringBoot+Dubbo+Zookeeper快速搭建分布式简单的生产消费模型
首先要知道的是Dubbo是我们的通信框架,RPC框架,其核心主要就是通讯和序列化,zookeeper是我们的服务注册中心.ok开始搭建这个项目环境没有搭好的可以看我之前的blogdubbo安装教程zookeeper安装教程ok 启动我们的idea 创建两个springboot的web starter项目项目结构如图所示ok 先进行依赖导入操作两个项目的依赖都一样下面是我们要导的包: <!-- //导两个依赖 Dubbo 和 zookeeper-->原创 2021-03-18 01:09:49 · 270 阅读 · 0 评论 -
Windows安装Dubbo详细教程,附下载链接,打包操作
首先从github下载dubbo点击进入下载页面我们进入github中下载master点击master版本 然后下载即可下载完成后解压到你对应的文件夹中这时候是不能用的 因为点进去看是个springboot项目 所有的依赖都没有下载这时候我们在master文件夹下运行cmd执行操作等待打包完即可 最终去找到我们打好的jar包就行了...原创 2021-03-17 22:57:30 · 1225 阅读 · 0 评论 -
Windows下安装Zookeeper教程, 解决安装的所有问题, 附3.4.14bin.tar.gz下载地址
首先下载3.4.14版本zookeeper.gz文件链接如下zookeeper3.4.14下载完成之后 解压到需要的文件夹中进入bin目录 右键编辑kzService.cmd文件末尾处加入pause 用来查看运行时可能会爆什么错 如果没写可能会闪退 看不到到底什么错误接下来进入config文件夹中讲zoo_sample.cfg复制一份,并将其改名为zoo.cfg随后可以进行运行测试zkservice.cmd运行情况紧接着运行cli客户端当出现红框所标注的命令提示后原创 2021-03-17 22:21:30 · 672 阅读 · 0 评论 -
Spring常见的注解配置详情
本文主要介绍Java EE框架Spring FrameWork的有关Bean的一些注解配置及其XML方式配置对照:常见的配置方式有三种:1. 基于xml配置 < bean >2. 基于注解配置3. 基于Java类配置Bean定义: 注解来说就是使用@Component @Service @Controller @Repository,java类就是使用@Configuration修饰类,里面的方法是@Bean...原创 2021-03-10 21:42:00 · 146 阅读 · 0 评论 -
Java设计模式二:简单工厂设计模式
package com.byl.设计模式;import java.util.Scanner;public class JianDanGongChang { public static void main(String[] args) { ComputerFactory computerFactory = new ComputerFactory(); computerFactory.createComputer(computerFactory.getName()原创 2021-02-09 21:21:00 · 132 阅读 · 0 评论 -
Java设计模式一:模板设计模式
模板设计模式一般开发都会用到OCP原则,即开闭原则,类,模块,方法应对拓展开放,对修改关闭。例子:冲咖啡和冲茶冲咖啡步骤:烧水;冲咖啡;倒入容器;加糖和牛奶;冲茶步骤:烧水冲茶倒入容器加柠檬汁步骤1和3是一样的,如果两种方式都用类的方式去写,会重复很多代码,是茶和咖啡主导了两个类的构成,如果有新饮料加入,会费很多工作,因此选用模板设计方法是一个重要的选择。模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下原创 2021-02-09 19:51:16 · 152 阅读 · 0 评论 -
利用内部类实现Java多继承
class A{ private int age = 1; int a = 2;}class B{ private int num = 2; int b = 4;}//使用内部类实现多继承class Outter{ class inA extends A{ public int getA(){ return a; } } class inB extends B{ publ原创 2021-02-06 20:32:27 · 153 阅读 · 2 评论 -
递归实现从1加到100
public static int hundred(int i){ //递归实现1+2+3+...+99+100 if(i == 100)return 100; else return i + hundred(i + 1); }反过来理解,最后几位必然是100+99+98+…我们让 i 为100时开始逐渐退出递归,也就是说如图所示这是一个栈模型图,最先进去的被压在最底下,当i = 100时,开始出栈,意味着hundred(99+1) = 100 因此有100原创 2021-02-05 17:13:50 · 9326 阅读 · 0 评论 -
用Java编写9乘9乘法口诀表
public class Test { public static void main(String[] args) { for(int x = 1; x < 10; x++){ for(int y = 1; y < 10; y++){ System.out.print(x+"*"+y+"="); System.out.print(x * y); Sys原创 2021-02-05 16:07:01 · 365 阅读 · 0 评论 -
数据库连接池
数据库连接池数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态的对池中的连接进行申请、使用、释放; (1)程序初始化时创建连接池 (2)使用时向连接池申请可用连接 (3)使用完毕,将连接返还给连接池 (4)程序退出时,断开所有的连接,并释放资源创建数据库连接池DBCP : Apache组织下面的一个开源的数...原创 2019-10-24 18:57:54 · 224 阅读 · 0 评论 -
集合类复习
集合类中重要概念词解释1. 泛型java中很重要的概念, 集合里面应用很多.集合的元素,可以是任意类型对象的引用,如果把某个对象放入集合,则会忽略它的类型,就会把它当做Object类型处理.泛型则是规定了某个集合只可以存放特定类型的对象的引用,会在编译期间进行类型检查,可以直接指定类型来获取集合元素在泛型集合中有能够存入泛型类型的对象实例还可以存入泛型的子类型的对象实例注意:1 泛型...原创 2019-08-15 00:27:24 · 151 阅读 · 0 评论 -
链表中倒数第K个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。上手不要先写,应该先分析,画图分析。首先判断一下,如果是个空链表呢?那么就直接return null;非空链表的话我们可以利用链表数组来存储这个链表的每一个结点那么就获取了链表的下标可获取能力,然后就很简单,根据k值获取需要的结点即可。如果,链表的长度小于给定的k值,说明需求根本无法达到,那么就return null;下面是代码实现...原创 2019-08-17 15:44:21 · 192 阅读 · 0 评论 -
链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...原创 2019-08-17 15:21:00 · 148 阅读 · 0 评论 -
二叉树的前中后序遍历
1.前序遍历前序遍历(DLR,lchild,data,rchild),是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则:(1)访问根结点。(2)前序遍历左子树。...原创 2019-08-17 00:48:35 · 622 阅读 · 0 评论 -
复制带随机指针的链表
题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝思路建立一个旧-新-旧-新的链表模型新结点完全copy上一个旧结点,val,next,random打断这个结构,新结点的next指向这个完整链表的next.next即可注意特殊情况的判断代码/*// Definition for a Node.cla...原创 2019-08-21 23:52:09 · 214 阅读 · 0 评论 -
快速排序
快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。基本思想快速排序的基本思想:挖坑填数+分治法。快速排序使用分治法(Divide...原创 2019-08-10 00:43:06 · 175 阅读 · 0 评论 -
短路求值
定义作为"&&“和”||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值(short-circuit evaluation)。这是这两个操作符的一个重要属性。例子假如expr1和expr2都是表达式,并且expr1的值为0,在下面这个逻辑表达式的求值过程中:expr1 && expr2 ...原创 2019-08-13 00:08:29 · 287 阅读 · 0 评论 -
Java实现二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。首先在脑中建立这个二维数组的模型:图画的比较low 但是还是请您凑活看原创 2019-08-15 23:24:32 · 312 阅读 · 0 评论 -
Java类加载
什么是类加载?类加载机制是把类的数据从Class文件以=二进制流的形式加载到内存,并对数据进行校验,转换,解析和初始化,而且在堆中生成了一个java.lang.class对象,最终形成可以被虚拟机直接使用的java类型。这一系列的过程都是在程序运行期间完成的。详述1、加载虚拟机需要完成的事情:(1) 通过一个类的全限定名来获取定义此类的二进制字节流。(2)将这个字节流所代表的静态存储结...原创 2019-08-20 22:09:46 · 213 阅读 · 0 评论 -
TomCat介绍
什么是TomcatTomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立...原创 2019-08-12 00:19:12 · 9512 阅读 · 0 评论 -
基数排序
基本思想它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。基数排序按照优先从高位或低位来排序有两种实现方案:MSD(Most significant digital) 从最左侧高位开始进行排序。先按k1排序分组, 同一组中记录, 关键码k1相等, 再...原创 2019-08-11 23:54:23 · 217 阅读 · 0 评论 -
归并排序
归并排序归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。基本思想归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列算法描述归并排序可通过两种方式...原创 2019-08-11 00:07:45 · 277 阅读 · 0 评论 -
合并两个有序链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4想法:递归:首先空链表情况,都为空,返回空,一个为空就返回另一个都不为空时,推导公式来形成递归:当 l1.val < l2.val ...原创 2019-08-17 17:38:45 · 875 阅读 · 0 评论 -
链表分割
题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。这个题啥意思呢? 就是输入个链表 :5-6-4-2 , x = 4输出应该是一个新的链表,内容为:5-2-4-6 比4小的再左边,而且顺序没变,比4大的或者相等的再右边...原创 2019-08-17 22:48:41 · 151 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路我们可以利用HashSet的不可重复特性,将重复的元素进行存储,再将所有出现过的元素存到另一个集合中创建两个链表引用,一个用来删除结点(跳过重复结点),一个用...原创 2019-08-18 01:14:09 · 188 阅读 · 0 评论 -
使用Idea创建你的第一个Servlet服务项目吧!
第一步:首先你要有IntelliJ Idea 安装了jdk,以及安装了 TomCat。第二步:File -> new ->Project然后创建选择java EE 的 Web Application定义项目名,还有项目所在的文件夹然后就创建好了最初的模型。如下图第三步:配置文件结构:在web ->WEB-INF 文件夹中创建 classes lib ...原创 2019-07-30 01:16:06 · 564 阅读 · 0 评论 -
NIO,BIO,AIO,IO的区别
io 与 Nio 区别io 面向流,不会对数据进行缓冲,因此很难对数据进行处理Nio 面向缓冲,可以对数据进行处理io 是阻塞的,Nio 是非阻塞的io 没有选择器Nio 有选择器,可以利用一个线程监视多个通道,这个线程就是选择器NIO,BIO,AIO 的区别BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这...原创 2019-09-10 00:42:02 · 330 阅读 · 0 评论 -
如何用栈实现一个队列?
栈是先进后出,队列是先进先出,所以两个栈,一个接收数据,一个处理并返回数据,出来就是一个队列,先进先出的形式了。如图所示:代码实现:package com.revision.Stack;import java.util.Queue;import java.util.Stack;class Test { public static void main(String[] ...原创 2019-09-09 00:06:07 · 328 阅读 · 0 评论 -
二叉树的层序遍历
顾名思义,就是对二叉树进行一层一层的遍历,poll方法poll()检索并删除此列表的头(第一个元素)。offer(E e)将指定的元素添加为此列表的尾部(最后一个元素)。我们可以用链表来模拟一个队列public void levelOrder() { BiTNode<E> node =root; LinkedList<BiTNode<E>&...原创 2019-09-05 00:30:25 · 191 阅读 · 0 评论 -
代理模式
代理模式:为一个对象提供一种代理,以控制对这个对象的访问。分为静态代理和动态代理。什么时候要用?(1)当我们想要隐藏某个类时,可以为其提供代理类(2)当一个类需要对不同的调用者提供不同的调用权限时,可以使用代理类来实现(3)当我们要扩展某个类的某个功能时,可以使用代理模式,在代理类中进行简单扩展(4)spring的aop就是使用了动态代理。优点(1)将代理对象与真实被调用的目标对象...原创 2019-09-03 23:01:04 · 195 阅读 · 0 评论 -
三种工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式
工厂设计模式工厂模式是用工厂方法代替new操作的一种模式。在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。3种:简单工厂模式、工厂方法模式、抽象工厂模式。适用场景(1)在编码时不能预见需要创建哪种类的实例。(2)系统不应依赖于产品类实例如何被创建、组合和表达的细节(3)Spring框架的IOC就是使用的工厂模式优点(1)一个调用者想创建一个对...原创 2019-09-02 23:02:52 · 694 阅读 · 0 评论 -
Spring的DI,AOP,IOC
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵...原创 2019-08-31 21:37:13 · 176 阅读 · 0 评论 -
volatile和synchronized的区别和联系
volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JDK1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后执行效率有了显著提升,实际开发中使用 synch...原创 2019-08-29 22:59:03 · 329 阅读 · 0 评论 -
JMM(Java Memory Model)
分为两大部分part 1. 线程私有部分程序计数器:记录当前代码执行到哪一个阶段,多线程中,每一个多线程都有一个程序计数器。本地方法栈:原创 2019-08-28 23:46:53 · 209 阅读 · 0 评论 -
死锁产生的条件,以及如何避免死锁,产生死锁时该怎样避免
产生死锁的四个条件1.互斥: 资源x的任意一个时刻只能被一个线程持有2.占有且等待:线程1占有资源x的同时等待资源y,并不释放x3.不可抢占:资源x一旦被线程1占有,其他线程不能抢占x4.循环等待:线程1持有x,等待y,线程2持有y,等待x当全部满足时才会死锁死锁的预防1.破坏“互斥”条件:就是在系统里取消互斥、若资源一般不被一个进程独占使用,那么死锁是肯定不会发生的,但一般“互斥...原创 2019-08-27 23:33:51 · 292 阅读 · 0 评论 -
堆排序
通过数组来表示一个堆如何排序呢?第一步:创造初始堆,就是先选中最后一个非叶子结点,从右到左,从下往上,进行循环,我们做个小顶堆,那么先判断,当前这个非叶子节点的左孩子是否小于这个非叶子结点,如果小于,直接和非叶子结点交换,如果不小于,就给当前叶子节点+1,指向右节点,然后在判断是否小于非叶子节点。...原创 2019-08-26 22:16:15 · 161 阅读 · 0 评论