自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

、YongTing

记录,分享一些学习内容

  • 博客(82)
  • 收藏
  • 关注

转载 BitMap算法详解

BitMap算法详解  所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间。基本思想:  这此我用一个简单的例子来详细介绍BitMap算法的原理。假设我们要对0-7内的5个元素(4,7,2,5,3)进行排序(这里假设元素没有重复)。我们可以使用BitMap算法达到排序目的。要表示8...

2019-10-30 21:51:52 219

原创 二叉树的最大直径

543. Diameter of Binary TreeGiven a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of thelongest path between any two nodes in a ...

2019-10-07 17:14:08 813

原创 Redis高阶面试总结

1.Redis性能为什么快答:①Redis是基于内存②另外Redis的线程模型是IO非阻塞多路复用③Redis是单线程的,避免了上下文的切换2.缓存雪崩解决方案可以参考上面的这张图。首先保证redis的高可用,最好建立一个ehcache去保证如果缓存主备全部宕机的情况,另外可以做限流操作(这里的话可以用熔断器机制hystrix)只循序3分之1的线程去请求数据库,剩余线程返回一个默认...

2019-09-26 23:22:44 436

原创 Kotlin学习(基本语法)

1.包的定义注意:不需要匹配目录和包;源文件可以放在任意目录中package my.demoimport java.util.*//2.方法的定义fun sum(a: Int, b: Int): Int { return a + b}为了简洁,可以这样写,返回类型kotlin会自动推算出来fun sum(a: Int, b: Int) = a + b...

2019-05-22 19:32:53 229

原创 leetcode:反转链表(递归实现含讲解)

