unity图片变成马赛克如何取像素并改变颜色_介绍一下模拟器里各种常用滤镜的原理和效果,以及9102年了该如何模拟CRT!...-程序员宅基地

技术标签: unity图片变成马赛克如何取像素并改变颜色  思科模拟器32位  模拟器显示空白图片  

模拟器中的Filter或Shader基本都是基于图像本身的。一般来说模拟器不会提供与几何相关的shader(32位机以后会有少量这类shader)。也就是说,模拟器滤镜生成的图像都是在不清楚游戏本身运行逻辑的情况下,单纯对最终输出的图像进行变换。因此这里用Filter远比用Shader来得更为精确。不过因为RetroArch的滤镜系统将其称为Shader,因此之后将不分辨该用词(shader=滤镜=filter)。

以下将从抗锯齿滤镜、放大增强滤镜、效果滤镜和硬件仿真滤镜四个角度对模拟器常用滤镜进行介绍,并着重对现在应该如何模拟CRT进行说明。抗锯齿滤镜对模拟器常见的2D游戏,抗锯齿滤镜基本没什么用,所以只是简单介绍一下。首先是为什么要抗锯齿。大家知道时域采样往往要用规则采样。时域采样在频域中相当于用狄拉克梳子卷积信号本身,如果被采样信号的带宽低于采样信号的奈奎斯特频率,就没问题,不然就会堆叠失真产生aliasing(一维叫混叠,二维叫锯齿)。在空间域中采样几何本身或者现实世界图片的时候,规则采样用得很少,因为很容易对周期性高频信号出现aliasing。人们通过局部改进分辨率、随机采样等等途径进行抗锯齿,就产生了各种AA算法。我们知道模拟器滤镜都是作用于屏幕空间(不是模拟器图形设置中的AA选项),和图形渲染不同:它往往是通过减少图像中的高频信号,而非增加采样频率或改变采样策略进行AA的。是纯粹的初次采样完毕之后的空间域行为,不需要获知图形的几何信息。常用的屏幕空间AA就是FXAA了,其具体原理太过繁琐,可参考此贴:
https://catlikecoding.com/unity/ ... ced-rendering/fxaa/一般来说,2D游戏,尤其16位机器以下的游戏不要使用Anti-aliasing shader。像素图像本身甚至可以说就是由锯齿构成的,如果强行进行AA会使图像看起来非常诡异:5353c5c631eccb546c34b3e991a490f7.png3D游戏可酌情使用,尤其是模拟器本身AA开的不高的情况下。屏幕空间的AA效果虽然一般但通常速度较快,如果开3D游戏模拟器内AA比较吃力的情况下,就凑合用屏幕空间的AA吧。放大增强滤镜这类滤镜是平时最常见的,也是人们最为经常使用的滤镜(虽然LZ并不常用这类滤镜)。它的主要作用是减少像素画面的颗粒感。像素艺术最大的问题就是经不起放大:一旦放大以后,原本可爱的Sprite瞬间变得狰狞了起来:c7e92c738cb0f8fcd752219edf312f7e.png为了解决像素图像放大的问题,人们发明了一系列增强算法。在机器学习介入之前,这类滤镜还比较简单,我们也只考虑机器学习之前的常用滤镜。首先是基本的插值:Nearest Neighbor,Bilinear两种。像素图片放大这件事上,只要模拟器输出分辨率跟具体显示分辨率不匹配,模拟器本身就要选择一种插值方式。可以进行线性插值(颜色设为邻居的加权平均)或者最近邻插值(与最近的邻居像素颜色相同)。显示上最近邻插值能够还原原本的像素颗粒,而线性插值能进行初步的模糊和润滑,具体喜欢哪种就看个人喜好了。Scale系列:包括Scale2x、2xSal、EPX、AdvMAME2x等等。这类滤镜是使用简单的filter对图像进行卷积。有时比单纯的卷积要复杂一些,等价于使用了多个不同的滤镜进行卷积以后产生多个图像,最后对图像进行条件混合。还有些强调边缘的滤镜也会通过图像的二次差分判断边缘从而采取不同的混合策略(权重)。考虑最简单的Scale2x,将像素P放大为4个子像素,根据周围4像素设置子像素的颜色采用以下规则:2c7cdc34d57dd261258da10c9179f579.png1=P; 2=P; 3=P; 4=P;IF C==A => 1=AIF A==B => 2=BIF D==C => 3=CIF B==D => 4=DIF of A, B, C, D, three or more are identical: 1=2=3=4=P则称之为Scale2x算法。其结果其实基本上就是把一个像素分成了四个像素,颗粒感会大大下降。规则简单,性能也好:ea0dc26fd4b174e48fa4766505ab0b13.png其它Scale系列同理,主要都是在放大之后根据原图像周围像素颜色通过一定规则决定子像素颜色。Eagel、2xSal也是同一系列的滤镜,只不过考虑的周围像素范围不同。例如比较复合的Super2xSal考虑的像素范围就要更大一些,涉及周围11个像素的值,并且也设置了相似的判定规则,效果如下:7ec915238a599987ef9beaac2f6e21d7.pngScale系列滤镜是我认为16位机和8位机的底线,下面的就稍微有点越界了。HQx和xBR滤镜系列有时候现代人口味刁钻,希望能消除像素本身的颗粒感。而前面那些简单的临像素加权平均或分支的滤镜会导致边缘模糊,并且处理像素游戏中的线条非常苦手,因此有人开发了相应更复杂的滤镜满足这些人的需求。HQx系列:(high-quality scale)这一系列滤镜会根据周围像素颜色与自己的不同关系(周围8个像素根据阈值分为相似或者不相似两类,因此共256种可能),通过查找表的方式确定放大之后的像素颜色如何定义。而这一查找表本身的定义比较复杂。用C写几千行也很不容易(包含了HQx-2/3/4 https://github.com/grom358/hqx/blob/master/src/hq2x.c),当然用GLSL要简单不少。其目的主要是为了放大之后的线条能够更加顺滑。bf1418b9b525bfa8bc62ff8852d58688.pngxBR滤镜系列xBR滤镜系列,包含 xBR , xBRZ, xBR-Hybrid, Super xBR, xBR+3D 和Super xBR+3D.同样的,这些滤镜也主要是用来游玩像素游戏时消除像素颗粒感使用。总有人认为这种圆滑感看起来比颗粒感的像素更舒服一些。这类滤镜比HQx更强大的地方在于通过多个pass解决了许多HQx的单次查找表索无法解决的问题,让还原的线条更加锐利。具体原理参考:( https://forums.libretro.com/t/xbr-algorithm-tutorial/123)( https://pastebin.com/cbH8ZQQT)ecd78618b109439f27682d46c7ac1c11.png虽然这里可怜的马里奥看起来有点不堪,但一般情况下这个滤镜没有那么惨。xBR滤镜对边缘的处理远比HQx更加强大,非常善于消除像素的颗粒感并且保留色块和边缘的锐利。NGA有人专门写过一篇文章吹这个滤镜,并且认为xBRZ是最好的2D放大滤镜(单纯从放大角度,不考虑深度学习类的方法,应该算是没错的)。有需求的可以参考一下:
https://bbs.nga.cn/read.php?tid=9171524(然而说实话我是xBR PTSD,看着就难受)其他大多数像素增强也都是采用了各种不同的自定规则对子像素进行插值。效果有好有坏。游戏之间的图像特征也有很大的区别,适用不同滤镜,大家使用时可以根据自己的视觉体验进行选择。比如NEDI(New Edge-Directed Interpolation), 论文: http://web.archive.org/web/20101 ... et/library/nedi.pdf比如专门为GB/GBA设计的OmniScale: https://sameboy.github.io/scaling/深度学习方面尤其跟GAN有关的方法则包含一些AI将图片库中特征结合进行的创作,不符合高还原度retro gaming的主题,一般也不推荐使用。效果型滤镜以下滤镜会生成一些有趣的效果,一般用不着,想体验一下也行。Dithering:dithering是早期PC、针式打印机等等用点阵表示密度来展现色彩的。最近很火的独立游戏《obra dinn》也是这种风格。但单纯基于图像的dithering其实很消耗时间,采用一些近似的化效果也不好。用在16位机的游戏上也并不合适,凑合看看吧:bayer-matrix-dithering:25a4386ff81647f04fd0195b24b3e946.pngCel-shading:卡通渲染用在16位机上当然是个灾难,但3D游戏有时候也有点意思。同样的,不要指望单纯的屏幕空间的滤镜能搞出什么花来:05d0e4623efe06d9d5c70228b84cb1d0.png老电影:technicolor滤镜是一个不错的老电影效果滤镜,还能模拟胶卷上的点和划痕:aa0290fc842b0eda915f23eaf55b04c3.png效果型滤镜随喜好添加即可。硬件仿真型滤镜这是我认为模拟器屏幕空间滤镜真正有用的地方,也是本帖的重头戏。这类滤镜的目标是尽量模拟真实硬件的显示设备,在现代LED显示器上对古旧显示设备(掌机屏幕、电视、街机CRT等)进行仿真,从而带来更多模拟游戏和怀旧乐趣的一类滤镜。注意,这里介绍的大部分滤镜的最佳使用场景都是4K显示器全屏游玩。各种掌机屏幕几乎都没有能力模拟这些效果,而手机屏幕太小,效果是看不清的。首先来说说比较简单的掌上设备。使用显示器屏幕模拟掌机设备的一大问题是无法准确模拟掌机屏幕的表现。而屏幕空间的滤镜通过色彩、像素颗粒感这两方面尝试逼近掌机屏幕的表现。例如GB(带光)式的色彩和像素映射(gameboy-light):仔细观看会发现马里奥采用了方形像素,并且使用了横向和纵向的像素分割线对老式LCD进行了风格化。色彩映射也是GB的绿屏。b6cde697d53e2a5ac6972d5f7a45b0c1.png可见像素并非简单近邻插值,而是同时模拟了像素本身的荧光扩散效果。使用了大量的像素模拟了单个GBA像素的荧光扩散灰度显示不同亮度时的不同梯度。因此才能将像素显示的阴影感准确模拟出来。而这一效果也是在4K显示器下才能体现得最为明显。因为4K显示器有足够的像素去表现这些效果。(你要问我为什么用4K显示器全屏玩GB游戏?可能是吃得太饱了……)对比一下就知道加滤镜和不加滤镜的天壤之别。很可爱吧,是不是想起了另一个古旧LCD设备(文曲星):45056118a15970e8f90db994dd6ae40d.png这里这个GB的滤镜是LCD系列滤镜的一种。这一系列滤镜就是为了创造相应掌机设备LCD屏幕效果而出现的。它的原理大框架就是增加像素之间的间隔形成LCD颗粒感,通过隔离的荧光过渡形成像素本身的阴影感,从而复原当年的古旧LCD屏幕的样子。比如GBA样式(包括了GBA屏幕的颜色映射,GBA反射颜色并不鲜艳,用现代的屏幕去显示需要通过一定的映射)。一定程度上还原了像素排列方式,甚至还原了GBA屏幕本身的动态模糊:b56dba8d0205a3962b491fde316e82ea.png举个GBA游戏的例子:用GBA的朋友对这种色彩和像素风格的画面应该有印象5fb141fba06ffefaf0448c0357f6cc5b.png2ea3b5c9837c4d20bde6b945f41efacf.png对比不加滤镜的鲜艳色彩和线性插值的图像(用模拟器玩晓月的朋友记忆中应该是这个画面):62808cf81c04264af9a08c29c58e1810.png如果你觉得9102年了还要还原GBA的色彩简直开历史倒车(虽然这正是这篇文要干的事情……),那么也可以只进行LCD像素映射。只使用LCD3X系列滤镜而不映射色彩即可:75fc80fd05fff61976015c5c71b2ca4d.png同样的,NDS也可以采用类似滤镜。由于PSP的屏幕相对来说要好不少,类似现代显示器屏幕,一般没有针对PSP屏幕的模拟需求。如果想模拟PSP的屏幕可以使用RetroArch自带的PSP-color进行色彩映射。下面说说另一个(真正的)重头戏:CRT滤镜首先请把所有其它CRT滤镜扔掉,只留下一个:CRT-Royale(除非硬件跑不了,再考虑其他)。滤镜使用了大量pass进行了CRT的模拟。如果PC性能够强的话,延时方面的影响也很小。CRT-Royale十分复杂和强大,对GPU有一定的要求。如果用intel的GPU的话(集显)需要进行修改,改版也在RetroArch里提供了。用来显示CRT-royale滤镜的屏幕至少需要2K以上的分辨率,4K甚至8K屏幕的模拟效果更加真实。是的你没看错,要模拟CRT,最低要求是2K分辨率,4K更佳。我们知道CRT中的磷光体(或荧光体)是产生冷发光现象的物质,受到阴极射线(电子束)激活发光。它发出的光线具有一定的特征,与现代LED的像素光线有较大的区别。CRT滤镜的关键就是通过大量现代LED像素去模拟磷光体的发光特征,从而模拟CRT的显示效果。而在这方面做得最好的就是此滤镜了。(CRT虽然没有直接的像素的概念,只有荧光粉或者荧光条。不过电子束的信息改变是离散的,因此我们可以将离散电子束信息改变周期内扫过的空间等价为像素的概念)。在RetroArch的桌面UI里打开CRT-royale的设置界面,我们可以看到很多相关设置,涉及到一些重要的调整项。如果你对Shader语言略有了解,也可以直接打开Shader文件进行调整,只是没有界面中方便。根据每个人接触到的不同型号和不同厂家生产的CRT,你所喜爱的CRT参数必然有所不同,玩家可以自行调整到喜欢的设置选项。首先看看效果(网络图片有压缩,要观看大体效果还是自己4K全屏运行模拟器比较靠谱。看图片也要看大图,小图自带AA,把所有特征都抹掉了):e2fec032e07184947c8b997b78c3737b.pnge5a18b3d9938d15a28d632d4a7c34870.png对比没开滤镜的游戏:9d31a71344aee6ee9a7c9f47c2edee12.png影响最终效果的选项很多。下面我们来解释一些影响较大的参数:Halation and DiffusionHalation是被荧光体直接反射的光线,而Diffusion是光线穿过CRT玻璃时产生的散射荧光。这两项参数的权重可以进行调整。b008e8044cf050ad7ea97cfbe0a3fff9.pngBloom如果点亮的荧光体发光过强影响到了电视上的其他面积,使整个画面变得过亮,就是一种bloom的效果。特别好的CRT会控制bloom,但由于这是大量中低端电视可能产生的效果,因此也需要忠实模拟。605aaaa20754fb212d6257e9583cd0bc.pngBeam这项参数控制了实际进行扫描的电子束的各项维度。不知为何一直有人认为scanline是黑线:scanline是扫描到的线,而没扫描到的地方才是黑线。除了可以调整Beam本身的大小以外,这里也可以调整高斯模糊函数的各个参数。根据不同的参数选择可能产生不同型号电视或街机的效果:c26b419d171f41c6ce3dc8a68d5339a4.pngConvergence彩色电视电子枪发射的三束射线对荧光粉的轰击是否足够整齐:好的CRT比如彩监是非常整齐的,但许多消费者级别的CRT这方面的表现就很一般了,根据每个人童年不同质量的CRT可以仔细微调。4199830d0d54977711bd16c2526ad717.pngMASK这项控制的是荧光体的排列方式。滤镜提供了三种排列:0.0 (Aperture Grille), 1.0 (Slot Mask), 和 2.0 (Dot Mask)。这三种排列如下:22b49fde301559c78ce240e00c5b2f51.png每一种排列都对应不同厂家的电视效果,可以分别予以调整。同时,MASK也有大量参数可以进行调整。比如使用的荧光体个数可以调整CRT显示的粒度。7ab4cf856c158c936a7b84a3b3e1cd8c.png和其它滤镜相比也是高下立判。如果你觉得没有高下立判,就调整参数让它高下立判!563ea6e292b1781b59dcc7b5246696b6.png不同的制式和不同的输入会有一定程度的图像失真,没关系,这些失真可以用额外的pass来模拟。比如电视机的composite输入导致的色彩失真效果,加NTSC的色彩映射的效果如下:6636c1db5d99e64d88668ec23c9eb7e6.png63211d5ec1be0ba54c3690f2d51410e5.png再传两个其他游戏的图,还是那句话,要在自己的屏幕上运行模拟器动态才能比较明显看到效果。715d07d43292100bc67087ff521a7eae.png6e0d5d8d6bce36feb93be8c9e6bbcdf6.pnga6d3efb07bc4cec6d6a4a4dbccf16a85.png以上基本介绍了常见的几种Filter和它们的大体效果。那么如何使用这些filter?哪些模拟器支持shader语言写的filter呢?这里:http://emulation.gametechwiki.com/index.php/Shaders_and_Filters 介绍了一些常见模拟器支持的filter文件类型。一般来说,采用通用前端RetroArch可以使用大部分的shader,而使用模拟器自带前端则有很多限制。所以最简单的方案就是直接使用RetroArch,然后从其shader文件夹中选择所需shader,并通过菜单调整相应参数即可。具体来说,RetroArch目录下有个Shaders目录,Shaders目录下面三个文件夹分别是三种不同类型的shader语言写的shader,大多都实现了一遍。其中不少预设做得不错,比如GBA可以用预设好的lcd-grid-v2-gba-color-motionblur,就集成了好几个滤镜同时对图像进行变换。而CRT滤镜CRT_royale在shaders/shaders_xxx/crt文件夹里。通过RetroArch的加载预设Shader的功能,选择这些文件,就可以使用相应滤镜了。总结:模拟器滤镜是个挺大的话题,这里只是简单介绍一些类型和它们的效果。一般来说,对32位及以下机型模拟时才推荐使用屏幕空间的滤镜,抗锯齿滤镜一般不推荐像素游戏使用。像素放大增强滤镜根据个人口味使用,一般来说进行简单的2xSal等即可,特别讨厌像素的颗粒感的话,可以考虑HQx或xBR系列滤镜。如果追求一些特殊效果,可以使用效果型滤镜。而为了模拟古旧硬件(主要是显示设备),则可以分别使用该种硬件的滤镜。CRT滤镜主要就是CRT-Royale,按照自己口味调整之后,配合高亮度4K显示器,基本可以满足一般CRT模拟需求。如果有特殊需要当然实机+彩监更好,没有这个条件的话模拟器效果也不赖,而且彩监只能体验一种或少数型号的显示效果,而滤镜可以自行配制体验多种电视和信号的不同感觉,因此也并不冲突。此外,部分Filter会降低游戏性能,或者因为需要帧信息从而略微增加游戏延时,有性能需求时应当关闭所有滤镜。不摸鱼了。参考:
http://emulation.gametechwiki.com/index.php/CRT-Royale
https://en.wikipedia.org/wiki/Pixel-art_scaling_algorithms
https://www.retroarch.com/index.php?page=shaders
http://emulation.gametechwiki.com/index.php/Shaders_and_Filters感谢版主加亮,加一些FAQ。Q&AQ:我在用xxx模拟器(比如PS2……),这个模拟器好像不支持CRT_Royale,怎么办呢?或我不喜欢RetroArch,不用这个的话怎么自由使用滤镜?首先当然是看RetroArch能否支持你使用的模拟器后端(也就是是否包含在Libretro里)。一般来说只要使用RetroArch,事情就解决了。如果RetroArch不支持,或者不喜欢使用这个前端,另一个办法是用ReShade,但需要改写一下Shader的源文件。只能有志者去改了。其他一些可用的滤镜见这里:
https://github.com/Matsilagi/reshade-retroarch-shaders再有就是通过OBS之类录屏软件间接执行shader,可以参考这里:
https://obsproject.com/forum/res ... er-v1-0-update.775/具体我就没时间研究了,有愿意尝试的可以试着跳坑。一个典型例子是PS2,现在只能采取上面这些间接的办法。要直接使用,要么改一下CRT_Royale让PCSX2能编译(应该不算特别难但暂时没人去做),要么等PCSX2的Core做出来,或者看Play!的Core什么时候发布。制作PCSX2的Libretro Core的悬赏:
https://github.com/libretro/RetroArch/issues/6867libretro近期会发布Play!的Core,有兴趣也可以关注一下:
https://www.libretro.com/index.p ... ng-a-libretro-core/Q:使用这些滤镜延时大不大?一般来说这类滤镜由于只是处理一遍图像,因此所需的性能不多,Lag很小。CRT-Royale因为有14个pass,如果增加其他效果的话pass更高,对性能还是有一定需求的,但很多人的测试是GTX750以上性能方面就基本不是问题了。如果明显感觉到Lag当然还是关掉滤镜比较好。Q: LZ能不能提供你使用的滤镜?因为每个人的显示设备不同,所以还是自行调整比较好(至少gamma要调好)。RetroArch已经有一些多pass的预设,比如crt-royale-tvout+image-adjustment等等,直接用效果也不错。如果对扫描线很执着,也可以直接用cgp/crt-royale-kurozumi(国外论坛很多人喜欢这个滤镜,有兴趣不妨试试看效果)。Q:为什么我加载一些滤镜没有效果?可能是RetroArch的bug,有些后端运行的时候不支持编译某种类型的shader。试试其他语言(比如CG、GLSL换着试试)的相应滤镜。Q:球面效果和CRT皮肤是怎么弄的?球面效果在CRT_Royale的geom选项那里设置,可以设置球面的半径,以及设置观众距离球面的距离等等参数。至于那个CRT皮肤,是我直接放在OBS里的一张边框图片而已,营造一些怀旧氛围。模拟器设置里也有一些边框可以选择。Q:搞这个干啥反正比不上CRT手机照相或许被单反秒杀,不代表手机照相没意义。至少有一定怀旧需求的朋友还是需要一些利用现代硬件模拟古旧硬件的简单方法。虽然总体应该不如成色好的CRT,但如果使用的4KLED显示器质量还行的话,效果也不赖,具体可以自行实验一下。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39861255/article/details/111279334

智能推荐

Docker 快速上手学习入门教程_docker菜鸟教程-程序员宅基地

文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程

电脑技巧:Windows系统原版纯净软件必备的两个网站_msdn我告诉你-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你

vue2封装对话框el-dialog组件_<el-dialog 封装成组件 vue2-程序员宅基地

文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

redis-desktop-manager无法连接redis-server的解决方法_redis-server doesn't support auth command or ismis-程序员宅基地

文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try

实验四 数据选择器及其应用-程序员宅基地

文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用

随便推点

灰色预测模型matlab_MATLAB实战|基于灰色预测河南省社会消费品零售总额预测-程序员宅基地

文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件

log4qt-程序员宅基地

文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt

100种思维模型之全局观思维模型-67_计算机中对于全局观的-程序员宅基地

文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的

线程间控制之CountDownLatch和CyclicBarrier使用介绍_countdownluach于cyclicbarrier的用法-程序员宅基地

文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法

自动化监控系统Prometheus&Grafana_-自动化监控系统prometheus&grafana实战-程序员宅基地

文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战

React 组件封装之 Search 搜索_react search-程序员宅基地

文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search