自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (2)
  • 收藏
  • 关注

原创 Manjaro-人脸识别验证

简介记录一下在Manjaro下面使用Howdy配置人脸识别验证的过程,实现人脸识别解锁以及sudo人脸识别。本文主要基于Arch Wiki上对Howdy的介绍。安装HowdyHowdy是一个类似与Windows Hello的程序,可以进行人脸识别,用于实现人脸解锁等功能。直接使用yay安装即可:$ yay -S howdy配置Howdy配置摄像设备执行ls -l /dev/v4l/by-id可以找到摄像设备:❯ ls -l /dev/v4l/by-idtotal 0lrwxrwxr

2022-04-17 21:02:24 672

原创 ProtoBuf简介

简介这篇文章浅显地介绍一下Google的数据序列化协议:ProtoBuf(Protocol Buffers),并通过一个简单的例子,展示如何使用这个协议。数据序列化协议数据序列化协议用于将数据结构序列化成可方便存储、传输的格式,ProtoBuf是一个被广泛使用的序列化协议,它拥有下面一些优点:二进制协议,相比json或xml而言体积小使用方便,使用proto工具直接生成可使用的代码示例使用ProtoBuf的步骤可以分为这么几步:定义山上描述文件*.proto生成用于操作数据的代码调

2021-10-15 20:41:42 5563

原创 无法把代码推到gitee故障解决(OpenSSH签名算法不兼容)

忽然发现用公钥无法把代码推到gitee,原来是我使用的OpenSSH太新,已经废弃掉了ssh-rsa签名算法,而gitee服务器的OpenSSH使用的签名算法还是ssh-rsa,签名算法不兼容,于是无法认证,无法网上推代码。

2021-10-09 00:23:01 1425 3

原创 TCP序列号回绕问题

我求求你们能别抄来抄去的吗?每次搜个问题全是重复的博客!参考:http://m.blog.chinaunix.net/uid-24683784-id-5746959.htmlhttps://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/description-tcp-features简介这篇笔记记录了TCP如何处理序列号回绕问题。措施主要有两种措施用于解决序列号回绕问题:限制TCP窗口大小时间戳机制

2021-10-04 13:31:52 4095 3

原创 使用坚果云同步Super Productivity

简介Super Productivity是一个开源的效率工具,常见的todo list应用该有的功能它都有,并且更加强大、更加酷炫!开源意味着你可以很轻松地把代码拉到本地跑,但是不同终端之间如何同步成了一个问题,这篇文章记录了如何使用坚果云实现Super Productivity的同步。下载安装Super Productivity这一步就不说了,直接在仓库的release页面里下载安装即可,也可以在各种商店安装,例如微软商店,google play等。配置坚果云Super Productivit

2021-09-21 10:19:09 1193 1

原创 UEFI如何启动

简介记录一下UEFI如何启动,以后引导挂了起码有个头绪。启动过程UEFI对应的分区表格式是GPT,而不是Legacy BIOS的MBR。找到ESP分区启动的时候,UEFI需要先找到GPT分区表中的EFI分区(EFI System Partition),简称ESP分区,分区里面存储了各个系统的启动文件,如果你的电脑装了多个系统,一般来说操作系统安装的时候都会放一份启动文件到这个分区中。那如何确定哪个是ESP分区呢?答案是通过分区类型确定。在GPT分区表中,一个分区项的结构如下:Off

2021-09-17 16:01:27 3939

原创 Rust-实现链表

简介实现单链表在别的语言里面可能是一件简单的事情,单对于Rust来说,绝对不简单。只有熟悉了Rust特有的所有权机制、生命周期和借用等概念才能实现出一个像样的单链表。这篇笔记不会一步步教你如何用Rust写一个单链表,因为这样的教程已经有人写了,并且写得很好。这里只记录一下使用Rust实现单链表时的一些注意事项,以及一些笔记。注意事项只有一个可变引用在C里面,如果要在链表的头部插入元素,可以这样写Node* new_node = create_new_node(v);new_node->n

2021-09-15 19:41:52 1231

原创 编译coreutils并保存调试信息

