- 博客(37)
- 收藏
- 关注
原创 广度优先 (Breadth first search,
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。给定一个二叉树,找出其最小深度。打开转盘锁,采用双向bfs。
2024-01-15 17:14:46 401
原创 cdn详解
内容分发网络内容:指的是静态资源比如:图片,视频,文档,js,css,html等分发网络:将这些静态资源分发到位于多个不同地理位置的机房的服务器中。可以实现静态资源的就近访问举例:京东在全国各地都有仓库,下单后从最近的仓库发货到配送站由小哥送到家可以看做是一层特殊的缓存,分布在全国各地。
2023-09-07 23:21:49 96
原创 服务限流!
resiliense4j提供了熔断,负载保护,自动重试等保障系统高可用开箱即用的功能。google guava自带的RateLimiter 工具类,基于令牌桶算法。有一个bucket4j限流库,后来替换成了resilience4j。
2023-09-05 22:04:43 26
原创 solr如何添加新字段
solr如何添加新字段修改schema.xml. 添加所需的字段<field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" />重启tomcat导入数据
2022-03-04 13:40:02 822
原创 Spring Boot对数据文件的加载机制
Spring Boot对数据文件的加载机制为了能够更合理地重写各属性的值,Spring Boot使用了下面这种较为特别的属性加载顺序:在命令行中传入的参数。SPRING_APPLICATION_JSON 中的属性。SPRING_APPLICATION_JSON 是以JSON格式配置在系统环境变量中的内容。java:comp/env中的JNDI属性。Java的系统属性,可以通过System.getProperties()获得的内容。操作系统的环境变量。通过random.*配置的随机属性。位于
2021-12-23 15:27:10 152
原创 springboot mail 发送邮件和附件
springboot mail 发送邮件#QQ邮箱 mail: host: smtp.qq.com protocol: smtp default-encoding: utf-8 port: 587 username: [email protected] #授权码 password: abcdefghijklmn test-connection: true properties: mail: .
2021-12-16 10:04:00 820
原创 springBoot 的classCastException几种情况
类名完全相同,但是类加载器不同明明代码没改动,线上没问题,拉下来开发就报错??问题分析JVM判断两个类对象是否相同的依据:一是类全称;一个是类加载器.(具体原理请自行百度,在此不再赘述)。大家都知道虚拟机的默认类加载机制是通过双亲委派实现的。springboot为了实现程序动态性(比如:代码热替换、模块热部署等,白话讲就是类文件修改后容器不重启),“破坏或牺牲” 了双亲委派模型。springboot通过强行干预-- “截获”了用户自定义类的加载(由jvm的加载器AppClassLoa.
2021-12-15 14:32:24 341
原创 POJO、PO、DTO、DAO、BO、VO需要搞清楚的概念
POJO全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的属性与表字段一一对应。PO全称为:Persistant Object,即持久化对象。可以理解为数据库中的一条数据即一个BO对象,也可以理解为POJO经过持久化后的对象。DTO全称为:Data Transfer Object,即数据传输对象。一般用于向数据层外围提供仅需的数据,如查询一个表有50个字段,界面或服务只需要用到其中的某些字段,DTO就包装出去的对
2021-12-06 16:08:55 268
原创 cron表达式
在线生成: http://cron.qqe2.com/1.cron表达字符含义cron表达式:* * * * * *,其实就是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,其中常用为六个域。corn从左到右(用空格隔开)分别是:秒 分 小时 月份中的日期 月份 星期中的日期 年份字段允许值允许的特殊字符秒(Seconds)0~59的整数, - * / 四个字符分(Minutes)0~59的整数, - * / 四个字符小时(H
2021-12-06 09:40:58 140
原创 MySQL优化
作者: 听风,原文地址: https://www.cnblogs.com/huchong/p/10219318.html。JavaGuide 已获得作者授权。数据库命令规范数据库基本设计规范1. 所有表必须使用 Innodb 存储引擎2. 数据库和表的字符集统一使用 UTF83. 所有表和字段都需要添加注释4. 尽量控制单表数据量的大小,建议控制在 500 万以内。5. 谨慎使用 MySQL 分区表6.尽量做到冷热数据分离,减小表的宽度7. 禁止在表中建立预留字段8. 禁止在数.
2021-11-11 11:55:42 84
原创 rabbitmq
一文搞懂 RabbitMQ 的重要概念以及安装一 RabbitMQ 介绍1.1 RabbitMQ 简介1.2 RabbitMQ 核心概念1.2.1 Producer(生产者) 和 Consumer(消费者)1.2.2 Exchange(交换器)1.2.3 Queue(消息队列)1.2.4 Broker(消息中间件的服务节点)1.2.5 Exchange Types(交换器类型)① fanout② direct③ topic④ headers(不推荐)二 安装..
2021-11-11 11:55:03 2122
原创 dubbo
这篇文章是我根据官方文档以及自己平时的使用情况,对 Dubbo 所做的一个总结。欢迎补充!RPC基础何为 RPC?RPC(Remote Procedure Call) 即远程过程调用,通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。为什么要 RPC ? 因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。并且,方法调用的结果也需要通过网络编程来接收。但是,如果我们自己手动网络编程来实现这个调用过程的话工作量是非常大的,因为,我们
2021-11-11 11:53:53 114
原创 Java多态
多态父类的引用指向子类的对象 public class Person{ }public class Student{}public class Test{ public static void main(String[] args){ //一个对象的实际类型是确定的 //可以指向的引用类型就不确定了:父类的引用指向子类 //Student 能调用的方法都是自己的或者继承父类的! Student s1=new Student(); //Person 父类型,可以指
2021-11-01 17:45:04 38
原创 Java继承
继承继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模extends扩展,继承。子类是父类的继承java中只有单继承没有多继承(儿子只有一个父亲,而父亲可以有多个儿子)继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖,聚合,组合等子类和父类的关系看起来像is-a,具有is-a的关系接口的实现具有has-a的关系1. object类(所有类的顶级父类)2. super3. 方法重写supersuper调用父类的构造方法,必须在构造方法的第一行super
2021-11-01 17:13:45 101
原创 工具类规范
一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,还有不少重复。如何编写出好的工具类,我有几点建议:隐藏实现就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方:不同的人会使用不同的第三方工具库,会比较乱。将来万一要修改工具类的实现逻辑会很痛苦。以最简单的字符串判空为例,很多工具库都有 StringUtils工具类,
2021-10-29 10:46:15 231 1
原创 axios异步操作
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title>注册</title> <link rel="stylesheet" href="/layui-2.42/css/layui.css"> <link rel="stylesheet
2021-10-14 16:30:56 173
原创 centos安装jdk
Linux平台安装JDK的方式大致有三种(rpm,yum,手动安装),这里简单结束手动安装JDK的方式。一.去Oracle官网下载所需JDK包这里跟windows平台差不多,去官网查找链接下载对应JDK安装包,这里附上JDK1.8下载地址二.安装解压1.创建java文件夹#进入目录[root@xuyj ~]# mkdir /usr/local/java [root@xuyj ~]# cd /usr/local/java
2021-10-11 19:29:38 100
原创 如何做好产品经理,写好PRD需求文档
PRD是用来干嘛的一份完整的PRD要做到全面:让程序员、UI能完全看懂需要做什么,怎么做(逻辑要非常清晰)考虑到和产品,功能相关的所有边缘情况。让人能在找到除所有与需求相关的东西的情况外,找不到任何东西可以和你谈论的。从整体看,根据功能模块来写如果根据页面来写,会有不同页面的功能重合情况、根据功能来写是一个逻辑流,有一条清晰的线从细节看,主要记录一下三方面1:需求说明/修改:说明为什么这么做/为什么修改这个功能。讲清楚为什么,而不是只说是什么。2:功能描述:说明用户可以做什么操作,
2021-09-23 16:12:47 311
原创 什么是瀑布模型
瀑布模型,像工厂流水线一样把软件开发分层化。边写边改的开发模式,为什么说不能满足复杂软件项目的需要呢?主要是有几方面的原因:1.整个开发过程不可控,想基于这种开发模式做项目计划太难;2.项目的人数多了后,无法有效分工协作;3.项目开始的时候对需求几乎没有进行有效分析,对需求的理解容易出现偏差,后期导致很多返工;4.项目编码完成后,没有有效测试,运行时 Bug 非常多。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rwbDkJmP-1632384589159)(瀑
2021-09-23 16:10:15 3249
原创 什么是软件工程
软件工程软件工程就是为了提高软件质量。软件技术只是打造产品的工具,方法则是产品的架构软件生命周期1. 规划2. 需求分析3. 设计4. 编码5. 测试6. 运行维护但是这封信中有一句话,大家不要忽视,“软件技术是我们打造产品的基本工具”,技术只是工具,只是我们用来打造产品的工具!技术是否先进,技术选择是否合理,将决定我们软件的高度。技术的选型,不仅要看技术是不是先进,还要看它是不是适合当前的产品项目。并不是什么技术很新酷,就用什么!我们要深入学习架构与设计、编码、测试、安全、可用性、
2021-09-23 16:09:14 160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人