文字里的探索

关于 AI、编程与阅读的思考和实践。

全部文章 72 篇

《奇点更近》

雷·库兹韦尔是一位著名的未来学家、发明家和作家,以其对技术进步的指数级增长和“奇点”概念的预测而闻名。他曾撰写多本畅销书籍,包括《奇点临近》和《如何创造思维》。 库兹韦尔以其对技术趋势的敏锐洞察力和准确预测而著称,他做出的147次…

阅读全文

AI Coding 最佳实践(202506 版)

Trae 海外版近期开始收费了。但是 AI Coding 最强 IDE 的宝座目前还是属于 Cursor,特别是在 Claude 4 的加持下。我两个都买了会员,同样的模型、同样的提示词,比较之下,Trae 还是稍欠火候。 这里我…

阅读全文

《智人之上》

《智人之上》作者尤瓦尔·赫拉利(Yuval Noah Harari)是以色列的一位历史学家、哲学家和作家,以其对人类历史和未来的深刻洞察而闻名。 他是耶路撒冷希伯来大学历史学系的教授,主要研究世界历史和宏观历史学。他的著作以通俗易…

阅读全文

浅谈 JVM 3:指令集及其执行

上文我们聊了如何参考 JVM 规范 解读 Java 字节码。但对于字节码方法字段 Code 中的 JVM 指令 执行过程我们留下了疑问,这次我们来谈谈。 我们先来看一下更加详细一些的 JVM 逻辑区域划分。 可以看出,在 JVM …

阅读全文

如何导出熊掌记 Bear 中的笔记

熊掌记 Bear 是一款 macOS 下基于 Markdown 的笔记软件,颜值很高,很轻量。 但是最近熊掌记 Bear 会员到期,续费时发现会员价格涨价了,所以想看一下如何批量将熊掌记 Bear 中的笔记和附件全部导出。探究实践…

阅读全文

AI 产品汇总

ChatGPT Claude 文心一言-百度 通义千问-阿里 智谱清言 HuggingFace New Bing Gemini-谷歌 Coze-字节 Dify Preplexity Copilot Dream Machine St…

阅读全文

卡片写作法

纳博科夫一生著述颇丰,创作了十七部长篇小说、多部电影剧本及诸多著述,《洛丽塔》、《微暗的火》、《普宁》和《爱达或爱欲》等长篇都名声遐迩,特别是《洛丽塔》在文学和影视化上近乎完美的成功。 卢曼在30多年的研究中,出版了58本著作和数…

阅读全文

如何做一个聪明的阅读者

《聪明的阅读者》是阳志平 5 月新出的关于如何阅读的一本书。在阅读领域,另一本值得一提的是《如何阅读一本书》,至少在力作水平。在读完《聪明的阅读者》后,发现本书关于阅读的介绍更加全面,下面来对两本书内容做出对比。 《如何阅读一本书…

阅读全文

代码坏味道及其重构 4 过长参数列表、数据泥团

函数的参数列表是函数可变性的表现。 参数尽量避免重复,越短越容易理解,而且调用者调用函数也越轻松。 函数参数列表过长,一些函数的参数总是成对出现。 函数的参数列表应该总结该函数的可变性,标示出函数可能体现出行为差异的主要方式。和任…

阅读全文

算法与数据结构 1:开篇

[TOC] 经历过长久的停滞,码字的念头又跳回到我的大脑。可能是希冀记录一下自己人生,毕竟人这一生如落花似流水;可能是受朋友激发,发现原来身边也有同行者,在写作上不再孤独;可能是主动总结一下生活和技术经验,算是对一段时间内的自己做…

阅读全文

代码坏味道及其重构 3 过长函数

在代码坏味道中,另外一个特征是过长函数。对于动态语言,比如 Python、Ruby,超过 5 行算过长函数。对于静态语言,比如 Java,超过 10、20 行算过长函数。 此问题出现的原因有很多,比如早期开发者因为性能原因,会去减…

阅读全文

JWT 认证机制

互联网服务提供认证机制的传统流程如下: 用户向服务器发送用户名和密码; 服务器验证通过后,在当前对话(Session)里面保存相关数据,比如用户角色、登录时间等等; 服务器向用户返回一个 session_id,写入用户的 Cook…

阅读全文

图

图(Graph)是另一种非线性表数据结构,和树比起来,图更加复杂。 我们首先了解一下图的几个关键概念: 顶点 vertex:下图中 A、B、C、D、E、F 就是顶点; 边 edge:顶点之间的连线就是边,边可以是有向的,也可以是无…

