node

删除单链表中倒数第 k 个节点

旧城冷巷雨未停 提交于 2020-03-03 17:18:21
思路 1 :两个指针 p1 ,p2 ,p1从头开始遍历,当 p1 到达第 k 个节点时,p2 开始; 当 P1 到达链表的最后一个节点时,p2 所指的节点则为链表中倒数第 k 个节点。 public class Node{ public int data; public Node next; public Node(int data){ this.data = data; } public Node removeLastKNode(Node head,int k){ if(head == null || k < 1){ return head; } Node p1 = head; Node p2 = head; int num = 1; while(p1.next != null && num < k){ ++num; p1 = p1.next; } while(p1.next != null){ p1 = p1.next; p2 = p2.next; } p2.next = p2.next.next; return head; } } 思路 2:时间复杂度 O(n) ,空间复杂度 O(1)。 1>若链表为空或 K < 1,直接返回; 2>链表从头走到尾,每移动一步,k 值减 1 ; 3>若 k > 0,则没有倒数第 k 个节点,返整个链表; 若 k = 0,则头结点为倒数第 k

HashMap分析

眉间皱痕 提交于 2020-03-03 16:51:36
目录 存储结构 初始化 put resize 树化 get 为什么HashMap中equals()和hashCode()要同时重写? 为何HashMap的数组长度一定是2的次幂? 线程安全 参考 存储结构 JDK1.8前是数组+链表,JDK1.8之后是数组+链表+红黑树。本文分析基于JDK1.8源代码。 HashMap的基础结构是Node ,它存着hash、键值对,Node类型的指针next。 主干是桶数组,链表bin用于解决hash冲突,当链表的Node超过阈值(8),执行树化操作,将该链表改造成红黑树。 图片来源:Java核心技术36讲 初始化 HashMap有4个构造器,其他构造器如果用户没有传入initialCapacity (容量)和loadFactor(负载因子)这两个参数, 会使用默认值 ,initialCapacity默认为16,loadFactory默认为0.75。 基于lazy-load原则,主干数组table的内存空间分配不在初始化中,而是在put中。 public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " +

用js获取QQ好友信息和QQ群信息

对着背影说爱祢 提交于 2020-03-03 15:53:28
获取QQ好友 网页登入QQ邮箱,https://mail.qq.com,登入后点击写信,然后在右侧有个通讯录, 如果有显示最近联系人的列表存在,一定要点一下清空。然后让分组列表展开 不然代码无法食用。 按下 F12 打开控制台,复制粘贴代码后,还会下载txt文件,这就是txt文件就是QQ好友获取到的信息了。 代码如下: var saveAs = saveAs || ( function ( view ) { "use strict" ; if ( typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./ . test ( navigator . userAgent ) ) { return ; } var doc = view . document , get_URL = function ( ) { return view . URL || view . webkitURL || view ; } , save_link = doc . createElementNS ( "http://www.w3.org/1999/xhtml" , "a" ) , can_use_save_link = "download" in save_link , click = function

Ubuntu中安装最新NodeJS和NPM

跟風遠走 提交于 2020-03-03 15:21:52
背景 为了安装GNU QEMU Eclipse,需要安装比较新的nodejs $ npm install --global xpm@latest ▌ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟ WARN engine xpm@0.5.0: wanted: {"node":">7.7.0"} (current: {"node":"4.2.6","npm":"3.5.2"}) 参考: Ubuntu18安装最新版nodejs 、 Ubuntu16.04安装最新版nodejs 更新ubuntu软件源 Ubuntu 16.04 TLS,执行以下命令: sudo apt-get update sudo apt-get install -y python-software-properties software-properties-common sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update Ubuntu 18.04 TLS,执行以下命令: sudo apt-get update sudo apt-get install -y

JQuery/JS插件 jstree 创建节点

核能气质少年 提交于 2020-03-03 12:02:39
局部代码 var instance = $('#jstreeModule').jstree(true);//获取jstree对象 var obj = instance.create_node(selObj, data, 'last', function () { layer.close(index);//节点创建成功后 才能关闭弹窗 }); api: https://www.jstree.com/api/#/?f=create_node([par,%20node,%20pos,%20callback,%20is_loaded]) 来源: https://www.cnblogs.com/guxingy/p/12401166.html

[Java 源码] LinkedList

ⅰ亾dé卋堺 提交于 2020-03-03 07:01:50
还是和前面的 ArrayList 一样, 选出重要的源码进行分析 : 基础属性 // 结点数量 transient int size = 0; // 第一个结点(头结点) transient Node<E> first; // 最后一个结点(尾结点) transient Node<E> last; // 不带参数的构造器 public LinkedList() { } // 参数为 collection 集合的构造器 public LinkedList(Collection<? extends E> c) { this(); addAll(c); } // 存放结点数据的内部类, 从这里可以看到是双向链表 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } } linkLast 方法 : 将元素放到链表的结尾处 : void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null)

