数据结构Queue

​ 栈和队列其实是相同的,只是名字不一样 入栈换成了入队(enqueue),出栈换成了出队(dequeue)。语义 是不同的。入队操作向队尾添加元素,而出队操作从 队首移除元素。

Read More

数据结构Stack

​ 在很多应用中,我们需要维护多个对象的集合,这种操作非常简单。我们可能想要向集合中 加入某个元素,去掉某个元素,以及遍历 集合中的元素并对他们执行某种操作,当然还有 检查集合是否为空。对于大多数操作来说,目的都很明确 关键是当需要去掉一个元素时,去掉哪一个元素呢?处理这类问题 有两个经典基础数据结构,栈和队列。

Read More

Java 虚拟机运行时数据区

运行时数据区:

Java 虚拟机的运行时数据区按照大的可以分为线程独立使用的数据区,和所有线程共享的数据区。

一.线程独立使用数据区

1.程序计数器

  1. 程序计数器其实就是 jvm 里面的pc,他指向的都是字节码的偏移量,也就是下一条要执行的字节码
  2. 当然这是 jvm 在执行 java 方法的时候,当程序在执行 navtive 方法的时候这时候起作用的其实是我们物理机上的 pc 此时 jvm 的 pc 是空值(undefine)
  3. 并且这个地方也是所有的 jvm 内存区完全不会抛出 OutOfMemary 异常的位置

Read More

博客迁移到 coding 了

​ 从这个博客搭建成功到现在已经过了两年了,哎!时间真的过的超快。纪念一下 :)

​ 但是一直以来我的博客都是托管到 github 上面的,每次最讨厌去访问博客了,做一次翻页我的等几秒,用户体验极差(虽然还是我自己写的,要是别人的博客估计直接一个 ctrl+w 伺候着了 )。

Read More

今日总结20180304

  1. 八大排序算法
  2. 优先队列
  3. 红黑树
  4. 并查集
  5. 左式堆
  6. 栈的应用:逆波兰表达式计算、中缀表达式转后缀表达式
  7. 队列应用:杨辉三角、
  8. 最大子序列的和:分治、贪心
  9. 递归的四大原则:
    1. 基准情型:所有的递归都有一个基准,或者说是递归停止的界限,他是无序计算就能够得到的
    2. 不断推进:向着基准方向不断的推进,也就是递归的过程。
    3. 设计法则:我们假定递归的每一个环节都能运行,也就是我们无需考虑递归甚至调试追踪递归内部的情形
    4. 合成效益:不要进行重复的计算.
  10. 内部类的作用,静态内部类的特点。
  11. 二叉树表示表达式,先序、中序、后序分别代表了对应的表达式
  12. 二叉搜索树的定义操作:
    1. 判断元素是否存在:递归的在左右子树中查找
    2. 查找最小元素:在左子树中递归或者循环
    3. 查找最大元素:在右子树中递归或循环
    4. 插入:递归的插入,大于则插入在节点的右子树,小于则左子树,等于则是重复节点不作处理
    5. 删除:递归删除( 或者说递归查找需要删除的元素 ),找到该元素后,如果元素有两个子节点那么久找到这个元素的右子树的最小元素代替要删除的元素,然后再删除那个右子树上的最小元素。如果只有一个子节点直接让要被删除的节点赋值上他的子节点。

今日总结20180304

  1. 八大排序算法
  2. 优先队列
  3. 红黑树
  4. 并查集
  5. 左式堆
  6. 栈的应用:逆波兰表达式计算、中缀表达式转后缀表达式
  7. 队列应用:杨辉三角、
  8. 最大子序列的和:分治、贪心
  9. 递归的四大原则:
    1. 基准情型:所有的递归都有一个基准,或者说是递归停止的界限,他是无序计算就能够得到的
    2. 不断推进:向着基准方向不断的推进,也就是递归的过程。
    3. 设计法则:我们假定递归的每一个环节都能运行,也就是我们无需考虑递归甚至调试追踪递归内部的情形
    4. 合成效益:不要进行重复的计算.
  10. 内部类的作用,静态内部类的特点。
  11. 二叉树表示表达式,先序、中序、后序分别代表了对应的表达式
  12. 二叉搜索树的定义操作:
    1. 判断元素是否存在:递归的在左右子树中查找
    2. 查找最小元素:在左子树中递归或者循环
    3. 查找最大元素:在右子树中递归或循环
    4. 插入:递归的插入,大于则插入在节点的右子树,小于则左子树,等于则是重复节点不作处理
    5. 删除:递归删除( 或者说递归查找需要删除的元素 ),找到该元素后,如果元素有两个子节点那么久找到这个元素的右子树的最小元素代替要删除的元素,然后再删除那个右子树上的最小元素。如果只有一个子节点直接让要被删除的节点赋值上他的子节点。

博客迁移到 coding 了

​ 从这个博客搭建成功到现在已经过了两年了,哎!时间真的过的超快。纪念一下 :)

​ 但是一直以来我的博客都是托管到 github 上面的,每次最讨厌去访问博客了,做一次翻页我的等几秒,用户体验极差(虽然还是我自己写的,要是别人的博客估计直接一个 ctrl+w 伺候着了 )。

Read More

SpingBoot笔记一

一.目录配置

1、Application.java 建议放到跟目录下面,主要用于做一些框架配置

2、domain目录主要用于实体(Entity)与数据访问层(Repository)

3、service 层主要是业务类代码

4、controller 负责页面访问控制

##二.pom.xml 配置

引入web模块

1、pom.xml中添加支持web的模块:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

pom.xml文件中默认有两个模块:

spring-boot-starter:核心模块,包括自动配置支持、日志和YAML;

spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito。

##三.编写controller内容

1
2
3
4
5
6
7
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}

@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!

四.单元测试


打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。