java
文章平均质量分 74
码农研习社
这个作者很懒,什么都没留下…
展开
-
搭建百万连接服务,使用netty完成websocke的推送
一)使用websocket ① 介绍 webSocket协议是基于TCP的一种新的网络协议。他的出现实现了网络和浏览器全双工通信,允许服务器主动发送信息给客户端。客户端 给 服务器发消息是半双工,服务器给客户端也发送消息就是全双工。多客户端多语言多浏览器支持:浏览器,php,Java,ruby,nginx,python,Tomcat,erlang,.net等等。 ② websocket实现 服务端和客户端交流,通过的是websocket这种协议,内部传输的协议,通过w.原创 2021-05-28 02:35:28 · 1114 阅读 · 1 评论 -
谈谈双亲委派模型的第四次破坏-模块化
前言JDK9引入了Java模块化系统(Java Platform Moudle System)来实现可配置的封装隔离机制,同时JVM对类加载的架构也做出了调整,也就是双亲委派模型的第四次破坏。前三次破坏分别是:双亲委派模型推出之前,SPI机制,以及OSGI为代表的热替换机制,这里不细说。双亲委派模型 简介在JDK9引入之前,绝大多数Java程序会用下面三个类加载器进行加载启动类加载器(Bootstrap Class Loader):由C++编写,负责加载jrelib目录下的类,例如最基本的O原创 2021-05-21 02:27:00 · 304 阅读 · 0 评论 -
多图详解!10大高性能开发核心技术
程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术-线程池技术-无锁编程技术-进程间通信技术-RPC&&序列化技术-数据库索引技术-缓存技术&&布隆过滤器-全文搜索技术-负载均衡技术准备好了吗,坐稳了,发车!首先,我们从最...原创 2021-05-20 02:20:05 · 698 阅读 · 0 评论 -
干货,使用布隆过滤器实现高效缓存!
前言本文主要描述,使用布隆过滤实现高效缓存。文中采用数组做为缓存,如果需要高并发命中,则需将文中的数组换成Redis数据库。布隆过滤布隆缓存的创建过程如下:1,先定义缓存bit数组(BitArray),数组的长度就是缓存数据的最大数量。2,然后将字符串通过哈希运算,求出它的HashCode。3,然后将HashCode作为伪随机数生成器(Random)的种子,生成一个小于最大数量的正数x。4,然后将这x作为缓存数组的索引,将数组[x]的值设置为true。布隆过滤将获取到的字原创 2021-05-16 02:48:41 · 307 阅读 · 0 评论 -
java 编程题 9 道
1、 为了节约用水,某收费站根据有关规定,按如下算法收取水费:用水每月在 15 吨以下按每吨3 元计算,在 15 吨到 30 吨之间,则超过 15 吨的部分要按每吨 6 元技术,如果每月水超过 30 吨, 则一律按每吨按8元技术.工业用水一律按每吨7元计算,现要求设计一个程序,输入用水吨数,并按用水类型计算出水费.其如图所示操作界面: 用水吨数 34 家庭用水 工业用水 所交水费 272.0 计算 退出import java.awt.*;import jav...原创 2021-05-12 06:08:01 · 420 阅读 · 0 评论 -
年终总结:2021年最全java经典面试真题解析100道,请查收!
2021年,给大家整理了今年来最经典的面试真题100道,每个题目都有详细的解答,收集了java基础,容器,多线程,反射,对象拷贝,Java Web,异常,网络,设计模式,Spring / Spring MVC,等专题的经典面试真题,和详细分析。没道题目都详细讲解,文章过长,大家一定要耐心的看完哦。一、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Ru原创 2021-05-12 05:49:10 · 375 阅读 · 0 评论 -
java 编程题 90 道
1.完成数组 int[] a = {100,40, 60, 87, 34, 11, 56, 0}的快速排序、 冒泡排序;2.采用折半查找的算法, 在数组中查询到某个数;3.在中文环境下, 有字符串, 将其每个字节的数据相加求和。4.将一个数组中值=0 的项去掉,将不为 0 的值存入一个新的数组,比如:int a[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};生成的新数组为:int b[]={1,3,4,5,6,6,5,4,7,6,7,5}5.定义 10 个长度的 Stude原创 2021-05-12 05:47:16 · 976 阅读 · 0 评论 -
Java 编程题 12道
1、 编写一个 Java 程序在屏幕上输出“你好!”。//programme name Helloworld.java public class Helloworld { public static void main(String args[]) { System.out.print ("你好! " ); } } 2. 编写一个 Java 程序, 用 if-else 语句判断某年份是否为闰年。 // P.原创 2021-05-12 05:37:35 · 622 阅读 · 0 评论 -
JAVA 基础编程练习500题
【程序 1】题目: 古典问题: 有一对兔子, 从出生后第 3 个月 起每个月 都生一对兔子, 小兔子长到第三个月 后每个月又生一对兔子, 假如兔子都不死, 问每个月 的兔子对数为多少?程序分析: 兔子的规律为数列1,1,2,3,5,8, 13, 21....做这种题目, 最好的做法就是找出规律, 跟高中的数列一样本题有: a[n]=a[n-1]+a[n-1],而第一第二项都知道了, 后面的值也可以求得public class Programme1 { public st...原创 2021-05-12 04:51:14 · 1526 阅读 · 0 评论 -
JVM - 指令集大全
JVM基本指令iconst_1 int型常量值1进栈 bipush 将一个byte型常量值推送至栈顶 iload_1 第二个int型局部变量进栈,从0开始计数 istore_1 将栈顶int型数值存入第二个局部变量,从0开始计数 iadd 栈顶两int型数值相加,并且结果进栈 return 当前方法返回void getstatic 获取指定类的静态域,并将其值压入栈顶 putstatic 为指定的类的静态域赋值 invokevirtual 调用实例方法 invokespecial 调用原创 2021-04-22 18:42:36 · 230 阅读 · 0 评论 -
IntelliJ IDEA 2021.1正式发布!快来看看又有哪些神仙功能加入
喜欢IntelliJ的玩家这两天一定很开心,因为IntelliJ IDEA 2021.1 已经正式发布!新版本着实让人眼前一亮,IntelliJ IDEA 2021.1 增加了对最新的Java 16 的支持,同时用户可以在 WSL 2 中进行JAVA项目的工作,并且可以使用Space 集成,从 IDE 内部使用 Code With Me 进行协作开发,并增加了IDE 内部的 HTML 预览窗口,也增加了在 SSH 主机和 Docker 容器中运行代码的选项及其他一实用功能的更新。让我们一起来具体看下吧:原创 2021-04-16 01:57:16 · 839 阅读 · 0 评论 -
redis集群报错:(error) CLUSTERDOWN The cluster is down
更换了电脑,把原来的电脑上的虚拟机复制到了新电脑上,启动虚拟机上的centos系统,然后启动redis集群(redis5版本),发现集群可以启动,redis进程也有,但是连接集群中的任意节点就报错,如下报错了,[ERR] Not all 16384 slots are covered by nodes.修复,redis-cli --cluster fix 127.0.0.1:6379输出如下已修复OK,问题完美解决!...原创 2021-04-10 22:20:37 · 302 阅读 · 0 评论 -
OpenJDK与JDK的区别分析
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与Sun JDK有什么关系和区别呢?历史上的原因是,OpenJDK是JDK的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,OpenJDK已经成为JDK7的主干开发,Sun JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发原创 2021-04-10 00:00:28 · 239 阅读 · 0 评论 -
叹为观止!GitHub标星过万,腾讯技术官发布的神仙文档:图解网络
获取相关视频资料: (关注“Java高级架构师”,回复“2110”获得:网盘密码)前言滑动窗口的定义: 1.“窗口”对应的是一段可以被发送的字节序列,其连续的范围称为窗口;2.“滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。 滑动窗口的作用: 是一种流量控制方法,该协议允许发送方在停止等待确认前可以连续发送发个分组。由于发送方不必每发送一个分组就停下来等待确认,因此该协议可以加速数据的传输。 在了解具体的例子之前我们先来...原创 2021-04-09 23:32:01 · 234 阅读 · 0 评论 -
实战 | SpringBoot + Redis 分布式锁:模拟抢单
1SpringBoot + Redis 分布式锁:模拟抢单本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁 如何删除锁 模拟抢单动作(10w个人开抢) jedis的nx生成锁 对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:<dependency&g.原创 2021-04-09 23:03:58 · 135 阅读 · 0 评论 -
拼多多面试:如何用Redis统计独立用户的访问量?
全网最全1500份Java学习资料、500份BAT面试真题:关注公众号"java高级架构师",输入“面试题”,获取提取码! 众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计...原创 2021-04-09 22:57:46 · 107 阅读 · 0 评论 -
编写程序,读入一个三角形的三条边,计算这个三角形的面积,并输出结果。(提示:设三角形的三条边分别为a,b,c,则面积计算公式 s=(a+b+c)/2) 面积=根号下s(s-a)(s-b)(s-c))
import java.util.Scanner;public class San { double x; double y; double z; San(double x,double y,double z) { this.x=x; this.y=y; this.z=z; } boolean Triangle() {//分析三边是否能.原创 2021-04-09 22:31:35 · 1893 阅读 · 0 评论 -
Java根据年龄数值输出年龄段
根据年龄数值输出年龄段题目内容:根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)Java代码实现import java.util.Scanner;public static void main0(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("请输入这个人的年龄大小:");...原创 2021-04-09 01:04:14 · 1690 阅读 · 0 评论 -
阿里P9纯手打亿级高并发系统设计手册,走进阿里的架构世界
淘宝双11,618的京东节,滴滴打车高峰如何抗住亿级的并发量?这一份阿里P9纯手打的高并发系统设计手册帮你解决!这份手册分为基础篇、数据库篇、缓存篇、消息队列篇、分布式服务篇、维护篇、实战篇新鲜出炉的学习手册!下面我只默默截图不说话!基础篇数据库篇缓存篇消息队列篇需要免费领取这份阿里P9纯手打的阿里亿级高并发系统设计手册的朋友麻烦帮忙...原创 2021-04-09 00:23:41 · 473 阅读 · 0 评论 -
详细讲解!RabbitMQ如何防止数据丢失,看这篇就够了
一、分析数据丢失的原因分析RabbitMQ消息丢失的情况,不妨先看看一条消息从生产者发送到消费者消费的过程:可以看出,一条消息整个过程要经历两次的网络传输:从生产者发送到RabbitMQ服务器,从RabbitMQ服务器发送到消费者。在消费者未消费前存储在队列(Queue)中。所以可以知道,有三个场景下是会发生消息丢失的:存储在队列中,如果队列没有对消息持久化,RabbitMQ服务器宕机重启会丢失数据。 生产者发送消息到RabbitMQ服务器过程中,RabbitMQ服...原创 2021-04-08 22:59:24 · 338 阅读 · 0 评论 -
冷知识:Java语言层面和JVM层面方法特征签名的区别
方法特征签名用于区分两个不同方法的语法符号。Java语言层面特征签名 = 方法名 + 参数类型 + 参数顺序;JVM层面特征签名 = 方法名 + 参数类型 + 参数顺序 + 返回值类型;注意:如果存在类型变量或参数化类型(即泛型),则两个层面的方法特征签名还包括类型变量或参数化类型编译未擦除类型前的信息(FormalTypeParametersopt),以及抛出的异常信息(ThrowsSignature)。Java语言重载一个方法,需要ava语言层面的方法特征签名不同,...原创 2021-04-07 13:10:29 · 119 阅读 · 0 评论 -
限流降级神器-哨兵(sentinel)原理分析
Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异同呢?Sentinel官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此 链接 查看。 对比内容 Sentinel Hystrix 隔离策略原创 2021-04-06 22:55:27 · 476 阅读 · 0 评论 -
秒杀场景下如何保证数据一致性?就这个问题我给出了最详细的方案
本文主要讨论秒杀场景的解决方案。什么是秒杀?从字面意思理解,所谓秒杀,就是在极短时间内,大量的请求涌入,处理不当时容易出现服务崩溃或数据不一致等问题的高并发场景。常见的秒杀场景有淘宝双十一、网约车司机抢单、12306抢票等等。高并发场景下秒杀超卖Bug复现在这里准备了一个商品秒杀的小案例,1.按照正常的逻辑编写代码,请求进来先查库存,库存大于0时扣减库存,然后执行其他订单逻辑业务代码;/** * 商品秒杀 */@Servicepublic class GoodsOr.原创 2021-04-01 00:28:56 · 708 阅读 · 1 评论 -
已拿到8个Offer!阿里巴巴Java面试参考指南(泰山版)
楼主今天在写这篇文章的时候,已经收到了第八家公司HR的电话,给的是27K+14薪,虽然涨薪才7K,但是要知道这是我突击18天的面试准备,许多粉丝就很好奇,我是如何拿到这么好的Offer的,是因为我闭关“修炼”了18天的阿里巴巴面试参考指南(泰山版)这份阿里巴巴3月份刚刚发布的最新参考指南,许多公司也奉为“神册”!楼主今天就为大家开源出来,一起拿高薪Offer!由于文章篇幅有限制,下面只能为大家展示部分内容供大家参考~阿里巴巴高并发秒杀架构XA两阶段提交...原创 2021-03-31 01:22:17 · 737 阅读 · 0 评论 -
内容安全性-具有spring安全性的策略
虽然SpringSecurity可以通过内置内容安全策略(CSP)配置,但它默认将配置策略指定为字符串配置,而不是动态构建它。但是在有些情况下,我们需要更灵活的配置方式。特别是,CSP阻止用户使用内联javascript,因为它引入了漏洞。如果你真的需要它,你可以用unsafe-inline但这是一个糟糕的方法,因为它否定了CSP的全部观点。在该页上提供的替代方法是使用hash或nonce.如果您使用的是.and().headers().contentSecurityPolicy(policy)。策原创 2021-03-30 23:42:04 · 497 阅读 · 0 评论 -
Java16正式发布,你还在用JDK8吗?
Java 凭借自身不断提高平台性能、稳定性和安全性的能力,一直是开发人员中最流行的编程语言。IDC 的最新报告“Java Turns 25”显示,超过 900 万名开发人员(全球专职开发人员中的 69%)在使用 Java——比其他任何语言都多。甲骨文还在继续探索 Java 的持续创新之路,并自豪地宣布 Java 16 正式发布,这也是我们转向六个月发布周期后的第七个特性版本。这种可预测水平使开发人员可以更轻松地管理他们对创新的采用计划。主要特性Vector API(孵化)提升了Java在CP原创 2021-03-19 21:51:20 · 4403 阅读 · 11 评论 -
Zookeeper的安装和配置(集群模式)
1、下载与解压 Zookeeper下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下载完成以后解压到一个特定目录同步时间所有节点的时间,并关闭防火墙$ ntpdate -u ntp.sjtu.edu.cn$ service iptables stop2、Zooker配置 Zookeeper集群模式至少需要3台主机进行搭建,准备三台主机Serve1、Server2、Server3 » 在Zookeep.原创 2021-03-18 02:35:03 · 708 阅读 · 1 评论 -
Spring Boot 中使用 MongoDB 增删改查
本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查1、什么是MongoDB ?MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。...原创 2021-03-16 01:24:02 · 1243 阅读 · 2 评论 -
spring boot集成mongodb的增删改查
添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>properties配置spring.data.mongodb.host=127.0.0.1spring.data.mongodb.por原创 2021-03-16 01:01:55 · 763 阅读 · 3 评论 -
Redis 常见延迟问题排查手册!附33条优化建议
Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。Redis变慢了?常见延迟问题定位与分析下面我们就来分析一下Redis在使用过程中,经常会遇到的延迟问题以及如何定位和分析。使用复杂度高的命令如果在使用Redis时,发现访问延迟突然增大,如何进行排查...原创 2021-03-15 21:46:53 · 417 阅读 · 0 评论 -
Java-五种线程池,四种拒绝策略,三种阻塞队列
三种阻塞队列BlockingQueue<Runnable>workQueue = null;workQueue = new ArrayBlockingQueue<>(5);//基于数组的先进先出队列,有界workQueue = new LinkedBlockingQueue<>();//基于链表的先进先出队列,无界workQueue = new SynchronousQueue<>();//无缓冲的等待队列,无界四种拒绝策略Rejec.原创 2021-03-09 16:22:48 · 1812 阅读 · 6 评论 -
高达几十万并发的写入,Kafka是到底如何实现的?
开篇在初识kafka 一文中讲了使用MQ(消息队列)来设计系统带来的好处:业务解耦、流量削峰、灵活扩展当下流行的MQ有很多,因为我们公司在技术选型上选择了使用Kafka,所以我就整理了一篇关于Kafka的入门知识。通过技术选型 我们对业界主流的MQ进行了对比,Kakfa最大的优点就是吞吐量高。Kafka是高吞吐低延迟的高并发、高性能的消息中间件,在大数据领域有极为广泛的运用。配置良好的Kafka集群甚至可以做到每秒几十万、上百万的超高并发写入。那么Kafka是如何做到这么高的吞吐量和性能的.原创 2021-03-09 01:16:13 · 240 阅读 · 0 评论 -
63分59秒1000亿,如何抗住双11高并发流量?
今年双 11 全民购物狂欢节进入第十一个年头,1 分 36 秒,交易额冲到 100亿!比 2018 年快了近 30秒,比 2017 年快了近 1 分半!这个速度再次刷新天猫双 11 成交总额破 100 亿的纪录。那么如何抗住双 11 高并发流量?接下来让我们一起来聊聊高可用的“大杀器”限流降级技术。服务等级协议我们常说的 N 个 9,就是对 SLA 的一个描述。SLA 全称是 Service Level Agreement,翻译为服务水平协议,也称服务等级协议,它表明了公...转载 2021-03-09 01:10:54 · 242 阅读 · 0 评论 -
腾讯内部全链路追踪系统“天机阁“的设计与实现
来源 | 公众号:白码啸西风传说中天机阁里有一台掌控世间一切的机器,万物运行由此产生。本文的“天机阁”是一个基于链路跟踪的监控系统,后台开发人员能够通过“天机阁”洞察“天机”,快速解决问题。摘要为了支撑日益增长的庞大业务量,业界大量使用微服务架构。服务按照不同的维度进行拆分,互联网应用构建在不同的软件模块集上,这些软件模块可能是由不同的团队开发、可能使用不同的编程语言来实现、可能布在了几千台服务器,横跨多个不同的数据中心,分布式系统变得日趋复杂。如何快速进行故障定位?如何准确进行容量评估?如原创 2020-09-16 12:40:41 · 2587 阅读 · 0 评论