【H5】 实现调用相机拍照功能

【H5】 实现调用相机拍照功能: 效果图如下: 实现代码如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>摄像头调用</title> <style> * {margin: 0px;padding: 0px;} body {background: #4C5666;} #video { width: 610px; height: 510px; background-color: #fff; margin: 100px auto 0; border-radius: 10px; } .video_top { width: 100%; height: 50px; /* background-color: #0ff; */ line-height: 50px; } .video_top a { float: left; text-decoration: none; color: #000; margin-left: 20px; } .video_top p { float: left; margin-left: 200px; } .video_con { height: 410px; background: #787878; } .

ECCV2018超分辨率RCAN:Image Super-Resolution Using Very Deep Residual Channel Attention Networks

总的来说,这篇论文的主要做了两件事,第一,设计RIR,加深网络;第二,引入通道注意力机制(CA),说白了就是给通道加一个权重,表明不同通道提取出来的不同特征的重要性不同,这个权重是学习出来的,后文有详细介绍。 提出问题 (1)更深层次的图像SR网络更难训练,仅仅通过叠加剩余块来构建更深层次的网络很难得到更好的改善。 (2)低分辨率的输入和特征包含丰富的低频信息,而目前主流的基于cnn的方法对每个信道特征都一视同仁,缺乏跨特征信道的识别学习能力,阻碍了深度网络的表征能力。 解决方法 (1)文章提出了一种残差信道注意网络(RCAN)来获得非常深的可训练网络,同时自适应地学习更多有用的信道特征。 (2)为了简化超深网络(如400层以上)的训练,提出了残差(residual in residual, RIR)结构,其中残差组(residual group, RG)作为基本模块,长跳连接(long skip connection, LSC)允许粗级别的残差学习。在每个RG模块中,使用短跳连接(SSC)将几个简化的剩余块堆叠起来。长跳连接和短跳连接以及残差块的近路允许大量低频信息通过这些基于身份的跳连接,从而简化了信息的流动。 (3)提出了通道注意(CA)机制,通过对特征通道之间的相互依赖关系进行建模,自适应地调整每个通道的特征。这样的CA机制使我们所提出的网络能够专注于更有用的通道,提高识别学习能力。 网络架构 RCAN主要由四个部分组成: 浅层特征提取残差(RIR)深度特征提取放大模块重构部分 Channel Attention (CA) 以往基于cnn的SR方法对LR通道特征的处理是平等的,对于实际情况并不灵活。为了使网络关注更多的信息特性,我们利用特性通道之间的相互依赖关系,从而产生通道注意(CA)机制。 如何为每个通道产生不同的关注是关键的一步。这里我们主要关注两点: 第一,LR空间中的信息含有丰富的低频和有价值的高频成分。低频部分似乎比较平坦。高频分量通常是区域,充满边缘、纹理和其他细节。 第二,Conv层中的每个滤波器都有一个局部接受域。因此,卷积后的输出无法利用局部区域以外的上下文信息。 在此基础上,利用全局平均池将信道方向的全局空间信息转化为信道描述符。例如有C个通道的feature map,每个feature map的尺寸为(W,H),看公式可知,第c个通道的描述符Zc为这个通道上值的平均值(全局平均池化) 这种信道统计量可以看作是局部描述符的集合,这些局部描述符的统计量有助于表示整个图像。除了全局平均池之外,这里还可以引入更复杂的聚合技术。 为了通过全局平均池从聚合的信息中完全捕获信道依赖关系,我们引入了一种门机制。门控机制应该满足两个条件:首先,它必须能够学习通道之间的非线性相互作用。其次,由于可以强调多个通道的特性,而不是一个one-hot activation,因此必须学习一种非相互排斥的关系。在这里,我们用简单的sigmoid函数来开发一种门控机制: 其中,f (·)代表sigmoid函数, δ (·)为relu函数,Wd为卷积层的过滤器,以r为尺度做下采样,经过relu函数后,乘以Wu(以r为尺度做上采样),然后得到最终的信道统计量s,该统计量用于重新调整输入xc: 其中sc和xc为第c个通道的比例因子(权重)和特征图。在信道注意力机制的作用下,对RCAB中的剩余分量进行自适应重标。 残差块与CA相结合(RCAB)

超分辨率重建(深度学习)2018年之前经典论文

大部分文章这篇博客介绍的很详细: https://blog.csdn.net/aBlueMouse/article/details/78710553 1、SRCNN(第一次将深度学习应用于SR,先插值放大,再三次卷积) 2、FSRCNN(对SRCNN提速,不需要插值放大,反卷积+小的卷积核) 3、ESPCN(亚像素卷积层) 这篇论文采用了一种新的上采样方式,后边好几篇性能比较好的论文都是采用这种方法上采样,效果应该会比反卷积效果好 Resnet问世,借鉴renet的思想,开始学习HR和LR的残差部分,取得了不错的效果,后续优秀网络都有用到残差的思想。 4、VDSR(全局残差学习) 5、DRCN(全局残差学习+单权重的递归学习+多目标优化) 6、DRRN(多路径模式的局部残差学习+全局残差学习+多权重的递归学习) 7、RED(对称的卷积层-反卷积层) 8、LapSRN 论文中作者先总结了之前的方法存在有三点问题。 (1)是有的方法在输入图像进网络前,需要使用预先定义好的上采样操作(例如bicubic)来获得目标的空间尺寸,这样 的操作增加了额外的计算开销,同时也会导致可见的重建伪影。而有的方法使用了亚像素卷积层或者反卷积层这样的操作来替换预先定义好的上采样操作,这些方法的网络结构又相对比较简单,性能较差,并不能学好低分辨率图像到高分辨率图像复杂的映射。(2)是在训练网络时使用 l_{2} 型损失函数时,不可避免地会产生模糊的预测,恢复出的高分辨率图片往往会太过于平滑。 (3)是在重建高分辨率图像时,如果只用一次上采样的操作,在获得大倍数(8倍以上)的上采样因子时就会比较困难。而且在不同的应用时,需要训练不同上采样倍数的模型。针对这三点问题,作者提出了LapSRN,网络结构如下图所示。 提出了拉普拉斯金字塔超分辨率网络(LapSRN)来逐步重建高分辨率图像的子带残差。在每一级金字塔中,模型将低分辨率特征图作为输入,预测高频残差,并使用反卷积进行上采样到更精细的水平。该方法不需要双三次插值作为预处理步骤,因此大大降低了计算复杂度。使用强大的Charbonnier损失函数对深度监督的LapSRN进行训练,并实现高质量的重建。 9、SRDenseNet(引入dense block) 10、SRGAN(SRResNet)(引入GAN和感知损失) 11、EDSR(2017年冠军模型,改进SRResNet) 以下对两篇有代表性的文章做详细介绍 SRGAN 问题:当我们超分辨率在大尺度因子时,如何恢复更精细的纹理细节? 在这篇文章中,将生成对抗网络(Generative Adversarial Network, GAN)用在了解决超分辨率问题上。文章提到,训练网络时用均方差作为损失函数,虽然能够获得很高的峰值信噪比(psnr),但是恢复出来的图像通常会丢失高频细节(因为它针对一个一个像素优化,而如高层纹理细节的能力非常有限),导致图像向更加平滑的方向发展(产生边缘伪影),使人不能有好的视觉感受。 SRGAN利用感知损失(perceptual loss)和对抗损失(adversarial loss)来提升恢复出的图片的真实感。感知损失是利用卷积神经网络提取出的特征,通过比较生成图片经过卷积神经网络后的特征和目标图片经过卷积神经网络后的特征的差别,使生成图片和目标图片在语义和风格上更相似。 如图可以看出来: 采用MSE损失的SRResNet的psnr很高,图像更平滑,但自然细节纹理表现很差; SRGAN虽然psnr不高 ,但相对来说,细节纹理表现要好一点。 GAN网络结构 Generator network的作用是尽可能的产生一张高分辨率的图片,在生成网络部分(SRResNet)部分包含多个残差块,每个残差块中包含两个3×3的卷积层,卷积层后接批规范化层(batch normalization, BN)和PReLU作为激活函数,两个2×亚像素卷积层(sub-pixel convolution layers)被用来增大特征尺寸。 Discriminator network的作用是判断Generator生成的图片是高分辨率图片的概率,在判别网络部分包含8个卷积层,随着网络层数加深,特征个数不断增加,特征尺寸不断减小,选取激活函数为LeakyReLU,最终通过两个全连接层和最终的sigmoid激活函数得到预测为自然图像的概率。 损失函数 整体损失函数: 内容损失 (1)均方损失(MSE) (2)基于训练好的以ReLU为激活函数的VGG模型的损失函数 对抗损失 MSE loss与VGG loss对比 EDSR (1)EDSR最有意义的模型性能提升是去除掉了SRResNet多余的模块,从而可以扩大模型的尺寸来提升结果质量。 EDSR在结构上与SRResNet相比,就是把批规范化处理(batch normalization, BN)操作给去掉了。文章中说,原始的ResNet最一开始是被提出来解决高层的计算机视觉问题,比如分类和检测,直接把ResNet的结构应用到像超分辨率这样的低层计算机视觉问题,显然不是最优的。由于批规范化层消耗了与它前面的卷积层相同大小的内存,在去掉这一步操作后,相同的计算资源下,EDSR就可以堆叠更多的网络层或者使每层提取更多的特征,从而得到更好的性能表现。EDSR用L1范数样式的损失函数来优化网络模型。在训练时先训练低倍数的上采样模型,接着用训练低倍数上采样模型得到的参数来初始化高倍数的上采样模型,这样能减少高倍数上采样模型的训练时间,同时训练结果也更好。 EDSR总体结构: (2)提出了一种新的多尺度超分辨率系统(MDSR)和训练方法,可以在一个模型中重建不同尺度因子的高分辨率图像。 MDSR的中间部分还是和EDSR一样,只是在网络前面添加了不同的预训练好的模型来减少不同倍数的输入图片的差异。在网络最后,不同倍数上采样的结构平行排列来获得不同倍数的输出结果。 结果

数据结构和算法(五)树(二叉树、满二叉树、完全二叉树、二叉搜索树)

二叉树 二叉树:满二叉树:完全二叉树:二叉搜索树:1、构建2、插入3、最大值和最小值4、遍历5、搜索6、删除7、扩展(力扣1038 从二叉搜索树到更大和树) 二叉树: 二叉树是每个结点最多有两个子树的树结构 满二叉树: 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。 完全二叉树: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 二叉搜索树: 满足“任意结点x,左子树结点值最大不超过x,右子树结点值最小不低于x” 的二叉树。 1、构建 public class Tree { private int key; // 结点内容 private Tree left; // 左子结点 private Tree right; // 右子结点 private Tree parent; // 父结点 private Tree root; // 根结点 // 省略get/set } 2、插入 通过遍历,找到父结点(从根结点开始),然后在设置是父的左子还是右子 private void insert(Tree tree) { Tree x = this.root; while (x != null) { if (tree.key < x.

git提交代码权限问题报错记录

push失败日志信息 git.exe push --progress "origin" master:master remote: HTTP Basic: Access denied fatal: Authentication failed for 'http://gitlab.xxxxxxx.com/huangyufeng/zcm-cmdb.git/' 有两种可能 1、用户没有赋权 2、用户密码更改 排查后用户成员已经赋权,那就是密码配置错误,idea密码配置错误后,需要重新配置 通过命令行工具 git bash 命令【重置密码】 git config --system --unset credential.helper 通过idea将代码重新push,提示重新输入用户名和密码,问题解决,另外记得push之前先merger 完!

C#静态拓展方法的用法

最近想拓展网上下载来的动态链接库,因为下载来的动态链接库缺少一些功能不能满足我的需求,我要想出比较好的方法去拓展这个动态链接库,查找了一下,最好的方法就是使用这个静态拓展方法了,接下来给大家展示一下如何使用这个的,代码块如下: using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { CalPro calPro = new CalPro(); Console.WriteLine("减法结果 =" + calPro.Subtract(2.8f, 1.2f)); Console.WriteLine("加分结果 =" + calPro.Add(2.8f, 1.2f)); Console.ReadLine(); } } public class CalPro { public float Add(float a,float b) { return a + b; } } static class CalProExtension { public static float Subtract(this CalPro calPro,float a, float b) { return a - b; } } } 可以看到这里把CalPro这个类拓展出了减法,而且运行以后没问题,CalPro如果打成Dll只要引用一下命名空间拓展这个Dll写法是一样的,使用静态拓展方法的注意事项就是拓展出来的方法第一个参数不能是静态类,如图下:

