当前位置: 首页 > news >正文

Canvas详细使用方法(一)

Canvas

Canvas的注意事项

< canvas > 和 < img > 元素很相像,唯一的不同就是它并没有 src 和 alt 属性
-< canvas > 标签只有两个属性——width和height( 单位默认为px )。当没有设置宽度和高度时,canvas 会初始化宽为
300px 和高为 150px

  • 与 < img > 元素不同,< canvas > 元素必须需要结束标签 (</ canvas >)。如结束标签不存在,则文档其余部分会被认为是
    代内容
    ,将不会显示出来。
  • 测试 canvas.getContext() 方法的存在,可以检查浏览器是否支持Canvas。

Canvas Grid 和 坐标空间

Canvas Grid 或 坐标空间

  • 假如,HTML 模板中有个宽 150px, 高 150px 的 < canvas > 元素。< canvas >元素默认被网格所覆盖。
  • 通常来说网格中的一个单元相当于 canvas 元素中的一像素
  • 该网格的原点位于坐标 (0,0) 的左上角。所有元素都相对于该原点放置。
  • 网格也可以理解为坐标空间(坐标系),坐标原点位于canvas元素的左上角,被称为初始坐标系
    • 如右图中蓝色正方形,左上角的坐标为距离左边 x 像素,距离上边y 像素,坐标为(x, y)
  • 网格或坐标空间是可以变换的,后面会讲如何将原点转换到不同的位置,旋转网格甚至缩放它。
    • 注意:移动了原点后,默认所有后续变换都将基于新坐标系的变换。

在这里插入图片描述

绘制矩形( Rectangle )

Canvas支持两种方式来绘制矩形:矩形方法 和 路径方法

  • 路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合
  • 除了矩形,其他的图形都是通过一条或者多条路径组合而成的。
  • 通常我们会通过众多的路径来绘制复杂的图形。
    Canvas 绘图的矩形方法
  • fillRect(x, y, width, height): 绘制一个填充的矩形
  • strokeRect(x, y, width, height): 绘制一个矩形的边框
  • clearRect(x, y, width, height): 清除指定矩形区域,让清除部分完全透明。
    方法参数:
  • 上面的方法都包含了相同的参数。
  • x 与 y 指定了在canvas画布上所绘制矩形的左上角(相对于原点)的坐标(不支持 undefined )
  • width 和 height 设置矩形的尺寸。

认识路径

什么是路径?

  • 图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合
  • 路径是可由很多子路径构成,这些子路径都是在一个列表中,列表中所有**子路径(线、弧形等)**将构成图形。
  • 一个路径,甚至一个子路径,通常都是闭合的。
    使用路径绘制图形的步骤:
  • 1.首先需要创建路径起始点(beginPath)。
  • 2.然后使用画图命令去画出路径( arc 、lineTo )。
  • 3.之后把路径闭合( closePath , 不是必须)。
  • 4.一旦路径生成,就能通过**描边(stroke)填充路径区域(fill)**来渲染图形。
    以下是绘制路径时,所要用到的函数
  • beginPath():新建一条路径,生成之后,图形绘制命令被指向到新的路径上绘图,不会关联到旧的路径
  • closePath():闭合路径之后图形绘制命令又重新指向到 beginPath之前的上下文中。
  • stroke():通过线条来绘制图形轮廓/描边**(针对当前路径图形)**。
  • fill():通过填充路径的内容区域生成实心的图形**(针对当前路径图形)**。

路径-绘制直线