简介coreutils是Linux下面的一套核心命令的集合,这篇笔记记录了如何编译coreutils,并且保存调试信息,这样可以在gdb中使用。过程下载源码在官方网站下载源码,然后解压。替换优化选项解压之后目录中有一个configure文件,将其中的-O2全部删除,这样编译出来的命令就会包含调试信息:$ sed -i 's/-O2//g' configure编译$ ./configure$ make -j...

2021-09-03 01:10:45 296

原创 Manjaro-切换分支

简介Manjaro共有3个分支:stable, testing, unstable,最近在stable分支下太安逸了,看网上评论说testing下面也挺安全的,想切换到testing分支看看,所以这里记录一下如何在Manjaro中切换分支。主要参考这篇教程:https://wiki.manjaro.org/index.php?title=Switching_Branches切换分支看完上面教程之后,发现简单得我都不想记录……首先切换分支,把{branch}替换成上面三种分支之一:$ sudo p

2021-08-31 21:25:25 709

原创 Manjaro-如何回滚软件

简介Manjaro作为Arch的衍生版本,更新也是挺勤快的,但是也可能更新之后某个软件运行异常,这是就需要回滚操作,本文介绍如何回滚软件到之前的版本。需要注意的是,回滚官方仓库中的包和回滚AUR中的包操作是不一样的。回滚官方仓库中的包安装downgrade回滚需要用到downgrade这个工具,使用yay -Sy downgrade安装即可对目标软件执行回滚操作以autojump这个工具为例,要回滚它,执行:$ sudo downgrade autojump然后会有如下的结果输出,选择其

2021-08-31 21:13:37 1379

原创 Linux - 如何生成configure文件

Linux - 如何生成configure文件简介本文简单地介绍一下如何生成configure文件,主要目的是把握整体的流程,以后如果要用到再仔细阅读对应文档。整体的过程在Linux下面手动编译什么东西的时候,一般都是下面三步:./configuremakemake install其中configure的作用是根据Makefile.in生成Makefile,然后才能make。要生成configure文件,需要用到一套工具,叫做autotools。autotools的简单工作流程如下:

2021-06-19 12:56:54 4641

原创 Linux - patch命令

Linux - patch命令简介顾名思义,patch命令用于给文件打补丁。所谓补丁,即在原来的基础之上进行修改,patch能做到基于diff产生的结果,对文件进行修改。使用方法为了演示方便,先执行下面命令产生两个文件a.txt和b.txt:$ echo Hello World A > a.txt$ echo Hello World B > b.txt然后使用diff命令比较两个文件,并且输出为patch文件:$ diff a.txt b.txt > a.patch$

2021-06-19 00:07:29 626

原创 Pacman配置文件列表

Pacman配置文件列表本文介绍pacman的配置文件,以及各个配置文件的功能。/etc/pacman.conf这是pacman的主要配置文件,里面有各种参数,包括仓库列表,自定义的仓库就加入到这个配置文件中,例如下面的archlinuxcn:## /etc/pacman.conf## See the pacman.conf(5) manpage for option and repository directives## GENERAL OPTIONS#[options]# Th

2021-06-18 23:46:28 2088

原创 Basic-Auth

Basic-AuthBasic-Auth是一种非常基础的验证机制,现在已经不被广泛使用了,我是在使用ix.io的时候接触到的这种验证方式,特此记录。参考文献很容易看懂:https://datatracker.ietf.org/doc/html/rfc7617https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication如何验证方法一:url在域名前面加上用户名和密码即可,例如user:[email protected]方法二:使用Aut

2021-06-16 23:57:56 245

原创 PG - 如何打印内容到终端

在函数中可以使用raise notice:create or replace function test_raise() returns voidlanguage plpgsqlas $$begin raise notice 'hello %','world';end;$$在psql里面可以使用\echo:postgres=# \echo 'hello world'hello world

2021-05-12 23:23:04 746

原创 PG - 自定义SQL函数

在PG里面函数,用户自定义的函数有四种类型:query language functions (functions written in SQL) (Section 37.5)procedural language functions (functions written in, for example,PL/pgSQL or PL/Tcl) (Section 37.8)internal functions (Section 37.9)C-language funct

