# HikariLan's Blog(贺兰星辰的博客) > HikariLan 贺兰星辰的个人博客,这里收录了本人有关技术、生活相关的洞见和发现,希望能够带给你一些收获。 除非另有说明,否则本网站的所有“技术”分类文章均采用 CC BY-SA 4.0 国际协议授权。 > 本博客为 WordPress 博客,如需查询任何信息,欢迎通过 https://blog.hikarilan.life/?s={keyword} 进行查询 ## 文章 - [把 LLM 当成“人”,才是 Agent 工程进阶的起点](https://blog.hikarilan.life/thinking/3499/treating-llms-as-humans/): 从 2022 年底 GPT 横空出世到现... - [为什么我认为 AI 正在让初级技术岗位完全消失](https://blog.hikarilan.life/thinking/3250/why-i-believe-junior-tech-jobs-will-gone/): 前几天刷抖音看到很多人在分析 AI 对未... - [感谢款待!日本东京 & 富士山游记](https://blog.hikarilan.life/daily/3138/my-travel-to-tokyo/): 其实毕业那会儿就有想出国旅行的想法,但是... - [你的 RAG 系统可能正在“杀死”大模型的灵性](https://blog.hikarilan.life/tech/2914/your-rag-system-might-be-killing-the-spirituality-of-llms/): 当提到“如何为大模型提供大规模的可用于检... - [学长,我得休息了,明天要面软*动力](https://blog.hikarilan.life/thinking/2761/%e5%ad%a6%e9%95%bf%ef%bc%8c%e6%88%91%e5%be%97%e4%bc%91%e6%81%af%e4%ba%86%ef%bc%8c%e6%98%8e%e5%a4%a9%e8%a6%81%e9%9d%a2%e8%bd%af%e5%8a%a8%e5%8a%9b/): 培训机构我*你* - [EdgeOne 边缘函数重定向跟随导致 WordPress 无法正常登录 —— 问题排查与解决思路](https://blog.hikarilan.life/tech/2755/edgeone-%e8%be%b9%e7%bc%98%e5%87%bd%e6%95%b0%e9%87%8d%e5%ae%9a%e5%90%91%e8%b7%9f%e9%9a%8f%e5%af%bc%e8%87%b4-wordpress-%e6%97%a0%e6%b3%95%e6%ad%a3%e5%b8%b8%e7%99%bb%e5%bd%95/): EdgeOne 边缘函数重定向跟随导致 ... - [香港半日游 + 开户记](https://blog.hikarilan.life/thinking/2691/%e9%a6%99%e6%b8%af%e5%8d%8a%e6%97%a5%e6%b8%b8-%e5%bc%80%e6%88%b7%e8%ae%b0/): 香港半日游 + 开户记 旅行准备 一直打... - [谈谈我理解的互联网技术岗校招以及职业选择](https://blog.hikarilan.life/thinking/2638/%e8%b0%88%e8%b0%88%e6%88%91%e7%90%86%e8%a7%a3%e7%9a%84%e4%ba%92%e8%81%94%e7%bd%91%e6%8a%80%e6%9c%af%e5%b2%97%e6%a0%a1%e6%8b%9b%e4%bb%a5%e5%8f%8a%e8%81%8c%e4%b8%9a%e9%80%89%e6%8b%a9/): 谈谈我理解的互联网技术岗校招以及职业选择... - [利用 EdgeOne 边缘函数写入 Cloudflare IP GeoLocation 回源请求头以支持 WP-Statistics GeoIP](https://blog.hikarilan.life/tech/2603/%e5%88%a9%e7%94%a8-edgeone-%e8%be%b9%e7%bc%98%e5%87%bd%e6%95%b0%e5%86%99%e5%85%a5-cloudflare-ip-geolocation-%e5%9b%9e%e6%ba%90%e8%af%b7%e6%b1%82%e5%a4%b4%e4%bb%a5%e6%94%af%e6%8c%81-wp-statistics-geoip/): 利用 EdgeOne 边缘函数写入 Cl... - [去一座新的城市,开始一段新的旅途](https://blog.hikarilan.life/daily/2442/%e5%8e%bb%e4%b8%80%e5%ba%a7%e6%96%b0%e7%9a%84%e5%9f%8e%e5%b8%82%ef%bc%8c%e5%bc%80%e5%a7%8b%e4%b8%80%e6%ae%b5%e6%96%b0%e7%9a%84%e6%97%85%e9%80%94/): 去一座新的城市,开始一段新的旅途 大半个... - [一种基于 EasyVtuber 和 Stable Diffusion 的零成本虚拟形象直播方案](https://blog.hikarilan.life/tech/2405/%e4%b8%80%e7%a7%8d%e5%9f%ba%e4%ba%8e-easyvtuber-%e5%92%8c-stable-diffusion-%e7%9a%84%e9%9b%b6%e6%88%90%e6%9c%ac%e8%99%9a%e6%8b%9f%e5%bd%a2%e8%b1%a1%e7%9b%b4%e6%92%ad%e6%96%b9%e6%a1%88/): 一种基于 EasyVtuber 和 St... - [抛弃 Bukkit API,拥抱 Paper API](https://blog.hikarilan.life/tech/2385/%e6%8a%9b%e5%bc%83-bukkit-api%ef%bc%8c%e6%8b%a5%e6%8a%b1-paper-api/): 抛弃 Bukkit API,拥抱 Pap... - [面试经历 - 阿里国际后端开发校招](https://blog.hikarilan.life/interview/2374/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e9%98%bf%e9%87%8c%e5%9b%bd%e9%99%85%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/): 面试经历 - 阿里国际后端开发校招 于 ... - [面试经历 - TME 互动视频后台开发工程师校招](https://blog.hikarilan.life/interview/2367/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-tme-%e4%ba%92%e5%8a%a8%e8%a7%86%e9%a2%91%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 - TME 互动视频后台开发工... - [初闻不知曲中意 再听已是曲中人 —— 纪大学毕业](https://blog.hikarilan.life/daily/2346/%e5%88%9d%e9%97%bb%e4%b8%8d%e7%9f%a5%e6%9b%b2%e4%b8%ad%e6%84%8f-%e5%86%8d%e5%90%ac%e5%b7%b2%e6%98%af%e6%9b%b2%e4%b8%ad%e4%ba%ba-%e7%ba%aa%e5%a4%a7%e5%ad%a6%e6%af%95%e4%b8%9a/): 初闻不知曲中意 再听已是曲中人 —— 纪... - [面试经历 - 灵犀互娱游戏服务端开发校招 (2)](https://blog.hikarilan.life/interview/2283/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%9c%8d%e5%8a%a1%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b-2/): 面试经历 - 灵犀互娱游戏服务端开发校招... - [面试经历 - 灵犀互娱游戏服务端开发校招](https://blog.hikarilan.life/interview/2267/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/): 面试经历 - 灵犀互娱游戏服务端开发校招... - [我在云智的实习经历](https://blog.hikarilan.life/daily/2110/%e6%88%91%e5%9c%a8%e4%ba%91%e6%99%ba%e7%9a%84%e5%ae%9e%e4%b9%a0%e7%bb%8f%e5%8e%86/): 我在云智的实习经历 从去年 12 月到今... - [面试经历 - 滴滴后端开发校招](https://blog.hikarilan.life/interview/2096/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%bb%b4%e6%bb%b4%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/): 面试经历 - 滴滴后端开发校招 于 20... - [面试经历 – 字节跳动后端开发校招](https://blog.hikarilan.life/interview/2014/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/): 面试经历 – 字节跳动后端开发校招 于 ... - [从进程到协程:计算机的并发编程之路](https://blog.hikarilan.life/tech/1924/%e4%bb%8e%e8%bf%9b%e7%a8%8b%e5%88%b0%e5%8d%8f%e7%a8%8b%ef%bc%9a%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%9a%84%e5%b9%b6%e5%8f%91%e7%bc%96%e7%a8%8b%e4%b9%8b%e8%b7%af/): 从第一台分时操作系统的横空出世,到 In... - [基于 HyperOS 2.0 和 Android 15 的个人 Magisk + Xposed 模块分享](https://blog.hikarilan.life/thinking/1909/%e5%9f%ba%e4%ba%8e-hyperos-2-0-%e5%92%8c-android-15-%e7%9a%84%e4%b8%aa%e4%ba%ba-magisk-xposed-%e6%a8%a1%e5%9d%97%e5%88%86%e4%ba%ab/): 基于 HyperOS 2. 0 和 An... - [陕西移动光猫改桥接记](https://blog.hikarilan.life/daily/1873/%e9%99%95%e8%a5%bf%e7%a7%bb%e5%8a%a8%e5%85%89%e7%8c%ab%e6%94%b9%e6%a1%a5%e6%8e%a5%e8%ae%b0/): 陕西移动光猫改桥接记 前言 要说我家里的... - [HikariLan 的站点服务域名迁移记](https://blog.hikarilan.life/daily/1855/hikarilan-%e7%9a%84%e7%ab%99%e7%82%b9%e6%9c%8d%e5%8a%a1%e5%9f%9f%e5%90%8d%e8%bf%81%e7%a7%bb%e8%ae%b0/): HikariLan 的站点服务域名迁移记... - [OSPP 2024 x OI-Wiki:开源活动小结](https://blog.hikarilan.life/thinking/1631/ospp-2024-x-oi-wiki%ef%bc%9a%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e5%b0%8f%e7%bb%93/): OSPP 2024 x OI-Wiki:... - [我这一生如履薄冰,你说,我能走到对岸吗?(21 岁生日总结)](https://blog.hikarilan.life/thinking/annual-summary/1539/%e6%88%91%e8%bf%99%e4%b8%80%e7%94%9f%e5%a6%82%e5%b1%a5%e8%96%84%e5%86%b0%ef%bc%8c%e4%bd%a0%e8%af%b4%ef%bc%8c%e6%88%91%e8%83%bd%e8%b5%b0%e5%88%b0%e5%af%b9%e5%b2%b8%e5%90%97%ef%bc%9f%ef%bc%8821/): 我这一生如履薄冰,你说,我能走到对岸吗?... - [记参加学校组织的的跨专业模拟仿真实训](https://blog.hikarilan.life/daily/1565/%e8%ae%b0%e5%8f%82%e5%8a%a0%e5%ad%a6%e6%a0%a1%e7%bb%84%e7%bb%87%e7%9a%84%e7%9a%84%e8%b7%a8%e4%b8%93%e4%b8%9a%e6%a8%a1%e6%8b%9f%e4%bb%bf%e7%9c%9f%e5%ae%9e%e8%ae%ad/): 记参加学校组织的的跨专业模拟仿真实训 这... - [面试经历 – 深信服测试开发工程师校招](https://blog.hikarilan.life/interview/1515/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%b7%b1%e4%bf%a1%e6%9c%8d%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 – 深信服测试开发工程师校招 ... - [面试经历 - 腾讯云智后台开发校招(2)](https://blog.hikarilan.life/interview/1512/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b2/): 面试经历 - 腾讯云智后台开发校招(2)... - [面试经历 - 腾讯云智后台开发校招](https://blog.hikarilan.life/interview/1505/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/): 面试经历 - 腾讯云智后台开发校招 于 ... - [面试经历 - 深信服 Java 开发工程师校招](https://blog.hikarilan.life/interview/1507/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%b7%b1%e4%bf%a1%e6%9c%8d-java-%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 - 深信服 Java 开发工程... - [论类型转换导致 JVM 类加载提前报错的问题](https://blog.hikarilan.life/tech/1494/%e8%ae%ba%e7%b1%bb%e5%9e%8b%e8%bd%ac%e6%8d%a2%e5%af%bc%e8%87%b4-jvm-%e7%b1%bb%e5%8a%a0%e8%bd%bd%e6%8f%90%e5%89%8d%e6%8a%a5%e9%94%99%e7%9a%84%e9%97%ae%e9%a2%98/): 论类型转换导致 JVM 类加载提前报错的... - [面试经历 – 快手测试开发工程师校招 (2)](https://blog.hikarilan.life/interview/1491/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/): 面试经历 – 快手测试开发工程师校招 (... - [面试经历 - 蔚来测试工程师校招 (2)](https://blog.hikarilan.life/interview/1488/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/): 面试经历 - 蔚来测试工程师校招 (2)... - [面试经历 – 灵犀互娱游戏测试开发工程师校招 (2)](https://blog.hikarilan.life/interview/1486/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/): 面试经历 – 灵犀互娱游戏测试开发工程师... - [面试经历 – 灵犀互娱游戏测试开发工程师校招](https://blog.hikarilan.life/interview/1481/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 – 灵犀互娱游戏测试开发工程师... - [面试经历 - 蔚来测试工程师校招](https://blog.hikarilan.life/interview/1483/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 - 蔚来测试工程师校招 于 2... - [面试经历 - 快手测试开发工程师校招](https://blog.hikarilan.life/interview/1479/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 - 快手测试开发工程师校招 于... - [面试经历 - 微派网络服务器研发工程师校招](https://blog.hikarilan.life/interview/1463/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%be%ae%e6%b4%be%e7%bd%91%e7%bb%9c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%a0%94%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 - 微派网络服务器研发工程师校... - [面试经历 – 美团校招 AI 面试](https://blog.hikarilan.life/interview/1460/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%be%8e%e5%9b%a2%e6%a0%a1%e6%8b%9b-ai-%e9%9d%a2%e8%af%95/): 面试经历 – 美团校招 AI 面试 于 ... - [面试经历 – 元戎启行软件工程师校招](https://blog.hikarilan.life/interview/1456/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%85%83%e6%88%8e%e5%90%af%e8%a1%8c%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/): 面试经历 – 元戎启行软件工程师校招 于... - [面试经历 - 西安思科特软件有限公司后端开发实习](https://blog.hikarilan.life/interview/1451/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%a5%bf%e5%ae%89%e6%80%9d%e7%a7%91%e7%89%b9%e8%bd%af%e4%bb%b6%e6%9c%89%e9%99%90%e5%85%ac%e5%8f%b8%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e5%ae%9e%e4%b9%a0/): 面试经历 - 西安思科特软件有限公司后端... - [如何在不知道密码的情况下卸载 Kaspersky Endpoint Security 和 Kaspersky Security Center Network Agent](https://blog.hikarilan.life/thinking/1446/%e5%a6%82%e4%bd%95%e5%9c%a8%e4%b8%8d%e7%9f%a5%e9%81%93%e5%af%86%e7%a0%81%e7%9a%84%e6%83%85%e5%86%b5%e4%b8%8b%e5%8d%b8%e8%bd%bd-kaspersky-endpoint-security-%e5%92%8c-kaspersky-security-center-network-a/): 如何在不知道密码的情况下卸载 Kaspe... - [面试经历 - 上海雷澜科技有限公司全栈实习](https://blog.hikarilan.life/interview/1437/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e4%b8%8a%e6%b5%b7%e9%9b%b7%e6%be%9c%e7%a7%91%e6%8a%80%e6%9c%89%e9%99%90%e5%85%ac%e5%8f%b8%e5%85%a8%e6%a0%88%e5%ae%9e%e4%b9%a0/): 面试经历 - 上海雷澜科技有限公司全栈实... - [过去、现在和未来 —— Java 的现代化之路](https://blog.hikarilan.life/tech/1431/%e8%bf%87%e5%8e%bb%e3%80%81%e7%8e%b0%e5%9c%a8%e5%92%8c%e6%9c%aa%e6%9d%a5-java-%e7%9a%84%e7%8e%b0%e4%bb%a3%e5%8c%96%e4%b9%8b%e8%b7%af/): 过去、现在和未来 —— Java 的现代... - [2024 春招季实习投递进展及近况说明](https://blog.hikarilan.life/daily/1428/2024-%e6%98%a5%e6%8b%9b%e5%ad%a3%e5%ae%9e%e4%b9%a0%e6%8a%95%e9%80%92%e8%bf%9b%e5%b1%95%e5%8f%8a%e8%bf%91%e5%86%b5%e8%af%b4%e6%98%8e/): 2024 春招季实习投递进展及近况说明 ... - [面试经历 – 美团前端&客户端实习](https://blog.hikarilan.life/interview/1418/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%be%8e%e5%9b%a2%e5%89%8d%e7%ab%af%e5%ae%a2%e6%88%b7%e7%ab%af%e5%ae%9e%e4%b9%a0/): 面试经历 – 美团前端&客户端实习 于 ... - [我是一名大一新生,我应该如何确认自己的学习方向?](https://blog.hikarilan.life/thinking/1416/%e6%88%91%e6%98%af%e4%b8%80%e5%90%8d%e5%a4%a7%e4%b8%80%e6%96%b0%e7%94%9f%ef%bc%8c%e6%88%91%e5%ba%94%e8%af%a5%e5%a6%82%e4%bd%95%e7%a1%ae%e8%ae%a4%e8%87%aa%e5%b7%b1%e7%9a%84%e5%ad%a6%e4%b9%a0%e6%96%b9/): 我是一名大一新生,我应该如何确认自己的学... - [记我在蔚来不到两个月的实习](https://blog.hikarilan.life/thinking/1413/%e8%ae%b0%e6%88%91%e5%9c%a8%e8%94%9a%e6%9d%a5%e4%b8%8d%e5%88%b0%e4%b8%a4%e4%b8%aa%e6%9c%88%e7%9a%84%e5%ae%9e%e4%b9%a0/): 记我在蔚来不到两个月的实习 仍记得不到两... - [面试经历 – 百度测开实习(2)](https://blog.hikarilan.life/interview/1398/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%99%be%e5%ba%a6%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/): 面试经历 – 百度测开实习(2) 于 2... - [面试经历 - 百度测开实习](https://blog.hikarilan.life/interview/1396/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%99%be%e5%ba%a6%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/): 面试经历 - 百度测开实习 于 2024... - [高开低走:我迟来的 OSPP 2023 纪事](https://blog.hikarilan.life/thinking/1393/%e9%ab%98%e5%bc%80%e4%bd%8e%e8%b5%b0%ef%bc%9a%e6%88%91%e8%bf%9f%e6%9d%a5%e7%9a%84-ospp-2023-%e7%ba%aa%e4%ba%8b/): 高开低走:我迟来的 OSPP 2023 ... - [你知道吗,Java中的受查和非受查异常,其实并不存在区别......](https://blog.hikarilan.life/tech/1383/%e4%bd%a0%e7%9f%a5%e9%81%93%e5%90%97%ef%bc%8cjava%e4%b8%ad%e7%9a%84%e5%8f%97%e6%9f%a5%e5%92%8c%e9%9d%9e%e5%8f%97%e6%9f%a5%e5%bc%82%e5%b8%b8%ef%bc%8c%e5%85%b6%e5%ae%9e%e5%b9%b6%e4%b8%8d%e5%ad%98/): 你知道吗,Java中的受查和非受查异常,... - [面试经历 - 腾讯云智测开实习(2)](https://blog.hikarilan.life/interview/1381/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/): 面试经历 - 腾讯云智测开实习(2) 于... - [面试经历 - 腾讯云智测开实习](https://blog.hikarilan.life/interview/1367/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/): 面试经历 - 腾讯云智测开实习 于 20... - [面试经历 - 高德地图测开实习](https://blog.hikarilan.life/interview/1363/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e9%ab%98%e5%be%b7%e5%9c%b0%e5%9b%be%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/): 面试经历 - 高德地图测开实习 2024... - [面试经历 - 字节跳动测开实习 - 三进宫](https://blog.hikarilan.life/interview/1348/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%b8%89%e8%bf%9b%e5%ae%ab/): 面试经历 - 字节跳动测开实习 - 三进... - [该起程了:蔚来正式 Offer,以及我的一些碎碎念](https://blog.hikarilan.life/thinking/1340/%e8%af%a5%e8%b5%b7%e7%a8%8b%e4%ba%86%ef%bc%9a%e8%94%9a%e6%9d%a5%e6%ad%a3%e5%bc%8f-offer%ef%bc%8c%e4%bb%a5%e5%8f%8a%e6%88%91%e7%9a%84%e4%b8%80%e4%ba%9b%e7%a2%8e%e7%a2%8e%e5%bf%b5/): 该起程了:蔚来正式 Offer,以及我的... - [面试经历 – 用友澳门客户化开发实习](https://blog.hikarilan.life/interview/1334/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%94%a8%e5%8f%8b%e6%be%b3%e9%97%a8%e5%ae%a2%e6%88%b7%e5%8c%96%e5%bc%80%e5%8f%91%e5%ae%9e%e4%b9%a0/): 面试经历 – 用友澳门客户化开发实习 于... - [面试经历 – 蔚来测试实习(2)](https://blog.hikarilan.life/interview/1331/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%ae%9e%e4%b9%a02/): 面试经历 – 蔚来测试实习(2) 202... - [面试经历 - 蔚来测试实习](https://blog.hikarilan.life/interview/1328/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%ae%9e%e4%b9%a0/): 面试经历 - 蔚来测试实习 于 2024... - [面试经历 - 字节跳动测开实习 - 二进宫(2)](https://blog.hikarilan.life/interview/1315/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%ba%8c%e8%bf%9b%e5%ae%ab2/): 面试经历 - 字节跳动测开实习 - 二进... - [面试经历 - 字节跳动测开实习 - 二进宫](https://blog.hikarilan.life/interview/1308/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%ba%8c%e8%bf%9b%e5%ae%ab/): 面试经历 - 字节跳动测开实习 - 二进... - [记参加 2023 下半年软考](https://blog.hikarilan.life/thinking/1299/%e8%ae%b0%e5%8f%82%e5%8a%a0-2023-%e4%b8%8b%e5%8d%8a%e5%b9%b4%e8%bd%af%e8%80%83/): 记参加 2023 下半年软考 今天我参加... - [面试经历 - 快手测开实习凉经](https://blog.hikarilan.life/interview/1302/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0%e5%87%89%e7%bb%8f/): 面试经历 - 快手测开实习凉经 周五(2... - [什么?我踏马 20 了???(20 岁生日总结)](https://blog.hikarilan.life/thinking/annual-summary/1290/%e4%bb%80%e4%b9%88%ef%bc%9f%e6%88%91%e8%b8%8f%e9%a9%ac-20-%e4%ba%86%ef%bc%9f%ef%bc%9f%ef%bc%9f%ef%bc%8820-%e5%b2%81%e7%94%9f%e6%97%a5%e6%80%bb%e7%bb%93%ef%bc%89/): 什么?我踏马 20 了???(20 岁生... - [论编程界的日经问题:到底如何区分静态类型和动态类型、强类型和弱类型?](https://blog.hikarilan.life/tech/1279/%e8%ae%ba%e7%bc%96%e7%a8%8b%e7%95%8c%e7%9a%84%e6%97%a5%e7%bb%8f%e9%97%ae%e9%a2%98%ef%bc%9a%e5%88%b0%e5%ba%95%e5%a6%82%e4%bd%95%e5%8c%ba%e5%88%86%e9%9d%99%e6%80%81%e7%b1%bb%e5%9e%8b%e5%92%8c%e5%8a%a8/): 论编程界的日经问题:到底如何区分静态类型... - [面试经历 – 字节跳动测开实习(3)](https://blog.hikarilan.life/interview/1273/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a03/): 面试经历 – 字节跳动测开实习(3) 这... - [面试经历 – 字节跳动测开实习(2)](https://blog.hikarilan.life/interview/1269/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/): 面试经历 – 字节跳动测开实习(2) 这... - [面试经历 - 字节跳动测开实习](https://blog.hikarilan.life/interview/1265/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/): 面试经历 - 字节跳动测开实习 前几天用... - [论我是如何在没有可移动存储介质的情况下重装了一台进不去操作系统的电脑的](https://blog.hikarilan.life/thinking/1259/%e8%ae%ba%e6%88%91%e6%98%af%e5%a6%82%e4%bd%95%e5%9c%a8%e6%b2%a1%e6%9c%89%e5%8f%af%e7%a7%bb%e5%8a%a8%e5%ad%98%e5%82%a8%e4%bb%8b%e8%b4%a8%e7%9a%84%e6%83%85%e5%86%b5%e4%b8%8b%e9%87%8d%e8%a3%85%e4%ba%86/): 论我是如何在没有可移动存储介质的情况下重... - [论我是如何不经意间把 Google Play Store 整爆掉的](https://blog.hikarilan.life/thinking/1246/%e8%ae%ba%e6%88%91%e6%98%af%e5%a6%82%e4%bd%95%e4%b8%8d%e7%bb%8f%e6%84%8f%e9%97%b4%e6%8a%8a-google-play-store-%e6%95%b4%e7%88%86%e6%8e%89%e7%9a%84/): 论我是如何不经意间把 Google Pl... - [实战!为你的网站接入 Passkey 通行密钥以实现无密码安全登录](https://blog.hikarilan.life/tech/1249/%e5%ae%9e%e6%88%98%ef%bc%81%e4%b8%ba%e4%bd%a0%e7%9a%84%e7%bd%91%e7%ab%99%e6%8e%a5%e5%85%a5-passkey-%e9%80%9a%e8%a1%8c%e5%af%86%e9%92%a5%e4%bb%a5%e5%ae%9e%e7%8e%b0%e6%97%a0%e5%af%86%e7%a0%81%e5%ae%89/): 实战!为你的网站接入 Passkey 通... - [实战!用 Spring Gateway 配合 Sa-Token 实现微服务无感鉴权](https://blog.hikarilan.life/tech/1239/%e5%ae%9e%e6%88%98%ef%bc%81%e7%94%a8-spring-gatway-%e9%85%8d%e5%90%88-sa-token-%e5%ae%9e%e7%8e%b0%e5%be%ae%e6%9c%8d%e5%8a%a1%e6%97%a0%e6%84%9f%e9%89%b4%e6%9d%83/): 实战!用 Spring Gateway ... - [软考成绩出来了(](https://blog.hikarilan.life/daily/1226/%e8%bd%af%e8%80%83%e6%88%90%e7%bb%a9%e5%87%ba%e6%9d%a5%e4%ba%86/): (其实昨天就出来了,忘了发博客了) 不出... - [Tailwind CSS 导论](https://blog.hikarilan.life/thinking/1220/tailwind-css-%e5%af%bc%e8%ae%ba/): Tailwind CSS 导论 作为前端... - [2023 暑假日常实习进展及近况说明](https://blog.hikarilan.life/daily/1214/2023-%e6%9a%91%e5%81%87%e6%97%a5%e5%b8%b8%e5%ae%9e%e4%b9%a0%e8%bf%9b%e5%b1%95%e5%8f%8a%e8%bf%91%e5%86%b5%e8%af%b4%e6%98%8e/): 2023 暑假日常实习进展及近况说明 前... - [解决 Thunderbird 邮件时区错误的问题](https://blog.hikarilan.life/tech/1206/%e8%a7%a3%e5%86%b3-thunderbird-%e9%82%ae%e4%bb%b6%e6%97%b6%e5%8c%ba%e9%94%99%e8%af%af%e7%9a%84%e9%97%ae%e9%a2%98/): 解决 Thunderbird 邮件时区错... - [Java 的 main 方法声明终于要变天了吗? —— 浅谈 JEP 445](https://blog.hikarilan.life/tech/1198/java-%e7%9a%84-main-%e6%96%b9%e6%b3%95%e5%a3%b0%e6%98%8e%e7%bb%88%e4%ba%8e%e8%a6%81%e5%8f%98%e5%a4%a9%e4%ba%86%e5%90%97%ef%bc%9f-%e6%b5%85%e8%b0%88-jep-445/): Java 的 main 方法声明终于要变... - [记参加 2023 年上半年软考](https://blog.hikarilan.life/thinking/1184/%e8%ae%b0%e5%8f%82%e5%8a%a0-2023-%e5%b9%b4%e4%b8%8a%e5%8d%8a%e5%b9%b4%e8%bd%af%e8%80%83/): 记参加 2023 年上半年软考 TL;D... - [计算机二级成绩出来啦](https://blog.hikarilan.life/daily/1168/%e8%ae%a1%e7%ae%97%e6%9c%ba%e4%ba%8c%e7%ba%a7%e6%88%90%e7%bb%a9%e5%87%ba%e6%9d%a5%e5%95%a6/): 昨天睡太晚了一大早醒来被同学问成绩如何才... - [让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验?](https://blog.hikarilan.life/tech/1125/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e6%94%af%e6%8c%81%e4%bd%bf%e7%94%a8-chatgpt-%e7%94%9f%e6%88%90%e6%96%87%e7%ab%a0%e6%91%98%e8%a6%81%e6%98%af%e4%b8%80%e7%a7%8d%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84%e4%bd%93/): 让博客支持使用 ChatGPT 生成文章... - [微信小程序开发大坑盘点](https://blog.hikarilan.life/tech/1103/%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91%e5%a4%a7%e5%9d%91%e7%9b%98%e7%82%b9/): 微信小程序开发大坑盘点 起因 前几天心血... - [解决 WordPress 提交评论前台超时发送失败,后台正常接收评论的问题](https://blog.hikarilan.life/tech/1013/%e8%a7%a3%e5%86%b3-wordpress-%e6%8f%90%e4%ba%a4%e8%af%84%e8%ae%ba%e5%89%8d%e5%8f%b0%e8%b6%85%e6%97%b6%e5%8f%91%e9%80%81%e5%a4%b1%e8%b4%a5%ef%bc%8c%e5%90%8e%e5%8f%b0%e6%ad%a3%e5%b8%b8%e6%8e%a5%e6%94%b6/): 解决 WordPress 提交评论前台超... - [农村丧葬祭祖习俗考](https://blog.hikarilan.life/daily/997/%e5%86%9c%e6%9d%91%e4%b8%a7%e8%91%ac%e7%a5%ad%e7%a5%96%e4%b9%a0%e4%bf%97%e8%80%83/): 农村丧葬祭祖习俗考 比我大二十岁但是却和... - [一定不能错过的一场学习之旅 —— 第五届字节跳动青训营参赛有感](https://blog.hikarilan.life/thinking/989/%e4%b8%80%e5%ae%9a%e4%b8%8d%e8%83%bd%e9%94%99%e8%bf%87%e7%9a%84%e4%b8%80%e5%9c%ba%e5%ad%a6%e4%b9%a0%e4%b9%8b%e6%97%85-%e7%ac%ac%e4%ba%94%e5%b1%8a%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8/): 一定不能错过的一场学习之旅 —— 第五届... - [刚考完计算机等级考试,记录一些注意到的......](https://blog.hikarilan.life/thinking/980/%e5%88%9a%e8%80%83%e5%ae%8c%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%ad%89%e7%ba%a7%e8%80%83%e8%af%95%ef%bc%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e6%b3%a8%e6%84%8f%e5%88%b0%e7%9a%84/): 昨天(周六)刚考完计算机等级考试,总共报... - [刷机那些事(2)](https://blog.hikarilan.life/thinking/961/%e5%88%b7%e6%9c%ba%e9%82%a3%e4%ba%9b%e4%ba%8b2/): 刷机那些事(2) 前言 大概一个月前,我... - [极简版抖音项目的实现(2) —— Mock 和单元测试 | 青训营笔记](https://blog.hikarilan.life/tech/957/%e6%9e%81%e7%ae%80%e7%89%88%e6%8a%96%e9%9f%b3%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%ae%9e%e7%8e%b02-mock-%e5%92%8c%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95-%e9%9d%92%e8%ae%ad%e8%90%a5/): 极简版抖音项目的实现(2) —— Moc... - [部署 Casdoor 身份认证管理系统并实现透过 OAuth2.0 登录到 WordPress](https://blog.hikarilan.life/tech/948/%e9%83%a8%e7%bd%b2-casdoor-%e8%ba%ab%e4%bb%bd%e8%ae%a4%e8%af%81%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e5%b9%b6%e5%ae%9e%e7%8e%b0%e9%80%8f%e8%bf%87-oauth2-0-%e7%99%bb%e5%bd%95%e5%88%b0-wordpress/): 部署 Casdoor 身份认证管理系统并... - [极简版抖音项目的实现 | 青训营笔记](https://blog.hikarilan.life/tech/938/%e6%9e%81%e7%ae%80%e7%89%88%e6%8a%96%e9%9f%b3%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%ae%9e%e7%8e%b0-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 极简版抖音项目的实现 | 青训营笔记 这... - [微服务中的服务治理 | 青训营笔记](https://blog.hikarilan.life/tech/932/%e5%be%ae%e6%9c%8d%e5%8a%a1%e4%b8%ad%e7%9a%84%e6%9c%8d%e5%8a%a1%e6%b2%bb%e7%90%86-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 微服务中的服务治理 | 青训营笔记 这是... - [分布式系统中的数据库事务 | 青训营笔记](https://blog.hikarilan.life/tech/930/%e5%88%86%e5%b8%83%e5%bc%8f%e7%b3%bb%e7%bb%9f%e4%b8%ad%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e4%ba%8b%e5%8a%a1-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 分布式系统中的数据库事务 | 青训营笔记... - [浅谈软件工程架构及其演进 | 青训营笔记](https://blog.hikarilan.life/tech/926/%e6%b5%85%e8%b0%88%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b%e6%9e%b6%e6%9e%84%e5%8f%8a%e5%85%b6%e6%bc%94%e8%bf%9b-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 浅谈软件工程架构及其演进 | 青训营笔记... - [从规则引擎开发的角度切入编译器原理 | 青训营笔记](https://blog.hikarilan.life/tech/923/%e4%bb%8e%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e5%bc%80%e5%8f%91%e7%9a%84%e8%a7%92%e5%ba%a6%e5%88%87%e5%85%a5%e7%bc%96%e8%af%91%e5%99%a8%e5%8e%9f%e7%90%86-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94/): 从规则引擎开发的角度切入编译器原理 | ... - [使用 Tauri 开发一个基于 Web 和 Rust 技术栈的跨平台桌面应用(Minecraft Server Player UUID Modifier)](https://blog.hikarilan.life/tech/913/%e4%bd%bf%e7%94%a8-tauri-%e5%bc%80%e5%8f%91%e4%b8%80%e4%b8%aa%e5%9f%ba%e4%ba%8e-web-%e5%92%8c-rust-%e6%8a%80%e6%9c%af%e6%a0%88%e7%9a%84%e8%b7%a8%e5%b9%b3%e5%8f%b0%e6%a1%8c%e9%9d%a2%e5%ba%94%e7%94%a8/): 使用 Tauri 开发一个基于 Web ... - [一文学会 Go 的三个主流开发框架| 青训营笔记](https://blog.hikarilan.life/tech/909/%e4%b8%80%e6%96%87%e5%ad%a6%e4%bc%9a-go-%e7%9a%84%e4%b8%89%e4%b8%aa%e4%b8%bb%e6%b5%81%e5%bc%80%e5%8f%91%e6%a1%86%e6%9e%b6%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 一文学会 Go 的三个主流开发框架| 青... - [从 Java 的角度看待 Go 的内存管理| 青训营笔记](https://blog.hikarilan.life/tech/903/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e7%9c%8b%e5%be%85-go-%e7%9a%84%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 从 Java 的角度看待 Go 的内存管... - [从 Java 的角度看待 Go 的编码规范和性能调优| 青训营笔记](https://blog.hikarilan.life/tech/898/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e7%9c%8b%e5%be%85-go-%e7%9a%84%e7%bc%96%e7%a0%81%e8%a7%84%e8%8c%83%e5%92%8c%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94/): 从 Java 的角度看待 Go 的编码规... - [从 Java 的角度实践 Go 工程| 青训营笔记](https://blog.hikarilan.life/tech/895/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e5%ae%9e%e8%b7%b5-go-%e5%b7%a5%e7%a8%8b%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 从 Java 的角度实践 Go 工程| ... - [从 Java 的角度初识 Go 语言 | 青训营笔记](https://blog.hikarilan.life/tech/893/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e5%88%9d%e8%af%86-go-%e8%af%ad%e8%a8%80-%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/): 从 Java 的角度初识 Go 语言 |... # # Detailed Content ## 文章 - Published: 2026-05-17 - Modified: 2026-05-17 - URL: https://blog.hikarilan.life/thinking/3499/treating-llms-as-humans/ - 分类目录: 心得 - 标签: Agent, LLM, 大模型 此文章同时还提供英文版本 / English Version Availble In Medium:Treating LLMs as "Human" is the True Starting Point for Advanced Agent Engineering 从 2022 年底 GPT 横空出世到现在,大模型的各项指标都产生了质的飞跃:上下文窗口从 64K 飙升至 1M 以上,多模态能力从纯文本演进到可以秒懂复杂的图像与视频。然而,基座大模型能力的不断提升,正在揭示一件让工程师们既兴奋又抓狂的事情——LLM 在行为表现上越来越像人类了。 随着“力大砖飞”的基座大模型逐渐展现出强大的原生规划能力,行业内开始出现一种声音,甚至以 Anthropic 为首的一些前沿组织开始抛出“Agent 工程无用论”,认为基座模型最终可以不依赖任何外部工程约束解决所有问题。 但现实恰恰相反。无论基座 LLM 如何发展,在智械彻底代替人类的全部工作之前,“把 LLM 当成人类看待,顺应人类的认知心理学与行为学去设计系统”,将永远是任何 Agent/Harness 工程走向成熟的进阶起点。 认知对齐:把 AI 当作你的“技术实习生” 如果你初次和 LLM 打交道,不知道该如何向它描述需求,那么“将 AI 视为技术实习生(Using AI as a Tech Intern)”一定是一个绝佳的思维模型。 传统的面向代码编程,我们习惯于给出确定性的绝对指令。但面对 LLM,你需要把它当作一个拥有无限技术理论知识、但对你的具体业务、历史代码和上下文一无所知的新员工。对待实习生,你显然不会只丢下一句“帮我重构一下这个前端页面”然后转头离开;你需要做的是带他熟悉环境。在 Agent 工程中,这意味着我们需要抛弃简单粗暴的单句 Prompt,转而为 Agent 建立一套详尽的“工作手册”,提供给 Agent 足够的业务背景和执行标准信息,帮助 Agent 锚定你的最终需求。 记忆解耦:工作记忆与长期记忆的硅基映射 在长文本大模型普及后,许多开发者产生了一个路径依赖:喜欢将成千上万行的 API 文档、整个项目的源代码一股脑塞进大模型的上下文窗口。这种“信息轰炸”看似省事,实则对模型的长文本召回毫无益处。 人类的认知心理学表明,人类的工作记忆(Working Memory)容量极其有限。我们在写代码时... - Published: 2026-02-24 - Modified: 2026-02-24 - URL: https://blog.hikarilan.life/thinking/3250/why-i-believe-junior-tech-jobs-will-gone/ - 分类目录: 心得 - 标签: AI 前几天刷抖音看到很多人在分析 AI 对未来产业的宏观影响,发觉有一个经典观点用在这里很合适: 人们总是倾向于高估新技术带来的短期冲击,却低估其长期影响 基于这个观点,我开始重新考虑 AI 对程序员行业的影响,然后我发现,AI 对我们,尤其是对于初级技术岗位应聘者的影响,远比很多人想象的大得多,甚至可以说,在没有其他因素影响的情况下,随着 AI 的发展,可能会导致初级技术岗位完全消失,靠吃程序员这碗饭逆天改命的阶级跃升通道可能会完全消失。 逻辑推导:为什么会得出这样的结论 我觉得 AI 对广义上的软件行业(包括互联网行业)造成的影响要分两部分看待:需求端影响和供给端影响。 需求端影响可能是大部分人都能想到的问题,即因为 AI 可以胜任大部分初级技术工作,AI “赋能”现有员工带来的生产力提升远超招招聘一个新人带来的边际效益,因此企业倾向于缩减初级岗位规模,导致初级技术岗位需求减少。 但是我想说的是,AI 不断进化给供给端(也就是学生,无论是来自社会还是来自大学)带来的影响恐怕更加严重,而且带来的影响可能是非常长远的,这是因为:AI 正在破坏传统式“稳扎稳打”的技术学习路径,强迫使用者产生路径依赖,进而逼迫其采用一种短视频式的碎片化学习方式进行学习,甚至不学习,而这种学习方式造就的所谓技术人员实际上在技术能力上完全被机器替代,成为 AI 的奴隶,而非其使用者 如果你不理解上面这段话,不妨可以想想看,在 LLM 诞生之前你是如何学习新知识,以及搜索技术解决方案的;而在 LLM 诞生后你又是如何做的。显然,由于 LLM 实在“太好用”,这可能会导致大部分学生丧失深度学习完整技术体系的能力:因为他们认为一旦有问题 LLM 就可以回答他们完美无缺的答案,甚至可以让 LLM 帮他们去写代码。 另一方面,对于高级技术人员来讲,他们只是拿 AI 作为研究和询问的辅助工具,在有足够技术知识背景储备的情况下,他们得以指出 LLM 回答中存在的明显问题,或是在实践中发现这些问题,但学生则完全不会这么做,他们只会照单全收,这种过度依赖 LLM 输出结果的趋势是十分可怕的。 结果就是,供给端的绝大部分人会完全失去满足需求端以及社会要求的,进入软件行业所需要的基础能力,进而完全被后者淘汰。 短期内,也许我们还没能看出学生在这种“大模型时代”发生的异变,但是长期来看,几乎可以确定的说,供给端影响可... - Published: 2026-01-20 - Modified: 2026-01-22 - URL: https://blog.hikarilan.life/daily/3138/my-travel-to-tokyo/ - 分类目录: 日常 - 标签: 旅游, 日本 其实毕业那会儿就有想出国旅行的想法,但是众所周知社畜是有钱没时间,学生是有时间没钱,所以最终还是搁置了。但我想出国旅行的想法一直没有熄灭。 其实我一直是一个不喜欢国内游(准确来说是除了港澳台内新藏以外的国内城市游)的人,因此旅行计划基本是“不旅则已,一旅惊人”。正好几个月前日本游老资历 @海螺 打算 26 年年初去一趟日本看 Live,因此在我的苦苦哀求(并没有)下,最终敲定了 1 月 15 日前往日本的旅行计划。 旅行准备 首先是申请签证,日本面向在校或者毕业三年内的本科及以上学历大学生申请签证适用简化办理措施,不需要提交财产证明。不过日本领事馆不接受 DIY 签证申请,只能经旅行社申请,最好是找一个靠谱的旅行社(我是在飞猪上找的,注意还需要区分领区)帮忙递签。因为我人在杭州但户籍属于北京领区(后来居住证办下来了其实就可以从上海领区递签了),搞户籍事项证明还花了点时间。 接下来是机酒,机票买了南航的往返联程机票,去程由杭州萧山飞广州白云,然后第二天早上从广州白云飞东京成田;回程本来是由东京羽田飞北京大兴,然后从北京大兴飞回杭州萧山,结果因为发生了航变(延误了一个小时)因此改签了直航的春秋日本航班,从东京成田直飞上海浦东;酒店方面是海螺预定的位于品川区的品川王子大酒店(Shinagawa Prince Hotel)。 然后是社畜不得不品的请假环节,最后是请了两天年假,周四下班后立刻出发,周一返程。连着周末一共可以玩四天。 然后是旅行物品,其实我只背了一个包,带上了衣物、充电宝、充电器、洗漱用品之类的就走了。因为日本的两相插头和中国的标准是一致的,因此不需要单独的插头转换器,只要用电器支持 110V 电压就可以正常使用。 最后,在出行前还需要登录 Visit Japan Web 登记行程和签证信息,这样可以避免入境填入境卡浪费时间。 出发东京! 这应该是我第一次进入机场的国际&港澳台出发大厅(去年去香港因为是国内线飞到深圳,从深圳乘高铁在香港西九龙入境的,因此没有国际&港澳台出发),打登机牌的时候不知道为什么自助机识别不了我的护照,后来是值班经理看了我的签证以后帮我打的联程机票。 到达广州后本来是想在机场挂壁的,但是被群友劝住了,最后还是找了个酒店睡了一觉。早上四点启程前往机场。 真的很幸运,在日的这几天天气都特别好 看到陆地啦 可能是因为工作日+淡季的原因,当天海关... - Published: 2025-12-08 - Modified: 2025-12-08 - URL: https://blog.hikarilan.life/tech/2914/your-rag-system-might-be-killing-the-spirituality-of-llms/ - 分类目录: 技术 - 标签: Agentic Retrieval, FileSystem Access, LLM, Memory API, RAG, 大模型 当提到“如何为大模型提供大规模的可用于检索的信息”时,我们第一反应想到的大概率是 RAG 一类的解决方案,但现在我要说,基于文件系统访问(FileSystem Access)的检索方式可能远比使用 RAG 更好。 此文章同时还提供英文版本 / English Version Availble In Medium:Your RAG System Might Be “Killing” the Spirituality of Large Models 当提到“如何为大模型提供大规模的可用于检索的信息”时,我们第一反应想到的大概率是 RAG 一类的解决方案,但现在我要说,基于文件系统访问(FileSystem Access)的检索方式可能远比使用 RAG 更好。 什么是 RAG?为什么需要 RAG? Retrieval-Augmented Generation(检索增强生成,RAG)是一种可以允许 LLM 从大规模非结构化信息中进行语义检索的技术方案。 我们之所以需要 RAG,是因为大模型内置的知识内容可能不符合我们的需要,例如这些内容可能已经过时(因为用于大模型训练的语料库并不会随着使用者的使用而更新),亦或者我们所需要的知识由于过于精细化亦或者非互联网公开内容使得大模型无法从其语料库中获得这些信息。 在 RAG 之前,人们可能会试图将 LLM 需要知道的知识直接放入上下文中,但这同样引发了一个严重的问题,即 LLM 本身并不支持如此巨大的上下文窗口(目前顶尖的模型也仅支持 1M 上下文窗口,且又研究展示大模型上下文在超过 256k 后会使得大模型性能出现严重的劣化),因此,我们需要一个外部的知识库,帮助 LLM 获取他所需要的内容,这便是 RAG。 尽管 RAG 是随着 LLM 一起诞生的新概念,但 RAG 技术本身所依赖的技术内容却早已有之。而要想弄清楚 RAG,首先我们要搞清楚语义检索和文本嵌入是什么。 语义检索 如果让一个完全没接触过自然语言处理的程序员用工程方案实现“检索大规模语料信息”的功能,他大概率会想到使用 ElasticSearch 一类的搜索引擎中间件实现,很显然,搜索引擎是据离我们最近的,支持“大规模语料信息”的平台。然而,在很多时候,仅仅依赖于分词和倒排索引的基础搜索在很多时候并不能满足我们的需要。举个例子,如果你试图使用传统搜索引擎搜索“如何给猫喂药”这一问题时,你可能会得到: 如何用喂药器给植物施肥 猫咪日常护理指南 家庭常备药品清单 这种基于分词进行搜索的方案并不能准确理解句子中的实际语义,从而只是机械的获取分词近似,而非语义近似的搜索结果。而当我们使... - Published: 2025-10-22 - Modified: 2025-10-23 - URL: https://blog.hikarilan.life/thinking/2761/%e5%ad%a6%e9%95%bf%ef%bc%8c%e6%88%91%e5%be%97%e4%bc%91%e6%81%af%e4%ba%86%ef%bc%8c%e6%98%8e%e5%a4%a9%e8%a6%81%e9%9d%a2%e8%bd%af%e5%8a%a8%e5%8a%9b/ - 分类目录: 心得 培训机构我*你* 昨天晚上发生了一件事情让我很触动,遂决定记录下来。 QQ 上有人突然跑过来跟我讲,他也是学计算机的,最近在投简历,感觉不是很容易,想知道该怎么办。 因为发现这人是我的好友,但却从来没有跟我聊过天,于是我迅速划开他的资料卡,望向他的好友分组,发觉我把他归类在大学校友一栏中,又问了一下发觉他是今年的校招生,于是找他要了简历想帮着看一下。 映入眼帘的是一份十分标准的,包含教育背景、实习经历、技能特长、项目经验的研发岗简历,粗看内容很充实完善,没有什么大的格式问题,但简单扫了一圈,其中的有些内容还是让我皱了皱眉。 *字节的是吧 :我不是*字节的 那就是图*的 :对的 *字节和图*是我校两个软件工程培训机构的名字,他们非常善于捏造简历、教人如何在笔面试中作弊,甚至曾经创造出把一位 MySQL 都不会装的学生“抬进”字节跳动的神话。在学生群体中,这些培训机构就是他们的救星,而在我看来,他们只是一群骗钱骗前途的魔窟。 培训机构出来的人,简历都是高度趋同的,从他简历毫无新意的 “基于C++实现线程池模型” 项目中,我一眼就看出来他的履历应该是这两尊大佛中某一位的杰作。 又是一个被培训机构骗的底掉的校招生 :它主要是提供一个学习环境,还有一个学习方向 他给你们的学习方向就是学C++?你知道“C++开发”根本就不存在吗? :我理解的c++开发就是用c加加来写项目。 说到这里,我扔出两篇曾经写的文章,指出他所谓 “C++开发” 是一个十分复杂的岗位总称,而不是某个单一岗位的称呼,只会 C++ 语言本身根本不能帮助他找到适合他的工作。 :学长,你说的确实有道理,培训机构上课速度确实慢呀。 :好些课程都是听的回放 浪费钱浪费精力,哎 不是我说你找个后端工作怎么还写个测开实习 :(哭泣表情)只找到这个实习呀 :我该怎么办? 因为能看出来他还是比较有想法的人,因此主动询问他自己是怎么想的,想看看他会怎么说。 :复习简历上的内容,然后投简历 不是,你没发现你的核心问题是啥吗 你的核心问题有没有可能在你从始至终方向都错了 你对着一个不存在的工作岗位找工作 他只回了一个“啊”字,随后改口问道,那现在是不是需要学习 C++ 中的一个明确的方向,比如音视频,我回复他,这都 11 月了,真的来得及吗。 :来得及 来得及那就做 :我肯吃苦 肯吃苦你还去培训机构??? :当时比较迷茫吧 :然后不知道怎么学习 :... - Published: 2025-10-21 - Modified: 2025-10-21 - URL: https://blog.hikarilan.life/tech/2755/edgeone-%e8%be%b9%e7%bc%98%e5%87%bd%e6%95%b0%e9%87%8d%e5%ae%9a%e5%90%91%e8%b7%9f%e9%9a%8f%e5%af%bc%e8%87%b4-wordpress-%e6%97%a0%e6%b3%95%e6%ad%a3%e5%b8%b8%e7%99%bb%e5%bd%95/ - 分类目录: 技术 - 标签: EdgeOne EdgeOne 边缘函数重定向跟随导致 WordPress 无法正常登录 —— 问题排查与解决思路 前言 最近一个月有一件事情一直困扰着我:我的 WordPress 后台一直无法正常登录了,因为发现这个问题的时候很忙,简单排除了几个情况了以后问题依然没有解决,于是就暂时放着不管了。 结果前几天逛 Linux Do,有佬友说他也遇到过这个问题(尽管最后发现应该不是同一个问题),让我发工单问,于是我就发了个工单,后续联系到了 EdgeOne 的研发同学,跟这位同学捣鼓了一下午,最后终于解决了问题,至于具体怎么解决的,可以慢慢往下看。由于这个排查问题的思路挺值得记录的,遂写一篇博客记录下。 问题发现 问题大概出现在我把 CDN 从腾讯云 CDN 迁移到 EdgeOne 后的半个月,我突然发现我手机登录不上博客后台了,具体体现为输入完账号密码点击登录后,又跳转回了登录页面,没有任何报错。 但是我的 PC 上依然可以正常用后台(因为 session 还没过期),因此,当时我姑且认为是 Safari(Webkit)导致的,所以暂时没管,但是过了几天 PC 浏览器登录态过期后,我发现 PC 也登不进去了,这下我可着急了,开始疯狂找原因。 时间问题? 首先 WordPress 通过 POST /wp-login. php 进行登录提交,正常情况下登录以后应该会下发包含 wordpress_logged_in_xxxxxx 和 wordpress_sec_xxxxx 的 Cookie,但实际测试发现 Set-Cookie 确实有,但是设置的 Expired 时间却是一年以前!于是我立马考虑是不是服务器时间错误导致的问题,很遗憾,最后发现无论是 Linux 服务器时间,还是 WordPress 实际获取到的时间,都没有任何问题。 缓存问题? 于是我开始着手调查是不是其他原因,于是第一个被我考虑到的就是缓存问题:有没有可能是因为读到了过时的缓存/CDN 回源异常导致 Cookie 没有设置成功呢?于是我停用了博客上的 W3 Total Cache 插件,并设置 EdgeOne 的缓存策略为永不缓存,然而即便在浏览器设置 Disable cache 并注意到 EdgeOne 在响应头中返回的 Eo-Cache-Status 值为 MISS 后,上述问题依旧存在。 外部问题? 后来又考虑插件... - Published: 2025-10-19 - Modified: 2025-11-13 - URL: https://blog.hikarilan.life/thinking/2691/%e9%a6%99%e6%b8%af%e5%8d%8a%e6%97%a5%e6%b8%b8-%e5%bc%80%e6%88%b7%e8%ae%b0/ - 分类目录: 心得 - 标签: 旅游, 香港 香港半日游 + 开户记 旅行准备 一直打算去香港玩一圈顺便开个户,本来还想着之后再去但最近发现国家对内地居民赴港开立证券账户的政策收紧了,因此决定提前计划。经过紧锣密鼓(指一个小时)的准备,终于敲定于本周六(25/10/18)前往香港。 因为去香港的主要目标不是为了旅游而是开立储蓄和证券账户,看景点反而是次要,所以时间安排上比较紧凑,当天往返(不过就这一下午也是把我腿跑断了,看的经典不多但是也确实把我主要想看的几个地方看了,也算是进行了一个小小的旅游)。 具体的行程时间安排是这样的: 6:50 - 9:15 萧山 - 宝安 10:59 - 11:13 福田 - 香港西九龙 19:52 - 20:08 香港西九龙 - 福田 22:30 - 0:35 宝安 - 萧山 简单来讲就是先打飞的到深圳,然后高铁到香港(回程也是同样),过程中给机场安检和出入境检查额外预留了时间。 这其实也是我的第一次出境旅游,感谢群友帮助,解决了我行程安排中的一个大 BUG,这里也顺带给后人提醒一下:香港出入境实行的是一地两检,出入境检查全部在西九龙侧,无申报和大件行李的话全程自助通关只需要20分钟左右即可完成。 开户方面,因为时间原因因此这次计划是全程在线上进行开户。我计划办理以下银行的储蓄账户: 中银香港(BOCHK) 汇丰(HSBC BK) ZA Bank 天星银行(Airstar Bank) 蚂蚁银行(Ant Bank HK) 以及以下券商的证券账户: 盈立证券(uSMART) 一些银行也支持开立证券账户/基金账户,这里就不赘述了。 最后,准备好身份证和港澳通行证,背上挎包,定好早上4点的闹钟,就这样开始了我人生第一次的香港之旅! 出发香港 早晨 4 点准时被闹钟叫醒,收拾了一下以后坐上了提前预约好的送机车,前往杭州萧山国际机场,到达深圳宝安国际机场下机后坐地铁前往福田高铁站,然后前往西九龙,经过简单的自助出入境检查后,便成功进入了香港。 先讲旅游 旅游方面,本来只计划了看维港和皇后大道,后来发现时间还很充裕所以顺便又去看了铜锣湾,最后去了维多利亚公园,除了物价超贵(一瓶可乐 15 HKD)以外别的地方都很棒。 香港一个让我很震惊的地方是基本到处都是免费 WiFi,随处可以连,但是尽管如此还是建议大家买好本地的手机卡(我用的是去年买的 HahaSIM,港内资费35 HKD/60GB/30... - Published: 2025-09-28 - Modified: 2025-09-28 - URL: https://blog.hikarilan.life/thinking/2638/%e8%b0%88%e8%b0%88%e6%88%91%e7%90%86%e8%a7%a3%e7%9a%84%e4%ba%92%e8%81%94%e7%bd%91%e6%8a%80%e6%9c%af%e5%b2%97%e6%a0%a1%e6%8b%9b%e4%bb%a5%e5%8f%8a%e8%81%8c%e4%b8%9a%e9%80%89%e6%8b%a9/ - 分类目录: 心得 - 标签: 秋招 谈谈我理解的互联网技术岗校招以及职业选择 每年秋招季和入学季,都会有不少人来询问我有关技术的学习路径、校招的节奏和互联网职业选择。前几年我都会直接一遍一遍给每一个人单独解释,今年因为和星哥哥一起做了【采访贺兰3:对于职业的看法,客户端已死?】视频,所以每次有人问我就直接丢视频了;不过因为有的人还是觉得视频不太清晰,因此决定把视频中的一些核心观点整理出来做成博客,方便大家查看。 本篇文章主要讲的是互联网职业选择的相关内容,对于学习路径和校招节奏的内容,其实我之前已经写了一篇博客:【我是一名大一新生,我应该如何确认自己的学习方向?】,大家直接参考即可。 当然,下述内容大多数出自于本人的个人经验,也可能不太准确,烦请大家包容。 什么样的岗位最适合我 过去参加校招面试的时候很经常听见面试官说的话之一就是:「你们校招生其实履历就是白纸... ... 」,即使其言刚开始听起来挺让人火大:我付出了这么多努力,简历满满当当,你竟然说我是白纸?但其实冷静下来从另一个角度来看,校招生履历确实是一张白纸 —— 无论你过去的履历如何,你都有一定的机会转向其他的方向,而不像社招一样强卡匹配度(但并不是说校招就不卡匹配度了,毕竟现在越来越卷,一个更匹配的候选人肯定优于一个匹配度一般的候选人)。 但正因为如此,校招生在选择自己具体方向的时候便显得十分迷茫,大部分人可能「自动的」选择了后端,甚至更细一些,Java 后端,有的人可能根本不知道,也不喜欢这个方向,甚至他们不知道有什么其他的方向可以选,以为 Java 后端就是唯一的就业方向,这导致这些人在最终的招聘中难以展现出竞争力,最后可能无法取得非常好的结果。 而于我个人看法来讲,选择岗位或者方向一定要尽早,这就要求校招生尽早的(也许是大一)对行业的全局动向有一个大致的了解;同时,在自己的喜好和行业的招聘需求中找到一个平衡点,优先选择自己喜欢的方向,但也千万注意不要选择了那些强卡学历/强卡本硕/没有招聘需求的方向。 岗位之间的区别和选择 互联网技术岗的岗位真的非常非常多,这里就捡几个比较有代表性的简单讲讲各自的工作内容、优缺点以及是否是一个好的选择,请各位务必注意,以上的这些信息都有极强的时效性,可能过了几年(甚至几个月)就不再有效了,仅供参考,最重要的是大家一定要养成搜索和整理信息的习惯,这比阅读二手「旧闻」要有用的多。 后端开发 无论到哪里,后... - Published: 2025-09-16 - Modified: 2025-10-21 - URL: https://blog.hikarilan.life/tech/2603/%e5%88%a9%e7%94%a8-edgeone-%e8%be%b9%e7%bc%98%e5%87%bd%e6%95%b0%e5%86%99%e5%85%a5-cloudflare-ip-geolocation-%e5%9b%9e%e6%ba%90%e8%af%b7%e6%b1%82%e5%a4%b4%e4%bb%a5%e6%94%af%e6%8c%81-wp-statistics-geoip/ - 分类目录: 技术 - 标签: EdgeOne, FaaS 利用 EdgeOne 边缘函数写入 Cloudflare IP GeoLocation 回源请求头以支持 WP-Statistics GeoIP (标题很长,但这已经是我能想到的最短的叫法了) 前言 昨天群友发来一个 EdgeOne 领取免费版套餐兑换码的链接,竟然是 100% 中奖,每周 2000 份(截止到现在也就兑了 350 份,基本是随便送了),一直很想把现有的国内腾讯云 CDN、国外 Cloudflare 的方案迁移到 EdgeOne 上,但奈何一直领不到免费版兑换码,这次终于如愿,遂赶紧噼里啪啦配置一顿,工作良好。 基本功能配置完毕,看了下 EdgeOne 有哪些额外功能,注意到 EdgeOne 支持携带客户端 IP 的地理位置信息回源,这让我想起来 Cloudflare 有一个名为 IP GeoLocation 的玩意儿,做了同样的事情,会把用户的国家码注入到 CF-IPCountry 请求头上给下游用(当然 EdgeOne 这里默认名称是 EO-Client-IPCountry)。 这让我想起来我的 WP-Statistics 插件也支持 Cloudflare IP GeoLocation 作为位置检测方法,于是探索了一下怎么让 EO 支持这套东西。本来以为简单配配规则引擎上的回源请求头就行了,结果完全没这么简单... 兜兜转转整了一天,终于探索出一套解决方案,遂分享出来(绝对不是水博客!) 解决方案 此方案也适用于其他需要在 EdgeOne 上使用 Cloudflare IP GeoLocation 同款请求头的需求。 首先,根据 WP-Statistics 源代码中的 CloudflareGeolocationProvider,可以看到 WP-Statistics 通过 isAvailable 和 isBehindCloudflare 两个函数判断是否可以使用 Cloudflare IP GeoLocation 作为位置检测方式 —— 后者是初步判断,只有满足后者才能在设置中启用 IP GeoLocation;前者是最终判断,如果这个不为 true,即使你启用了 IP GeoLocation,也会被 fallback 到 MaxMind GeoIP 数据库的查询模式。 因此,取此二者函数所需要的请求头的并集,就得到了我们需要在 EO 上配置的回源... - Published: 2025-07-20 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/daily/2442/%e5%8e%bb%e4%b8%80%e5%ba%a7%e6%96%b0%e7%9a%84%e5%9f%8e%e5%b8%82%ef%bc%8c%e5%bc%80%e5%a7%8b%e4%b8%80%e6%ae%b5%e6%96%b0%e7%9a%84%e6%97%85%e9%80%94/ - 分类目录: 日常 - 标签: 杭州 去一座新的城市,开始一段新的旅途 大半个月没更博客了,本来一直想抽空写一篇,但是奈何事情太多实在有心无力,趁周末抓紧写一篇出来。一些关注我其他社交媒体账号的朋友可能知道我这半个月干了什么,但是对于一些只关注我的博客的朋友来说,可能还不知道我的生活发生了如何惊天动地的变化,因此在这篇文章中统一说明和记录下。 时间倒回一个月前,6月19号中午,还在学校排队办离校手续的我突然收到去年秋招滴滴三面面试官(主管,我现在的+2)给我发来的微信消息: hello,打扰了,不过还是希望能看下这个信息:滴滴国际化目前业务积极出海,所以现在非常多的职位和hc开放中,职位和offer,薪资等都可聊;有什么问题随时找我哈 本来,如果不出意外,7月11号,我应该会入职云智,但是这条消息确实让我产生了些许动摇。经过一些交流后,遂与国际化出行业务效能中台部门的负责人(我现在的+1)对意向进行了多轮沟通,并最终决定了重新选择滴滴。 这里可能就会有人很疑惑,你明明秋招拒了滴滴为什么现在又要回来(而且薪资没变),而且你不是无论如何都不想干测试吗怎么又真香了?用两个词儿回答上面两个问题就是:钱多、纯开。 当家里人当天下午知道我打算放弃云智 offer,前往杭州滴滴的时候,第一反应是觉得事情发生的太快,希望我能缓一缓;然而我知道时间不等人,也许过了这个村就没这个店了,因此还是先接下了口头 offer。当然无论如何,决定接受 offer 了之后,我就开始着手跟云智毁约并重新和滴滴签约(两方)。可能是因为缺人,这场春招补录除了一轮 HR 面外,我没有进行过任何技术面试。 这里其实还有一个小故事,就是因为不想欺骗老东家,在滴滴还没有给我正式发下 offer,还在 offer 审批流程的时候,我便提前回复了我云智的组长可能不来了的事情,这也导致了我窗口期的那一周惶惶不可终日,不过好在有惊无险,还是顺利的拿到了 offer。 拿到 offer 并约定了 7 月 15 号入职后,11 号,我便踏上了前往陌生城市的旅途。 因为手头紧张,只能坐绿皮去杭州,这是我人生第一次坐普快,也算是难得的体验 12 号上午到达杭州后,简单的吃了一顿饭便开始看房,好在前期在网上提前进行了了解,下午便找到了心仪的户型并光速下定。 自如租的,双钥匙,离公司很近,价格小贵,但是这两个落地窗真的很磕我 另外,趁着周末的时间逛了浙大紫金港校区、西... - Published: 2025-06-29 - Modified: 2025-10-23 - URL: https://blog.hikarilan.life/tech/2405/%e4%b8%80%e7%a7%8d%e5%9f%ba%e4%ba%8e-easyvtuber-%e5%92%8c-stable-diffusion-%e7%9a%84%e9%9b%b6%e6%88%90%e6%9c%ac%e8%99%9a%e6%8b%9f%e5%bd%a2%e8%b1%a1%e7%9b%b4%e6%92%ad%e6%96%b9%e6%a1%88/ - 分类目录: 技术 - 标签: EasyVtuber, Stable Diffusion, 直播 一种基于 EasyVtuber 和 Stable Diffusion 的零成本虚拟形象直播方案 TL;DR: 本文描述了一种基于 EasyVtuber 和 Stable Diffusion 项目的零成本虚拟形象直播方案,允许您使用 Stable Diffustion 从零创建您自己的二维虚拟形象,并籍由 EasyVtuber 的 AI 模型令您的虚拟形象“动起来”,以达到媲美 Live2D 模型的效果。 前言 我一直很想整个 Live2D 模型拿来直播,奈何囊中羞涩,因此只得另辟蹊径。网上搜寻了类似 PNGTuber 之类的方案后,依然觉得不够满意。结果前些天和朋友聊起此事,被推荐了 EasyVtuber,经过一番倒腾后,完美满足了我的需求,本文则作为教程介绍如何使用 EasyVtuber 配合 Stable Diffusion 零成本创建自己的虚拟形象进行直播。 当然要注意的是,此方案对计算机性能要求不低(因为需要 AI 模型实时计算绘图),拿来做游戏直播之类的可能需要你有一张强劲的显卡。 准备工作 部署 Stable Diffusion 安装 Stable Diffusion Webui Forge 首先,需要部署 Stable Diffusion 以帮助我们生成我们自己的 OC 形象。如果你使用外部平台生成 OC 形象,则可以直接跳到下一节。 为此,请前往 lllyasviel/stable-diffusion-webui-forge,然后在 README 的 Installing Forge 一节中点击 >>> Click Here to Download One-Click Package (CUDA 12. 1 + Pytorch 2. 3. 1) - Published: 2025-06-18 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/tech/2385/%e6%8a%9b%e5%bc%83-bukkit-api%ef%bc%8c%e6%8b%a5%e6%8a%b1-paper-api/ - 分类目录: 技术 - 标签: BukkitAPI, PaperAPI 抛弃 Bukkit API,拥抱 Paper API 在两三年前,如果你是一个正在打算开发 Minecraft 服务端插件的开发者,对于选择 API 标准这一方面,你可能会毫不犹豫地选择 Bukkit API:这是一个历史悠久、兼容性强、用户基数多的 Minecraft 服务端插件 API,你没有任何理由不选择它。但是在几年后的现在,你可能会选择另一个异军突起的标准 —— Paper API。 这时候有些开发者就要跳出来问了:Paper API 不本就是 Bukkit API 的一个超集吗,这两者有什么可比性吗?但实际上,Paper 在去年(2024)年底已经和 Spigot 发生了硬分叉(hard-fork),这意味着两者之间不再存在继承关系,因此,开发者们需要在二者之间做一个抉择。而对于一个离开 Bukkit 开发多年,需要重新回到这里进行开发的我来说,在进行了简单调研后,我便毋庸置疑的选择了使用 Paper API 进行开发。 paperweight-userdev:一站式的开发环境以及 NMS 访问支持 paperweight 是 Paper 自定义构建工具的名称。paperweight-userdev Gradle 插件是该工具的一部分,用于在开发过程中访问内部代码(也称为 NMS)。 如果你是一名 Forge 开发者,那你可能听说过 ForgeGradle,其可以根据一定的重映射(remapping)表将 Minecraft 源代码反混淆为人类友好的源代码,并帮你在构建模组时将使用到 Minecraft 源代码的源代码重新混淆回原来的样子,以支持在 Minecraft 客户端上的运行。很多年以来,Bukkit API 开发者们并不能很好的在插件开发中使用 Minecraft 源代码(net. minecraft. server 包,简称 NMS;当然这里要说的是和 Forge 不同,Bukkit 因为提供了很好的上层封装,因此并不鼓励这种使用方式,所以可能刻意没有提供很好的工具),即使后续 SpigotMC 推出了 BuildTools 这样的工具来辅助你访问 NMS,但是整个开发链路并不完整,也没有很好的脚手架。paperweight-userdev 解决了这个问题。 和 ForgeGradle 一样,在安装 Gradle 插件并配置依赖后,你便得到了... - Published: 2025-06-12 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2374/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e9%98%bf%e9%87%8c%e5%9b%bd%e9%99%85%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 淘天, 阿里, 阿里国际 面试经历 - 阿里国际后端开发校招 于 2025/6/12 进行的为时 26 分钟的面试,淘宝的国际化部门,为电话面。把简历简单问了一遍就结束了,因为是电话面所以也没有算法部分。面试反馈也挺好,说后面还有两轮技术面。不过我有点担心会卡我学历之类的(本来说加我微信的,但是截至发稿日还没有动静)。 以下是面经: 确认一下你目前手里的 offer 实习经历深挖 项目经历深挖 反问 更新:后续约二面后当天面试官未赴约,当晚流程直接结束。 - Published: 2025-06-09 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2367/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-tme-%e4%ba%92%e5%8a%a8%e8%a7%86%e9%a2%91%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: TME 面试经历 - TME 互动视频后台开发工程师校招 于 2025/6/9 20:00 进行的为时 54 分钟的面试。面试官说我算法做的时间太长了,其余都还不错。应该是挂了。 以下是面经: 自我介绍 现在还在学校吗?现在拿了 offer 吗?我看你本科学的是金融,为什么学计算机? 你主要语言是 Java 是吗?(提到对 Go 也有了解)知道 Go 的 GC 原理吗?知道 GMP 吗?Channel 知道吗? 算法题:大数相乘 讲一下在腾讯云的项目 讲一下轻论坛排行榜怎么做的,分数相同如何按照时间排序? RPC 和 HTTP 有什么区别?它们两者有什么优缺点或不同点? 反问 更新:确实挂了。 - Published: 2025-05-31 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/daily/2346/%e5%88%9d%e9%97%bb%e4%b8%8d%e7%9f%a5%e6%9b%b2%e4%b8%ad%e6%84%8f-%e5%86%8d%e5%90%ac%e5%b7%b2%e6%98%af%e6%9b%b2%e4%b8%ad%e4%ba%ba-%e7%ba%aa%e5%a4%a7%e5%ad%a6%e6%af%95%e4%b8%9a/ - 分类目录: 日常 - 标签: 大学, 毕业 初闻不知曲中意 再听已是曲中人 —— 纪大学毕业 还有一个月,我的大学生活就要彻底结束了。一个月后,我将褪去“大学生”这个已经陪伴了我四年的身份,第一次披上“打工人”这个名字。 每年 5 月,学校的正门门口都会开始布置一些铁架子,我知道的是,那是用来拍毕业照用的,而我不知道的是,为什么每次我看到这些铁架子的时候上面都没有人在拍毕业照。 这个问题困扰了我四年,直到 20 号早上 9 点我顶着大太阳在那个铁架子上站了整整一个半小时。而当我拖着疲惫的身体从铁架子上缓缓走下来的时候,我才后知后觉地意识到 —— 我要毕业了。 我要毕业了,那几个在我的微信上置顶了四年的班级群也将被我逐个点击“取消置顶”;这个已经陪伴了我四年的校园也即将成为陌生人;下次再进入学生宿舍,我也会直接被宿管阿姨拦下来,就像那些本不该进入学生宿舍的“外人”一样... ... 当然我知道,这一切迟早会结束的。即便我知道这种结束是一种新的开始,我即将奔赴另外一个世界,在一个我喜欢的地方和我喜欢的岗位上继续发光发热... ... 但是到了临别的这一刻,真的还是有些不舍。 还记得初入大学的我,面对并不熟悉但是即将相处 4 年的舍友,我还是鼓起了自己的勇气主动和他们交流起来; 还记得初入大学的我,对一切事物都充满了好奇,相信在这个有无限的空间可以发展自我的平台,展现出自己 100% 的热情; 还记得初入大学的我,梦想着有一天自己也可以逆天改命,带着那个沉寂了十年的梦想,坚信自己一定可以成为自己想成为的人... ... 也许,多年以后的某天,回过头来回忆这四年,也许我也会跟长辈一样说出那句“当年的我”。 毕业快乐。 - Published: 2025-04-17 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2283/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%9c%8d%e5%8a%a1%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b-2/ - 分类目录: 面经 - 标签: 灵犀互娱 面试经历 - 灵犀互娱游戏服务端开发校招 (2) 于 2025/4/17 15:00 进行的为时 37 分钟的面试。问了下是交叉面,全程八股+场景拷打,面试官说表现挺好的,等结果了。 以下是面经: 自我介绍 谈谈你的个人规划 有了解过游戏相关的一些开发吗?了解过游戏开发主要是做什么东西吗?看你说你对技术比较感兴趣,那你觉得做这种业务比较重复吗? 你做的那么多项目里你觉得哪一个是比较有成就感的?(提到 NeraBBS 的通行密钥功能)能讲讲通行密钥的具体实现过程吗? 讲讲 TCP 的四次挥手?TIME_WAIT 状态是什么时候进入的? 讲讲红黑树和 B+ 树的应用场景还有区别?红黑树有什么具体的特点? 怎样管理 Buff 状态(包括剩余时间)会高效一点? 有哪些比较实用的缓存算法? 有没有了解游戏里的状态同步过程?(不会) 了解游戏里的 AOI 算法吗(不会)那 A 星算法呢?(提到 BFS)BFS 寻路应该怎么做?BFS 应该怎么实现? 有不可变的配置数组,包含游戏奖励配置,想(概率相等的)的随机 x 个奖励,应该怎么做? 快速排序是怎么实现的? 有学过 Lua 吗? 可以讲一下 Java 的 GC 吗?(提到 G1)什么是吞吐量?可以讲一下 G1 的垃圾回收流程吗? 都玩什么游戏?每周玩多久?都和谁玩? 后面有考研的计划? 反问 更新:当天傍晚约 22 号上午 10:05 HR 面,25 号下午催流程后官网流程已结束。 - Published: 2025-04-15 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2267/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 灵犀互娱 面试经历 - 灵犀互娱游戏服务端开发校招 于 2025/4/15 15:00 进行的为时 76 分钟的面试。全程场景拷打,我其实不太懂现代分布式游戏后台是怎么设计的,但是这个面试官似乎是默认我会这些东西的(我只会搞搞 MC 的那种单体后端啊喂),所以问了好多解决方案我都得现场想,而且不知道为啥感觉我和面试官基本是在两个世界,我说的东西他似乎都不太懂,可能是因为思维不太一样... 反馈也表示说最好还是多了解一些游戏后端的架构设计。感觉应该得一面挂。 以下是面经: 自我介绍 你是什么专业?看你兴趣比较广泛,为什么要选择来游戏行业?为什么不去做计算机+金融的方向?你设计的方向很多,能将将你在做方向选择时是怎么考虑的吗? 你有了解现在游戏行业有哪些比较好的产品,以及有哪些比较好的公司和他们的游戏品类吗? 讲讲你学过的这些程序语言的典型的差异和对它们的理解? 能简单介绍一下 Toktik 这个项目吗?你觉得这个项目中最复杂的一点是什么?视频上传和下载是怎么做的? 看你游戏后端和 Web 后端都做过,能给我讲一下你对这两者差异点和区别的理解吗?假设你现在要做一个登录系统,你怎么保证它是安全的?(提到 TLS 证书加密)讲讲 TLS 的握手流程是怎么做的?现在有一个登录系统,比如需要使用 QQ 或者微信登录,你能推测一下他的后台是怎么设计的吗?我已经建立好了连接,并验证了用户 token,那么我后面的通讯怎么保证安全的?(提到防重放攻击和 CSRF Token)能讲讲 CSRF Token 的原理吗?假设有中间人模仿客户端操作,它能防止到吗? 在多节点的游戏服务器内如果需要为物品生成可以跨多节点识别的唯一 UUID,应该如何设计这个 UUID(而且希望这种 UUID 应该可以本地计算)? Minecraft 这种游戏里可以把方块拼在一起,存储这些方块数据会带来很大的内存消耗,你可以用什么方法尽可能地减少(内存)消耗?如果序列化传输呢? 设计一套支持多节点游戏服务器的增值系统服务,可以处理来自远端消息队列的支付成功回调并处理游戏数据,需要考虑落库、落盘性能,多节点之间的信息同步,并考虑当玩家在线和不在线时进行充值进行数据同步的差异? 反问 更新:当天傍晚约二面 - Published: 2025-03-20 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/daily/2110/%e6%88%91%e5%9c%a8%e4%ba%91%e6%99%ba%e7%9a%84%e5%ae%9e%e4%b9%a0%e7%bb%8f%e5%8e%86/ - 分类目录: 日常 - 标签: 实习, 腾讯云智 我在云智的实习经历 从去年 12 月到今年 2 月底,我在云智进行了为期 2 个多月的校招提前实习,即便我过去已经在多家公司实习过,但是云智的氛围和福利确实给我留下了了很深的印象。 任何人在接触新的环境的时候,都会产生一种自然的疏离感,即便先前校招生见面会的时候已经和组里的同事见过面,但是当我在 first day 再次见到他们时,我依然保持着唯唯诺诺的收敛,“蜷缩”在自己的工位上,一动不敢动。 大大大大大鹅 当然,我对这种情况是有充足的心理准备的,因为我过去实习的几家公司基本都是这个样子,“工作”就是“工作”,除此之外没有,也不应该有什么额外的内容。 然而后续发生的事情远远超出了我的预期,组里的氛围真的很轻松,即使在忙碌的工作期间,也经常能听到同事的嬉笑闲谈。于是慢慢的我也开始敞开我的心扉,试图在他们讨论一些技术内容的时候插上一句嘴,发表一些我的看法。 很幸运,由于我去实习的时候正逢过年,赶上了不少活动:有部门团建、春节活动,加之各种礼盒礼包基本拿到手软了。 春节活动套圈套到了两只短鹅,正好都是我想要的 过年发了一整盒的零食 还有各种年货+鹅 说一个挺有意思的事情,就是春节前 ld 和 mt 带着我去参加大部门的饭局,我以为饭桌上还要说点什么长篇大论,没想到真的是纯吃饭,主打一个埋头干翻啥也不管。在饭局上,我和我的同事们也一起聊了不少有意思的话题,渐渐的变得熟络起来了。 爽吃烤全羊 工作上我也在慢慢熟悉组里的业务,我的 mt 经常抽时间给我把组里的服务链路从头讲到尾,让我能更好的了解业务。 组里拿团建经费买的吃喝,正好放我旁边,让我吃了个爽 后来,我还把我在自己个人博客上写的两篇技术文章发到了公司内网上,没想到反响还不错,甚至有一篇文章被转发到了“腾讯云开发者”微信公众号上,对于我一个普通的实习生来说,这种认可对我来说真的是莫大的荣幸。 说来也巧,去年我在北京实习的时候,参加了腾讯云 Lighthouse 的线下 Meetup 活动,今年加入轻量云的聊天群的时候,赫然发现组里同事也都在群里,也许这就是缘分吧。 两个月的时间说长不长,说短也不短,我的实习因为一些原因匆匆结束了,但是我永远不会忘记这段经历。 期待七月再见啦~ - Published: 2025-03-19 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2096/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%bb%b4%e6%bb%b4%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 滴滴 面试经历 - 滴滴后端开发校招 于 2025/3/19 14:00、15:05 分别进行的为时 50 分钟、55 分钟的面试。依然是车轮面的模式,三轮技术面。不过遗憾的是这次没能像上次一样闯关到最后,而是喜提二面挂。 面试内容方面,两轮基本都是把项目简单问了一下然后就开始问算法题,不一样的是二面面试官得知我是非科班生了以后就开始狂问我一些 Java 基础内容(G1、CocurrentHashMap 之类的)。 算法题方面,一面是二叉树的最近公共祖先,二面是大数相加,一面没 A 出来,二面 A 出来了(结果一面过了二面挂了,笑)。 - Published: 2025-02-27 - Modified: 2025-07-02 - URL: https://blog.hikarilan.life/interview/2014/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 – 字节跳动后端开发校招 于 2025/2/27 14:00 进行的为时 30 分钟的面试,岗位为「后端开发工程师-算力基础设施」。除了消息队列以外其他答得都没啥问题(关键也没怎么问啊... ),不知道为啥问的很短,但个人感觉还行,反馈也说不错,看能不能过了。 自我介绍 现在还在腾讯实习吗?在腾讯那边是做什么的?Tag 标签服务重构优化是怎么做的? 之前一直是干后端吗?(干过测开)为什么去干测开了? Redis 常用的命令和他背后对应的数据结构?zset 在 Redis 里是怎么实现的? 在项目中有用到什么消息队列吗?一般在什么场景下用消息队列可靠些? 数据库的隔离级别分几种?一般最常用的是哪个? 你是上大学以后接触的编程还是很早就接触了? 代码题:手搓 LRU 反问 更新:当晚 19:10 收到 HR 反馈并收到感谢信。 同学晚上好,您的经历和个人素质还是非常优秀的,本次面试下来,对您还是非常看好,但可能是综合下来不太匹配这样,目前流程是不再继续了 面试流程走下来,确实彼此沟通都很顺畅,所以我目前把您推给其他业务线的同事们了,如果之后流程走了评估ok也会联系您 - Published: 2025-02-09 - Modified: 2025-12-31 - URL: https://blog.hikarilan.life/tech/1924/%e4%bb%8e%e8%bf%9b%e7%a8%8b%e5%88%b0%e5%8d%8f%e7%a8%8b%ef%bc%9a%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%9a%84%e5%b9%b6%e5%8f%91%e7%bc%96%e7%a8%8b%e4%b9%8b%e8%b7%af/ - 分类目录: 技术 - 标签: 协程, 并发编程 此文章目前还提供视频版本:Bilibili | YouTube 从第一台分时操作系统的横空出世,到 Intel 推出双核 CPU 打破摩尔定律的诅咒,新的技术迫使人们不断探索并发编程之路,以试图触碰人类几千年以来知识结晶的最大高度。 引言 如果你了解过计算机操作系统的历史,那么你一定知道,早期的计算机操作系统并不支持多用户功能,这是因为单个 CPU 无法同时处理来自多个用户的输入输出,同样,程序也无法同时运行,只能按顺序运行。后来被发明的分时操作系统解决了这个问题,同时也为程序员带来了“并发”的概念。 在计算机科学中,“并发(Concurrency)”描述的是一种计算机程序的运行状态,即通过时间片轮转的方式,允许多个计算机程序在一段连续时间内以一定机制在一个或多个 CPU 核心上轮流运行,以营造一种所有计算机程序在同时运行的假象。 诚然,这种基于操作系统抢占式调度的时间片轮转机制对于应用程序开发者是透明的,但是随着应用程序规模的不断膨胀和用户更多的需求产生,应用程序开发者意识到他们有时需要占用不止一个 CPU 资源,于是,并发编程应运而生。 多进程模型 早期操作系统其实是没有线程的概念的,一个进程只能有唯一一个线程存在,进程同时担任着最小的资源分配单位和最小的 CPU 调度单位的职责。在这种情况下,多进程是非常自然就能想到的并发模型。在这种模型下,进程与进程之间通过管道、Socket 等机制进行数据交换,并使用操作系统提供的并发原语来进行同步。 多线程模型 后来人们发现,进程并不适合担任 CPU 调度的最小单位,因此,线程横空出世。线程最大的特点是与同一个进程内的其他线程共享地址空间和操作系统资源(比如 I/O 句柄),这使得操作系统在调度到同一个进程的其他线程时只需要更换程序调用栈(CPU 寄存器)即可,避免了高额的性能开销;同时,由于线程共享地址空间,线程与线程之间交换数据可以通过更高效(尽管有时并不安全)的共享内存方式实现,进一步优化了程序的运行效率。 同时,基于共享的地址空间,一种比操作系统并发原语更轻量的同步方式也应运而生,那就是 CAS。 从 Mutex 到 CAS:我们是否真的需要操作系统介入同步 在传统的并发同步过程中,人们经常使用以 Mutex 互斥锁为主的各种并发原语以保证多个线程的执行顺序符合预期: var value = 0; var mut... - Published: 2025-02-06 - Modified: 2025-03-11 - URL: https://blog.hikarilan.life/thinking/1909/%e5%9f%ba%e4%ba%8e-hyperos-2-0-%e5%92%8c-android-15-%e7%9a%84%e4%b8%aa%e4%ba%ba-magisk-xposed-%e6%a8%a1%e5%9d%97%e5%88%86%e4%ba%ab/ - 分类目录: 心得 - 标签: LSPosed, Magisk, 刷机 基于 HyperOS 2. 0 和 Android 15 的个人 Magisk + Xposed 模块分享 闲来无事,分享一下个人目前在用的一套 Magisk + Xposed 模块,也方便我自己换机的时候恢复(绝对不是想水文章!)。顺带记录一下升级 Android 15 系统以后遇到的一些坑以及解决方案。 设备信息 首先分享一下个人设备的相关信息: 型号:Redmi K60(23013RK75C) 处理器:Snapdragon 8+ Gen 1 Mobile Platform 运行内存:8GB OS 版本:Xiaomi HyperOS 2(2. 0. 3. 0. VMNCNXM) Android 版本:15(安全更新:2024-12-01) Magisk 版本:28. 1(28100,topjohnwu/Magisk) LSPosed 版本:1. 10. 1(7115,JingMatrix/LSPosed) 注意这里 LSPosed 用的不是官方版的,而是一个第三方 fork,因为自官方 LSPosed 停更后,官方版的 LSPosed 不再支持在部分 Android 15 的设备上运行,并且会导致 Magisk 功能异常(体现为 root 可以使用,但是 Zygisk 无法正常开启,或开启后基于 Zygisk 的模块依然无法使用),后经排查发现是 LSPosed 导致的问题。更换为支持 Android 15 的第三方版本 LSPosed 以后一切就正常了(也可以试试 LSPosed 官方的测试版,或者等 LSPosed 官方更新正式版,因为测试渠道加入起来比较麻烦我就没折腾)。 Magisk 模块分享 先从 Magisk 模块说起,大概分为了以下几类: 框架支持类 Zygisk - LSPosed:Xposed 模块框架 Zygisk - Sui:Magisk 版 Shizuku Zygisk Next:Zygisk 重实现版本,用于替换 Magisk 内置的 Zygisk 不多说,都是一些基础的框架,Zygisk Next 可装可不装,Sui 取决于你有没有 App 需要用 Shizuku。 体验提升类 米柚14小白条沉浸:令手势提示线嵌入应用内侧而不是在应用外占用单独的一块地(实测支持 HyperOS) 界面美化类 MIUI 完美图标补全:配合 Xposed... - Published: 2025-01-20 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/daily/1873/%e9%99%95%e8%a5%bf%e7%a7%bb%e5%8a%a8%e5%85%89%e7%8c%ab%e6%94%b9%e6%a1%a5%e6%8e%a5%e8%ae%b0/ - 分类目录: 日常 - 标签: 家庭网络, 宽带 陕西移动光猫改桥接记 前言 要说我家里的宽带,那叫一个差,自从某一段时间之后,网络变得奇差无比 —— 要带宽带宽没有,要延迟延迟高的一批,搞得我打游戏都只能开手机热点(手机热点也卡,所以干脆就不玩了),去年找过宽带师傅看,宽带师傅说光猫不行了,得换光猫,然而换一次光猫 200 块钱,我爸嫌贵不想换,而我因为在上学不怎么住家里,所以也就不了了之了;然而最近住在家里实在忍不了了,遂决定动手改造,一番折腾后判断应该是光猫同时兼职无线 AP 导致不堪重负,于是打算光猫改桥接,解放光猫。 说干就干 先说一下我这边网络环境的大致情况: 宽带:移动套餐送的,不知道标称宽带多少,Speedtest 测下来下行带宽只有 10-20 Mbps,闲时延迟更是直接爆表 光猫:办宽带送的华为产光猫 无线网络规格:WiFi 4 + 2. 4Ghz 网络拓扑:光信号连光猫,没了 决定光猫改桥接后,我先是询问了主管我们小区这边宽带师傅相关政策,并向其索要了管理员密码(CMCCAdmin 的密码,不是 user 的): 然而,我发现新版的移动光猫后台不再将 PPPoE 密码输出到前端,这一时使我陷入了困境,然而经过一番搜索后,发现中国移动可以发送“宽带密码”到 10086 以重置光猫密码,于是迅速重置了光猫密码,并将光猫 INTERNET 连接的连接模式由“路由”改为了“桥接”,然后关闭了 DHCP 服务。 于是,光猫配置顺利完成,接下来就是路由器配置了。 路由器选购上,我购买了小米的 AX1500 路由器(千兆 + WiFi 6,应该是够用了,不知道为啥小米商城同城配送这款都缺货,但是美团的小米之家能买到),收到货后,直接插好路由器电源,并将光猫的 LAN 口接入路由器的任意接口(这款路由器支持盲插),配置 PPPoE 账号密码,all set! 配置完成后,也是例行进行了 Speedtest 测试,带宽直接从 20 Mbps 提升到了 200 Mbps,(闲时)延迟也降低到了 20 ms 左右,可以说是圆满完成了任务 ! 之后还打算把我的 R2S 利用起来,搭个透明代理或者 AdGuard Home 之类的。 意外之喜 捣鼓路由器配置的时候,突然发现路由器 WAN 口获取到了 IPv6 地址(分了一个/64)!确认个人设备也获取到了属于自己的 IPv6 地址后,迫不及待地用 Caddy 开了一个... - Published: 2025-01-16 - Modified: 2025-02-19 - URL: https://blog.hikarilan.life/daily/1855/hikarilan-%e7%9a%84%e7%ab%99%e7%82%b9%e6%9c%8d%e5%8a%a1%e5%9f%9f%e5%90%8d%e8%bf%81%e7%a7%bb%e8%ae%b0/ - 分类目录: 日常 HikariLan 的站点服务域名迁移记 TL;DR: 本篇文章记录了本人将目前对外提供的三个 Web 服务以及一个邮箱服务域名从 minecraft. kim 迁移到 hikarilan. life 的经过。 前言 虽然"minecraft. kim"这个域名已经服务了我六七年,但老实说,其实我一直很想换个域名,因为“minecraft. kim”这个域名似乎并不能很好的和“HikariLan”这个人关联起来,然而一直碍于迁移成本太高(其实主要是懒),以及下面要说的另外一个原因,导致一直没有这么做。然而上周(12 号),我最终还是下定了决心作出改变,并经过了几天的折腾,最终完成了全部服务的迁移,也就是你目前看到的这个“hikarilan. life”域名。虽然看起来四天就搞好了,但是还是有点一波三折的,所以写个文章记录下。 Timeline 1/12:购买域名并提交备案申请,迁移邮箱服务 1/13:迁移个人主页、在线简历服务,新增静态资源服务 1/14:域名备案初审通过,提交管局审核 1/16:域名备案通过审核,迁移博客服务,部署 CDN 新域名的选择 上周天的时候,在某群和群友讨论,如果要更换域名,那么什么域名比较有新意,遂逐一查看了以下域名: hikarilan. io(我最喜欢的域名,奈何没法 ICP 备案,只得含泪舍弃) xc. hl. cn(hl. cn 是黑龙江的省级域名,这个挺有意思,但是被抢注了,今年 5 月才过期,到时候再看看) hikari. lan/hikarilan. sky(都很有意思,然而这些顶级域并不开放公众注册) 于是最后选择了 hikarilan. life,含泪拿下。 迁移邮箱服务 域名买下来了以后我干的第一件事是迁移邮箱服务,刚开始会以为迁移后找回原邮箱的收件箱内容很麻烦,但是飞书邮箱服务似乎考虑到了这一点,直接允许将旧的邮箱设置成新邮箱的别名,这样所有数据就可以无缝继承过来了。 一如既往的,新的邮件域配置了 SPF、DKIM 和 DMARC,最大程度的降低垃圾邮件充斥收件箱的可能性。 在此过程中,以下电子邮件地址发生了更改: hikarilan@minecraft. kim -> i@hikarilan. life noreply@minecraft. kim -> noreply. blog@hikarilan. life... - Published: 2024-11-10 - Modified: 2025-08-11 - URL: https://blog.hikarilan.life/thinking/1631/ospp-2024-x-oi-wiki%ef%bc%9a%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e5%b0%8f%e7%bb%93/ - 分类目录: 心得 - 标签: OSPP OSPP 2024 x OI-Wiki:开源活动小结 TLDR:2024 年 5 月至 10 月期间,我参加了中科院软所举办的 2024 年 OSPP 开源之夏活动,并于今日(11. 9)收到了结项审核通过的通知,这篇文章大致讲述了我参与本年度开源之夏活动的一些过程和感想。 2024 年的开源之夏也是如约在今年春季开放了学生注册和项目申请,由于由于去年没能顺利结项,加之这应该是我大学期间最后一次参加类似活动的机会(OSPP 仅限高校学生报名,而今年 GSoC 又没什么我会的项目),所以便决定今年一定要全力准备。 申请阶段,我初步锚定了以下六个项目: 基于rust语言重写hostname命令 by openEuler 社区 Halo 建站工具编辑器表情包插件 by Halo 支持 Dubbo 控制台的全面升级计划,完成资源查询、监控、流量管控等部分的 UI 设计与前端实现 by Apache Dubbo OI Wiki 用户反馈系统 by OI Wiki Spring Cloud Admin 服务治理控制面建设 - UI设计与前端开发 by Spring Cloud Alibaba Cwgo 基于 IDL 生成 swagger 文档 by CloudWeGo 其中,我向前四个项目的项目导师发送了邮件,表达了我的参与意向,并先后收到了来自 Halo 社区、openEuler 社区、OI Wiki 社区的相关项目导师的回复,经过深思熟虑,最终选择了OI Wiki 用户反馈系统项目作为我的申请目标,并为此编写了项目申请书。 六月末,我的项目申请书获得了通过,我正式开始该项目的开发。 OI Wiki 用户反馈系统提供了一套完整的前后端系统,可以为网站提供段落级别的划词评论功能。 项目开发伊始,导师和我对项目开发的一些大致 timeline 和同步节奏进行了一些讨论,很幸运的是除了一些细枝末节的问题以外,这个项目的整体开发都遵照了这个 timeline 进行: 当然变数肯定是有的,比如刚开始我们计划用 Vue 进行开发,但因为 Vue 的库大小太大,最终变成了使用原生 HTML/JS 来进行开发,不依赖任何其他的额外框架。 个人觉得整个项目比较难的点是 Markdown 编译器和源文档变更检测这两部分(如果你想详细了解的话,我的结项报告里对这个有简单介绍,可以移步下方查看),而... - Published: 2024-10-27 - Modified: 2025-01-27 - URL: https://blog.hikarilan.life/thinking/annual-summary/1539/%e6%88%91%e8%bf%99%e4%b8%80%e7%94%9f%e5%a6%82%e5%b1%a5%e8%96%84%e5%86%b0%ef%bc%8c%e4%bd%a0%e8%af%b4%ef%bc%8c%e6%88%91%e8%83%bd%e8%b5%b0%e5%88%b0%e5%af%b9%e5%b2%b8%e5%90%97%ef%bc%9f%ef%bc%8821/ - 分类目录: 年度总结, 心得 - 标签: 生活 我这一生如履薄冰,你说,我能走到对岸吗?(21 岁生日总结) 世界上最难的事情是,长大以后的你还在坚持着实现小时候的梦想;而更难的事情则是,你真的实现了小时候的梦想。 10 年前的那个孩子怎么也不会想到,10 年后的他自己竟然真的成为了他梦想中的那个样子... ... 启航 不知道为什么,从小就对计算机这么一个冰冷的东西情有独钟:我热衷于探索 Windows XP 控制面板中的每一个选项,与 Windows 搜索的吉祥物 Rover 做朋友,研究光驱和 3. 5 软盘驱动器(是的,3. 5 软盘!)的使用方式 —— 即使在那个计算机还没有普遍连上网的时代,我依然愿意探索计算机中的每一个角落。 当然,这可能和我喜欢玩计算机游戏有关,在那个网络并不发达,移动通信技术仍停留在 2G 的年代,我很有幸玩到了一些“最新最热”的 3A 大作:从帝国时代到命令与征服,从幽灵行动到 CS 1. 6,从植物大战僵尸到大鱼吃小鱼... ... 他们来自于我父亲的 U 盘,我至今也不知道,一个并不怎么玩游戏的男人,是从哪里整出来的这些“宝藏”(我唯一见过他玩过的游戏,是一款运行于远古三星手机中的类似于“雷电”的闯关游戏),这些游戏构成了我的童年,也间接构筑了我对计算机的启蒙。 其实我当时玩的是《将军》的 DLC 《绝命时刻》 小学六年级的时候,认识一位同学,是一位 C 语言大佬(至少在当时的我看来,是这样的),即使小学毕业后就不再联系,但我至今还记得他的名字,作为一个没有任何计算机程序语言基础的小学生,我自然试图向他请教如何学习这样一门伟大的语言,于是,借得一本《啊哈C语言》,囫囵吞枣一通,虽从未上手(因为家里人很少让我玩电脑),但好似懂了(?),这也便成为了我的计算机程序语言启蒙。其实说看懂了那完全是搞笑,一个小学六年级学生怎么可能通过不到一个月且毫无实践的理论学习就上手 C 语言,实际上根本没懂。 后来不知道咋回事,染上了 CMD,这个是真有实践,@echo off 起手,ping 127. 0. 0. 1 -t 10 一把梭,很显然脚本语言本身的简单性给这个试图深入计算机内部的外行小子了一点小小的安慰:你看,我会用 shutdown -s -t 1 关闭电脑,厉害吧! 入门 但是毛头小子对脚本语言的了解也就止步于此了,他甚至看不懂任何流程控制的语句,连最基本的选择都不会做,可谓是浅... - Published: 2024-10-25 - Modified: 2024-10-25 - URL: https://blog.hikarilan.life/daily/1565/%e8%ae%b0%e5%8f%82%e5%8a%a0%e5%ad%a6%e6%a0%a1%e7%bb%84%e7%bb%87%e7%9a%84%e7%9a%84%e8%b7%a8%e4%b8%93%e4%b8%9a%e6%a8%a1%e6%8b%9f%e4%bb%bf%e7%9c%9f%e5%ae%9e%e8%ae%ad/ - 分类目录: 日常 - 标签: 大学生活 记参加学校组织的的跨专业模拟仿真实训 这一周真的过得比上班还累,但是也真的特别有意义。 10月21日到10月25日,我参加了学校组织的“经管类跨专业模拟仿真实训”,作为大四课程要求的一部分,刚开始我是特别不想参加的:早8晚5,比工作还累,谁会想参加啊... 然而后来的发展,真的出乎了我的意料。 首先第一个出乎我意料的是,实训在学校实验楼顶楼的一间专门教室进行,这间教室由多个开放式工位和业务柜台组成: 这些柜台几乎是一比一模仿银行柜台设计的,而设施也完全一致,你甚至可以看到电脑旁边的叫号器: 经过老师的讲解,我了解到,这场实训需要来自不同经管类专业(我们这一批由金融、经济、会计、市场营销的同学组成)的学生进行不同的分工,在五天内模拟5年2个季度的企业生产,并进行竞争和合作。 我被分配到某个制造商企业小组,负责从上游供应商企业购买原材料,生产商品,然后经过物流企业的运输,出售给下游贸易企业,该小组由五个人组成,经过讨论,定名为“西安未来电子科技有限责任公司”。 实训刚开始是企业设立登记期,我们需要填写工商注册表格,并向市场监管部门申报,以创立我们的企业,接下来,还需要向银行提交开户申请,办理企业账户。经过一番折腾,我们成功的拿到了属于我们公司的“营业执照”和“开户许可证”: 甚至有公章: 自然,这些“市场监管局”和“银行”也是由参与这场实训的学生负责运营的。除了这些职能部门以外,还有“税务局”的存在,在每一“年度”(现实时间的一个小时位一个季度)对每一个企业提交的企业所得税和增值税税单进行审核,并指导企业向银行缴纳税款: 接下来就是企业的正式运营,我们有一个专门的系统来对企业进行管理,你可以在其中进行厂房、生产线和仓库的采买,研发科技以生产其他类型的产品或优化原材料用量,进行广告宣传以开拓其他地区市场,雇佣工人和对工业设施进行升级... 基本就是一个由两百个人参加的大型游戏。 这五天里,我真的完全投入到了这场模拟经营游戏中,有一天甚至和某家供应商一起在实训教室里“加班”了一个半小时,直到老师都走了,我们还没有走: 最终,虽然有一些操作变形和决策失误的地方,但是整体来讲,我们这个“企业”,还是成功从一种制造商中脱颖而出,建立了最大规模的商品生产线,出货量几乎排名第一,在全部制造商企业中的所有者权益排名第二(其实如果没有操作变形应该可以拿第一的,和第二名的差距只有几十万元)... - Published: 2024-09-27 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1515/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%b7%b1%e4%bf%a1%e6%9c%8d%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 深信服 面试经历 – 深信服测试开发工程师校招 于 2024/9/27 19:00 进行的为时 35 分钟的面试。之前线下面 Java 岗结果被要求转岗到测开了,这个就是测开岗的面试,好像是直通终面了,在线上进行。面试官好像不知道我是转岗过去的,因此也不太清楚后续流程。有意思的是当我自我介绍时说我有个人博客和 GitHub 时,面试官让我屏幕共享看了一下我的这些页面。 天杀的 Bandicam,没录上面试官的声音,只能回忆一下,大家凑活看吧。 以下是面经: 自我介绍 开一下屏幕共享给我看一下你的博客和 GitHub(顺带看了一下 feedback-sys 项目的 Insights 以及我的 commit 记录) 为什么投测开?(转岗过来的)那你能接受测开吗? 蔚来和百度为什么没转正? 如果能来深信服,你个人的规划是什么?如果我们给你发 offer,真的会来吗? 你做这些开源项目的初衷是什么?实习的时候有时间做这些吗?之前实习忙吗,都是啥时候下班? (详细了解了百度的实习内容) 在校成绩如何?平常都喜欢干什么? (详细了解了 OI-Wiki 划词评论系统的内容) 反问 更新:2024/10/21 流程已结束 - Published: 2024-09-24 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1512/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b2/ - 分类目录: 面经 - 标签: 腾讯云智 面试经历 - 腾讯云智后台开发校招(2) 于 2024/9/24 11:00 进行的为时 53 分钟的面试。其实本来约的是前一天晚上 8 点结果因为面试官和 HR 对接问题没面成,改成今天早上了。整体面试体验也是挺不错的,应该能过。 以下是面经: (面试官介绍面试情况和项目组概况) 自我介绍 (介绍 OI-Wiki 划词评论系统) 看到你蔚来和百度都是在北京,你对你择业地点是怎么考虑的?为什么最近的经历都是做测试开发? 你觉得在实习或项目中对自己技术挑战最大的是哪个?(提到 rCore 操作系统)这个操作系统项目中你印象比较深刻的有哪些部分?(提到死锁检测)能简单讲讲吗?(后面又聊了聊页表机制的实现,这里我其实讲错了,SV39 三级页表其实是 9+9+9+12,我说成 13+13+13 了(其实说的时候已经意识到不对了,因为页偏移量不可能是 13) (对于 OI-Wiki 划词评论系统)看到你说用到 FaaS 或者 Serverless,能讲讲你们是怎么应用这套系统吗?(后续聊了下有关偏移量转换和修正功能的大致原理)你们是怎么把评论系统嵌入到网页中的?这种模式会对爬虫有效果吗(爬虫能爬取到吗)?(提到有的爬虫确实会渲染 CSR 页面并读取)那假设在这种情况下需要对评论做版权保护的需求,可以做什么样的对抗手段?(提到字体替换)其实你们这个需求对 Serverless 并不是刚需,你觉得什么需求下可以发挥这种技术独有的能力?(提到边缘计算导致访问中心服务器速度变慢)你们是如何优化这个问题的? 你对大学四年和职业生涯第一步的评估和想法是什么?为什么大学没有考上一个比较好的学校? 你是 Minecraft 的爱好者吗?. kim 这个域名后缀代表什么意思? 反问 更新:2024/10/18 11:11 收到意向书 - Published: 2024-09-19 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1505/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e5%90%8e%e5%8f%b0%e5%bc%80%e5%8f%91%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 腾讯云智 面试经历 - 腾讯云智后台开发校招 于 2024/9/19 11:00 进行的为时 60 分钟的面试。为腾讯云智西安的网络产品中心 EIP 产品组岗位。整体面试下来感觉还是比较好的,面试官对我的个人经历比较感兴趣让我 balabala 说了十分钟,最后反问评价也说挺不错的,感觉稳如老狗,肯定能过。 以下是面经: 自我介绍 你是什么专业的?你是对计算机感兴趣是吗? 简述进程和线程的区别以及各自的使用场景?(后续想让我结合 Python GIL 来说,不会) 讲讲进程间通信有哪些方式?(我想少了,我只说了管道和标准输出输出,后来查了查这里其实还可以说 mmap,sendfile 这类系统调用、信号这种操作系统机制甚至 Socket) 简述 MySQL 索引(InnoDB B+ 树)的数据结构?为什么不使用哈希表? 有主键和 a, b, c 三个字段,有普通索引 idx_a,简述 SELECT * from ? WHERE a = ? 的查询过程?(讲了索引下推和回表)如果索引换成联合索引 idx_a_b_c 会怎样? 讲讲最左匹配原则?(提到顺序性)为什么要强调这样的顺序(为什么一定要这样的顺序才能令联合索引工作)? 简述 ACID 和事务的隔离级别? 简述 TCP 和 UDP 的区别? 可以说一下 TCP 四层模型吗?每层模型各自都有哪些协议? HTTP 有哪些状态码? Redis 有哪些持久化方案? 简要介绍一下哈希表这个数据结构? 在你的经历中,有哪些问题是你印象比较深刻的,你是如何解决它的? 在你的经历中,有哪些你做的优化方案是令你印象比较深刻的? 能简单聊聊你学习计算机的个人经历吗? 代码题:给定 int 数组中包含重复的元素,在其中任选两个不相同的数值,计算出两个数值在数组中的最小距离,要求时间复杂度 O(n) 反问 (反问中间面试官还额外问了问我为什么大学选了这个专业,以及家是不是在西安等问题) - Published: 2024-09-19 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1507/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e6%b7%b1%e4%bf%a1%e6%9c%8d-java-%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 深信服 面试经历 - 深信服 Java 开发工程师校招 于 2024/9/19 14:55、16:40、18:20 进行的为时 34 分钟、39 分钟、21 分钟的面试。深信服也是车轮面的模式,当天完成全部流程,不同的是,深信服是线下面试,因此一整个下午我都泡在了他们的校招站点(一家酒店)里。深信服今年校招是 2 技术 + 1 HR 的模式,技术面试基本没问语言相关的东西(HR 面说因为他们不太在乎这个,进去了也可能转语言)。有幸完成了全部流程,技术面聊的很好,反而是 HR 面的时候 HR 对我“摇摆不定的就业方向”颇有微词。说是 25 号前出结果,看看有没有机会博个保底 offer 了。 以下是一面面经: 自我介绍 你是计算机专业的吗?学金融不好吗,为什么要学计算机?为什么不选计算机专业呢? 你从什么时候开始接触编程了? 你的实习时间一般是怎么安排的?你觉得哪一个实习经历对你印象比较深刻? 你(蔚来)实习的时候做的什么能介绍一下吗?(提到测试工具链的开发)能讲讲测试工具链开发这部分吗?你觉得在这次实习中遇到的主要问题是什么? 你除了在实习中学到东西,平时私下还学了什么? 对计算机基础掌握如何?(提到操作系统)讲讲你学操作系统的经验和总结? 你对 Linux 熟悉吗?部署应用时有遇到什么性能问题吗?(提到调查 SQL 查询速度问题)你是如何调查这个问题的? 代码题:(面试官在白纸上写道)第一行: 第二行:。第一行是输入第二行是输出,你看一下我希望你写的是什么算法?(这里是最长连续子序列,直接在纸上给他写代码,最后 A 了) 反问 以下是二面面经: 自我介绍 为什么要学这么多不同的语言?(提到比较感兴趣)你个人的兴趣点在哪里?最喜欢哪种语言?每种语言代码量大概有多少? 简要介绍几个重点的实习经历和项目经历? (对于 OI-Wiki 划词评论系统)直接用浏览器不能做吗? (对于 NeraBBS 轻论坛的 Passkey 登录功能)你这个和浏览器的记住密码功能类似吗?你指的无密码登录指的是?你觉得这个难点在哪里?后端需要做什么工作?这个代码量有多少? (这里还是打算讲一下 OI-Wiki 划词评论系统,为了方便讲直接让面试官用电脑上去体验了一下,这里提到目前只能做到段落级别的匹配,但后续可以解决)你们解决的思路是什么?(这里面试官发现鼠标悬浮到评论组上可以让原段落高亮)这个功能你... - Published: 2024-09-09 - Modified: 2024-09-09 - URL: https://blog.hikarilan.life/tech/1494/%e8%ae%ba%e7%b1%bb%e5%9e%8b%e8%bd%ac%e6%8d%a2%e5%af%bc%e8%87%b4-jvm-%e7%b1%bb%e5%8a%a0%e8%bd%bd%e6%8f%90%e5%89%8d%e6%8a%a5%e9%94%99%e7%9a%84%e9%97%ae%e9%a2%98/ - 分类目录: 技术 - 标签: Java, JVM 论类型转换导致 JVM 类加载提前报错的问题 今天下午,一朋友在某群 at 我,神秘兮兮的说道要考我一个问题。题目是这样的: 在 Java 中有 Father 和 Son 类,其中 Son 继承了 Father 类,两类均有 method 方法,现在 Main 类的 main 方法有如下调用: Father f = new Son; f. method; 问题是,编译此代码,完成后删除 Son. class,请问代码会报错吗? 我嗤之以鼻,这还用问吗?我甚至可以告诉你这个代码会报的错一定是 NoClassDefFoundError,这也太简单了你拿这个来考我 balabala... 然而朋友鬼魅一笑(?),你别急啊,题还没出完呢: 在上述代码的基础上,加入一个 flag justFalse,并环绕到上述代码中: // in Main. java static boolean justFalse = false; // in Main#main method if (justFalse) { Father f = new Son; f. method; } 同样编译后删除 Son. class,请问代码还还会报错吗? 我大笑(?)道,这还用问?justFalse 永远是 false,也就是说内部代码永远不可能执行到,那么 Son 类也就永远不可能进入初始化阶段,所以这个代码肯定就不会报错了,这也太简单了你拿这个来考我 balabala... 然后朋友发来的一张图让我沉默了: 竟然真的会报错,难道 JVM 虚拟机会提前解析并未执行的代码行中包含的类引用吗?不对啊,这和我以前的实践完全不一样,怎么会这样... ... 就在我陷入自我怀疑的时候,下一题来了: 在上述代码的基础上,如果把 Father f = new Son; 修改为 Son f = new Son;,在同样的操作下,请问代码还还会报错吗? 我小心翼翼地问道:不会这样它就不会报错了吧... 朋友淡淡说道:正是。 我的脑海中此时一万匹草泥马奔驰而过,各种名词在我的大脑中穿过:类加载、静态分派、运行时多态、分支预测... 但没有一个能解释这个诡异的现象。 我的天塌了。 深入了解 JVM 类加载机制 当说到 JVM 的类加载机制,很多人可能会脱口而出:加载、验证、准备、解析、初始化。如果你接着问他,他可能还会告诉你... - Published: 2024-09-05 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1491/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/ - 分类目录: 面经 - 标签: 快手 面试经历 – 快手测试开发工程师校招 (2) 于 2024/9/5 10:00 进行的为时 40 分钟的面试,这面试官不知道为什么还问我本科金融学了哪些课程,还让我讲一下草,上来就出一道手撕,括号生成,好久没做了现场没给他 A 出来,下来看了一下其实当时离答案已经很近了。感觉应该是要挂的。 以下是面经: 自我介绍 代码题:Leetcode 22. 括号生成(没 A 出来,其实回溯整个框架已经出来了,但是好久没做忘了) (对于百度实习)能说一下你的主要职责吗?能讲讲 AI 代码助手的测试内容和测试方法吗?你如何判断 AI 生成代码的准确性? (对于蔚来实习)介绍一下负责的内容?可以说一下营销系统你具体负责的测试内容吗?你觉得测试的重点和主要风险是什么?你们之前接口自动化率基数是多少?你觉得如果让你继续做的话接口覆盖率应该提高到什么地步? 目前在学校的学业是全部完成了吗?你未来的发展规划是什么?对工作地有什么想法或要求吗? 看你参与的项目蛮多,都是你主动参与的吗?推动你做这些事情的动力是什么?(提到感兴趣)那为什么大学选择了金融学这个专业?能简单说说金融学的相关课程吗?有尝试把金融学和计算机的相关内容结合起来吗?(提到想做大模型量化,但是一直没做)那为什么没做呢?(不会)如果未来确实有一个要求让你从事研究这个方向,你应该如何去学习? 反问 更新:2024/9/13 收到感谢信 - Published: 2024-09-04 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1488/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/ - 分类目录: 面经 - 标签: 蔚来 面试经历 - 蔚来测试工程师校招 (2) 于 2024/9/4 16:30 进行的为时 15 分钟的面试,面试官中途问我为啥一面的时候没做代码题,我说一面面试官看我笔试和过往面评不错就没问了,结果这位面试官最后也不问了?问的基本都是在蔚来的一些实际问题,感觉答得有点磕绊,不好说能不能过,因为面试时间太短了最后也没好意思问面评... 等结果吧。 以下是面经: 自我介绍 看你之前在蔚来实习,那你在那边学到了哪些东西?讲一下你在蔚来的工作内容?之前有发现过 BUG 吗?看到你简历上说通过自动化脚本发现了多个潜在 BUG,能举例说明下吗? 看到你有两段经历是开发,是什么样的机遇或原因让你想来当测试工程师? 是什么原因让你离开蔚来去了百度?他们最近不招校招实习生了吗?你最近投了几家,有比较想去的吗? 一面没有考你代码能力吗? 有做过性能压测吗?说说你做性能压测的感想? (因为你之前也面试过,所以这次就尽快结束吧)因为你刚刚说其实什么岗位都可以做,那么说说你之后对你职业发展方向的规划? 反问 更新:2024/9/9 11:30 收到感谢信 - Published: 2024-09-03 - Modified: 2024-12-21 - URL: https://blog.hikarilan.life/interview/1486/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b-2/ - 分类目录: 面经 - 标签: 灵犀互娱 面试经历 – 灵犀互娱游戏测试开发工程师校招 (2) 于 2024/9/3 15:00 进行的为时 40 分钟的面试。昨天(2号)晚上吃着饭呢突然发了个面试邀约,赶紧就约了面。感觉灵犀的测开岗都不太强调技术?问的技术问题都很简单。我感觉总体答得不错,这轮就是技术终面了,接下来等结果了。 以下是面经: 自我介绍 看你实习经历是最初做的开发后来做的测开,是中间有什么转变还是一开始就计划做测开? (对于蔚来实习)看到你简历中写到帮助研发发现多个 bug,有没有比较经典的 bug 可以分享一下?你在这两段测开经历中有没有有成就感的产出?小程序测试是你一个人做的吗?(不是)能讲讲全链路测试吗?(提到进行接口压测)你们是按照什么规模进行压测的,有遇到什么问题吗?(提到缓存雪崩)这个问题是怎么解决的?(说错了这里,说成缓存穿透了)你觉得这两段测开实习中哪一段给你带来的收获更大?为什么两家公司实习时间都比较短? (对于百度实习)是用 Python 吗?Python 是以前就学过还是去了百度才开始学?你了解过百度在测试方面有使用 AI 吗? 你不是计算机专业的,那你是什么时候对计算机有兴趣的?没有想读研读计算机相关专业吗?为什么本科没有读计算机专业? 你是怎么了解到我们公司的?(公众号) 链表和数组有什么区别和优缺点?那有没有一种数据结构兼具两者的优点? 有 4000 个数据,我想找到其中最小的 5 个,在冒泡排序、快速排序、堆排序中,哪一个效率最高?(回答快速排序)快速排序的时间复杂度呢?堆排序呢? 要在字符串中找到第一个不重复的字符,代码应该怎么写,讲讲思路就行。 游戏中十连抽出金概率为 64%,假设概率均匀,没有概率补偿机制,问五连抽出金的概率是多少?(应该还是 64%,这里我当时想多了,吭哧吭哧算了好久)(这里给出微信公众号朋友的评论:64% 是十连抽大于等于一金的概率,那十连抽无金是 36%。如果单抽无金的概率是 x,那 x^10 = 36%,所以五连抽无金是 x^5,x^5 = 根号下 x^10 = 60%,所以出金应该是 40%) 除了我的世界还玩过其他沙盒游戏吗?玩过英灵神殿(Valheim)吗?(没玩过)你知道有哪些手游公司做沙盒游戏比较成功的例子吗?这个游戏吸引你的点是什么?你对你建造的建筑的效果满意吗?(我说我只会火柴盒)那你能感受到乐趣吗? 游戏引擎例如 Ga... - Published: 2024-08-30 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1481/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%81%b5%e7%8a%80%e4%ba%92%e5%a8%b1%e6%b8%b8%e6%88%8f%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 灵犀互娱 面试经历 – 灵犀互娱游戏测试开发工程师校招 于 2024/8/30 10:00 进行的为时 45 分钟的面试。整个面试氛围还是比较轻松的,也没问什么技术问题,主要是考察对游戏的理解。后续面评阶段面试官表示主要的问题是我对游戏测开了解不是很多,可能会和我互联网测开的差别比较大,建议我下来再了解下。 以下是面经: 自我介绍 看你是本科,但是项目经历和实习经历可以说是非常丰富了,是很早就出去找实习了吗?我看你的专业是(金融)?所以你是大学本来想学计算机但是因为各种原因没有得偿所愿是吗?有考虑转专业吗?所以你是自学然后再尝试找各种机会是吗? 能讲讲你喜欢计算机的原因吗?家里人支持你从事相关行业吗? 能讲讲你的计算机社团吗?目前有多少人?是由你开始组建的吗?(是,但是目前很多事情很难推动)能具体讲讲吗?你的技术探讨会主要是你在讲,(想法)碰撞的机会比较少吗? 现在用 Java 比较多嘛?有写过多线程应用吗?你觉得在编写多线程应用时有哪些最佳实践?(提到轻量锁) 轻量锁为什么可以降低性能消耗?减少锁开销除了用轻量级锁还有什么其他方法吗?(这里可以说读写锁但我没说,只说了尽量无锁和使用轻量级锁) 设计模式了解吗,都用过哪些?(提到单例模式)能简单讲讲什么是单例模式吗?一般用在什么场景,能举个例子吗? 你之前开发在 Linux 下比较多还是 Windows 下比较多?(都用)Linux 的基本操作应该比较了解吧,有做过文本编辑吗?(用 vim)用 vim 复制一行应该怎么做?(不会,我只会 i 然后 :wq)如果想看某个端口的占用情况应该怎么做? (我回答的是 netstat | grep,复盘才意识到他是想问 lsof -i)如果想看某个进程的 CPU 和内存占用情况呢?netstat 可以查看所有进程的占用情况吗?(不知道,随便答了个要看权限) 一直都在玩游戏吗?你最近在玩哪些游戏?(提到 MC 和各种 FPS 游戏)主要都是端游吗?(手游主要玩音游)如果想加入游戏行业的话,你对未来想参与的项目类型有什么诉求吗?(我说都可以)但是实际上没有看你有尝试其他类型的游戏? 你觉得在 FPS 游戏中一款枪的平衡性要考虑哪些点?(说了一些,面试官让我再发散想想又给了些提示,然后又想了一些) 有一栋 100 层的高楼,有两个玻璃球,可以从某一层开始向下抛,玻璃球可能会碎,如何用最少的抛球... - Published: 2024-08-30 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1483/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 蔚来 面试经历 - 蔚来测试工程师校招 于 2024/8/30 15:00 进行的为时 30 分钟的面试,面试官说自己是第一次面校招,不知道为什么刚开始没开摄像头中间才开。没有问技术问题,都是一些测试和工作关系的问题,后来面试官说是看我过往面试经历(之前实习)技术比较好,就不额外问了。面评阶段面试官觉得我有一个问题是回答问题的时候条理不太好,但是还是挺健谈的(其实条理不好是因为我不知道在瞎说)。 以下是面经: 自我介绍 之前在蔚来实习过,是什么原因去了百度?你觉得百度和蔚来在工作环境上你更喜欢哪个,有什么区别吗?你蔚来的 Leader 是谁?(我忘了,草)你是 DD 部门的吗?(不是) 你是倾向于做测试开发吗,那为什么投了测试岗? 能讲讲你在百度做的业务的系统架构和业务流程吗?你在蔚来这边呢?你们的压测是怎么做的?你觉得对于使用 Jmeter 压测的需求,应该分哪几步进行的?(这里说的其实不太好) 在工作当中你觉得遇到的最大挑战是什么?(我说是测试过程中与研发和产品遇到分歧,沟通挑战比较大)你觉得怎么做可以让这些事情更好沟通? 如何评价你的执行能力?如果领导认为某件事情你可以完成但是实际上比较复杂,你会怎么沟通? 你是明年七月份毕业吗?你的意向城市是上海吗?(倾向于上海或北京) (看了一下笔试成绩和面试记录后)反问 - Published: 2024-08-26 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1479/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e8%af%95%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 - 标签: 快手 面试经历 - 快手测试开发工程师校招 于 2024/8/26 16:00 进行的为时 60 分钟的面试,为快手商业化部门的测试开发岗位。面试官基本是把我简历上写到的东西都问了一遭,但每个都问的不深,能答上来个八九成。我没想到的是反问阶段完了以后还有一个“反反问”阶段,面试官问了我一些对岗位的要求问题。 以下是面经: (面试官介绍本次面试流程) 自我介绍 结合你主要的技术栈介绍一下你的项目经历以及遇到的难点 (对于 NeraBBS 轻论坛)你的单元测试是怎么做的?你们的测试主要用的是什么框架?看到你写道排查项目性能瓶颈,能举个具体的例子吗?你的压测是怎么做的?这个论坛你主要是做的后端吗?(不是)那你的前端是用什么写的? (对于 OI-Wiki 划词评论系统)这个项目的整体技术栈是什么?你写到通过 CI/CD 系统自动修正代码风格,这个可以具体讲一下吗?(后续还讲了使用 CI/CD 刷数据的功能) (对于 rCore 操作系统)这个操作系统是使用 rust 这个语言开发的吗?看到你写到这个系统支持系统级的并发锁以及死锁检测,可以介绍一下吗? 可以介绍一下你在蔚来这部分测试的实习经历吗,比如整个测试的流程是什么样?有参与上线流程吗?可以说一下你这边的全链路测试主要是做了什么吗?你们接口压测的指标大概会关注什么?(QPS,并发数)你们是在哪个环境做的这个压测?并发数指标大概是多少?说说自动化测试框架?你的自动化测试主要是覆盖哪部分? 讲讲在百度的测试工作?你在百度也负责编写了一部分自动化测试用例吗? 讲一下 Java 的垃圾处理机制? 能简单介绍一下 MySQL 的事务吗? 讲一下 Redis 常用的缓存方案?(这个没 get 到他问的八股,所以没说出来,只说了一下延迟双删) 看到你用过 kafka,你用 kafka 主要是用来做什么?了解消息的保序吗,应该如何做?(不太懂,我只说了 kafka 自身保证消息顺序,业务也可以做一下判断) 看你 Linux 系统也用过,grep 和 sed 都用过吗(只用过 grep),用 grep 指令读取某一个日志文件中从某一时间到另一时间的所有包含 keyword 的日志应该怎么做(这里我用了正则表达式模式来做) 简单讲一下 TCP 的三次握手? 看你经常用 git,能说一下 git rebase 主要是用来干什么的吗? SQL 题:给... - Published: 2024-08-15 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1463/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%be%ae%e6%b4%be%e7%bd%91%e7%bb%9c%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%a0%94%e5%8f%91%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 面试经历 - 微派网络服务器研发工程师校招 于 2024/8/14 19:30 进行的为时 65 分钟的面试,是微派网络“会玩”App 海外版的服务器研发岗位。第一次面这么长时间,面试官基本把我摸清了属于是。面试官人很好,聊的也很开心。算法方面答得实在不太好,其他方面感觉大差不差,也有疏漏但是感觉问题不大。很有意思的是这次面试面试官似乎对我的经历还蛮感兴趣的,听他的意思是其实面试时间已经严重超时了,然而即便如此在反问环节结束以后面试官又突然接着问了我几个问题。 以下是面经: 自我介绍 对公司有一定了解吗,知道这个岗位研发的 App 叫啥吗?看到你涉猎的方向比较广,你个人比较倾向哪个方向?(更倾向研发)对于研发这个方向你更倾向于前端还是后端? 算法题:Leetcode 7. 整数反转(脑子有点没转过来,刚开始绕远了还弄了个栈来做),如果需要检测整数反转后可能产生的数值溢出,应该怎么做?(这个没做出来) 算法题:给定一个字符串数组,其中每个字符串由小写字母组成,不重复且有序。如果一个字符串可以通过增加、删除或改变一个字符得到另一个字符串,那么它们会被划分到同一类,问一共有多少类字符串?每个字符串长度不超过 26,字符串数量不超过 100,000(无向图求连通块/并查集,这道题没做出来) (对于 OI-Wiki 划词评论系统)你是如何接触到这个项目并且选择了这个项目的?这个项目是你完全独立完成的吗?你觉得整个项目中哪里是最具有挑战性的?(源文档到目标文档段落的定位)你是怎么做的?你了解编译器是怎么从 Markdown 解析成语法树的吗? 你是学什么专业的?你是怎么接触到这些有关编译原理的内容的? 你觉得你的实习经历或项目经历中,哪一个给你带来的团队协作的成长是最大的?(我讲了之前字节青训营的项目)你在实习中没有类似的经历吗?有没有遇到项目时间节点冲突,或者出现加急项目的情况? 看到你拿过蓝桥杯的奖,这个比赛是考什么内容?你在比赛中遇到过什么算法?你印象比较深刻的 dp 有哪几种?(不知道)背包问题知道吗?能大概讲讲这个问题吗?你觉得背包问题在现实中的应用场景是什么?(我举了一个不恰当的例子) 有了解过数据库吗?数据库底层查询的原理了解过吗?能讲讲数据库从接收到 SQL 语句到返回查询结果经过了哪些流程吗?刚才你提到了查询计划,能展开说说吗?(讲了查询计划的优化)查询计划的... - Published: 2024-08-09 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1460/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%be%8e%e5%9b%a2%e6%a0%a1%e6%8b%9b-ai-%e9%9d%a2%e8%af%95/ - 分类目录: 面经 - 标签: 美团 面试经历 – 美团校招 AI 面试 于 2024/8/9 21:35 进行的为时 15 分钟的(AI)面试。不得不说美团玩的真花,校招除了笔试以外,还搞了个 AI 面试的环节,这下除了“海笔”还得诞生一个“海面”的概念了。 AI 面试是由牛客网提供的,时间最高 30 分钟,刚开始可以选择熟悉的语言(Java,C++,Go),随后会出六道技术题和两道开放题。六道技术题每道题都有两次更换的机会。总体问的比较简单,但是我不一定答得全,也不知道美团对 AI 面试这个流程看不看重(反正他们是不看重笔试的)。还是安心等待明天早上的笔试吧。 以下是面经: 选择熟悉的编程语言(Java) 什么是 TTL?它在网络通信中起到什么作用?(感觉答不好,换了)什么是中间人攻击?如何防范? 解释 Linux 中用户和用户组概念。如何创建新用户和用户组?(解释很容易但是用户组指令不记得了,换了)如何查看和修改系统时间?(这个不会,换了)什么是 shell 脚本?如何创建和运行一个简单的 shell 脚本? Redis 是单线程还是多线程?为什么能够高效处理并发请求? 介绍一下 Spring Boot 常用的注解及作用 什么是 Java 里的 NIO(New I/O) Agent:如何设计一个基本的用户隐私设置功能,允许用户控制个人信息的可见性?User:... Agent:我了解了,感谢你的分享,你提到了通过在数据表中添加字段和使用 RBAC 权限控制来设计用户隐私设置功能。(我其实不该说 RBAC 的,感觉没啥关系)Agent:那么你会如何处理用户隐私设置的默认值问题?特别是在用户没有主动设置隐私选项的情况下,系统应该如何决定哪些信息是公开的,哪些是私密的? Agent:在你的编程学习过程中,你是如何处理挫折感和保持学习动力的?请举一个具体的例子。User:... Agent:嗯,了解了,感谢你的分享,你通过保持对编程的兴趣和灵活调整策略来应对挫折感。Agent:我还想问一下,在这个过程中,你有没有对自己的学习方法或者心态进行过总结和反思?如果有的话,你能分享一下具体的内容吗? Agent:请描述一个你成功地将一个想法转化为实际行动的例子。你是如何规划和执行的?遇到了哪些障碍?如何克服的?User:... Agent:嗯,感谢你的回答,你通过将学校的教务系统迁移到微信小程序上,成功地解决了手... - Published: 2024-08-08 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1456/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%85%83%e6%88%8e%e5%90%af%e8%a1%8c%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b%e5%b8%88%e6%a0%a1%e6%8b%9b/ - 分类目录: 面经 面试经历 – 元戎启行软件工程师校招 于 2024/8/8 14:00 进行的为时 64 分钟的面试,只问了15 分钟问题,后面 40 分钟全是我在写算法题... 题其实不难,但我刚开始没想对思路,做了好久,最后在面试官的提醒下大致做出来了。本来面试官是准备了一堆 Java 面经的,听我说了一些了以后决定不问了,直接进入算法环节。面试官人很好,我问题答得也还行,毕竟也没问几个问题,不知道能不能过。 以下是面经: 自我介绍 蔚来接口测试主要用的是 Java 吗?你简历中写到接口性能瓶颈测试,能讲讲这部分吗?对并发量和吞吐量有要求吗? 看你会很多(计算机程序)语言,是自学的吗? 讲讲你对计算机网络的分层的了解?TCP 和 UDP 的区别?对 IO 多路复用了解吗?讲讲 select/poll/epoll 的区别? (没太答好,面试官说我只说对了一部分) 讲讲百度的实习经历?是不是写 Python 脚本多些?对大模型的测试是怎么进行的,有固定指标吗? 算法题:顺序给定多个温度数据,始终求前 X 份数据的最大、最小和平均值(单调栈)。 反问 2024/8/12 12:00 收到感谢信 - Published: 2024-07-22 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1451/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%a5%bf%e5%ae%89%e6%80%9d%e7%a7%91%e7%89%b9%e8%bd%af%e4%bb%b6%e6%9c%89%e9%99%90%e5%85%ac%e5%8f%b8%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 面试经历 - 西安思科特软件有限公司后端开发实习 于 2024/7/22 14:00 进行的为时 40 分钟的面试,因为是直推所以直接是老板面,问了一些八股以后直接就上压力问算法了。问了四道因为老板时间比较紧张只做了三道,最后一道留作 Homework,值得注意的是因为这是家外企子公司所以后续算法面试过程中题干都是由面试官直接通过英语读出来的。算法题本身都不难,但是要求 O(n) 时间复杂度和 O(1) 空间复杂度把我给难住了,前两道题基本都是被提醒了一下才意识到该怎么做... ... 面试完半小时后收到面试通过的通知,进入 HR 面,但是实习不太想去... ... 以下是面经: (了解是如何认识内推朋友以及个人情况) 你主要使用的开发语言是什么?对 AI 了解吗?(不算了解,只做过简单项目,不懂底层)对 container, kubernetes 熟悉吗,有做过项目吗?我看你对 TypeScript 也挺熟悉? 讲一下面向对象的三大特性?Java 有虚函数吗?我说的多态其实是动态多态,你能给我举个集体例子吗? 你对 Java 的并发资源保护有哪些了解?synchronized 关键字可以用在哪些地方,都是如何生效的?对于生产者-消费者模式,Java有哪些机制可以防止产生忙等,这些机制底层是如何实现的? 讲讲 SQL 和 NoSQL 的区别?你理解关系型数据库、primary key 和 foreign key 吗?如果让你设计一个多对多的关系,你应该如何设计表?(中间表)对于 NoSQL 呢?(这个真不会) 你的英语怎么样?接下来我会出几道题,用英文给你,要求 O(n) 时间复杂度和 O(1) 空间复杂度: 有 1-100 数字,无顺序的装入大小为 99 的数组,保证每一个数字都是单独的,找到没有放入数组的那个数字 有 1-100 数字,无顺序的装入大小为 99 的数组,但每一个数字可能放入数组多次,找到没有放入数组的多个数字 有任意数字,两个两个的装入大小为 99 的数组,共装入 49 对和一个单独的数字,找到那个单独的数字(LeetCode 136. 只出现一次的数字) 有任意数字放入数组,找到一个子集,使该子集所有元素递增,且长度最大(LeetCode 674. 最长连续递增序列) 反问 - Published: 2024-07-02 - Modified: 2024-07-02 - URL: https://blog.hikarilan.life/thinking/1446/%e5%a6%82%e4%bd%95%e5%9c%a8%e4%b8%8d%e7%9f%a5%e9%81%93%e5%af%86%e7%a0%81%e7%9a%84%e6%83%85%e5%86%b5%e4%b8%8b%e5%8d%b8%e8%bd%bd-kaspersky-endpoint-security-%e5%92%8c-kaspersky-security-center-network-a/ - 分类目录: 心得 - 标签: 卡巴斯基, 百度 如何在不知道密码的情况下卸载 Kaspersky Endpoint Security 和 Kaspersky Security Center Network Agent 前言 你能想象这样的事情吗:在风平浪静的一天,你在宿舍吃着火锅唱着歌(其实是在打《战地1》),突然你发现电脑有点不对劲,习惯性往系统托盘瞟了一眼:我草?我电脑怎么多个卡巴斯基? 仔细一看,好家伙,Kaspersky Endpoint Security,还是“商业版授权许可”。我立马就意识到:坏了,这是老东家给我电脑远程施法了。 想卸载?先输入管理员密码! 时间回到两个月前,彼时的我还在百度实习,我在我自己的个人电脑上安装了百度的 OA 系统“度管家”,方便访问内网,后来离职以后我就卸载掉了。殊不知这便给今天的东窗事发埋下了雷。 可以看到,我的电脑在那会儿就被安装了一个名为“Kaspersky Security Center Network Agent”的软件,而这个软件正是用来和远程服务器通讯,控制终端系统行为的。两个月后的今天,他终于破土而出,然后在我的电脑上拉了一坨大的。 那咋办呢,就卸载呗,找了个卸载工具打算卸载,结果当我点击卸载按钮的时候,一个弹窗让我瞬间没打游戏的兴致了: 好家伙,怎么还要密码的啊... ... 于是我就开始了我的漫漫折腾之旅,经过各种搜索,我也算是找到了能够尽量卸载这两个软件的办法,因此顺带在这个博客中把它们记录下来。 卸载 Kaspersky Endpoint Security 虽然关闭/卸载 Kaspersky Endpoint Security 需要输入管理员账号和密码,但是!Kaspersky Endpoint Security 对于其应用是否应该启用密码保护,仅仅是通过在注册表中的一个标志位进行判断的,因此,你只需要: 进入安全模式 打开注册表编辑器,转到 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\KasperskyLab\protected\产品代号\settings 找到 EnablePswrdProtect 键,将其值从 1 更改为 0 然后,下载 Removal tool for Kaspersky applications on Windows (kavremover),然后便可以愉快的卸载 Ka... - Published: 2024-06-07 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1437/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e4%b8%8a%e6%b5%b7%e9%9b%b7%e6%be%9c%e7%a7%91%e6%8a%80%e6%9c%89%e9%99%90%e5%85%ac%e5%8f%b8%e5%85%a8%e6%a0%88%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 面试经历 - 上海雷澜科技有限公司全栈实习 于 2024/5/29 16:00 进行的为时 15 分钟的面试,虽说是全栈岗但是实际是偏前端的。面这个公司的主要原因是想刷刷面试经验,因为我之前投的都是测试岗,研发岗根本没面,想试试水。不过面试时间太短了,问的问题也不多,也不知道是面试官对我不感兴趣还是什么其他原因。 以下是面经: 你在学校的专业背景是什么,计算机基础相关的东西你是怎么学的? 你在百度的实习是在西安还是北京?现在(学校)允许出去实习吗?你在百度和蔚来都是做测试是吗?你在你们学校的哪个校区? 说说常见的 HTTP 状态码有哪些? 你觉得 GET 和 POST 最大的区别在哪里? 讲讲你过往项目经历中登录状态的具体实现是什么? (简单询问其他实习经历)我看你所有的实习都是一两个月这样,这个大概是因为什么原因? (简单询问项目经历)前端像是 Vue 有接触过吗?Git 用的熟吗? 反问 最终于 2024/6/4 收到面试不通过的通知,并给予了面试评价: 不知道他为啥说我“计算机基础略差”,他也没问我啥计算机基础的问题,可能是因为我是非科班所以给了他这么一个感受吧。不过小厂面试都过不了确实是比较难受了。 - Published: 2024-06-01 - Modified: 2025-12-31 - URL: https://blog.hikarilan.life/tech/1431/%e8%bf%87%e5%8e%bb%e3%80%81%e7%8e%b0%e5%9c%a8%e5%92%8c%e6%9c%aa%e6%9d%a5-java-%e7%9a%84%e7%8e%b0%e4%bb%a3%e5%8c%96%e4%b9%8b%e8%b7%af/ - 分类目录: 技术 - 标签: Java 此文章目前还提供视频版本:Bilibili | YouTube 过去、现在和未来 —— Java 的现代化之路 Java,一门广受赞誉,却又饱受诟病的语言,在从其诞生至今,便无时不刻的被拿来与其他语言对比,有时候这种对比是空穴来风的诽谤,但更多的是对这门语言未来的担心,而近 10 年来涌现的一个又一个新生的程序语言更是让 Java 一次又一次地被推上风口浪尖,使公众一次又一次的质疑:Java,是否真的停滞不前了? 2024 年,从大街上随便抓一个 Java 程序员,询问其 Java 有哪些槽点,我相信你的这个下午大概是别想离开这个人的声音了 —— 从泛型不支持基本数据类型到各种各样令人抓耳挠腮的奇怪问题,你绝对可以听这个人滔滔不绝地说上一整天。那么这些问题 Java 官方知道吗?当然知道,他们在解决吗?Ummm,至少我们可以说,他们一直以来都正在积极的为解决这些问题而努力,并且有些槽点,其实早已在最新版本的 Java 中被解决。 因此,本篇文章的目的,便是带领读者从过去走向现在,再走向未来,回顾并前瞻 Java 已经推出,或是即将推出的全新特性,这些特性再 Java 的历史中都扮演着决定性的作用,为 Java“赶 Go 超 Rust”贡献着自己的努力。 碍于篇幅所限,我们将只重点提及几个 Java 语言史上的重大改动,而其他小的(但不代表不重要)更新,我们姑且一概掠过。若要了解Java 从过去到现在全部的特性更新,也许你可以看看 OpenJDK 的 Java 特性提案索引页 JEP 0: JEP Index,了解更多。 Java8:Lambda 表达式和 Stream API Java 8 无论是从 JVM 层面的变动,还是 Java 语法和标准库的变动,都可以说是 Java 有史以来第一次大规模的增补,毋庸置疑的,这次更新也为 Java 带来了第二春,使之焕发新生,而其长达近 20 年的 LTS 支持,也使其成为了 Java 历史上使用率最高,最经久不衰的 Java 版本。 在这次更新中,Java 自然是引入了全新且复杂的 Date & Time API,看起来好像有点用但实际上很鸡肋的 Optional API 这类谈不上小但是也很难说重大的标准库修补。但是更为被人津津乐道,且在本人看来是 Java 8 最重要的两个更新,便是 Lambda 表达式和 Strea... - Published: 2024-05-15 - Modified: 2024-05-15 - URL: https://blog.hikarilan.life/daily/1428/2024-%e6%98%a5%e6%8b%9b%e5%ad%a3%e5%ae%9e%e4%b9%a0%e6%8a%95%e9%80%92%e8%bf%9b%e5%b1%95%e5%8f%8a%e8%bf%91%e5%86%b5%e8%af%b4%e6%98%8e/ - 分类目录: 日常 - 标签: 实习 2024 春招季实习投递进展及近况说明 前言 鉴于全球经济下行压力严峻,中国互联网行业主要发展内容由增量业务转为存量业务,基于对未来工作形势的担忧,本人于 2 月下旬开始投递 2024 春招暑期和日常实习简历。本文旨在记录这些暑期实习意向投递进展以及进行一定的总结。(如果你感觉这段话似曾相识,说明你是本博客的老粉) 已投递意向 以下投递意向未被记录: 较早前投递的意向 重复投递的意向 Tips: 由于未能及时查看信息,部分流程更新时间是基于查看时间而不是实际发生时间,这意味着它们可能是滞后的。 西山居 (25暑实)【实习】游戏测试开发 投递简历(2024/3/5) —— 已结束(2024/3/14) 腾讯 (25暑实)软件开发-测试开发方向 投递简历(2024/3/5) —— 笔试(2024/3/31) 小米 (25暑实)测试开发工程师-实习 投递简历(2024/3/4) —— 已结束(2024/3/28) (25暑实)测试工程师-实习 投递简历(2024/3/28) —— 已结束(2024/4/16) 字节跳动 (25暑实)测试开发实习生-懂车帝 投递简历(2024/2/28) —— 已结束(2024/2/28) (日常)后端开发实习生-飞书办公套件 投递简历(2024/3/01) (25暑实)测试开发实习生-商业产品与技术 投递简历(2024/3/2) —— 一面(2024/3/20) —— 已结束(2024/3/21) (25暑实)后端开发实习生-国际电商 投递简历(2024/3/4) —— 已结束(2024/3/13) (25暑实)测试开发实习生-国际电商 投递简历(2024/3/4) —— 已结束(2024/3/19) (25暑实)测试开发实习生-国际化商业产品与技术 投递简历(2024/3/21) —— 已结束(2024/3/22) (25暑实)测试开发实习生-抖音电商 投递简历(2024/3/22) —— 已结束(2024/3/27) 美团 (25暑实)【转正实习】软件开发工程师-后端方向 投递简历(2024/2/26) —— 笔试(2024/3/9) —— 已结束(2024/3/21) (25暑实)【转正实习】测试开发工程师 投递简历(2024/2/26) —— 笔试(2024/3/9) —— 已结束(2024/4/10) (25暑实)【转正实习】软... - Published: 2024-04-26 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1418/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%be%8e%e5%9b%a2%e5%89%8d%e7%ab%af%e5%ae%a2%e6%88%b7%e7%ab%af%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 百度 面试经历 – 美团前端&客户端实习 于 2024/4/26 15:30 进行的为时 55 分钟的面试,面完秒回人才库,但其实这是我意料之中的结果,因为这是一个前端岗而我对前端了解很浅。有的读者可能会想问为什么我突然跑去投前端了,答案主要是因为这个岗美团很缺(后端和测试都不缺),缺到我周一投周三就约面了,而这是我唯一一个还能拼拼看的岗位,好歹还懂点前端,其他岗位我那是完全不懂。 以下是面经: 自我介绍 为什么从大一就开始实习了? JS 的基本数据类型都有哪些?(Symbol 和 boolean 忘说了)如何判断一个变量的基本数据类型?(typeof)对所有变量都能做判断吗,比方说对 null 执行 typeof 会如何?(不会) JS 有哪些引用数据类型?数组有哪些常用的方法?(光说了 pop push 和 slice,其他的太紧张列不出来)你刚才提到 pop 和 push 适用于栈的概念,那如果是数组模拟队列,应该用什么方法?(他应该是想问shift,没答出来) 代码题:实现一个最熟悉的排序算法?(我选了冒泡排序结果写了我20分钟边界条件没整明白,太菜) 除了冒泡排序你还知道哪些排序方法?冒泡排序的时间复杂度和空间复杂度是多少?是稳定排序吗?其他排序算法呢? 代码题:提取链接中的查询参数 你如何理解面向对象?(回答了 JS 和 Java 中面向对象实现方式的不同) 代码题:有 People 函数或类,请选择一个为它们指定原型,定义对象的私有变量、方法(讲真我还真没写过,完全不会),如何实例化,原型链如何体现继承(看我第一个不会后面俩也没继续问了) HTTP 有哪些请求类型?GET 和 POST 有哪些区别?刚刚你提到 OPTIONS 作为预检请求,什么时候会发生这种情况?什么情况下认为预检是通过的? HTTP 协议有哪些特性,适合哪些场景?(讲了 HTTP1. 0 - HTTP 3 的一些主要变化,但没说全) 有了解过 HTTP 的缓存机制吗?通过哪些字段控制缓存? (询问有关第二段实习经历的前端相关问题,包括项目结构,处理过哪些异常场景,如何轮询,轮询时间设定) 看你最近才去百度,为什么现在又在找实习? 反问 最后说两句,说实话我现在确实有点不知道该怎么办了,不想干测试,但是后端简历都过不了,前端也不会,不知道该往哪里努力了。 - Published: 2024-04-23 - Modified: 2025-02-05 - URL: https://blog.hikarilan.life/thinking/1416/%e6%88%91%e6%98%af%e4%b8%80%e5%90%8d%e5%a4%a7%e4%b8%80%e6%96%b0%e7%94%9f%ef%bc%8c%e6%88%91%e5%ba%94%e8%af%a5%e5%a6%82%e4%bd%95%e7%a1%ae%e8%ae%a4%e8%87%aa%e5%b7%b1%e7%9a%84%e5%ad%a6%e4%b9%a0%e6%96%b9/ - 分类目录: 心得 我是一名大一新生,我应该如何确认自己的学习方向? 本文暴论较多,仅代表个人意见,如有不同意见,欢迎讨论。 经常在学校或者网上带一些新生入行,听到他们问过最多的问题便是:“如何确定自己的学习方向?”其实第一次听到这个问题的时候,我的内心首先是不解,其次是愤恨:“你连你自己的路怎么走都不知道,那你当初这个专业又是怎么选的?”诚然,中国的绝大多数科班生在上大学前甚至可能从来没有接触过计算机,他们选择这个专业也不一定是因为“喜欢干这行”,作为一个非科班生,我更无权评价他们的选择,因为首先,在选择我自己的大学专业之路上,我就没能选对。 但是对于这个问题,也许作为半个“过来人”,我可以凭我的经验,给予那些还初出茅庐的学生一些小小的启发。当然,这篇文章也许也适合一些尚未找到自己目标的高年级,甚至研究生在读同学。 你醒啦?一切都已经晚了! 你可能不知道的是,如果你在上大学前没有接触过编程,那么其实你已经远远落后于其他同龄人了。也许你不知道的是,很多人早在高中甚至更早就自学过编程,有的人很早以前就参与过信息学奥林匹克竞赛(OI),有的地区高考前甚至会考 Python! —— 因此我个人从来不以一个人的年龄大小来判断这个人的技术能力强弱,比你年龄大的人可能技术能力比你差,但更可怕的是一个初中生的技术能力也许等你大学毕业了都望尘莫及(我身边真实的例子)! 你可能会说,这些比我强得多的人肯定都去大厂了,我毕业找个普通公司干活就行了,我们是两个世界的人,毫不相关,关心干嘛? 但是如果你试着投一投简历,你就会发现,即使你投小公司,也会有无数的 985 研究生跟你抢一个职位,因为行业实在是太卷了,僧多粥少。而且从另一个角度来讲,我认为任何一个计算机科班生都应该以进互联网大厂作为自己的最终目标,即使这个目标最终不一定能实现:因为你对着 80 分考试,一般也就只能得个 60 分,如果你对着 60 分考,那就直接不及格了。 考研 or 就业? 我到底应该继续深造还是直接就业?我个人觉得还是得分情况来看: 如果你是 985,两电一邮,或是类似重邮、杭电、深大这种在计算机专业上深有造诣的院校的学生,我个人建议直接就业。因为考研对你的提升也许并没有那么大,大多数人考研不是为了“搞学术”(如果你是,当我没说),而只是为了博个学历罢了,但是以这些院校的学历背书,已经满足了大多数大厂的门槛(硬卡双9或者研究生的除... - Published: 2024-04-17 - Modified: 2024-04-17 - URL: https://blog.hikarilan.life/thinking/1413/%e8%ae%b0%e6%88%91%e5%9c%a8%e8%94%9a%e6%9d%a5%e4%b8%8d%e5%88%b0%e4%b8%a4%e4%b8%aa%e6%9c%88%e7%9a%84%e5%ae%9e%e4%b9%a0/ - 分类目录: 心得 记我在蔚来不到两个月的实习 仍记得不到两个月前刚收获蔚来 Offer 时的喜悦,没想到这么快就要说再见了。 我与蔚来 蔚来确实是是算我各种意义上的第一份大厂 offer,它在那个让我绝望的时候拯救了我,扭转了我的人生轨迹(如果没有这个 offer 我大概率现在应该在备考 25 考研了)。 记得刚来蔚来的第一天,对什么都很好奇,什么都想了解;随着逐渐了解业务,也不断被大厂规范的项目管理流程所震惊;最后轻车熟路,驾轻就熟,成为了一名光荣的打工仔(bushi 其实来了大厂才会发现,大厂的工作和小厂其实是有本质的差别,大厂是高度分工,管理规范,而小厂就比较随便(当然并不是说孰好孰坏,其实是各有好坏)。 来蔚来两个月,我确实学到了不少东西,主要是测试方面的一些技术栈,这些东西在我后期的暑期面试中也实打实的帮助了我。 我会永远记住在蔚来的这两个月,虽然时间不长,但弥足珍贵。也希望以后有机会再回到蔚来工作~ (左边是我,右边是我 leader) 我与北京 说完工作,再说说生活,这确实是我第一次在异乡独自生活这么长时间,挺新奇,也蛮辛苦,但终究是值得的。 其实也没多辛苦,吃喝玩乐基本都占齐全了,记得有天下班突然心血来潮想吃点好的,于是就点了份三文鱼吃吃: 北京著名景点其实就去看了个天安门,鸟巢和水立方(后面这俩还在一块),别的地方感觉人太多,懒得去: 见的人倒是不少,土老师,海螺,yushijinhun,Eric,双霖,都见了一遍(+约饭),顺便还给海螺老师庆了个生,针不绰: 可以说北京一行也算是收获满满,不虚此行啦~ - Published: 2024-04-12 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1398/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%99%be%e5%ba%a6%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/ - 分类目录: 面经 - 标签: 百度 面试经历 – 百度测开实习(2) 于 2024/4/12 17:00 进行的为时 30 分钟的面试。面完秒 OC,但由于是日常实习要求立刻到岗,然而这学期学校查的比较严,真不一定能去,恐怕要含泪拒绝了。 以下是面经: 自我介绍 你是什么专业的? 蔚来的整个项目流程是什么样的?产品上线后的验收部分也是 PM 来做吗?上线后的质量保准有人负责吗? 你会从那些角度设计接口测试用例? 有做过自动化接口测试吗,你一般用什么工具来做?公司内部没有自动化测试的平台吗?讲讲你参与了哪些自动化测试系统的完善与开发?具体是怎么实现的?你对数据驱动是怎么理解的? 讲讲压力测试的流程?你对压力测试的结束点是怎么判断的?你有试着(通过压力测试)找到系统的瓶颈点吗? Java 当中异常的分类都有哪些? 一般在什么情况下会发生栈内存溢出的情况?(我回答递归调用,面试官补充“定义超大对象时也会导致”,我百思不得其解)你遇到这种情况一般怎么发现问题? 你一般会用什么方法实现(创建)线程?什么是线程安全,如何避免线程安全问题? Mybatis 动态 SQL 有用过吗(我回答我 Mybatis 用的不多,就没往下问了) 你会对 MySQL 查询语句做性能分析吗?数据库的幻读一般是什么情况引起的? SQL 题:有 employee(id, name, salary) 表,返回该表中薪水排名第二员工的相关信息。(我把 OFFSET 忘了,光说了 LIMIT) 用过 Linux 吧,你一般用什么命令传输文件?(我用 FTP)你一般查看日志有没有报错会怎么看? 了解 DNS 吗?网关你知道吗?网关一般的作用是什么? 看你了解 Docker 和 Kubernetes 的东西,它们之间的关系是什么? 编程题:链表的中间结点 ChatGPT 体验过吗?如果让你来测试你会如何设计测试用例?模型回答的效果需要看吗?(提到可以通过类似强化学习的方式训练另一个模型来检测)通过这种方式进行检测,结果的可信度高吗? 反问 第一次体验面完秒 OC 的感觉,本来面试官表示可能会有经理面,但是经理如果没时间那可能就不面了(我突然意识到好像连 HR 面都没有)。 - Published: 2024-04-09 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1396/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%99%be%e5%ba%a6%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 百度 面试经历 - 百度测开实习 于 2024/4/9 18:00 进行的为时 45 分钟的面试。只问了很浅的八股和很简单的算法,问的比较简单,都答上来了。面试官对我评价也不错,应该问题不大。 以下是面经: 自我介绍 (看了看我的博客和 GitHub,询问了一些有关博客相关技术栈和架构的问题,然后又问了下为什么想要写博客) 讲讲你目前最近的一次实习负责过哪些工作,具体的场景,工作中遇到了哪些问题,如何解决的? 你们的自动化测试是拿什么写的? 你们是怎么提 bug 的?你们是如何给 bug 定级的?如果在工作中你遇到一个 bug 但是研发认为它不是,你如何沟通解决?如果他认为这个 bug 是产品功能上的一些问题,不属于 bug,你应该怎么办? 讲讲 Java 的反射机制? 讲讲 TCP/IP 五层体系结构?具体说说这几层都是干什么的? 讲讲 TCP 的三次握手和四次挥手? MySQL 有哪些存储引擎?为什么默认要用 InnoDB?(我还真不知道怎么回答)什么情况下会用到事务? Redis 主要用来做哪些事情?你对缓存击穿,缓存穿透和缓存雪崩是如何理解的? 什么情况下会使用 MongoDB? Linux 用的多吗?如何查看 CPU 指标?内存呢?磁盘呢? 场景题:设计电商支付订单页面测试用例 场景题:设计自动售货机测试用例 代码题:检测循环链表 反问 - Published: 2024-04-07 - Modified: 2024-04-07 - URL: https://blog.hikarilan.life/thinking/1393/%e9%ab%98%e5%bc%80%e4%bd%8e%e8%b5%b0%ef%bc%9a%e6%88%91%e8%bf%9f%e6%9d%a5%e7%9a%84-ospp-2023-%e7%ba%aa%e4%ba%8b/ - 分类目录: 心得 - 标签: OSPP 高开低走:我迟来的 OSPP 2023 纪事 前言 前几天(4/1/2024)收到了一封邮件,内容是这样的: 佬,想请教下,你的个人博客里,好像没找到ospp相关博文,所以发个邮件,看看你是否写了嘞 以下是你在暑期实习那篇博客的原文 “首先就是,我其实上半年一直在捣腾中科院开源之夏(OSPP)的社区项目意向申报,昨天(06/26)收到了中选的消息(当然这个内定的成分大些,就不吹了),因此暑假我的大部分时间可能会在忙着搞这个项目。有关我参加 OSPP 的详细信息等下半年 OSPP 活动结束了之后我再单独开一个博文来讲。” 原文是 2023 暑假日常实习进展及近况说明,在那篇文章的末尾我大概讲了讲那会儿我在干什么,其中就包括彼时正在进行的 OSPP 2023。然而如读者所见,在该文章发布将近一年,OSPP 2023 闭幕半年后的今天,你依然无法在这个博客站点中看到任何有关这篇本应诞生的“单独开一个博文来讲”博文的任何信息。在上述邮件的回复中,我也作了回答: 因为一些很坑比的原因,去年ospp没有完成结项,所以最后文章就没写TvT 而这个坑比的原因,则是因为由于“内定”,我提前就开始了代码的编写并在 ospp 规定的公布项目中选结果时间之前为社区提交了 PR,于是导致结项审查不通过,最后只能一分钱没拿给社区打白工。 但是一年后的今天,我突然意识到,其实结果不只是一件事情的全部,过程同样也可以令人愉悦,虽然这件事情的结果不好,但这并不能代表我没来过。基于这个理由,我打算时隔半年,补回这篇文章。由于时间过去的太久,部分时间点和事情已经记得不太清楚,只能描述个大概,还请读者海涵。 OSPP 是什么 或许你已经听说过 GSoC(Google Summer of Code) 的大名,如果你没有的话,那么 GSoC 和 OSPP(开源软件供应链点亮计划,俗称中科院开源之夏)其实都是由行业巨头或非营利机构主导,开源社区参与的有偿线上实习活动。对于参与者来说,首先需要选择心仪的开源社区,然后根据自己的意向参与贡献的项目提交项目提案(proposal),获得社区和主办方通过以后即可开始为社区进行贡献,完成贡献后提交结项报告,等待主办方审查,最终获得项目参与奖金。 对于 OSPP 来说,根据项目的难度不同,奖金分为两个档次:简单项目 8000 人民币,复杂项目 12000 人民币,作为对比,... - Published: 2024-04-03 - Modified: 2024-04-03 - URL: https://blog.hikarilan.life/tech/1383/%e4%bd%a0%e7%9f%a5%e9%81%93%e5%90%97%ef%bc%8cjava%e4%b8%ad%e7%9a%84%e5%8f%97%e6%9f%a5%e5%92%8c%e9%9d%9e%e5%8f%97%e6%9f%a5%e5%bc%82%e5%b8%b8%ef%bc%8c%e5%85%b6%e5%ae%9e%e5%b9%b6%e4%b8%8d%e5%ad%98/ - 分类目录: 技术 - 标签: Java, JVM 你知道吗,Java中的受查和非受查异常,其实并不存在区别... ... 相信写过 Java 的人都会知道,在 Java 的异常系统中,存在“受查(checked)”异常和“非受查(unchecked)”两座大山,两者虽然均为异常,但是却有着微妙的区别。但是你知道吗,实际上在 JVM 的世界里,这种区别根本不存在... ... “受查”和“非受查” 为什么有时候调用某些方法的时候需要强制 try-catch 它们,亦或者在调用方法上加入 throws 关键字声明抛出,而有的方法虽然会抛出异常,但是并不会要求你这么做... ... 如果有一位 Java 新手带着这样的疑惑问你,你一定会轻车熟路的告诉他:所有继承自 java. lang. RuntimeException 的异常,他们都是非受查异常,这些异常允许你不必强制在方法体上声明他们,亦或者强制通过 try-catch 捕获;而除此之外的异常,则都是受查异常,你必须按照上述的方法声明和捕获他们。 举个例子:以下代码是无法正常编译的: import java. io. IOException; public class Main { public static void main(String args){ throw new IOException("Goodbye, World! "); } } 因为 java. io. IOException 没有继承自 java. lang. RuntimeException,因此是一个非受查异常,而我们并没有通过 try-catch 捕获异常或是在调用函数上声明抛出该异常。因此我们会得到如下编译错误: Main. java:6: error: unreported exception IOException; must be caught or declared to be thrown throw new IOException("Goodbye, World! "); ^ 改进措施也很简单,在 main 方法上声明抛出异常即可正常编译: import java. io. IOException; public class Main { public static void main(String args) throws IOException { throw new ... - Published: 2024-04-02 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1381/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/ - 分类目录: 面经 - 标签: 腾讯云智 面试经历 - 腾讯云智测开实习(2) 于 2024/4/2 19:30 进行的为时 33 分钟的面试。依然是时间比较短,面试官依然是没开摄像头(好像这次直接是电话接入了),而且比较特殊,没叫我自我介绍就开问了。问的问题以 Python 居多,但总的来说花样还是比较多的,各方面都有问。答得很一般,等结果吧。 以下是面经: 看你 Python 和 Java 都有用过,有没有用 Python 做过一些项目?(爬虫程序)可以大概讲一下吗?如何避免死循环(A链接包含B链接包含A链接)?(列表记录访问过的页面链接)有哪些数据结构(容器)可以存储这些数据?他们查询时的时间复杂度有什么区别? 网络相关的项目之前有做过吗?对于 TCP 和 UDP 了解吗?有没有做过数据包抓包? 你实习做的是研发还是测开?有没有做过性能相关测试?使用什么工具做的? (有关简历上的 NeraBBS 项目)这个项目是你的个人项目吗?你这个无密码登录的主要开发难点是什么?这个功能既然依赖浏览器API,那么你是否需要兼容多款不同的浏览器?如果你要针对你自己这个论坛程序来做自动化测试的话,应该怎么做? 对于上述这种多种不同浏览器的自动化测试,你如何去做?(Selenium)它可以模拟页面上的点击行为吗?用它来实现爬虫和你自己写代码来解析的优势是什么? 做过前端开发吗?(聊了一些有关 CSR 和 SSR 的问题)这套系统的后端是用什么语言开发的?(NodeJS)有用 NodeJS 开发过其他后台程序吗? 你刚才讲到自己用过抓包软件抓包,有没有抓过 TCP 包?讲讲 TCP 报文包含哪些内容?源 IP 和目的 IP 在 TCP 报文上吗?能在上面看到滑动窗口大小的信息吗?有看过三次握手的过程吗?能大概讲一下吗?能讲讲这三个包的序列号(SEQ)和确认码(ACK)分别是多少吗?三次握手后序列号是如何变化的?有什么包发送时不会增加序列号?传输的最大包长是多少?滑动窗口最大可以是多大? 数据库有使用过吗?用过哪一种数据库?他们之间有什么区别?MySQL 有哪些存储引擎?他们之间有哪些区别?如果有一个数据表查询性能很差,你觉得有哪些方面可以优化?索引的使用有哪些注意事项?如果有一个复杂的查询语句,如何分析这个语句内部会用到哪些索引?这个具体用到了 MySQL 的什么特性?(没懂他是针对什么问的)你在遇到这种问题时,一般是怎么... - Published: 2024-03-28 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1367/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%85%be%e8%ae%af%e4%ba%91%e6%99%ba%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 腾讯云智 面试经历 - 腾讯云智测开实习 于 2024/3/28 15:30 进行的为时 30 分钟的面试。时间比较短(可能只是业务初试的原因?),而且面试官没开摄像头,但是聊的确实不错。因为他们业务跟网络关系比较大(高性能网络中心)所以问的全部是计网的问题,没有算法题,项目也没怎么问。等结果吧。 以下是面经: 自我介绍 讲讲你目前在蔚来测试什么产品?你在其中的工作是什么?你在工作中使用的是什么自动化测试框架?case 的通过率如何? 你的 Python 水平如何? 看到你之前有做过开发,现在有做测试,你今后的规划是什么? 我们做的是偏底层网络的,对网络知识的要求可能会比较高,你这方面怎么样? 讲讲 TCP/IP 五层模型? 了解 ARP 吗,讲讲这个协议? 说下你对 TCP 和 UDP 的了解和见解?TCP 遇到堵塞是如何解决的?了解过粘包吗,如何解决? 简单说说 TCP 三次握手?了解半连接和全连接吗? 简单说说 TCP 四次挥手?了解 TCP 连接中的一些状态吗,比如 TIME_WAIT 和 CLOSE_WAIT? 有了解过 PING 泛洪(PING Flood)吗?如何防范? Linux 接触的多吗?用过 Ubuntu 吗?用过哪些网络抓包工具?有没有了解 Linux 上的一些网络相关工具,例如 tcpdump? 对虚拟化了解吗?(不太了解)当我们从虚拟机访问百度时,会经过什么样的流程? 讲讲 TCP 报文格式?头部有多大? 对于一个 2000 字节的 UDP 大包,MTU 为 1500 字节,IP 层会作何处理? 了解(数据包的)分片和重组吗?如何判断数据包是否分片? 刚才我说到了 ARP,ARP (报文)是通过什么方式进行传播的?(广播)了解广播和组播的区别吗? DHCP 了解吗,简单讲讲? BPS 和 PPS 了解吗? Python 这边你之前用的都是哪些版本(他们用 2. 7,太草了) 写过 Socket 吗,用过哪些库? 对 IPv4 和 IPv6 有什么了解吗?知道 CIDR 吗? 有了解过最长前缀匹配吗?有没有在自己的机器上配置路由表? NAT 了解吗?简单说一下?了解 SNAT 和 DNAT 的区别吗? 有用过 scapy 吗? 代码题:现有一个包含四个元素的 list,每次调用接口时都需要从 list 中随机选出一个(索引)不重复的数,应该如何设计代... - Published: 2024-03-27 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1363/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e9%ab%98%e5%be%b7%e5%9c%b0%e5%9b%be%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 高德地图 面试经历 - 高德地图测开实习 2024/3/27 16:00 进行的为时 40 分钟的面试。面试官说这是他第一次面非科班同学。面完秒挂,心态很炸。 以下是面经: 自我介绍 你是读什么专业的? (询问有关第一段工作经历的相关问题,例如用到了什么设计模式,有没有考虑高并发,分库分表,慢查询等) 讲讲 B+ 树的原理;O(nlogn) 的数据结构很多,为什么数据库最后选择了 B+ 树? (询问有关第二段工作经历的相关问题,例如前端有没有遇到过什么复杂的场景,有没有画过图表,有没有做过散点图,有没有用散点图实现过线性回归) (询问有关 toktik 项目的相关问题,例如讲讲有没有遇到什么项目难点,讲讲项目用到的单测和 E2E 测试,用到了什么框架) 你进行测试有没有用到什么方法论,例如等价类?如果我们的测试数据不是一个数值,是一个结构体,你应该怎么测试? (询问有关 NeraBBS 项目的相关问题,例如这个项目和市面上现有论坛的区别,有没有上过线,有人用吗) (询问有关第三段工作经历的相关问题,例如讲讲“在蔚来什么体感”,在哪个部门) 你怎样衡量接口的质量好坏? 如果有一个地图场景,需要你计算最优路径,你会如何设计数据结构,如何计算最优路径? SQL 题:有数据表 user(id, user_id, time),代表某用户对服务的单次访问时间,请计算网站最近一个月的 DAU(即按日期聚合的用户访问数量) 家在哪里?实习会耽误课程吗?在学校成绩如何?为什么不打算找本专业工作?为什么想找 QA 的工作而不是研发? 反问 - Published: 2024-03-20 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1348/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%b8%89%e8%bf%9b%e5%ae%ab/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 - 字节跳动测开实习 - 三进宫 2024/3/20 15:00 进行的为时 50 分钟的面试。有时候我说完了面试官会停顿个五六秒,好虚。 天杀的 MacOS,录屏不支持内录,没录下来面试官说的啥,我只能尽量总结一下,大家凑活看吧。 以下是面经: 自我介绍 讲讲目前实习中的测试 我看你不是计算机专业的,那你对计算机基础知识理解怎么样? 讲讲 TCP/IP 五层模型 TCP 和 OSPF?(没听清,光记得开头是 O,猜测应该是 OSPF,然而答错了)协议分别在哪一层? 讲讲 TCP 和 UDP 的区别 TCP 三次握手了解吗,讲一下?(我直接给他说了 SYN、SYN ACK、ACK)能不能详细说说? 服务器向客户端发起 TCP 连接,三次握手后谁会第一个发出连接/连接是从什么时候开始的?(没懂啥意思) 讲讲 TCP 四次挥手,为什么是四次不是三次? UDP 一般用于什么场景? DNS 协议了解吗,基于 UDP 还是 TCP 协议? IPv6 了解吗?(我直接说我只用过,说不出来协议头有啥,他没接着往下问了) 数据库索引都有哪些类型? 数据库索引底层是什么数据结构?为什么使用 B+ 树? 你都了解哪些排序方法?讲讲快速排序的原理? 还知道什么其他的排序方法?讲讲归并排序的原理? 冒泡排序的时间复杂度是多少?快速排序呢?最好和最坏情况下呢? 哈希表解决哈希冲突的算法有哪些? 讲讲链表和数组的区别? Java 怎么申请不定长的数组?(我回答Java 不支持)那么如果需要不定长数组应该怎么做?(ArrayList) ArrayList 和 LinkedList 的区别? 讲讲操作系统换页算法(刚开始没想到他想问 LRU,后来才反应过来补充回去了) 你不是计算机专业的,那为什么想着找计算机工作? 今年多大?本专业成绩如何? 代码题:字母异位词 代码题:根据给定表输出符合要求的五个 SQL 语句 场景题:给定一个输入中国大陆手机号和验证码的表单,你如何进行测试?如果输入的验证码正确但是前端显示验证码错误,你如何排查? 反问:您觉得我有什么可以提升的地方? 属于是Java计网操作系统算法SQL场景轮番上阵,感觉都差不多答出来了,但是面试官觉得“深度不够”,评价环节觉得我“优点和缺点都挺明显”,“最好还是考个科班研”,“要和二面面试官沟通一下才能决定继不继续”,我感觉可能要... - Published: 2024-02-07 - Modified: 2024-02-07 - URL: https://blog.hikarilan.life/thinking/1340/%e8%af%a5%e8%b5%b7%e7%a8%8b%e4%ba%86%ef%bc%9a%e8%94%9a%e6%9d%a5%e6%ad%a3%e5%bc%8f-offer%ef%bc%8c%e4%bb%a5%e5%8f%8a%e6%88%91%e7%9a%84%e4%b8%80%e4%ba%9b%e7%a2%8e%e7%a2%8e%e5%bf%b5/ - 分类目录: 心得 - 标签: 蔚来 该起程了:蔚来正式 Offer,以及我的一些碎碎念 现拟聘请您担任本公司用户数字产品质量保障技术部的实习生职务,工作地点位于中国北京,对高级经理,销售运营质量团队 & 专家,软件测试汇报工作 ... ... ↑没错蔚来的 offer 邮件就是这么简陋,听群友开玩笑说是 HR 一个字一个字打出来的。 Timeline 2024-01-24: 接到面试通知 2024-01-26: 一面,当晚约二面 2024-01-30: 二面 2024-02-05: 约当天下午 HR 面并进行了面试 2024-02-05 下午: 口头 offer 2024-02-07 正式 offer 碎碎念 从去年五月底开始陆陆续续投简历到现在,已经过去了大半年的时间。这半年里,我也算是有所成长,从一个不懂算法不懂八股的废物,变成了一个懂一点算法和八股的萌新。回看这半年,我从失望,绝望,焦虑,奋斗到现在找到了(唯一的)一个还算不错的 offer,也算是圆满了。至少我可以说对得起这半年来自己的付出。 再回来谈谈蔚来这次面试,24 号当天下午我接到蔚来的面试通知电话的时候,我还在外面胡吃海喝,比起当时的激动,我在当时对这场即将进行的面试更多的感受是:麻木。半年的面试已经让我没了成功的希望,剩下的只有无限的麻木,麻木到我根本不想找工作,却每天还在 boss 直聘上一遍遍的点击“沟通”,就连我是什么时候投递的蔚来,我都完全没有印象了。但也许正是这份麻木,间接的让我在面试中获得了更多的冷静,从而得到了面试官的青睐。 一面的时候,当我看到面试官没有开摄像头的想法时,我就认定这场面试大概率也和上一次面字节一样,属于过节前的例行 KPI,面试官刚开始对我似乎也没有表现出太大的兴趣,直到 —— 他看了我的博客。 面试官:你平常有记录技术文档的习惯吗? 我:技术文档没有,但是倒是有写博客。 面试官:有地址吗,能给我看看吗? 不知道为什么,自那之后,面试官对我的评价明显好了很多。之后,一面就顺利的通过了。 四天后的二面,记得那是一个周二,新的面试官终于开了摄像头,看起来很和善,全程也非常担待我,不断地鼓励我和提醒我,二面就在这非常愉快的氛围中结束了。而那个时候的我立刻就意识到二面稳了,甚至开始半场开香槟。 然后随之迎来的就是近一周的静默。 没有感谢信,也没有 offer 通知,HR 电话打不通,我也没有 HR 的微信,后... - Published: 2024-02-01 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1334/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e7%94%a8%e5%8f%8b%e6%be%b3%e9%97%a8%e5%ae%a2%e6%88%b7%e5%8c%96%e5%bc%80%e5%8f%91%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 用友 面试经历 – 用友澳门客户化开发实习 于 2024/1/31 进行的为期 26 分钟的面试,我以为有很多面没想到只有一面,而且还是 HR + 技术面,HR 说完薪资待遇以后镜头一转就由另外一位技术大佬开始问我问题了。是用友澳门分公司的珠海办公室组织的招聘,虽然我投的是测开,问的是后端,但是最后告诉我他们其实想让我过去当前端。总体答得不好,当然我意向也没有那么强(一个点是钱不多,只有3000,另一个点是客户化开发其实就是 OD,感觉不太能背书)。 HR 提问: 自我介绍 可以讲一下你的职业规划,想从实习中学到什么,以后想从事什么岗位,往哪方向发展吗? 你是学金融的,那怎么想到来做开发这边的工作呢? 能讲讲微软学生大使是什么吗? 部门经理提问: 你第一家实习公司和 MSRA 的合作是做什么的?为什么没有使用微软自己的 . NET 平台开发? 你在第二家实习公司做的是什么?我看到这个项目里用到了 Vue,你用的是什么版本?能讲讲 Vue 的状态管理吗? 讲讲你 NeraBBS 项目的设计方式和技术选型,能说说 Spring Boot 和 Spring Cloud 的区别吗?为什么要选择 Spring Cloud? 讲讲 Tiktok 短视频项目? 你对 k8s 了解多少?你对线上问题的诊断大概有哪些思路? 讲一下 Java 的回收机制和内存模型? 你对数据库的了解有多少,经常用哪些数据库?对于一个存在符合查询的 SQL,你如何进行性能分析?你对数据库的锁机制了解多少?like 查询会走索引吗? 你对你的技术发展方向大概是一个什么样的规划 反问: 到岗时间 什么时候有结果 - Published: 2024-01-30 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1331/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%ae%9e%e4%b9%a02/ - 分类目录: 面经 - 标签: 蔚来 面试经历 – 蔚来测试实习(2) 2024/1/30 下午 2 点进行了为时 50 分钟的二面,面试官真的特别好,感觉稳了,等正式通知。 自我介绍 拷打项目(以我简历上那个 Webauthn API Passkey 登录为主,其他杂七杂八的也问了,顺带问了问我是如何解决问题以及解决了什么问题) 你的项目拿 Redis 干什么了,讲讲缓存雪崩,缓存击穿和缓存穿透?如何缓解? 讲讲布隆过滤器的基本原理?布隆过滤器能保证数据一定存在吗?为什么? 你能告诉我脏读是什么意思吗?能联系一个具体的案例讲讲脏读吗? 现有一用户表存储了包含员工名的员工信息,写一条SQL查询所有重名的人,并返回这些重名的人各自重了多少个? 对于一个有非常多个筛选条件的可组合查询表单,你应当如何设计测试用例(不要穷举)? 接触过哪些测试框架,除了单元测试以外的? 代码题,讲讲思路就行:两数之和,数字翻转 你怎么理解测试这个行业? 你觉得在你的学生生涯中最有成就感的事是什么? 大概能实习多久,什么时候到岗? 反问(面试表现,部门主要是做什么的,有没有转正机会) - Published: 2024-01-26 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1328/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e8%94%9a%e6%9d%a5%e6%b5%8b%e8%af%95%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 蔚来 面试经历 - 蔚来测试实习 于 2024/1/26 下午 2:00 进行了为时 40 分钟的一面,面试官当场表示了通过,接下来等二面了。问的问题比较偏测试,开发相关问的不多(面试官面试中途还看了我的博客)。 自我介绍 你做过的都是一些和开发有关的事情,你是为什么想走测试这条道路呢? 你对测试是如何理解的? 你认为测试应该基于哪几点去考虑? 你怎么理解 Java 的注解,能举一个具体的例子吗?你自己有写过什么注解吗?注解执行的顺序是什么? 如何理解 JVM 虚拟机,如何使用 JVM 虚拟机的内容对平常代码中的性能问题进行定位?举个例子,如果你发现一个应用程序内存使用量和CPU占用非常高,你认为应该从哪几方面去排查性能问题? 有了解一些常见的性能分析工具吗?你有没有模拟,或处理过性能问题? 你认为出现慢查询可能是哪几个方面的原因? 谈谈你在平常开发中对 Redis 的应用场景? 谈谈缓存穿透,缓存击穿和缓存雪崩?如何解决? 现有一需求文档,存在以下场景:一个包含头像,用户名和密码表单,登录按钮,注册按钮,找回密码按钮的页面,请试着编写测试用例? 如果产品经理向你提供的需求文档未达到你的要求,令你无法输出一份相对比较完整的我测试用例,这时你应该怎么做? 你如何向代码验收方阐述你所做的测试是充分且达到使用要求的?如果验收方发现有一个地方漏测了,你会怎么做?你后续如何规避这些问题?如果出现线上问题,你该如何处理? 你有记录文档的习惯吗?看看你的博客?你最近有其他意向吗? 预计实习时长,对薪资方面有什么要求吗?能够何时到岗? 你对加班是如何理解的? 反问(面试评价,工作内容,总共有几面) - Published: 2024-01-04 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1315/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%ba%8c%e8%bf%9b%e5%ae%ab2/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 - 字节跳动测开实习 - 二进宫(2) 本来是下午七点面结果面试官航班延误了延期到九点,面试时长 50 分钟左右,八股场景算法那是样样没落,感觉有点小寄,但是又没有完全寄... ... 等结果吧。 你是什么专业的,怎么没转专业?(每次面试都有人问一遍这个) 你的计算机是自学的吗,你是怎么学的,都学了哪些? 讲讲简历上的项目,你项目上哪部分做起来比较有挑战,是如何解决的? 我看你简历上有两段实习,你觉得实习过程中对你个人的成长主要体现在哪些方面? 讲讲 Java 的双亲委派模型? 说下你对多态的理解? 说下 HashMap 的结构?HashMap 插入数据的时间复杂度是多少? 说下数组和链表的区别? int 和 Integer 的区别,int 和 Integer 可以直接比较吗? 代码题:正则表达式匹配(Leetcode 一道 hard 的题,没做出来) 如果一个 Web 页面访问时页面渲染失败显示空白,你如何定位问题? 说说 cookie 和 session 的区别? 数据库索引失效的场景?你都用过哪些索引? 你现在是大三对吧,你可以实习多久? 反问 更新:寄了 - Published: 2024-01-02 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1308/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0-%e4%ba%8c%e8%bf%9b%e5%ae%ab/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 - 字节跳动测开实习 - 二进宫 于 2024/1/2 14:00 进行的为期约 45 分钟的线上面试。这次算是二进宫了,同样的字节,同样的测开。不过我感觉有可能是 KPI,面试官甚至没有开摄像头。 更新:过了,约二面了 如何判断一个功能是否适合做自动化测试? 作为一个测开,你觉得你怎么样参与到项目进展的把控中? 从测开角度,你觉得你能做什么来避免上线代码漏提或多提测试? 如果让你做一个工具以监控线上问题,你会监控哪些数据? 讲讲你简历项目上性能测试相关的部分?打了多少 QPS? 如果对飞书人事系统做性能测试,你觉得应该关注什么? tail -f 了解吗,如果有一个文本文件,你知道如何去统计他的行数吗?(面试的时候没听清是啥,听成了 kill -f) 简单介绍一下 Go 多线程和 Java 多线程的区别? Java 如何保证并发事务的准确性? Go 如何控制最大并发数? 如何用正则表达式匹配一个 Email? 讲一下 TCP 的三次握手和 OSI 的七层网络模型,如果要给应用程序做限流应该在哪一层做? 如何防止一些简单的 DDOS 攻击? 代码题:你的 CPU 只有 4G,如何找出一个 16G 文本文件中出现次数最多的数字? 代码题:二叉树的最近公共祖先 代码题:斐波那契数列 代码题:手撕冒泡排序(问我会不会写快排我说不会所以退化成冒泡了结果刚开始还写成插入排序了,哭哭) - Published: 2023-11-05 - Modified: 2023-11-05 - URL: https://blog.hikarilan.life/thinking/1299/%e8%ae%b0%e5%8f%82%e5%8a%a0-2023-%e4%b8%8b%e5%8d%8a%e5%b9%b4%e8%bd%af%e8%80%83/ - 分类目录: 心得 - 标签: 软考 记参加 2023 下半年软考 今天我参加了软考的中级软件设计师科目,与往年不同的是,今年是该考试第一次实行机考。考试安排在下午 2 点到 6 点,两门连考。对我来说,第一门比较难,感觉不一定能过 45 分,而第二门则相对比较简单。 简单记录一下考了什么吧,第一门就是纯概念题,75 道选择,1 道题 1 分,比较有意思的是包含一道英语阅读题(5 道语法填空),当然难度总体是简单的。 下午的题目则是以应用为主,前三道题给定了一个大型项目的设计思路,要求补全设计图等;第四道题是一道代码填空题,要求填空一份 C 语言开发的算法解题程序;第五道题为 Java 和 C++ 选做,给定了一道以 Command 设计模式开发的程序,要求进行填空。 接下来就看能不能过了,我感觉难说。 - Published: 2023-11-05 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1302/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%bf%ab%e6%89%8b%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0%e5%87%89%e7%bb%8f/ - 分类目录: 面经 - 标签: 快手 面试经历 - 快手测开实习凉经 周五(2023/11/3)进行了快手的测开日常岗面试,因为没背八股,所以凉的很彻底。 问题: 简单介绍一下你自己 (简单了解了一下项目) Java 基本类型有哪些 Java 常用的集合有哪些,线程安全的集合呢? JVM 内存区域有哪些 简单讲一下 Java 的分代垃圾回收算法 新生代分为哪几个区 讲一下 Major GC 和 Minor GC 知道什么是强引用和软引用吗?引用类型有哪几种 接口和抽象类的区别都有哪些 讲一下线程的生命周期 讲一下有哪几种线程池 (八股基本就问了这些,由于答得太差了所以后面就没怎么再问了,只随便问了一些情况就结束了) - Published: 2023-10-27 - Modified: 2024-12-03 - URL: https://blog.hikarilan.life/thinking/annual-summary/1290/%e4%bb%80%e4%b9%88%ef%bc%9f%e6%88%91%e8%b8%8f%e9%a9%ac-20-%e4%ba%86%ef%bc%9f%ef%bc%9f%ef%bc%9f%ef%bc%8820-%e5%b2%81%e7%94%9f%e6%97%a5%e6%80%bb%e7%bb%93%ef%bc%89/ - 分类目录: 年度总结, 心得 - 标签: 生活 什么?我踏马 20 了???(20 岁生日总结) 10 月过的实在是太快了,快到我根本没有意识到还有一周(该文撰文时间为 10/22/2023)就要过生日了,而且还是 20 岁生日! 仔细想想,今年是很特殊的一年,我好像学了什么东西,但好像又没学;但是今年确实似乎是我进步最大的一年,我得到了许多,但也失去了许多。 承上启下,不如让我们先从去年的生日总结开始,看看去年的展望是否都实现了吧: 过去的展望 今年因为各种原因没能参加 ACM/ICPC 比赛,希望明年能参加(并不指望拿个什么奖,但是一定要参加感受一下); 很遗憾,今年我们学校连蓝桥杯都没组织,更何况 ACM,所以这个还是没完成( 希望能把建社团的事情办下来; 这还真办下来了,我自己都不敢相信,而且说实话还算有模有样,看日后怎么发展了 想学 C++!想学 Unity!想学 Go!想学 Rust!想学 Node. js!想学 Blender!啥都想学! Go, rust 学了一点,C++ 和 Node 有所接触,其他的该没学还是没学 这一年来,我都干了些什么 读完了 rust 语言圣经 也算是基本能写一些简单的 rust 小程序了(不过最近都没怎么写,快忘光了)。 读完了《深入理解 JVM 字节码》 总算是对 JVM 的底层发起了一次挑战,本来计划一年内把《深入理解 JVM 虚拟机》也读完的,但看起来完不成了 参加了(第五届)字节跳动青训营 取得了不错的成绩,也认识了很多新朋友,也借此机会领略了 Go 语言的魅力(其实今年暑假的第六届青训营我也有报名前端部分,但是由于实习,最后没参加)。 整了个微信公众号 名字叫“HikariLan 的博客”,其实基本就是转载本网站的文章。搞这个的原因是因为本站原来是使用 OneSignal 进行文章 push 的,但是这玩意的资源太大,影响网站加载速度,遂被我关掉了;为了能让现有的用户能及时接收到文章更新,所以搞了一个这玩意。 写了个微信小程序 初衷是因为学校的教务系统太难用了,所以想写个微信小程序来帮我查课表和分数。这也是我第一次接触微信小程序的开发。 参加并通过了计算机等级考试 我选了二级 C 语言,二级 Java 和三级网络技术,三级没过两个二级都过了。其实二级考的都很简单,而且本身计算机等级考试也没啥含金量,所以没啥好说的。 参加并通过了软考(初级) 其实我是今年才听说... - Published: 2023-10-06 - Modified: 2024-11-13 - URL: https://blog.hikarilan.life/tech/1279/%e8%ae%ba%e7%bc%96%e7%a8%8b%e7%95%8c%e7%9a%84%e6%97%a5%e7%bb%8f%e9%97%ae%e9%a2%98%ef%bc%9a%e5%88%b0%e5%ba%95%e5%a6%82%e4%bd%95%e5%8c%ba%e5%88%86%e9%9d%99%e6%80%81%e7%b1%bb%e5%9e%8b%e5%92%8c%e5%8a%a8/ - 分类目录: 技术 论编程界的日经问题:到底如何区分静态类型和动态类型、强类型和弱类型? 我发现在我加的一些编程交流群里,几乎每半个月就会产生这样的一些争论:“Python 到底是强类型语言还是弱类型语言”,“为什么 JavaScript 是弱类型语言”,“动态类型语言和静态类型语言的区别是什么”... ... 这些争吵喋喋不休,大多很难有一个确定的共识。 其实大家很难争吵出共识是很正常的,因为对于静态类型和动态类型,强类型和弱类型这些概念来说,他们本身就没有什么确定的概念,大家基于一个模糊的概念各说各的,自然得不出一个确切的答案。 但是如果我们按照一些已有的共识来重新规范一下两对类型的概念,那么其实还是很容易得出答案的。 值得一提的是,无论是静态类型和动态类型,还是强类型和弱类型,这些概念都是基于语言的语法这一层次来定义的,而不是语言的内部设计,否则我们大可以说:“所有语言最后都是由 0 和 1 组成的”,那么就没有办法再谈什么“类型”了。 强类型和弱类型 有关强类型和弱类型的定义大都比较模糊,这里我采用 Wikipedia 上的一个结论: 强类型的语言遇到函数参数类型和实际调用类型不符合的情况经常会直接出错或者编译失败;而弱类型的语言常常会实行隐式转换,或者产生难以意料的结果。 先说结论,以下语言属于强类型:C#, Java, Scala, Kotlin, Groovy, rust, go, Python, TypeScript,而这些语言则属于弱类型:C, C++, JavaScript, PHP。 我相信一部分人看到这个分类的时候一定已经开始有一些疑问了,别急,让我们慢慢道来... ... Python 为什么是强类型 很多人觉得 Python 不是一个强类型的语言,因为其在变量声明时不需要指定类型,也很少见到 Python 提及“类型”这一概念。但其实,Python 是一门强类型的动态类型语言,虽然在变量声明时我们不需要显式指定类型,但是“类型”这一概念是实际存在的,举个例子,以下 Python 代码会获得一个 TypeError: >>> 1+"" Traceback (most recent call last): File "", line 1, in 1+"" TypeError: unsupported operand type(s) for +: 'int' an... - Published: 2023-09-24 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1273/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a03/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 – 字节跳动测开实习(3) 这两天一直在忙别的事情所以以至于忘了发三面面经,现在补一下( 先说结论,与二面截然相反,二面是啥也没问,三面是全都问了,把我问懵逼了的那种,感觉要挂。 问的问题: 自我介绍 在 Linux 中如何获取一个目录(和子目录)下所有名字叫 ABC 的文件? 在 Linux 中如何找出所有包含有 ABC 文本的文件? 如何在在 Git 中如何将另一个分支中的 commit 拉到我们的分支中? 你能讲讲 Git 中 pull 和 rebase 的区别吗? 如何希望在一个项目里使用 Git submodule,应该怎么做,具体命令怎么写? 了解哪些测试框架? 你不是科班生,那你的计算机技术是怎么学的呢? 描述一下在 Linux 中启动一个程序时发生的过程? 你觉得你个人哪一部分相对来说比较好,你的长处在哪里? 在 Go 中如何进行本地函数调用,Java 中呢?为什么 Java 要程序员编写专门的(JNI)函数去调用 C 库函数,而不是直接调用? 编程题:我有一个包含 N 个 bytes 的 Byte Buffer,请输出该 buffer 中全部 bit 0 的个数。 更新: 确实挂了,幻想破灭 - Published: 2023-09-20 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1269/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a02/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 – 字节跳动测开实习(2) 这场面试从头到尾都是那么的令人不敢相信,以至于我刚面完一个小时以后就收到了字节 HR 打来的三面通知电话,当时我心里只想说一句: 不是,啊? 本次面试的内容非常少,甚至提前结束了(不知道是不是因为面试官问无可问了,因为问的我都答的不深),在整场面试的 45 分钟中,仅有 15 分钟在问问题,剩下半个小时都是我在磨算法题(我算法很菜,认识我的人都知道)。 依然,下面是问的一些问题: 做个自我介绍 介绍一下项目经历 问个开放性的问题,你对性能的理解是什么样的 你能解释一下 QPS 的意思吗 Git 的操作了解吗?Linux 的 command line 了解吗?Docker 用过吗? 你是计算机专业的吗(不是) 你能介绍两个比较先进的 GC 算法吗(只简单说了 G1) 有了解过 benchmark 这个概念吗?通过什么指标来评价他的速度好还是不好 你是本科是吧,那你能出来实习吗 期待的工作地是哪里 可以实习多久 那我们就不墨迹了,搞一个题吧,简单一点的也行(题目是二叉树的所有路径和,我用回溯来做,虽然很墨迹但是最后基本做出来了) 接下来就看周五下午的三面如何了。 - Published: 2023-09-13 - Modified: 2024-12-02 - URL: https://blog.hikarilan.life/interview/1265/%e9%9d%a2%e8%af%95%e7%bb%8f%e5%8e%86-%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%b5%8b%e5%bc%80%e5%ae%9e%e4%b9%a0/ - 分类目录: 面经 - 标签: 字节跳动 面试经历 - 字节跳动测开实习 前几天用某位朋友的内推码投递了字节的“测试开发实习生-系统架构”一职,本来泡池子了,结果硬是被这位朋友捞起来了,于是昨天下午收到了字节 HR 打来的约面电话,了解了一些基本信息后,约定了在今日下午五点进行面试。 不得不说字节的面试体验确实很好,但是掩盖不住我太菜了,感觉答得都不好,算法题也没做出来。 下面是问的一些问题: 介绍一下自己 问一下如果一个业务的性能波动比较大,你有什么想法?(排查测试环境,应用自身原因,性能工具监控) 既然聊到了性能工具,能简单介绍一下有哪些以及他们的原理吗?(jprofiler,覆盖率检测) 如果一个可执行程序在 x86 机器上能跑但是在 ARM 的机器上不能跑,你认为有什么可能的原因?(系统架构,编译,代码问题) 如果一个 Java 程序出现了上述问题,具体可能会有什么原因?(JNI 调用,Magic code,面试官随后补充 JDK 版本原因) 如果需要让你验证一个程序包的健壮性,都会从哪些角度去验证(压力测试,内存泄漏) Linux 常用命令(ls, pwd, rm, cd) Linux 常用性能监控命令(只记得 netstat,面试官后续补充例如 free 等命令) 对软链接的了解(路径映射) Linux 权限相关了解(chmod,Linux 权限组成) Linux 设置环境变量(export,刚开始答成 PowerShell 的$env 了,被指正了以后改过来了) Java 函数分配原理(堆栈) 简述 Java 的堆和栈(对象创建在堆上,基本数据类型创建在栈上) 简述 Java 垃圾回收机制(标记,计数,G1新生代老年代) 如何判断对象是否存活? 对象标记是从 root 开始的,那么 root 是从哪些信息或者哪些变量里获得的(不会,瞎说的) 如何理解 STW,STW 会在什么情况下发生? 简单描述一下线程池(分配,调度线程) 协程和线程池的优缺点(用户态,占用小) 简述 Maven 和 Gradle 的功能或特点 如果希望在 Maven 项目中通过 JNI 加载并调用一个本地 . so 文件,应该如何配置 Maven(我没听懂这个题,瞎答了一通,实际上面试官想让我回答打包 JAR) 展开讲讲 JVM 的编译和解释执行(. class, . java, JIT, AOT,热点代码) JVM 是从... - Published: 2023-08-26 - Modified: 2023-08-26 - URL: https://blog.hikarilan.life/thinking/1259/%e8%ae%ba%e6%88%91%e6%98%af%e5%a6%82%e4%bd%95%e5%9c%a8%e6%b2%a1%e6%9c%89%e5%8f%af%e7%a7%bb%e5%8a%a8%e5%ad%98%e5%82%a8%e4%bb%8b%e8%b4%a8%e7%9a%84%e6%83%85%e5%86%b5%e4%b8%8b%e9%87%8d%e8%a3%85%e4%ba%86/ - 分类目录: 心得 论我是如何在没有可移动存储介质的情况下重装了一台进不去操作系统的电脑的 前言 前几天推荐家里亲戚买了台联想小新 Pro 16 笔记本用来学习用,由于他们不怎么懂电脑,于是就把电脑邮到我这儿来让我先帮忙检验一下,在经过检验没问题,激活了操作系统和 Office 以后,我突然发现这台电脑已经预分配好了磁盘分区:C盘150G,D盘800G... 于是,在考虑到普通人安装软件都会安装到 C 盘,而 C 盘又这么小的时候,我决定帮他们重新分一下盘 —— 指把 D 盘移除掉,然后把剩余的空间都划给 C 盘。 然而,也不知道是不是 D 盘存在一些隐藏的软件,或者是因为我没有提前关闭 BitLocker 就移除了卷,在这一切都行云流水地完成了以后,我发现 —— 电脑重启以后就打不开了。 瞬间,我脑子轰的般炸开 —— 坏了,我手上可没有 U 盘可以拿来重装系统啊! 查看问题 没有办法,我只能硬着头皮看看能不能修好,电脑的状态是 BIOS 自检完成后无法引导进操作系统自动重启,并在重启两次后自动进入 WinRT 恢复环境。 说来也奇怪,Win RT 上的“重置此电脑”非常诡异的无法使用,表现为点进去以后就会自动弹出“初始化电脑时出现问题”,无奈,我只能选择其他的方式解决问题。 于是我打开了命令提示符,试图把那个已经不存在的 D 盘给重新分回来,然而,并没有什么卵用; 无奈,我开始试着运行 chkdsk 一类的磁盘检查工具,试图死马当活马医,很显然,依然没啥卵用。 到了这个地步,我能想到的办法就只剩下重装电脑了,然而,我手头没有任何可移动存储介质,只有一台我自己的电脑和手机。 然而我突然灵光一闪,手机能不能充当可移动存储介质,部署镜像呢?在经过一些简单的查询后,还真让我找到了这么一个工具。 这个工具,就叫做 DriveDroid。 DriveDroid + Ventory DriveDroid 是一个允许你从你手机上存储的 ISO/IMG 文件启动你的 PC 的 App,但是需要 root 权限才能使用。 于是我立马把这玩意下载下来,安装到了手机上,同时,我又下载了 WePE 的 ISO 镜像到手机上,经过一番倒腾,把手机插入电脑,狂按 F12,我赫然发现 BIOS 已经可以识别到我的 USB 设备作为启动项!点击进入以后,熟悉的页面呈现,我成功的进入到了 WePE 的恢复系统中! 然而... - Published: 2023-08-23 - Modified: 2023-08-23 - URL: https://blog.hikarilan.life/thinking/1246/%e8%ae%ba%e6%88%91%e6%98%af%e5%a6%82%e4%bd%95%e4%b8%8d%e7%bb%8f%e6%84%8f%e9%97%b4%e6%8a%8a-google-play-store-%e6%95%b4%e7%88%86%e6%8e%89%e7%9a%84/ - 分类目录: 心得 - 标签: LSPosed, Magisk 论我是如何不经意间把 Google Play Store 整爆掉的 前言 前几天闲来无事,折腾了一下我的手机,结果没想到第二天起来一看 Google Play 打不开了,而经过了半周断断续续的排查终于找到了原因且修复了问题... ... 问题发生 因为我 Google Play 的“检查更新”功能在即使有更新的情况下也会告诉我软件已是最新版本,因此我有一个定期去 APKPure 下载最新版 Google Play 安装包并安装的习惯。前几天突然想到该更新了,于是下载了新版并安装了上去,当时并没有啥问题,于是就去忙别的了。结果第二天发现我的 Google Play 打不开了!表现为无限卡 Splash Screen,且应用完全不启动。这可把我急坏了,于是我开始思考昨天我都干了啥... ... 问题排查 我第一个想到的自然是我更新了 Google Play 的问题,我想到可能是我的 Google Play Service 没有顺带更新导致的问题,于是试着更新了 Google Play Service,然而并没有什么卵用;于是,我又试图清除 Google Play 和 Google Play Service 的 data 和 cache,但是依然没用;后来,我又试着将二者回滚到之前的版本,但是依然没用。 于是,我想到是不是我最近一次 MIUI 系统更新导致的问题,遂重新卡刷了完整版的 MIUI 14. 0. 26. 0,然而还是没用! 这个时候,我就开始考虑是不是我的 Magisk/LSPosed 模块导致的问题了,于是突然想到前几天有安装一个 MIUIGMS 模块,可以为中国大陆用户提供完整版的 GMS 功能;因此试着卸载了该模块,但是依然没有解决问题。 这个时候我就有点小崩溃了,打算摆烂,因为之前手机上的 Chrome 也遇到过类似的情况,但是过上几天突然自己就好了,于是我也就打算等等。 然而几天过后实在忍不住了,遂在一个悲惨的晚上,我开始了逐个排查模块问题。 我先试禁用最近安装的几个 Magisk 模块,发现没用,于是试着禁止所有 Magisk 模块,结果 Google Play 正常启动了!这给了我很大信心,因为至少可以确定是某个模块导致的了。经过进一步的排查,我发现是 LSPosed 导致的问题。一开始我还以为是 LSPosed 自身的问题,结果当我开启 LSP... - Published: 2023-08-23 - Modified: 2024-11-27 - URL: https://blog.hikarilan.life/tech/1249/%e5%ae%9e%e6%88%98%ef%bc%81%e4%b8%ba%e4%bd%a0%e7%9a%84%e7%bd%91%e7%ab%99%e6%8e%a5%e5%85%a5-passkey-%e9%80%9a%e8%a1%8c%e5%af%86%e9%92%a5%e4%bb%a5%e5%ae%9e%e7%8e%b0%e6%97%a0%e5%af%86%e7%a0%81%e5%ae%89/ - 分类目录: 技术 - 标签: Passkey, Webauthn, 通行秘钥 实战!为你的网站接入 Passkey 通行密钥以实现无密码安全登录 前言 说来也巧,最近在研究 Passkey,本来思前想后是不写这篇文章的(因为懒),但是昨天刷知乎的时候发现廖雪峰廖老师也在研究 Passkey,想了想还是写一篇蹭蹭热度吧。 了解 Passkey 要了解 Passkey,我们首先需要了解 Web Authentication credential(Web 认证凭据),简而言之,Web 认证凭据是一种使用非对称加密代替密码或 SMS 短信在网站上注册、登录、双因素验证的方式。通过操作系统-用户代理(浏览器)-服务器三方的交互,我们得以以无密码的方式完成对指定服务的身份鉴权。Web 认证凭据目前被广泛使用在双因素认证(2FA)中。 Passkey 则是一种特殊的 Web 认证凭据:与传统的 Web 认证凭据不同, Passkey 可用于同时识别和验证用户,而前者只能用于验证用户信息,不能用来识别用户,这得益于 Passkey 的可发现性(Discoverable)。 通过 Passkey,我们可以通过使用操作系统的生物验证方式(例如 Windows Hello,FaceID)完成对指定站点的登录,而不必繁琐的输入账号和密码,解放用户的双手。 认识 Web Authentication API 为了创建和认证 Web 认证凭据,浏览器为我们提供了 Web Authentication API(简称 Webauthn),该 API 为我们提供了两个主要方法: navigator. credentials. create (en-US) - 当使用 publicKey 选项时,创建一个新的凭据,无论是用于注册新账号还是将新的非对称密钥凭据与已有的账号关联。 navigator. credentials. get (en-US) - 当使用 publicKey 选项时,使用一组现有的凭据进行身份验证服务,无论是用于用户登录还是双因素验证中的一步。 通过这两个方法,我们可以将 Web 认证凭据的创建和认证过程大致拆分为以下几部分: 凭据创建 浏览器向服务器发起请求,获取凭据创建所需的 options 信息(例如站点 ID,用户信息,防重放 challenge 等); 浏览器调用 navigator. credentials. create 方法,传入上一步获取的... - Published: 2023-08-08 - Modified: 2023-08-08 - URL: https://blog.hikarilan.life/tech/1239/%e5%ae%9e%e6%88%98%ef%bc%81%e7%94%a8-spring-gatway-%e9%85%8d%e5%90%88-sa-token-%e5%ae%9e%e7%8e%b0%e5%be%ae%e6%9c%8d%e5%8a%a1%e6%97%a0%e6%84%9f%e9%89%b4%e6%9d%83/ - 分类目录: 技术 - 标签: Spring, Spring Boot, Spring Cloud, 开发 实战!用 Spring Gateway 配合 Sa-Token 实现微服务无感鉴权 前言 众所周知,Spring Cloud Gateway 是一个基于 Spring WebFlux 技术构建的高性能微服务网关,通过 Spring Cloud Gateway,我们可以实现对微服务的负载均衡,服务治理等功能;Sa-Token 则是一款轻量级的 Java 权限认证框架,通过 Sa-Token 我们可以非常简便的实现服务的鉴权功能。 在业务实践中,我们可以直接在网关对需要鉴权的路由进行访问鉴权,阻止未登录或无权限用户访问指定 API/页面。Sa-Token 的文档也描述了这种网关统一鉴权的解决方案,但这依然不能解决一些问题: 下游微服务依然需要依赖 Sa-Token(或者通过中间件)获取用户信息,没有做到无感鉴权; 由于上述原因,导致下游微服务与 Sa-Token 耦合度过高,并且由于需要重复获取一次用户信息(在网关已经获取了一次),造成了额外的数据访问。 因此,本文提供了一种无感鉴权的方案,通过直接向下游微服务请求注入用户 ID 的方式,做到了无感鉴权,使鉴权服务对下游微服务保持透明。 本文全程使用 Java 17 + Spring Boot 3 作为示例,对于传统 Java 8 + Spring Boot 2 项目,除部分依赖需使用 Spring Boot 2 适配版本,整体代码变化不大。 无感鉴权的实现 引入依赖 首先,创建一个标准 Spring Boot 3 项目,并引入 Spring Cloud Gateway 和 Sa-Token 的相关依赖: plugins { // 引入 Java 插件 java // 引入 Spring Boot 插件 id("org. springframework. boot") version "3. 1. 2" // 引入 Spring 依赖管理插件 id("io. spring. dependency-management") version "1. 1. 2" } java { // 设置 Java 源代码版本为 Java 17 sourceCompatibility = JavaVersion. VERSION_17 } repositories { // 引入 Maven 中央库 mavenCentral } // 设置... - Published: 2023-07-21 - Modified: 2023-07-21 - URL: https://blog.hikarilan.life/daily/1226/%e8%bd%af%e8%80%83%e6%88%90%e7%bb%a9%e5%87%ba%e6%9d%a5%e4%ba%86/ - 分类目录: 日常 - 标签: 软考 (其实昨天就出来了,忘了发博客了) 不出意外地过了,成绩一般,可以开始准备下一年的中级考试了awa ↓晒一下成绩 - Published: 2023-07-13 - Modified: 2023-07-13 - URL: https://blog.hikarilan.life/thinking/1220/tailwind-css-%e5%af%bc%e8%ae%ba/ - 分类目录: 心得, 技术 - 标签: Tailwind CSS, 前端开发, 开发 Tailwind CSS 导论 作为前端开发,您是否曾经为在 HTML 和 CSS 之间不断切换而感到困扰?是否正在寻找一个可以帮助快速开发网页的 CSS 框架?如果是这样,那么 Tailwind CSS 一定是你的不二之选。 什么是 Tailwind CSS Tailwind CSS 是一款效用优先的 CSS 框架,其包含了 flex, pt-4, text-center 和 rotate-90 这样的 class 来帮助你通过组合这些类来直接在标记中构建任何设计。(A utility-first CSS framework packed with classes like flex, pt-4, text-center and rotate-90 that can be composed to build any design, directly in your markup. ) 直接看概念似乎有些难以理解,因此我们以官网上的一个例子来解释: 在我们没有使用 Tailwind CSS 之前,如果想要构建一个卡片 UI,可能需要这么写: ChitChat You have a new message! 但是当使用了 Tailwind CSS 之后,我们只需要这么写: ChitChat You have a new message! 我么使用 Tailwind CSS 为我们提供的预构建的 class 对元素的样式进行了描述,而不是通过自定义的 class 和自定义的 CSS。通过这些一眼就能看懂意思的 class 描述 HTML 样式,我们得以使用更少的代码量和更快的开发速度完成我们想要的样式,而这就是 Tailwind CSS 的魅力。 Tailwind CSS 好在哪 对于我来说,Tailwind CSS 从两个角度提升了我们的开发效率: 通过样式重置的方式来保证为不同浏览器提供相同的元素外观 在安装 Tailwind CSS 时,我们被要求引入如下样式: @tailwind base; /* Preflight will be injected here */ @tailwind components; @tailwind utilities; 其中 base 样式被 Tailwind CSS 称作 Preflight,其目的是重置浏览器为我们提供的元素的... - Published: 2023-06-27 - Modified: 2023-08-08 - URL: https://blog.hikarilan.life/daily/1214/2023-%e6%9a%91%e5%81%87%e6%97%a5%e5%b8%b8%e5%ae%9e%e4%b9%a0%e8%bf%9b%e5%b1%95%e5%8f%8a%e8%bf%91%e5%86%b5%e8%af%b4%e6%98%8e/ - 分类目录: 日常 - 标签: 实习 2023 暑假日常实习进展及近况说明 前言 鉴于全球经济下行压力严峻,中国互联网行业主要发展内容由增量业务转为存量业务,基于对未来工作形势的担忧,本人于 5 月下旬开始投递 2023 暑假日常实习简历。本文旨在记录这些日常实习意向投递进展以及进行一定的总结。 已投递意向 以下投递意向未被记录: 较早前未提交新版简历的意向 非官网投递的意向 Tips: 由于未能及时查看信息,部分流程更新时间是基于查看时间而不是实际发生时间,这意味着它们可能是滞后的。 字节跳动 后端开发实习生-国际电商 投递简历(2023-05-24) —— 流程终止(2023-06-01) 后端开发实习生-抖音 投递简历(2023-05-31) —— 流程终止(2023-06-14) 后端开发实习生-国际化内容安全平台 投递简历(2023-06-13) —— 流程终止(2023-07-06) 游戏测试开发实习生-朝夕光年 投递简历(2023-06-13) —— 流程终止(2023-06-19) 后端开发实习生-飞书业务应用 投递简历(2023-06-13) —— 流程终止(2023-07-05) 测试开发实习生-生活服务 投递简历(2023-06-19) 测试开发实习生-懂车帝 投递简历(2023-07-11) —— 评估中(2023-07-20) —— 流程终止(2023-07-24) 腾讯 软件开发-后台开发方向 投递简历(2023-06-03) —— 测评(2023-06-03) 美团 【实习】软件开发工程师 投递简历(2023-06-04) 游戏测试开发实习生 投递简历(2023-06-14) 实习- Java开发项目实习生2023 投递简历(2023-06-14) 网易 java 开发工程师实习生(严选事业部) 等待筛选结果(2023-06-08) 后台开发实习生(有道事业群) 等待筛选结果(2023-06-14) —— 筛选不通过(2023-07-21) 测试开发实习生(有道事业群) 等待筛选结果(2023-07-11) —— 筛选不通过(2023-07-21) 小米 软件开发工程师(java方向)实习生 投递简历(2023-06-07) —— 评估中(2023-06-08) —— 流程终止(2023-06-20) 软件开发工程师实习生—武汉 投递简历(2023-06-07) —— 评估... - Published: 2023-06-06 - Modified: 2023-06-06 - URL: https://blog.hikarilan.life/tech/1206/%e8%a7%a3%e5%86%b3-thunderbird-%e9%82%ae%e4%bb%b6%e6%97%b6%e5%8c%ba%e9%94%99%e8%af%af%e7%9a%84%e9%97%ae%e9%a2%98/ - 分类目录: 技术 - 标签: Thunderbird 解决 Thunderbird 邮件时区错误的问题 前言 由于我 Windows Mail 收到的某些邮件总有奇怪的问题,遂决定放弃 Windows Mail,改用其他邮件客户端,在尝试了 Outlook 以后,我最终决定换成 Thunderbird。但是 Thunderbird 也不省心,我发现他接收到的邮件显示的时间总是和我差 8 个小时。一番折腾后,总算是找到了解决方案 问题复现 查看邮件发送的实际时间和显示时间的差值,我这里是 8 个小时,正好是本地时区(Asia/Shanghai)和 UTC 时区的差,因此确定为时区问题。 查看开发者控制台查看时间,此时可以看到显示的时区是 UTC 时区: 问题解决 进入“Settings - General - Config Editor”,搜索 privacy. resistFingerprinting,将该值设置为 false,重新启动 Thunderbird,问题解决。 查看开发者控制台,此时时区正常被配置为“China Standard Time”: 原因分析 根据 privacy. resistFingerprinting 键名,大致可以理解为 Thunderbird 为了保护隐私,因此不使用本地时区而使用了 UTC 时区。 - Published: 2023-06-04 - Modified: 2023-06-04 - URL: https://blog.hikarilan.life/tech/1198/java-%e7%9a%84-main-%e6%96%b9%e6%b3%95%e5%a3%b0%e6%98%8e%e7%bb%88%e4%ba%8e%e8%a6%81%e5%8f%98%e5%a4%a9%e4%ba%86%e5%90%97%ef%bc%9f-%e6%b5%85%e8%b0%88-jep-445/ - 分类目录: 技术 - 标签: Java Java 的 main 方法声明终于要变天了吗? —— 浅谈 JEP 445 前言 半天前,reddit 上一篇名为 “Oracle trying to troll us. ”的帖子突然爆火,随后这张图片被传入中文互联网,同样引发了网友热烈的讨论。这篇帖子的文章内容只有这样一张图片: 如果你是一位苦逼的 Java 程序员,那么当你看到这张图的时候也许震惊的会跳起来,但是如果你没有看懂,那就且听我细细往下说... ... JEP 445 的前世今生 JEP 445: Unnamed Classes and Instance Main Methods (Preview) 的标题翻译过来是 “未命名类和实例 main 方法”,仅看标题你可能并不认为和上面那些东西有什么关系,但事实上,上述特性确实是由此 JEP 带来的。 事实上,JEP 445 早在 2023 年 2 月就被创建了,单之所以刚刚才火,是因为 OpenJDK 14 个小时前才批准了这个 JEP 的代码实现:JDK-8306112 Implementation of JEP 445: Unnamed Classes and Instance Main Methods (Preview) by JimLaskey · Pull Request #13689 · openjdk/jdk (github. com) 值得一提的是,JEP 445 是一个即将在 Java 21 中引入的预览(preview)提案,这意味着你需要通过在编译和运行时传入 --release 21 和 --enable-preview 命令行参数才能体验到这个功能 这种简化写法并不是 Java 的特例,其实早在 . NET 6,C# 就引入了一套 "控制台模板" 语法,其允许你在 C# 的主类文件(这里是 Program. cs)这么写: // See https://aka. ms/new-console-template for more information Console. WriteLine("Hello, World! "); 其等价于: using System; namespace MyApp // Note: actual namespace depends on the project name. { internal ... - Published: 2023-05-29 - Modified: 2023-05-29 - URL: https://blog.hikarilan.life/thinking/1184/%e8%ae%b0%e5%8f%82%e5%8a%a0-2023-%e5%b9%b4%e4%b8%8a%e5%8d%8a%e5%b9%b4%e8%bd%af%e8%80%83/ - 分类目录: 心得 - 标签: 软考 记参加 2023 年上半年软考 TL;DR 昨天(5/27/2023),我参加了 2023 上半年度的计算机技术软件专业技术资格(水平)考试(简称软考)的初级程序员科目。考试分为基础知识(上午)和应用技术(下午)。考试总体来说还是非常简单的,通过没什么问题。 开始 要不是周四刷脉脉看到有人问软考,我真把这事儿给忘了,不仅如此,我刚开始把 27 号当成了周天而不是周六,差点又错过了考试。 上午 本来我选的考点是我们学校隔壁,但是可能因为隔壁学校考位满了,所以把我分到了一个离我学校超远的学校... 学校名字就不提了,因为我接下来要开骂了: 这学校的保供有严重的问题,刚进学校的时候完全看不到任何一个指向考场的指示标或是指示牌,往前走看到了一个结果指的是错的!!!(考场应该在第一和第二教学楼,不知道为什么那个指示牌让我们往电教楼走,而电教楼门口甚至摆好了软考的考点说明,但实际上那里根本不是考点)绕了五分钟可算绕到考场了,可不知道为什么学校竟然拿警戒线把教学楼入口围住了,所有人都必须蹲着进去(我刚开始想着是为了防止本校学生进入或者防止提前进场,但是直到下午开考那条绳子依然在那个地方放着... ... )。 这还没完,我们进去以后才发现这学校竟然停电了,而且楼道没有任何应急电源和光照设施。我们所有人必须黑灯瞎火的便往前摸边问每一个教师门口的老师这是哪一个考场... 考试开始以后,先不说考试内容(因为我还没吐槽完),这学校终于搬来了汽油发电机发电,试图拯救我们这一群已经快把眼睛怼到卷子上的考生。当发电机轰隆隆的声音响起,教室变得亮堂起来的时候... ... 不到一分钟,教室就又陷入了一片黑暗... ... 随后,在长达半个小时内,教师的灯不断的突然亮起又突然熄灭,直到一位实在忍不住的考生愤愤不平地大叫道:“能不能把灯关了,眼睛要被闪瞎了。”... ... 不过好在考场的监考老师还是蛮温柔的,并没有出现什么逆天的事情。 于是终于,我们要谈起考试内容了:上午考的是基础知识,75道选择题,共75分,涵盖了算法基础,数据结构,计算机基础的内容。很有意思的一个点是最后五道题竟然是纯英文出题,问题和选项均为英文。好在题目都非常简单,一眼就能看出来答案,例如以下题目(根据记忆大致回忆,翻译为中文): 什么功能保证当一个设备插入计算机时,其可以被自动配置然后使用? A. Plug And Pla... - Published: 2023-05-10 - Modified: 2023-05-14 - URL: https://blog.hikarilan.life/daily/1168/%e8%ae%a1%e7%ae%97%e6%9c%ba%e4%ba%8c%e7%ba%a7%e6%88%90%e7%bb%a9%e5%87%ba%e6%9d%a5%e5%95%a6/ - 分类目录: 日常 - 标签: 计算机等级考试 昨天睡太晚了一大早醒来被同学问成绩如何才知道成绩下来了( 去看了一眼结果,二级 Java 和二级 C 都过了,三级网络技术没过,完全符合我的预期。 - Published: 2023-04-25 - Modified: 2023-04-25 - URL: https://blog.hikarilan.life/tech/1125/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e6%94%af%e6%8c%81%e4%bd%bf%e7%94%a8-chatgpt-%e7%94%9f%e6%88%90%e6%96%87%e7%ab%a0%e6%91%98%e8%a6%81%e6%98%af%e4%b8%80%e7%a7%8d%e4%bb%80%e4%b9%88%e6%a0%b7%e7%9a%84%e4%bd%93/ - 分类目录: 技术 - 标签: WordPress, 开发 让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验? 起因 Sakurairo 主题支持了基于 ChatGPT 的 AI 摘要功能,我有点眼红,但是因为那是个主题限定功能,而我用的又是 Argon,遂想着让 Argon 也支持 AI 摘要功能。 截至目前,此功能已经合并到了 argon-theme 主仓库的 dev 分支,pr 现场可参见:#607 开发 和 Sakurairo 相同,我采用了 haozi-team/chatgpt-php 库以对接 OpenAI 接口(顺便给 Argon 添加了 Compose 支持) 。 接下来,在 settings. php 和 inc/fun/post-extra-meta-editor. php 添加了全局和文章单独设置,以允许用户配置 OpenAI 地址,密钥,以及是否需要使用 AI 摘要功能。 最后,在 inc/fun/post. php 和 template-parts/entry/excerpt. php 添加页面样式,就完成了开发。 有关 ChatGPT 部分的核心代码如下: - Published: 2023-04-21 - Modified: 2023-04-21 - URL: https://blog.hikarilan.life/tech/1103/%e5%be%ae%e4%bf%a1%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91%e5%a4%a7%e5%9d%91%e7%9b%98%e7%82%b9/ - 分类目录: 技术 - 标签: 开发, 微信小程序 微信小程序开发大坑盘点 起因 前几天心血来潮,想给学校设计个一站式校园小程序,可以查询成绩,考试信息,课表之类的(本来想法里是还想包括一些社交功能的,但这个因为资质问题暂且搁置了)。其实很久以前就有大概了解过微信小程序的一些概念,那个时候试图用 uni-app 做,但是这玩意太难用所以不了了之了。 于是这次打算正经的用微信自己的那套东西做,结果不出意外的是入了深坑... ... 大坑 微信小程序云函数外部调用异常 微信小程序提供 wx. request 发起 HTTP 请求,由于微信不是浏览器,没有跨域限制,这方便了很多事,但是由于 wx. request 函数只能对 HTTPS 协议的地址发起请求,而我们学校的教务系统又是清一色的 HTTP,因此我需要一个可以用来帮助我发起 HTTP 请求的转发接口。 对于这种简单需求,云函数显然是最好的解决方案,进而我发现微信小程序自带云函数的支持,于是便兴冲冲地写了一段 NodeJS 代码,放上去跑。 结果我发现不知道为什么,请求其他网站都没问题,唯独请求我们教务系统就会原地超时。经过了几个小时的调试,最后以失败告终,转而改用腾讯云的云函数。 代码也十分简单: const url = require('url') const express = require('express'); const app = express const port = 9000 const rp = require('request-promise') app. use(express. json); app. post('/', async (req, res) => { const jar = rp. jar try { const response = await rp({ ... req. body, resolveWithFullResponse: true, simple: false, jar: jar }) res. json(response) } catch (e) { res. json(e) console. error(e) } }) app. listen(port, => { console. log("Successfully loaded") }) 其中额外引入了 request-promise 库(expres... - Published: 2023-04-20 - Modified: 2023-04-20 - URL: https://blog.hikarilan.life/tech/1013/%e8%a7%a3%e5%86%b3-wordpress-%e6%8f%90%e4%ba%a4%e8%af%84%e8%ae%ba%e5%89%8d%e5%8f%b0%e8%b6%85%e6%97%b6%e5%8f%91%e9%80%81%e5%a4%b1%e8%b4%a5%ef%bc%8c%e5%90%8e%e5%8f%b0%e6%ad%a3%e5%b8%b8%e6%8e%a5%e6%94%b6/ - 分类目录: 技术 - 标签: WordPress, 腾讯云CDN 解决 WordPress 提交评论前台超时发送失败,后台正常接收评论的问题 问题引入 大概是一两个月前,我将博客接入了腾讯云 CDN,也自从那个时候开始,我的博客开始出现一些奇奇怪怪的问题,他们大多数都是因为缓存策略导致的,后来也七七八八的修复了,但唯独有一个问题一直没有得到解决:提交评论一直显示提交中,直到超时显示提交失败,但是后台可以正常收到评论。 起初我觉得是腾讯云 CDN 的缓存问题,经过查询发现提交评论是向 wp-admin/admin-ajax. php 发送了 POST 请求,遂添加了额外的缓存策略,但是并没有得到解决。 随后又从前台报错入手,发现总是得到 net::ERR_HTTP2_PROTOCOL_ERROR,遂以为是 CDN 启用 HTTP2 协议的问题(事实这里我确实也做错了,腾讯云 CDN 不支持 HTTP2 回原,但是我 Nginx 上默认启用了 HTTP2),但是关掉后问题依旧存在,只不过错误信息变成了 CONNECTION_TIMEOUT。 于是我以为是我的小水管网速太慢请求超时导致的,但是即使将 CDN 超时时间调到 60 秒,依旧无济于事。在经过多次查询后依然得不到一个解决方案。于是这个事情就草草收场了。 问题解决 昨天晚上心血来潮,又去查了一下这个问题,然后偶然间看到了 WordPress 回复评论卡顿、无法发送邮件问题解决办法 这篇文章,其中表示回复评论卡顿很可能是由于邮件发送不出去导致的。 这点醒了我,因为我近两个月完全没有收到 WordPress 给我发来的任何邮件(由于比较懒,我没有走 SMTP,而是让 WordPress 用默认的 25 端口直接发信的),看了一下慢日志,果然注意到 wp_mail 函数赫然在列,由此定位了问题。 解决方案也很简单,装一个 WP SMTP Mail 插件,配置一下 SMTP 服务就好了(腾讯云轻量应用服务器默认是允许所有出站流量的,并没有封端口的问题)。 至此,这个困扰了我两个月的问题得到了解决。 - Published: 2023-04-01 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/daily/997/%e5%86%9c%e6%9d%91%e4%b8%a7%e8%91%ac%e7%a5%ad%e7%a5%96%e4%b9%a0%e4%bf%97%e8%80%83/ - 分类目录: 日常 - 标签: 日常, 生活 农村丧葬祭祖习俗考 比我大二十岁但是却和我同辈的远房哥哥在我的耳边小声说道: “看到你面前这座墓了吗,这是活人给自己建的... ... ” 今天是四月一日,我被从学校叫回来前往爷爷的老家参加太爷爷和太爷爷其他旁系亲人的丧葬仪式,俗称「祭祖」。对于祭祖,我在过去几年也曾参加过,每次祭祖,无非就是放放鞭炮,磕磕头之类的繁文缛节罢了,但是这次却有所不同,也使我产生了新的思考。 经过两小时的车程,我们全家终于赶到了这个熟悉又陌生的不起眼小乡村,稍作休息,我们便跟着村民一起前往村后祭祖了。令我惊讶的是,与先前不同,这次参加祭祖的人非常多,整个祭祖队伍至少有二三十人(尽管我都不认识,但后来了解到,这些都是太爷爷的血脉,也就是我爷爷兄弟的儿子或孙子,某种意义上,他们都是我的远房亲戚)。 二三十人之中有老有小,都共同前往村后的一片空地——接下来映入眼帘的,就是有大有小各式各样的大墓,有的贴着「福」字,有着写着荣华富贵一类的话。 接下来,一群人便行动了起来,挂纸幡,烧黄纸,放鞭炮,行大礼... ... 相同的动作,开始在一座一座各式的墓碑前不断重复,过程中,我能听到旁边的远房亲戚在跟其他人解释,这是太爷爷的某个儿子或是女婿的墓。令我惊讶的是,整个过程中大家并不严肃,而是有说有笑,就好像现实才是真正的地狱,死亡才迎来真正的解脱一样。 不知道为什么,太爷爷的墓与其他人位置不同,在村里几乎最高的山坡上,一行人踩着陡峭的泥路,慢慢走向山顶。在路上,我内心其实已经想好了无数个狗血的段子,用来解释为什么太爷爷的墓位置如此特殊,我最喜欢的一个版本,是一个狗血的家庭纠纷剧:太爷爷和家人不和,死后的墓碑也特立独行,非要立在山上而不是山下,就是为了表现自己高人一等... ... 如果这个故事是真的,那么我们这些后辈在杂草之间穿行,爬上山坡的过程,是否也是一种为死人的赎罪呢... ... 祭拜完太爷爷,正打算转头下山,却被我爸叫住:“要不要吃香蕉?” 我震惊的望向我爸手指向的,摆在坟头的香蕉,瞳孔地震:“这能吃???” 旁边的某位远房亲戚转过头来,笑着对我说道:“怎么不能吃,吃了还有福气呢!” 一时间,我竟不知道到底是谁思想保守了。 下山已是下午一两点,二三十人聚在大院里,不知从哪里搬来了二三十个板凳和五六张桌子,拼到一起,边说边笑的吃了一顿饭(我第一次在农村吃这种大席,虽然菜式并不多,但是氛围绝对是相同... - Published: 2023-03-28 - Modified: 2023-07-21 - URL: https://blog.hikarilan.life/thinking/989/%e4%b8%80%e5%ae%9a%e4%b8%8d%e8%83%bd%e9%94%99%e8%bf%87%e7%9a%84%e4%b8%80%e5%9c%ba%e5%ad%a6%e4%b9%a0%e4%b9%8b%e6%97%85-%e7%ac%ac%e4%ba%94%e5%b1%8a%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8/ - 分类目录: 心得 - 标签: 青训营 一定不能错过的一场学习之旅 —— 第五届字节跳动青训营参赛有感 TL;DR 在 2022 年十二月中旬至 2023 年二月下旬期间,我参加了由字节跳动的稀土掘金社区举办的第五届字节跳动青训营(后端,基础班),在完成了青训营所有学习任务的前提下,与大项目队友一起完成了简易版抖音后端的大项目作业并在大项目答辩中得到了第五名(一等奖码如磐石奖)的好成绩;最终,我获得了本届青训营优秀营员的荣誉和证书。本文简要讲述了本人参加青训营的大致历程和感想。 晒晒证书先: 起航 也是一个偶然的机会,听说了字节跳动青训营这种形式,当听说了第五届字节跳动青训营后端部分正好是学习 Go 语言的相关知识,而我正巧又打算学习 Go,于是欣然报名。 青训营是线上授课+大作业答辩的形式,前一个月先进行线上学习,并公布大作业题目,后一个月根据学习到的内容和大作业题目进行开发,最后由导师对入围决赛的大项目进行答辩。 本届字节跳动青训营分基础班和进阶班两个班种,通过入营考试(基础知识,算法题)决定划分到哪个班。进阶班在课程时间上比基础班更早,且进阶班有直播课,而基础班均是录播。 因为算法题做的一般,因此我被分到了基础班(基础班也卧虎藏龙,从国内顶尖学府到美硕英本,大佬层出不穷)。 过程 本届青训营的流程安排大致是这样: 班级设置和课程内容则是: 从一月中旬青训营开营至二月中旬期间,我便在青训营进行相关课程的学习,并撰写了十多篇青训营笔记,中途,我认识了很多志同道合的伙伴,经过了互相了解和撮合,最后组成了一个四人小组“Toktik-Team”,共同进行大项目“Toktik”的开发。 本届后端大项目的题目是编写一个简易版的抖音后端,青训营给出了需要实现的后端服务接口和示例客户端,由大项目团队实现后端服务接口。 Toktik 是一个基于 Go 的微服务后端项目,使用 Kitex 和 Hertz 作为 HTTP / RPC 框架,我主要负责了这个项目的视频业务服务,发布业务服务(部分)和评论业务服务,除此之外,还兼任了 DevOps,文档编写,质量保证等职责。经过了半个多月的不懈努力,终于完成了全部两个方向的需求接口,并在此基础上添加了许多不错的功能。 有关此项目的具体实现细节和架构文档还可参见:TokTik Team 青训营后端结业项目答辩汇报文档(副本)。 结束 本次青训营后端基础班大项目最终获奖 26 个项... - Published: 2023-03-26 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/thinking/980/%e5%88%9a%e8%80%83%e5%ae%8c%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%ad%89%e7%ba%a7%e8%80%83%e8%af%95%ef%bc%8c%e8%ae%b0%e5%bd%95%e4%b8%80%e4%ba%9b%e6%b3%a8%e6%84%8f%e5%88%b0%e7%9a%84/ - 分类目录: 心得 - 标签: 计算机等级考试 昨天(周六)刚考完计算机等级考试,总共报了三门科目,分别是二级C语言,二级Java和三级网络技术。两个二级题都蛮简单,应该稳的;三级其实就是凑个热闹去的,实际上也确实不会(路由表,路由器配置什么的完全不懂,不过Wireshark和netstat之类的题还能勉强写写)。 简单讲讲二级C和二级Java的一些注意点吧。 C语言的考试题就很普通的那种,操作题基本上就是算法填空,没啥好讲的。 Java就很有的说了,因为他 JDK 版本太老了,甚至还会考Swing和Applet(Applet! )。好在今年本省的考题中只在选择题中涉及了一些,并没有在操作题中体现,不然我会被气死的。 值得注意的是,二级C和二级Java都是有配IDE的,二级C配的是VS2010,二级Java配的是Netbeans(中国教育考试版2007),C语言编译器应该是C99标准,Java是JDK1. 6(非常老)。 值得注意的是,这些IDE都并不是开箱即用的,需要遵循以下方式才能发挥这些IDE的完整功能: 对于VS2010,你不应该直接打开. c文件,而应该打开在考生文件夹中提供的. sln(Visual Studio 解决方案文件),这样才能正确开启代码补全提示。 对于Netbeans,则应该点击文件->新建->新建NCRE项目,选中考生文件夹位置(默认路径就是)来创建一个NCRE项目,只有这样,Netbeans才能正确识别到 JDK 并为此 JDK 提供 javadoc(这很重要!)。 总体来说就是这样,接下来就等出分咯(到时候应该会在博客上公布一下结果) - Published: 2023-02-13 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/thinking/961/%e5%88%b7%e6%9c%ba%e9%82%a3%e4%ba%9b%e4%ba%8b2/ - 分类目录: 心得 - 标签: MIUI, 刷机 刷机那些事(2) 前言 大概一个月前,我的 Redmi Note 10 Pro 光荣阵亡了,于是,在经过了一个月小钱钱的攒后,在二月初,我终于入手了 Redmi K60 8+256G 版本,然后,又经过七天的煎熬,我终于成功解锁了 Bootloader,又一次踏上了刷机的不归路。 记得上一次刷机已经是一年半前了,那个时候用的还是 MTK 芯片的 Redmi 10X,这次用上了骁龙 8+,情况又有了一些不同... ... 解锁 其实每次阻止我刷机的主要原因,就是因为数据恢复起来太难了,包括这次刷机,即使我提前使用 MIUI 的备份功能对数据进行了全盘备份,依然有一些软件(以 Google Play Store 以及从 Google Play Store 下载的 App 为主)无法正常打开,并且一部分软件需要重新登录(尤其是小米运动健康,每次都需要将手表恢复出厂设置再重新配对,可以说是十分痛苦了)。 因此,在刚入手 K60 的时候,我就开始在网上搜素可以免等待解锁 BootLoader 的方式,很遗憾的是,除了 MTK 芯片目前可以有办法绕过以外,还没有什么靠谱(且免费)的方法解锁。 没办法,只能等七天再解锁了。再经过七天的煎熬后,我终于熟练的备份好手机数据,进入 FastBoot 模式,开始解锁之后(这里还有一个小插曲,不知道是我记错了还是什么,第七天晚上,当我备份手机数据,开始解锁的时候,小米的解锁工具却告诉我还要等 20 小时,就很离谱),我却发现无论如何抖无法正常解锁,并且 MIUI 解锁工具给了我一个很模棱两可的报错: 未知错误(-1) 网上查询说是网络异常,可是我换了三个不同的网络环境得到的依然是同一个报错,于是我开始高强度搜索这个问题,但还是没有可用的解决方案。 但后来,我在 MIUI 解锁工具的 log 中看到了这么一句: getvar:anti FAILED (remote: GetVar Variable Not found). 顺着这个线索入手,我在 XDA 论坛上发现坛友的一个解释:这是 USB 3. 0 的问题,尝试用 USB 2. 0 连接即可。 于是,我翻出来了我家十年前的买的联想台式机(其实上次也是用这台机子解锁的),插上线缆,开始解锁,在我的震惊中,手机解锁成功了!(其实如果将线缆慢速插入 USB 3. 0 口,操作系统应该会把这个线缆... - Published: 2023-02-12 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/tech/957/%e6%9e%81%e7%ae%80%e7%89%88%e6%8a%96%e9%9f%b3%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%ae%9e%e7%8e%b02-mock-%e5%92%8c%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95-%e9%9d%92%e8%ae%ad%e8%90%a5/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 极简版抖音项目的实现(2) —— Mock 和单元测试 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 15 天 完结撒花!小小庆祝一下。 前言 本文上接 极简版抖音项目的实现 | 青训营笔记,介绍了该项目视频流服务的单元测试代码。 进行单元测试 Go 原生支持单元测试(Unit Test),为了对我们的视频流服务进行单元测试,创建 handler_test. go 文件。 首先,在 TestMain 函数中初始化数据,这包括我们一些预先设定好的来自上游服务的测试数据和我们预期的结果数据: const mockVideoCount = 50 var ( testVideos = make(*model. Video, mockVideoCount) respVideos = make(*feed. Video, mockVideoCount) ) var mockUser = user. User{Id: 65535} func TestMain(m *testing. M) { now := time. Now. UnixMilli for i := 0; i < mockVideoCount; i++ { test := &model. Video{ Model: model. Model{ ID: uint32(i), CreatedAt: time. UnixMilli(now). Add(time. Duration(i) * time. Second), }, UserId: mockUser. Id, Title: "Test Video " + strconv. Itoa(i), FileName: "test_video_file_" + strconv. Itoa(i) + ". mp4", CoverName: "test_video_cover_file_" + strconv. Itoa(i) + ". png", } resp := &feed. Video{ Id: uint32(i), Author: &mockUser, PlayUrl: "https://test. com/test_video_file_" + strconv. Itoa(i) + ". mp4", CoverUrl: "https://test... - Published: 2023-02-08 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/tech/948/%e9%83%a8%e7%bd%b2-casdoor-%e8%ba%ab%e4%bb%bd%e8%ae%a4%e8%af%81%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e5%b9%b6%e5%ae%9e%e7%8e%b0%e9%80%8f%e8%bf%87-oauth2-0-%e7%99%bb%e5%bd%95%e5%88%b0-wordpress/ - 分类目录: 技术 - 标签: Casdoor, XCTRA, 开发 部署 Casdoor 身份认证管理系统并实现透过 OAuth2. 0 登录到 WordPress 前言 由于考虑到 XCTRA 未来可能会有非常多的子服务,如果全部采用单一认证可能会非常复杂,于是这几天一直在研究 IAM(Identity and Access Management)系统,在尝试了 Apache keycloak,JustAuthPlus 等开源项目后,最终选择了 Casdoor。 Casdoor 是什么 Casdoor 是一个支持 OAuth 2. 0、OIDC 和 SAML 的 UI 优先集中式身份验证/单点登录 (SSO) 平台,使用 Go 开发,前后端分离,内置第三方应用登录服务。 让我选择 Casdoor 而不是其他项目的原因是因为首先 Casdoor 是由国内开发的,对大陆网络环境支持较好,其次是 Casdoor 奉行“UI 优先”的理念,这对于我这种颜值党来说非常友好,最后,Casdoor 的安装十分简单,仅需 Go 和 NodeJS(Yarn) 环境即可运行,十分容易(由于一些原因,我的服务器没有办法使用 Docker 直接部署环境,因此必须手动部署) Casdoor 有四个核心概念,分别是 组织(Organization), 用户(User), 应用(Application) 和 提供商(Provider)。组织承载用户和应用,一个用户只能隶属于一个组织,但可以登录到自己组织的多个应用中;而提供商啧代表了某种身份验证方式,例如电子邮件验证、短信验证、OAuth 验证等。 部署 Casdoor 配置 Casdoor 由于上述原因,我选择了手动部署的方式部署 Casdoor 而不是使用 Docker,如果希望使用 Docker 部署的话可以直接遵循 Casdoor 文档进行:(可选) 使用 Docker 运行 | Casdoor。 要想部署 Casdoor,则至少需要以下运行环境: Go 1. 6+ Node. js LTS(16或14) Yarn 1. x 以及准备数据库以存放数据。Casdoor 当前支持 MySQL,MariaDB,PostgreSQL,SQL Server,Oracle,SQLite 3,TiDB,这是通过 Go 的 XORM 库支持的。 接下来,将 Casdoor 仓库 clone 到本地以准备开始配置: gi... - Published: 2023-02-06 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/tech/938/%e6%9e%81%e7%ae%80%e7%89%88%e6%8a%96%e9%9f%b3%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%ae%9e%e7%8e%b0-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 极简版抖音项目的实现 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 11 天 前言 本文大致介绍了本人及本人所在小组为第五届字节跳动青训营后端专场大项目需求 —— 「实现一个极简版抖音」的部分实现细节。 需求 本届后端青训营大项目要求实现一个极简版抖音的后端服务,该后端服务通过 HTTP 协议向已被设计好的前端 App 传递数据,并通过 URL Query 获得请求参数。 该服务大致有如下类别的接口: 用户鉴权 用户基本信息 用户社交 视频投稿 视频流 视频互动 项目梗概 TokTik 项目基于 Go 开发,采用微服务架构,由网关(Gateway)服务接受 HTTP 请求,将其转换为 RPC 调用后传入路由对应的其他服务。服务内部统一使用 RPC 调用进行数据交换。 TokTik 使用 protobuf 作为 IDL 语言,使用 gorm 作为 ORM 框架,使用 Kitex 作为 RPC 框架,使用 Hertz 作为 HTTP 框架,使用 Consul 进行服务注册与发现,使用 PostgreSQL 作为数据库,使用 Amazon S3 作为对象存储服务,使用 monkey 作为单测 mock 框架。 分工及版本控制 Toktik 项目使用 Git 作为版本控制工具,并通过 GitHub 托管代码。目前,本人在项目中负责“视频流”接口的实现。 实现 视频流接口的接口基本信息和定义如下: 不限制登录状态,返回按投稿时间倒序的视频列表,视频数由服务端控制,单次最多30个 Route: /douyin/feed/ Parameter: latest_time 位置:query 类型:string 必填:否 说明:可选参数,限制返回视频的最新投稿时间戳,精确到秒,不填表示当前时间 token 位置:query 类型:string 必填:否 说明:可选参数,用户登录状态下设置 Response Model(JSON): type ApifoxModel struct { NextTime *int64 `json:"next_time"` // 本次返回的视频中,发布最早的时间,作为下次请求时的latest_time StatusCode int64 `json:"status_code"`// 状态码,0-成功,其他值-失败 StatusMsg *str... - Published: 2023-02-04 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/tech/932/%e5%be%ae%e6%9c%8d%e5%8a%a1%e4%b8%ad%e7%9a%84%e6%9c%8d%e5%8a%a1%e6%b2%bb%e7%90%86-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: 开发, 青训营 微服务中的服务治理 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 9 天 前言 本文介绍了微服务架构中的服务治理方式,包括服务注册与发现,服务发布和稳定治理。 什么是微服务 微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API 进行通信的小型独立服务组成。 这些服务由各个小型独立团队负责。 微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。 —— Amazon AWS 对于微服务,有以下基本概念: 服务(Service):一组具有相同逻辑的运行实体。 实例(Instance):一个服务中,每一个运行实体即为一个实例。 集群(Cluster)通常指服务内部的逻辑划分,包含多个实例。 有状态/无状态服务:指服务的实例是否存储了可持久化的数据(例如磁盘文件) 微服务架构的出现和应用大幅度的提升了大型程序的开发效率,降低了程序故障率,但其复杂的架构设计也引来了治理、运维难度飙升,观测难度大,安全性较低等劣势。 我们通过引入许多的服务治理模式来解决这些问题。 服务注册与发现 服务注册与发现是为了解决微服务中服务间通信地址难以确定的问题。 想象一个服务 A 试图通过网络请求调用服务 B 的某个接口,他应该如何确定服务 B 的网络地址? 如果我们通过硬编码的方式在服务 A 指定网络地址,灵活性低暂且不说,对于具有多个实例的服务 B,一个网络地址只能指定到同一个服务实例中,这会导致服务 A 的所有实例全部向服务 B 的单一实例进行网络请求,这明显是不符合我们负载均衡要求的。 我们可以尝试使用配合 DNS 的方式,不直接传入 IP 地址,而是传入域名,通过修改 DNS 服务中域名的 IP 地址来解决上文中灵活性的问题。但这依然产生了问题,首先负载均衡问题仍未得到解决,其次本地 DNS 由于存在缓存,因此我们没办法做到服务更改的实时切换,亦无法支持服务实例得探活检查;最后,这种方式由于端口依然是写死在代码里的,我们依然没有办法自定义端口号。 为了解决这些问题,我们引入服务注册与发现的概念。 在服务注册与发现的体系中,我们新增了一个统一的服务注册中心服务,用于存储服务名到服务实例的映射,需要进行跨服务网络请求的服务只需要向服务注册中心查询指定服务名便可得到该服务名包括的所有实例地址。 当需要下线一个旧实例时,会从服务注册中心... - Published: 2023-02-02 - Modified: 2023-02-02 - URL: https://blog.hikarilan.life/tech/930/%e5%88%86%e5%b8%83%e5%bc%8f%e7%b3%bb%e7%bb%9f%e4%b8%ad%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e4%ba%8b%e5%8a%a1-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: 开发, 青训营 分布式系统中的数据库事务 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 8 天 前言 本文简述了在分布式系统中使用的分布式数据库事务方案。 什么是分布式 分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算,分布式存储,分布式数据库等。 在分布式系统中,由于不同节点可能维护各自的数据库,但这些数据库有需要保持同步,这就可能引发同步问题。 为了解决这些问题,我们引入分布式事务的解决方案。 分布式事务 在分布式事务中,有多种处理方案可以在不同程度上解决我们的问题: 二阶段提交 二阶段提交(Two-phase Commit)是为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法。 在二阶段提交算法中,我们需要引入三个假设: 引入协调者(Coordinator)和参与者(Participants),互相进行网络通信 所有节点都采用预写式日志,且日志被写入后即被保持在可靠的存储设备上 所有节点不会永久性损坏,即使损坏后依然可以恢复 在以上三个假设中,二阶段提交算法以如下方式工作: 协调者作为一个中心节点,负责处理参与者之间可能存在的冲突,参与者负责提交事务并告知协调者。 当希望提交事务时,会先进入 Prepare 阶段,协调者向参与者发送询问信息,参与者执行事务,但不提交,返回自己当前的状态是否正常。 当所有参与者返回正常的确认信号后,进入 Commit 阶段,协调者即可通知参与者进行事务的 commit,并收到 Ack 信号确认 commit 完成。 此时,可能出现以下异常情况: 协调者未宕机,但参与者宕机,Prepare 阶段的参与者向协调者返回错误信号;此时协调者将通知所有参与者对已进行的 commit 进行 rollback 操作以保证数据一致。 协调者宕机,但参与者未宕机,此时只需更换新的协调者,然后重新进行二阶段提交即可。 协调者和参与者均宕机,此时由于无法确认状态,需要数据库管理员接入,防止数据库进入不一致的状态。 二阶段提交算法一定程度上解决了分布式事务提交的数据不一致问题,但也存在缺陷: 性能问题。二阶段提交需要多次节点间的网络通信,耗时过大,同时资源需要进行锁定,徒增资源等待时间。 协调者单点故障问题。如果事务协调者节点宕机,需要另起新的协调者,否则参与者处... - Published: 2023-02-01 - Modified: 2023-02-02 - URL: https://blog.hikarilan.life/tech/926/%e6%b5%85%e8%b0%88%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b%e6%9e%b6%e6%9e%84%e5%8f%8a%e5%85%b6%e6%bc%94%e8%bf%9b-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: 开发, 青训营 浅谈软件工程架构及其演进 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 7 天 前言 本文介绍了软件工程架构及其演进史,并包含了企业级后端架构刨析等内容。 什么是架构 软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构会包括软件组件、组件之间的关系,组件特性以及组件间关系的特性。软件架构可以和建筑物的架构相比拟。软件架构是构建计算机软件,开发系统以及计划进行的基础,可以列出开发团队需要完成的任务。 —— Wikipedia 简单来讲,软件架构就像建筑的地基一样,为指导软件实现的方法起到重要作用。只有地基坚实了,大厦才能盖的高。 我们以蛋糕店为例,假设有人想要开一家蛋糕店,那么作为蛋糕店的老板,一开始他可能会这样布置他的蛋糕店... 单机架构 所谓单机架构,就是把所有功能都实现在一个进程里,并部署在一台机器上。对于蛋糕店来讲,就是一家蛋糕店里只有一个人工作,且这个人要负责所有制作,售卖蛋糕的工作。 这种架构的好处是,开发和部署起来十分简单,对于小型应用来说足矣。但对于大型应用来说,他的并发性不足,存在性能瓶颈(如著名的 The C10K problem),并且无法保证高可用性。对于蛋糕店来讲,就是这个人一个人不能服务成千上万的人,且这个人必须24小时不停的干,无法停止工作。 于是,单体架构和垂直应用架构被提出用于解决此类问题。 单体架构和垂直应用架构 单体架构通过分布式部署来对服务进行扩容。对于蛋糕店来讲,就是招了多个师傅去做相同的工作,招的师傅越多,能同时接待的客户数量就越多。 而竖直应用架构则更进一步,将服务进行竖直切分,让将一个服务切分成多个功能互不相干的服务,独立运行。对于蛋糕店来讲,就是招了多个师傅,但是这些师傅有的只会做肉松蛋糕,有的只会做慕斯蛋糕... ... 值得一提的是,无论是单体架构还是垂直应用架构,都需要一个中心化的负载均衡层引导用户使用需要的服务。对于蛋糕店来讲,就是类似大堂经理的职责啦。 单体架构和垂直应用架构解决了单机架构的停服问题,保证了高可用性,因为其中一个服务下线并不影响其他服务正常运行,或可由其他服务替代线下服务;同时,这种架构还支持水平扩容,只需要简单增加服务数量,就可以轻松服务更多用户。但是这种架构的缺点是,每个服务虽然各自独立,却负责了太多职能(例如肉松蛋糕师傅虽然只做肉... - Published: 2023-01-31 - Modified: 2023-02-02 - URL: https://blog.hikarilan.life/tech/923/%e4%bb%8e%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e5%bc%80%e5%8f%91%e7%9a%84%e8%a7%92%e5%ba%a6%e5%88%87%e5%85%a5%e7%bc%96%e8%af%91%e5%99%a8%e5%8e%9f%e7%90%86-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94/ - 分类目录: 技术 - 标签: 开发, 青训营 从规则引擎开发的角度切入编译器原理 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 6 天 前言 本文试图从规则引擎开发的角度切入编译器原理相关内容,介绍编译原理的基本概念。 认识规则引擎 什么是规则引擎 业务规则引擎是在运行时生产环境中执行一个或多个业务规则的软件系统。这些规则可能来自法律法规(“员工可以因任何原因或无理由被解雇,但不能出于非法原因”)、公司政策(“所有一次花费超过 100 美元的客户将获得 10% 的折扣”)或其他来源。业务规则系统使这些公司策略和其他操作决策能够独立于应用程序代码进行定义、测试、执行和维护。 —— Wikipedia 思考如下例子:某商城开设一个活动,用户购买相应产品获得可以商城积分(对应某种业务逻辑),听起来用代码实现会很简单。但是,如果积分获取规则不断更改(对应业务逻辑的更改),那么程序员就需要不断地修改代码以实现业务逻辑,这无疑增加了无意义的工作。 规则引擎则是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。这样,业务人员便可以通过规则引擎直接修改规则决策,而避免通过开发人员修改,增加工作效率,同时解耦合了工作。 规则引擎的组成 规则引擎由三部分组成: 数据输入。接受使用预定义的语义编写的规则作为策略集,比如 price > 500,接受业务的数据作为执行过程中的的参数,比如价格、标签等; 规则理解。能够按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义; 规则执行。根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行见擦汗,确保执行结果正确。 规则引擎的应用 风控对抗 活动策略运营 数据分析和清洗 ... ... 编译原理基本概念 词法分析(Lexical Analysis) 词法分析就是把源代码字符串转换为词法单元(Token)的过程。 例如,price > 500 && (isNewUser || userLevel > 5) 这段表达式可被分割为 price, >, 500, &&, (, isNewUser, ||, userLevel, >, 5, ) 几部分(Token)。 我们可以通过有限自动机(Finite-State... - Published: 2023-01-30 - Modified: 2023-04-19 - URL: https://blog.hikarilan.life/tech/913/%e4%bd%bf%e7%94%a8-tauri-%e5%bc%80%e5%8f%91%e4%b8%80%e4%b8%aa%e5%9f%ba%e4%ba%8e-web-%e5%92%8c-rust-%e6%8a%80%e6%9c%af%e6%a0%88%e7%9a%84%e8%b7%a8%e5%b9%b3%e5%8f%b0%e6%a1%8c%e9%9d%a2%e5%ba%94%e7%94%a8/ - 分类目录: 技术 - 标签: Minecraft, Rust, Tauri, 开发 使用 Tauri 开发一个基于 Web 和 Rust 技术栈的跨平台桌面应用(Minecraft Server Player UUID Modifier) 前言 前些天在某 IDC 售后群里潜水,看到很多 MC 服主都在为正盗版 UUID 转换发愁(如果您不理解的话,Minecraft 服务器可以被设置为正版和盗版两种验证模式,而在此两种模式下运行的服务器实例为玩家生成的唯一标识符,也即 UUID 是完全不同的,前者从 Minecraft 正版验证服务直接获取,后者由服务端以玩家 ID 直接生成 UUID v3),遂打算开发一款能够快速转换玩家 UUID 的桌面应用。 于是,在选择桌面应用技术栈时犯了难:我个人 WPF 开发不够熟练;Compose 性能又不太好,而且还有很多问题;Electron 又太臃肿... ... 最后,一个叫做 Tauri 的跨平台桌面应用开发框架吸引了我 —— 其前端可以使用传统的前端三件套进行开发,后端则是使用 Rust 编写;在完全支持前端包管理器(npm/Yarn/pnpm)的同时也支持 Rust 的 Cargo;最令我惊叹的地方是,其二进制文件不需要打包一个臃肿的 CEF 框架,而是调用各操作系统的本地 WebView 框架(Windows 上是 Edge WebView 2 框架,MacOS 和 Linux 上是 Webkit 框架)显示 UI。 考虑到正好前几天学习了 Rust 开发,正好可以拿来练练手,于是决定使用 Tauri(前端 Vue,后端 Rust)开发这款 Minecraft Server Player UUID Modifier(MCSPUM)。 开始使用 Tauri 进行开发 要开始 Tauri 开发,必须进行一些前置准备工作,在 Tauri 的文档Prerequisites | Tauri Apps 中展示了如何部署前置框架。对于 Windows 来说,需要使用 Build Tools for Visual Studio 2022 部署指定 C++ 生成工具,安装 WebView 2 框架(如果操作系统未内置),然后安装 Rust;对于 MacOS 和 Linux,则需要安装各自的框架和 Rust。 随后,便可以使用喜欢的包管理器(亦或者不使用任何包管理器)快速部署 Tauri 模板程序,如Cargo(此部署... - Published: 2023-01-20 - Modified: 2023-02-09 - URL: https://blog.hikarilan.life/tech/909/%e4%b8%80%e6%96%87%e5%ad%a6%e4%bc%9a-go-%e7%9a%84%e4%b8%89%e4%b8%aa%e4%b8%bb%e6%b5%81%e5%bc%80%e5%8f%91%e6%a1%86%e6%9e%b6%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 一文学会 Go 的三个主流开发框架| 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 5 天 前言 本文介绍了三个 Go 主流开发框架 GORM,Kitex,Hertz 的基本使用方法,覆盖了 ORM,RPC,HTTP 三个领域。帮助读者快速入门 Go 工程开发。 GORM GORM 是一款面向 Go 开发的,对开发人员友好的,“梦幻般的” ORM 库。(The fantastic ORM library for Golang aims to be developer friendly. ) 什么是 ORM 在学习 Gorm 前,你应该先了解什么是 ORM。ORM 全称Object–relational mapping,即对象关系映射,是一种用于在关系数据库和面向对象的编程语言堆之间转换数据的编程技术(Wikipedia,并非只有面向对象语言才支持 ORM,事实上,Go 就不是一个面向对象语言)。通过 ORM 技术,我们可以将关系数据库中某个数据表的结构关联到某个类/结构体上,并通过修改类/结构体实例的方式轻易的完成数据库增删改查(CRUD)的任务。通过 ORM 技术,我们得以以一种更加友好且高效的方式,在尽量不接触 SQL 语句的情况下操作数据库。 在 Java 中,常见的 ORM 框架有 Mybatis, MyBatis-Plus, Hibernate 等。 使用 GORM GORM 增删改查 GORM 并不包含在 Go 标准库中,因此,我们需要先安装 GORM 及需要连接对应数据库的驱动。Gorm 官方支持的数据库类型有:MySQL, PostgreSQL, SQlite, SQL Server。以下命令通过 Go Module 拉取并添加 Gorm 及 MySQL 数据库驱动: go get -u gorm. io/gorm go get -u gorm. io/driver/mysql 完美!如此一来,我们便可通过 GORM 连接 MySQL 数据库并进行数据库编程了。以下代码展示了一段用于快速入门的 GORM 示例,我们将在下文详细解释它们: package main import ( "gorm. io/gorm" "gorm. io/driver/mysql" ) type Product struct { gorm. Model Cod... - Published: 2023-01-19 - Modified: 2023-01-20 - URL: https://blog.hikarilan.life/tech/903/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e7%9c%8b%e5%be%85-go-%e7%9a%84%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 从 Java 的角度看待 Go 的内存管理| 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 4 天 前言 本系列文章试图从一名 Java 开发者(有时也会穿插其他语言)的角度窥探 Go 语言,并以注释的方式提及 Go 与 Java 的一些区别,方便 Java 开发者迅速入门 Go 语言。 这是该系列的第四章,将介绍 Go 的内存管理机制。 性能优化 自动内存管理 所谓自动内存管理,其实就是指垃圾回收,在 Go 中,程序在运行时根据需求动态分配的内存(即动态内存)会被纳入自动内存管理的范畴。 通过自动内存管理,我们可以避免手动释放内存,将注意力专注在业务逻辑,同时还可以避免发生内存安全问题(诸如 内存重复释放问题 double-free problem 或是 内存释放后使用问题 use-after-free problem)。 一个垃圾回收周期大致有三个任务:为新对象分配空间,找到存活对象,回收死亡对象的内存空间。 要想详细了解垃圾回收,就必须先了解其相关概念: Mutator:业务线程,分配新对象,修改对象指向关系; Collector:GC 线程,找到存活对象,回收死亡对象的内存空间; Serial GC(串行 GC):只有一个 collector; Parallel GC(并行 GC):支持多个 collectors 同时回收的 GC 算法; Concurrent GC(并发 GC):mutator(s) 和 collector(s) 可以同时执行。 要想评价一个 GC 算法,大概可以从以下几个方面进行: 安全性(Safety):指垃圾回收器不应回收存活的对象; 吞吐率(Throughput):指垃圾回收器花在 GC 上的时间占程序执行总时间的比率; 暂停时间(Pause time):指垃圾回收导致业务线程挂起(暂停)的时间(GC 导致的暂停被称为 stop the world, STW) 内存开销(Space overhead):指垃圾回收器元数据占用的内存开销; 接下来,将从几个经典的垃圾回收器算法简述垃圾回收。 追踪垃圾回收 追踪垃圾回收(Tracing Garge Collection)是一种最常见的垃圾回收方式,它通过跟踪哪些对象可以通过来自某些“根”对象的引用链访问来确定哪些对象应该被释放(“垃圾回收”),并将其余对象视为“垃圾”并收集... - Published: 2023-01-17 - Modified: 2023-01-20 - URL: https://blog.hikarilan.life/tech/898/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e7%9c%8b%e5%be%85-go-%e7%9a%84%e7%bc%96%e7%a0%81%e8%a7%84%e8%8c%83%e5%92%8c%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 从 Java 的角度看待 Go 的编码规范和性能调优| 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 3 天 前言 本系列文章试图从一名 Java 开发者(有时也会穿插其他语言)的角度窥探 Go 语言,并以注释的方式提及 Go 与 Java 的一些区别,方便 Java 开发者迅速入门 Go 语言。 这是该系列的第三章,将从 Go 的编码规范和性能调优带领读者走近 Go 语言。 Go 高质量编程 编码规范 代码格式 可以使用 gofmt 和 goimports 工具自动格式化代码。对于 GoLand,可以在 Settings - Tools - Actions on Save 中打开 Reformat code 和 Optimize imports(不出意外的话,它们应当是默认启用的)。也可通过 Ctrl+Alt+L 快捷键格式化代码(其实所有 Jetbrains 的 IDE 都支持使用这个快捷键格式化代码)。 注释 一个好的代码注释应当做到以下几点: 解释代码作用; 解释代码如何做的; 解释代码实现的原因; 解释代码什么情况会出错; 公共符号始终要注释(但是不需要注释实现接口的方法)。 作为 Java 开发者想要吐槽的是,Go 的注释系统实在太简陋了,我认为: /** * A mutable sequence of characters. This class provides an API compatible * with {@code StringBuffer}, but with no guarantee of synchronization. * This class is designed for use as a drop-in replacement for * {@code StringBuffer} in places where the string buffer was being * used by a single thread (as is generally the case). Where possible, * it is recommended that this class be used in preference to * {@code StringBuffer} as it will be faster u... - Published: 2023-01-16 - Modified: 2023-01-20 - URL: https://blog.hikarilan.life/tech/895/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e5%ae%9e%e8%b7%b5-go-%e5%b7%a5%e7%a8%8b%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 从 Java 的角度实践 Go 工程| 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 2 天 前言 本系列文章试图从一名 Java 开发者(有时也会穿插其他语言)的角度窥探 Go 语言,并以注释的方式提及 Go 与 Java 的一些区别,方便 Java 开发者迅速入门 Go 语言。 这是该系列的第二章,将从并发和依赖管理的角度带领读者进行 Go 语言的工程实践。 进阶 Go 语言 Go 与并发编程 在理解什么是“并发编程”前,让我们先理解一下“并发”和“并行”的区别。 并发(Concurrent) 我们都知道,对于一个单线程环境,单个程序只能同时执行一个操作,其他操作必须等待该程序完成当前操作后,才能执行。简单来说,如果将程序执行任务当作开车通过高速公路的收费站,程序本身当作高速公路,那么以前的单线程程序便是只有一个车道的高速公路,同一时刻只能有一辆汽车通过收费站,后面的汽车都必须等待前面的汽车。对于很多程序来说,这种单线程的情况很显然是不够用的:考虑一个 Web 服务器程序,当我们与一个用户建立连接并进行通讯时,如果有其他用户也想访问这个网站,那么他就必须等待这个用户和网站结束通讯!这很显然是不可接受的。 对于大部分语言来说,他们使用了一种内核态的,由操作系统提供的解决方案来实现并行 —— 使用线程(Thread)。线程允许你并行的运行多个程序。如果还拿上面的例子距离,就等于是为高速公路开拓了更多的车道,此时,便可以有多个汽车同时通过收费站了。 并行(Parallelism)与协程(Coroutine) 但是,这种解决方案一定是最好的吗?想象一下,在现实世界,修路是很费钱的,那么对于计算机来说,维护一个线程的运行也是十分昂贵的(单个线程栈可能带来 MB 级别的内存占用!)。因此,在部分情况下,我们可以使用一种更加廉价的解决方案。 这种解决方案就是“并发”。并发与并行不同,其仅是通过对多个不同程序的有效调度,实现了一种在同一时刻完成多个任务的错觉 —— 事实上,同一时刻仍然仅有一个程序在运行。依然拿汽车和收费站举例,假设一辆私家车通过收费站需要 5 秒钟,一辆大卡车通过收费站需要 1 分钟,如果此时一辆大卡车正在通过收费站,后面有多辆小汽车,那么支持“并行”的收费站可能会让大卡车先退出来,让小汽车先通过收费站,然后再继续为大卡车办理通关手续。当然,这只... - Published: 2023-01-15 - Modified: 2023-06-06 - URL: https://blog.hikarilan.life/tech/893/%e4%bb%8e-java-%e7%9a%84%e8%a7%92%e5%ba%a6%e5%88%9d%e8%af%86-go-%e8%af%ad%e8%a8%80-%ef%bd%9c-%e9%9d%92%e8%ae%ad%e8%90%a5%e7%ac%94%e8%ae%b0/ - 分类目录: 技术 - 标签: Go, 开发, 青训营 从 Java 的角度初识 Go 语言 | 青训营笔记 这是我参与「第五届青训营」伴学笔记创作活动的第 1 天 前言 本系列文章试图从一名 Java 开发者(有时也会穿插其他语言)的角度窥探 Go 语言,并以注释的方式提及 Go 与 Java 的一些区别,方便 Java 开发者迅速入门 Go 语言。 什么是 Go 语言? 与 Java 相同,Go 是一门高性能,高并发,语法简单,学习曲线平缓的强类型和静态类型语言,其拥有丰富的标准库,完善的工具链,支持快速编译,跨平台且支持垃圾回收(GC); 与 Java 不同的是,其并不是一门虚拟机语言,不需要通过中间代码表示(例如 JVM Bytecode)和虚拟机(VM)支持代码运行,其以直接将目标代码静态链接并编译到目标平台的形式跨平台。 虽然 Go 和 C/C++ 类似,人们也经常讲 Go 讲述为“更好的 C/C++”,但 Go 的竞争领域并不是 C/C++ 所适合的领域,相反,Go 更适合 Java 所适合的 Web 工程等领域。理论上,Go 可以提供比 Java 更好的性能和吞吐量。 Go 是一门由 Google 主导开发的语言,目前已经更新至 1. 19 版本。 入门 Go 语言 选择 IDE 要想开发 Go 程序,则需要 Go 开发环境,可以前往 Go 官网 并遵循 安装文档 安装对应平台的 Go 开发环境。这些开发环境包括 Go 编译器,工具和库。和 Java 不同的是,不存在类似于 JRE(Java Runtime Environment)一样的东西,用户可以直接运行编译后对应平台的可执行文件,无须运行时支持。 接下来,我们当然还需要 IDE 来便捷我们的开发。有两种主流 IDE 可选:VSCode 和 GoLand。前者是由微软开发的开源代码编辑器,后者则是由 Jetbrains 公司开发,基于著名 Java IDE IntelliJ IDEA 构建的功能强大的 IDE。 此两种 IDE 的区别是,前者更像手动挡,后者则是自动挡。对于进阶需求,VSCode 为你带来的可自定义性会更强;但是对于新手,个人还是推荐使用 GoLand。 值得一提的是,GoLand 是一款付费软件,在购买前,你有机会进行 30 天的使用;或者,如果你是一名在校大学生,你可以向 Jetbrains 申请一份免费的教育许可证,其允许你在学... > 以下是博客作者本人的其他站点信息: HikariLan 的个人主页:https://hikarilan.life