阅读全文

Kotlin 新特性是如何实现的

在 Java 中,一个对象类型可能为 null。为了保证代码的正常执行,我们经常需要加上判空操作 if (object != null) 。 在 Kotlin 中,字将变量分为可空类型和不可空类型,以 String 类型为例, v…

阅读全文

二叉树应用篇

二叉查找树:在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。也称为二叉搜索树。 中序遍历二叉查找树,可以输出有序的数据序列,时间复杂度是 O(n),非常高效。因此,二叉查找…

阅读全文

代码坏味道及其重构 2 重复代码

重复的代码 重复的常量 直接复制粘贴代码; 团队开发时,不同的人写了相同的代码; 修改、理解代码时,需要阅读所有的代码副本,然后修改所有的代码副本,漏改就会引起 bug。 把相似结构的代码放到一起,方便提炼函数。 让存在关联的代码…

阅读全文

Prompt 工程最佳实践:ChatGPT 版

注意:”{text input here}” 是实际文本/内容的占位符 使用最新版本的模型,往往可以获得更好的结果。 Bad ❌ Better ✅ Bad ❌ Better ✅ Bad ❌ Better ✅ 在上述例子中,使用”-…

阅读全文

CatTalk:无需翻墙的 ChatGPT

基于开源项目 https://github.com/Yidadaa/ChatGPT-Next-Web 搭建的无需翻墙即可使用 ChatGPT 网站: https://www.cattalk.club/ 。 自行配置 OpenAI …

阅读全文

重构

重构:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。用户的体验不应该有任何改变。如果我在重构过程中发现了任何bug,重构完成后同样的 bug 应该仍然存在。 重构的关键在于运用大量微小且不改变软件表现的步骤,一步…

阅读全文

彩云小译

官网: https://fanyi.caiyunapp.com 热度:⭐️⭐️ 上手难度:⭐️ 用途:翻译 是否免费:免费试用 是否开源:否 彩云小译(英语:LingoCloud)是一款翻译软件,专注于人工智能翻译领域,有移动端软…

阅读全文

ChatGPT

官网: https://chat.openai.com/ 热度:⭐️⭐️⭐️⭐️⭐️ 上手难度:⭐️ 用途:对话 是否免费:免费试用,Plus 版本 $20/月 是否开源:否 ChatGPT 是由 OpenAI 开发的先进语言模型…

阅读全文

ChatPDF

官网: https://www.chatpdf.com/ 热度:⭐️⭐️ 上手难度:⭐️ 用途:阅读文档 是否免费:免费试用,Plus 版本 $5/月 是否开源:否 ChatPDF 可以根据你上传的 PDF 文件生成摘要。还可以针…

阅读全文

Civitai

官网: https://civitai.com/ 热度:⭐️⭐️⭐️ 上手难度:⭐️ 用途:绘图 Prompt 分享 是否免费:免费 是否开源:否 Civitai 是一个平台,人们可以分享和发现资源,用于创造人工智能艺术。用户可以…

阅读全文

Copilot

Copilot 官网: https://github.com/features/copilot 热度:⭐️⭐️⭐️⭐️ 上手难度:⭐️⭐️⭐️ 用途:生成代码 是否免费:免费试用两个月,之后 $10/月 是否开源:否 GitHub…

阅读全文

Hugging Face

官网: https://huggingface.co/ 热度:⭐️⭐️⭐️ 上手难度:⭐️⭐️⭐️ 用途:查找 AI 模型 是否免费:免费 是否开源:开源 Hugging Face 是一家美国公司,开发使用机器学习构建应用程序的工…

阅读全文

阿里 Logo Design Lab

官网: https://logo.aliyun.com/logo#/aigc 热度:⭐️ 上手难度:⭐️ 用途:设计 icon 是否免费:每日免费生成额度,原图下载收费 是否开源:否 Logo Design Lab 可以根据提示词…

阅读全文

Midjourney

官网: https://www.midjourney.com 热度:⭐️⭐️⭐️⭐️⭐️ 上手难度:⭐️ 用途:绘画 是否免费:免费 是否开源:否 Midjourney 由同名研究实验室开发,可根据文本生成图像,于2022年7月1…

阅读全文

ModelScope

官网: https://modelscope.cn/home 热度:⭐️⭐️⭐️ 上手难度:⭐️⭐️⭐️ 用途:查找 AI 模型 是否免费:免费 是否开源:开源 ModelScope 是一个“模型即服务”(MaaS)平台,旨在汇集…

