自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 算法题解 —— 链表(15-19)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。15. 单链表的选择排序:题目描述:给定一个无序单链表的头节点 head,实现单链表的选择排序。要求:额外空间复杂度为 O(1)解题思路:开始时默认整个链表都是未排序的部分,对于找到的第一个最小值节点,肯定是整个链表的最小值节点,将其设置为新的头节点,记为 newHead每次在未排序的部分中找到最小值的节点,然后把这个节点从未排序的链表中删除,删除的过程当然要保证未排序部分的链表在结构上不至于断开把删除的节点

2021-01-30 14:10:58 168 1

原创 算法题解 —— 链表(11-14)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。11. 将单链表的每 K 个节点之间逆序:题目描述:给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每 K 个节点之间逆序,如果不够 K 个节点一组,则不调整最后几个节点。解题思路:方法一:利用栈结构从左到右遍历链表,如果栈的大小不等于 K,就将节点不断压入栈中当栈的大小第一次达到 K 时,说明第一次凑齐了 K 个节点进行逆序,从栈中依次弹出这些节点,并根据弹出的顺序重新连接,这一组逆序后,

2021-01-30 14:09:11 169 1

原创 算法题解 —— 链表(6-10)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6. 环形单链表的约瑟夫问题:题目描述:输入:一个环形单向链表的头节点 head 和报数的值 m返回:最后生存下来的节点,且这个节点自己组成环形单向链表,其他节点都删掉进阶问题:如果链表节点数为 N,想在时间复杂度为 O(N) 时完成原问题的要求解题思路:普通解法:如果链表为空或者链表节点为1,或者 m 的值小于1,则不用调整就直接返回当环形链表中遍历每个节点,不断转圈,不断让每个节点报数当报数到达

2021-01-27 22:12:22 349 1

原创 算法题解 —— 链表(1-5)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。第二章 链表问题1. 打印两个有序链表的公共部分:题目描述:给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。解题思路:因为是有序链表,所以从两个链表的头部开始进行如下判断:如果 head1 的值小于 head2,则 head1 往下移动如果 head2 的值小于 head1,则 head2 往下移动如果 head1 的值与 head2 的值相等,则打印这个值,然后 head1

2021-01-21 22:33:53 115

原创 源码剖析集合类——LinkedList

此博客用于个人学习,来源于书籍和网上,对知识点进行一个整理。List 集合的典型实现——LinkedList 类:这是一个由链表构成的类。链表是一种常见的基础数据结构,是一种线性表,但是它并不会按线性的顺序存储数据,而是在每一个字节里存储到下一个节点的指针。使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取数据的有点,同时链表由于增加了节点的指针域,空间开销较大。1. 字段属性://链表元素(节点)的个数tra

2021-01-20 20:10:05 86

原创 源码剖析集合类——ArrayList

此博客用于个人学习,来源于书籍和网上,对知识点进行一个整理。List 集合的一种典型实现——ArrayList 类:ArrayList 就是动态数组,它能够动态的增加和减少元素,实现了 ICollection 和 IList 接口以及灵活地设置数组的大小。它是一个用数组实现的集合,支持随机访问,元素有序且可以重复。1. 字段属性://集合的默认大小private static final int DEFAULT_CAPACITY = 10;//空的数组实例private static fin

2021-01-20 16:59:47 81

原创 源码剖析集合类——Arrays

