nodejs 离线安装

npmbox

mysql 密码重置

linux
停止mysql服务

service mysqld stop

启动mysqld_safe ,跳过启动授权表。启动时加上skip-grant-tables参数目的是在启动mysql时不启动grant-tables,授权表。这样就可以修改root的密码了。

mysqld_safe –skip-grant-tables &

登录mysql,并修改密码:

mysql -uroot -p —-要求输入密码时,直接回车即可。

use mysql;
update user set password=PASSWORD(‘12345678’) where user=”root”; —将root密码设置为12345678
flush privileges;
quit

杀死mysqld_safe进程,并重启mysqld。

kill -9 11283 (11283为mysqld_safe进程)

service mysqld start

mysql -uroot -p (输入密码12345678即可)

windows
1、首先停止正在运行的MySQL进程
复制代码 代码如下:

net stop mysql

如未加载为服务,可直接在进程管理器或者服务中进行关闭。

2、以安全模式启动MySQL
进入mysql目录在命令行下运行
复制代码 代码如下:

d:
cd xampp/mysql/bin
mysqld.exe –skip-grant-tables

3、完成以后就可以不用密码进入MySQL了
复制代码 代码如下:

mysql -u root -p

提示输入密码时直接回车即可。

4、更改密码
复制代码 代码如下:

use mysql
update user set Password=password(‘新密码’) where User=’root’;
flush privileges;

5、启动MySQL服务
在任务管理器里关闭所有MySQL的进程,使用下面的命令启动。
复制代码 代码如下:

net start mysql

javascript 技术前沿

JSPM

systemjs

systemjs 是一个最小系统加载工具,用来创建插件来处理可替代的场景加载过程,包括加载 CSS 场景和图片,主要运行在浏览器和 NodeJS 中。它是 ES6 浏览器加载程序的的扩展,将应用在本地浏览器中。通常创建的插件名称是模块本身,要是没有特意指定用途,则默认插件名是模块的扩展名称。

通常它支持创建的插件种类有:

CSS System.import(‘my/file.css!’)
Image System.import(‘some/image.png!image’)
JSON System.import(‘some/data.json!’).then(function(json){})
Markdown System.import(‘app/some/project/README.md!’).then(function(html) {})
Text System.import(‘some/text.txt!text’).then(function(text) {})
WebFont System.import(‘google Port Lligat Slab, Droid Sans !font’)

java map

Map提供了一种映射关系,

map 中的键值对一Entry类型的对象实例形式存在
map 支持泛型

HashMap 类

HashMap是Map的一个重要的实现类,也是最常用的,基于哈希表实现

key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射,
key不可以重复

java collection

Collection 接口

  • 是List Set Queue接口的父接口
  • 定义了可用于操作List Set Queue 的方法 - 增删改查

List接口及其实现类 ArrayList

List 是元素有序并且可以重复的集合,被称为序列

Lsit 可以精确的控制每个元素插入的位置,或删除某个元素的位置

ArrayList数组序列,是List的一个重要实现类

Set

Set 中的对象不可重复,
Set 可以添加空对象

java 集合

作用

  • 在类的内部对数据进行组织
  • 简单快速的搜索大数量的条目
  • 有的集合接口,提供一些列排列有序的元素,并且可以再序列件快速的插入或者删除有关元素
  • 有的集合接口,提供了映射关系,可以通过key快速查找到对应的唯一对象,而且这个关键字可以使任意类型的

数组,
数组的长度是固定的,集合的长度和容量可以动态扩展

数组只能通过下标访问,为整形的,只能通过遍历筛选,而集合提供了映射关系,可以方便查找

java 集合框架

collection 家族 根接口

list 常用 排列有序 序列
list 实现类
Arraylist 数组序列
LinkedList 链表

queue 排列有序 队列
LinkedList 链表

set 排列无序 集
HashSet 哈希集

map 家族

HashMap 哈希表

存储特点

collection

存储的是一个一个的对象

map

Entry 为map的内部类 键值对
key value 为一个映射, Entry 类的实例

使用频率

Arraylist HashSet HashMap

java 泛型

泛型只是规定某个集合只可以存放特定类型的对象

并且会在编译期间进行类型检查

