自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 matlab常见错误和解决办法

1、matlab报错:总是报cl.exe找不到。解决方法:安装和matlab版本匹配的。比如matlab2016b 可以安装VS2013。亲测可以解决问题。2)matlab报错:索引超出矩阵维度出错原因:在引用矩阵元素的时候,索引值超出矩阵应有的范围解决办法:检查所定义数组的维数,和引用的范围。...

2019-11-29 15:42:16 6053

原创 RPC框架GPRC入门浅析

RPC框架中数据的传输通常有两种:二进制传输,和文本类传输 。二进制传输的优点是:传输性能好,因为要写协议文件,所以更严谨。缺点是:二进制难以跨语言,文本类传输的优点是:可以跨语言,而且由于不用写协议文件,使用更灵活 。缺点是:传输性能稍微要差一些。GRPC的特点是不仅采用了二进制传输,保证了传输性能,还满足跨语言,保证了灵活性。序列化GPRC的二进制序列化协议是Protoco...

2019-11-26 12:30:13 513

原创 java中的Docker

Docker和虚拟机的区别看起来Docker和虚拟机有很多相似的地方。他有自己的shell,能独立安装软件包,运行起来和其他容器互不干扰。不过Docker并不是完全的虚拟化技术,而是一种轻量级的隔离技术。Docker仅仅在Linux内核上面,进行了有限的隔离和虚拟化,没有像传统虚拟化软件一样,独立运行一个新的操作系统。Docker基于namespace,给每个容器提供了单独的命名空间,对网络...

2019-11-14 09:08:59 341

原创 Performance Evaluation Methodology for Long-Term Visual Object Tracking阅读笔记

跟踪架构评估A整体架构分析我们通过以下四个方面来分析架构选择对成功的长期跟踪的重要性:(i)探测器设计,(ii)短期组件设计,(iii)使用的特征和(iv)视觉模型适应策略。探测器设计:结果表明,基于cnn的测速仪具有良好的性能。相关滤波器广泛用于短期跟踪器,但通常不用于图像范围内的检测,除了在FCLT中。从图中可以看出,在FCLT中使用的基于dcf的检测器可能是长期跟踪器设计中一...

2019-11-11 13:49:52 315

原创 超级搜索术,提升解决问题的能力

现实世界中遇到的所有问题,几乎都有别人遇到相同或者类似的问题,也有类似的解决办法。我们要做的就是找到类似的问题,和解决方法。那么问题来了,怎么找到。这就需要提升搜索能力。第一步:准确描述问题。尝试用问题描述问题,初步搜索,找到合适的关键词,能命中跟多相关的内容。我们想问的问题,也许不是面临的的最核心的问题。如何找到最核心的问题,思考这个问题是不是不解决也没多大影响,如果不解决问题很大,...

2019-10-28 23:13:02 275

原创 策略模式

解决什么问题如果有多种策略,可能使用多种策略,为了保证使用多种策略的灵活性,采用策略模式解决这个问题。主要结构策略模式主要包括三个角色:一:Context角色屏蔽高层模块对策略,模块的直接访问 ,封装可能存在的对象二:Strategy角色通常是借口,定义一些策略的方法和属性三:ConcreteStrategy具体策略角色 实现具体的策略操作策略模式实际使用实际中,单独使用的地...

2019-09-26 18:53:00 303

原创 责任链模式解析

为什么有责任链模式传统的软件模式,用户发起请求,需要知道这个请求具体是有谁来处理,如果整个请求处理流程实际多个处理者,那么用户发起请求就需要知道所有的请求者。这样的缺点就是向用户暴露了太多的内部细节,不安全,而且也造成了系统的复杂性。责任链模式就是解决这个问题。责任链的核心就是作为请求者不需要知道请求是由谁来处理的,只需要把请求发给第一个处理者,最终会返回一个处理后的结果。责任链模式屏蔽...

2019-09-25 21:43:51 191

原创 技术让零售更方便

