摘要:
对于以往写就的一些博文,可能在之后发现当时的观点不尽正确,或是处理方法不够全面,又或是有更多值得引申的内容可以补充。首先对之前可能造成的误导表示歉意;另一方面,虽然已经对相应博文进行了更新,并标明了更新时间,但可能已读过的读者并不能很容易地看出来。修改创建时间同样不够明显,而在标题中提示又可能会导致 阅读全文
摘要:
系列博文主要目的: 收集《编程珠玑》和《编程珠玑(续)》(以下简称《续》)上的算法和思想,并包括了一些自己的思考和对相关问题的引申,以备复习和查用。内容提要: 主要是算法收集,结合了《程序设计实践》 (Practise of Programming)、《编程精粹:编写高质量C语言代码》(Writing solid code)和《算法导论》的部分相关内容,以及自己的思考,无论你是否看过原书,都能够帮助你快速理解以至于能够独立完成这些算法。我相信自己写的解释比原书详细而易于理解,并且根据我的经验,对很多问题进行了扩展,这也是这个系列命名为“珠玑之椟”的原因。当然,“买椟还珠”是不可取的,这个系.. 阅读全文
摘要:
自从去年ChatGPT3.5发布后使用了几次,现在写代码基本上离不开它和它的衍生产品们了。一方面查资料很方便,快速提炼要点总结;另一方面想写什么样的代码一问就能生成出来,功能大差不差,稍微改改就能用,大大减少使用搜索引擎的时间,是新时代高阶版的Ctrl+C/V。 不过大语言模型归根揭底是靠训练集训练 阅读全文
摘要:
1. 引子 某些接口的响应时间明显变慢,甚至响应超时。这部分接口对整个系统对整体吞吐率和可用性都会带来影响,当然也会影响用户体验。 对核心接口与流量访问高的接口需要做定向优化,例如: 异步处理,或者加入并发处理,避免同步阻塞 如果频繁对数据库进行访问考虑,加入缓存 批量访问,避免for循环调用数据库 阅读全文
摘要:
LinkedList底层是由双向链表实现的,因此可以支持Queue和Stack。 本文讨论的实现基于JDK8源码。 实现Queue LinkedList本身实现了Queue接口。 入队 方法签名 接口说明(JDK手册) 代码实现概括(JDK8) boolean add(E e) 将指定的元素插入此队 阅读全文
摘要:
使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码。但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本)。 Collectors.toMap可以将一个流转化成Map,常见于需要将List转换成Map以便于进一步操作的场 阅读全文
摘要:
在上次反思DDD实践之后,在类目树管理项目中再次实践DDD。从需求分析到建模和具体的落地,结合个人体会,都是干货。 阅读全文
摘要:
从阿里云数仓表中导出数据的详细步骤 阅读全文
摘要:
一、组合总和问题 最近在看leetcode的组合问题,一共四道,总结一下共通之处与不同之处。 原题链接: 组合总和 组合总和II 组合总和III 组合总和IV 对比如下,为了便于对比,将原题目的叙述方式进行了修改。 问题 输入 取值限定 解集限定 解法 I 无重复元素的数组 candidates且全 阅读全文
摘要:
前言 目前暂时放弃阅读源码,只看了实现原理和使用,搞清楚响应式编程、akka模型。 思维导图 使用文档 http://ifeve.com/akka-doc-java-what-is-akka/ 关于Reactive Reactive编程(一):Reactive编程的背景 Reactive编程(二): 阅读全文
摘要:
本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解。 阅读全文
摘要:
结合一些文章阅读源码后整理的Java容器常见知识点。对于一些代码细节,本文不展开来讲,有兴趣可以自行阅读参考文献。 阅读全文
摘要:
主要包括深入分析wait()/notify()/notifyAll()实现生产者消费者模式、线程数调优、并发容器、AQS、JMM五个大专题,七个小专题,leetCode并发题简介三个部分,基本对大多数Java并发领域的知识都有所涉及,也是经常容易提问的问题,整理下来便于以后review。 阅读全文
摘要:
JDK8中用元空间metaspace代替了永久代perm,原因和其特性简单介绍一下。 思维导图 图中gc log详解链接:https://www.jianshu.com/p/cd34d6f3b5b4 其他参考文章 Java 8新特性探究(九)跟OOM:Permgen说再见吧 Metaspace 之一 阅读全文
摘要:
1. tsar 阿里巴巴开源的实时系统监控工具。其内部的sunfire有部分指标就是基于该工具每分钟采集一次来获取的。 github 监控项及数据来源一览 摘自tsar/info.md 监控项 来源 细分项 CPU /proc/stat user: 表示CPU执行用户进程的时间,通常期望用户空间CP 阅读全文
摘要:
Tomcat是一个Web应用服务器,可以作为Servlet容器。它的作用是,解析客户端client发起的request,并组装出HttpRequest、创建HttpResponse,将二者交于内部的HttpServlet处理和填充,如图所示 (图源见参考文档1) Tomcat映射处理请求的Servl 阅读全文
摘要:
多年开发实践中遇到的DB相关的话题研究和整理,不介绍DB的基本概念,也不过于深入DB原理,以满足日常应用、知其然知其所以然为准。
包含十几个子话题,含事务传播性、索引优化、拆分、FailOver等。 阅读全文
摘要:
以往直到现在我所负责的业务场景没有使用MangoDB的,不过对于NoSQL的流行以及兴趣,阅读了一些文档做了简单的了解。待后续需要使用时再深入研究。
本文不介绍具体的语法。 阅读全文
摘要:
《算法导论》图相关的内容贯穿很多章节,适用条件各异,而且都有证明过程。如果不打算熟记证明,仅仅是应用,遇到具体场景再去回忆适用于哪种算法不太方便。汇总一下便于查阅。 阅读全文
摘要:
简称 STW —— Stop the World,暂停所有在执行的线程 简史 2004年Sun实验室第一次发表G1论文 JDK6U14中第一次作为实验选项引入 JDK7中开始作为替换CMS的方案 JDK9中成为默认的垃圾回收器 JDK10优化,将其fullGC改为并行: "JEP307" JDK11 阅读全文
摘要:
volatile关键字的作用 1. 所有变量的可见性——仅仅是修改后的值的可见性,不保证并发修改时新值和预期一致。即只保证读,不保证写。 2. 禁止指令重排序——修饰的变量,读写不会指令重排。如变量isReady被volatile修饰,这两条指令 和`isReady=true`不会在编译时改变顺序。 阅读全文
摘要:
JavaGC的相关知识点在《深入理解JAVA虚拟机》上比较琐碎,有的概念没有详细介绍,前后顺序也不太连贯。为了便于理解原理和问题排查,反复阅读了这一部分及相关文章后简单的总结一下。
思想脉络是:JVM内存模型->内存模型中的堆的进一步分代->GC回收算法、日志、回收器,从一个面(内存模型)到一个点(堆), 再由这个点扩展到关联的点。 阅读全文
摘要:
关于mysql的select...for update,之前没有研究那么细,今天还是和候选人聊的时候才知道,即使写了where条件也是可能锁表的。 简单来说,走上索引(含主键)是行锁,没走上就是表锁。如果索引字段不是唯一索引的,也会表锁。 可以看这篇文章:for update是行锁还是表锁 更详细的 阅读全文
摘要:
一次线上频繁FullGC问题的排查和解决记录,整理了一下通用的排查解决过程,同时介绍了一些可能会用到的工具。 阅读全文
摘要:
对远程调用的代码封装杂谈,以java为例。 阅读全文
摘要:
参考的原文链接:https://www.jianshu.com/p/6eca0eadcc22 安装 执行: brew install git 如果执行中间提示无权限,照着提示把homebrew相关文件赋权即可。 覆盖默认指向 使用安装的git brew install git 查看版本 git ve 阅读全文