自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

懂幸福,爱生活

关注风控系统,算法工程,分布式存储。https://github.com/leaguenew

  • 博客(146)
  • 论坛 (1)
  • 收藏
  • 关注

原创 【机器学习实战之三】:C++实现K-均值(K-Means)聚类算法

聚类是一种无监督的学习,它将相似的对象归到同一个簇中。它有点像全自动分类(类别体系是自动构建的)。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。本文要介绍一种称为K-均值(K-means)聚类的算法。之所以称之为K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。

2015-01-08 17:18:01 20574 9

原创 【推荐系统实战】:C++实现基于用户的协同过滤(UserCollaborativeFilter)

好早的时候就打算写这篇文章,但是还是参加阿里大数据竞赛的第一季三月份的时候实验就完成了,硬生生是拖到了十一假期,自己也是醉了。。。找工作不是很顺利,希望写点东西回顾一下知识,然后再攒点人品吧,只能如此了。一、问题背景二、基于用户的协同过滤算法介绍三、数据结构和实验过程设计四、代码

2014-10-03 20:18:53 7941 10

原创 【机器学习实战之二】:C++实现基于概率论的分类方法--朴素贝叶斯分类(Naive Bayes Classifier)

C++实现基于概率论的分类方法--朴素贝叶斯分类(Naive Bayes Classifier)

2014-02-22 16:53:56 10025 2

原创 【机器学习实战之一】:C++实现K-近邻算法KNN

本文不对KNN算法做过多的理论上的解释,主要是针对问题,进行算法的设计和代码的注解。KNN算法:优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称性。工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征

2013-11-24 23:08:01 17923 16

原创 【Dubbo】dubbo线程池被打爆事故及分析

记一次线上故障,dubbo线程池被打爆导致服务不可用,基于此再学习一下线程模型和优化。一、翻车现场 某个周末,收到报警异常报警,翻看日志如下:[2020-10-xx xx:xx:xx] api name = xxx, method = xxx, param = xxx,org.apache.dubbo.rpc.RpcException: fail to invode the method...Caused by: java.util.concurrent.Exe...

2021-01-10 12:34:33 30

原创 【大道模式】享元模式-FlyWeight Pattern

一、什么是享元模式? 运用共享技术有效地支持大量细粒度的对象。二、为什么要用享元模式? 需要降低细粒度对象给系统带来的内存压力。三、如何实现享元模式? 对象池技术,用于减少创建对象的数量,以减少内存占用和提高性能,通过hashmap保存对象,代码模板:public class FlyWeight { private HashMap<String, Object> flyweight = new Hash...

2020-12-05 21:46:33 36

原创 【稳定性】混沌工程

1.什么是混沌工程?在可控的范围和环境下,通过注入故障,来验真系统的对于故障的容错手段,从而持续不断提升系统的稳定性和高可用性。2.为什么要混沌工程?发现系统弱点,来提升系统稳定性和可用性。3.如何实践混沌工程?以下原则描述了应用混沌工程的理想方式(源自 Netflix 在产生环境中对系统弹性测试的经验总结:http://principlesofchaos.org/): 原则 说明 建立一个围绕稳定状态行为的假说 ..

2020-10-25 18:20:22 34

原创 【稳定性】FMEA方法在系统可用性设计上的应用

最近在跟进软件系统的交付质量专项,需要解决的就是在软件交付之后出现故障过多的问题,这是一个较为宏观的问题,而有一个核心的点就在于系统可用性方案设计上的问题,设计上有了风险隐患点,测试上大概率也无法测试出风险隐患点(软件质量是设计出来的,不是测试出来的),那么上线之后就必然会出现问题,因此需要有一个方法来找到系统可用性设计上的风险隐患点,那么在系统设计的过程中尽量规避它们,同时能为测试用例提供明确的方向,这个方法就是FMEA。一、什么是FMEAFMEA,Failure mode and ...

2020-10-25 18:08:15 56 1

原创 【Spring】SpringBoot配置多Redis数据源

一、需求背景 最近在做项目的时候需要访问redis多数据源,做个记录。二、如何做的2.0 配置文件bootstrap.yml:spring: application: name: cloud-cros devtools: restart: #热部署生效 enabled: true #设置重启的目录 ...

2020-09-26 12:29:18 39

原创 【大道模式】外观模式-Facade Pattern

当你的系统需要分层设计 或者 需要在子系统和客户端之间建立一个高层接口使得子系统更容易复用时,就需要考虑使用外观模式了。基本介绍:1.外观模式(Facade),也叫"过程模式":外观模式为子系统中的一组接口提供一个一致(稳定)的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。2.外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。3.当系统需要进行分层设计时,可以考虑Facade模式。...

2020-08-08 13:15:37 53

原创 【Redis】Redis最大连接数maxTotal设置过小的问题

最近由于不合理的配置了redis中的最大连接数导致了线上服务间歇性不可用的问题,问题无小事,稳定大于一切。一、结论 先直接说结论:并发量激增,redis最大连接数过小,导致获取redis连接超时,超时导致大量请求阻塞,从而导致客户端因超时主动关闭连接,服务端大量请求阻塞,无法关闭连接,慢慢积累出现close_wait,大量close_wait出现,旧连接不释放,新连接无法创建,导致没法对外提供服务。 方案:1)redis连接池要根据具体的业务量进行设置,太大连接数过多...

2020-06-27 18:16:22 4290

原创 金字塔结构式表达利器

众所周知,语言传递存在严重的损耗,同一个事情A,小明给小王表达,小王理解成B,小王给小红表达,小红理解成C。职场中,如何在有限时间内突出重点、思路清晰、层次分明的表达观点,一直是大家面临的挑战之一。在这里向大家介绍深得人心的金字塔结构式表达技巧,供大家参考。一、金字塔结构式表达的理念 "以听众为中心,让听众听懂"。这是沟通的本质,也就是所谓的"道",下面说的具体的方法都是所谓的"术"。沟通是否达到效果,不是讲的人说了算,而是听的人说了算。在每次表达中我们都需要秉承以...

2020-06-14 11:21:39 145

原创 【大道模式】策略模式-Strategy Pattern

当你的代码中出现大量的if else的时候,是时候考虑一下策略模式了。基本介绍:1)策略模式中,定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。2)这算法体现了几个设计原则:第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)动机(Motivation):>在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将...

