Golang runtime

Golang runtime golang 判断操作系统是 windows 还是 linux http://www.jianshu.com/p/e45cea3e1723 runtime 调度器是个非常有用的东西,关于 runtime 包几个方法: Gosched: 让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行 NumCPU: 返回当前系统的 CPU 核数量 GOMAXPROCS: 设置最大的可同时使用的 CPU 核数 Goexit: 退出当前 goroutine(但是defer语句会照常执行) NumGoroutine: 返回正在执行和排队的任务总数 GOOS: 目标操作系统 NumCPU package main import ( “fmt” “runtime” ) func main() { fmt.Println(“cpus:”, runtime.NumCPU()) fmt.Println(“goroot:”, runtime.GOROOT()) fmt.Println(“archive:”, runtime.GOOS) } 运行结果: GOMAXPROCS Golang 默认所有任务都运行在一个 cpu 核里,如果要在 goroutine 中使用多核,可以使用 runtime.GOMAXPROCS 函数修改,当参数小于 1 时使用默认值。 package main import ( “fmt” “runtime” ) func init() { runtime.GOMAXPROCS(1) } func main() { // 任务逻辑… } Gosched ...

2017-09-11 · 2 min · 214 words · -

contract, 合同

contract, 合同 合同的基本结构和主要条款 《合同法》第十二条、《民法典》第四百七十条规定了“合同应当具备如下内容: 当事人的姓名或者名称和住所; 标的; 数量; 质量; 价款或者报酬; 履行期限、地点和方式; 违约责任; 解决争议的方法。 一般而言,合同只要具备了法律规定的八个内容就是一个内容完备、层次分明的合同,但现实的交易错综复杂,要根据具体的交易安排合同内容。 对一般的小、微经营者而言,可以参照《民法典》合同编中第二分编《典型合同》的规定来确定自己的合同性质和名称。 承揽合同与委托合同 https://www.lawyer5148.com/lhy8297007/vip_doc/1348159.html 民法典 http://www.npc.gov.cn/npc/c30834/202006/75ba6483b8344591abd07917e1d25cc8.shtml https://github.com/baicaihenxiao/GitBook-Notes/blob/master/project/bao-jia-+-he-tong-cheng-xu-yuan-jie-si-huo-wan-zheng-gong-lve-+-zeng-kai-yuan-guan-li-xi-tong.md

2017-09-10 · 1 min · 19 words · -

kvm GPU VFIO OVMF

‘kvm GPU VFIO OVMF’ https://www.linuxserver.io/2017/04/28/how-to-setup-vfio-gpu-passthrough-using-ovmf-and-kvm-on-arch-linux/ https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF https://github.com/IronicBadger/arch-vfio-ovmf https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Plain_QEMU_without_libvirt

2017-09-08 · 1 min · 8 words · -

容器编排

