NestJS 部署与维护
我们可以把nestjs的工程传到服务器上,然后直接进行npm操作。也可以在本地打包出nestjs的包,将dist目录传到服务器上。在这里为了方便演示,我们描述的是将工程传到服务器后的操作。传工程文件,可以用github/gitee当作中间桥梁,也可以用vscode的插件传输,或者使用scp命令。同理,dist目录也可以传到github/gitee上,服务器直接使用编译好的文件。直接启动启动前,进入工程目录,先安装一次。1$ npm install用npm run命令启动服务12345# 开发模式$ npm run start# 观察模式$ npm run start:dev在服务器上,运行正式环境(生产环境 production)12345# 启动生产环境前 先start$ npm run start# ..
更多Shell for循环语句
Shell里的for循环语句写法。我们分别用命令行和shell脚本来进行演示。常见的一种for结构如下。for里面要跟着do和done关键字。1234for i in {1..3}do echo YES $i # 这里是循环体done数字范围数字范围,例如从1到3,从1到100。for infor in 的写法,定义i为变量,使用大括号来指定范围。范围的数字之间有2个点..。例如{1..3}1234$ for i in {1..3};do echo now is $i; donenow is 1now is 2now is 3上面是命令行,一行把所有的指令写完。也可以再加一行代码,同样用分号;来分隔。1234567$ for i in {1..3};do echo now is $i;echo ru..
更多ElasticSearch-新老选主算法对比
前言首先,ElasticSearch 7,也就是Es 7, 变动还是有点儿大,改了很多东西,例如取消了type,修改了选主算法之类的操作 正好几天在钻研一些选主算法一类的东西,看了ETCD,rabbitmq,kafka之类的一些选主算法,想起来似乎对于Es,我还没有细致研究 于是产生了写这篇文章的动力,这篇文章,也是一篇新老选主算法的对比文章 大概会描述一下Es的两种选主算法,然后分析一下新老算法的差异 好了,我们开始把。 老样子,一段freestyle 12345678910111213141516黑暗笼罩着我的眼看不清到底是黎明还是黑夜时间依旧不会停歇滴答滴答本质是仅仅如此还是始终如一?我问自己到底想要何物夸父逐日终于大泽之尾停下来的风景似乎更..
更多DataX的简单使用
DataX是阿里巴巴开发的用于离线数据同步的工具,它支持在MySQL、Oracle、SqlServer、HDFS、HBase等多个数据库之间进行数据的离线同步。安装DataX我们可以直接下载已经打包好的文件wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz当然,我们也可以选择从源码编译安装DataX。由于上面的包已经比较旧了,推荐从源码进行安装。git clone https://github.com/alibaba/DataX.git因为我们只需要针对一些指定的数据库,所以可以删除pom.xml文件中我们不需要使用的数据库子模块。我保留的子模块如下12345678910111213<module>mys..
更多源码级调试 App Store 包
有些时候我们会遇到 Release 包有 Bug,Debug 包正常,或者是本地构建没问题,上传到 App Store 或者 TestFlight 版本就有 Bug。 能有个方式调试一下就好了。 这个可以有,解决的方式也很简单,我主要的灵感来自 MonkeyDev。如果你用过 MonkeyDev,会感觉使用这个工具逆向非常方便,我们可以直接在 Xcode 上像普通的 App 一样构建调试。 这个思路也可以用在我们调试一些“不能调试”的 ipa。 所以我们先来看一看,MonkeyDev 是如何将已经构建好的 ipa 直接放到 Xcode 运行起来的。 # 借助 Xcode 重签名运行 App 事实上这一过程很简单,基本上我们直接将原本构建的流程改成直接将从 ipa 解压的 app 拷贝过去即可。 为了了解 ..
更多TLS-Poison 攻击方式在 CTF 中的利用实践
最近总结整理了 TLS Poison 攻击相关的知识,本文会继续讲 TLS Poison 利用,以及其在 CTF 的实际运用,也通过这个题目来聊聊 FTPS 相关知识。文章首发于长亭安全课堂:TLS-Poison 攻击方式在真实CTF赛题中的利用实践 https://mp.weixin.qq.com/s/ZziSf69AOyXoI0IgC0UyUQPS: 在阅读本文之前,建议您掌握相关的 TLS Poison 先验知识,本文不会再重新详细介绍 TLS Poison 攻击的基础知识我们首先再来回顾 Black Hat 这个议题,为什么作者使用的是 When TLS Hacks You 呢?而不是 When HTTPS Hack You ,说明这个问题是出现在 TLS 特性身上,所以目前我们貌似都更多只局限地..
更多ElasticSearch检索的核心-倒排索引解读
前言ElasticSearch为什么适合做检索服务器? 因为快啊,大佬! 为什么快啊? 因为倒排索引啊! 什么是倒排索引? 这个,就要细细分析一下了,这篇文章可能写的不是那么全,但是我也会尽量总结所有重点!希望能帮到大家,爱你们! 索引是什么?首先,从基础玩起来,倒排索引,分为倒排+索引 索引这个词汇,在数据库的出镜率非常高,我基础比较差,所以,我在这里会从头进行学习解读,希望大家理解,如果对索引非常了解的兄弟,请直接跳过这一段 首先,什么是索引。 索引是一种特殊的数据库数据结构 首先,一般我们认为的查找,就是从头检索到尾,也就是从开头遍历到结尾,这样的时间复杂度是O(n) 索引,就是将数据库表中的某一列或几列以特定的数据结构存起来,比如B-Tre..
更多为什么要使用消息队列服务
消息队列是什么?化繁为简一下,分拆一下这个词汇,首先,先来看队列(queue) 队列是一种常用的数据结构,特点是先进先出 消息队列,顾名思义一下,就是把消息放在队列当中进行处理 这个消息,肯定是等待处理的消息,我们应该要获取消息做什么事 比如获取一个返回结果,接受一个参数等等。 所以这里引出了新的概念,消费者和生产者 生产者就是往队列里面塞数据 消费者就是往队列里面取数据 这就是消息队列的基础概念。 消息队列解决了什么问题按理说,消息队列只是一个队列类数据结构,这个我们完全可以自己实现 例如Python的队列queue,或者java的Deque都可以实现队列的功能 再去实现一个消费者/生产者逻辑就好了,那为什么要用消息队列呢? 这边举几个我开发中遇..
更多LLVM Link Time Optimization
链接时优化(Link Time Optimization,简称 LTO)已经在 WWDC 2016 中提及到。因为这个选项在 Xcode 中默认关闭的,我也一直没有开启过这个选项,所以之前没有做过什么了解。趁着这次五一放个假,我们可以看看 LTO 是什么,以及它的整个流程是什么样子。 我们知道一个程序从源码到运行,需要有一个静态链接的过程。 在这个过程中,在解决所有的符号引用关系期间,我们可以知道整个程序的全貌。为此我们能以全局的角度做一些优化,这就是链接时优化。 我在这里将 LTO 理解为:借助静态链接可以获取程序全局信息的机会,做一些全局优化,这样可以提高运行时的性能,并进一步减少二进制的大小。 阅读本文前,建议先看完 LLVM Link Time Optimization: Design and I..
更多弄懂难缠的DFS算法和相关变种(Python实现)
前言这次不废话,直接接上次的BFS,直接来看DFS。 什么是DFS算法DFS,全名深度优先搜索 用大白话来说,其实就是 一条路走到黑,走不通再回来,直到无路可走 举个简单的例子,现在我们有一个树,就像下面这样 12345 A / \ B C / \ / \D E F G 假设我们要用DFS算法来进行遍历/搜索 它的步骤如下 从初始节点A出发,并且将A标记为已访问 查找A的一个临接顶点B。 如果B存在,继续执行访问,否则回退到上一步,继续查找临接顶点 将B标记为可访问,继续执行查找临界点D的操作 重复操作,直到所有的值都访问完了,无值可以访问为止。 那么,遍历树的顺序应该是 A -> B -> ..
更多