C#/VB.NET 在Excel中添加水印

在工作中,为了防止文件被随意复制和传播,通常我们会选择在文档中添加水印来对文件进行有效保护。文字水印是比较常见的一种保护手段,它可以有效防止文件被任意复制和随意打印传播。不过,Excel默认并没有水印功能。此时,我们可以把插入的艺术字作为水印,将水印和工作表融合在一起,以防止文档被复制传播。那么如何轻松实现在Excel中添加水印呢?别着急,我给大家整理了一个高效便捷的方法,通过编程方式达到此目的。下面是我整理的具体步骤,并附上C#/VB.NET代码供大家参考。

程序环境:

本次测试时,在程序中引入 Spire.XLS.dll 文件。

方法1:

将Free Spire.XLS for .NET​​ 下载到本地,解压,找到 BIN 文件夹下的 Spire.XLS.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。

方法2::

通过​NuGet​​安装。可通过以下 2 种方法安装:

 1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.XLS”,点击“安装”。等待程序安装完成。

 2. 将以下内容复制到 PM 控制台安装。

Install-Package FreeSpire.XLS -Version 12.7

在Excel中添加水印

以下是详细步骤:

  • 创建Workbook类的实例。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 创建字体并定义文本。
  • 遍历 Excel 文件中的所有工作表。
  • 使用 DrawWatermarkImage() 方法创建基于文本的水印图像。
  • 通过Worksheet.PageSetup.LeftHeaderImage 属性将图片设置为每个工作表左页眉的图像源。
  • 将 Worksheet.PageSetup.LeftHeader 属性设置为“&G”,在左侧标题部分显示图像。
  • 将工作表的查看模式更改为页面布局,以便查看水印。
  • 使用 Workbook.SaveToFile() 方法保存结果文件。

完整代码

C#

using Spire.Xls;
using System.Drawing;

namespace AddWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化 Workbook 类的实例并加载 Excel 文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("示例文档.xlsx");

            //创建字体
            Font font = new Font("宋体", 40);
            //定义文本
            string watermark = "内部使用";

            //遍历文件中的所有工作表
            foreach (Worksheet sheet in workbook.Worksheets)
            {
                //调用 DrawWatermarkImage() 方法根据文本创建图像
                Image imgWtrmrk = DrawWatermarkImage(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth);

                //将图像添加到每个工作表的左侧标题部分
                sheet.PageSetup.LeftHeaderImage = imgWtrmrk;
                sheet.PageSetup.LeftHeader = "&G";

                //将工作表的查看模式更改为页面布局以查看水印
                sheet.ViewMode = ViewMode.Layout;
            }

            //保存结果文件
            workbook.SaveToFile("添加水印.xlsx", ExcelVersion.Version2013);
        }

        private static Image DrawWatermarkImage(string text, Font font, Color textColor, Color backColor, double height, double width)
        {
            //创建具有指定宽度和高度的图像
            Image img = new Bitmap((int)width, (int)height);
            //从图像创建一个 Graphics 对象
            Graphics drawing = Graphics.FromImage(img);

            //获取文字的大小
            SizeF textSize = drawing.MeasureString(text, font);

            //通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform(((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);

            //应用旋转
            drawing.RotateTransform(-45);

            //通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform(-((int)width - textSize.Width) / 2, -((int)height - textSize.Height) / 2);

            //绘制背景
            drawing.Clear(backColor);

            //为文本创建画笔
            Brush textBrush = new SolidBrush(textColor);

            //将文本绘制到图形的中心位置
            drawing.DrawString(text, font, textBrush, ((int)width - textSize.Width) / 2, ((int)height - textSize.Height) / 2);
            drawing.Save();
            return img;
        }
    }
}

VB.NET

Imports Spire.Xls
Imports System.Drawing

