node

Java并发系列-AQS源码学习

自闭症网瘾萝莉.ら 提交于 2020-01-07 22:09:29
目录 AQS框架学习 Node节点 等待队列 独占模式 共享模式 小结: AQS框架学习 Node节点 状态表示 cancelled:表明当前线程已经放弃锁 signal:表明当前线程正在运行,它后面的线程等着被它唤醒 condition:表明当前线程正在有条件的等待 propagate:表示下一次共享状态获取将会传递给后继结点获取这个共享同步状态。 两种模式 SHARED ,共享模式,一个空的Node对象 EXCLUSIVE,独占模式,直接是null 等待队列 AQS提供一个等待队列,该队列是一个双向链表结构,用来接收为获取到锁的线程所生成的node,该队列的head和tail都是同一个空的Node实例,并且都是懒加载。该队列所有的操作都是基于CAS的,所以可以保证线程安全性,每次添加新的node节点都是添加在链表的尾部。 独占模式 获取锁 如果获取锁失败且将当前线程添加到等待队列失败,则中断当前线程,代码如下: 当然,尝试获取锁在AQS框架里是一个抽象方法,让其子类来实现。独占模式下,Node节点的nextWaiter为null,在将当前线程添加到队列时,需要检查队列是不是还没有初始化。如果队列是有效的,则将当前线程所生成的节点添加到队列的尾部。当当前线程所生成的node节点处于排队期的时候,当前线程就开始以独占形式进行自旋去不断地尝试获取锁,因为尝试获取锁是在排队之前执行的

Node js 入门指南(1)

孤人 提交于 2020-01-07 21:30:04
目录 Node Js 定义 特点 Node使用方式 Tip: 使用导出文件的注意事项 Node 内置模块 http 模块 fs 模块 path内置模块 url内置模块 express框架 APIDOC Node Js 定义 Node Js 是一个运行在服务器端的JavaScript。基于一个Chrome JavaScipt 运行时建立的一个平台 特点 事件驱动I/O服务端 基于V8引擎 速度快,性能好 node -v 查看node js 版本号 使用common js 规范 Node使用方式 REPL 交互模式 在当前目录的cmd当中输入node 退出交互模式 .exit 或者node 直接打开文件 采用require() 方法引入要使用的模块 采用 module.exports 导出文件 声明全局变量时,使用全局对象 global Tip: 使用导出文件的注意事项 exports 默认指向 module.exports 导出作用只有module.exports才拥有。但是如果exports指向了新对象,那么就没有导出作用 // 第一种 module.exports = { a:a, b:b } //第二种 不推荐使用 module.exports.a=a module.exports.b=b //第三种 exports.a = a exports.b = b

vue 兼容ie

家住魔仙堡 提交于 2020-01-07 20:04:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、安装babel 2、安装babel-polyfill npm install babel-polyfill --save-dev import 'babel-polyfill' // main.js 3、 build -> webpack.base.conf.js 中 找到 module -> rules => { test:/\js&/, loaderl:"babel-loader", include:[  resolve('src'),resolve('test'),  resolve('node_modules/weback-dev-server/client'),  resolve('node_modules/element-ui/packages), resolve('node_modules/element-ui/src), resolve('node_modules/vue-echarts), resolve('node_modules/resize-detector), ] } 修改 添加 来源: oschina 链接: https://my.oschina.net/bing309/blog/3154571

链表的基本操作

