git相关

2021-03-30 00:00:00 +0000

概述

其实git的基本用法已经掌握,但是目前未参与过正规的大型项目开发。对于其中的一些git命令不是特别了解,比如git tag命令,我们一般不打tag。比如git rebasegit revert区别。

关于删除git rm

我们新建一个项目之后,一般会添加一个.gitignore的文件,忽略不被追踪的文件和文件夹。然后执行git init。或者在远程仓库建立一个project,pull到本地,然后初始化代码。

问题是,我们用IDE产生的一些本机配置文件,不应该被追踪,如果我们已经git addgit commit将这些本机配置加入追踪了。那么如何删除呢?或者我们做web项目,一般有个target/文件夹,假如别人已经加入追踪了,如何删除呢?
其实挺简单,普通的删除,如果使用linux命令的话是rm a.txt,对应的git命令就是git rm --cached *.iml,删除目录对应的就是git rm -r .idea/--cached的作用是,只删除暂存区,不删除工作区,如果不带这个参数,则表示都删除。 工作区表示没有git add的存储区域,暂存区表示已经git add的存储区域

关于 git diff

git diff用于查看还未commit的改动,如果我们使用IDE开发软件,其实IDEA的Version Control功能很好用,用不到这个命令。如果在服务器上改动代码,或者在无IDE的机器上用编译器写代码,这个命令就很好用了。

# 查看工作区与暂存区的差别(这里只显示未被执行`git add`的文件)
git diff
# 查看暂存区与版本库的差别(这里只显示已经被执行`git add`的文件)
git diff --cached
# 查看工作区与版本库的差别(这里只显示未被执行`git commit`的文件)
git diff HEAD
# 查看工作区与版本库的差别,只显示改动的文件名,不加`--stat`表示显示明细
git diff HEAD --stat
# 只查看一个文件,工作区与版本库的差别
git diff HEAD -- src/main/java/com/jiler/utils/MyDateUtils.java

还可以用于对比两个分支的差距。

# 以master为基准,看dev做了哪些修改,
git diff master dev
# 以master为基准,看dev修改了哪些文件
git diff master dev --stat
# 以master为基准,看dev的MyDateUtils文件修改了啥
git diff master dev src/main/java/com/jiler/utils/MyDateUtils.java

撤销修改

如果修改的代码还未执行git add,则用如下命令可以撤销工作区的改动。相当于删掉修改的代码。

git checkout -- src/main/java/com/jiler/utils/MyDateUtils.java

如果修改的代码已经执行git add,还未执行git commit,则用如下命令可以撤销缓存区的改动,把改动放回工作区。不会删除对代码的改动,如果要想删除修改的代码,可以继续执行上述命令。

git reset HEAD src/main/java/com/jiler/utils/MyDateUtils.java

git stash

正在开发,有的文件已经被add 有的文件没被add,甚至有的文件还没被track。这时候出线上bug了,就需要用到这个命令了。

# 查看stash栈中的列表
git stash list
# 将已经被track的文件改动暂时保存到栈顶
git stash
# `-u`表示没有被track的文件也会被stash起来
git stash -u
# 释放最顶层的栈元素。还有个命令`git stash apply`只应用代码改动,不删除栈顶元素。没想到场景,就不解释了
git stash pop
# 丢弃最顶层的栈元素
git stash drop
# 使用标号`stash@{0}`,直接使用栈的某个元素
git stash apply stash@{0}

不太常用

不太常用,但是很有用的命令如下

# 生成公钥私钥
ssh-keygen -t rsa -C "jilerwu@icloud.com"
# 配置git全局
git config --global user.name "wujunpeng"
git config --global user.email "jilerwu@icloud.com"
# 从远程拉取本地不存在的分支
git fetch origin wjpdev:wjpdev
# 删除远程分支关联(-D表示强制删除)
git branch -d -r origin/branch-name 
# 打印git提交日志,每个commit一行
git log --pretty=oneline
# 以图的形式展示merge日志
git log --graph --pretty=oneline
# 直接跳转到某个commit的位置(--hard表示丢弃修改)
git reset --hard 7f96eb88dc
# 直接跳转到某个commit的位置(--soft表示保留所有修改)
git reset --soft 7f96eb88dc
# 快捷跳转到上一个提交
git reset --hard HEAD^
# 撤销某一个commit内容,与reset的区别是revert是用一次新的commit去抵消之前的代码修改
git revert 7f96eb88dc
# 本次仓库与远程同名参考建立联系(适用于本地先创建,远程后创建仓库)
git remote add origin git@github.com:jiler/jiler.github.io.git
# add origin 后第一次应该使用如下命令推送master到远程
git push -u origin master
# 查看关联名
git remote -v
# 删除关联 origin
git remote rm origin
# 查看执行命令的历史
git reflog

关于git tag

用于跟某个commit绑定,容易查找代码。比如可以用tag表示版本信息。

# 切换到对应分支,然后给当前commit打标签version1.0,可以给一个commit打两个标签
git tag version1.0
# 给指定commit打标签,用-a指定标签名,-m指定说明文字。
git tag -a version1.0 -m "打版本1.0的标签" e7c1fbedcdfd
# 把标签推送到远程,如果不推送到远程,默认都是在本地
git push origin version1.0
# 把所有标签都推送到远程
git push origin --tags
# 删除本地标签
git tag -d version1.0
# 删除远程标签(允许不删除本地,直接删除远程标签)
git push origin :refs/tags/version1.0

关于git rebase

之前从没关注过这个功能,其实就是为了好看。就是为了把commit日志换成一条直线,详细描述详见git教程

用我自己的话叙述就是:master分支,你checkout一个dev,然后其他人这时候往master合并代码。这时候你如果使用git rebase origin/master命令的话,相当于把你的dev以当前master作为基准,在此基础之上commit信息。当然,有冲突就解决冲突。解决冲突后,用git add .git rebase --continue合并,或者用git rebase --abort放弃干脆用merge命令重来。

todo wujunpeng 明天测试一下,两个分支commit时间对于当前master作为基准这句话是否有影响。

如果没有强制要求,我不会选择git rebase dev代替git merge dev,因为会造成一些问题。

