自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 耦合和内聚

耦合耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合 (耦合性从低到高)非直接耦合两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。数据耦合指两个模块之间有调用关系,传递的是简单的数据值(参数)标记耦合指两个模块之间通过参数表(数据结构)传递记录信息。控制耦合指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。外部耦合模块间通过软件之外的环境联结(

2021-10-14 10:52:39 299

原创 call by value和call by reference

call by value按值传递(传递的是具体的值,如基础数据类型),不会改变实际参数的值。call by reference按引用传递(传递的是对象的引用,即对象的存储地址),能改变实际参数的内容。软考例题函数t()和f()的定义如下所示。若调用函数t()时传递给x的值为3,并且调用函数f()。第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t()的返回值为____t(int x){ int a;

2021-10-09 16:22:26 980

原创 网络安全(通信加密、数据加密)

通信加密对称机密(私钥加密)概念指收发双方使用相同密钥的密码,既用于加密,也用于解密,传统的密码都属于私钥密码。优势加密和解密速度快,加密强度高,算法公开。不足实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,无法完成身份认证,不便于应用在网络开放的环境中。算法数据加密标准 DES、三重 DES、国际数据加密算法 IDEA 和 RC5 算法。非对称机密(公钥加密)概念指收发双方使用不同密钥的密码,一个用来加密信息,一个用来解密信息,比私钥出现的晚一些。优势能适应网络的开放

2021-09-28 21:18:22 5976 1

原创 寻址方式(立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址)

概念寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。常用寻址方式立即寻址指令中在操作码字段后面的部分不是通常意义上的操作数地址,而是操作数本身。立即寻址是获取操作数最快的方式直接寻址指令中在操作码字段后面的部分是操作数的地址。直接寻址和立即寻址的区别立即寻址:是把一个“常数”送到指定位置。直接寻址:是把一个“变量”送到指定位置。间接寻址指令中给出的地址是操作数地址的地址。寄存器寻址指定的寄存器中存放着操作

2021-09-28 20:27:15 30642 3

原创 JS数组去重

数组去重,前端面试常见问题,一般是要求手写数组去重方法的代码。方法一:Set(ES6)Set是ES6新的数据结构,类似数组,但成员的值是唯一的,没有重复的值。Array.from实现Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。function unique(arr) { return Array.from(new Set(arr))}…实现(注:js …的使用)var unique = arr => [...new Set.

2021-05-26 10:05:53 105 3

原创 JS数组扁平化(数组降维、数组拍平)

数组扁平化:将一个多维数组转换为一个一维数组Array.prototype.flat()该方法返回一个新的数组,对原数据没有影响flat() 不传参数时,默认扁平化一层flat(参数) 传入一个整数时,这个整数代码想要扁平化的层数传入 <=0 的整数将不进行扁平化,返回原数组如果原数组有空位,Array.prototype.flat() 会跳过空位const test = [1, [2, 3], [4, [5, [6]], 7]]console.log(test);/.

2021-05-25 15:15:36 679 1

转载 JS数组reduce()方法详解

转载于:https://segmentfault.com/a/1190000010731933(ps:感觉真的写得好好)基本概念reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。语法:arr.reduce(callback,[ini

2021-05-25 15:11:13 169 1

转载 js ...的使用

展开语法展开语法(Spread syntax), 可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开;还可以在构造字面量对象时, 将对象表达式按key-value的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: “mdn”} 这种简洁的构造方式)function sum(x, y, z) { return x + y + z;}const numbers = [1, 2, 3];console.log(sum(...numbers));

2021-05-25 10:11:51 140 1

原创 Error creating bean with name ‘dataSource‘ defined in class path resource报错解决方法

在JDBC连接数据库时,出现了一个这样的报错Error creating bean with name ‘dataSource’ defined in class path resource在网上搜了一下解决方法,先总结一下:1.在Application类上面增加注解@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})2.aspactj的jar包没导入进去<dependency> .