阅读全文

New Bing

官网: 必应 热度:⭐️⭐️⭐️⭐️ 上手难度:⭐️ 用途:聊天 是否免费:免费 是否开源:否 新必应(New Bing)是微软推出的一款基于GPT4模型的智能搜索引擎,它不仅可以提供高质量的搜索结果,还可以与用户进行自然语言交互…

阅读全文

Notion AI

官网: Notion – Your wiki, docs & projects. Together. 热度:⭐️⭐️⭐️⭐️ 上手难度:⭐️ 用途:聊天 是否免费:基础版免费,商业版 15美元/月 是否开源:否 Notion Al…

阅读全文

Stable Diffusion

官网: https://github.com/Stability-AI/stablediffusion 热度:⭐️⭐️⭐️ 上手难度:⭐️⭐️⭐️ 用途:绘画 是否免费:免费 是否开源:开源 Stable Diffusion 是 …

阅读全文

编译原理 2:词法分析

词法分析是编译原理中一个重要的部分,也叫做 字面翻译(Literal Translation) ,用于把源程序中的单词转换成 形式化语言(formal languages) 中的有效单词。词法分析的目的是把输入的字符流分割成有意义…

阅读全文

Android 四大组件 1:Activity

本文包括以下内容(针对Android面试,部分细节略去): Activity生命周期 Activity四种启动模式及其应用场景 IntentFilter匹配规则 (Activity和Fragment、Service交互会在其他文章…

阅读全文

Android Gradle 概要

Android 工程 Gradle 相关文件有: 工程目录下的build.gradle、settings.gradle;各个module目录下的build.gradle。 其中settings.gradle里的内容非常简单,比如:…

阅读全文

浅谈测试驱动开发

我们经常会碰到在项目迭代的中后期,代码变得臃肿、混乱的情况。后期参与到项目中的开发者,阅读、修改代码将成为一个让人头疼的大问题,也是团队开发效率的瓶颈之一。如何持续保证代码质量,是每个开发团队和开发者需要面临和解决的一个问题。 我…

阅读全文

编译原理 1:概要篇

程序代码要想运行在计算机之上,必须要转换为机器语言才行。而负责这项翻译工作的程序为编译器。与之不同的解释器不是通过翻译的方式生成目标程序,而是通过直接执行一行行程序代码来运行。 C 语言是编译型语言,Java 则结合了两种方式,一…

阅读全文

浅谈 C 语言 1:编译过程及其可移植性

C 语言作为比较古老的一门语言,当下仍有较大的影响力。根据 TIOBE 语言排行榜数据,C 语言处在第二位。 一方面,几乎所有操作系统的大部分代码都是 C 语言编写的;另一方面,很多高级语言的编译器、虚拟机也是 C 语言编写,比如…

阅读全文

谈谈进程间通信

我们在一个操作系统之上可以同时登录多个用户使用计算机,同一个用户可以一边使用音乐软件听歌,一边使用 IDE 写代码。这都离不开操作系统中的进程。 进程是操作系统中最核心的概念,是正在运行程序的一种抽象。音乐软件、IDE 都对应一个…

阅读全文

计算机网络基础

网络基础基本是围绕OSI七层模型或者是 TCP/IP 模型展开的,主要包括各层名称及功能、每层有哪些协议。 应用层:(HTTP、DNS等) HTTP报文格式、头部有哪些字段 HTTP状态码 HTTP和HTTPS的区别 HTTPS中…

阅读全文

算法与数据结构 2:如何学习

在上文 算法与数据结构(一)开篇 中讲了为什么学习算法与数据结构和它包括哪些内容。 概括来说,掌握算法与数据结构之后,我们会更容易跟上计算机潮流、更快了解其他框架底层原理、更可能进入理想的公司。 它包括: 时间复杂度分析; 空间复…

阅读全文

Git 之旅:不那么深入理解 Git

[TOC] 代码管理的最早形态是使用类似现在百度同步盘的方式同步、管理代码。但是代码冲突问题时有发生,只能人工解决。 之后出现了改善工具: diff:比较文本文件、目录差异 patch:相当于 diff 反向操作 Linus 在 …

阅读全文

如何写好简历的指北

经过忙碌的校招,发现现在计算机行业竞争真的激烈。在这段时间也对简历、面试、专业技术上做了很多阅读、思考和实践。在简历上,看了教学视频,数篇博客,听了live直播。现在把我阅读的一些东西和自己关于如何写简历的心得总结一下,分享给大家…

阅读全文

从 Android 源代码来看『观察者模式』

这篇文章主要帮助大家理解什么是『观 察者模式』,同时结合Android中ListView和BaseAdapter的源代码来解释一下此模式。 『观察者模式』中有两个角色:老板、员工。 老板可以雇佣和解雇员工,可以命令员工去干活。 根…

阅读全文

从 Android 源码来看 “Builder 模式”

本文主要解释什么是Builder模式,及其作用。然后结合 Android 源码来看一下Builder模式的实现。 Build 是构建、建造的意思,Builder 模式又称建造者模式。 Builder模式中包括两个核心元素:产品和建…

阅读全文

四步准备 Android 面试

各大公司内推进行的如火如荼,再过一段时间就是校招。 面试可以说是学生步入社会的一场考试,只不过是笔试+多次面试(口头考试)的结合体,只要时间不冲突,可以多考几次,秋招不行还有春招。 笔试形式类似在学校的考试。面试相对来说形式新一些…

阅读全文

Android 开发涉及知识概要

Android历史 开发语言:Java、C++ 系统:Android、TV、Wear、Auto、Things 系统架构简介 Android已发布版本及更新 开发环境搭建、建立工程、AndroidStudio简单使用 UI控件【分为…

阅读全文

Android 插件化框架 RePlugin 初探

写软件时,软件的扩展性至关重要。而软件的扩展性跟其代码的解耦程度相关。解耦程度大,就是模块化强。解耦程度小,即模块化弱。 插件化框架RePlugin,所做的就是将软件解耦,实现了代码的模块化。这对软件本身的后续开发、功能添加等,是…

阅读全文

Android 开发知识概要

Android一词最早出现在法国作家维里耶德利尔·亚当1986年发表的《未来夏娃》这部科幻小说中,作者利尔·亚当将外表像人类的机器起名为Android。这就是Android小人名字的由来。 05年,Google低调收购了一家公司。…

阅读全文

Android 内存泄漏场景及其解决方法

本文包括以下内容: 内存泄漏原理 Android内存泄漏发生的情况 检测内存泄漏的工具、方法 如何避免内存泄漏 简单来说,Java的内存泄漏就是对象不再使用的时候,无法被JVM回收。内存泄漏最终会引发Out Of Memory。 …

阅读全文

Replugin 插件管理与权限管理

插件化能够提高我们程序的拓展能力,提高灵活性。Android中比较有特点的一个插件化框架是RePlugin。 RePlugin分为宿主和插件的概念。一个APP由 1个宿主 + n个插件组成。宿主的主要功能是管理插件的安装、卸载、更…

阅读全文

RePlugin 插件启动源码分析

大年初一,先祝各位新年快乐!今天还在看博客学习的兄dei很强大,如果能把一年节日假期时间分配到自己成长上,那你的一年 = 别人一年 * 1.1。如果能够做到年年如此,10年后你就相当于活了11年。而这期间,学习复利效应的效果是呈现…

阅读全文

RePlugin 阅读源码环境搭建

RePlugin是一个开源的Android插件化框架,只hook一处的思想不禁让人想读一下它的源代码。另外了解一下RePlugin的源代码也能够方便自己代码的编写和对设计模式的认识。 RePlugin框架本身是基于AndroidS…

阅读全文

CocosCreator 引擎资源加载与释放原理简析

本文主要内容如下: 资源加载与释放部分代码所在 调试、修改引擎源码的方法 资源加载与释放原理简析 如要了解 CocosCreator 引擎资源加载与释放的原理,调试、修改引擎代码有助于对其原理进行理解。因此文中会先介绍 Cocos…

阅读全文

Git 的诞生

相信各位开发者对Git不会陌生,就算不熟悉Git相信你对GitHub也有所了解。而Git这款在版本管理工具中叱咤风云的软件是如何出现的呢?在Git之前版本管理又是如何发展的呢?在本文里我会对版本控制工具的发展和Git的起源的进行介…

阅读全文

Git 入门

打开官网 https://git-scm.com/ , 你可点击对应系统的安装包的下载标识进行下载,然后安装即可。 另外,你还可以通过以下几种方式安装 Git: 在 Linux 系统如 CentOS 下,通过 yum 进行安装 y…

阅读全文

黑苹果安装与踩坑记

根据我自己的经历,对于一个开发者来讲,macOS + Alfred + terminal + Dash … 等软件的使用体验比Windows好很多。同时受限于MacPro的价格,所以最近萌生了在自配电脑上安装黑苹果的想法,MacP…

阅读全文

算法与数据结构 3:数组与链表

这次来说说数组与链表。在说数组与链表之前,先来介绍一下线性表和非线性表。 顾名思义,线性表的结构是线性的。就像图书馆书架上的书一样,每一行的书都是整齐的排列在直直的书板上。高楼在垂直方向上也可以说是线性的,每一层楼都可以看作是一个…

阅读全文

算法与数据结构 4:栈与队列

上次聊到数组与链表,它们都是线性表,数组与链表的本质区别是内存是否连续,进而得出结论:数组可以在 O(1) 时间复杂度进行随机访问,但是对内存要求严苛;链表访问元素时间复杂度为 O(n),但是对内存要求低。 今天来介绍另外两个线性…

阅读全文

算法与数据结构 5:哈希表

在讲哈希表之前,我们先来看看往一个数组插入数据的过程。 确认插入数据的下标; 把数据放入数组。 拿日常生活中根据身高排队的例子来说,我们想获取到从低到高的姓名列表。我们就是在重复这样一个过程: 找到剩余队伍中身高最低人的姓名; 放…

阅读全文

算法与数据结构 6:二叉树基础篇

不同于数组、队列等线性表的数据结构,树是一种非线性结构。除了树之外,图也是一种非线性结构。 二叉树如下所示。 在树中由节点和连接节点的边组成,二叉树最多有两个子节点。关于节点有几个概念: 父节点:节点 1 为节点 2 和 3 的父…

阅读全文

macOS 下载编译 aosp 源码

最近在读《Android 进阶指北》,开篇就是介绍如何在安装到 VirtualBox 的 Ubuntu 上进行下载和编译 aosp(Android Open Source Project)。由于我的电脑是 macOS,所以首先尝试…

阅读全文

浅谈 JVM 1:一次编写,到处运行

不同于 C、C++ 无需运行时可直接编译为机器码运行,Java 程序需要运行在 JRE 之上。而正因如此,Java 拥有了 C、C++ 所不具有的可移植性。而在 JRE 之中,JVM 又是一个重要的组成。 之所以要大费周章地编写 …

阅读全文

浅谈 JVM 2:如何阅读字节码

上文聊到理解字节码和 JVM 执行过程能够帮助我们日常开发中解决疑难杂症。这次,我们先来看看如何阅读字节码。 字节码文件是我们使用 javac xxx.java 编译而来的 xxx.class 文件,内容为 8 bit 字节流。 …

阅读全文

浅谈 JVM 4:类加载机制

前文中我们了解了如何阅读字节码和字节码执行引擎中的运行时栈帧结构,字节码执行引擎中的方法调用等内容还未涉及。Java 中多态的特性离不开 JVM 的动态绑定,动态绑定技术是方法动态调用的关键。而如果要介绍方法调用机制,需要先了解字…

阅读全文

浅谈 JVM 5:方法调用机制

经历了前文中类加载机制、JVM 逻辑区域划分和运行时栈帧及方法字节码执行过程等内容的沉淀之后,我们这次聊聊 JVM 中方法调用是如何发生的,以及静态绑定和动态绑定是什么。 先从一段 Java 代码及其对应字节码看起。 Java 代…

阅读全文

浅谈 JVM 6:Android 虚拟机对比

Android 开发最初使用 Java 作为主要开发语言,后来由于版权等原因,Google 官方目前推荐使用 Kotlin。但无论是 Java 还是 Kotlin,都是需要编译成字节码,然后经过 Android 特有的优化,运行在…

阅读全文

apt 和 apt-get 有什么不同之处?

[TOC] 在使用 Ubuntu 命令行时,我们会碰到 apt 和 apt-get 命令,这两个命令有什么不同呢? apt-get 命令可以让我们安装、更新、移除软件包。apt-get 是一个我们可以和 APT(Advanced …

阅读全文

Linux 命令行 Tricks

最近老弟说要上手 Linux,所以借此机会简单介绍几个 Linux 的命令。用 Linux 大多数时候,简单来说,我们是指的终端命令行的操作。接下来我就说几个比较便捷、简单、有趣的操作。 本文只针对入门级,老鸟请绕道。 我们都知道…

阅读全文

Linux 终端操作入门

和 Windows 平易近人的视窗操作不同,Linux 更多的是终端操作。服务器中有 70% 以上在运行 Linux 操作系统,所以 Linux 更多的是为服务器或者说开发者服务,尽管 Ubuntu 的桌面软件已经做得很不错。所以…

阅读全文