node

Java集合之LinkedList源码解析

我的未来我决定 提交于 2020-01-10 12:32:56
下面我们来看看LinkedList的底层实现, 它继承抽象方法AbstractSequentialList<E>,实现List<E>, Deque<E>, Cloneable, java.io.Serializable接口 它的成员属性有, 1 transient int size = 0; 2 transient Node<E> first; 3 transient Node<E> last; size表示该集合的元素个数,初始值为0,first指向第一个Node,last指向最后一个Node, Node<E>是一个静态内部类, 1 private static class Node<E> { 2 E item; 3 Node<E> next; 4 Node<E> prev; 5 6 Node(Node<E> prev, E element, Node<E> next) { 7 this.item = element; 8 this.next = next; 9 this.prev = prev; 10 } 11 } item指当前元素,next是下一个元素的引用,prev是前一个元素的引用, LinkedList是一个双向链表, 百科中对于链表的定义是 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。 所以

用Decorator实现依赖注入,像Java一样写后台

亡梦爱人 提交于 2020-01-10 11:39:19
最近闲来无事,突发奇想,也顺便练练手,于是就萌生了,能否用typescript的decorator写一个Nodejs SpringMVC,通过依赖注入,自动实现文件加载,实例化等。然后就有了这个项目。 该项目支持: 依赖注入Controller ,Service 注入GET/POST/PUT/DELETE/PATCH等rest方法 解析rest api的参数,例如RequestParam 上传文件支持Multer 支持在vscode里面直接debug typescript 的代码 想学习如何debug typescript代码的同学可以留意一下,真的很好用。 easy-node-ioc 用 Typescript 的装饰器实现依赖注入,就像我们使用 Spring MVC 框架一样,web 框架使用的是 Express 。 安装 npm i easy-node-ioc --save-dev 快速开始使用 git clone https://github.com/chenkang084/easy-node-ioc.git npm i NODE_ENV=development npx ts-node demo/App.ts 执行完以上命令,将在命令行输出 Example app has started,代码项目已正常经启动起来了,尝试访问 http://localhost:9001/api

node系列1

