自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

米奇罗

我是菜鸡米奇罗

  • 博客(51)
  • 资源 (2)
  • 收藏
  • 关注

原创 认知偏差手册(67种认知偏差)

​ 认知偏差多半会影响信念的形成、商业与经济决策、以及其他一般的人类行为它们是可复制与再现的,面临特定情境时,一般可预期人们会有相应的偏差倾向。

2022-09-04 17:52:41 5184 1

原创 esp8266加0.91寸oled显示屏制作天气时钟

前言上两周做了个客制化键盘,将esp8266改在键盘里面了显示始终天气等信息,演示视频看我B站视频:200块改的键盘,没错,你是来听歌的,五分钟剪的视频。键盘制作教程在最后的参考资料里,自行查看。之前在网上参考的教程代码都好古老了,一堆问题,而且断网后就会卡在一个界面,天气、时钟是一直在同步网络的,断网后就啥也没了。最近将代码改了下,包括如下功能:自动同步时间,断网后程序自动计时自动循环播放开机连上wifi后,同步三天天气信息,断网后展示断网前最新一次数据最后加上了我手写的文字,哈哈哈哈,

2021-12-04 15:43:12 4760 4

原创 Axure中引入Echarts图表并制作元件库

前言作为一个产品经理,Axure肯定要熟练运用,但是要做高保真的原型图,在碰到要画各种图表时,脑瓜子嗡嗡响,我是自己画呢,还是截图呢,大部分人肯定选择截图,画?不可能画的,不得把我累死了,画个趋势图都够我打一把王者荣耀了。今天教你用Axure画可交互的EChart图表。原理先讲原理,原理很简单,其实网上很多都是利用Axure的内联框架,但是内联框架嵌入代码,只能生成HTML文件才能查看,且你自己嵌入的html代码在发布到Axure云无法使用,很鸡肋。其实原理就是元件在载入时(如果要单击时才出现,可以

2021-11-29 22:24:26 4154 13

原创 synchronized原理及其应用(详细且认真)

1. 概述在jdk1.6之前,synchronized是基于底层操作系统的Mutex Lock实现的,每次获取和释放锁都会带来用户态和内核态的切换,从而增加系统的性能开销。在锁竞争激烈的情况下,synchronized同步锁的性能很糟糕。JDK 1.6,Java对synchronized同步锁做了充分的优化,甚至在某些场景下,它的性能已经超越了Lock同步锁我们先来讲解synchronized...

2020-04-03 16:41:27 2306

原创 一图胜千言--JVM运行时数据区域

前言本文为《深入理解Java虚拟机(第3版)》学习笔记。思维导图链接:提取码:7wvo

2020-03-30 00:26:53 226

原创 一图胜千言--类加载机制

前言本文为《深入理解Java虚拟机(第3版)》学习笔记。思维导图链接:提取码:q4wa

2020-03-30 00:17:40 196

原创 一图胜千言--经典垃圾回收器

前言本文为《深入理解Java虚拟机(第3版)》学习笔记。新生代收集器Serial收集器概述:单线程工作的收集器,必须执行STW进行垃圾收集垃圾收集算法复制算法优点简单高效所有收集器里面额外内存消耗最少的ParNew 收集器实质上是Serial收集器的多线程并行版本垃圾收集算法复制算法后续版本ParNew合并入...

2020-03-28 16:34:50 198

原创 排序算法(Java)

1. 前言排序算法在算法中占有重要地位,我实在太菜,记性也不大好,先记录一下吧。本文记录了十大排序算法,很多文章都是八大算法,桶排序、计数排序和基数排序也很重要,所以都记录下来。2. 概述排序算法分为内部排序和外部排序,内部排序把数据记录放在内存中进行排序,而外部排序因排序的数据量大,内存不能一次容纳全部的排序记录,所以在排序过程中需要访问外存。我将基数排序、计数排序、桶排序三个归为一...

2020-03-17 15:47:28 189

原创 Java 8 函数式接口

1. 概述函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。提到函数式接口肯定少不了 lambda 表达式,函数式接口可以隐式的转换为 lambda 表达式。我们可以选择向各种各样的方法和构造函数传递 lambda 表达式,包括在 Java 8 之前创建的一些方法和构造函数。因为 lambda 表达式在 Java 中表示为函数...

2020-03-01 15:22:28 294

原创 六边形架构

1. 概述六边形架构(Hexagonal Architecture), 又叫做端口适配器模式(Ports & Adapters),是由 Alistair Cockburn2005年提出的。意图Allow an application to equally be driven by users, programs, automated test or batch scripts, a...

2020-02-04 15:29:29 10659

原创 RocketMQ实战--高并发秒杀场景

1. 前言秒杀本质上属于短时突发性高并发访问问题,业务特点如下:定时触发,流量在瞬间突增秒杀请求中常常只有部分能够成功秒杀商品数量往往有限,不能超卖,但能接受少卖不要求立即返回真实下单结果本文主要讲解秒杀场景中 RocketMQ 实战使用,不详细讲解秒杀其他业务流程。下面是秒杀流程图:想要了解具体实现的,参见详细代码:大佬源码2. 秒杀业务概述通过对秒杀核心业务流程进行异...

2020-02-03 13:10:57 5034 4

原创 ConcurrentHashMap 原理浅析

1. 前言为什么要使用 ConcurrentHashMap主要基于两个原因:在并发编程中使用 HashMap 可能造成死循环(jdk1.7,jdk1.8 中会造成数据丢失)HashTable 效率非常低下2. ConcurrentHashMap 结构jdk 1.7 和 jdk 1.8 中,ConcurrentHashMap 的结构有着很大的变化,我们依次来讲解。2.1 jdk 1...

2019-12-11 22:09:36 251

原创 Java 线程

1. 前言此文为学习笔记,不是很详细,还望理解,有错也希望各位及时指出。详细可以参考《Java 并发编程的艺术》。2. 什么是 Java 多线程一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程:指的是这个程序(一个进程)运行时产生了不止一个线程并行与并发:并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。并...

2019-12-06 17:29:46 180

原创 Happens-Before规则

1. 前言从 JDK 5开始,Java 使用新的 JSR-133 内存模型,使用 happens-before 的概念来阐述操作间的可见性。2. 定义JSR-133 对Happens-Before 的定义:Happens-Before Relationship Two actions can be ordered by a happens-before relationship. If...

2019-11-29 15:50:59 334

原创 Java内存模型

1. 前言Java 内存模型是根据英文Java Memory Model(JMM)翻译过来的。其实JMM并不像JVM内存结构一样是真实存在的。他只是一个抽象的概念。用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的并发效果。在 Java 面试中,一般会问 Java 内存模型,本篇将揭开 Java 内存模型神秘的面纱。2. Java 内存模型的抽象结...

2019-11-28 23:12:47 138

原创 RocketMQ 生产者和消息存储

1. 前言本篇主要从源码分析消息的发送及存储。rocketmq发送消息分为三种实现方式:可靠同步发送、可靠异步发送、单向发送。目前的MQ中间件从存储模型来看,分为需要持久化和不需要持久化两种。本篇文章会分析rocketmq的消息存储机制。2. RocketMQ 消息先看看rocketmq 消息封装类org.apache.rocketmq.common.message.Message基本属...

2019-11-27 17:34:15 649 1

原创 RocketMQ路由中心NameServer

1. 前言NameServer 是整个Rocketmq 的大脑,是为了控制多台消息服务器,解决单点宕机问题问题而设计的。2. NameServer启动流程从NameServer启动类org.apache.rocketmq.namesrv.NameSrvStartup可以看出,NameServer的启动第一步先加载NameServerConfig配置。 final NamesrvCon...

2019-11-23 19:11:40 404 1

原创 RocketMQ系列文章

前言RocketMQ原先是阿里巴巴内部使用的消息中间件,于2017年提交到Apache基金会成为Apache基金会顶级开源项目。Apache RocketMQQuick Startapache/rocketmq下面将进入RocetMQ 的学习。 RocketMQ概述及源码获取 NameServer RocketMQ 生产者和消息存储 RocketM...

2019-11-22 11:53:50 230

原创 RocketMQ概述及源码获取

1. 前言为什么要用RocketMQ,官方文档是这样描述的:Based on our research, with increased queues and virtual topics in use, ActiveMQ IO module reaches a bottleneck. We tried our best to solve this problem through thrott...

2019-11-22 11:52:16 312

原创 三次握手和四次挥手

前言三次握手和四次挥手很多小伙伴总是记不住,包括我在内,觉得ACK,SYN,ack 是啥吗,怎么记得住他们的状态,值为多少?这篇文章将带你清晰认识三次挥手和四次握手的过程。1. 三次握手三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号...

2019-10-27 15:06:22 179

原创 二级域名解析及nginx配置ssl

前言本文将介解析二级域名并配置ssl证书,http 重定向 https 。注意:一定要看完这篇文章才能开始,当安装出现一些报错时,看最下面的报错处理情况。 1. 解析域名看下面一张图就行了。2. ssl证书申请解析很简单,我们接着申请ssl证书。注册域名的时候申请免费的ssl证书,可以申请一个免费的二级域名证书,必须保持和上面的二级域名一致。证书下载nginx ,我们会得到k...

2019-09-13 16:25:20 4152

原创 SpringBoot简单使用PageHelper分页组件

前言PageHelper 插件是真的很方便,特别方便,非常方便。尽管手撸一个分页也不难,用一下limit,order 之类的SQL即可。但有简便的怎么能不用呢。1. 使用方法这儿就介绍一种简便的方法就行了,其他很多种很多种方法请自己查看官方文档,文档里面也有实例。1.1 Maven依赖我之前在讲 mybatis 的博客中,专门提了这个组件的作者。在Springboot里面使用,作者专门...

2019-09-05 21:42:21 438

原创 解决Mapper.xml联合查询报错

前言使用 myBatis 在自定义查询语句时,使用联合查询出现报错问题解决。报错org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'roo...

2019-09-05 11:14:06 935

原创 自定义异常处理返回无效问题

前言最近做一个项目,自定义了全局异常处理,但是返回值一直无法返回自定义的类型。调试了一早上,气到吐血。终于发现问题了。自定义异常处理/** * @author :Maolin * @className :GlobalExceptionHandler * @date :Created in 2019/9/2 9:08 * @description: 自定义全局异常处理 * @ver...

2019-09-03 11:09:43 1513

转载 算法基础(Java)--回溯算法

前言本文还是转载加编写,关于算法的教程网上很多很多,找到这个比较适用的,算法本身就是一种思想,掌握了思想,再根据一些数学知识解决问题。1. 什么是回溯算法?回溯法是一种系统搜索问题解空间的方法。为了实现回溯,需要给问题定义一个解空间。说到底它是一种搜索算法。只是这里的搜索是在一个叫做解空间的地方搜索。而往往所谓的dfs,bfs都是在图或者树这种数据结构上的搜索。根据定义来看,要实现回溯...

2019-09-01 22:19:34 375

转载 算法基础(Java)--分治算法

前言此篇博客为转载和修改,来源写在参考资料。分治算法分治,“分而治之”。从字面上理解就是分—治,把大的问题分成小问题,解决一个一个小问题,之后把问题的答案合并起来,就得到大问题的结果。您肯定会在想,这思想这么简单,你不说我也是知道。历史上,秦国通过远交近攻的策略,逐个击破,最后统一六国不也是分治思想的体现吗?以下用一个二叉树的前序遍历为例,对分治思想在代码上的体现进行说明。public ...

2019-08-31 15:36:22 1071 1

原创 动态规划之背包问题

前言此篇博客主要讲常见的三种背包问题,0-1背包,完全背包,多重背包。为了加深理解,每个问题都有leetcode实例。1. 0-1背包问题1.1 题目有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到 的价值是Wi。求解将哪些物品装入背包可使价值总和最大。1.2 基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不 放。 用子问题定义状态:即F[i...

2019-08-31 15:03:40 286

转载 动态规划套路详解

前言前一篇博客总结了动态规划,但是对于我这初学者,还是很多地方不能理解,所以我就在网上找到了一个大神的讲解,确实很棒。转载过来。原文链接在下面参考资料。1. 动态规划套路详解下面通过对斐波那契数列和这道凑零钱问题详解动态规划。如果只想看本题的答案,请直接翻到最后查看。动态规划算法似乎是一种很高深莫测的算法,你会在一些面试或算法书籍的高级技巧部分看到相关内容,什么状态转移方程,重叠子问题,...

2019-08-15 22:24:59 3240 1

原创 算法基础(Java)--动态规划

前言**动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)**最优化的数学方法。在面试笔试中动态规划也是经常作为考题出现,其中较为简单的 dp 题目我们应该有百分之百的把握顺利解决才可以。1. 基本概念动态规划实际上是一类题目的总称,并不是指某个固定的算法。动态规划的意义就是通过采用递推(或者分而治之)的策略,通过解决大问...

2019-08-13 16:33:40 523

原创 算法基础(Java)--贪心算法

title: 算法基础(Java)–贪心算法toc: truedate: 2019-08-09 14:41:53top:tags: [Java,算法]前言前面简单的介绍了八大经典排序算法,此文将要介绍贪心算法,并利用贪心算法解决背包问题。1. 贪心算法的概念所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义...

2019-08-10 16:14:11 14783 5

原创 算法基础(Java)--八大排序算法

前言为了巩固自己的算法能力,重学算法,一个一个自己写,敲。本文主要介绍Java八大排序经典算法。1. 冒泡排序(BubbleSort)1.1 基本思想两个数比较大小,较大的数下沉,较小的数冒起来。1.2 过程1.3 算法实现 /** * @Description: 冒泡排序,优化版 平均时间复杂度:O(n^2) * @Date: 21:11 2019/8/...

2019-08-09 13:59:53 340 1

原创 多线程编程基础--Java线程同步机制

文章目录1. 前言2. 锁概述3. 内部锁:synchronized 关键字代码块同步方法同步4. 显式锁:Lock接口Lock与synchronized之间的区别和联系5. 轻量级同步机制:volatile 关键字6. 小结&参考资料小结参考资料1. 前言从广义来说,Java平台提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字以及一些相关的API...

2019-08-07 15:23:52 167

原创 TCP/IP基础

文章目录1. 前言2. TCP/IP 出现的背景及其历史2.1 ARPANET 的诞生2.2 TCP/IP 的诞生2.3 TCP/IP 的具体含义3. TCP/IP 协议分层模型3.1 TCP/IP 与 OSI 参考模型3.2 网络接口层3.3 互联网层IPICMPARP3.4 传输层TCPUDP3.5 应用层WWW电子邮件文件传输远程登录(TELNET 与 SSH)网络管理(SNMP)4. TC...

2019-07-03 10:23:44 280

原创 优雅的缓存解决方案--设置过期时间

文章目录1. 前言2. 配置修改配置类测试3. 报错解决小结&参考资料小结参考资料1. 前言上篇文章介绍了利用 SpringCache 和 Redis 设置缓存,但是SpringCache 注解并不支持设置缓存时间,确实很令人头疼。这篇文章将叫你用最简单的方式解决 SpringCache 和 Redis 设置缓存并设置缓存时间。此篇文章基于上篇博客,有啥不懂的地方请查看上篇博客。上...

2019-03-31 16:29:43 6245

原创 优雅的缓存解决方案--SpringCache和Redis集成(SpringBoot)

1. 前言一个系统在于数据库交互的过程中,内存的速度远远快于硬盘速度,当我们重复地获取相同数据时,我们一次又一次地请求数据库或远程服务,者无疑时性能上地浪费(这会导致大量时间被浪费在数据库查询或者远程方法调用上致使程序性能恶化),于是有了“缓存”。本文将介绍在spring boot项目开发中怎样使用spring提供的Spring Cache 与最近很火的 Redis 数据库来实现数据的缓存。...

2019-03-26 20:25:02 17470 4

原创 springboot实现热部署

文章目录前言原理方式开始配置在pom.xml中添加依赖devtools的配置IDEA中配置测试参考资料&小结小结参考资料前言在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,...

2019-03-20 19:34:15 230770 59

原创 springboot中静态页面无法访问及return无法重定向问题

文章目录1. 前言2. 静态页面无法加载原因是啥呢?怎么解决?3. return "redirect:”无法重定向原因分析4. 小结&参考资料小结参考资料1. 前言这几天做一个小项目,碰到了一些奇葩bug,各种百度都无法解决,只有自己一个一个试,气到爆炸。springboot中静态页面templates下的HTML文件无法直接访问,还有就是return "redirect:”无法重定向...

2019-03-02 12:18:12 2319 2

原创 springboot集成MyBatis

文章目录1. 前言2. MyBatis简介2.1 三款框架的ORM对比图2.2 MyBatis作为一款使用广泛的开源软件,它的特点有哪些呢?MyBatis 几个重要的概念3. springboot集成MyBatis导入依赖初始化脚本(创建表)application 配置创建实体类持久层测试4. 通用Mapper与分页插件的集成插件介绍导入依赖application 配置实体类持久层`UserMap...

2019-02-10 14:55:55 356

原创 个人博客数据库设计

文章目录前言一、 概述及分析1.1 项目背景1.2 分析1.3 系统功能1.3.1 用户管理1.3.2 博文管理1.3.3 评论管理1.3.4 分类管理1.3.5 标签管理二、数据库概念模型设计—基本ER图三、数据库逻辑模型设计四、数据库语句4.1 建立数据表语句(部分)4.2 建立视图(部分)五、 小结&参考资料小结参考资料前言最近要做数据库大作业,在思考了很久之后,还是设计一个简单...

2019-01-21 11:41:23 72812 27

原创 MySQL基础

文章目录1. 前言什么是数据库?RDBMS 术语2. 数据库和表2.1 数据库的创建2.1.1 数据库连接2.1.2 查看数据库2.1.3 创建数据库2.1.4 打开数据库2.1.5 用户管理2.1.6 数据库的备份和还原2.1.7 删除数据库2.2 数据表的创建2.2.1 查看数据表2.2.2 创建数据表2.2.3 创建表时的一些设置2.2.4 删除表2.2.5 清空表2.2.6 修改表3. 数...

2018-12-02 00:53:51 297

数字字母混合验证码

只含PHP代码,主要用于验证码输入,后端直接处理验证码

2018-05-21

文本式留言板

html,php均包含,留言板数据存储采用的是文本txt,并非数据库,对于初学者很好理解

2018-05-21

空空如也

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

TA关注的人

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