比如另外一个RD,开发了一个小功能,属于锦上添花的,合并到了master。他合并之前,你已经checkout了自己开发分支wjp-dev,如果不用git pull origin master或者git merge origin/master,而是使用git rebase origin/master,这时候你的代码就永远混入了别人的代码,你永远找不到rebase操作之前的代码了。大家使用rebase命令的前提是:共同写代码的同事能力还不错。可是一旦这个人锦上添花的小功能出bug,而又不能及时修复,而你开发的功能比较重要,不能下线,这时候很难受的。也就是说,虽然跟你合作的同事,代码已经合并到master,但是这个人是不完全被信任的,工作中是一定会遇到这种情况的。

mysq相关

2021-03-25 00:00:00 +0000

索引

Innodb下有且只有一个聚簇索引,默认是主键,如果没有主键,则会选择一个唯一且非空的索引代替。如果还没有,则自动创建隐式的主键。如果不想让主键做聚簇索引,首先要删除主键,然后创建添加聚簇索引,最后再恢复主键才行。

聚簇索引:数据与索引放在一起,索引结构的叶子节点存放了行数据。 非聚簇索引:数据和索引分开存放,索引结构的叶子节点指向了存放数据的位置。

在聚簇索引的基础上建立的索引都是辅助索引,非聚簇索引都是辅助索引,比如:联合索引、前缀索引、唯一索引。比如如果按照名称搜索几条记录:首先会在辅助索引上找到记录的位置(聚簇索引),再根据聚簇索引找到数据记录。这个过程叫回表。

覆盖索引:索引值与要查的列一样,则不用会表。举例子,一个表abcdefg7个字段,在bc上建立联合索引。当执行如下sql时,不用回表(因为非聚簇索引中已经有了用户所要的数据,就不用回表了)

select b, c from table b = 1 and c = 2;

联合索引:注意最左匹配原则,遇到范围查询(> < between and),则停止匹配。比如一个表在a、b两个字段建立一个联合索引,当where条件是where a > 1 and b = 2 ,则b不会使用索引。当where条件是where a = 1 order by b desc ,则b不会使用索引,因为索引默认是升序。

前缀索引:一般在字符串上建立索引时,建议用前缀索引。尤其是当字符串的前面若干自己区分度比较大的时候。在整个字段上建立索引要消耗很多空间;而只在前几个字符上建立索引,则消耗空间较少。但是,比如所有中国人的地址,不要用前缀索引,13亿人,一共就34个省市区直辖市,区分度太小了。可以倒序存储地址字符串,以增大区分度。当然,13亿的数据,不能用mysql存储了。中国人的姓名也不要用前缀索引,因为太短了,没意义,重名也很多。

注:最左匹配原则,与where里字段出现顺序无关。
比如 abc三个字段上建立联合索引,"where a = 1 and b = 2 and c = 3"与"where c = 3 and b = 2 and a = 1"都是能用到索引的

mysql规范

单实例:qps(每秒处理请求)安全性是5000,tps(每秒处理事务)安全性是3000。

  1. 必须全部小写,windows不区分,linux默认区分。
  2. 引擎:InnoDB,字符集:utf8mb4
  3. 索引不超过5个
  4. 索引命名:唯一索引(uniq_字段名),普通索引用(idx_字段名),联合索引用(idx_字段1_字段2)

如何查看和设置mysql的隔离级别

其实最主要想记录一下myql查看事务隔离级别的操作,搜了一下,有相关文章,记录一下。

查看

查看当前会话的隔离级别:select @@tx_isolation;
查看全局的隔离级别:select @@global.tx_isolation;
mysql默认的隔离基本是可重复读 REPEATABLE-READ

设置

设置当前会话的隔离级别:

set session transacton isolation level read uncommitted;
set session transacton isolation level read committed;
set session transacton isolation level repeatable read;
set session transacton isolation level serializable;

设置当前会话的隔离级别:

set global transacton isolation level read uncommitted;
set global transacton isolation level read committed;
set global transacton isolation level repeatable read;
set global transacton isolation level serializable;

宁静过后的宁静

2020-10-27 00:00:00 +0000

题目为啥叫“宁静过后的宁静”呢?本来想叫“喧嚣过后的宁静”,可是,一路上安安静静,没有喧嚣。喧嚣是一群人的孤独,宁静是一个人的狂欢。路上宁静,回来后依然宁静。只是在路上,所闻所见、所思所想与平时有点不同,遇见一些人、听到一些故事、思考一些事儿,就想记录下来。

最近三年,十一没回家,有同学结婚,顺道出门玩儿。第一年去温州、商丘。第二年去哈尔滨、丹东。今年去烟台、南京。

同学家在烟台,本来打算从青岛过去,交通相对还方便一些。十一之前青岛发现两个新冠阳性,保险起见,改从烟台走。1号是国庆节也是中秋节,那天微博的文案也太他么烦人了:国庆和中秋都在一起了,而你还是单身。2-3号两天值班,本来1号也应该值班,牛逼的杰哥(本来我没想在这里提志杰,原话是:有个小兄弟。。可是志杰看了不乐意,我就改了,哈哈哈)没回家,也想值班,我也不太想值班,正好就让出去了。不过3倍工资还是很有诱惑的,说白了就是:钱给到位了,人就愿意来了。4号同学结婚,说实在的,值班后大半夜去坐飞机,然后再倒班车,时间也比较紧张,是挺折腾的,因为是好朋友,所以也不觉得累,愿意去。

婚礼是4号,就想着同学婚礼结束后去哪里,那就去南京吧。为什么是南京呢?2018年温州同学婚礼结束,如果去商丘,那么回北京也不方便,想去南京。南京有啥呢,有牛首山。为什么喜欢牛首山呢,其实是看一篇高考满分文章《小重山后的选择》,提到岳飞曾经在牛首山打过仗,文章写得不错,就想去看看。至于国民政府的旧址,我是不稀罕的。看民国文化,感觉还是去上海。最近的电影《八佰》,租借与四行仓库仅仅隔着一条河,却像阴阳相隔的两个世界。走走那些路,想想那些人。当然更喜欢去苏轼的各种故居,因为苏轼是一个豁达的才子。可我这个人吧,比较懒,懒得出门,还得买票、查车,太复杂了。但是只要开头走出门了,也就不懒了,当然我也不会提前做规划,随心游玩儿就行。这次去南京、从南京回去也都比较方便,那等婚礼结束就去南京吧。

