Spring Cloud

图解 Java 垃圾回收机制,写得非常好!

若如初见. 提交于 2020-08-18 13:11:02
什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。 所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。 在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文接下来将介绍垃圾回收机制的基本过程。 第一步:标记 垃圾回收的第一步是标记。垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。 上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。关注Java技术栈微信公众号,回复:JVM46,可以获取一份超全 JVM 调优攻略。 第二步:清除 这一步会删掉标记出的未引用对象。 内存分配器会保留指向可用内存的引用,以供分配新对象。 压缩 为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。 为什么需要分代垃圾收集? 之前说过,逐一标记和压缩 Java 虚拟机里的所有对象非常低效:分配的对象越多,垃圾回收需时就越久。不过,根据统计,大部分的对象,其实用没多久就不用了。 JVM 与 Linux

Java开发必知道的国外10大网站

血红的双手。 提交于 2020-08-18 13:09:25
1、 https://www.google.com/ 不解释 2、 https://stackoverflow.com 里面包含各种开发遇到的问题及答案,质量比较高。 3、 https://github.com/ 免费的开源代码托管网站,包括了许多开源的项目及示例项目等。 4、 https://dzone.com/ 提供技术新闻、编程教程、及各种工具、开发者的博客等。 5、 http://www.programcreek.com/ 一个非常优秀的Java博客,包含很多精选文集。 6、 https://gitlab.com/ 免费代码托管网站,可以用来做私服,和GitHub最大区别是GitLab可以有私有项目。 7、 https://www.ibm.com/developerworks/learn/java/index.html IBM的JAVA开发者网站,很多干货。 8、 http://www.javaworld.com/ 一个不错的综合性的java网站。 9、 http://www.onjava.com/ 某位国外大神的网站。 10、 http://www.oracle.com/technetwork/java/index.html oracle java的官方网站。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC

nacos Java SDK 1.3.1 来实现配置管理

我们两清 提交于 2020-08-18 11:55:38
1,下载服务 源文件下载地址: https://github.com/alibaba/nacos/releases 我测试时候下载到某云盘地址:链接:https://pan.baidu.com/s/1_I5yX578x1nY4ZZ_u-WU7A 密码:27ue 2,安装 放到Linux服务器上,解压,tar xzvf nacos-server-1.3.1.tar.gz ,or unzip nacos-server-$version.zip 然后 cd nacos/bin 然后运行启动脚本,Linux/Unix/Mac 环境是 sh startup.sh -m standalone ;Windows是 cmd startup.cmd 3,访问nacos服务中心 地址: http://localhost:8848/nacos ,有个登录界面,用户名和密码都是nacos默认值。 4,jar依赖 使用的jar版本 maven的 <!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.3.1<

自学java要先从哪里入手

懵懂的女人 提交于 2020-08-18 10:08:41
基本入手步骤: 开发环境搭建,安装JDK 安装开发工具 - eclipse 买书籍或者看电子书 https:// zhuanlan.zhihu.com/p/15 7728866 找一套系统最新的基础视频: JAVA讲解 学习路线图 https:// zhuanlan.zhihu.com/p/16 1887055 社群或者社区(比如:csdn,B站等)学习 首先只需要下载jdk安装并且配置就可以了,在cmd下面编译并且执行,这样做的目的是为了让你们先熟悉常见的方法名,类名,关键字是怎么写的,如果没有这个过程,直接就用集成开发工具,会出现的问题的是学了一段时间后,这些基本的写法都不会,这样面试的时候是非常危险的,当这些常见的都会写了,再下载集成开发工具,提高开发效率。 开发工具优先推荐使用eclipse,尤其是对于新手,因为idea虽然好,智能,但是用起来对新手不友好,上手难度不小。如果直接用idea,那会出现的问题就是学习没学好,每天还得花一部分时间来解决工具的问题,熟悉工具。当用eclipse可以做基本的开发了以后再用idea。 码邦主适合新手学习的书籍 1,《Head First Java》java入门书籍 《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。你会学会如何像个面向对象开发者一样去思考

到底什么是 OAuth 2.0?

喜你入骨 提交于 2020-08-18 08:46:28
作者:阮一峰 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理解OAuth的适用场合,让我举一个假设的例子。 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。 问题是只有得到用户的授权,Google才会同意"云冲印"读取这些照片。那么,"云冲印"怎样获得用户的授权呢? 传统方法是,用户将自己的Google用户名和密码,告诉"云冲印",后者就可以读取用户的照片了。这样的做法有以下几个严重的缺点。 (1)"云冲印"为了后续的服务,会保存用户的密码,这样很不安全。 (2)Google不得不部署密码登录,而我们知道,单纯的密码登录并不安全。 (3)"云冲印"拥有了获取用户储存在Google所有资料的权力,用户没法限制"云冲印"获得授权的范围和有效期。 (4)用户只有修改密码,才能收回赋予"云冲印"的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。 (5)只要有一个第三方应用程序被破解

Java中的对象都是在堆上分配的吗?