【H5】 svg画扇形饼图

【H5】 svg画扇形饼图 效果图如下: 封装代码如下: 代码内有详细注解哦! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * {margin: 0;padding: 0;} #wrap { width: 300px; height: 300px; /* border:1px solid #000; */ margin: 50px auto 0; } </style> </head> <body> <div id="wrap"> <svg id='svg' xmlns="http://www.w3.org/2000/svg" width='100%' height='100%'> </svg> </div> <script> let svg = document.getElementById('svg'); //creatTagEle是定义的一个生成path标签的方法 //6.传值:tag为path标签 tagAttr:标签的样式属性(fill填充颜色,d线路样式) function creatTagEle(tag, tagAttr) { let svgNS = "http://www.w3.org/2000/svg"; //svg的规则 //createElementNS()方法创建带有指定命名空间的元素节点 // svgNS是规定svg的规则 tag为path标签 let oTag = document.

maven安装与配置

一、需要准备的东西 1. JDK 2. Eclipse 3. Maven程序包 二、下载与安装 1. 前往https://maven.apache.org/download.cgi下载最新版的Maven程序: 2. 将文件解压到D:\Program Files\Apache\maven目录下: 3. 新建环境变量MAVEN_HOME,赋值D:\Program Files\Apache\maven 4. 编辑环境变量Path,追加%MAVEN_HOME%\bin\; 5. 至此,maven已经完成了安装,我们可以通过DOS命令检查一下我们是否安装成功: mvn -v 三、配置Maven本地仓库 1. 在D:\Program Files\Apache\目录下新建maven-repository文件夹,该目录用作maven的本地库。 2. 打开D:\Program Files\Apache\maven\conf\settings.xml文件,查找下面这行代码: <localRepository>/path/to/local/repo</localRepository> localRepository节点默认是被注释掉的,需要把它移到注释之外,然后将localRepository节点的值改为我们在3.1中创建的目录D:\Program Files\Apache\maven-repository。 3. localRepository节点用于配置本地仓库,本地仓库其实起到了一个缓存的作用,它的默认地址是 C:\Users\用户名.m2。 当我们从maven中获取jar包的时候,maven首先会在本地仓库中查找,如果本地仓库有则返回;如果没有则从远程仓库中获取包,并在本地库中保存。 此外,我们在maven项目中运行mvn install,项目将会自动打包并安装到本地仓库中。 4. 运行一下DOS命令 mvn help:system 如果前面的配置成功,那么D:\Program Files\Apache\maven-repository会出现一些文件。 四、配置Eclipse的Maven环境 1. Eclipse Oxygen,打开Window->Preferences->Maven->Installations,右侧点击Add。 2. 设置maven的安装目录,然后Finish 3. 选中刚刚添加的maven,并Apply。 4. 打开Window->Preferences->Maven->User Settings,配置如下并Apply: Maven的安装和配置全部结束。