Namespace AddWatermark
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '初始化 Workbook 类的新实例并加载 Excel 文件
            Dim workbook As Workbook = New Workbook()
            workbook.LoadFromFile("示例文档.xlsx")

            '创建字体
            Dim font As Font = New Font("宋体", 40)
            '定义文本
            Dim watermark = "内部使用"

            '遍历文件中的所有工作表
            For Each sheet As Worksheet In workbook.Worksheets
                '调用 DrawWatermarkImage() 方法根据文本创建图像
                Dim imgWtrmrk As Image = DrawWatermarkImage(watermark, font, Color.LightCoral, Color.White, sheet.PageSetup.PageHeight, sheet.PageSetup.PageWidth)

                '将图像添加到每个工作表的左侧标题部分
                sheet.PageSetup.LeftHeaderImage = imgWtrmrk
                sheet.PageSetup.LeftHeader = "&G"

                '将工作表的查看模式更改为页面布局以查看水印
                sheet.ViewMode = ViewMode.Layout
            Next

            '保存结果文件
            workbook.SaveToFile("添加水印.xlsx", ExcelVersion.Version2013)
        End Sub

        Private Shared Function DrawWatermarkImage(ByVal text As String, ByVal font As Font, ByVal textColor As Color, ByVal backColor As Color, ByVal height As Double, ByVal width As Double) As Image
            '创建具有指定宽度和高度的图像
            Dim img As Image = New Bitmap(width, height)
            '从图像创建一个 Graphics 对象
            Dim drawing As Graphics = Graphics.FromImage(img)

            '获取文字的大小
            Dim textSize As SizeF = drawing.MeasureString(text, font)

            '通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform((CInt(width) - textSize.Width) / 2, (CInt(height) - textSize.Height) / 2)

            '应用旋转
            drawing.RotateTransform(-45)

            '通过将指定的转换前置到图形的变换矩阵来更改坐标系统的原点
            drawing.TranslateTransform(-(CInt(width) - textSize.Width) / 2, -(CInt(height) - textSize.Height) / 2)

            '绘制背景
            drawing.Clear(backColor)

            '为文本创建画笔
            Dim textBrush As Brush = New SolidBrush(textColor)

            '将文本绘制到图形的中心位置
            drawing.DrawString(text, font, textBrush, (CInt(width) - textSize.Width) / 2, (CInt(height) - textSize.Height) / 2)
            drawing.Save()
            Return img
        End Function
    End Class
End Namespace

效果图

—本文完—

本文转载于网络 如有侵权请联系删除

