- 博客(83)
- 资源 (2)
- 收藏
- 关注
原创 go原生RPC初体验
被调用的服务方法必须满足以下条件方法的类型是暴露的方法是暴露的方法有两个参数,并且都是暴露的参数第二个参数是指针类型方法的返回类型必须是error以商品订单为例,传入商品id,返回商品的详细信息。syntax = "proto3";package message;message OrderRequest{ string orderId = 1;}message OrderInfo{ string OrderId = 1; string OrderName = 2;
2020-05-21 21:38:33 285
原创 Docker简易入门教程
镜像(image):Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。一、 从远程仓库中获取镜像文件docker pull image_namedocker pull nginx:l...
2020-04-15 18:05:21 240
原创 Spring总结
Spring整体架构Core ContainerCore Container(核心容器)包含Beans、Core、Context、EspL四个模块Core和Beans是Spring的基础部分,提供IOC(控制反转)和DI(依赖注入)Core模块该模块主要包含Spring基本的核心工具类,Spring的其他组件都要使用其中的类,Core模块是其他组件的基本核心。Be...
2019-07-11 21:31:00 149
原创 五个常见链表操作
单链表反转链表中环的检测两个有序链表合并删除链表中倒数第n个结点求链表的中间结点封装的Node信息如下:后面代码不再给出package cn.wangbo.list;/** 这是链表类,* 封装了链表节点信息* */public class Node<T> { T val; //值 Node next; //next指针...
2019-07-11 15:44:00 121
原创 替换空格
题目请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题目分析从前往后遍历,每次遇到空格都需要将后面的后移。时间复杂度较高。先扩容到对应的长度,也就是原来的长度+空格数*2.从后往前遍历(用两个指针一个指向新数组,一个指向现遍历到哪个字符)如果不为空格直接移到后面...
2019-06-23 11:55:00 80
原创 二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1289(start)24912471013681115分析访问顺序,从右上角开始如果当前值比target大,则往左走...
2019-06-22 17:28:00 78
原创 力扣91.解码方法
题目一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 2...
2019-06-07 18:48:00 111
原创 力扣 746. 使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然...
2019-06-06 22:18:00 107 1
原创 今天我们来谈谈堆
什么是堆堆是一种特殊的树,他满足一下两点要求堆是一个完全二叉树堆中每一个节点的值都必须大于等于(或小于等于)其子树中的值最大堆最大堆和最小堆是二查堆的两种形式,最大堆和最小堆很相似,所以本文只实现最大堆以及堆排序最大堆:根节点的键值是所有结点键值中的最大者,且每个结点的值都比孩子结点大最小堆:根节点的键值是所有堆结点键值的最小者,且每个结点的值都比其孩子的值小。...
2019-06-06 22:01:00 76
原创 在二叉树中找到一个节点的后续节点
根据题意可知,后续节点就是指,中序遍历的后一节点,所以最容易的方式就是直接求的根节点,然后求出中序遍历结果保存起来进行查找。但是时间空间复杂度都比较大。想一下,我们可以分情况来讨论有哪些情况如果当前节点有右子树,那么它的下一节点是右子树的最左节点如果没有右子树,并且他是父节点的左子节点,那么他的下一节点就是父节点如果没有右子树,并且他是父节点的右子节点。就向上寻找node...
2019-05-23 15:45:00 379
原创 二叉树遍历(非递归版)
基本概念前序遍历:先访问根节点,再访问左子节点,最后访问右子节点中序遍历:先访问左子节点,再访问跟节点,最后访问右子节点后序遍历:先访问左子节点,再访问右子节点,最好访问根节点前序遍历要想用非递归的方式解决问题,几乎都是采用栈的方式解决。前序遍历是先访问根节点,再访问左子节点,最后访问右子节点,对应图中顺序1->2->4->5->3->6-...
2019-05-22 19:52:00 71
原创 二叉树遍历(递归版)
本来打算把递归非递归的一起写出来,但是发现一起放出来篇幅会偏长,所以我会在下次放出非递归版。基本概念前序遍历:先访问根节点,再访问左子节点,最后访问右子节点中序遍历:先访问左子节点,再访问跟节点,最后访问右子节点后序遍历:先访问左子节点,再访问右子节点,最好访问根节点前序:1 2 4 5 3 6 7中序:4 2 5 1 6 3 7后序:4 5 2 6 7 3 1...
2019-05-21 19:17:00 95
原创 生成窗口最大值数组
解答首先,大家很容易想到暴力解决的方法。但是我们可以发现,每次移动的时候只有最左边的数会滑出窗口,因此我们可以记录当前最大值的,但是只记录一个值是完全不够的,因为你这个最大值是有可能滑出窗口的。所以我们可以维护一个双端队列来记录有可能成为最大值的位置(为什么是记录位置呢?因为判断出没出窗口是根据位置下标来的),这个队列是按照从大到小的顺序来排列的。下面我画了图:具体过程怎么做...
2019-05-15 11:20:00 185 1
原创 设计一个有getMin功能的栈
题目实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求pop、push、getMin操作的时间复杂度都是O(1)设计栈类型可以使用现成的栈结构分析不知道有没有一开始想法跟我一样的。用一个数保存最小值就可以了啊?但是实际上不是的,如果这样设计当你最小值出栈的时候怎么办呢?实际上,我们可以用两个栈来实现,一个用于存储栈的值,另外一个用于存储...
2019-05-08 19:49:00 83
原创 一条SQL查询语句是如何执行的
一条SQL查询语句是如何执行的下面是MySql的基本架构示意图,从图中可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。大体来讲,MySQL可以分为Server层和存储引擎层两部分。Server层Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖了MySql的大多数核心服务功能以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存...
2019-05-03 17:03:00 136
原创 五个递归题总结
递归电影院求阶乘斐波那契数数字反转求台阶走法数当然,很多递归都是可以优化的,比如f(n)=f(n-1)+f(n-2),这里f(n-2)就会计算两次,可以用散列表存储已经计算的数据,但是这里主要演示递归思想,不再进行优化。电影院周末你带着女朋友去电影院,女朋友问你,咱们现在坐在第几排啊,电影院太黑没法数怎么办,于是你问前一排的人他是第几排,你只需要在他的数字上加一...
2019-03-20 20:55:00 191
原创 反射:框架设计的灵魂
框架:半成品软件。可以在框架的基础上进行软件开发,简化编码反射:将类的各个部分封装为其他对象,这就是反射机制好处:可以在程序运行过程中,操作这些对象可以解耦提高程序的可扩展性获取class对象的方式Class.forName("全类名"):将字节码文件加载进内存,返回class对象,多用于配置文件,将类名定义在配置文件中,读取文件,加载类类名.class:通过类名...
2019-02-02 19:48:00 126 1
原创 Junit单元测试使用
Junit单元测试测试分类黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。白盒测试:需要写代码。关注程序具体执行流程。Junit使用:白盒测试步骤:1. 定义一个测试类2. 定义测试方法(可以独立运行)3. 给方法家@Test4. 导入Junit依赖环境判定结果:红色:失败绿色:成功一般用断言操作处理结果Assert.assertEqual...
2019-01-19 21:24:00 77
原创 "快易需求"测试心得
本系统可分为当前项目,共享构件库,我的收藏,我的创建,我的发布以及后台管理部分,在网页中实现功能模块登陆页面功能说明:用户输入用户名和密码登陆。点击注册按钮注册点击找回密码可通过验证码重设密码这部分是系统已实现的功能,不是本项目的重点。但操作需要先登陆再进行,所以放在其他功能之前功能说明:点击左侧图片进入“当前项目”页面点击右侧图片进入“共享构件库”页面点击加...
2019-01-05 21:00:00 94
原创 风格与模式
体系结构风格不是对软件进行分类的标准。它仅仅是描述软件的不同角度。管道-过滤器风格在管道-过滤器风格下,每个功能模块都有一组输入和输出。功能模块称作过滤器;功能模块间的连接称为管道。特性过滤器是独立运行的构件非临近的过滤器之间不共享状态。过滤器自身无状态过滤器是独立的实体对临近的过滤器不添加任何限制,不能与其他的过滤器共享数据,而且一个过滤器不知...
2018-12-20 22:12:00 533
原创 “快易需求”第一次迭代总结
第一次迭代结束了,说明项目的第一阶段已经完成了。在第一次迭代过程中、完成了项目需求所定的alpha版本的所有需求已经部分beta版本的需求。但是革命尚未成功、同志仍需努力设想和目标我们要做什么项目为“快易需求文档智能生成系统”。软件需求文档是软件开发与维护的重要基础,本项目希望通过建立一个专业的需求文档编辑系统,为软件开发人员提供一个便捷的协作文档编写工具,推动需求文档编写的...
2018-12-12 10:53:00 85
原创 BitSet
Bitset类一个Bitset类创建一种特殊类型的数组来保存值。BitSet中数组大小会随需要增加。这和位向量比较类似。Java平台的BitSet用于存放一个位序列,如果要高效的存放一个位序列,就可以使用位集(BitSet)。由于位集将位包装在字节里,所以使用位集比使用Boolean对象的List更加高效和更加节省存储空间。BitSet是位操作的对象,值只有0或1即false和t...
2018-12-04 11:16:00 115
原创 数据库连接池
为什么要有数据库连接池?数据库的连接对象创建工作,比较消耗性能。什么是数据库连接池?一开始在内存中开辟一块空间(集合),一开始先往池子里面放置多个连接对象。后面需要连接的话,直接从池子里面去。不要去自己创建连接了。使用完毕,要记得归还连接。编写自己的数据库连接池代码实现(要实现DataSource接口):package com.itheima.jdbc.util;...
2018-12-01 12:29:00 81
原创 事务
事务(Transaction),其实指的一组操作,里面包含许多单一的逻辑。只要有一个逻辑没有执行成功,那么都算失败。所有数据都回归到最初状态(回滚)为什么要有事务?想一下。如果我们去转账。张三把钱转给李四、张三转出去的瞬间服务器崩了或者是其他原因导致李四并没有收到钱、那么钱如果不回到张三的账户中估计张三和李四都要不高兴了。命令行演示事务开启事物:start tran...
2018-11-22 01:02:00 78
原创 “快易需求系统”数据库设计心得
数据库设计心得我们的项目是“快易需求文档生成系统”,本次数据库设计一共进行了2-3周左右,主要由我和同组张惠雨进行数据字典设计(其他组员负责原型设计以及需求文档编写),开会讨论三次(院楼425),反复修改,最终定稿我们项目经过反复讨论最终决定共有20张表。由于我们做的是二期项目,并且做的相当于之前系统的子系统、所以在数据库设计的时候不仅要考虑新项目的数据库设计的问题,还要考虑两...
2018-11-20 22:42:00 105
原创 重定向和请求转发
重定向1. 地址上显示的是最后的那个资源的路径地址2. 请求次数最少有两次, 服务器在第一次请求后,会返回302 以及一个地址, 浏览器在根据这个地址,执行第二次访问。3. 可以跳转到任意路径。 不是自己的工程也可以跳。4. 效率稍微低一点, 执行两次请求。 5. 后续的请求,没法使用上一次的request存储的数据,或者 没法使用上一次的request对象,因为这是两...
2018-11-08 10:25:00 115
原创 HTTPServletReauest和HTTPServletResponse
Servlet配置三种方式1.全路径匹配以/开始 例如www.baidu.com/test/aa2.路径匹配,前半段匹配以/开始,但是以结束/aa/3.扩展名匹配不能以/开始 是以开始的。例如,.jsp优先级:全路径>目路径匹配>扩展名匹配*是一个通配符,可以匹配任何文字ServletContextServlet上下文每...
2018-11-06 23:16:00 94
原创 Servlet
Web资源在http协议当中,规定了请求和响应双方,客户端和服务器端。与web相关的资源有两种分类静态资源html、js、css动态资源servlet/jspServletServlet是什么?其实Servlet就是一个Java程序,运行在我们的web服务器上,用于接受和响应客户端的http请求更多的是配合动态资源来做。当然静态资源也需要使用到...
2018-10-30 17:56:00 69
原创 JSP、EL、JSTL
一、JSP1、什么是JSP从用户角度来看,就是一个网页,从程序员角度看待,其实是一个Java类,它继承了servlet,所以可以直接说jsp就是一个servlet2、为什么有JSPhtml多数情况下用来显示静态内容,一成不变的。但是有时候我们需要在网页上显示一些动态数据,比如:查询所有学生的信息,根据姓名去查询某个具体学生。这些动作都需要去查询数据库,然后在网页上显示。html是...
2018-10-29 00:18:00 67
原创 Xml
Xml:eXtendsible markup language可扩展的标记语言Xml有什么用?1、可以用来保存数据2、可以用来做配置文件3、数据传输载体<?xml version="1.0" encoding="UTF-8"?><stus> <stu> <name>张三</name> ...
2018-10-25 11:06:00 103
原创 服务器MySql搭建
一、系统、环境电脑操作系统:Mac os 10.13.6位服务器详情:操作系统:CentOS 7.2 64位二、Mysql安装# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm# rpm -ivh mysql-community-release-el7-5.noarch.rpm# ...
2018-10-24 12:53:00 183
原创 Java基础之多线程
一、线程基本知识1、线程与进程 进程:执行中的程序 线程:轻量级的进程 线程本身不能单独进行,必须放在一个进程中才能执行。2、Java的线程模型 1、新建状态 线程被创建之后便处于新建状态。 2、就绪状态 新建状态的线程调用start方法、进入就绪状态。 阻塞状态的线程解除阻塞之后进入就绪状态。 3、运行状态 处于就绪状态的...
2018-10-17 09:12:00 61
原创 Java基础之内部类
一、内部类概述一个类被嵌套定义在另一个类中,那么这个类就被称为是内部类,包含内部类的类就被称为是外部类。内部类相当于外部类的成员变量或者是方法。如何构造内部类:Outer out=new Outer();Outer.Inner in=out.new Inner();in.print();二、匿名内部类public class TestInner { pub...
2018-10-15 00:27:00 93
原创 Java基础之异常
一、异常概述1、什么是异常 异常就是程序运行过程中所出现的不正常现象。 try:把可能发生异常的代码包起来,当发生异常时,将异常抛出 catch:捕获异常并处理 finally:不管是否发生异常都会执行 throw:手动引发一个异常 throws:定义任何被调用方法的异常public class Test { public static void ...
2018-10-15 00:27:00 54
原创 Java基础之接口
一、接口概述 abstract class抽象类修饰符 interface接口的修饰符 extends只能是一个 implements可以多个 接口只有一个抽象方法, 它比抽象类还要抽象,接口是彻彻底底的抽象! 接口是抽象方法和常量的属性集合。 接口中只能包含抽象方法和常量,不能够有变量、初始化块,构造器。 注意事项: 1、接口中的修饰符只...
2018-10-13 21:48:00 75
原创 Java基础之抽象类abstract
一、抽象类的定义抽象类是为子类提供一个规范。修饰符 abstract 类名{//类体修饰符 abstract 返回值类型 方法名(参数列表)}抽象方法没有方法体:public abstract void test();普通方法有方法体:public abstract void test(){//方法体代码};1、定义一个类,如果这个类是抽象类,那么这个类中至少有...
2018-10-12 17:50:00 76
原创 Java基础之static、final关键字
一、static关键字1、静态变量 静态变量是属于类的,和对象没有关系。 非静态变量是属于对象的,每个对象都有该数据的副本。 而静态变量只有一个。public class StaticTest { int commonint=0;//非静态变量 static int staticint=0;//静态变量 StaticTest(int ...
2018-10-12 17:46:00 69 1
原创 Java基础之数组
一、数组的创建以及初始化1、数组的概述 数组:就是一组数的集合,集合中的数据必须数相同类型的,并且每个数组都有一个名字,也就是数组名,我们可以通过数组名来访问数组中的元素。2、创建数组ArrayType arrayName[]ArrayType[] arrayName//常用3、初始化数组int[] a=new int[5]int[] a={1,2,3,4,5}...
2018-10-12 17:44:00 63
原创 Java基础之流程控制
一、流程控制之选择结构1、if语句 if(条件){ //语句块1 }else{ //语句块2 }if(条件1){//语句块1}else if(条件块2){//语句块2}else if(条件块3){//语句块3}else{//语句块4}2、switch语句switch(表达式){ case value1://程序语句 ...
2018-10-12 17:43:00 63
原创 Java基础之类
一、类的一般形式1、类的概述类就是事物的集合和抽象。它所代表的是这类事物所共有的一些行为和属性。2、类的一般形式中国有13亿人,就有13亿个对象人类只有一个class 类名{ 类型 变量名; 类型 变量名; ... 类型 方法名(参数){ 方法内容 } ...}修饰符:可以修饰类、属性和方法...
2018-10-08 21:59:00 70
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人