电脑上做的ppt拿到别的电脑或手机上播放的时候字体错位的解决方法

原因:字体不对!!! 比如你英文用的Calibri字体,但是手机的wps或者别的电脑上的低版本的office没有这个字体,所以就会强制转换成那里有的字体(一般是黑体),此时字体就会错位!! 不要以为那个字体看似很通用,其实低版本的office或者手机上的wps就是没这种字体!!!(比如等线这个字体低版本其实也没有) 解决办法: 1、将字体改成通用字体,比如宋体,黑体即可。 2、将所有幻灯片弄成图片。 转载于:https://www.cnblogs.com/FengZeng666/p/10981863.html

toDF用法(隐式转化)

rdd的api并没有toDF()方法,如果要使用必须的隐式转化 代码如下(Spark2.x) val conf = new SparkConf().setMaster("local[2]") val ss:SparkSession = SparkSession.builder().config(conf).getOrCreate() val sparkContext=ss.sqlContext import sparkContext.implicits._ XXX xxxx val rdd=ss.xxx import sqlContext.implicits._val df = rdd.toDF() val finalReusltRdd =rdd.map(line=>new finalVo(line._1,Day)).toDF().persist(StorageLevel.DISK_ONLY) 在object前面加上case class 代码如下 case class finalVo(uid:String,day:String) object DmpPeopleTag_bak { XXXX }

