
java
文章平均质量分 76
探索未知的自己
人生一场,也遵循成劫、住劫、坏劫、空劫四劫循环
展开
-
apache ignite 分布式内存数据库
1 简介ignite是分布式内存网格的一种实现,其基于java平台,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法(基于h2引擎),可以看成是一个分布式内存数据库。2 基本使用ignite有两种使用方式: 一种是从官网下载release版本程序,解压运行部署,另外一种是通过嵌入式集成进现有应用程序。3 常用命令命令 功能 top 查看集群网络拓扑图 cache 查看整体缓存情况 config 查看节点配置 .原创 2021-08-08 12:28:37 · 2590 阅读 · 0 评论 -
java 8 构造函数,静态方法,方法使用
今天学习了java8下构造函数,静态方法,方法的新用法,并且分享出源码,大家共同学习import lombok.AllArgsConstructor;import lombok.Builder;import lombok.NoArgsConstructor;@AllArgsConstructor@NoArgsConstructor@Builderpublic class Person { private String firstName; private String l.原创 2021-07-24 21:54:52 · 343 阅读 · 0 评论 -
RabbitMQ集群原理介绍
一、RabbitMQ默认集群原理RabbitMQ本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的erlang.cookie来实现)。因此,RabbitMQ天然支持集群。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。下图为集群的示例:上面图中采用三个节点组成了一个RabbitMQ的集群,Exchange A(交换器)的元数据信息在所有节点上是一致的,而Queue(存放消息的队列)的完整数据则只会存在于它所创.原创 2021-04-30 14:43:59 · 330 阅读 · 0 评论 -
在Spring Boot项目中使用https(jks)
SpringBoot配置HTTPS在工作中时长会遇到配置https,SpringBoot自带的是tomcat服务器一般使用的.jks文件配置SSL加密。过程中会用到两个工具:OpenSSL,Keytool工具。OpenSSL:下载地址:http://slproweb.com/products/Win32OpenSSL.htmlkeytool工具,这是jdk自带的工具,在jdk的/bin目录下可以找到。自己生成CSRhttps供应商不会直接提供.jks文件。所以,我们就需要...原创 2021-04-30 14:28:26 · 8325 阅读 · 2 评论 -
idea 缓存bug 忽然程序标红报 “cannot access xxx“
项目场景:Idea项目开发过程中,突然出现莫名的找不到包错误,真是莫名其妙,百思不得其解问题描述:idea开发,突然出现:同一个包下的java代码,突然飘红,出现红色的波浪下划线,错误提示:cannot access com.xx......xx.class原因分析:同一个项目里面怎么会报这个错误呢?由此怀疑是idea本身的问题,自己google了一下发现有人在官网写了反馈,官网人员解答:重启试试但是自己测试发现:有时好使,但有时并不好使。根本原因:IDEA缓存出现问题,可以强.原创 2021-03-26 11:40:25 · 1189 阅读 · 0 评论 -
微服务治理架构图
原创 2020-12-19 16:33:51 · 749 阅读 · 1 评论 -
微服务治理需求设计
1 介绍服务治理(Service Governance)微服务中去掉业务剩下的都可以归属服务治理范畴,集成配置,后台服务集成DB,MQ,Cache,服务注册发现,软负载,日志,Metrics,调用链埋点,限流,熔断,安全和访问控制,REST/RPC,序列化/二进制/Json,底层通讯HTTP/TCP,统一异常处理,文档。下边主要介绍以下五点:1)注册和发现微服务中,如果微服务之间存在调用依赖,被依赖服务首先注册进注册中心,然后调用服务从注册中心获取服务地址信息,最后去调用依赖服务。2)服务监控微原创 2020-12-19 16:18:20 · 303 阅读 · 1 评论 -
物联网直播流媒体技术学习总结
https://www.cnblogs.com/yjmyzz/p/srs_study_1_install_push_and_pull_stream.htmlSRS(Simple RTMP Server) 是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群。一、安装官网提供了3种安装方式:从源码编译安装、利用doc...原创 2020-07-25 05:59:13 · 1073 阅读 · 0 评论 -
微信小程序开发流程详解
一 申请小程序账号1 找到微信小程序所在链接入口打开微信小程序所在公众平台链接地址,注意不是开发平台。https://mp.weixin.qq.com如图:2 注册小程序号码点击步骤1 的小程序进入如下图:注意 邮箱必须未被微信公众平台注册,未被微信开发平台注册,未被个人微信号绑定的邮箱。3 邮箱激活去填写的邮箱去激活,主要是进入邮箱后,点击里边的...原创 2020-03-04 18:35:47 · 4024 阅读 · 0 评论 -
java String 最长长度和占用内存大小
一 序String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE,String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535.二 介绍1、String的内部实现通过一个字符数组来维护字符序列,其声名如下:private final char value[];2所以,String的最大长度取决于字符数......原创 2019-10-25 12:04:59 · 33624 阅读 · 4 评论 -
java 自旋锁
一 大纲1 自旋锁定义2 自旋锁原理3 自旋锁时间阈值4 自旋锁分类5 自旋锁应用6 自旋锁开启二 自旋锁定义何谓自旋锁? 它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是...原创 2019-04-26 15:05:18 · 2519 阅读 · 0 评论 -
jvm G1 深度分析
大纲介绍第一,垃圾回收简介第二,G1介绍第三,G1 Young GC第四,G1 Mix GC第五,调优实践第六,G1相关处理参数第七,总结本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践和相关参数列表。一,垃圾回收简介首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单......原创 2018-11-06 13:56:40 · 21594 阅读 · 7 评论 -
TCC两阶段补偿型
TCC方案是可能是目前最火的一种柔性事务方案了。关于TCC(Try-Confirm-Cancel)的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以...转载 2018-11-06 13:54:16 · 13760 阅读 · 5 评论 -
系统性能指标体现和优化实践
一 前沿在互联网网站百花齐放的今天,网站响应速度是用户体验的第一要素,其重要性不言而喻,这里有几个关于响应时间的重要条件:用户在浏览网页时,不会注意到少于0.1秒的延迟; 少于1秒的延迟不会中断用户的正常思维, 但是一些延迟会被用户注意到; 延迟时间少于10秒,用户会继续等待响应; 延迟时间超过10秒后,用户将会放弃并开始其他操作;而在京东,“消费者第一”是公司的第一价值观,为了给...原创 2017-12-15 09:48:04 · 5028 阅读 · 0 评论 -
性能优化原则和优化模式
摘要性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处理线程数量会因为缓存过大而有所限制,从而降低系统吞吐量;为了提高服务可用性,对异常请求重复调...原创 2018-10-02 12:08:32 · 5216 阅读 · 1 评论 -
JDK ,CGLIB、Javassist、ASM之间的差别和Class文件格式(深度解析)
一 class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成...原创 2018-10-07 11:09:27 · 1518 阅读 · 0 评论 -
JVM性能调优(京东内部系统高性能优化思路)
一 简介jvm堆和栈空间设置堆空间:heap=young+old,既:堆空间=年轻代+老年代。其中年轻代:young=2*survivor+eden,既:年轻代=两个survivor空间+1个eden空间。堆空间保存了new出对象和数组的实际数据,也是gc最爱回收的。同时对对空间进行了分代管理: 年轻代:创建的新对象会被放入年轻代的eden空间,而年轻代gc采用复制算法,复制算法会把内存...原创 2018-09-30 14:14:27 · 3270 阅读 · 0 评论 -
高性能队列 disruptor(京东电商云替换jdk队列的实践分析)
1.Disruptor的背景 disruptor是LAMX架构的一种设计,而LAMX是一种新型的零售金融交易平台。disruptor主要用于大规模低延迟的高并发业务场景,其核心disruptor是一个基于事件源驱动机制的业务逻辑处理器,整个业务逻辑处理器完全运行在内存中,disruptor在无锁的网络情况下,实现了Queue的并发。2.Disruptor的适用场景 disrupto...原创 2018-09-30 14:45:13 · 1329 阅读 · 0 评论 -
Synchronized 机制深度分析
Synchronized在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬...原创 2018-09-30 17:06:08 · 2518 阅读 · 0 评论 -
微服务架构下的数据一致性保证
从2014年开始,微服务逐渐进入大家的实现,被认为是下一代实现信息化的有效手段。设计到系统,其中绕不开的就是数据一致性,从本地事务,到后来的分布式事务,都能够有效的保证数据一致性。但是在微服务架构中,这两种方式都不是最好的选择。1. 使用本地事务和分布式事务保证一致性在传统的单击应用中,最简单、最直接、最普遍的会使用一个关系型数据库,通过关系型数据库的事务保证数据的一致性。这种事务有四个基...原创 2018-09-30 17:30:08 · 7159 阅读 · 0 评论 -
CLH锁,MCS锁,自旋锁分析和实例
一、1、SMP(Symmetric Multi-Processor) SMP(Symmetric Multi-Processing)对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存,I/O等进行共享。 SMP能够保证内存一致性,但这些共享的资源很可能成为性能瓶颈,随着CPU数量的增加,每个CPU...原创 2018-09-30 17:09:26 · 1212 阅读 · 0 评论 -
JVM内存模型、指令重排、内存屏障概念解析
在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发线程中绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义分别是什么,等?一、什么是重排序请先看这样一段代码package com.cby....原创 2018-10-16 17:34:09 · 392 阅读 · 0 评论 -
Fork/Join 型线程池与 Work-Stealing 算法
JDK 1.7 时,标准类库添加了 ForkJoinPool,作为对 Fork/Join 型线程池的实现。Fork 在英文中有 分叉 的意思,而 Join有 合并 的意思。ForkJoinPool 的功能也是如此:Fork 将大任务分叉为多个小任务,然后让小任务执行,Join 是获得小任务的结果,然后进行合并,将合并的结果作为大任务的结果 —— 并且这会是一个递归的过程 —— 因为任务如果足够大,...原创 2018-10-17 14:16:31 · 1601 阅读 · 1 评论 -
BufferedImage 图片打水印
通过 java BufferedImage 程序给图片上打水印原创 2017-11-28 12:55:06 · 1851 阅读 · 0 评论