- 博客(469)
- 资源 (15)
- 收藏
- 关注
原创 android studio编译项目遇到的常见问题
编译SDK版本必须要>= targetSdkVersion > minSdkVersionminSdkVersion 必须要>= 所依赖的库的编译版本targetSdkVersion 目标运行版本。
2022-11-08 14:12:56
1035
原创 Vue3+Ts各种错误整理
解决 Vue3项目编译出现 Could not find a declaration file for module 'module-name'. '/path/to/module-name.js' implicitly has an 'any' type
2022-08-05 15:01:00
2542
原创 Docker常用命令
#常用命令#docker kill $(docker ps -a -q) 杀死所有正在运行的容器#docker rm $(docker ps -a -q) 删除所有已经停止的容器#docker rmi $(docker images -q -f dangling=true) 删除所有未打 dangling 标签的镜#docker rmi -f <IMAGE_ID> 强制删除 无法删除的镜像#docker rmi -f $(docker images -q) 强制删除 无法删除的镜.
2022-03-26 00:47:46
1467
原创 openssl在mac下生成pkcs8证书
MacOS下openssl相关操作 openssl > genrsa -out key.pem 2048 生成2048字节 PEM格式的 RSA私钥 rsa -in key.pem -pubout -out app_public_key.pem 根据PEM格式RSA私钥生成公钥 pkcs8 -topk8 -inform PEM -in key.pem -outform PEM -out pkcs8.pem 转换成成pkcs8格式密钥 java使用 req -new -out ce..
2022-03-16 16:06:04
935
原创 Docker快速搭建Node.js Express运行环境
docker中包含三个概念 容器(Container)、镜像(Image)、仓库(Repository) ,我们可以在一台宿主机上创建 无数个容器用于运行 PHP、Node.js 等等服务, 这些容器都是以 镜像(Image) 为模板来创建的, 这些镜像统统存储与 仓库(Repository) 中。
2022-01-12 17:12:08
2059
原创 Node.js插件编写(9)-本地安全线程实现JS Promise
这篇文章来实现的是在C/C++插件中,实现Native Promise, 调用 Native Thread执行后台任务, 执行玩后台任务后,返回到JS前端, JS前端可以通过 await关键字等待返回。Promise实现原理下面一些封装是实现本插件的核心,没有什么文档具体只能去看源码案例分析。Napi::Promise::Deferred //Promise C/C++实现对象Napi::Promise::Deferred::Resolve() // 相对于js promise的resol
2022-01-07 16:59:18
3426
原创 Node.js插件编写(8)-插件代码通过Emit与js代码进行交互
我们在Node.js中经常用到的一个包是 events ,这个包下的 EventEmitter我们可以看到很多地方都用到了 , 基于这个事件机制我们可以在合适的新号到来的时候去做合适的事情。这种机制用在网络IO、文件读写、异步任务等等场景都非常合适。例如下面的代码const events = require('events');events.captureRejections = true;const ee1 = new events.EventEmitter();ee1.on('som
2022-01-06 16:34:47
1126
原创 Node.js插件编写(7)-异步AsyncWorker的代码实现
异步介绍我们在Node.js中经常用到异步机制, 比如异步改变一个文件的访问权限,然后任务完成之后我们收到一个回调通知:代码如下:import { chmod } from 'fs';chmod('chmod.txt', 0o775, (err) => { console.log('The permissions for file "my_file.txt" have been changed!');});原理实现这里我们用到了一个很重要的类,Napi::AsyncWo
2022-01-04 16:52:14
1035
原创 Node.js插件编写(6)-导出类对象作为参数传递
前面几篇文章我们写了如何通过C++ 为Node.js 导出 自定义类对象 。 这篇文章我们才更进一步操作一些这个自定义类, 这篇文章我们的目的是 将自定义导出的类对象作为导出函数的参数传递。功能伪代码如下:MyObject obj1=New MyObject(11);MyObject obj2=New MyObject(22);Var ret=Add(obj1,obj2) ; //重点是这里我们将两个对象作为参数传递相加下面我们来编写插件实现代码插件导出类的C++代码 Pa...
2021-12-31 15:03:14
1703
原创 Javascript Symbol之迭代器让对象支持for..of遍历
首先我们以数组为例, 我们要知道迭代器迭代的原理,也就是为什么可以支持类似于 for....of的循环语法。迭代器遍历对象原理,看一下下面这个代码,我们发现了迭代器这个玩意,整个过程很类似for...of的过程,只不过我们没有去循环而是一次一次的调用 迭代器.next() const arr1=[1,2,3,4,5];let ite=arr1[Symbol.iterator](); //重要的是这个迭代器console.log(ite.next())//{ value: 1, done:
2021-12-31 14:15:59
373
原创 Javascript 正则扩展之dotAll模式
正则表达式中点 (.) 是一个特殊字符,它可以匹配除 换行符(\n)、回车符(\r)、行分隔符、段分隔符、四个字节的UTF-16字符外的任意字符。为了使点(.)可以匹配任意字符,ES9 引入新的修饰符s(dotAll模式),就是让(.) 可以匹配一切字符。代码一,ES9——dotAll模式之前采用\s 类匹配回车、换行等字符let html = ` <ul> <li> <a>C++编程思想</a> .
2021-12-31 12:22:16
958
1
原创 Node.js插件编写(5)-创建类原型以及类工厂
我们前一篇文章写过通过C++为node.js 编写函数工厂和对象工厂的实现 ,这篇文章我们进一步完善,通过Node.js插件 导出类原型, 以及导出一个类工厂函数。我们要让编写的插件导出的类支持new关键字 ,以及可以通过函数直接返回对象,具体js代码如下:var addon = require('bindings')('my_node_addon.node');//通过原型创建对象var obj1 = new addon.MyObject(11);console.log(obj1.va
2021-12-30 16:19:24
296
原创 Node.js插件编写(4)-函数工厂与对象工厂的实现
这篇文章我们通过通过nodejs插件完成 函数工厂和对象工厂的例子。首先看下面这段node.js代码,我们引用的my_node_addon插件需要导出createFunc函数 和 createObject函数, 并且 createObject函数返回的对象包含add和addCallback 两个加法函数var addon = require('bindings')('my_node_addon.node');//函数工厂var func=addon.createFunc...
2021-12-28 15:39:45
870
原创 Node.js插件编写(3)-普通函数和回调函数的实现
前两节我们讲述了node插件的基础入门,以及需要的环境, 这一节我们来尝试写一个复杂一点的插件, 通过Node-Api 实现插件导出普通函数和回调函数。
2021-12-28 14:05:21
807
原创 Node.js插件编写(2)-通过NAN编写简单插件入门
上一篇文章我们介绍了通过Node-Api的方式编写一个插件,并且导出一个函数hello, 这篇文章我们介绍另一种插件开发方式NAN,NAN是出现在Node-Api之前的一种插件开发方式,采用的也是C++的封装。读本文内容仍然需要有C/C++开发基础,如没有请忽略。环境准备Python 3.x环境Node.js 15.x+gcc 8.2.x /VC2022MacOS /Windows编写项目代码创建插件文件夹,并创建package.json文件内容如下,依赖中我们引用了na
2021-12-27 15:18:49
2245
转载 c++: error: unrecognized command line option ‘-stdlib=libc++‘ while installing a node package
For those who are still having this problem, the below command worked for me on fish shell and macOS.env CC=clang CXX=clang++ npm install XXX
2021-12-22 16:43:05
1725
原创 ES11中的可选链等语法
我们介绍ES11新特性 这个新特性在判断空值的方面非常简单,相关语法如下。1、可选链语法(?.)obj?.prop // 如果存在prop则返回属性 obj?.[prop] // 根据obj是否存在prop来执行[]内的表达式arr?.[index] // 获取arr中的元素当index对应元素存在func?.(args) // func存在调用可选链相关语法//当函数存在时候调用函数var func=(x)=>{ console.log(x);};func?
2021-12-18 09:56:49
1424
原创 golang TCP处理数据包粘包的代码,可直接使用
package mainimport ( "bytes" "encoding/binary" "fmt")const ( DEFAULE_HEADER = "[**********]" DEFAULT_HEADER_LENGTH = 12 DEFAULT_SAVE_DATA_LENGTH = 4)type Packet struct { Header string HeaderLength int32 SaveDataLeng.
2020-11-26 13:30:41
532
转载 母函数与排列组合
在谈论母函数问题之前,我们先看一个简单的问题描述:假如有两组数据(A,B)和(C,D),每组中选出一个构成一个组合,总共有几种选法?很显然总共有4种选法:AC,AD,BC,BD。而且很容易联想到这个式子(A+B)*(C+D)=A*C+A*D+B*C+B*D。式子中的几个乘积项就是上面的4种选法。假如把问题换一下:每组中选出一个或0个数据构成组合,总共有几种组合?那么结果就变成:{空},A,B,C,
2017-10-18 10:00:47
1004
转载 关于冒泡排序复杂度O(n)
我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下。但我一直不明白这是怎么算出来的,因此通过阅读《算法导论-第2版》的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度。1. 《算法导论》2.2中对插入排序最佳时间复杂度的推算 在最好情况下,6和7总不被执行,5每次只被执行1次。因此, 时间复杂度为O(n) 2. 冒泡排序的时间复杂度
2017-10-17 18:42:49
1779
转载 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其
2017-10-17 15:37:53
14978
1
转载 基数排序
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。中文名
2017-10-17 11:12:34
850
原创 数学符号ln
ln在数学里表示的是以常数e(无理数,约等于2.71828...)为底的自然对数符号。即lnm=loge(m)其中,log (英语名词:logarithms)表示的是对数运算。当a^b=n时,也可表示为log(a)(n)=b。其中,a叫做“底数”,n叫做“真数”,b叫做“以a为底的n的对数”。 log(a)(n)函数叫做对数函数。
2017-10-13 17:29:29
6962
转载 算法导论------渐近记号Θ、Ο、o、Ω、ω详解
目录:1.渐近精确界记号:Θ(big-theta)2.渐近上界记号 :O(big-oh)3.渐近下界记号 :Ω(big-omege)4.非渐近紧确上界:o(小-oh)5.非渐近紧确下界:ω(小-omege)6.渐近记号Θ、Ο、o、Ω、ω关系7.参考资料1.渐近精确界记号:Θ(big-theta) 假设算法A的运行时间表达式T1(n)为:T1(n)=30n4+20n3+40n2+46n+100
2017-10-13 16:48:41
2985
转载 算法运行时间
1 大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。 logN 如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规 模缩减成几分之一 ,一般就会出现这样的运行时间函数。在我们所关心的范围内,可以认为运行时间小于一个大的常数。对数的基数会影响这
2017-10-13 16:14:43
1239
转载 算法中这三个符号:Θ、Ω、Ο表示什么意思
ΘO(f(n)),给出了算法运行时间的上界,也就是最坏情况下的时间复杂度; Ω(f(n)),给出了算法运行时间的下界,也就是最好情况下的时间复杂度; Θ(f(n)),给出了算法运行时间的上界和下界,这里Θ(f(n))是渐近的确界,另外,并非所有的算法都有Θ(f(n)).
2017-10-13 09:57:17
20644
1
转载 狼图腾中五十句话
1、没有捕捉不到的猎物,就看你有没有野心去捕;没有完成不了的事情,就看你有没有野心去做。2、没有猎物我们就去寻找猎物,发现猎物我们就去追逐猎物。寻找、发现、追求、获得———这就是狼的生活要素。3、尽管面对上万只的黄羊,面对凶猛的老虎,我们都毫不退缩。但是面对人类的枪口,适当的转移是明智的。我们不缺乏成功的信念,但是我们绝不是痴心妄想只会送死的傻瓜。4、追逐猎物仅仅靠猛跑是不够的,尤其在对付大群猎物
2017-09-21 12:49:26
844
转载 狼道文化
狼是一种值得学习的动物,在狼的身上,有许多值得人们学习的精神。这些精神都是成功人士必备的精神,人生想要获得成功,就需要知道通向成功的密码,狼性,是你人生走向成功的唯一密码。目录1 狼道文化2 狼道文化剖析▪ 二 、强者心态▪ 三 、狼性忠诚风骨▪ 四 、目标追求;▪ 五 、狼性团队精神▪ 六 、组织和纪律▪ 七 、狼性智慧与谋略▪ 八 、准则及无畏▪ 九 、坚韧与耐性▪ 十 、100%执行▪ 十一
2017-09-21 12:41:21
715
原创 js解析php格式的表单到json对象
/** * JsonParse * Created by usher.yue. * User: usher.yue * Date: 17/9/7 * Time: 13:50 */class JsonConvert { /** *是否可合并 去除特殊类型和 日期类型 * @param value * @re
2017-09-08 13:19:00
1361
原创 利用js解析php的表单数据
利用js解析php的表单数据/** * JsonParse * Created by usher.yue. * User: usher.yue * Date: 17/9/7 * Time: 13:50 * 心怀教育梦-烟台网格软件技术有限公司 */var obj = { 'data[][classid][0]': '1000150097620084286', 'da
2017-09-07 21:50:11
742
转载 什么是僵尸进程?
可能很少有人意识到,在一个进程调用了exit之后,该进程 并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构。在Linux进程的5种状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所 有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有 任何内存空间。僵尸进程的来由,要追溯到Unix,U
2017-09-01 12:38:22
852
原创 Zookeeper学习笔记2-------group创建、查询、删除
下面一段代码涉及到了 ZooKeeper 创建group、为group添加member、列出group下面的 member、递归删除group。 这里我引用的是 ZooKeeper 3.4.10 提供的jar包。GroupHelper.javaimport java.io.IOException;import java.util.List;import java.util.concurren
2017-08-18 17:22:00
4041
原创 ZooKeeper学习笔记1-----------安装启动
ZooKeeper是一套协作服务,主要用来构建分布式架构的应用,通过ZooKeeper我们可以安全的处理分布式应用下的局部故障问题。我们知道ZooKeeper就是Hadoop中的分布式协作服务组件。下面我们进入ZooKeeper的安装部署。安装Zookeeper https://zookeeper.apache.org/ 我们打开ZooKeeper的官方地址然后去下载响应的package ,我
2017-08-17 18:17:04
1143
原创 Node.js与PHP之间通过RSA算法实现签名验证
Node.js与PHP之间通过RSA算法实现签名验证做过web开发的同学都知道我们经常在接口间交互的时候为了防止数据伪造并 且保证安全性我们会采用签名的方式进行验证, 签名的算法我们一般选择RSA非对称加密算法。想了解更多签名与RSA算法知识可以去查阅PKCS#1、PKCS#7相关资料。笔者在做利用Node.js做单点登录的时候涉及到了Node.js项目中产生的签名,然后需要到PHP项目中去验签,
2017-08-01 10:15:00
2015
转载 Linux zombie进程详细解析
Linux僵尸进程详细解析 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进 程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继
2017-07-10 18:10:40
1702
转载 Linux 线程分离状态
线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线程的默认属性
2017-07-10 17:45:04
633
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人