相关文章

  • GIS数据漫谈(三)

    经纬度赤道把地球分为了北半球和南半球,与赤道平行的线就是纬线。赤道是最大的纬圈,由此向北或向南,纬圈半径递减。赤道纬度为0°,由赤道向两级各分为90°。北半球的称为北纬,南半球的称为南纬。经线为连接南北两极并且与纬线垂直相交的半圆。经线的起始线最初并不统一,1884年,国际本初子午线会议(InternationalMeridianConference)在美国华盛顿召开。会议确定以穿过当时的英国伦敦格林尼治天文台的经线为本初子午线,即0°经线。以本初子午线为参照,向东和向西各分180°,称为东经和西经。我们可以通过经纬度来表示某个对象在地球表面的位置,比如:北京位于北纬39度56分、东经116度20分。经度和纬度一般用度-分-秒(DMS)或十进制度数表示(DD),比如:北纬39度56分(39°56′N)=39.93°N(39+56/60)东经116度20分(116°20′E)=116.33°E(116+20/60)在计算机的输入和存储中,一般都用十进制度表示,并且有正负号。经度值在本初子午线以东为正,以西为负。纬度值以北半球为正,南半球为负,比如:地理学上东西半球分界线并不是本初子午线,

  • EDI文件格式说明

    文件标准是电子数据交换EDI的重要组成部分。简而言之,EDI标准(又称EDI文件格式)是管理B2B文件(如订单、发票和订单回复)的内容和格式的具体准则。然后,这些文件将通过EDI协议发送到服务提供商或者业务合作伙伴。EDI文件格式如何工作根据EDI标准发送文件,可确保接收消息的服务器能够正确地解释信息,即每个数据元素都在其预期的位置。如果没有这样的标准,接收者的系统将无法识别信息,使得自动数据交换成为不可能。虽然EDI文件看起来像是字母和符号的随机组合,但所有EDI信息都符合非常严格的规则。通常EDI标准基于以下四个原则。语法语法规则决定了可以使用哪些字符和其顺序。代码代码用于标识常见信息,如货币、国家名称或日期格式。消息设计消息设计定义了特定消息类型(如发票或采购订单)的结构,以及使用了规定语法中的哪些规则子集。识别值识别EDI文件中的值的方式,例如通过其在文件中的位置或分隔符。这些变化因标准而异。大多数EDI标准还包括以下三个组成部分。元素——消息的最小部分,提供已提交的值(如“50“或“KGM“或“土豆”)。 段——组元素或数值的逻辑组合,以提供消息(例如,土豆数量50公斤)。

  • 美国土安全部网络安全与基础设施安全局公布战略意图

    背景 2019年8月下旬,美国国土安全部(DHS)下面新改建的网络安全与基础设施安全局(CISA,CybersecurityandInfrastuctureSecurityAgency)正式公布了其成立以来的首份战略意图文档。CISA成立于2018年11月,主体部分是原先的NPPD(NationalProtectionandProgramsDirectorate),核心职能是行使对美国联邦民事机构的物理及网络关键基础设施的安全保卫职责。下图是CISA目前的总体组织架构: CISA有一个很显著的特点就是将网络安全和物理安全整合到了一起,不仅保护关键信息基础设施,也保护关键物理基础设施。或者说,针对关键基础设施,从物理空间到网络空间都在其保护范围之内。而我国则是分开来的。美国认定的关键基础设施有16大类:这16大关键基础设施都有专门的管理机构(SSA)。此外,在保护关键基础设施和网络空间安全上,DHS的CISA与DOJ(司法部)的FBI也有分工。前者更偏协调工作,重在防御;后者则更注重依法调查取证和打击针对美国公私目标的网络入侵与攻击。而我国的情况则是不同的。以后有机会,还会进一步分析DH

  • 一些PHP选项参数相关的函数

    一些PHP选项参数相关的函数关于PHP的配置,我们大多数情况下都是去查看php.ini文件或者通过命令行来查询某些信息,其实,PHP的一些内置函数也可以帮助我们去查看或操作这些配置参数。比如之前我们学习过的关于php的ini文件相关操作函数浅析。修改方面的函数就只有ini_set(),其他大部分的函数其实都是帮助我们进行查询的,今天,我们就来一一讲解这些函数。get_defined_constants()返回所有常量的关联数组,键是常量名,值是常量值。define("MY_CONSTANT",1); print_r(get_defined_constants(true)); //array( //…… //[user]=>array( //[MY_CONSTANT]=>1 //) //) 复制这个函数会输出所有的常量,因为返回的内容很多,所以用......表示有很多系统或扩展的定义常量,而我们在代码中自己定义的常量则会全部进入到[user]这个键名下。这个函数有一个参数,当它为true时,让此函数返回一个多维数组,分类为第一维的键名,常量和它们的值位于第

  • 前端监控那些事

    监控这个词对于前端,个人觉得有三个定义,分别是“性能监控”、“异常监控”、“数据监控” 性能监控则是针对web应用的性能,涉及包括用户体验、用户交互时间等异常监控则是指Web应用得不到预期效果结果的情况监控数据监控则是获取用户使用过程的行为数据反馈1.性能监控性能监控可以让我们更好的监控当前应用的性能情况,然后对性能情况反馈去做优化,性能会影响到用户体验,而常见的性能指标我们能通过浏览器Performance里面看到 1.1Performace允许访问当前页面性能相关的信息,performance对象中常见的属性timing:对象中提供了各种与浏览器处理相关的时间数据navigation:在指定时间段里发生的操作信息,包括页面是加载还是刷新、发生了多少次重定向memory:获取到基本内存使用情况的对象timeOrigin:性能测量开始时的时间的时间戳通过window.performance查看?通过Performance的timing属性计算一些常见的指标consttiming=performance.timing; consttime={}; //http请求响应时间 time.h

  • C语言程序结构3:循环结构

    循环结构可以减少代码重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、dowhile循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。一、for循环:for(表达式1;表达式2;表达式3)//小括号后面没有分号,如加分号则表示循环体是空语句{  循环体}复制表达式1:循环控制变量初始化,也可以在for之前初始化(故可以为空);表达式2:循环判断条件,满足条件执行循环体,不满足则结束循环,为空则表示条件恒成立(应在循环体内设置break条件,否则死循环);表达式3:循环控制变量增量(变化也可以写在循环体内,甚至表达式2中,故也可为空)。三个表达式中间用分号隔开,for后面小括号里面有且只能有两个分号,不能多也不能少。表达式1初始化有多个的话用逗号隔开;表达式3增量有多个也用逗号隔开。三个表达式可以全为空:for(

  • 教你如何做出想要的PHPDocker镜像

    之前有篇文章讲过如何通过Docker来构建Laravel的开发环境,其实变通一下就能够在本地电脑上用Docker运行任何PHP项目,让任何PHP项目都能运行在Docker环境中主要是需要根据PHP项目的依赖制作PHP镜像的Dockerfile。这篇文章就主要讲一下如何根据需求制作PHP的Docker镜像文件。1.继承基础镜像首先需要根据你的PHP项目对PHP的要求找到基础镜像,然后再在基础镜像的基础上按需安装PHP的扩展。在Dockerfile中使用FROM命令指定基础镜像。From<image>复制FROM指定构建镜像的基础源镜像,如果本地没有指定的镜像,则会自动从Docker的公共库pull镜像下来。FROM必须是Dockerfile中非注释行的第一个指令,即一个Dockerfile从FROM语句开始。这里我们打算制作一个PHP7.2的包括FPM的定制化镜像,所以首先在Dockerfile中指定基础镜像:FROMphp:7.2-fpm复制2.安装PHP扩展定制PHP镜像的主要工作就是安装各种PHP扩展,在Dockerfile中PHP镜像安装扩展有三种方法,每种方法都有它

  • SpringBoot电商项目实战 — ElasticSearch接入实现

    如今在一些中大型网站中,搜索引擎已是必不可少的内容了。首先我们看看搜索引擎到底是什么呢?搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境。基于Java的搜索引擎框架,目前市面上很多。如:Lucene、Nutch、Solandra、Solr、ElasticSearch、Compass等,这里具体不一一对比讨论。今天主要说的是ElasticSearch搜索引擎的实现。ElasticSearch接入实现 ElasticSearch简称es,它是一款基于Lucene框架的分布式搜索引擎,也是一个高度可扩展的开源全文搜索和分析引擎,可以快速的、近实时地对大数据进行存储、搜索和分析,用来支撑复杂的数据搜索需求和企业级应用。并且也是一款为数不多的基于JSON进行索引的搜索引擎。它特别适合在云

  • Android图像处理系列 - 高斯模糊的几种优化方法

    一,高斯模糊简介高斯模糊是图像处理中常用的一种操作,用于减少图像细节,平滑图像。简单来说,高斯模糊的处理过程,是让图像每个像素都取周边像素的平均值,是参照正态分布的加权平均值。比如kernel为3*3的高斯模糊,就是取每个像素周围8个点再加上该像素的加权平均值,每个点的权重如图1。图1kernel为3的高斯模糊,每点权重值高斯模糊每个点的权重分配以正态分布为依据。一维正态分布函数函数图像如图2。 图2一维标准正态分布不同的,对应不同的函数图像,如图3。另外正态分布函数中。高斯模糊实现时,如何选择,如何根据给定的模糊半径确定有限个采样点的权重,都是需要解决的问题,不过并不在本文讨论范围之内。图3不同的正态分布二维正态分布函数图4二维正态分布图像可以看出,二维正态分布函数,等于x方向和y方向的两个一维正态分布函数的乘积。高斯模糊的实现,一般不会直接对m*m范围内的点计算加权平均,这种方式的时间复杂度为O(n*n*m*m),这里假设传入图像大小为n*n,kernel为m。较常见的做法是,分别在x方向和y方向,各做一次加权平均。时间复杂度可以降低到O(n*n*m)。二,boxblur:cpu上

  • Android Studio之gradle的配置与介绍

    AndroidStudio之gradle的配置与介绍非著名程序员1、gradle的简单介绍 Gradle是可以用于Android开发的新一代的BuildSystem,也是AndroidStudio默认的build工具。其实Gradle脚本是基于一种JVM语言—Groovy,再加上DSL组成的。由于Groovy是JVM语言,所以可以使用大部分的Java语言库。所谓DSL就是专门针对Android开发的插件,比如标准Gradle之外的一些新的方法(Method)、闭包(Closure)等等。通过我们简单的了解知道Gradle的语法足够简洁和简单,而且可以使用大部分的java包,所以它就当之无愧地成为新一代的BuildSystem。 我想使用过AndroidStudio的都知道,使用AndroidStudio新建一个工程后,默认会生成两个build.gralde文件,一个位于工程根目录,一个位于app目录下。如下所示: $find-namebuild.gradle ./app/build.gradle ./build.gradle 还有另外一个文件--settings.gradle。 根

  • 2、shell之jenkins删除备份包释放磁盘空间及版本回退

    所有脚本需自行修改!!!!!! 1、jenkins之版本回退脚本如下: #!/bin/bash #版本回滚到上一版本 #whritebyMr.yang2018-05-16 Service=$1 Application=$2 _date=`date+%Y%m%d%H%M%S` IP="服务器节点1" _IP="服务器节点2" #取上一版本备份包 FolderPath=`find/u01/.jenkins/workspace/$1/bak/*-typed|tail-n1|sed-n'1p'` forfileNamein${FolderPath}/*;do tempFile=`basename$fileName` echo"$tempFile" done mkdir/tmp/$_date mv/u01/.jenkins/workspace/$1/package_war/*/tmp/$_date rsync-avz$FolderPath/*/u01/.jenkins/workspace/$1/package_war/ 复制 2、jenkins删除备份包 #!/bin/bash #取出je

  • 带你学习AOP框架之Aspect.Core[1]

      在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。   在.NETCore中比较好的AOP框架有一个叫做Aspect的这样的一个框架,它是一个国产的!如何引入AspectCore? 可以直接nuget。 这AspectCore中需要创建一个拦截器一般继承自AbstractInterceptorAttribute。并且实现它的Invoke方法。 其中第一个参数是上下文,next是执行的委托方法,通过这个委托可以执行被拦截的方法。 //每个被拦截的方法中执行 publicasyncoverrideTaskInvoke(AspectContextcontext,AspectDelegatenext) { try { Console.WriteLine("Beforese

  • ⽤户组和权限面试题

    一级标题 ⽤户组和权限 1、解释drwxrwxrwx中每个字符表⽰什么? 答:第一段:drwx:目录文件,属主有读、写、执行权限 第二段:rwx:属组有读、写、执行权限 第三段:rwx:其它人有读、写、执行权限 2、linux操作系统中,lrwxr--r--中,l表⽰(链接⽂件)。 3、linux系统中,添加⽤户的命令是(useradd),修改⽤户密码的命令是(passwd)。 4、在linux中root⽤户的UID号是(0),GID号是(0)。 5、linux中su与su-的区别是什么? 答:su切换用户却不切换工作环境,su-同时切换用户与工作环境。直接现象就是su切换当前目录不变,环 境变量不变;su-则相反 6、给test.txt⽂件除所有者之外增加执⾏权限,最终以数⼦写出⽂件的权限? 答:655 7、在linux中,对file.sh⽂件执⾏chmod645file.sh中,该⽂件的权限是(rw-r--r-x)。 8、在linux中,⽂件权限的r、w、x分别对应⼋进制的数⼦是(4,2,1)。 9、在linux中,给111.txt⽂件赋予0645的

  • MongoDB性能优化

    一、索引 MongoDB提供了多样性的索引支持,索引信息被保存在system.indexes中,且默认总是为_id创建索引,它的索引使用基本和MySQL等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为奇。 1.基础索引 在字段age上创建索引,1(升序);-1(降序): db.users.ensureIndex({age:1})复制 _id是创建表的时候自动创建的索引,此索引是不能够删除的。当系统已有大量数据时,创建索引就是个非常耗时的活,我们可以在后台执行,只需指定“backgroud:true”即可。 db.t3.ensureIndex({age:1},{backgroud:true})复制 2.文档索引 索引可以任何类型的字段,甚至文档:   db.factories.insert({name:"wwl",addr:{city:"Beijing",state:"BJ"}}); //在addr列上创建索引 db.factories.ensureIndex({addr:

  • JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序

    1.前言 算法为王。 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远。 笔者写的JavaScript数据结构与算法之美系列用的语言是JavaScript,旨在入门数据结构与算法和方便以后复习。 之所以把计数排序、桶排序、基数排序放在一起比较,是因为它们的平均时间复杂度都为O(n)。 因为这三个排序算法的时间复杂度是线性的,所以我们把这类排序算法叫作线性排序(Linearsort)。 之所以能做到线性的时间复杂度,主要原因是,这三个算法不是基于比较的排序算法,都不涉及元素之间的比较操作。 另外,请大家带着问题来阅读下文,问题:如何根据年龄给100万用户排序? 2.桶排序(BucketSort) 桶排序是计数排序的升级版,也采用了分治思想。 思想 将要排序的数据分到有限数量的几个有序的桶里。 每个桶里的数据再单独进行排序(一般用插入排序或者快速排序)。 桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 比如: 桶排序利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 为了使桶排序更加高效,我们需要做到这两点: 在额外空间充

  • 虚拟机安装的UBUNTU全屏的方法:

     虚拟机安装的UBUNTU全屏的方法: 打开虚拟机,并点击要更改成全屏的那个ubuntu系统的电源,本例的虚拟机名字就叫ubuntu,那么就点击【打开此虚拟机电源】。 等虚拟机打开之后,点击虚拟机软件上面工具栏中的【虚拟机(V)】,会展现出一个下拉菜单。 在下拉菜单中,找到并使用鼠标左键单击【安装Vmware工具】,如果这里是灰色的,那么可能是因为虚拟机版本比较低。 点击以上选项后,进入到系统里面,找到在桌面上出现的wmwaretools的光盘。点击进入其中。 在vmwaretools虚拟光盘里面,双击【vmware****.tar.gz】这个文件,注意这里的****是任意字符的意思,每个虚拟机的版本可能不一。 复制这个【vmware****.tar.gz】文件,到【文件】--->【home】文件夹里面。 然后按【Ctrl+Alt+T】调出命令界面,在里面输入【tar-zxvfv】后按【Tab】键,自动补全整个工具的名字。然后按enter执行。 然后在终端里面,输入【cdV】,再按一次TAB键补全被解压后的那个工具目录名字。回车后进入

  • 前端实习-面试复盘(社科转码)

    注意:非互联网厂,医疗行业。 岗位要求比较灵活,是根据面试者简历定的组,过了数据分析的面试,但比较偏向做前端。 和面试官们交流了自己的想法,对方表示前端刚好缺人,如果有兴趣可以去面试下。 所以挺机缘巧合的,感谢May、A姐和平哥的信任和帮助。 刚开始有点小紧张,不过面试官很随和,最后也发了offer,下面是面试的复盘。 自我介绍 表现: 主要讲了自己的性格,是怎么走上前端道路的,为了前端都付出了哪些努力,上网课做的项目,参加比赛拿了什么奖,自己在医疗行业使用互联网技术的实践经历。 优化: 听取龙佬的建议,以后面试准备一个有自己想法的项目。 反思: 自己的实力有待增强,保持真诚和放松的状态与面试官沟通,面试是一个双向选择的过程。 基础问答 对前端性能优化的看法? 表现: 这道题随机答了四五条。 优化: 这个问题的经典回答是雅虎35条。 反思: 下次被问到这个问题,可以按照HTML、CSS、JS、与后端交互的分类来答,每个部分答两三条。 对CSS盒模型的理解? 表现: 讲了盒模型的组成要素,说了标准盒模型和怪异盒模型的区别,尺寸的计算方法。 认为HTML的每个元素都可以被视作一个盒模型。

  • 虚树_学习笔记

    (打脸,还是要写学习笔记) 先上一篇dalao的blog https://www.cnblogs.com/zwfymqz/p/9175152.html#_labelTop 虚树真的有点难理解,主要是建树的dfn[sta[top-1]]<dfn[lca]的地方 什么时候下会有这种情况捏?大概是弹栈弹到最后,剩下lca左边只剩下一个点未回溯(栈顶),而sta[top-1]在lca的上面 所以就好理解了,因为虚树栈内总维护的是最右链,把栈顶弹出来,把lca插入进去即可 最后记得全部弹栈!!(单调栈也老犯这个错误) 好了,去写几道题!

  • Codeforces Round #776 (Div. 3) 题解

    A-DeletionsofTwoAdjacentLetters 题意 给出一个字符串长度为奇数和一个字符。两个相邻字符可以删,问是否可以把这个字符串删成这个字符。 Solution 可以发现字符串中其他字符的总数是一个偶数,两个两个删一定是可以满足条件的。 但是可以发现一组\(\texttt{Hack}\)数据 abaaa b 复制 显然,最后只能删成这种情况 aba 复制 于是要加一个判断,判断是否在这个字符之前的其他字符的个数是否是奇数,如果是就无解。 因为我是从\(0\)开始读入的,所以应该判断下标是否是偶数。 Code /* Writer:ZhengXiangYu */ #include<bits/stdc++.h> usingi64=longlong; intmain(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); autosolve=[&]()->void{ std::strings; charc; std::cin>>s>>c

  • HBase Rowkey的散列与预分区设计

        HBase中,表会被划分为1...n个Region,被托管在RegionServer中。Region二个重要的属性:StartKey与EndKey表示这个Region维护的rowKey范围,当我们要读/写数据时,如果rowKey落在某个start-endkey范围内,那么就会定位到目标region并且读/写到相关的数据。简单地说,有那么一点点类似人群划分,1-15岁为小朋友,16-39岁为年轻人,40-64为中年人,65岁以上为老年人。(这些数值都是拍脑袋出来的,只是举例,非真实),然后某人找队伍,然后根据年龄,处于哪个范围,就找到它所属的队伍。:(有点废话了。。。。  然后,默认地,当我们只是通过HBaseAdmin指定TableDescriptor来创建一张表时,只有一个region,正处于混沌时期,start-endkey无边界,可谓海纳百川。啥样的rowKey都可以接受,都往这个region里装,然而,当数据越来越多,region的size越来越大时,大到一定的阀值,hbase认为再往这个region里塞数据已经不合适了

  • 【PMP学习笔记】第1~13章内容汇总(基础知识+ITTO思维导图)

    基础知识 第1章PMP体系引论 https://www.cnblogs.com/hzxll/p/16519078.html 第2章项目运行环境 https://www.cnblogs.com/hzxll/p/16555693.html 第3章项目经理⻆⾊ https://www.cnblogs.com/hzxll/p/16555710.html 第4章项目整合管理 https://www.cnblogs.com/hzxll/p/16556115.html 第5章项目范围管理 https://www.cnblogs.com/hzxll/p/16659148.html 第6章项目进度管理 https://www.cnblogs.com/hzxll/p/16663694.html 第7章项目成本管理 https://www.cnblogs.com/hzxll/p/16673693.html 第8章项目质量管理 https://www.cnblogs.com/hzxll/p/16694562.html 第9章项目资源管理 https://www.cnblogs.com/hzxll/p/1669

相关推荐

推荐阅读