自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈戏猿

没有bug的程序就像不加糖的奶茶,是没有灵魂的。

  • 博客(250)
  • 资源 (8)
  • 收藏
  • 关注

原创 如何优化大景深场景光场渲染背景模糊问题

光场渲染技术通过多视角图像交织实现裸眼3D效果,但存在景深限制问题。自适应焦距能动态调整清晰范围,保证观察主体清晰;分层渲染则通过分离前后景、调整相机视角来改善背景模糊,但会降低立体效果且对动态场景适用性有限。这些方法各有利弊,需要根据具体应用场景选择合适的技术方案。

2026-06-03 17:05:10 220

原创 Windows下Unity开发VisionPro应用

Windows下用unity开发visionPro应用教程,从环境配置到打包运行全流程指导。

2026-04-28 11:40:32 502

原创 Nim游戏:早已注定的输赢

摘要:本文分析LeetCode上的Nim游戏问题,探讨如何判断先手玩家能否必胜。通过分析发现,当石头数量n为4的倍数时先手必输,否则必胜。关键在于每次操作后使剩余石头保持4的倍数,迫使对手进入必败局面。最终解法只需判断n是否能被4整除,时间复杂度O(1)。(150字)

2026-04-07 20:22:29 101

原创 228. 汇总区间

摘要: 题目要求在无重复元素的有序整数数组中找到最小有序区间范围列表,确保每个元素恰好被一个区间覆盖。使用Elixir实现,通过Enum.reduce构建区间映射表,键为终点,值为起点和终点的元组。遍历数组时检查前一个数是否存在,更新或创建区间。最后将区间转换为指定格式的字符串(如"a->b"或"a")。解法时间复杂度O(n),空间复杂度O(n)。

2026-04-05 17:25:42 81

原创 存在重复元素 II

摘要:该文介绍了如何用Elixir解决LeetCode问题"存在重复元素II"。题目要求判断数组中是否存在两个相同元素且索引差不超过k。解法使用哈希表记录元素最后出现的位置,遍历时检查当前元素与表中记录的位置差是否≤k。采用Enum.reduce_while实现提前终止遍历,优化效率。代码展示了Elixir的模式匹配和函数式编程特性,通过Map存储和更新元素索引来高效解决问题。

2026-04-05 15:00:19 69

原创 为什么老有人把油门当刹车

摘要:文章探讨了为何司机常把油门当刹车这一现象。作者指出,这并非认知问题,而是人类本能反应所致。在危险情况下,大脑会触发远古留存的下意识反应,而非针对驾驶场景的理性判断。这种本能反应可能导致肌肉紧绷、误踩油门。解决方法是提高驾驶熟练度,养成良好习惯(如不踩油门时脚放刹车上),让肌肉记忆覆盖本能反应。文章强调安全驾驶的重要性,建议保持专注,在可控范围内行驶。

2026-03-21 17:19:22 400

原创 二进制匹配

Elixir的<<>>语法用于创建和匹配bitstring/binary数据,支持多种类型和选项配置。默认类型为integer,字符串会自动展开为整数。支持utf8/16/32编码、signed/unsigned修饰符和big/little/native字节序。二进制匹配是Elixir的强大特性,可用于模式匹配和数据提取。性能优化方面,Erlang编译器提供多种优化选项。该语法灵活支持单位长度、变量表达式等高级用法,但需注意非末尾二进制段必须指定长度。

2026-03-16 18:32:16 427

原创 Elixir列表推导:for/1

本文详细介绍了Elixir中的列表推导(for表达式)功能。主要内容包括:1) 基本语法和生成器使用;2) 过滤器的应用;3) 二进制生成器的特殊用法;4) :into选项用于自定义输出类型;5) :uniq选项去除重复结果;6) :reduce选项(Elixir 1.8+)实现高效聚合操作。文章通过多个代码示例展示了列表推导在数据处理中的强大功能,包括枚举转换、二进制处理、数据过滤和聚合统计等场景。特别强调了:reduce选项在处理大数据量时的性能优势。

2026-03-16 16:49:28 369

