本文以登录界面美化为例来介绍Typecho插件开发。之所以选择这个插件,是因为它简单且比较有趣,适合入门学习。

开发环境搭建

工欲善其事,必先利其器。搭建好开发环境对于后续进行插件开发来说是很重要的,有个好用的 IDE 能有效提升开发效率。这里推荐使用 JetBrains 家的 PhpStorm,配合XDebug插件,来作为我们的开发环境。

PhpStorm的安装,省略。如果有edu邮箱可以免费使用,其余的自行解决。官网:PhpStorm: The Lightning-Smart IDE for PHP Programming by JetBrains

XDebug的安装,参考官网:Xdebug: Documentation » Installation

我的是Linux环境,安装配置总体上还是比较简单的。php.ini里配置xdebug(仅供参考,对于Windows,zend_extension那一行的配置肯定不一样):

阅读全文

本文翻译自7.2. Adding Swap Space Red Hat Enterprise Linux 5 | Red Hat Customer Portal

有时需要在安装后增加交换空间。例如,你可能把你系统的内存从 128MB 升级到 256MB,但是只有 256MB 交换空间。如果你执行一些存储密集型操作,或者运行需要大量内存的程序时,把交换空间增加到 512MB 应该是很有用的。

你有三种选择:创建一个新的交换分区;创建一个新的交换文件,或者在一个已有的 LVM2 逻辑卷上扩展交换空间。推荐在一个已有的逻辑卷上扩展。

阅读全文

不少人在安装系统时没有自定义分区,将系统安装在一块硬盘上。如果机器上有另外一块大容量硬盘,那么就不能很好地利用;并且,没有将home目录挂载到单独的硬盘,会导致重装系统时覆盖home目录而丢失数据。此时,可以把home目录挂载到单独的硬盘,注意数据的迁移。

使用虚拟机来演示,在初始时查看挂载情况:

$ df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
udev           devtmpfs  967M     0  967M    0% /dev
tmpfs          tmpfs     200M  3.6M  196M    2% /run
/dev/sda1      ext4       18G  4.7G   13G   28% /
tmpfs          tmpfs     997M   84K  997M    1% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M    1% /run/lock
tmpfs          tmpfs     997M     0  997M    0% /sys/fs/cgroup
tmpfs          tmpfs     200M   32K  200M    1% /run/user/1000

可以看到/home没有单独挂载。

阅读全文

最初知道这家公司是听说实习工资是800元/天,比字节跳动都高。猿辅导今年给应届技术岗开的薪酬非常给力,本人也顺利拿到了猿辅导的Offer,虽然最终还是拒掉了。

猿辅导是在线教育行业的黑马,薪酬给力的同时面试要求也比较高,能拿到猿辅导Offer的基本还有大厂Offer。猿辅导简历筛选环节比较看重学历,面试风格和字节跳动类似,比较看重编程能力和学习能力,对于项目经验等方面不太看重,毕竟校招生通常项目经验并不丰富。

阅读全文

ClassNotFoundExceptionNoClassDefFoundError 都是某个类在运行时没有找到时出现的,但它们发生的场景不同。

ClassNotFoundException 是一个异常,当你在运行时使用 Class.forName()loadClass() 方法尝试去加载一个类且这个类没有在 classpath 下找到时会出现该异常。

NoClassDefFoundError 是一个错误,当某个类在编译时存在但在运行时丢失时会出现该错误。

阅读全文

所谓序列化,就是将对象转为字节流,而反序列化则是将字节流还原为对象。

序列化可以将对象的字节序列持久化——保存在内存、文件、数据库中,在网络上传送对象的字节序列,或者用于 RMI(远程方法调用)。

例子

首先来看一个简单的例子。定义一个 User 类,并实现 Serializable 接口。

阅读全文

HashMap是很重要的数据结构,也是面试的宠儿,这里就HashMap的源码进行分析,以便理解HashMap的实现。

散列表

散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。 也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。 这个映射函数称做散列函数,存放记录的数组称做散列表。

散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快定位。散列函数有直接定址法、数字分析法、平方取中法、折叠法、随机数法、除留余数法等。

阅读全文

kafka 介绍与实践

基本概念

topic: Kafka处理的消息源

partition: topic物理上的分组,partition中每条消息都会被分配一个有序的id(offset)

message: 消息,通信的基本单位,每个producer可以向一个topic发布一些消息

broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker

leader: 负责处理消息的读和写

replicas: 副本节点

isr: 正在服务中的节点

阅读全文

好久没写博客了,快要荒废了。也许是之前从Hexo静态博客迁移到typecho博客花了不少精力吧,说实话还是挺折腾的,静态博客其实也挺好的。秉承着对于之前静态博客的怀念,写一篇关于静态博客搭建的文章吧。

Hexo

以Hexo静态博客为例,首先需要安装Node.js,Mac/Linux的话推荐先安装nvm,一个Node.js的版本管理工具,详见:nvm-sh/nvm: Node Version Manager,然后安装Node.js。

阅读全文