颖小主 - 其他
type: channel
link: https://main.itffz.cn/category/%E5%85%B6%E4%BB%96/
items: xunsearch安装
items: Git 中停止跟踪文件
items: linux安装redis
items: 简单聊聊开源协议
items: TypeScript字面量类型和keyof关键字
items: TypeScript接口与类型别名之间区别
items: docker安装mongodb
items: docker删除镜像命令
items: 有趣的代码注释
items: git 获取所有分支

xunsearch安装
type: item
date: 2024-07-05T09:12:53+08:00
description: 下载安装包wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2解压并进入tar -xjf xunsearch-full-latest.tar.bz2 cd xunsearch-full-1.3.0/执行安装sh setup.sh # 安装的时候会让你选择一个安装目录，强烈建议安装到一个单独的目录中启动待命令运行结束后，如果没有出错中断，则表示顺利安装完成，然后就可以启动/重新启动 xunsearch 的后台服务，下面命令中的 $prefix 请务必替换为您的安装目录，而不是照抄。cd $prefix ; bin/xs-ctl.sh restart有必要指出的是，关于搜索项目的数据目录规划。搜索系统将所有数据保存在 $prefix/data 目录中。 如果您希望数据目录另行安排或转移至其它分区，请将 $prefix/data 作为软链接指向真实目录。

Git 中停止跟踪文件
type: item
date: 2023-03-01T09:21:06+08:00
description: 使用 git update-index 在 Git 中停止跟踪文件有时，我们可能希望在仓库中保留一个文件，但不再希望跟踪其更改。我们可以使用带有 --skip-worktree 选项的 git update-index 命令来实现这一点。$ git update-index --skip-worktree file1命令 git update-index 的 --skip-worktree 选项使 Git 假装文件的版本是最新的，而是从索引版本中读取。这对于配置文件特别有用。

linux安装redis
type: item
date: 2023-02-06T10:45:00+08:00
description: [tabs][item title="快速安装"]下载安装包wget https://github.com/redis/redis/archive/7.0.8.tar.gz解压tar -xvf 7.0.8.tar.gz移动reids目录并进入mv ./redis-7.0.8/ /usr/local/redis cd /usr/local/redis执行编译make安装make PREFIX=/usr/local/redis install启动./bin/redis-server ./redis.conf [/item][item title="其他注意事项"]查看redis是否启动ps -ef | grep redis安装vim命令yum install vim -y安装wget命令yum install wget -y查找redis位置wherei redis[/item][/tabs]1. 打开官网找到要安装的版本复制下载连接redis官网wget https://github.com/redis/redis/archive/7.0.8.tar.gz # 如果提示wget不存在可以使用yum install vim -y 命令进行安装2.下载好压缩包之后进行解压 tar -xvf 7.0.8.tar.gz3. 移动redis目录一般都会将redis目录放置到 /usr/local/redis目录，所以这里输入下面命令将目前在/root目录下的redis-5.0.7文件夹更改目录，同时更改文件夹名称为redis。mv ./redis-7.0.8/ /usr/local/redis4. 执行编译进入到redis目录中cd /usr/local/redis执行makemake5. 开始安装make PREFIX=/usr/local/redis install # 注意PREFIX的大小写这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录，库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载，后续直接rm -rf /usr/local/redis 即可删除redis。启动redis./bin/redis-server ./redis.conf #./bin/redis-server redis服务 # ./redis.conf 指定reids配置文件 # 如果提示redis.conf没有权限，可以执行一下chmod 755 ./redis.conf命令，进行调整以后台方式启动redis修改redis.conf配置文件然后在启动redis./bin/redis-server ./redis.conf # 注意我这里使用的是相对路径，如果是根据本篇文档一步一步装过来的，则不用切换目录，如果看redis被安装到哪里了,可以使用whereis redis命令进行查看查看reids是否启动了ps -ef | grep redis连接redis./bin/redis-cli 创建redis相关别名每次都是用./bin/redis-server等方式启动非常不方便，可以使用命令别名方式进行快捷操作vim ~/.bashrcsource ~/.bashrc # 重新加载一下