值班两天,无事。晚上8点下班去机场,准备去蓬莱。从进地铁开始,一路上N95口罩未摘。到了机场,过了疫情期间流程的各种检测,就可以换登机牌了。可是怎么也找不到那个位置,看了看买的是国航,实际乘坐是山东航空,问到了换登机牌的具体位置,就准备过去。背了两个书包,不是特别方便,看了看订票信息,手机没锁屏,拿着身份证就去排队。结果就是这个不锁屏的不良习惯,给我吓一身汗。找到换登机牌的地方之后,看了一眼手机,结果显示“已退款”那个界面,退了20块钱。

backMoneyPic

我的妈呀,难道是我没锁屏,期间拿钱包,找身份证,误操作退票了?哎呦我去,赶紧看一下还能不能买机票,显示还有票,打算下单。忽然感觉有点不对劲,又回订单详情页看了看。订单还在啊,但是确实显示了退款进度是“退款完成”,不过竟然还能操作“改签”,这什么鬼,可是实实在在的写着退款进度啊。

backMoneyMainPic

我忽然想起来,我买的那个是员工票,然后买完票之后若干天,我团给我发短信,说是找到了更便宜的票,给我退了20块钱差价,跟退钱信息的20块钱吻合。再看一眼退款时间,确实是前几天的事儿。哦哦哦,原来我没有误操作,妈的,吓死我了。以后一定要锁屏啊,防止误操作。我团也是,退钱就退呗,给我提示了个”退款进度”。

取完登机牌,进入等候大厅,无聊的看飞机,其实早就看烦了,我爸住院的那段时间,就是在这个机场附近。然后到蓬莱市住一晚,从蓬莱到海阳坐客车过去。蓬莱的住宿,同学给安排好了,从机场打车过去,实在是麻烦人家了。有时候想想,一定要去参加婚礼吗?嗯嗯,相比这些麻烦,还是要参加婚礼的,毕竟关系确实好。当初上大学的时候,翠苹劝过我一些事儿,我也听从了意见,也一直感激。后来有一天跟惠玲聊天的时候,提到翠苹,那时候我还在读研,翠苹她们工作了,我还专门去看过她一次。好吧,既然人家给订好了住宿,那就欣然接受吧。打车过去,司机师傅也是蓬莱市里的人,聊了一路。问我是哪里人,来山东去哪里逛。我说河北人,来山东是去海阳,大学同学结婚,大学在哈尔滨。没想到司机大哥当初是在哈尔滨当兵,之后退伍回蓬莱了。大哥比我大不了几岁,小时候是看《古惑仔》长大的,深受荼毒。再后来出去当兵,跟那些类似于不务正业的朋友关系也就淡了,现在有个女儿,都9岁了。提到结婚,他讲了讲他们家,我讲了讲我们家。最后,路费还给我打折,挺愉快的。

到了预定的宾馆,办理入住,给老板要了个打火机,冲了冲脚丫子,没洗澡就赶紧睡觉去了。2点睡,6点半起,起床赶紧洗澡,下楼都7点多了。我洗澡慢,一般不急的话需要40分钟起步。同学都给我买好车票了,真的是觉得不好意思。取票、买早餐、等车、出发去海阳。值的一提的是,汽车站的包子特别好吃,素馅的是荠菜,想到了当初初中的时候,老师带我们“赏析作者用词”时说:漫不经心地用筷子挑上几根荠菜,这个“挑”字用得好,写出了孩子们“愿意给作者面子,但又不愿意吃,对荠菜嫌弃”的样子。想到这里,我就又把原文看了一遍。好文章啊,其实我们初中和高中学习过很多好文章,只是当时太小只顾着玩儿,不理解,而长大后又没复习,觉得有点可惜了。说多了,说多了。

海阳这个地方吧,之前是知道的,电视剧《大秧歌》讲的就是发生在海阳的故事。里面有个反派角色叫吴江海,是县保安队队长,巴结上司时说:我县长哥哥如何如何,哈哈哈,特别逗。电视剧说的那个地方叫虎头湾,拍摄的那个地方,有个牌坊,还有个海神娘娘庙,庙的背后就是大海,村里都是渔民。挺喜欢那个电视剧,也喜欢那个海神娘娘庙。本来打算去看看的,后来决定去南京后,就肯定没空了。

一路上山山水水的,也挺开心、挺放松。早就听说烟台的苹果好,如今看到到处的果树,觉得真是闻名不如见面。但是怎么感觉跟我们那里的苹果园不一样,对,他们没有护栏,没有围墙。难道不怕有人偷吗?想了想,其实这里的苹果树,跟我们村的棉花是一样,家家户户都有,就算是丢,丢的数量也有限。如果围起来,可能不太划算,尤其是山地和丘陵,不像我们家的大平原,围起来也方便。要不是急着去赶徐大小姐的婚礼,我真想停下来,去摘苹果。不偷,哈哈哈,我的工资比农民还是要高的,我再偷人家东西,就太过分了。就想着如果有空就帮他们干活,不要工钱,只要吃苹果管够、管住宿就行。如果给工钱那我就换算成苹果,寄给好朋友。路过一个镇,看到了镇上居民在自家门口存放苹果的容器,跟在我们家那边放玉米的容器差不多,中国农村都一样啊。看到一个头发白、年纪大的老太太,特比像我姨,中国的老百姓也差不多。公路上客车肯定不停,中间就停一次,是在中途的一个小汽车站,让大家上个厕所。哎,真的是想下车摘苹果,可是始终只是停留在想想这个阶段,不可能真下车啊。昨天晚上也没睡够,路上迷迷糊糊的睡了一会儿,大部分时间都在看窗外风景,快到的时候,看到了风力发电的风车,想到了翠苹当初说她们的高中。我在高中课本上也见过风车,这是第一次见实物,还是挺羡慕她的。到县城后,翠苹安排了一个车去县城接我,类似于军车那种迷彩风格的越野,我自己,特别宽敞。

