jonssonyan's Website

保持热爱,奔赴山海。

最近我刷到一些关于 OPC(一人公司)的帖子,而且最近几年很多一二线城市都在鼓励 OPC 创业,对此深有感触,特此分享一点个人的经验,欢迎一起交流。

自我介绍

本人前些年一直在做开源,最近一年我在做产品,主要做独立站和 App(Android + iOS),目前一个人完成了闭环。

OPC 是什么?

所谓的一人公司并非一定要注册一个公司,而是一个人借助 AI 可以做一个公司的事情,包括但不限于开发、运营、投放、社媒,目的是盈利。

阅读全文 »

juicity 协议用的人比较少,理论上用人越少协议越稳定,juicity 从 2023 年开始开发,截止目前在 GitHub 仅有 1k star,如果你还没听说过,可以去 GitHub 学习。本文主要介绍如何搭建 juicity 协议 + acme 自动续签 + nft 端口转发。

juicity: https://github.com/juicity/juicity

申请证书

使用 acme.sh 实现证书的自动管理

acme: https://github.com/acmesh-official/acme.sh

阅读全文 »

前言

之前我分享了我去香港办卡的经历:我用一天速通了中银香港、汇丰、众安、蚂蚁 ,就是为了跑通全球收款做准备,因为 stripe 只能绑定本地的银行卡,比如我注册 stripe 是地点是香港,所以也需要绑定香港的银行卡。

内地收款

我们先看下在中国内地如何收款的,线上收款方式最常见的就是微信和支付宝,但是需要有公司作为实体去申请,个人是申请不了的。这时候就出现了很多第三方支付,可以使用个人身份入驻,还有一种是挂机程序通过监听支付成功的通知来手动发起回调请求,但是这些都是不可靠的(我曾经使用过某第三方支付,跑路后余额变成了欢乐豆),并且微信和支付宝在全球覆盖并不广泛,国外更流行使用万事达和 VISA 卡。

全球收款

阅读全文 »

前言

最近去了一趟香港,1 天时间开户了 5 个银行账户,上午线下开户了中银香港(当场拿到实体卡),下午在线上开户了中银香港、汇丰、众安、蚂蚁,期间踩了不少坑。

我做了一些 AI 产品: 新产品:HairTry,一款 AI 发型设计工具,收款使用的 stripe,提现需要绑定银行卡,国外大部分服务都是不支持内地的银行卡,而且鉴于我 stripe 注册地的是香港,所以这时候办港卡是再合适不过了。

准备

在去香港之前我计划是开户四家银行,两家传统银行和两家虚拟银行,分别是中国银行(香港)、汇丰银行、ZA Bank (众安) 、蚂蚁银行,强烈建议大家多开户几个防止回来之后才发现用不了,血亏。

阅读全文 »

前言

大家好,我是 jonssonyan。

今年在尝试做 AI 出海产品,严格意义上这是我的第一款出海产品,之前我开源了很多作品,其中几个还可以,在 GitHub 收获了 5k+ Star,小范围内有些影响力,但是之前的用户可能并不是下一个产品的目标用户,所以我就认为我是从 0 开始。

与之前不同的是这次我基本跑通了商业闭环:用户获取 -> 用户转化 -> 用户留存 -> 复购与增值 -> 口碑传播 ↵

做出海的都知道,国际支付很难搞定,国外和国内的支付习惯不同,国内几乎都是微信/支付宝/借记卡,而国外多数使用信用卡/GooglePay/ApplePay/数字银行等。这时 Stripe 是最好的选择(全球排名前 10 的独家兽),但是并未对中国大陆开放并且封控很严格,经过一番摸索,终于我基本接入成功了(还有剩余要优化的部分)。

阅读全文 »

前言

感谢 Kimi K2,让穷人也用上了 Claude Code。

Claude Code 发布以来,编程能力是目前公认最强的,但是对国内不太友好,封控严重,国内一封一大片,我也在一直观望,否则秒封白折腾。

