VIM 命令

移动光标

命令 说明
h,j,k,l 上,下,左,右
ctrl-e 移动页面
ctrl-f 上翻一页
ctrl-b 下翻一页
ctrl-u 上翻半页
ctrl-d 下翻半页
w 跳到下一个字首,按标点或单词分割
W 跳到下一个字首,长跳,如end-of-line被认为是一个字
e 跳到下一个字尾
E 跳到下一个字尾,长跳
b 跳到上一个字
B 跳到上一个字,长跳
0 跳至行首,不管有无缩进,就是跳到第0个字符
^ 跳至行首的第一个字符
$ 跳至行尾
gg 跳至文首
G 调至文尾
5gg/5G 调至第5行
gd 跳至当前光标所在的变量的声明处
fx 在当前行中找x字符,找到了就跳转至
; 重复上一个f命令,而不用重复的输入fx
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找

锁粒度的控制

update数据库的时候,数据库控制并发的方式,基本分为2种:乐观锁、悲观锁。

悲观锁

锁记录我们一般的操作就是SELECT … FOR UPDATE,行级锁。这个SQL在读取完数据后,就能把这行数据锁住,防止其它SESSION对行数据进行修改。这就是我们所说的悲观锁。
为什么叫悲观锁呢,因为它会让其它SESSION阻塞,等待锁定行记录的那条SESSION将修改COMMIT掉后才能获得对行数据的操作资源。
我们通常不提倡用悲观锁,为什么呢?因为我们通常公司里的服务都是访问量挺高的,所以占用数据池资源是挺大的,如果用悲观锁,就会导致很多的资源阻塞而无法使用,这样我们的系统便会变得很慢,老是在等资源。
个人觉得悲观锁的使用场景得看业务和实际情况,如果这个模块本身访问量就很低,那就可以用悲观锁。

临时表和内存表

首先,临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间。因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表。创建临时表的语法与创建表语法类似,不同之处是增加关键字TEMPORARY。

1
CREATE TEMPORARY TABLE 表名 (…)

临时表

限制条件

临时表在memorymyisammerge或者innodb上使用,并且不支持mysql cluster
show tables语句不会列出临时表,在information_schema中也不存在临时表信息;show create table可以查看临时表。
不能使用rename来重命名临时表。但是可以alter table rename代替。

1
mysql>ALTER TABLE orig_name RENAME new_name;

可以复制临时表得到一个新的临时表。

1
mysql>create temporary table new_table select * from old_table;

但在同一个query语句中,相同的临时表只能出现一次。
正确

1
mysql> select * from temp_tb;

错误

1
2
3
mysql> select * from temp_tb, temp_tb as t;

ERROR 1137 (HY000): Can't reopen table: 'temp_tb'

同样相同临时表不能在存储函数中出现多次,如果在一个存储函数里,用不同的别名查找一个临时表多次,或者在这个存储函数里用不同的语句查找,都会出现这个错误。
但不同的临时表可以出现在同一个query语句中,如临时表temp_tb1, temp_tb2。

1
Mysql> select * from temp_tb1, temp_tb2;

临时表可以手动删除。

1
DROP TEMPORARY TABLE IF EXISTS temp_tb;

Python2切换Python3

Ubuntu自带python2,有时候需要使用pytho3。使用 update-alternatives

建立链接

1
sudo update-alternatives --install /usr/bin/python python /usr/local/lib/python2.7 100
1
sudo update-alternatives --install /usr/bin/python python /usr/local/lib/python3.2 150

如果要切换到Python2

1
sudo update-alternatives --config python

MySQL基本命令

表状态

SHOW TABLE STATUS LIKE 't_b_poc_notice_line%';

删除进程

1
2
3
select * from information_schema.innodb_trx 

kill 3511909

查看表锁

show OPEN TABLES where In_use > 0;

查看进程号

show processlist;

删除进程

kill 1085850;

Centos命令行图形界面切换

查看/etc/inittab如下

# systemd uses 'targets' instead of runlevels.   
# by default, there are two main targets:  
#
# multi-user.target: analogous to runlevel 3  
# graphical.target: analogous to runlevel 5  
#
# To view current default target, run:  
# systemctl get-default  
#  
# To set a default target, run:  
# systemctl set-default TARGET.target  

新版本的CentOS系统里使用targets取代了运行级别的概念。系统有两种默认的targets,多用户.target对应之前版本的3运行级别;而图形.target对应之前的5运行级别。

查看默认的target

systemctl get-default

开机以命令模式启动

systemctl set-default multi-user.target

开机以图形界面启动

systemctl set-default graphical.target

日语学习计划

学习常识

  1. 50音图。
  2. 随教材 最好跟班学,自学的话也要跟视频讲座学。
  3. 与此同时,背单词啊,看动漫 听听力啊 这些实践的。
  4. 有点实力了,就去一些日本的网站啊,看看明星博客啊,体育新闻,政经新闻啥的,锻炼锻炼。

自学步骤供参考

  1. 买一套自学教材。
  2. 备齐工具书(如词典、语法书等)。
  3. 先学每课单词,大声朗读。
  4. 再看每课后的语法、句型讲解并熟记、掌握。
  5. 大声朗读课文,注意新单词、语法在课文中的运用。
  6. 做一下每课配套练习。
  7. 遇到不明白问题上日语论坛提问。
  8. 坚持记单词、多读课文,多看看日剧或动漫影视。有兴趣的话找一位一同学日语的朋友,互相用日语简单会。

SDCard文件读写权限

<!-- SDCard中创建与删除文件权限 -->  
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
<!-- 向SDCard写入数据权限 -->  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

推荐算法初步学习

metric

介绍

Metrics Registries类似一个metrics容器,维护一个Map,可以是一个服务一个实例。支持五种metric类型:Gauges、Counters、Meters、Histograms和Timers。
git:https://github.com/dropwizard/metrics

Gauges

Gauges是一个最简单的计量,一般用来统计瞬时状态的数据信息,比如系统中处于pending状态的job

Meters

Meters用来度量某个时间段的平均处理次数(request per second),每1、5、15分钟的TPS。比如一个service的请求数,通过metrics.meter()实例化一个Meter之后,然后通过 meter.mark()方法就能将本次请求记录下来。统计结果有总的请求数,平均每秒的请求数,以及最近的1、5、15分钟的平均TPS。

Histograms

Histograms主要使用来统计数据的分布情况,最大值、最小值、平均值、中位数,百分比(75%、90%、95%、98%、99%和99.9%)。例如,需要统计某个页面的请求响应时间分布情况,可以使用该种类型的Metrics进行统计。

Timers

Timers主要是用来统计某一块代码段的执行时间以及其分布情况,具体是基于Histograms和Meters来实现的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×