【有趣】这段java代码太古怪
首先呢,来一段java代码来开点胃。等等等等,耍我呢,这是java代码? 非常负责任的告诉你,是的!不信请看下图。纯纯正正的java代码,class为XJJ的java源码,执行后打印小姐姐我爱你。 还是不信?自个儿拷贝下去执行一下。不过,IDEA是会报错的,用命令行哦。 其实没…
JAVA堆外内存排查小结
这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在docker上,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。版本的更改如下: 使用ps查看进程使用的内存和虚拟内存 ( Linux内存管理 )。除了虚拟内存比…
WebSocket协议 8 问
更多精彩文章。 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持。它使用方面、应用广泛,已经渗透到前后端开发的各种场景中。 对http一问一答中二式流程的不满,催生了支持双向通信的WebSocket诞生。WebSo…
使用多线程增加kafka消费能力
kafka通过一系列优化,写入和读取速度能够达到数万条/秒。通过增加分区数量,能够通过部署多个消费者增加并行消费能力。但还是有很多情况下,某些业务的执行速度实在是太慢,这个时候我们就要用到多线程去消费,提高应用机器的利用率,而不是一味的给kafka增加压力。 使用Spring创…
当我有一台云服务器时,我做了些什么
刚开始调研服务器渲染写了一个 demo,正好对诗词感兴趣,就做了一个关于诗词的站点,越写越大,demo 变成了 DEMO,总的来说还是特别简单。随手挂到了服务器下。 有了前端自然需要服务器端支持,遵循着简单方便好用易于上手的原则,在 parse-server 与 graphql…
关于 http cache 的一个小问题以及引发的思考
本文主要介绍在没有设置强制缓存时的 lm factor 算法,以及关于缓存策略的思考。以及如何使用 service worker 增强缓存。 前几天,写了一篇博客,浏览器中的二进制,其中总结了一张图。 后来,我对图片做了一些更改,又发布了上去。这时候问题出现了,图片没有更新! …
由 GraphQL 来思考如何做一个好的 API Design
目前我已经写了一年多 graphql,也时常思考和 Rest API 的不同,以及对 API Design 的启发。 他山之石可以攻玉。qraphql 一些天然的设计或者思想对写 Rest API 有很大的借鉴或参考意义。 这里总结下一些受启发的 API 设计规范。 在 gra…
JAVA多线程使用场景和注意事项
我曾经对自己的小弟说,如果你实在搞不清楚什么时候用HashMap,什么时候用ConcurrentHashMap,那么就用后者,你的代码bug会很少。 编程不是炫技。大多数情况下,怎么把代码写简单,才是能力。 多线程生来就是复杂的,也是容易出错的。一些难以理解的概念,要规避。本文…
由图片乱码所想 - 前端中的二进制以及相关操作与转换
最近工作中遇到了很多有关二进制的处理,如PDF的生成,多个PDF的打包,音频的拼接。为了数据的一致性,以及减少与后端通信的复杂度,工作量都在浏览器端。 浏览器,或者前端更多处理的是 View 层,即 UI = f(state),状态至界面的转化。但是也有很多关于二进制的处理,如…
如何使用 docker 部署前端应用
docker 变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,方便运维管理。对开发者也更方便开发,测试与部署。 最重要的是, 当你面对一个陌生的项目,你可以照着 Dockerfile,甚至不看文档(文档也不一定全,全也不一定对)就可以很快让它在本地跑起来。 现在很强调 de…
使用Netty,我们到底在开发些什么?
更多精彩文章。 在java界,netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节,使用其丰富的接口,可以很容易的实现复杂的通讯功能。 和golang的网络模块相比,netty还是太过臃肿。不过java类框架就是这样,属于那种离了IDE就无法存…
使用 Grid 进行常见布局
grid 布局是W3C提出的一个二维布局系统,通过 display: grid 来设置使用,对于以前一些复杂的布局能够得到更简单的解决。本篇文章通过几个布局来对对 grid 布局进行一个简单的了解。目前,grid 仅仅只有 Edge使用前缀能够支持,为了更好地体验,可以使用 C…
[翻译] Grid 布局完全指南
CSS 栅格布局 (亦称 "Grid"),是一个基于栅格的二维布局系统,旨在彻底改变基于网格用户界面的设计。CSS 一直以来并没有把布局做的足够好。刚开始,我们使用 tables,后来是 floats,positioning 和 inline-block,这些本质上是一些 ha…
Nginx的另一个选择 - Traefik 入手及简单配置
尝试一下... 下载二进制文件,指定配置文件,直接执行可以启动。 当然,你也可以通过 docker 启动,参考 Traefik Get Started。 另外,如果需要使用 docker 启动,需要所有的服务都在一个 network 中,或者设置 traefik 的 netwo…
微服务不是全部,只是特定领域的子集
更多精彩文章。 大家都在学SpringCloud,貌似学会了SC就牛逼哄哄,感觉不得了的样子。但微服务,在整个企业级应用中,只占了一小部分。微服务引入的问题比解决的问题还要多,你会遇到各种各样的bottleneck。 微服务解决的是计算节点的问题,然而根源却在存储节点。当业务规…
阿里开源软件替换指南
阿里作为一家技术公司,一举一动牵动业界的发展。2013年,阿里搞出去ioe的概念,旨在消除对他人的依赖。而现在,它自己却通过变卖开源产品,绑架企业,充当了类似ioe的角色。 相比较一些国际知名的开源软件,阿里的开源软件文档不全、功能阉割、失久未修,很没诚意。它唯一目的就是让你买…
上厅房,下厨房,ElasticSearch有的忙
强烈建议先读一下本公众号《也浅谈下分布式存储要点》,对ES会有更好的认识。ES融合了倒排索引、行存、列存的诸多特点,已经不再是一个简单的全文搜索引擎。 ES是从厨房里走出来的,原型是Shay Banon给妻子做的食谱搜索引擎,一开始便充满了爱的味道。 最终,ElasticSea…
架构师负责订规范,你负责执行!
心意相通的研发之间,本不需要BB这BB那搞些约束。但宁教我心徒枉然,不教银光惹尘埃。过分的放纵爱自由,那就是一去不复返了。 规范是一种束缚,是腾飞前的最后一步加速。大公司免费开源复杂的软件,有一个非常重要的目的就是想要占据特殊解决方案的标准制定,想要一个话语权;一项技术趋向成熟…