婚礼在镇上,到了都快11点了,看见酒楼外面有人在说话,带着婚礼亲属的花,花上写的是翠苹的姨,都不认识,也就没打招呼就上楼了。看到了礼堂入口放的结婚照,进去之后一眼就看到新郎在等待婚礼开始,新郎叫郝崇然。然哥也是大学同一级的同学,不是一个专业,之前都没见过面,只看过照片。毕竟不是特别熟悉,寒暄几句婚礼就开始了。新娘子很漂亮呀,只是礼堂的灯光有些暗,我的拍照又没有水平,只是能把图展示出来。拍的不好,也不敢多放出来太多,怕给新郎新娘抹黑。但是毕竟是好朋友,所以该放还是要放,毕竟人还是很漂亮的。新娘子像不像陈妍希,哈哈哈。

xuyanxi

他们的婚礼跟我们家的风俗还是有点区别,听说他们接亲后是去拍婚礼外景,我到的太迟了,只赶上了室内的典礼。翠苹交代自己同学招待我,哈哈哈,我是个成年人,哪里需要什么招待啊。不过翠苹的同学还真是招待了,因为人家婚宴有螃蟹,我确实不会吃螃蟹,小师傅教的很好,一会儿我就吃了两个。要知道,去年在哈尔滨老师家吃螃蟹,吃了3-4个小时,我才吃了3个螃蟹。结婚典礼礼成,新人可以吃一点饭,然后开始挨桌敬酒。要是根据我们家的风俗,新人根本没空吃,就要挨个敬酒,最后才能吃上饭。敬酒完毕,他俩回到同学这一桌,聊聊天,调侃一下我们这些单身的,哈哈哈。婚宴也给力哥准备位置了,力哥临时有事没来,要不然我肯定能把调侃的对象指向力哥,哈哈哈。婚宴那些菜很硬,估计也是一桌没有3000下不来吧。我们家一般也就300左右吧。他们那边风俗是,父母也要挨桌敬酒,陪亲朋好友吃好这顿饭。

wedding

我本来是打算第二天去蓬莱,然后从蓬莱机场去南京。可是从海阳到蓬莱也需要2-3个小时,汽车也不多,还要起早坐车,比较折腾,推迟了一天。打算是明天睡够再去蓬莱,然后10月5日在蓬莱停留一天,6号去南京。时间不急了,婚礼后我就去了翠苹家,喝水聊天吃晚饭。翠苹家跟我们家不一样,我们家在平原,基本上连个坡路都没有。虽然我们家也挺好,还是略微有些羡慕,说羡慕也有点过了,总是挺喜欢那种风格的家。其实我不想在人家家里吃饭,太麻烦了,不过我确实对那里不熟悉,执意要走也不好,人家一片好心让你在家吃饭,敬酒不吃这算咋回事儿啊。崇然家是东北的,婚礼是在姑娘家举办,原本有些亲戚朋友来参加婚礼,可是都打算从青岛来,为了疫情期间的安全,就有很多人没来成,然哥的哥哥从东北来了,本来也是打算从青岛走,改了行程,第二天是去蓬莱,然后从蓬莱回东北。他们都定好车了,听说我第二天要去蓬莱,非要换个更大的车,要带我一起去。我说第二天想睡够再走,翠苹也不太想勉强我,毕竟第二天他们6点半就出发,就给我订好了晚上在海阳县城的住宿。其实每个麻烦他们的事儿,我都特别不好意思,本来是来参加人家婚礼的,这么麻烦人家,于心何忍啊。还是那句话,关系不错,他们家也不贫困,安排就安排吧。

home

我这是第二次参加同学家宴,第一次是在商丘,也是因为走不了。晚上同学一家人吃饭,我有些尴尬,有些话也听不懂,不过还是挺开心的。这回,来都来了,麻烦人家这么多了,也不差这顿饭,安安心心吃吧。崇然的哥哥当然也得留下吃饭,用哥哥的话:到家了不吃饭就走,有点刻薄了。哥哥姓韩就叫韩哥吧,韩哥是人民教师,非常典型的东北人,幽默、能说会道,张雪峰知道吧,韩哥的口才不输张雪峰。大家也没拿我当外人,总觉得我大老远过去不容易,其实交通便利,没啥不容易的。反而我混吃混喝的让人家这么招待,真的是不好意思了。愉快的晚宴之后,翠苹的妈妈还给我准备了一些礼物,让我带回去,我要出去玩儿,就让我寄回家去。行吧,那就拿着,后会有期啊、来日方长啊,跟翠苹和崇然的朋友关系又不止这一次交往,以后做朋友的时间长着呢,却之不恭吧。之后去住的地方,准备休息。说起那个住的地方,也是海阳最好的酒店了,那标准跟林大的专家公寓是一个级别。少说也得是三星酒店,整不好就是四星级。我呀,觉得干净就行,就是睡一觉而已。破费了,破费了。

由于只在海阳停留一天,再来就不知何年何月了,办好入住就出门,在海阳县城围着我住的地方转了一小圈,县城竟然有肯德基。忽然我就感觉到了,为啥我们那里是贫困县。之前听我老师说,我们那里是贫困县,我觉得确实有些老百姓比较穷,但是我们家也不缺吃少穿的,不算贫困吧。看了看海阳之后,觉得我们南宫确实贫困啊,因为肯定是居民没钱消费,养不起肯德基,才没有店铺。婚礼结束了,回想这一天的“奔波”,24小时之前还在北京,从公司到机场,从机场到蓬莱,从蓬莱到海阳,从海阳到小纪,又回到海阳。24小时后的现在,我都躺床上了。确实是匆匆忙忙的一天,听了两个故事,见证了好朋友的婚礼。也是第一次见然哥,咋说呢。后来回北京后,跟力哥打电话描述婚礼现场,描述然哥这个人。想起一见面的寒暄,就应该确实是对我这个“远来客人”的感谢,而不是简单地寒暄。再后来到翠苹家,然哥跟翠苹她爸爸的对话,确实能感觉到然哥是个成熟的成年人,如果我是家长,我也放心自己的孩子嫁给这样的人。而如果我是然哥,面对自己老丈人的时候,绝对没有崇然这样稳重、得体。用力哥的话来形容我对然哥的印象:是能抗事的爷们儿。成熟、稳重、有担当。

