- 博客(26)
- 收藏
- 关注
原创 JVM和性能优化
JVM内存的划分有五片:寄存器; 本地方法区; 方法区(元空间); 栈内存; 堆内存。https://blog.csdn.net/lingbo229/article/details/82586822堆与栈的区别很明显:1.栈内存存储的是局部变量而堆内存存储的是实体;2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;3.栈内 存存放的变量生命周期...
2019-09-23 11:20:42 214
原创 多线程并发的一些问题解决(讲的全面而且非常棒)
CAS 属于乐观锁CAS称为Compare And Swap 即 比较和替换 ,它是对于JVM底层的原子操作,他的参数有三个 内存地址,旧的预期值,新的修改值 当内存地址的值与旧的预期值相等时,才可以将其更新为新的修改值,Unsafe类提供了硬件级别的原子操作https://blog.csdn.net/qq_32998153/article/details/79529704http:/...
2019-09-17 17:03:55 326
原创 LeetCode:692 347
给一非空的单词列表,返回前k个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 ...
2019-09-05 11:13:28 119
原创 LeetCode 二叉树及单链表的一些题
LeetCode104:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。解答class Solution { ...
2019-09-02 15:00:54 135
原创 Redis
Redis 概述在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内...
2019-08-27 15:43:41 227
转载 Mysql--索引优化及最左原则剖析 -----好理解版
索引概念和作用索引是一种使记录有序化的技术,它可以指定按某列/某几列预先排序,从而大大提高查询速度(类似于汉语词典中按照拼音或者笔画查找)。索引的主要作用是加快数据查找速度,提高数据库的性能。MySQL索引类型从物理存储角度上,索引可以分为聚集索引和非聚集索引。1.聚集索引(Clustered Index)聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引。...
2019-08-21 16:10:26 667
转载 Session、Cookie、Token详解---必懂的那种
发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记...
2019-08-14 13:27:17 97
原创 Centos7安装mysql8.0教程
https://blog.csdn.net/our_times/article/details/98882701?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task修改远程连接:update user set host='%' whe...
2020-03-18 22:08:11 140
转载 一对一 多对多生产者消费者模型
https://blog.csdn.net/weixin_40739833/article/details/80330738
2020-01-09 11:14:32 228
原创 插入排序 及LeetCode上插入排序例题:147 --强烈推荐
public void insertSort(int[] nums){//默认数组第一个数为排好序的所以下标从1开始 for(int i=1,j;i<nums.length;i++){ //存放nums[i],因为后面元素后移过程会被覆盖 int curr=nums[i]; //内部排序好的数组...
2019-09-05 16:57:25 909 1
转载 二叉树的非递归遍历
在我们了解了最简单的递归遍历以后,现在来说说用栈辅助,非递归实现二叉树的前序,中序,后序遍历打印一、非递归实现前序遍历打印前序遍历,访问的顺序为根->左->右; 前序遍历的思想: (1)首先定义一个Node* 的指针cur; 用来遍历二叉树;然后定义一个栈,里面存储二叉树的结点; (2)利用while循环,一开始cur指向树的根结点,先把cur的值打印出来,然后入栈,...
2019-09-05 11:02:52 73
原创 Spring中各种常用注解@
二、注解分为两类:1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;2、一类是注册Bean,@Component , @Repository , @ Controller , @Service...
2019-07-31 16:51:13 302
原创 Kotlin-常用高阶函数
关于常用高阶函数的分享:map函数的签名是变换T类型返回一个R类型集合:/** * Returns a list containing the results of applying the given [transform] function * to each element in the original collection. */public inline fun...
2019-07-30 16:59:59 508
原创 LeetCode 35:搜索插入位置--JAVA
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1解法:class Solution { public int searchInsert(int[] n...
2019-06-24 15:00:24 185
原创 LeetCode 575:分糖果--JAVA
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数...
2019-06-15 16:38:38 125
原创 LeetCode 102:二叉树的层次遍历--JAVA
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法:层次遍历 可以使用BFS ,BFS使用队Queue ,把头结...
2019-06-12 23:20:20 234
原创 LeetCode 1: 两数之和--JAVA
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法:...
2019-06-11 13:51:43 102
原创 LeetCode 402:移掉K位数字--JAVA
给定一个以字符串表示的非负整数num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且≥ k。num 不会包含任何前导零。示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num = "...
2019-06-09 23:33:21 355
原创 自己总结的高频面试题12-20
12. ==和equals的区别?equals和==最大的区别就是:equals是一个方法,==是一个运算符!==:如果比较的对象是基本数据类型,则比较的是数值是否相等,如果比较的双方是引用数据类型,则比较的是引用对象的地址值是否相同。equals():用来比较两个对象的内容是否相同,equals方法不能用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引...
2019-06-07 20:21:28 143
原创 LeetCode:买卖股票的最佳时机--JAVA
原题:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 ...
2019-06-05 17:16:52 163
原创 自己总结的高频面试题1-11
1. Hashmap和Hashtable的区别?一个比较简单的回答是: 1、HashMap是非线程安全的,HashTable是线程安全的。 2、HashMap的键和值都允许有null值存在,而HashTable则不行。 3...
2019-06-04 16:55:29 123
转载 螺旋矩阵--JAVA
题目:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]...
2019-06-04 13:35:05 230
转载 旋转图像问题:矩阵选择--JAVA
题目:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9...
2019-06-04 13:33:06 141
转载 递归:二叉树的建立及前序中序后序--JAVA
/** * 实现二叉树的创建、前序遍历、中序遍历和后序遍历 **/package DataStructure; /** * Copyright 2014 by Ruiqin Sun * All right reserved * created on 2014-9-9 下午2:34:15 **/public class BinTreeInt { pr...
2019-06-04 13:29:00 140
原创 快速排序--JAVA
public class 分治_快速排序 { /** *交换函数,i,j为数组索引 */ static void swap(int A[], int i, int j) { int temp = A[i]; A[i] = A[j]; A[j] = temp; } /** * 选取一个关键字(key)作为枢轴,一般取整组记...
2019-06-04 13:16:24 88
转载 冒泡/选择/插入排序--JAVA
冒泡排序:冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。示例:排序前数组为...
2019-06-04 13:07:49 122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人