Categories
程式開發

当你敲代码累了时,一般喜欢吃点什么补充能量? | 话题

身处互联网公司,加班是避免不了的。遇到紧急的项目和公司的重要活动时,程序员们都“难逃加班”,在公司需要待到很晚,而一日三餐补充的能量略显不足。其次,开发是脑力劳动,人的大脑又是“耗能大户”,有时候敲代码敲累了,就会有饥饿感。很多程序员都会准备一些零食,饿了的时候补充些能量。

  • 有网友表示:“自己有健身的习惯,会买一些即食鸡胸、坚果干和全麦面包等食物,低脂低糖。一直‘996’,要重视健康啊。”
  • 也有网友表示自己喜欢吃些高热量的零食:“巧克力,士力架这些东西吧,热量高,有的时候感觉饿了,吃两块士力架瞬间就‘活力无限’。”
  • 还有网友比较实在:“直接买一箱泡面放在公司,饿了吃一小桶。”

你一般都会准备哪些零食呢?你是否有过因敲代码过于沉迷而忘记饥饿的时候呢?欢迎在下方留言区留下你的观点。

Categories
程式開發

Java-技术专题-synchronized关键字

1. synchronized特点

1.1 简介

Synchronized是基于monitor实现的,Synchronized经过编译后,会在同步块前后分别形成monitorenter和monitorexit两个字节码指令,在执行monitorenter指令时,首先要尝试获取对象锁,如果对象没有别锁定,或者当前已经拥有这个对象锁,把锁的计数器加1,相应的在执行monitorexit指令时,会将计数器减1,当计数器为0时,锁就被释放了。

如果获取锁失败,那当前线程就要阻塞,直到对象锁被另一个线程释放为止。