传统的零售,顾客可能需要从家里跑到亲自到店面里,到货架上挨个找商品,这个选择的过程少说也有几个小时,最后可能也没找到想要的商品。采用互联网技术,把店铺信息,商品信息放到网络上,顾客在家里,只需要在在手机上打开软件,就能看到很多家店铺,每一家店铺里面的各种商品一目了然,在手机上分分钟把超市商品逛一遍,很容易找到想要的商品,然后下单完成购买。相比于传统的零售模式,用互联网技术和传统零售结合的新模式...

2019-09-23 10:42:13 151

原创 SpringBoot原理解析第一篇

前言现在公司里做项目基本都是用SpringBoot来做,但是仅仅停留在会使用的阶段是远远不够的。作为一个有技术好奇心的程序员,肯定不满足于仅仅会用,自然会想要了解这么好用的框架,底层是怎么设计出来的,有哪些好的设计思路。学习大牛当初设计框架的优秀思想,自己在以后的软件设计当中,也尝试使用这些好的设计思路。这样坚持几年,自己也就成了别人眼中的大牛了,哈哈。既然学习原理这件事如此重要,那么怎...

2019-09-22 00:33:19 163

原创 翻转单链表java实现

在网上找了一些代码,很多没有写测试用例跑结果,有的代码本身有错误,博主在本地写了一份有测试用例的代码,实际测试可以正确运行。代码如下package com.company;import java.util.LinkedList;public class ReverseLinkedList { //翻转单链表 static class Node{ Node ...

2019-07-19 16:34:49 139

原创 八大排序总结和java实现

八大排序分类按照稳定性分类:稳定性指的是,在等待排序的一堆数当中,有几个值相同的元素,排序之后,如果相等元素之间的先后顺序不会发生改变,排序就是稳定的。 如果先后顺序发生改变,排序就是不稳定的。稳定的排序算法有:冒泡排序,插入排序,归并排序,基数排序。不稳定的排序算法有:希尔排序,选择排序,堆排序和快速排序。按照时间复杂度分类:O(n^2)级别:插入排序,选择排序,冒泡排序 ,希尔排序...

2019-07-19 10:06:13 102

原创 如何把文章的结构变得清晰

先看结构不清晰的文章长什么样。比如写是不是要逃离北上广。第一段写北上广工作胜过压力有多大,然后写想要离开这里,去小城市享受悠闲的生活。接着写自己了解的小城市人际关系复杂,办事需要找各种关系,找熟人,收入低,怀念大城市的好,又说大城市太累,自己的能力优先也难以做出成绩。看完这样的文章,一脸茫然,完全不知道作者想说啥,逻辑混乱。写文章,首先要确立主要思想是什么。比如想表达:大城市发展机会多,但是...

2019-07-19 10:03:59 1516

原创 Redis持久化机制 RDB和AOF

为什么需要持久化Redis是基于内存的数据库,它把数据存储在内存当中,如果不想办法把数据存放在磁盘当中,一旦Redis进程退出,内存中的数据也就消失了。为了解决这个问题,Redis提供了两种持久化方式,分别是RDB(Redis Database)和AOF(Append Only File)。RDB持久化RDB持久化是通过保存key-value对来保存Redis数据库状态。RDB文件的创建...

2019-07-18 14:55:45 118

原创 Linux进程调度浅析

前言Linux调度器把进程分为两大类:普通进程和实时进程普通进程可以细分为:I/O密集型:I/O密集型的进程大部分时间用来提交I/O请求或者等待I/O请求。比如等待鼠标和键盘操作的程序就是IO密集型的。CPU密集型 :CPU密集型的进程大部分时间用在执行代码上,比如视频编码和解码的程序是CPU密集型的。Linux系统的调度程序更倾向于调用I/O密集型的进程,这样可以提供更好的程序响应...

2019-07-07 10:40:48 139

原创 Linux进程管理分析

前言本文分析的内容包括:进程的概念和一般特性,为什么重要进程和线程之间的关系LInux如何存放和表示进程(用task_struct和thread_info)如何创建进程(通过fork(),最终是clone())怎么把新的执行映像装到地址空间(通过exec()系统调用)怎么表示进程的层次关系父进程怎么收集后代的信息(通过wait()系统调用)进程如何消失(强制调用或者主动调用exi...

2019-07-06 23:28:20 220 1

原创 换钱的最小货币数 java

前言网上有不少关于这个题目的文章,但是有很多写的稍显学究,有点绕,代码的具体讲解和注释也不够详细,本文中对代码做了详细注释,还有思路解释,更容易理解。题目给定数组arr, arr中所有的值都为正数且不重复。每个值代表一中面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。思路举例子arr=[5,2,3], aim=20不使用当前货币a...

2019-06-05 17:00:47 1192

原创 ajax技术浅析

普通的表单提交,会发生页面跳转,用户体验不要。使用ajax是异步方式,不需要发生页面跳转。ajax的全程是Asynchronous JavaScript and XML,也就是异步的JavaScript和xml。Ajax原理简单来说既是通过XMLHTTPRequest对象来向服务器发起异步请求,从服务器获得数据,然后JavaScript来操作DOM而更新页面。可以把服务端看成一个数据接口,他...

2019-04-26 20:56:50 104

原创 Executor框架

Executor框架是负责java线程的执行的,是一个执行机制。在上层,java多线程程序会把应用分解为若干个任务,然后由Executor框架把任务映射到线程池里面的线程。在底层,操作系统的内核负责把这些线程映射到硬件处理器上。也就是应用程序通过Executor控制线程的调度,而底层的调度是通过操作系统的内核来完成的。Executor框架的结构主要包括三大部分:任务: 包括执行任务需...

2019-04-24 22:29:16 110

原创 jvm内存划分

为什么要关注jvm内存划分因为线上系统写好代码,部署之后,工程师就需要开始关注OOM,GC这些jvm的东西了,这就需要对jvm内存有一定了解才能做好这些工作。区域划分可以划分成两类:一类是线程私有的:程序计数器,虚拟机栈,本地方法栈。另一类是线程共享的:堆,方法通过代码来理解更直观 ,比如简单的HelloWorld程序public class HelloWorld { ...

2019-04-23 15:27:51 81

原创 直接内存(堆外内存)

Java中的内存分为两个部分,一部分是不需要jvm管理的直接内存,也被称为堆外内存。堆外内存就是把内存对象分配在JVM堆意外的内存区域,这部分内存不是虚拟机管理,而是由操作系统来管理,这样可以减少垃圾回收对应用程序的影响。使用通过NIO中的allocateDirect这样的API可以Java堆外分配内存空间。然后通过Java虚拟机里面的DirectByteBuffer可以引用和操作这些堆外内存...

2019-04-23 13:24:56 6556

原创 feign组件工作原理

程序启动时,检查是或否有@EnableFeignClient注解,如果有这个注解,就开启包扫描,扫描被@FeignClient注解的接口。找到这样接口之后会把接口名和注解信息一块取出来,,赋值给BeanDefinitionBuilder,然后根据BeanDefinitionBuilder得到BeanDefinition然后把BeanDefinition注入到IOC容器当中。...

2019-04-22 23:09:02 1903

原创 zipkin的工作原理浅析

什么事Zipkinzipkin是一个分布式的跟踪系统,由Twitter公司开发的,是根据Google发表的那一片论文Dapper, a Large-Scale Distributed Systems Tracing Infrastructure来设计的。zipkin的主要功能是收集来自各个系统的监控数据。zipkin朱啊哟包括四个模块:Collector 接受或者收集各个应用传输的数据S...

2019-04-22 13:39:52 5895 2

原创 ribbon源码解析

ribbon的源码

2019-04-21 23:49:50 91

原创 springcloud之服务网关zuul

为什么需要zuul服务端有很多个微服务,服务之间还可能存在相互调用的关系。如果全部对外暴露,不安全,而且客户端调用的时候也比较麻烦。解决方法就是使用服务网关zuul。网关作为所有request请求的统一入口,外界的系统调用api接口的时候,都是调用服务网关的接口,外界系统不需要知道多个微服务之间的调用关系,这样也可以保护内部服务的接口,防止外界系统直接调用一些接口,导致一些买那敏感信息泄露。...

2019-04-19 21:45:16 218

原创 springcloud熔断器Hystrix

为什么有HystrixHystrix的工作原理

2019-04-19 21:10:21 99

原创 springcloud Bus自动刷新配置

为什么需要springcloud bus微服务系统有很多个服务,一个服务可能有多个实例,每次更改配置都要把所有的服务实例重启,很麻烦,想要解决问题是如果更改配置之后,不需要重启应用就能动态刷新配置。工作原理如何使用在config server的pom文件中引入依赖,<dependency> <groupId>org.springframework.cloud...

2019-04-19 19:40:20 280

原创 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure论文阅读笔记

这篇论文谷歌公司2010年发表的,这是业内实现链路跟踪的理论基础,有很大的参考价值,作为一个技术人员,不应该仅仅满足于会用别人开发的链路追踪组件,应该读一下重要的论文,提升对工程技术的理解能力,理解工程设计背后的理论。原文可以再网上搜,免费下载,读一下顺便可以锻炼英文阅读能力。这篇论文主要经dapper是如何设计的,dapper是一个在Google生产环境下应用的分布式系统追踪服务。需要追踪的...

2019-04-19 19:31:59 423

原创 springcloud config配置中心

为什么需要配置中心开发的时候,每个服务都有配置文件,分散在各个模块里,管理起来,修改的时候比较麻烦,所以把配置文件集中起来,统一管理能提高效率。管理配置文件的组件有多种,比如springcloud的config组件,阿里的Diamond,这里了springcloud的config组件。工作原理首先配置服务Config Server会读取配置中心的配置信息,这个配置中心一般设置为远端的gi...

2019-04-19 11:09:36 71

原创 springcloud 服务追踪

springcloud提供了一个组件Sleuth,可以为分布式系统系统提供链路追踪。为什么需要Sleuth一个微服务系统通常有很多个服务单元,业务比较复杂,如果出现了错误或者异常,不容易定位。因为一个请求可能调用多个服务,服务之间有可能存在比较复杂的调用关系,这就导致了问题难以定位。为了解决这个问题,就需要进行链路追踪,跟踪一个请求有哪些服务参与,这些服务参与的顺序是什么样的,做到每一个请求...

2019-04-18 21:40:19 141

原创 秒杀优化 流量削峰

为什么要削减(xue jian)峰值?也就是峰值的坏处有哪些?服务器的处理资源是恒定的,出现峰值的时候,忙的处理不过来,没有峰值闲的时候,处理资源闲着造成资源的浪费。 如果削减峰值,一个好处是可以让服务端的处理更加平稳,第二个好处是可以节省服务器的资源,节省成本。如何削减峰值?削减峰值的处理方式主要有三种。排队,答题,分层过滤。 总的来说他们的不同点是:排队是对大量的请求进行缓冲,答题...

2019-04-18 19:53:39 506

原创 秒杀优化 动静分离

一个技术关键点:数据的动静分离为什么做数据的动静分离?对于一个秒杀系统来说,在秒杀的场景下,对系统的要求就是三个方面:一是快,二是准,三是稳定。 如何让系统的更快,主要有两个思路:一是提高每一次请求的效率,二是减少没有必要的请求。 动静分离目的就是让系统更快。什么是动静分离?先举个例子:在没有采用动静分离之前,最早期的秒杀系统是需要刷新整体页面的,后来对系统优化之后,只需要点击一个刷...

2019-04-18 19:51:42 319

原创 秒杀系统的页面静态化

商品详情静态化秒杀成功就跳转到商品详情的静态页面,暂时受条件所限,没法把静态页面存到CDN上,暂时存到浏览器上,在applicationproperties文件中添加配置spring.resources.static-locations=classpath:/static/,这样静态资源就直接从浏览器的缓存里面取,不和服务端发生交互,访问商品详情,打开火狐浏览器的开发者模式,从transfer...

2019-04-17 22:46:27 1018 1

原创 秒杀系统的接口优化

思路:减少数据库访问1、系统初始化,把商品库存加载到redis2、收到请求在redis预减库存,库存不足,直接返回,可以在redis里面做内存标记(这一步是很大的优化,只要库存减成零,后面的请求无论是100个还是一万个都是直接失败,压力很小),否则进入33、异步下单:如果有库存,不是直接连接数据库写入,而是对RabbitMQ操作,请求入队,立即返回排队中,类似我们在12306买火车票,并不会...

2019-04-17 21:35:02 303 1

原创 秒杀系统优化之缓存

1、页面缓存页面缓存就是如果访问一个页面,不是直接让系统来渲染,二是先从缓存里面取,如果取到了就返回,如果没有就手动渲染这个模板,然后把渲染结果输出给客户端。然后把结果缓存到redis里面,下一次请求的时候就可以直接从缓存里面取这个页面了。页面缓存一共分为三个小的步骤:1.取缓存 2.手动渲染模板 3.把结果输出。对于商品列表来说:首先访问to_list,然后渲染goods_list这个模板...

2019-04-15 09:31:34 349

原创 秒杀系统 springboot + Mybatis登录功能实现

普通的登录方法先写一个login界面login.html,页面时基于bootstrap来写的,用这个框架只需要写号HTML标签就可以得到一个比较好看的界面,比较省事儿。使用thymeleaf组件引入静态文件的方式就是用@{},艾特符号加一个大括弧。在登录界面,有两个需要输入的值,一个是用户名也就是11位的手机号,另一个是密码,设置的是6位的数字,点击登录按钮之后,就调用doLogin()方法...

2019-04-12 08:24:28 180

原创 深入理解计算机操作系统学习笔记、二

进程的定义进程的经典定义定义是一个执行中的程序的实例。系统中的每一个程序都运行子啊一个进程的上下文中,上下文是有程序正确运行所需要的各种状态决定的,这个状态包括保存在内存中的代码和数据,通用寄存器中的内容,程序计数器,环境变量还有文件描述符。每一次用户在shell里面输入一个程序的名字,运行程序的时候,shell就会创建一个进程,然后在这个进程的上下文中运行这个程序进程和线程的区别进程和线...

2019-01-21 22:42:00 138

原创 mysql必知必会 学习笔记

第四章对SQL关键字用大写,对所有的列和表名使用小写,这样代码更容易阅读和调试1、检索单个列SELECT prod_name FROM products;2、检索多个列 SELECT prod_id, prod_name, prod_price FROM products;3、检索所有列 SELECT * FROM products;4、检索所有的行 SELECT vend_id FRO...

2019-01-16 20:54:59 153

原创 mysql常用命令

1、连接数据库mysql -uroot -p 然后按照提示输入密码,即可登入数据库2、显示已有的数据库show databases; 会打印出已经存在的数据库的名字3、创建新的数据库create database test;此命令创建新数据库testuse test; 选用test数据库show tables; 显示数据库的所有表4、创建表CREATE table msg_per...

2019-01-16 19:50:48 71

原创 springcloud常用组件

springcloud常用组件有:1、服务注册和发现组件Eureka2、熔断组件Hystrix3、负载均衡组件Ribbon4、路由网关Zuul上述的四个组件都是来自于Netflix公司,通常称为Spring Cloud NetflixRibbonRibbon简介负载均衡是把任务分摊到多个单元上执行,缓解压力。常见的负载均衡方式有两种:一种是独立进程单元,通过负载均衡策略,把进程...

2019-01-08 19:58:50 3037

原创 抽象类和接口的区别

接口是对各种行为的抽象,用接口可以定义API,可以把方法的定义和具体实现分开,便于后期维护。接口不能被实例化,在接口里的方法要么是抽象方法,要么是静态方法,没有非静态的方法。抽象类是不能被实例化的类,类的前面要加abstract关键字,除了不能被实例化,其他方面和普通的Java类没有多大区别。...

2018-12-18 00:30:58 78

空空如也

空空如也

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

TA关注的人

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