【Homestead 】启动超时(Timed Out while booting)debug(一)

【Homestead Master】系列是Laravel底层核心技术实战揭秘这一课程里的第一章,因为考虑到该章内容学员们可能要经常来回查阅,同时也为了提高课程更新速度,所以这一章以文字的形式发布在此。 地址:http://www.pilishen.com/posts/Timed-Out-while-booting-homestead-virtual-machine-debug 今天小编起得早,然后兴冲冲地敲完vagrant up去买油条了,回来后傻眼了: 搞笑?!看提示似乎要让我去增加一下config.vm.boot_timeout的值,我不傻,这个值默认的一般就可以的,不改。 这个时候小编灵机一动,开启了gui界面,不知道的可以戳这里 然后发现了这个: 相当于说是找不到系统了,这个时候你需要确认下VirtualBox VMs文件夹下的虚拟机磁盘文件有没有被损坏,如果没有被损坏(比如vagrant destroy重新生成了disk文件),那就说明不是系统文件本身的问题。 经过排查,小编的问题是需要额外装一个扩展,到virtualbox的官网下载页面,下载相应的extension pack就可以了,示例如下: 下载了安装,再up,今天又没吃完油条。。。。

9 个优秀的图片占位图服务

在开发网站时,经常需要填充一些图片来预览页面效果,如果设计没有提供的素材,这时我们就需要占位图片, 通过 URL 定制形如 placehold.it/300/200 的地址就可以得到一个占位图片。下面就来细数 9 个优秀的占位图片生成网站。 1. https://placeholder.com/ BILLIONS & BILLIONS OF PLACEHOLDER IMAGES SERVED 特点:老牌服务,支持 HTTPS 可定制:尺寸、颜色、文字、格式 How To Set Image Size ------------------> https://via.placeholder.com/150How To Set Image Formats ------------------> https://via.placeholder.com/300.png/09f/fffHow To Set Custom Text ------------------> https://via.placeholder.com/468x60?text=Visit+Blogging.com+Now 2.http://lorempixel.com/ Placeholder Images for every case. Webdesign or Print. It's simple and absolutely free! 特点:图片分类丰富 可定制:尺寸、图片分类、文字、灰度图 http://lorempixel.com/400/200 ---------------> to get a random picture of 400 x 200 pixelshttp://lorempixel.com/g/400/200 --------------->to get a random gray picture of 400 x 200 pixelshttp://lorempixel.

