
编程语言
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计时攻击在Spring Boot中该如何防御?
很多人吐槽 Spring Security 比 Shiro 重量级,这个重量级不是凭空来的,重量有重量的好处,就是它提供了更为强大的防护功能。比如我最近看到的一段代码:protectedfinalUserDetailsretrieveUser(Stringusername,UsernamePasswordAuthenticationTokenauthentication)throwsAuthenticationException{prepareTimingAttack...原创 2020-09-03 14:22:49 · 477 阅读 · 1 评论 -
这篇不可不读!监控系统选型你真的了解?
转自:骆俊武之前,我写过几篇有关「线上问题排查」的文章,文中附带了一些监控图,有些读者对此很感兴趣,问我监控系统选型上有没有好的建议?目前我所经历的几家公司,监控系统都是自研的。其实业界有很多优秀的开源产品可供选择,能满足绝大部分的监控需求,如果能从中选择一款满足企业当下的诉求,显然最省时省力。这篇文章,我将对监控体系的基础知识、原理和架构做一次系统性整理,同时还会对几款最常用的开源监控产品做下介绍,以便大家选型时参考。内容包括3部分: 必知必会的监控基础知识 主流监控系.原创 2020-09-01 13:14:32 · 570 阅读 · 0 评论 -
手撕Java集合源码,这次总算彻底搞懂!
Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。本文仅探讨Collection接口及其子接口、实现类。一、Collection接口介绍1、Collection接口继承树2、Collection接口是Set、List和Queue接口的父原创 2020-08-31 15:08:21 · 638 阅读 · 0 评论 -
大佬看了直呼内行,你当初Java刚入门是否也是这样写代码?
1.集成开发环境IDEA是一个专门针对Java的集成开发工具(IDE),由Java语言编写。所以,需要有JRE运行环境并配置好环境变量。它可以极大地提升我们的开发效率。可以自动编译,检查错误。2.创建项目创建项目-创建模块-创建包-创建类(1)创建一个工程(2)jdk版本我这里是1.7的(3)我命名为java_Web(4)创建一个Module我命名为day01(5)创建包和类3. 编写程序Java第一个程序...原创 2020-08-29 22:19:50 · 409 阅读 · 0 评论 -
高并发与多线程关系与区别
一、什么是高并发 高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求、数据库的操作等。二、高并发的处理指标高并发相关常用的一些指标有:响应时间、吞吐量、每秒查询率QPS、并发用户数1、响应时间(Response Time)响应时间:系统对请求做出响应的时间。例如系统处...原创 2020-08-15 23:19:51 · 984 阅读 · 0 评论 -
不建议Java程序员用阿里巴巴规范,而使用GoogleGuava编程的原因
前言阿里巴巴出了一本Java规范,在国内java开发眼里被赋予了神圣的殿堂,我不推荐你用阿里巴巴的开发手册。目前Google Guava在实际应用中非常广泛,本篇博客将以博主对 Guava 使用的认识以及在项目中的经验来给大家分享!学习使用 Google Guava可以让你快乐编程,写出优雅的 Java 代码,在业务允许的条件下,我推荐使用 Guava编程!Google 出品 Java 编码规范,科学又权威,强烈推荐!Joiner/Splitter/CharMatcherJDK提供的Stri原创 2020-07-17 15:18:52 · 478 阅读 · 0 评论 -
java,除以0一定会崩溃吗?
System.out.println("1/0=" + 1/0);大叔的灵魂拷问:上面的代码会崩溃吗?如果不会,会输出什么呢?上面的代码会崩溃吗?如果不会,会输出什么呢?上面的代码会崩溃吗?如果不会,会输出什么呢?运行直接崩溃。## 代码2我们再来看一行代码:System.out.println("1.0/0=" + 1.0/0);大叔的灵魂拷问:会崩溃吗?如果不会,会输出什么呢?会崩溃吗?如果不会,会输出什么呢?会崩溃吗?如果不会,会输出什么呢..原创 2020-07-15 14:32:54 · 805 阅读 · 0 评论 -
Java程序员,除了最常用技术还需掌握哪些技术才能游刃有余
有人私信我说,除了要掌握的20%以外还要掌握些什么知识才能游刃有余。下面说说我接触(使用)过、的东西吧。java以分布式应用丰富的生态闻名,在分布式系统中逃不过CAP的抉择。早早了解一些分布式一致性协议paxos、raft等。学习zookeeper的原理和使用场景(metadata、分布式锁、leaderEletion... etc)RPC框架在SOA架构中起着重要的作用,好好探究终是有好处的,在这里推荐阿里巴巴的dubbo框架,同时会netty、mina等网络库Hadoop系列 Storm原创 2020-07-12 19:35:18 · 534 阅读 · 0 评论 -
教你如何快速开发一个Dubbo应用
导读:在分布式系统中,远程调用是最基础也是最重要的基石。历史上,曾经先后出现过 CORBA、RMI、EJB、WebService 等技术和规范,在服务化以及微服务日趋流行的今天,更多的被广泛使用的是包括 gRPC、Finagle、以及国内的 Dubbo 为代表的轻量级框架。由于这些框架多半与服务注册中心、配置中心等配套设施结合使用,用来作为系统分布式服务化的场景,因此这类框架又被统称为服务框架。本文将以 Dubbo 为例,介绍如何快速开发一个 Dubbo 应用。背景本文将以 Dubbo 为例.原创 2020-07-12 19:30:31 · 641 阅读 · 0 评论 -
知道这30+款在线工具,我的工作效率提升了600%!
Perl 之父 Larry Wall 曾经在自己的《Programming Perl》一书中提到过:“优秀程序员有3种美德: 懒惰、急躁和傲慢"。懒惰,作为程序员美德的第一个要素。Larry Wall 所说程序员应该具备的懒惰,并不是安于现状、不思进取。而是一种为了达到同样甚至更好的目标,而付出最少的时间或者精力的行为。一个懒惰的程序员会尽量使自己的代码即实用又有很好的可读性,这样可以节省很多后面的维护的成本。一个懒惰的程序员会尽力完善代码中的注释及文档,以免别人问自己太过问题。一个懒惰的程序员会擅长使原创 2020-07-09 14:14:02 · 508 阅读 · 0 评论 -
分享一份GitHub上120K Stars国内第一的Java多线程PDF
随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。本书采用Java (JDK1.8) 语言和UML为描述语言,并结合作者多年工作经历的相关实战案例,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的事项以及各个模式的可原创 2020-07-08 14:56:43 · 1327 阅读 · 0 评论 -
总是写“烂代码”?强烈推荐你使用这款 IDEA 插件!
idea集成sonar的代码检查,实现可以在提交代码前就检查你的代码,而不是将代码提交之后,之后再去检查。Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变原创 2020-06-09 15:37:20 · 433 阅读 · 0 评论 -
SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架其实就这么简单
一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置部署都变得简单,越来越多的互联网公司已经选择SpringBoot作为微服务的入门级微框架。Mybatis-Plus是一个 Mybatis 的增强工具,有代码生成器,并且提供了类似hibernate的单表CRUD操作,又保留了mybatis的特性支持定制化 SQL。Apache Shiro是一款强大易用的Java安全框架,Java官方推荐使用Shiro,它比Spring Security原创 2020-06-07 18:21:28 · 588 阅读 · 0 评论 -
这10种常见的软件架构模式你都知道吗?
大家有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构。架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。一. 分层模式这种模式也称为多层体系架构模式。它可以用来构造可以分解为子任务组的程序,每个子任务都处于一个特定的抽象级别。每个层都为下一个提供更高层次服务。.原创 2020-06-03 15:47:49 · 570 阅读 · 0 评论 -
开发速度慢?没关系安装这16个插件开发速度直接起飞!
当前使用的IDEA版本是2020.1。随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐。以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件。1google-java-format 代码自动格式化简介:google-java-format插件可以帮助我们不通过对应的快捷键就可以实现特定方式下自动格式化代码。2Translation简介:翻译插件,支持google翻译、百度翻译、有道翻译。使用:快捷键Ctrl ...原创 2020-05-31 20:53:58 · 541 阅读 · 0 评论 -
史上最快理解Spring Cloud Gateway 全局通用异常处理方法!
为什么需要全局异常处理在传统 Spring Boot 应用中, 我们 @ControllerAdvice 来处理全局的异常,进行统一包装返回// 摘至 spring cloud alibaba console 模块处理@ControllerAdvicepublic class ConsoleExceptionHandler { @ExceptionHandler(AccessException.class) private ResponseEntity<String&原创 2020-05-30 22:53:38 · 1783 阅读 · 0 评论 -
常见的限流算法须知!
我们常见的限流算法有四种:计数器(固定窗口)算法、滑动窗口算法、漏桶算法、令牌桶算法。为什么要限流资源是有限的,我们的系统的处理能力也是有限的,对于那些已经超出系统处理能力的请求我们应该尽可能早的识别出来并让其等待或拒绝这些请求。如果当大流量进入系统的时候不进行限流,那么将超出系统的负载,这种情况会导致服务异常、宕机等情况的出现。常见的四种限流算法1.计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个原创 2020-05-30 16:19:48 · 475 阅读 · 0 评论 -
史上最快教程Docker搭建RocketMQ!!
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。至于有多简单呢,在本机已有Docker环境的情况下只需要三步即可。 从github上面拉取项目(https://github.com/modouxiansheng/about-docker) 修改broker.conf中的brokerIP1参数,修改为本机IP 进入docker-compose.yml文件所在路径,执行docker-compose .原创 2020-05-30 14:39:10 · 874 阅读 · 0 评论 -
一文教你学会 Java常用业务代码——(IO篇)
本篇文章对日常开发中常用的Java IO场景进行整理,涉及功能有:判断目录/文件、创建目录/文件、获取文件属性、通过文件头判断文件是否为Excel、字节流/字符流读取文件、字节流/字符流写入文件、对象序列化反序列化、图片增加水印。FileJava中File类提供了一系列方法让开发人员对于目录文件进行操作,通常是对目录文件增删: 判断File是文件还是目录 //===判断File是文件还是目录,目录则递归遍历 public static void isDir(File fi原创 2020-05-30 14:29:14 · 777 阅读 · 0 评论 -
java基础|java中的二进制运算以使用场景
本文知识点 java中用二进制使用场景 java中声明二进制数据 java中拼接二进制数据 二进制的使用场景做标识用二进制就是只有0和1这两个数.这和我们现实很多场景都类似, 如男/女,是/否,是否已读等.那么对一个主体的描述, 我们可以有一个二进制串来标识一系列的flag.(小刀已改名为凑心啦,至于原因嘛, 因为现在在做一个小程序, 估计不久后会和大家见面)如有一个心,同时还有一个描述的二进制串 1101. 第一个1代表男,第二个1代表矮.第三个0 代表.原创 2020-05-29 16:34:08 · 717 阅读 · 0 评论 -
JVM | GC收集器概念篇
本文知识点 STW(Stop the world)的概念 安全点的概念 GCRoots的概念 Remember Set (记忆集) 本篇内容以概念为主,先了解概念,知道有哪些名词,东西, 再实战看里面的东西去加深理解GC总述java在运行时,生成的对象都在堆里存放着,有些对象的生命周期很短,只几行代码运行完就没用了.没用了之后不能放任他在堆里, 要进行回收,把空间空出来,给后面的对象.我们常用收拾屋子来比喻jvm清理堆.这里, 我们不仅仅有个房子, 我们还原创 2020-05-29 16:31:25 · 360 阅读 · 0 评论 -
JVM | 运行时常量池和字符串常量池及intern()
本文知识点这一块的知识点,一直都是最为混乱的,网上很多博客有的都自相矛盾,因此,这一块需要深入学习,本文以JDK11为基础,尽量参考官方文档 静态常量池 运行时常量池及字符串的引用 各种String语句变量的地址 参考文档:https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-5.html#jvms-5.1静态常量池静态常量池也常常称做为class常量池,是每个.class文件都有的,如测试代码如下:原创 2020-05-29 16:29:52 · 754 阅读 · 0 评论 -
JVM | 使用HSDB探秘运行时数据区
本文知识点 HSDB的使用 HSDB查看栈信息 HSDB查看堆信息 Class对象,static对象,Klass的关系 需要注意, 本文所用JDK环境为JDK11,网上有很多博客是基于JDK1.7, 两者的方法区的实现不一样,所以有些数据展示也会不同. HSDB的使用HSDB全称是HotSpotDebugger, HotSpot虚拟机的调试工具,在使用的时候,需要程序处在暂停的状态,可以直接使用Idea的debug工具. 使用HSDB可以看到堆栈里面相关原创 2020-05-29 16:28:18 · 1097 阅读 · 0 评论 -
JVM | 运行时数据区的JVM规范
本文知识点 JVM虚拟机制定的规范 方法区,永久代,元空间的区别 总述在这一块的学习时, 我们容易陷入一个误区,就是一上来就直接搜索运行时数据区, 网上有些文章对虚拟机规范和HOTSPOT实现没有区分开,导致有时候大家看的两篇文章解释尽不一样. 自己也容易糊涂. 所以本篇特地将两个拆开讲. 且尽量以官方文档为准我们可以把jvm规范理解成接口. 就是要这些东西, 然后不同的虚拟机厂商有不同的实现方案. 如方法区,hotspot 用了1.7及以前用了永久代, 1.8及以后用了元数据区原创 2020-05-29 16:26:44 · 454 阅读 · 0 评论 -
简单就能了解JVM | 类的初始化及新建过程
本文知识点 类的状态变化 <clinit> 方法 实例对象的创建 类的状态变化类的初始化主要经历加载->链接(验证,准备,解析)->初始化这些阶段,与JVM中相对应的状态如下图所示instanceKlass.hppallocated: 已分配,但尚未链接loaded: 已加载,并插入到JVM内部类层次体系中,但尚未链接linked: 已链接,但尚未初始化being_initialized: 初始化中fully_initia原创 2020-05-29 16:23:20 · 424 阅读 · 0 评论 -
简单就能了解JVM | OOP-Klass 二分模型
本文知识点 OOP和klass的概念 OOP和Klass源码 HSDB的使用 OOP和klass的概念OOPS: 即普通对象指针,用来描述对象实例信息Klass: Java类的C++对等体,用来描述Java类总体上是多个OOP和一个Klass是对应的. 相当于一个类可以有多个实例A a = new A() ; A a1 = new A();a,a1 分别对应着不同的OOP, 对应着同一个KlassOOP和Klass源码OOP中有很多模块,其中..原创 2020-05-29 16:18:30 · 700 阅读 · 0 评论