深度解锁Webpack系列

可紊 提交于 2020-03-03 01:28:49
1.webpack 是什么? webpack 是一个现代 JavaScript 应用程序的静态模块打包器,当 webpack 处理应用程序时,会递归构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将这些模块打包成一个或多个 bundle。 2.webpack 的核心概念 entry: 入口 output: 输出 loader: 模块转换器,用于把模块原内容按照需求转换成新内容 插件(plugins): 扩展插件,在webpack构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要做的事情 3.初始化项目 新建一个文件夹,如: webpack-first (当然,你可以使用任意一个你喜欢的项目名)。推荐大家参考本文一步一步进行配置,不要总是在网上找什么最佳配置,你掌握了webpack之后,根据自己的需求配置出来的,就是最佳配置。 本篇文章对应的项目地址(编写本文时使用): github.com/YvetteLau/w… 使用 npm init -y 进行初始化(也可以使用 yarn)。 要使用 webpack,那么必然需要安装 webpack、webpack-cli: npm install webpack webpack-cli -D 复制代码鉴于前端技术变更迅速,祭出本篇文章基于 webpack 的版本号: ├── webpack@4.41.5 └── webpack

面试必问的HashMap改变了啥?

心不动则不痛 提交于 2020-03-03 01:25:57
微信公众号: Java修炼手册 关注可领取3T编程资料及面试题解。问题或建议,请公众号留言; 希望我的分享对你有所帮助 HashMap HashMap是面试必问的知识点之一,也是java开发最常用的一种数据模型,HashMap属于复合结构,以key-value形式存储数据,其中key是不允许重复的但是允许为空,value是可以重复或为空的,在jdk1.8前,它的结构为数组+链表,在jdk1.8后变成了数组+单向链表+红黑树 当JVM存储HashMap的K-V时,首先计算key的hash值,以此来确定插入的数组位置,但是这一hash值的位置可能已经存在有值,这时就顺延到同一hash值的元素的后面形成了单向链表,同一个链表上的Hash值是相同的,所以说数组存放的是链表!他的结构图: 红黑树的阈值是8,当链表大于等于8时链表变成了红黑树结构,大大减少了查找的时间。 这是源码的解释: 1 /** 2 * The bin count threshold for using a tree rather than list for a 3 * bin. Bins are converted to trees when adding an element to a 4 * bin with at least this many nodes. The value must be greater 5

WAS:如何添加node

非 Y 不嫁゛ 提交于 2020-03-03 00:24:33
添加node的方法,有如下两种: a.通过ND的管理端添加: 首先,确保server1,dmgr都正常启动。 然后,进入ND的管理端,“系统管理->Node Agent->添加节点”,在“主机”输入框中输入Base的IP或网络主机名,点“确定”后即可添加。 b.通过命令行添加: 首先,确保dmgr都正常启动,server1可以不启动。 然后,进入${WEBSPHERE_HOME}/AppServer/bin,使用“addNode dmgr_host [dmgr_port]”命令,“dmgr_host”为dmgr的IP或网络主机名, “dmgr_port”为dmgr服务器的连接器端口号,默认使用SOAP连接方式,端口号可以在安装ND时的“SOAP连接器地址”项中看到,也可以在 ${WEBSPHERE_HOME}\DeploymentManager\config\cells\<cell_name>\nodes\<node_name>\serverindex.xml的“endPointName="SOAP_CONNECTOR_ADDRESS"”条目中找到 添加node成功后,可以在登录dmgr服务器的管理端中看到如下两项被添加: “服务器->应用程序服务器”中出现新的应用服务器名 “系统管理->Node Agent”中出现新的Node Agent名 添加node成功后

nodejs selenium

 ̄綄美尐妖づ 提交于 2020-03-02 19:59:19
https://www.npmjs.com/package/selenium-webdriver https://www.selenium.dev/selenium/docs/api/javascript/index.html 驱动下载地址 https://github.com/mozilla/geckodriver/releases/ 0.26.0版本驱动 支持chrome 71~75 firefox 0.26.0 支持目前最新的版本 将下载的驱动和文件放到一起或者加入path 截图百度搜索 const {Builder, By, Key, until, Options} = require('selenium-webdriver'); const fs = require('fs'); const firefox = require('selenium-webdriver/firefox'); function waitTime(n) { return new Promise(resolve => setTimeout( () => resolve() , n )) } (async function example() { let options = new firefox.Options() options.headless() let driver = await new