A Java developer.
前言 本次学习面向对象设计的另外一个基本概念:继承(inheritance)。这是Java程序设计中的一项核心技术。另外,还要学习反射(reflection)的概念。 继承 类、超类、子类 public class Manager extends Employee{ //... } 关键字extends表明正在构造的新类派生于一个已存在的类。
数据类型 整形 type 存储 取值范围 int 4字节 -2 147 483 648 ~ 2 147 483 647 (超过20亿) short 2字节 -32 768 ~ 32 7677 long 8字节 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 byte 1字节 -128 ~ 127 关于范围的计算,1字节=8位。
上一节如何创建一个服务提供者provider已经启动了一个provider的server,提供用户信息查询接口。接下来,我们启动另一个provider,由于是同一台机器本地测试,我们换一个端口 --server.port=8084 通过启动传参数覆盖port。
前几篇主要集中在注册中心eureka的使用上,接下来可以创建服务提供者provider来注册到eureka。 demo源码见: https://github.com/Ryan-Miao/spring-cloud-Edgware-demo/tree/master/provider-demo 为了方便版本控制,接下来的项目都是基于https://github.com/Ryan-Miao/spring-cloud-Edgware-demo 这个parent配置的。
前言 上一节为springboot项目添加springboot-admin监控 学习了基于springboot1.5自己注册到admin的方法。接下来学习结合Eureka使用以及2.0的改变。 1.5spring-boot-admin集成eureka 我们继续上一节的项目修改,admin-server依赖修改如下 de.
前言 Springboot2.0推出有一段时间了,是要学习1.5+还是从2.0开始?犹豫的原因是资料不全,目前现有的资料大部分是1.0的。但作为学习者,肯定要学习最新的。不如,先试试。 搭建Eureka注册中心 关于Eureka的介绍,前文《SpringCloud入门1-服务注册与发现(Eureka)》已经学习过了。
在centos6安装ES的时候遇到不少问题。这里记录日志。以后安装一定要升级centos7,别说啥稳定问题了,该升级就升级。 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at l...
Checkstyle是什么 自从做了程序员,关于格式化的讨论就不曾中断过,到底什么才是正确的,什么才是错误的,到现在也没有完整的定论。但随着时间发展,渐渐衍生出一套规范出来。没有什么绝对的正确和错误,关键在于规范的定义。
OpenFeign是什么 随着业务的增多,我们的单体应用越来越复杂,单机已经难以满足性能的需求,这时候出现了分布式。分布式通讯除了RPC, REST HTTP请求是最简单的一种方式。OpenFeign是Netflix开源的参照Retrofit, JAXRS-2.0, and WebSocket的一个http client客户端,致力于减少http client客户端构建的复杂性。
前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路。 传统分页思路 假设一页大小为10条。则 //page 1 1-10 //page 2 11-20 //page 3 21-30 ... //page n 10*(n-1) +1 - 10*n MongoDB提供了skip()和limit()方法。
前言 Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了。基本用法见https://www.cnblogs.com/woshimrf/p/java8-date-api.html 问题 LocalDate可以很友好的toString为YYYY-MM-dd的格式,很适合我...
前言 由于Java Date的各种问题,Java8推出了新的日期API,很受一拨人的追捧。 为什么我们需要新的Java日期/时间API? 在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。
简介 MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。
前言 ELK官方的中文文档写的已经挺好了,为啥还要记录本文?因为我发现,我如果不写下来,过几天就忘记了,而再次捡起来必然还要经历资料查找筛选测试的过程。虽然这个过程很有意义,但并不总是有那么多时间去做。
上一节学习了Java8中比较常用的内置collector的用法。接下来就来理解下collector的组成。 Collector定义 Collector接口包含了一系列方法,为实现具体的归约操作(即收集器)提供了范本。
1.更新 sudo apt-get update 2.升级 sudo apt-get upgrade 3.检测最新版本 sudo update-manager -c -d 然后就会弹出窗口,提示ubuntu18.04现在可以安装,我们直接点击“升级”(窗口只有确定按钮就直接确定)。
Collection, Collections, collect, Collector, Collectos Collection是Java集合的祖先接口。Collections是java.util包下的一个工具类,内涵各种处理集合的静态方法。
问题的来源 我给一个gradlew项目添加Travis CI的时候遇到一个问题,gradlew没有可执行权限。具体错误如下: /home/travis/build.sh: line 45: ./gradlew: Permission denied 显然,gradlew没有可执行权限。
问题 当下互联网技术成熟,越来越多的趋向去中心化、分布式、流计算,使得很多以前在数据库侧做的事情放到了Java端。今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Java来做,但怎么做呢? 解答 忽然想起以前写过list去重的文章,找出来一看。
前言 版本控制说简单也简单,说复杂也困难的多。作为开发者,最基础的版本管理和团队协作的功能必须掌握。而其他一些相关的信息也可以了解下。比如,这次就有同事遇到了问题。 遇到的问题 在windows下,往repo里添加了一个xxx.exe文件,然后检查sourceTree却并没找到暂存的更改。
Stream的创建方式有很多种,除了最常见的集合创建,还有其他几种方式。 List转Stream List继承自Collection接口,而Collection提供了stream()方法。 List list = Lists.newArrayList(1, 2, 3); Stream stream = list.stream(); 数组转stream 对于数组,Arrays提供了stream()方法。
在Stream里元素都是对象,那么,当我们操作一个数字流的时候就不得不考虑一个问题,拆箱和装箱。虽然自动拆箱不需要我们处理,但依旧有隐含的成本在里面。Java8引入了3个原始类型特化流接口来解决这个问题:IntStream,DoubleStream,LongStream, 分别将流中的元素特化为int、long、doub,从而避免了暗含的装箱成本。
Stream和Collection的区别是什么 流和集合的区别是什么? 粗略地说, 集合和流之间的差异就在于什么时候进行计算。集合是一个内存中的数据结构,它包含数据结构中目前所有的值--集合中的每个元素都得先计算出来才能添加到内存里。
前言 互联网技术到今天已经非常成熟和稳定了,其中为了解决高并发、大规模的服务请求,出现了微服务、RPC这样的分布式架构。今天就从头开始学习RPC框架dubbo。 为什么要学Dubbo 关于分布式的解决方案有很多,光RPC框架就有很多种,甚至有人比较了RPC框架性能, 结果显示dubbo垫底,以及spring cloud这种推崇Rest Http请求代替RPC, 那为什么还要学习RPC? 首先,RPC框架的发展并没有因为Spring Cloud的出现而变的衰弱。
前言 学习一项新技术最大的困难是什么? 是资料。让人高兴的是找到了一本系统学习Spring Cloud的教程,《Spring Cloud微服务实战》, 接下来的学习目标将以此书顺序演进。 虽然Springboot 2.0刚刚发布,鉴于当下资料都是基于1.x的,对于初学者,站在前人的肩膀上会少踩坑。
由于样式兼容性问题,本文后半部分被截断,可到个人博客找到本文: https://blog.rmiao.top/springcloud-eureka/ 前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能。
前言 数组是我们最常用最简单的数据结构,Java里对数组做了一个简单的包装,就是ArrayList,提供自动扩容的功能。 最常用法 list在我们日常代码中最为常用的做法是创建一个list,放入数据,取出数据。
前言 序列化和反序列化看起来用的不多,但用起来就很关键,因为稍一不注意就会出现问题。序列化的应用场景在哪里?当然是数据存储和传输。比如缓存,需要将对象复刻到硬盘存储,即使断电也可以重新反序列化恢复。下面简单理解序列化的用法以及注意事项。
前言 还是需要从头阅读下HashMap的源码。目标在于更好的理解HashMap的用法,学习更精炼的编码规范,以及应对面试。 它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。 唯有不断学习方能改变! -- Ryan Miao
目标网站 https://blog.rmiao.top/ PWA yarn add hexo-offline 然后在root config.yml里新增 # offline config passed to sw-precache.
前言 最近严查security, 导致原来暴露出去的s3不能用了,不允许public的s3,暂时的折中方案是自己做跳转。于是需要在SpringMVC中实现文件下载功能。 关于文件存储的设计 文件存储通常用作对象存储,业界标准就是AWS s3, 国内的七牛也差不多。
前言 lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码。在很多工具类的项目中都有这个功能。比如dagger。 通俗的说,lombok可以通过注解来标示生成getter settter等代码。
样式覆盖 id选择器大于class选择器。 对于原主题中想要覆盖的id选择器,使用!import覆盖。 对于原主题中想要取消的css属性,使用inherit. 响应式 当屏幕宽度不同时,隐藏部分元素。 @media (max-width:1360px) { #div_digg { ...
前言 有大段的东西想要放上去,但又不想占据大量的位置。折叠是最好的选择。下面在Hexo的主题上定制添加折叠功能。 本文基于Hexo Next的主题修改。其他主题应该也差不多。效果如下:https://blog.
好久没看到OutOfMemoryError这种错误了,今天跑测试的时候发现总是报错。针对IDEA需要修改几个配置。 JUnit Test在运行前,IDEA会build整个项目,这个是喜欢eclipse的人最讨厌的地方,因为即便是别的不相干的类没配置好,我的Test也不能跑。
问题 由于有人rebase了分支,或者不知道怎么搞的。其他人拉取代码的时候,发现拉不下来。 >git fetch error: cannot lock ref 'refs/remotes/origin/xxx-branch': is at 8117caf7b1c88b2d5dfebd7581f68...
前言 Swagger使用起来简单方便,几乎所有的API接口文档都采用swagger了。使用示例:http://www.cnblogs.com/woshimrf/p/swagger.html, 现在开发中可以参考文档,但生产环境并不想暴露出去。
前言 ControllerAdvice非常好用,可以把系统内部的异常统一处理。用起来也很简单。比如,http://www.cnblogs.com/woshimrf/p/spring-web-400.html 而Spring提供了一个base类ResponseEntityExceptionHandler,可以使用这个来处理。
前言 之前遇到过使用Optional之后带来的隐含bug,现在强调记录一下不好的用法,防止错用。 Optional不能序列化,不能作为类的字段(field) 这点尤为重要,即类要纯粹。如果是POJO就原始类型就可以了,如果是领域对象,则更不应该使用Optional作为field。
昨天把hexo博客的url的日期去掉了,号称说3级以下的地址可以提高爬虫的rank。今天早上输入网址的时候,不小心多带了一个空格,导致变成了google搜索。然后就发现了文章被爬去的事情。打开发现爬去的文章掐头去尾,隐去了作者信息。
前言 自从搞清楚了跨域原理后一直自鸣得意,感觉跨域没啥问题了。而事实上对关于跨域的几个header的理解也有限,但那又如何,我能做到跨域就行了。今天想把博客背景图改成bing的每日一图,发现遇到跨域问题。
bing 每日一图 https://api.dujin.org/bing/1920.php bing图片rss https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1 JSONhttps://cn.
前言 Dropwizard官方文档并没有提供国际化的模块,所以只能自己加。Spring的MessageResource用的很顺手,所以copy过来。 Easy i18n 在整合Dropwizard的时候,多语言貌似只能通过jdk自带的ResourceBundle拿数据。
springboot 2.0需要gradle 1+, 而自动构建的都是3.+,手动升级如下 Upgrade with the Gradle Wrapper If your existing Gradle-based build uses the Gradle Wrapper, you can eas...
前言 语言都是相通的,只要搞清楚概念后就可以编写代码了。而概念是需要学习成本的。 Java基础 不用看《编程思想》,基础语法看 http://www.runoob.com/java/java-basic-syntax.html 就可以了,入门后想干啥干啥,如果感兴趣,如果有时间。
装上百度统计有一段时间了,今天突然找出报表看看,发现一个很有意思的事情。访问来源TOP5依次是:北京,上海,深圳,杭州,广州 虽然大部分文章都是当时特别白的时候记录下来的遇到过的问题,但受众确实应该只有IT, 甚至只有Java方向的。
前言 Swagger已经成API service的规范了,本处在dropwizard中简单集成Swagger. Demo source https://github.com/Ryan-Miao/l4dropwizard 本文是基于dropwizard入门之上的演进。
前言 dropwizard提供了一个简单的测试框架。这里简单集成并加入jacoco测试。 Demo source https://github.com/Ryan-Miao/l4dropwizard 本文是基于dropwizard入门之上的演进。
前言 习惯了Spring全家桶,对spring的容器爱不释手。使用dropwizard,看起来确实很轻,然而,真正使用的时候不得不面临一个问题。我们不可能一个resource就能把所有的业务逻辑囊括!那么,必然就要有负责处理逻辑的代码,有要提取的公共的代码,要做面向接口开发等等。