自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 Convlstm时空预测(keras框架、实战)

Convlstm实战        毕设临近截止,故写一篇心得以供新手学习,理论在知乎上有很多介绍的不错的文章,这里强烈推荐微信公众号:AI蜗牛车,这位东南老哥写了时空预测系列文章,能够帮助了解时空领域模型的演变。        我的本科毕设大概是这样的:先计算某个区域的风险,计算得到一段时间的风险矩阵,这里用的是自己的模型去计算的,数据如何生成,本文不做赘述,主要

2020-05-16 19:06:44 14852 50

原创 《并发编程的艺术》小结

这里写目录标题一、并发编程的挑战1.1 上下文切换如何减少上下文的切换呢?1.2 死锁死锁的排查避免死锁的几个方法1.3 资源限制的挑战二、Java并发机制的底层实现原理2.1 volatile的应用volatile的实现原理2.2 Synchronized的实现原理Synchronized的底层指令Synchronize锁的是啥?Java对象头(一) 对象头1. Mark Word☆☆☆锁升级过程2. 指向类的指针3. 数组长度(二)实例数据(三)对齐填充字节2.3 原子操作的实现原理2个机制实现原子性无

2022-03-10 21:35:04 530

原创 Spring IOC、AOP的理解

这里写目录标题前言IOCAOP代理(照搬JavaGuide)静态代理动态代理JDK 动态代理机制JDK 动态代理类使用步骤代码示例CGLIB 动态代理机制CGLIB 动态代理类使用步骤代码示例JDK 动态代理和 CGLIB 动态代理对比静态代理和动态代理的对比前言用了这么久的Springboot,一直没有对IOC、AOP这两个核心知识作总结,还依稀记得刚入门学习Springboot的时候完全看不懂这两个概念在说啥,因为没有怎么实践,没有一个具体的印象。下面我结合一些日常开发实践来总结一二。IOCIO

2022-03-10 17:36:53 1361

原创 百万抽奖系统设计架构入门

前言从宏观架构层面去考虑一个抽奖系统的设计,在不涉及过多中间件的情况下,最朴素的想法其实就是一个抽奖服务器(tomcat 或者Springboot搭建)、一个通知服务器、MySQL数据库,可以完成用户抽奖到被通知是否抽到奖的过程。V1:Base设计那么这个最简单的demo系统涉及到的问题就比较明显了:单点问题:抽奖和通知服务器都是单点的,有单点风险,可以增加多个节点负载均衡:如果增多节点,会涉及负载均衡问题(节点之间的访问规则,如果去降低服务器的访问压力),负载均衡可以用nginx,可以用轮询

2022-02-16 16:15:00 1674 1

原创 负载均衡之一致性哈希环算法

前言现在有一个场景:一个客户端去访问服务端,只能一直访问一台机器,因为有一些用户数据就存在该服务器上面,如果访问其他服务器的话,这个用户数据就丢了,如何用算法来解决这个问题?一致性哈希环算法base这里的环结构是我们想象的、抽象出来的,最朴素的想法,就是给一个请求,用哈希函数等操作去计算出它对应到的服务器位置,然后分配即可。客户端如何映射到哈希环上的节点呢?比如有一个userId =1去请求:计算了哈希值后落在了P1与P4之间,哈希环处理规则就是找到比它大的最近的那个节点,这里的哈希环是一个

2022-02-14 13:34:16 757

原创 初探负载均衡算法【随机、轮询、加权随机、加权轮询、平滑加权轮询】

简介负载平衡(Load balancing)是一种在多个计算机(网络、CPU、磁盘)之间均匀分配资源,以提高资源利用的技术。使用负载均衡可以最大化服务吞吐量,可能最小化响应时间,同时由于使用负载均衡时,会使用多个服务器节点代单点服务,也提高了服务的可用性。负载均衡的实现可以软件可以硬件,硬件如大名鼎鼎的 F5 负载均衡设备,软件如 NGINX 中的负载均衡实现,又如 Springcloud Ribbon 组件中的负载均衡实现。本文主要从软件层面来说明其实现算法。负载均衡算法主要分为以下6大类:随机