晚上看了一下公交车,打算早起去蓬莱,把翠苹家给的礼物寄回家,然后在蓬莱玩儿一天再去南京。蓬莱住宿呢?还是住老地方吧,毕竟可以把打火机还给人家老板。那个地方是离汽车站最近的宾馆,南苑宾馆,老板姓冷。冷哥在客房收拾,他媳妇给我办的入住,说信息录不进去。冷哥从客房收拾完来前台,我跟他打了个招呼:我又来了,明天走。他媳妇才知道,原来我的信息已经有了,不用再重复录入了。放下行李,给手机充电,看了看下午要去的地方,感觉有些困,决定休息片刻。这一觉醒来就已经是下午3点了,勉强爬起来出门打车到海边,去哪里呢?有三个景点,一个是蓬莱阁,一个是“极地海洋世界”,一个是八仙过海的景区。翠苹说蓬莱阁没啥,就是个人造景,还不如海洋世界,还有的看。其实我想的恰恰相反,海洋世界才是人造景,而蓬莱阁是大自然中的风景,更喜欢。由于没看过海洋世界,对那些海洋生物还是充满期待,况且有海底隧道。进去拍了不少照片和视频,也看了海豚、海狮的表演,很开心。出来之后,景点都要关门,天也要黑了。就在景区外溜达,沿着海边一直走,走了很远很远,感觉有些冷了,才决定回去。

animal

路边有共享电动车,扫码打开一辆,确实很好骑。晚上还没吃饭呢,找个地方吃饭吧。当然不去那种大的酒店,肯定是去小菜馆,吃当地的菜。中午寄完快递后,找了个小餐馆,看见有“蓬莱小面”,感觉跟武汉热干面和重庆小面差不多吧,但是有更想吃的,他们叫“咸鱼饼子”,除了咸了点,很好吃。晚上吃啥呢?我总不能在烟台吃驴肉火烧吧,在北京还没吃够吗。 路上搜了搜卖咖啡的地方,忽然想起2号值班的时候跟同事一起点的咖啡,那个 复煮咖啡 是真的好喝,不比施耐德那边的咖啡差。但是蓬莱的咖啡馆都是小杯的咖啡,没有中杯和大杯。忽然想起了罗永浩的那个视频,哈哈哈哈,看过一些搞笑的之后,思维总是“跳戏”。不管咖啡大杯小杯吧,总之不默认给我放糖,我就很开心了。喝完咖啡又看到了蓬莱小面,那必须点啊,因为明天就走了呀。点了自己差不多能吃的那些,慢慢吃。老板给我上菜时跟我了句莫名奇妙的话:人啊,就是应该对自己好一点,不吃好的多亏啊,好好享受你的大餐。我一开始有点懵,只是随声附和、点头,没明白老板啥意思。后来想了想,也许确实是我点的饭有点多了。我想的是:我下次吃蓬莱的饭,还不一定要等多久呢,总得尝尝蓬莱特色菜啊。口味呢,蓬莱小面挺难吃的,其他的也是一般,都没有汽车站的包子好吃,凑合吃吧。

penglaiFood

第二天还是早早的就醒了,想着蓬莱阁还没去,要不去转转吧,10点能回来就没问题,约的11点车去机场。说起约车,让我想起滴滴,不得不说滴滴的业务铺的还是很广,我团打车范围还没覆盖烟台的这个县级市。之前因为有事投诉滴滴司机,滴滴给的处理结果让我极其不满意,注销了滴滴账号。有美团就用美团,没美团就用高德地图。昨天没去成蓬莱阁,今天去,到了买好票,第一个去处是戚继光纪念馆,那个战车真是比我想象的要大很多。

qijiguang

之后去蓬莱阁,蓬莱仙境啊,碧海蓝天的,真是干净清爽,看了就很舒服。准备下山的时候,正好碰见了翠苹他们上山。昨天在海阳的时候,晚上跟韩哥坐车一起回住的地方,下车跟韩哥说:哥哥再见,蓬莱也许碰上,蓬莱见。结果还真是说中了,正好碰上了,跟着他们走了一段路。一路上想着“海客谈瀛洲,烟涛微茫信难求”,哈哈哈。蓬莱阁右侧有三清庙,还特意搜了搜这些神仙到底都是什么来路。最里面能看见海的地方,还有苏轼留下的痕迹,还有些石碑也不知道是真的还是假的。然哥说:这边没用玻璃镶起来,估计都是仿建;那边用玻璃镶着,可能是真的。哈哈哈哈哈,这个说法还是挺好,我也认同。跟他们聊聊天,拍拍照,我就必须往回走了。

penglaige

cleanSea

回去后,收拾完等车,跟冷哥在前厅一起聊天,加了微信好友,问我在北京哪里,我就说在美团住宿的数据部门。冷哥说:我想弄个旅行社,你别回去了,跟我干得了。哎呀,我也想啊,可是我就会写点代码,别的我也不会啊,哈哈哈。去机场路上也是,出租车忽然坏了,幸好还没上高速,打车也方便。也就是从这时候开始,感觉总是不那么顺畅。换了个车,早早地来到机场等着。换登机牌的时候,被人给忽悠办了航空公司的会员,我平常又不坐飞机,有啥用呢,哎。白天的飞机,上升后看地面的机会不多,抓紧拍了一些照片,尤其是超过云层后,看整个地面,确实就是个弧形的球体。等快到南京,路过长江的时候,也拍照了。你看,地图显示的长江支流分布,跟我拍到的一样啊,哈哈哈哈。

changjiang

下飞机就发现手机马上没电了,找了个共享充电宝,半小时也没充进去多少,电量大概可以撑到住的地方。南京的地铁,方向标志太少,停靠站的地图也不多,甚至车厢里竟然没有显示当前所在站的小绿灯。3点半下飞机,5点半才下地铁到住的地方附近。出了地铁,还下着小雨,南京的路呀,也是没有严格的正南正北,挺费劲的。跟着高德导航去住的地方,他么竟然给我导航到一个关着门的铁栅栏附近,你大爷的高德。后来我用美团打车,我团从来没给导航到这个门,这次绕个路吧。

otherSand

