自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ice-wee的专栏

java没有衰落,而是刚刚开始。

原创 java8:lambda中collect接口案例及原理详解,官方文档解读

本文简要介绍toList,toMap等会简要介绍,主要是介绍collect的"底层",及如何触类旁通。lambda偏具体实现:https://blog.csdn.net/wabiaozia/article/details/103324562lambda偏底层原理:Lambda 底层实现分析1 案例中使用到的实体类Employee见java8的lambda中的map...

2019-11-30 17:49:23 998 1

原创 springboot2|springboot启动流程源码分析:tomcat启动原理

本文基于springboot2.1.61 当maven引入tomcat的jar依赖时 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifac...

2019-07-14 15:36:39 722

原创 java的编译器,解释器和即时编译器概念

菠萝备注:我更倾向于周志明对编译器的"分类"的看法,编译过程中有三类比较有有代表性的编译器:前端编译器:Sun的javac,Eclipse的增量编译器EJC。把*.java编译为*.class JIT编译器:Hotsport VM的c1,c2编译器把字节码编译为机器码。 AOT编译器:GCJ(GNUCompiler forJava )、excelsior JET。*.java 文...

2019-04-20 13:18:55 1729

转载 教你如何迅速秒杀掉:99%的海量数据处理面试题

作者:July出处:结构之法算法之道bloghttp://blog.csdn.net/v_july_v/article/details/7382693前言   一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题...

2019-01-05 12:50:17 187

原创 操作系统:进程和程序关系类比/ java中线程是哪种实现

