天道酬勤,学无止境

博客

ansible - 管理变量和事实 (二)

管理变量和事实: 练习:使用基本身份认证的 httpd ple.com #写 playbook -- - name: Webserver vars hosts: web vars: firewall_pkg: firewalld firewall_ser: firewalld web_pkg: httpd web_ser: httpd ssl_pkg: mod_ssl httpdconf_src: files/httpd.conf httpdconf_dest: /etc/httpd/conf/httpd.conf secrets_dir: /etc/httpd/secrets secrets_dest: "{{ secrets_dir }}/htpasswd" secrets_src: files/htpasswd web_root: /var/www/html tasks: - name: Install packages yum: name: - "{{ firewall_pkg }}" - "{{ web_pkg }}" - "{{ ssl_pkg }}" - name: config service copy: src: "{{ httpdconf_src }}" dest: "{{ httpdconf_dest }}" owner: root group: root

2021-06-13 05:29:21   

Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库

文章目录 Vue前端后端controller层service层:如何解析Excel文件MyBatis:实现批量插入在mysql中设置唯一索引Unique IndexMySQL中的insert ignore into, replace into等的一些用法总结 Vue前端 前端主要用了element-ui的upload组件。 <el-upload class="filter-item" name="excelFile" :action="uploadUrl()" :on-error="uploadFalse" :on-success="uploadSuccess" :before-upload="beforeAvatarUpload" :limit="1" accept=".xlsx,.xls" :show-file-list="false" :file-list="fileList"> <el-button style="margin-left: 10px;" icon="el-icon-edit" type="primary">批量上架</el-button> </el-upload> 关于每个字段的意思: uploadUrl() 是后台接口(接受上传的文件并做后端的逻辑处理) 注意:uploadUrl方法中,直接return的是你的后端URL接口,可以是相对路径

2021-06-13 05:29:17   

《启示录:打造用户喜爱的产品》读书笔记

写在前面:本文仅仅是根据个人阅读习惯或个人有启发之处所记录的笔记,不代表该书的重点哦>o< 前言 1、产品经理的任务是探索产品的价值、可用性、可行性(可用性是指用户明白如何使用产品,价值是指用户对产品的渴求程度)。产品经理的目标是在最短的时间内把握复杂的市场/用户需求,确定产品的基本要求——价值、可用性和可行性。为验证产品的价值和可用性,必须尽早地、反复地接受目标用户的使用/测试,以便获取有效的用户体验。 2、定义产品需要产品经理、交互设计师、软件架构师通力合作。 3、用户体验设计就是交互设计、视觉设计(对硬件设备来说,则是工业设计)。功能(产品需求)和用户体验设计密不可分。开发人员不擅长用户体验设计,因为开发人员脑力里想的是实现模型,而用户看中的是产品的概念模型。 4、采用高保真的产品原型是全体团队成员了解产品需求和用户体验的最有效途径。 人员 1、关键角色及其职责: 产品经理: 评估产品机会:严格审核产品创意来源,包括公司高管的意见、用户的反馈、可用性测试结果、产品团队和营销团队的点子、业内人士的分析等,借助市场需求文档(MRD)来完成。定义要开发的产品:包括基本的产品特征和功能、产品的用户体验、产品的发布标准等,主张借助清晰的产品需求文档(PRD)来完成。 用户体验设计师:其中最关键的角色是交互设计师(也称为信息架构师、用户界面设计师、用户体验架构师),其负责深入理解目标用户

2021-06-13 05:29:13   

js中将字符串转换成json

