自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鱼机的编程之路

一个会一点java,会一点点javascript的菜鸟程序员

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 Leetcode 94. 二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。输入: [1,null,2,3]输出: [1,3,2]1、递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { publi

2020-05-17 11:03:15 175

原创 Leetcode128. 最长连续序列

给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。1、排序 : O(nlgn) public int longestConsecutive(int[] nums) { //排序 Arrays.sort(nums); //最终结果(最长序列) int max = 1; //当前连续

2020-05-16 17:03:36 184

原创 阅读MySql死锁日志

*************************** 1. row *************************** Type: InnoDB Name: Status: =====================================2020-03-30 14:07:35 0x4d68 INNODB MONITOR OUTPUT=====================================Per second averages calculated from

2020-05-16 17:00:37 384

原创 JS隐式类型转换

这是一张网上调侃js类似转换的图,可以先看看上面的计算与你的认知是否符合,再看下面的解答。js类型6种:undefind,null,String,Number,Boolean,Object先上几个js类型转换的规则,转换成Boolean输入类型结果特例String非空字符串都是true空字符串("")为falseNumber任何非零数字值(包括无穷大)都...

2019-09-28 22:10:32 184

原创 Java从入门到放弃(十七)求你学学lambda表达式

1、lambda表达式语法Java8的lambda表达式简化了java的匿名类,lambda表达式允许你通过表达式来代替功能接口。 //java8之前创建匿名线程 new Thread(new Runnable() { @Override public void run() { System.ou...

2019-04-20 15:58:29 204

原创 入坑JAVA多线程并发(九)CAS和ABA

  如果了解数据库的悲观锁和乐观锁的话,对于理解CAS就很简单了,因为CAS就是乐观锁的具体实现。   悲观锁:在操作数据库时本能的觉得一定会有竞争,所以把数据锁住,不让其他事物对对应的数据进行操作,在本次操作之后把锁释放,其它事物才可以进行操作。这个在java里面就类似于synchronized。   乐观锁:在操作数据库时都觉得不会有其它事物和自己进行竞争,事物开始的时候就把对应的数据取出...

2018-07-17 21:32:42 1272

原创 JAVA随时笔记(四):常用的排序算法实现

1、冒泡排序原理: 比较array[n]和array[n+1]的大小,把大的数交换到后面,即array[n]>array[n+1],就交换。循环到数组最后,就可以把最大值找出来,放到array[length-1]上。 第二次循环,把第二大的数交换到array[length-2]上面 循环n-1次就把最大的n-1个数找出来,最小的数就在array[0]处。 为了方便,这里把交换的函...

2018-06-25 14:33:30 157

原创 入坑JAVA多线程并发(八)详解ThreadLocal使用和原理

  ThreadLocal是一个用于存储多线程变量的类,它可以把线程与设置的值对应起来,因为它为变量在每个线程都创建了一个副本。访问的时候每个线程只能访问到自己的副本变量。实例看如下代码:public class Main { public static void main(String[] args) throws InterruptedException { ...

2018-06-24 13:36:22 820

原创 入坑JAVA多线程并发(七)volatile到底是什么

多线程中有三个特性:1、原子性:不可分割的一个操作,类似于数据库的事物。如下代码:> int a,b;a = 0; //1b = a; //2a = a+1; //3a++; //4上面4个语句中只有1是原子性操作,语句2:先取得a的值,再赋给b,语句3:取得a的值,再加1,最好赋给a;语句4:取得a的值,加1,再赋给a...

2018-06-24 11:38:50 254

原创 入坑JAVA多线程并发(六)死锁

  在多线程的中,因为要保证线程安全,需要对一些操作进行加锁,但是如果操作不当,会造成死锁,导致程序无法运行下去。   形成死锁的场景:如果有两个线程,线程1和线程2,线程1运行,获得锁A,线程2运行,获得B,线程1等待锁B的释放,线程2等待锁A的释放,互相等待,形成一个死循环 代码如下:public class Main { public static void main(...

2018-06-24 09:48:39 336

原创 Java从入门到放弃(十六)定时器Timer

Timer是java自带的定时器,可以做一些简单的定时任务。创建对象 Timer timer = new Timer(); //定义定时器的名字 Timer timer1 = new Timer("定时器1"); //第一个参数:定时器名字,第二参数设置是否是守护线程 Timer timer2 = new...

2018-06-10 16:23:33 926

原创 入坑JAVA多线程并发(五)生产者消费者模式

生产者消费者模式对于理解多线程是一个很经典,也很好的例子资源类:class Resource{ //资源初始化个数 private int init; //资源最大个数 private int Max; public Resource(int init,int Max){ this.init = init; th...

2018-06-09 15:35:58 587

原创 入坑JAVA多线程并发(四)卖火车票了解一下

多线程最常用的两个例子就是:火车票和生产者消费者问题了,本文简单的实现一下卖火车票的例子, 首先创建车票类:class Ticket implements Runnable{ private int num; private int init = 1; private String lock; public Ticket(int num,String ...

2018-06-09 13:08:13 5901

原创 入坑JAVA多线程并发(三)同步锁synchronized

先来一个例子:public class Main { public static void main(String[] args) { ThreadTest test1 = new ThreadTest("线程1"); ThreadTest test2 = new ThreadTest("线程2"); test1.start(); ...

2018-06-09 11:04:40 403

原创 入坑JAVA多线程并发(二)线程的生命周期和常用方法

线程的生命周期大致分为五种状态:1. 新建:新建一个线程对象。2.可运行:启动线程,调用start方法或者调用线程池的excute方法等,此时线程会进入可运行线程池中,等待获取CPU的时间片。3.运行运行状态,也就是获得了CPU的时间片,执行run方法4.阻塞阻塞状态,线程因为某种原因让出了CPU的时间片,暂时停止运行。阻塞可能是调用了wait方法,I/O阻...

2018-06-03 23:55:55 536

原创 入坑JAVA多线程并发(一)创建线程的三种方式

java中创建线程的方式有三种,继承Thread,实现Runable,实现Callable;继承Threadr public class TheadTest extends Thread { @Override public void run() { System.out.println("已经启动线程"); }...

2018-05-31 22:42:51 258

原创 Integer自动拆箱遇到的一个坑

代码大致如下: class test{ private Integer num; private Integer sum; public Integer getNum() { return num; } public void setNum(Integer num) { ...

2018-05-28 22:17:37 759 1

原创 Java从入门到放弃(十五)集合框架之LinkedHashMap源码

LinkedHashMap是一个有序的HashMap,各个节点以双向链表的形式链接着,结构如图所示: LinkedHashMap的真实结构不会死这样子的,因为长度原因截图部分。节点里的数字标识实际上是没有的,是为了表示插入的顺序(如果是jdk1.7图会有不同,因为1.8之前hashmap是头插入,1.8之后是尾插入)。每一个节点就是一个内部类Entry对象,这个结构图和HashMap的结构图基本...

2018-05-21 18:32:55 166

原创 Java从入门到放弃(十四)集合框架之TreeMap源码

我们经常需要对一些集合按照指定的规则进行排序,比如学生按照学号排序,或者按照成绩排序,集合里面有专门排序的集合,如TreeMap。TreeMap里面是使用的红黑树结构。构造方法 private final Comparator<? super K> comparator; private transient Entry<K,V> root; ...

2018-05-20 12:45:37 165

原创 LeetCode刷题笔记(十一)盛最多水的容器

题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。解法1:暴力class Solution { public int maxArea(int[] heig...

2018-05-13 13:56:40 1529

原创 LeetCode刷题笔记(十)正则表达式匹配

给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: fals...

2018-05-13 09:22:23 1421

原创 LeetCode刷题笔记(九)回文数

题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为...

2018-05-12 16:28:02 177

原创 LeetCode刷题笔记(八)字符串转整数 (atoi)

题目:实现 atoi,将字符串转为整数。        在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第...

2018-05-12 15:40:32 1736

原创 Java从入门到放弃(十三)集合框架之HashSet源码

        HashSet是Set集合的一种,Set集合是一种不允许出现重复值的集合,可以用来作为去重。1、构造函数    private transient HashMap<E,Object> map; //内部的一个HashMap数据成员 private static final Object PRESENT = new Object(); ...

2018-05-07 23:39:12 147

原创 LeetCode刷题笔记(七)反转整数

题目:给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21解法1:字符串解法class Solution { public int reverse(int x) { int result; StringBuilder str = ne...

2018-05-06 13:26:26 204

原创 LeetCode刷题笔记(六)Z字形变换

题目:    将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = "PAYPALISHIRING", nu...

2018-05-06 11:45:28 188

原创 Java从入门到放弃(十二)集合框架之HashMap源码(3)

1、romove方法 public V remove(Object key) { Node<K,V> e; return (e = removeNode(hash(key), key, null, false, true)) == null ?null : e.value; //调用removeNode方法,返回调用方法的值 } final ...

2018-05-05 23:12:35 116

原创 JAVA随时笔记(三):自己实现一个简单的ArrayList

        本着更加深刻的理解ArrayList的目的,所以自己实现一个简单的ArrayList,只是实现了List接口,实现了大部分的方法,其实还有一些地方不完善,比如对于参数的异常判断,返回值的判断,还有常数的直接使用。其实只要明白其中的原理即可。MyArrayList类:package testpackge.util;import java.util.*;/** * 自己实现A...

2018-05-05 07:04:45 322

原创 IDEA error:Let definitions are not supported by current javascript

file-settings:设置js版本

2018-05-04 08:09:56 6837

原创 LeetCode刷题笔记(五)最长回文子串

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例2:输入: "cbbd"输出: "bb"解法1:暴力遍历class Solution { public String longestPalindrome(String s) { Strin...

2018-05-02 12:34:19 198

原创 Java从入门到放弃(十一)集合框架之HashMap源码(2)

1、put方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } //hash就是key的hash值,根据这个hash得出数据存放再数组中的位置,onlyIfAbsent为true时,不存在key才会执行put操作。 final...

2018-05-02 07:57:47 163

原创 Java从入门到放弃(十)集合框架之HashMap源码(1)

        HashMap是使用最最多的Java集合框架之一,在面试中如果问基础肯定是要问集合框架的,要问集合框架那HashMap是一定少不了的。所以准备深入理解一下内部的实现。       看源码之前先了解一下HashMap的底层数据结构,它是一个数组加链表的结构      HashMap把每一个键值对包装成一个Node对象(Node是一个内部类),如图所示HashMap是一个数组加链表的结...

2018-04-29 09:14:03 229

原创 LeetCode刷题笔记(四)两个排序数组的中位数

题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5解法1:如果不考虑题目要求的时间复杂度,只需要遍历两...

2018-04-25 14:34:25 416 2

原创 JAVA随时笔记(二):Java面试题---基础之ArrayList相关

1、ArrayList的扩容原理答:ArrayList的底层是一个数组结构,在jdk8之前,无参构造默认初始化容量为10,jdk8以后,容量默认为0,只有在添加第一个元素时,才扩容为默认的10。Arraylist的扩容是创建一个1.5倍长度的新数组,然后用Arrays.copyOf方法(内部调用的system.copy方法,system.copy是一个native方法,可以快速高效的对数组进行复制...

2018-04-22 23:33:39 215

原创 LeetCode刷题笔记(三)无重复字符的最长子串

题目: 给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串。...

2018-04-17 18:58:37 2569 2

原创 Java从入门到放弃(九)集合框架之LinkedList源码(2)

    上一篇Java从入门到放弃(八)集合框架之LinkedList源码(1)介绍了add和remove方法,这篇介绍LinkedList的set,get等方法。1、get方法public E get(int index) { checkElementIndex(index); return node(index).item; }方法很简单,就是一个越界检...

2018-04-15 14:46:42 159

原创 LeetCode刷题笔记(二)两数相加

题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807ListNode类public class Li...

2018-04-14 23:11:33 1804 1

原创 LeetCode刷题笔记(一)两数之和

题目:         给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。        你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题1:class Solution { public in...

2018-04-14 20:34:18 1341

原创 Java从入门到放弃(八)集合框架之LinkedList源码(1)

        LinkedList是基于双向链表的集合,先看以下代码:        List<Integer> list = new LinkedList<>(); for(int i = 1;i < 6;i++){ list.add(i); }代码执行后数据如图所示:结合LinkedList源码:    t...

2018-04-14 19:15:02 278

转载 JAVA随时笔记(一)try,catch,finally的返回值

1、public class TryCatchFinally { @SuppressWarnings("finally") public static final String test() { String t = ""; try { t = "try"; return t; } catch (E...

2018-04-06 22:32:54 313

全国省市区地址数据sql文件

全国各省市区的地址数据,适用于mysql数据库,包括建表语句

2017-10-24

空空如也

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

TA关注的人

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