原创 使用PostGIS和Ecto构建位置感知应用的现代化方法

使用PostGIS和Ecto构建位置感知应用 本文介绍了如何利用PostGIS和Ecto构建现代化位置感知应用的实用方法。作者通过构建促销代码系统案例,展示了如何实现复杂的地理位置验证功能,包括: 使用PostGIS处理地理空间数据,支持圆形和多边形区域验证 通过Ecto实现类型安全、可组合的查询,替代原生SQL 详细配置步骤:添加依赖、启用PostGIS扩展、定义Schema 性能优化技巧:创建空间索引提升查询效率 实现基础位置验证和复杂业务逻辑(如多地点验证)的代码示例 该方法结合了PostGIS的强大

2026-03-05 14:05:25 454

原创 Phoenix集成Cesium

摘要:本文介绍了在Elixir的Phoenix框架中集成CesiumJS的两种方法。原生方式通过下载预编译包并手动引入资源文件,而npm方式则通过安装依赖包实现。两种方法都需要正确配置资源路径和ES版本,最终都能成功在Phoenix应用中展示CesiumJS的地球视图。文章详细说明了每种方法的实现步骤和可能遇到的问题及解决方案。

2026-02-28 11:32:30 658

原创 Nerves从Hello World到点亮LED

本文介绍了如何在树莓派4上使用Nerves框架开发嵌入式Elixir应用。首先完成Nerves环境配置并创建"hello_nerves"项目,通过mix命令构建固件并烧录到SD卡。接着演示了通过SSH连接树莓派和代码热更新方法。重点讲解了如何控制树莓派板载LED灯,包括Linux设备文件原理和nerves_leds库的使用,展示了通过GenServer实现LED闪烁功能的完整代码示例。文章为Elixir嵌入式开发初学者提供了从环境搭建到硬件控制的全流程指导。

2026-01-29 15:10:54 726

原创 Nerves 环境配置

Nerves是一个基于Elixir的开源嵌入式开发框架,通过Linux内核驱动硬件并由BEAM虚拟机运行Elixir程序。本文介绍了在Ubuntu系统上配置Nerves开发环境的过程,包括安装Erlang(建议使用otp 26+版本)、Elixir以及相关依赖库。针对网络问题提供了下载依赖包的解决方案,并推荐使用官方安装脚本简化流程。最后给出了一个精简版的配置方案,仅需安装核心工具链和必要依赖即可开始Nerves开发。

2026-01-26 10:31:22 1135

原创 Vision Pro踩坑记

本文介绍了将Unity程序移植到Vision Pro的前期环境配置要点。Vision Pro可类比为特殊屏幕的iPhone,其开发流程与iOS类似:需Xcode工程、设备连接和发布。关键要求包括macOS、visionOS、Xcode和Runtime的版本兼容,可通过苹果开发者网站查询支持关系。常见问题是系统版本不匹配导致设备连接失败,解决方法包括升级macOS或购买300美元专用硬件降级visionOS。文章提供了相关参考链接,建议优先选择升级系统方案,并附有设备支持情况查询方式。

2025-12-22 11:09:59 549

原创 Phoenix视图与组件

本文介绍了Phoenix框架中的视图和组件概念,指出视图本质上是组件的一种形式。文章详细阐述了组件的本质是返回HEEx模板的Elixir函数,解释了HEEx(HTML+EEx)的组成。重点说明了视图渲染机制,包括如何通过Controller的render函数渲染视图、Phoenix如何根据命名约定寻找视图模块、以及如何通过路由和plug设置响应格式。还介绍了手动设置视图模块的方法和HEEx的基本语法,展示了Phoenix框架中视图与组件的统一性及其灵活的应用方式。

2025-12-21 15:29:13 940

原创 Windows下c/c++使用pgsql

本文介绍了在Visual Studio中配置PostgreSQL C/C++开发环境的步骤。首先将PostgreSQL的bin目录添加到环境变量,然后在VS项目中配置包含目录和库目录为PostgreSQL的include和lib路径。接着在链接器输入中添加libpq.lib依赖项。文章演示了如何通过libpq-fe.h头文件连接数据库并执行SQL插入操作,包括初始化连接、检查连接状态以及执行SQL语句的基本流程。该配置适用于需要在C++项目中使用PostgreSQL数据库的开发场景。

