- 博客(136)
- 资源 (8)
- 收藏
- 关注
原创 百度三面原创算法,求资源分配最有效的组合(回溯)
题目现有资源总量为p,一个数组表示每个任务所需要的资源量。请输出在优先保证资源分配的最多的情况下任务量最大。例子:p=20arr=[2,8,3,1,9]输出:2 8 1 9解释:2+8+1+9=20,资源可以全部分配例子:p=28arr=[2,8,3,1,4,9]输出2,8,3,1,4,9解释:没有相加可以等于28的组合, 最接近的是所有的和=28思路思路就是利用回溯法找所有相加组合中最接近p的组合,如果能等于p那么就取数量最多的那个组合如果有更有效的思路欢迎指正代码
2021-11-21 13:46:39
530
原创 Dubbo学习-入门
Dubbo 架构节点说明provider : 服务提供方container : 服务的运行容器consumer : 调用远程服务的消费方monitor : 统计服务的调用次数和调用时间的监控中心registry : 注册中心(服务的注册与发现)调用关系说明容器启动,加载,运行服务的提供者;服务提供者启动之后向注册中心注册一下自己提供的服务服务的消费者在启动之后向注册中心订阅自己需要的服务注册中心此时会想消费者返回服务提供者的地址列表,如果列表的地址有变更,那么注册中心会基于长连
2021-05-25 10:18:45
227
原创 图的题目基础类与方法
写在最前本文章的思路都是看左神的算法课学到的,并不一定每个题目都会用到全部的属性,比如边没有权重的时候边类的weight就是用不上的,随机应变才是王道。其中比较简单的图类型的题基本上图构建出来了题目也就解得差不多了,希望能帮到大家。点类属性解释:value:点的值in:点的入度out:点的出度nexts:从此点出发能直接到达的点edges:一般指与此点相连的边,也可指代从此点出去或者进入的边,具体情况具体分析class Node { public int value;
2021-04-14 16:16:21
852
5
转载 静态代理和动态代理
1 什么是代理代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问。举个例子,如A对象有若干个方法,这时A对象对B对象进行委托授权,B对象便成了A对象的代理方,因此B对象便可对A对象进行访问并调用A对象的方法,相当于A对象调用自己的方法。现实生活中就行火车票代售点一样。代理的原理:代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操
2021-03-28 11:47:14
278
原创 消息队列
消息队列其实很简单“RabbitMQ?”“Kafka?”“RocketMQ?”…在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。一 什么是消息队列我们可以把消息队列看作是一个存放消息的容器,当我们需要使用消息
2021-03-07 21:31:25
262
原创 什么是 RPC?
什么是 RPC?RPC原理是什么?什么是 RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。RPC原理是什么?我这里这是简单的提一下,详细内容可以查看下面这篇文章:http://w
2021-03-07 21:30:47
519
1
原创 Dubbo介绍
一 重要的概念1.1 什么是 Dubbo?Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo 目前已经有接近 23k 的 Star ,Dubbo的Github 地址:https://github.com/apache/
2021-03-07 21:30:10
1021
原创 ZooKeeper进阶
2. 什么是ZooKeeperZooKeeper 由 Yahoo 开发,后来捐赠给了 Apache ,现已成为 Apache 顶级项目。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的 ZAB 协议完成的。其主要功能包括:配置维护、分布式同步、集群管理、分布式事务等。简单来说, ZooKeeper 是一个 分布式协调服务框架 。分布式?协调服务?这啥玩意?????????其实解释到分布式这个概念的时候,我发现有些同学并不是
2021-03-07 21:17:56
261
原创 ZooKeeper介绍
2. ZooKeeper 介绍2.1. ZooKeeper 由来正式介绍 ZooKeeper 之前,我们先来看看 ZooKeeper 的由来,还挺有意思的。下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节,推荐大家阅读一下:ZooKeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以
2021-03-07 21:09:48
590
转载 redis持久化
很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。**Redis不同于Memcached的很重一点就是,Redis支持持久化,而且支持两种不同的持久化操作。Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF).这两种方法各有千秋,下面我会详细这两种持久化方法是什么,怎么用,如何选择适合自己的持久
2021-03-07 08:16:28
197
转载 redis详解
1. 简单介绍一下 Redis 呗!简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。另外,Redis 除了做缓存之外,Redis 也经常用来做分布式锁,甚至是消息队列。Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。2. 分布式缓存常见的技术选型方案有哪些?分布式缓存的话,使用的比
2021-03-07 08:11:00
388
转载 mysql的事务隔离
事务隔离级别(图文详解)什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事务的特性(ACID)原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部
2021-03-07 08:01:09
225
转载 mysql索引
为什么要使用索引?通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。帮助服务器避免排序和临时表。将随机IO变为顺序IO可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。索引这么多优点,为什么不对表中的每一个列创建一个索引呢?当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。索引需要占物理空间,除了数据表占数据空间之外,每一个索引还
2021-03-07 07:54:59
248
转载 一条SQL语句在mysql中是如何执行的
一 MySQL 基础架构分析1.1 MySQL 基本架构概览下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组件的作用。连接器: 身份认证和权限相关(登录 MySQL 的时候)。查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。分析器: 没有命中缓存的话,SQL 语句就会经过分
2021-03-07 07:44:23
222
转载 计算机网络-基础知识
一 OSI与TCP/IP各层的结构与功能,都有哪些协议?学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。1.1 应用层应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用
2021-03-06 21:46:36
577
转载 Spring系列-设计模式
控制反转(IoC)和依赖注入(DI)IoC(Inversion of Control,控制反转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容器管理对象,你只管使用即可),从而降低代码之间的耦合度。IOC 是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置
2021-03-06 16:25:44
223
转载 Spring系列-常见问题总结
1. 什么是 Spring 框架?Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring 官网:https://spring.io/。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Core Container 中的 Core 组件是Spring 所有组件的核心,Beans 组件
2021-03-06 16:24:18
238
转载 Spring系列-事务总结
0.前言本文转载于github开源项目:https://github.com/Snailclimb/JavaGuide。1. 什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。Guide 哥:大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。 public void saveP
2021-03-06 16:22:39
200
转载 Spring系列-SpringBoot+Spring常用注解
0.前言本文转载于github开源项目:https://github.com/Snailclimb/JavaGuide。⭐spring springmvc和springboot的区别SpringBoot 的自动配置机制@Autowired 和@Resource的区别和联系Resource 按照名称进行匹配 Autowired 按照类型进行匹配Autowired 是spring的注解 Resource是java的一个注解1. @SpringBootApplication这里先单独拎出
2021-03-06 16:18:35
308
转载 Spring系列-SpringBean
前言在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢? 例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入S
2021-03-06 16:16:38
203
转载 java复习- 类与类加载器
类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。双亲委派模型启动类加载器这个类加载器负责加载存放在
2021-03-03 17:58:34
389
1
原创 java复习-day5-经典的垃圾收集器
经典的垃圾收集器新生代的收集器Serial收集器最基础,历史最悠久的收集器,单线程工作,收集垃圾时必须暂停其他线程才能工作客户端模式默认收集器简单高效复制算法工作流程:ParNew收集器比1号收集器多了可以多线程并行执行GX线程缺点:对CPU的依赖性比较高工作流程:Parallel Scavenge收集器关注的侧重点在于吞吐量基于复制算法也可以并行手机Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throu
2021-02-23 20:40:17
201
原创 java基础复习-day4-JVM
自动内存管理运行时数据区线程独享虚拟机栈与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧[1l ( Stack Frame〉用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。“栈”通常就是指这里讲的虚拟机栈,或者更多
2021-02-22 18:31:51
279
转载 java基础复习-day2
反射※获取类信息的三种方式类名.class对象.getClass();Class.forName(“全限定名->包名+类名”);能否获取方法的参数名?我们为什么能/不能获得到方法的参数名?如何通过类信息创建这个类的的对象?newlnstance()String s = “java.util .Random”;Object m = Class.forName(s) .newlnstance();e.getClass0.newlnstance();invoke ()反射的
2021-02-22 18:31:24
246
原创 java基础复习 day-3
数据结构数组逻辑地址 物理地址连续随机查找-通过下标查找 O1数组对象大小不可变三种初始化扩容机制-全复制原数组 不会自动扩容数组的初始化值为零值 0 null falseArrayList自动扩容的长度有限制吗-int最大值默认初始值10扩容1.5倍满了扩容线程不安全new ArrayList(100)这样有啥用减少自动扩容的次数缩容 手动调用 会将数组的长度缩减至现有元素的个数,用于节省空间栈先进后出代码队列先进先出代码作业 用双
2021-02-21 20:02:13
211
转载 java基础复习 day-1
基本类型整形byteJava中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0int整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0long长整型,在内存中占64位,即8个字节-263~263-1,默认值0L浮点型float浮点型,在内存中占32位,即4个字节,用于存储带小数
2021-02-19 19:43:29
333
转载 Vue入门
Vue基础语法传送门VUE基础语法 在学习vue之前,我们应了解一下什么是vue.js?一、什么是Vue.js?Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。Vue.js借鉴了Angular以及React的一些核心思想,综合各自的长处进行了操作以及性能等方面的优化,进而打造出一款性能更优,学习更容易的MVVM框架。二、学习Vue基本语法1、v-bind
2021-02-19 18:32:08
268
原创 Redis学习之nosql概述
一、为什么要用Nosql早期模型早期一个基本的网站访问量一般不会太大,单个数据库足够了。而且早期更多的使用的是静态的html网页,服务器压力很小,但是问题随之而来:这种网站的瓶颈是什么?数据量很大的时候,一个机器放不下。如果一个一个表的数据超过了300万,那么就一定要建立索引(B+Tree)了,如果索引太大了,一个机器内存也放不下访问了(读写混合),一个服务器承受不了只要有了以上三种情况之一,那么必须要进行架构升级Memcached(缓存)+Mysql+垂直拆分 (读写分离)网站80
2020-11-08 17:20:38
2940
转载 TCP/IP的三次握手和四次挥手
写在最前本文是借鉴了传送门的博客并加上了一些自己的理解,侵删TCP三次握手所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:在这里插入图片描述(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(
2020-10-21 08:53:14
2919
原创 SpringBoot + mybatis-plus搭建过程
一、创建项目1.File->new->project;2.选择“Spring Initializr”,点击next;(jdk1.8默认即可)3.完善项目信息组名可不做修改,项目名可做修改;最终建的项目名为:test,src->main->java下包名会是:com->example->test;点击next;4.Web下勾选Spring Web Start,(网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没有此选项,
2020-10-01 12:34:06
5005
原创 HashMap的遍历
for(Map.Entry<String, String> entry: map1.entrySet()){ System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue()); }
2020-07-29 08:59:08
8892
原创 Controller上传图片,数据库存路径(解决了每次重启项目图片丢失问题)(JAVA)
写在前面本例子是从前台拿到图片和其他信息之后把图片用java通过流的方式存到项目的某个目录下,然后把路径存到数据库里,如果用base64的形式来存图片的话数据量比较大,不好读取。故采用这种方法。代码代码解析:1. AjaxResult 是一个与ajax对接的实体类,Region 是要存到数据库的实体类2. String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();这一句代码是获取到了target目录的根目
2020-07-28 15:03:02
9333
转载 腾讯云短信接口实现(亲测可用,不能用来捶我)
写在最前本文部分内容思路来源于博客:跳转连接准备工作首先要注册腾讯云账号注册完成之后在云产品搜索密钥,点进去默认应该是没有密钥的,新建一个新建之后SecretId和SecretKey之后会用到然后进入短信,创建签名创建根据要求填写相关信息签名审核完成之后创建模板8.审核完成之后前期准备工作就完成了项目导入依赖 <dependency> <groupId>com.tencentcloudapi</groupId>
2020-07-25 18:05:06
13406
5
原创 js分割thymleaf的字符串
要点直接用双引号把themleaf的表达式包起来就是字符串格式了,可以直接split否则会出现这种情况代码var transport = "[[${travelInfomation.transport}]]".split(",");
2020-06-29 17:03:11
10901
原创 thymleaf格式化LocalDateTime对象
添加maven依赖<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> <version>3.0.1.RELEASE</version></dependency>写法(亲测可用)<span th:text="$
2020-06-29 16:56:57
11062
转载 每天一个linux命令(7):mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。1.命令格式:mv [选项] 源文件或目录 目标文件或目录2.命令功能:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录
2020-06-19 06:55:06
10848
转载 每天一个linux命令(4):mkdir命令
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。1.命令格式:mkdir [选项] 目录…2.命令功能:通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。3.命令参数:-m, --
2020-06-18 07:36:25
10742
原创 归并排序
归并排序(Merge Sort)和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。算法描述把长度为n的输入序列分成两个
2020-05-21 19:48:57
10746
原创 快速排序
快速排序快速排序是不稳定的排序排序最快的时间复杂度n*log(n),基本上每种排序都是优化排序的次数,每一次确定一个数都是O(n)级别,但是排序的次数各种排序算法是不一样的功能描述:快速排序的优化在于如何选择基准数每次选一个基准数(默认是第一个),把小于基准数的数据放到左边子数组,大于基准数的数据放到右边子数组,然后分别对左右子数组进行递归操作第一次排好一个数第二次排好三个数第三次排好七个数依次类推每次确定的数的个数是以指数增长的, 快速排序的优化: 一、三数取中法,解决数据基本有
2020-05-21 19:39:22
10673
基于java swing的人脸识别小软件.zip
2020-07-29
java实现计算器.zip
2019-12-16
kafka 消费失败方案
2022-09-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人