PyCharm自定义文件模板和代码模板

PyCharm支持配置自定义文件模板和代码模板,配置后每次新建文件均会自动填充模板内容,如:作者信息等。
code.png
设置路径
“PyCharm”→“File”→“Settings”→“Editor”→“File and Code Templates”→选择一个你想要设置的→输入模板配置→“确定”
2.png
所有文件都可以设置模板,附常用模板变量:

变量    含义
${PROJECT_NAME}    当前模板名称
${NAME}    文件创建时的文件名
${USER}    当前用户名
${DATE}    当前系统日期
${TIME}    当前系统时间
${YEAR}    年
${MONTH}    月
${DAY}    日
${HOUR}    小时
${MINUTE}    分钟
${PRODUCT_NAME}    创建文件IDE的名称
${MONTH_NAME_SHORT}    英文月份缩写, 如: Jan, Feb, etc
${MONTH_NAME_FULL}    英文月份全称, 如: January, February, etc

PyCharm使用autopep8格式化Python代码

PEP 8介绍:
PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性。
官网地址:https://www.python.org/dev/peps/pep-0008/

Autopep8
Autopep8是自动将Python代码格式化为符合PEP 8风格的工具。它使用pycodestyle工具来确定代码的哪些部分需要被格式化。Autopep8能够修复大部分pycodestyle检测的格式问题。
github地址:https://github.com/hhatto/autopep8

使用pip安装Autopep8

pip install autopep8

查找autopep8的安装路径:

where autopep8
C:\Users\mahl01\.virtualenvs\python-project-APBqVzYh\Scripts\autopep8.exe

Autopep8命令行使用方式如下

autopep8 --in-place --aggressive --aggressive <filename>

Pycharm配置Autopep8方法:
1、选择菜单「File」–>「Settings」–>「Tools」–>「External Tools」–>点击加号添加工具
1.png
2、填写如下配置项,点击「OK」保存
2.png

Name:Autopep8 (可随意填写)

Tools settings:

    Programs:C:\Users\mahl01\.virtualenvs\python-project-APBqVzYh\Scripts\autopep8.exe 

    Parameters:--in-place --aggressive --ignore=E123,E133,E50 $FilePath$

    Working directory:$ProjectFileDir$

3、选择菜单「Tool」–>「Extern Tools」–>「Autopep8」即可使用autopep8自动格式化python代码了。
3.png
black的安装设置方法和Autopep8一致。

PyCharm修改格式化代码快捷键

安装Pycharm以后保存代码的时候并不会自动格式化代码,默认格式化代码的快捷键是CTRL+ALT+L比较麻烦,更改为Alt+F键,操作方法步骤如下:

1、File-Settings--keymap

2、找到需要修改的功能

3、鼠标右键选择——选择“add keyboard shortcut”

4、直接按需要设置的快捷键位,如ALT+F

5、最后应用即可,如下图:
format.png

实际go的fmt挺好用的,自动格式化。

go build 和 go install 的区别

首先,go install与go build都可生成执行文件,
go build
通过go build加上要编译的Go源文件名,可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉,生成可执行的文件放在当前目录中。

$ go build  hellogo.go
$ ls
hellogo* hellogo.go

也可以通过-o选项来指定其他名字:

$ go build -o myfirstgo hellogo.go
$ ls
myfirstgo* hellogo.go

如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件:

$ go build
$ ls
go-examples* hellogo.go

go install
与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。
go install编译出的可执行文件以其所在目录名(DIR)命名
go install将可执行文件安装到与src同级别的bin目录下,bin目录由go install自动创建
go install 还会把导入的依赖包编译到 $GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。
go build 命令加参数 -i 也能达到go install 的效果。
如项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分使用它对依赖包的缓存功能。

安装Gin框架protobuf包的问题记录

运行gin框架报错如下:

package google.golang.org/protobuf/encoding/protojson: unrecognized import path "google.golang.org/protobuf/encoding/protojson"(https fetch: Get https://google.golang.org/protobuf/encoding/protojson?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
package google.golang.org/protobuf/encoding/prototext: unrecognized import path "google.golang.org/protobuf/encoding/prototext"(https fetch: Get https://google.golang.org/protobuf/encoding/prototext?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

缺少protobuf/encoding包引起的报错,代码已经转移到github上面了,但代码里面的包依赖还是没有修改,是google.golang.org这种,被墙后不能用go get形式安装。

---阅读剩余部分---

go get golang.org/x 包失败的解决方法

由于GFW限制问题,国内使用 go get 安装 golang 官方包可能会失败,如我自己在安装 collidermain 时,出现了以下报错:

$ go get collidermain
package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

其他包也有类似直接不成功的问题,不翻墙的情况下怎么解决这个问题?其实 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库
获取 golang.org/x/net 包,其实只需要以下步骤:

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git

其它 golang.org/x 下的包获取皆可使用该方法解决。

CentOS7中文目录换成英文目录

安装中文版的CentOS7之后,root目录和home目录下会出现中文的路径名,如“桌面”、“文档”、“图片”、“公共的”、“下载”、“音乐”、“视频”等目录,转换方法如下:
修改/etc/locale.conf文件内容如下:

cat /etc/locale.conf
LANG="en_US.UTF-8"

---阅读剩余部分---

Oracle修改SGA后无法启动解决方法

Oracle修改SGA超过系统内存后,会造成启动失败,解决方法如下:

1、登录oracle 
sqlplus sys/sys@XXX(网络服务名). as sysdba 
能够登陆 
提示已经连接到空闲例程;

2、找 pfile,在 /.../admin/XXX(服务名)/pfile 下,init.ora.XXXXXXX(数字串) 

3、执行命令 
SQL> startup pfile='pfile 路径' 
通过指定的 pfile 启动数据库实例 

4、执行命令 
SQL> create spfile from pfile='pfile 路径';(一定要有分号!) 
创建成功会提示: 文件已创建。 

5、查看SGA
show parameter sga

已经SGA恢复了调整之前的配置,在此根据系统实际内存修改大小即可。

ORA-27102: out of memory 故障处理

ORA-27102: out of memory一般发生在服务器系统配置变更以后,oracle在启动的时候报错,

SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

系统实际可用内存还剩几十个GB,这个问题在linux到64位中比较常见,当SGA的值大于共享内存就会报这个错;
解决方法:
--MetaLink上给出了关于这个问题的描述 [ID 301830.1]
--是由于kernel.shmall值设置太小引起的

kernel.shmall
  该参数用于配置系统一次能够使用的最大的共享页面数,该参数的值总是ceil(shmmax/PAGE_SIZE)
Oracle 9i,10g,11g的x86以及x86-64平台推荐以及缺省的大小通常为2097152
在大多数情况下,该参数是够用的。按照上述计算方式页面内存总大小可以达到8GB(2097152*4096 bytes (shmall*PAGE_SIZE))

  通常情况下,PAGE_SIZE 的大小为4096byte,除非使用了Big Pages 或 Huge Pages
对于超出8GB系统内存,如共享内存段(shmmax)的最大大小是16G,则所需要共享内存页数(shmall)为16GB/4KB=16777216KB/4KB=4194304(页)

  共享内存在shmall这个参数中设置,shmall单位为页,换算成内存大小还需要把两个值相乘,如shmall=8388608,那么共享内存的大小就是(8388608*4096)/(1024*1024*1024)=32G
其他依次类推;



---阅读剩余部分---

Oracle查看系统运行情况常用SQL

1、查看系统当前连接会话数

select s.value,s.sid,a.username
from 
v$sesstat S,v$statname N,v$session A
where 
n.statistic#=s.statistic# and
name='session pga memory'
and s.sid=a.sid
order by s.value;

2、等待最多的用户

SELECT s.SID, s.username, SUM (a.wait_time + a.time_waited) total_wait_time
    FROM v$active_session_history a, v$session s
   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
GROUP BY s.SID, s.username
ORDER BY total_wait_time DESC;

---阅读剩余部分---

MySQL 8.0.21重置root密码

MySQL 8.0.21忘记密码的时候重置密码方法基本和MySQL5.7方法一样,重置方法如下:
1、先修改my.cnf文件在[mysqld]部分增加skip-grant-tables参数。
2、重启mysql服务
3、直接使免密码登录mysql,使用下面命令修改root密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;

顺序不能乱喔,要么会报ERROR 1290 (HY000)错误。

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

VIA官网文档:
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

ORA-00257报错处理

用户反映NC测试库不能连接,报ORA-00257错误,截图如下:
ORA-00257.png
错误原因是很常见的‘归档日志’写满‘快闪恢复区’(flash recovery area)导致的问题。解决方法如下:
一、删除过期的归档文件;
二、修改快闪恢复区(flash recovery area)的大小;





---阅读剩余部分---

MySQL8.0.21连接报错Plugin caching_sha2_password could not be loaded解决方法

MySQL8默认加密使用的是caching_sha2_password插件,

root@devops_db 17:54:  [mysql]> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)

root@devops_db 17:55:  [mysql]>  select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | ice              | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

使用SQL客户端连接的时候就会报Plugin caching_sha2_password could not be loaded错误,常见有如下解决方法:
1、写入my.cnf文件后重启MySQL:

[mysqld]
default_authentication_plugin=mysql_native_password

2、兼容新老版本的认证方式:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; #更新用户密码 
FLUSH PRIVILEGES; #刷新权限

3、创建用户时指定加密方式:

CREATE USER 'ice'@'10.10.%' IDENTIFIED WITH mysql_native_password BY 'password'; #加密方式为
GRANT ALL privileges on TESTDB.* to 'ice'@'10.10.%' with grant option;
FLUSH PRIVILEGES;

使用mysql_native_password插件加密即可链接,mysql_native_password也是5.7以下版本使用的加密方式。

CentOS7.8编译安装MySQL8.0.21

  Centos7.8安装的是minimal最小化版本,首先安装基础必需的软件包及更新下系统:

yum install gcc gcc-c++ gcc-g77 make autoconf automake ncurses ncurses-devel openssl openssl-devel bison cmake cmake3 -y

MySQL8.0需要用gcc的版本为 4.8以上,CentOS自带的版本比较低,通过yum安装的版本也低,参考下面升级GCC版本

升级GCC版本参考:https://mhl.xyz/Linux/update-gcc.html

MySQL8.0.21.png

添加mysql运行账号及数据保存目录

groupadd mysql
useradd -g mysql mysql -s /bin/false
mkdir -p /data/mysql/
mkdir -p /data/mysql_logs/binlog/
touch /data/mysql_logs/error.log
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /data/mysql_logs/

---阅读剩余部分---

lsof查看文件归属进程占用信息

lsof: list open files
可以列出被进程所打开的文件的信息。被打开的文件可以是
1.普通文件
2.目录
3.网络文件系统的文件
4.字符设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在linux里面,大部分的东西都是被当做文件的…
lsof常用使用说明:

1.列出所有打开的文件:

lsof

备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

2. 查看谁正在使用某个文件

lsof   /filepath/file

3.递归查看某个目录的文件信息

lsof +D /filepath/filepath2/

备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法

lsof | grep ‘/filepath/filepath2/’

5. 列出某个用户打开的文件信息

lsof  -u username

备注: -u 选项,u其实是user的缩写

6. 列出某个程序所打开的文件信息

lsof -c mysql

备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了

7. 列出多个程序多打开的文件信息

lsof -c mysql -c apache

8. 列出某个用户以及某个程序所打开的文件信息

lsof -u test -c mysql

9. 列出除了某个用户外的被打开的文件信息

lsof   -u ^root

备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

10. 通过某个进程号显示该进行打开的文件

lsof -p 1

11. 列出多个进程号对应的文件信息

lsof -p 123,456,789

12. 列出除了某个进程号,其他进程号所打开的文件信息

lsof -p ^1

13 . 列出所有的网络连接

lsof -i

14. 列出所有tcp 网络连接信息

lsof  -i tcp

15. 列出所有udp网络连接信息

lsof  -i udp

16. 列出谁在使用某个端口

lsof -i :3306

17. 列出谁在使用某个特定的udp端口

lsof -i udp:55

特定的tcp端口

lsof -i tcp:80

18. 列出某个用户的所有活跃的网络端口

lsof  -a -u test -i

19. 列出所有网络文件系统

lsof -N

20.域名socket文件

lsof -u

21.某个用户组所打开的文件信息

lsof -g 5555

22. 根据文件描述列出对应的文件信息

lsof -d description(like 2)

23.根据文件描述范围列出文件信息

lsof -d 2-3

24. 列出COMMAND列中包含字符串" sshd",且文件描符的类型为txt的文件信息
lsof -c sshd -a -d txt

25.列出被进程号为1234的进程所打开的所有IPV4 network files
lsof -i 4 -a -p 1234

26. 列出目前连接主机peida.linux上端口为:20,21,22,25,53,80相关的所有文件信息,且每隔3秒不断的执行
lsof -i @peida.linux:20,21,22,25,53,80 -r 3

CentOS 7 清除系统日志

history:

# echo > .bash_history //清除保存的用户操作历史记录
# history -cw //清除所有历史

设置不保存history:修改/etc/profile将HISTSIZE=1000改成0或1

echo > /var/log/wtmp //清除用户登录记录
echo > /var/log/btmp //清除尝试登录记录
echo > /var/log/lastlog //清除最近登录信息
echo > /var/log/secure //登录信息
echo > /var/log/messages
echo > /var/log/syslog //记录系统日志的服务
echo > /var/log/xferlog
echo > /var/log/auth.log
echo > /var/log/user.log
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/mail.info
echo > /var/run/utmp

释放内存缓存
内存缓存分 Page Cache 和 Buffer Cache。前者从硬盘读取的文件缓存,譬如 find 查找文件首次速度慢,而后就变快了。后者是 slab 分配器中的对象(Dentry 缓存、Inode 缓存)。为避免清除缓存引发可能的内存 Buffer 数据丢失,清除前先运行 sync 命令使数据写到硬盘。
同时清除两种类型缓存。如要选择性清除替换其中数字,1 表示 Page Cache,2表示 Buffer Cache。

sync && echo 3 > /proc/sys/vm/drop_caches

用 free -h 命令检查运行前后的内存 buff/cache 用量,available 表示剩余可用容量。
可以 crontab -e 添加定时释放内存缓存任务。例如每天凌晨 4 点运行一次。

0 4 * * * sync && echo 3 > /proc/sys/vm/drop_caches

expdp/impdp/rman会话进度查看

oracle11g使用DBA_DATAPUBMP_JOBS和DBA_DATAPUMP_SESSIONS视图来显示数据泵取作业的信息,
查看expdp进度:

select * from DBA_DATAPUBMP_JOBS;
select * from DBA_DATAPUMP_SESSIONS;
select sid,serial# from v$session s,dba_datapump_sessions d where s.saddr=d.saddr;

查看impdp进度:

SELECT   a.tablespace_name,
         ROUND (a.total_size) "total_size(MB)",
         ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",
         ROUND (b.free_size, 3) "free_size(MB)",
         ROUND (b.free_size / total_size * 100, 2) || '%' free_rate
  FROM   (  SELECT   tablespace_name, SUM (bytes) / 1024 / 1024 total_size
              FROM   dba_data_files
          GROUP BY   tablespace_name) a,
         (  SELECT   tablespace_name, SUM (bytes) / 1024 / 1024 free_size
              FROM   dba_free_space
          GROUP BY   tablespace_name) b
 WHERE   a.tablespace_name = b.tablespace_name(+);

查看RMAN备份进度:

SELECT SID,OPNAME, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
order by "%_COMPLETE"
desc

最新

分类

归档

评论

其它