此博客用于个人学习,来源于书籍和网上,对知识点进行一个整理。重要的工具类—— Arrays 类:Java.uti.Arrays 是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名 Arrays 调用。1. asList 方法:该方法的作用是返回由指定数组支持的固定大小列表。/** * 返回指定数组支持的固定大小列表:要注意到这里的参数是泛型 * * Returns a fixed-size list backed by the specifi

2021-01-19 10:30:34 114

原创 算法题解 —— 栈(6-9)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6. 生成窗口最大值数组:题目描述:有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。例如,数组为 [4,3,5,4,3,3,6,7],窗口大小为3时:[4 3 5] 4 3 3 6 7 窗口中最大值为54 [3 5 4] 3 3 6 7 窗口中最大值为54 3 [5 4 3] 3 6 7 窗口中最大值为54 3 5 [4 3 3] 6 7 窗口中最大值为44 3

2020-12-25 20:49:35 179

原创 剑指 offer 篇:11 - 15

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。11.剑指 Offer 13. 机器人的运动范围题目描述:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=

2020-12-19 16:30:43 77 1

原创 算法题解 —— 栈(1-5)

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。第一章 栈和队列1. 设计一个有 getMin 功能的栈:题目描述:实现一个特殊的栈,在实现栈的基础上,再实现返回栈中最小元素的操作。解题思路:在设计时,我们使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为 stackData;另一个栈记为 stackMin。具体的实现方式有两种:(一般情况下)数据压栈时,先对 stackMin 进行判断,如果小于等于栈顶元素,压入 stack

2020-12-19 14:22:36 279 2

原创 剑指 offer 篇:6 - 10

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6.剑指 Offer 09. 用两个栈实现队列题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]

2020-12-12 14:43:30 92

原创 剑指 offer 篇:1 - 5

内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。1.剑指 Offer 03. 数组中重复的数字题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3解题思路:Set 集合存储,循环查找有无重复。原地置换,其实与前一

2020-12-12 14:41:23 89

原创 第十七章 广告系统的可用性测试

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 前期准备:在进行测试前,需要对 SpringCloud 的核心组件之一——Hystrix Dashboard 有个了解。1.1 Hystrix Dashboard 是什么:Hystrix 提供了对于微服务调用状态的监控信息,但是需要结合 spring-boot-actuator 模块一起使用。Hystrix Dashboard 主要用来实时监控 Hystrix 的各项指标信息。通过 Hystrix Dashboard 反馈的实时信息,可以

2020-11-23 21:58:18 458 2

原创 第十六章 广告检索系统(二)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 根据匹配信息实现对推广单元的再筛选:1.1 完善 UnitDistrictIndex:之前定义的 UnitDistrictIndex 类中并没有 match 的实现方法,需要我们去添加。public boolean match(Long adUnitId, List<DistrictFeature.ProvinceAndCity> districts){ if (unitDistrictMap.containsKey(a

2020-11-18 21:48:35 356

原创 第十五章 广告检索系统(一)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 广告检索服务功能的介绍:前面针对我们的广告检索服务,我们进行了全量索引和增量索引的设计与实现,接下来就是对于广告检索系统的功能进行一个介绍。广告检索服务是我们广告系统中最重要的功能,...

2020-11-18 15:36:09 1476

原创 从架构演变来看分布式

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 背景与前言:现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统分布式数据库系统等,当然这些

2020-11-17 09:17:31 211

原创 第十四章 广告检索系统——Binlog 增量数据的投递

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 增量数据投递前的准备工作:MySQL 增量数据的投递核心目的是构建检索服务中的增量索引,也就是说 IncrementListener 中使用到的 Isender 的方法去投递增量数据。首先我们观察到 AdPlanTable 中有两个特殊的索引——startDate 和 endDate。Long 和 Integer 这种类型的数据对于 MySQL 的表达不会有问题。但对于 Date 这种类型,Binlog 序列化成字符串,所以说我们需要去搞清楚

2020-11-17 01:59:36 228

原创 第十二章 广告检索系统——监听 Binlog 构造增量索引(一)

此博客用于个人学习,来源于网上,对知识点进行一个整理。

2020-11-15 17:49:10 345

原创 第十三章 广告检索系统——监听 Binlog 构造增量索引(二)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 根据 Binlog 对象构造增量数据:接下来利用 Binlog 对象去构造增量数据,然后将增量数据投递出去,构建增量索引。在构建增量数据之前,先去做一些准备工作。因为我们将 Binlog 解析出来的对象看起来还是比较复杂,里面一些元素对于投递工作去构建增量索引是不需要的。所以我们需要对这个对象进行简化。1.1 准备工作:@Data@NoArgsConstructor@AllArgsConstructorpublic class MyS

2020-11-15 17:48:32 236

原创 第十一章 广告检索系统——加载全量索引(二)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 索引操作:我们之前实现了将数据库中的索引信息导入到文件中, 目的是在检索的过程中实现数据的加载,构造全量索引。 但是由于写入文件的数据格式和索引的数据格式不一样,于是我们要定义好索引的操作。但由于我们之前定义了索引的增删改查方法,于是我们只需要直接调用就可以实现从文件中获取信息构造全量索引。1.1 索引操作 handler 的定义与说明:定义一个枚举,对应索引的操作类型。public enum OpType { ADD,

2020-11-14 23:58:25 253

原创 第十章 广告检索系统——加载全量索引(一)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 导出表数据定义:接下来来实现加载全量索引的服务,加载全量索引就需要我们将数据库内广告主投放的数据导出到文件里面。一般情况下,这种功能是定义在索引相关操作的服务中,但是这份索引数据是针对于所有服务的,于是我们将其定义在 ad-common 中,其他服务都可以调用。1.1 定义文件的存储位置:首先,需要确定的就是文件存储到哪个地方,于是先定义一个类,在其中确定好文件的存储路径和各个索引对应的存储文件名称。public class DConst

2020-11-14 17:38:18 317

原创 第九章 广告检索系统——广告数据索引的设计与实现(2)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 创意索引对象定义与服务实现:1.1 建立索引对象:其中需要注意的是 update 方法,由于不一定是每个值都需要更新,所以需要添加这个方法来实现更新所需的数据。@Data@NoArgsConstructor@AllArgsConstructorpublic class CreativeObject { private Long adId; private String name; private Intege

2020-11-08 12:30:04 450

原创 第八章 广告检索系统——广告数据索引的设计与实现(1)

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 广告数据索引:设计索引的目的就是为了加快检索的速度,将原始数据抽象,规划出合理的字段,在内存中构建广告数据索引。记住,并不是所有的数据都需要放在索引里。1.1 广告数据索引设计:1)正向索引:定义:通过唯一键/主键生成与对象的映射关系。核心思想是通过一个键找到一个对象,且这种关系是确定的,即唯一键对应到唯一的对象。主要应用在推广计划,推广单元和创意中。例子:2)倒排索引:定义:也被称为反向索引,是一种索引方法,它的设计是为了存储在

2020-11-08 01:02:51 1156

原创 第七章 广告检索系统——实现微服务调用

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 创建广告检索系统微服务:在 imooc-ad-service 下,创建 module:ad-search。1.1 pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

2020-11-06 23:10:22 266

原创 第六章 广告投放系统——创意功能实现与完成 Controller 层的编写

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 创意服务功能实现:1.1 定义响应格式:由于要进行数据的交互,所以需要定义一个 Request 和 Response 的响应格式,本次暂不考虑验证的事情。在 Request 中,需要定义一个方法用于将 request 对象转化为实体类对象。@Data@NoArgsConstructor@AllArgsConstructorpublic class CreativeRequest { private String name;

2020-11-06 00:20:49 393

原创 XML&tomcat

此博客用于个人学习,来源于网上,对知识点进行一个整理。1.XML:eXtendsible markup language 可扩展的标记语言作用:1.可以用来保存数据2.可以用来做配置文件3.数据传输载体2.定义XML:其实就是一个以 xml 为后缀的文件1.文档声明:-version: 解析xml的解析器版本 encoding: 解析xml的编码格式 standalone: yes——该文档会关联其他文档,no——该文档是一个独立文档<?xml versi

2020-11-05 08:55:15 259

原创 Request&Response

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,Servlet 配置方式:1.全路径匹配:url内的内容为 /a /b /a/b<servlet> <servlet-name>ServletTest</servlet-name> <servlet-class>servletTest.ServletTest</servlet-class></servlet><servlet-mapping> &

2020-11-05 08:43:27 648

原创 Redis

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,Redis:1.概念:redis 是一款高性能的 NOSQL 系列的非关系型数据库1.1 什么是 NOSQL 数据库:NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。​ 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服

2020-11-04 19:50:34 57

原创 Linux

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,Linux 的目录结构:root 管理员的 home 目录 root,其他用户的 home 目录 home 目录中。二,Linux 的常用命令:1.切换目录命令 cd:cd app 切换到 app 目录cd … 切换到上一层目录cd / 切换到系统根目录cd ~(波浪线) 切换到用户主目录cd - 切换到上一个所在目录使用 tab 键来补全文件路径2.列出文件列表 ls ll:ls(list

2020-11-04 19:34:26 107 1

原创 JSP & EL & JSTL

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,JSP:Java Server Page1.什么是 JSP:从用户角度看待,就是是一个网页,从程序员角度看待,其实是一个 java 类,它继承了 servlet,所以可以直接说 JSP 就是一个 Servlet。2.为什么会有 JSP:html 多数情况下用来显示静态内容,一成不变的。但是有时候我们需要在网页上显示一些动态数据,比如:查询所有的学生信息,根据姓名去查询具体某个学生。这些动作都需要去查询数据库,然后在网页上显示。html 是

2020-11-04 13:13:01 86

原创 JDBC 连接池 & JDBC Template

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,数据库连接池:1.概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。2.好处:节约资源用户访问高效3.如何实现:标准接口:DataSource javax.sql 包下的方法:获取连接:getConnection()归还连接:Connection.close()。如果连接

2020-11-04 13:03:13 87

原创 JDBC

此博客用于个人学习,来源于网上,对知识点进行一个整理。一.JDBC 的基本步骤:1.注册驱动:DriverManager.registerDriver(new com.mysql.jdbc.Driver());2.建立连接:--里面有以下两种方法,建议使用第二种方法 --url = "jdbc:mysql://localhost/数据库名?” + “ user = 用户名&password = 密码" DriverManager.getConnection(url);

2020-11-04 12:56:12 141 1

原创 Http & Servlet

此博客用于个人学习,来源于网上,对知识点进行一个整理。一、Http协议:1.Http协议的定义:什么是协议双方在交互、通讯的时候,遵守的一种规范、规则。什么是http协议针对网络上的客户端与服务器端在执行http请求的时候,遵守的一种规范。其实就是规定了客户端在访问服务器端的时候,要带上哪些东西,服务器端返回数据的时候,也要带上什么东西。版本1.0 请求数据,服务器返回后,将会断开连接1.1 请求数据,服务器返回后,连接还会保持着。除非服务器 | 客户端 关掉。有一定的时间限制

2020-11-03 13:59:16 288 2

原创 Filter & Listener

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,Filter:过滤器1.概念:生活中的过滤器:净水器,空气净化器,土匪。web 中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…2.操作步骤:定义一个类,实现接口 Filter复写方法配置拦截路径web.xml注解@WebFilter("/*")//访问所有资源之前,都会执行该

2020-11-03 12:53:52 63

原创 Cookie&Session

此博客用于个人学习,来源于网上,对知识点进行一个整理。一,请求转发和重定向:1.使用例:// TODO Auto-generated method stubresponse.setContentType("text/html;charset=UTF-8");String username = request.getParameter("username");String password = request.getParameter("password");//老方法:输出结果/* *

2020-11-03 10:13:26 318 2

原创 Ajax & Json

Ajax&Json一,Ajax:1.概念:ASynchronous JavaScript And XML 异步的JavaScript 和 XML异步和同步:客户端和服务器端相互通信的基础上客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e38Fq0LI-1604204942714)(D:\真Ja

2020-11-03 09:59:45 139

原创 第五章 广告投放系统——定义 Dao 接口和部分功能实现

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 定义 Dao 接口:上一篇实现了实体类,接下来进行 Dao 接口的编写。1.1 用户 Dao 接口:AdUserRepository:public interface AdUserRepository extends JpaRepository<AdUser,Long> { /** * 根据用户名查找用户记录 * @param username * @return */

2020-11-01 00:59:00 493

原创 第四章 广告投放系统——数据库设计与实体类

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. SpringBoot 与 MVC:IOC 作为 SpringBoot 的核心之一,先简单看一下它的原理。更多内容可以参考这篇博客:Spring 框架学习第三节:核心理念之一 —— IoC(控制反转)以及了解 Spring MVC 的模块解析:更多内容可以参考这篇博客:Spring MVC 框架学习第一节:MVC 的基本概念和入门2. 数据表设计:2.1 分析系统层级关系:先介绍一下广告投放系统的一些基本概念和一些基本功能点,也就

2020-10-31 18:38:48 2683

原创 第三章 微服务通用模块开发

此博客用于个人学习,来源于网上,对知识点进行一个整理。

2020-10-30 16:05:48 785

原创 第二章 广告系统骨架开发

此博客用于个人学习,来源于网上,对知识点进行一个整理。1. 广告系统主工程:创建 module:imooc-ad-spring-cloud,采用 maven 工程的方式创建。pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

2020-10-30 11:21:46 399

空空如也

空空如也

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

TA关注的人

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