自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux-常用命令

基本命令查看文件ls #列出当前目录文件和文件夹名称 -F #输出可以区分文件和文件夹 -a #输出包括隐藏文件 -R #递归输出当前文件夹里所有的文件和文件夹 -l #输出包括文件详细信息 *_script #使用*或?进行文件模糊匹配过滤输出cat test_file #查看文本文件里的内容 -n #给显示结果加上行号创建文件touch test_file #在当前目录创建空文件,如果文件已存在,则仅更新修改时间mkdir new_dir #创建文件夹 -p new_dir

2021-10-27 09:35:42 263

原创 高并发核心知识——ZooKeeper

ZooKeeper简介ZooKeeper是一个开源的分布式协调服务,重视高性能、高可用、严格有序的访问Zookeeper中利用被称为znode的节点保存数据,数据将保存在内存(ram)中,最多存储1MB由于旨在协调数据,因此znode存储的数据很小,通常为状态信息、位置信息、配置信息等znodes的组织结构类似于标准文件目录系统结构特点zk集群中的每个服务都是可复制的,所以每个服务都了解彼此,并维护单一状态zk服务用数字标记每次数据更新来反映zk事务的顺序zk集

2021-08-02 11:41:51 290

原创 通用组件—SvgIcon引入和使用

IconSvg-Icon创建一个专门放置图标 icon 的文件夹:src/icons添加SvgIcon组件到公共components目录下src/components/SvgIcon/index.vue<template> <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /> <svg v

2021-07-28 09:48:41 3865

原创 Vue源码—Virtual DOM和Diffing算法

Virtual DOM 是一种编程概念,在更新state或props时,render 返回一颗虚拟dom树,而非直接修改真实domDiffing算法 用与对比两棵虚拟dom树,将旧dom更新为新dom,如果用传统的dfs算法转换需要O(n3),而diff只需要O(n)目前 Virtual DOM 的主流 diff算法 基本一致,Vue整合了snabbdom库,React使用了reconcilationsnabbdom中是如何实现的?1. h函数 => 创建 VNodesnabbdom中

2021-07-20 17:22:29 147

原创 Vue源码—Mustache语法的基本实现