容器编排 众所周知,Kubernetes 是一个容器编排平台,它有非常丰富的原始的 API 来支持容器编排,但是对于用户来说更加关心的是一个应用的编排,包含多容器和服务的组合,管理它们之间的依赖关系,以及如何管理存储。 在这个领域,Kubernetes 用 Helm 的来管理和打包应用,但是 Helm 并不是十全十美的,在使用过程中我们发现它并不能完全满足我们的需求,所以在 Helm 的基础上,我们自己研发了一套编排组件…… 什么是编排? 不知道大家有没仔细思考过编排到底是什么意思? 我查阅了 Wiki 百科,了解到我们常说的编排的英文单词为 “Orchestration”,它常被解释为: 本意:为管弦乐中的配器法,主要是研究各种管弦乐器的运用和配合方法,通过各种乐器的不同音色,以便充分表现乐曲的内容和风格。 计算机领域:引申为描述复杂计算机系统、中间件 (middleware) 和业务的自动化的安排、协调和管理。 有趣的是 “Orchestration” 的标准翻译应该为“编配”,而“编排”则是另外一个单词 “Choreography”,为了方便大家理解, 符合平时的习惯,我们还是使用编排 (Orchestration) 来描述下面的问题。至于“编配 (Orchestration)” 和 “编排(Choreography)” 之争,这里有一篇文章,有兴趣可以看一下 。 https://cloud.tencent.com/developer/article/1683430 Kubernetes 容器编排技术 当我们在说容器编排的时候,我们在说什么? 在传统的单体式架构的应用中,我们开发、测试、交付、部署等都是针对单个组件,我们很少听到编排这个概念。而在云的时代,微服务和容器大行其道,除了为我们显示出了它们在敏捷性,可移植性等方面的巨大优势以外,也为我们的交付和运维带来了新的挑战:我们将单体式的架构拆分成越来越多细小的服务,运行在各自的容器中,那么该如何解决它们之间的依赖管理,服务发现,资源管理,高可用等问题呢? 在容器环境中,编排通常涉及到三个方面: 资源编排 - 负责资源的分配,如限制 namespace 的可用资源,scheduler 针对资源的不同调度策略; 工作负载编排 - 负责在资源之间共享工作负载,如 Kubernetes 通过不同的 controller 将 Pod 调度到合适的 node 上,并且负责管理它们的生命周期; 服务编排 - 负责服务发现和高可用等,如 Kubernetes 中可用通过 Service 来对内暴露服务,通过 Ingress 来对外暴露服务。 在 Kubernetes 中有 5 种我们经常会用到的控制器来帮助我们进行容器编排,它们分别是 Deployment, StatefulSet, DaemonSet, CronJob, Job。 ...

2017-09-08 · 1 min · 100 words · -

OAuth,SSO,REST

OAuth,SSO,REST http://favccxx.blog.51cto.com/2890523/1635938 OAuth与SSO、REST有哪些区别与联系 2015-04-20 10:31:10 标签: SSO REST OAuth OAuth2.0 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://favccxx.blog.51cto.com/2890523/1635938 谈到OAuth,很多人自然而然的就会想起SSO,还有些人会想起REST。其实,OAuth与SSO和REST并没有太深的关系,它们分别有其不同的适用场景。接下来,我们就看看它们之间的区别与联系是什么? OAuth与SSO的区别? OAuth是一种授权协议,只是为用户资源的授权提供了一个安全的、开放而又简易的标准。OAuth 2.0为客户端开发者开发Web应用,桌面端应用程序,移动应用及客厅设备提供特定的授权流程。 SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 通俗的讲,OAuth是为解决不同公司的不同产品实现登陆的一种简便授权方案,通常这些授权服务都是由大客户网站提供的,如QQ,新浪微博,人人网等。而使用这些服务的客户可能是大客户网站,也可能是小客户网站。使用OAuth授权的好处是,在为用户提供某些服务时,可减少或避免因用户懒于注册而导致的用户流失问题。 SSO通常处理的是一个公司的不同应用间的访问登陆问题。如企业应用有很多业务子系统,只需登陆一个系统,就可以实现不同子系统间的跳转,而避免了登陆操作。 OAuth与SSO的应用场景不同,虽然可以使用OAuth实现SSO,但并不建议这么做。不过,如果SSO和OAuth结合起来的话,理论上是可以打通各个公司的各个不同应用间的登陆问题,但现实往往是残酷的。 OAuth与REST的关系? 谈到REST的安全性问题时,很多人容易联想到使用OAuth来解决这个难题。其实,REST与OAuth有着天壤之别。 OAuth为网站 (系统) 用户授权第三方应用 (网站、系统) 访问自己在网站 (系统) 中的隐私数据提供的一种规范。 REST初期理念是"每个不同的子资源都有一个绝对唯一且不重复的URI地址"。它仅仅是一个URI资源而已,而且是无状态的,因此REST并不适合做需要授权的应用。恰恰相反的是,在使用OAuth授权时,通常会使用REST API来完成授权操作。

