自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

以爱护甲,爱满枫林。

别让你的孩子只能在博物馆中看到穿山甲。

  • 博客(634)
  • 收藏
  • 关注

原创 WebGL+ThreeJS 入门与实战、搞定前端前沿技术

一、基础篇二、实战篇待续。

2023-04-02 16:10:47 1716

转载 概念模型、逻辑模型及物理模型介绍

如销售业务中的 客户 和 定单 , 还有就是 商品 , 业务员 , 用 USE CASE 来描述就是 : 业务员 与 客户 就购买 商品 之事签定下 定单 , 概念模型使用 E-R 图表示 , E-R 图主要是由实体 , 属性和联系三个要素构成的。逻辑模型是将概念模型转化为具体的数据模型的过程 , 即按照概念结构设计阶段建立的基本 E-R 图 , 按选定的管理系统软件支持的数据模型 (层次/网状/关系/面向对象) , 转换成相应的逻辑模型 , 这种转换要符合关系数据模型的原则;备注:画图工具PDMan。

2022-11-15 14:27:24 2974

原创 js递归无限级联

依赖jquery可根据配置参数(方向,样式,标签名称)得到自己想要select.js(function ($) { $.fn.select = function (url, option, callback) { var setting = { el: $("body"), data: null, labels: [], isOpenSearch: true,

2020-11-23 14:30:08 680

原创 shell,python脚本实现docker部署Redis集群

背景:Redis Cluster 在5.0之后取消了ruby脚本 redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境。直接使用redis-clit的参数–cluster 来取代。为方便自己后面查询就说明下如何使用该命令进行Cluster的创建和管理,关于Cluster的相关说明可以查看官网或则Redis Cluster部署、管理和测试。说明:redis-cli --cluster helpredis-cli --cluster

2020-09-08 16:41:41 596 3

原创 前端ES6 实现导出excel 可分页 跨函数 自定义

function Point() {}/* Point.prototype = { x:null, y:null, setX: function(x) { this.x = x; }, getX: function() { return this.x; }, setY: function(y) { this.y = y; },.

2020-07-03 19:08:01 1679

原创 js写的一个Thread函数(更新:添加自定义异常处理)

做项目的时候感觉使用setTimeout()功突发奇想写了一个Thread函数,不过这也是一个简单的函数,之前也写了Stop,和resume等方法由于设计的时候自己感觉代码太长设计有点问题就删掉了,不过后期有时间我还会继续完善,不喜勿喷。代码:var threadCount=0;function Runnable(task){ this.run=task;}functi.........

2019-12-31 00:55:27 1073 1

原创 反编译 i++ ,++i,i=i+1区别(修改)

1.(i++,++i)和i=i+1最大的区别i++和++i使用的时iinc进行自增,i=i+1使用的是iadd操作栈顶和次栈顶元素进行相加iinc操作的时局部变量表中的数据,iadd操作操作数栈中的数据。有疑问?就先带着疑问往下看2.i++和++i的最大区别i++是先把局部变量表的数据iload到栈顶,然后再进行iinc(操作数栈i=0,局部变量表i=1),++i是先对局部变量表...

2019-12-04 16:49:14 770 1

原创 聊聊线程之run方法

话不多说参考书籍 汪文君补充知识:start是异步,run是同步,start的执行会经过JNI方法然后被任务执行调度器告知给系统内核分配时间片进行创建线程并执行,而直接调用run不经过本地方法就是普通对象执行实例方法。什么是线程?1.现在几乎百分之百的操作系统都支持多任务的执行,对计算机来说每一个人物就是一个进程(Process),在每一个进程内部至少要有一个线程实在运行中,有时线...

2018-11-07 22:28:48 2531

原创 运行时异常和受检查异常的区别

java程序设计语言提供了三种可抛出结构:受检查时异常(checked exception),运行时(run-time exception)和错误 (error)java异常:受检查时异常和运行时异常(非编译时异常)首先介绍一下我们常见的集中描述:受检查时异常,编译异常,非运行时异常 描述可以理解为同一个意思,运行时异常,非编译时异常,非受检查时异常 等同 // 非受检查的可...

2018-05-06 14:13:52 14793 5

原创 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 有什么区别

exec 3&3使得文件描述符4的输出被重定向到文件描述符3当前指向的文件或设备,用于写入。因此,exec 3&3是完全不同的操作,一个用于输入重定向,另一个用于输出重定向。希望这能帮助你理解它们之间的区别。如果你有更多问题,请随时告诉我!

2024-10-23 17:35:23 720

原创 android-apk打包脚本

2.执行命令 ./pack-apk -b 进行打包。使用绝对路径指向android Sdk目录。配置文件local.properties。打包脚本 pack-apk。1.两个文件放在一个目录下。

2024-10-23 14:22:58 394

原创 javaweb实现下载功能报错sockettimeout

在Java Web应用程序中,如果你想要创建一个ZIP文件并通过HTTP响应提供下载,并且希望在响应头中指定文件大小,你可以先将文件写入到一个临时的ByteArrayOutputStream中,这样你就可以计算出压缩后的文件大小。然而,在某些情况下,它也会影响到服务器向客户端发送数据的过程,尤其是在下载大文件时。客户端:发起网络请求的一方。在分块传输过程中,如果某个块之间的间隔超过了server.tomcat.connection-timeout设置的时间,服务器可能会认为客户端已经断开连接,并关闭连接。

2024-10-14 16:38:12 673

原创 Mac 安装 Telnet 工具

从 GNU 的 FTP 服务器下载 inetutils 源代码并编译安装 Telnet 是一个可行的方法。以上就是从源码安装 Telnet 的完整步骤。这样安装的 Telnet 可以作为日常使用的客户端。通过 brew install telnet 时会要求安装 xcode。安装 xz 工具(如果还没有安装)以便解压。来查看所有可用选项。如果出现以上错误,我们可以使用方案二。网页访问可以查看所有版本列表。

2024-10-14 11:18:15 640

原创 android studio confirauration中 install flags和launch flags区别

是与安装APK有关的选项,影响的是安装过程。是与启动组件(如Activity, Service)有关的选项,影响的是组件的启动行为。在Android Studio中,可以通过Run/Debug Configurations进行设置,而则通常是直接写在代码中,作为Intent的一部分。如果你需要对某个Activity设置特殊的启动行为,你应该在代码中处理;如果你需要控制安装过程的行为,那么就在Run/Debug Configurations中添加相应的。

2024-10-14 09:51:33 440

原创 android-adb打印指定线程堆栈信息

支持打印native线程堆栈信息。

2024-10-09 17:52:59 402

原创 webpack使用

本次使用webpack4进行构建打包。

2024-09-26 16:25:55 1481

原创 安卓-广播LocalBroadcastManager

要保证发送消息和接受消息使用的是同一个Activity。

2024-08-29 13:51:40 558

翻译 Spring为什么使用三级缓存而不是两级解决循环依赖问题?

循环依赖是指:Spring在初始化A的时候需要注入B,而初始化B的时候需要注入A,在Spring启动完成后这俩个对象都必须是完整的bean。构造器循环依赖:Spring无法解决,因为bean创建的第一步就是通过构造器实例化,也就是说解决循环依赖的前提就是对象可以实例化并缓存,与Java死锁很像;prototype范围的依赖:该循环依赖Spring不可解决,prototype作用域的beanSpring不缓存,因此在依赖注入时无法获取到依赖的bean;

2024-08-28 14:30:19 122

原创 adb命令常见问题

因此,当您运行 adb tcpip 5555 时,实际上是通过 adbclient 和 adbserver 的配合将命令发送给目标设备上的 adbd 服务。当您运行 adb tcpip 5555 命令时,实际上是由 adb 客户端(adbclient)将命令发送给 adbserver,然后由 adbserver 负责将命令转发给目标设备上的 adbd 服务。总结起来,adb tcpip 5555 命令的作用是告诉设备上的 adbd 服务开始监听 5555 端口,从而可以通过网络接收 adb 连接请求。

2024-08-21 16:33:45 851

原创 VMware-Ubuntu共享文件找不到

20.0.4系统打开主目录会出现在左侧文件目录,之后就进入工具目录将指定的文件拷贝到某个文件夹解压,执行脚本即可。我们先看一下vmware-tool的获取方式,系统安装好了以后,关闭系统将虚拟机设置改成图中配置,然后重启。如果执行该命令后输出设置的共享目录,但仍无法在/mnt/hgfs目录下找到,就执行一下命令。一般到这里就会在/mnt/hgfs目录下找到共享文件,毕竟是一般情况,特殊情况往下走。以18.0.04为例打开文件,工具vmware目录会出现在这里。检查共享目录,查看是否能打印设置的共享目录。

2024-08-21 10:32:34 876

原创 使用rsync命令实现xsync广播脚本

rsync 是一个非常强大的文件同步工具,它用于在本地计算机之间或通过网络在不同计算机之间高效地复制文件和目录。rsync 支持增量复制,这意味着它只会传输自上次同步以来发生变化的部分数据,从而显著减少网络带宽的使用。基本语法source: 源文件或目录。destination: 目标文件或目录。常用选项-a, --archive: 归档模式,等同于 -rlptgoD,即递归复制文件、保持符号链接、权限、时间戳、所有权等。-r, --recursive: 递归复制整个目录。

2024-08-19 12:02:10 854

原创 source和 bash或 sh有不同的用途和行为

执行权限:如果一个脚本文件没有执行权限,那么你不能直接通过 bash script.sh 或 sh script.sh 来运行它。从权限的角度来看,source、bash 和 sh 这几个命令本身并不直接涉及文件权限问题,但它们的使用方式以及所执行脚本的权限可能会受到影响。当使用 source 命令时,脚本通常不需要执行权限就可以被加载和执行,因为 source 是在当前 shell 会话中执行脚本内容,而不是通过创建一个新的子 shell 来执行。执行一个独立的脚本,其更改不应该影响到父 shell。

2024-08-14 21:50:59 537

翻译 CMake 保姆级教程

CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。蓝色虚线表示使用makefile构建项目的过程红色实线表示使用cmake构建项目的过程。

2024-08-14 19:23:28 79

原创 使用emcc将libOpendrive编译成wasm

4.双击emsdk目录下的emcmdpromptbat,切到需要构建编译的目录下build,执行命令emcmake cmake -G “MinGW Makefiles”;3.安装EMSDK(将C++代码编译成WebAssembly字节码的工具链):可参考链接Emscripten简介及初体验;可以将C++代码编译成wasm(WebAssembly)文件(可在浏览器端运行的二进制机器码),嵌入到前端应用。1.安装CMake(编译构建工具):直接下载免安装压缩包,配置环境变量即可,下载链接;

2024-08-14 01:43:32 488

原创 performance.now() 与 Date.now() 对比

总结来说,如果你需要记录确切的时间点或者计算两个时间点之间的差异,使用 Date.now();如果你需要进行精确的时间测量,例如计时函数的执行时间,那么使用 performance.now()。performance.now() 方法返回一个高分辨率的时间戳,这个时间戳表示自某个固定的起始点以来所经过的时间(通常是页面加载开始的时间)。在这个例子中,你会看到 performance.now() 提供了更准确的时间间隔,而 Date.now() 的结果可能不够精确。时间基点:从 Unix 时间戳到当前时间。

2024-08-13 18:23:37 570

原创 在Windows上配置VSCode MinGW+CMake(包括C++多线程编程的两套API:posix和win32)

如果计算机时64位的就下载x86部分,如果时32位的就下载i686部分,下载的时候只需要下载seh结尾的文件压缩包,点击文件,页面会自动跳转,等待倒计时结束,就会自动下载,如果没有就刷新几次。之前的报错就说明有软件包没有安装成功,此时就需要再一次Apply Changes,这个软件白的安装受网速影响,如果仍然报错,就再一次apply,直到所有软件包安装成功。完成以后重复之前操作,给win32版本安装MinGW基础软件包,路径改为MinGW-w32,完成以后,cmake和mingw软件包就都安装完成了。

2024-08-13 15:21:28 1281

原创 编译 C/C++ 为 WebAssembly

o hello.html — 指定这个选项将会生成 HTML 页面来运行我们的代码,并且会生成 wasm 模块,以及编译和实例化 wasm 模块所需要的“胶水”js 代码,这样我们就可以直接在 web 环境中使用了。编译到 wasm 并且生成一个用来运行我们代码的 HTML,将所有 wasm 在 web 环境下运行所需要的“胶水”JavaScript 代码都添加进去。我们先来看一个最简单的例子,通过这个,你可以使用 Emscripten 来将任何代码生成到 WebAssembly,然后在浏览器上运行。

2024-08-12 19:33:25 1029

原创 贝塞尔曲线参数方程推导

贝塞尔曲线于 1962 年,由法国工程师皮埃尔·贝济埃(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线主要用于二维图形应用程序中的数学曲线,曲线由起始点,终止点(也称锚点)和控制点组成,通过调整控制点,通过一定方式绘制的贝塞尔曲线形状会发生变化。后面会具体介绍绘制的方法。

2024-08-06 19:04:36 675

翻译 曲率、曲率圆、曲率半径

这个图可以算出弧线上点A点到B点的平均曲率那么现在呢让B点往A点无限靠近那么算出来的曲率几乎就是A点位置处的曲率了。在那个点的那段小邻域上,使用圆去拟合某一段弧线,与那段小邻域拟合的最好的圆就叫做曲率圆,这个圆的半径就叫做曲率半径。ΔS是弧长,在曲线C1上从A点走到B点倾角的变化是阿尔法1。这里得到的是一段弧线的平均曲率,例如一个圆当从A点到B点转动2分之派角度的时候对应的弧长是2。平均曲率就是弧长所对应的转过的角度,也就是单位弧长所对应的转过的角度。某点处曲率的定义其实和导数的定义是差不多的。

2024-08-02 17:57:59 108

原创 WGS84 空间直角坐标(X,Y,Z)和 大地坐标(B、L、H)的相互换算

以上空间和平面坐标的换算较为复杂,需要一定的坐标系基础理论知识,最好使用相应的专业软件进行转换,且在转换前需要对WGS54 坐标系所采用的参考椭球参数、高斯投影的中央经线进行设置,才能进行坐标的转换。建议使用坐标转换软件COORD 完成坐标转换。2、如果是二维平面坐标系的转换,涉及到WGS84 平面直角坐标(X,Y) 和 大地坐标 (B、L)的相互换算,即高斯投影正算和反算公式。1、如果是三维空间坐标系的转换,涉及到 WGS84 空间直角坐标(X,Y,Z)和 大地坐标(B、L、H)的相互换算。

2024-07-24 10:33:29 1749

原创 自定义类加载器

输出的类加载器名称是自定义的。

2024-07-12 14:51:52 242

原创 Git-各颜色代表的含义

白色:已经add和commit过,但本次没有改动。蓝色:已经add和commit过但本次又有改动。绿色: 已经add 暂未commit。灰色:已删除或者被忽略。

2024-06-28 14:38:15 449

原创 top和ps的cpu区别

top 命令计算的是在固定时间间隔内,每个进程占用CPU的时间百分比,因此它能反映进程的实时CPU使用情况。top 中的CPU使用率之和可能超过100%,因为在多核系统中,每个核心的使用率可以单独计算,然后加总。ps 命令通常显示的是进程生命周期内的平均CPU使用率。这意味着它提供的CPU使用率是基于进程启动以来的总体使用情况,可能不如top实时。

2024-06-27 15:02:47 578

原创 E/Rajawali: Shader log: ERROR: 0:6: ‘GL_OES_standard_derivatives‘ : extension

注意: #extension GL_OES_standard_derivatives : enable 后面不接分号。该错误存在rajawali渲染引擎 v1.1.9701以及以上。在FragmentShader最前面加一行。

2024-06-20 17:52:25 475

原创 CR、 LF、CRLF的区别

而在Microsoft Windows系统中,虽然\r单独并不作为行结束符使用,但在CRLF(\r\n)组合中,\r是先执行的部分,意在回车到行首,然后\n执行换行到下一行。功能差异:CR 是回到行首,LF 是换到下一行,CRLF 则是先回到行首再换到下一行,虽然在现代电子文本中回到行首的操作通常是多余的,因为LF本身隐含了这个动作。Windows系统中,为了兼容历史原因,通常使用\r\n作为行结束标志,既回车又换行,确保了最大程度的兼容性。\n 主要负责移动到下一行,而\r则负责回到当前行的开始位置。

2024-06-20 11:56:53 1323

原创 shadertoy-安装和使用

2.mac ios系统快捷键 shift + command + p。3.搜索 shader 选择 show GLSL Preview。1.windows系统快捷键 ctrl+shift+p。2.安装shader toy插件。1.安装glsl编辑插件。test.glsl文件。安装vscode流程。

2024-06-19 23:03:11 703

原创 threejs-无限网格InfiniteGridHelper

fract()函数是GLSL(OpenGL Shading Language)中一个内建函数,用于获取一个浮点数的小数部分。换句话说,它会返回一个数减去其整数部分之后的结果,且结果的范围总是从0(包含)到1(不包含),所以fract是一个周期性函数,周期为1。可得,f(x)的周期是size, f(x)函数相当于在fract(x)函数的基础上向右和向上平移了0.5个单位。可以用函数 f(x) = | fract(x/size - 0.5) - 0.5 | 表示。

2024-06-19 13:29:45 789

转载 shader-fwidth

ddx(float3(1,2,3)) = float3(0,0,0) //因为使用该shader的所有像素 输出的记录值都是 float3(1,2,3)那么差值就为float3(0,0,0)ddx(v) ddy(v) 在计算出结果的同时,也会存储该像素的v值,这样它周围的像素才能获取到该点的v值。fwidth(Color) 就是计算出 该像素与相邻两个像素的Color的差值。fwidth(UV) 就是计算出 该像素与相邻两个像素的UV的差值。ddx(v) = 该像素点右边的v值 - 该像素点的v值。

2024-06-18 18:29:18 124

原创 gl_FragCoord 坐标系

因此,当我们谈论gl_FragCoord时,我们通常关注的是片段在二维屏幕空间的具体位置及其深度信息,而非一个三维空间中的远点参照。在OpenGL及WebGL的上下文中,gl_FragCoord坐标系并没有传统意义上的“远点”概念,因为它主要描述的是片段在屏幕空间中的位置,而非三维空间中的一个远端参考点。gl_FragCoord.x和gl_FragCoord.y代表片段在窗口(屏幕)坐标系中的水平和垂直位置,单位是像素,原点位于屏幕的左下角,x轴向右,y轴向上。

2024-06-18 18:28:32 393

原创 gl_FragCoord 坐标系

因此,当我们谈论gl_FragCoord时,我们通常关注的是片段在二维屏幕空间的具体位置及其深度信息,而非一个三维空间中的远点参照。在OpenGL及WebGL的上下文中,gl_FragCoord坐标系并没有传统意义上的“远点”概念,因为它主要描述的是片段在屏幕空间中的位置,而非三维空间中的一个远端参考点。gl_FragCoord.x和gl_FragCoord.y代表片段在窗口(屏幕)坐标系中的水平和垂直位置,单位是像素,原点位于屏幕的左下角,x轴向右,y轴向上。

2024-06-18 13:54:21 474

mingw-x86-64-8.1.0-release-posix-seh-rt-v6-rev0

mingw-x86_64-8.1.0-release-posix-seh-rt_v6-rev0 包含 gdb.exe

2022-11-09

空空如也

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

TA关注的人

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