耗尽温柔 提交于 2020-08-18 08:19:52
作者:LittleMagic https://www.jianshu.com/p/8377e09971b8 为了防止歧义,可以换个说法: Java对象实例和数组元素都是在堆上分配内存的吗? 答:不一定。满足特定条件时,它们可以在(虚拟机)栈上分配内存。 JVM内存结构很重要,多多复习 这和我们平时的理解可能有些不同。虚拟机栈一般是用来存储基本数据类型、引用和返回地址的,怎么可以存储实例数据了呢? 这是因为Java JIT(just-in-time)编译器进行的两项优化,分别称作 逃逸分析 (escape analysis)和标量替换(scalar replacement)。 注意看一下JIT的位置 中文维基上对逃逸分析的描述基本准确,摘录如下: 在编译程序优化理论中,逃逸分析是一种确定指针动态范围的方法——分析在程序的哪些地方可以访问到指针。当一个变量(或对象)在子程序中被分配时,一个指向变量的指针可能逃逸到其它执行线程中,或是返回到调用者子程序。 如果一个子程序分配一个对象并返回一个该对象的指针,该对象可能在程序中被访问到的地方无法确定——这样指针就成功“逃逸”了。如果指针存储在全局变量或者其它数据结构中,因为全局变量是可以在当前子程序之外访问的,此时指针也发生了逃逸。 逃逸分析 确定某个指针可以存储的所有地方,以及确定能否保证指针的生命周期只在当前进程或线程中。 简单来讲

撸了一个 Feign 增强包

旧巷老猫 提交于 2020-08-18 05:41:47
前言 最近准备将公司的一个核心业务系统用 Java 进行重构,大半年没写 Java , JDK 都更新到 14 了,考虑到稳定性等问题最终还是选择的 JDK11 。 在整体架构选型时,由于是一个全新的系统,所以没有历史包袱,同时团队中也有多位大牛坐镇,因此我们的选项便大胆起来。 最终结果就是直接一把梭,直接上未来的大趋势: Service Mesh ,直接把什么 SpringCloud 、 Dubbo 这类分布式框架全部干掉。 本次的重点不是讨论 Service Mesh 是什么、能解决什么问题、为什么选择它,毕竟我也在学习阶段,啥时候整明白线上也稳定了再和大家来交流。 问题 既然方向定了就开始实际撸码了,不过刚一开始就验证了”理想很丰满、现实很骨感“; 由于我们去掉了 SpringCloud 和 Dubbo 这类框架,服务的注册、发现、负载均衡等需求全部都下沉到 Service Mesh 中提供了。 但对于开发来说依然希望可以调用本地方法的方式来调用远程服务,这在 SpringCloud 这类框架中是很容易实现的,框架本身就有很好的支持。 回到我们这个场景,需求其实很简单,就是想达到 SpringCloud 中的 Feign 这样的声明式+注解的方式调用。 @Autowired private StoreClient client ; Store store = client

一篇文章带你快速理解springcloud微服务架构

蓝咒 提交于 2020-08-18 02:34:56
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! SpringCloud微服务 微服务的模式和形式我在前面已经进行部分的提及,但是一直没落实到技术层面,这段时间我也在次研究了一下微服务,下面我先贴出SpringCloud整体涉及的结构: 上面展示的这些是SpringCloud整体的结构 先对这些空间做一个初步的介绍: Ribbon,客户端负载均衡,重试机制。 Hystrix,客户端容错保护,服务熔断、请求缓存、请求合并、依赖隔离。 Feign,声明式服务调用,本质上就是Ribbon+Hystrix(优化代码,避免直接使用RestTemplate的混乱)Bus,消息总线,配合Config仓库修改的一种Stream实现,独自启动不需要依赖其它组件。 Eureka,服务注册中心,特性有失效剔除、服务保护。 Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合。Zuul,API服务网关,功能有路由分发和过滤。还有其它服务空间,包括configuration等等 那么什么是注册中心呢? 注册中心,是服务的提供者发布自己服务的地方,传统手写的restful接口提供的服务会涉及到服务发布者的端口IP等等,通过注册中心可以直接调用已经发布在上面的服务,只需要通过服务名即可 从图中可以看出

推荐15款优质Spring开源项目,覆盖权限类、搜索、秒杀、支付

心不动则不痛 提交于 2020-08-17 23:57:34
不管是工作还是学习,很多时候我们都不需要自己再造轮子,并且如果有一个足够可用的轮子,在工作或者学习上,都会帮我们节省很多时间,这个真的哦。有的公司的管理框架就是用开源项目改的。今天在这边给大家推荐15个,优质开源Spring Boot & Spring Cloud 的比较多,包括权限管理类、支付类、商城类,博客管理、CRM、ERP等。 ❞ 微人事 spring-boot-pay springboot-plus Spring-boot-seckill V 部落 Cloud-Platform litemall jeeSpringCloud 美人鱼 bootshiro open-capacity-platform 悟空 CRM paascloud-master mall 华夏ERP 微人事 star: 17k 项目介绍 : 微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot+Vue 开发,项目加入常见的企业级应用所涉及到的技术点,例如 Redis、RabbitMQ 等。 技术栈: 项目图: spring-boot-pay star : 6.1k 项目介绍 : 支付服务:支付宝,微信,银联详细 代码案例 (除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试)。 技术栈: JDK1.8、Maven、IDEA、SpringBoot2.2.6