0%

APNG, 全称是“Animated Portable Network Graphics”, 是PNG的位图动画扩展,可以实现png格式的动态图片效果。

React 支持

React18 react-app.d.ts中缺少对*.apng模块的定义,因为不能直接导入为组件,但可以将格式改为PNG,虽然直接用浏览器打开不会显示动画,但在React中却正常显示

1
2
3
4
import TipAnimation from "../../images/tip.apng" //Cannot find module defination
import TipAnimation from "../../images/tip.png"

<img src={TipAnimation} alt="tip_animation" />

Cmake 是通用的自动化构建工具, 可用于构建各种类型的项目,包括C++、C、Python、Java

项目的cmake构建配置文件cmakelist.txt形如

1
2
3
4
5
6
7
8
9
# 指定CMake版本
cmake_minimum_required(VERSION 3.10)

# 指定项目名称
project(hello)

# 添加源代码文件
add_executable(hello hello.cpp)


基于配置文件构建项目:
1
2
3
4
5
mkdir build  # 创建一个build文件夹
cd build # 进入build文件夹
cmake .. # 生成Makefile文件
make # 编译源代码并生成可执行文件

Tech Art

方向

  • 渲染向 自研/二开引擎 材质 光追 抗锯齿
  • 动画 动作绑定
  • 特效 粒子
  • 管线向 流程 易用性开发
  • 美术

sketchfab模型库

unity -> ASE -> shader

UE vs Unity

  • 图形质量和性能:Unreal Engine在图形渲染和视觉效果方面具有较高的品质,提供更高的渲染质量和更好的性能。Unity也可以实现出色的图形效果,但相较而言,Unreal Engine在这方面更具优势。
  • 编程语言和学习曲线:Unity使用C#作为主要的编程语言,而Unreal Engine使用C++和Blueprints。C++相对较难学习,而Blueprints提供了一种无需编写代码即可创建逻辑的可视化编程方式。因此,Unity在学习曲线上可能更易上手。
  • 跨平台支持:Unity在跨平台支持方面更为出色,可以轻松发布到多个平台,包括移动设备、PC和主机。Unreal Engine也支持多种平台,但在跨平台发布上可能比Unity稍显复杂。
  • 社区和文档:Unity拥有庞大的社区和丰富的文档资源,可以方便开发者学习和解决问题。Unreal Engine的社区也很活跃,但相较而言,Unity的资源更为丰富。

总体来说,选择使用Unreal Engine还是Unity取决于项目的需求和开发者的个人偏好。如果追求高质量的图形效果和性能,以及想要更多的定制和控制权,那么Unreal Engine可能更适合。如果希望快速上手、轻松发布到各种平台,并且喜欢使用C#编程语言,那么Unity可能更适合。

OpenCV Halcon
开发语言 C++、C#(emgu)、Python、Ruby、MATLAB等语言 C,C++,C#,Visual basic和Delphi等语言
应用场合 侧重计算机视觉领域,侧重研究领域 侧重机器视觉领域,侧重应用领域
费用 免费 收费
开放性及版本更新速度 开源(可看底层源码),版本和功能更新慢 商业软件(底层代码封装),版本和功能更新快
对使用者的门槛 偏科研,有难度,有深度,完全从底层开发,对使用者门槛高,开发效率低,开发慢 偏工程应用,使用封装好的功能函数,对使用者门槛低,开发效率高,开发快
资料及技术支持 资料少。遇到问题,难以获得技术支持 资料多。遇到问题,可以及时、有效的获得技术支持

硕士研究生学习机器视觉,halcon显然比opencv强太多,那么还有学习opencv的必要吗? - mwwz的回答 - 知乎
https://www.zhihu.com/question/447956881/answer/2782307466

begining at this moment when Nvidia’s stock price was soaring 英伟达的股票飞涨不因为他生产的显卡,而是如今的人们开始意识到计算机运算势必会越来越多地以GPU并行量子运算地形式进行

黄仁勋高超的前瞻眼光,高薪聘用伊恩·巴克(Ian Buck),并在2006年,NVIDIA正式发布了CUDA。CUDA是建立在NVIDIA GPU上的一个通用并行计算平台和编程模型,它的设计旨在让开发者能更容易地利用GPU的并行计算能力来加速原本由CPU处理的复杂计算任务。

CUDA(Compute Unified Device Architecture)提供丰富的api及范例以便开发人员将

Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。

所谓运行时runtime,是指程序声明周期中从开始执行到完成退出的阶段,除了运行时,还时有提及的编译阶段是 compile time,链接阶段是 link time,在前面的阶段预先做了通常在后面才方便做的事叫 ahead of time

Node.js 是一个异步事件驱动运行时 (asynchronous event-driven JavaScript runtime) 与

线程

Q: java线程池和cpu线程数的关系

文心一言:Java线程池与CPU线程数之间的关系主要体现在线程池如何根据系统的需求和硬件环境灵活地控制线程的数量,以及如何通过线程池管理线程来提高系统的运行效率并降低系统的运行压力。

首先,线程池通过在初始化时创建一个线程集合,然后在需要执行新任务时重用这些线程,而不是每次都新建线程。这种方式减少了线程的创建和销毁开销,从而提高了系统的性能。

其次,线程池可以控制并发的线程数量,这有助于避免因为线程数量过多而导致的系统资源耗尽或性能下降。线程池会根据任务的提交情况和系统的负载情况,动态地调整线程的数量,确保系统的稳定运行。

在Java中,线程数通常模拟的是CPU的核心数,但需要注意的是,线程数并不等于CPU的物理核心数。一个CPU核心可以对应一个或多个线程,这取决于是否使用了超线程技术。通过超线程技术,一个物理核心可以模拟出两个逻辑线程,从而提高了CPU的并行处理能力。

在设置线程池的大小时,需要考虑任务的性质。对于CPU密集型任务,如加密、解密、压缩和计算等,最佳线程数通常是CPU核心数的1~2倍。设置过多的线程并不会提升性能,反而可能导致性能下降,因为过多的线程会导致不必要的上下文切换。

另一方面,对于耗时IO型任务,线程池的大小可能需要更大,以充分利用系统的IO能力。但是,这仍然需要考虑到系统的整体负载和资源限制。

总的来说,Java线程池与CPU线程数之间的关系是一个动态平衡的过程,需要根据具体的任务需求、系统负载和硬件环境进行灵活的调整和优化。

32位/64位操作系统

32位、64位指的是CPU的GPRs(General-Purpose Registers,通用寄存器)如今计算机CPU基本上都是64位架构,运算能力是一次性64bit的整数运算,支持64位地址寻址和更大的内存

当代码编译成exe时,x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。类似的,x64对应的则是64位的。

x86平台下编译的应用程序,而它所依赖的一个项目(或动态链接库)是由x64位平台编译出来的,则会提示“未能加载文件或程序集…或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。

如dotnet publish -f win-x86 打包的wpf应用,在已装有vcredist x64的计算机上无法启动,查看windows evnet viewer可看到.net运行时报错:
CoreCLR Version: 6.0.2523.51912
.NET Version: 6.0.25
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
而安装vcredist x86后修复