首页 » 文章

manjaro 安装输入法sougoupinyin
  1. 添加中科大源

sudo vim /etc/pacman.conf

[archlinuxcn]

SigLevel = Never

Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
  1. 导入GPG Key
sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring

3.安装



    sudo pacman -S fcitx-im  fcitx-configtool  fcitx-sogoupinyin
  1. 添加输入法配置文件 sudo vim ~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

基于mysql> select * from T where ID = 10;简略分析mysql走过的流程。 首先mysql 是分层的,查询语句首先经过server 层,然后进入存储引擎层(innodb)。 server 层又分为流程: 连接器---查询缓存-----分析器-----优化器---执行器。引擎层可以是innodb和myisam 等,它们共用一个server

第一步。连接器----负责和客户端建立连接(TCP握手),验证获取权限,维持和管理连接

  • 连接命令 mysql -h $ip -P port -u User -p password ,mysql客户端首先完成3次握手,然后发送用户名密码。
  • 验证成功后,读取相应权限放到连接中(注意后续的更改权限不会影响此次连接)
  • 一般采用长连接,比较高效。
  • 连接器会定时检查连接的时间,超过8个小时没有活动的连接会被关闭掉
  • 可以用show processes 查看所有的连接。
  • 连接会占用系统资源,如果进行了一个比较大的操作,可以执行mysql_reset_connection,重置连接,释放资源

第二步。 查询缓存,(注意mysql8之后,去掉了缓存,所以没有这一步)。

  • mysql 语句和结果,会以key value的形式存在于内存中,如果sql语句命中缓存,则直接返回
  • 对一个表的更新。会清理这个表的所有缓存,所以,经常更新的表不要使用缓存。
  • query_cache_type 这个系统变量控制着查询缓存工能的开启的关闭,query_cache_type=0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存

第三步。 分析器,对SQL语句进行解析,类似编译原理的前期阶段。

  • 词法分析,分析语句有哪些词(编译原理叫token)
  • 语法分析,判断是否符合mysql 语法规则,如果不满足,报错:You have an error in your SQL syntax

第三步。 优化器,在语句被执行之前,优化执行过程达到更好的效率。

  • 决定使用哪个索引
  • 决定表的连接join顺序

第四步。 执行器 开始执行语句,调用引擎层

  • 执行器先判断权限,如果没有权限,返回错误。(这一步不在前面做,有些触发器在执行阶段才知道)
  • 调用innodb引擎的接口获取一条数据,然后循环取满足条件的下一行
  • 最后将结果返回给前端。

其实这三个词关系不是很大,但是因为长的像,所以在中国是常见的面试题。哈哈

1.final 修饰变量/参数,不可更改(指针),如果时list,则里面还是能添加对象的,这点和immutable不同啊。
2.finally 和try配合使用,除非try里面用了System.exit()否则,finally一定会执行。
3.finalize 是给垃圾回收器用的。但是垃圾回收的时间是不确定的,所以可能造成OOM哦。而且jvm在调用finalize的时候会吞掉里面的任何异常,造成不可预知的结果。JDK9已经标记这个方法为depreciate。如果想用,可以用java.lang.ref.Cleaner,虽然单独出线程来处理了。不会造成死锁,但是还是建议不要用cleaner。最好的方法还是用完显式的释放。

zookeeper是一个开源的分布式协同服务系统。zookeeper的设计目标是将那些复杂且容易出错的分布式协同服务封装起来,抽象出一个高效可靠的原语集,并以一系列简单的接口提供给用户使用。比如分布式锁,leader选举

1.zookeeper起源---雅虎研究院一个小组,发现好多内部系统都需要依赖一个系统来进行协同。但是这样的协同系统往往存在单点问题。所以雅虎研究院就开发了一个通用的无单点问题的分布式协同服务系统,这就是zookeeper。zookeeper被著名开源项目使用:

  • hadoop ,使用zookeeper做 name node 的高可用
  • hbase ,保证集群中只有一个master,保存集群中的region server 列表,保存hbase:meta表的位置
  • kafka:集群成员管理,controller节点选举
  1. zookeeper 的应用场景
  • 配置管理
  • DNS服务
  • 组成员管理
  • 各种分布式锁

注意zookeeper适用于存储和协同相关的关键数据,不适合用于大数据量存储

Exception和Error都继承自Throwable类,可以被throw和catch,那么他们有什么区别呢

1.Exception是程序正常运行中,可以预料的意外情况,可能而且应该被catch,进行处理
2.Error是不大可能出现的情况,绝大部分Error会导致JVM处于非正常的不可恢复的状态,如OOM,不便于或者也不需要捕获。
3.Exception分为可检查异常和不检查异常。可检查异常是编译器检查的一部分,必须显示的进行捕获处理,如IO异常。不检查异常是运行时异常,可以再运行时用代码判断是否捕获。如空指针,数组超界。常见问题参考--https://blog.csdn.net/bryantlmm/article/details/78118763
4.注意try catch是有性能损耗的,不要用try包括大量的代码,用if else会更高效。对于追求极致性能的底层类库,会使用创建不进行栈快照的Exception。
5.Reactive 编程时,不能简单的抛异常,异常处理也要非常小心,很容易导致其他问题