自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 图的深度优先遍历和广度优先遍历

图的表示邻接矩阵利用两个数组来表示图: 一维数组存储图中顶点信息,二维数组(邻接矩阵)存储图中的边或弧的信息。无向图的边数组是一个对称矩阵,有个顶点的话,则邻接矩阵就是一个的方针 某个顶点的度,其实就是这个顶点在邻接矩阵中第行或(第列)的元素之和; 顶点的所有邻接点就是将矩阵中第行元素扫描一遍,为1就是邻接点; 有向图讲究入度和出度,顶点的的入度为1,正好是第列各数之和。顶点的出度为2,即第行的各数之和邻接表邻接矩阵是不错的一种图存储结构,但是,对于边数相对顶点较少的图,这种结.

2020-12-31 22:13:10 515 1

原创 矩阵最长递增路径

矩阵最长递增路径解题思路深度优先搜索,由于序列递增,因此无需回溯实现代码import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 递增路径的最大长度 * @param matrix int整型二维数组 描述矩阵的每个数 * @return int整型 */ private int res = Intege

2020-12-28 09:03:52 162

原创 判断t1树中是否有与t2拓扑树拓扑结构完全相同的子树

判断t1树中是否有与t2拓扑树拓扑结构完全相同的子树解题思路中序遍历root1和root2,获得字符串,判断roo1是否为root2的字串实现代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** *

2020-12-28 08:08:40 207

原创 mybatis中#和$的区别

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进

2020-12-27 12:47:17 130 1

原创 找到搜索二叉树中两个错误的节点

找到搜索二叉树中两个错误的节点解题思路中序遍历二叉搜索树,用指针pre记录上一个访问的节点 ,找到两个逆序处cur.val < pre.val即可,注意的是第一次first=[prev, cur]中的pre, 第二次second=[prev, cur]中的cur。 因为题意最终要求返回的结果升序排列,所以返回new int{second.val, first.val}实现代码import java.util.*;/* * public class TreeNode { *

2020-12-27 12:03:46 1336 6

原创 BASE理论

Base理论BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。 基本可用:分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。如,电商网站交易付款出 现问题了,商品依然可以正常浏览。 软状态:由于不要求强一致性,所以BASE允许系统中存在中间状态(也叫软状态),这个状态不影响系统可用 性,如订单的"支付中"、“数据同步中”等状态,待.

2020-12-26 22:29:18 726

原创 分布式事务基础理论

目录CAP理论C - ConsistencyA - AvailabilityP - Partition toleranceCAP组合方式1、上边商品管理的例子是否同时具备 CAP呢?2、CAP有哪些组合方式呢?总结CAP理论CAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。结合电商系统中的一些业务场景来理解CAP整体流程如下:商品服务请求主数据库写入.

2020-12-26 21:28:20 88

原创 分布式事务概念

本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。本地事务具有基本的四大特性:ACID特性分布式事务 随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,下图描述了单体应用向微服务的演变:分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操 作.

2020-12-26 21:04:05 145

原创 表达式求值

牛客地址解题思路初始化sign = '+'遍历字符数组(while i < cArray.length): 如果为运算符,则用其更新sign符号,continue 否则:(需要计算待加入栈中的num值, 有以下两种情况)如果当前c = '(', 则找到其对应的配置的')’处j,递归调用函数 num = solve(i + 1, j), i = j +1;否则:i一直++,直到彻底得到一个完整的数字 num 根据之前的sign为;对应得往栈中添加合理的数...

2020-12-26 20:13:58 104

原创 Java中的锁

Java中的锁主要用于保障多并发线程情况下数据的一致性。 在多线程编程中为了保障数据的一致性,我们通常需要在使用对象或者方法之前加锁,这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会进入阻塞队列等待锁的释放,直到其他线程执行完成并释放锁,该线程才有机会再次获取锁进行操作。 这样就保障了在同一时刻只有一个线程持有该对象的锁并修改对象,从而保障数据的安全。 锁从乐观和悲观的角度可分为乐观锁和悲观锁 从获取资源的公平性角度可分为公平锁和非公平锁 从

2020-12-24 22:52:11 138 1

原创 Redis原理以及底层数据结构初探

存储海量数据结构1. 链表, B+树,数组16个数据库object encoding some_int:可以查看redis底层数据结构。为intraw string embstr(底层数据结构)redis柔性策略设计原理根据数据结构的长度来决定数据的范围。String类型sdshdr5sdshdr8sdshdr16sdshdr32sdshdr64typedef char *sds struct_attribute_((__package)) sd.

2020-12-24 12:50:46 236

原创 技术总体架构

技术架构Spring Boot Spring Spring MVC, MyBatis Redis, Kafka, Elasticsearch (提高性能方面) Spring Security, Spring Actuator 提高性能方面 使用了redis, Kafka, Elasticsearch 零碎技术: 怎么生成验证码,怎么生成长图并传递至云服务器, 怎么实现敏感词过滤,怎么实现定时启动任务。开发环境利用Maven构建 创建 编译 测试和生成文档等集成开发环境:...

2020-12-23 21:01:30 559

原创 CloudSimPy

特征提取方面: 共8个参数DRL.py之中的extract_features <machine + task>machine: cpu, memory, powerpower的归一化公式( (pow - 45) / 627task: 在feature_function.py中 : [cpu, memory, duration, task.waiting_task_instances_number]...

2020-12-23 09:39:58 599

原创 矩阵乘法

牛客地址解题思路模拟矩阵乘法,注意循环中是使用的am,an,还是bm和bn实现代码import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param a int整型二维数组 第一个矩阵 * @param b int整型二维数组 第二个矩阵 * @return int整型二维数组 */

