dmesg

dmesg # 显示时间戳 dmesg -T Display messages in kernel ring buffer Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。 dmesg[1] - print or control the kernel ring buffer dmesg用于检测和控制内核环缓冲。程序用来帮助用户了解系统的启动信息 dmesg |grep scsi -A 3 https://www.jianshu.com/p/4a029091b705

2011-08-20 · 1 min · 31 words · -

Provider 模式

Provider 模式 首先什么是Provider模式?Provider是由两个设计模式融合而来的: 策略模式+抽象工厂模式。这两个模式具体的介绍我在这里就不多说了,网上一搜一大把。provider模式的作用是为一个API进行定义和实现的分离。这样就通过核心功能的灵活性和易于修改的特点使得API具有灵活性。通俗一点来说就是实现了定义和实现的分离,最终效果就是不需要更改代码即可实现程序不同逻辑的改变。 在BlogEngine中,provider模式被应用于提供不同的数据的持久化。为了保证解压后就能使用默认采用的是xmlProvider。本文研究的重点就是了解这个Provider模式,并知道BlogEngine如何通过provider模式使得不同数据持久化方式之间的灵活切换。 https://www.cnblogs.com/qianlifeng/archive/2010/12/07/1899343.html

2011-08-20 · 1 min · 6 words · -

Debian

Debian Debian 10 “buster”

2011-08-20 · 1 min · 4 words · -

yaml

yaml http://www.ruanyifeng.com/blog/2016/07/yaml.html YAML 语言 (发音 /ˈjæməl/ ) 的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 YAML 支持的数据结构有三种。 对象: 键值对的集合,又称为映射 (mapping) / 哈希 (hashes) / 字典 (dictionary) 数组: 一组按次序排列的值,又称为序列 (sequence) / 列表 (list) 纯量 (scalars) : 单个的、不可再分的值

2011-08-19 · 1 min · 36 words · -

gitea

gitea Gitea是一款使用Golang编写的可自运营的代码管理工具。 在这个领域,名气最响的应该是Gitlab。但实际使用中Gitlab也有点问题,首先就是资源占用。Gitlab是使用ruby编写的,好几年之前刚出来的时候,一台1G内存的虚拟主机连安装运行都做不到,着实震惊。时至今日都已经发展到了以docker镜像分发,gitlab仍旧会有体积和运行时资源占用的问题。另一点就是功能,对于一般标准团队来说,gitlab的功能太过于丰富,这是往好的地方说,往坏的地方说就是它包含了太多不需要的东西,而这些东西还占用磁盘和运行时资源。 于是着手查看开源的alternative方案,很快就找到了golang研发的gitea。使用golang研发的软件分发都很容易,体积小,安装使用简单,运行时占用资源少。且gitea的功能很完备,某些自身不具备的功能也能通过第三方来解决,比如CI就可以结合同样是golang研发的drone来实施。 https://xenojoshua.com/2019/12/gitea-note/

2011-08-19 · 1 min · 5 words · -

emacs 启动 窗口最大化

emacs 启动 窗口最大化 (defun fullscreen (&optional f) (interactive) (x-send-client-message nil 0 nil “_NET_WM_STATE” 32 ‘(2 “_NET_WM_STATE_MAXIMIZED_VERT” 0)) (x-send-client-message nil 0 nil “_NET_WM_STATE” 32 ‘(2 “_NET_WM_STATE_MAXIMIZED_HORZ” 0))) (add-hook ‘window-setup-hook ‘fullscreen)

2011-08-18 · 1 min · 29 words · -

蓝牙 HID

