• JDK1.8新特性Stream和Collectors19个常用示例总结

    关于Stream和Collectors的用法,这应该是总结的最全的文章了,大家可以收藏一下。一:简介java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样就可以将多个操作依次串起来。Stream 的创建需要指定一个数据源,比如 java.u...

    Java 2020年04月21日 1364 0
  • 5 分钟搞懂布隆过滤器,过滤亿级数据

    在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要...

    Java 2020年04月20日 1622 0
  • JAVA 线上故障排查全套路

    线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往...

    Java 2020年04月20日 1405 0
  • 我们为什么需要图数据库?

    01 图数据库具有天然可解释性图数据库是基于图模型,对图数据进行存储、操作和访问的一项技术,即使没有专业的图论知识储备,也能轻松理解。它可以接受比实时查询更为复杂的分析需求,来挖掘图数据中的潜在价值。从分类上来说,图数据库属于 NoSQL 的一种。图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边。每个节点代表一个实体(一个人,地方,事物或其他数据),每条边代表两个节...

    Java 2020年04月20日 1757 0
  • (三)SpringBoot项目的日志配置

    SLF4j+Logback的组合一、SpringBoot的日志框架选用的什么技术?SpringBoot的日志框架选用的是目前市面上最流行的SLF4j+Logback的组合,SLF4j负责日志门面,Logback负责日志实现。日志门面SLF4j框架图谱视频解释上面的图谱:二、如何统一项目中所有的日志到SLF4j?项目中别的框架使用了各种日志,并非SLF4j,那么就需要统一日志,最...

    Java 2020年04月20日 1722 0
  • Springboot 2.0打包与自定义launch.script

    今天和首架聊到springboot的配置参数问题。他说,这些配置的参数,开发人员拷贝来拷贝去的,很容易出错,不如我们屏蔽一下吧。确实,经过工程师的ctrl+c和ctrl+v,大多数重要的参数已经面目全非,完全不是当初的模样。我见过太多这样的案例,所以我表示赞同。为什么复制粘贴也会出问题?有两个原因:因为提供者善变;因为使用者骄傲。我摸着首架的手说:可以开工了。需求和思考随着我们...

    Java 2020年04月19日 1650 0
  • 全方位解析Java的序列化

    前言相信大家日常开发中,经常看到Java对象“implements Serializable”。那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~什么是Java序列化?为什么需要序列化?序列化用途Java序列化常用API序列化的使用序列化底层日常开发序列化的注意点序列化常见面试题一、什么是Java序列化?序列化:把Java对象转换为字节序列的过程反序列:把字节序...

    Java 2020年04月19日 1212 0
  • MyBatis 3.5.4 新特性

    MyBatis 3.5.4 发布于 2020年2月3日,其中最大的特点是:摒弃了繁琐的@Results和@ConstructorArgs注解。MyBatis官网的说明是这样的:看似轻描淡写的一句话,却是对程序员双手的极大解放。不妨看下面的例子:@Results在MyBatis < 3.5.4版本的写法是这样的:@Results在MyBatis == 3.5.4版本已被取消...

    Java 2020年04月19日 2290 0
  • Mybatis中动态SQL中常用标签的通用写法示例

    1.用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语where语句中,表示以什么开始,比如以'('开始separator:表示在每次进行迭代时的分隔符,close 常用语where语句中...

    Java 2020年04月19日 1283 0
  • 绝了!Dataway让SpringBoot不在需要Controller、Service、DAO等了

    Dataway介绍Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。这种内嵌集成...

    Java 2020年04月19日 2527 0
  • Java如何在运行时动态加载Jar

    导读:在实际项目开发中,有时会遇到需动态加载jar包的应用场景。如将Flink的UDF自定义方法制作成方法库(既打成一个Jar),在提交给Flink集群的Job中动态加载jar便可使用。下面将举一个简单实现Java动态加载Jar的例子。环境准备动态加载Jar实现解析与拓展环境准备为了便于实现Demo,这里构建一个模块化Maven项目dynamicloading,项目包含:dyn...

    Java 2020年04月19日 10691 0
  • JVM性能调优的6大步骤,及关键调优参数详解

    一、JVM内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。2.导致Full GC的原因1)年老代(Tenured)被写满调优时尽量让对象在新生代GC时被回收、让对象在新生代...

    Java 2020年04月17日 1380 0
  • 你是否听说过 HashMap 在多线程环境下操作可能会导致程序死循环

    关于 HashMap,以前只知道它是非线程安全,在多线程环境下操作可能会导致程序死循环,CPU直接飙到100%的线上故障,还真是第一次听说……01、问题描述经常有些面试官会问,是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100% 的线上故障?关于这个问题,很多年前,在淘宝内网里就有很多的程序员发过这种帖子说一个CPU 被100%了,原因...

    Java 2020年04月17日 1350 0
  • 全新IDEA 2020.1体验!Java开发首席生产力担当

    就在前几天,Java软件开发神器 IDEA 2020.1 新版发布了:我第一时间在机子上更新并体验了几天,感觉还是有点香的!怎么硕呢,体验完新特性之后,不由的感叹一句:IDEA现在真的是越来越智能,越来越懂开发者了。UI/界面升级1、界面支持中文了汉化后的效果就是这个憨样子:各花入各眼,好坏就不做评判了,可以根据自己的喜好来调节。必须要说的是,这个中文汉化不是软件原生支持,而是...

    Java 2020年04月17日 1490 0
  • 发现 Mybatis plus的牛逼,解决单表操作!

    mybatis plusMyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以前我们使用mybatis的时候,我们会使用MyBatis Generator优先生成单表的增删改查操作,但当修改字段删除字段的时候,是个痛苦的事情,要修改xml的很多地方。为了解决这个问题,开源市场上出现了很...

    Java 2020年04月17日 3151 0
  • Java Spring: 解决Failed to configure a DataSource问题

    问题现在我们有一个Spring Boot项目,然后在`build.gradle`中加入了`spring-boot-starter-jdbc`依赖。dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc'}但是,当我们运行程序的会遇到这个错误:Description:F...

    Java 2020年04月17日 1411 0
  • PHP使用反向Ajax技术实现在线客服系统 PHP

    PHP使用反向Ajax技术实现在线客服系统

    反向Ajax技术,又称为服务器推技术,server push等。一般用于“在线客服”、“消息推送”、“即时通信”等功能中,比如新浪微博的私信功能,就是客户端不断的请求服务器并创建连接,去查看服务器有没有返回的信息,建立连接比较浪费服务器资源,下面我将根据客户端创建连接的不同性来介绍一下实现反向Ajax的三种思路。三种思路:1、间隔固定时间创建连接这种方式就是按照固定时间不断的去...

    PHP 2020年04月17日 1698 0
  • 微信公众号或小程序登录失败:invalid appsecret

    今天打开公众号,出现以下错误: 登录失败:invalid appsecret, view more at http://t.cn/RAEkdVq, hints: [ req_id: 5EHBS.wgE-jSQs9a ]应该是secret出现问题了,secret错误,换一下secret就可以了。

    PHP 2020年04月16日 11115 0
  • 单点登陆CAS的学习 PHP

    单点登陆CAS的学习

    单点登陆单点登陆这个词并不陌生,单点登陆(Single Sign On),简称为 SSO,在多个应用系统中,用户只需登陆一次就可以访问其他相互信用的系统,不要重复的登陆。CASCAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应...

    PHP 2020年04月15日 1533 0
  • 各种分布式ID生成方式,涨知识了

    一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID...

    Java 2020年04月14日 1484 0
  • 防重复提交解决方案!史上最全原理解析!

    传统方式(不推荐)首先我们介绍下之前传统的防重复提交方式:1:前端处理:思路如下:function dosubmit(){ //第一步,我们需要获取表单的提交按钮。 var btnSubmit = document.getElementById("submit"); //第二步,需要将表单提交按钮设置为不可用(或则直接隐藏,但是隐藏的话会被认为是BUG),这样就可以避免用户再次...

    Java 2020年04月14日 2463 1
  • 没想到!springboot 可以这样做全局日期格式化!

    说在前边最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手续办妥帖,寒暄过后送他们出公司,几个老哥临别时冲我鬼魅一笑,我顿时心里一紧有种不好的预感,这事绝对没有这么简单。等我接手这几个大佬的项目后,应验了我的预感,此刻我居然有点后悔,为啥送别之时没揍他们一顿!哈哈哈~ 而这种打人的冲动,在我开始优化几位老哥的项目时候,变得越来越强烈。有个坑技术部每个月都会...

    Java 2020年04月14日 1289 0
  • log4j:WARN No appenders could be found for logger

    今天从别的项目拷贝了一些代码到新的项目,启动的时候出现下面警告提示:2020-04-14 09:51:17.570 INFO 16612 --- [ main] c.d.c.ChatserverdemoApplication : Starting ChatserverdemoApplication on qxwu with PID 16...

    Java 2020年04月14日 1600 0
  • Jenkins 批量创建任务的三种方法

    最近,要搭建多套测试环境,需要把 Jenkins 中 dev 视图下的所有任务批量复制到 sit 等视图下。说明Jenkins 任务名称规则为:[测试环境标识]-[工程名称],如:dev-daodaotest,sit-daodaotest。视图中显示任务的正则表达式: [测试环境标识]-. ,如:dev-.*,sit-.*第一种:目录下批量复制Jenkins 的任务都是以 xm...

    Java 2020年04月13日 2511 0
  • Mybatis中三种关联关系的实现,看这篇就够了

    三种关联关系:一对多,一对一,多对多两种查询方式:嵌套查询,连接查询(也可称作:多表单独查询,多表连接查询)每一种关联关系都可以通过嵌套查询和连接查询来实现。嵌套查询相当于进行了两次查询,而连接查询将两张表连接然后再进行查询,这样只进行了一次查询由于数据表要对实体类进行映射,所以每一种关联关系中都需要在java类中定义属性来进行关联,可以通过如图关联:一对一查询数据表实现:通过...

    Java 2020年04月13日 2084 0
  • 高并发场景下锁的使用技巧

    锁类别不同的应用场景对锁的要求各不相同,我们先来看下锁都有哪些类别,这些锁之间有什么区别。悲观锁(synchronize)Java 中的重量级锁 synchronize数据库行锁乐观锁Java 中的轻量级锁 volatile 和 CAS数据库版本号分布式锁(Redis锁)乐观锁就好比说是你是一个生活态度乐观积极向上的人,总是往最好的情况去想,比如你每次去获取共享数据的时候会认为...

    Java 2020年04月13日 1291 0
  • php7代码性能常见优化技巧

    目录概述php7代码性能常见优化技巧参考文档概述这是关于php进阶到架构之php7性能优化学习的第一篇文章:php代码性能常见优化技巧。第一篇:php代码性能常见优化技巧php7代码性能常见优化技巧1.用单引号代替双引号来包含字符串,这样做会更快一些。因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会。$a = "hello,world";$b = 'hello,w...

    PHP 2020年04月12日 1871 0
  • Java多线程并发工具类-信号量Semaphore对象讲解

    Java多线程并发工具类-Semaphore对象讲解通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownLatch对象并对这两个对象进行了比较。我们发现这两个对象要么是做加法,要么是做减法的。那么有没有既做加法也做减法的呢?当然有了。Semaphore这个工具类就可以实现One out ...

    Java 2020年04月12日 1445 0
  • 深入分析线程池的实现原理

    一.概述线程池,顾名思义就是存放线程的池子,池子里存放了很多可以复用的线程。如果不用类似线程池的容器,每当我们需要执行用户任务的时候都去创建新的线程,任务执行完之后线程就被回收了,这样频繁地创建和销毁线程会浪费大量的系统资源。因此,线程池通过线程复用机制,并对线程进行统一管理,具有以下优点:降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗;提高响应速度。当有...

    Java 2020年04月11日 2021 0
  • 高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

    前言很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用。电商系统架构在电...

    Java 2020年04月11日 1346 0