2025-12-18 17:17:02 480

原创 pgsql 复合类型指南

摘要:PostgreSQL支持自定义复合类型,可简化复杂嵌套结构化数据的存储。通过创建k4abt_joint类型和k4abt_joint[]数组类型,可将包含结构体数组的结构体k4abt_skeleton_t存储为单表单字段。文章详细介绍了在pgAdmin中创建自定义类型、建表、设置自增序列的方法,并提供了插入、查询和更新嵌套数据的SQL示例,展示了PostgreSQL处理复杂数据结构的便捷性。

2025-12-18 16:30:53 1242

原创 Azure Kinect 从入门到入坟

Azure Kinect与Kinect是不同设备,Azure Kinect使用更简单。官方文档存在机器翻译问题,建议查看英文版。安装两个SDK:传感器SDK(获取数据)和骨架追踪SDK(获取骨骼数据)。需连接USB 3.0接口。通过NuGet安装C++依赖包后,可调用相关API获取深度数据和人体骨骼信息。示例代码展示了设备初始化、相机配置和骨骼追踪的基本流程。

2025-12-17 14:22:11 1105

原创 Windows网络共享指南

本文介绍了如何通过Windows网络共享(ICS)功能让无网口笔记本借助台式机上网。具体步骤包括:1)在联网台式机上启用ICS共享,将有线网络共享给无线网卡;2)笔记本连接同一WiFi后手动设置IP(192.168.137.x)和网关(台式机无线IP 192.168.137.1)。关键点在于必须手动配置网关指向共享主机,否则流量会错误路由到路由器默认网关。设置成功后笔记本即可通过台式机中转访问互联网,实现无网口设备联网需求。

2025-12-08 14:22:38 1338

原创 PostgreSQL允许外部机器连接

摘要:PostgreSQL默认仅允许本地连接,要开放外部访问需修改配置文件并重启服务。在PostgreSQL\18\data\pg_hba.conf中,将127.0.0.1/32改为0.0.0.0/0以允许所有IP访问(或指定特定网段)。修改后,可通过Windows服务管理器或PowerShell命令(先Get-Service *postgres*查看服务名,再Restart-Service 服务名)重启PostgreSQL服务使配置生效。

2025-11-27 17:50:00 588

原创 【Janet】元组

Janet语言中的元组是不可变的顺序数据结构,支持方括号和圆括号两种形式。摘要:1)元组可通过[]字面量或tuple函数创建;2)可作为表的键使用;3)支持按元素顺序进行比较和排序;4)方括号元组在宏和延迟求值时特别有用;5)与普通元组在打印和相等性比较上存在差异,但功能基本相同。元组提供了与数组类似的操作函数。

2025-11-22 15:44:26 358

原创 【Janet】结构体

摘要:结构体是Lisp中不可变的键值对数据结构,类似表但不可变。可通过字面量或struct函数创建,内容相同的结构体视为相等。支持通过get或函数调用方式取值,但不能修改。表可通过table/to-struct转换为结构体。由于结构体基于内容判等,可用作表键,如表示坐标点并关联值。示例展示了创建结构体、取值及作为键使用的场景。

2025-11-21 19:29:51 234

原创 【Janet】Table

摘要:Janet中的表是一种灵活高效的关联数组数据结构,支持任意类型键值(除nil和math/nan外)。可通过字面量或table函数创建表,使用get/put/set函数操作值。表支持原型机制实现继承,并提供了丰富的操作函数如keys/values/merge等。表调用时可直接作为查找函数使用,插入nil值会删除对应键。

2025-11-20 21:48:59 279

原创 【Janet】Buffer