到前台办理入住,那机器死活识别不了,说我和身份证75%像,折腾了半小时,前台说有个江苏网上身份证的app,包括下载5分钟就搞定。给我房卡,说是9楼。坐电梯到9楼后,发现所有门牌号都是89开头,比如8901、8902。你大爷的,他么9楼就901、902就行了对吧,瞎折腾啥,我以为这是8楼。另外,明明写着是无烟房间,屋里竟然给我摆放烟灰缸,你这是要钓鱼执法吗?哎,从蓬莱到机场,就总是感觉不顺,一路上事事都不顺,我都快有情绪了,难道不应该来南京吗?

checkIn

都6点半了,哎,算了,不想了,出门,秦淮河夜景走起。出门又借了个共享充电宝,也幸亏这个充电宝,让我可以一直给力哥拍视频看秦淮河。当初我跟同事说:共享充电宝,这个事儿能做起来吗?这年头,谁还缺充电宝啊,我住的地方就有两个闲着呢。如今看来:嘿嘿,真香。到秦淮河边,就像之前说的,什么都不想,就在河边静静地坐着发呆,不过跟我想的不太一样,现在的游船都不是人工驱动的,都是机器驱动的,没意思。要是有人撑船,我肯定会坐船游览。有些渴,买了饮料,继续就这么慢悠悠的走,还时不时下着小雨,偶尔停下来坐一会儿。

有人在拍照,应该是一对老年夫妻,男的打着手机灯光给女的拍照,晚上附近灯光比较差,有些昏暗。我就把自己的手电筒打开,帮助他们照明,哈哈哈哈。还有人问我路,那人长得特别像陈意涵,但肯定不是,明星出门不都是一堆助理吗?还自己拍照吗,还问路吗?你说我一外地人,他们问我路,哈哈哈,是因为我长得瘦小,比较像南方人吗?不过我还是帮忙给查了一下。说起问路这事儿,平常遇到有人问路,我都是非常热心给解释的。有一回,特别有意思,我在饭店吃饭,怕吃饭溅到身上,带着个红围裙,有饭店的顾客把我当服务员问我洗手间在哪里,哈哈哈哈。不过人家比较客气,没有不尊重服务员,我也就会没解释我不是服务员,跟人家说了具体位置。

river

除了秦淮河,就是附近有名的夫子庙了。景点肯定是关门了,但是商业街上人很多,其实也没啥,就像北京的王府井。转了转,也去了乌衣巷,到访了王谢纪念馆,夜景还是不错的。想到的当然是电影《金陵十三钗》,想在秦淮河听曲儿,可是真的没有唱曲儿的,哈哈哈。有很多零食、著名小吃,可是人太多了,我又不想摘口罩,就啥都没吃。最后转了好几圈,终于把夫子庙附近都转完了。已经10点多了,看了看地图,还有朱雀桥没去呢。第二天打算去别的地方,那么附近能去的地方,今晚先转一个遍吧。走到了朱雀桥,啥都没有,就是干巴巴的一座很宽的桥,几乎没有拱形。乌衣巷好歹有卖好吃的好玩儿的,朱雀桥连个游客都看不见,有点失望了。已经很晚了,也没啥开着的饭店了,我还没吃饭呢,也是累了,在附近超市买了面包牛奶就回去了。

fuzimiao

fuzimiaoOhter

匆匆忙忙一天啥都没吃,好不容易出来一趟,不说吃当地有名的饭菜,躲到自己住的地方吃面包火腿,也真是惨到家了。不过也没关系,至少这样肯定是安全的。回酒店还充电宝的时候,误操作,扣款99块钱留下了。我留这个干嘛,又没有安卓的充电线,当时感觉这个共享充电宝做的真是垃圾。后来咨询了客服,回复我误操作可以撤销,最终的处理结果也是满意。一整天下来不太顺,终于,有个事儿还算满意,洗漱准备休息吧。

第二天,本来打算先去侵华日军南京大屠杀遇难同胞纪念馆,可是没有预约上,那还是去夫子庙吧。可是早饭吃啥呢?我总不能在南京吃驴肉火烧吧,在北京还没吃够吗。 最终选择了馄饨,凑合吃饱了,还挺贵。然后骑车去夫子庙、贡院、科举博物馆。总体一圈下来,感觉古人还是迷信,不仅古人,现在还有迷信的人,见个水池就扔硬币,咋不扔100块钱的钞票呢,哈哈哈哈。有的也算不上迷信,算是一种对美好未来的祈祷吧。大概就是祭奠孔子、记录科考历史、文化。看到了古代的“考试小抄”展览,叫“夹带”,想到了自己从小到大所有的考试中从没作弊,也是一件光荣历史了。看到了民国时期的一些展览品,毛笔字写得是真好。有周总理签名的展览品,也不知道是不是亲笔写的,还有张学良的,真是羡慕他们一手好字。见了“唐伯虎”的雕像,瘦的跟个猴子似的;看了王阳明的画像,本来想缅怀一下,忽然发现旁边是于谦,一下子又“跳戏”了。当然不是德云社的于谦,是“粉骨碎身浑不怕,要留清白在人间”那个于谦。在科举博物院还用那个电子系统算了算命,当然我是不信的。连续算了几卦:有上上签,也有中下签,说的都是未来前途。其实他怎么知道我要算啥呢?也许我要算姻缘、算数学题也说不准呢,哈哈哈哈。又“跳戏”了,想起《屌丝男士》大鹏算命,遇到两个小学生:你俩这是要算命啊?两个小学生摇摇头。算姻缘啊?继续摇头表示不是。那你俩算啥?大师,一个游泳池有两个水管,一个进水管、一个出水管,只打开进水管2个小时可以灌满水,只打开出水管3个小时可以放完水,请问两个水管都打开,几个小时能把游泳池灌满?算题啊?开那么多水管干嘛,多浪费水,哈哈哈哈。

fuzimiaoDayTime

history

