node

AQS 源码解析

为君一笑 提交于 2020-02-18 03:50:56
AbstractQueuedSynchronizer是Java并发包 java.util.concurrent 的核心基础组件,是实现Lock的基础。 1. AQS类结构 属性 // 属性 private transient volatile Node head;// 同步队列头节点 private transient volatile Node tail;// 同步队列尾节点 private volatileint state;// 当前锁的状态:0代表没有被占用,大于0代表锁已被线程占用(锁可以重入,每次重入都+1) private transient Thread exclusiveOwnerThread; // 继承自AbstractOwnableSynchronizer 持有当前锁的线程 方法 // 锁状态 getState()// 返回同步状态的当前值; setState(int newState)// 设置当前同步状态; compareAndSetState(int expect, int update)// 使用CAS设置当前状态,保证状态设置的原子性; // 独占锁 acquire(int arg)// 独占式获取同步状态,如果获取失败则插入同步队列进行等待; acquireInterruptibly(int arg)// 与acquire(int arg)相同

HashMap 实现原理及源码分析

偶尔善良 提交于 2020-02-18 00:43:39
HashMap是JDK中非常重要的容器,采用 数组 + 链表 的方式实现,理想情况下能支持 O(1) 时间复杂度的增删改查操作。本文将由浅入深地讲解哈希表的实现原理,并对HashMap的部分源码进行分析。 1. 从数组说起 数组应该是我们最先学习的数据结构,它是内存中一块连续的存储单元,因此计算机可以根据数组起始地址、元素长度和下标,计算出我们要访问的元素的地址,时间复杂度为 O(1) 。 以下代码定义了一个简单的 Student 类,假如我们要存储 20 个 Student 对象,我们希望能够在 O(1) 时间复杂度内,根据 studentID 找到相应的对象。 public class Student { public int studentID; public String name; public Student(int studentID, String name) { this.studentID = studentID; this.name = name; } } 如果我们要存储的 20 个 Student 对象的 studentID 刚好就是从 0 到 19,我们自然可以新建一个长度为 20 的 Student 数组 students,然后将对象的 studentID 作为数组下标,放到对应的 slot 里面,如下图所示。这样的话,如果我们想找 studentID

.net平台的MongoDB使用

試著忘記壹切 提交于 2020-02-17 19:18:21
网址:http://www.cnblogs.com/skychen1218/p/6595759.html 前言   最近花了点时间玩了下MongoDB.Driver,进行封装了工具库,平常也会经常用到MongoDB,因此写一篇文章梳理知识同时把自己的成果分享给大家。   本篇会设计到Lambda表达式的解析,有兴趣的同学也看看我之前写的《 表达式树的解析 》。   文章最后会给出源码下载地址。 MongoDB简介   MongoDB是一个基于分布式文件存储的非关系型数据库,相比于其他NoSql它支持复杂的查询。   文本是类似JSON的BSON格式,BSON是在JSON的基础上进化:更快的遍历、操作更简易、更多的数据类型。因此MongoDB可以存储比较复杂的数据类型,同样也支持建立索引。   MongoDB的概念有: DataBase(库) Collections(集合),类似于关系型数据库的表 Document(文档),类似于关系型数据库的一条数据    MongoDB优缺点 优点 高效性,内置GridFS,从而达到海量数据存储,并且满足大数据集的快速范围查询。 高扩展性,分片使MongoDB的有更高的吞吐量,复制使MongoDB更高的可用性。 BSON文档,易于理解、查看, 免费 缺点 不支持事务 不支持表关联 不耗CPU却耗内存 没有成熟的管理工具 MongoDB使用场景  

Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

谁说我不能喝 提交于 2020-02-17 18:41:51
在Node服务中连接mysql数据库,启动服务时报错: nodejs. ER_NOT_SUPPORTED_AUTH_MODEError : ER_NOT_SUPPORTED_AUTH_MODE : Client does not support authentication protocol requested by server 报错原因 : 我本地安装的mysql版本是8.0,默认的加密方式是caching_sha2_password,而这种加密方式是node-mysql(我在项目中使用的是egg-mysql)这类模块的较多版本中尚未支持的,因此提示客户端尚不支持服务所需的认证协议。 解决方案 : 修改本地mysql数据库登录使用的加密协议即可。可视化界面或命令行操作修改密码的加密方式。 命令行操作语句为: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '您的新密码'; ( 注意 ,命令行中分号或\g才表示sql语句的结束,直接换行并不会执行sql语句) 执行成功后重新启动node服务即可发现报错消失。 参考链接 : https://blog.csdn.net/kkkloveyou/article/details/91623834 来源: CSDN 作者: GY_Grace 链接:

单链表的实现-Java

