现在位置: 首页 > 综合 > 文章
2020年02月19日 综合 ⁄ 共 1054字 评论关闭
  因为 Lua 本身并没有继承之类的语法,所以我们不能通过 OOP 的套路来扩展模块,不过实际上对于 Lua 来说,扩展一个模块有更简单的方法,下面我们以 lua-resty-string 模块中的 aes 加解密功能为例子来说明一下。   lua-resty-string 模块中的 aes 加解密功能   在 aes 加解密的过程中,有一个「填充」的过程,相关技术细节可以参考我以前写的「聊聊AES」,当然,不懂也没关系,你只要知道目前的 resty.aes 不支持配置填...
阅读全文
2020年02月19日 综合 ⁄ 共 2059字 评论关闭
  回调嵌套   在ES6语法出现之前,如果想要若干个异步过程按顺序执行,则需要使用回调嵌套,比如这里有个step函数,执行需要一定的时间:   var step = function(isError, cb) {   setTimeout(function() {   console.log(new Date())   cb && cb(isError && new Error('step Error'), isError)   }, 1000)   }   如果想要执行两次step,并且必须按顺序个条一条执行,在以前一般要使用回调嵌套: ...
阅读全文
2020年02月19日 综合 ⁄ 共 3028字 评论关闭
  FlexGet ,媒体文件的多功能自动化工具。可以支持 torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, 等等作为输入。FlexGet 是 Python 编写的,所以如果想要实现更加复杂的功能,也可以自己写脚本来处理。   FlexGet 一大被称道的就是可以实现 PT 或者 BT 的自动下载,并且直接传给 Deluge, transmission, uTorrent, rTorrent, SABnzb 等等客户端进行下载。FlexGet 也集成了 trakt, thetvdb.com, imdb.com...
阅读全文
2020年02月19日 综合 ⁄ 共 4487字 评论关闭
  微服务监控领域,Tracing借助Metrics,可以在APM方面为开发运维人员提供更大帮助。本文采用Elastic APM和Grafana作为技术方案,分享借助Metrics对Tracing数据进行统计、分析与可视化,助力开发运维更高效   1. 微服务 Tracing 与 Metrics   1.1. 微服务监控三个领域 :Tracing 、 Logging 和 Metrics   在微服务领域,很早以来就形成了 Tracing 、 Logging 和 Metrics 相辅相成,合力支撑多维度、多形态的监控体系。 ...
阅读全文
2020年02月19日 综合 ⁄ 共 5005字 评论关闭
  本文主要整理笔者遇到的Java多线程的相关知识点,本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。   1.interrupted与isInterrupted的区别   interrupted():测试当前线程是否已经是中断状态,执行后具有状态标志清除为false的功能。   isInterrupted():测试线程Thread对象是否已经是中断状态,但不清除状态标志。   方法:   public static boolean i...
阅读全文
2020年02月19日 综合 ⁄ 共 1475字 评论关闭
  Java 在语法层面已经有了 synchronized 来实现管程,为什么还要在 JDK 中提供了 Lock 和 Condition 工具类来做这样的事情,这属于重复造轮子吗?   首先你可能会想到的是 synchronized 性能问题,但是我想告诉你的是 synchronized 在高版本的 JDK 中性能已经得到了大幅的提升,很多开发者开始提倡使用 synchronized,性能问题可以不断优化提升,它并不是重载轮子的原因。   大家都知道管程帮助我们解决了多线程资源共享...
阅读全文
2020年02月19日 综合 ⁄ 共 2976字 评论关闭
  Service Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。那么到底什么是Service Mesh?   Service Mesh定义   Service Mesh是微服务时代的TCP协议。   有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。提到Service Mesh,就不得不提微服务。根据维基百科的定义:   微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区...
阅读全文
2020年02月19日 综合 ⁄ 共 2532字 评论关闭
  相信你一定记得学习并发编程的一个入门级例子,多个线程操作一个变量,累加 10000 次,最后结果居然不是 10000。后来你把这个变量换成了并发包中的原子类型变量 AtomicLong,完美的解决了并发问题。假如面试官问:还有更好的选择吗?LongAdder 了解过吗?你能对答如流吗?   AtomicLong由来   AtomicLong 是 Java 1.5 并发包中提供的一个原子类,他提供给了我们在多线程环境下安全的并发操作一个整数的特性。并且性能还可...
阅读全文
2020年02月19日 综合 ⁄ 共 1630字 评论关闭
  LongAdder 工具类。我们知道了 LongAdder 中为了分散热点数据,存在一个 volatile 修饰的 Cell 数组。由于数组的连续存储特性,会存在伪共享问题,你知道 LongAdder 是如何解决的吗?   在探讨 LongAdder 是如何解决伪共享问题之前,我们要先梳理清一个概念,什么是伪共享和共享 ?   什么是共享   共享在 Java 编程里面我们可以这样理解,有一个 Share 类,它有一个 value 的属性。如下:   public class Share { in...
阅读全文
2020年02月19日 综合 ⁄ 共 991字 评论关闭
  你用过 Java 中的 final 关键字吗?它有哪些作用?这也是出镜率极高的题目哦。   1. final 修饰类的时候代表这个类是不可以被扩展继承的,例如 JDK 里面的 String 类。   2. final 修饰方法的时候代表这个方法不能被子类重写。   3. final 修饰变量的时候代表这个变量一旦被赋值就不能再次被赋值。   想必上面这三点是大家所熟知的,但是下面这 2 点你想到了吗?   缓存   final 变量会被缓存在寄存器中而不需要去...
阅读全文