mac nodejs 升降级

之前写了一个项目  https://www.ijson.com 使用的是angularjs1.3.2 开发的,nodejs版本用的是1.6的版本。 但是公司目前部分项目想要运行,则必须升级nodejs到更高版本,如果升级了nodejs,我之前的项目则无法正常编译,所以这就涉及到,一台机器多个nodejs版本的切换   第一步,先查看本机node.js版本:$ node -v第二步,清除node.js的cache:$ sudo npm cache clean -f第三步,安装 n 工具,这个工具是专门用来管理node.js版本的,别怀疑这个工具的名字,是他是他就是他,他的名字就是 “n”$ sudo npm install -g n第四步,安装最新版本的node.js$ sudo n stable第五步,再次查看本机的node.js版本:$ node -v   如果想要切换为6的版本  只需要执行命令即可 sudo n 6 如果要切换为8的版本 需要执行命令 sudo n 8  

国内使用淘宝镜像源为npm和yarn提升安装依赖速度

如果觉得安装速度慢,安装源和原来 npm 是一样的,可以通用,修改方法如下: 在国内不管使用npm还是yarn,安装速度都很慢。因为镜像源地址在国外,有qiang的存在,导致速度很慢,这里换上淘宝的镜像源,即可加速安装速度   这里示例使用的是yarn,使用npm的用户将yarn改为npm即可。   yarn config get registry # 查看当前设置的镜像源地址# -> https://registry.yarnpkg.com可以改成 taobao 的源:yarn config set registry 'https://registry.npm.taobao.org' 然后 yarn install 的速度就快多了    

Mongo 数据查询常用命令集

查询语法: db.collection.find(query, projection) query :可选,可以理解为sql的where条件,可以使用$and,$or,$exists等 projection :可选,可以理解为select * from ijson_data; 中的*;select name * from ijson_table;中的name,也就是我想要返回什么字段       1. 查询 work 字段是否存在 查询work存在的所有列db.getCollection('workflows').find({ "work":{"$exists":true}})查询work不存在的所有列db.getCollection('workflows').find({ "work":{"$exists":false}}) 2. 查询work等于张三的所有列 db.getCollection('workflows').find({ "name":"张三"})可以理解SQL为:select * from ijson_table where name = '张三' 3.

Linux查看当前目录下每个文件的大小

1. 查看当前目录下,每个目录及文件的大小(前提是有权限查看),如图,没有权限的会提示一下 du -sh * 2. 查看磁盘的使用情况 df -lh 3. 查看某个目录的大小 du -sh Downloads 4. 将当前目录下所有文件的大小给列出来。并将这些列出来的文件按照从大到小的方式排序 du -sh * | sort -nr 5. 将当前目录下所有文件的大小给列出来。并将这些列出来的文件按照从大到小的方式排序,且只要前10个 du -sh * | sort -nr | head 6. 将当前目录下所有文件的大小给列出来。并将这些列出来的文件按照从大到小的方式排序,且只要后10个 du -sh * | sort -nr | tail  

MAC应用无法打开或文件损坏的处理方法

有些用户下载了一些程序之后,却发现无法在MAC中安装,安装时会弹出下图所示警告框:“打不开 xxx,因为它来自身份不明的开发者”。那么该如何解决这个问题呢? 在MAC下安装一些软件时提示"来自身份不明开发者",其实这是MAC新系统启用了新的安全机制。 默认只信任 Mac App Store 下载的软件和拥有开发者 ID 签名的应用程序。 换句话说就是 MAC 系统默认只能安装靠谱渠道(有苹果审核的 Mac App Store)下载的软件或被认可的人开发的软件。   这当然是为了用户不会稀里糊涂安装流氓软件中招,但没有开发者签名的 “老实软件” 也受影响了,安装就会弹出下图所示警告框:“打不开 xxx,因为它来自身份不明的开发者”。   最简单的方式:按住Control后,再次点击软件图标,但是问题来了,可能你即使按住了Control ,也是让你扔到回收站,这个时候我们需要将任何来源勾选上。   那么问题又来了,有的同学没有这个选项,纸么办?   打开终端(Terminal.app) 拷贝粘贴,按下回车,输入密码 sudo spctl --master-disable 重新打开设置,再次

