- 博客(72)
- 收藏
- 关注
原创 二分查找及相关算法题
二分查找是很重要的一个查找算法,直接上题目使用二分查找,二分查找的好处:时间复杂度为 log(n)。以上就是二分查找最基本的代码。在做算法题的时候,往往不会直接遇到二分查找的题目,而是二分查找题目的变形,所以,碰到一道题目之后能判断出来使用二分查找才是最终要的,接下来看两个与二分查找相关的算法题这道题目依然使用二分查找题目三:局部最小给定一个数组,数组是无序的,如果一个如果数组中有一个数,其这个数的左右两边都比它大,就说这个数是局部最小数,找出一个即可这个题目依旧可以使用二分查找来解决问题分析:如果
2022-07-10 13:44:23 344
原创 MySQL查漏补缺
WHERE 是一个约束声明,使用 WHERE 约束来自数据库的数据,WHERE 是在结果返回之前起作用的,WHERE 中不能使用聚合函数。HAVING 是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在 HAVING 中可以使用聚合函数。另一方面,HAVING 子句中不能使用除了分组字段和聚合函数之外的其他字段索引覆盖可以减少树的搜索次数,显著提升查询性能,因此使用索引覆盖是一个常用的性能优化手段如果已经有了(a,b)这个联合索引后,一般就不需要单独在 a 上简历索引了。因此,第一原则是,如
2022-06-27 20:01:17 718
原创 进程与线程的区别是什么?
进程的产生最初的计算机只能接受一些特定的指令,用户每输入一个指令,计算机就做出一个操作。当用户在思考或者输入时,计算机就在等待。这样效率非常低下,在很多时候,计算机都处在等待状态。批处理操作系统后来有了批处理操作系统,把一系列需要操作的指令写下来,形成一个清单,一次性交给计算机。用户将多个需要执行的程序写在磁带上,然后交由计算机去读取并逐个执行这些程序,并将输出结果写在另一个磁带上。批处理操作系统在一定程度上提高了计算机的效率,但是由于批处理操作系统的指令运行方式仍然是串行的,内存中始终只有一个程序
2022-05-22 18:42:48 182
原创 算法——判断回文链表
最近在学习一些算法相关的知识,遇到回文链表,接下来将讲解三种不同的方式解回文链表先创建一个 Node 类public class Node { public int value; public Node next; public Node(int value) { this.value = value; }}方法一我们知道单链表是有一个 next 指针指向下一个节点,末尾的节点指向 null,我们首先借助栈来判断是否时回文链表栈最主要的特点:先进后出实现思路:遍历
2022-05-08 16:30:08 538
原创 springcloud 第二阶段总结
Seataseata是什么?aseata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。本次拆分新生电子报道用的是 1.4.2 版本的 seata,是最新的一个版本在项目中 Seata 具体搭建首先我们需要现在官网上下载源码资源包 seata-1.4.2.zip 以及服务端包 seata-server-1.4.2服务端前期工作a. 为 seata 建立数据库,导入资源包中的 sql 文件b. 修改配置文件 file.conf 和 registry.con
2022-05-01 18:13:51 1064
原创 微服务架构第一阶段(nacos,gateWay,RPC)
最近在学习完 springcloud 微服务架构之后,自己用了之前的一个项目计划拆分成微服务的项目,第一阶段要求整合 nacos,RPC以及gateWay,首先来看一下几个技术组件的概念RPCRPC 框架 —— 远程过程调用协议RPC(Remote Procedure Call Protocol)—— 允许像本地服务一样调用远程服务RPC是指远程过程调用,也就是说两台服务器 A,B,一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数 / 方法,由于不在一个内存空间,不能直接调用,需要通
2022-04-22 10:40:01 2061
原创 避免递归查询子部门问题的实现方案
引言:我们在开发项目的时候难免会遇到部门下面有子部门,菜单下面有菜单的情况,当我们需要查询的时候最容易想到的就是递归查询,但是递归查询不是最好的方案。本次我们用可以使用 Java8 中的 Stream 流一次性把数据查出来,然后通过流式处理。实体类:Menu.java@Datapublic class Menu { private Integer id; private String name; private Integer parentId; private List<
2022-04-15 22:19:47 246
原创 如何将 nacos 与 gateway 整合到项目中?
最近学习完springcloud理论知识之后,发现不将各个小组件进行实操,运用到项目中,那么就只知道各个小组件是干嘛的,掌握程度并没有那么好,本次就来整合一下 nacos 与 gateway 。什么是nacos?nacos 是一个易于构建原生应用的动态服务发现,配置管理和服务管理平台,说白了就是注册中心 + 配置中心的组合什么是 gateWayGateWay 它旨在为微服务架构提供一个简单有效的统一的 API 路由管理方式。在我们写微服务的项目时,首先需要将各个服务注册到 nacos 中一、整合
2022-04-10 17:00:30 2559
原创 springcloud 学习笔记(2)
SpringCloud Config 分布式配置中心分布式系统面临的配置问题微服务意味着要讲单体应用中的业务拆分成一个个自服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud 提供了 ConfigServer 来解决这个问题,我们每一个微服务自己带着一个 application.yml,上百个配置文件的管理,如果需要修改配置文件,那么工作量可想而知。config 是什么?Spri
2022-04-03 21:04:20 1185
原创 springcloud 学习笔记
一、Hystrix 服务服务雪崩多个微服务之间调用的时候,假设服务A调用服务B和服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的扇出。如果扇出的链路上某个微服务的调用相应时间过程或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。类似于下图当库存服务不可用时,商品服务请求线程被阻塞,如果有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法对外提供服务,这种请求可能不饿可用沿着调用链向上传递,会引发了雪崩。Hystrix 是什么?
2022-03-27 20:56:36 735
原创 事务隔离级别与MVCC(看这一篇就够了)
一、事务简介我们在说起事务的时候,经常拿银行转账的例子,因为这个例子非常经典,A 向 B 转账5元,先获取 A 判断如果账户大于5元,则从 A 账户上减去 5 元,在获取 B 账户加上 5 元。并且保证该过程永远不能出错不会出错。1.1 事务四大特性(ACID)原子性(Atomicity):数据库把“要么全做,要么全部做”的这种规则称为原子性隔离性(Isolation):事务之间相互隔离,不受影响,这与事务的隔离级别密切相关一致性(Consistency):事务执行前后的状态要一致,可理解为数据
2022-03-12 22:14:02 2400
原创 MySQL索引
在后端开发中以及面试中,MySQL 一直非常重要的一个技术栈,熟练掌握 MySQL 非常有必要。MySQL 中有一个重要的概念是索引,用几个问题引出接下来要文章什么是索引?索引时一种数据结构,协助快速查询和更新数据库表中的数据,有了索引,可以使我们的查询更加高效。索引运用的什么数据结构?索引的底层原理是 b+ 树。索引底层数据结构为什么选用B+树,而不是hash,二叉树,红黑树或者平衡二叉树?索引在选用底层数据结构时,考虑多方面的因素,接下来我们就讨论一下为什么使用 B+ 树,而不是其他的
2022-03-06 12:14:17 684
原创 springcloud学习——zookeerper
注册中心——Zookeerperzookeerper 是一个分布式协调工具,可以实现注册中心首先在 Linux 系统中进行 zookeerper 服务;执行步骤:关闭防火墙 systemctl stop firewalld利用 docker 拉取镜像 docker pull zookeerper 3.4.9启动容器 docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.4.9查看
2022-02-17 20:18:16 1155
原创 常见二叉搜索树算法
二叉搜索树二叉搜索树(Binary Search Tree,简写 BST)BST 特性1、对于 BST 的每一个节点 node ,左子树节点的值都比 node 的值要小,右子树节点的值都比 node 的值大。2、对于 BST 的每一个节点 node ,它的左侧子树和右侧子树都是 BST。从做算法提的角度来看 BST,除了它的定义,还有一个重要的性质:BST 的中序遍历结果是有序的(升序)也就是说,如果输入一棵 BST,以下代码可以将 BST 中每个节点的值升序打印出来:void travers
2022-02-12 19:52:11 778
原创 有关二叉树的算法——(二叉树遍历)
二叉树(第一期)1. 深入理解前中后序二叉树代码框架void traverse(TreeNode root) { if (root == null) { return; } // 前序位置 traverse(root.left); // 中序位置 traverse(root.right); // 后序位置}2. 二叉树的重要性举个例子,比如说我们的经典算法【快速排序】和【归并排序】,对于这两个算法,是怎么理解的?说白了,快
2022-01-23 11:54:58 919
原创 Java双指针技巧
在我们练习Java算法的时候,难免会遇到一些题目利用一些技巧性的解题方法比不用要强很多,这次主要分享一下有关双针的技巧。双指针一般分为两类:一类是快慢指针,一类是左右指针。前者解决主要链表中的问题,比如典型的判断链表中是否包含环;后者主要解决数组(或字符串)中的问题,比如二分查找。一、快慢指针1. 判断链表中是否含有环链表中要想不含环,那么这个指针最终会遇到空指针 null 表示链表到头了,这还好说,可以判断该链表不含环boolean hasCycle(ListNode head) { w
2022-01-15 20:19:46 957 1
原创 DependencyManagement和Dependencies的区别
Maven 使用 dependencyMangement 元素来提供了一种管理依赖版本号的方式通常会在一个组织或者项目的最顶层的父 POM 中看到 dependencyManagement 元素使用 pom.xml 中的 dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显示的列版本号。Maven 会沿着父子层次向上走,知道找到一个拥有 dependencyManagement 元素的项目,然后它就会使用这个 dependencyManagement 元素中指定的版本号。
2022-01-09 19:00:33 458
原创 Java重要知识点
为什么 Java 中只有值传递?两个概念:形参 & 实参值传递 & 引用传递形参 & 实参方法的定义可能会用到 参数(有参数的方法),参数在程序语言中分为:实参(实际参数):用于传递给函数 / 方法的参数,必须有确定的值。形参(形式参数):用于定义函数 / 方法,接受参数,不需要有确定的值。String hello = "Hello";// hello 为实参sayHello(hello);// str 为形参void sayHello(String
2022-01-02 22:11:38 390
原创 Java 复习
Java基础知识基础概念与常识JVM、JDK、JREJVMJava 虚拟机(JVM)试运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Window,Linux,macOS),目的是使用相同的字节码,他们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言 ”一次编辑,随处可以运行“的关键所在JVM 并不是只有一种!只要满足 JVM 规范,每个公司,组织或个人都可以开发自己的专属 JVM。JDK 和 JREJDK 是 java development Kit
2021-12-26 17:27:08 386
原创 最长用的有关链表的算法(超容易理解)
在我们学习数据结构的时候对链表都不陌生,链表是有序的,是一个是非重要的知识点,日常练习算法,去面试一些公司的时候我们都有可能会遇到有关链表的一些东西。下面是有关链表的一些常见操作实现:1. 添加节点2. 展示链表3. 删除节点4. 修改节点5. 计算链表的节点总数量6. 计算链表的倒数第 index 个节点7. 添加结点,根据编号排序进行书写
2021-12-18 21:33:07 745
原创 软考错题记录(全面)
真题错误笔记词法分析: 依据语言的词法规则,对源程序进行逐个字符的扫描,从中识别出一个个“单词”符号,主要针对词汇的检查。嵌入式操作系统的特点1)微型化:从性能和成本角度考虑,希望占用的资源和系统代码量少。2)可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求。3)实时性:嵌入式操作系统主要用于过程控制,数据采集,传输通信,多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。4)可靠性:系
2021-11-21 19:30:05 835
原创 二分查找、分治算法——汉诺塔问题
一、二分查找算法(非递归)1)二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后在进行查找2)二分查找算法的运行时间为对数时间,即查找到需要的目标位置最多只需要log以2为底n的对数步,假设从[0 ,99] 的队列(100个数,即 n = 100)中寻到目标数为 30 ,则需要查找步数为 ,即最多需要查找6次代码实现public static void main(String[] args) { int[] arr = {1,3,8,10,11,67,100};
2021-11-14 18:45:19 3160
原创 RabbitMQ 最实用最容易理解常用知识巩固
1. 消息队列1.1 MQ 的相关概念1.1.1 什么是 MQMQ,从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的信息内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游”逻辑解耦+物理解耦“的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务1.1.2 为什么要用MQ1、流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段,我们下
2021-11-07 11:24:37 1281 3
原创 利用RabbitMQ发送微信小程序订阅消息
最近在做项目的时候有一个新的需求是微信小程序,用户报名活动,用户积分变化,课程提醒的时候用户需要受到一条订阅消息,自己通过研究与开发,最终成功完成,接下来总结一下。一、前期准备RabbitMQ1. 准备交换机和队列并将其绑定在一起交换机:activeExchange队列:activeQueue路由 key:activeRouting2. 设置 openId这个 openId 是在用户表中的一个字段,具有唯一性,由系统自动生成。二、相关配置在spring boot的 yml 中的配置1
2021-10-17 13:14:53 1960 1
原创 Stream 对结果进行收集
1. 收集到集合中public static void main(String[] args) { // 收集到 List 集合中去 List<String> list = Stream.of("aa","bb","cc","aa") .collect(Collectors.toList()); System.out.println(list); // 收集到 Set 集合中去 Set<String> set = Stream.of("aa"
2021-10-15 16:08:47 806
原创 Java8 新特性之 Stream 常用方法总结
Stream当我们在需要对集合中的元素进行操作的时候,除了必需的添加,删除,获取外,最典型的就是遍历数组了public static void main(String[] args) { List<String> list = Arrays.asList("AAA","ABB","As","CC","DD"); // 获取所有以 A 开头的数据 List<String> list1 = new ArrayList<>(); for (String s
2021-10-12 11:20:25 602
原创 Java8新特性之Lambda表达式
Lambda 表达式,也可以称为闭包,它是推动 Java8 发布的最终要的新特性,允许吧函数作为又给方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以是代码变的更加简洁紧凑。具体分析1. 需求分析创建一个新的线程,指定线程要执行的任务public static void main(String[] args) { // 开启一个线程 new Thread(new Runnable() { @Override public void
2021-10-11 08:45:47 144
原创 docker常用命令
Docker 的常用命令帮助命令docker version # 显示docker的版本信息docker info # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令帮助文档地址:https://docs.docker.com/engine/reference/commandline/build/镜像命令docker images[root@lxh-serve ~]# docker imagesREPOSITORY T
2021-09-26 15:32:55 127
原创 springboot整合JTW
1 什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signe
2021-09-19 17:26:55 500 3
原创 Java8新特性
Java8中有一些新的知识与内容,接下来,写一下经常用到的一些特性主要内容Lambda 表达式函数式接口方法引用与构建Stream APIJava8 新特性简介代码更快代码更少强大的 Stream API便于并行最大化减少空指针异常一、Lambda 表达式1.1 基本语法Lambda 表达式基本语法:Java8 引入了一个新的操作符 “->”,该符号称为箭头或者 Lambda 操作符,箭头操作符将 Lambda 表达式拆分成两部分左侧: lambda 表达式的
2021-08-07 13:29:02 147
原创 数据结构 —— 排序算法
排序算法在数据结构中是一块非常重要的组成部门,本篇博文主要讲一下自己对排序算法的理解。1、冒泡排序1.1基本介绍冒泡排序的思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一样逐渐向上冒。因为排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有交换过,说明序列有序,因此要在排序过程中设置一个 flag 判断元素是否进行交换,从而减少不必要的比较。1.2 代码实现public static void
2021-07-31 13:50:35 1385 2
原创 Spring——IOC(控制反转)
学习 SPringle 框架,IOC 是核心内容之一,今天来总结并谈谈对 Spring 中 IOC 的理解1. IOC 是什么?控制反转,不是什么技术,而是一种思想,思想的学习相对代码来说稍微难以理解一些。IOC是将你设计好的对象交给容器控制,而不是传统的在你的对象内部进行直接的控制。谁控制了谁?控制的是什么?:传统的javase,我们是通过 new 一个对象的形式创建,是程序主动创建依赖对象,而 IOC 是有专门一个容器来创建这些对象,即右容器来对象的创建; 谁控制谁?是 IOC 容器控制了对象,
2021-07-23 20:51:13 98
原创 01单例模式
单例设计模式介绍所谓类的单例设计模式,就是才取一定的方法保证在整个软件系统种,对某个类只能存在一个对象实例,并且该类只提供一个取得其兑现实例的方法(静态方法)单例模式八种方式1)饿汉式(静态常量)2)饿汉式(静态代码块)3)懒汉式(线程不安全)4)懒汉式(线程安全,同步方法)5)懒汉式(线程安全,同步代码块)6)双重检查7)静态内部类8)枚举第一种:饿汉式(静态常量)// 懒汉式(静态变量)class Singleton{ // 1.构造器私有化,外部能能 new
2021-06-10 09:06:40 112
原创 设计模式概述
章握设计模式的层次**第一层:**刚开始学习编程不久,听说过什么是设计模式**第二层:**有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道。**第三层:**学习过了设计模式,发现自己已经在使用了,并且发现了一些新的模式挺好用的。**第四层:**阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好处**第五层:**代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写出来了设计模式介绍设计模式是程序员在面对同类软件工程设计问
2021-06-09 08:58:01 65
原创 03依赖倒置原则
基本介绍高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象的基础搭建的架构比以细节为基础的架构要稳定的多,在Java中,抽象指的是接口和抽象类,细节就是具体的实现类使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成实例展示不使用依赖倒置原则class Email{ public
2021-06-02 18:10:42 74
原创 02接口隔离原则
基本介绍在我么定义接口时,客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上上图中类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖接口 D,如果接口 Interface1 对于类 A 和 类 C 来说不是最小接口那么类 B 和类 C 必须去实现他们不需要的方法按接口隔离原则这样处理:将接口 Interface1 拆分为独立的接口,类 A 和类 C 分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则实现案
2021-05-31 11:01:48 65
原创 01单一职责原则
基本介绍对类来说,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2,当职责 1 需要变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 分解为 A1,A2实例演示我们建立一个交通(Vehicle)类,并交通工具的运行方法方式一public class SingleResponsibility1 { public static void main(String[] args) { Vehicle vehicle = new Vehicl
2021-05-31 10:51:29 61
原创 蓝桥杯简单备考
明天就要进行蓝桥杯考试,这次又是没怎么准备。上次考前就看了 charAt() 和 输入输出语法就去考试了。总结一下常用的方法有关字符串:charAt() indexOf() subStringcharAt这个方法很好用,返回字符串索引下标所对应的值String str = "abcdefhijk";char c = str.charAt(3);System.out.println(c); // dchar c = str.charAt(4);System.out.println(c);
2021-04-17 10:46:24 198 1
原创 静态网页部署服务器
今天尝试了一下将自己之前写的 JavaScript 网页部署在服务器上,利用 Xshell,tomcat,nginx 反向代理完成。详细步骤第一步:在 Linux 操作系统中安装 tomcat,nginx不再演示第二步:在tomcat 的 webapps 文件下建立一个文件夹 XXX1. 在这里我建立的是 lol2.将自己要部署的网页及其静态资源放入所建立的文件夹中直接访问即可:ip+文件名+XXX.html链接一:http://39.102.129.20:8080/lol/index
2021-03-30 21:08:11 2007
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人