本文分三个小节1 线程模型2 线程的实现3 java中线程是用户线程,内核线程,轻量级进程???3.1 临界区 互斥 3.2 信号量 管程前两小节是来自操作系统。第三小节:看到操作系统中线程实现的三种方式,忽然想起我以前看到的一个问题,也很契合本文今天的主题,便加了进来。1 线程进程2 线程实现(也有广义上分:除了内核线程其他都是用户线程...

2018-12-09 13:44:26 226 1

转载 序列化和反序列化/美团技术团队

原文链接:https://tech.meituan.com/serialization_vs_deserialization.html摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要...

2018-11-07 00:05:58 245

原创 java多线程:结合多线程交替打印10次abc实例,对wait/notify使用的彻底理解

接上篇:http://blog.csdn.net/wabiaozia/article/details/79429585有个朋友看点击打开链接 里的三个线程“A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。” 这个问题的代码,有点不太理解,让我给看下。不理解的原因也很简单,就是对wait和notify理解不深,遇到复杂点的场景会迷糊。对于并发相...

2018-03-13 00:32:05 2850

原创 java算法:翻转二叉树

节点的的数据结构: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }1 java递归实现:public class Solution { public TreeNode invertTree(Tree...

2018-02-24 19:08:51 553 1

原创 BIO、NIO、AIO及java中NIO 与netty的 IOCP区别联系

1 有人能说清楚JAVA7 NIO NETTY IOCP之间的联系吗?原文链接:https://www.zhihu.com/question/20853629不过这似乎是3年前的问题?还没有找到答案吗?那我说一下吧iocp和poll/epoll这些是操作系统层面的东西iocp是win,poll(linux和unix)后者在linux上可以改成epoll,在mac或bs...

2018-01-18 16:35:07 2077 10

原创 深入分析 ThreadLocal 内存泄漏问题

原文链接:http://blog.xiaohansong.com/2016/08/06/ThreadLocal-memory-leak/?hmsr=toutiao.io&utm_medium=toutiao.i抛砖引玉,结合其他博客看前言ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量...

2017-12-20 14:22:28 212

原创 高并发性能调试经验分享

原文链接:https://zhuanlan.zhihu.com/p/213482204月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址如下:腾讯实习生面试,这两道题目该怎么回答? - 编程 .遗憾的是知乎很多答案在抨击这道题本身的正确性,虽然我不是这次的面试官,但我认为这是一道非

2017-05-28 08:07:10 946

原创 最佳方案:springmvc接收前台(如ajax)传来的数组list,set等集合图文详解

前言: 相信很人都被springmvc接收数组问题折磨过,查过几个解决方案,都不能很好的解决。那些方法一般存在一个问题:把接收到的数据结构转换成你想要的结构时,不好处理。为什么说不好处理下文有具体例子介绍(见1.2)。 1 本文springmvc版本为3.1 ,ecplise:月神(luna),tomcat:7.0,jdk...

2016-03-04 20:02:37 98475 26

原创 算法堆栈目录

目录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 35

原创 归并排序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 42

原创 springcache支持的序列化方式及反序列化失败原因剖析

从接口RedisSerializer我们可以看出,springcache支持的序列化器有StringRedisSerializer,Jackson2JsonRedisSerializer和JdkSerializationRedisSerializer。这些序列化器在底层是如何存储,有什么区别呢,使用中有哪些坑要注意呢?下面开始探索他们的神秘面纱JacksonJsonRedisSerializer和GenericJackson2JsonRedisSerializer,两者都能系列化成json.

2020-07-05 09:25:01 219

原创 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 147 4

转载 Flink 在快手实时多维分析场景的应用

视频:Apache Flink在快手实时多维分析场景的应用 | 企业实践专场6 人赞同了该文章简介:作为短视频分享跟直播的平台,快手有诸多业务场景应用了 Flink,包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主要介绍在快手使用 Flink 在实时多维分析场景的应用与优化。作者:董亭亭、徐明摘要:作为短视频分享跟直播的平台,快手有诸多业务场景应用了 Flink,包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主..

2020-06-26 21:16:50 140

转载 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 93

原创 算法:链表翻转相关目录

递归和非递归代码如下: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 84

原创 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 83

转载 Elasticsearch Suggester详解:Google搜索框的补全/纠错功能

现代的搜索引擎,一般会具备"Suggest As You Type"功能,即在用户输入搜索的过程中,进行自动补全或者纠错。 通过协助用户输入更精准的关键词,提高后续全文搜索阶段文档匹配的程度。例如在Google上输入部分关键词,甚至输入拼写错误的关键词时,它依然能够提示出用户想要输入的内容:如果自己亲手去试一下,可以看到Google在用户刚开始输入的时候是自动补全的,而当...

2020-05-04 11:20:40 185 1

原创 Elasticsearch[7.6]移除type迁移/改造方案

google译自:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/removal-of-types.html#removal-of-types方案一:include_type_name参数设为true设置为true后即可用原有方式put。对于我们的用户来说,这是一个很大的变化,因此我们试图使其尽可能轻松。更改将...

2020-05-03 13:33:57 1033

原创 elasticsearch的深分页(deep-paging)问题原因及解决

1 deep-paging问题引入有90个数字分布到三个分片上,每个分片上有30个数字。shard1上:1 、2、 3 、4 、5 、6 、7 、8、 9 、10 、11 、12 、13 、14、 15、 16、 17 、18、19 、20、 21、22、23、 24 、25 、26 、27、 28、 29 、30、shard2上:31 、32 、33 、34 、35 、36 、...

2020-04-25 22:13:49 123

原创 ES改变主分片数量,动态拆分primary shard

1Elasticsearch 2.x 版本 因为document路由机制,不可变变主分片(primary shard)https://www.elastic.co/guide/cn/elasticsearch/guide/current/shard-scale.html2 6.x之后从ES6.1开始,ES 支持可以在线操作扩大shard的数量(注意:操作期间也需要对in...

2020-04-25 11:33:54 768

原创 window10下安装Elasticsearch(es)和IK分词器

1 安装Elasticsearch 7.x1.1 下载地址https://www.elastic.co/cn/downloads/elasticsearch1.2 下载后解压的目录结构Elasticsearch 7.6.2目录结构如下:目录文件作用:bin :脚本文件,包括 ES 启动 & 安装插件等等 config : elasticsearch....

2020-04-18 20:13:47 219

转载 Service Mesh 化繁为简:基于 Istiod 回归单体设计

翁扬慧阅读数:106972020 年 3 月 13 日 17:26作为 Service Mesh 领域最具权威的控制面,Istio 从 2017 年发布第一个版本后,就有着一个堪称“非常优雅”的架构设计。但在推出近 3 年后,其开发团队却“意外”推翻之前的架构,重新用上“复古的”单体应用设计。这里面究竟遇到什么不可逾越的鸿沟? 笔者从几个简单问题(WHY、WHAT、WHEN)出发,为大家揭开...

2020-04-17 22:21:41 162

转载 RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true

本节目录1、现象2、思考3、原理3.1 RocketMQ基本路由规则3.2 探究autoCreateTopicEnable机制3.2.1 默认Topic路由创建时机3.2.2 现象分析1、现象很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台B...

2020-03-29 13:51:14 131

转载 MySQL 8.0来了,逆之者亡...

1.MySQL8.0的版本历史2016-09-12第一个DM(development milestone)版本8.0.0发布2018-04-19第一个GA(General Availability)版本开始,8.0.11发布2018-07-27下一个GA版本,8.0.12发布2018-10-22下一个GA版本,8.0.13发布2019-01-21下一个GA版本,8...

2020-03-14 14:59:52 123

转载 访问者模式:java的动态绑定与双分派

不一定准确,可以看下周志明的虚拟机8.3.2节--菠萝科技(https://blog.csdn.net/wabiaozia)注java的动态绑定所谓的动态绑定就是指程执行期间(而不是在编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。java继承体系中的覆盖就是动态绑定的,看一下如下的代码:class Father { public void method(){...

2020-01-31 15:13:27 72 1

转载 JDK14来了:9大重磅特性解读

作者:阿飞的博客转载自:https://www.jianshu.com/p/0364ba3d4750JEP 305: Pattern Matching for instanceof (Preview)JEP 358: Helpful NullPointerExceptionsJEP 361: Switch Expressions (Standard)JEP 345: NUMA-A...

2020-01-29 17:34:07 1222

原创 目前主流的 Java 虚拟机有哪些?

Java SE / Java EEHotspot, JRockit(Oracle) J9, JikesRVM(IBM) Zulu, Zing (Azul)Android / Android兼容系统Dalvik / ART研究性质的JVMJikes RVM Maxine VM Graal VM整理自R大

2020-01-28 10:33:27 843 1

原创 KeyDB介绍:redis的多线程版本,性能提升一倍

1 什么是KeyDB?KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份到AWS S3。KeyDB与Redis协议,模块和脚本保持完全兼容性。这包括脚本和事务的原子性保证。由于KeyDB与Re...

2020-01-16 21:31:29 540

原创 java:跨语言通用虚拟机GraalVM

GraalVM 简介GraalVM 是一个跨语言的通用虚拟机,支持Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 JavaScript、Ruby、Python 和 R 语言等。另外,GraalVM可以通过前端的LLVM执行JVM上面的原生代码。GraalVM 1.0版本是基于JDK8的。GraalVM...

2020-01-11 12:06:02 799 1

原创 每年年末都会出现的Bug,你今天因为 YYYY-MM-dd 被提 BUG 了吗

问题:当前时间是2019-12-31,格式化时间时,用 SimpleDateFormat用的("YYYY/MM/dd"),页面上展示的是 2020/12/31在v站(https://v2ex.com/t/633650?p=1)上看到,这个关于YYYY-MM-dd的错误使用导致的Bug帖子,当时看到"YYYY-MM-dd"标题是我就意识到了那个问题又出现了,不禁暗叹:年经贴的称号当之无愧...

2020-01-03 22:01:23 137

原创 再见了,12306!春节回家第一抢票神器,GitHub上25万Star

又要到新年了,想起了过年时,早上起来推开窗户外边已经是雪的世界,街上的冰糖葫芦,地瓜,还有从各地来的相聚的玩伴。想到这里,小伙伴们是否也像小编一样对回家充满期待呢?自从2010年官方推出12306以来,可以说很大的方便了我们的购票体验,但是每一年的抢票让我们心头焦虑。老婆,定一点钟的闹钟,两点半的也定一个。老婆,我们抢不同的路线,成功率高。老婆,看看还有没有一站的票,我...

2020-01-01 08:56:51 312

原创 消息队列rocketmq:Topic 与 Tag 最佳实践

在消息队列 RocketMQ 版中,Topic 与 Tag 都是业务上用来归类的标识,区分在于 Topic 是一级分类,而 Tag 可以理解为是二级分类。您可通过本文了解如何搭配使用 Topic 和 Tag 来实现消息过滤。背景信息Topic 和 Tag 的定义如下:Topic消息主题,通过 Topic 对不同的业务消息进行分类。Tag消息标签,用来进一步区分某个 Topi...

2020-01-01 08:42:19 913

原创 消息队列:rocketmq使用集群模式模拟广播

适用场景 适用于每条消息都需要被多台机器处理,每台机器的逻辑可以相同也可以不一样的场景。具体消费示例如下图所示。 如果业务需要使用广播模式,也可以创建多个 Group ID,用于订阅同一个 Topic。 注意事项 消费进度在服务端维护,可靠性高于广播模式。 对于一个 Group ID 来说,可以部署一个消费者实例,也可以部署多个消费者实例。当部署多个消费者实例时,实例之间又组成了...

2020-01-01 07:45:39 387 1

原创 数据结构:Skip List--跳表

本文为转载,原文作者:fanrui原文链接:简书https://www.jianshu.com/p/9d8296562806跳表是一种神奇的数据结构,因为几乎所有版本的大学本科教材上都没有跳表这种数据结构,而且神书《算法导论》、《算法第四版》这两本书中也没有介绍跳表。但是跳表插入、删除、查找元素的时间复杂度跟红黑树都是一样量级的,时间复杂度都是O(logn),而且跳表有一个特性是红黑...

2019-12-25 22:06:11 103 1

原创 java8:lambda表达式之Stream原理深度解析

本文为转载 原文链接:http://www.cnblogs.com/Dorae/p/7779246.htmlauthor:Author:Dorae Date:2017年11月2日19:10:39这篇博客内容还未看,内容正确与否,请自行判断。上一篇文章中简要介绍了Java8的函数式编程,而在Java8中另外一个比较大且非常重要的改动就是Stream。在这篇文章中,将会...

2019-11-30 14:51:33 196

原创 java8的lambda中的map相关操作:基础及注意事项图文详解UnsupportedOperationException

下篇:java8的lambda中collect操作进阶1 实体类1.1Employee 见文末1.2LambdaTest代码 见文末2 list转为map细节讲解:2.1返回值map的key和value分别是什么map的key和value如上图所示。2.2入参x y如何理解首先,lambda表达式语法: 参数 -> 具体的实现。然后看...

2019-11-30 10:49:05 1074

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