你。 提交于 2020-01-10 10:27:11
NodeJS基础 JS是脚本语言,脚本语言都需要一个解析器才能运行,NodeJS就是一个解析器。 nodejs.org 打开终端,键入 node 进入命令交互模式,可以输入一条代码语句后立即执行并显示结果 $node >console('Hello World'); Hello World 如果要运行一大段代码的话,可以先写一个JS文件再运行。例如有以下 hello.js function hello() { console.log('Hello World!'); } hello(); 写好后在终端下键入 node hello.js 运行 $ node hello.js Hello World! 模块 一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名 有 require 、 exports 、 module 三个预先定义好的变量可供使用 require 函数用于在当前模块中加载和使用别的模块  1)相对路径(以 ./ 开头)2)绝对路径(以 / 或 C: 之类的盘符开头)3) .js 扩展名可以省略 var foo1 = require('./foo'); var foo2 = require('./foo.js'); var foo3 = require('/home/user/foo'); var foo4 = require('/home

HDU-6669-Game(模拟,贪心)

本秂侑毒 提交于 2020-01-10 10:16:04
链接: https://vjudge.net/problem/HDU-6669 题意: 度度熊在玩一个好玩的游戏。 游戏的主人公站在一根数轴上,他可以在数轴上任意移动,对于每次移动,他可以选择往左或往右走一格或两格。 现在他要依次完成 n 个任务,对于任务 i,只要他处于区间 [ai,bi] 上,就算完成了任务。 度度熊想知道,为了完成所有的任务,最少需要移动多少次? 度度熊可以任意选择初始位置。 思路: 刚开始以为是贪心,按y拍了个序,疯狂wa,找了个题解发现是要按顺序..... 维护当前所在区间,然后找从最近的跑来跑去就行. 代码: #include <bits/stdc++.h> using namespace std; const int MAXN = 1e3+10; struct Node { int x, y; }node[MAXN]; int n; int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while (t--) { cin >> n; for (int i = 1;i <= n;i++) cin >> node[i].x >> node[i].y; int res = 0; int l = node[1].x, r = node[1].y; for (int i =

ReentrantLock Condition 线程间通信

早过忘川 提交于 2020-01-10 10:00:05
方法介绍: boolean await() 阻塞线程 直至被唤醒 boolean await(long time, TimeUnit unit) 阻塞线程 超时自动唤醒 void signal() 唤醒一个await线程 void signalAll() 唤醒所有await线程 场景举例: 班级组织郊游, 每个到了的同学就在原地等待上大巴,先到的排在最前面, 后到的紧接着排在最后一个人后面, 直到班长来了, 班长有两种方式让让同学上车, 方式一: 班长从前往后一个一个点 点到几个上几个(按排队顺序) ------- await() + signal() 的使用 方式二: 班长直接让所有人按排队顺序上车 ----- await() + signalAll() 的使用 方式一代码如下: public static void main(String[] args) throws InterruptedException { ReentrantLock lock = new ReentrantLock(); //new condition Condition condition = lock.newCondition(); //t1线程 Thread t1 = new Thread(()->{ try { lock.lock(); System.out.println("t1到位准备

红黑树(一)之 原理和算法详细介绍

隐身守侯 提交于 2020-01-10 08:16:08
概要 前面分别介绍红黑树的 理论知识 、红黑树的 C语言 和 C++的实现 。本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习 红黑树的理论知识 ,再来学习本章。还是那句老话,红黑树的C/C++/Java实现,原理一样,择其一了解即可。 目录 1. 红黑树的介绍 2. 红黑树的Java实现(代码说明) 3. 红黑树的Java实现(完整源码) 4. 红黑树的Java测试程序 转载请注明出处: 更多内容: 数据结构与算法系列 目录 (01) 红黑树(一)之 原理和算法详细介绍 (02) 红黑树(二)之 C语言的实现 (03) 红黑树(三)之 Linux内核中红黑树的经典实现 (04) 红黑树(四)之 C++的实现 (05) 红黑树(五)之 Java的实现 (06) 红黑树(六)之 参考资料 红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。 除了具备该特性之外,红黑树还包括许多额外的信息。 红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。 红黑树的特性: (1) 每个节点或者是黑色,或者是红色。 (2) 根节点是黑色。 (3) 每个叶子节点是黑色。

Vue 由虚拟Dom创建真实Dom过程

旧时模样 提交于 2020-01-10 08:03:09
这篇文章简单介绍一下由虚拟Dom创建真实Dom的过程,还是以一个简单例子来进行分析: <html> <head> <style type="text/css"> </style> </head> <body> <script src="./vue.js"></script> <div id="app"> <div>{{message}}</div> </div> <script> const app = new Vue({ data : { message : "Vnode -> node" } }).$mount("#app"); </script> </body> </html> 之前文章分析过创建虚拟Dom的过程,这里看看从虚拟Dom到真实Dom过程。 // public mount method Vue.prototype.$mount = function ( el, hydrating ) { el = el && inBrowser ? query(el) : undefined; return mountComponent(this, el, hydrating) }; function mountComponent ( vm, el, hydrating ) { console.log("liubbc vm.$el: " + el.outerHTML); vm.

报错:无法加载文件 D:\\nodejs\\node_global\\webpack.ps1,因为在此系统上禁止运行脚本...

偶尔善良 提交于 2020-01-10 07:00:27
解决报错: (1)以管理员身份运行vs code (2)在终端执行:get-ExecutionPolicy,显示Restricted(表示状态是禁止的) 【受限制的、保密的】 (3)在终端执行:set-ExecutionPolicy RemoteSigned (4)在终端执行:get-ExecutionPolicy,显示RemoteSigned 版权声明:本文为CSDN博主「自~渡」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_45164496/article/details/102170303 来源: https://www.cnblogs.com/thinkAboutMore/p/12174371.html

nodejs之express 应用

蓝咒 提交于 2020-01-10 06:47:49
实例一 输出hello,world //express.js 服务端 // express module demo var express = require ( "express" ) ; var app = express ( ) ; app . get ( '/' , function ( req , res ) { res . send ( 'hello,world\n' ) ; } ) app . get ( '/user' , function ( req , res ) { res . send ( '/user get...\n' ) ; } ) var server = app . listen ( 8080 , function ( ) { var host = server . address ( ) . address ; var port = server . address ( ) . port ; console . log ( " http://%s:%s" , host , port ) ; } ) 在浏览器防卫或者curl 执行结果如下: 知识点 Express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。 app . get ( '/' , function ( req , res ) { //

使用单链表 模拟栈

无人久伴 提交于 2020-01-10 06:32:08
//使用单链表模拟栈 class MM { public static void main ( String [ ] args ) { singleList list = new singleList ( 5 ) ; list . push ( 1 ) ; list . push ( 2 ) ; list . push ( 3 ) ; list . push ( 4 ) ; list . showlist ( ) ; list . pop ( ) ; System . out . println ( ".............." ) ; list . showlist ( ) ; } } class singleList { Node head = new Node ( 0 ) ; int maxSize ; public singleList ( int maxSize ) { this . maxSize = maxSize ; } void push ( int n ) { Node temp = head ; int i = 0 ; while ( true ) { if ( temp . getNext ( ) == null ) break ; temp = temp . getNext ( ) ; i ++ ; } if ( i < maxSize ) {