2021-04-12 17:12:37 27849 5

原创 Vuex的使用

什么是VuexVuex是Vue配套的公共数据管理工具,我们可以将共享的数据保存到vuex中,方便整个程序中的任何组件都可以获取和修改vuex中保存的公共数据。载地址,vuex.js在dist目录中。注意:导入Vuex之前必须先导入VueVuex的使用1.创建Vuex对象 // 创建vuex对象const store = new Vuex.Store({ //这里的state就相当于组件中的data,就是专门用于保存共享数据的 state: { msg:"he

2021-03-09 21:07:07 97 1

原创 Vue脚手架

Vue脚手架的基本用法Vue脚手架用于快速生成Vue项目基础架构,官网使用步骤1.安装3.x版本的Vue脚手架:npm install -g @vue/cli基于3.x版本的脚手架创建vue项目基于交互式命令行的方式,创建 新版vue项目vue create 项目名 (该方式稍微难以操作,了解即可)基于图形化界面的方式,创建 新版vue项目vue ui顺序:点击创建–>选择项目创建的路径–>点击在此创建新项目–>输入项目名–>Git中填写初

2021-03-07 16:28:28 104 2

原创 Vue前端路由

路由的基本概念与原理路由路由是一个广义和抽象的概念,路由的本质就是对应关系在开发中,路由分为:后端路由前端路由后端路由概念:根据不同的用户URL请求,返回不同的内容本质:URL请求地址与服务器资源之间的对应关系SPA(Single Page Application)后端渲染(存在性能问题比如:多次交互频繁刷新)Ajax前端渲染(前端渲染提高性能,但不支持浏览器的前进后退操作)SPA单页面应用程序:整个网站只有一个页面,内容的变化通过Ajax局部更新实现,同时支持浏览器地

2021-02-26 11:38:25 137 1

原创 async/await用法

