- 博客(49)
- 问答 (1)
- 收藏
- 关注
原创 Jenkins安装、配置、自动化构建前(nodejs)后端(maven)项目
全局工具配置:manage Jenkins --> Global Tool Configuration。linux服务器需要配置maven环境、nodejs环境、npm环境,下载对应的包并安装。配置maven:/usr/local/soft/apache-maven-3.5.4。Jenkins安装插件:manage jenkins --> plugins。配置jdk:/usr/local/jdk1.8.0_181。【jenkins安装(rpm):(先看7)】【Jenkins卸载】
2023-08-02 14:50:14 1135
原创 JSX语法、函数式组件
JSX语法、函数式组件1.v-if、v-forprops: ['items'],render: function (createElement) { if (this.items.length) { return createElement('ul', this.items.map(function (item) { return createElement('li', item.name) })) } else { return createElemen
2021-12-22 17:43:35 1031
原创 密码算法的前世今生
密码算法的前世今生说到密码,我们第一个想到的就是登陆账户的密码,但是从密码学的角度来看,这种根本就不算合格的密码。为什么呢,因为我们的账户密码,是依靠隐蔽性来达到加密作用:密码藏在我心里,你不知道,所以你登不上我的账户。然而密码技术认为,「保密」信息总有一天会被扒出来,所以加密算法不应该依靠「保密」来保证机密性,而应该做到:即便知道了加密算法,依然无计可施。说的魔幻一点就是,告诉你我的密码,你依然不知道我的密码。最玄学的就是 Diffie-Hellman 密钥交换算法,我当初就觉得很惊奇,两个人当着
2021-10-18 15:44:39 357
原创 组件递归引用问题
描述:vue中A组件引用了B组件,B组件也引用了A组件,会出现错误Unknown custom element: <disaster-point> - did you register the component correctly? For recursive components, make sure to provide the "name" option.
2021-06-15 20:26:34 239
原创 http-server+nodejscore部署前端vue项目
// 1.将dist目录拷贝至任意目录例如 /opt/dist // 2.使用dockerFile生成镜像,(需要拉取corenode镜像,需要服务器有外网连接。) cd /opt/dist docker build -t wechat:1.0 . // 3. 镜像构建成功,查看镜像 docker images // 4. 启动一个容器,将容器中的/dist目录挂载到本地的/opt/dist目录,方便后续更新文件及系统。8081为最终的系统访问地址,777为容器内部http-ser.
2021-06-02 17:38:03 236
原创 RSA+AES加密
加密设计:RSA + AES1.接收方创建RSA秘钥对2.发送RSA公钥给发送方,自己保留RSA私钥3.发送方创建AES密钥,加密待传送的明文,之后用RSA公钥加密该密钥4.RSA公钥加密AES的密钥+AES密钥加密明文的密文----通过Internet发给---->接收方5.接收方用RSA私钥解密加密的密钥,之后再用解密后的AES密钥解密数据密文,得到明文。## 【接收方使用得到的解密后AES密钥对token进行加密,返回到客户端】RSA加密算法是一种非对称加密算法。R.
2021-06-02 17:34:02 1079
原创 too_complex_to_determinize_exception
ElasticSearch搜索,输入errrrrrrrrrrrrrrrrrrrrr等内容会报错too_complex_to_determinize_exception报错原因是因为查询所携带的text文本过长,导致自动机模型过多,超过10000个"caused_by": { "type": "too_complex_to_determinize_exception", "reason": "too_complex_to_determinize_exc
2021-05-21 11:22:06 1343 1
原创 js,数组合并的方法+数组添加元素的方法
一、concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。const array1 = ['a', 'b', 'c'];const array2 = ['a', 'e', 'f'];const array3 = ['a', 'a', 'a'];const array4 = array1.concat(array2,array3);console.log(array4); // ["a", "b", "c", "a", "e", "f", "a", "a", "a
2021-04-30 15:13:40 703 1
原创 Hash冲突的解决方法
一、前言哈希函数:在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数 哈希表:有限、连续 hash:译为,使......混乱。(可理解为通过哈希函数打乱数据的存储位置) 便捷性:按关键字直接存取元素 冲突的产生:不同的关键字可能获得相同的hash地址,即 key1≠key2,但是f(key1)=f(key2)...(key, value) --------将元素value存储到地址为f(key)的单元。eg.HashMap使用的链地址法处理哈希冲突
2021-04-01 17:31:09 136
原创 vue钩子函数生命周期
1、创建期间的生命周期函数beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性created:实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板。我们可以在这里进行Ajax请求。beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示。(mounted之后,表示真实DOM渲染完了,可以操作DOM了)2、运
2021-03-11 16:11:46 85
原创 vue组件的定义和注册
一、全局组件的定义和注册写法一:使用Vue.extend方法定义组件,使用Vue.component方法注册组件。<body> <div id="app"> <!-- 如果要使用组件,直接把组件的名称,以 HTML 标签的形式,引入到页面中,即可 --> <account> </account> </div> <script> //第一步:.
2021-03-02 09:36:53 254
原创 vue自定义指令
0.自定义指令使用方法<template> <div> <input v-color="'green'"> <span v-fontweight="600">私有指令</span> </div></template>1.自定义全局指令Vue.directive('color', { bind: function (el, binding) { // 每当指令绑定到元素上的时候,.
2021-02-25 11:47:42 289 1
原创 vue---滚动翻页
vue—滚动翻页v-infinite-scroll的回调函数不可以写参数(如:searchEquip(true)),否则会无限查询。
2021-01-19 19:23:08 653
原创 equals和==的区别
一、 存储结构 栈-------常量池------堆二、解释 equals:判断值是否相等 ==:判断是否是同一引用三、举例 String a = new String("abcd"); String b = new String("abcd"); String c = "abcd"; String d = "abcd";a == b // false(非同一对象,在堆中存储了两个对象)a.equals(b) // true(物理地址不同,值相同)
2020-09-15 18:52:36 72
原创 java的stream流方法
一、流程:stream of elements -> filter -> sorted -> map -> collect二、java格式List<Integer> transactionsIds = widgets.stream() .filter(b -> b.getColor() == RED) .sorted((x,y) -> x.getWeight() - y.getWeight())
2020-09-15 18:47:39 225
原创 vue动画(+animation、@keyframes的使用)
<transition name="fade"> <div>...</div></transition>.fade-enter-active { animation: fadeIn 0.4s; // name duration}.fade-leave-active { animation: fadeOut 0.4s;}@keyframes fadeIn { // form起始时,等同于0%,to到达
2020-08-24 19:16:38 1068
原创 vue的props(数据类型为Array、Object)
vue的props(数据类型为Array、Object)处理注意在 JavaScript 中对象和数组是通过引用传入的;对于一个数组(或对象)类型的 prop 来说,在子组件中改变这个数组(或对象)本身将会影响到父组件的状态。所以不可以直接操作数组(或对象)类型prop。 export default { props: { fileList: Array // 接收父组件传来的参数 }, data () { return { list: []
2020-08-12 15:57:27 5796
原创 scrollTop属性
scrollTop:可读可写 scrollTop是一个整数:元素不能被滚动OR设置scrollTop值小于0,则scrollTop值为0 设置超出这个容器的可滚动值 ,则scrollTop值为容器最大值判断元素是否滚动到底:e.scrollHeight - e.scrollTop === e.clientHeight返回顶部:element.scrollTop = 0 ...
2020-08-11 19:04:03 3604
原创 maven、gradle、nexus理解
易混淆:maven和nexus?maven是一个工具(构建工具、依赖管理工具、项目信息管理工具)maven将项目需要的构件(已经下载下来的+未下载的)引入到项目中统一存储到maven本地仓库中maven仓库:本地仓库+远程仓库(中央仓库、私服【如nexus私服】、其他远程仓库)公司内网中的nexus,是maven远程仓库的一种gradle拉取的构件存储到了?存储到了缓存中:C:\Users\xxx.gradle\caches\modules-2\files-2.1 【不可更改】和ma
2020-08-11 16:33:05 234
原创 sass占位符%选择器的使用
%sfqy-basic { // 编译后不会出现在css文件中 float: left; margin-top: 15px; width: 10px; height: 10px;}.sfqy-icon { @extend %sfqy-basic; // @extend继承 background-color: #b1b1b1;}.sfqy-icon-enable { @extend %sfqy-basic; background-color: #2edb2e;}
2020-08-11 15:55:43 567
原创 JS数组、对象(方法汇总)
JS常用方法汇总数组:1. filter() filter() 方法创建一个新的数组(不改变原始数组) ,新数组中的元素是通过检查指定数组中符合条件的所有元素。var ages = [32, 33, 16, 40]function checkAdult(age) { return age >= 18}function myFunction() { console.log(ages.filter(checkAdult)) // 输出 [32,33,40]}2. sp
2020-08-10 20:11:23 304
原创 JS身份证号码校验
validateCardId (id) { // 1 "验证通过!", 0 //校验不通过 let format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0...
2020-06-01 09:32:51 365
原创 正则表达式
概念理解 正则表达式(Regluar Expressions):通常进行字符串操作(匹配、查找替换、分割)1)模式匹配:验证email地址、手机号码等格式是否正确2)查找与替换:判断给定字符串中是否包含 满足正则表达式所指定的匹配规则的子串,并替换3)分割:查到后,将匹配到的字符串作为分隔符进行字符串分割 基础知识 ^和$分别指字符串的开始与结束 [0...
2020-04-02 20:33:53 118
原创 在vue中使用requestAnimationFrame()实现定时轮询任务
常见的实现定时轮询的方式主要有setInterval,setTimeOut,这里我们使用性能较好的window.requestAnimationFrame。结合EventBus全站的定时任务都使用一个定时任务流,实现流程如下:初始化EventBus// main.jsVue.prototype.$EventBus = new Vue()app.vue全局定时流借助requestA...
2020-03-06 12:00:28 5125
原创 win+【key】快捷键
记录一下键盘上win+key快捷键作用== 以下为按下windows键后按下的按键 ==windows键 + Y、O、J、Z、C、N没有作用Q、S:query搜索W:window窗口(全屏截屏绘图)E:explore探索(资源管理器)R:run运行T:tapU、I:(打开设置界面)P:projection投影A:打开新消息框D:delete将显示的窗口都隐藏,返回桌面...
2020-02-12 16:17:45 363
原创 springboot maven构建 增加profile支持
描述: 为方便切换环境打包部署,增加profile支持。(一)pom.xml增加profile配置。(这里我们只增加了两种环境,dev与prod) <profiles> <!--application-dev.yml--> <profile> <id>dev</id> <properties> ...
2019-11-19 19:18:40 205
原创 使用配置文件实现vue多环境(dev、prod)切换
体验过后端的profile后,再也不怕开发和现场部署修改切换配置啦。一个命令就搞定。在前端vue(webpack脚手架模式)开发中,我们是否也可以使用同样的思路实现下配置信息的分环境化?只需以下几步即可。(一)新建以下三个文件/utils/global.js;/static/config/config-development.json;/static/config/config-pro...
2019-11-19 18:51:49 3575
原创 nginx前后台分离打包部署项目(nodejs、springboot)
@[TOC]目录#1. 为什么要用nginx进行前后台分离? a. 无需做前后台集成打包,当需要对前端代码进行迭代部署时,仅需要对特定目录下的前端代码进行替换即可,便于维护部署; b. 解决跨域问题,如我在192.168.1.20上部署的前端代码,要向192.168.1.21上部署的后台发送请求,可以正常访问(无论内网跨域还是外网跨域)#2. nginx发布...
2019-11-18 12:52:31 1515
原创 windows环境本地安装Elasticsearch(5.6.0)和kibana(5.6.0)
下载文件到本地并解压:链接:https://pan.baidu.com/s/1lbULKiN2gwHqRLJRUe_c6A 提取码:jhq6 2. 安装Elasticsearch:双击此文件进行安装3. 安装Kibana:双击此文件进行安装4. 浏览器输入http://localhost:5601/可进入Kibana管理界面【步骤2中:本机已经安...
2019-08-26 20:29:30 431
原创 TCP的三次握手和四次挥手
一、一次握手:就像TCP协议中,服务器对新的客户端都会置于Listen(等待响应)状态。 客户端向服务器发送报文,发出请求SYN=1,同时选择一个初始序号seq=x。这时,客户端的状态更改为SYN-SENT(synchronization_sent同步已发送)状态,等待服务器回应。(SYN是synchronization同步的简称,seq为sequcence序号的缩写。)二、二次握手:...
2019-06-19 17:08:28 156
原创 单例(件)模式
1.哪些地方能用到单件模式?【有些对象我们只需要一个】线程池、缓存、对话框、处理偏好设置、注册表、日志、充当打印机和显卡的驱动程序的对象。。。2.为什么不用Java静态变量?java静态变量在编译的时候就创建了;而单件则在需要的时候随时使用singleton.getInstance()来创建实例【延迟实例化】。3.定义单件模式确保一个类只有一个实例,并提供一个全局的访问点。...
2019-03-07 14:44:51 182
原创 浅谈工厂模式
1. 什么是依赖?当你实例化一个对象时,就是在依赖它的具体类2. 依赖倒置原则:要依赖抽象,不要依赖具体不让高层组件依赖低层组件,而且不管高层或低层,都应该依赖于抽象【例如】PizzaStore是高层组件、Pizza实现是低层组件,在高层组件中不要实例化Pizza对象, 而是创建一个Pizza抽象类,高层组件依赖于这个抽象类,低层组件“Pizza实...
2019-03-06 16:53:31 74
原创 浅谈装饰者模式
一、核心点1.运行时扩展 要远比 编译时继承 威力大2.将父类的功能抽象成接口,子类 extends 父类并 implements 功能接口3.类应对扩展开放,对修改关闭4.用装饰过的对象代替原有的对象5.继承有两个作用:继承行为+类型匹配6.继承是父类的功能传给子类7.组合:获得的新行为并非是继承【编译】得来,而是由组合对象得来的【运行时才获得】。二、概念 ...
2019-02-26 17:45:07 126
原创 策咯模式
概念: 指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户(不变的部分在原类中,变化的部分抽出来放在策咯类中)。 2.形象例子: 例如一条狗见到 A 会叫一声,见到 B 会叫两声,见到 C 会叫三声。策咯模式就是将“一声”、“两声”、“...
2019-02-26 16:53:44 136
空空如也
双击复选框时会触发上层@dblclick方法?
2021-06-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人