Mustache模版语法的实现mustache.js源码解析<script src="https://cdn.bootcdn.net/ajax/libs/mustache.js/4.2.0/mustache.js"></script>给定模版字符串和要插入的数据 const templateString = ` <div> <ol> {{#students}} <li&

2021-07-13 15:51:42 198

原创 Redux中间件的使用

Redux MiddlewareRedux中间件是一种增强 store.dipatch 方法的函数,常见的中间件如:redux-thunkredux-promise什么是thunk?thunk用来描述一种函数,它被另一个函数returnfunction wrapper_function() { // 下面的函数就是thunk,它会被延迟调用 return function thunk() { // thunk函数可以任意命名或直接使用匿名 console.log('do

2021-05-24 15:35:36 124

原创 关于es6扩展运算符的对象浅拷贝

2021-04-28 23:55:43 234

原创 关于前端的一些小问题收集

1.关于 package.json 里区分的开发环境和生成环境https://segmentfault.com/q/1010000021487381总结:devDependencies有两个含义,一个含义是放在 package.json 中与模块的依赖 dependencies 做区分,表示是开发环境所需,实际上所有的开发依赖完全可以放在 dependencies 中;另一个含义则可能涉及到加载的优先级问题。webpack打包时会自动忽略掉开发需要的包,package.json 中区分 devDepen

2021-04-02 09:48:43 86

原创 npm和yarn的使用

2021-03-29 17:08:09 140

原创 前端框架-React基础

1.虚拟DOM虚拟DOM本质是一个Object类型的对象//1.创建虚拟DOM,使用JSX语法,babel会翻译为原生jsconst VDOM = ( <h1 id="title"> <span>Hello, React</span> </h1>)//2.渲染虚拟DOM到页面ReactDOM.render(VDOM, document.getElementById("test"))jsx语法1.定义虚拟DOM时,文本字符串

2021-03-10 18:47:44 379

原创 VMware改静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #dhcp改staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stabl

2021-02-07 14:48:34 252

原创 Javaweb-ES6基础

1. 声明变量// var 声明的变量 没有 局部作用域// let 声明的变量 有 局部作用域{var a = 0let b = 1}console.log(a) // 0console.log(b) // ReferenceError: b is not defined// var 可以声明多次// let 只能声明一次var m = 1var m = 2let n = 3let n = 4console.log(m) // 2console.log(n) //

2021-01-20 15:01:13 114

原创 Java-SpringCloud-基础

一. 服务注册与发现服务注册:服务提供者将服务的信息(IP、端口、协议等)登记到注册中心服务发现:服务消费者根据一定策略从注册中心的服务列表选取一个服务1.eureka<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>.

2021-01-08 13:53:36 209 1

原创 Javaweb-Vue-Springboot-前后端分离交互

1. JSON(JavaScript Object Notation)JSON 是一种轻量级的数据交换格式,用来方便的表示对象//JSON的属性名必须有双引号,如果值是字符串,也必须带双引号var jsonObj = { "key1":10, //数字 "key2":"name", //字符串 "key3":true, //布尔类型 "key4":[10,"name",true], //数组 "key5":{ //另一个json "key5_1":20,

2020-12-07 20:00:38 420

原创 算法基础复习-BFS、DFS

1. BFS(Breadth First Search)原理:从一个节点开始向其邻节点扩散,遇到目标节点停止应用树的层序遍历(leetcode 102) public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); if (root == null) re

2020-11-29 15:10:36 152

原创 计算机网络基础复习-传输层

1. 端口运输层使用 UDP 或 TCP 协议,实现源端口到目的端口的数据传输,为应用进程之间提供端到端的逻辑通信发起通信请求,必须知道对方的服务器 IP 和 端口号常用服务的默认端口号2. UDP 和 TCP用户数据报协议 UDP(User Datagram Protocol)发送数据不需要建立连接尽最大努力交付,不保证一定交付对应用层传下来的报文添加首部后就交付给网络层没有拥塞控制,允许网络阻塞时丢失一些数据(比如看直播时画面卡一下)支持一对一、一对多、多对一、多对多首部占用小

2020-11-14 14:33:27 139

原创 数据结构基础复习-数组、链表、二叉树

1. 数据存储方式数组(顺序存储):需要考虑扩容问题链表(链式存储):需要分配空间存储节点指针2. 数据结构的实现3. 数据结构的操作基本操作:遍历 -> 访问 -> CRUD数组遍历访问void traverse(int[] arr) { for (int i = 0; i < arr.length; i++) { //迭代访问 arr[i] }}单链表遍历访问class ListNode { int val; ListNode next;}

2020-11-04 23:20:55 209

原创 算法基础复习-动态规划

1. 动态规划动态规划通常用来求解复杂问题的某个最优解,与分治法相似,区别在于分治法应用于子问题互不相交的情况,即递归的每一步都生成全新的子问题动态规划应用于重叠子问题的情况,即递归反复求解相同的子问题使用条件最优子结构:问题的最优解由子问题的最优解组合而成,子问题可以独立求解重叠子问题:不同的子问题可能有公共的子子问题,导致反复求解相同的问题实现方法带备忘的自顶向下法(top-down with memoization)用数组或哈希表保存每个子问题的解,求解子问题时先看是否已经

2020-10-25 21:22:57 226 3

原创 算法基础复习-排序

1. 冒泡排序2. 快速排序随机选择一个元素作为基准,建立分离函数使左边元素都小于基准,右边元素都大于基准,在没有优化的情况下,一般直接选第一个元素作为基准即可分别对基准左边和基准右边两个序列递归调用快速排序分离函数从最低端开始依次与基准元素对比,遇到大于基准的元素则交换位置;再从最高端开始依次与基准元素对比,小于基准元素则交换位置经过重复多次3过程,最低端和最高端下标最终相等,此时的下标即基准位置C(伪代码)void QuiceSort(int r[]){ QSort(L, 1, L

2020-10-20 17:18:22 136

原创 Java-JVM复习03-GC

1. 判断对象是否可回收的算法引用计数算法(Reference Counting) java不适用在对象中添加一个引用计数器对象被引用,计数器 +1引用失效,计数器 -1计数器 =0 时,可回收优点:简单,回收效率高缺陷:两个对象互相引用或者多个对象循环引用都会导致计数器永 ≠0可达性分析算法(Reachability Analysis)GC Roots引用链能达到的对象不可回收GC Roots不能达到的对象可回收GC Roots 包括以下局部变量表里的变量引用

2020-10-15 16:47:23 149

原创 Java-JVM复习02-运行时数据区

1. 运行时数据区结构线程JVM每个线程都与操作系统的本地线程直接映射,Java线程终止,本地线程回收JVM启动后自动创建多个后台线程,虚拟机线程、周期任务线程、GC线程、编译线程、信号调度线程多个线程共享堆区、元数据区的数据,每个线程私有本地方法栈、虚拟机栈、程序计数器的数据2. 程序计数器JVM中的程序计数器是对物理PC寄存器的一种抽象模拟线程私有,每个线程都有自己的程序计数器存储当前线程当前方法的指令地址,由执行引擎读取后选出需要解释的字节码并发时线程之间要快速切换,程序计数

2020-10-12 17:23:08 279

原创 Java-JVM复习01-类加载机制

1. JVM 结构2. JVM 类加载过程加载获取类的二进制字节流将字节流的静态存储结构转化为方法区的运行时数据结构在内存中生成java.lang.Class对象,作为这个类的访问入口连接验证:确保加载的字节流信息符合虚拟机要求验证文件格式、元数据、字节码、符号引用准备:在方法区中为基本类型变量分配内存空间根据基本变量类型,设置其对应的默认初始值显示初始化被final修饰的变量(final变量在编译阶段时已被分配)解析:将常量池中的符号引用替换为直接引

2020-10-11 15:54:14 147 2

原创 MySQL-Explain用法

EXPLAIN + SQL语句1. idid不同,id值大的先执行id相同,执行顺序从上到下2. select_type(查询类型)SIMPLE:简单的select查询,不包含子查询或联合查询PRIMARY:复杂查询的最外层查询SUBQUERY:被where条件包含了的子查询DERIVED:被from修饰的子查询临时表UNION:使用union后的select查询UNION RESULT:从union表获取结果的select3. type(访问类型)优 system &gt

2020-10-10 21:22:33 92

原创 数据结构基础复习-B+树

1. 二叉排序树(二叉查找树)结构特点:左节点值小于父节点,右节点值大于父节点目的:提高增、查效率{62,88,58,47,35,73,51,99,37,93} 排序如下查找SearchBST(BiTree T, int key, BiTree f, BiTree *p)假设要查找9393>62,查右子树,走①,递归调用SearchBST函数93>88,查右子树,走⑦,递归调用SearchBST函数93<99,查左子树,走⑨,递归调用SearchBST函数93

2020-10-10 16:45:00 292 2

原创 Java-消息中间件-RabbitMQ

1. RabbitMQ 简介RabbitMQ是一个开源的AMQP实现,服务器端用erlang语言编写,支持多种客户端Docker启动RabbitMQdocker run -d --name myrabbitmq \-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin \-p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 \rabbitmq

2020-10-09 14:57:27 140

原创 Java-Nginx基础

1. 什么是 Nginx?Nginx是一款高性能的HTTP服务器,其特点是占有内存少,并发能力强,负载均衡、反向代理、处理静态文件优势大,通常配合Tomcat使用实现动静分离2. Dokcer 配置 Niginx

2020-10-06 21:19:39 1831

原创 Java-Redis基础

1. 什么是 Redis?Redis是一个开源的使用C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 的8种特性在内存运行,效率极高,读写接近每秒十万次基于key-value的数据存储结构键值过期实现缓存,发布订阅实现消息,支持Lua脚本,事务功能单线程,使处理和开发变得简单多语言支持RDB和AOF两种持久化策略主从复制,复制多个Redis副本Redis Cluster实现分布式集群应用场景Redi

2020-10-05 20:27:22 109

原创 Java-SpringBoot-配置原理

1. 配置文件SpringBoot 使用的是一个全局配置文件,文件名固定,有两种类型application.propertiesapplication.ymlYAML基本语法prefix: child-key: value #!注意:冒号后的空格不可省略 maps: {k1: v1,k2: v2,k3: v3} lists: - a - b - c使用注解对指定类加载配置文件中的信息//加载yml文件,并注入属性值@Component@ConfigurationP

2020-10-01 21:38:14 93

原创 Javaweb-cookie、session、token

1. cookie以 k1=v1;k2=v2… 形式在浏览器保存的少量(同一网站最多存20个)文本数据保存了的cookie在以后的每次请求中都会携带cookie默认不支持中文cookie存放原始数据在本地不安全从服务器发送cookie给浏览器保存Cookie cookie = new Cookie("username", "zhangsan");response.addCookie(cookie);cookie的生命周期cookie随浏览器的进程关闭而销毁,所以浏览器一般会把coo

2020-09-29 22:28:59 168

原创 Java-SpringMVC-前端控制器

1. @RequestMapping 注解源码:@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpublic @interface RequestMapping { String name() default ""; @AliasFor("path") String[] value() default {};

2020-09-27 20:52:34 953

原创 Java-Spring-AOP

1. AOP 和 相关术语AOP(Aspect Oriented Programming,即 面向切面编程)在外部编写代码而不侵入原始代码层,使其增加额外功能应用场景:权限、缓存、内容传递、错误处理、懒加载、调试、记录跟踪、性能优化、持久化、资源池、同步、事务、日志AOP 相关术语关注点:根据功能划分系统的一部分横切关注点:系统中每个业务都实现的功能,即这个关注点横切了整个系统连接点:Spring中指被拦截到的方法切面:是一个类,里面定义了切点和通知切点:带有通知的连接点,利用切入点

2020-09-24 13:26:15 124

原创 Java-Spring-IOC

1. IOC 和 DIIOC(Inversion of Control,即 控制反转)控制:IOC容器控制对象的创建及外部资源的获取反转:由主动new依赖对象的方式转变为被动获取IOC容器提供的对象实例DI(Dependency Injection,即 依赖注入)依赖:对象依赖IOC容器来配置自身注入:IOC容器把外部资源注入到对象IOC 和 DI 是同一概念的不同表达方式,可以把IOC容器看作是一个加工厂,这个工厂里要生产的对象都在配置文件(设计图纸)中给出定义,然后利用反射原理,根

2020-09-22 23:55:57 629

原创 Java设计模式-代理模式

一. 概述1. 什么是代理模式?代理模式:提供一个代理对象来控制被代理对象的访问,在客户端和原对象之前起到中介的作用2.为什么用代理模式?当一个对象不适合或不能直接引用另一对象时,使用代理模式可以起到隔离作用,代理类和被代理类实现相同的接口,还可以通过代理类增加额外功能来扩展被代理类,符合代码设计的开闭原则3.代理模式的角色?抽象主题(Subject):代理类和被代理类的共同接口具体主题(RealSubject):被代理类代理主题(Proxy):代理类二. 代理模式1. 静态代理抽

2020-09-21 15:18:36 87

原创 MySQL-my.ini配置

[mysqld]shared-memorysql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\MySQL# 设置mysql数据库的数据的存放目录datadir=D:\MySQL\Data# 允许最大连接数max_connections=200# 允许连接失败的

2020-09-20 21:22:45 4066

原创 Java设计模式-单例模式

一. 概述1. 什么是单例模式?单例模式:为确保一个类只能有一个实例,在这个类中创建自己唯一的实例2. 为什么用单例模式?许多时候,整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为,按照单例模式设计类就可以提供这样的全局对象,以避免调用对象不一致的情况。例如线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序等对象常被设计成单例。3. 单例模式的要素?私有的构造器指向自己实例的私有静态引用返回自己唯一实例的公有静态方法二. 单例模式1. 饿汉式(线程安全)在单例

2020-09-18 10:19:22 73

原创 Java基础-复习12-多线程

一. 前言1. 几个基本概念进程和线程进程:进程用来描述程序的执行过程,是资源分配的最小单位线程:线程建立在进程上,是CPU调度的最小单位,线程可设置优先级同步和异步同步:方法调用一旦开始,就必须等待调用返回后,才能继续后续的代码异步:方法调用一开始,其执行过程被分配到另一线程中进行,同时主线程可以继续后续的代码并发和并行并发:单核 cpu 处理多任务(一个人同时处理很多事情)并行:多核 cpu 执行多任务(多个人同时执行很多事情)线程的生命周期新建:创建线程对象,并保

2020-09-16 22:51:35 142

原创 Javaweb三大组件-Servlet、Filter、Listener

1. 什么是 Servlet ?Java Servlet 是运行在服务器上的程序,Servlet 本身是一个接口,多数人所说的 Servlet 泛指一个实现了此接口的类,用于扩展基于 HTTP 协议的 web服务器(如 Tomcat,即 Servlet容器 ),从而实现网页上的一些交互功能。交互的实现:客户端通过 HTTP 协议发送请求到服务器,服务器调用 Servlet 对请求生成响应后返回给客户端。2. Servlet 原理package javax.servlet;import java.i

2020-09-13 21:53:22 144

原创 Java-JDBC复习

1. 什么是 JDBC(Java Database Connectivity)?Java数据库连接,用于执行SQL语句的javaAPI,可方便实现多种数据库的统一操作2. JDBC 操作数据库的基本步骤加载数据库驱动获取数据库连接创建执行 SQL 语句的对象执行 SQL 语句得到结果关闭数据库连接//导入 mysql-connector-java-xxx.jar 驱动包//1.使用反射加载驱动,DriverManager 会自动注册驱动并返回给调用的程序Class.forName(

2020-09-12 12:27:55 118

原创 数据库基础-复习-SQL

一. 前言在数据库中,SQL 语句分为四大类DML(Data Manipulation Language):select, insert, update, deleteDDL(Data Definition Language):create, alter, drop, truncateDCL(Data Control Language):grant, revokeTCL(Transaction Control Language):commit, rollback, savepointSQL的

2020-09-09 20:34:47 199

原创 Java基础-复习11-注解

一. 概述1. 什么是注解(java.lang.annotation)?注解提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联,注解可以让一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。注解本质是一个继承了Annotation 的特殊接口,其具体实现类是Java 运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java 运行时生成的动态代理对象 $Proxy1。通

2020-09-08 14:47:59 145

空空如也

空空如也

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

TA关注的人

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