
java·未分类
文章平均质量分 54
所有文章
菠萝科技
"Java并没有衰落.而是刚刚开始"
展开
-
epoll 或者 kqueue 的原理是什么?
作者:张彦飞链接:https://www.zhihu.com/question/20122137/answer/2134896876来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。刚回答完一个 epoll,又刷到一个,那我就再来回答一遍吧。仔细看了一下问题,题主的主要困惑是就是没有看过内核源码,不清楚 epoll 内部究竟是咋工作的。其实我之前和题主一样,也是这个困惑。由于实在是好奇心太强,所以我就抽空撸起袖子,把 epoll 的源码给扒了一遍。我把我分析.转载 2021-10-24 10:24:16 · 641 阅读 · 0 评论 -
jvm和底层操作系统交互简介
肉眼看计算机是由 CPU 、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天为你一一揭秘。结合 CPU 理解一行 Java 代码是怎么执行的根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。enter转载 2021-10-12 07:57:12 · 786 阅读 · 0 评论 -
flink:风控/反欺诈检测系统案例研究1,2,3
https://flink.apache.org/news/2020/01/15/demo-fraud-detection.htmlhttps://flink.apache.org/news/2020/03/24/demo-fraud-detection-2.htmlhttps://flink.apache.org/news/2020/07/30/demo-fraud-detection-3.html在本系列博文中,您将了解用于构建流应用程序的三种强大的 Flink 模式:应用逻辑的..原创 2021-08-28 09:08:40 · 1038 阅读 · 0 评论 -
Lucene 倒排索fst引原理与实现
整理下几篇博客1Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)https://www.cnblogs.com/forfuture1978/p/3945755.html2 关于Lucene的词典FST深入剖析https://www.shenyanchao.cn/blog/2018/12/04/lucene-fst/3Lucene BKD树-动态磁盘优化BSP树https://www.shenyanchao....原创 2021-08-08 15:53:36 · 1327 阅读 · 0 评论 -
去哪儿网领域驱动设计(DDD)战略战术设计实战
P1 00-前言:走入DDD 31:30P2 01-大白话聊DDD 49:29P3 02-方舟DDD实践(上) 56:44P4 03-方舟DDD实践(下) 1:13:19P5 04-战略设计 1:13:08P6 05-战术设计 1:21:08P7 06-酒店报价DDD实战1:25:56P8 07-DDD整合分层架构和微服务设计 40:29P9 CQRS在领域驱动中的重要作用 43:22P10 机票辅营DDD的分层架构设计 1:14:02https:...原创 2021-08-03 21:44:31 · 783 阅读 · 0 评论 -
java8:lambda级联表达式(Cascading)或柯里化(Currying)原理简化详解
lambda :级联表达式(Cascading lambdas)或柯里化(Currying)。柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。举个简单的例子:Function<Integer, Predi.原创 2021-07-29 21:03:21 · 911 阅读 · 0 评论 -
巧用map的computeIfAbsent统计次数
1 //map中的key对应的value值为null,则该key对应value值为new AtomicInteger()且自增加1,key已经存在,value值直接自增1Map<String,AtomicInteger> map=Maps.newHashMap() list.forEach( str-> map.computeIfAbsent(str, k -> new AtomicInteger()).incrementAndGet());2 如果不用...原创 2021-07-27 22:08:52 · 608 阅读 · 0 评论 -
Java 代码精简之道
前言古语有云:道为术之灵,术为道之体;以道统术,以术得道。其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”...转载 2021-07-27 21:33:31 · 384 阅读 · 0 评论 -
java链式编程/级联式编程
链式编程,也叫级联式编程,调用对象的函数时返回一个this对象指向对象本身,达到链式效果,可以级联调用。链式编程: 通过高阶函数以点为连接将多个函数连接在一起完成参数传递和复杂的操作!通俗的说是通过点号(.)链接在一起成为一句代码。链式编程的优点是:编程性强、可读性强、代码简洁。举例:StringBuilder builder = new StringBuilder(96);builder.append("select id, name from ") .append(T_USE..原创 2021-07-27 21:06:34 · 3575 阅读 · 0 评论 -
美团点评旅游搜索召回策略的演进
本文内容与6月22日第22期美团点评技术沙龙“美团点评AI实践”主题演讲一致,欢迎大家去现场和作者交流。关注“美团点评技术团队”微信公众号,第一时间获取沙龙最新信息,还可以查阅往期沙龙PPT/视频。美团点评作为最大的生活服务平台,有丰富的品类可供用户选择,因此搜索这个入口对各业务的重要性不言而喻,除了平台搜索外,业务搜索系统的质量和效果对用户体验、商家曝光、平台交易也有着关键作用。相对美团点评平台的O2O检索,旅游搜索系统主要面临以下几点挑战:本异地差异大。在本地生活场景中用户的搜索需求往往转载 2021-07-25 19:06:28 · 767 阅读 · 0 评论 -
java: synchornized底层的实现原理monitor,它的底层实现又是什么
牵涉到:jvm,c++,操作系统等,如何串起来呢?对只懂java,不懂c++的同学来说,monitor底层是什么,是基于mutex么原创 2021-07-25 15:14:06 · 509 阅读 · 2 评论 -
flink:RoaringBitmap在亿级用户实时UV精确去重中应用
RoaringBitmap 是压缩位图,其性能往往优于传统的压缩位图,例如 WAH、EWAH 或 Concise。某些情况下可以快数百倍,甚至可以比未压缩的位图更快。RoaringBitmap 常用于去重、标签筛选、时间序列等计算中。原创 2021-07-04 21:14:31 · 2517 阅读 · 3 评论 -
杨利伟-太空一日,不为人知的生死惊魂
我以为我要牺牲了。但随后发生的情况让我非常紧张——右边的舷窗开始出现裂纹。窗外烧得跟炼钢炉一样,玻璃窗开始出现裂纹,那种纹路就跟强化玻璃被打碎之后那种小碎纹一样,这种细细的碎纹原创 2021-06-27 14:45:44 · 516 阅读 · 0 评论 -
Garbage-First Garbage Collection
https://www.researchgate.net/publication/221032945_Garbage-First_garbage_collectionDavid Detlefs, Christine Flood, Steve Heller, Tony PrintezisSun Microsystems, Inc.1 Network Drive, Burlington, MA 01803, USA{david.detlefs, christine.flood, steve.hel翻译 2021-06-14 10:56:53 · 847 阅读 · 0 评论 -
Lucene几种数据结构
FST,倒排链,BKD-Tree,DocValues。原创 2021-06-04 21:58:15 · 516 阅读 · 2 评论 -
flink和sentinel中计算当前时间所属的时间窗口算法
flink中:org.apache.flink.streaming.api.windowing.windows.TimeWindowpublic static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) { return timestamp - (timestamp - offset + windowSize) % windowSize; }sentinel.原创 2021-05-04 16:58:14 · 304 阅读 · 0 评论 -
java 虚拟线程Loom/纤程/轻量级线程和异步编程Future,哪个是未来?
Loom项目的开始于2017年底,现在来看,虚拟线程(纤程/轻量级线程)和异步谁是未来呢?我的答案是:虚拟线程。先写个目录。1 开发难度,对已有项目的影响2 xxxx的态度3 项目官方的想法,为什么要开发虚拟线程项目4 对已有协程框架框架市场的冲击...原创 2021-04-27 10:32:33 · 991 阅读 · 2 评论 -
concurrentHashmap 中 computerIfAbsent 方法的bug
1为了保证原子性,对相同 key 进行修改时,可能造成线程阻塞。(详细参见:MyBatis 3.5.X 在 JDK8 中的性能问题)The entire method invocation is performed atomically, so the function is applied at most once per key. Some attempted update operations on this map by other threads may be blocked while.原创 2021-04-27 08:01:57 · 1508 阅读 · 0 评论 -
jvm堆内存溢出后,其他线程是否可继续工作
转载自:原文链接作者:https://gosaintmrc.github.io/最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。由于题目中给出的OOM,java中OOM又分很多类型;比如: 堆溢出(“java.lang.OutOfMemoryError: Java heap space”) 永久带溢出(“java.lang..原创 2021-04-25 07:18:33 · 336 阅读 · 0 评论 -
SkyWalking链路追踪使用教程三:支持的插件及插件开发必看
0 安装Java agent7.x版本中代理支持 JDK 8 - 14, 6.x版本支持JDK 1.6 - JDK 12NOTICE¹ 在SkyWalking发行包中找到agent文件夹 配置config/agent.config中的agent.service_name。可以是任意的英文字符串。 配置config/agent.config中的collector.backend_service。默认指向127.0.0.1:11800,表示仅作用于本地后端。 JVM参数中添加-javaagent:.原创 2021-03-21 07:53:47 · 7024 阅读 · 0 评论 -
SkyWalking使用教程二:自定义监控指定方法trace等高级特性
1 高级特性可通过设置系统属性覆盖配置文件中的配置。请见配置覆盖. 可使用gRPC TLS将后端连接起来。请见open TLS 通过不同的SkyWalking服务实现对大集群的监控。使用命名空间隔离上下文传播。 如果后端开启了token鉴权,客户端可设置token。 应用工具包。应用工具包,是Skywalking提供的一些库的集合。通过这些库,可以将你的应用同Skywalking agent联系起来。 如果你想使用OpenTracing的Java API,可以试试兼容OpenTracing的S原创 2021-03-20 21:06:05 · 7419 阅读 · 0 评论 -
SkyWalking链路监控使用教程一:windows下环境搭建并启动springboot应用
1 skywalking下载地址http://skywalking.apache.org/downloads/tar 可根据需要选择版本2 打开 dashbord2.1解压进入bin2.2 点击startup.bat2.3 在浏览器里输入:http://localhost:8080/仪表盘拓扑图追踪3 监控springboot应用以idea为例,在监控的项目中使用探针,需要配置启动参数。3.1 找到skywalking-age.原创 2021-03-20 19:34:52 · 3078 阅读 · 2 评论 -
新年的最后一天
祝福大家新年愉快。原创 2020-12-31 20:05:13 · 272 阅读 · 0 评论 -
分库分表方案对比
房晓乐(葱头巴巴),PingCAP 资深解决方案架构师,前美团数据库专家、美团云 CDS 架构师、前搜狗、百度资深 DBA,擅长研究各种数据库架构,NewSQL 布道者。原文链接:https://dbaplus.cn/news-11-1854-1.html一、分库分表的背景在谈论数据库架构演变和优化时,我们经常会听到分片、分库分表(Sharding)这样的关键词,在很长一段时间内,在各个公司、各中技术论坛里都很热衷谈论各种分片方案,尤其是互联网非常普及的 MySQL 数据库。但对笔者来说,分片、转载 2020-10-17 15:22:18 · 3175 阅读 · 1 评论 -
基于 Flink+Hive 构建流批一体准实时数仓
作者 | 李劲松(之信)策划 | 蔡芳芳转载自:https://weibo.com/ttarticle/p/show?id=2309404557437377053321#_0基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环。Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大。在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时数仓,将链路延时降低到秒级。但是一套离线数仓加一套实时数仓的架构会带来超过两倍的资源消耗,甚至导致重复开发。想要搭建.原创 2020-10-08 10:04:48 · 1283 阅读 · 0 评论 -
99%的人都能看懂的分布式系统「补偿」机制
作者:华为云开发者社区链接:https://zhuanlan.zhihu.com/p/258741780来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。摘要:我们来聊一聊在保证对外高可用的同时,憋出的“内伤”该如何通过「补偿」机制来自行消化。一、「补偿」机制的意义?以电商的购物场景为例:客户端 ---->购物车微服务 ---->订单微服务 ----> 支付微服务。这种调用链非常普遍。那么为什么需要考虑补偿机制呢?正如之前几.转载 2020-09-26 23:14:14 · 722 阅读 · 1 评论 -
图解Linux网络包接收过程
作者:张彦飞链接:https://zhuanlan.zhihu.com/p/256428917来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。我们今天用图解的方式,来深度理解一下在Linux下网络包.转载 2020-09-21 22:24:11 · 3264 阅读 · 0 评论 -
谈谈微服务设计中的 API 网关模式
https://medium.com/dev-genius/microservices-design-api-gateway-pattern-980e8d02bdd5作者 | Bibek Shah译者 | 姜雨生策划 | 田晓旭根据 Gartner 对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。”与将模块高度耦合并部署为一个大的应用程序相比,微服务的目标是将应用程序充分分解或者解耦为松散耦合的许多微服务或者模块,这样..翻译 2020-09-20 18:33:32 · 419 阅读 · 0 评论 -
7-10倍写入性能提升:剖析WiredTiger数据页无锁科技
导语:计算机硬件在飞速发展,数据规模在急速膨胀,但是数据库仍然使用是十年以前的架构体系,WiredTiger 尝试打破这一切,充分利用多核与大内存时代来重新设计数据库引擎,达到 7 - 10 倍写入性能提升。本文由袁荣喜向「高可用架构」投稿,通过分析 WiredTiger 源代码,剖析其卓越性能的背后实现。袁荣喜,学霸君工程师,2015年加入学霸君,负责学霸君的网络实时传输和分布式系统的架构设计和实现,专注于基础技术领域,在网络传输、数据库内核、分布式系统和并发编程方面有一定了解。...转载 2020-09-20 09:41:03 · 358 阅读 · 0 评论 -
Caffeine Cache-高性能Java本地缓存之王(基于LRU算法的优化策略)
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。本篇博文主要介绍Caffine Cache 的使用方式,以及Caffine Cache在SpringBoot中的使用。1. Caffine Cache 在算法上的优点-W-Ti转载 2020-08-22 12:00:57 · 3211 阅读 · 1 评论 -
Kafka和RocketMQ底层存储之那些你不知道的事
我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点?今天我们就来一探究竟。存储介质-磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对而言读写速度较转载 2020-08-22 11:40:55 · 642 阅读 · 0 评论 -
算法堆栈目录
目录1.1 判断括号是否成对出现,且以都是左右成对(不能是"} {" ,这是右左成对)。1.1 判断括号是否成对出现,且以都是左右成对(不能是"} {" ,这是右左成对)。package com.demo.thinking;import java.util.HashMap;import java.util.Stack;public class Parentheses { public static Boolean isMatch(String str)..原创 2020-07-19 17:04:43 · 303 阅读 · 0 评论 -
归并排序java代码实现
aapackage com.demo.thinking;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MergeSort { public static void main(String[] args) { List<Integer> integers = Arrays.asList(2, 3, 5, 8, 4, 11, 1, 7原创 2020-07-16 23:46:42 · 324 阅读 · 0 评论 -
springcache支持的序列化方式及反序列化失败原因剖析
从接口RedisSerializer我们可以看出,springcache支持的序列化器有StringRedisSerializer,Jackson2JsonRedisSerializer和JdkSerializationRedisSerializer。这些序列化器在底层是如何存储,有什么区别呢,使用中有哪些坑要注意呢?下面开始探索他们的神秘面纱JacksonJsonRedisSerializer和GenericJackson2JsonRedisSerializer,两者都能系列化成json.原创 2020-07-05 09:25:01 · 3284 阅读 · 2 评论 -
jdk 14 基础架构部的zgc垃圾收集实测
“基础架构部的zgc垃圾收集实测”,jdk 11开始的zgc有多强,文章说太多了。同事用ES7.7 + jdk 14测试了下实际效果。结果是,关注和调优的重心,都聚焦在万一垃圾回收的速度跟不上分配的速度,发生的allocation stall停顿上,有点像以前操心cms,full gc的stw。allocation stall不能说是stop the world,它可能是按region 按线程去停的,实际每条线程停顿的时间不一,有的停几毫秒,有的停几百毫秒。jmx暴露的监控指标只有zgc count和原创 2020-07-05 08:00:28 · 1248 阅读 · 5 评论 -
Apache Flink 1.9.0做了这些修改
阿里妹导读:8月22日,Apache Flink 1.9.0 正式发布。早在今年1月,阿里便宣布将内部过去几年打磨的大数据处理引擎Blink进行开源并向 Apache Flink 贡献代码。此次版本在结构上有重大变更,修改代码达150万行,接下来,我们一起梳理 Flink 1.9.0 中非常值得关注的重要功能与特性。Flink 1.9.0是阿里内部版本 Blink 合并入 Flink 后的首次发版,修改代码150万行,此次发版不仅在结构上有重大变更,在功能特性上也更加强大与完善。本文将为大家介绍 Fli转载 2020-06-26 18:43:25 · 374 阅读 · 0 评论 -
Flink 在快手实时多维分析场景的应用
视频:Apache Flink在快手实时多维分析场景的应用 | 企业实践专场6 人赞同了该文章简介:作为短视频分享跟直播的平台,快手有诸多业务场景应用了 Flink,包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主要介绍在快手使用 Flink 在实时多维分析场景的应用与优化。作者:董亭亭、徐明摘要:作为短视频分享跟直播的平台,快手有诸多业务场景应用了 Flink,包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主..转载 2020-06-26 21:16:50 · 627 阅读 · 0 评论 -
算法:链表翻转相关目录
递归和非递归代码如下:package org.example;class Node<T> { T val; Node next; public Node(T val) { this.val = val; } public Node(T val, Node next) { this.val = val; this.next = next; }}public class ReverseLi原创 2020-06-13 11:08:10 · 410 阅读 · 0 评论 -
Function score query
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#score-functionshttps://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-weight原创 2020-05-10 23:29:47 · 320 阅读 · 0 评论 -
Elasticsearch Suggester详解:Google搜索框的补全/纠错功能
现代的搜索引擎,一般会具备"Suggest As You Type"功能,即在用户输入搜索的过程中,进行自动补全或者纠错。 通过协助用户输入更精准的关键词,提高后续全文搜索阶段文档匹配的程度。例如在Google上输入部分关键词,甚至输入拼写错误的关键词时,它依然能够提示出用户想要输入的内容:如果自己亲手去试一下,可以看到Google在用户刚开始输入的时候是自动补全的,而当...转载 2020-05-04 11:20:40 · 1902 阅读 · 1 评论