对微服务的理解
微服务是什么? 微服务(Microservices)是一种架构风格,它将应用程序作为一套小的服务开发和部署,每个服务运行在其独立的进程中,服务之间通过定义良好的轻量级机制(通常是 HTTP REST 或消息传递)进行通信。这些服务围绕业务功能构建,可以独立部署、扩展甚至用不同的编程语言编写,每个服务都维护自己的数据存储。
单体软件要理解微服务,首先需要理解软件架构的演变。
早期的软件,所有功能都写在一起,这称为单体架构(monolithic software)。
整个软件就是单一的整体,彷佛一体化的机器。
可以想到,软件的功能越多,单体架构就会越复杂,很多缺点也随之暴露出来。
(1)所有功能耦合在一起,互相影响,最终难以管理。
(2)哪怕只修改一行代码,整个软件就要重新构建和部署,成本非常高。
(3)因为软件做成了一个整体,不可能每个功能单独开发和测试,只能整体开发和测试,导致必须采用瀑布式开发模型。
以上三个原因的详细分析,可以参考我以前的文章《软件工程的最大难题》。
总之,单体架构的大型软件,不仅开发速度慢,而且会形成难以维护和升级的复杂代码,成为程序员的沉重负担。
面 ...
巩固基础CSS知识点
标准(W3C)盒子模型:width = 内容宽度(content) + border + padding + margin
低版本IE盒子模型: width = 内容宽度(content + border + padding)+ margin
图片展示:
区别: 标准盒子模型盒子的height和width是content(内容)的宽高,而IE盒子模型盒子的宽高则包括content+padding+border部分。
2.几种解决IE6存在的bug的方法
由float引起的双边距的问题,使用display解决;
由float引起的3像素问题,使用display: inline -3px;
使用正确的书写顺序link visited hover active,解决超链接hover点击失效问题;
对于IE 的z-index问题,通过给父元素增加position: relative解决;
使用!important解决Min-height最小高度问题;
使用iframe解决select在IE6下的覆盖问题;
使用over: hidden, zoom: 0.08, line ...
JavaScript数组常用方法总结
JavaScript数组方法的总结本文主要介绍常用的数组方法、字符串方法、遍历方法、高阶函数、正则表达式以及相关数学知识。
常用方法push()在尾部追加,类似于压栈,原数组会改变。
123const arr = [1, 2, 3]arr.push(8);console.log(arr) // [1, 2, 3, 8]
push()方法返回的是数组的长度12let arr=[1,2]return console.log(arr.push(1111))//输出3
pop()在尾部弹出,类似于出栈,原数组会变。数组的 push & pop 可以模拟常见数据结构:栈。
12345678910111213const arr = [1, 2, 3]const popVal = arr.pop()console.log(popVal) // 3console.log(arr) // [1, 2]// 数组模拟常见数据结构之一:栈const stack = [0, 1]stack.push(2) // 压栈console.log(stack) // [0, 1, 2]const popV ...
国家电网计算机类笔记
数据结构与算法数据结构基本概念线性表栈和队列数组、数组的压缩存储与字符串树和二叉树图查找内排序算法设计与分析
数据库系统数据库基本概念关系数据库基本理论数据库完整性关系数据库标准语言 SQL数据库对象数据库安全并发控制备份和恢复数据库设计与实现
计算机网络计算机网络体系结构物理层数据链路层网络层传输层应用层网络管理与网络安全无线网络与移动网络
操作系统操作系统基础进程与线程管理内存管理文件管理输入输出管理操作系统安全与保护
计算机组成与体系结构计算机系统基础数据的机器级表示和运算多级层次的存储系统指令系统中央处理器总线与输入输出系统并行分布式处理系统
软件设计与开发软件工程基本概念软件开发过程管理结构化分析系统设计系统开发软件测试系统维护软件管理
信息新技术云计算基础(云计算基本概念,虚拟化、容器化、分布式计算、分布式存储、智能云等)物联网基础(物联网基本概念,传感技术、传感网络、常见协议及标准等)大数据基础(大数据基本概念,数据采集、数据预处理、数据分析、数据模型、数据挖掘、可视化等)人工智能基础(人工智能基本概念,机器学习、NLP大模型等)
银行
中行特色知识(必拿分)服务热线:95566成立时间:1912年2月使命:融通世界,造福社会愿景:建设全球一流现代银行集团价值观:卓越服务 稳健创造 开放包容 协同共赢发展战略:比较优势,合理分配资源,不断推出差别性的产品与服务;调整与改进内部运行机制,完善风险管理体系,使信贷决策更加科学与透明;加强教育和培训,培育中行文化建立严格的目标责任机制以及服务于这一制度的激励约束机制战略发展格局:以境内商业银行为主体、全球化综合化为两翼行业地位:中国银行的前身是中国第一家国家银行–户部银行于1905年8月在北京成立八大金融:跨境金融、消科技金融、绿色金融、普惠金融、费金融、财富金融、供应链金融、县域金融 -
nodejs面试笔记
nodejs面试笔记在 Node.js 中,“Node”这个词可以从多个角度理解。Node.js 是一个基于 JavaScript 的运行时环境,它使得开发者可以使用 JavaScript 来编写服务器端的应用程序,而不仅仅局限于在浏览器中使用 JavaScript。
1. Node.js 是什么?Node.js 是一个基于 Chrome V8 JavaScript 引擎 构建的运行时环境,用于构建服务器端和网络应用。它由 Ryan Dahl 于 2009 年创建,并且极大地简化了使用 JavaScript 进行后端开发的过程。
Node.js 的核心特点是 非阻塞(non-blocking)和 事件驱动(event-driven),这使得它非常适合构建高性能、高并发的应用,如网络服务器、实时应用程序等。
2. Node.js 的工作原理Node.js 是单线程的,但通过异步 I/O 操作可以处理大量的并发请求。它使用了 事件循环(event loop)和 回调函数(callback)的方式来处理异步任务。
事件驱动:Node.js 内部基于事件循环模型,所有 I/ ...
小米
Vue 虚拟DOM原理Vue 的虚拟 DOM(Virtual DOM)是 Vue 框架在底层用于优化视图更新的技术之一。虚拟 DOM 的核心思想是通过 JavaScript 对象(虚拟节点,简称 vnode)来表示真实 DOM 的结构,并通过 diff 算法比较前后的虚拟 DOM,找到需要更新的部分,再将这些部分更新到真实 DOM 中。这种方式大大减少了不必要的 DOM 操作,提高了性能。
Vue 虚拟 DOM 的工作原理Vue 的虚拟 DOM 实现遵循以下主要步骤:
1. 创建虚拟 DOM当 Vue 组件的状态或数据发生变化时,Vue 会重新调用组件的渲染函数(render),并生成一个虚拟 DOM 树。这个虚拟 DOM 树是用 JavaScript 对象表示的,类似于下面的结构:
12345678const vnode = { tag: 'div', props: { id: 'app' }, children: [ { tag: 'h1', children: ...
华为前端面试合集
笔试第1题铺设光缆
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758from collections import dequeimport sysdef calculate_min_execution_time(): # 读取任务数量 N N = int(sys.stdin.readline()) # 读取每个任务的执行时间,times[i] 表示任务 i 的执行时间 times = list(map(int, sys.stdin.readline().split())) # 初始化存储依赖关系的列表 dependencies = [] for _ in range(N): line = sys.stdin.readline().strip() # 如果输入为 -1,表示该任务没有依赖,加入空列表 if line == ...
数字
自我介绍
2.介绍一下实习项目背景
3.websocket在项目中起到的作用,如何用antv做的动态图
4.讲一下http和https的区别,以及加密过程
5.讲一下http1和http1.1以及http2的区别
6.讲一下协商缓存和强缓存
7.讲一下localstoreage和sessionstorage和cookie
8.讲一下事件循环机制
9.讲一下promise
10.用过哪些promise(all,race),面试官拓展了一个处理并发的promise方法
11.事件循环
说一下数组的方法
13.数组去重有哪些思路(set,fliter+indexof,reduce)
14.用reduce实现数组求和以及扁平化
16.判断数据类型的方法
17.原型链有了解吗(实现链式调用)
说一下vue2和vue3响应式的区别
19.为什么有proxy,vue2还要用object.defineProperty(没了解过)
20.说一下react的钩子
21.你觉得hooks可以写在条件语句里吗,为什么
22.react组件间通信方式
23.react全局管理工具除了redux(mobx和rer ...
无题
58vue和react的性能优化vue按需加载引入
加载
避免深度监听
使用key保持组件唯一性
减少计算属性的依赖
keep-alive
reactreact.memo:高阶组件
useCallback和useMemo:缓存函数和计算结果
分片渲染(Code-Splitting):通过 React.lazy 和 Suspense 实现按需加载,减少主包大小,加快首屏加载速度。
使用pureComponent
**适当使用 shouldComponentUpdate**:在类组件中手动控制组件是否需要更新,避免不必要的重新渲染。
避免不必要的 Reconciliation:确保组件中不进行无意义的状态更新,避免影响 React 的虚拟 DOM 对比性能。
vue和react的更新机制vueproxy机制
虚拟DOM在数据更新后重新渲染节点,比较新旧虚拟DOM树(diff)
异步更新队列
react使用虚拟DOM,每次state或者props变化都会重新渲染DOM
React 的 Diffing 算法 能够高效地找到新旧虚拟 DOM 树的差异,确保只更新必要的部分。
React 的更新是 ...