看了看秦淮河的白天景色,自然没有夜景漂亮。再去那里呢?这时间去牛首山肯定是不行,那就市内随便转吧。去总统府吧,有天平天国遗址、民国举办会议的礼堂、总统办公室、花园,也没啥看的,总统府的花园还不如戚继光纪念馆的花园好看呢,总统办公室跟抗日神剧的办公室布置都是一个风格,也不稀有。再去哪里呢,看看地图,要不去附近的明故宫,看了看附近还有南京博物院。可是明故宫只有遗址,已经改造成公园了,而公园可以随意出入。博物院不一样,博物院有时间限制,那就先去博物院吧,赶紧骑自行车过去。南京有一样比较好,车道对自行车特别友好,有特定的自行车左转车道。市内马路边上有很大的大树,也不知道是啥种类。南京的路上,好多人骑电动车,99%的人也都戴头盔了,感觉还是挺好的。

road

放下自行车就赶紧买票,感觉这次买票特别费劲。最后进门前听广播说:需要预约参观,今日预约已满。我没预约啊,可是我刚买到票了呀,那我买的是个鬼啊?发现买的是“南京博物馆”的门票,而我去的是“南京博物院”,这™竟然是两个地方。我还说如果离得近,我可以去博物馆,地图上搜了搜是5公里,退票吧,哎。去明故宫遗址看了看,也没啥,就一个开放式的公园,环境不错,就歇了一会儿。之后本来打算去南京长江大桥,我们也会称作“南京市长江大桥”,也会开玩笑说“南京市长(shi zhang) 江大桥”,江市长,哈哈哈哈,好像现在还有江二桥。可是有点远,有些来不及,要不去附近的玄武湖吧。沿着玄武湖走了大半圈,没去明城墙的具体景点,但是可以看见城墙,玄武湖景区里还有各种小吃,我一天没吃什么,就喝了一些饮料,当时也是有些饿了,就买了一些没吃过的本地小吃。

lake

玄武湖里有饭店,竟然还有人在这里举办婚礼,还是两场婚礼。其实在这里举办婚礼也没啥,就是感觉交通不方便。也没敢进去混吃混喝,哈哈哈哈。实在是累了,天也黑了,就想着回去。我住的地方有南京大排档,去吃饭吧。到南京大排档,想去洗手间,进去后是个圆形的空间,中间是洗手池,两边是厕所门,跟入口的门正好像是奔驰标志一样,每个门间隔120度。我从男厕所出来洗手,之后差点就进了女厕所,就是这种120度间隔的三个口设计,给我整蒙了。店里人也不多,布置跟北京一样,菜的味道也一样。当然,肯定点了照殿红,哈哈哈哈。话说南京有啥美食啊,肯定是有很多的,但是没啥想法去尝试。说跟志杰直播吃南京美食,也不过是南京大排档。点好菜,开始跟杰哥发视频通话,先吃那个梨,味道还不错。然后我一直发一个语气词:“嗯~”,表示好吃,志杰就笑话我:他么你当吃播就只会“嗯~”,也不描述口感和味道,谁会看啊,哈哈哈哈。吃饭回去实在是太累了,睡前发现遇难同胞纪念馆有名额了,我就赶紧预约了。

第二天起床吃饭,打车过去,没有拍照。那种感觉,咋说呢,用“凝重”这个词来形容吧。从日军侵华开始,日军攻占上海、南京守军抵抗、日军攻占南京、日军烧杀抢掠,外国人建立安全区保护中国人,一直到抗日战争胜利,铭记历史,勿忘国耻,珍惜和平,发愤图强。旅游的时候,穿了暗红色外套,去纪念馆也没换衣服,到了之后,就把外套脱了拿在手里,参观结束才穿上。在东北的时候,入党其中一项就是参观“侵华日军第七三一部队遗址”,感觉是一样的。敌占区的生活,也许只有当时的老百姓才能描述出来,也许只有亲身体会,才知道国家强盛的重要性。

之后回住的地方收拾行李,又去了南京大排档,这回吃了鸭血粉丝汤,感觉还行。总觉得北京的鸭血粉丝汤就那样,南京的更好吃。其实是真不知道吃啥,才又去了南京大牌档,还是那句话:我总不能在南京吃驴肉火烧吧,在北京还没吃够吗。 不过早上出门的时候发现了一家餐厅,名字叫“牛一碗徐州羊肉汤”,哈哈哈哈,是老板姓牛吗。又“跳戏”了,想到那个广告:猛羊牌牛奶,比羊奶还牛

food

接下来去哪里呢?当然,首选南京市长 江大桥,打车过去,司机跟我说不能上桥,只能我自己走上去。走了近40分钟才走到附近,途中还遇见一个80多岁的老先生,自己拿着数码相机拍照,让我给他拍了几张。之后跟我说,从桥堡可以上去,不用这样步行过去。我猜到了应该是有这种路,但是不知道怎么去。那个司机也真是的,不跟我说一下,我怎么导航他就怎么走,估计他也不熟。不过司机跟我说了,最好逆行步行上去,如果不逆行,而去另外一侧,那确实不如在这一侧好看,当然我猜测应该是通着的,只是没有去证实。再就是也许司机觉得我不想花钱买桥堡的门票也说不定呢。我也没做什么攻略,毕竟只是游玩儿,要有一定的随意性,不要游玩都搞的那么紧张。万事都做好了攻略,哪能遇到这位老先生呢?老先生说自己就是南京人,每过一段时间就会来一次,这跟我当初上学的时候,隔一段时间就去一次林场有点像。告别老先生,继续向前走,风景还是不错的。拍照,拍视频,就从桥堡下去了。等有机会,去武汉看望武汉市长 江大桥,哈哈哈,江先生真是工作繁忙,身兼武汉、南京两个省会首府的市长。

bridge

再就剩中山陵了,在紫金山上。其实紫金山还有美龄宫,不太稀罕去,也没多少时间。去中山陵一方面是我确实佩服孙文,再就是我爸也佩服,估计他会问我去没去,我就去录个视频,拍个照。打车过去,走了很远的高速,司机把我送到不能再开车的地方,然后我步行往前走,有电子地图真好。路上竟然还有婚礼,你说在玄武湖举行婚礼可以理解,晚上举行婚礼也可以理解。虽然看古装剧,好像都是晚上婚礼,但是我们家现在只有二婚是晚上结婚,你说在一个遍地陵墓的地方,举行婚礼是不是有点奇怪啊。其实吧,说二婚晚上婚礼,本来就是一种迷信,只要两个人愿意,啥时候举行婚礼都是幸福的。陵墓又如何,有人选择在这里修建陵墓,反而正说明了这个地方风水好,从迷信的角度来讲,在这里举行婚礼也是合适。如果不迷信,那就更合适了,愿意在哪里就在哪里。真是千金难买“我愿意”,我愿意,你管得着吗?哈哈哈哈,想到这些,觉得自己还是不够豁达,只不过思维牢笼更大而已,没有钻死角罢了。

