Golang标准日志库提供的日志输出方法有Print、Fatal、Panic等,没有常见的Debug、Info、Error等日志级别,用起来不太顺手。这篇文章就来手撸一个自己的日志库,可以记录不同级别的日志。其实对于追求简单来说,Golang标准日志库的三个输出方法也够用了,理解起来也很容易:Print用于记录一个普通的程序日志,开发者想记点什么都可以。Fatal用于记录一个导致程序崩溃的日志,并会退出程序。Panic用于记录一个异常日志,并触发panic。不过对于用惯了Debug、Info、Error的人来说,还是有点不习惯;对于想更细致的区分日志级别的需求,标准日志库还提供了一个通用的Ou
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言最近看见一个拖拽效果的视频(抖音:艾恩小灰灰),看好多人评论说跟着敲也没效果,还有就是作者也不回复大家提出的一些疑问,本着知其然必要知其所以然的心理,我把实现效果研究了一遍,并且了解了其实现原理,这里给大家复盘其原理,学到就是赚到准备这里我们要用到字体图标,所以我们从iconfont阿里图标库直接引入找到需要的图标,添加进项目找到图标所在的项目,点击查看链接复制地址,或者点击地址复制跳转后地址链接创建所需要结构把我们需要结构先写出来draggable:让盒子可以进行拖拽style="--color:#e63e31"--color让
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言最近看见一个拖拽效果的视频(抖音:艾恩小灰灰),看好多人评论说跟着敲也没效果,还有就是作者也不回复大家提出的一些疑问,本着知其然必要知其所以然的心理,我把实现效果研究了一遍,并且了解了其实现原理,这里给大家复盘其原理,学到就是赚到准备这里我们要用到字体图标,所以我们从iconfont阿里图标库直接引入找到需要的图标,添加进项目找到图标所在的项目,点击查看链接复制地址,或者点击地址复制跳转后地址链接创建所需要结构把我们需要结构先写出来draggable:让盒子可以进行拖拽style="--color:#e63e31"--color让
年底了,你发年终奖了么?是不是很不爽?不管是被动毕业还是主动毕业,生活还得继续是不是?作为程序员,那就离不开Redis,谁让不争气的磁盘还是那么慢呢?要过了面试这道坎,Redis必须掌握好。除了会用,还得了解它背后的原理。为啥?因为大家现在都在养蛊。人生在世,诸多无奈。逆水行舟,不进则退。如果你读过Redis相关的书籍,本文就帮你快速的撸一遍。没读过也不要紧,缺啥补啥。redis能力:10W/sQPS(redis-benchmark)1w+长链接(netstat/ss)最复杂的Zset6kw数据写入1k/s读取5k/s平均耗时5ms持久化(rdb)1.基本概览学习一门新语言,重要的是掌握它的基
年底了,你发年终奖了么?是不是很不爽?不管是被动毕业还是主动毕业,生活还得继续是不是?作为程序员,那就离不开Redis,谁让不争气的磁盘还是那么慢呢?要过了面试这道坎,Redis必须掌握好。除了会用,还得了解它背后的原理。为啥?因为大家现在都在养蛊。人生在世,诸多无奈。逆水行舟,不进则退。如果你读过Redis相关的书籍,本文就帮你快速的撸一遍。没读过也不要紧,缺啥补啥。redis能力:10W/sQPS(redis-benchmark)1w+长链接(netstat/ss)最复杂的Zset6kw数据写入1k/s读取5k/s平均耗时5ms持久化(rdb)1.基本概览学习一门新语言,重要的是掌握它的基
前言2022年已过1/4,时间过的真是快。近些年大Android的发展也很是迅速,尤其是遵循MVVM或者MVI架构下,使用Jetpack+Kotlin+Corroutine+Flow的组合,大大提升了Android应用的开发效率。然而,类似的效率的提升往往是通过层层封装,隐藏底层原理,简化调用,从而达到降低开发的上手门槛目的的。作为一个有品位的开发者,又怎能满足于只了解上层的API调用。本文我们就来通过实例来试着聊一聊Android经典线程通信框架Handler的基本原理。目的通过实现一个简单的Handler框架,试图解释其底层的工作原理。背景知识线程间通信即不同线程之间交换信息,Java中常
前言2022年已过1/4,时间过的真是快。近些年大Android的发展也很是迅速,尤其是遵循MVVM或者MVI架构下,使用Jetpack+Kotlin+Corroutine+Flow的组合,大大提升了Android应用的开发效率。然而,类似的效率的提升往往是通过层层封装,隐藏底层原理,简化调用,从而达到降低开发的上手门槛目的的。作为一个有品位的开发者,又怎能满足于只了解上层的API调用。本文我们就来通过实例来试着聊一聊Android经典线程通信框架Handler的基本原理。目的通过实现一个简单的Handler框架,试图解释其底层的工作原理。背景知识线程间通信即不同线程之间交换信息,Java中常
前言有没有面试的时候,经常被问怎么写一个webpack的loader或者plugin呢?这时候不知道你是不是一脸懵逼。那么这篇文章我们一起来学一下loader的实现,并亲手写一个阉割版的px2rem-loader并为官方的px2rem-loader拓展一些实际项目中不能满足我们使用的功能loader的基本介绍loader的基本使用loader的本质是对源代码进行转换,预处理源代码内容。webpack默认只能处理.js,.json文件,实际项目中会有很多类型的文件,这时候就需要提供loader为webpack拓展处理其它文件的能力。本篇文章重在编写loader,不在这里介绍loader的基本使用
前言有没有面试的时候,经常被问怎么写一个webpack的loader或者plugin呢?这时候不知道你是不是一脸懵逼。那么这篇文章我们一起来学一下loader的实现,并亲手写一个阉割版的px2rem-loader并为官方的px2rem-loader拓展一些实际项目中不能满足我们使用的功能loader的基本介绍loader的基本使用loader的本质是对源代码进行转换,预处理源代码内容。webpack默认只能处理.js,.json文件,实际项目中会有很多类型的文件,这时候就需要提供loader为webpack拓展处理其它文件的能力。本篇文章重在编写loader,不在这里介绍loader的基本使用
前言Hello,大家好,今天准备和大家继续分享如何利用Swift来实现一个网易云音乐的首页;上篇文章发布以后,我收获了不少小伙伴的关注与点赞,同时也得到了一些非常有用的建议,在这里再次感谢大家的认可,你们的鼓励与建议是我技术输出路上最大的动力。MVVM好了,回到正题,在项目中我们使用了MVVM模式,在上一篇文章中,我们讲完了Model和ViewModel,那接下来就开始讲View吧!如果有小伙伴是从这篇文章进入的,不妨先从我的上一篇文章看起,这样看下来才能保证你思路的连贯性。View回到我们的项目工程中来,准备构建我们的表视图。首先,在我们的首页视图控制器DiscoveryViewContro