Janet语言中的缓冲区是一种可变字节序列数据结构,功能类似字符串但支持修改操作。摘要要点:1)缓冲区以@符号开头创建;2)支持通过get/put操作读写字节;3)可使用slice获取子缓冲区;4)提供多种push方法添加数据,如push-byte、push-string等。缓冲区适用于处理二进制数据、字符串拼接等场景,具有自动扩容特性,是Janet中处理字节序列的核心数据类型。

2025-11-18 21:11:51 349

原创 python xmlrpc踩坑记录

摘要:作者在Windows平台使用Python标准库的xmlrpc模块时,遇到RPC调用延迟2秒的问题。通过日志排查发现,从客户端发起请求到服务端接收竟耗时2秒多,而实际处理仅需几毫秒。最终发现是使用"localhost"地址导致的性能问题,将其改为"127.0.0.1"后立即恢复正常。文章详细记录了问题排查过程,排除了异步调度、RPC服务端代码、DNS解析等其他可能性,揭示了Windows平台下"localhost"地址的特殊性能问题。

2025-11-17 17:42:33 446

原创 【Janet】数组

摘要:Janet中的数组是可变的序列数据类型,支持高效操作。数组通过字面量或array/new创建,支持随机访问(使用in、get)和修改(put、set)。数组可作为栈使用(array/push/pop/peek),还提供slice、map等实用函数。下标从0开始,length获取元素数量,超出范围访问会返回nil或默认值。

2025-11-16 16:24:08 469

原创 【Janet】数据结构

Janet语言提供了6种核心数据结构:表(table)、结构体(struct)、数组(array)、元组(tuple)、字符串(string)和缓冲区(buffer),分为可变和不可变类型。这些数据结构在访问、插入/追加和删除操作上大多具有O(1)的时间复杂度。数组、表、缓冲区是可变类型,支持修改操作;而元组、结构体、字符串是不可变类型。所有数据结构都支持get/in函数进行值访问,可变类型还支持put函数进行修改。length函数可获取所有数据结构的元素数量。该设计提供了高效的数据操作能力,同时区分了可变

2025-11-15 17:32:31 399

原创 【Janet】宏

本文介绍了Janet语言中的宏机制。宏是接受代码输入并输出转换后代码的程序,能够扩展语言本身的语法。文章详细讲解了如何编写宏,包括使用可变参数处理多个函数体表达式、添加文档注释、运用quasiquote优化代码可读性。同时指出了宏编写中的常见问题,如意外绑定捕获(hygiene问题),并提供了解决方案:通过gensym函数和with-syms宏生成唯一符号。文章强调尽管宏功能强大,但容易产生bug,建议优先使用函数,仅在必要时使用宏。

2025-11-14 19:10:04 764

原创 【Janet】循环

Janet语言提供了多种循环方式来处理常见编程任务。基础while循环可用于迭代,但更推荐使用高级宏如for和loop来实现数字范围遍历。loop宏支持:range、:in等动词和:when修饰符,比基础循环更灵活。对于数组遍历,可用each宏或map函数;对于字典遍历,可用loop配合:pairs或:keys,或使用eachk/eachp宏。Janet的next函数是核心迭代机制,支持所有可迭代类型。这些特性使Janet能简洁地处理各种迭代场景。

2025-11-13 18:55:22 325

原创 【Phoenix】插件(Plug)

Phoenix框架的HTTP层核心是插件系统,其基本思想是统一"连接"概念,分为函数插件和模块插件两种形式。函数插件只需接收连接和选项参数并返回连接,模块插件则需实现init/1和call/2函数。插件可灵活插入Endpoint、路由器和控制器等不同层级,实现请求处理、参数解析、会话管理等功能。通过组合多个插件,可以构建模块化的请求处理管道,实现条件检查、重定向等复杂逻辑,体现Phoenix的可拔插设计理念。

2025-11-12 20:34:02 1125

原创 【Janet】字符串,关键字,符号

摘要:Janet语言支持关键字、符号和字符串三种标签类型,均可用作表和结构体的键。关键字以冒号开头,符号需要引号引用,而字符串用于文本和字节序列存储。文章详细介绍了字符串操作,包括子串提取、查找替换、分割拼接以及大小写转换等功能。所有类型都是不可变的,关键字和符号针对相等比较做了优化,是表的键的首选。字符串处理兼容ASCII和UTF-8编码,提供丰富的操作函数但不支持正则表达式。