蓝牙 HID The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 2.一些概念 (1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output, and Feature。 (2)HID建立Control Channel和Interrupt Channel两个通道,report可以在这两条channel上传输,在Control channel上传输的report称为synchronous reports ;在Interrupt channel上传输的report称为asynchronous reports。 (3)Feature reports are always transferred synchronously using GET_REPORT or SET_REPORT requests。 (4)Report Protocol Mode和Boot Protocol Mode。Bluetooth HID Hosts至少支持一种,Bluetooth HID Device则需要支持Report Protocol Mode,并且Report Protocol Mode是Bluetooth HID Device的默认Mode。 HOG (HID OVER GATT) 蓝牙4.0的BLE (bluetooth low en)技术 https://www.zhihu.com/question/23785524 https://developer.aliyun.com/article/376006

2011-08-18 · 1 min · 61 words · -

shell params, 参数

shell params, 参数 在 shell 编程时. 可以使用参数。 Shell 有位置参数和内部参数 位置参数 由系统提供的参数称为位置参数。位置参数的值可以用 $N 得到, N 是一个数字,如果 为 1, 即 $1. 类似 C 语言中的数组, Linux 会把输入的命令字符串分段并给每段进行标号, 标号从 0 开始。第 0 号为程序名字,从 1 开始就表示传递给程序的参数。如 $0 表示程序的名字,$1 表示传递给程序的第一个参数, 以此类推。 内部参数 上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。 # 传递给程序的总的参数数目 $# #上一个代码或者 shell 程序在 shell 中退出的情况,如果正常退出则返回 0,反之为非 0 值。 $? $* –传递给程序的所有参数组成的字符串。 下面举例进行说明 cat test.sh !/bin/bash test shell echo $0 # 第一个参数 echo $1 # 第二个参数 echo $2 # 程序执行结果 echo $? # 传递参数所组成的字符串 echo $* # 参数个数 echo $# ./test.sh yema Bhanv edu network ...

2011-08-12 · 1 min · 123 words · -

sftp config

sftp config cd /root/ssh emacs sshd_config remove the comments for RSAAuthentication, PubkeyAuthentication RSAAuthentication yes PubkeyAuthentication yes generate rsa key pair by puttygen edit file authorized_keys add public key which generate by putty. copy private key to client PC /root/.ssh/id_rsa

2011-08-04 · 1 min · 39 words · -

svn basic, command

svn basic, command ignore ca --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" svn checkout https://your.repository.url/ --non-interactive --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" --username=blah --password=blah 查看 svn 版本 svn --version svn merge # 分支合到主干 cd trunk svn merge -r <revision where branch was cut>:<revision of trunk> svn://branch/path # 分支当前版本为4847,想把4825到4847间的改动merge到主干 # cd trunk svn merge -r 4825:4847 svn://branch/path svn ci -m "merge branch changes r4835:4847 into trunk" # 主干合到分支 cd branch # 在r23创建了一个分支,trunk版本号更新到了25,想把23-25之间的改动merge到分支 svn merge -r 23:25 svn://trunk/path svn ci -m "merge trunk changes r23:25 into my branch" # cd trunk # 查看当前Branch中已经有那些改动已经被合并到Trunk中 svn mergeinfo svn://branch/path # cd trunk # 查看Branch中那些改动还未合并 svn merginfo svn://branch/path --show-revs eligible svn cat -- 显示特定版本的某文件内容。 svn list -- 显示一个目录或某一版本存在的文件列表。 svn list -v http://svn.test.com/svn #查看详细的目录的信息(修订人,版本号,文件大小等)。 svn log -- 显示svn 的版本log,含作者、日期、路径等。 svn diff -- 显示特定修改的行级详细信息。 resolve svn resolve --accept working 1.txt svn resolve --accept theirs-full 1.txt 使用1.txt.rNew作为最后提交的版本 svn resolve --accept mine-full 1.txt 使用1.txt.mine作为最后提交的版本 svn resolve --accept mine-conflict 1.txt 使用1.txt.mine的冲突部分作为最后提交的版本 svn resolve --accept theirs-conflict 1.txt 使用1.txt.rNew的冲突部分作为最后提交的版本 # 查看远程地址 svn info # checkout svn checkout --username user0 http://路径(目录或文件的全路径)[本地目录全路径] #查看目录状态 svn status svn status -u # checkout 指定版本 svn up -rXXXX #install yum install subversion svn checkout https://(项目名称).(域)/svn/(项目名称)/(DIR) (项目名称) --username [在此处输入用户名] svn update #更新到指定版本 svn up -r xxx # 如果出现 an unversioned directory of the same name already exists, 可以使用强制更新 #强制更新 svn up --force svn commit -m 'xxx' svn revert . svn delete --force foo svn revert foo svn propedit svn:ignore . svn propset svn:ignore dirname . None of the environment variables SVN_EDITOR, export SVN_EDITOR=vim cd /home/wiloon/tmp ...

2011-08-04 · 2 min · 290 words · -

dev env

dev env linux ubuntu kafka containerd + nerdctl yubico login selfsigned cert, use for nginx citrix OK 远程桌面正常使用 传文件, 用桌面版的 citrix Jetbrains OK webex fcitx 输入中文, 2404 使用正常, 字体需要 配置一下 会议模式 ok, 音质销差但是不影响 共享屏幕, 用网页版 中文输入法 fcitx outlook 用网页版 或者 Thunderbird gnome terminal: 可以配置保留所有命令行的输出, windows terminal 只能保留 32767 行 containerd + nerdctl install chrome, download deb install vscode, download deb install 1password, download deb export ssh private key from 1password sudo apt install git # ubuntu install python3 by default # pdm depends on python3.12-venv sudo apt install python3.12-venv curl -sSL https://pdm-project.org/install-pdm.py | python3 - export PATH=/home/ywang6/.local/bin:$PATH sudo apt-get install libpq-dev python3-dev clang # sudo nopassword # install zsh # install fcitx5 windows # install latest version of powershell https://github.com/PowerShell/PowerShell/releases/tag/v7.1.0 # 以 admin 启动 powershell, 执行以下命令 choco install golang choco install nodejs-lts choco install python2 winget 安装软件不知道会安装到哪 ...

2011-08-01 · 4 min · 680 words · -

Flatpak

Flatpak Flatpak 由红帽员工亚历山大·拉尔森(Alexander Larsson)开发,并于2015年正式发布。它是用C编程开发的,提供了在Linux发行版上安装应用程序的一种快速和直接的方法。 Flatpak的工作原理是将一个应用程序组合并编译成一个包。此前,Flatpak被称为xdg-app。这个特定的框架使用了在沙箱环境中运行应用程序而不需要根特权的概念。因此,一些flatpak应用程序不能访问和利用系统的全部资源。 Flatpak应用程序主要针对三种桌面环境——FreeDesktop、KDE和GNOME。不幸的是,Flatpak不支持任何后端工具,因为它只生成在Desktop环境中运行的应用程序。这是这个包管理器的一个主要缺点,因为它不支持服务器,除非您安装像GNOME这样的桌面环境(DE)。 与Snap类似,Flatpak有一个名为Flathub的在线商店,用户可以在那里找到并下载他们想要的应用程序。Flathub首次发布时,只允许开发者发布免费和开源的应用程序。然而,在更新了他们的条款和条件之后,开发人员现在甚至可以发布专有包。 https://blog.csdn.net/weixin_39636364/article/details/120424180 pacan -S flatpak flatpak list flatpak search Spotify flatpak install flathub Spotify flatpak run com.spotify.Client flatpak uninstall <appid> flatpak uninstall --unused sudo apt-get remove --autoremove flatpak sudo apt-get purge flatpak ubuntu sudo apt install flatpak Add the Flathub repository flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo remove flatpak flatpak uninstall --all sudo apt purge flatpak rm -rf ~/.local/share/flatpak sudo rm -rf /var/lib/flatpak

2011-07-29 · 1 min · 74 words · -

RSA

RSA Java cipher What is Java Cipher? 在计算机系统中,Java Cryptography Architecture (JCA) 是一个使用 Java 编程语言处理加解密相关操作的框架。它是 Java 安全 API 的一部分,最早是在 JDK1.1 版本的java.security包中引入的。JCA 基于”provider“架构,并且包含一系列不同作用的 API,比如加密、秘钥生成与管理、安全随机数生成、证书验证等等。这些 API 为开发人员提供了在应用代码中集成安全操作的简易方式。 Java Cryptography Extension (JCE) 是 Java 平台的一个官方标准扩展,也是 JCA 体系的一部分。JCE 为加密、密码生成和管理、消息认证码等操作提供了一个框架和具体实现。其实 Java 平台本身就包含摘要生成、数字签名等操作的接口和具体实现,JCE 提供了一个更丰富的补充。而javax.crypto.Cipher 类则是 JCE 扩展的核心。 Cipher 实例化 我们可以通过调用静态getInstance方法,传入具体的转换模式名称,就可以实例化一个 Cipher 对象。下面是实例化 Cipher 的示例代码: public class Encryptor { public byte[] encryptMessage(byte[] message, byte[] keyBytes) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException { Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”); //… } } 转换模式 (transformation) 的具体含义 转换模式 (transformation) 是 Cipher 实例化的一个核心参数。transformation 参数的格式是: 算法/工作模式/填充模式(algorithm/mode/padding),如上述示例中AES/ECB/PKCS5Padding。 ...

2011-07-28 · 1 min · 126 words · -

linux 环境变量, export, set, env, source, exec

linux 环境变量, export, set, env, source, exec 定义变量时加 export 表示为全局变量,不止对当前 shell 有效,对子进程也有效,不加 export 则为局部变量,只对当前 shell 有效,子进程无效。 set 设置了当前 shell 进程的本地变量,本地变量只在当前 shell 的进程内有效,不会被子进程继承和传递。 env 仅为将要执行的子进程设置环境变量。 export 将一个 shell 本地变量提升为当前 shell 进程的环境变量,从而被子进程自动继承,但是 export 的变量无法改变父进程的环境变量。 source 运行脚本的时候,不会启用一个新的 shell 进程,而是在当前shell进程环境中运行脚本。 exec 运行脚本或命令的时候,不会启用一个新的 shell 进程,并且 exec 后续的脚本内容不会得到执行,即当前shell进程结束了。 https://segmentfault.com/a/1190000013356532 .bashrc 文件 这种方法可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。 (1)用文本编辑器打开用户目录下的.bashrc文件 (2)在.bashrc文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH 重新加载 source .bashrc ########################################################## /etc/profile文件 所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 (1)用文本编辑器打开/etc/profile (2)在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME ...

2011-07-18 · 2 min · 241 words · -

vscode, java, remote ssh

vscode, java 在vscode 中下载以下插件 Extension Pack for Java Language Support for Java™ by Red Hat Debugger for Java Test Runner for Java Maven for Java Project Manager for Java Extension Pack for Java java config

2011-07-18 · 1 min · 35 words · -

ln link 软连接和硬连接

ln command, 软连接和硬连接 ln [参数][源文件或目录][目标文件或目录] -f, --force remove existing destination files # 创建软连接 # 原文件: foo # symbolic link : bar ln -s foo bar #硬连接 ln foo bar # 删除链结 unlink link0 # see the actual contents of a symlink ls -l link0 readlink link0 # 打印原始路径 ls -l link0 # 如果 link0 是个目录, 会列出目录下的文件 ls -l link0/ Linux链接分两种,一种被称为硬链接 (Hard Link) ,另一种被称为符号链接 (soft link, Symbolic Link) 。默认情况下,ln命令产生硬链接。 ...

2011-07-13 · 4 min · 769 words · -

环形队列

环形队列 环形队列, circle queue 环形缓冲区 (ring buffer)也称作循环缓冲区 (cyclic buffer)、圆形队列 (circular queue)、圆形缓冲区 (circular buffer) 环形队列是在实际编程极为有用的数据结构,它有如下特点。 它是一个首尾相连的FIFO的数据结构,采用数组的线性空间,数据组织简单。能很快知道队列是否满为空。能以很快速度的来存取数据。 因为有简单高效的原因,甚至在硬件都实现了环形队列. 环形队列广泛用于网络数据收发,和不同程序间数据交换 (比如内核与应用程序大量交换数据,从硬件接收大量数据) 均使用了环形队列. 一.环形队列实现原理 内存上没有环形的结构,因此环形队列实上是数组的线性空间来实现。那当数据到了尾部如何处理呢?它将转回到0位置来处理。这个的转回是通过取模操作来执行的。 因此环列队列的是逻辑上将数组元素q[0]与q[MAXN-1]连接,形成一个存放队列的环形空间。 为了方便读写,还要用数组下标来指明队列的读写位置。head/tail.其中head指向可以读的位置,tail指向可以写的位置。 环形队列的关键是判断队列为空,还是为满。当tail追上head时,队列为满时,当head追上tail时,队列为空。但如何知道谁追上谁。还需要一些辅助的手段来判断. 如何判断环形队列为空,为满有两种判断方法。 一.是附加一个标志位tag 当head赶上tail,队列空,则令tag=0, 当tail赶上head,队列满,则令tag=1, 二.限制tail赶上head,即队尾结点与队首结点之间至少留有一个元素的空间。 队列空: head==tail 队列满: (tail+1)% MAXN ==head

2011-07-13 · 1 min · 35 words · -

优先级翻转

优先级翻转 所谓优先级翻转问题(priority inversion)即当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,而这个低优先级任务在访问共享资源时可能又被其它一些中等优先级任务抢先,因此造成高优先级任务被许多具有较低优先级任务阻塞,实时性难以得到保证。 例如: 有优先级为A、B和C三个任务,优先级A>B>C,任务A,B处于挂起状态,等待某一事件发生,任务C正在运行,此时任务C开始使用某一共享资源S。在使用中,任务A等待事件到来,任务A转为就绪态,因为它比任务C优先级高,所以立即执行。当任务A要使用共享资源S时,由于其正在被任务C使用,因此任务A被挂起,任务C开始运行。如果此时任务B等待事件到来,则任务B转为就绪态。由于任务B优先级比任务C高,因此任务B开始运行,直到其运行完毕,任务C才开始运行。直到任务C释放共享资源S后,任务A才得以执行。在这种情况下,优先级发生了翻转,任务B先于任务A运行。 解决优先级翻转问题有优先级天花板(priority ceiling)和优先级继承(priority inheritance)两种办法。 优先级天花板是当任务申请某资源时, 把该任务的优先级提升到可访问这个资源的所有任务中的最高优先级, 这个优先级称为该资源的优先级天花板。这种方法简单易行, 不必进行复杂的判断, 不管任务是否阻塞了高优先级任务的运行, 只要任务访问共享资源都会提升任务的优先级。 优先级继承是当任务A 申请共享资源S 时, 如果S正在被任务C 使用,通过比较任务C 与自身的优先级,如发现任务C 的优先级小于自身的优先级, 则将任务C的优先级提升到自身的优先级, 任务C 释放资源S 后,再恢复任务C 的原优先级。这种方法只在占有资源的低优先级任务阻塞了高优先级任务时才动态的改变任务的优先级,如果过程较复杂, 则需要进行判断。

2011-07-11 · 1 min · 27 words · -

java float,double,decimal

‘java float,double,decimal’ decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。 (28个有效位) float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。 double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。 注: float和double的相乘操作,数字溢出不会报错,会有精度的损失。 decimal dd=345.545454879…..//可以支持28位,对最后一位四舍五入。 注: 当对decimal类型进行操作时,数值会因溢出而报错。 由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; System.out.println("f=" + f); System.out.println("d=" + d); System.out.println("d2=" + d2); } } 得到的结果如下: f=2.0015E7 d=2.0015E7 d2=2.0014999E7 从输出结果可以看出double 可以正确的表示20014999 ,而float 没有办法表示20014999 ,得到的只是一个近似值。这样的结果很让人讶异。20014999 这么小的数字在float下没办法表示。于是带着这个问 题,做了一次关于float和double学习,做个简单分享,希望有助于大家对java 浮 点数的理解。 关于 java 的 float 和 double ...

2011-07-03 · 2 min · 269 words · -

机器零

机器零 计算机中机器零是指: 如果一个浮点数的尾数全为0,则不论其阶码为何值,计算机在处理时都把这种浮点数当作零看待; 如果一个浮点数的阶码小于它所表示范围的最小值,则不论其尾数为何值,计算机在处理时都把这种浮点数当作零看待。 计算机保存数字的位有限,所能表示最小的数也有范围,当一个表示方式比它所能表示的数更小时,计算机无法表示,就作为0处理,实际上,这个数也很接近0了. 浮点数定义其实就是0.XXXXX * 2^XXXX 零点多少乘以2的多少次方 其中零点多少就是尾数,2的多少次方就是阶码,不管计算机用几位表示阶码,肯定有个表示的范围,一共有负的最大值,负的最小值,正的最大值,正的最小值4种限制. 当一个表示方式中的阶码是负数,而且这个负数小于计算机所能表示的阶码 如以上2的XXX次方中,XXX是负数 (绝对值很大) ,非常小,在数学上这个值就非常接近于零,在计算机上,因为无法表示比这个值更小了,所以就把这个浮点数作为零处理 补充: 不用管位数,先看阶码 假设一个10进制的数,0.9999*10^-9999999999999999999999999, 10的-99999999999999999999999次方,那么这个数是不是很接近0, 不管前面的0.9999是正还是负 对于2进制也一样,0.1111*2^-111111111111111111111111111111 计算机保存数字的位有限,所能表示最小的数也有范围,当一个表示方式比它所能表示的数更小时,计算机无法表示,就作为0处理,实际上,这个数也很接近0了.

2011-07-03 · 1 min · 21 words · -