8 testim

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 43w+

算法与数据结构——两个数组求交集

package com.lxd.leetcode.demo.Array;import java.util.*;/** * @author lxd * @version 1.0.0 * @create 2020-08-14 15:32 * @desc 两个数组求交集 **/public class TwoArrayIn { /*** * 两个数组求交集,每个值在每个数组中出现的额次数一致,Map映射的问题 <元素,元素出现的次数> * *

2020-08-14 16:41:41

算法与数据结构——返回流式数据的第K大元素

返回流式数据的第K大元素思路:1、思考返回最大数据的思路,维护一个最大值,每次进来的元素和最大值比较,则能找到最大值2、如果把最大值换成第K大元素,维护一个前K大的排序数组,每次进来的元素和第K位值比较,如果比第K位的值大,则把第K位的元素踢出排序数组,把刚才的比较值加入排序数组再次排序3、可以使用最小顶堆来实现这个排序数组,因为最小顶堆的堆顶永远是堆的最小值时间复杂度O(n)*O(log2K)/** * @author lxd * @version 1.0.0 * @create

2020-07-04 17:15:29

算法与数据结构——用栈实现队列的功能,用队列实现栈的功能

1、用栈实现队列的功能思路 :队列的特点 FIFO栈的特点 FILO用两个栈,一个做为入队栈,一个作为出队栈,每次出队,都从出队栈出,如果出队栈无数据,从入队栈出栈,再入出队栈package com.lxd.leetcode.demo.stack;import java.util.Arrays;import java.util.Stack;/** * @ClassName StackImplQueue * @Description: 用栈实现队列功能 * @Author xia

2020-07-03 23:18:33

算法与数据结构——判断链表中是否有环

package com.lxd.leetcode.demo;import com.sun.org.apache.xerces.internal.dom.PSVIAttrNSImpl;import java.util.HashSet;import java.util.Set;/** * @author lxd * @version 1.0.0 * @create 2020-07-01 17:50 * @desc 链表中是否有环 **/public class LinkedHashLo

2020-07-02 16:01:40

Netty学习笔记——Netty那些“锁”事

1、同步问题核心三要素原子性,并非一气呵成,岂能无懈可击可见性,你做的改变,别人看不见有序性,不按套路出牌2、锁的分类3、netty玩转锁的五个关键减少锁的粒度,在意锁的对象和范围减少锁占用空间的大小,在意锁对象本身的大小提高速度,在意锁的速度不同场景选择不同的并发类,按需择锁衡量好锁的价值,能不用尽量不用...

2020-06-30 16:42:18

Netty学习笔记——keeplive和idle检测

1、为什么需要keeplive相当于接订餐电话时,对方没有相应,你这边说的一句“您还在不?”以下三种情况需要发送keeplive对端异常崩溃对端在,处理不过来对端在,但不可达2、怎么设计keeplive?3、应用层为什么还需keeplive?协议层每层的功能不同,关注点也会不同,传输层关注是否“通”,应用层关注是否可服务,类比订餐电话,电话可以通,但不一定有人接TCP层的keeplive默认是关闭,且在经过路由等中转设备的时候有可能被丢弃TCP层的keeplive参数是系统级别的

2020-06-30 16:41:01

Netty学习笔记——解读Netty处理粘包、半包问题

1、 解码核心工作流程数据积累调用Decode(模板模式)Decode完之后清理数据2、解码中两种数据积累器的区别内存复制逻辑视图3、三种解码器常用额外控制参数FixedLenghthFrameDecoder (固定长度)DelimiterBasedFrameDecoder (可以多个分隔符)LengthFieldFramdDecoder (固定长度的字段存储内容长度)核心参数:lengthFieldOffset length开始的位置lenghtFieldLengt

2020-06-30 16:40:12

Nett学习笔记——TCP的粘包、半包问题

1、什么是粘包、半包?粘包:一次性把多条消息发过来半包:发过来的消息不完整一句话概括粘包和半包问题收发:一个发送可以被多次发送,多个发送可以被一次接收传输:一个发送可以占用多个传输包、多个发送可以公用一个传输包2、粘包与半包的原因根本原因:TCP 是流式协议,数据无比边界tips:UDP 有边界、类似包裹(想象寄快递、快递必然不会混)粘包:a、发送数据<stock缓冲区大小b、接收方读取套接字缓冲区不够及时半包:a、发送的数据>套接字缓冲区b

2020-06-30 16:39:24

数据结构与算法-斐波那契数列的四种解法

1、暴力穷举法/**** * 暴力穷举 */ private static int fib1(int n){ if(n<=2) return 1; return fib1(n-2)+fib1(n-1); }2、备忘录解法 /**** * 1、增加一个备忘录 * 2、存储已经计算不过的值 * @param * */ private stati

2020-06-30 16:38:15

数据结构与算法-链表逆序

package com.lxd.leetcode.demo.linked;/** * @ClassName LinkedReversed * @Description: 单项链表逆序 * @Author xiaod * @Date 2020/6/21 * @Version V1.0 **/public class LinkedReversed { static class LinkNode{ private int value; private

2020-06-30 16:37:18

数据结构与算法-使用单项链表判断字符串是否回文

思路1、快慢两个指针同时从头结点出发,快指针每次两步,慢指针每次1步,直到快指针到尾节点,慢指针刚好到中间位置,2、同时将中间位置之前的字符串用一个单链表逆序存储3、依次比较中间位置两边的字符串是否相等,即可判断字符串是否回文package com.lxd.leetcode.demo;import java.util.Scanner;/** * @author lxd * @version 1.0.0 * @create 2020-06-20 16:52 * @desc 判断一个

2020-06-30 16:36:31

算法与数据结构-1、复杂度分析

1、如何分析代码的复杂度简单来讲,代码复杂度指的是代码的执行效率,复杂度越高,执行效率越查一般用以下三种方法来分析代码的复杂度a.只关注循环次数最多的一块代码b.加法法则c.乘法法则几种常见的复杂度分析常量阶 O(1)线性阶 O(n)对数阶 O(logn)线性对数阶 O(nlogn)平方阶O(n2)、立方阶等 O(n3)…K次方阶O(nk)指数阶O(2n)阶乘阶O(n!)2、最好、最坏、平均、均摊时间复杂度eg:int array[] = new int[10];

2020-06-30 16:35:36

JVM学习笔记—垃圾回收

1. 如何确定被回收标记是垃圾回收的第一步,确定内存那些正在使用,那些不再使用对象回收——引用计数对象回收——可达性分析方法区回收2.可达性分析算法简单来说,将对象及其应用关系看作一个图,选定活动的对象作为GC ROOTS然后跟踪引用链条,如果对象和GC TROOTs之间不可达, 也就是不存在应用,就可以被回收了引用类型和可达性级别引用类型强引用:常见的普通对象引用,只要还有强引用指向一个对象,就不会被回收软引用:JVM在内存呢不足时,才会尝试回收软应用的对象弱引用:随时可

2020-06-30 16:34:37

JVM学习笔记—类的加载

1.类加载机制1.1 三种类加载器Bootstarp loader(核心加载器)Extension class loader(扩展加载器)Applation class loader (应用加载器)1.2 JVM 如何找到class文件读取java.calss.path配置文件,找到class文件1.3 类不会重复加载1.4 类的卸载类的卸载满足两个条件类的引用全被回收加载类的classLoader实例被回收1.5 双亲委派模型(啃老模型)为了避免重复加载,采用的一种 自下

2020-06-30 16:33:52

Java并发学习笔记-基础篇2-Java内存模型

Java内存模型是什么?JMM (java memory model)Java内存模型站在程序要的角度可以理解为一种规范,规范了JVM如何按需提供禁用缓存和指令优化的方法具体包括以下:volatilesynchronizedfinnal6项happen-before规则happen-before规则是什么?前一个操作的结果对后续操作是可见,并不是指先后顺序程序的顺序规则在单线程中,前一个操作happen-before于它后续的所有操作volatile对一个volatile变量的写

2020-06-30 16:32:13

Java并发编程学习笔记—基础篇1-并发编程bug的源头

1.CPU缓存导致的可见性问题CPU缓存IO>内存IO>硬盘IO单CPU情况下,所有线程都在同一个CPU喜爱执行,A线程对缓存的操作,对B线程来讲,一定是可见的,如下图多CPU情况下,CPU缓存和内存的一致性问题就没有那么容易处理了,当多个线程在不同的CPU执行时,操作的是不同的CPU。举个例子:A线程操作CPU-1上的缓存,B线程操作的是CPU-2上的缓存,很明显,A线程对变量V的操作对B线程来讲是不具备可见性的。如下图:codeDemopublic class Visibili

2020-06-30 16:30:57
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。