草庐IT

padding-box

全部标签

Three.Js: 在元宇宙看电影,享受 VR 视觉盛宴

最近元宇宙的概念很火,并且受到疫情的影响,我们的出行总是受限,电影院也总是关门,但是在家里又没有看大片的氛围,这个时候我们就可以通过自己来造一个宇宙,并在VR设备(Oculus、cardboard)中来观看。今天我打算用Three.js来实现个人VR电影展厅,整个过程非常的简单,哪怕不会编程都可以轻易掌握。想要顶级的视觉盛宴,最重要的肯定是得要一块大屏幕,首先我们就先来实现一块大屏幕。大屏幕的实现主要有两种几何体,一种是PlaneGeometry和BoxGeometry,一个是平面,一个是六面体。为了使得屏幕更加有立体感,我选择了BoxGeometry。老样子,在添加物体之前,我们先要初始化我

过了一把区块链的瘾!带你了解一下!

大家好,我是敖丙。在很早以前,一个网站还只对应着一个数据库,所有的数据都以一定规则存储在某台服务器上。假设这台存储数据的服务器宕机了并且数据还没有进行备份,那么结局你懂的。。人们意识到了要将数据或者流量分布在不同的节点上以防止突发情况——分布式技术诞生了。但尽管如此,分布式技术也同样会带来些许问题,比如多节点数据同步、以及节点权限等问题。后来人们思考,是否可以在分布式的思想基础上做到权限统一、共同维护的特点?就像是每个人手握一份”账本“,所有人都能看到相同的记录,然后再统一地校验数据呢?于是「分布式账本」被提倡了出来。秉着”公开透明“、”不可伪造“、”不可篡改“的特点,它成为了区块链的核心,让

Three.Js: 在元宇宙看电影,享受 VR 视觉盛宴

最近元宇宙的概念很火,并且受到疫情的影响,我们的出行总是受限,电影院也总是关门,但是在家里又没有看大片的氛围,这个时候我们就可以通过自己来造一个宇宙,并在VR设备(Oculus、cardboard)中来观看。今天我打算用Three.js来实现个人VR电影展厅,整个过程非常的简单,哪怕不会编程都可以轻易掌握。想要顶级的视觉盛宴,最重要的肯定是得要一块大屏幕,首先我们就先来实现一块大屏幕。大屏幕的实现主要有两种几何体,一种是PlaneGeometry和BoxGeometry,一个是平面,一个是六面体。为了使得屏幕更加有立体感,我选择了BoxGeometry。老样子,在添加物体之前,我们先要初始化我

Go实战 | 记一次降低30%的CPU使用率的优化

大家好,我是渔夫子。今天聊聊在项目中通过优化redis写入而降低cpu使用率的一次经历。1.背景本文是项目中基于redis记录实时请求量的一个功能,因流量上涨造成redis服务器的CPU高于80%而触发了自动报警机制,经分析将实时写入redis的方式变更成批量写入的方式,从而将CPU使用率降低了30%左右的经历。具体业务需求是这样的:我们会将接受到的请求按地域属性进行划分。目标是针对具体的国家请求进行总数的控制。当达到预设的最大请求数时,就不再处理该流量,直接给客户端返回204响应。如果没有达到最大请求数,则需要对实时请求数+1。如下图所示:2.现版本一第一个版本很简单,就是将最大值存放在re

Go实战 | 记一次降低30%的CPU使用率的优化

大家好,我是渔夫子。今天聊聊在项目中通过优化redis写入而降低cpu使用率的一次经历。1.背景本文是项目中基于redis记录实时请求量的一个功能,因流量上涨造成redis服务器的CPU高于80%而触发了自动报警机制,经分析将实时写入redis的方式变更成批量写入的方式,从而将CPU使用率降低了30%左右的经历。具体业务需求是这样的:我们会将接受到的请求按地域属性进行划分。目标是针对具体的国家请求进行总数的控制。当达到预设的最大请求数时,就不再处理该流量,直接给客户端返回204响应。如果没有达到最大请求数,则需要对实时请求数+1。如下图所示:2.现版本一第一个版本很简单,就是将最大值存放在re

使用 SwiftUI 的 Eager Grids

介绍早在2020年,我们就拥有了在SwiftUI(LazyVGrid和LazyHGrid)中绘制网格的新视图控件。两年后,我们又获得了另一种在网格(Grid)中显示视图的视图控件。但是,这些新增功能非常不同,不仅在您使用它的方式上,而且在它内部的行为方式上。2020年的观点很懒惰。这些新人很热心。lazygrids不会渲染甚至实例化屏幕外的视图。单元格视图仅在它们被滚动时创建,并且在它们滚动时停止计算。这篇文章的主题EagerGrids正好相反。SwiftUI不在乎它们是在屏幕上还是在屏幕外。所有视图都被同等对待。这可能会出现大量单元的性能问题。然而,多少是一个很大的数字是一个不可能回答的问题

Android音频采集常用方式详解

前言Android音频采集android音频采集一般两种方式:AudioRecord和MediaRecorder两种都可以录制音频,MediaRecorder已实现大量的封装,操作起来更加简单,而AudioRecord使用起来更加灵活,能实现更多的功能一、Android音频采集1.AudioRecord基于字节流录音;可以实现语音的实时处理,进行边录边播,对音频的实时处理;AudioRecord是一个比较偏底层的API,它可以获取到一帧帧PCM数据,之后可以对这些数据进行处理;输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用到AudioTrack这个去进行处理;2.Med

Android中实现系统声音录制-RK3399开发板源码修改

前言这几天做系统声音录制,通过改源码编译后成功的;那就详细介绍下内置声源的录制方案。Android中可以通过使用MediaRecorder.AudioSource.REMOTE_SUBMIX来实现系统声音的录制,这个属性只有系统应用能够使用。而且这个属性会截掉耳机和扬声器的声音,听不到手机中播放音乐或者视频时的声音。这个时候我们就要来改系统源码。一、录音的简单实现AudioRecordaudioRecord=newAudioRecord(MediaRecorder.AudioSource.REMOTE_SUBMIX,captureSampleRate,captureChannel,AudioF

使用 Swift Package 插件生成代码

前言不久前,我正在工作中开发一项新服务,该服务由SwiftPackage组成,该Package公开了一个类似于Decodable​协议,供我们应用程序的其余部分使用。事实上,该协议是从Decodable本身继承下来的,看起来像这样:Fetchable.switprotocolFetchable:Decodable,Equatable{}新的package将采用符合Fetchable的类型来尝试从远程或缓存的JSON数据块中解码它们。由于这项服务对应用程序的正确运行至关重要,作为这项工作的一部分,我们希望确保始终存在故障安全(fail-safe)。因此,我们让该应用程序附带了一个备用的JSON文

解决 Flutter 引起的 iOS 内存崩溃问题

背景如果你的Flutter版本号小于等于2.5.3或大于等于3.0.5,以下描述的问题将不会发生在你的应用中,但是我相信大部分应用都会命中此区间。事情发生在最近,我们的应用(稿定设计)新上线的iOS版本崩溃数据飙升。根据崩溃日志和用户反馈,大部分新增崩溃都来自于同一个原因:内存不足。有的直接变成OOM,不易排查。有的则是申请内存失败,导致后续逻辑错误的崩溃。结合「处处开花,多点爆破」的情况来看,应该是某种偏底层的内存管理问题。这就有点挠头了,因为这个版本并没有做什么内存相关的改动。于是我采取了二分法,花了两个小时试了版本中所有PR,发现罪魁祸首是Flutter版本升级:2.5.3→2.10.。