自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (12)
  • 收藏
  • 关注

原创 LRU算法

https://blog.csdn.net/qq_26440803/article/details/83795122

2021-07-19 00:05:09 183

原创 30分钟了解Tomcat原理

一.架构要了解Tomcat的结构,首先放一张架构图,这没有比这个更加清晰的了。你看了这张图,是否心中有很多疑惑,这到底是啥东西啊????不要着急,下面一个一个解析。首先看到的是server是Tomcat最顶端的容器,代表整个服务器。其次看到的是一个server可以包含多个serviceService主要包含两个部分:Connector和Container。从上图中可以看出这两个组件就是Tomcat 的核心。1、Connector用于处理连接相关的事情,并提供Socket与Re.

2021-07-18 23:58:39 432

原创 java validate关键字

https://www.cnblogs.com/dolphin0520/p/3920373.html

2021-07-18 23:49:58 1278

原创 redis缓存一致性

对于缓存和数据库的操作,主要有以下两种方式。先删缓存,再更新数据库先删除缓存,数据库还没有更新成功,此时如果读取缓存,缓存不存在,去数据库中读取到的是旧值,缓存不一致发生。解决方案延时双删延时双删的方案的思路是,为了避免更新数据库的时候,其他线程从缓存中读取不到数据,就在更新完数据库之后,再sleep一段时间,然后再次删除缓存。sleep的时间要对业务读写缓存的时间做出评估,sleep时间大于读写缓存的时间即可。流程如下:线程1删除缓存,然后去更新数据库 线程2来读缓存

2021-07-18 22:31:08 1064

原创 redis缓存穿透、缓存击穿、缓存雪崩区别和解决方案

缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。解决方案:1. 缓存空对象 缓存空对象:是指在持久层没有命中的情况下,对key进行set (key,null) 缓存空对象会有两个问题:第一,value为null 不代表不占用内存空间,空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间,比较有效的方法是针对这类数据设置一个较短的过期时间,让其自动剔除。第二,缓存层和存储层的数据会有一段时间窗口的不一致,可能会对业务有一定影响。例如过期...

2021-07-18 21:56:42 205 1

原创 消息队列基础知识,消息队列如何实现分布式锁?消息队列如何实现分布式事务?

消息队列1.常见的应用场景:解耦,异步,削峰解耦:异步:削峰:(经济考量)2.几种mq对比3.消息队列优缺点?系统的可用性降低系统的复杂度提高一致性问题4.如何保证消息队列的高可用?集群5.如何保证消息不丢失?6.如何保证消息的重复性?7.如何保证消息的顺序性?这就保证局部顺序了,即同一订单按照先后顺序放到同一Queue,那么取消息的时候就可以保证先进先取出。那

2021-07-18 21:24:18 841 1

原创 Redis实现分布式锁

分布锁特点:互斥,无死锁,高可用/无容错1.原理:利用setNx指令,判断key是否存在,存在则不操作2.步骤:a.开始设置uuid,过期时间,中间再开一个线程,判断父线程是否结束,没有则过期时间延长30sb.结束的时候,根据uuid清空key3.利用框架Redission如果redis还没来得及同步到从节点,主节点挂了,怎么办?CAP:决定一致性,可用性,分区容错性redis:AP,(因为异步,就难保证一致性)zookeeper:cp(因为同步,

2021-07-18 21:20:19 62

原创 什么是跳表?redis为啥使用跳表作为索引,不使用B+树?redis的单线程为啥效率高?

1.什么是跳表我们知道redis中使用跳表作为索引。储存数据时,数组容量有限且有序数组增加元素时效率比较低,所以存储数据时常选用链表。但是链表的查询效率O(n)。有没有可以提高链表查找效率的方式呢?跳表就是这样一种结构。利用空间换时间的方式,提高查询效率。跳跃表的结构是多层的,通过从最高维度的表进行检索再逐渐降低维度从而达到对任何元素的检索接近线性时间的目的O(logn)。理想的跳表是每一层是下一层元素的1/2,即每个元素跳过2个元素,这样共有log2N层。但是这样插入删除元素就会很复杂,

2021-07-18 00:06:11 4332 4

原创 java多线程解读

1.新建(NEW):新创建了一个线程对象,并没有调用start()方法之前。2.可运行(RUNNABLE):也就是就绪状态,调用start()方法之后线程就进入就绪状态,但是并不是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状态。值得一提的是,线程在睡眠和挂起中恢复的时候也会进入就绪状态。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运...

2021-07-17 23:49:48 99 3

原创 Shiro四种权限控制方式

@Configurationpublic class ShiroConfig { @Bean public ShiroFilterFactoryBean shirFilter(DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryB.

2020-10-21 14:19:11 649

原创 frp 开启web服务

frp介绍frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。开始搭建根据机器的操作系统,在Release页面中找到对应的frp程序,然后分别在服务器主机和客户端中下载它。 首先在服务器(有公网IP的才可以,笔者以centos为例)下载frp https://github.com/fatedier/frp/releases使用tar指令解压tar.gz...

2020-09-16 15:54:34 2557

原创 数据库第一范式,第二范式,第三范式详解

基础知识实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如说“老师与学校的关系”。属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。元组:表中的一行就是一个元组。分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做

2020-09-15 00:14:30 5199

原创 MySQL性能优化底层原理b-tree,b+tree树详解

一.首先介绍原理之前,要明白几个概念二叉搜索平衡树:就是保证任意节点度的绝对值为1或者0,同时父节点大于左子树,小于右子树红黑树:是一种特殊的二叉搜索平衡树,通过“变色,左旋,右旋” 达到二叉搜索平衡树的状态具体的细节可以看我往期的博客二.接下来介绍b-treeM阶的 Btree的几个重要特性:1.结点最多含有m颗子树(指针),m-1个关键字(数据)(m>=2)2.除根结点和叶子结点外,其它每个结点至少有ceil(m/2)个子节点子树,ceil为上取整5/2=2.5取整分裂c

2020-09-12 13:19:46 602

原创 亲测可用,java成功调用dll文件,springboot版本

最近由于公司业务需要,要调用dll文件本文采用JNA调用。注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!本文提供的dll测试文件是32位的,所

2020-07-28 21:29:26 6796 3

原创 win10系统彻底删除mysql数据库

1》停止MySQL服务开始-》所有应用-》Windows管理工具-》服务,将MySQL服务停止。2》卸载mysql server控制面板\所有控制面板项\程序和功能,将mysql server卸载掉。3》将MySQL安装目录下的MySQL文件夹删除(我的安装目录是C:\Program Files (x86)\MySQL)4》运行“regedit”文件,打开注册表。删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Applica

2020-07-28 20:40:17 918 1

原创 测试promise并发请求

const post = function (){ let p = new Promise((resolve)=>{ resolve() }).then(()=>{ return {name:"lin"} }) return p}async function test_post(){ let name =null let urls = ["aa","bb"] let promises =urls.ma.

2020-05-28 16:49:50 332

原创 nodejs 异步转同步递归

//异步转同步递归async function ss1(){ let i =0 async function ss2(i){ const f1 = function(i){ let p=new Promise((resolve)=>{ resolve() }).then(()=>{ console.log("ss2异步",i) }).

2020-05-28 15:08:49 373

原创 promise手写源码

class PromiseNew{ constructor(fn){ this.satate="PENDING" this.doneList = [] this.failList = [] fn(this.resolve.bind(this) ,this.reject.bind(this)) //fn是外部函数,里面this已经改变,所以要绑定bind } done(handle){ if(typeo.

2020-05-27 17:46:57 89

原创 手撕八皇后问题,用回溯法哦(深度优先法)

问题描述:在一个8*8的棋盘上,有8个皇后放置在棋盘上,两两不能对冲,即行 ,列,斜 只能放置一个皇后。比如下图,第一行的皇后行 ,列,斜 只能放置一个皇后。解答这种题,首先分析算法流程这里有一个点特别注意,就是占位标志的判断,首先是列占位,这个直接标志就行了但是斜线角怎么判断?通常上对角,行号减去列号都是相等的,比如拿f[0][0] 来说,它的上对角是哪些呢...

2020-04-02 10:20:38 343

原创 手撕背包问题,用动态规划哦

问题描述:有一个背包容量为10,现在4件物品,物品的重量和价值如下,请问背包装最大的价值是多少?1.首先解答这种问题,用动态规划的话,首先还是老套路,四部曲(不明白的,可以看我往期动态规划的博客)1.确定状态(两个核心:1最后一步 2化成子问题)2转移方程3开始和边界条件4计算顺序(1)首先第一个,确定状态 w:表示背包容量 W[2,3,4,...

2020-04-01 16:08:17 744

原创 KMP算法的原理实现

KMP算法是什么?KMP算法是D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。目的:为了解决模式串匹配主串的时间复杂度最小,通俗的讲,是有一个字符串A(主串),给定另外一个字符串B(模式串),求A串含有B串的位置在讲KMP算法之前,首先要知道前缀跟后缀的定义前缀:有一个n个字符的字符串,前n个字符都是前...

2020-03-18 18:13:50 164

原创 vue播放RTMP视频流

1.安装npm install vue-video-player -S2.测试<template> <videoPlayer class="vjs-custom-skin videoPlayer" :options="playerOptions"></videoPlayer></template><script> ...

2020-03-13 14:08:00 1061

原创 django跨域问题解决方案

1. 安装pip install django-cors-headers2. 在settings文件里修改ALLOWED_HOSTS = ['127.0.0.1','*']# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', ...

2020-02-26 14:08:50 190

原创 ERROR in Template execution failed: ReferenceError: process is not defined(使用electron-vue出现的错误)

//进行命令之前,先换成淘宝的源npm config set registry https://registry.npm.taobao.orgvue init simulatedgreg/electron-vue my-projectcd my-projectnpm installnpm run devnpm install过程中,还有个坑(顺利安装的可以忽略此步)报错:el...

2019-12-25 10:54:56 7541 5

原创 electron教程入门1

electron创建的三种方式一 通过git 克隆快速展示项目# 安装electron(只需安装一次)$ npm install electron -g# 克隆这仓库$ git clone https://github.com/electron/electron-quick-start# 进入仓库$ cd electron-quick-start# 安装依赖库$ npm ...

2019-12-11 09:36:34 325

原创 VScode 编辑器 双开 多开快捷键

新建窗口window: ctrl+shift+Nmacos: command+shift+N

2019-12-10 20:46:00 1006

原创 几种css自适应布局方式

1.float+margin(自适应的那个元素),适应横向布局<!doctype html><html><head> <meta charset="utf-8" /> <title>左中右三列 左右固定200px 中间自适应占满</title> <style> bo...

2019-11-09 17:38:12 4581

原创 css适配布局分类

一、静态布局(Static Layout)以像素作为页面的基本单位,不管设备和浏览器宽度,只设计一套尺寸。常规的pc的网站都是静态(定宽度)布局的,也就是设置了min-width,这样的话,如果小于这个宽度就会出现滚动条,如果大于这个宽度则内容居中外加背景,这种设计常见与pc端。二、流式布局(Liquid Layout)也叫百分比布局。网页中主要的划分区域的尺寸使用百分数(搭配mi...

2019-11-09 16:59:24 396

原创 200行代码实现红黑树+原理介绍(全网最详细)

首先手撸红黑树,需要明白红黑树是什么东西?FBI警告:千万不要去看源码去理解红黑树!千万不要去看源码去理解红黑树!千万不要去看源码去理解红黑树!(重要的事情说三遍,因为你会懵逼的,除非你是大神!!!)其实红黑树其底层就是(特殊的,只是类似自平衡)二叉查找树.就是这么简单很多人懵逼就是不知道其底层结构.网上很多教程提到的情况可能有同学会问,什么是二叉查找树?什么是平衡树...

2019-11-04 15:43:50 1228 1

原创 5分钟搞懂js防抖,节流

防抖:其实就是按键连续(这个连续:在一定时间内)点击,只有触发一次事件.节流:就是按键连续点击,事件均匀触发(按一定时间)什么意思呢?比如在百度输入框,我拼命连续按键,防抖就是你输入完后,最后才触发一次网络请求. 节流就是均匀隔一段时间请求网络//防抖function debounce(){ let timer=null return ()=>{ ...

2019-11-04 15:07:21 165

原创 10分钟搞懂JS正则表达式

第一部分 基础知识一、正则申明方式1、构造函数方式var reg = new RegExp('\d', 'gi');修饰符 说明 i 忽略大小写匹配 g 全局匹配,即是匹配一个后继续匹配,直到结束 m 多行匹配,即是遇到换行后不停止匹配,直到结束 2、字面量方式var reg = /\d/gi;3.正则相关符号3.1方括号 [...

2019-10-29 10:02:35 1403 3

原创 30分钟看完数据结构和算法原理(包括二叉树,图,各种排序算法)

1.树与二叉树结点的度:一个结点的有几个孩子(孙子不算)树的度:所有结点中,其中一个结点最大的度叶子结点:没有孩子的结点分支结点:左右分支的结点内部结点:夹在中间的结点,既不是叶子和根结点父结点:作为父亲的结点子结点:作为孩子的结点兄弟结点:同一个父亲的结点层次:树的层次2.二叉树的性质2.1 分类满二叉树:结点都是满的的二叉树完全二叉...

2019-10-19 23:56:18 1901

原创 Vue数据劫持,双向绑定与computed原理实现

Mvvm.jsfunction Mvvm(options = {}) { this.options = options let _data = this._data = this.options.data observe(_data) //this本身代理this._data for (let key in _data) { Obje...

2019-10-19 16:24:21 270

原创 发布订阅原理实现

1.发布订阅在很多地方很常见,其原理就是把想要执行的方法放到数组里面去,然后遍历数组执行里面的方法其中把方法添加到数据叫订阅遍历数组执行里面的方法叫发布接下来,上代码//发布订阅function Dep(){ this.subs=[]}//订阅Dep.prototype.addSub=function(sub){ this.subs.push(sub)...

2019-10-19 16:18:18 1565

原创 pwa大全

https://pwa.rocks/

2019-09-23 15:39:14 176

原创 typescript入门

https://ts.xcatliu.com/

2019-09-23 14:51:01 98

原创 ES6+知识结构图

2019-09-20 15:07:03 197

原创 ES6对象的扩展

//对象的扩展的APPI a={ name:"zhang", job:"solf" } b={ age:15 } let target={}; Object.assign(target,a,b);...

2019-09-20 15:02:53 78

原创 async await,genertor理解

直接上例子吧,比较直观// async await ,f1返回是一个promise,可以进行链式操作async function f1(){ console.log("开始") await f2() //要等f2执行完 console.log("终于f2执行完了") return 999}function f2(){ return ...

2019-09-19 21:04:51 125

原创 express实现反向代理

varhttp=require('http');varhttpProxy=require('http-proxy');varPORT=1234;//创建代理服务器监听捕获异常事件varproxy=httpProxy.createProxyServer();proxy.on('error',function(err,req,res){res.end();//异常...

2019-09-19 17:18:35 608

亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

2020-07-28

electron图片标定软件

electron标定软件,采用最新框架,跨平台实现机器学习的数据标定工具,大大方便了标定的方式,提高了效率

2019-12-31

pwa的测试用例demo,包含serviceWorker创建,监听,缓存,请求拦截缓存

pwa的测试用例demo,包含serviceWorker创建,监听,缓存,请求拦截缓存

2019-09-23

single-spa的demo,微前端的最佳方案,可以实现多种代码框架共存

single-spa的demo微前端的最佳方案,可以实现多种代码框架共存

2019-09-23

express实现graphql以及客户端验证(超简单)

先安装依赖 npm i 进去目录,node启动服务器:node ./server.js 然后打开html页面即可验证

2019-09-19

http_API测试工具.zip

http测试工具,超级好用,可以模拟http服务器和客户端,对后端和前端开发来说简直神器!!!!!

2019-08-29

Vue Devtools 插件 Chrome

(不用编译,直接安装)前端开发的IT工程师应该比较熟悉这款工具,可以边侧边栏窗格中的页面,边检查代码。由于vue是数据驱动的,所以这就存在在开发调试中查看DOM结构并不能解析出什么。但是借助vue-devtools插件,我们就可以很容易的对数据结构进行解析和调试。

2018-11-13

Django1.11.13版本,支持python2.7,3.4, 3.5, 3.6

Django的web服务框架,Django1.11.13版本,支持python2.7,3.4, 3.5, 3.6

2018-05-31

新串口调试软件(超级好用)

新串口调试软件(超级好用)当有串口连接时可以正常打开,并且告诉你串口号等信息。可以模拟多个串口通信

2018-05-25

屏幕拾色器 采色器 (超级好用,网页美工必不可以的工具)

拾色器 采色器(超级好用, 网页美工必不可以的工具),

2018-04-10

自己手动用javascript写一个区块链

史上最简单,几十行代码,自己手动用javascript写一个区块链

2018-04-10

任意进位制转换(N进位制转化成M进位制)

任意进位制转换(N进位制转化成M进位制),例如将十六进制转化成十进制,将二进制转化八进制

2015-04-10

空空如也

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

TA关注的人

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