用代码打造精美文档:像Markdown一样简单的LaTeX(一) 「当你厌倦了在Word里手动调整格式到凌晨三点,当毕业论文的页眉页码像多米诺骨牌一样连环错位,或许该试试这个学术界『隐形规则』——用代码写文档的艺术:LaTeX。」 >从第一行\documentclass{article}到生成打印店老板都夸专业的PDF,你会发现:用纯文本控制每一毫米的页边距,比鼠标拖拽格式高效得多——毕竟,代码不会在你按下回车键时突然把参考文献 2025-03-04 #latex #排版
如何实现高性能FIFO队列 面试还遇到个题目,“如何实现高性能FIFO队列” 乍一听很唬人,实际上也是个纸老虎,重点在于拆解问题对症下药。 1. 问题分析 FIFO队列很简单,可以用LinkedList构建一个无界FIFO队列,或者用ArrayDeque构建一个有界队列,但他们是高性能的队列么? 回想一下队列的使用场景,队列用于连接生产者和消费者,帮助生产者和消费者解耦,可能的匹配模型有单生产者-单消费者,单生产者-多 2025-02-28 #面试 #高性能 #高并发 #DIY自己做
为什么Netty宁可自己实现ByteBuf也不愿意使用ByteBuffer 面试遇到个题目,“为什么Netty宁可自己实现ByteBuf也不愿意使用ByteBuffer” 正常说来就是引用计数好回收和大小可变,可是面试官提出不同的看法,热烈讨论一番之后我们谁也不能说服谁。 虽然面试黄了但总结不能少,不能及时拿出成体系的论据证明自己的观点,还是平时还是过于怠惰。 1. 接口差异 先看二者的接口差异,找到netty到底比jdk自带的ByteBuffer多做了哪些事情 1. 2025-02-28 #netty #网络编程 #面试
Spring boot启动过程分析 调用SpringbootApplication.run()之后到底发生了什么? Spring是如何启动应用的? 拓展点有很多,我该选谁? 过程中有哪些设计可以借鉴? 1. 观察现象 让我们看一段Spring Boot应用启动日志 12345678910111213141516171819202122232425262728293031323334353637383940414202:55:58.6 2024-06-24 #Java #源码分析 #每周一篇 #spring boot
设计模式——写在最前面 什么是设计模式 wiki中介绍,模式是存在于人们感知到的世界、人造设计或抽象思想中的规律。而设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。 为什么需要设计模式 设计模式是针对软件设计中常见问题的工具箱, 其中的工具就是各种经过实践验证的解 2024-06-13 #设计模式
Java.util中的容器——List篇 1. 继承结构 可以看到 为什么ArrayList、Vector、LinkedList在继承了AbstractList之后还要再次申明实现了List接口呢?这是不是一种多余的行为? 就目前的结果而言确实多余,但是在util里所有的容器中,他们都采用了类似的写法。而且就我所知Josh Bloch没有解释为什么,所以这个问题可能没有官方解释。 我的理解是:在类定义中再次实现接口而不是通过继承抽象类 2024-06-10 #Java #源码分析 #每周一篇
垃圾回收的算法与实现学习笔记——基本概念 对象 不同于OOP,这里的对象指的是应用程序使用的数据的集合。 对象配置在内存空间里。 对象时GC的基本运作单位 一般说来,对象由头(Header)和域(Field)构成 头 对象中保存对象本身信息的部分称为头,主要包含: 对象的大小 对象的种类 域 对象使用者在对象中可访问的部分称为域。 可以将域理解为java中class的成员变量,如 class A { int val; } 若有A 2023-10-11 #GC #学习笔记 #垃圾回收的算法与实现
浅谈使用hook实现React中的应用状态管理 状态管理可以说是所有应用中最难处理的一部分。这也是为什么当下存在这么多的状态管理工具,并且仍然层出不穷(有一些工具甚至建立在另一些之上,npm 中有大量 “简单版的 redux“)。然而,我认为正是由于我们经常过度设计,才导致这个问题这么难处理。 我们通常把 React 组件看做乐高积木,用它们来搭建应用。我觉着听到这个说法的人,通常会隐隐地觉得这个说法遗漏了和状态相关的那一部分。我自己使用的方法 2023-10-06 #js #react #状态管理 #前端
从零开始的golang编程(day1) 第一天,完成go下载器的搭建 原型设计 首先我们要拆分问题,一个支持多任务,多分片,多协议,还能断点续传的下载器无疑是复杂的任务,一时半会儿想不出好的解决方案。所以先将问题拆分简化,刨除所有的定语,一个下载器首先要能发出请求,然后将收到的数据保存至文件,其次才是逐个完成定语对应的功能。 如何使用go完成http协议下载? 先写测试程序,目标:把baidu的首页html文件下载下来并保存到当前目 2023-09-03 #go #home-center #go-downloader #编程日志