懵懂的女人 提交于 2020-01-07 17:38:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> package com.lifeibigdata.algorithms.linearlist; /** * Created by lifei on 16/5/26. */ import java.util.HashMap; import java.util.Stack; /** * http://blog.csdn.net/luckyxiaoqiang/article/details/7393134 轻松搞定面试中的链表题目 * http://www.cnblogs.com/jax/archive/2009/12/11/1621504.html 算法大全(1)单链表 * * 目录: * 1. 求单链表中结点的个数: getListLength * 2. 将单链表反转: reverseList(遍历),reverseListRec(递归) * 3. 查找单链表中的倒数第K个结点(k > 0): reGetKthNode * 4. 查找单链表的中间结点: getMiddleNode * 5. 从尾到头打印单链表: reversePrintListStack,reversePrintListRec(递归) * 6. 已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序:

对nodejs的debug调试方法记录

ε祈祈猫儿з 提交于 2020-01-07 17:36:40
近期爆了一个nodejs下面的Mongo-express的rce漏洞,刚好趁这个机会对nodejs的debug调试这块研究一下。 采用vscode来进行对nodejs源码的调试。 CVE-2019-10758 PoC Setup docker pull mongo docker run -p 27017:27017 -d mongo npm install mongo-express@0.53.0 cd node_modules/mongo-express/ && node app.js 首先vscode工作区要在mongo-express目录下面,如果不在这个含有package.json同目录下,打断点,开调试会在断点爆 Breakpoint set but not yet bound错误。 然后vscode建立launch.json的调试文件 { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "启动程序", "skipFiles": [ "

Redis集群

落花浮王杯 提交于 2020-01-07 16:58:22
目录 Redis集群 理论 安装 管理 增加新-主节点  增加新-从节点 删除节点 我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。 个人博客: 传送阵 笔者微信: zhanghe15069028807 ,非诚勿扰。 Redis集群 理论 Redis集群起码是三个服务器做,每个服务器里面都有两个实例,两个实例并不能是单纯的一主一从,而是错开,防止一个服务器挂了之后,数据丢失,如下图所示: 当集群安装好之后,会生成16384个槽位用于存储键值,其中0--5500在master1这个槽位上,5501--11000在master2槽位上,11001--16384在第三个槽位上,如下所示: 当我们存储一个键值的时候,redis会通过一个公式计算出一个值,假如这个值 是6666的话,那么这个键值就存储到master2这个实例上,依次类推,存的时候是这样存,取的时候同样也是这样取。 客户端在连接的时候无论连接哪一个节点都可以,如果本节点上没有要存取的键值的话,本节点会帮客户端转发,客户端不需要重新连接。 万一其中的一个主挂了,并不是从立马主顶上,而是剩下的两个主一同投票来决定,并不是利用了“哨兵sentinel”的机制。 安装 我们操作的时候用一台服务器,然后开6个实例:7000-----7005 [root

把LIST递归成树形结构

我的未来我决定 提交于 2020-01-07 15:41:47
1.创建类 public class Node { public bool leaf { get; set; } public int FolderID { get; set; } public string iconCls { get; set; } public bool editable { get; set; } public bool expanded { get; set; } public int ParentFolderID { get; set; } public string text { get; set; } public bool InheritPerm { get; set; } //public string CreateDate { get; set; } //public string CreateBy { get; set; } public Node[] children { get; set; } } 2.从数据库获取数据转化成LIST 3.递归构建树形结构 public static string GetTree(List<Node> nodes) { var list = nodes.FindAll(a => a.ParentFolderID == 1);//最顶级的目录 foreach (var node in list) { if

JDK源码分析-HashMap

徘徊边缘 提交于 2020-01-07 14:08:55
HashMap包含的KV键值对的数量,也就是我们通常调用Map.size()方法的返回值 1 2 3 public int size() { return size; } 1.1.2 modCount HashMap的结构被修改的次数(包括KV映射数量和内部结构rehash次数),用于判断迭代器梳理中不一致的快速失败。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 abstract class HashIterator { ... final Node<K,V> nextNode() { Node<K,V>[] t; Node<K,V> e = next; if (modCount != expectedModCount) throw new ConcurrentModificationException(); if (e == null) throw new NoSuchElementException(); if ((next = (current = e).next) == null && (t = table) != null) { do {} while (index < t.length && (next = t[index++]) == null); } return e; } ... } 1.1.3 threshold

NPM全局安装依赖权限报错Error: EACCES: permission denied

柔情痞子 提交于 2020-01-07 14:08:34
最近在安装electron-forge的时候报错如下: ➜ ~ sudo npm install -g electron-forge npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3. npm WARN deprecated cross-spawn-async@2.2.5: cross-spawn no longer requires a build toolchain, use it instead npm WARN deprecated wrench@1.5.9: wrench.js is deprecated! You should check out fs-extra (https://github.com/jprichardson/node-fs-extra) for any operations you were using wrench for. Thanks for all the usage over the years.

linux下安装nodejs环境

老子叫甜甜 提交于 2020-01-07 11:56:39
第一步: 上官网:https://nodejs.org/en/ 通过360浏览器复制下载链接,也可以通过查看页面源码找到下载链接 通过查看页面源码找下载链接如下: 第二步: 用wget命令下载: wget https://nodejs.org/dist/v12.14.0/node-v12.14.0-linux-x64.tar.xz 第三步: 解压文件 tar xJf node-v12.14.0-linux-x64.tar.xz 第四步: 改成短名字 mv node-v12.14.0-linux-x64 node-v12.14.0 第五步: 添加到全局环境中 注意点是,/root/node-v9.2.0-linux-x64/bin/node 是node文件夹所在位置绝对路径,比如我的文件放在了root目录下,操作如下 ln -s /root/node-v12.14.0/bin/node /usr/local/bin/ ln -s /root/node-v12.14.0/bin/npm /usr/local/bin/ 安装后检查 [ root@VM_0_8_centos ~ ] # node -v v12.14.0 来源: CSDN 作者: Tlimited 链接: https://blog.csdn.net/u014204541/article/details/103868208