2020-05-31 19:29:58 79

原创 【Spring】Mybatis Chinese Character Empty Problem

在测试项目的过程中有中文条件查询,但是发现通过spring mybatis竟然查询不到结果,即结果为空,需要解决这个问题。先说一下这个问题的解法:1.在spring的数据库配置中需要使用utf8编码,即:useUnicode=true&characterEncoding=utf8jdbc.driver.default=com.mysql.jdbc.Driverjdbc.url.default=jdbc:mysql://xxx:3306/database?useUnicode=...

2020-05-28 20:51:09 81

原创 【大道模式】拦截过滤器模式-Intercepting Filter Pattern

最近在交接项目的过程中看到了拦截过滤器模式,用于在核心请求的"前后处理",比如在请求前对参数进行校验、做请求统计、数据埋点;在请求后记录返回结果、打印日志、处理日志(写入ES,HBase等),有点类似于aop的环绕around通知。核心组件:Filter(过滤器):在处理请求之前或者之后执行相应动作。Filter Chain(Filter Chain):一组过滤器的组合,按照添加的顺序依次执行。Target:目标处理对象Filter Manager:过滤管理器管理...

2020-05-23 19:18:40 109

原创 【Spring Cloud Feign】超时重试总结

最近在生产环境中出现配置了ribbon的重试参数,但是没有生效,表现就是下游服务上线的过程中,上游服务总是拿到超时降级的错误码,配置如下:hystrix: threadpool: group: coreSize: 20 maximumSize: 100 allowMaximumSizeToDivergeFromCoreSize: ...

2020-05-02 22:03:36 427

原创 【Redis】高可用之复制

redis集群中的从服务器同步主服务器上的数据称之为:复制。一、旧版复制功能的实现(2.8以前)redis的复制功能分为同步(sync)和命令传播(command propagate)两个操作。>同步:将从服务器的数据库状态更新至主服务器当前所处的数据库状态。>命令传播:用于在主服务器的数据库状态被修改,导致主从服务器的数据库状态出现不一致时,让主从服...

2020-02-03 19:46:36 100

原创 【Spring Cloud Hystrix】【三】:资源隔离

Hystrix使用“舱壁模式”实现线程池的隔离,它会将每一个依赖服务创建一个独立的线程池,这样就算某个服务出现延迟过高的情况,也只是对该依赖服务的调用产生影响。 如HBASE Client超时机制优化一文的场景中提到:生产服务遇到过一个故障,大体来说就是hbase集群故障,在没有设置hbase客户端超时的情况下,导致大量线程阻塞,从而影响了tomcat对其他服务请求...

2020-01-07 23:19:42 273

原创 【Spring Cloud Hystrix】【二】:属性详解