余生颓废 提交于 2020-02-17 09:01:39
建立结点类 /** * @author cnkeysky * @date 2020-02-15 22:31 */ public class Node < T > { protected T data ; protected Node < T > next ; public Node ( ) { } public Node ( T data ) { this . data = data ; this . next = null ; } @Override public String toString ( ) { return this . data + "" ; } } 单链表 import java . util . Stack ; /** * @author cnkeysky * @date 2020-02-15 22:33 */ public class SingleLinkedList < T > { protected Node < T > header ; protected Node < T > rear ; private int count ; public SingleLinkedList ( ) { header = new Node < > ( ) ; rear = header ; } /** * 拷贝构造 * * @param list

node 版本更新

醉酒当歌 提交于 2020-02-17 07:34:46
1、打开cmd命令窗口,windows键+R,输入cmd确认,打开cmd窗口之后,输入node -v命令,先查看下当前nodejs的版本 2、如果上面查看的版本比较低,则可以开始升级 清除npm cache 3、升级之前还需要安装n模块,n模块是专门用来管理nodejs的版本 输入npm install -g n 4、如果出现npm ERR! notsup Unsupported platfor... npm ERR! notsup Valid OS: !win32这样错误信息,则可以在命令后面加上 --force 5、如果你想升级到一个指定的版本,则可以使用n 6.11.2来升级 6、还可以直接输入n stable,升级到nodejs最新稳定的版本 1、安装插件 npm install --save qrcode 2、卸载插件 npm uninstall qrcode # 全局安装 vue-cli $ cnpm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project # 这里需要进行一些配置,默认回车即可 This will install Vue 2.x version of the template. For Vue 1.x use: vue init webpack#1.0

Vuex的mapGetters方法使用报错

我的梦境 提交于 2020-02-17 06:33:30
报错信息: ERROR in ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./app/components/header.vue Module build failed: SyntaxError: F:/web/tabs/app/components/header.vue: Unexpected token (32:7) 原因: 解决: npm isntall --save-dev babel-preset-stage-3    修改.babelrc配置 { "presets": ["es2015", "stage-3"] }    代码中 import {mapGetters} from 'vuex' export default { data(){ return { } }, computed:{ ...mapGetters([ 'isMain' ]) }, methods:{ } }    来源: https://www.cnblogs.com/laneyfu/p/11220674.html

Kubernetes 1.17.2 高可用部署

烂漫一生 提交于 2020-02-16 21:22:59
20.0.0.200 10.0.0.200 bs-k8s-master01 管理节点 2c2g 20.0.0.201 10.0.0.201 bs-k8s-master02 管理节点 2c2g 20.0.0.202 10.0.0.202 bs-k8s-master03 管理节点 2c2g 20.0.0.203 10.0.0.203 bs-k8s-node01 业务节点 2c2g 20.0.0.204 10.0.0.204 bs-k8s-node02 业务节点 2c2g 20.0.0.205 10.0.0.205 bs-k8s-node03 业务节点 2c2g 服务器准备 所有机器 以bs-k8s-master01为例 #关闭selinux/firewalld/iptables [root@bs-k8s-master01 ~]# setenforce 0 \ > && sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config \ > && getenforce l -y iptables-services \ && systemctl stop iptables \ && systemctl disable iptables \ && systemctl status iptablessetenforce:

Appium+python自动化55-appium desktop每次启动安装Unlock和Appium Setting问题

爱⌒轻易说出口 提交于 2020-02-16 20:51:38
前言 部分真机可能会出现每次运行代码,启动app之前都会重复安装Unlock和Appium Setting这两个小工具,有的手机会自动安装,这个还好。 有的手机每次都会弹出一个安装确认框(如部分小米和vivo出现),这样就比较麻烦了,不手动去点,就无法继续执行代码了。 注意:appium之前老的版本1.4和appium desktop v1.7以后版本安装路径不一样,也有差异 小编主要是以appium desktop(大于1.7版本)为例 我的环境: appium desktop 桌面GUI版本 V1.7.1 appium desktop 无界面命令行版本 V1.8.1 appium desktop 桌面版本 1.先看appium desktop桌面安装版本,如下图,我的版本是v1.7.1 2.双击安装之后,会安装到c盘,可以直接搜索:appium desktop,然后按以下层级找到android-helpers.js修改如下几个地方 \appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib 修改如下几个地方: 1.注释掉355行 // await adb.install(unicodeIMEPath, false); 2.注释掉522行 // await

windows下安装nodejs

那年仲夏 提交于 2020-02-16 09:46:12
一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本: https://nodejs.org/en/download/ 2、选安装目录进行安装 3、环境配置 4、测试 三、前期准备 1、Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm ,是全球最大的开源库生态系统。 2、下载Node.js 打开官网下载链接: https://nodejs.org/en/download/ 我这里下载的是node-v6.9.2-x64.msi,如下图: 四、开始安装 1、下载完成后,双击“node-v6.9.2-x64.msi”,开始安装Node.js 点击【Next】按钮 勾选复选框,点击【Next】按钮 修改好目录后,点击【Next】按钮 安装完后点击【Finish】按钮完成安装 至此Node.js已经安装完成,可以先进行下简单的测试安装是否成功了,后面还要进行环境配置 在键盘按下【win+R】键,输入cmd,然后回车