时光星图 Time Atlas:把本地照片变成一片可以探索的 3D 记忆星河
前言相册工具通常会把照片排成时间线、瀑布流或文件夹列表。这样的方式足够高效,但总觉得少了一点“重新进入那段记忆”的仪式感。 时光星图 Time Atlas 想做的是另一种体验:把本地照片目录变成一片可以探索的 3D 记忆星河。一个文件夹是一座星系,一张照片是一颗星辰,用户可以在星图全貌、焦点航行、星系内部和照片浏览之间层层进入,把一次旅行、一个纪念日、一段日常重新展开。 访问地址:https://junly.top/time-atlas 它解决什么问题时光星图不是为了替代系统相册,也不是为了做云端照片管理。它更像一个专注“沉浸式回看”的本地记忆浏览器。 它适合这些场景: 想把旅行、纪念日、家庭日常等照片按主题重新组织。 想在大屏、投影或触控设备上用更有氛围的方式展示照片。 想体验摄像头手势浏览照片,但又不希望照片上传到服务器。 想把文件夹里的照片快速变成一个可演示、可分享思路的 3D 互动页面。 核心设计原则很简单:照片留在本地,交互变得更有空间感。 核心功能1....
Web接口业务数据加密传输方案:算法选型与落地实践
前言在 Web 项目中,接口安全最基础的一层一定是 HTTPS。HTTPS 已经通过 TLS 解决了传输过程中的窃听、篡改和中间人攻击问题。对于大多数普通业务接口来说,HTTPS 加登录态认证已经足够。 但在一些敏感场景中,比如实名认证、银行卡绑定、支付确认、修改手机号、修改密码、隐私资料提交等,仅依赖 HTTPS 有时还不够。原因不是 HTTPS 不安全,而是业务系统里还可能存在日志落盘、代理转发、网关调试、内部链路暴露、前后端错误处理等额外风险。 这时可以在 HTTPS 之外,再对敏感业务数据做一层应用层加密。本文就从算法对比开始,介绍一套比较通用的接口业务数据加密传输方案。 常见加密算法对比在设计接口加密方案之前,先要理解几类常见算法的特点。很多安全方案不是靠某一个算法完成的,而是多种算法各自负责一部分能力。 对称加密算法对称加密的特点是:加密和解密使用同一把密钥。 常见算法有 AES、ChaCha20、SM4、DES、3DES...
估值君 —— 一个帮你实时追踪基金估值的小工具
前言作为一名基金投资者,你是否也有过这样的困扰:交易日盘中想看看自己持有的基金大概涨了多少,却只能反复刷新各种 App,而且大多数行情软件只展示基金的上一日净值,盘中的实时估值要东找西找。 为了解决这个痛点,我利用业余时间开发了 估值君 —— 一个专注于基金盘中实时估值追踪的 Web 工具。输入基金代码即可添加,盘中自动刷新估算净值,让你对自己的持仓盈亏一目了然。 访问地址:https://junly.top/fund/ 或 https://fund.junly.top/fund/ 功能介绍实时估值追踪估值君的核心功能就是盘中实时估值。在交易日的 9:30-15:00 期间,系统会自动刷新每只基金的估算净值,并记录为时间序列数据,生成盘中走势折线图。收市后,你可以在估值走势图上清晰地看到当天估值的变化轨迹。 添加基金也非常简单,只需要输入基金代码(如...
Junly文件转换工具
📑 Junly文件转换工具📝 产品简介Junly文件转换工具是一款功能强大的多格式文档转换软件,支持Word、Excel、PDF、Markdown等多种格式的互相转换,同时提供图片处理和文本处理功能。软件界面简洁直观,操作便捷,是日常文档处理的得力助手。 🔗 开源信息 🌟 项目已开源! 欢迎参与贡献、提出建议或报告问题。 GitHub地址:https://github.com/wujunbiao1002/file-converter ⭐ 开源优势 自由使用与修改:可根据个人或组织需求定制功能 社区贡献:集合多人智慧,持续改进产品 透明度:代码公开,安全可靠,无后门 学习参考:对Python开发和GUI设计感兴趣的开发者可作为学习资源 💻 技术栈 前端界面:PyQt6、Qt Designer 核心处理:Python 3.8+ 依赖库:python-docx, openpyxl, PyPDF2, Pillow等 构建工具:PyInstaller 🛠️ 参与贡献 Fork项目仓库 创建特性分支 (git checkout -b...
设计模式面试要点:从创建型、结构型、行为型到学习样例的系统梳理
前言设计模式是 Java 面试里的高频专题。面试官通常不会只问“单例模式怎么写”,而是会继续追问:为什么要用这个模式,不用会有什么问题,JDK 或 Spring 里哪里用到了,业务里怎么落地,模式用多了会不会过度设计。 学习设计模式时,不建议一开始就死背 23 种模式。更好的方式是先理解它解决的问题: 1对象怎么创建 -> 对象怎么组合 -> 对象之间怎么协作 -> 代码如何应对变化 本文按面试常见问题梳理设计模式,并给出适合练习的学习样例。 设计模式是什么设计模式是前人在软件设计中总结出来的可复用解决方案。它不是语法,也不是框架,而是面对常见设计问题时的一种表达方式。 面试回答可以这样说: 设计模式解决的是代码结构和变化管理问题。 它关注职责划分、扩展性、复用性和可维护性。 不能为了用模式而用模式,模式应该服务于业务复杂度。 flowchart TD A[业务需求变化] --> B[代码直接堆 if else] A --> C[抽象变化点] C --> D[职责拆分] D --> E[选择合适设计模式] E...
JVM面试要点:从内存结构、类加载、GC到JDK 8/17/21演进的系统梳理
前言JVM 是 Java 面试里的核心专题。它连接了语言特性、运行时性能、线上排查和版本升级,常见问题包括:JVM 内存结构是什么,堆和栈有什么区别,对象怎么创建,类加载过程是什么,双亲委派有什么用,哪些对象可以作为 GC Roots,Minor GC 和 Full GC 有什么区别,G1 为什么适合大堆,JDK 8、17、21 在 JVM 层面有哪些变化。 如果只背“堆放对象、栈放局部变量”,回答通常不够。更好的方式是把 JVM 理解成一条完整链路: 1Java 源码 -> 字节码 -> 类加载 -> 运行时内存 -> 对象分配 -> 垃圾回收 -> JIT 优化 -> 线上监控与调优 本文按面试高频模块梳理 JVM 要点,并单独总结 JDK 8、JDK 17、JDK 21 的关键变化。 JVM 整体结构JVM 的核心职责是加载字节码、管理运行时内存、执行程序、回收无用对象,并通过即时编译优化热点代码。 flowchart TD A[Java 源码] --> B[javac 编译为 class 字节码] B -->...
锁相关专题面试要点:从JDK锁、Redis锁到数据库锁的系统梳理
前言锁相关问题是后端面试里的高频专题,不只包括 JDK 自带的 synchronized、ReentrantLock、AQS,也包括 Redis 分布式锁、数据库锁、ZooKeeper 锁、消息队列串行化和业务幂等设计。 常见问题包括:synchronized 锁的是什么,锁升级怎么理解,synchronized 和 ReentrantLock 有什么区别,AQS 是什么,公平锁和非公平锁怎么选,读写锁适合什么场景,CAS 有什么问题,volatile 能不能替代锁,死锁怎么排查,Redis 分布式锁为什么要设置过期时间,数据库乐观锁和悲观锁怎么选,ZooKeeper 锁和 Redis 锁有什么区别。 如果只背“锁保证线程安全”,回答很容易停留在概念层。更好的方式是把锁理解成一条完整主线: 1共享资源竞争 -> 可见性/原子性/有序性问题 -> 单机锁或分布式协调 -> 阻塞/唤醒/队列管理 -> 性能和正确性权衡 -> 线上排查 本文按面试中最常见的模块梳理锁相关要点,适合作为 Java...
Java基础面试要点:从语法、集合、并发到JDK 8/17/21新特性的系统梳理
前言Java 基础面试题看起来范围很大:有的问 equals 和 hashCode,有的问 String、泛型、异常、集合、线程池、锁、JVM、类加载,也有的会继续追问 JDK 8、JDK 17、JDK 21 分别带来了哪些重要变化。 如果只背零散结论,遇到追问很容易断。更好的方式是把 Java 基础理解成几条主线: 1语言基础 -> 面向对象 -> 标准类库 -> 集合与泛型 -> 并发与内存模型 -> JVM 与类加载 -> JDK 版本演进 本文按面试中最常见的模块梳理 Java 基础要点,并专门总结 JDK 8、17、21 的新特性,适合作为面试前的复习清单。 Java 整体特点Java 常见特点包括: 面向对象。 跨平台,依赖 JVM。 自动内存管理和垃圾回收。 静态类型语言。 标准库和生态成熟。 支持多线程和并发编程。 面试中可以这样概括: Java 源码编译成字节码,字节码运行在 JVM 上。JVM 屏蔽不同操作系统差异,并通过类加载、运行时数据区、JIT 编译和垃圾回收支撑程序运行。 flowchart TD ...
MyBatis面试要点:从Mapper代理、执行流程到缓存和插件的系统梳理
前言MyBatis 面试题通常会从“它和 Hibernate/JPA 有什么区别”开始,继续追问 Mapper 接口为什么不用实现类,SQL 是怎么执行的,#{} 和 ${} 有什么区别,一级缓存和二级缓存怎么生效,动态 SQL 如何拼接,插件拦截哪些对象,分页插件原理是什么,懒加载为什么可能产生 N+1 问题。 如果只把 MyBatis 理解成“写 SQL 的 ORM 框架”,回答很容易停留在使用层。更好的方式是把它理解成一条完整链路: 1调用 Mapper 接口 -> 动态代理生成调用 -> 找到 MappedStatement -> Executor 执行 -> StatementHandler 创建 SQL -> JDBC 查询 -> ResultSetHandler 映射结果 本文按面试中最常见的模块梳理 MyBatis 要点,适合作为面试前的复习清单。 MyBatis 整体定位MyBatis 是一个半自动 ORM 框架。它不像 Hibernate 那样尽量屏蔽...
SpringCloud面试要点:从服务治理、网关到微服务排查的系统梳理
前言Spring Cloud 面试题通常不会只问“它是不是微服务框架”。更常见的问题是:服务注册发现怎么做,配置中心如何刷新,网关承担什么职责,服务间调用为什么要负载均衡,OpenFeign 底层怎么发请求,熔断和降级有什么区别,链路追踪如何定位问题,线上某个服务调用突然变慢怎么排查。 如果只把 Spring Cloud 理解成“一组微服务组件”,回答很容易停留在名词层。更好的方式是把它理解成一条完整链路: 1服务启动 -> 注册到注册中心 -> 拉取配置 -> 网关接入请求 -> 负载均衡选择实例 -> Feign/HTTP 调用服务 -> 熔断限流保护 -> 链路追踪和监控定位问题 本文按面试中最常见的模块梳理 Spring Cloud 要点,适合作为面试前的复习清单。 Spring Cloud 整体定位Spring Cloud 是一套基于 Spring Boot...