2022-02-14 11:55:39 2721 1

原创 布隆过滤器【1970年由布隆提出;Redis缓存穿透解决方案】

什么是布隆过滤器布隆过滤器(Bloom Filter),是1970年,由一个叫布隆的小伙子提出的,距今已经五十年了。它实际上是一个很长的二进制向量和一系列随机映射函数,二进制大家应该都清楚,存储的数据不是0就是1,默认是0。主要用于判断一个元素是否在一个集合中,0代表不存在某个数据,1代表存在某个数据。布隆过滤器用途解决Redis缓存穿透举例:在爬虫时,对爬虫网址进行过滤,已经存在布隆中的网址,不再爬取。举例:垃圾邮件过滤,对每一个发送邮件的地址进行判断是否在布隆的黑名单中,如果

2022-02-14 00:28:59 657

原创 Redis缓存雪崩、穿透、击穿

缓存请求流程Redis缓存的雪崩、穿透、击穿属于日常工作中经常会遇到的经典问题,下面来一探究竟,他们的解决方案主要是:布隆过滤器、分布式锁(下次再写)这是一个简单的客户端、服务端请求Redis的流程图,简单来说就是当用户向服务端进行访问时,服务端如果需要向数据库请求数据时,先去缓存中看有没有,有则直接返回,没有才会再去数据库中查询返回,这是一个正常的缓存流程。缓存雪崩比如这个某宝的场景,当双十一来临之日,用户的访问量是非常之大的,所以有很多的数据是放进Redis中缓存起来,对应了Redis的ke

2022-02-13 21:05:18 1001 1

原创 mysql用了索引为什么还是查询很慢?

前言近几个月在华为实习的过程中,有个场景下取数,对于一个sn号的查询竟然长达几分钟的时间,批量查几十个sn时,则需要一二十分钟的sql查询时间,故专门对这个问题进行一些整理和思考。首先,这个数据库是存在HIVE上,经过和一些前辈交流后,了解到企业中的数据库主要分为两大种:OLTP(on-line transaction processing)事务型、OLAP(On-Line Analytical Processing)分析型。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如

2022-02-13 15:41:32 8834 3

原创 MySQL 读已提交和可重复读级别下 MVCC并发版本控制实现原理

事务ACID回顾InnDB引擎下,具备事务功能,事务具备ACID(原子性、一致性、隔离性、持久性),一致性其实是目的,由原子性、隔离性和持久性共同来保证!原子性是由undo log来进行保证的(回滚的时候采用undo log),持久性由InnoDB的redo log、undo log、 binlog来保证,而隔离性指的是它有四个隔离级别,分别是:读未提交读提交可重复读串行化其中我们用的比较多的是 读提交(RC) 和 可重复读(RR),下面来详细介绍一下他们是如何通过MVCC多版本并发控制实

2022-02-07 23:04:56 1919

原创 MySQL如何通过索引找到一条真实的数据

MySQL如何通过索引找到一条真实的数据Mylsan和 InnoDB常见区别事务方面noDB支持事务, MyISAM不支持事务。这是 MySQL将默认存储引擎从 MyISAM变成 innoDB的重要原因之外键方面nnoDB支持外键,而 MyISAM不支持。对一个包含外键的 innoDB表转为 MYISAM会失败。索引层面innoDB是聚集(聚簇)索引, MyISAM是非聚集(非聚簇)索引。后面会重点讲解这两种索引的区别MyISAM支持 FULLTEXT类型的全文索引,innoDB不支持 F

2022-01-27 23:07:24 2574 2

原创 MySQL底层采用B+ tree的原因探究