synchronized底层语义原理

Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(有明确的 …

Categories
程式開發

Micronaut 2.0发布,增强了工具、改进了对无服务器和GraalVM的支持

Object Computing公司(OCI)正式发布了 Microaut 2.0,一个基于全栈JVM的框架,用于创建基于微服务、云原生和无服务器的应用程序,这些应用程序可以用Java、Groovy或Kotlin等语言开发。

新版本极大地提升了开发人员体验,提供了 Microaut Launch(一个全新的、更快的Micronaut …

Categories
程式開發

错误的存储方案正吞噬你的成本

介绍

在传统企业,我们通常都会使用本地存储来进行数据保存,如果对存储需求非常大的话,一般选择购买专门的存储器,但价格非常的昂贵,而且会遇到各种困难:

1、弱集群化,资源浪费

2、性能低下,故障频发

3、环节较多,成本高昂

4、数据丢失,可靠性差

然而到了云计算时代,存储资源已不再是系统的瓶颈,多数情况下成本成为了企业在构建大规模存储时的最大挑战

成本之疑

在使用阿里云oss对象存储时,有三种存储方式,分别是标准存储、低频访问存储、归档存储,虽然官网提示一般使用标准存储,如果想成本更低、存储期限更长可使用低频与归档,但并没有对文件进行智能的判断,用户什么时候使用成本更低的存储方式,使用后能节省多少?这些都需要用户来进行专业的分析,严重影响用户的体验,以下是oss的收费列表,收费项目复杂繁多:

错误的存储方案正吞噬你的成本 4

什么是智能对象存储?

Categories
程式開發

REST API工具推荐

本文最初发布于hackernoon网站,经原作者授权由InfoQ中文站翻译并分享。

市面上可用的 REST API 工具选项有很多,我们来看看其中一些开发人员最喜欢的工具。

API 定义

Swagger Editor 是图形可视化的流行选项。你可以使用 …

Categories
程式開發

HTTP协议-进阶

HTTP的实体数据-内容协商

“多用途互联网邮件扩展”(Multipurpose Internet Mail Extensions),简称为 MIME。

Content-Encoding 就少了很多,常用的只有下面三种:

gzip:GNU zip …

Categories
程式開發

十分钟漫谈容器网络方案01—Flannel

《Docker和Kubernetes的前世今生(下)》中我们介绍了作为目前主流的容器编排系统,Kubernetes支持的功能和为容器集群业务带来的便利。而为了设计并保障编排系统运作,Kubernetes对容器集群进行了这样的要求:任何pods之间的通信都可以在不使用NAT的情况下进行,即设定集群内所有容器都是连通的。但Docker容器通过Namespace隔离,无法直接相互通信,默认可以通过共用宿主机的Network Namespace的方式,凭借宿主机的网络栈进行通讯。这样的方式也导致了一系列问题,比如征用宿主机端口时使端口资源很快不足使得通信规模受限,以及容器与宿主机共享的网络会暴露宿主机信息,致使网络传输存在安全隐患。

为什么需要Overlay Network?

为了不影响隔离性并实现容器间的网络通信,Docker通过虚拟网桥“连接”容器,使容器得以像物理节点一样经过“交换机”通讯。Docker在宿主机上创建名为docker0的虚拟网桥,对于每一个创建的容器均创建一对虚拟网卡设备,其中一端在docker0,另一端映射到容器内的eth0,并对容器内网卡分配一个容器网络IP。通过这一对虚拟网卡,容器就相当于“连接”到网桥上,虚拟网卡接在网桥上时只负责接受数据包,不再调用网络协议栈进行处理,因此只具有类似端口的作用。当容器A要访问容器B时,只需要广播ARP协议,通过docker0转发请求到对应”端口”,就实现了数据的转发。

然而,虽然虚拟网桥解决了同一宿主机下的容器间通信问题,以及容器与外部世界之间的通信,但是跨节点的容器通信依然存在问题。集群中每个节点的docker0都是独立的,不同节点分配的容器IP之间存在冲突的可能,因此需要有一个具有全局视角的上层网络以实现跨节点的容器网络,这便是Overlay Network解决方案的由来。

Flannel容器集群网络方案的出现

Categories
程式開發

Amazon Redshift Federated Query 最佳实践

Original URL:https://aws.amazon.com/cn/blogs/big-data/amazon-redshift-federated-query-best-practices-and-performance-considerations/

Amazon Redshift Federated Query 旨在帮助用户使用Amazon Redshift提供的分析功能直接查询存储在Amazon Aurora …

Categories
程式開發

分布式系统架构设计:为什么开源的项目不如商业产品

动机

架构设计人员需要有产品的商业意识,作为软件开发人员在工作过程中往往离不开开源项目,但是能回答好“为什么开源的项目不如商业产品?”这个问题的并不多,因此本文就为此做个解读。

为什么开源的项目不如商业产品

开源的项目从产品化的角度来看可分为三个层次:

项目与社区锲合

项目与社区锲合,即开源项目在社区内的锲合程度,度量指标是点赞数、fork数、社区的技术文章阅读量,提升项目于社区的锲合度需要通过运营推广的方式,比如参加技术大会、发布技术文章以及发布完整的项目文档等;

产品与市场锲合

产品与市场锲合,即开源产品在市场的锲合程度,是否满足市场的真正需求,度量指标是下载量、使用量,通常来说开源项目能做到这一步就非常成功了,比如ceph,k8s,Tensorflow, Flink等;

价值与市场锲合

Categories
程式開發

软件架构伸缩性的六大原

我们生活在这样的一个时代,像谷歌、亚马逊、Facebook 这样规模庞大的互联网公司成为一种工程标志。它们每秒处理大量的请求,管理着规模空前的数据库存储。由于商业机密方面的原因,要精确获得这些系统的流量数据并不容易。但不管怎样,随着用户的增长,伸缩能力是这些公司持续取得成功的关键因素。

所幸的是,我们可以通过一家公司的年度使用报告来深入了解互联网规模的请求量和数据量。这是 2019 年以来极其详细的使用统计数据

不过需要注意的是,这份报告针对的是 pornhub.com,不适合那些有神经质的人看。报告表明,2019 年 …