【H5】 svg画贝塞尔曲线方法

【H5】 svg画贝塞尔曲线方法: d属性M(起始坐标),L(结束坐标),H(水平线),V(垂直线),A(圆弧),Z(闭合路劲) C,S,Q,T贝塞尔曲线大写为绝对坐标(具体的坐标位置)小写为相对坐标(相对起始坐标点的具体长度) A命令x-径y半径角度弧长(0小弧1大弧方向(0逆时针1顺时针)终点(x y)C命令:三次贝塞尔曲线(x1,y1,x2,y2,x,y) x1,y1控制点一x2,y2 控制点二x,y结束点S命令:平滑贝塞尔曲线(自动对称一个控制点) (x2,y2,x,y) x2,y2控制点x,y结束点Q命令:二次贝塞尔曲线(x1,y1,x,y) /x1,y1控制点 /x,y结束点T命令:一次贝塞尔曲线(x,y)结束点 (就是一条直线) 1. 见: https://blog.csdn.net/qq_41614928/article/details/90745457 2. C命令:三次贝塞尔曲线(x1,y1,x2,y2,x,y) x1,y1控制点一x2,y2 控制点二x,y结束点 <div id='wrap' style="width: 500px;height: 500px;border: 2px solid #000;margin: 50px auto 0;"> <svg xmlns="http://www.w3.org/2000/svg" width='500' height='500'> <!--C命令:三次贝塞尔曲线 (x1,y1,x2,y2,x,y)/ x1,y1 控制点一 /x2,y2 控制点二 /x,y 结束点 --> <path d='M100 300 C100 30 250 600 400 300' style="stroke:red;stroke-width:10;fill:pink;"></path> </svg> </div> 运行结果如下: 3. S命令:平滑贝塞尔曲线(自动对称一个控制点) (x2,y2,x,y) x2,y2控制点x,y结束点 <div id='wrap' style="width: 500px;height: 500px;border: 2px solid #000;margin: 50px auto 0;"

pytorch实现kaggle猫狗识别(超详细)

kaggle是一个为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台,在这上面有非常多的好项目、好资源可供机器学习、深度学习爱好者学习之用。碰巧最近入门了一门非常的深度学习框架:pytorch(如果你对pytorch不甚了解,请点击这里),所以今天我和大家一起用pytorch实现一个图像识别领域的入门项目:猫狗图像识别。 深度学习的基础就是数据,咱们先从数据谈起。此次使用的猫狗分类图像一共25000张,猫狗分别有12500张。下载地址:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data我们先来简单的看看都是一些什么图片。我们从下载文件里可以看到有两个文件夹:train和test1,分别用于训练和测试。打开train文件夹可以看到有25000 张小猫小狗的图片,图片名字为cat.0.jpg,cat.1.jpg,dog.0.jpg,dog.1.jpg。 仔细看小猫小狗,可以发现它们姿态不一,有的站着,有的眯着眼睛,有的甚至和其他可识别物体比如桶、人混在一起。同时,小猫们的图片尺寸也不一致,有的是竖放的长方形,有的是横放的长方形,但我们最终需要是合理尺寸的图片。所以需要进行图片处理,并把图片转化成Tensor作为模型的输入。代码如下: data_transform = transforms.Compose([ transforms.Resize(84), transforms.CenterCrop(84), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) train_dataset = datasets.ImageFolder(root='./data2/train/', transform=data_transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True, num_workers=num_workers) 为方便训练过程,需要把训练集进行处理:把猫狗的图片分别放在cat,dog文件夹中,并划分出一部分图片作为测试集(与下载的测试集不同)。代码如下: # kaggle原始数据集地址 original_dataset_dir = 'E:\python ese\c_d\data\\train\\train' total_num = int(len(os.listdir(original_dataset_dir)) / 2) random_idx = np.array(range(total_num)) np.random.shuffle(random_idx) # 待处理的数据集地址 base_dir = 'E:\python ese\c_d\data2' if not os.path.exists(base_dir): os.mkdir(base_dir) # 训练集、测试集的划分 sub_dirs = ['train', 'test'] animals = ['cats', 'dogs'] train_idx = random_idx[:int(total_num * 0.9)] test_idx = random_idx[int(total_num * 0.

地图服务 纬度、经度对应坐标轴x,y

地图服务 纬度、经度对应坐标轴x,y 记下,供自己参考,中国地区的经纬度,经度大,纬度小 如上海经纬度为:(经度, 纬度)(y, x)(lon, lat) 121.4831.22 纬度---lat----x轴 经度---lon---y轴 posted @ 2019-05-30 17:00 梓鸿 阅读( ...) 评论( ...) 编辑 收藏

centos的rm,mv等常用命令报错-bash rm:can not found

某一天上我的服务器,想重新上传代码,突然就发现删不掉我的源代码,内心慌的一匹,如下报错,rm常用命令找不到,这还得了,于是我进了/bin目录下面看了那些命令,发现就只有rm命令没有,内心崩溃! 这里我为了把事情搞定,只能先用mv命令代替,把之前的文件重命名了,然后上传新的上去,先解决事情再说。 然后各种找方法解决,一个运维十多年经验大佬告诉我 yum reinstall coreutils,他在那试了但是我的不行 我用的阿里云的服务器,报错“installed package coreutils-8.22-18.el7.x86_64(from anacoda) not available” 到这里陷入了沉默。 然后我试着让他给我从他那里给我拷贝一个命令,rm命令,拷贝出来是这个样子,各位可以去拷贝 然后我放到/bin目录下面,sudo chmod 777 ./rm一下,把可执行权限打开,rm命令就畅通无阻啦!有困惑的同学快去试一试吧。

【H5】canvas画布像素的设置与获取:

【H5】canvas画布像素的设置与获取: getImageData() 从Canvas画板上取得指定位置的像素数据putImageData() 将所得到的像素数据描画到Canvas画板上createImageData() 方法创建新的空白像素 ImageData 对象,参数里面也可以直接放ImageData 像素值 我们来实践操作一下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> canvas{border:1px solid deeppink;} </style> </head> <body> <canvas width='500' height='500'></canvas> <script> const oC = document.querySelector('canvas'); //获取画布 const ctx = oC.getContext( "2d" ); //设置画布类型2d const imgData = ctx.createImageData( 100 , 100 ); // //100*100 是此区域所在面积有多少个像素单位;x*y 100*100 = 10000 个rgba() //imgData.data是储存rgba()的一个40000长度的数组 因为颜色的组成部分为rgba(R,G,B,透明度) for( let i = 0 ; i<imgData.

数据结构 顺序表 时间复杂度

线性关系 1.顺序表: 数据逻辑有连续性,物理存储上也具有连续性 (中间不能空,要紧紧相连这点和数组区别) 2.链表: 数据逻辑有连续性,物理存储上不一定具有连续性 3.顺序表: 创建/销毁 增删查改 增:头插/尾插/插入(给定下标) 删:头删/尾删/删除(给定下标) 查:indexOf(element); 改:set(int index,int value); 访问 get(int index); 访问第n个元素,时间复杂度要求O(1), 头插:(size为数据个数,数组为array) a.需要从后往前遍历,否则数据将会被覆盖 b.数据下标遍历范围[size-1,0] (也就是插入之前的范围) c.空间下标遍历范围[size,1] (也就是遍历之后的范围) d.搬移的过程 array[空间]=array[数据] e.空间的下标=数据的下标+1 4.扩容 a.扩容的条件 在插入之前,size==array.length; b.如何扩容 1.申请新房子 (1.5倍-2倍) 2.把东西搬过去 3.公布自己的新房子 4.把旧的房子推掉 c.哪些方法需要考虑扩容 所有插入 5.时间复杂度 头插/头删/中间插入/中间删除 O(n) 尾插 平均O(1) (因为过一阵子就会需要扩容) 尾删 O(1) 6.属性的初始化 普通属性:(发生在构造每一个对象时) 1.定义时初始化 2.构造方法中初始化 3.构造代码块时初始化 静态属性:(发生在类加载时) 1.定义时初始化 2.静态代码块初始化 7.复杂度 衡量算法好坏的刻度尺/标杆 时间复杂度|空间复杂度 计算数据规模n和执行基本指令的个数F(n)的关系 时间复杂度: 第一反应:算法的运行时间 因为运行环境的不确定,所以,直接拿运行时间去衡量不合理。 考察算法的运行时间----考察算法运行需要的指令个数 算法运行的指令个数和因素(数据规模n)有关系 指令个数=F(n) 考察算法的复杂度,一般来说,只关注最坏的情况 大O渐进表示 1.保留最高次项 2.系数为1

面试之java提高-杨晓峰专栏笔记

学习杨晓峰专栏的笔记,39个热门面试题的解读,分享给正在面试或即将面试的小伙伴们 文章目录 1. 谈谈你对java平台的理解2. 对比Exception和Error,另外,运行时异常与一般异常有什么区别?3. 谈谈final、 finally、 finalize有什么不同?4. 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?5. 理解Java的字符串, String、 StringBufer、 StringBuilder有什么区别?6. 谈谈Java反射机制,动态代理是基于什么原理?7. int和Integer有什么区别?谈谈Integer的值缓存范围。8. 对比Vector、 ArrayList、 LinkedList有何区别?9. 对比Hashtable、 HashMap、 TreeMap有什么不同? 谈谈你对HashMap的掌握10. 如何保证容器是线程安全的? ConcurrentHashMap如何实现高效地线程安全?11. Java提供了哪些IO方式? NIO如何实现多路复用?12. Java有几种文件拷贝方式?哪一种最高效?13. 谈谈接口和抽象类有什么区别?14. 谈谈你知道的设计模式?请手动实现单例模式, Spring等框架中使用了哪些模式?装饰器模式工厂模式 15. synchronized和ReentrantLock有什么区别?有人说synchronized最慢,这话靠谱吗?16. synchronized底层如何实现?什么是锁的升级、降级?17. 一个线程两次调用start()方法会出现什么情况?谈谈线程的生命周期和状态转移。18. 什么情况下Java程序会产生死锁?如何定位、修复?19. Java并发包提供了哪些并发工具类?20. 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?21. Java并发类库提供的线程池有哪几种? 分别有什么特点?22. AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?23. 请介绍类加载过程,什么是双亲委派模型?24. 有哪些方法可以在运行时动态生成一个Java类?25. 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?26. 如何监控和诊断JVM堆内和堆外内存使用?27. Java常见的垃圾收集器有哪些?28. 谈谈你的GC调优思路?29. Java内存模型中的happen-before是什么?30. Java程序运行在Docker等容器环境有哪些新问题?31. 你了解Java应用开发中的注入攻击吗?32. 如何写出安全的Java代码?33. 后台服务出现明显“变慢”,谈谈你的诊断思路?34. 有人说“Lambda能让Java程序慢30倍”,你怎么看?35. JVM优化Java代码时都做了什么?36. 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?37. 谈谈Spring Bean的生命周期和作用域?38. 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?39. 谈谈常用的分布式ID的设计方案? Snowfake是否受冬令时切换影响?补充 1. 谈谈你对java平台的理解 Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection), Java通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。