2017-09-05 · 1 min · 32 words · -

Linux split, 文件分割与合并

Linux split, 文件分割与合并 # -l 按行分割 # -d numeric suffixes split -l 300 -d large_file.txt new_file_prefix inux文件分割与合并: split & cat Linux下文件分割可以通过split命令来实现,而用cat进行文件合并。而分割可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。 在Linux下用split进行文件分割: 模式一: 指定分割后文件行数 对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。 命令: split -l 300 large_file.txt new_file_prefix 模式二: 指定分割后文件大小 对于可执行文件等二进制文件,则不能通过文件行数来进行文件分割,此时我们可以指定分割大小来分隔文件。 命令: split -b 10m large_file.bin new_file_prefix 对二进制文件我们同样也可以按文件大小来分隔。 在Linux下用cat进行文件合并: 命令: cat small_files* > large_file Linx文件分割命令英文释义: -, read standard input. Mandatory arguments to long options are mandatory for short options too. -a, -suffix-length=N use suffixes of length N (default 2) ...

2017-09-01 · 1 min · 109 words · -

Linux 密码生成工具

Linux 密码生成工具 pwgen -s -y http://blog.csdn.net/u011582658/article/details/38045311 1.pwgen pwgen生成的密码易于记忆且相当安全。从技术上来说,容易记忆的密码不会比随机生成的密码更加安全。但是,在大多数情况下,pwgen生成的密码已经足够安全,除了网银密码等需要高安全等级的情况外。使用易于记忆的密码的好处就是你不会把这些密码写下来或者存到电脑上的某个地方,这样做,本来就是不安全的。 安装pwgen,在终端窗口输入: sudo apt-get install pwgen 不带任何参数运行pwgen,将会输出满屏幕的密码。你可以从中选择一个作为自己的密码然后清除屏幕。采用这种方式生成密码,即使恰好有人在背后,他也不知道你选择的到底是哪一个。 运行pwgen,在终端输入: pwgen 选好密码之后,在终端输入clear清除终端窗口内容。 如果你确定背后没有人,可以使用"-1"来告知pwgen只产生一个密码。 pwgen -1 如果想生成一个完全随机的密码,使用"-s"参数。 pwgen -1 -s 在密码中使用特殊字符 (感叹号,逗号,引号,加号,减号,冒号等) 可以提高密码的安全等级。使用"-y"参数使生成的密码中至少包括一个特殊字符。 pwgen -1 -s -y 更多有趣的参数: -0: 密码中不包含数字。 -B, -ambiguous:密码中不包含容易混淆的字符,比如说'1’和’l’,‘0’和’o’。 -v, -no-vowels:密码不包括元音字母或者可能被误认为是元音字母的数字。这可以防止生成带有攻击性子串的密码。 2.makepasswd makepasswd和pwgen的工作方式类似,但是它生成的密码不容易记忆。所有的密码都是随机生成的,可以看出,makepasswd比pwgen更加注重安全性。 安装makepasswd,在终端输入: sudo apt-get install makepasswd 生成一个密码,输入: makepasswd 生成五个密码,每个密码最少包含10个字符,输入: makepasswd -count 5 -minchars 10 还可以指定以某个字符串为基础生成随机密码。这在生成PIN方面可能很有用。比如说,生成4位PIN,输入: makepasswd -string 1234567890 -chars 4 3.passwordmaker passwordmaker与之前的pwgen和makepasswd不同。它本来是IE,Firefox等浏览器的一个扩展程序。passwordmaker-cli是passwordmaker的命令行版本。安装passwordmaker-cli,输入: sudo apt-get install passwordmaker-cli 在使用passwordmaker的时候,你需要输入一个域名 (URL) 和主密码 (master password) ,passwordmaker会利用这些输入的信息为这个URL生成一个独一无二的密码。 ...

2017-08-30 · 1 min · 80 words · -