2025-11-12 19:11:29 368

原创 【Janet】函数

Janet是一种函数式编程语言,支持多种函数定义方式。通过defn可以定义具名函数,fn创建匿名函数,|宏提供简洁的匿名函数语法。函数支持可选参数(&opt)、可变参数(&)和关键字参数(&keys)。作为一等公民,函数可像普通值一样传递和操作,支持嵌套调用和参数默认值设置(default)。该语言还提供了参数解构和多种调用风格转换功能,使代码更简洁灵活。

2025-11-11 18:44:38 804

原创 Elixir websocket客户端

本文介绍了Elixir生态中两个WebSocket客户端库:WebSockex和Fresh。WebSockex采用类似GenServer的方式工作,提供连接管理、消息处理等回调,支持重连机制。Fresh基于Mint生态,同样遵循GenServer模式,但对协议和命名有更严格要求。两个库都提供了完整的WebSocket功能实现,包括连接管理、消息收发、错误处理等核心功能,适合不同场景下的WebSocket客户端开发需求。

2025-11-10 21:29:59 1363

原创 【Janet】控制流

Janet语言提供两种基本控制流原语:if表达式用于条件分支,接受2-3个参数(条件、真分支和可选的假分支);while循环用于重复执行,当条件为真时循环执行后续表达式。此外还提供了更高级的控制结构宏,如cond、case、when用于条件判断,以及loop、seq、generate等循环宏,这些宏能简化代码编写,提供类似Python和Clojure中的列表推导功能。

2025-11-10 20:34:16 268

原创 【Janet】绑定(def和var)

摘要:Janet语言使用def创建不可变词法作用域绑定,var创建可变绑定,set修改可变值。作用域可通过do表达式和fn闭包创建,let宏可便捷实现多绑定。def和var支持:private选项实现私有化,并可通过字符串添加文档说明。绑定的作用域规则有效组织程序结构,防止命名冲突。

2025-11-09 19:48:33 224

原创 【Janet】比较运算符

Janet语言提供两类比较运算符:原始比较(=, <, <=, >, >=)和多态比较(compare=, compare<等)。原始比较基于内部类型码排序,支持多参数链式比较,但对不同类型可能产生意外结果。多态比较通过compare函数实现类型感知的比较逻辑,更符合语义但性能较低。此外,deep=用于深度比较可变数据结构内容,而原始=仅判断对象同一性。开发者可根据需求选择适合的比较方式,自定义类型可通过实现:compare方法来支持多态比较。

2025-11-08 13:22:48 471

原创 【Janet】数字与算术运算

Janet语言支持基本算术运算和丰富的数字表示方式。算术运算采用前缀表达式,支持加减乘除、取余等操作,所有数字均为IEEE 754双精度浮点数。数字字面量可采用十进制、自定义进制(2-36进制)和科学计数法表示,支持使用下划线分隔和不同进制前缀(如0x表示十六进制)。此外,Janet还提供从C标准库借鉴的数学函数(如三角函数、对数等)和位运算功能(如bor、band等),位运算仅适用于整数处理。该语言灵活支持多种数字格式,但最终都会转换为双精度浮点数。

2025-11-07 19:06:47 278

原创 【Janet】特殊表达式

Janet 核心语法摘要 Janet 语言包含 13 种核心特殊语法,构成其基础功能。def 创建不可变绑定,支持解构赋值;var 创建可变绑定。函数定义使用 fn,可递归调用。do 创建代码块和词法作用域。quote 实现字面引用,if 提供条件分支。splice 解构数据结构,相当于取消引用。while 和 break 实现循环控制,后者可用于提前退出函数或循环。这些语法共同构成了 Janet 的核心功能,其中部分语法支持元数据和文档字符串。特殊语法既不是函数也不是宏,而是编译器直接处理的底层结构。

2025-11-06 20:15:12 1017

原创 【Janet】语法与解析器