2020-12-22 17:14:02 68

原创 有关阶乘的两个问题

牛客地址解题思路要相乘产生0,那肯定是与5相乘的结果。对n!如果分解质因数的话,结果为0的个数只与2与5的个数有关,每一次2*5就能产生一个0。因为2的个数肯定要大于5的个数,所以只要关注5的个数就可以了.实现代码import java.util.*;public class Solution { /** * the number of 0 * @param n long长整型 the number * @return long长整型

2020-12-22 17:01:03 133

原创 分糖果问题

牛客地址解题思路来回倒一遍,从左往右,如果arr[i] > arr[i-1] 则 tmp[i] = tmp[i-1] +1从右往左,如果arr[j] > arr[j+1] 则 tmp[i] = Math.max(tmp[i], tmp[i+1] + 1); //注意:这里不是直接的tmp[i+1] + 1, 而是还需要和tmp[i]比较,选择其中最大的那个源代码如下import java.util.*;public class Solution { /**

2020-12-22 16:37:36 149

原创 将升序数组转化为平衡二叉搜索树

牛客地址解题思路递归求解实现代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param num int整型一维数组 * @return TreeNode类

2020-12-21 16:15:14 209

原创 旋转数组

牛客地址解题思路三次反转实现代码import java.util.*;public class Solution { /** * 旋转数组 * @param n int整型 数组长度 * @param m int整型 右移距离 * @param a int整型一维数组 给定数组 * @return int整型一维数组 */ public int[] solve (int n, int m, int[] a)

2020-12-20 18:46:44 69

原创 N皇后问题

牛客地址解题思路利用boolean[] visited数组加以辅助, 表示第i个位置是否可以放置。nums[i] 表示第i个皇后放置的列号。dfs(int[] nums, int cur, int n):将第cur个皇后进行放置在每次放置前,先遍历之前已经完成放置的cur - 1个皇后。for i = 0 to cur - 1 int v = nums[i];//得到皇后的位置,将visited[v]设置为false, 表示第cur个皇后不能放置在v列。 ...

2020-12-20 18:35:58 107

原创 输出二叉树的右视图

牛客地址实现代码import java.util.*;class TreeNode{ int val; public TreeNode(int val){ this.val = val; } TreeNode left; TreeNode right;}public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 求二叉树的右视图

2020-12-19 21:27:33 206 1

原创 换钱的最少货币数

牛客地址解题思路: 动态规划(不能使用贪心!!!)1. 状态转移方程2. 初始化边界注意初始化为MAX_VALUE - 1, 因为后面有加1的操作,直接设置为MAX_VALUE的话结果不对。实现代码import java.util.*;public class Solution { /** * 最少货币数 * @param arr int整型一维数组 the array * @param aim int整型 the target

2020-12-19 20:17:12 120 1

原创 Java JUC线程

volatile变量的可见性和原子性问题(不可保证)volatile变量不能保证原子性原子性:也叫作不可分割性(!!!京东面试题)i++:涉及到了三个操作: 读-改-写(这三步是可以分割的)对于每个线程中的i变量int temp = sn;sn = temp + 1;如果不用volatile修饰这两步操作都是在各自的线程缓存中进行的但如果直接利用volatile修饰,可以看成是直接在内存中进行操作。如何保证操作的原子性呢?-jdk1.5以后提供了原子变量(类...

2020-12-19 13:27:17 452 2

原创 Tomcat面试题

目录Tomcat是什么?Tomcat的缺省端口是多少,怎么修改Tomcat 有哪几种Connector 运行模式(优化)?Tomcat有几种部署方式?tomcat容器是如何创建servlet类实例?用到了什么原理?Tomcat工作模式进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类Tomcat顶层架构Connector和Container的微妙关系Connector架构分析Container架构分析Container如何处理请求的Tomc.

2020-12-19 10:20:04 431 1

原创 一致性Hash原理

博客地址

2020-12-18 21:38:17 78 1

原创 优先队列和堆

首先把数组的n个数建成一棵大小为的大根堆,堆顶是整个所有元素中的最大值,把堆顶元素和堆的最后一个位置的元素进行交换,然后把最大值脱离出整个堆结构,放在数组的最后位置,作为数组的有序部分保存下来,接下来把大小为n-1的堆从上往下进行大根堆的调整(向下调整),调整出n-1个数中的最大值放在堆顶的位置,然后再把堆顶的值和整个堆中最后一个位置的值交换,同样作为整个数组的有序部分脱离出整个堆, 堆的大小从n-1变成了n-2,重复上面的过程,不断从堆顶往下调整,每次堆的大小都会减1, 数组的有序部分也会依次增加,当

2020-12-18 10:17:02 135

原创 缺失数字

题目描述从0,1,2,...,n这n+1个数中选择n个数,组成有序数组,找出这n个数中缺失的那个数,要求O(n)尽可能小。解题思路-位运算假设缺的数字为xa可以表示为下标范围为因此从到,进行异或操作,res初始化为, 就能得到缺失的数字实现代码 */ public int solve (int[] a) { // write code here int len = a.length; int res = le.

2020-12-17 21:57:43 129

原创 数组中的逆序对

牛客地址解题思路利用归并排序(a) 把长度为4的数组分解成两个长度为2的子数组; (b) 把长度为2的数组分解成两个成都为1的子数组; (c) 把长度为1的子数组合并、排序并统计逆序对; (d) 把长度为2的子数组合并、排序,并统计逆序对;合并并统计逆序对的过程先用两个指针指向两个子数组的末尾,并每次比较两个指针指向的数字。如果第一个数组中的数字大于第二个数组中的数字,则会构成逆序对,并且增加的逆序对的数目等于第二个子数组中属于数字的个数。实现代码public...

2020-12-17 21:32:21 91

原创 环形链表的约瑟夫问题

牛客地址解题思路import java.util.*;public class Solution { /** * * @param n int整型 * @param m int整型 * @return int整型 */ class Ring{ class RingNode{ int val; RingNode next; public

2020-12-17 20:43:17 92

原创 单例模式

目录单例模式单例设计模式八种方式(1)饿汉式静态常量应用实例(2)饿汉式静态代码块(3) 懒汉式非线程安全写法(4) 懒汉式线程安全写法(5) 懒汉式(线程安全,同步代码块)(6) 双重检查机制(7) 静态内部类(8) 枚举类单例模式的使用场景单例模式所谓的单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且只提供一个获取其对象实例方法(静态方法)。单例模式的好处是可以重复的使用这个唯一的对象。比如单例设计模式八种

2020-12-17 17:28:45 238

原创 工厂模式之JDK应用场景和总结

工厂模式的意义将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦,从而提高项目的扩展和维护性。 三种工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式) 设计模式的依赖抽象原则创建对象实例时,不要直接new类,而是把这个new类的动作放在一个工厂的方法中,并返回。(依赖一个抽象的, 类似于缓冲层) 不要让类继承具体类,二是继承抽象类或者是实现interface(接口)。 不要覆盖基类中已经实现的方法。...

2020-12-17 15:28:32 307

原创 工厂模式之抽象工厂模式

抽象工厂模式:定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合 从设计层面上看,抽象工厂模式是对简单工厂模式的改进(或者称为进一步的抽象) 将工厂抽象成两层,AbsFactory(抽象工厂)和具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂类变成了工厂簇,更利于代码的维护和扩展。...

2020-12-17 15:14:55 100

原创 工厂模式之工厂方法模式

看一个新的需求披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza, 北京的胡椒pizza, 或者是伦敦的奶酪pizza、伦敦的胡椒奶酪pizza思路1使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory, LDPizzaSimpleFactory等等。考虑到项目的规模,以及软件的可维护性,可扩展性并不是特别好。思路2, 使用工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。 工厂...

2020-12-17 14:49:23 108

原创 工厂模式之简单工厂模式

目录项目引入传统方式简单工厂模式项目引入看一个披萨的项目: 要便于披萨种类的扩展,要便于维护。(1)披萨的种类很多(比如GreekPizz, CheesePizz等) (2) 披萨的制定有prepare bake, cut, box (3) 完成披萨点订购功能传统方式Pizza.javapackage factory.simplefactory;//将Pizza做成抽象的public abstract class Pizza { protected S

2020-12-17 12:01:22 108

原创 随时找到数据流中的中位数

利用一个大顶堆maxHeap,一个小顶堆minHeap,保存元素(在添加的过程中,始终保持大顶堆中的所有元素都小于小顶堆中的元素,即maxHeap.peek() < minHeap.peek())1. 对于吐出的每一个元素num, 如果为添加(1) 优先考虑加入maxHeap, 加入条件是:maxHeap为空; num < maxHeap.peek(); minHeap非空且num < minHeap.peek();(2) 否则加入minHeap;(3) 调整这两个堆

2020-12-17 10:20:54 206

原创 二进制中1的个数

牛客地址实现代码public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ count ++; n &= (n-1); } return count; }}

2020-12-17 09:07:47 58 1

原创 二叉树中是否存在节点和为指定值的路径

牛客地址解题思路递归求解,只要一个表达函数即可实现代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @param su

2020-12-16 20:43:51 104

原创 spring boot

AOP: BeanPostProcessor Spring Boot:BeanFactoryPostProcessorspring boot依托于spring做一些准备工作,在启动sping boot程序的时候最终也是需要调用spring中的方法容器的创建和bean的创建有哪些准备工作?自动装配:在invokeBeanFactoryPostProcessor(beanFatory方法中完成的) 内嵌Tomcat 核心点(监听器 listener) - 执行到不同的点的时候要做什么事 A

2020-12-16 10:28:27 97

原创 Java基础

目录一、集合(1)List:可重复1. ArrayList:基于数组实现,增删慢,查询快,线程不安全.2. Vector:基于数组实现,增删慢,查询快,线程安全3.LinkedList:基于双向链表实现,增删快,查询慢,线程不安全(2) Queue 队列(3) Set:不可重复1. HashSet: HashTable实现,无序2. TreeSet: 二叉树实现3. LinkHashSet:HashTable实现数据存储,双向链表记录顺序(4) Map...

2020-12-15 21:51:57 763

原创 JVM

1. JVM的运行机制JVM是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆,一个方法区和一个垃圾回收器。JVM运行在操作系统上,不予硬件设备直接交互。Java源文件在通过编译器之后被编译成相应的.Class文件(字节码 文件), class文件又被JVM中的解释器编译成机器码在不同的操作系统(Windows、Linux、 Mac)上运行。每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。在一个Java

2020-12-15 19:09:30 81

原创 最长公共前缀

牛客地址import java.util.*;public class Solution { /** * * @param strs string字符串一维数组 * @return string字符串 */ public String longestCommonPrefix (String[] strs) { // write code here if(strs == null || strs.lengt

2020-12-15 18:26:03 65

generatorSqlmapCustom.rar

mybatis逆向工程生成Entity/Mapper/Mapper.xml;mybatis逆向工程生成Entity/Mapper/Mapper.xml;mybatis逆向工程生成Entity/Mapper/Mapper.xml;mybatis逆向工程生成Entity/Mapper/Mapper.xml;

2020-10-08

Tensorflow-物体检测-Faster-Rcnn解读

物体检测一些列模型视频讲解,tensorflow下的实现版本。

2018-12-31

空空如也

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

TA关注的人

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