精华内容
下载资源
问答
  • 笔者的需求文档上清晰写出需要查询时候 整个页面加水印,而这个查询逻辑时跨库查询(不是内网链接)。数据量大,而且字段多关联了好几张大表也作了聚合操作。总得一句话说。基本上很慢,如果我们还后台去渲染报表...

    笔者最近用的是VUE+Element 自己写了一个报表

         笔者的需求文档上清晰写出需要查询时候 整个页面加水印,而这个查询逻辑时跨库查询(不是内网链接)。数据量大,而且字段多关联了好几张大表也作了聚合操作。总得一句话说。基本上很慢,如果我们还用后台去渲染报表的话。会极其慢。使得服务假死。

    先上效果图:

    再上代码

    这里的watermark方法里面的字符串,就是你想要线上的页面水印的文字

     watermark : function (settings) {
                	//默认设置
                	let defaultSettings={
                	watermark_txt:"text",
                	watermark_x:20,//水印起始位置x轴坐标
                	watermark_y:20,//水印起始位置Y轴坐标
                	watermark_rows:500,//水印行数
                	watermark_cols:500,//水印列数
                	watermark_x_space:100,//水印x轴间隔
                	watermark_y_space:50,//水印y轴间隔
                	watermark_color:'#aaa',//水印字体颜色
                	watermark_alpha:0.4,//水印透明度
                	watermark_fontsize:'15px',//水印字体大小
                	watermark_font:'微软雅黑',//水印字体
                	watermark_width:210,//水印宽度
                	watermark_height:80,//水印长度
                	watermark_angle:15//水印倾斜度数
                	};
                	Object.assign(defaultSettings, settings);
                	let oTemp = document.createDocumentFragment();
                	//获取页面最大宽度
                	let p_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
                	let cutWidth = p_width*0.0150;
                	let page_width=p_width-cutWidth;
                	//获取页面最大高度
                	let page_height = Math.max(document.body.scrollHeight,document.body.clientHeight)+10050;
                	// let page_height = document.body.scrollHeight+document.body.scrollTop;
                	//如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
                	if (defaultSettings.watermark_cols === 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width *defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) {
                	defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
                	defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
                	}
                	//如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
                	if (defaultSettings.watermark_rows === 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) {
                	defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
                	defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
                	}
                	let x;
                	let y;
                	for (let i = 0; i < defaultSettings.watermark_rows; i++) {
                	y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
                	for (let j = 0; j < defaultSettings.watermark_cols; j++) {
                	x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
                	let mask_div = document.createElement('div');
                	mask_div.id = 'mask_div' + i + j;
                	mask_div.className = 'mask_div';
                	mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
                	//设置水印div倾斜显示
                	mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                	mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                	mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                	mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                	mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                	mask_div.style.visibility = "";
                	mask_div.style.position = "absolute";
                	mask_div.style.left = x + 'px';
                	mask_div.style.top = y + 'px';
                	mask_div.style.overflow = "hidden";
                	mask_div.style.zIndex = "9999";
                	mask_div.style.pointerEvents='none';//pointer-events:none 让水印不遮挡页面的点击事件
                	mask_div.style.opacity = defaultSettings.watermark_alpha;
                	mask_div.style.fontSize = defaultSettings.watermark_fontsize;
                	mask_div.style.fontFamily = defaultSettings.watermark_font;
                	mask_div.style.color = defaultSettings.watermark_color;
                	mask_div.style.textAlign = "center";
                	mask_div.style.width = defaultSettings.watermark_width + 'px';
                	mask_div.style.height = defaultSettings.watermark_height + 'px';
                	mask_div.style.display = "block";
                	oTemp.appendChild(mask_div);
                	};
                	};
                	document.body.appendChild(oTemp);
                	}
            	

    这个就是实现watermark的方法。这个时初始化的时候,帮你渲染。

    注意一点:(笔者时用父子页面做的,所以说初始化页面水印覆盖时子页面的min-hight高度)初始化渲染的时候。水印之后获取你显示最大的宽度(包括你i子页面的最大宽度)和长度。所以当你查询出数据的时候。你拉下去看。水印时没有的,这里怎么办呢?

    点击查询的方法的时候,是不是重新刷新一下这个方法就行呢?,答案时可以的

     

    this.watermark({watermark_txt: fdno});//这句话插入你查询方法最后一步,她就会自动刷新。但是会重复水印。这个笔者也没找到怎么清除掉。第一次的生成第二次的。但是查询有水印覆盖也没所谓

     

    展开全文
  • hello,小伙伴们大家好,今天给大家推荐的开源项目是:plantuml,一个好的程序员在写代码之前会把架构理清楚,编码之前、设计先行、流程图/UML 图先行。我记得我刚刚开始工作的时候喜欢边想边写,后面遇到复杂的业务...

    hello,小伙伴们大家好,今天给大家推荐的开源项目是:plantuml,一个好的程序员在写代码之前会把架构理清楚,编码之前、设计先行、流程图/UML 图先行。我记得我刚刚开始工作的时候喜欢边想边写,后面遇到复杂的业务逻辑时经常需要推到重来,浪费时间,所以后面养成了画图的习惯,有什么问题在编码之前就能够暴露出来解决掉,可以极大地提高生产力,UML是必不可少。而通过纯文本的方式就能编写 UML,节省了大部分排版、美化的时间。推荐给感兴趣的朋友。

    效果展示

    定时图

    思维导图

    部署图

    时序图

    用例图

    PlantUML in a nutshell

    感兴趣的小伙伴可以体验一下,个人感觉比在线工具好用一点,仁者见仁,智者见智了,最主要不用自己费时费力的排版了,只需要把自己的逻辑以文字的方式写上去即可。

    开源地址:https://github.com/plantuml/plantuml
    中文文档:https://plantuml.com/zh/

    今天的推荐不知道大家喜不喜欢?如果大家喜欢话,请在文章底部留言或点赞,以表示对我的支持,你们的留言,点赞,转发关注是我持续更新的动力,peace!

    关注公众号回复:"1024",免费领取一大波学习资源,先到先得哦!

    展开全文
  • 脚本是批处理文件的延伸,是一种文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。  脚本简单地说就是一条条的文字命令,这些...


        脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。


      脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。 

     

                     【疑是恶意代码】

        所谓恶意代码,是指网页中使用了利用WSH漏洞来修改系统的一段代码(但是由于它并不具备传染性和自我复制这两个病毒的基本特征,因此不能称作病毒)。WSH是“Windows Scripting Host”的缩写,是微软提供的一种脚本解释机制,它使得脚本文件(扩展名为 .js、.vbs等)能够直接在Windows桌面或命令提示符下运行。

      也就是说,我们可以从卸载WSH、阻止恶意代码运行、实时保护的任意一个方面入手,均可以达到保护windows 系统不被恶意代码篡改的目的。

      一、卸载WSH

      微软提供WSH的初衷是为了让管理员通过脚本程序更方便地管理系统,实现批处理或者自动化功能。但是这个美好的愿望被恶意代码利用而使得WSH成为系统中非常薄弱的环节。其实,绝大多数普通用户并不需要WSH,因此我们完全可以把它卸载掉。具体方法如下:

      在Windows 2000,XP中删除WSH的方法是,双击“我的电脑”图标,然后执行“工具/文件夹选项”命令,选择“文件类型”选项卡,找到“VBS VBScript Script File”选项,并单击“删除”按钮,最后单击“确定”即可。

      

      二、禁止脚本运行

      如果您不愿意删除WSH组件,可以考虑用如下方法禁止脚本的运行:

      1、打开资源管理器,点击“工具->文件夹选项->文件类型”,在文件类型中将后缀名为“VBS、VBE、JS、JSE、WSH、WSF”项全部删除,这样这些文件就不会被执行了(双击在前面您搜索到的*.js、*.vbs文件试试)。

      2、打开IE,点击“工具->Internet选项->安全->自定义级别”,在“安全设置”对话框中,将其中所有的ActiveX插件和控件以及与Java相关的组件全部禁止即可。不过这样做以后的一个不便之处就是如果网页中使用了 js 或者 vbs 脚本,则该网也将不能正常显示

      三、实时保护IE

      也许您觉得上面的两种方法都太绝对,并不能满足自己灵活的需要,那么可以考虑安装上网助手(在地址栏中输入“上网助手”或者“zs.3721.com”进入网站,在弹出的安装提示对话框中点击“是”)。安装之后,上网助手会在屏幕右下角的系统托盘处出现蓝色图标,点击它,可以看到其“保护IE”项被选中,表示实时保护IE的功能正在生效。

      当然,除了以上方法以外,及时给系统和IE打上最新的补丁、给防病毒软件及时升级病毒数据库、不要轻易地去浏览一些来历不明的网站等等,都是很好的习惯,能最大限度的把恶意代码拒之门外。龙铭洪建议养成良好的上网习惯,不去乱七八糟的网站,不点陌生的链接等等。还有就是安装一款好的杀毒软件,建议楼主可以安装360杀毒和360安全卫士,个人觉得是比较好的呢。查杀、木马防御 系统修复 清除病毒能力远超同类软件,而且占的内存也小,系统优化 开机提速 智能补丁安装 不影响网速!杀毒防护二不误!处理问题也方便快捷,我用了好久~现在360杀毒进步很大啊,以前不怎么样,现在弄了四引擎有启发主防还有BD引擎,还推出了边界防护 ,查杀主动防护率提高很多啊。

        1.装杀毒软件 2.不上不良网站 3.用非IE内核的浏览器,如Chrome、Firefox、Opera  4.不要轻信中奖活动

     

    转载请注明地址,你也懂作者收集辛苦。

    转载于:https://www.cnblogs.com/long892230/archive/2012/07/14/2669528.html

    展开全文
  • C++程序设计语言(特别版)--源代码

    热门讨论 2012-04-23 07:33:51
    提供的是书中的源代码,非课后练习源代码。 本版本是高清版,是第1版第18次印刷,是书签最全最好的版本。 基本信息 原书名: The C++ Programming Language, Special Edition 原出版社: Addison Wesley 作者: ...
  • 提供的是本书的课后习题源代码,也就是《C++程序设计语言(特别版)题解》的源代码。非书中源代码。 本版本是高清版,是第1版第18次印刷,是书签最全最好的版本。 基本信息 原书名: The C++ Programming Language...
  • (其实是没安装画类图的软件)试试用纯文字如何描述代码逻辑 分享一种代码逻辑清晰的实现方案: 主类:ThreadPool 内部类:SingleThread ThreadPool: 成员: ArrayList mWaittingList; //等待队列 ArrayList ...

    让我们不上代码,不上类图。(其实是没安装画类图的软件)试试用纯文字如何描述代码逻辑微笑


    分享一种代码逻辑清晰的实现方案:

    主类:ThreadPool

    内部类:SingleThread


    ThreadPool:
    成员:
    ArrayList<Task> mWaittingList;<span style="white-space:pre">		</span>//等待队列
    ArrayList<Task> mExecList;<span style="white-space:pre">		</span>//执行队列
    ArrayList<SingleThread> mThreadPool <span style="white-space:pre">	</span>//线程List
    方法:
    ThreadPool(int poolSize)<span style="white-space:pre">		</span>//构造函数 初始化mThreadPool并全部start
    addTask(Task task) <span style="white-space:pre">			</span>//放入任务,并notifyAll线程



    SingleThread
    方法:
    run() 	//执行方法
    		while循环查看mWaittingList,如果有任务,则取出放入mExecList,并执行此任务。
    		如果while 判断mWaittingList为空,进入线程wait
    		如果wait被notify唤醒,重新执行以上代码



    如果想加入cancel 和 stop功能,只要在run中增加标志位判断,然后在ThreadPool中控制这些变量就可以了

    没了~~


    展开全文
  • 项目开发中如何写说明文档

    万次阅读 2017-11-21 18:44:11
    叫你怎么写开发文档:步骤描述:步骤描述需要一定的逻辑性。但不一定是纯文字形式,可以公式,便于理解的伪代码+文字等方式进行步骤描述
  • 有时候我我们webview去显示后台返回给我的html代码时使用loadDataWithBaseURL 如果是纯文字没有什么关系 但是出现图片的话 可能就不出现不适配的现象 看起来就有点格格不入了 实现逻辑是这样的 通过Jsoup去修改...
  • 每日设计思想总结

    2010-11-18 10:07:39
    参考《java与模式》,回忆,想起来多少写多少,每天都会添一点。 一、建造模式 1、适用范围: 创建的产品包含多个子部件,各个部分之间... 本来UML描述最清晰,暂时用文字。 产品:被创建的对象; ...
  • 符号语言—— 要知道如何专业的符号来描述问题(需要具备相应的数学功底,但不是秀数学功底,而不落地),并进行逻辑推理,证明等,不人云亦云,要有自己独到的见解; 图形语言—— 与别人讨论或交流时,...
  • 代码下载后,小程序 IDE 打开后即可使用。 注:请选择小程序项目,非小游戏,例子中无 appid,所以无法在手机上运行,如果需要真机调试,请在打开例子时,填上自己的小程序 id 快速开始 mpvue 的使用方法请移步 ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    1、修复“文本_取中间_批量”获取大数据崩溃的BUG,改为循环方式获取,大数据不建议此命令(吃CPU)。 2、添加“文本_朗读”是否使用百度语音引擎参数,为空时默认使用微软语音引擎。 3、改善“文本_加密”与“文本_...
  • 空行把大块代码分成逻辑上的“段落 关于括号 大括号另起一行 即便只有一行代码也加大括号 C 指针中的指针符靠近类型名,如写成int* p,而不写成int *p 关于标点 中文表述,使用中文全角的标点符号,如:()、...
  • 、Poplar:网页版自然语言标注工具、图片文字去除,可用于漫画翻译 、186种语言的数字叫法库、Amazon发布基于知识的人-人开放领域对话数据集 、中文文本纠错模块代码、繁简体转换 、 Python实现的多种文本可读性评价...
  • 超文本笔记本,可以支持文字,图片,动态图混排,做便签十分方便,注意高清图片会压缩,目前笔记是保存本地 技术分享部分(鸿洋玩Android,还有代码家的干活集中营等等),关于flutter版本的极致体验玩Android客户端 ...
  • 大部分同学我想都对这种纯文字的东西不感冒,没耐心完整细看下去。 但是我相信以上说的 关于 在 一个画布里面 做虚拟元素的面向对象封装,加上事件派发的系统。如果你想做这件事,那么上面的东西...
  • 为什么要React?" "它只是个UI库"。 从 jQuery 开始,前端组件遍地花开,有jQuery官方提供的成套组件,也有活跃社区提供的第三方组件,从最简单的文本截断功能,到复杂...
  • 皮肤组件能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您 也不再需要花费很多时间来使得自己的应用程序更漂亮。 3 选择皮肤组件产品时需要考虑的几个因素: 3.1...
  • boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫; [kɒ:l] circumstance n.事件(环境,状况) ['sә:kәmstәns] crash n.崩溃,破碎 [kræʃ] cohesion 内聚,黏聚,结合 [kәu'hi:ʒәn] (a class is ...
  • 修改核心支持库,解决“播放音乐()”播放“音频采样大小为24位”的WAV文件时产生噪音的BUG。 4. 修改编译器,可以为编译出的EXE、DLL添加版本信息(通过“程序配置”设定)。 5. 修改集成开发环境,自动记忆非...
  • 中国电信计费模型:数据模型

    热门讨论 2009-03-31 11:18:20
    3.2 产品域逻辑设计 41 3.2.1 产品(Product)实体 46 3.2.2 产品包(Product_Bundle)实体 49 3.2.3 商品(Product_Offer)实体 51 3.2.4 服务提供(Service_Offer)实体 52 3.2.5 动作(Action)实体 54 3.2.6 产品目录...
  • [size=15.5556px]A、记事本手写代码 [size=15.5556px]B、命令行编译生成EXE(Cl.EXE) [size=15.5556px]C、格式化输出函数printf [size=15.5556px]D、转义字符\n [size=15.5556px]E、main函数 [size=15.5556px]2.2、...
  • 视频处理SDKAndroid文字水印、png图片水印; 音频处理SDKAndroid回音消除、噪音抑制、自动增益、VAD检测模块; iOS端 RTMP直播推流端SDK iOS屏幕(基于ReplayKit)、摄像头RTMP推流SDK; RTSP直播推流SDK ...
  • 13.4 模板参数描述策略 302 13.4.1 默认模板参数 303 13.5 专门化 304 13.5.1 专门化的顺序 306 13.5.2 模板函数的专门化 307 13.6 派生和模板 308 13.6.1 参数化和继承 309 13.6.2 成员模板 310 13.6.3 ...
  • 软件工程知识点

    2012-12-02 21:34:25
    (2)项目效益分析指标:收入;投资回收期;投资回收率。 4.项目规划 (1)项目开发计划 项目开发计划涉及的内容包括: •开发团队的组织结构,人员组成与分工。 •项目成本预算。 •项目对硬件、软件的资源需求。...
  • 2.1.3 内容标注法 17 2.1.4 使用站点导航图来表现信息 架构 18 2.1.5 使用线框图草拟信息架构 21 2.1.6 通过原型将交互可视化 22 2.2 移动设计的系统方法 24 .2.2.1 苹果设备的可访问性 25 2.2.2 ios...
  • Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
  • 使用两种方法,第一种是使用文字相似度匹配算法,当搜索值与数据库中值相似性达到一定程度就返回相应数据。当第一种出现异常时,使用了二种JavaScript的数组中的indexof方法通过传入键盘键入的值作为参数,若是搜索...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

代码逻辑用纯文字