在上一篇服务容错快速入门中定义了hystrix的配置参数,如下:hystrix: threadpool: testGroup: coreSize: 20 maximumSize: 100 allowMaximumSizeToDivergeFromCoreSize: true maxQueueSize: 200 ...

2020-01-07 22:24:32 84

原创 【Spring Cloud Hystrix】【一】:服务容错快速入门

一、Why服务容错 在微服务架构中,需要将系统拆分成多个服务单元,各单元的应用间通过服务注册与订阅的方式相互依赖。由于服务之间通过远程过程调用RPC的方式执行,就有可能因为网络原因或者依赖服务自身问题造成调用失败或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会因等待出现故障的依赖方响应延迟造成任务积压,最终导致自身服务的瘫痪。 ...

2020-01-05 16:06:23 97

原创 【HBase学习之四】HBase Client超时机制优化

生产服务遇到过一个故障,大体来说就是hbase集群故障,在没有设置hbase客户端超时的情况下,导致大量线程阻塞,从而影响了tomcat对其他服务请求的正常响应(504网关超时,超时率30%),需要规避这个问题需要两个方面,1.设定客户端访问超时时间;2.服务资源隔离。本篇关注第一点。hbase.rpc.timeout:一次RPC请求的超时时间,如果某次RPC时间超过该值,客户端就会主...

2020-01-04 13:46:46 328

原创 【JVM】OOMError之Unable to create new native thread

