个人自用resultVo配置
废话不多说,直接上代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115/** * @Description: 自定义响应数据结构 * 这个类是提供给门户,ios,安卓,微信商城用的 * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list) * 其他自行处理 * 200:表示成功 * 500:表示错误,错误信息在msg字段中 * 501:bean验证错误,不管多少个错误都以map形式返回 ...
Leetcode每日一题 剑指 Offer 04. 二维数组中的查找
题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
现有矩阵 matrix 如下:
1234567[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]
给定 target = 5,返回 true。
给定 target = 20,返回 false。
限制:
120 <= n <= 10000 <= m <= 1000
解题思路常规两个for循环遍历,暴力求解。
从左上角开始查询,如果大于target,说明目标值在数组左下边界;如果小于target,则目标值在下一行;整体思路归纳如下:
获得当前下标位置的元素 num
如果 num 和 target 相等,返回 true
如果 num 大于 target,列下标减 ...
设计模式
单例模式需要对实例字段使用线程安全的延迟初始化,使用双重检查锁定的方案;需要对静态字段使用线程安全的延迟初始化,使用静态内部类的方案。
饿汉模式1234567public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton newInstance() { return instance; } }
JVM在类的初始化阶段,会执行类的静态方法。在执行类的初始化期间,JVM会去获取Class对象的锁。这个锁可以同步多个线程对同一个类的初始化。
饿汉模式只在类加载的时候创建一次实例,没有多线程同步的问题。单例没有用到也会被创建,而且在类加载之后就被创建,内存就被浪费了。
双重检查锁定instance使用static修饰的原因:getInstance为静态方法,因为静态方法的内部不能直接使用非静态变 ...
计算机网络
网络分层结构OSI七层模型OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功能如下图所示:
TCP/IP 五层模型TCP/IP 五层模型 是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 七层模型的精简版本,由以下 5 层组成:
应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。
传输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。
网络层:选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。
数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。
三次握手假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。
第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x, ...
Leetcode每日一题 剑指 Offer 58 - II. 左旋转字符串
题目字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。
示例 1:
12输入: s = "abcdefg", k = 2输出: "cdefgab"
示例 2:
输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”
限制:
11 <= k < s.length <= 10000
解题思路两次循环将字符添加到空白字符串中:
从n开始遍历将字符加到空白字符串中
在已添加的字符串后面添加前n字符
代码1234567891011121314class Solution { public String reverseLeftWords(String s, int n) { String str=s; String res=""; char ch ...
Leetcode每日一题 剑指 Offer 03. 数组中重复的数字
题目找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
123输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3
限制:
12 <= n <= 100000
解题思路需要找出重复的性质,可以利用HashSet中不能存有相同元素的性质来做判断
当存入元素返回false,即重复元素,此时返回该元素
正常即继续遍历
代码12345678910111213class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> hashSet = new HashSet<Integer>(); int num=-1; for(int i=0;i<nums.length;i++){ if(! ...
Leetcode每日一题 剑指 Offer 24. 反转链表
题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
12输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL
限制:
10 <= 节点个数 <= 5000
解题思路链表反转,本次使用常规的原地反转:
保存当前结点的下一结点指针
当前结点指向前一结点
当前结点遍历位移
前一结点遍历位移
代码12345678910111213class Solution { public ListNode reverseList(ListNode head) { ListNode preNode=null; ListNode curNode=head; while(curNode!=null){ ListNode nextNode=curNode.next; curNode.next = preNode; pre ...
Leetcode每日一题 剑指 Offer 06. 从头到尾打印链表
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
12输入:head = [1,3,2]输出:[2,3,1]
限制:
10 <= 链表长度 <= 10000
解题思路从尾到头输出,利用栈先进后出的性质来实现
代码1234567891011121314151617class Solution { public int[] reversePrint(ListNode head) { Stack<Integer> stack =new Stack(); while(head!=null){ stack.push(head.val); head=head.next; } int []list=new int[stack.size()]; int i=0; while(!stack.isEmpty()){ list[ ...
RabbitMQ 学习
简介基本概念RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。
RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不开的。RabbitMQ 的具体特点可以概括为以下几点:
可靠性: RabbitMQ使用一些机制来保证消息的可靠性,如持久化、传输确认及发布确认等。
灵活的路由: 在消息进入队列之前,通过交换器来路由消息。对于典型的路由功能,RabbitMQ 己经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起,也可以通过插件机制来实现自己的交换器。这个后面会在我们讲 RabbitMQ 核心概念的时候详细介绍到。
扩展性: 多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情况动态地扩展集群中节点。
高可用性: 队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队列仍然可用。
支持多种协议: RabbitMQ 除了 ...
Leetcode每日一题 剑指 Offer 30. 包含min函数的栈
题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
示例:
12345678MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.minStack.min(); --> 返回 -2.
提示:
各函数的调用总次数不超过 20000 次
解题思路使用List类来实现min栈的功能:
push:调用add函数直接插入
pop:调用remove删除最后一位的数
top:调用get获取最后一位的数
min:使用Collections自带的min获取集合的最小值
代码123456789101112131415161718192021222324class MinStack { /** initi ...