简单聊聊开源协议
type: item
date: 2022-11-03T22:52:33+08:00
description: 正规的开源项目都会有一个开源协议，这个开源协议也不用咱们签字啥的，只要用了这个项目，就默认要遵守这个协议。那这些开源协议写在哪里，有什么用，有什么区别，下边咱们就把这三个事说道说道。协议写在哪里我们随便打开一个开源项目，比如react,可以看到里边有一个LICENS的文件，这里写的就是开源协议相关的内容了开源协议的通用作用开源协议的通用作用就是免责如果说自己要发布一个开源项目，最好在项目上加上这个开源协议。举个例子：法外狂徒章三使用vue开发了一个带有颜色的网站，突然有一天被抓了，张三就说我的技术支持是尤大大，他也得承担责任。那这个事情尤大大是不需要承担责任的，因为开源协议里边这些已经写的很清楚了。大概意思就是我的代码你可以用，但是出了问题别找我。不同开源协议不同有不同的作用根据不同的开源协议，他们的作用也是不同的，而且很多条款是重复的，我们就拿最常用的三个开源协议来简单的说一下。MIT协议像vue element这些都是使用的MIT协议，这个协议还是非常宽松的，基本上就是跟没啥限制似的。所以很多公司在选择开源项目的时候，MIT协议是最受欢迎的GPL协议这个协议最具有代表性的就是Linux，这个协议的特点就是你开发的项目如果使用了一个GPL协议开源的项目，那你的这个项目也得开源。比如张三开发了一个商品推荐系统，然后使用GPL协议开源了，那李四开发了一个商城，使用了这个张三的推荐系统，那么李四这个商城系统也得开源。Apache协议这个协议的特点就是，如果你使用了Apache开源协议的项目，那么你必须有一个声明，你告诉别用你用了这个开源项目。比如安卓，国内各大厂商的手机系统，开机啥的是不是都能看到个power by android（鸿蒙系统除外哈）

TypeScript字面量类型和keyof关键字
type: item
date: 2022-10-28T10:53:49+08:00
description: 字面量类型在TS中可以把字面量作为具体的类型来使用，打给你使用字面量作为具体类型时，该类型的取值就必须是该字面量的值type A = 1; let a: A = 1; // 这里只能是1，不能是其他的 type B = 1 | 2; let b: B = 1; // 这时候只能是1或者2keyofinterface A { username: string age: number } // keyof 会把键取出来作为字面量类型 let a: keyof A = 'username' // 这时候只能是username或者是age // keyof A 等同于 type B = "username" | "age" let a: B = 'age' // 这时候只能是username或者是age // keyof 也可以拿到变量的类型 let a = 'yiqi' // string类型 type B = keyof b; // 这个时候等同于 type B = string // 再比如 let obj: { username: 'yingxiaozhu', age: 20 } // 使用typeof obj能拿到interface Obj { username: string, age: number }的接口。这时候在使用typof就能将接口转换为字面量类型 let a: keyof typeof obj = 'username' // 这时候只能是username或者是age

TypeScript接口与类型别名之间区别
type: item
date: 2022-10-28T10:52:56+08:00
description: 接口是一系列抽象方法的生命，是一些方法特征的集合。接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约接口只能用在对象类型当中，具备接口合并，接口继承， 不具备映射类型而类型别名支持区别1type A = string; // 使用type支持 let a:A = 'hello' // 然后接口只支持对象类型 interface B = { }区别二// 接口能合并，但是类型别名不可以 interface A { username: string } interface B { age: number } let a: A { username: 'yiqi', // 这个是必须的 age: 20 // 这个是必须的 }区别三// 接口具备继承的能力 interface A { username: string } interface B extends A { } let b: B = { username: 'yiqi' }区别四// 类型别名支持映射类型，接口不行 type A = { [P in 'username'|'age']: string }

docker安装mongodb
type: item
date: 2022-10-09T13:25:00+08:00
description: 安装mongodb拉取镜像docker pull mongo也可以指定版本拉取docker pull mongo:6.0.2可以通过docker hub)进行搜索查看自己需要的版本启动容器docker run -d -p 27017:27017 -v ~/yiqi/docker/data/mongo/mongo_configdb:/data/configdb -v ~/yiqi/docker/data/mongo/mongo_db:/data/db --name mongo mongo --auth参数解析：-d 后台运行-p 宿主机端口:docker端口（端口映射）-v 宿主机目录:docker目录（数据挂载）--name 给容器起个名字最后一个mongo是使用那个镜像-- auth mongo开启权限验证检查是否启动成功可以使用docker ps命令查看设置mongo权限使用下边的命令进入到mongo的命令行模式docker exec -it mongo mongo admin然后创建一个用户db.createUser({ user: 'root', pwd: 'root', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })测试连接mongo这里使用了Navicat 进行测试创建一个mongoDB连接配置刚刚创建的root用户

docker删除镜像命令
type: item
date: 2022-02-02T18:35:28+08:00
description: docker rmi 镜像id 镜像id可以通过docker images进行查看