向量化

向量化 http://blog.csdn.net/gengshenghong/article/details/7027186 参考手册: http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011Update/compiler_c/index.htm 说明: 本系列文章为个人笔记,如有不正确之处,请参考官方相关文档,如果错误发现,我会尽量更新修改。另外,以下内容不保证对于所有版本的编译器都正确,编译器的实现也可能有一些变化之处,具体参考官方文档。 更多说明请参考http://blog.csdn.net/gengshenghong/article/details/7034748中补充说明部分。 Summary: Intel编译器提供了自动向量化的功能,能对程序进行一些自动的向量化优化。 (1)什么是向量化 所谓的向量化,简单理解,就是使用高级的向量化SIMD指令 (如SSE、SSE2等) 优化程序,属于数据并行的范畴。 更多理解,参考: http://blog.csdn.net/gengshenghong/article/details/6953942 http://blog.csdn.net/gengshenghong/article/details/7007100 等。 (2)如何对代码进行向量化? 知道了向量化的目标是生成SIMD指令, 那么很显然, 要对代码进行向量化, 第一是依靠编译器来生成这些指令;第二是使用汇编或 Intrinsics 函数。Intel 编译器中, 利用其自动向量分析器 (auto-vectorizer) 对代码进行分析并生成SIMD指令。另外, 也会提供一些 pragmas 等方式使得用户能更好的处理代码来帮助编译器进行向量化。 编译器的自动向量化,简单理解,就是编译器对代码进行一些处理从而生成SIMD指令,一个最常见的可以进行向量化的例子就是for循环,这里简单的理解一下,如下代码片段: #define N 4*10 float a[N], b[N], c[N]; for(int i = 0;i < N; i ++) { a[i] = b[i] + c[i]; } 对于上面的代码,假设float类型是4byte,即32bit。如果使用"传统"的指令,这个for循环至少需要经过40次浮点加法运算。那么,如果使用SSE指令 (128bit暂存器) ,那么一条指令能同事计算4个float,所以,上面的for循环可以只适用10次浮点加法运算就完成了。 说明: 这里只是简单说明一下向量化和SSE等指令集之间的关系,关于SIMD、SSE等的细节参考相关内容 (比如,SSE指令要求内存对齐等,后面向量化也会涉及到这一点) (3)自动向量化的选项和基本使用 基本向量化 /Qvec: 开启自动向量化功能,需要在O2以上使用。在O2以上,这是默认的向量化选项,默认开启的。此选项生成的代码能用于Intel处理器和非Intel处理器。向量化还可能受其他选项影响。由于此选项是默认开启的,所以不需要在命令行增加此选项。 /Qvec-reportn: 输出向量化报告。n取值为0到5. 针对指令集 (处理器) 的向量化 /arch:code: 其中code表示指令集,比如IA32、SSE、SSE2、SSE3、SSSE3等等。后面的指令集一般是前面的指令集的扩展,比如,使用SSE3的时候,那么生成的代码会使用到IA32、SSE、SSE2和SSE3的指令。由于是针对指令集的优化,所以其生成的代码只能运行在支持相应指令集的处理器上。默认的是code使用的是SSE2。 /Qxcode: 其中code也是表示指令集,其取值类似于arch (不完全一样) ,但是/Qx选项生成的代码只能运行在Intel处理器上,它会使用Intel处理器的指令进行更进一步的优化。说明: /arch选择可以运行在兼容这些指令集的非Intel处理器上,/Qx只能运行在Intel处理器上,因为并不是所有的兼容同一指令集的处理器都能兼容所有的指令的。 ...

2017-08-15 · 1 min · 199 words · -

ODX, OTX, UDS