2021-05-12 00:33:39 1383

原创 PG - GIN索引

倒排索引介绍GIN索引即Generalized Inverted Index,属于一种倒排索引。什么是倒排索引?根据wikipedia:倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。简单来说就是,倒排索引能让你按照关键词查找到对应的元组,以及关键词在元组中的位置。这里说的关键词指的是某个属性中的一部分,比如一张表有一个类型为te

2021-05-08 21:22:01 1043

原创 PG - 快照创建及可见性

本文简单介绍了PG中的快照、何时创建以及可见性背景知识PG中每条数据都记录了事务相关的信息:t_xmin, 创建该条数据的事务idt_xmax, 删除该条数据的事务id事务id时顺序增长的整数,后创建的事务id比新创建的事务id大,快照的作用就是提供一个静态的视图,控制数据的可见性,它定义了哪些数据对哪些事务可见,对哪些事务不可见。事务的状态有四种:正在执行已提交,已回滚子事务已提交快照的组成快照由一些事务id组成,这些事务id分为三部分xmin:xip:xmaxxmin

2021-05-07 23:18:19 372 2

原创 PG - 函数式索引

什么是函数式索引?常见的索引都是基于一个字段或者多个字段的索引,他们的索引值都是具体的字段值。而函数式索引是指基于某个表达式建立索引,例如基于某个字段的小写值建立索引:create index on some_table (lower(field));函数式索引与普通索引的性能比较函数式索引只会在创建索引、插入数据、更新数据时重新计算表中的索引值,这些索引值直接就存储在索引树中(如果使用的时B+树索引的话),就查询而言,其性能并不会比单独的索引低。所以函数式索引适用于查询较多而修改较少的场景。

2021-05-07 22:05:57 1213

原创 node-gyp超时解决思路

写在前面我不太熟悉前端和node,也不太明白node-gyp的作用,只是隐约知道它是用来编译的工具,如果有些地方说的不准确望在评论取指出。错误信息我忘了保存了,不过提示TIMEOUT。我的系统是Manjaro,node版本是14.16.0问题原因timeout还能是什么原因,那只能是我大天朝墙太高了啊。node-gyp编译的时候,如果nodejs的源码不在本地,就会去下载,结果就超时了。解决思路参考:https://www.cnblogs.com/mliudong/p/4528539.htm

2021-03-30 16:26:19 1366

原创 JDK9 - Module

JDK9引入了模块系统,这篇笔记简单介绍了引入module机制的初衷,module的定义、使用与打包。Overview没有引入module之前的JDK8项目结构如下,一个项目下的代码按照package进行组织。引入了module之后的项目结构如下,在package之上还有一个module层次。为什么引入module?参考JSR376 以及这篇文章 有如下理由:Reliable configuration,在module之前,JVM通过classpath查找各个类,如果某个类缺失,只有当使用

2021-03-06 22:40:30 1091

原创 TLS与SSL的关系

TLS与SSL的关系本文简要记录了TLS与SSL的关系,包括发展、相同点与不同点,没有技术细节。发展历史摘自百度百科,还有这里1994年Netscape公司推出HTTPS,使用SSL1.0加密,这是起源。1995年,SSL2.0,被发现有严重漏洞。1996年,SSL3.0,得到大规模应用。1999年,IETF将SSL3.0进行标准化,基于SSL3.0制定了TLS1.0标准。TLS1.0 通常被标示为SSL 3.1,对应的TLS1.1是SSL3.2,TLS1.2是SSL3.3。所以也就是说,

2020-12-29 00:32:02 1044

原创 tensorflow训练过程中loss越来越大

在学习Tensorflow的时候,发现训练时loss竟然越来越大,多次检查之后发现代码并无问题。最终发现原因是学习率太大,调小之后loss减小,特此记录。

2020-08-13 15:58:09 4727

原创 关于二分查找的笔记