但是 7 月 11 号晚上 月之暗面发布 Kimi K2,总参数 1T,支持 Anthropic API,价格还便宜,可以替换 Claude Code 的默认模型,实现国内无痛用上 Claude Code,

Claude Code:https://www.anthropic.com/claude-code

阅读全文 »

舔狗日记已开源~,传送门: 《新作品《舔狗日记》:在爱的剧本里,我们都是自己的主角》

GitHub:https://github.com/jonssonyan/dog-diary

前言

大家好。

今年 3 月份一个朋友和我说他有一个需求,就是不知道每天吃什么,我是不是可以开发一个推荐美食的网站?这样他就不需要每天纠结吃什么了,甚至可以直接生成菜谱,参照菜谱自己动手做饭。

阅读全文 »

现在很多企业都在用 AI 给业务赋能,网上充斥着各种名词,Agent、LLM、RAG、MCP、Function Call,看的眼花缭乱,本文会将它们比作是一台电脑的各个组成部分,通俗的给大家讲清楚这几个是什么?它们之间的联系是什么?

LLM(语言模型)- CPU

LLM 全称叫 Large Language Model(大语言模型),例如:ChatGPT、Claude、Gemini 等,这个是最常见的,大家应该第一个接触 AI 产品就是这些。2022 年 11 月 30 日 OpenAI 发布 ChatGPT,最初是的交互形式就是在网页上和大模型进行聊天。

后来人们想让 AI 扮演指定的角色,就出现了“提示词”(Prompt),人们不想每次都要告诉 AI 它需要扮演的角色,就出现了”系统提示词“(System Prompt),再后来人们将自己的提示词分享出来,就出现了“GPT 商店”,将自己写好提示词的 Chat 分享出来。例如:写作助手、编程专家。

RAG(检索增强生成)- 磁盘/内存

阅读全文 »

Mac 配置开发环境非常简单,只需要安装 brew 包管理工具,就可以一键搭建开发环境,而且 terminal 就像是 linux 下一样,非常适合开发。brew 源可能网络不太稳定,建议安装 Shadowrocket,感受丝滑的安装体验。

我平时写 java、python、golang、node.js 比较多。我需要安装 JDK、miniconda、golang、nvm。另外 还需要安装一些辅助开发工具,比如:git、chrome、postman、vscode,最后 JetBrains IDE 是必不可少的。

java

1
brew install --cask temurin21

java –version

阅读全文 »

前言

最近因为个人需求,需要对番茄小说 App 进行抓包,因为番茄小说网页版功能不全,并且 App 自己也进行了一些防护,导致抓包难度提升了一个台阶。最终花了2小时验证了两种方案,抓到了所有想要到的请求。

抓包软件

Web 抓包很简单,F12 就可以看到所有请求,然而 App 抓包需要使用到专业的抓包工具,我推荐一些常用的抓包软件

  • Windows/Mac:Charles / Proxyman / Wireshark
  • Android:Packet Capture
  • IOS:Stream
阅读全文 »

“舔狗”,这个带着自嘲色彩的网络词汇,精准地击中了无数人的内心。我们在笑声中自嘲,却又在深夜里默默品味那份酸楚。

“舔狗”一词早已存在多年,但直到我观看了《喜剧之王单口季》中付航的脱口秀,才获得了新的灵感。他的一句“在舔狗的剧本里,舔狗才是主角,你杀青了!”深深触动了无数人。

以下是舔狗日记的网站主页

舔狗日记:https://dog.jonssonyan.com

在浏览器中输入网址,访问网站首页,你可以随机阅读一条日记。你可以复制日记内容,也可以为你喜欢的日记点赞。

阅读全文 »

