snjl

我大概率会编程。


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

echo命令

发表于 2019-01-23 | 分类于 服务器
字数统计: 438 字 | 阅读时长 ≈ 1 分钟

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

语法

echo(选项)(参数)

选项

-e:激活转义字符。

使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \a 发出警告声;
  • \b 删除前一个字符;
  • \c 最后不加上换行符号;
  • \f 换行但光标仍旧停留在原来的位置;
  • \n 换行且光标移至行首;
  • \r 光标移至行首,但不换行;
  • \t 插入tab;
  • \v 与\f相同;
  • \ 插入\字符;
  • \nnn 插入nnn(八进制)所代表的ASCII字符;

参数

变量:指定要打印的变量。

实例

用echo命令打印带有色彩的文字:

文字色:

1
2
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
  • \e[1;31m 将颜色设置为红色
  • \e[0m 将颜色重新置回

颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

背景色

1
2
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background

颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

文字闪动

1
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"

红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

grep命令

发表于 2019-01-23 | 分类于 服务器
字数统计: 1.9k 字 | 阅读时长 ≈ 8 分钟

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

阅读全文 »

mv命令

发表于 2019-01-23 | 分类于 服务器
字数统计: 698 字 | 阅读时长 ≈ 2 分钟

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:

  1. 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
  2. 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。

注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

语法

1
mv(选项)(参数)

选项

1
2
3
4
5
6
7
8
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

参数

  • 源文件:源文件列表。
  • 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。

实例

将文件ex3改名为new1

1
mv ex3 new1

将目录/usr/men中的所有文件移到当前目录(用.表示)中:

1
mv /usr/men/* .

python:常用操作(二)

发表于 2019-01-23 | 分类于 python
字数统计: 898 字 | 阅读时长 ≈ 3 分钟

1.python以表名作为变量

1
cursor.execute('select * from ' + tableName)

注意:from后面有空格,不然例如tableName为 test,组合后会变成 select * fromtest,会报错。

阅读全文 »

mysql:sql按照某个字段排序,并且另一个字段为NULL或者空字符串或固定字符串排后面

发表于 2019-01-23 | 分类于 mysql
字数统计: 136 字 | 阅读时长 ≈ 1 分钟

1.按照year从高到低排序,但是如果thumb为空,即使year很高也要排在有thumb的最低的year后面

1
select * from TABLE order by thumb is null,year desc;

2.按照year从高到低排序,但是如果thumb为空字符串,即使year很高也要排在有thumb的最低的year后面

1
select * from TABLE order by thumb ='',year desc;

1.按照year从高到低排序,但是如果thumb为固定字符串no picture,即使year很高也要排在有thumb的最低的year后面

1
select * from TABLE order by thumb = 'no picture',year desc;

mysql:字符串的百分比数据排序

发表于 2019-01-23 | 分类于 mysql
字数统计: 199 字 | 阅读时长 ≈ 1 分钟

有一组数据需要按照百分比排序,但是例如23.52%是存为字符串的,而不是0.2352,如果直接排序是按照字母排序。

考虑先去掉百分号

去掉百分号,即去掉最后一个字符,方法为
substring(columnName,1,length(colunName)-1),这样去掉了最后一个字符,如果以他排序,则为:

1
select * from Table order by substring(columnName,1,length(colunName)-1);

但是这样做依旧是按照字母排序,因为还是个字符串,所以需要转化为数字。

转化数字简单方法

1
select * from Table order by columnName+0;

这样就将字段强转为数字类型了,所以如果是按照百分比的数字顺序排序,可以写为:

1
select * from Table order by substring(columnName,1,length(columnName)-1)+0;

C++使用OpenMP计算四邻域值

发表于 2019-01-23 | 分类于 C++
字数统计: 1.2k 字 | 阅读时长 ≈ 5 分钟

项目地址:https://github.com/snjl/c.openmp.git

开发环境:Clion或visual studio,vs需要在项目里开启openmp,具体可以搜索。

时间统计使用omp_get_wtime,是omp包里的函数,如下:

1
double start = omp_get_wtime();

如果使用time的函数,clock_t是记录cpu的滴答数的,并行时多个进程同时计算,cpu计时数成倍增加。

题目

编写完整OpenMP程序:要求在程序中指定用4个线程执行;定义A、B数组,实现初始化整数数组A[1000][1000],然后计算B[i][j]=(A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4(其中0<i,j<1000)。

阅读全文 »

mingw下载

发表于 2019-01-23 | 分类于 mingw
字数统计: 26 字 | 阅读时长 ≈ 1 分钟

sourceforge的网址:
https://sourceforge.net/projects/mingw-w64/

多个系统的下载链接:
http://mingw-w64.org/doku.php/download

String的equals方法源码

发表于 2019-01-23 | 分类于 源码
字数统计: 1k 字 | 阅读时长 ≈ 4 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* Compares this string to the specified object. The result is {@code
* true} if and only if the argument is not {@code null} and is a {@code
* String} object that represents the same sequence of characters as this
* object.
*
* @param anObject
* The object to compare this {@code String} against
*
* @return {@code true} if the given object represents a {@code String==}==
* equivalent to this string, {@code false} otherwise
*
* @see #compareTo(String)
* @see #equalsIgnoreCase(String)
*/
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}

如果是同一个对象,例如x.equals(x),啧在第一个判断时就会返回true。如果两个对象都是被new出来的,则内存地址会不一样,例如:

1
2
String a = new String("bcd");
String b =new String("bcd");

a和b的内存地址是不一样的,使用==会得到false的结果,但是如果写成

1
2
String a = "abc";
String b = a;

则a和b的内存地址是一样的,直接用==也可以获得true。

1
2
3
4
5
String s1 = "java";
String s2 = "java";

System.out.println(s1==s2); //true
System.out.println(s1.equals(s2)); //true

如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。

如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。

所以,如果两行代码运行时间很接近,可能还留有缓存,两者可以直接用==并且返回true,但是一般不会这样去使用。

重写equals条件:

  • 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
  • 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
  • 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
  • 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
    对于任何非空引用值 x,x.equals(null) 都应返回 false。
  • 对于任何非空引用值 x,x.equals(null) 都应返回 false。
阅读全文 »

springboot报错记录(二)

发表于 2019-01-23 | 分类于 springboot
字数统计: 100 字 | 阅读时长 ≈ 1 分钟

1. org.thymeleaf.exceptions.TemplateInputException: Error resolving template “index”, template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) ~[thymeleaf-2.1.6.RELEASE.jar:2.1.6.RELEASE]

在你的controller层对应的方法返回html路径及名称时,在前面多加了一个/ 。

例如return “/index”,正式这个/导致报错的,解决:去掉返回前面的/即可,例如return “/index”,改为”index”。

1…91011…21
snjl

snjl

越过山丘,才发现无人等候。

203 日志
44 分类
107 标签
RSS
GitHub E-Mail Weibo
© 2019 snjl
总访问量次 | 总访客人 |
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4