- 博客(46)
- 资源 (15)
- 收藏
- 关注
原创 趋势跟踪-笔记
如果你不能预测趋势的起点和终点,那就不要太早离场,要把赢的钱都放在赌桌上,只要赚到一笔大的,你可以输很多次小的。价格调整需要时间,价格会波动,最终在变动的市场环境和新发的事件中形成新的共识。如果你不能或不愿意承受损失,不愿意接受回撤,或者会在乏味和无所事事中感到无聊,没有坚定的纪律性去遵循策略,那么我想说的是,换种方式吧,趋势跟踪并不适合所有人。你把交易当成事业,记录每天买进卖出的日志,以及当同样的情况再次发生时,你准备如何平衡你的投资,如果你不制定交易策略,不理性的情绪就永远无法消除。
2024-04-05 16:39:23
806
2
原创 Spring Cloud Sleuth 实现微服务链路跟踪
在这种规模下,如果出现问题,则准确跟踪问题点会十分困难。在微服务结构中,能在出现问题前预警问题,在出现问题后快速定位故障点非常重要。如果要解决问题,则首先需要发现问题,然后定位问题的故障点、及时采取措施解决问题。系统会根据业务需求不断地进行演变,如果过去遗留的问题没有处理好,则会对新的功能产生影响。万倍的监控系统可以提供及时、准确的性能报告,可以了解请求的路径、请求耗费的时间、网络延迟状况、单个业务逻辑耗费时间等指标。我们可以分析系统瓶颈、解决系统存在的问题,以及为当前和未来的决策提供基础数据。
2023-04-11 15:36:28
595
原创 常见限流算法
算法的实现方法是:从第一个请求进来开始计时,在接下来的时间内( 如1S),每来一个请求,就把计数加1;但在实际网络流量中,除正常的流量外,还有很多非正常的流量,比如网络攻击、恶意爬虫。一般情况下,用于服务的软硬件资源是特定的(即漏桶的漏出速率是固定的),所以即使是在理想状态下(没有拥塞),漏桶算法对于突发流量来说是缺乏效率的。计数器限流方法存在“突刺现象”:如果在1S(单位时间)内的前100ms已经通过了100个请求,则后面的900ms内的请求全部会被拒绝。常见的限流算法有:计数器、漏桶、令牌桶。
2023-04-11 11:25:01
876
原创 spring cloud 雪崩效应
雪崩就是塌方。在山坡上的积雪,如果积雪的内聚力小于重力或其他力量,则积雪便向下滑动,从而逐渐引起积雪的崩塌。在微服务架构中,服务之间通常存在级联调用。比如,服务A调用服务B,而服务B需要调用服务C,而服务C又需要调用服务D。如果其中任意一点不可用,或者存在响应延时,则可能造成很多服务不可用,即产生级联故障。如果这类请求很多,服务不可用导致积累的请求越来越多,则占用的计算机资源越来越多,太多的请求会很快耗尽系统的资源,从而导致系统瓶颈出现,造成其他的请求也不可用,最终造成整个系统不可用。
2023-04-05 12:03:30
732
原创 了解CAP(一致性、可用性、分区容错性)
(3)CA(一致性+可用性):如果不能保证分区容错性,一旦产生断网宕机等意外情况,则系统就会无法工作。(2)AP(可用性+分区容错性),即牺牲一致性保证可用性,这样能提高用户体验和性能等,比如日志记录、数据投递、存储系统配置等场景。(2)可用性(A):非故障的节点应在合理的时间内返回合理的响应(不是错误和超时的响应)。(3)分区容错性(P):在分布式系统中,要能保证在部分断网或宕机的情况下有其他的服务器能继续提供服务。(1)CP(一致性+分区容错性):牺牲可用性,保证一致性。
2023-04-02 17:10:09
1050
原创 Java 8 如何以并发方式在同一个流 上执行多种操作
Java 8 中,流有一个非常大的(也可能是最大的)局限性,使用时,对它操作一次仅能得到一个处理结果。实际操作中,如果你试图多次遍历同一个流,结果只有一个,那就是遭遇下面这样的异常:java.lang.IllegalStateException: stream has already been operated upon or closed虽然流的设计就是如此,但我们在处理流时经常希望能同时获取多个结果。本篇利用一个通用API,即Spliterator,尤其是它的延迟绑定能力,结合BlockingQ.
2021-11-20 15:56:37
44582
原创 Java 8 结论
本篇内容Java 8 的新特新以及其对编程风格颠覆性的影响。由Java 8萌生的一些尚未成熟的编程思想。Java 9以及Java 10 可能发生的变化。1.回顾 Java8的语言特性对多核处理器处理能力的需求日益增长,虽然硅开发技术也在不断进步,但依据摩尔定律每年新增的晶体管数量已经无法使独立CPU核的速度更快了。简单来说,要让你的代码运行得更快,需要你的代码具备并行运算的能力。更简洁地调度以显示风格处理数据的数据集合,这一趋势不断增长。比如,创建一些数据源,抽象所有数据以符合给定的标.
2021-11-20 13:47:42
43876
原创 Java 8 函数式编程的技巧
本篇内容一等成员、高阶方法、科里化以及局部应用持久化数据结构生成Java Stream 时的延迟计算和延迟列表模式匹配以及如何在Java中应用应用透明性和缓存1.无处不在的函数 在前一篇中我们使用术语“函数式编程”意指函数或者方法的行为应该像“数学函数”一样——没有任何副作用。对于使用函数式语言的程序员而言,这个术语的范畴更加宽泛,它还意味着函数可以像任何其他值一样随意使用:可以作为参数传递,可以作为返回值,还能存储在数据结构中。能够像普通变量一样使用.
2021-10-22 18:27:52
43815
原创 Java 8 函数式的思考
本篇内容为什么要进行函数式编程什么是函数式编程声明式编程以及引用透明性编写函数式Java的准则迭代和递归1.实现和维护系统1.1 共享的可变数据 最终,我们刚才讨论的无法预知的变量修改问题,都源于共享的数据结构被你所维护的代码中的多个方法读取和更新。假设几个类同时都保存了指向某个列表的引用。那么到底谁对这个列表拥有所属权呢?如果一个类对它进行了修改,会发生什么情况?其他的类预期会发生这种变化吗?其他的类又如何得知列表发生了修改呢?我们需要通知使用该列.
2021-10-22 11:08:00
43700
原创 Java 8 新的日期和时间API
本篇内容为什么在java 8 中需要引入新的日期和时间库。同时为人和机器表示日期和时间。定义时间的度。操纵、格式化以及解析日期。处理不同的时区和历法。
2021-10-19 13:57:53
43782
原创 线程池正确配置核心线程数
《java 并发编程实战》 一书中,Brian Goetz和合著者们为线程池大小的优化提供了建议。如果线程池中线程的数量过多,最终它们会竞争稀缺的处理器核内存资源,浪费大量的时间在上下文切换上。反之,如果线程的数目过少,正如你的应用所面临的情况,处理器的一些可能就无法充分利用。线程池大小与处理器的利用率之比使用下面的公式进行估算: Nthreads = NCPU * UCPU* (1 + W/C) 其中:.
2021-06-15 17:42:36
43754
原创 java实现,获取今日0时0分0秒(最小时间)-获取今日23时59分59秒(最大时间) -线程安全方法
获取今日0时0分0秒(最小时间) /** * 获取当天最小时间 Date类型 * * @return Date */ public static Date getToDayStartTimeDate() { //获取当前时间-在这里可以增加或者减少时间求出非当前天的最小时间 LocalDateTime localDateTime = LocalDateTime.now(); LocalDateTime
2021-05-03 21:05:53
45373
原创 Java 8 Stream 流如何使用3-并行数据处理与性能
本篇内容用并行流并行处理数据并行流的性能分析分支/合并框架使用Spliterator分割流
2020-12-24 17:00:14
44445
1
原创 java实现,如何在当前时间往后推N天
调用 getAfterDay 传入后推的天数,就能获取到当前时间往后推N天的时间 public static Date asDate(LocalDateTime localDateTime) { return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); } public static Date getAfterDay(int afterDay) { Loca
2020-12-16 16:58:28
46012
原创 Java 8 Stream 流如何使用2-用流收集数据
上一篇讲了流可以用类似于数据库的操作帮助你处理集合。在本篇中,你会发现collect是一个归约操作,就像reduce一样可以接受各种做法作为参数,将流中的元素累积成一个汇总结果。具体的做法是通过定义新的Collector接口来定义的,因此区分Collection、Collector和collect是很重要的。本篇内容:用Collectors类创建和使用收集器将数据流归约为一个值汇总:归约的特殊情况数据分组和分区开发自己的自定义收集器收集器简介前一个例子清楚地展示了函数式编程相对于指.
2020-12-14 11:43:49
44159
原创 欢迎进入微服务的世界
本文首先介绍系统架构演变的几个阶段;然后介绍微服务框架Dubbo和Spring Cloud,以及服务网格istio;最后介绍Duboo、SpringCloud、Istio三者之间的无别。
2020-12-07 22:21:36
43773
1
原创 mysql 多表查询中 根据一个表中一个字段的最大值求另一个字段
mysql 多表查询中 根据一个表中一个字段的最大值求另一个字段,获取 查询最大值的这条数据。示例表a:idname1张三2李四表b:idsexa_id1女12男2表c:ida_idagehobby1115唱歌2116跳舞31118游泳4216吃饭求:如何查出每个人的性别,以及他年龄最大的时候的爱好?SELECT `name`, .
2020-11-30 16:21:04
45172
2
原创 Java 8 Stream 基础知识
流是什么流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了!之前(Java 7):List<Dish> lowCaloricDishes = new ArrayList<>(); for(Dish d: menu){ if(d.getCalories() < 400){ lowCaloricDi
2020-11-27 16:11:25
43615
2
原创 Java 8 lambda 方法/构造函数引用
方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下,比起使用Lambda表达式,它们似乎更易读,感觉也更自然。先前:inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())); 之后(使用方法引用和java.util.Comparator.comparing):inventory.sort(comparing(Apple::g.
2020-11-21 17:57:38
45246
原创 Java 8中的常用函数式接口
Java 8中的常用函数式接口函数式接口函数描述符原始类型特化Predicate<T>T-> booleanIntPredicate,LongPredicate, DoublePredicateConsumer<T>T->voidIntConsumer,LongConsumer,DoubleConsumerFunction<T,R>T->RIntFunction<R>,IntToDouble.
2020-11-19 16:21:15
266
转载 Redis 数据持久化方案
作为内存数据库,Redis 在数据存储与读取上的速度是毫不逊色的,这点毋庸置疑。但是对于内存来说,断电或遇到故障后数据就会丢失,这却是一个无法回避的问题。令人欣慰的是,基于这样的缺点,Redis 也提供了不同的持久化方案。RDB持久化对于 Redis 持久化来说,其实就是将存储在内存中的数据写入到磁盘里,只不过写入的方式是有一定策略的。那么我们先来看下第一种持久化,首先出场的是 RDB。1、什么是RDB持久化英文名称是 Redis DataBase,它还有一个常用的名字:快照持久化。所谓快.
2020-11-04 10:36:47
43724
转载 Java踩坑记系列之BigDecimal
在java.math包中提供了对大数字的操作类,用于进行高精确计算,如BigInteger,BigDecimal类。而平常我们开发中使用最多的float和double只能适用于一般的科学和工程计算,如果要在比较精确的计算方面如货币,那么使用float和double会相应的丢失精度,因此用于精密计算大数字的类BigDecimal就必不可少了。所以BigDecimal适合商业计算场景,用来对超过16位有效位的数进行精确的运算。但是BigDecimal的使用并不像float和double那样,使用不当造成的后果.
2020-11-03 11:56:37
43833
转载 9种分布式ID生成方式,总有一款适合你
分布式ID必要性。业务量小于500W或数据容量小于2G的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。分布式ID需满足那些条件全局唯一:基本要求就是必须保证ID是全局性唯一的。高性能:高可用低延时,ID生成响应要
2020-11-03 11:43:15
43920
原创 mysql 数据迁移-将一个表中的数据插入到另一个表中(相同/不相同数据库)
在实际开发中,常常涉及旧数据的迁移。如下为数据迁移sqlINSERT INTO ls.(字段,字段) SELECTFROM gs.表名称;
2020-10-13 17:57:10
44907
原创 java -面试题-基础知识-30 请你谈一下面向对象的“六原则一法则“
1.单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。另一个是模块化,好的自行车是组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装的,好的乒乓球拍也不是成品拍,一定是底板和胶皮可以拆分和自行组装的,一个好的软件系统,它里面的每个功能模块也应该是可以轻易的拿到其他
2020-09-04 09:38:49
43643
原创 java 根据经纬度获取地理位置信息(省、市、县、乡镇)-没有外网
场景:1.在安全性较高的场景中,程序部署在内网,无法通过地图api接口获取地理位置信息,如下程序通过解析json数据获取对应区域地理位置信息(注:地理位置信息精确度根据json数据详细度正相关)。2.代码采用线程池(也可改为消息队列)异步执行经纬度转换为地理位置信息。优点/缺点优点:1.采用线程池,2.解决了在内网项目上地图中展示 标注(经纬度点)。缺点:大量数据同时转化需要加锁,json地理位置数据详细度不够全面.待改进:1.加载json地理位置数据应改为单列。2.json地理位置数据应该新.
2020-08-21 15:28:15
52986
13
原创 java 工具类-判断是否是K码,是否是灵图编码
场景: 应用系统需要判断字符串是否是k码/灵图编码 /** * 是否是灵图编码 * * @param code * @return */ public static boolean isMCode(String code) { if (StringUtils.isNotBlank(code)) { boolean matches = String.valueOf(code).matches("(?:.
2020-08-21 14:17:10
43848
springboot全套教程2018年2.0版本
2018-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人