jvm内存模型

  • 元空间(Metaspace):JDK1.8之后取代PermGen(永久代),存储类元数据,包括类的结构、方法、常量池、字段信息、静态变量等,不再使用JVM 堆内存,而是直接使用本地内存(也就是操作系统的内存)。因此Metaspace可以扩展到更大的内存空间,而不受堆内存限制。
  • 堆(Heap):堆分为年轻代(Young Generation)和 老年代(Old Generation)。
  • 栈(Stack):每个线程都有一个私有的栈,栈中存储的是栈帧。栈帧包含:局部变量表(存储方法的参数、局部变量、返回值等),操作数栈(执行方法的计算和操作), 动态链接(方法调用时的符号引用),方法返回地址(用于标识方法执行完毕后返回的地址)。
  • 本地方法栈(Native Stack):与栈类似,但是它存储的是 Native 方法(即由 Java 调用的本地方法)的相关信息。
  • 程序计数器(PC Register):每个线程都有一个独立的程序计数器,用于记录当前线程执行的 字节码指令的地址。在多线程环境下,JVM 使用该寄存器来追踪线程执行的位置。

类加载器

启动类加载器(Bootstrap ClassLoader)<-扩展类加载器(Extension ClassLoader)<-系统类加载器(System ClassLoader)< -自定义类加载器(Custom ClassLoader)

  1. 启动类加载器(Bootstrap ClassLoader)

    作用:负责加载JRE(Java Runtime Environment)中的核心类库,通常是JDK中的rt.jar(包含了所有的核心Java类,如java.lang.*包中的类)。

    实现:启动类加载器是由本地代码实现的,因此它是JVM中的最顶层加载器,并且通常是一个由C++编写的本地类加载器。它并不是java.lang.ClassLoader类的子类。

    职责:加载JDK内部的核心类,像java.lang.Object、java.lang.String、java.util.* 等。

  2. 扩展类加载器(Extension ClassLoader)

    作用:负责加载JRE中的扩展库,即ext目录中的类库。扩展库通常位于$JAVA_HOME/lib/ext目录下,或者是由java.ext.dirs系统属性指定的路径。

    实现:扩展类加载器是由 ClassLoader 类的子类 URLClassLoader 实现的,并且它会依赖于启动类加载器。

    职责:加载扩展 JDK 类库(比如 javax.、org.xml. 等)。

  3. 系统类加载器(System ClassLoader)

    作用:也叫做应用类加载器,负责加载应用程序的类路径(classpath)中指定的类。

    实现:系统类加载器是ClassLoader类的一个实例,它通过读取classpath中指定的路径加载类文件。通常这些类是我们在项目中开发的类。

    职责:加载应用程序中的类,通常由-classpath或-cp参数指定,或者是CLASSPATH环境变量指定的路径。

  4. 自定义类加载器(Custom ClassLoader)

    作用:开发者可以自定义类加载器以满足特定的需求。通常情况下,自定义类加载器可以扩展ClassLoader类,并重写findClass和loadClass方法来实现自定义的类加载行为。

    实现:自定义类加载器通常用于动态加载某些特定路径下的类,或者在特殊环境下加载类,例如,JSP的动态加载、插件机制、Web容器的类加载等。

    职责:通过重写类加载的逻辑来满足特定应用的需求,如加载特定路径的类、支持热部署等。

阅读全文 »

Redis 现在用的地方非常多,特别是在高性能、高并发系统中应用非常广泛,消耗资源少,能够实现的功能很多。

数据结构

基本数据类型

  • String:字符串
  • Hash:K->V
  • List:有序列表
  • Set:去列表
  • Sorted Set/ZSet:去重有序列表,按照 score 排序
  • Bitmap(Redis>2.2):位存储,可应用于统计用户信息,活跃,不活跃!登录,未登录!打卡,不打卡!两个状态
  • Geo(Redis>3.2):地理位置
  • HyperLogLog(Redis>2.8):基数统计,可应用于注册 IP 数,每日访问 IP 数,页面实时UV,在线用户数,共同好友数等,存在 0.81% 标准错误的近似值
  • Stream(Redis>5.0):流,消息队列和实时数据处理

String底层数据结构

阅读全文 »
0%