202003-17 2020 重学 Go 系列:10. Go语言流程控制:if-else 条件语句 HOT Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 继续阅读 >
202003-16 Micro In Action(三):调用服务 HOT 本文讨论了如何调用一个已经存在服务。 micro 提供了丰富的工具, 可以用来在运行时查看服务状态及调用服务方法。这其中既有命令行工具, 也有基于 web 界面工具。 最后,我们创建了一个客户端项目,用代码真正完成了服务的调用。 继续阅读 >
202003-16 Go1.14 的这个改进让 Gopher 生活更美好 HOT testing 包是 Go 标准库中我最喜欢的程序包之一,不仅是它具有低干扰的单元测试方法,而且在 Go 的整个生命周期中,它可以改善、提高生活质量 ^_^。 在 Go1.14 中,go test -v 将使 t.Log 的输出变成流式,而不是在测试运行结束之前进行存储,最后一起输出。 继续阅读 >
202003-14 解析和提交 HTML 表单的库:gosubmit HOT 项目地址:https://github.com/jeremija/gosubmit,发布刚半个月。该库帮助在测试过程中填写纯HTML表单。将自动从表单中获取现有值,因此无需手动设置诸如csrf令牌之类的东西。在缺少必填字段或模式验证不匹配时发出警报。支持的表单元素input[type=checkbox]input[type=date]input[type=email]input[type=hidden]input[type=number]input[type=radio]input[type=text]input[type=url]t... 继续阅读 >
202003-14 用面向对象设计原则理解 Go 中 interface HOT 1、interface是方法声明的集合 2、任何类型的对象实现了在interface接口中声明的全部方法,则表明该类型实现了接口。 3、interface可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值。 继续阅读 >
202003-14 Micro In Action(二):项目结构与启动过程 HOT 本文是 Micro in Action 系列的第二篇文章, 我们作了几件事: 介绍了上篇文章所创建的项目结构, 说明每一个文件的用途。 对照源码逐行分析一个 Micro 服务的启动过程。 考虑到 Micro 文档的缺失, 本文完整介绍了创建 Micro 服务所支持的全部 Option 最后用 micro web 查看了服务的运行时状态 继续阅读 >
202003-13 神奇了!这个 Go 项目让前端构建快了近 100 倍 HOT 这是作者 2019-2020 年寒假期间写的一项业余爱好项目。我相信它是相对完整和实用的。但是,它是全新的代码,可能有很多错误。还没有任何人在生产中使用过它。合并运算符。 此外,官方还给了如何和 React 配合使用。 目前,该项目在 Github 上已收获 3400+ Star,并有 51 个 fork。近期增长很快,总在 GitHub 趋势榜。 继续阅读 >
202003-13 官方博文:使用 Go Cloud 的 Wire 进行编译时依赖注入 HOT Go 团队公布了用于开放云开发的可移植云 API 和工具,开源项目Go Cloud 。这篇文章详细介绍了 Wire,一个随 Go Cloud 提供的依赖注入工具。 继续阅读 >
202003-13 map 并发崩溃一例:顺便吐槽 Go 打印堆栈不友好 HOT 如若在实践中碰到了类似的 bug,只能好好读代码,别无他法,甩锅给离职员工是解决不了问题的。 如果你手边的代码抽象程度比较高,比如函数的参数都是一些 interface,由运行期来决定,那可能要定位这种 bug 就更费劲一些。 继续阅读 >
202003-12 深入剖析ArrayList的底层源码-ArrayList 和 Vector 的区别 深入剖析ArrayList的底层源码-ArrayList 和 Vector 的区别 ArrayList 和 Vector 底层都是 数组 ArrayList 每次扩容的情况下扩容为原来的1.5 倍。线程不安全,当多个线程同时访问同一个ArrayList 集合时,如果两个或两个以上的线程修改了 ArrayList 集合,则必须手动保证该集合的同步性。 Vector 是同步类,其线程安全,但是它的访问比较慢。Vector 每次扩容为其空间大小的 2 倍。 继续阅读 >
202003-12 深入剖析ArrayList的底层源码-常用方法及其源码剖析 深入剖析ArrayList的底层源码-常用方法及其源码剖析 1. get()方法 get(int index)方法是返回集合中指定位置的元素。 继续阅读 >
202003-12 深入剖析ArrayList的底层源码-构造方法及其源码剖析 深入剖析ArrayList的底层源码-构造方法及其源码剖析 构造方法及其源码剖析 1. 带int类型的构造方法 源码剖析 继续阅读 >
202003-12 深入剖析ArrayList的底层源码-ArrayList介绍及其源码剖析 ArrayList是可调整大小的数组,实现了List接口。 实现所有可选列表操作,并允许所有元素包括null 。 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。 (这个类是大致相当于Vector,不同之处在于它是不同步的)。 继续阅读 >
202003-12 连存活到JDK8中著名的Bug都不知道,怎么敢给你加薪 SubClass 继承自BaseClass,由于SubClass数组中每一个元素都是SubClass对象,所以BaseClass[] baseArray = subArray;这种强制类型转换不会报错。这其实就是java对象的向上转型,子类数组转换成父类数组是允许的。但是由于数组中元素类型都是SubClass类型的,所以 baseArray[0] = new BaseClass();会报错java.lang.ArrayStoreException。这也就是说假如我们有1个Object[]数组,并不代表着我们可以将Object对象存进去,这取决于数组中元素实际的类型。 继续阅读 >
202003-12 python之路——初识面向对象 初识类和对象 字典就是一类数据结构,我一说字典你就知道是那个用{}表示,里面由k-v键值对的东西,它还具有一些增删改查的方法。但是我一说字典你能知道字典里具体存了哪些内容么?不能,所以我们说对于一个类来说,它具有相同的特征属性和方法。 继续阅读 >
202003-12 python之路——初识面向对象 类的相关知识 self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做。 因为你瞎改别人就不认识 继续阅读 >
202003-12 python之路——初识面向对象 面向过程 VS 面向对象 python之路——初识面向对象 面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 继续阅读 >
202003-12 python之路——初识面向对象 楔子 python之路——初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 继续阅读 >
202003-12 python面试题37道,看完面试不愁了 python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。 多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array 继续阅读 >
202003-12 比 Java 更具争议的 PHP,处处留坑? 虽然这个想法已经在 JavaScript 中被证明可行,但是只有先提供了适当的IDE和静态分析支持,它才能在PHP中工作。这是一个非常有趣的想法,但它必须经历一个成长过程才能称为“主流”。PHP看作是一种蹩脚的语言。这门语言确实有其缺点和20年的传承包袱,但是我可以自信地说,我喜欢用它工作。 继续阅读 >
202003-12 2019年最流行的七个PHPWeb框架 PHP代表超文本预处理器(Hypertext Pre-processor)。早期的PHP被用于个人主页,然后才升级更新为超文本预处理器。PHP是一种服务器端脚本语言,用于开发静态或动态网站和Web应用程序。 继续阅读 >
202003-12 PHP是生还是死? 有关PHP已死的传言满天飞,然而事实却并非如此,只要WordPress还活着并正常运行,PHP就不会消亡,况且如今的WordPress依然生龙活虎。不幸的是,许多遗留的PHP代码与旧版的WordPress捆绑在一起,而这些网站的所有者未能完全更新这些旧版本。 继续阅读 >