ODX, OTX, UDS https://blog.softing.com/blog/automotive-electronics/diagnostics-odx-otx-uds-and-other-market-standards/ Diagnostics – ODX, OTX, UDS and other market standards Posted on 01/07/2015 by Stephan Obermüller Diagnose_Icon_626_251 A large number of today’s innovations are based on software developments, and vehicles are no exception. Software innovations improve vehicle performance and increase both the safety and sustainability of mobility. The number of ECUs and the associated networking are continually increasing in the process. The associated growing complexity must be mastered over a vehicle’s entire lifetime. In addition to actual control functions, diagnostics is increasingly a focal point in development. Although diagnostics was originally only intended for checking that legal emissions standards were being adhered to, it now takes its place before engineering in the entire value chain. ...

2017-08-14 · 2 min · 346 words · -

uds

uds What is UDS? • UDS stands for Unified Diagnostics Service • It is present in all modern cars • Provides access to the Services offered by ECUs • It takes place on the top of the CAN protocol (Layer 4) • Allows to perform transmissions of up to 256 bytes • It is just a Transport Protocol https://media.defcon.org/DEF%20CON%2024/DEF%20CON%2024%20workshops/DEFCON-24-Workshop-Javier-Vazquez-You-CAN-haz-car-Secretz-UPDATED.pdf

2017-08-14 · 1 min · 59 words · -

tp20 for can bus

tp20 for can bus VW Transport Protocol 2.0 (TP 2.0) for CAN bus CAN allows for data packets with a payload of up to 8 bytes, to send messages longer than 8 bytes it is necessary to use a transport protocol. The OBD-II specification for example makes use of ISO-TP (ISO 15765-2). Volkswagen however uses it’s own transport protocol in its vehicles, known as VW TP 2.0. This page gives a run down on how TP 2.0 works. Please note that there is an older VW TP 1.6 which was used in some vehicles. TP 1.6 is fairly similar but some of the parameters are fixed. Its also worth noting that I have worked all of this out from various presentations and documents that I have found on the net and from logging data. I have not had any access to the official documentation from VW so take any information with a grain of salt. ...

2017-08-14 · 1 min · 173 words · -

CAN, Controller Area Network

CAN, Controller Area Network https://baike.baidu.com/item/CAN%E6%80%BB%E7%BA%BF/297754 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准 (ISO 11898) ,是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议 CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

2017-08-14 · 1 min · 15 words · -

gnome

gnome Gnome shell system monitor extension https://aur.archlinux.org/packages/gnome-shell-extension-system-monitor-git/ https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet install gnome shell extension https://www.baeldung.com/linux/gnome-shell-extension sudo apt update sudo apt install gnome-shell-extensions After that, we’ll launch the Activities menu, search for Extensions, and open it: chrome install extension: Shell Integration extension refresh page: https://extensions.gnome.org/extension/261/kimpanel/ click on/off button to install gnome shell extenstion

2017-08-12 · 1 min · 50 words · -

supervisor, supervisorctl

supervisor, supervisorctl 常用命令 supervisorctl status supervisorctl stop service0 supervisorctl stop all supervisorctl start all supervisorctl restart all supervisor 配置文件 /etc/supervisord.conf [program:program_0] #程序的启动目录 directory = /home/user_0/projects/ # 启动命令, 跟命令行启动的命令是一样的 command = python foo.py # 在 supervisord 启动的时候也自动启动 autostart = true # 启动 5 秒后没有异常退出, 就当作已经正常启动了, 这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启 动成功了 # number of secs prog must stay running (def. 10) # 进程持续运行多久才认为是启动成功 startsecs = 5 # 这个是当我们向子进程发送 stopsignal 信号后,到系统返回信息给 supervisord,所等待的最大时间。 超过这个时间,supervisord 会向该 子进程发送一个强制 kill的信号。 默认为10秒。。非必须设置 stopwaitsecs=10 ; autorestart = true ; 程序异常退出后自动重启 startretries = 3 ; 启动失败自动重试次数,默认是 3 user = leon ; 用哪个用户启动 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录 (supervisord 会自动创建日志文件) stdout_logfile = /data/logs/usercenter_stdout.log 使用 supervisor 管理进程 Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程 (不仅仅是 Python 进程) 。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。 ...