最近线上出现了一个OOM的问题,使得服务异常以至于不可用。一、现象 从现象来看就是请求服务全部失败,线程数激增,cpu和内存显示相对正常。查看error.log,都是"error.log:unable to create new native thread"错误:[ERROR] [org.springframework.boot.web.servlet.su...

2019-12-08 20:40:38 264

原创 【Mysql】记一次limit优化

在实际生产场景中,遇到过需要分页读取的记录的问题,当时表在百万级别,当用limit查询几十万页(每页10条)的时候就已经很慢了。我们进行分析,当然分析的前提是对explain分析执行计划有所了解。表结构如下:CREATE TABLE `table_detail` ( `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COM...

2019-12-01 00:05:03 83

原创 【Mysql】Explain关键字分析SQL性能

在生产项目中,总有需要分析sql性能的时候,看看自己写的sql慢在哪里,那就需要用到explan关键字来进行分析,那什么是explain,下面就来分析一下。一、什么是explain? 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MYSQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。它的语法就是:explain + sql...

2019-11-30 23:14:56 292

原创 深入线程池ThreadPoolExecutor

我们先从阿里编程手册里面关于并发编程的两点来说明。6.3:线程资源必须通过线程池创建,不允许在应用中自行显示创建线程。说明:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源的不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者"过度切换"的问题。6.4:线程池不允许使用Executors创建,而是通过ThreadPool...

2019-08-18 17:48:39 169

原创 从CAS底层原理说到ABA问题

一、什么是CAS? CAS(Compare and sweep):比较并交换(compareAndSet),是解决多线程并行情况下使用锁造成性能损耗的一种机制。比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则继续比较知道主内存和工作内存中的值一致为止。CAS有3个操作数,内存值为V,旧的预期值为A,要修改的更新值为B。当且仅当预期值A和内存值V相同时,将内存值V修...

2019-07-30 23:03:57 333

原创 volatile语义及底层原理

当我们使用volatile关键字去修饰变量的时候,所以线程都会直接读取该变量并且不缓存它。这就确保了线程读取到的变量是同内存中是一致的。结合JMM的特性,volatile是一个最轻量级的同步机制,三大特点,1.保证主存可见性;2.不保证原子性;3.禁止指令重排序。一、可见性 可见性是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以"立即"得知的...

2019-07-29 17:17:28 93

原创 Java Memory Model - Java内存模型

Java虚拟机规范定义了Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。JMM本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态变量和构成数组对象的元素)的访问方式。一、主内存和工作内存 ...

2019-07-28 21:04:40 74

原创 【微服务稳定性之限流降级】【三】Sentinel简介和示例

Sentinel是面向分布式服务架构的轻量级流量控制框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。一、主要概念资源:它可以是Java应用程序中的任何内容,例如,由应用程序提供的服务,或者由应用程序调用的其他应用提供的服务,甚至可以是一段代码。只要通过Sentinel API定义的代码,就是资源,能够被Sentinel保护起来。...

2019-07-13 20:42:21 322

原创 【微服务稳定性之限流降级】【二】RateLimiter实战

RateLimiter是guava中concurrent包下的一个限流工具类,使用了令牌桶算法。下面简单的介绍一下。一、RateLimiter API 修饰符 方法 描述 double acquire() 从RateLimiter获取一个许可,该方法会被阻塞知道...

2019-07-13 14:28:27 354

原创 【微服务稳定性之限流降级】【一】限流概念和算法

微服务稳定性稳定性三大杀器,缓存,队列,限流降级。这一部分讲一下限流降级。每个系统都有自己的最大服务能力,即在达到某个临界点之前,系统都可以正常提供服务。为了保证系统在面临瞬间的流量时仍然可以对外提供服务,我们就需要使用限流技术。下面就讲一讲笔者认为的降级和熔断的概念。限流:1)服务的入口的限流,在流量激增的情况下对流量进行控制;2)当然还有一个情况就是,服务A在调用B,下游服务...

2019-07-13 12:10:37 548

原创 【Spring Cloud Eureka】【二】:Eureka进阶

一、基础架构图 registry:注册;renew:续约;cancel:下线。二、服务提供者Provider2.1 服务注册 Provider在启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。Eureka Server接收到请求之后,将元数据信息存储在一个Map<K1, ...

2019-07-07 11:39:51 159

原创 【Spring Cloud Eureka】【一】:服务治理简介

Spring Cloud Eureka是Spring CLoud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。一、服务治理 服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。1.1 为什么需要服务治理模块? 在最初构建系统...

2019-07-07 01:20:33 155

原创 高可用进程内缓存设计和实现【一】

几乎所有的服务器应用程序都会使用某种形式的缓存,可以提升吞吐量,但是却要消耗更多的内存。本文从ConcurrentHashMap开始,来个一步一步的优化一个高效的进程缓存。一、ConcurrentHashMap(JDK7) ConcurrentHashMap是一个基于散列的Map,但是它使用了一种完全不同的加锁策略来提供更高的并发性和伸缩性。Concurren...

2019-06-30 13:04:08 158

原创 内置锁和重入锁

一、重入锁 Java提供了一中内置的锁机制来支持原子性:同步代码块(Synchronized Block)。同步代码块包括两部分:一个作为锁的对象引用(因为synchronized锁住的是对象),一个作为这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中该同步代码块的锁就是方法调用所在的对象。静态static的synchroni...

2019-06-29 23:29:48 342

原创 高可用进程内缓存设计和实现【二】

在系统设计中,为了提升性能往往需要使用到缓存,分布式缓存效率已经很高了,例如常用的redis以及memcache,但是对于极高并发,对响应要求极高的系统,则需要使用进程内缓存,下面将进程内缓存和分布式缓存进行了对比: 优点 缺点 方案 应用场景 进程间缓存 1....

2019-06-21 23:06:03 289

原创 Redis缓存服务最佳实践建议规范

Redis是高性能的缓存服务组件,可以提供10万+级别的读写请求量。但是如果使用不规范或者存在大风险的操作,导致服务抖动耗时上涨,甚至出现服务不可用的情况。下面就对这些问题进行分析说明。一、key名称规范性:使用业务名作为前缀,用冒号分割。有子系统时,可以使用多个冒号或者下划线。比如:order:time:123456,data_123_456间接性:在保洁规范性的同时,也...

2019-06-02 22:01:11 2468

原创 JDK8 Stream用法分析-双端队列和工作密取

最近在做项目的时候使用到了jdk8的parallelStream想来加快程序的执行效率,没有想到得到的集合里面有很多null,同时偶尔也会出现ArrayIndexOutOfBoundsException错误,下面就逐步进行解析。Jdk8有如下几个新特性:>Lambda表达式:允许把函数作为一个方法的参数传递进去。>方法引用:直接引用已有Java类或对象(...

2019-06-02 15:49:43 453

原创 【动态代理之三】AOP简介

AOP作为动态代理的一个典型应用,我们还是重新温习一下。一、AOP简介1.1 基本概念切面(aspect):用来切入目标方法的类;连接点(joinpoint):业务类和切面类的连接点,可以获取业务对象的类名,方法名和参数;通知(advice):在切面类中,对业务方法做出额外处理的方法;切入点(pointcut):需要切入的业务目标方法;目标对象(targe...

2019-04-09 12:02:22 154

原创 Leetcode解题进阶

=>Math:Leetcode-Pro9-Palindrome Number=>Array数组:Leetcode-Pro27-Remove ElementLeetcode-Pro169-Majority ElementLeetcode-Pro283-Move Zeroes=>Recursion递归:Leetcode-Pro93-Restor...

2019-02-15 12:53:45 231

空空如也

忆之独秀的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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