Janet 程序的生命周期始于 UTF-8/ASCII 编码的源文件,其语法类似 Lisp,采用同构设计,代码可直接表示为数据结构。核心语法包括:nil/true/false 字面量、符号(支持 Unicode)、关键字(以冒号开头)、多种数字表示法、字符串(支持转义)和长字符串(使用反引号)。数据结构支持元组、数组、结构体和表(table),分别使用圆括号/方括号、@符号和大括号表示。注释以#开头,并提供了quote/splice等语法糖。Janet解析器严格区分解析和执行阶段,通过宏而非读取器宏来扩展语

2025-11-05 19:29:16 830

原创 【Janet】介绍

摘要 本文档详细介绍了Janet编程语言的安装和基础使用指南。主要内容包括: 安装方式: Windows推荐下载预编译安装包 macOS可使用Homebrew安装 Linux系统需从源码编译 源码编译: 提供Unix-like系统、FreeBSD和Windows的详细编译步骤 支持Meson和最小化构建选项 入门示例: 展示了经典的"Hello World"程序 介绍了带命令行参数处理的进阶示例 解释了Janet的函数调用语法和REPL使用 核心功能: 内置300+函数和宏 提供doc宏

2025-11-04 21:12:42 1456

原创 async与await

Python中的async和await是用于异步编程的关键字,async定义异步函数,await等待协程执行。asyncio.create_task实现真正的异步执行,而asyncio.run是同步执行方式。通过asyncio.gather可以并发多个协程。文章还对比了Go语言的并发实现,帮助理解异步编程概念。Python的异步机制通过协程切换实现并发,在I/O密集型任务中能提高效率。

2025-10-28 13:04:33 456

MinGW-W64-builds-4.2.0

win64版mingw编译器。

2025-09-01

UltraleapTrackingWebSocket

leapmotion websocket服务,通过websocket获取leapmotion手势数据,适用于高版本leap motion sdk使用LeapJS,或者其他从ws获取leapmotion数据用于交互的库。

2025-08-28

Unity相机控制脚本

Unity相机控制脚本: 1. 支持相机自由旋转,锁定Z轴旋转。 2. 支持相机移动,持续移动加速。 3. 支持左键点选目标后环绕目标移动。 4. 支持右键点击目标后让相机前往目录点。

2025-08-01

LeapMotion的LeapSDK

编译UltraleapTrackingWebSocket时需要用到的LeapSDK依赖。

2025-04-25

adb(免安装).zip

adb命令免安装版本,解压即可使用。

2023-08-09

WindowsTerminal配置文档.pdf

WindowsTerminal官方配置文档,安装方式:microsoft Store搜索WindowsTerminal即可下载

2020-11-17

为Windows的右键->新建菜单添加新建Markdown文件选项

在Windows的右键->新建菜单项中添加【新建Markdown文件选项】,前提是已安装Typora编辑器。

2019-12-05

Geany美化配置文件

Geany配置文件,用于美化你的Geany。解压后替换掉你电脑上C:\Users\用户名\AppData\Roaming下的geany文件夹,重启Geany生效。

2019-11-09

Geany暗黑主题文件

Geany暗黑主题文件,下载后放到Geany安装目录\share\themes\MS-Windows\gtk-2.0\下替换掉原来的gtkrc文件,建议备份原来的文件。

2019-11-09

graSSHopper Setup 1.1.6.exe

一款免费的SSH工具,界面美观,功能丰富。

2021-03-28

redis-gui-Setup-1.1.2.exe

一个免费的,有界面的redis客户端

2021-03-28

Beekeeper-Studio-Setup-1.10.2.exe

一款不错的开源SQL客户端,支持常用数据库和各大平台,界面美观。

2021-03-28

ColorBlack.css

ColoeBlack是一个非常漂亮的Typra黑色主题,由NightYuxl经过了一点自定义,比如不同颜色的标题,行内代码高亮,漂亮的字体等。整个主题只有一个css文件,非常简单,你也可以再进行个性化的修改,不满足于Typora官方主题的可以试试。

2020-05-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除