public class ListNode { private int Data;// 数据域 private ListNode Next;// 指针域 public ListNode(int Data) { // super(); this.Data = Data; } public int getData() { ...

2019-05-10 14:51:38 408

原创 leetcode. 缺失数字

给出一个包含0, 1, 2, ..., n中n个数的序列,找出 0 ..n中没有出现在序列中的那个数。案例 1输入: [3,0,1]输出: 2案例 2输入: [9,6,4,2,3,5,7,0,1]输出: 8思路: 用等差数列求和的方式算出前n个数的和,然后依次减去数组中的没一个数,最后剩下的就是缺失的数值。 public static void ...

2019-05-09 17:57:28 135

原创 SQL的四种连接查询

内连接1.内连接(inner join 或 join)内连接是等值连接,它使用“=、>、<、<>”等运算符根据每个表共有的列的值匹配两个表中的行查询语句: select * from T_Person inner join T_Card on T_Person.CardId = T_Card.CardId外连接2.左连接(lef...

2019-05-08 13:40:31 2878

原创 不使用synchronized和lock,CAS实现一个线程安全的单例模式

package com.example.demo;import java.util.concurrent.atomic.AtomicReference;public class Singleton { private static final AtomicReference<Singleton> INSTANCE = new AtomicReference<Si...

2019-05-06 18:03:37 478

原创 redis哨兵模式

原文:https://mp.weixin.qq.com/s/UEYRQ0dlhtqAlBAY4n7NWg哨兵是对redis进行实时的监控,主要有两个功能:  1.监测主数据库和从数据库是否正常运行。 2.当主数据库出现故障的时候,可以自动将一个从数据库转换为主数据库,实现自动切换。监控机制:哨兵监控也是有集群的,会有多个哨兵进行监控,当判断发生故障的哨兵达到一定数量...

2019-05-06 17:42:46 110

原创 docker常用基础命令

1.查看本地镜像:docker images2.删除镜像:docker rmi XXXX(image id镜像id)3.查看docker运行容器:docker ps4.重启容器:docker restart5.退出容器 :exitdocker build -t xxx . 构建镜像(注意后边一定要有个空格+一个点)docker tag xxxx/xxxx 改名,...

2019-05-06 15:54:39 137

原创 leetcode:lru缓存

示例:LRUCache cache = new LRUCache( 2 /* 缓存容量 */ );cache.put(1, 1);cache.put(2, 2);cache.get(1); // 返回 1cache.put(3, 3); // 该操作会使得密钥 2 作废cache.get(2); // 返回 -1 (未找到)cache.put...

2019-04-26 14:24:20 116

原创 java的强引用、弱引用、软引用、虚引用

原文:http://www.cnblogs.com/gudi/p/6403953.html1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object obj=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终...

2019-04-25 16:53:26 116

原创 springboot整合Mqtt实现

pom <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.1.0...

2019-04-25 11:16:51 12559 6

原创 Mqtt概述与理解

MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器之间通信的桥梁。MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。有以下特点:使用发布/订阅消息模式,提供一对多的消息发布 使用TCP/IP提供网络连接 小型传输,开销很小(固定长度...

2019-04-24 17:29:06 959

转载 Elasticsearch入门及掌握其JavaAPI

http://zhenganwen.top/posts/3cd93342/

2019-04-24 17:03:17 116

原创 java反射笔记

一、概述1. 简介Java反射(Reflection)机制就是在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。对于任意一个对象能够调用它的任意一个属性和方法。这种动态获取的信息和动态调用对象的方法的功能称为Java语言的反射机制。Java程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以...

2019-04-24 16:55:32 306 1

转载 SpringCloud核心组件概述与实战

http://luokangyuan.com/springcloudxue-xi-bi-ji/

2019-04-24 16:34:42 120

原创 DateUtils日期操作工具类

DateUtils常用方法1.1.常用的日期判断isSameDay(final Date date1, final Date date2):判断两个时间是否是同一天; isSameInstant(final Date date1, final Date date2):判断两个时间是否为同一毫秒1.2.日期的基本操作String转Date DateUtils.parseDate...

2019-04-24 16:17:48 4412

原创 链表中环的检测

问题如何检测一个单链表中是否有环,例如下图的例子。快慢指针法这是最常见的方法。思路就是有两个指针P1和P2,同时从头结点开始往下遍历链表中的所有节点。P1是慢指针,一次遍历一个节点。P2是快指针,一次遍历两个节点。如果链表中没有环,P2和P1会先后遍历完所有的节点。如果链表中有环,P2和P1则会先后进入环中,一直循环,并一定会在在某一次遍历中相遇。因此,只要发现...

2019-04-20 23:29:17 243

原创 JAVA锁的膨胀过程和优化

1,自旋锁自选锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不停循环看是否能等到上个线程自己释放锁。这个问题是基于一个现实考量的:很多拿了锁的线程会很快释放锁。因为一般敏感的操作不会很多。当然这个是一个不能完全确定的情况,只能说总体上是一种优化。举个例子就好比一个人要上厕所发现厕所里面有人,他可以:1,等一小会。2,跑去另外的地方上...

2019-04-20 13:54:30 222

原创 聚集索引和非聚集索

根本区别 聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。聚集索引 聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快,只要找到第一个索引值记录,其余就连续性的记录在物理也一样连续存放。聚集索引对应的缺点就是修改慢,因为为了保证表中记录的物理和索引顺序一致,在记录插入的时候,会对数据页重新排序。非聚集索引 非聚集索引制定了...

2019-04-20 12:44:18 266

原创 牛客网扒下来的java面筋

原文链接:https://www.nowcoder.com/discuss/167046Java【阿里】阿里数据部门Java研发工程师(2020校招暑期实习)一面 https://www.nowcoder.com/discuss/179941【阿里、腾讯、头条、英特尔、星环、视源】四跨考生的面经合集(阿里、腾讯、头条、英特尔、星环、视源) https://www.nowcoder.com...

2019-04-19 15:07:29 1651

原创 青蛙跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法每次跳的时候,小青蛙可以跳一个台阶,也可以跳两个台阶,也就是说,每次跳的时候,小青蛙有两种跳法。第一种跳法:第一次我跳了一个台阶,那么还剩下n-1个台阶还没跳,剩下的n-1个台阶的跳法有f(n-1)种。第二种跳法:第一次跳了两个台阶,那么还剩下n-2个台阶还没,剩下的n-2个台阶的...

2019-04-19 11:30:05 123

原创 Java的参数传递是「按值传递」还是「按引用传递」?

答:是按值传递。Java 语言的参数传递只有「按值传递」。1、基本数据类型的参数先来看一下基本数据类型的参数按值传递的例子:TransferTest.javapublic class TransferTest { public static void main(String[] args) { int num = 1; System.out...

2019-04-18 17:31:08 112

原创 LeetCode. 数组中的第K个最大元素

示例:输入: [3,2,1,5,6,4] 和 k = 2输出: 5输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4排序:时间复杂度 O(NlogN),空间复杂度 O(1)public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[n...

2019-04-18 14:44:17 128

原创 leetcode. 反转整数

class Solution { public int reverse(int x) { long result = 0; while (x != 0){ result = result * 10 + x % 10; x = x / 10; } if (result > ...

2019-04-18 14:08:10 92

原创 leectcode. 两数之和

示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。如果两个指针指向元素的和sum == target,那么得到要求的结果; 如果su...

2019-04-18 13:46:41 435

原创 leetcode237. 删除链表中的节点

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public void deleteNode(Lis...

2019-04-18 13:17:00 81

原创 Synchronized和ReentrantLock的区别

相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。功能区别:这两种方式最大区别就是对于Synchronized来说,它是java语言...

2019-04-13 18:13:51 137

原创 leetcode:删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public class ListNode {...

2019-04-11 17:59:02 251 1

原创 LeetCode:合并两个有序链表

递归实现将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/***Definition for singly-linked list*/class ListNode{ int val...

2019-04-11 17:39:17 91

原创 SpringBoot监听Redis的Key过期事件

原文:https://springboot.io/t/topic/24在一些业务场景中,我们希望在Redis的key过期时,得到通知。Redis的配置修改conf文件 notify-keyspace-events "Ex" 该配置表示监听key的过期事件,默认未开启 该配置的其他信息(可以监听N多事件),可以参阅配置文件的注释,非常详细自定义监听器该监听器会在key过期时...

2019-04-11 10:16:24 6214 2

原创 leetcode:求众数

众数一定是出现次数大于n/2的元素,所以讲数组进行排列后,取中间值,就一定是众数。但是在计算比较大的数组时,时间会超过限制。代码:class Solution { public int majorityElement(int[] nums) { int n = nums.length; for(int i = 0...

2019-04-10 17:43:58 88

原创 Spring Boot 2实现Redis分布式锁,这才是实现分布式锁的正确姿势!

原文:http://itmuch.com/spring-boot/global-lock/都9102年了,你还在手写分布式锁吗?直接上代码:spring: redis: port: 6379 host: localhostpom: <dependency> <groupId>org.spri...

2019-04-10 14:33:06 4215

原创 RabbitMq(待更)

https://blog.csdn.net/hellozpc/article/details/81436980#52_198

2019-04-09 17:46:37 102

原创 HashMap源码分析

原文:彤哥读源码https://www.cnblogs.com/tong-yuan/p/10638912.htmlHashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序;继承体系HashMap实现了Cloneable,可以被克隆。HashMap实现了Seria...

2019-04-03 16:41:13 106

原创 leetcode. 打家劫舍

class Solution { public int rob(int[] nums) { int n = nums.length; if(n == 0) return 0; if(n == 1) return nums[0]; if(n == 2) r...

2019-04-03 13:49:12 99

原创 Java单链表反转

首先是创建一结点类,其Java代码如下:class Node { private int Data;// 数据域 private Node Next;// 指针域 public Node(int Data) { // super(); this.Data = Data; } public int getData() { return Data; } public ...

2019-03-29 16:06:50 599

原创 数组求topK

package com.sitech.iot.monitor.controller;import java.util.PriorityQueue;public class demo { public static int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> minQueu...

2019-03-29 15:55:45 428

原创 redis缓存和cookie实现Session共享

https://blog.csdn.net/hchhan/article/details/78390280

2019-03-28 19:31:58 712

空空如也

空空如也

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

TA关注的人

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