再从礼仪的角度来说,比如尊重父母,要守一些规矩。比如儒家的忠孝礼义廉耻,没有一个不是规矩。这些规矩都不遵守吗?也不能这么讲,应该是跟别人相处,要想相处融洽,就尊重对方愿意接受的礼仪就好了,两方能达成一致,交往才愉快。当然,真正的尊重是来自内心,而非形式。没有什么应该不应该,只有愿意不愿意。从法律的角度来说,刑法基本的原则之一:罪刑法定。法无明文规定不为罪,不要擅自诛心。从道德角度来说:哎,提到这个词,很容易想到“道德绑架”,现在这个词频繁出现,甚至滥用,我反而觉得讨厌这个词本身了。首先要区分“习俗”和“道德”,可我一下子又说不清楚严格的界限,那就不多说了。总之,顾好自己,别管那么多事儿,人家的生活人家愿意怎么办就怎么办,想多了反而是烦恼。想到了很多网络上的键盘侠,一个个的都牛的上天了,总之不论你说什么,不论说的对还是错,总有人跟你争执,真是懒得跟这些人多说一句话。回到这个婚礼举办地点上,你管得着吗?又不是跟你结婚,我愿意,哈哈哈哈。不论什么时间,不论在哪儿举行婚礼,祝福这些结婚的人。

只是到中山陵才发现,还是需要预约,幸好还有名额可以进,只是时间稍微晚一些,正好可以歇会儿。再之后就是从山脚下一直往上爬,确实挺累的。松柏长青、浩气长存、大道为公、天地正气,已经记不清有多少可以描述孙中山的词了。再就是明孝陵,据说朱元璋当初说:东吴的孙权也是个爷们儿,留下他给我看门吧。然后把其他人的陵墓全都迁走了,也真他么霸道。纵观历史,朱元璋贡献肯定是有的,驱除元朝,还我汉族一个太平世界,但其后续的文字狱,实在是自卑而残暴,哪有盛世杀文人的好皇帝,人人都还是有局限性的,至少大部分人都有。溜达一圈,算是看看,其实紫金山的风景都差不多,略有差别而已。明孝陵算是本次十一游玩儿的最后一个景点了,出孝陵往外走,一路上竟然没有路灯,几乎是跟着导航摸黑前进,哈哈哈,些许恐怖。

cemetery

出门就打车去火车站候车了,到火车站还是饿了,吃饭的地方不是特别好找,就在火车站里吃吧,虽然觉得有疫情需要注意,但是实在是饿了。还是鸭血粉丝汤吧,在南京就吃个够。有套餐,套餐里有包子,也是饿极了,买了4个包子还没吃饱,再去买的时候店员说还没熟,送我个馒头我没要。这几天挺累的,每天2-3万步,累的腿疼,并且吃的有点快,胃还没反应过来,就吃的有点多。之后去候车回北京,晚上的卧铺,戴着口罩睡到半夜,实在是无法呼吸,不管了,摘口罩,哈哈哈哈。清晨6点多到北京,直接去公司上班了,还不错,有精力。又一年十一过去了,真快、真好。

Spring异步消息

2019-11-25 00:00:00 +0000

概述

异步消息主要是为了系统与系统之间的通信。有两个很重要的概念:消息代理(message broker)和目的地(destination),当消息发送者发出消息后,消息将有消息代理接管,消息代理保证消息传递到指定的目的地。消息代理将消息放入一个队列(目的地),当有消息接收者时,消息代理将消息传递给接受者,这时候队列里就没有了这条消息。

异步消息主要有两种形式的目的地:队列和主题。队列用于点对点式的消息通信,主题用于发布/订阅式的消息通信。

点对点式确保每条消息只有唯一的发送者和接收者。发布/订阅式是消息发送者发送消息的主题,多个消息接收者监听这个主题。他们分别叫发布者和订阅者。

企业级消息代理

JMS(Java Message Service)就是Java的消息服务,是基于JVM消息代理的规范。而ActiveMQ是一个JMS消息代理的实现。 AMQP(Advanced Message Queuing Protocol)也是一个消息代理的规范,它不仅兼容JMS,还支持跨语言和平台。AMQP的主要实现是RabbitMQ。

Spring缓存

2019-11-24 00:00:00 +0000

概述

Spring定义了org.springframework.cache.CacheManager和org.springframework.cache.Cache接口来统一不同的缓存技术。其中,CacheManager是Spring提供的各种缓存技术抽象接口,Cache接口包含缓存的各种操作。

CacheManager接口

Spring提供了不同的CacheManager实现来使用不同的技术:SimpleCacheManager使用简单的Collection来存储缓存,用于测试;ConcurrentMapCacheManager使用ConcurrentMap来存储缓存;RedisCacheManager使用redis作为缓存技术。

Spring需要使用@EnableCaching来开启对缓存的使用,并通过对应的对象去创建Bean。

    @Bean
    public ConcurrentMapCacheManager cacheManager() {
        return new ConcurrentMapCacheManager();
    }

而Spring boot中已经自动配置了CacheManger,默认用SimpleCacheConfiguration配置,使用的是ConcurrentMapCacheManager,可以用spring.cache为前缀的属性来改变缓存默认配置。也需要在配置类中使用@EnableCaching开启对缓存的支持。

声明式缓存注解

注解|解释 –|– @Cacheable|在方法执行前,Spring先检查缓存中是否有数据,如果有则返回缓存中的数据,否则调用方法并将方法返回值放入缓存。 @CachePut|无论怎样,都把方法返回值放入缓存,可用于save方法。 @CacheEvict|将一条或者多条数据从缓存中删除,可用于delete方法。 @Cacheing|可以通过@Cacheing注解组合多个注解策略在一个方法上。