只可以直接按指定类型获取集合元素,或者子类型

泛型不能使基本类型,必须是引用类型的,不能使基础类型的。

如果一定要用基础类型,必须使用基础类型的包装类

int — Integer

long — Long

boolean — Boolean

java IO

InputStream

read
ByteArrayInputStream
FilterInputStream

PipedInputString
PipedOutputStream

SequenceInputStream
Enumeration

DataInputStream
DataOutputStream

OutputStream

write
FilterOutputStream
ByteArrayOutputStream
PipedOutputStream

Decorator

RandomAccessFile

File
文件和目录路径名的抽象表示形式。

FilenameFilter
实现此接口的类实例可用于过滤器文件名。

java 线程

线程安全

比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。
在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
而如果是在多线程情况下,比如有两个线程,线程 A 先将元素1存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B向此 ArrayList 添加元素2,因为此时 Size 仍然等于 0 (注意,我们假设的是添加一个元素是要两个步骤,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值,结果Size等于2。
那好,我们来看看 ArrayList 的情况,期望的元素应该有2个,而实际只有一个元素,造成丢失元素,而且Size 等于 2。这就是“线程不安全”了。

原子操作

“原子操作(atomic operation)是不需要synchronized”,这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切[1] 换到另一个线程)。

在多进程(线程)访问资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源。原子操作(atomic operation)是不需要synchronized,这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。通常所说的原子操作包括对非long和double型的primitive进行赋值,以及返回这两者之外的primitive。之所以要把它们排除在外是因为它们都比较大,而JVM的设计规范又没有要求读操作和赋值操作必须是原子操作(JVM可以试着去这么作,但并不保证)。
首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存当中读取或者写入一个字节是原子的,意思是当一个处理器读取一个字节时,其他处理器不能访问这个字节的内存地址。奔腾6和最新的处理器能自动保证单处理器对同一个缓存行里进行16/32/64位的操作是原子的,但是复杂的内存操作处理器不能自动保证其原子性,比如跨总线宽度,跨多个缓存行,跨页表的访问。但是处理器提供总线锁定和缓存锁定两个机制来保证复杂内存操作的原子性。

原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是” 原子操作”,因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and_set、test_and_clear等指令用于临界资源互斥的原因。但是,在对称多处理器(Symmetric Multi-Processor)结构中就不同了,由于系统中有多个处理器在独立地运行,即使能在单条指令中完成的操作也有可能受到干扰。我们以decl (递减指令)为例,这是一个典型的”读-改-写”过程,涉及两次内存访问。设想在不同CPU运行的两个进程都在递减某个计数值,可能发生的情况是:
⒈ CPU A(CPU A上所运行的进程,以下同)从内存单元把当前计数值⑵装载进它的寄存器中;
⒉ CPU B从内存单元把当前计数值⑵装载进它的寄存器中。
⒊ CPU A在它的寄存器中将计数值递减为1;
⒋ CPU B在它的寄存器中将计数值递减为1;
⒌ CPU A把修改后的计数值⑴写回内存单元。
⒍ CPU B把修改后的计数值⑴写回内存单元。
我们看到,内存里的计数值应该是0,然而它却是1。如果该计数值是一个共享资源的引用计数,每个进程都在递减后把该值与0进行比较,从而确定是否需要释放该共享资源。这时,两个进程都去掉了对该共享资源的引用,但没有一个进程能够释放它–两个进程都推断出:计数值是1,共享资源仍然在被使用。

java 注释1

@see 类名
@see 完整类名
@see 完整类名#方法名

. @version
格式如下:
@version 版本信息
其中,“版本信息”代表任何适合作为版本说明的资料。若在 javadoc 命令行使用了“ -version”标记,就
会从生成的 HTML 文档里提取出版本信息。

  1. @author
    格式如下:
    @author 作者信息
    其中,“作者信息”包括您的姓名、电子函件地址或者其他任何适宜的资料。若在javadoc 命令行使用了“ -
    author”标记,就会专门从生成的 HTML 文档里提取出作者信息。
    可为一系列作者使用多个这样的标记,但它们必须连续放置。全部作者信息会一起存入最终 HTML 代码的单独
    一个段落里