BufferedImage 与像素级渲染
常有人说 Java 图形渲染很慢?嗯,相对 C/C++ 而言, Java2D 固有的图像处理能力确实有待提高。
但是,这也仅仅局限于对比 C/C++ 应用而言。
如果您是以其它什么东西与之比较,却得出 Java 渲染很慢的结论。那么,或者并不是出自 Java 本身的原因,而在于您并没能搞清楚该怎样正确的使用 Java 绘图。
况且,即便是相对于 C/C++ 而谈, Java 也并非相差到难以望其项背的地步。相对于某些行将就木的技术,至少我们除了异常积极的自行修改 JRE ,或者极端消极的等待 JRE 官方更新以外,还有使用 OpenGL 或者像素级优化这两条道路可走。
在本节当中,我们就先谈点基础的,来说说 Java 渲染的像素级优化吧。
像素与 RGB :
像素是什么?简单的讲,像素就是色彩,像素是系统能够在计算机屏幕上显示的最小染色点。越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。
众所周知,图像是像素的复合,看似绚丽的形象,也无外是一个个肉眼难以分辨的细微颗粒集合罢了。
比如,在一些常见的 Java 图像处理中,我们经常会用到所谓的 RGB24 模式( 24 位三原色模式,在 Java2D 中以 TYPE_INT_RGB 表示),将 Red , Green , Blue 三种色彩加以混合,创造出唯一的色彩点并绘制到计算机之上。而这个色彩点,也就是所谓的像素。因为在 RGB24 中 Red , Green , Blue 三者都被分配有一个 0~255 的强度值,所以该 RGB 模式的极限机能就是 256*256*256 ,即至多可以显示出 16777216 种颜色。
PS :关于 16 位的 RGB565 ( Java2D 中表示为 TYPE_USHORT_565_RGB )以及 RGB555 ( Java2D 中表示为 TYPE_USHORT_555_RGB )会在以后章节中涉及,大家此刻只要知道,使用 24 位以下的图形处理模式,在显示速度上虽然会有提高,视觉效果上却必然会有损失就可以了。
也许有网友会感叹。哇! 16777216 种颜色,这么多?难道都能用上吗?!
没错, 16777216 种颜色确实很多;事实上,这已非常接近于人类肉眼所能观察到的颜色数目极限 , 所以我们又将它称之为真彩色。然而,人类的欲求却是无止境的,即便能够展现出 16777216 种颜色的 RGB 真彩模式,依旧有人嫌弃它的效果太差。
否则,在您计算机“颜色质量”一栏中,或许就不会再有 32 位这种“多余”的选择了。
正是因为人类天性的贪婪,当今 2D 、 3D 图形渲染中最为常见的 ARGB 模式,也就是 32 位真彩模式才会应运而生。
ARGB 模式:
您问什么是 ARGB ?其实,它就是个穿了 Alpha 通道马甲的 RGB 。
事实上,较之最初的 RGB 模式, ARGB 仅仅增加了一个名为 Alpha 的色彩通道。这是一个 8 位的灰度通道,用 256 级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域。通俗的说,你的 ARGB 图像是否透明,与底层图像的遮挡关系如何,都将由 Alpha 这个参数所决定。
在 Java2D 中, TYPE_INT_ARGB 象征着 32 位十六进制数的 ARGB 色彩模式。
将“ 32 位十六进制数”的概念具象化后,也就是四对十六进制数字的序列。每个十六进制对定义四个颜色通道,即 Red 、 Green 、 Blue 和 Alpha 中每个颜色通道的强度,全以范围介于 0 到 255 之间的十进制数的十六进制表示法。(在 16 进制表示中, FF 是指全强度 ,最高的 255 。 00 是指通道中无颜色,最低为 0 )
正如大家都知道的那样 , 由于颜色值长度需要两位数字 , 因此您需要填充一个通道 , 例如用 01 代替 1 ,这样才可确保十六进制数中始终具有八个数字。还应确保指定十六进制数前缀 0x ,这样才能被 Java 识别为 16 进制。
例如,白色 ( 全强度 ) 用十六进制记数法表示为 : 0xFFFFFFFF 。而黑色正好相反;它在红色、绿色和蓝色中的任何一个通道中都 无颜色,结果就成了 : 0xFF000000 。请注意 , Alpha 通道中的全强度意味着没有 Alpha(FF) ,也就是不透明 , 而无强度 (00) ,则意味着全透明。
利用 ARGB 模式,我们可以轻易的创建出一些 RGB 所无法实现的艳丽图像,完成一些 RGB 所无法企及的缤纷效果。应该说,如果您只是想制作一个让人可以入目的画面,那么普通的 RGB 模式已然游刃有余,但如果您想百尺竿头更进一步,制作出一些让人心旷神怡的视觉盛宴,那就非 ARGB 不可。而一旦您开始使用 ARGB ,就与 Alpha 、 Red 、 Green 、 Blue 这四层色彩通道留下了不解之缘。
在 Java 中获得 ARGB 像素的方法如下:
public static int getARGB( int r, int g, int b, int alpha) {
return (alpha << 24) | (r << 16) | (g << 8) | b;
}
关于 BufferedImage :
当我们需要使用像素级操作,当我们需要设定针对不同图像的不同色彩模式时,最直接有效的方法,就是使用 BufferedImage 。
事实上,就像深入优化 Flash 渲染必须利用 BitmapData 一样,没有对 BufferedImage 的相关了解,提高 Java2D 性能根本无从谈起,甚至不能说你会用 Java2D 。
当您想要创建 BufferedImage ,并对其中像素进行直接操作时,大体上有三种方式可选:
1 、直接创建 BufferedImage ,导出DataBufferInt 对象获取像素集合。
// 创建一个 640x480 的 BufferedImage ,设定渲染模式为 ARGB
BufferedImage image = new BufferedImage (640,480,
BufferedImage . TYPE_INT_ARGB );
// 获得当前 BufferedImage 的图像数据 存储器,并转为 DataBufferInt
DataBufferInt dataBuffer = ((DataBufferInt) image.getRaster()
.getDataBuffer());
// 获得对应 BufferedImage 的像素数组
int [] pixels = dataBuffer.getData();
2 、以 int[] 生成 WritableRaster ,以 WritableRaster 产生 BufferedImage 。
// 设定 BufferedImage 的宽与高
int width = 640, height = 480;
int size = width * height;
// 创建数组,用以保存对应 BufferedImage 的像素集合
int [] pixels = new int [size];
// 以指定数组创建出指定大小的 DataBuffer
DataBuffer dataBuffer = new DataBufferInt(pixels, size);
// 创建一个 WritableRaster 对象,用以 管理光栅
WritableRaster raster = Raster.createPackedRaster (dataBuffer,width, height,width, new int [] { 0xFF0000, 0xFF00, 0xFF }, null );
// 创建一个 24 位的 RGB 色彩模型,并填充相应的 R 、 G 、 B 掩码
DirectColorModel directColorModel = new DirectColorModel(24, 0xFF0000, 0xFF00, 0xFF);
// 以下为 32 位 RGB 色彩模型
// DirectColorModel directColorModel = new DirectColorModel(32, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
// 生成 BufferedImage, 预设 Alpha ,无配置
BufferedImage image = new BufferedImage(directColorModel, raster, true , null );
3 、与方法 2 基本相同,唯一差别在于使用了 SampleModel
int width = 640, height = 480;
int size = width * height;
int [] pixels = new int [size];
// 24 位色彩模型
DirectColorModel directColorModel = new DirectColorModel(24, 0xFF0000,
0xFF00, 0xFF);
// 以 SinglePixelPackedSampleModel 构建像素包
SampleModel sample = new SinglePixelPackedSampleModel(
DataBuffer . TYPE_INT , width, height, new int [] { 0xFF0000,
0xFF00, 0xFF });
// 生成 DataBuffer
DataBuffer dataBuffer = new DataBufferInt(pixels, size);
// 以 SampleModel 及 DataBuffer 生成 WritableRaster
WritableRaster raster = Raster.createWritableRaster (sample,dataBuffer,
new Point(0, 0));
// 生成 BufferedImage
BufferedImage image = new BufferedImage(directColorModel, raster, true , null );
实际上,虽然表面上有所不同,但无论您采用以上何种方式获得 BufferedImage 及其对应的像素集合( PS: 此处并非一定要获得像素的 int[] 形式,如 short[] 、 byte[] 等各式亦可,请根据实际需求决定), pixels 对您而言都将成为一块保存有图像数据的内存区域,针对此 pixels 进行的任何修改,都将被直接反馈于 BufferedImage 之上。
得到了像素集合,我们又该如何将其应用到 Java2D 中呢?下面,我将介绍两个像素级 Java 渲染组件给大家参考。下面我们所使用到的一切操作,也都将围绕 pixels 这个以 int[] 形式出现的数组展开。
一、 古董级的 Processing
项目地址: http://processing.org/
这是一套完整的,开源的,兼顾 2D 与 3D 方面的 Java 渲染组件。事实上, Processing 在针对 Java2D 性能优化上的意义并不太大,因为它本来就不是为了解决性能问题而出现的。
Processing 所做的,更多的是一种效果优化,一种对 Java 语言的延伸。它希望人们能利用它对 Java 的扩充,以简单高效的方式实现绚丽夺目的图形效果。应该说, Processing 将 Java 的语法简化并将其运算结果 “ 感官化 ” ,让使用者能很快享有声光兼备的交互式多媒体作品。
由于 Processing 运行于 PApplet 之上,而 PApplet 继承自 Applet 。也就是说原本的 Processing 也是一种小程序,如果我们要将它应用在网页环境之外,要们就将 PApplet 插入到 Frame/JFrame 当中,要么就将其改写。
为了未来的演示更加方便,笔者选择了改写的道路,将其 PGraphics 渲染层直接封装。以下,是一个已经替换为 Processing 渲染的 LGame 示例:
- public class ProcessingBall extends Screen {
- class Ball {
- float x;
- float y;
- float speed;
- float gravity;
- float w;
- float life = 255 ;
- Ball(float tempX, float tempY, float tempW) {
- x = tempX;
- y = tempY;
- w = tempW;
- speed = 0 ;
- gravity = 0 .1f;
- }
- void move() {
- speed = speed + gravity;
- y = y + speed;
- if (y > getHeight()) {
- speed = speed * -0 .8f;
- y = getHeight();
- }
- }
- boolean finished() {
- life--;
- if (life < 0 ) {
- return true ;
- } else {
- return false ;
- }
- }
- void display(LPGraphics g) {
- g.fill(0 , life);
- g.ellipse(x, y, w, w);
- }
- }
- private ArrayList balls;
- private int ballWidth = 48 ;
- PImage image=Utils.loadImage("system/image/logo.png" );
- public ProcessingBall() {
- balls = new ArrayList();
- balls.add(new Ball(getWidth() / 2 , 0 , ballWidth));
- }
- public void draw(LPGraphics g) {
- g.background(255 );
- for ( int i = balls.size() - 1 ; i >= 0 ; i--) {
- Ball ball = (Ball) balls.get(i);
- ball.move();
- ball.display(g);
- if (ball.finished()) {
- balls.remove(i);
- }
- }
- }
- public void leftClick(MouseEvent e) {
- balls.add(new Ball(getMouseX(), getMouseY(), ballWidth));
- }
- public void middleClick(MouseEvent e) {
- }
- public void rightClick(MouseEvent e) {
- }
- public void onKey(KeyEvent e) {
- }
- public void onKeyUp(KeyEvent e) {
- }
- public static void main(String[] args) {
- GameScene frame = new GameScene( "球体下落" , 480 , 360 );
- Deploy deploy = frame.getDeploy();
- deploy.setScreen(new ProcessingBall());
- deploy.setShowFPS(true );
- deploy.setFPS(100 );
- deploy.mainLoop();
- frame.showFrame();
- }
- }
二、 新生代的 PulpCore
项目地址: http://www.interactivepulp.com/pulpcore/
事实上, PulpCore 在国外的 Java 圈中也算颇有名气,甚至连某位 JavaFX 开发者都曾以它和自己的项目作过比较。如果有朋友泡过 http://www.javagaming.org/ ,想必应该知道,如果你在该论坛中寻求 Java 游戏框架,那么 3D 方面的优先推荐必然是 JME , 2D 方面的优先推荐绝对是 Slick2D ,至于网页游戏开发方面,则必属 PulpCore 无疑。
在以 OpenGL 为绝对主流的 javagaming 上,一款以标准 Java2D 开发的框架,居然会受到如此推崇, PulpCore 的技术价值我们可想而知。
下图为 PulpCore 提供的应用示例:
PS :虽然 PulpCore 所提供的示例多为小游戏,但该作者曾反复强调, PulpCore 是一个开源的 2D 渲染和动画处理框架。
与 Processing 一样,启动 PulpCore 的 CoreApplet 继承自 Applet ,所以 PulpCore 依旧属于 Applet 实现,也就是默认情况下只能运行于网页之上。但相对于标准 Applet 应用, PulpCore 却做了更多的优化,尤其注重用户体验与动画效果。应该说, Pulpcore 是目前为止笔者所见过的,在不损失图像色彩的情况 下最高效的 Java2D 解决方案。
关于图像渲染部分, PulpCore 中有对应于标准 Java2D 的 Graphics 类,名为 CoreGraphics 。其中对像素级操作进行了必要的封装,也基本参照标准 Java2D API 命名。( PS :具体留待下节讲解,目前请自行参考其源码)不过,或许是方便模块化管理的缘故, CoreGraphics 默认情况下并不对外开放,而被统一封装在 PulpCore 所提供的各种精灵类里。
如果您想要获得 CoreGraphics 进行修改,要么请重载 Sprite 的 draw( 需要 super.draw 一下,否则会覆盖到基础操作 ) ,要么请在 Scene2D 中重载 drawScene (需要 super.drawScene 一下,否则会覆盖到基础操作), PulpCore 并没有直接提供给您。对于仅想进行简单图形绘制的用户而言,这不得不说是一个小小的不足。
另外,虽然 PulpCore 也有对应于 Font 的 CoreFont 类,但相比于 Processing 的字体绘制方案,它明显寒酸了很多。
实际上, PulpCore 中的 CoreFont 只是一个分图管理器,由用户导入一张由英文字母及各种符号组成的图像,而 CoreFont 负责分配不同的图像对应不同的字母绘制。这意味着,如果您不自行扩充其 CoreFont 部分,那么 PulpCore 将绝对无法支持中文输入及显示。( PS :目前来说,最偷懒的方法就是将 Processing 中的 PFont 和 text 部分直接“移植”到 CoreGraphics 中使用。毕竟两者都是操作像素绘制图像,很好 copy ……)
针对 PulpCore 的 CoreGraphics ,笔者也提供了一个 LGame 的替代封装,以方便后文讲解分析其渲染方式之用。
示例源码:
- public class Test extends Screen {
- class Ball {
- private CoreImage image = CoreImage.loadImage( "ball.png" );
- private int x, y, size;
- protected int vx, vy;
- public Ball( int x, int y, int vx, int vy) {
- this .size = image.getWidth();
- this .x = x;
- this .y = y;
- this .vx = vx;
- this .vy = vy;
- }
- public void move() {
- x += vx;
- y += vy;
- if (x < 0 || x > getWidth() - size) {
- vx = -vx;
- }
- if (y < 0 || y > getHeight() - size) {
- vy = -vy;
- }
- }
- public void draw(CoreGraphics g) {
- g.drawImage(image, x, y);
- }
- }
- private static final int NUM_BALLS = 99 ;
- private Random rand;
- private Ball[] ball;
- public Test() {
- // 以当前毫秒生成随机数
- rand = new Random(System.currentTimeMillis());
- ball = new Ball[NUM_BALLS];
- // 初始化球体参数
- for ( int i = 0 ; i < NUM_BALLS; i++) {
- int x = rand.nextInt(getWidth());
- int y = rand.nextInt(getHeight());
- int vx = rand.nextInt( 10 );
- int vy = rand.nextInt( 10 );
- ball[i] = new Ball(x, y, vx, vy);
- }
- }
- public void draw(CoreGraphics g) {
- for ( int i = 0 ; i < NUM_BALLS; i++) {
- ball[i].move();
- ball[i].draw(g);
- }
- }
- public void leftClick(MouseEvent e) {
- }
- public void middleClick(MouseEvent e) {
- }
- public void onKey(KeyEvent e) {
- }
- public void onKeyUp(KeyEvent e) {
- }
- public void rightClick(MouseEvent e) {
- }
- public static void main(String[] args) {
- GameScene frame = new GameScene( "多球体渲染" , 480 , 360 );
- Deploy deploy = frame.getDeploy();
- deploy.setScreen(new Test());
- deploy.setShowFPS(true );
- deploy.setFPS(100 );
- deploy.mainLoop();
- frame.showFrame();
- }
- }
另外笔者还要补充一点,那就是 PulpCore 虽然提供了较为完善的“脏绘”机制,却必须和 Sprite 一起使用才能看到效果(被封装到了 Sprite 的 draw 函数里,所以单就渲染速度而言,在 PulpCore 中使用精灵绘图反而比不用更快)。
从下文开始,笔者将以 PulpCore 为基础,逐步讲解 Java 像素级渲染框架的设计与实现。
以下为以PulpCore与Processing进行渲染的LGame实验工程:
http://loon-simple.googlecode.com/files/Pixels-LGame.7z
——————————————————————
心理学上有一个名词叫做 The Halo Effect ,也就是俗称的晕轮效应或者说“刻板印象”。在这种心理现象影响下,很多人往往会将某种事物的“第一印象”当作终身的准则,而无视其实际究竟是怎样的。
其实对于 Java 桌面或网页应用而言,性能上的问题早就已经算不得什么问题。只要人们稍微留心一下,就会发现 Java 在游戏开发方面,至少在网页游戏方面完全可以比某些东西作的更好,更强,更复杂,更快捷,也更稳定。真正关键的,反倒是那些听信了流言蜚语的人们对于 Java 性能上的误解,以及食古不化的偏见,才是真正制约 Java 发展的拦路虎。
所谓积重难返,要想扭转这种顽固偏见,只凭小弟一人是绝对不足够的,还要靠各位 Java 同仁的努力。
都说“荒田无人耕,耕开有人争”,可都等着别人耕田,毕竟太慢,始终没有自己动手那么快捷。毕竟只有将 Java 做大做强,各位同仁才能有更多的出路,更好的待遇,以及更多的 Money 好赚……
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 骑士CMS SQL注入漏洞
影响版本:通杀程序介绍: 骑士CMS人才系统,PHP人才招聘程序 (www.74cms.com/)漏洞文件:ajax_output.php预览源代码打印关于1 $category_id=trim($_GET[category_id]); 2 3 if (($category_id+0)>0 && intval($category_id)==$category_id) //只用了if判断并没有执行…...
2024/4/28 12:56:01 - 前端开发必备神器
前端开发必备神器 一刀在手,天下我有 一、psotman(https://www.getpostman.com/)(链接:http://pan.baidu.com/s/1c6jWkQ密码:a4uh)Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口。 使用方法:…...
2024/4/17 18:51:47 - Java简单实现视频录制播放功能
用Robot类,来连续截取屏幕图片,并通过JLabel连续加载图片,来实现一个视频录制的功能。 StartCapture.java类是主类,用来实现录制桌面图片的功能,以下是代码package CountDown;import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Dimension; im…...
2024/4/20 6:05:37 - Spring Boot修改Tomcat配置
Spring Boot框架默认使用自动嵌入的Tomcat,可以在配置文件中修改Tomcat的一些参数,具体如下:server. Port = xxxxserver. Address =server. contextPath =server. displayName =server. servletPath =server. contextParameters =server. useForwardHeaders =server. server…...
2024/4/28 1:50:48 - 黑马程序员--学习笔记之SQL注入漏洞攻击
--------------------- Windows Phone 7手机开发 .Net培训 期待与您交流! ---------------------- 1、SQL注入漏洞攻击登录判断:select * from T_Users where UserName=... and Password=...,将参数拼到SQL语句中.构造恶意的Password: ‘ or ’1=1 …...
2024/4/27 23:15:24 - 支付宝小程序开发练习,显示自定义二维码(四)
之前用了几种方式1.后端生成二维码需要加密的字符窜,小程序前端利用二维码组件渲染canvas画出二维码,由于支付宝小程序没有这样的组件,于是去找微信小程序的解决方案,把微信小程序的二维码前端组件搬过来用,调试到不报错了,结果二维码显示不出来,原因很难找,宣告失败!…...
2024/4/28 11:51:39 - 目前流行的前端开发框架
作为前端开发者,各种框架的层出不穷,促使我们要不断学习才能防止落后,但是我们不可能做到每个框架都有学习的时间,我们只需要掌握流行的,坑少的即可。从以下三个方面了解目前流行的前端开发框架。 ####一.跨多平台开发框架 (1).uni-app–开发一次,多端覆盖 uni-app 是DCl…...
2024/4/28 6:51:05 - 闲话网名之-----穿过地狱去看海
博客网名接龙规则:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 网名接龙到现在越来越长了,是我们之前没想到的。那么我就简单说一下规则,以免新被点到的博友一头雾水: 1、冤有头债有主,在文章开头,附上前一篇的文章…...
2024/4/28 7:58:35 - 【墨者学院】SQL手工注入漏洞测试(Access数据库)
背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Access,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。 实训目标 1.掌握SQL注入原理; 2.了解手工注入的方法; 3.了解Access的数据结构; 4.了解字符串…...
2024/4/17 18:50:17 - Axure RP Pro - Widget部件 - 水平线不能调整高度,垂直线不能调整宽度
Axure RP Pro - Widget部件 - 水平线不能调整高度,垂直线不能调整宽度 在Axure RP Pro 5中,Horizontal Line“水平线”的高度固定为10像素,而Vertical Line“垂直线”的宽度固定为10像素。在大多数情况下不影响原型的设计,当需要修改时,可以使用Rectangle“矩形”代替Hori…...
2024/4/20 4:06:06 - java 图片生成视频 完成录屏操作
前段时间做IOS自动化需要完成录屏操作,但是已经能够获取手机屏幕的一张张图片,通过下面java代码能够使得 生成的连续的图片变成视频,代码如下:DefaultMovieInfoProvider dmip= new DefaultMovieInfoProvider("dst.avi");//生成视频的名称 dmip.setFPS(…...
2024/4/20 15:11:41 - 我亲眼见证了一场黑客“机机”大战,黑马冠军的手法很skr
上周,雷锋网编辑收到永信至诚小伙伴的私聊,“小老弟,周末我们有场机机大战来不来?” 见编辑发送过去迷惑的表情包,对方进一步解释到,“就是RHG大赛(Robo Hacking Game),给黑客解放双手,让他们搞出来的机器人互相PK。”很难想象网络安全大赛上黑客们不搞机了,开始嗑瓜…...
2024/4/18 23:33:30 - php sql注入漏洞与修复
出于安全考虑,需要过滤从页面传递过来的字符。 通常,用户可以通过以下接口调用数据库的内容:URL地址栏、登陆界面、留言板、搜索框等。 轻则数据遭到泄露,重则服务器被拿下。一、SQL注入的步骤 a) 寻找注入点(如:登录界面、留言板等) b) 用户自己构造SQL语句(如: or 1=…...
2024/4/20 12:35:37 - 帆软报表FineReport中数据连接之Tomcat配置JNDI连接
1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: 2. 实现步骤使用版本及环境 下面以Windows XP系统,tomcat 5.5,jdk 1.6,连接SQLserver2000数据库…...
2024/4/17 18:51:46 - 人工智能真的会取代前端开发吗?
前言相信不少人看过一篇人工智能已经能实现自动编写HTML,CSS的文章,人工智能开始取代前端的一部分工作。消息一出便激起了很多前端工程师的恐慌和讨论,很多刚刚准备学习前端开发的小伙伴也开始犹豫不决。前端开发行业真的被人工智能取代吗?答案是,不会的。原因有三个1、前…...
2024/4/20 7:15:59 - UV动画/纹理融合/法线贴图/过程纹理
让VS支持Shaderlab语法VS2013中并没有Shaderlab的语法高亮,好在网上已经有个插件来支持语法的高亮和拼写提示,从这里下载插件,双击安装就好了。ShaderlabVS - https://github.com/wudixiaop/ShaderlabVS/releases不过由于VS配色的关系,还需要微调一下,按下面步骤1. 打开 V…...
2024/4/17 18:51:40 - 我亲眼见证了一场黑客“机机”大战,黑马冠军的手法很skr...
上周,雷锋网编辑收到永信至诚小伙伴的私聊,“小老弟,周末我们有场机机大战来不来?” 见编辑发送过去迷惑的表情包,对方进一步解释到,“就是RHG大赛(Robo Hacking Game),给黑客解放双手,让他们搞出来的机器人互相PK。”很难想象网络安全大赛上黑客们不搞机了,开始嗑瓜…...
2024/4/17 18:53:12 - 常见的Web攻击方式:SQL注入、XSS跨站脚本攻击、跨站点请求伪造
常见的Web攻击有SQL注入、XSS跨站脚本攻击、跨站点请求伪造共三类,下面分别简单介绍。 1 SQL注入 1.1 原理SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注入漏洞到底是以怎样的形式进行攻击的呢,接…...
2024/4/17 18:51:10 - tomcat 配置虚拟路径
在实际开发中,有时候需要把静态文件或者图片上传到tomcat中,但是如果上传到跟项目同目录的webapp下,当项目重新部署或者tomcat由于其他原因重启后,这些文件将会消失,势必会影响到现网的生产,所以我们需要把这些文件放到服务器的其他物理路径下,通过tomcat的server.xml 文…...
2024/4/20 11:30:41 - 如何使用java代码进行视频格式的转换(FLV)
一,前言 在给网页添加视频播放功能后,发现上传的视频有各种式,那么就需要将他么转换成FLV,以很好的支持在线视频播放。 公司一直在使用中,配合使用,感觉不错,每天转换的文件超过上千个。二,准备 工具包 : drv43260.dll,ffmpeg.exe,mencoder.exe,pncrt.dl…...
2024/4/20 12:04:42
最新文章
- 什么是DevOps?
(学校作业) 维基百科定义 DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交…...
2024/4/28 15:46:02 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 方案分享 | 嵌入式指纹方案
随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域ÿ…...
2024/4/27 17:55:35 - 北航2023年考研机试题
【问题描述】一共6个手机基站,具有记录手机连接基站的能力,6个手机基站分别为ABCDEF,他们具有自己的覆盖范围且任何两个基站的覆盖范围不想交,基站保存的手机登陆日志包括手机号(11位,用字符串保存…...
2024/4/23 6:26:10 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57