linux中bash配置文件的读取执行顺序

全文摘自man bash中对执行流程的注释,并在其中加入自己的理解登录shell与交互shellA login shell is one whose first character of argument zero is a -, or one started with the --login op
阅读更多

git中的回车换行符CRLF与LF

设置core.autocrlf

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

true

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
$ git config --global core.autocrlf true

input

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

false

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false

来源

《git pro》

Linux撤销挂载home分区后保数据不丢失

WARNINGS:这个操作,在一定程度上可行,毕竟我已经成功做到了。但是这个操作有一定的风险,请慎重!没有图,因为过去的时间比较久了,但大体流程是正确的。问题引入Linux磁盘分区大致如下表所示,因为当前分区A的容量大于(/的实际容量 + /home的实际容量),所以想把/home挂载的分区B取消,
阅读更多

SpringBoot中全局异常的捕获与包装

@ControllerAdvice从Spring3.2开始,引入了一个叫做@ControllerAdvice的注解,这个注解用来编写含有 @ExceptionHandler, @InitBinder, or @ModelAttribute这三个注解的类。官方文档注释如下:这个注解有几个参数,可以用来
阅读更多

RestTemplate如何发送带headers的GET请求

需求:发送自定义header的GET请求,header中需要插入一个签名。发送自定义header的POST请求之前写过一个类似的请求,但是是POST的。这个也摸了一段时间,自己看参数整了出来。代码如下:// header填充LinkedMultiValueMap<String, String&
阅读更多

Manjaro的安装以及使用记录

只想要一个linux环境、不用太折腾、软件安装方便的一个版本。起初只是对它的名声吸引,然后再使用了一段时间后,确确实实被它所折服了。其实主要就是在软件的安装、数量上面,比Ubuntu之类要强得多。

笔记本型号

小米Pro 15.6” i7

Manjaro初识

依次尝试了KDE、XFCE、DEEPIIN,最终还是皈依在deepin版的manjaro下。总体的印象有3个:
0、刻录到U盘当做启动盘时的问题。根据官网推荐,选择使用Rufus刻录。
在这里插入图片描述
在使用Rufus刻录过程中,选择以DD镜像模式写入。当时我以第一种方式刻录,从U盘无法启动Manjaro。
在这里插入图片描述
1、安装的过程中,需要手动挂在esp分区为/boot/efi,如果不主动挂载,安装会有问题。
在这里插入图片描述
2、Xfce版安装到90%左右时,会卡死,表现为鼠标不动、键盘无输入,同样需要长按电源键关机。解决办法为在进入U盘启动的初始界面,drivers选项选择non-free
3、KDE版在锁屏界面选择关机,系统会卡死,需要长按电源键才能关机。

安装软件&设置

源设置

中科大源说明链接:http://mirrors.ustc.edu.cn/help/manjaro.html

1
2
sudo pacman-mirrors -i -c China -m rank
sudo pacman -Syy

安装yaourt

一个软件安装工具、与mac中的homebrew有点类似。
sudo pacman -S yaourt

更新源的配置: sudo nano /etc/pacman.conf。添加 CN 仓库(这里使用了 USTC 镜像),在上述文件末尾新增以下容:

