【撸码系列】10x程序员高效工作方法之思考框架

缘起

毕业参加工作3年多了,一直没有去其他公司看看。回想这几年的工作经历,居然没啥说得出口的。没有什
么太多的成长。有时候忙得天昏地暗的,但是效果不佳。公司给了个账号,可以选10门课,无意选了一门《10x程序员工作方法》,这两天阅读GK上面看了一下《开篇词:程序员解决的问题,大多不是程序问题》和 《10x 程序员是如何思考的?》。

【Golang】Gin 优雅停机

我们在web开发中,你的应用可能会在不同国家使用,所以需要将相关的错误提示根据本地语言进行相应的提示,也即是所谓的国际化。本文简单的介绍一下,在Gin中如何实现多语言的验证。我们借助validator.v10以及相应的语言包。

【Golang】Gin 框架之请求参数多语言验证

我们在web开发中,你的应用可能会在不同国家使用,所以需要将相关的错误提示根据本地语言进行相应的提示,也即是所谓的国际化。本文简单的介绍一下,在Gin中如何实现多语言的验证。我们借助validator.v10以及相应的语言包。

【Golang】Gin 框架之请求参数绑定

最近在用Gin来做一个side project,用于练手以及学习前端。看了Gin的文档,此文只是将相关的文档作为一个归类,留存起来。首先我们看看,Gin中模型绑定和校验,是其他绑定类型请求的基础;后面再分别介绍Gin中相关的绑定类型(见下面的表)。

类型 重要程度
绑定Url 重要
请求参数与自定义结构绑定 重要
请求参数是前端上送的CheckBox 重要
仅仅绑定查询 一般,特殊化
绑定Header 一般
绑定查询类型或者POST数据 重要

如何正确地写出单例模式

什么是单例模式

一个类在JVM只有一个实例,并且提供一个全局访问入口。单例模式适用无状态的工具类,比如日志工具、字符串工具;
还有全局信息类,比如全局计数、环境变量;在Java中如下类库是适用单例模式:

  • java.lang.Runtime#getRuntime();
  • java.awt.Desktop#getDesktop();
  • java.lang.System#getSecurityManager();

单例模式的作用:节省内存;节省计算;结果的正确,比如全局计数器;方便管理。其实现方式很多,但不管何种实现方式,共同点:

  • 私有的构造函数;
  • 私有静态类对象;
  • 公有静态方法,唯一一个访问私有静态对象实例的方法。

macOS升级Nodejs版本

Nodejs版本升级

今天开始上班,但由于新肺炎只能远程,在家办公。学习前端开发,所以把之前的nodejs版本太老了,准备
把版本升级一下,这里把升级的步骤写一下,做一个备份:

展望2020,回顾2019

概要


今天是2020年的第一天,回顾2019年,平时没有做多少的记录总结。生活上最大的收获就是娃在出来了。
陪伴的时候出了很多问题,大都是家庭问题,与老婆拌嘴更多了。总之各种辛酸不为外人道。工作上,一直
打算换份工作,出于成长和心脏,但出去面了几次,没有拿到过offer。其实最大的问题自己也清楚,就是
去外面看看,根本没有下定决心要走。学的东西也是杂乱的,不成体系,不够深度。2019年就这样浑浑噩噩
过了。下面具体说说2019年经历了啥。

Java Thread Dump 日志分析

Thread Dump是什么

Thread Dump(javacore文件)是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的
定位线程出现长时间停顿的原因:

  • 线程间死锁
  • 死循环
  • 请求外部资源导致长时间等待等

如何生成Thread Dump

可以使用jstack(Stack Trace for Java)命令,它用于生成虚拟机当前时刻的线程快照,就可以查
看各个线程的调用栈。以部署在Tomcat上Java Web应用为例,当我们遇到CPU飙升或者100%时,执行如下步骤
获取Thread Dump:

分布式缓存遇到的问题汇总

概述

在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都直接查数据库或者调用第三方接口。特别是出现内存数据库之后,使用缓存场景更多了。而对于高 QPS 的系统尤为如此,如果每次都去查数据库,对数据库来说将是灾难。使用缓存业务系统一般的流程如下: