分类 编程 下的文章

Nodejs中的一些小trick


之前常常因为不注意,习惯用写PHP或者Java的方式来写nodejs,产生了了一些错误,这里总结一些小小的trick,以便于展示nodejs的不同,和平时需要注意的地方。

变量提升

var variable = 'global';
console.log(variable); 
function fn () {
    console.log(variable); 
    var variable = 'local';
    console.log(variable);
}
fn();

你可能以为这段代码执行结果为:

global
global
local

但实际上结果是


数据结构与算法——常用数据结构及其Java实现


前言

仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛。所以准备在这里搞一个系列的文章,以期透彻。

本系列将采用Java语言来进行描述。亦即总结常见的的数据结构,以及在Java中相应的实现方法,务求理论与实践一步总结到位。

首先给出Java集合框架的基本接口/类层次结构:


Java8解决了什么?


在学习面向对象时,许多人都会用Java来举例子,但是其实Java并非纯正的面向对象语言,最明显的就是:int,double等基本类型不是对象。
自从java8出来过后,引入了流,函数式编程,就更不是在向着面向对象发展了。有人可能会感到诧异,为啥越来越偏离我们遵循了这么久的面向对象设计模式?

其实很简单,我们对工具的改造的最终目的都是为了解决问题,以前有面向过程解决不了的问题,那么面向对象出来解决了;现在面向对象有许多问题,那么就可以用函数式编程来解决,所以这些变化是很自然的,Java要在不同时代的保持自己的活力,就必须与时俱进,所以Java8的出现就是自然而然的。


Java String 探索


今天看到了一个Java string的相关问题,解决问题的过程中就想把string 好好理顺了,总结在这里。

== 和 equals()

== 是判断两个变量是否指向同一个对象,equals()只判断两个字符串内容是否相同

public class Cons {
    public static void main(String[] args) throws InterruptedException {

        String s2 = new String("vv");
        String s3 = "vv";
        System.out.println(s2 == s3);//false
        System.out.println(s3.equals(s2));//true
    }
}


Java多线程之内置锁与显式锁


Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,今天就来做一个总结。

Synchronized

内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁。

synchronized(list){ //获得锁
    list.append();
    list.count();
}//释放锁