有趣的代码注释
type: item
date: 2021-12-15T11:50:00+08:00
description: 转载于：https://blog.csdn.net/ydk888888/article/details/81563608 _(\_/) ,((((^`\ (((( (6 \ ,((((( , \ ,,,_ ,((((( /"._ ,`, ((((\\ ,... ,(((( / `-.-' ))) ;' `"'"'""(((( ( ((( / ((( \ )) | | (( | . ' | )) \ _ ' `t ,.') ( | y;- -,-""'"-.\ \/ ) / ./ ) / `\ \ |./ ( ( / /' || \\ //'| || \\ _//'|| || )) |_/ || \_\ |_/ || `'" \_\ `'" /*** * 瓦瓦 十 * 十齱龠己 亅瓦車己 * 乙龍龠毋日丶 丶乙己毋毋丶 * 十龠馬鬼車瓦 己十瓦毋毋 * 鬼馬龠馬龠十 己己毋車毋瓦 * 毋龠龠龍龠鬼乙丶丶乙車乙毋鬼車己 * 乙龠龍龍鬼龍瓦 十瓦毋乙瓦龠瓦亅 * 馬齱龍馬鬼十丶日己己己毋車乙丶 * 己齱馬鬼車十十毋日乙己己乙乙 * 車馬齱齱日乙毋瓦己乙瓦日亅 * 亅車齺龖瓦乙車龖龍乙乙十 * 日龠龠十亅車龍毋十十 * 日毋己亅 己己十亅亅 * 丶己十十乙 丶丶丶丶丶 * 亅己十龍龖瓦 丶 丶 乙十 * 亅己十龠龖毋 丶丶 丶己鬼鬼瓦亅 * 十日十十日亅丶亅丶 丶十日毋鬼馬馬車乙 * 十日乙十亅亅亅丶 十乙己毋鬼鬼鬼龍齺馬乙 * 丶瓦己乙十十亅丶亅乙乙乙己毋鬼鬼鬼龍齱齺齺鬼十 * 乙乙十十十亅乙瓦瓦己日瓦毋鬼鬼龠齱齱龍龍齱齱毋丶 * 亅十十十十乙瓦車毋瓦瓦日車馬龠龍龍龍龍龍龠龠龠馬亅 * 十十十十己毋車瓦瓦瓦瓦鬼馬龠龍龠龠龍龠龠龠馬龠車 * 亅十十日毋瓦日日瓦鬼鬼鬼龠龠馬馬龠龍龍龠馬馬車 * 亅亅亅乙瓦瓦毋車車車馬龍龠鬼鬼馬龠龍龍龠馬馬鬼 * 丶丶乙亅亅乙車鬼鬼鬼毋車龍龍龠鬼馬馬龠龍齱齱龍馬鬼 * 亅己十十己十日鬼鬼車瓦毋龠龍龠馬馬龠龠龠齱齺齺齱龠鬼 * 亅乙乙乙十車馬車毋馬齱齱龍龠龠龠馬龠龍齱龍龠龠鬼瓦 * 丶毋龠鬼車瓦車馬龠龍龠龠龍齱齱龠馬馬鬼毋日 * 十乙己日十 丶己鬼龍齱齺齱龍馬馬馬車毋己 * 丶十己乙亅丶 亅瓦馬龠龍龠龠馬毋瓦乙 * 丶十十乙亅十 亅己瓦車馬龠鬼車瓦乙 * 丶十乙十十丶 丶丶亅十瓦鬼車瓦己 * 丶亅亅丶 亅日瓦日 * 丶 *//*** * .,:,,, .::,,,::. * .::::,,;;, .,;;:,,....:i: * :i,.::::,;i:. ....,,:::::::::,.... .;i:,. ......;i. * :;..:::;::::i;,,:::;:,,,,,,,,,,..,.,,:::iri:. .,:irsr:,.;i. * ;;..,::::;;;;ri,,,. ..,,:;s1s1ssrr;,.;r, * :;. ,::;ii;:, . ................... .;iirri;;;,,;i, * ,i. .;ri:. ... ............................ .,,:;:,,,;i: * :s,.;r:... ....................................... .::;::s; * ,1r::. .............,,,.,,:,,........................,;iir; * ,s;........... ..::.,;:,,. ...............,;1s * :i,..,. .,:,,::,. .......... .......;1, * ir,....:rrssr;:, ,,.,::. .r5S9989398G95hr;. ....,.:s, * ;r,..,s9855513XHAG3i .,,,,,,,. ,S931,.,,.;s;s&BHHA8s.,..,..:r: * :r;..rGGh, :SAG;;G@BS:.,,,,,,,,,.r83: hHH1sXMBHHHM3..,,,,.ir. * ,si,.1GS, sBMAAX&MBMB5,,,,,,:,,.:&8 3@HXHBMBHBBH#X,.,,,,,,rr * ;1:,,SH: .A@&&B#&8H#BS,,,,,,,,,.,5XS, 3@MHABM&59M#As..,,,,:,is, * .rr,,,;9&1 hBHHBB&8AMGr,,,,,,,,,,,:h&&9s; r9&BMHBHMB9: . .,,,,;ri. * :1:....:5&XSi;r8BMBHHA9r:,......,,,,:ii19GG88899XHHH&GSr. ...,:rs. * ;s. .:sS8G8GG889hi…

git 获取所有分支
type: item
date: 2021-11-10T16:15:23+08:00
description: git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done git fetch --all git pull --all