MySQL索引底层采用B+ tree的原因哈希索引https://www.cs.usfca.edu/~galles/visualization/ClosedHash.html通过 哈希 函数计算和类似取余运算,可以将元素插入到对应的bucket中,find的过程是o(1)时间复杂度,那find速度这么快,为啥Mysql底层不用呢?因为Mysql的查询涉及大量的范围查询,Hash索引这个无序集合,是不支持范围查询的,再比如mysql的排序查询(order by),而哈希是无序的,也无法支持!就像我们

2022-01-26 22:45:11 1155

原创 函数式编程(Lambda && Stream)

函数式编程(Lambda && Stream)目录函数式编程(Lambda && Stream)以sort引入几个官方提供的接口PredicateFunctionConsumerSupplier流Stream创建中间操作流式debugfiltermapdistinctsortedflatMaplimitskip终结操作foreachmax&mincollectanyMatchallMatchnoneMatchfindAnyfindFirstreduce归并注意事项O

2021-11-28 00:09:51 323

原创 Java方法传参到底传的是什么?值传递&引用传递辨析

引言本文主要讲解Java方法传参、值传递、引用传递,其中涉及到JVM的相关知识,最近弥补了这一块,发现理解很多问题都变得豁然开朗了,知其所以然!(JVM在我其他博客中有详细辨析)在刷力扣题目时,遇到这样一个问题,当我把一个变量传进dfs方法后,无论递归中如何对该变量赋值,最终都没有生效,今来探究其原因,说到底还是Java值传递、引用传递的问题:方法传参Java的方法传值,有基本数据类型以及引用类型两种:int num = 10; //基本类型String str = "hello"; /

2021-11-07 13:24:36 584

原创 深入理解JVM

概述:JVM类加载机制深入剖析JVM内存管理JVM垃圾回收机制JVM故障诊断性能调优目录一、JVM类加载机制1.1 Java运行时一个类是什么时候被加载的?1.2 JVM一个类的加载过程?1.3一个类被初始化的过程?☆☆☆1.4 继承时父子类的初始化顺序是怎样的?1.5 究竟什么是类加载器?1.6 JVM有哪些类加载器?1.7 JVM中不同的类加载器加载哪些文件?1.8 JVM三层类加载器之间的关系是继承吗?1.9 JVM类加载的双亲委派模型 ☆☆☆1.10 JDK为什么要设计双亲委派模型,有什

2021-11-06 17:47:50 120

原创 一文搞懂云计算精髓MapReduce

目录MapReduce 简介MapReduce 设计构思MapReduce 简介核心思想:“分而治之”        MapReduce思想在生活中处处可见。或多或少都曾接触过这种思想。MapReduce的思想核心 是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。Map负责——分,把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的 前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。Redu

2021-08-05 11:11:58 561

原创 弄懂服务端、客户端【手写一个socket聊天室】

预备知识常见架构:C/S架构:Client/Server(客户端/服务器)结构B/S架构:Browser/Server(浏览器/服务器)结构服务端和客户端        简单地说:一般客户端负责和用户的交互,也就是屏幕显示(UI/UE),服务端负责数据存储,也就是你的用户数据,而计算能力,客户端和服务端一般各负责一部分。        微信、qq这种聊天功

2021-08-02 16:33:41 376

原创 初探线程池【手写线程池!阿里弃用之辨析】

线程池什么是线程池        线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没有必要的开销。为什么要使用线程池        因为频繁的开启线程或者停止线程,线程需要从新被 cpu 从就绪到运行状态调度,需要发生cpu 的上下文切换,效率非常低。当线程从run中sleep后,会到达阻塞状态,这时候要想再回到run状态,得先就绪再到run状

2021-06-30 16:06:04 185

原创 深入Java中的字符串(equals && ==)

目录预备知识equals、==常量池介绍案例1案例2案例3总结预备知识equals、==        首先明确一点,==比较的是引用,equals比较的是内容,在类库没有定义equals方法重写的情况下,自然继承的是Object类的equals方法,上源码: public boolean equals(Object obj) { return (this == obj); }  &