Guava学习笔记:EventBus

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。   1. 首先定义一个事件中心,用于注册或者销毁或发送事件使用 package com.ijson.event;import com.google.common.eventbus.EventBus;/** * desc:事件中心,注册,销毁以及事件的分发 * version: 6.7 * Created by cuiyongxu on 2019/9/3 12:45 PM */public class EventBusCenter { private static EventBus eventBus = new EventBus(); public static EventBusCenter instance = doCreate(); private static synchronized EventBusCenter doCreate() {

算法学习路径

这篇文章不算是原创文章,下面的文章,是我在之前的公司,以为算法大师分享给我的,很感谢他,能让我对算法有更深的了解,感谢这位友人!LWJ 传统算法: 初级(先决条件:无):链表,队列,栈,二叉树,二叉堆,排序,DFS,BFS,floyd算法,并查集,树状数组,huffman树,trie树,哈希表 中级(先决条件:初级传统算法):A*,IDA*,DP,Dijkstra+堆,SPFA,prim,kuskal+堆,强联通分量,线段树,网络流,KMP,RMQ 高级(先决条件:中级传统算法):状态压缩DP,AC自动机,斐波那契堆等(这类不好学,看兴趣) 传统算法没有列全,列了一些常用的,每一个列出的算法至少要到POJ刷3道该类别的题目,不参考任何代码和题解,才能算勉强掌握,切忌贪功冒进。 迭代算法:   初级(先决条件:无):BGD,SGD(对应回归算法) 中级(先决条件:初级迭代):遗传算法,SMO(对应SVM),ALS(对应推荐),SVD(对应特征选择和推荐) 分类/回归算法:   初级(先决条件:初级迭代):感知机算法,KNN,线性回归,logistic regression,局部加权回归,

java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.20\webapps\XXX doe

启动服务器,出现一下情况,是因为删除了tomcat中的项目,但是残留配置文件没有删除,解决方法:到服务器中(我用的是tomcat)找到了:conf\Catalina\localhost下有一个某个文件,比如;我报错的是b3log,那么路径下就有个b3log.xml,删除,就屁事没有了严重: Error starting static Resourcesjava.lang.IllegalArgumentException: Document base C:\tomcat\webapps\b3log does not exist or is not a readable directoryat org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4319)at org.apache.catalina.core.StandardCo

Linux下建立软链接及删除软链接

ln -s /var/ftp/pub /var/ftp/pub /var/ftp/pub/bank/3000/in    /var/ftp/pub就是源文件(或目录) /var/ftp/pub/bank/3000/in是链接文件名 其作用是当进入/var/ftp/pub/bank/3000/in目录,实际上是链接进入了a目录\   相当于在你的windows系统d盘有个文件或者目录,你点击右键选择"创建快捷方式到桌面",然后你点击桌面上的快捷方式,实际上打开的 是你d盘的文件或者是目录,是一个道理的   rm -rf  /var/ftp/pub/bank/3000/in    注意不是rm -rf  /var/ftp/pub/bank/3000/in/   因为这个相当于你在桌面创建的快捷方式,你可以对其进行删除,当时不要在后面加/,这样删除的目的就不纯洁了,是删除链路中的内容呢,还是删除软链接呢,这个尤其要注意    语法 ln [参数][源文件或目录][目标文件或目录] 其中参数的格式为 [-bdfinsvF] [-S backup-suffix] [-V {numbered,e

Linux(Redhat,Centos) 关闭防火墙

1. 重启后永久生效 开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 及时生效,重启后失效 开启:service iptables start 关闭:service iptabes stop

Git 回滚到指定版本并推送到远程分支

1. 首先需要做的是你得知道你想回滚到具体哪次提交的版本,执行 git log 自己看下 2. 执行 以下命令,用作回滚到具体哪次提交 git reset --hard 3. 回滚完毕后需要推送到服务器,这个时候,会将你git服务器上的代码给覆盖掉,也就回滚到某个历史版本,具体是master还是其他分支,自己定一下就好 git push -f origin master 4. 也同样可以执行强推的方式执行 git push -f 

maven 编译的时候跳过测试类

1. 第一种方式,在命令行下,转到要编译的项目目录下,执行以下脚本 mvn clean install -Dmaven.test.skip=true 2. 第二种,直接在pom文件中进行修改 org.apache.maven.plugins maven-surefire-plugin true 3. 第三种,也是修改pom文件,添加一个插件,但这中有个局限性,测试类必须是以 ***Test.java结尾的文件才行   org.apahce.maven.plugins maven-surefire-plugin **/*Test.java     以上三种方式,个人还是比较推荐第一或者第二种,看自己的需求,是执行命令还是在pom中添加插件    

JAVA实现Base64转码

package cn.jsprun.utils;import java.io.ByteArrayOutputStream;import java.io.UnsupportedEncodingException;public final class Base64 { private static final char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',

JAVA 实现FTP文件上传

package cn.jsprun.utils;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.security.NoSuchAlgorithmException;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPSClient;import sun.net.ftp.FtpLoginException;public class FtpUtils { private String ftphost; private String ftpuser; private String ftppass; private String ftppath; priv

Linux(Redhat,CentOS) 释放被占用端口

注意:必须使用root用户才能操作,不然无法看到端口的进程     场景: web应用启动的时候,自动启动了socket端口:9001,9002,当我关闭了tomcat,这两个端口却一直处于占用状态,导致我第二次启动tomcat的时候,一直处于端口被占用状态.   过程: 1.输入netstat -tln,查看系统当前所有被占用端口,主要是为了查看你的端口是否真正的被占用着,搭建可以看到我的9001,和9002端口都已经被占用了,所以我需要释放这两个端口 2.根据端口查询进程,输入lsof -i :9001,切记不要忘了添加冒号,如下图,就可以看到当前被占用的端口的进程 的进程编号   3.既然知道进程号了,那杀死当前进程就简单多了,直接kill -9 3340 回车,ok,杀死一个   4.既然杀死了,就得确认一下是否死透了,我们在输入下netstat -tln 看,9001和9002都没有了,因为我的9001和9002是依赖的两个socket端口,杀死其中一个,另一个也就挂了,所以会都消失,大家以后有这样的问题也可以仿照这么做    

MAC Charles 安装及使用

下载安装包,官网地址:https://www.charlesproxy.com/download/ 下载对应版本的包,并进行安装 安装后,非https的请求可以直接使用 http使用需要进行https配置,点击help->SSLProxying -> Install Charles Root Certificate 搜索Charles ,就能够看到以下内容,可能大家看到的内容和我不一样,大家的应该是前面的是红色的叉,显示不信任该证书 右击查看 显示简介->信任-> 使用此证书时 -> 始终信任,大家的图标就和我的一样了 回到工具首页,点击Proxy->SSL Proxying Settings -> Enable SSL Proxying点击ok,回到首页 选中要监听的链接地址,右击->Enable SSL Proxying 即可      

Java 占位补足

/** * description:  补足补空格,补足补*,缺什么补什么 * @author xyc 创建时间:2015-1-9   */public class Test0 { public static void main(String[] args) { System.out.println(noZero("11", 10, "left")); System.out.println(noZero("11", 10, "")); } /** * description:  不足位数补空格 * @param value 要补足的字符串 * @param leng 补足后的总长度 * @param align 位置,默认为右边不空格,如果为left的话,左边不空格,大家自己改 * @return   * @author xyc  * @update 2015-1-9 */ public static String noZero(String value, int leng, String align) { int length = value.length(

Linux下搭建软链接

创建软连接 ln -s  /var/ftp/pub /var/ftp/pub/bank/3000/in 介绍: /var/ftp/pub就源目录 /var/ftp/pub/bank/3000/in 是链接文件名,其作用是当进入/var/ftp/pub/bank/3000/in目录,实际上是链接进入了/var/ftp/pub目录 根据上面的例子在给大家举个例子, /var/ftp/pub/bank/3000/in 为你桌面上的QQ快捷方式图标 /var/ftp/pub为你QQ快捷图标指向的你的qq.exe文件 你点击/var/ftp/pub/bank/3000/in ,即QQ快捷方式图标,实际上是点击的你快捷方式指向的exe,大家明白了吧! 删除软连接 rm -rf  /var/ftp/pub/bank/3000/in  /var/ftp/pub/bank/3000/in 就是你桌面上的QQ快捷方式图标,当你不希望他指向你的qq.exe文件的时候,你就把快捷方式删掉就ok了,而且要注意,不是rm -rf  /var/ftp/pub/bank/3000/in/ 最后的斜杠要注意,你创建链接

设置easyui-datagrid标题及内容的位置

Complex DataGrid - jQuery EasyUI Demo   { "total":300, "rows":[ {"code":"001","name":"Name 1","addr":"Address 11"}, {"code":"002","name":"Name 2","addr":"Address 13"}, {"code":"003","name":"Name 3","addr":"Address 87"}, {"code":"004","name":"Name 4","addr":"Address 63"}, {"code":

Android关于uses-permission权限列表

android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在checkin数据库中,改值可以修改上传android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi来获取粗略的位置android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS)android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置用于测试android.permission.ACCESS_NETWORK_STATE允许程序访问有关的网络信息android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息an