随笔分类 -  原理&故事

1 2 3 4 5 ··· 9 下一页
讲一些理论性的东西,不涉及具体技术。讲一些有趣的故事,让生活更美好!
摘要:我们在使用数据库进行查询时,很多时候会用到分页展示功能,因此除了像mybatis这样的完善的orm框架之外,还有pagehelper这样的插件帮助减轻我们的工作。 pagehelper的实现方式是,不需要我们去编写分页代码,只需要调用一个分页方法,出来的结果就是经过分页处理的。一来,我们的xml中的 阅读全文
posted @ 2022-11-27 15:54 阿牛20 阅读(788) 评论(0) 推荐(0) 编辑
摘要:一直以来,进程和线程的区别,这种问题一般会被面试官拿来考考面试者,可见这事就不太简单。简单说一点差异是,进程拥有独立的内存资源信息,而线程则共享父进程的资源信息。也就是说线程不拥有内存资源,所以对系统消耗会更小。所以,线程也有轻量级进程的说法。 除了从资源消耗的角度来讲进程线程的差别,还有一个值得说 阅读全文
posted @ 2022-09-25 11:04 阿牛20 阅读(835) 评论(0) 推荐(0) 编辑
摘要:关于文件跟踪,我们有很多的实际场景,比如查看某个系统日志的输出,当有变化时立即体现,以便进行问题排查;比如查看文件结尾的内容是啥,总之是刚需了。 1. 自己实现的文件跟踪 我们平时做功能开发时,也会遇到类似的需求,比如当有人传输文件到某个位置后,我们需要触发后续处理操作。 那么,我们自己实现的话,也 阅读全文
posted @ 2022-08-14 20:13 阿牛20 阅读(1574) 评论(1) 推荐(0) 编辑
摘要:在网络请求时,总会有各种异常情况出现,我们需要提前处理这种情况。在完善的rpc组件dubbo中,自然是不会少了这一层东西的。我们只需要通过一些简单的配置就可以达到超时限制的作用了。 dubbo的设计理念是,客户端控制优先,服务端控制兜底。 1. 超时机制的实现思路 要想实现超时,一般有两个思路。一个 阅读全文
posted @ 2022-07-09 13:53 阿牛20 阅读(4459) 评论(2) 推荐(1) 编辑
摘要:现实场景往往是这样,我们应对一个需求,很快就会有一个处理方法了,然后根据需求做了一个还不错的实现。因为实现了功能,业务很happy,老板很开心,all the world is beatiful. 但随着公司的发展,有人实现了一套底层的标准组件,按要求你必须要接入他那个,他的功能与你类似,但你必须要 阅读全文
posted @ 2022-06-26 11:32 阿牛20 阅读(929) 评论(0) 推荐(1) 编辑
摘要:wait/notify 机制是解决生产者消费者问题的良药。它的核心逻辑是基于条件变量的锁机制处理。所以,它们到底是什么关系?wait()时是否需要持有锁? notify()是否需要持有锁?先说答案:都需要持有锁。 wait需要持有锁的原因是,你肯定需要知道在哪个对象上进行等待,如果不持有锁,将无法做 阅读全文
posted @ 2022-03-28 06:08 阿牛20 阅读(1553) 评论(0) 推荐(1) 编辑
摘要:我们都用过消息中间件,它的作用自不必多说。但对于消费者却一直有一些权衡,就是使用push,还是pull模式的问题,这当然是各有优劣。当然,这并不是本文想讨论的问题。我们想在不使用长连接的情意下,如何实现实时的消息消费,而不至于让server端压力过大。大体上来说,这是一种主动拉取pull的方式。具体 阅读全文
posted @ 2022-03-24 16:51 阿牛20 阅读(367) 评论(0) 推荐(0) 编辑
摘要:上一节我们通过对x86的linux内核的讲解,知道了它的一个大概的启动过程。 /arch/x86/boot/header.S -> calll main -> /arch/x86/boot/main.c -> go_to_protected_mode() -> /arch/x86/boot/pm.c 阅读全文
posted @ 2022-01-23 21:51 阿牛20 阅读(573) 评论(0) 推荐(1) 编辑
摘要:一直很好奇,操作系统是如何工作的?我们知道平时编程,是如何让代码跑起来的,但那些都是比较高层次的东西。越往后,你会越觉得,像是空中楼阁,或者说只是有人帮你铺平了许多道理,而你却对此一无所知。 1. 操作系统的困惑 当然了,也不是真的一无所知。因为有很多的操作系统方面的书籍,教你了解操作系统是如何如何 阅读全文
posted @ 2022-01-03 21:12 阿牛20 阅读(519) 评论(1) 推荐(0) 编辑
摘要:clickhouse据说是用在大数据量的olap场景列式存储数据库,也有幸能够用到它在实际场景中落地。本篇就来说说简单的使用心得吧。 1. 整体说明 架构啥的,就不多说了,列式存储、大数据量、高性能。参见官方文档地址: https://clickhouse.com/docs/en/ 对于使用者而言, 阅读全文
posted @ 2021-12-03 09:31 阿牛20 阅读(1140) 评论(0) 推荐(0) 编辑
摘要:是一个动态数据管理框架。 它包含许多组成典型数据库管理系统的部分,但省略了存储原语。它提供了行业标准的SQL解析器和验证器,具有可插入规则和成本函数的可自定义优化器,逻辑和物理代数运算符,从SQL到代数(以及相反)的各种转换。 以上是官方描述,用大白话描述就是,calcite实现了一套标准的sql解 阅读全文
posted @ 2021-08-08 17:21 阿牛20 阅读(1634) 评论(0) 推荐(0) 编辑
摘要:用例:有N个文件,每个文件只有一列主键,每个文件代表一种属性。即当如PRI1主键在A文件中,说明PRI1具有A属性。这种场景,一般用于数据的筛选,比如需要既有属性A又有属性B的主键有哪些?就是这类场景。 如何处理该场景? 1. 解题思路 如果抛却如题所说文件限制,那我们如何解决? 比如,我们可以将每 阅读全文
posted @ 2021-06-29 15:38 阿牛20 阅读(329) 评论(0) 推荐(0) 编辑
摘要:害,又是一个炒冷饭的时间。fork/join是在jdk1.7中出现的一个并发工作包,其特点是可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。从而达到多线程分发任务,达到高效处理的目的。 1. 关于fork/join的一点想法 以上说法,也许大家没什么 阅读全文
posted @ 2021-06-28 10:41 阿牛20 阅读(1199) 评论(0) 推荐(0) 编辑
摘要:我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求。而这请求,可能是该节点能处理,也可能是该节点不能处理的,也可能是需要多节点共同处理的,可以说是情况比较复杂。 所以,coordinator的重要工作是,做请求分发与结果收集。那么,如何高性能和 阅读全文
posted @ 2021-06-26 06:45 阿牛20 阅读(796) 评论(0) 推荐(0) 编辑
摘要:用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断或者别名字段抽取定义,请给出此解析方法。 想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b... 1. 解题思路 如果不想做复杂处理,最容易想到的,就是直接用某个特征做分割即可。比 阅读全文
posted @ 2021-06-21 09:58 阿牛20 阅读(1490) 评论(4) 推荐(1) 编辑
摘要:java的一大核心特性,即是自动内存回收。这让一些人从繁琐的内存管理中解脱出来,但对大部分人来说,貌似这太理所当然了。因为现在市场上的语言,几乎都已经没有了还需要自己去管理内存这事。大家似乎都以为,语言不就应该干这事吗。 其实在我们现在的编程语言中,从某种角度上,大致可以分为多进程并发模型和多线程并 阅读全文
posted @ 2021-06-14 21:03 阿牛20 阅读(442) 评论(0) 推荐(0) 编辑
摘要:害,别误会,我这里说的stream不是流式编程,不是大数据处理框架。我这里说的是stream指的是jdk中的一个开发工具包stream. 该工具包在jdk8中出现,可以说已经是冷饭了,为何还要你说?只因各家一言,不算得自家理解,如若有空,何多听一版又何妨。 本篇主要从几个方面讲讲:1. 我们常见的s 阅读全文
posted @ 2021-06-12 22:49 阿牛20 阅读(837) 评论(3) 推荐(1) 编辑
摘要:上一篇文章中,我们看了get在es的实现过程,虽只是一个简单的单条查询,但看起来实现却非常之复杂。纠其原因,是我们围绕了太多外围的东西讲了,而其核心则无外乎三点:1. 定义id对应的机器节点; 2. 查找真正的docId; 3. 查找docId对应的field信息; 本篇,我们再看另一个es的重要功 阅读全文
posted @ 2021-06-05 15:24 阿牛20 阅读(613) 评论(0) 推荐(0) 编辑
摘要:前面讲的都是些比较大的东西,即框架层面的东西。今天咱们来个轻松点的,只讲一个点:如题,get单条记录的es查询实现。 1. get语义说明 es中要实现get的查询,直接就是一个url请求即可: curl http://localhost:9200/test/job/1 get是用于搜索单条es的数 阅读全文
posted @ 2021-05-24 10:19 阿牛20 阅读(2104) 评论(0) 推荐(0) 编辑
摘要:上一篇讲解了es的网络通信模块实现过程,大致明白其工作原理。再总结一下,就是基于netty编程范式,形成es通信基础。从而,最终我们得到几个重要的handler: Netty4HttpPipeliningHandler/Netty4HttpRequestHandler/Netty4MessageCh 阅读全文
posted @ 2021-05-05 16:37 阿牛20 阅读(854) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 9 下一页