2021-06-29 13:47:59 133

原创 Mac Alfred 工作流 Python开发,可自定义任何接口,全自动化办公

目录Alfred效果图申请接口Workflow建立空白workflow跳转页面Alfred        用Mac的人应该大多都知道这个,但是workflow工作流,应该是很多人没自己写过,得知支持Python脚本后,自己花了几个小时研究了一下如何把接口融合到Alfred快捷方式中,这里给大家提供一个模板,以这样的形式,无论是免费api还是自己封装的工具接口,均可集成到Alfred中!效果图申请接口  &

2021-06-29 11:43:48 1323 3

原创 多线程中的wait与sleep,synchronize与lock有啥子区别?生产消费模型是啥?死锁怎么解决?

目录wait与sleepsynchronized与locksynchronizedlocksynchronized 与 lock区别生产消费模型synchronized实现此处存在的问题lock锁实现Condition死锁为什么需要锁?锁的工作模式:解决死锁的办法wait与sleep来自不同的类首先,wait和sleep都不是一个类下的方法:wait来自:Objectsleep来自:Thread因为java中所有的类都是继承自object的,所以所有类都可以调用wait方法,这是一个fi

2021-06-27 15:03:18 354

原创 Springboot项目Docker部署,无需重做容器,随时更新配置路径【容器外挂载】

        利用docker对一个Springboot打包时会遇到要及时更改相关数据库或者外部接口的ip及port,如果每次都进到容器内部修改,那一定非常麻烦,这里我想到了两种解决方案,并最终使用了后者。两种方法类似,无论哪种,都必须经过外挂载的步骤,也就是要把配置文件放到一个和宿主机映射的目录下:如图,这里采用的是docker-compose.yaml容器编排方式,不赘述:将配置文件放在宿主机目录的config下,代码中写到“/

2021-06-26 21:56:13 620

原创 集成项目经验总结:WebSocket

目录引言WebSocket与Ajax轮询前端代码后端Java代码WebSocketConfigWebSocketServer引言        最近给实验室做的个系统需要用docker打包到对方服务器上,并提供多个URL页面以及接口,需求是要将提供的URL页面通过Iframe方式集成到他们的系统去,他们向我们的后端接口发送数据请求,渲染结果到我们的URL页面上,不了解WebSocket前把我难住了,我想到了设置时间间隔 不断向后端请求

2021-06-26 21:32:30 265 1

原创 手写简易二维码

引言        其实二维码就是由URL字符串转换得到的,那么手写一个最简单的字符与图像的转换如何实现呢?下面请看字符串转二维码import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;import javax.swing.JFrame;public class BinaryString extends JFra

2021-06-13 23:11:19 2232

