
Java.
zhuguang10
这个作者很懒,什么都没留下…
展开
-
SpringBoot使用prometheus监控
本文介绍SpringBoot如何使用Prometheus配合Grafana监控。1.关于PrometheusPrometheus是一个根据应用的metrics来进行监控的开源工具。相信很多工程都在使用它来进行监控,有关详细介绍可以查看官网:https://prometheus.io/docs/introduction/overview/。2.有关GrafanaGrafana是一个开源监...原创 2019-03-15 14:47:12 · 590 阅读 · 0 评论 -
Spring事务完全解析
事务是什么?了解事务的原理吗?说下Spring的事务原理,能自己实现Spring事务原理吗?先自我检测下这些知识掌握了吗。那么接下来一起看下与Spring相关的事务概念事务具有ACID特性。是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。Spring事务的底层依赖MySQL的事务,代码层面上利用AOP实现。MySQL的事务有隔离级别的概念,只有InnoDB有...原创 2019-03-15 15:18:48 · 157 阅读 · 0 评论 -
Java 基础 - JDK8 新特性
概述以下列出两点重要特性:Lambda 表达式(匿名函数)Stream 多线程并行数据处理(重要)新特性接口的默认方法只需要使用 default 关键字即可,这个特征又叫做 扩展方法Lambda 表达式Functional 接口 函数式接口 是指仅仅只包含一个抽象方法的接口,每一个该类型的 Lambda 表达式都会被匹配到这个抽象方法。你只需要给你的接口添加 @FunctionalI...原创 2019-03-15 16:30:12 · 139 阅读 · 0 评论 -
Spring boot实现AOP记录操作日志
前言在实际的项目中,特别是管理系统中,对于那些重要的操作我们通常都会记录操作日志。比如对数据库的CRUD操作,我们都会对每一次重要的操作进行记录,通常的做法是向数据库指定的日志表中插入一条记录。这里就产生了一个问题,难道要我们每次在 CRUD的时候都手动的插入日志记录吗?这肯定是不合适的,这样的操作无疑是加大了开发量,而且不易维护,所以实际项目中总是利用AOP(Aspect Oriented P...原创 2019-03-15 16:43:07 · 6542 阅读 · 0 评论 -
java中springboot项目集成socketIo实现实时推送
今天在这里跟大家分享一下springboot项目集成socketIo实现实时推送功能。不多说什么直接上代码,然后慢慢讲解。第一步项目中准备socketIo的运行环境 <dependency> <groupId>com.corundumstudio.socketio</groupId> <artifactId&g...原创 2019-03-20 11:19:14 · 1291 阅读 · 0 评论 -
为什么说Java程序员到了必须掌握Spring Boot的时候?
Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在思考: Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 传统企业使用 Spring Boot 会...原创 2019-03-16 11:08:29 · 185 阅读 · 0 评论 -
深入理解Java的三种工厂模式
一、简单工厂模式简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类实现汽车接口public interface Car {String getName(); }奔驰类public class Benz implements Car {@Overridepublic String getName() {ret...原创 2019-03-16 19:47:17 · 119 阅读 · 0 评论 -
Java12 种 Spring 常用注解!@Value 为属性注入值(属性上) 支持如下方式的注入: 》注入普通字符 @Value("Michael Jackson")String name; 》注入
1.声明bean的注解@Component 组件,没有明确的角色@Service 在业务逻辑层使用(service层)@Repository 在数据访问层使用(dao层)@Controller 在展现层使用,控制器的声明(C)2.注入bean的注解@Autowired:由Spring提供@Inject:由JSR-330提供@Resource:由JSR-250提供都可以注解在set...原创 2019-03-21 15:54:44 · 600 阅读 · 0 评论 -
Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等
Java 中15种锁的介绍在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁 / 非公平锁可重入锁 / 不可重入锁独享锁 / 共享锁互斥锁 / 读写锁乐观锁 / 悲观锁分段锁偏向锁 / 轻量级锁 / 重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名...原创 2019-03-18 15:25:56 · 245 阅读 · 1 评论 -
Java基础语法_Day10
一、包和权限修饰符包的概述java的包,其实就是我们电脑系统中的文件夹,包里存放的是类文件。当类文件很多的时候,通常我们会采用多个包进行存放管理他们,这种方式称为分包管理。在项目中,我们将相同功能的类放到一个包中,方便管理。并且日常项目的分工也是以包作为边界。包的声明格式通常使用公司网址反写,可以有多层包,包名采用全部小写字母,多层包之间用”.”连接类中包的声明格式:package...原创 2019-03-26 10:47:47 · 206 阅读 · 0 评论 -
Java和操作系统交互细节
结合 CPU 理解一行 Java 代码是怎么执行的根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单元,存储单元。控制单元是 CPU 的控制中心, CPU 需要通过它才知道下一步做什么,也就是执行什么指令,控制单元又包含:指令寄存器(IR ),指...原创 2019-03-31 15:20:11 · 447 阅读 · 0 评论 -
springboot+redis分布式锁-模拟抢单
篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁如何删除锁模拟抢单动作(10w个人开抢)jedis的nx生成锁对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖: <depend...原创 2019-04-01 15:26:07 · 225 阅读 · 0 评论 -
Spring Cloud系列--简单实现Ribbon负载均衡
Ribbon是客户端的负载均衡,在微服务调用,API网关的请求转发等,都离不开Ribbon。因此理解和使用Spring-cloud-Ribbon 是非常重要的。我们先来看一下如何使用Ribbon进行负载均衡。我们将使用4个服务来实现。服务注册服务提供1服务提供2客户端具体的架构流程图如下项目搭建具体搭建方法参照Spring Cloud系列-- 服务治理简单搭建 ,我们使用IDEA...原创 2019-04-11 11:01:57 · 207 阅读 · 0 评论 -
Java直接内存分配与释放原理
前言在Java中分配直接内存大有如下三种主要方式:1.Unsafe.allocateMemory()2.ByteBuffer.allocateDirect()3.native方法Unsafe类Java提供了Unsafe类用来进行直接内存的分配与释放public native long allocateMemory(long var1); public native voidfr...原创 2019-04-02 11:15:54 · 6316 阅读 · 0 评论 -
深度剖析Spring Cloud底层原理
毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓。实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件。本文先从最核心的几个组件,也就是 Eureka、Ribbon、Feign、Hystrix、Zuul 入手,来剖析其底层...原创 2019-04-15 20:35:22 · 214 阅读 · 0 评论 -
Java注解处理器---------编译时注解
注解处理在开发中,碰见很多注解,如@Override、@Documented等,还有像现在很多依赖注入库如ARouter,Dagger 2等·,他的内部如何处理自己的注解,通过什么途径获取自己的注解,实现自己的业务逻辑。看一下ARouter,当添加ARouter依赖后,在需要的Activity添加注解,编译就会看到在build文件夹下生成如下图的文件,文件生成是通过在注解处理器中编写解析和生成代...原创 2019-04-09 14:13:40 · 388 阅读 · 0 评论 -
SpringBoot开发案例之打造私有云网盘
前言最近在做工作流的事情,正好有个需求,要添加一个附件上传的功能,曾找过不少上传插件,都不是特别满意。无意中发现一个很好用的开源web文件管理器插件 elfinder,功能比较完善,社区也很活跃,还方便二次开发。环境搭建项目截图周末抽时间做了一个简单的案例,希望对大家有所帮助,下面是简单的项目截图。在这里插入图片描述项目功能在线新建目录、文件、附件上传、下载、预览、在线打包...原创 2019-04-16 16:33:00 · 619 阅读 · 0 评论 -
即将到来的金三银四,这10道springboot常见面试题你需要了解下
1.什么是Spring Boot?多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此,开始一个新的spring项目需要很多...原创 2019-04-21 14:35:21 · 253 阅读 · 0 评论 -
SpringBoot开发案例从0到1构建分布式秒杀系统
前言最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路。俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了部分秒杀场景,同时跟大家分享交流一下。秒杀场景秒杀场景无非就是多个用户在同时抢购一件或者多件商品,专用词汇就是所谓的高并发。现实中经常被大家喜闻乐见的场景,一群大妈抢购打折鸡蛋的画面一定不会陌生,如此场面...原创 2019-04-17 15:15:28 · 207 阅读 · 0 评论 -
阿里Java面试题剖析:在高并发的情况下如何保证消息的顺序性?
面试原题如何保证消息的顺序性?面试官心理分析其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql ...原创 2019-04-22 11:08:16 · 255 阅读 · 0 评论 -
68道Spring面试题和答案,简单明了无套路(上篇)
什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散...原创 2019-04-22 11:48:01 · 154 阅读 · 0 评论 -
68道Spring面试题和答案,简单明了无套路(下篇)
@RequestMapping 注解该注解是用来映射一个URL到一个类或一个特定的方处理法上。什么是基于Java的Spring注解配置? 给一些注解的例子.基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。另一个例子是@...原创 2019-04-22 11:48:53 · 396 阅读 · 0 评论 -
Spring Cloud OAuth 无Token调用源码封装
背景重构-改善既有代码的设计,重构的目的是是软件更容易被理解和修改。书接上回Spring Security OAuth 微服务内部Token传递的源码解析,本篇主要无token 调用过程中,代码的不断完善及其重构过程。需求很简单如下图,如果资源服务器的提供的接口,客户端不需要身份验证即不需要携带合法令牌也能访问,并且可以实现远程调用的安全性校验.第一版本资源服务器设置接口permita...原创 2019-04-26 14:41:37 · 812 阅读 · 0 评论 -
八年Java开发的感悟:什么才是程序员的立身之本
自学Java的人不少,科班出身的也很多,但是到什么程度才有资格说自己精通Java?个人觉得至少需要经历以下几个阶段:1.重视代码品质,精益求精,这是技术开发的本质,也是程序员的立足之本。对处于还没工作或者工作1年左右这个阶段的人来说,看书是比较好的提升方式,推荐《Java编程思想》、《effective java》等。需要注意的是,在看书的过程中一定要思考能否运用书中的经验来改善自己写的代码,...原创 2019-04-15 16:15:47 · 348 阅读 · 0 评论 -
image.png 我顿时觉得**一紧,仔细回顾一下,如果wait()方法不在同步块中,代码的确会抛出IllegalMonitorStateExeception:
image.png我顿时觉得**一紧,仔细回顾一下,如果wait()方法不在同步块中,代码的确会抛出IllegalMonitorStateExeception:public class WaitInSyncBlockTest { @Test public void test() { try { new Object().wait();...原创 2019-04-27 10:54:25 · 1337 阅读 · 0 评论 -
Java8新特性之三:Stream API
Java8的两个重大改变,一个是Lambda表达式,另一个就是本节要讲的Stream API表达式。Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找、过滤、筛选等操作,在新版的JPA中,也已经加入了Stream。如:@Query("select u from User u")Stream<User> findAllByCustomQueryAndS...原创 2019-04-23 14:54:06 · 157 阅读 · 0 评论 -
JavaScript闭包
什么是JS闭包?先看一段代码:function a(){ var n = 0; function couter() { n++; console.log(n); } couter(); couter(); } a(); //控制台输出1,再输出2再来看一段代码:function a(){ var n = 0; this....原创 2019-04-23 19:38:46 · 139 阅读 · 0 评论 -
JavaScript"模拟事件"的注意要点
DOM中的事件模拟三个步骤: 首先通过document.createEvent()方法创建event对象,接收一个参数,即表示要创建的事件类型的字符串:UIEvents(DOM3中的UIEvent)鼠标和键盘事件;MouseEvents(DOM3中的MouseEvent)鼠标事件;MutationEvents(DOM3中的MutationEvent)变动事件;HTMLEvents(没有...原创 2019-04-19 19:15:31 · 200 阅读 · 0 评论 -
浅谈Java中的锁:Synchronized、重入锁、读写锁
Synchronized首先我们来看一段简单的代码:public class NotSyncDemo { public static int i=0; static class ThreadDemo extends Thread { @Override public void run() { for (int j=0;j&l...原创 2019-04-24 16:52:09 · 102 阅读 · 0 评论 -
SpringCloud分布式微服务搭建(一)
本例子主要使用了eureka集群作为注册中心来保证高可用,客户端来做ribbon服务提供者的负载均衡。负载均衡有两种,第一种是nginx,F5这种集中式的LB,对所有的访问按照某种策略分发。第二种是客户端知道所有的服务的地址,在客户端做负载均衡,客户端自己去发送。github地址:https://github.com/linjiaqin/scdemo一. eureka注册中心的搭建1.为...原创 2019-04-29 14:38:14 · 42397 阅读 · 5 评论 -
如何提高使用Java反射的效率?
前言在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是”道听途说“。下面我们就直接通过一些测试用例来直观的感受一下”反射“。正文准备测试对象下面先定义一个...原创 2019-05-05 15:39:06 · 170 阅读 · 0 评论 -
java设计模式之代理模式(静态代理)
今天给大家分享的是java设计模式之代理模式中的静态代理模式,动态代理模式将在后面文章中给出。如有不足,敬请指正。一、代理模式是什么代理模式是面向对象编程的 23 种基础设计模式之一。代理模式的定义: 为其他对象(源对象) 提供一种代理以控制对这个对象(源对象) 的访问。 需求: DAO 层的代码操作。我们知道分别有获得数据库连接(相同的)获得操作对象(相同的)封装参数(每个方法...原创 2019-04-25 14:28:20 · 251 阅读 · 0 评论 -
最全的JAVA知识汇总(附讲解和思维导图)
jvm 一行代码是怎么运行的首先,java代码会被编译成字节码,字节码就是java虚拟机定义的一种编码格式,需要java虚拟机才能够解析,java虚拟机需要将字节码转换成机器码才能在cpu上执行。 我们可以用硬件实现虚拟机,这样虽然可以提高效率但是就没有了一次编译到处运行的特性了,所以一般在各个平台上用软件来实现,目前的虚拟机还提供了一套运行环境来进行垃圾回收,数组越界检查,权限校验等。虚拟机一...原创 2019-04-30 19:15:04 · 712 阅读 · 0 评论 -
Java程序员必读之书单
读书是另一种感知世界的方式,是另一种提升自我的方式,是另一种与人交谈的方式,一周不读书就觉得自己俗了,长久不看书,写东西就找不到感觉了,网络上,电视上,各种电子设备上的内容当然不少,但都比不上读书,读书静心,读书能闻到古埃及的味道。关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是,多!看!书!毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程...原创 2019-06-05 16:43:18 · 198 阅读 · 0 评论 -
JAVA开发必看:12种Java中常用的语法糖深度解析
本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理什么是语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便...原创 2019-06-12 14:40:02 · 325 阅读 · 0 评论 -
11 个简单的 Java 性能调优技巧
大部分建议是针对Java的。但也有若干建议是与语言无关的,可以应用于所有应用程序和编程语言。在讨论专门针对Java的性能调优技巧之前,让我们先来看看通用技巧。1.在你知道必要之前不要优化这可能是最重要的性能调整技巧之一。你应该遵循常见的最佳实践做法并尝试高效地实现用例。但是,这并不意味着在你证明必要之前,你应该更换任何标准库或构建复杂的优化。在大多数情况下,过早优化不但会占用大量时间,...原创 2019-06-06 16:23:00 · 136 阅读 · 0 评论 -
深入理解java动态代理的实现机制
今天将从以下5方面来系统的学习一下java动态代理的实现机制:什么是代理 什么是静态代理 什么是动态代理 动态代理的实现机制 动态代理的使用场景1,什么是代理相信大家都有购买过火车票或者机票的经历,有的人在携程买,有的在飞猪,也有的在微信上买等等,这里的携程飞猪微信也好都是受铁路部的委托代理售卖火车票,这里的携程飞猪就是代理类,铁路部就是委托类,这就是代理2,什么是静态代理...原创 2019-06-13 11:57:12 · 131 阅读 · 0 评论 -
架构师不写代码,能行吗?
从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗?当我面试架构师职位的候选人时,我通常会问一个这样的问题:“你认为架构师是否应该做一些编码工作?”而通常会得到下面两个反馈之一:“不,我正在寻找一个不再需要编码的职位。”“我喜欢继续编码,至少是少量的编码,但可能不会有时间这样做。”与此类似,当问及其他一些架构师最近做过多...原创 2019-06-14 15:37:28 · 651 阅读 · 0 评论 -
对面试官来说,哪种Java程序员最受欢迎?
这段时间泡论坛,听到了很多跳槽程序员的困惑和迷茫。“工作太无聊了,每天没有成就感,想换却找不到方向……”“35岁了,曾经的同学都年薪百万了,自己还是不上不下的……”“晋升好难,看不到上升空间了……”为什么有些人可以突破职场天花板,拿到第一个100万?你和年薪百万的人相比,到底差的是什么?现在又到一年一度的跳槽求职高峰季,最近很多人问我,你们公司还缺人么,你们用哪些技术栈,有...原创 2019-06-19 15:27:57 · 196 阅读 · 0 评论 -
JAVA程序员要具备哪些知识体系?
作为一名Java程序员,你必须所具备的知识体系,小编特意总结为以下10点:1.语法语法需要很熟悉,面对任何编码期的IDE报错都能准备的根据报错信息知道自己犯了什么语法错误并且知道如何改正这个错误。2.命令你需要熟悉JDK的常用命令,至少也应该熟悉这些:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、na...原创 2019-06-10 11:39:08 · 513 阅读 · 0 评论