(1)使用Function函数 function strToJson(str) { var json = (new Function("return " + str))(); return json; } (2)使用eval方式 function strToJson(str) { var json = eval('(' str ')'); return json; } (3)使用全局的JSON对象 function strToJson(str) { return JSON.parse(str); } 对于第一和第二种方式所有浏览器均兼容,但是第三种方式会出现问题Chrome中,JSON.parse的第一个参数只能是字符串,不能是对象(包括new String方式也不支持)如果要兼容所有浏览器,可以这么写 Object.prototype.parseJSON = function () { return JSON.parse(this.toString()); } var str = '{"name":"jack"}'; var json = str.parseJSON(); alert(json.name) 通常JSON返回的服务器数据的一般表现形式: datas:[ {sid:"41",sname:"Jacky",score:"79"}, {sid:"46",sname

2021-06-13 05:29:07   

设计模式七大原则详细版

设计模式七大原则 1. 设计模式的目的2. 设计模式七大原则2.1. 单一职责模式2.2. 接口隔离原则(Interface Segregation Principle)2.3. 依赖倒转原则(Dependence Inversion Principle)2.3.1 依赖关系传递的三种方式a. 接口传递b. 构造方法传递c. setter方式传递 2.4. 里氏替换原则(Liskov Substitution Principle)2.5. 开闭原则(Open Closed Principle)2.6. 迪米特法则(Demeter Principle)2.7. 合成复用原则 1. 设计模式的目的 编写软件过程中,程序员面临来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让 **程序(软件)**具有更好的: 代码重用性(即:相同功能的代码,不用多次编写)可读性(即:编程规范性,便于其他程序员的阅读和理解)可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护可靠性(即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现 高内聚,低耦合的特性 2. 设计模式七大原则 设计模式的原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据) 2.1. 单一职责模式 对类来说的

2021-06-13 05:29:03   

进程调度详解算法

进程调度详解算法及C语言实现 引言原因进程调度的指标进程调度的时机进程调度的方式进程调度的策略/算法 算法详解先来先服务(FCFS)调度算法 短作业优先(SJF)调度算法 时间片轮转(RR)调度算法 高响应比优先(HRRF)调度 算法多级反馈队列(MFFP)调度算法 最高优先级优先调度算法 小结 引言 原因 需要进程调度的理由很简单,即充分利用计算机系统中的CPU资源,让计算机系统能够多快好省地完成我们让它做的各种任务。为此,可在内存中可存放数目远大于计算机系统内CPU个数的进程,让这些进程在操作系统的进程调度器的调度下,能够让进程高效(高的吞吐量—throughput)、及时(低延迟—latency)、公平(fairness)地使用CPU。为此调度器可设计不同的调度算法来选择进程,这体现了进程调度的策略,同时还需并进一步通过进程的上下文切换(context switch)来完成进程切换,这体现了进程调度的机制。总体上说,我们需要何时调度(调度的时机)、是否能够在内核执行的任意位置进行调度(调度的方式)、如果完成进程切换(上下文切换)、如果选择“合适”的进程执行(调度策略/调度算法)、如果评价选择的合理性(进程调度的指标)。了解上述细节,也就可以说是了解了进程调度。 进程调度的指标 不同的进程调度算法具有不同的特征,为此需要建立衡量一个算法的基本指标。一般而¨

2021-06-13 05:28:57   

this exceeds GitHub’s file size limit of 100 MB | github大文件上传解决方案 | 内含命令演示图

网上有很多关于Github大文件上传的解决方案,但是没有一个比较完整的详细的步骤,自己在解决问题的时候跟着一些别人的步骤遇到了一些问题。😢整个问题的解决感觉就是,搞定了一个bug,又出现一个bug的感觉。不过问题不大,网上有很多大佬们的解决方案。所以自己整理一遍自己上的步骤,希望可以帮到有需要的人。 🌟突破GitHub的限制,使用 git-lfs(Git Large File Storage) 支持单个文件超过100M ❓Error:this exceeds GitHub’s file size limit of 100 MB 意思是有大文件,提交的文件大小超过了GitHub限制的100M大小。 以下的步骤都是在git bash中敲命令行,网上的解决方案都是这样。如果对命令行的操作不太理解的话建议花几分钟的时间了解一下命令行操作,可以参考我的另一篇博文:git学习笔记,或者其他网上的更详细的教程也可以。📝 文章目录 步骤一步骤二步骤三步骤四步骤五步骤六步骤七步骤八异常错误解决 步骤一 首先,安装Git LFS工具🔨。可以在git官网上下载。GIT LFS 步骤二 安装后把里面的git-lfs.exe放到你要上传的项目文件夹 步骤三 如果你是在push完后被提示需要用LFS文件的话,还需要回退版本❗️❗️❗️这步很重要,网上很多高赞答案都没写❗️❗️如果你还没有push过大文件

2021-06-13 05:28:51   

IDEA [plantUML插件使用教程] 及[下载]

PlantUML下载地址: https://plugins.jetbrains.com/files/7017/50970/plantuml4idea.zip?updateId=50970&pluginId=7017&family=INTELLIJ GraphViz下载地址(官网下载地址很慢下不下来): https://www.onlinedown.net/soft/522290.htm 安装后提示错误: 提示 Dot Executable: null No dot executable found Cannot find Graphviz. You should try @startuml testdot @enduml or java -jar plantuml.jar -testdot 解决办法: 方法1: 指定graphviz的bin目录到系统环境变量; 方法2: 如果还是不行的话, 打开.puml文件, 在PlantUML提示错误的地方点击扳手齿轮按钮打开设置, PlantUML点击设置按钮->Open Setting; 点击Browse...按钮, 选择Graphviz目录下bin文件夹里的dot.exe, 确定即可 来源:https://blog.csdn.net/z284949127/article/details/105377176

2021-06-13 05:28:46   

Java实现杨辉三角(含递归等多种方法)

Hello,大家好,今天跟大家分享杨辉三角的java实现(明天分享Java日历打印,不要错过哟),关注我,每天带你了解Java的更多实际情景案例和源码哦!!! /* 任务:从控制台获取输入的正整数n,打印带有n行的杨辉三角形每个数字保证最少5个宽度,每行前面保证2n个宽度 杨辉三角形的特点: 第 n 行有 n 个数字;每一行的开始和结尾数字都为 1;从第 3 行起,除去每一行的开始和结尾数字,其余每个数都满足以下条件:任意一个数等于上一行同列和上一行前一列的和, 如以下杨辉三角形中第 3 行第 2 列中的 2 等于它上一行同列(第 2 行第 2 列中的 1)和上一行前一列(第 2 行第 1 列中的 1)的和。 以下是有5行的杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 */ 方法一:递归实现(此种方法容易实现,但若执行次数过多,效率非常低) import java.util.Scanner; import static java.lang.System.currentTimeMillis; public class YangHuiTriangle { public static void main(String[] args) { long startTime = System.currentTimeMillis(); Scanner sc = new

2021-06-13 05:28:43   

powerbi乘用车市场案例

一、业务需求 1.知己 了解自己车企的销售情况 2.知彼 2.1了解自己与竞争对手的比较情况–企业对比 2.2了解自己车企下不同属性的车型与市场中同属性车型的销售比较情况–车型对比 二、数据观察 数据全部来自这一张表格,主键为车型+月末,表中的车企字段可分别用来筛选自己的企业和竞争对手的企业,级别价格档车型也需添加筛选器,从各个维度细化进行对比观察。月末为时间字段,可制作时间切片器,筛选不同时间维度,销量和规模作为度量值。 三、设计思路 首先要添加时间切片器。要满足了解自己车企的情况,竞争对手的总体情况,同属性车型在市场中和其他同属性车型的对比情况。为满足以上三点可将仪表盘设计为三个区域,一是挑选自己的公司(假设自己的公司不确定,可以任何企业的角度出发)观察自己公司总体以及各个车型的销量和规模情况,总体情况用两张卡片图展示,分别为销量和规模,各个车型的情况用两个条形图展示,纵坐标为车型,横坐标分别为销量和规模。二是挑选出竞争对手公司或品牌,查看竞争对手在不同时间维度下的总体销量和规模指标,以及竞争对手各个车型的销售指标情况,用折线和柱状组合图体现所有车型的销售情况,横坐标为车型,柱状图纵坐标为销量,折线图纵坐标为规模,可用其他公司和品牌进行筛选,也可以用价位和车类切片器进行控制,查看本公司某一具体车型在市场中的比较情况。三是在相同的车类或价格维度下

2021-06-13 05:28:39