2017-08-11 · 4 min · 781 words · -

更新Jar包中的文件

更新Jar包中的文件 http://blackwing.iteye.com/blog/1545670 更新Jar包中的文件 解压 jar xf ***.jar 打包了个fat jar,后来程序作了小修改,如果重新打包一个fat jar再上传服务器实在麻烦,而如果能只把更改的class文件放到原来jar包替换相应文件,则简便很多。 jar命令可以替换jar包对于文件,但需要点小技巧。一般替换 (增加) jar包根目录下的文件,用到的命令是: Java代码 收藏代码 jar uvf myjar.jar ClassToAdd.class 就能把ClassToAdd.class添加到myjar.jar包根目录下。但通常,我们的包都是有多层目录的,这时就需要做点更改。例如,我要更新jar包下: com.blackwing目录下的ClassToAdd.class文件,则命令改为: Java代码 收藏代码 jar uvf myjar.jar com/blackwing/ClassToAdd.class 记得在运行这条命令前,需要在当前文件夹下建立: com/blackwing文件夹,并且把类ClassToAdd.class放到这里,则可以更新jar包中相应目录的类。

2017-08-09 · 1 min · 29 words · -

watch command

watch command watch可以周期性的执行一个程序,并显示执行结果。 watch -d netstat -ant watch -n 3 -d netstat -ant 命令参数 -n, -interval, watch 默认每两秒运行一下程序, 可以用 -n 或 -interval 来指定间隔的时间。 -d, -differences 用 -d 或 -differences 选项 watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。 -t, -no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。 -h, -help 查看帮助文档 watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了! 1.命令格式: watch[参数][命令] 2.命令功能: 可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令 4.使用实例: 实例1: 命令: 每隔一秒高亮显示网络链接数的变化情况 watch -n 1 -d netstat -ant 说明: 其它操作: 切换终端: Ctrl+x 退出watch: Ctrl+g 实例2: 每隔一秒高亮显示http链接数的变化情况 命令: watch -n 1 -d ‘pstree|grep http’ ...

2017-08-08 · 1 min · 109 words · -

lsattr, chattr, 管理文件和目录属性

lsattr, chattr, 管理文件和目录属性 为了允许添加数据,防止更改或者删除等,文件和文件夹可以设定了特定的控制属性。例如, 你可以在关键的系统文件或者文件夹中启用属性, 然后没有任何用户, 包括root, 可以删除或者修改它, 比如不允许使用像 dump 这样的命令等备份工具去备份一个特定的文件或者文件夹,等等。 这些属性只可以在ext2,ext3或者ext4文件系统中的文件和文件夹上设定。 # 使用'i'属性使文件不可更改 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow # 查看文件属性 lsattr /etc/passwd # ----i----------- /etc/passwd # 移除不可更改属性 chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow lsattr /etc/passwd # ---------------- /etc/passwd 现在试着删除或者修改文件 [root@linuxtechi ~]# rm -f dummy_data rm: cannot remove ‘dummy_data’: Operation not permitted [root@linuxtechi ~]# echo “test” » dummy_data -bash: dummy_data: Permission denied chattr -ai /etc/passed (总结) Linux的chattr与lsattr命令详解 ...

2017-08-01 · 1 min · 160 words · -

fsck

