0%

背景

我在学习 ArrayList 类主要方法时,写过一段关于 contains() 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
List<List<Integer>> list = new ArrayList<>();
List<Integer> l1 = new ArrayList<>();
List<Integer> l2 = new ArrayList<>();
l1.add(1);
l1.add(2);
l2.add(1);
l2.add(2);
System.out.println(l1.hashCode());
System.out.println(l2.hashCode());
System.out.println(l1 == l2);
System.out.println(l1.equals(l2));
list.add(l1);
System.out.println(list.contains(l2)); //<-在这里

and 输出结果为:

1
2
3
4
5
994
994
false
true //equals() 的结果
true //contains() 的结果
阅读全文 »

前言

我们很熟悉编写服务端的一个 Controller:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RestController
@RequestMapping("/")
public class MyController {

@Autowired
MyService myService;

// 获取
@GetMapping("/get")
public List<User> getUserList() {
List<User> list = myService.findAll();
return list;
}
}

对于客户端与服务端之间基于 HTTP 的网络通信,在 Spring Boot 框架的封装下,服务端如何接受 HTTP 请求,如何解析成内存中的对象,完成业务逻辑后如何输出 HTTP 响应,我们不得而知。

本文将利用 Java 原生 Socket,完成发送 HTTP 请求,并解析 HTTP 响应。

阅读全文 »

Spring bean 就是可重用组件,是 Spring 的基础。

通过 @Component 注解将一个类声明为 bean,交给 Spring 管理,并在需要的时候注入获取实例。这就是 Spring 重要的 IOC 功能。

今天研究的问题出现在注入这一步:在对一个工具类注入 RedisCache(封装了 RedisTemplate 的工具类),由于工具类使用了静态方法,导致无法获取到注入的 RedisCache。

static

首先来认识一下 static 可以作用的对象:

阅读全文 »

上一篇博客主要谈到 MySQL 的基础知识和高级特性,现在让我们看一下 Redis 部分。

Redis 基础

简介

Redis 是速度非常快的非关系型内存键值数据库。
Redis 和 MySQL 不同之处在于,Redis 用的是 NoSQL。
主要用作缓存,缓存目的:

  • 高性能:操作缓存就是直接操作内存,所以速度相当快。
  • 高并发:直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。并且缓存是走内存的,内存天然就支撑高并发。
阅读全文 »