羊羽'Blog

一头扎进代码的汪洋大海...

国际标准时间格式ISO8601

日期表示法 年由4位数字组成YYYY,或者带正负号的四或五位数字表示±YYYYY。以公历公元1年为0001年,以公元前1年为0000年,公元前2年为-0001年,其他以此类推。 应用其他纪年法要换算成公历,但如果发送和接受信息的双方有共同一致同意的其他纪年法,可以自行应用。 月、日用两位数字表示:MM、DD。 只使用数字为基本格式。使用短横线”-“间隔开年、月、日为扩展格式。 ISO...

Nginx之Location匹配规则

概述 经过多年发展,nginx凭借其优异的性能征服了互联网界,成为了各个互联网公司架构设计中不可获取的要素。Nginx是一门大学问,但是对于Web开发者来说,最重要的是需要能捋的清楚Nginx的请求路由配置。 Nginx的路由配置放在配置文件中的Location子节,下面我们来熟练掌握Location的配置。 语法规则 location [ = | ~ | ~* | ^~ ] ur...

Mysql之用户认证授权管理

概述 Mysql的认证采用账号密码方式,其中账号由两个部分组成:Host和User;Host为允许登录的客户端Ip,User为当前登录的用户名。 授权没有采用典型的RBAC(基于角色的访问控制),而是每个用户关联一个资源权限列表。 认证信息存放在mysql.user表中,其中还包含了用户的全局权限。 授权信息主要存放在mysql.*_priv系列表中,提供了数据库,表,行等各个粒度的...

Github Packages和Github Actions实践之CI&CD

概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新。近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌。 GitHub Packages 是一个和每一个代码仓库关联的软件包仓库。通俗来说就是代码仓库中存放的是源码,软件包仓库中存放的是编译输出后的可以被各个语言生态的依赖管理工具直接依赖的lib...

一些小Tip

导语 个人感悟,持续更新中。。。 正文 无论NIO还是AIO,都没有在数据传输过程(tcp/udp)作革命性的创新。 他们在传输过程的效率和传统BIO是一样的,还是会产生阻塞(网络延迟,Socket缓冲区满了或空了),他们通过在OS层对Socket进行统一管理,进行事件管理。避免了进程级的线程开销和线程阻塞(线程是JVM资源,这些都会阻塞线程栈,产生内存消耗和CPU时间片...

枚举最佳实践

概述 java世界数据分两种类型,基本数据类型和引用数据类型。引用数据类型分为类和接口。枚举是一种特殊的类,注解是一种特殊的接口。 基于以上可知,枚举是一种特殊的类,所谓的enum关键字其实是编译器语法糖。每一个枚举类编译之后反编译得到的依然是class。这个class继承了java.lang.Enum类,顶层父类依然是Object 。只不过这个类的构造方法是私有的,只是通...

有风格的程序员,写有风格的代码

导语 一个优秀的程序员,应该有自己的个性和风格。而这种个性可以在自己的代码里体现出来。我们写的最多的是业务代码,因此我们应该在写代码的过程中,总结出优秀的习惯,并持之以恒的实践它。 这样做有什么好处呢? 除了可以让后来看你代码的人在心里默默的念叨:原来还可以这么写啊?以外,最重要的是一眼看出这是我自己写的代码,就想能认识是自己写的字一样。有自己的风格,才不会是一个只会CV的...

Java开发的得力助手---Guava

导语 guava是google出品的java类库,被google广泛用于内部项目,该类库经过google大牛们的千锤百炼,以优雅的设计在java世界流行。版本迭代至今,很多思想甚至被JDK标准库借鉴,如Optional,Objects等。 Guava中的核心库有: 集合 [collections] 缓存 [caching] 原生类型支持 [primitives supp...

《Effective Java》总结

导语 《Effective Java》是和《Thinking in java》齐名的java进阶书籍。作者参与了JDK标准库的编写工作,对于此书的学习,让我收获很多。好记性不如烂笔头,我决定好好总结一下。 本书主要内容有11章,分别从各个方面阐述了作者对于java代码编写的体会。我看的是第二版,目前最新版已经是第三版了,但是还没有在国内翻译出版。这就是英语不好的局限之处~ 创建和销毁对...