GitHub 移动版正式发布,随时随地协同编程
2019 年 11 月 14 日,在 GitHub Universe 2019 大会上,GitHub 正式推出了 GitHub for mobile,即 GitHub 移动客户端,支持 iOS 与Android 两大平台。 完整发布内容详见: https://github.blog/2019-11-13-universe-day-one/ GitHub 移动版提供了极大的便利性,让开发者无论身处何地都能与团队保持协作,轻松处理一些非复杂任务,如分享反馈、代码审查等,如下图所示: https://img/20191115110012.png 作为一款原生移动应用,GitHub for mobile 能自适应不同屏幕尺寸,并支持暗色模式,随设备设置自动调整界面。 https://img/20191115110136.png 目前 iOS 版本处于 Beta 测试阶段,Android Beta 版也将很快发布。 申请体验地址: https://github.com/mobile/beta https://img/20191115110519.png 虽然移动端带来了便利,但程序员们或许...
Elastic 公司成功上市,市值一日近乎翻倍
国庆假期期间,许多人仍沉浸在休闲时光中,而就在昨日(美国时间10月5日),广受 Java 开发者关注的 Elastic Search背后的公司——Elastic,正式在纽约证券交易所挂牌上市。 https://img/18-10-7-64836645.jpg 提到搜索,多数人首先想到的是 Google 或百度。但在企业级数据检索领域,常需依托开源搜索技术,Elastic 公司便应运而生。 https://img/18-10-7-60204672.jpg 准确来说,是 Elastic 公司上市,而非仅 Elastic Search。Elastic Search 只是该公司最知名的产品之一,旗下还包括分布式日志解决方案ELK(Elastic Search、Logstash、Kibana)、Beats、ECE 等系列工具。 Elastic Search 的影响力甚至超过其公司名称。若你还不了解它,以下是官网的描述摘录: Elasticsearch is a distributed, RESTful search and analytics engine capable of solvi...
Java 11 新特性解读:单命令完成编译与运行
http://cc.cocimg.com/api/uploads//image/20171030/1509368302170729.jpg Java 11 正式版即将发布,原计划于9月推出,目前仅剩不到三个月时间。此次更新将带来多项新功能,本文重点介绍其中一项名为 JEP 330的特性。 简化流程:一键编译并执行源代码回顾传统做法: text// 编译javac Javastack.java // 运行java Javastack通常我们需要先编译再运行,分为两个独立步骤。而在 Java 11 中,仅需一条指令即可完成: textjava Javastack.java尽管如此,这一改进在实际开发中的意义可能有限。大多数开发者依赖 IDE完成编译与运行,真正使用命令行操作的场景并不多见。当然,如果你习惯使用文本编辑器编写代码,这个功能或许能带来一些便利。 那么,这是否意味着 javac 将逐渐被淘汰?并非如此。在某些场景下,我们仍需要独立的编译命令,而非直接执行源码。 支持 Shebang #! 符号执行 Java 程序Shebang #! ...
Oracle 推出 GraalVM:跨语言全栈虚拟机解析
不久前,Oracle 发布了一项创新技术 “GraalVM”,宣称是一款全新的通用全栈虚拟机,具备高性能与跨语言交互等卓越特性。它究竟有何神奇之处? GraalVM 概述GraalVM 是一款跨语言的通用虚拟机,不仅支持 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还兼容JavaScript、Ruby、Python 和 R 等多种语言。 GraalVM 主要特性包括: 更高效的代码执行速度 支持多语言直接交互 可利用 Graal SDK 嵌入多语言环境 可生成预编译的原生镜像 提供完整的监控、调试与配置工具集 官网:http://www.graalvm.org/ GraalVM 应用场景1、支持多语言混合编程以下代码示例来自官网: textconst express = require(‘express’);const app = express();app.listen(3000);app.get(‘/‘, function(req, res) {var text =...
IPv4 地址资源宣告全球枯竭
重要通告: 2019 年 11 月 25 日 UTC+1 时间 15:35,欧洲 RIPE NCC 通过邮件确认:全球 IPv4 地址已完全分配完毕。 https://img/20191127095348.png IPv4 大家应当并不陌生,即我们日常接触的 IP 地址,例如:192.168.1.168。 其实,IPv4 地址即将耗尽的说法已流传多年,只是未料到这一天来得如此之快,这反映出互联网发展的迅猛势头。 面对 IPv4 地址枯竭,无需过度担忧。全球早已启动 IPv6 布局,中国也不例外。据统计,中国目前已拥有超过 3 亿个 IPv6 地址,数量位居世界首位。 那么 IPv6 究竟是什么?与 IPv4 有何不同? IPv6 全称为 Internet Protocol Version 6,即第六代互联网协议。其设计初衷正是为了解决 IPv4 地址不足的问题。毕竟 IPv4地址数量有限,而互联网发展日新月异,甚至可以说——现在已经耗尽了。 因此,二者最显著的差异在于地址数量。 IPv4 采用 32 位地址,最多提供约 43 亿个地址(2^32)。而 IPv6 使用 128 位地...
阿里巴巴系统设计的 16 项核心准则
1、【强制】存储方案及底层数据结构的设计必须经过集体评审,并形成书面文档留存。说明:有缺陷的数据结构设计易引发系统风险、降低扩展能力,且后期重构会因数据迁移和系统平滑升级而成本剧增。因此,存储方案与数据结构需经过充分设计与评审,上线前需进行二次复核。正例:评审应涵盖存储介质选择、表结构能否支撑技术方案、存取性能与存储空间是否满足业务增长、表与字段间的逻辑关系、字段命名与类型、索引设计等;即使只是新增字段,也需通过评审后方可上线。 2、【强制】在需求分析阶段,若系统涉及的用户角色超过一类且相关用例超过 5 个,建议采用用例图来清晰表达结构化需求。3、【强制】若某一业务对象的状态数量超过 3 个,应使用状态图进行表达,并明确触发状态转移的条件。说明:状态图的核心在于梳理对象状态种类,厘清状态间是否可直接转换,并定义触发转换的具体条件。正例:以淘宝订单为例,其状态包括“已下单”“待付款”“已付款”“待发货”“已发货”“已收货”等。例如,“已下单”与“已收货”之间不存在直接状态转换。 4、【强制】若系统中某功能调用链路涉及对象超过 3 个,使用时序图来表达调用关系,并明确各环节的输入输出...
接口流量控制:漏桶与令牌桶算法对比与应用
限流背景对外提供的API接口必须具备流量控制能力,以防止突发流量导致系统崩溃。类似于电路中的保险丝机制,当流量超过预设阈值时,系统应通过限流策略进行引流或拒绝,保障服务稳定。 主流限流算法常见的限流算法主要包括漏桶算法和令牌桶算法,两者在控制逻辑与适用场景上有所不同。 漏桶算法漏桶算法常用于流量整形与速率限制,其核心思想是将请求视作水流,以恒定速率从桶中排出。若进水速率过快,桶满后溢出的请求将被丢弃。该算法能有效平滑流量,避免突发请求冲击系统。 http://images.cnitblog.com/blog/522490/201411/081225378155003.png 漏桶算法强制限制请求处理速率,但缺乏弹性,难以应对合理的突发流量。 令牌桶算法令牌桶算法以恒定速率向桶中投放令牌,请求到达时需获取令牌方可被处理。若桶中无令牌,则请求被拒绝。该算法在限制平均速率的同时,允许一定程度的流量突发。 http://images.cnitblog.com/blog/522490/201411/081226107372877.png Google Guava库中的RateLimiter...
18 道 Java 基础面试笔试题汇总
1.你最常访问的两个技术网站和最常用的两个应用程序分别是什么?主要解决你的什么需求? 2.请简述http协议中get请求和post请求的区别。 3.请简述session和cookie的区别。 4.简述Servlet与JSP的关系。 5.JSP内置对象有哪些,各自的作用是什么。 6.简述你所理解的JAVA封装、继承、多态。 7.写出2个常用的设计模式(伪代码),并简述应用场景。 8.HashMap和HashTable区别。 9.HashSet和TreeSet的区别。 10.ArrayList和LinkedList的区别。 11.==与equals的区别。 12.简述泛型、反射、注解的应用场景及各自解决了哪些问题。 13.Thread类的方法有哪些,如何通过多种方式实现线程同步。 14.进程与线程的区别,JAVA中有哪些方式可以创建线程。 15.现有一学生表结构(student-id,class-id,name),请写出统计每班学生数量的SQL语句。 16.假如你正在开发一个系统的登录程序,请简述你是如何实现记住用户名和密码这个操作的,具体怎么实现? 17.在视...
递归算法原理剖析与Java实战示例
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1513930120521&di=e148a55622ee37e7c15cf3447e3538fc&imgtype=0&src=http%253A%252F%252Fimage.codes51.com%252FArticle%252Fimage%252F20160509%252F20160509185614_6256.jpg 递归算法概述递归是一种通过函数调用自身来解决问题的方法,它将原问题分解为规模更小的同类子问题,直到达到可直接求解的终止条件。递归过程通常在栈内存中不断压入同一函数调用,直至逐层返回结果。 递归的适用场景当某个功能的执行依赖于上一次调用的结果,且每次调用的参数不确定时,可考虑采用递归实现。 递归设计的要点必须定义明确的终止条件,否则会导致无限递归与栈溢出; 每次递归应使问题规模减小,逐步逼近终止条件; 子问题要么通过递归继续分解,要么直接求解; 所有子问题的解最终能合并为原问题的...
20 道 Spring Boot 高频面试题整理
面试过程中,我遇到不少求职者在简历中写着“熟悉 Spring Boot”或“正在学习 Spring Boot”,但深入提问时,发现他们大多停留在基础使用层面,对核心机制了解不深。 下面是我在面试中常问的 Spring Boot 相关题目,希望能帮助大家系统准备。 Spring Boot 是什么? 为什么要使用 Spring Boot? Spring Boot 的核心配置文件有哪些?区别是什么? Spring Boot 的配置文件格式有哪些?有什么区别? Spring Boot 的核心注解是哪个?由哪些注解组成? 开启 Spring Boot 特性有哪几种方式? Spring Boot 是否需要独立的 Web 容器? 运行 Spring Boot 有哪几种方式? Spring Boot 自动配置的原理是什么? Spring Boot 项目的标准目录结构是怎样的? 如何理解 Spring Boot 中的 Starters? 如何在 Spring Boot 启动时执行特定代码? Spring Boot 有哪些读取配置的方式? Spring Boot 支持哪些日志框架?推荐及默认的日志框...