简介做题的过程中,经常要对数组进行二分查找,二分查找主要有两种目的:判断数组中是否有某个元素判断元素在数组中首次出现的位置本文列出了上述两种目的的代码,以及一些笔记。判断存在性判断存在性的代码比较简单,直接贴出来了:boolbin_search(vector<int> nums, int target) { int lo = 0; int hi = nums.size()-1; int mid = (lo+hi)/2; while (lo &

2020-08-10 18:25:29 114

原创 leetcode-71简化路径-笔记

leetcode-71简化路径思路根据/字符,将字符串划分成多个子串,再利用一个栈,对划分之后的子串进行求解,具体地:如果子串为.,子串不入栈如果子串为..如果栈非空,栈顶元素出栈否则忽略这个子串否则将子串入栈最后将栈中的子串拼接起来即可。思路比较简单,这里主要记录一下split的实现。split实现这一题重点在与如何将字符串根据某个字符划分成多个子串,下面记录一下实现时的一些想法。思路一遍历字符串,维护两个索引:last,s[last]是非分隔符,且其之前的字符均已

2020-08-09 15:31:25 114

原创 tensorflow2.3手动下载mnist.npz数据集

简介本文介绍了在Ubuntu下如何手动下载mnist.npz数据集并且放到指定位置供tensorflow使用。解决办法先写解决办法:下载,百度网盘下载链接https://pan.baidu.com/s/1jH6uFFC 密码: dw3d。不是我的网盘,感谢这位大哥的写的博文以及其中的网盘连接。下载完成之后放到~/.keras/dataset/目录下,命名为mnist.npz完成。解决过程在使用tensorflow的加载mnist的时候,发现需要从https://storage.googl

2020-08-07 00:49:40 5771 2

原创 docker stop和docker start

docker stopdocker stop其实就是向容器内的主进程发送退出信号(SIGTERM),使得容器停止运行,如果发送SIGTERM之后一段时间还没有退出,则会发送SIGKILL强行中止。docker startdocker start就是运行dockerfile中由entrypoint和cmd说明的命令,启动容器。...

2020-08-06 17:03:13 542

原创 Dockerfile中Entrypoint和Cmd的exec和shell语法

简介本文介绍了在Dockerfile的Entrypoint和Cmd命令中exec和shell语法的不同。execexec风格的语法(注意一定要是双引号!否则你会得到一些迷之错误):entrypoint ["/bin/bash"]cmd ["/bin/bash"]当使用exec写法的时候,entrypoint和cmd中的命令会被这样执行:exec("/bin/bash“)其中exec可以认为是Linux系统调用中的exec。shellshell风格的语法:entrypoint /bi

2020-08-06 16:59:40 2636

转载 debian安装Java8报错记录

问题使用apt install openjdk-8-jdk openjdk-8-jre时报错如下:update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto modeupdate-alternatives: error: error creating symbolic link '/usr/share/man/man1/rmid.1.g

2020-07-28 18:50:16 736

原创 ssh-hostbased配置方法

ssh-hostbased配置方法简介本文介绍了ssh中hostbased认证的一些概念,以及如何配置。hostbased 认证hostbased认证字面意思就是基于主机的认证。举个例子,主机A(192.168.1.101)运行着ssh server,配置了hostbased认证,并且配置root用户可以通过hostbased方式从主机B(192.168.1.102)上登录。那么在主机B上直接执行ssh [email protected]就可以root方式登录主机A,不需要提供root密码。

2020-07-28 17:08:36 1178

原创 sigmoid函数溢出处理

简介在实现logistic regression算法的时候,发现sigmoid函数(下方函数)在输入的数是较小负数时,会出现溢出的情况。σ(z)=11+e−z\sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e−z1​解决方法通过对正数和非正数分别计算来避免溢出。def sigmoid(Z): # 解决溢出问题 # 把大于0和小于0的元素分别处理 # 原来的sigmoid函数是 1/(1+np.exp(-Z)) # 当Z是比较小的负数时会出现上溢

2020-07-27 22:52:55 4702 3

原创 js批量添加css规则

js批量添加css规则思路:创建一个style结点,然后添加到head中,代码如下:function addConfigBoxStyle() { let style = document.createElement('style') style.type = "text/css"; let styleString = `.p { text-align: center;}` let text = document.createTextNode(styleStri

2020-07-20 00:12:16 388

原创 js如何让html元素可拖动

js如何让html元素可拖动思路:通过监听mousedown,mouseup,mousemove三个事件可以做到,在mousedown时记录点击的位置,mousemove时计算位移,更新坐标,mouseup时结束移动。代码如下:let div = document.getElementById('moveable-div');makeItMoveable(div);function makeItMoveable(elem) { let body = document.body; let

2020-07-20 00:06:51 877

原创 使用js定义快捷键

使用js定义快捷键思路:监听keydown事件,判断按下了什么键,然后执行对应的操作。比如要设置Ctrl+I:document.addEventListener('keydown', (e) => { if (e.ctrlKey && String.fromCharCode(e.keyCode) == 'I') { // do something }})...

2020-07-19 23:35:00 3055

原创 flex布局的一些概念

flex布局的一些概念简介本文介绍flex布局中的一些概念,包括各个轴、一些属性(如justify-items)的含义。正文使用场景及布局概念flex布局适用于存在主轴的情况,主轴可以是列或者是行,下图展示了相关概念:main axis是主轴,主轴的方向可以使用flex-direction属性指定,例如flex-direction: row就是上面这种情况。通过在设置display: flex可以将一个元素设置为flex容器,flex容器中的每个直接元素都是一个flex item。相关属性

2020-07-19 20:33:00 221

原创 Python模块导入

Python模块导入文章目录Python模块导入简介import的基本概念相关概念导入语法搜索路径导入流程一些其他的问题相对导入语法的困惑简介本文记录了Python中模块导入的规则,方便忘记的时候参考。import的基本概念相关概念如果一个目录下有一个名为__init__.py的文件,那么这个目录就是一个package。一个python文件就是一个module,package可以包含多个module以及多个子package。导入语法import numpyimport numpy as

2020-07-08 10:41:05 156

原创 Linux下面Kazam录制的视频无法在Windows下面播放

在https://video.stackexchange.com/questions/20162/convert-kazam-video-file-to-a-file-playable-in-windows-media-player/20164找到一条命令$ ffmpeg -i in.mp4 -pix_fmt yuv420p -c:a copy -movflags +faststart out....

2020-04-21 22:52:43 1263 1

原创 Arch开机自动联网

简介下面说明一下如何使用wifi-menu和netctl做到arch开机自动联网。过程使用wifi-menu命令,成功连接到wifi,此时会在/etc/netctl/下面创建对应的profile,比如/etc/netctl/wlp2s0-TP-LINK_F3。然后使用下面命令设置这个profile开机启动$ sudo systemctl enable netctl-auto@<接口...

2019-10-22 22:21:37 1423

原创 折腾引导(二):U盘上安装grub

简介下面介绍如何在不安装Linux系统的情况下,在U盘上安装grub。之所以这样干是因为我折腾引导的目标之一是制作一个UEFI+BIOS双引导、WinPE&Linux多启动的U盘。在U盘上安装grub分为如下两步:U盘分区并给建立文件系统grub-install下面只涉及UEFI分区U盘上的grub安装方法动手安装准备一个U盘,确保里面没有什么重要数据,插入到一个Linu...

2019-10-20 00:23:52 1518

转载 Linux-挂载vdi文件

现在需要从宿主机(Ubuntu)传一些文件到VirtualBox的客户机中,客户机的磁盘文件是arch.vdi,下面是挂载vdi到Linux的方法。apt install qemu-utilsmodprobe nbdvdi="vdi文件路径"qemu-nbd -c /dev/nbd0 "$vdi"# 使用相关命令查看分区结构fdisk -l /dev/nbd0# 下面是实例输出...

2019-10-13 20:05:37 2255

C#本质论英文第5版

高清文字版 C# is now a well - established language that builds on features found in its predecessor C-style languages (C, C++, and Java), making it imme- diately familiar to many experienced programmers. 1 Part of a larger, more complex open source execution platform called the Common Language Infrastructure (CLI), C# is a programming language for building software components and applications.

2017-09-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除