fsck fsck https://man.linuxde.net/fsck/embed#?secret=oLlAnrAniE fsck命令文件系统管理 fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。 语法 fsck(选项)(参数) 选项 -f 即使文件系统标记为 clean 也强制进行检查 -b superblock 使用替代的超级块 -y 对所有问题都回答 “yes” -a: 自动修复文件系统,不询问任何问题; -A: 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; -N: 不执行指令,仅列出实际执行会进行的动作; -P: 当搭配"-A"参数使用时,则会同时检查所有的文件系统; -r: 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; -R: 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; -s: 依序执行检查作业,而非同时执行; -t<文件系统类型>: 指定要检查的文件系统类型; -T: 执行fsck指令时,不显示标题信息; -V: 显示指令执行过程。 参数 文件系统: 指定要查看信息的文件系统。 实例 linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它: fsck -y /dev/hda2 结束后使用reboot命令重启系统这样就好了! 如果不知道时哪个地方出了问题,可以直接: fsck 在随后的多个确认对话框中输入:y 结束后同样使用reboot命令重启系统这样就好了! 来自: http://man.linuxde.net/fsck fsck命令文件系统管理 fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。 来自: http://man.linuxde.net/fsck

2017-08-01 · 1 min · 57 words · -

golang date time, 日期, 时间

golang date time, 日期, 时间 创建一个指定时间的日期对象 start := time.Date(2021, 1, 7, 12, 0, 0, 0, time.Local) 比较 先把当前时间格式化成相同格式的字符串, 然后使用 time 的 Before, After, Equal 方法即可. time1 := "2015-03-20 08:50:29" time2 := "2015-03-21 09:04:25" //先把时间字符串格式化成相同的时间类型 t1, err := time.Parse("2006-01-02 15:04:05", time1) t2, err := time.Parse("2006-01-02 15:04:05", time2) if err == nil && t1.Before(t2) { //处理逻辑 fmt.Println("true") } duration 比较 func minDuration(a, b time.Duration) time.Duration { if a <= b { return a } return b } layout # 时区 2006-01-02T15:04:05Z07:00 2006-01-02T15:04:05Z Mon, 2 Jan 2006 15:04:05 MST 20060102150405.000 # 毫秒 2006-02-01 15:04:05.000 unix nano > time unixnano:=int64(1570603226000000000) t:=time.Unix(0,unixnano) fmt.Println(t) 毫秒, get microsecond, mill second time.Now().UnixNano() / int64(time.Millisecond) func main() { fmt.Printf("时间戳 (秒) : %v;\n", time.Now().Unix()) fmt.Printf("时间戳 (纳秒) : %v;\n",time.Now().UnixNano()) fmt.Printf("时间戳 (毫秒) : %v;\n",time.Now().UnixNano() / 1e6) fmt.Printf("时间戳 (纳秒转换为秒) : %v;\n",time.Now().UnixNano() / 1e9) } days between two dates, 计算时间差 func main() { // The leap year 2016 had 366 days. t1 := Date(2016, 1, 1) t2 := Date(2017, 1, 1) days := t2.Sub(t1).Hours() / 24 fmt.Println(days) // 366 } func Date(year, month, day int) time.Time { return time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC) } date > string // 格式化日期 - RFC3339 time.Now().Format("2006-01-02T15:04:05Z07:00") time.Now().Format("2006-01-02-15-04-05") time.Now().Format("2006-01-02 15:04:05") time.Now().Format("2006-1-2 15:4:5") format:="2006-01-02 15:04:05" fmt.Println(time.Now().Format(format)) // 一天前 d, _ := time.ParseDuration("-24h") d1 := now.Add(d) fmt.Println(d1) string > date 在windows下,time.Parse()的时区和time.Format()的时区是一致的。 ...

2017-07-31 · 3 min · 475 words · -

idea external tool

idea external tool https://intellij-support.jetbrains.com/hc/en-us/community/posts/206883315-Anyway-to-Make-IntelliJ-IDEA-run-command-line-commands You can configure command line commands to execute via the “External Tools” feature. Go to File > Settings > [IDE Settings] > External Tools to create an External Tool definition. I’ve never done it with Subversion, but it should work. Just use the svn executable as the “Program” in the settings dialog. There are some pretty useful variables and macros you can define. See the Help for more information. I’ve used this feature to run SCP commands among other things. ...

2017-07-28 · 1 min · 119 words · -