1
2
3
[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

然后保存,同步

1
2
3
4
5
6
# 同步
sudo pacman -Syy
# 新增 CN 仓库的 Keyring
sudo pacman -S archlinuxcn-keyring`
# 更新
sudo pacman -Syu

为什么?: 导入 GPG Key,否则通过 Yaourt 安装软件会经常出错。
例子 : 如果不导入Key,yaourt安装lantern时会报错

安装google-chrome

yaourt -S google-chrome

安装SwitchyOmega

https://github.com/FelisCatus/SwitchyOmega/releases
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

shadowsocks

sudo pacman -S shadowsocks-qt5

vim

sudo pacman -S vim

CodeBlocks

sudo pacman -S codeblocks

Java配置环境变量

1
2
3
4
5
6
# sudo vim /etc/profile #编辑文件
# 在文件末尾处追加下列几行
export JAVA_HOME=/home/asahi/devtools/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

zsh

1
2
sudo pacman -S zsh
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

搜狗输入法

1
2
3
4
yaourt -S fcitx
yaourt -S fcitx-im # 安装fcitx 选择全部安装
yaourt -S fcitx-configtool # fcitx 配置界面
yaourt -S fcitx-sogoupinyin # 安装sogoupinyin

上述安装完成后,在.xprofile中添加如下脚本,然后重启,即可在部分应用中使用搜狗输入法。

1
2
3
4
5
sudo vim ~/.xprofile # 打开编辑.xprofile文件
# 在文件中加入以下两行代码
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

JetBrains全家桶

官网主页:http://www.jetbrains.com/products.html
破解教程:http://idea.lanyus.com/
如果在安装过程中,没有看见生成Desktop Entry的选项,那么可以在Tools中找到,如下:
在这里插入图片描述
也可以在打开IDE的最开始地方,选择Configure,如下:
在这里插入图片描述
再来一张全家福:
在这里插入图片描述

数据库相关工具

1
2
3
4
# Redis缓存查看IDE
yaourt -S redis-desktop-manager
# MySQL自带的IDE
yaourt -S mysql-workbench

如何让linux全局能够访问Google?

网上的解法很多,我感觉我找到了一种更加快速的办法:

  1. lantern
  2. 在Android手机中打开Shadowsocks,设置代理,然后使用USB共享网络给linux,此时整个linux都具备了自由访问的能力,这在安装软件,需要访问一些被Qiang的网站时,能发挥出意想不到的作用。值得尝试。

参考:
https://servernotfound.net/archlinux_note_2.html
https://linuxtoy.org/archives/archlinux-pkgbuild-aur-and-abs.html
http://www.cnblogs.com/bluestorm/p/5929478.html

Oracle安装&实用过程中遇到的问题

安装ORACLE 11G 出现:“[INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突” 的问题

参考了网上的一些教程,但是没有在C:\Program Files (x86)下面找到相关文件,但是却在C:\Program Files下找到了相关文件,可能与我之前安装。如下:
在这里插入图片描述
删除Oracle\Inventory\ContentsXML目录下的inventory.xml 文件即可。

Oracle中的分页查询

oracle中的分页没有mysql容易,mysql只需要实用limit关键字就行,oracle中需要使用隐含列rownum,来进行分页。其中rownum是指:符合要求的列数的序号,从1开始,即先进行了where语句后,赛选出来的行数。如下:

1
2
3
4
5
6
7
8
9
select * from (
SELECT rownum rn,
<include refid="Haylion_Column_List"/>
FROM
m_qr_offline_consume_reg_hay
WHERE
TRANS_DATE > to_date(#{date}, #{template}) and trans_date < (sysdate - 1 / (25 * 60) * #{delay})
)
where rn between #{startIdx} and #{endIdx}

Oracle查看版本

1
2
select * from v$version;
select * from product_component_version;

Oracle中基本概念

数据库名

什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下: DB_NAME=myorcl … 在 创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以 二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

数据库名的作用 数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。 有很多Oracle安装文件目录是与数据库名相关的,如: winnt: d:/oracle/product/10.1.0/oradata/DB_NAME/… Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/… pfile: winnt: d:/oracle/product/10.1.0/admin/DB_NAME/pfile/ini.ora Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora 跟踪文件目录: winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/… 另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。 同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。 如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。 还有在备份或恢复数据库时,都需要用到数据库名。 总之,数据库名很重要,要准确理解它的作用。

查询当前数据名 方法一:select name from v$database; 方法二:show parameter db 方法三:查看参数文件。

修改数据库名 前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:
1.关闭数据库。
2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
3.以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

数据库实例名

什么是数据库实例名? 数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。 数据库名和实例名可以相同也可以不同。 在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。这一点在第一篇中已有图例说明。

查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询。

数据库实例名与ORACLE_SID 虽 然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变 量。 ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台, ORACLE_SID还需存在于注册表中。 且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

数据库实例名与网络连接

数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明 。

数据库域名

什么是数据库域名? 在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。举例说明如: 全国交通运政系统的分布式数据库,其中: 福建节点: fj.jtyz 福建厦门节点: xm.fj.jtyz 江西: jx.jtyz 江西上饶:sr.jx.jtyz 这就是数据库域名。 数据库域名在存在于参数文件中,他的参数是db_domain.

查询数据库域名 方法一:select value from v$parameter where name = 'db_domain'; 方法二:show parameter domain 方法三:在参数文件中查询。

全局数据库名 全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz

数据库服务名

什么是数据库服务名? 从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。 如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

查询数据库服务名 方法一:select value from v$parameter where name = ‘service_name’; 方法二:show parameter service_name 方法三:在参数文件中查询。

数据库服务名与网络连接 从oracle8i开如的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名

Google搜索技巧集合

最为一个我们生活、工作中都离不开的一种搜索工具,其实它远比我们想象中的要强得多。所以就有了这一篇对搜索技巧的收集,也许暂时不会用上,需要的时候能想起来就是一件再好不过的事情。

在这里插入图片描述

完全匹配搜索关键字

在这里插入图片描述
在这里插入图片描述
对比效果显而易见:加上双引号,即为需要完全匹配;不加则为部分匹配。

排除关键字

在这里插入图片描述
在这里插入图片描述

在默认搜索下, 搜索引擎会反馈所有和查询词汇相关的结果, 如果通过OR 搜索, 可以得到和两个关键词分别相关的结果, 而不仅仅是和两个关键词都同时相关的结果.
在这里插入图片描述

同义词

加~

站内搜索

指定某个网站,在改网站类搜索关键字
在这里插入图片描述

模糊匹配

在这里插入图片描述

数值之间搜索

在这里插入图片描述

指定文件类型

下电子书的福音啊,感觉非常实用
在这里插入图片描述

相关网站

这个搜索命令并没有看太懂,先留坑。
在这里插入图片描述

inurl

指令用于搜索查询词出现在url 中的页面。
在这里插入图片描述

intitle

指令返回的是页面title 中包含关键词的页面。
在这里插入图片描述

参考链接:
https://daily.zhihu.com/story/1175
http://www.ecaa.ntu.edu.tw/weifang/cea/%E5%96%84%E7%94%A8GOOGLE.htm

使用SSH连接不能通过公网访问的机器

众所周知,如果给定一个公网IP,我们只需要接入互联网即可访问;那么如果我想访问不处于公网、且不在同一局域网下的机器,可以做到吗?可能直觉告诉我们,不行。但是这里想说的是,可以,且只需要一条ssh命令即可。场景通俗点描述为:A不能访问B,但是A能连接到外网,并且B也能访问外网,即A、B可以同时连接上公
阅读更多