- 博客(52)
- 收藏
- 关注
原创 可恶啊,被他用责任链给装到了
“小马,这是你写的代码?”“没错,这是我写的诗!”“你管这叫诗?确定不是读三声?”“好家伙,瞧不起我crud工程师是吧,那么久的流水账代码白写的?我承认,It’s ugly , But useful 啊,you can you up!”“我来就我来,看好,看好,让你看看我写的诗”从上面的流水代码中,可以看出,分别从三个行情来源里找数据,优先级1>2>3,找到数据返回就好了。构建Request对象/** * @author: mk * @create: 2021-11-22 1
2021-11-25 11:52:41
452
原创 设计模式-单例模式
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象,主要解决一个全局使用的类频繁地创建与销毁。1.静态常量饿汉式public class Singleton { //构造器私有化 private Singleton(){}
2021-08-03 11:53:53
190
原创 Nacos安装启动
Nacos下载地址:Nacos下载目前最新版本:官网下载比较慢,可以复制链接,在迅雷下载比较快些解压后,进入bin目录下,执行startup.cmd发现启动报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null修改startup.cmd,改为单机启动,将cluster 改为 standalone再次启动,肯定好使!!残忍,残忍至极!路径有中文,不说了,我已经打过自己的脸了。更改路径,再
2021-03-30 16:59:36
318
原创 Spring Cloud之Config配置中心
目录:1.分布式架构面临的问题2.Spring Cloud Config是什么3.Spring Cloud Config能做什么4.Spring Cloud Config服务端配置5.Spring Cloud Config客户端配置6.Spring Cloud Config客户端动态刷新1.分布式架构面临的问题微服务意味着要将单体应用中的业务拆分成一个个的子服务,每个服务的力度相对较小,因此一个系统中会出现大量的服务。而每个服务都必须要必要的配置信息才能运行,所以一套集中式的,动态配置管理设施是必不可少
2021-03-25 15:54:06
294
原创 SpringCloud 之 Gateway 服务网关
目录:1.Gateway 是什么?2.Gateway 主要能干什么?3.Gateway三大核心概念4.Gateway工作流程5.使用实例1.Gateway 是什么?Spring Cloud Gateway是基于Spring Boot 2.x,Spring WebFlux和Project Reactor构建的。Gateway易在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤功能,例如:熔断,限流,重试等。Spring Cloud Gateway作为springcloud生态系统中的网
2021-03-24 13:56:51
530
原创 SpringCloud之Hystrix 服务熔断降级
1.分布式系统面临的问题:在微服务架构里,一个系统会有很多的服务。如下图:上图请求需要调用 A,H,I, P 四个服务,如果一切顺利没有什么问题,倘若其中某一个服务,机房着火,不幸挂掉了会怎么样?是不是每次调用这个服务的时候,都会卡住几秒钟,然后抛出—个超时异常。如果这是在高并发的场景下,大量请求涌过来,导致请求都卡在这里,没有其他线程去处理正常的服务,就会导致的恐怖的服务雪崩。1.1:服务雪崩:多个微服务之前调用的时候,假设服务A调用服务B和服务C,服务B和服务C又调用其他的微服务,这就是所谓的
2021-03-22 14:12:36
276
1
原创 SpringCloud之OpenFeign 服务调用
1.什么是OpenFeign?Feign是声明性的Web服务客户端。它使编写Web服务客户端更加容易。要使用Feign,创建一个接口并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并支持使用HttpMessageConvertersSpring Web中默认使用的注释。Spring Cloud集成了Ribbon和Eureka以及Spring Cloud LoadBalancer
2021-03-18 09:45:08
371
原创 SpringCloud之手写Ribbon轮询算法
Ribbon提供的负载均衡策略如下:今天看一下默认的轮询策略是如何实现的RoundRobinRule核心代码如下:public Server choose(ILoadBalancer lb, Object key) { if (lb == null) { log.warn("no load balancer"); return null; } Server server = null;
2021-03-17 10:58:09
299
原创 SpringCloud+Consul 实现服务注册
臧克家:“有的人…”Eureka:“滚”上编文章:SpringCloud+Zookeeper 实现服务注册,本编文章主要讲解SpringCloud+Consul 实现服务注册1.什么是ConsulConsul 是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司用Go语言开发。它提供了微服务系统中的服务治理,配置中心,控制总线等功能,这些功能可以根据需求单独使用,也可以一起构建全方位的服务网格,它提供了一种完整的服务网格解决方案。1.1 Consul的主要特点服务发现:Consu
2021-03-15 11:44:42
333
原创 SpringCloud+Zookeeper 实现服务注册
前言:臧克家:“有的活着,他其实已经死了”Eureka:“你怕是想直接念我的身份证吧!”Eureka2.0停更,一代新人换旧人!Eureka逐渐被Nacos,Consul,Zookeeper 替代,本文介绍Zookeeper 实现服务的注册1.Zookeeper 简介:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分
2021-03-12 13:08:22
441
1
原创 vue父子组件传值
在日常开发中,往往需要将一些数据从上层传递到下层比如:在一个页面中我们从服务器取得很多数据,其中一部分数据并非是我们整个大组件来展示的,而是需要我们的子组件进行展示,这个时候,并不会让子组件再次发送一个网络请求,而是直接让大组件将数据传递给小组件,用于小组件的页面展示。父传子–props父页面:parent.vue<template> <children :cmessage="message" :cdata="data"></children></te
2021-01-28 13:24:52
240
原创 Jmeter发送HTTP请求
上篇文章文介绍了jmeter的安装,本文主要讲解如何使用jmeter发送http请求更改为中文首先把语言更改为中文简体(我感觉这一步超级重要…),听我狡辩一下,不是说英文不认识我哈~,主要是中文让我倍感亲切,我是为了体谅大家,平时我都用英文的,不带去百度翻译的那种0.0通过 【Options】->【Choose Language】变更为简体中文创建线程组右键【Test Plan】->【添加】->【线程(用户)】->【线程组】这里可以配置线程组名称,线程属性等添加h
2021-01-26 12:03:46
751
1
原创 Jmeter安装介绍
“作为后端开发工程师,你竟然不会Jmeter?!”,项目经理来自灵魂的拷问,让我有点猝不及防!在那一刻,我不仅感觉我给广大后端工程师后腿,简直是被截了肢,从眉毛一下截肢的那种,这就是小公司的悲哀吧,啥都没有,还他么啥都想有!哪怕有 一个测试,也不至于整个公司没有一个妹子不是?也不至于一群单身狗嗷嗷待哺不是?Jmeter是什么?Apache JMeter™应用程序是开源软件,是一个100%纯Java应用程序,设计用于加载测试功能行为和度量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能
2021-01-25 17:09:51
117
原创 websocket+sockjs公告通知【基于STOMP协议】
前言:消息推送技术,之前你可能用过 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。有了长连接的websocket,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行
2021-01-21 11:52:18
334
原创 vue基于后台返回路由表动态加载左侧菜单
作为后端的CV工程师,此篇文章第一次写关于vue的文章,术业有专攻,倘若有前端开发者发现此篇文章有哪里不当之处,望君指出,不胜感激!首先静态路由部分import Vue from 'vue'import Router from 'vue-router'import Layout from '../layout'Vue.use(Router)var constantRouterMap=[ {path: '/', name: 'Login',hidden:true, component: r
2021-01-18 15:52:31
2118
5
原创 layui文件上传组件upload控制上传图片数量
业务场景:多文件上传预览图,最多可上传五张图片,在使用layui的upload上传组件时,before方法进行判断图片的数量,但是发现return false 并不会阻止文件上传,如下图所示百度发现大都是一些修改源码的方法,今天介绍下通过delete files[index] 将文件从队列中删掉,即可达到阻止上传的效果代码如下: upload.render({ elem: '#test-upload-more' ,url: api+'/sys/fi
2020-11-16 17:06:42
4935
原创 Mybatis-plus 出现 WHERE null=?
问题描述:mybatis-plus查询时selectById方法查询结果出问题:执行的sql如下:解决方案:这是因为mybatis-plus代码生成时,实体没加@TableId注解,加上即可
2020-10-10 11:09:19
3790
3
原创 MyBatis-Plus之乐观锁插件
主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前version取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果version不对,就更新失败插件配置:@Configurationpublic class MybatisPlusConfig { /** * mybatis-plu
2020-09-10 13:19:50
535
2
原创 Layui排序只排序当前页的解决方式
layui的默认排序只排序当前页,如何给所有的数据排序呢?首先在table实例中关闭自动排序接下来就是自己设定排序规则://监听排序 设置排序规则 table.on('sort(test)', function(obj){ table.reload('a', { initSort: obj //记录初始排序 , where: { field: obj
2020-08-26 11:35:35
2235
2
原创 MyBatis-Plus分页查询及动态sql处理
导入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <depen
2020-08-24 15:14:21
2774
原创 MyBatis-Plus代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,身为CRUD工程师的我内心慌的一批添加依赖:MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖<dependency> <groupId>com.baomidou</groupId&g
2020-08-20 15:23:19
234
原创 ngrok内网穿透
ngrok是一款内网穿透工具,可以将内网IP映射为一个随机域名,这样就可以通过域名访问你本地的项目首先需要注册一个账号:注册地址:注册注册登录完成后:隧道管理 -> 开通隧道选择免费的,当然可以选择付费版,体验会更加好填写好信息:确认添加之后,需要下载客户端选择适合自己的版本下载好打开启动工具,输入隧道id完成后就可以根据这个地址访问你本地启动的项目了...
2020-08-19 16:57:16
127
原创 MyBatis-Plus之CRUD
简介:MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特征:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lamb
2020-08-19 14:11:55
988
原创 Shiro入门案例之认证
Shiro 简介:Apache Shiro 是 Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等,而且 Shiro 的 API 也是非常简单。架构图:...
2020-08-18 17:33:14
140
原创 阿里云短信服务
短信验证在系统中用到的还是很多的,简单介绍一下阿里云短信服务。应用场景:短信验证码APP、网站注册账号,向手机下发验证码; 登录账户、异地登录时的安全提醒; 找回密码时的安全验证; 支付认证、身份校验、手机绑定等。系统信息推送向注册用户下发系统相关信息,包括: 升级或维护、服务开通、价格调整、 订单确认、物流动态、消费确认、 支付通知等普通通知短信。推广短信向注册用户和潜在客户发送通知和推广信息,包括促销活动通知、业务推广、新产品宣讲、会员关怀等商品与活动的推广信息。增加企业产品曝光率、提高产
2020-08-14 14:22:52
432
原创 快递鸟免费物流查询接口
快递鸟物流接口支持每天500次免费查询,但是免费版只支持中通,圆通,申通,这三家快递的物流信息查询,那不能查询其他家快递怎么办?放心,只要人民币给到位,什么姿势它都会!使用首先申请一个快递鸟账号,下附地址:http://www.kdniao.com/reg注册登录后就可以看到自己的基本信息请求系统级参数说明:备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选接口参数:请求内容字段定义:返回参数定义:详见文档:http:/
2020-08-11 15:56:40
1637
原创 Chorme直接动态修改前端响应代码[js css html jsp]
原理:Chorme检测到开启本地覆盖远程后,会先加载本地的url地址信息,然后覆盖远程服务器地址,达到动态秀改资源的目的。操作流程:1、打开浏览器要修改的页面的url(非生产,仅做测试)2,F12开发者工具,在【Rources】左侧层级中选择要修改的文件内容,然后选择【Overrides】覆盖。3.选择要持久化到本地的文件夹目录4,允许开启覆盖权限5,点击【允许】后,下图右侧...
2020-05-05 17:43:48
1569
原创 ActiveMQ快速入门
什么是ActiveMQ:官方解释如下:Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息传递服务器。它支持行业标准协议,因此用户可以通过广泛的语言和平台从客户选择中受益。可以使用C,C ++,Python,.Net等进行连接。使用无处不在的AMQP协议集成您的多平台应用程序。在Websocket上使用STOMP在Web应用程序之间交换消息。使用MQTT管理您的IoT设备...
2020-04-19 20:25:37
404
原创 Linux下ActiveMQ安装启动
ActiveMq安装:解压安装:进入bin目录下,使用命令 ./activemq start 启动activemq:使用命令 netstat -anp|grep 61616 来查看activemq默认端口是否启动查看Linux的ip在保证windows和Linux的情况下(关闭防火墙)通过前台访问,出现如下页面,则表示安装启动成功点击Manage ActiveMQ brok...
2020-04-18 17:05:58
2880
2
原创 JAVA8之Lambda
2014年3月份JAVA8发布,时至今日,我还在用着JAVA6,瞬间感觉不只是给广大程序员拖了后腿,简直就是截了肢。。Java8主要的新特性:Lambda表达式,方法引用,流,默认方法,以及日期和时间的API首先引入一个编程概念:行为参数化不明白?没关系,举个栗子:“憨憨,这有个需求,把农场的红苹果选出来准备出售”“额,你是不是怀疑我的能力?”“…”很快,写出来了public st...
2020-04-03 21:35:24
226
原创 PreparedStatement VS Statement
联系:PreparedStatement 接口是 Statement 的子接口,都可用来SQL查询区别:1.代码的可读性和可维护性. Statement 的 sql 拼接属实恶心心~2.PreparedStatement 可以防止 SQL 注入3.PreparedStatement 可以处理 Blob 类型的数据4.PreparedStatement 能最大可能提高性能:(Oracle...
2019-12-04 22:04:20
272
原创 选择排序
选择排序的基本介绍:选择排序也属于内部排序法,是从想要排序的一组数据中,按照指定的规则(顺序,逆序)选出某一个元素,再依照规定交换位置达到排序的目的。选择排序是不稳定的排序方式。选择排序思想:选择排序也是简单的排序算法,它的基本思想为:第一次从arr[0]~arr[n-1]中选取最小值(最大值),与arr[0]交换;第二次从arr[1]到arr[n-1]中选取最小值(最大值),与arr[1]...
2019-09-22 14:35:03
268
原创 冒泡排序--咕噜咕噜
冒泡排序的基本介绍:冒泡排序是简单的一种算法,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果发现逆序则交换。走访元素的工作是重复地进行直到没有相邻元素需要交换,完成排序。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。冒泡排序算法的原理:1.比较相邻的元素。如果第一个比第二...
2019-08-18 12:39:57
1136
11
原创 时间复杂度
时间频度一个算法执行的时间与算法中语句的执行次数成正比例,也就是说,一个算法语句执行次数多,所花费的时间也就越多。一个算法中的语句执行次数,成为语句频度或者时间频度,记作T(n)。举例:比如计算1-100的和 : int sum=0; int end=100;使用循环:for(int i=1;i<=end;i++){sum+=i;}此时的T(n)=n+1 ;直接计算:...
2019-08-11 14:35:11
429
8
原创 递归
递归的概念:递归,就是在运行的过程中调用自己,每次调用时传入不同的变量。使用递归可以我们解决复杂的问题,同时也使得我们的代码更加简洁。递归的调用规则:1.当程序执行一个方法时,就会开辟一个独立的空间(栈)2.每个空间的数据是(局部变量)独立的,不会相互影响。3.如果方法中使用的是引用类型的变量(比如 数组),就会共享该引用类型的数据。4.递归必须向退出递归的条件逼近,否则就是无限递归,...
2019-08-04 15:09:43
210
14
原创 约瑟夫环(java环形单链表实现)
问题来历:约瑟夫问题是个有名的问题:有序号1,2…n个程序员围成一个大圈圈,从编号为K(1<=k<=n)的程序员从1开始报数,数到m的那个程序员出列,可以去挑选对象(真对象,不New不Joke),他的下一位程序员又从1开始报数,数到m的人又出列挑选对象,美滋滋~,依次类推,到最后一个程序员不给对象,只给了一堆bug,并在程序上线的时候祭了天。。。额。。是一个凄美的爱情故事!...
2019-07-20 12:03:14
1066
原创 单链表的反转
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(next域),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。实现单链表的反转,即:反转后为:思路如下:1.先定义一个节点reverseHead2.从头到尾遍历原来的链表,每遍历一个节点就将其取出,并放在新链表re...
2019-07-07 21:25:28
166
原创 java实现二分查找
二分法查找也叫折半查找,适用于数据量较大时,但是数据需要先排好顺序!实现思路:1.首先找到中间值,如果要查找的数据就为中间值,你是真的牛皮!2.如果要找的数据小于中间值,则在左边较小的数据里查找!3.如果要找的数据大于中间值,则在右边较大的数据里查找!非递归java实现: public class BinaryTest { public static void main(Strin...
2019-06-30 11:40:00
201
原创 稀疏数组和二维数组的相互转换
所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容!比如我们的五子棋游戏,要记录棋子的位置,需要用数组来实现,没有棋子的地方就是0,造成了大量的资源浪费,这时我们可以使用稀疏数组!代码如下:public class SparseArra...
2019-06-25 22:25:54
297
原创 Echarts动态数据加载
一.饼形图html页面:<script src="../scripts/echarts.min.js" type="text/javascript"></script><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width:100%; height:400px;"></d...
2019-04-09 17:24:18
1553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人