移动画笔(moveTo)方法

  • moveTo 方法是不能画出任何东西,但是它也是路径列表的一部分
  • moveTo 可以想象为在纸上作业,一支钢笔或者铅笔的笔尖从一个点到另一个点的移动过程。
  • moveTo(x, y): 将笔移动到指定的坐标 x 、 y 上。
  • 当 canvas 初始化或者beginPath()调用后,我们通常会使用moveTo(x, y)函数设置起点。
  • 使用moveTo函数能够绘制一些不连续的路径
    绘制直线(lineTo)方法
  • lineTo(x, y): 绘制一条从当前位置到指定 (x ,y)位置的直线。
    • 该方法有两个参数(x , y)代表坐标系中直线结束的点
    • 开始点和之前的绘制路径有关,之前路径的结束点就是接下来的开始点
    • 当然开始点也可以通过moveTo(x, y)函数改变。
      绘制一条直线
  • 第一步:调用 beginPath() 来生成路径。本质上,路径是由很多子路径(线、弧形、等)构成。
  • 第二步:调用moveTo、lineTo函数来绘制路径(路径可以是连续也可以不连续)。
  • 第三步:闭合路径 closePath(),虽然不是必需的,但是通常都是要闭合路径
  • 第四步:调用stroke()函数来给直线描边。

路径-绘制三角形( Triangle )

绘制一个三角形步骤

  • 第一步:调用 beginPath() 来生成路径。
  • 第二步:调用moveTo()、lineTo()函数来绘制路径。
  • 第三步:闭合路径 closePath(),不是必需的
    • closePath() 方法会通过绘制一条从当前点到开始点的直线来闭合图形
    • 如果图形是已经闭合了的,即当前点为开始点,该函数什么也不做。
  • 第四步:调用**stroke()函数来给线描边,或者调用fill()**函数来填充(使用填充 fill 时,路径会自动闭合,而 stroke 不会)。
    -

路径-绘制圆弧(Arc)、圆 ( Circle)

绘制圆弧或者圆,使用arc()方法。

  • **arc(x, y, radius, startAngle, endAngle, anticlockwise),**该方法有六个参数:
    • x、y:为绘制圆弧所在圆上的圆心坐标。
    • radius:为圆弧半径
    • startAngle、endAngle:该参数用弧度定义了开始以及结束的弧度。这些都是以 x 轴为基准。
    • anticlockwise:为一个布尔值。为 true ,是逆时针方向,为false,是顺时针方向,默认为false。
      计算弧度
  • arc() 函数中表示角的单位是弧度,不是角度。
  • 角度与弧度的 JS 表达式:弧度=( Math.PI / 180 ) * 角度 ,即 1角度= Math.PI / 180 个弧度
    • 比如:旋转90°:Math.PI / 2; 旋转180°:Math.PI ; 旋转360°:Math.PI * 2; 旋转-90°:-Math.PI / 2;
      绘制一个圆弧的步骤
  • 第一步:调用 beginPath() 来生成路径。
  • 第二步:调用arc()函数来绘制圆弧。
  • 第三步:闭合路径 closePath(),不是必需的
  • 第四步:调用stroke()函数来描边,或者调用fill()函数来填充(使用填充 fill 时,路径会自动闭合)。
    在这里插入图片描述

路径-矩形(Rectangle)