原创 实验室学姐问我可见性的细节?让我不知所措【多线程中的可见性原理初探】

        之前也只是知道有可见性这么回事,但是原理不算很明白!今天把多线程的可见性原理梳理一下,原理弄懂,而非死记硬背!        先看多线程例子:public class Demo { public static void main(String[] args) { //1. 启动线程 MyThread t = n

2021-06-13 20:24:28 57

原创 面试复习2:【计算机基础:二进制+字节+移位运算】

二进制提到二进制,为啥计算机底层数据存储都采用二进制呢?计算机内部事由IC电子部件构成,IC的一个引脚,只能表示两个状态(《程序是怎样跑起来的》第二章)字节二进制的数一般是8位、16、32,8位的二进制数被称为一个字节,字节是最基本的信息计量单位,而位是最小单位,字节是基本单位,内存和磁盘都是用字节来储存和读写数据,使用位单位则无法读写数据,因此,字节是基本单位位bitbit位:位是计算机存储的最小单位简称为b也称为比特(bit)例如1b,2b,3bbyte字节:byte字节是计算机用于计量存

2021-06-11 12:44:27 359 1

原创 面试复习1:【Java:OOP+继承+接口】

OOP继承继承的内容子类继承到父类的哪些东西?所有子类以及子类对象可以调用到继承的哪些属性和方法?要看 父类的属性、方法的具体访问修饰符:访问修饰符访问范围public项目里private类里protected包下,不同包的子类缺省同包下那么对于子类来说,同包下:​ 只有private不能调用不同包下:​ public,protected 可以调用protected 受保护的,子类不能访问父类的私有字段。不过有时候希望限制父

2021-05-27 16:57:23 53 2

原创 Docker 集成多容器镜像实 践:Jdk8,py37,Mysql,es,采用Dockfile+docker-compose编排

前言        对于一个较大的项目(Jdk8+py37+Mysql+es),如果仅仅使用一个容器做部署,安装过程可能会极其复杂,并且并不利于后期各模块的更新,为了方便他人,也为了快速生成镜像部署,对于多服务的项目,我采用了Dock-compose技术生成多容器,并进行编排,第一次做,耗时3天成功,有不少经验分享于此,便于以后快速部署环境!1. Mysql      &n

2021-01-29 22:50:01 743

原创 【Springboot】用户权限框架:Shiro

1、Shiro简介1.1、Shiro 是什么?Apache Shiro 是 Java 的一个安全(权限)框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存等。下载地址官网:http://shiro.apache.org/github:https://github.com/apache/shiro1.2、有哪些功能?Auth

2021-01-29 21:51:16 428

原创 Mybatis-plus:大大简化Mybatis,无须繁琐的CRUD

MyBatisPlus概述需要的基础:把我的MyBatis、Spring、SpringMVC就可以学习这个了! 为什么要学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成! JPA 、 tk-mapper、MyBatisPlus偷懒的!简介是什么? MyBatis 本来就是简化 JDBC 操作的! 官网:https://mp.baomidou.com/ MyBatis Plus,简化 MyBatis !快速搭建导入依赖<!-- mybatis

2021-01-24 16:44:17 768

原创 Redis学习笔记(from狂神说)

一、Nosql概述为什么使用Nosql1、单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据库就放不下了数据的索引(B+ Tree),一个机器内存也存放不下访问量变大后(读写混合),一台服务器承受不住。2、Memcached(缓存) + Mysql + 垂直拆分(读写分离)网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用缓存来保证效率!

2021-01-24 14:36:23 738

原创 Springboot项目的Jar包反编译,正向编译成功经验

1. jd-gui软件反编译Springboot项目通过软件反编译得到的目录结构为:2. 正向编译到Java项目中BOOT-INF/classes/com 此为Springboot项目中的src/main/java/com下文件BOOT-INF/classes/lib 此为项目所需的全部依赖包,如果通过pom.xml文件无法下载到个别包,则可以通过本地导入的方式BOOT-INF/classes/ 此文件夹下除com文件夹以外的文件均为resources,直接放进src/main/resourc

2020-11-03 13:46:33 8308 4

原创 基于leaflet的地图功能开发合集十大功能(热力图、Geojson轨迹、marker、动画、用户标记侧栏、测量工具、经纬度显示、搜索框)

Leaflet十大常用功能合集        本篇文章主要介绍基于leaflet开源地图组件开发的地图搭建,包含热力图、Geojson轨迹、marker、动画、用户标记侧栏、测量工具、搜索框、经纬线显示等功能。        本文中的代码都是经过测试无误的,关于依赖包均可在github上找到源文件,主要就是依赖导入和函数调用两部分,为了简洁,json数据一般外部导入

2020-10-02 20:56:16 3082

原创 基于leaflet的离线瓦片发布方式总结

离线瓦片发布        leaflet是webgis中相对成熟的开源地图组件库,包含了几乎大部分开发者的基本需求,对于一般用户而言,联网状态下采用在线的瓦片服务即可,但也有一些需要必须离线的场景,本篇博客将讲述两种离线瓦片发布的方式,其一:采用Springboot后端发布;其二:直接将瓦片资源放在文件路径下访问。瓦片发布前的准备        在发布瓦片服务前

2020-10-02 16:47:55 1106 1

原创 hugegraph知识图谱实战总结

hugegraph安装        hugegraph安装比较麻烦,必须版本一致:hugegraph server是发布图数据的核心服务loader用于导入数据studio是hugegraph官方的图谱前端,依赖于serve本地hugegraph启动启动hugegraph serve:hugegraph-0.10.4: 默认是8080与8182端口相关配置:初始化本地的rockdb:# 。。省略bac

2020-10-02 15:48:30 1947 7

原创 ElasticSearch 7.8.1教程(from b站狂神)+JD商城仿站

ElasticSearch安装elasticsearch官网:elastic.cohttps://www.elastic.co/cn/downloads/elasticsearch官网下载巨慢,翻墙下载目录启动,访问9200:访问9200接口:安装elasticsearch-head:git clone git://github.com/mobz/elasticsearch-head.gitcd elasticsearch-headnpm installnpm run sta

2020-09-02 21:11:23 1364 2

原创 Java核心技术4&5章(对象、类、继承)读书笔记

Java核心技术 读书笔记:第四章 对象与类对象的理解:每个对象包含对用户公开的特定功能部分和隐藏的实现部分。从根本上来说,只要对象能够满足要求,就不必关心其功能到底如何实现!此外,每个对象都保存着描述当前状况的信息——对象的状态。对象状态的改变必须通过调用方法实现(如果不经过调用就可以改变对象状态,只能说明破坏了封装性!)对象引用:对象的创建通过对象提前写好的构造函数(无参 有参),new+构造才能够创建出一个新的对象Date s = new Date()Date s = k实际上,k

2020-08-27 23:01:54 261

原创 数据结构之线性表、栈与队列(附Java代码)

1. 绪论2. 线性表​ 线性表是一种最常用、最简单,也是一种最基本的数据结构,它是学习其他数据结构的基础。线性表在计算机中可以用{顺序存储链式存储\begin{cases}顺序存储\\链式存储\end{cases}{顺序存储链式存储​两种存储结构来表示,其中,顺序存储的线性表成为顺序表,链式存储的线性表成为链表,链表又分为:{单链表双向链表循环链表\begin{cases} 单链表\\ 双向链表\\ 循环链表\end{cases}⎩⎪⎨⎪⎧​单链表双向链表循环链表​。特点:对于同一个线性表,

2020-08-27 22:35:47 241

原创 CSS+div布局总结(快速入门,附代码)

文章目录定位相对定位绝对定位固定定位堆叠顺序display预备知识:块状&行内元素的互换:隐藏元素:设置透明度:盒子模型预备知识:margin快速设置:居中显示:外边距合并:子父类div:margin负值:边框borderpadding怪异盒模型:div+css布局注意事项定位相对定位以当前为参照物移动指定的距离注意:相对定位,被定位的元素会占据原有的物理位置<!DOCTYPE html><html lang="en"><head> &lt

2020-07-09 19:25:01 5720

原创 React 入门+实战(antd上传文件接受返回+部署服务器Nginx)

React 入门+实战(antd上传文件接受返回+部署服务器Nginx反向代理)文章目录React 入门+实战(antd上传文件接受返回+部署服务器Nginx反向代理)React 项目迅速搭建前期工作:搭建项目(初始化):项目目录结构:组件结构:antd实战upload传文件部署到服务器(win)安装、启动Nginx配置NginxNginx常用命令:React 项目迅速搭建前期工作:1、必须安装nodejs 注意:安装nodejs稳定版本2、安装cnpm:用cnpm替代npm

2020-05-16 09:56:39 1157

搜狗实验室新闻数据整理.zip

其中包含的val(已整理的搜狗实验室新闻文本数据)、stopwords数据来源于网课资源,能够帮助新手尽快完成一次新闻文本分类的实战项目

2019-11-23

空空如也

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

TA关注的人

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