接口调用-async/await用法async/await是ES7引入的新语法,可以更加方便的进行异步操作async关键字用于函数上(async函数的返回值是Promise实例对象)await关键字用于async函数当中(await可以得到异步的结果)async function queryData(id){ //await 后面要跟一个promise实例对象 const ret = await axios.get('/data'); return ret; }q

2021-02-20 12:19:56 104 2

原创 接口调用-axios用法

接口调用-axios用法axios是一个基于Promise用于浏览器和node.js的HTTP客户端它具有一下特征:支持浏览器和node.js支持promise能拦截请求和响应自动转换JSON数据axios的基本用法axios官网下载,解压后在dist文件夹中找到js引入到所需项目中。基本语法axios.get('地址') .then(参数=>{ //data属性名称是固定的,用于获取后台响应数据 console.log(参

2021-02-19 13:50:30 538

原创 接口调用-fetch用法

fetch概述基本特性更加简单的数据获取方式,功能更强大,更灵活,可以看做是xhr的升级版基于Promise实现语法结构fetch(url).then(fn2) .then(fn3) ... .catch(fn)fetch的基本用法fetch('/abc').then(data=>{ //text()方法属于fetchAPI的一部分,返回一个Promise实例对象,用于获取后台返回的数据 return

2021-02-17 17:25:20 357

原创 Vue前端交互模式、Promise用法(回调地狱)

前端交互模式接口调用方式原生ajax基于jQuery的ajaxfetchaxiosURL地址格式传统形式的URL格式:schema://host:port/path?query#frahmentschema:协议。例如http、https、ftp等(必需)host:域名或者IP地址(必需)port:端口,http默认端口80,可以省略path:路径,例如/abc/a/b/c(虚拟路径,区分不同资源)query:查询参数,例如uname=tkrj&age=19fr

2021-02-17 11:08:30 3573 7

原创 Vue组件化开发

组件化开发思想组件化规范:Web Components问题:尽可能多的重用代码自定义组件的方式不太容易(html、css和js)多次使用组件可能导致冲突Web Components通过创建封装好功能的定制元素(自定义标签)解决上述问题Vue 实现了部分上述规范组件注册Vue.component(组件名称,{ data:组件数据, template:组件模板内容})例子:计算按钮点击次数Vue.component('button-counter',{ da

2021-02-05 16:56:41 235 2

原创 Vue常用特征

Vue常用特性表单操作input 单行文本textarea 多行文本select 下拉多项radio 单选框checkbox 多选框表单域修饰符number:转化为数值(输入框输入为字符串,该修饰符自动将输入字符串转为数值)<input type="text" v-model.number = "age">trim:去掉开始和结尾的空格<input type="text" v-model.trim = "info">lazy:将默认input

2021-02-01 12:35:08 173 2

原创 Vue基本用法、Vue模板语法

Vue概述vue:渐进式JavaScript框架渐进式:声明式渲染 --> 组件系统 --> 客户端路由 --> 集中式状态管理 --> 项目构建vue官网优点:(官方)易用:熟悉HTML、CSS、JavaScript知识后,可快速上手vue灵活:在一个库和一套完整框架之间自如伸缩高效:20kB运行大小,超快虚拟DOMVue基本使用实例参数分析el:元素的挂载位置(值可以是CSS选择器或者DOM元素)data:模型数据(值是一个对象)methods:

2021-01-28 17:51:46 367 2

原创 JS执行机制——同步和异步

js是单线程JavaScript语言的一大特点就是单线程,即同一时间只能做一件事。这是因为JS这门脚本语言诞生的使命所致————JS是为处理页面中用户的交互,及操作DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行,应先添加后删除。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是:如果JS执行时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。同步和异步为了解决加载阻塞的问题,利用多核CPU的计算能力,HTML

2021-01-23 21:43:47 154

原创 ES6新增——解构赋值

解构赋值解构:分解数据结构 || 赋值:为变量赋值ES6中允许从数组中提取值,按照对应位置,对变量赋值。对象也可以实现解构。数组解构数组解构允许我们按照一一对应的关系从数组中提取值然后将值赋值给变量let arr = [1,2,3];let [a, b, c] = arr;console.log(a);//输出1console.log(b);//输出2console.log(c);//输出3如果解构不成功,变量值为undefinedlet [a] = [];console.

2021-01-23 16:55:13 100

原创 ES6中新增——let关键字、const关键字

let关键字ES6中新增的用于声明变量的关键字作用:可以防止循环变量变成全局变量let声明的变量只在所处于的块级有效(一对大括号为一个块级作用域)if (true) { let a = 7;}//在块级以外访问变量aconsole.log(a);结果为: a is not defined使用let关键字声明的变量才有块级作用域,使用var声明的变量不具有块级作用域特性let声明的变量不存在变量提升console.log(a);let a = 7;结果为:

2021-01-23 12:04:45 192

原创 正则表达式

什么是正则表达式正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JS中,正则表达式也是对象。正则表达式的作用表单验证:用户表单只能输入英文字母、数字或者下划线,昵称输入框可以输入中文(匹配)过滤敏感词:过滤掉页面内容中一些敏感词(替换)获取指定内容:从字符串中获取我们想要的特定部分(提取)正则表达式的特点优点灵活性、逻辑性和功能性非常强。可以快速地用极简单的方式达到对字符串的复杂控制。缺点对于新手来说,比较晦涩难懂,难以记住。实

2021-01-22 17:45:22 69

原创 什么是闭包、闭包的作用

闭包变量作用域变量根据作用域的不同分为两种:全局变量和局部变量函数内部可以使用全局变量。函数外部不可以使用局部变量。当函数执行完毕,本作用域内的局部变量会销毁。什么是闭包闭包(closure)指有权访问另一个函数作用域中变量的函数。 ————《JavaScript高级程序设计》简单理解:闭包是一个函数 (一个作用域可以访问另外一个函数内部的局部变量)例子:一个简单的闭包//fun这个函数作用域 访问了另外一个函数 fn 里面的局部变量 numfunction fn() {

2021-01-21 17:35:31 494

原创 JS改变函数内this指向的三种方法call()、apply()、bind()

改变函数内this指向this的指向问题JS提供三种方法:call()call(this指向,参数…)可以调用函数可以改变函数内部this指向应用:可以实现继承//将fn的this指向tvar t = { name: 'tracy'};function fn(a, b) { console.log(a + b);};fn.call(t, 1, 2);//实现继承function Fa(uname, age, sex) { this.uname =

2021-01-21 16:28:51 763 1

原创 高阶函数

什么是高阶函数高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。接收函数作为参数function fn(callback){ callback&&callback();}fn(function(){alert('hello')});将函数作为返回值输出function fn(){ return function(){};}fn();函数也是一种数据类型,也能作为参数,传递给另外一个参数使用。最典型的就是作为回调函数.

2021-01-21 12:42:37 56

原创 严格模式

什么是严格模式JavaScript除了提供正常模式外,还提供了严格模式(strict mood)。ES5的严格模式是采用具有限制性JS变体的一种方式,即在严格的条件下运行JS代码。浏览器支持:IE10以上版本的浏览器(旧版本会忽略)严格模式对正常JS语义的更改:消除了JS语法的一些不合理、不严谨的地方,减少了一些怪异行为。消除代码运行的一些不安全之处,保证代码运行的安全。提高编译器效率,增加运行速度。禁用了在ECMAScript的未来版本中可能会定义的一些语法,为未来新版本的JS做好铺垫

2021-01-21 12:27:15 188

原创 JS函数中this的指向

this的指向问题函数的不同调用方式决定了this的指向不同调用方法this指向普通函数window对象方法该方法所属对象构造函数实例对象,原型对象里面方法的this也指向实例对象事件绑定绑定事件对象定时器函数window立即执行函数window1.普通函数 指向windowfunction fn() { console.log('普通函数的this指向' + this);}fn();运行结果:普通函数的this指向

2021-01-20 18:49:26 130

原创 JavaScript函数的定义与调用

函数的定义与调用函数定义的方式所有函数其实都是function实例函数也属于对象1.自定义函数(命名函数)function fn(){};2.函数表达式(匿名函数)var fun = function(){};3.利用new Function(‘参数1’,‘参数2’,‘函数体’)var f = new Function('a','b','console.log(a+b)');f(1,2);函数的调用方式1.普通函数function fn() { console.l

2021-01-20 18:24:32 117

原创 PS三种切图方法+Cutterman(安装教程、基本使用)

常见的图片格式jpg图像格式JPGE(.JPG)对色彩的信息保留较好,高清,颜色较多,我们产品类的图片经常用jpg格式gif图像格式GIF格式最多只能储存256色,所以常用来显示简单图形及字体,但是可以保存透明背景和动画效果,实际经常用于一些图片小动画效果。png图像格式PNG图像格式是一种新兴的网络图形格式,结合了GIF和JPGE的优点,具有存储形式丰富的特点,能够保存透明背景,如果想要切成透明的图片,请选择png格式。PSD图像格式PSD格式是Photoshop的专用格式,

2020-12-06 11:19:02 10804 2

原创 冒泡排序、插入排序、选择排序(java实现)

冒泡排序冒泡排序是重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。冒泡排序的最坏时间复杂度为O(n²)推荐菜鸟教程的动图public int[] sortArray(int[] a){ for(int i =0;i<a.length-1;i++){ for (int j=0;j<a.length-1-i;j++){

2020-12-01 18:30:29 95

原创 UI设计

web标准化布局原理把网页看成多个网格先有行再有列(从上到下)先做容器再做内容(从外到内)设计维度版式、色彩、图片、字体、段落、细节界面设计流程版式:分析需求内容,绘制草图制作:优化版式结构、填充内容、样式设计输出:优化、切图、输出需求—策划—原型图—设计图—制作—上线发布色彩规范主色辅色文字色色彩的运用色彩三要素:色相、明度、纯度对比色、互补色、同类色文字规范字体的选择衬线(粗细不一)无衬线(粗细一致)字体的属性字号:磅、点、像素(px)粗

2020-11-30 22:59:12 78

原创 进程与线程、内核

线程机制与事件机制进程与线程进程(process)程序的一次执行,它占有一片独有的内存空间可以通过Windows任务管理器查看进程线程(thread)是进程内的一个独立执行单位是程序执行的一个完整流程是CPU的最小的调度单元图解相关知识应用程序必须运行在某个进程的某个线程上一个进程中至少有一个运行的线程:主线程,进程启动后自动创建的一个进程中也可以同时运行多个线程,我们会说程序是多线程运行的一个进程内的数据可以供其中的多个线程直接共享多个进程之间的数据是不能直接

2020-11-29 13:38:08 1523 3

原创 JS高级(笔记2)—— 面向对象高级

面向对象高级对象创建模式Object构造函数模式套路:先创建空Object对象,再动态添加属性/方法适用场景:起始时不确定对象的内部数据问题:语句太多对象字面量模式套路:使用{}创建对象,同时指定属性/方法适用场景:起始时对象内部数据是确定的问题:如果创建多个对象,有重复代码工厂模式套路:通过工厂函数动态创建对象并返回适用场景:需要创建多个对象问题:对象没有一个具体的类型,都是Object类型自定义构造函数模式套路:自定义构造函数,通过new创建对象适用

2020-11-29 13:35:11 367 1

原创 原型+执行上下文+作用域+闭包+内存溢出/泄漏

函数高级原型与原型链原型(prototype)函数的protype属性每个函数都有一个protype属性,默认指向一个object空对象(即原型对象)原型对象中有一个属性constructor,指向函数对象给原型对象添加属性(一般是方法)函数所有实例对象自动拥有原型中的属性(方法)显式原型与隐式原型每个函数function都有一个prototype,即是显式原型每个实例对象都有一个proto,可称为隐式原型对象的隐式原型的值为其对应构造函数的显式原型的值总结

2020-11-27 14:30:02 133

原创 数据类型、变量、内存、对象、函数

数据类型分类基本(值)类型Number任意数值String任意字符串Booleantrue/falseundefinedundefinednullnull对象(引用)类型Object任意对象Function特别的对象(可以执行)Array特别对象(内部数据有序/数据下标)判断typeof数值/字符串/布尔值/undefined/function不能区别:null与O

2020-11-26 15:06:00 164

原创 二叉树层序遍历+深度计算+节点计算、叶子节点计算

二叉树层序遍历public void levelTraversal(TreeNode root) { //存放节点值输出 ArraryList<Integer> list = new ArrayList<Integer>(); if(root==null) return; //队列先进先出 Queue<TreeNode> queue = new LinkedList<TreeNode>();

2020-11-25 15:08:31 1174 3

原创 二叉树前序、中序、后序(递归与非递归遍历)

二叉树节点public class TreeNode { //节点值 public int data; //左子节点 public TreeNode left; //右子节点 public TreeNode right; public TreeNode(int data) { this.data = data; }}遍历前序:根–>左–>右中序:左–>根–>右后序:左–>右–&gt

2020-11-25 14:14:23 140

原创 HTTP状态码

HTTP状态码分类常见状态码分类1** 信息,服务器收到请求,需要请求者继续执行操作2** 成功,操作被成功接收并处理3** 重定向,需要进一步的操作以完成请求4** 客户端错误,请求包含语法错误或无法完成请求5** 服务器错误,服务器在处理请求的过程中发生了错误常见状态码200-请求成功。一般用于Get与Post请求301-资源(网页等)被永久转移到其它URL404-请求的资源(网页等)不存在405-客户端请求中的方法被禁止406-服务器无法根据客户端请求的内容特性完成请求500

2020-11-12 22:34:01 50

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除