前言

不知从啥时候开始为知笔记团队就不提供 deb 源安装客户端了,只提供了一个appimage 和利用 Qt 源码编译安装。 不得不说这样有点麻烦。在网上搜索了一番,找到了一个比较便利的利用 deb 包安装客户端的方法。特此记录一下。

亲测 Ubuntu18.04 LTS 是没有问题的。

方法

launchpad 上有 wiznote 团队的 deb包,从这个链接下载 (https://launchpad.net/~wiznote-team/+archive/ubuntu/ppa/+packages) ,下在符合操作系统版本号的安装包,Ubuntu18.04 下载 Xenial 对应的deb包.

然后在本地安装 deb包,sudo dpkg -i wiznote_2.3.2.4_amd64.deb ,搞定。

  栈这个数据结构有很多有趣的用途,这里总结一个很有用的使用方式,单调栈。单调队列同理,仅是后入先出变成先入先出。

单调栈


  单调栈是在满足数据后入先出的前提下,栈内数据满足单调递增或单调递减排列。

  如单调递增栈:数据 i 入栈,先判断当前栈顶数据是否小于 i ,若不满足则弹出栈顶数据,直到栈顶数据小于 i 或栈为空,再将 i 入栈。这样保证了任意数据 i 入栈时,栈中所有元素小于 i,且满足先后顺序。

  我们考虑一个算法场景:给定一个非有序排列的数组 num[n],求数组中下标为 i 的数 num[i],其向左遍历第一个小于 num[i]的数。 如果我们无脑遍历,则需要在遍历数组本身的同时,从每一个 i 前向遍历出第一个小于 num[i] 的数。 算法复杂度在最坏情况下为 $$n^2$$。而若我们 使用单调栈,则能在只遍历一次数组 num 的同时,找出所有要求的数 ,算法复杂度降低到 $$n$$。因为当每一个数据 i 可以入栈时,当前单调栈栈顶的数就是满足要求的数。

阅读全文

  我们在处理 多进程/线程 数据的同步互斥时就会用到 “锁”,不同的操作系统和不同的语言提供了丰富的锁类型,但大体而言,可以用如下四个类别进行描述:

  • 互斥锁 (这里指简单类型)
  • 自旋锁
  • 递归锁
  • 读写锁

阅读全文

  我开始建个人博客时是大二,然而现在研二都过去一半了。几乎啥也没写。。。。。。

  现在越发觉得,时常对一些东西做做总结还是用处很大的,也算是再一次理清思路,而且记录下来的东西还可以时时查阅。

  希望在接下来的日子里,我能 持之以恒 的把所学所用总结成博文。

  目前,公网 IP 地址数量稀少,我们的个人电脑大都在重重内网内部,端口号通过 NAT 层层映射,导致无法向公网提供一个稳定的访问入口。若想让公网提供服务(比如搭建一个的Web服务器)我们一般选择购买云服务器,但是性能强大的云服务器价格很高,因此我们应该找一个办法让内网的电脑能向公网暴露一个 稳定的 访问入口。

  ngrok 就能用来解决这个问题。

阅读全文

前言

  计算机的数值编码和运算应该是本科一年级就会学习的基础知识。从软件开发这个角度来说,很多时候这些知识没有在开发过程中得到有效的利用和实践。
  不巧,最近在做的一个项目,常常需要从补码的角度考虑数值表示和相关关系。因此,也就趁此机会简单的写一写。


阅读全文

前言

  区块链最有价值的地方就在于共识算法,目前各种公链、联盟链群魔乱舞,共识算法林林总总。

  研究了一段时日,也到了总结的时候,用几篇文章将它们梳理一下。

作用、意义

  区块链是当下的大热门,各种各样的区块链项目都会用一定篇幅来描述它的共识机制。那么,共识在区块链中扮演了什么样的角色?有何重要的意义?

阅读全文