绘制矩形的另一个方法

  • 调用rect() 函数绘制,即将一个矩形路径增加到当前路径上
  • rect(x, y, width, height)
    • 绘制一个左上角坐标为(x,y),宽高为 width 以及 height 的矩形。
      注意
  • 当该方法执行的时候,moveTo(x, y) 方法自动设置坐标参数(0,0)。也就是说,当前笔触自动重置回默认坐标

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{margin: 0;padding: 0;background-image: url(../images/grid.png);}canvas{background-color: rgba(255, 0, 0, 0.1);}</style>
</head>
<body><canvas id="tutorial" width="300" height="300px">你的浏览器不兼容Canvas,请升级您的浏览器!</canvas><script>window.onload = function() {let canvasEl = document.getElementById('tutorial')if(!canvasEl.getContext){return}let ctx = canvasEl.getContext('2d') // 2d | webgl// 1.创建一个路径ctx.beginPath()// 2.绘图指令// ctx.moveTo(0, 0)ctx.rect(100, 100, 100, 50)// 3.闭合路径ctx.closePath()// 4.填充和描边ctx.stroke()}</script>
</body>
</html>

色彩 Colors

如果我们想要给图形上色,有两个重要的属性可以做到:

  • fillStyle = color: 设置图形的填充颜色,需在 fill() 函数前调用
  • strokeStyle = color: 设置图形轮廓的颜色,需在 stroke() 函数前调用
    color颜色
  • color 可以是表示 CSS 颜色值的字符串,支持:关键字、十六进制、rgb、rgba格式。
  • 默认情况下,线条和填充颜色都是黑色(CSS 颜色值 #000000)。
    注意
  • 一旦设置了 strokeStyle 或者 fillStyle 的值,那么这个新值就会成为新绘制的图形的默认值
  • 如果你要给图形上不同的颜色,你需要重新设置 fillStyle 或 strokeStyle 的值。
    额外补充
  • fill() 函数是图形填充,fillStyle属性是设置填充色
  • stroke() 函数是图形描边,strokeStyle属性是设置描边色

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{margin: 0;padding: 0;background-image: url(../images/grid.png);}canvas{background-color: rgba(255, 0, 0, 0.1);}</style>
</head>
<body><canvas id="tutorial" width="300" height="300px">你的浏览器不兼容Canvas,请升级您的浏览器!</canvas><script>window.onload = function() {let canvasEl = document.getElementById('tutorial')if(!canvasEl.getContext){return}let ctx = canvasEl.getContext('2d') // 2d | webgl// 2.修改画笔的颜色ctx.fillStyle = 'red'ctx.fillRect(0,0, 100, 50) // 单位也是不用写 pxctx.fillStyle = '#cdcdcd'ctx.fillRect(200, 0, 100, 50)ctx.fillStyle = 'green'ctx.beginPath()ctx.rect(0, 100, 100, 50)ctx.fill()}</script>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{margin: 0;padding: 0;background-image: url(../images/grid.png);}canvas{background-color: rgba(255, 0, 0, 0.1);}</style>
</head>
<body><canvas id="tutorial" width="300" height="300px">你的浏览器不兼容Canvas,请升级您的浏览器!</canvas><script>window.onload = function() {let canvasEl = document.getElementById('tutorial')if(!canvasEl.getContext){return}let ctx = canvasEl.getContext('2d') // 2d | webgl// 2.修改画笔的颜色ctx.fillStyle = 'rgba(255, 0, 0, 0.3)'ctx.fillRect(0,0, 100, 50) // 单位也是不用写 pxctx.strokeStyle = 'blue'ctx.strokeRect(200, 0, 100, 50)ctx.strokeStyle = 'green' // 关键字, 十六进制, rbg , rgbactx.beginPath()ctx.rect(0, 100, 100, 50)ctx.stroke()}</script>
</body>
</html>

透明度 Transparent

除了可以绘制实色图形,我们还可以用 canvas 来绘制半透明的图形

  • 方式一:strokeStyle 和 fillStyle属性结合RGBA:
  • 方式二:globalAlpha 属性
  • globalAlpha = 0 ~ 1
    • 这个属性影响到 canvas 里所有图形的透明度
    • 有效的值范围是 0.0(完全透明)到 1.0(完全不透明),默认是 1.0。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{margin: 0;padding: 0;background-image: url(../images/grid.png);}canvas{background-color: rgba(255, 0, 0, 0.1);}</style>
</head>
<body><canvas id="tutorial" width="300" height="300px">你的浏览器不兼容Canvas,请升级您的浏览器!</canvas><script>window.onload = function() {let canvasEl = document.getElementById('tutorial')if(!canvasEl.getContext){return}let ctx = canvasEl.getContext('2d') // 2d | webgl// 针对于Canvas中所有的图形生效ctx.globalAlpha = 0.3// 2.修改画笔的颜色// ctx.fillStyle = 'rgba(255, 0, 0, 0.3)'ctx.fillRect(0,0, 100, 50) // 单位也是不用写 pxctx.fillStyle = 'blue'ctx.fillRect(200, 0, 100, 50)ctx.fillStyle = 'green' // 关键字, 十六进制, rbg , rgbactx.beginPath()ctx.rect(0, 100, 100, 50)ctx.fill()}</script>
</body>
</html>

线型 Line styles

调用lineTo()函数绘制的线条,是可以通过一系列属性来设置线的样式。

  • lineWidth = value: 设置线条宽度。
  • lineCap = type: 设置线条末端样式。
  • lineJoin = type: 设定线条与线条间接合处的样式。

  • lineWidth
  • 设置线条宽度的属性值必须为正数。默认值是 1.0px,不需单位。( 零、负数、InfinityNaN值将被忽略)
  • 线宽是指给定路径的中心到两边的粗细。换句话说就是在路径的两边各绘制线宽的一半
  • 如果你想要绘制一条从 (3,1) 到 (3,5),宽度是 1.0 的线条,你会得到像第二幅图一样的结果。
    • 路径的两边个各延伸半个像素填充并渲染出1像素的线条(深蓝色部分)
    • 两边剩下的半个像素又会以实际画笔颜色一半色调来填充(浅蓝部分)
    • 实际画出线条的区域为(浅蓝和深蓝的部分),填充色大于1像素了,这就是为何宽度为 1.0 的线经常并不准确的原因。

要解决这个问题,必须对路径精确的控制。如,1px的线条会在路径两边各延伸半像素,那么像第三幅图那样绘制从 (3.5 ,1) 到 (3.5,
5) 的线条,其边缘正好落在像素边界,填充出来就是准确的宽为 1.0 的线条。

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{margin: 0;padding: 0;background-image: url(../images/grid.png);}canvas{background-color: rgba(255, 0, 0, 0.1);}</style>
</head>
<body><canvas id="tutorial" width="300" height="300px">你的浏览器不兼容Canvas,请升级您的浏览器!</canvas><script>window.onload = function() {let canvasEl = document.getElementById('tutorial')if(!canvasEl.getContext){return}let ctx = canvasEl.getContext('2d') // 2d | webglctx.lineWidth = 2ctx.beginPath()ctx.moveTo(20, 20)ctx.lineTo(20, 100)ctx.stroke()}</script>
</body>
</html>

相关文章:

Canvas详细使用方法(一)

Canvas Canvas的注意事项 < canvas > 和 < img > 元素很相像&#xff0c;唯一的不同就是它并没有 src 和 alt 属性。 -< canvas > 标签只有两个属性——width和height( 单位默认为px )。当没有设置宽度和高度时&#xff0c;canvas 会初始化宽为 300px 和高…...

CentOS定时任务——crontab

crontab Linux crontab 是用来定期执行程序的命令。 crond 命令每分钟会定期检查是否有要执行的工作&#xff0c;如果有要执行的工作便会自动执行该工作。 注意&#xff1a;新创建的 cron 任务&#xff0c;不会马上执行&#xff0c;至少要过 2 分钟后才可以&#xff0c;当然你…...

C51---蓝牙模块---连接软件---控制LED灯

1.器件&#xff1a;C51、HC-08蓝牙模块、Ty-C数据线、杜邦线 2.软件&#xff1a;HC蓝牙助手 3.接线&#xff1a;VCC-VCC、GND-GND、RXD-TXD、TXD-RXD 4.烧写&#xff1a;STC-ISP串口助手 5.代码&#xff1a; #include "reg52.h" #include "intrins.h" …...

Linux 学习笔记——二、主机规划与磁盘分区

一、Linux 与硬件的搭配 Linux 中所有设备均被视为文件&#xff0c;其命名规则如下&#xff1a; 设备文件名SCSI/SATA/USB 硬盘机/dev/sd[a-p]USB 闪存盘/dev/sd[a-p]&#xff08;与 SATA 相同&#xff09;Virtl/O 界面/dev/vd[a-p]&#xff08;用于虚拟机内&#xff09;软盘…...

麒麟服务器V10 版本 安装 Anaconda教程,也就是安装Python环境的教程(亲测有效)

目录1 Anaconda 是什么2 安装1 Anaconda 是什么 你可以理解为一个软件&#xff0c;和QQ一样的软件&#xff0c;你安装之后&#xff0c;里面就有naconda包括Conda、Python以及一大堆安装好的工具包&#xff0c;比如&#xff1a;numpy、pandas等 1&#xff09;包含conda&#x…...

【3维视觉】网格细分Mesh Subdivision算法介绍(Loop, Catmull-Clark, Doo-Sabin)

引言 介绍了Loop, Catmull-Clark, Doo-Sabin细分。 算法介绍 1. Loop细分 Loop细分是Charles Loop在1987年在硕士论文中提出的一种对三角网格的细分算法。 Loop细分是递归定义的&#xff0c;每一个三角形一分为四&#xff0c;对于新生成的点和旧点以不同的规则更新。 点的…...

自学大数据第六天~HDFS命令

HDFS常用命令 查看hadoop版本 version hadoop version注意,没有 ‘-’ [hadoopmaster ~]$ hadoop version Hadoop 3.3.4 Source code repository https://github.com/apache/hadoop.git -r a585a73c3e02ac62350c136643a5e7f6095a3dbb Compiled by stevel on 2022-07-29T12:3…...

maven仓库的配置

下载 官网下载&#xff1a;https://maven.apache.org/download.cgi 2. 配置maven环境 右键电脑 ->属性 -> 高级系统设置 -> 环境变量 -> 系统变量-新建 变量名&#xff1a;MAVEN_HOME 变量值为maven的文件安装地址 编辑Path系统变量 新建&#xff1a;%MAVE…...

医院信息管理云平台源码 云HIS系统源码 4级电子病历系统

基层医院云HIS系统源码 高端商业his源码 有演示&#xff0c;可直接项目运营。 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规…...

JS学习第9天——ES6中面向对象(类class、constructor构造函数、类的继承extends、super关键字、面向对象tab栏切换案例)

目录一、面向对象1、面向过程2、面向对象3、两者对比二、ES6中的类和对象1、面向对象的思维特点2、对象3、类class4、类constructor构造函数三、类的继承1、继承2、super()关键字3、注意点四、面向对象案例一、面向对象 两大编程思想&#xff1a;① 面向过程 ② 面向对象 1、…...

K8S核心秘术学习总纲

学习 Kubernetes (简称 K8S) 可以采取以下步骤&#xff1a; 了解 K8S 的基本知识&#xff1a;K8S 是一个负责管理容器的开源平台。 在学习 K8S 之前&#xff0c;需要先掌握 Linux 基础知识和 Docker 容器基础知识。 搭建 K8S 环境&#xff1a;为了学习 K8S&#xff0c;你需要有…...

【PTA-训练day27】L2-038 病毒溯源 + L2-039 清点代码库 + L2-040 哲哲打游戏

目录 L2-038 病毒溯源 - dfs求树最大深度及路径 L2-039 清点代码库 - STL嵌套使用结构体自定义排序 L2-040 哲哲打游戏 - vector建图 L2-038 病毒溯源 - dfs求树最大深度及路径 PTA | 程序设计类实验辅助教学平台 思路&#xff1a; 用链表建树 找到根节点dfs根节点寻找最大…...

新一代跨平台云备份工具Duplicacy

什么是 Duplicacy &#xff1f; Duplicacy 是一款云备份软件&#xff0c;通过 Duplicacy 可以将视频&#xff0c;图片&#xff0c;文件&#xff0c;注册表等数据备份到云端。Duplicacy 通过客户端加密和最高级别的重复数据删除功能&#xff0c;将您的文件备份到许多云存储。 安…...

考研复试——概率论

文章目录概率论1. 大数定律2. 中心极限定理3. 大数定律和中心极限定理的区别&#xff1f;4. 最大似然估计5. 古典概型6. 几何概型7. 全概率公式8. 贝叶斯公式9. 先验概率、后验概率10. 数学期望因为初试考的数二&#xff0c;没有学概率论&#xff0c;要从头学习时间也不够&…...

Web学习4_JavaScript常用库

常用库 jQuery 使用方式 在元素中添加&#xff1a; <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> 按jQuery官网提示下载 选择器 $(selector)&#xff0c;例如&#xff1a; $(div);$(.big-div); $(div > p)s…...

C++回顾(二十)—— vector容器 和 deque容器

20.1 vector容器 20.1.1 vector容器简介 vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素&#xff08;支持索引值直接存取&#xff0c; 用[]操作符或at()方法&#xff09;。vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比…...

httpd使用记录

httpd使用记录 Busybox用一个httpd的程序&#xff0c;尝试用起来。 简单测试 启动服务 # 启动服务 mkdir /var/www/html httpd -p 8080 -h /var/www/html &编写html文件 在/var/www/html下放一个测试网页index.html文件。 <!DOCTYPE html> <html><hea…...

.vue 组件打包成 .js

.vue 组件打包成 .js *** 所有的内容 cli 官网都有 *** *** https://cli.vuejs.org/zh/guide/build-targets.html *** 所有的内容 cli 官网都有&#xff1a; https://cli.vuejs.org/zh/guide/build-targets.html 准备 几个 .vue 组件文件 import Main from ./components/Ma…...

Java 代码分享(第11篇)编程解决数学问题:“计算3个10以内的数字,与合计值相除后,商的第3位小数大于4,共有多少个数的组合满足条件”类似问题

求与合计相除&#xff0c;小数位大于4的数字组合 1 3 4 9 17 1 / 17 ≈ 0.05882 3 / 17 ≈ 0.17647 4 / 17 ≈ 0.23529 9 / 17 ≈ 0.52941 可以发现&#xff0c;每一个商的第三位都是大于等于5的数&#xff0c;四舍五入后会进位。 下面的程序可以生成符合这样条件的数据。…...

面试题 17.05. 字母与数字

题目链接 面试题 17.05. 字母与数字 mid 题目描述 给定一个放有字母和数字的数组&#xff0c;找到最长的子数组&#xff0c;且包含的字母和数字的个数相同。 返回该子数组&#xff0c;若存在多个最长子数组&#xff0c;返回左端点下标值最小的子数组。若不存在这样的数组&…...

解决Win10图片/文件右键单击自动退出并刷新桌面问题

问题描述 这两天开始不知道怎么回事儿&#xff0c;右键选择图片时候&#xff0c;电脑黑屏且资源管理器自动重启。然后我就开始找很多方法去解决。 我试了很多种复杂的简单的方法&#xff0c;但是只有一种解决了我的问题。 解决方案【解决我的问题】 这个方法如下&#xff1…...

【代码随想录训练营】【Day39】第九章|动态规划|62.不同路径|63. 不同路径 II

不同路径 题目详细&#xff1a;LeetCode.62 有点简单呀&#xff0c;做类似这种题型时&#xff0c;最好就是先画图&#xff1a; 可以像题目一样&#xff0c;画一个二维表格&#xff0c;表格内的值代表到达这个格子的不同路径总数那么已知&#xff0c;如果图的大小为m 1 || n…...

【Linux】linux | 修改系统编码 |  增加字体处理 | 图片处理字体变成方块

一、说明1、CentOS7二、修改系统编码编辑文件vi /etc/locale.conf修改编码并保存LANGzh_CN.UTF-8配置生效source /etc/locale.conf1&#xff09;修改系统编码&#xff0c;只是让系统支持中文编码2&#xff09;不解决文字不显示的问题&#xff1b;往后看三、解决字体不显示问题非…...

R语言介绍及安装教程

R语言是一种免费的开源编程语言和环境&#xff0c;主要用于数据分析、统计建模和可视化。它可以运行在不同的操作系统上&#xff0c;如Windows、MacOS和Linux。R语言具有以下特点&#xff1a;丰富的数据处理和统计分析函数库&#xff1b;易于学习和使用&#xff1b;可以生成高质…...

Linux 练习九 (IPC 消息队列)

文章目录消息队列有亲缘关系的进程使用消息队列通信无亲缘关系的进程使用消息队列通信使用环境&#xff1a;Ubuntu18.04 使用工具&#xff1a;VMWare workstations &#xff0c;xshell作者在学习Linux的过程中对常用的命令进行记录&#xff0c;通过思维导图的方式梳理知识点&am…...

在Win 11下使用Visual Studio 2019和cygwin编译JBR(Java SDK 17)源码

很多文章介绍了JDK 8和JDK11源码在Linux编译&#xff0c;很少有人介绍了JDK 17在windows的编译过程&#xff0c;所以写了这篇文章&#xff0c;为什么选用JBR 17版本&#xff0c;因为JBR17 版本集成了HotSwapAgent功能&#xff0c;具体HotSwapAgent有什么用&#xff0c;请看我前…...

java基础学习 day51 (匿名内部类)

1. 什么是匿名内部类&#xff1f; 隐藏了名字的内部类&#xff0c;实际名字为&#xff1a;外部类名$序号可以写在成员位置&#xff0c;为没有名字的成员内部类也可以写在局部位置&#xff0c;为没有名字的局部内部类 2. 匿名内部类的格式&#xff1f; new 类名/接口名() { 重…...

Spring MVC程序开发(三大功能)

文章目录一、什么是Spring MVC?1.MVC定义2.MVC与Spring MVC的关系3.创建方式二、Spring MVC的核心功能1.连接功能浏览器获取前端接口和后端程序连接功能实现get和post的区别Spring Boot热部署2.获取参数&#xff08;1&#xff09;传递单个参数&#xff08;2&#xff09;传递对…...

stack,queue

stack,queuestack的介绍和使用介绍使用模拟实现queue的介绍和使用介绍使用模拟实现priority_queue的介绍和使用介绍使用模拟实现容器适配器概念标准库中stack&#xff0c;queue的底层结构介绍deque原理缺陷deque作为stack,queue底层默认容器stack的介绍和使用 介绍 stack是适…...

shiro反序列化

shiro550反序列化 | 清风的博客这个看着更舒服点 环境搭建 JDK&#xff1a;1.7 Tomcat&#xff1a;8.5.83 shiro源码&#xff1a;下载地址&#xff1a;https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 shiro war包&#xff1a;下载地址SHIRO-550/samples-…...

做网站 商标分类/疫情防控数据

Java工程开发师这个岗位炙手可热&#xff0c;市场需求多&#xff0c;学习Java的人也不少&#xff0c;所以IT企业与求职者的选择都比较多。那么IT企业在与应聘者面试时都会问到哪些问题呢&#xff0c;下面小编就为求职者们奉上大型IT企业必问的六个Java面试问题。 Java技术题&a…...

什么是网站单页/谷歌paypal官网

因为工作原因&#xff0c;需要在windows操作系统下&#xff0c;搭建openldapmysql工具平台。曾经尝试在网上搜索相关的文章&#xff0c;但是openldap与DBMS连接的内容非常少&#xff0c;在windows操作系统下配置和使用的资料更是少之又少。所以只好查阅了许多零碎的参考资料&am…...

站规划在网站建设中的作用/win7优化大师下载

展开全部莫西干发型。32313133353236313431303231363533e58685e5aeb931333431356637莫西干是北美地区的一个印第安民族&#xff0c;居住在哈得逊河流域上游的卡兹奇(Catskill)山脉。国内对这个莫西干有个的翻译错误&#xff0c;就是2002年世界杯时小贝的发型&#xff0c;小贝的…...

怎样做网站推广啊/网站推广是什么意思

各位好&#xff0c;欢迎。今天你们学习python了吗&#xff1f;今天有给自己打气吗&#xff1f; 今日洗脑金句 &#xff1a; 懒散放纵坑自己&#xff0c;克己自律强无敌&#xff01; 每天起床第一句&#xff0c;告诉自己&#xff0c;我能行&#xff01; 格式化输出的三种方式 追…...

西安商城网站开发制作/百度招聘官网首页

我就废话不多说了&#xff0c;大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ii integer;declare num integer; begin II:2021-01-16 17:49:22条件查询-模糊匹配PostgreSQL和SQL Server的模糊匹配like是不一样的&am…...

广州花都网站建设/百度搜索网页版入口

#include<algorithm> <numeric> <functional> 遍历算法 for_each: vector<int>v; v.push_back(1);v.push_back(2);v.push_back(3); for_each(v.begin(),v.end(),普通函数); for_each(v.begin(),v.end(),仿函数); transform:搬运容器到另外一个容…...