- 博客(80)
- 资源 (7)
- 收藏
- 关注
原创 从Redis的集群设计中能够得到哪些启发?
聊技术,不止于技术在大型的分布式系统中,我们都会听到集群的概念,比如Redis集群、ES集群等。那么集群主要的作用是什么呢?个人看来集群主要做了这几件事,或者说集群的设计主要为了解决如下问题:(1) 可扩展,好的集群设计可以实现近乎线性扩展,即存储和性能随着硬件的增加而线性增长;(2) 高可用,能够在部分节点故障时实现故障转移。今天让我们一起来看看Redis集群是如何设计来解决可扩展及高可用问题的,从中我们又能得到哪些启发。Redis集群的可扩展设计Redis集群引入了hash slot的概
2021-09-04 22:02:38 470 7
原创 Java注释包装方法
我有很多样板代码,基本上遵循以下模式:function doSomething() { try { [implementation] [implementation] [implementation] [implementation] } catch (Exception e) { MyEnv.getLogger().log(e); } finally { genericCleanUpMethod(); }}我很想创建自己的注释来稍微清
2021-09-03 19:15:04 270 1
原创 看看这篇文章!决定是否学习Java和JavaScript。
如果您是一个有抱负的程序员,那么在学习Java和JavaScript这两个流行的编码语言之间做出选择是很有挑战性的。然而,这两种语言有所不同,从编写和组装代码到执行和功能。要帮助您决定是学习Java还是JavaScript,请阅读有关Java和JavaScript的更多信息,以及它们的异同。Java综述Java是一种独立的、面向对象的、多用途的编程语言,最早由Sun Microsystem开发,于1995年发布。然而,甲骨文公司后来收购了它。Java在Java虚拟机中执行,可以在任何平台上运行。它是.
2021-09-03 18:53:28 343
原创 Maven构建工具(用于Selenium Java)
Maven是什么?软件项目-管理-维护和管理项目的工具构建管理-Java框架工具为什么?1.中央Maven储存库获得属地Maven访问该网站,下载所需的JAR并将其放置在构建路径中。例如硒罐只要找到硒库2.维护所有人的共同结构一个跨组织的通用模板这是一个空骨架:3.集成CI工具的灵活性Jenkins支持Maven命令4.用于测试框架执行的PlugsInsTestng,JUnit词汇groupId唯一标识符(例如Selenium)artifactId组ID的子项目(.
2021-08-31 15:20:23 183 1
原创 JVM调优科普篇
CMSG1ZGC通过如下命令,可以查看垃圾回收器的使用情况$ java -XX:+PrintCommandLineFlags -versionjdk1.8 如下:-XX:InitialHeapSize=534944128-XX:MaxHeapSize=8559106048-XX:+PrintCommandLineFlags-XX:+UseCompressedClassPointers-XX:+UseCompressedOops-XX:-UseLargePagesIndividu..
2021-08-31 14:50:04 211 1
原创 高频面试题之JVM灵魂拷问,21题带你通关!
这是本期的 JVM面试题目录,不会的快快查漏补缺~1. 什么是JVM内存结构?jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;本地方
2021-08-30 21:02:57 2306 23
原创 每个程序员都应该学习Java的技能
Java学习在2021年,如果您正在学习成为一名Java开发人员,或者您已经是一名Java开发人员,下面是您应该知道的十大事情。1.DevOps在2021年,Java开发人员必须学习DevOps才能在编程领域取得进展。DevOps是软件开发操作的一种有效方法,因为它缩短了系统的开发周期,简化了对企业对象的更新、特性等的提供。许多开发人员对DevOps和他们必须学习的众多工具和原则感到不知所措。但你不必担心。如果您是一个经验丰富的Java程序员,热衷于管理环境、自动化和改进整体结构,那么您可以很容易
2021-08-30 19:29:52 249
原创 您必须尝试的10个最流行的Java框架
在当今技术驱动的世界里,我们都可以看到科技进步是多么频繁地出现,随之而来的是旧的工具和技术变得过时和缺乏竞争力。但并不是每一项技术都是一样的Java是二十多年来在科技界享有强大地位的少数技术之一!根据各种标准报告,Java仍然是最流行和最需要的编程语言之一。Java如此受欢迎的主要原因之一是它有广泛的应用程序,如Android开发,Web应用,桌面应用,科学应用,简单地说,如果你期待着用Java建立一个职业生涯,那么你肯定可以不用再想一想就能继续工作。但是,您需要知道的是,要创建一个有价值的Java项目
2021-08-30 18:00:52 854
原创 JAVA中直接用Jdbc就能操作数据库了,为什么还要用spring框架? _
不过随着业务的扩展,你就会发现jdbc建立一个连接居然要几百毫秒,而执行一个普通的SQL仅仅需要几毫秒。这么重量级的资源建立了就释放了不合适,得找个容器存起来,谁要就来取,不用了就还给容器,毕竟容器里的借取比建立一个连接要快的多。这样的容器叫做数据连接池。小日子继续过,业务也越做越大,慢慢地你就发现了:这jdbc的接口也太粗暴了,有一大半的代码在往bean里塞数据,下标还是从1开始的。这时候你就会想,要不独立一层,专门处理把jdbc读取出来的数据塞进bean里吧。这一层就是DAO,data acc
2021-08-30 17:20:45 129 1
原创 最常见Java面试题总结-基础篇
最常见Java面试题总结-基础篇数据类型基本类型byte/8、 char/16、 short/16 、int/32 、 float/32、long/64、double/64、boolean/~boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体⼤小没有明确规定。 JVM 会在编译时期将 boolean 类型的数据转换为 int,使⽤用 1 来表示 true,0 表示 false。JVM ⽀支持 boolean 数组,但是通过读写 byte 数组来实现的。包装类.
2021-08-30 15:45:04 174
原创 IDEA整合jeesite4.x及安装教程
Jeesite4.x安装教程(自学记录)其中配置maven、jdk、mysql的操作都没有做备注1、官方文档链接https://jeesite.gitee.io/docs/install-deploy/2、下载代码到本地git clone https://gitee.com/thinkgem/jeesite4.git3、idea导入jeesite4工程4、配置maven,以及下载相关依赖jar包(第一次时间比较长,耐心等待)5、配置jdk (官方推荐jdk1.8版本)6、配置数据库(1
2021-08-28 19:28:58 679 1
原创 为什么是 Java?来自 Python 转换的故事
为什么是 Java?来自 Python 转换的故事每当我告诉别人我一直在用Java工作时,大家的反应都是:“what?为啥是Java?”说实话,本人刚开始的时候也是同样的反应。但是由于Java的类型安全,执行性能和坚如磐石的工具,我渐渐地开始欣赏Java。同时我注意到,现在的Java已今非昔比 —— 它在过去的10年间稳健地改善着。缘何是Java?假设每天都用Java的想法还没有让君恶心到食不下咽,我在此重申Java已非你所了解的“吴下阿蒙”了。当Python, Ruby, 和Javascript在
2021-08-28 16:48:11 193
原创 算法入门 - 动态数组的实现(Java版本)
静态数组Java中最基本的数组大家肯定不会陌生:int[] array = new int[6];for (int i = 0; i < array.length; i++){ array[i] = 2 * i + 1;}通过循环把元素放入指定的位置中,类似于这样:这是一个静态数组,因为我们在第一步初始化的时候就已经固定了它的长度,后面再也无法改变。所以,由于有这个限制,静态数组不适用于那些不确定储存多少数据的场景。但是如果数组满了,能否再新建一个更长一些的数组,把原数组这些
2021-08-28 16:27:04 238
原创 算法入门 - 链表的实现及应用(Java版本)
之前我们学习了动态数组,虽然比原始数组的功能强大了不少,但还不是完全纯动态的(基于静态数组实现的)。这回要讲的链表则是正儿八经的动态结构,是一种非常灵活的数据结构。链表的基本结构链表由一系列单一的节点组成,将它们一个接一个地链接起来,就形成了链表。链表虽然没有长度上的限制,但是 节点之间需要储存关联关系 。所以可以很自然地想到,你得知道前一个元素是啥,才能在它后面继续接新的元素。如果后面没元素可接,那么就在链表尾部接一个空值,代表链表结束。我们从一个空链表开始,依次往链表中添加元素:1.初始链表为
2021-08-28 15:47:01 222
原创 提高Java邮件的发送速度
我用Java编写了一个代码,使用Java邮件通过SMTP服务器发送邮件。发件人和收件人的电子邮件地址以及邮件的主题和正文保存在数据库(SQL)中。然而,以这种方式发送邮件是相当缓慢的。我必须发送大量邮件(大约300封邮件/秒)。如何提高使用多线程发送邮件的速度?import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.Properties;import javax
2021-08-27 21:53:20 1974 1
原创 Java lambda表达式用法介绍
在本文中,我们将通过示例了解Javalambda表达式以及lambda表达式在函数接口、通用函数接口和流API中的使用。lambda表达式是在Java8中首次引入的。它的主要目标是提高语言的表达能力。但是,在进入lambdas之前,我们首先需要了解功能接口。什么是Functional Interface?如果Java接口包含一个且仅包含一个抽象方法,则称为函数接口。只有一种方法指定了接口的预期用途。例如,包java.lang中的Runnable接口;是一个函数接口,因为它只构成一个方法,即run.
2021-08-27 18:58:46 298 4
原创 Java之Spring基础与IOC
SpringAbout Spring开源免费框架,轻量级,非入侵式框架。Spring就是一个轻量级的控制反转(IOC)和面向切片编程(AOP)的框架Maven repo:Spring Web MVC + spring-jdbc(整合Mybatis)<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency> <groupId>org.sp
2021-08-26 15:56:24 215 2
原创 Java多线程笔记
介绍**程序(program)**是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。**进程(process)**是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多
2021-08-25 16:12:10 483 25
原创 Java流中的MAP操作
Map是流中的一个中间操作。返回流。地图法java.util.stream.Stream类接受函数类型的参数,下面的代码计算流中图书的总价。在BookStoreFacade类的getTotalPrice方法中使用map操作返回价格流。Map方法返回Stream。然后在Stream上调用forEach方法来获取所有书籍的价格之和。class Book { private String publisher; private String author; private String
2021-08-24 21:33:55 1343 1
原创 Java统计水仙花数
问题描述所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。解决方案首先配置好运行环境,再给出整数类所需变量,依次根据水仙花数的定义,利用for循环将数值条件i规定在(100,1000)以内。再将判断条件代入进行逐步筛选,再使用一次for循环,将i进行整合,最后得到所有水仙花数并且统计水仙花数个数。通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。代码清单package 水仙花; publ
2021-08-24 21:17:07 646
原创 用Java将32 bpp映像转换为16 bpp映像
如何使用Java库将32 bpp映像(ARGB)转换为16 bpp映像(ARGB)?出于我的好奇心,在像素级,这种转换是做什么的?如果我有一个int值,它保存了像素的值(所有通道),那么在转换发生之后,int会有什么不同呢?转换为16位ARGB值的32位AARRGGBB值如下所示:int argb = ((aarrggbb & 0x000000F0) >> 4) | ((aarrggbb & 0x0000F000) >> 8)
2021-08-23 17:14:03 255 3
原创 在Java中找出1到n个数字之间的重复数
给出一个长度为n+1的列表,它的数值范围从1到n,其中一个数字是重复的,你必须找到重复的数字。这个问题非常类似于在数组中查找缺少的数字。在这篇文章中,我将分享一个java程序和算法,以找到1到n个数字之间的重复数字。算法1.计算列表中所有数字的总和。2.计算列表中唯一数的大小n,并使用算术级数公式n*(n+1)/23.从第一步减去第二步中所得到的数值,你将得到重复的数字。Java程序import java.util.List;import java.util.ArrayList;public
2021-08-23 17:05:36 566 2
原创 Java流中的过滤方法
Java.util.Stream包中的Stream类是在Java 8中引入的,是Collection Stream()方法提供的流的实现类。Stream()是由java.util.Collection接口实现的ade故障方法。它返回与Collection对象相同类型的Stream实现,它表示集合中元素的顺序流。Collection接口中还有一个名为ParlineStream()的默认方法,它返回一个并行流。Java.util.Stream.Stream类的Filter方法接受谓词类型的参数,并返回与谓词相
2021-08-23 16:28:44 1922 1
原创 Java将字符串转换为int并移除回零。
大家好,我现在正试图将字符串反向转换为数组列表,然后删除任何尾随零,例如“001203”转换为(3,0.2,1,0),然后(3,0,2,1)我的代码是public convert(String nums) { List = new ArrayList<Integer>(); // create arraylist for (int i = nums.length(); i >= 0; i--) { //convert to int int j = I
2021-08-21 16:28:57 615 3
原创 包中的文件不会从java应用程序中打开。
亲爱的专家们,这个问题与文件在java中不打开,后者位于jar文件中。更新问题我用了两个密码打开JAR文件中的pdf文件如果我从workspace.URL resource = Thread.currentThread().getContextClassLoader().getResource("resources/User_Guide.pdf"); File userGuideFile = null; try {
2021-08-21 16:22:43 86
转载 用 Java 爬美女图片,这个厉害了!
目的爬取搜狗图片上千张美女图片并下载到本地准备工作爬取地址:https://pic.sogou.com/pics?query=%E7%BE%8E%E5%A5%B3分析打开上面的地址,按F12开发者工具 - NetWork - XHR - 页面往下滑动XHR栏出现请求信息如下:Request URL :https://pic.sogou.com/napi/pc/searchList?mode=1&start=48&xml_len=48&query=%E7%BE%8E%E5%
2021-08-21 15:38:03 5010 91
原创 「并发原理专题」AQS的技术体系之CLH、MCS锁的原理及实现
背景SMP(Symmetric Multi-Processor)对称多处理器结构,它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存、I/O和外部中断。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。操作系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。但是随着CPU数量的增加,每个CPU都要访问相同的内存资源,共享资源可能会成为系统
2021-08-21 15:26:53 118
原创 Java协程编程之Loom项目尝鲜
前提之前很长一段时间关注JDK 协程库的开发进度,但是前一段时间比较忙很少去查看OpenJDK 官网的内容。 Java 协程项目 Loom (因为项目还在开发阶段, OpenJDK 给出的官网 https://openjdk.java.net/projects/loom 中只有少量 Loom 项目相关的信息)已经在 2018 年之前立项,目前已经发布过基于 JDK17 编译和JDK18 编译等早期版本,笔者在下载 Loom 早期版本的时候只找到 JDK18 编译的版本:下载入口在: http
2021-08-20 21:12:47 706
原创 Java Lambda 表达式源码分析
Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现?基本概念Lambda 表达式下面的例子中, () -> System.out.println("1") 就是一个Lambda 表达式。Java 8 中每一个Lambda 表达式必须有一个函数式接口与之对应。Lambda表达式就是函数式接口的一个实现。@Testpublic void test0() { Runnable runnable = () -> System.out.pri
2021-08-20 18:32:03 202 1
原创 Java四种引用类型
引用与对象每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”。在 Java 中一切都被视为了对象,但是我们操作的标识符实际上是对象的一个引用(reference)。//创建一个引用,引用可以独立存在,并不一定需要与一个对象关联String s;复制代码通过将这个叫“引用”的标识符指向某个对象,之后便可以通过这个引用来实现操作对象了。String str = new String("abc");System.out.printl
2021-08-19 21:50:38 174 1
原创 在Java程序中使用Protobuf
Protocol Buffer是google出品的一种对象序列化的方式,它的体积小传输快,深得大家的喜爱。protobuf是一种平台无关和语言无关的协议,通过protobuf的定义文件,可以轻松的将其转换成多种语言的实现,非常方便。今天将会给大家介绍一下,protobuf的基本使用和同java结合的具体案例。##为什么使用protobuf我们知道数据在网络传输中是以二进制进行的,一般我们使用字节byte来表示, 一个byte是8bits,如果要在网络上中传输对象,一般需要将对象序列化,序列化的目的.
2021-08-19 21:42:48 899
原创 操作异常嵌套Java
我偶然发现了一个读取文本文件并对其进行分析的代码库。我对异常的使用方式有点困惑。单独的班级AppFileReaderException那extends已定义异常,其中扩展类仅返回异常的错误消息。此外,功能getSymbol()兼用throws和try and catch block。这个error()函数也有异常处理程序,这可能导致嵌套异常!在基本的尝试和捕获应该足够的情况下,执行这样的异常处理有什么好处吗?是否有任何理由扩展异常类,将两者结合在一起?throws和try-catch街区?这些是过度杀戮还是
2021-08-18 17:18:57 197
原创 完成Java线程
我看到这个问题被问了很多次。很抱歉再次问这个问题。我有个奇怪的问题。我有一个通过ExecutorService作为单独的可运行任务提交数千个作业的职务。这是在一个简单的for循环中完成的。在for循环的末尾,我调用service.候机(),然后是一个等待高潮。由于要提交的线程数量很大,所以线程一直挂起,直到所有任务都提交为止。有任何方法,这些线程可以优雅地终止,一旦它的执行完成?您可以创建一个新的ThreadPoolExecuto不打电话java.util.concurrent.Executors
2021-08-18 15:31:35 127
原创 为什么你不应该恨Java!
每个人都讨厌Java,就连我也讨厌(曾经)。模因,视频,我的意思是在任何地方都传播着一种东西-Java的受欢迎程度正在下降…。我想知道为什么人们如此讨厌它,以至于人们甚至准备用它购买并购品。所以我决定亲自尝试Java。那么人们为什么讨厌Java呢?Java已经流行了几十年。没有那么好的理由讨厌Java,而是有一些事情让许多开发人员心烦意乱。Java是VERBOSE,VERBOSE是一个很好的特性,也是一个不太好的特性。就像它使调试更加容易和可靠,但同时,您需要编写大量的代码。许多新手开发人员
2021-08-18 15:03:38 115
原创 Java中的泛型
你好啊!在本文中,我们将了解JavaGenerics、如何创建泛型类和方法、它的优点以及如何使用它们来提高代码的质量。JavaGenerics是在JDK5.0中引入的,目的是减少bug,并在类型上增加一个额外的抽象层。泛型指参数化类型。JavaGenerics允许我们创建一个单独的类、接口和方法,这些类、接口和方法可以用于不同类型的数据(对象),这有助于我们重用代码。泛型方法是用单个方法声明编写的方法,可以用不同类型的参数调用。泛型还提供编译时类型安全,允许程序员在编译时捕获无效类型。“重要的是要注
2021-08-17 19:27:26 161 3
原创 Java的四大面向对象编程概念
面向对象编程通常被称为OOPS,是Java的主干,因为Java是一种完全面向对象的语言。Java围绕各种对象和定义良好的接口组织程序。在OOPS中有四个支柱,如下所示。这些概念目的是在程序中实现真实世界的实体。抽象化封装继承多态抽象是隐藏实现细节的过程,并且只向用户公开功能。在抽象方面,我们处理的是思想而不是事件。这意味着用户只知道“它做什么”,而不知道“它是如何做的”。在Java中有两种实现抽象的方法1.抽象类(0到100%)2.接口(100%)现实生活中的一个例子:一个司机会专注于
2021-08-14 17:08:38 215 1
原创 【Java基础】枚举
枚举的定义public enum Color { Red,Blue,Green;}## 枚举的使用Color red = Color.Red;//枚举的其中一个类型Color[] values = Color.values();//获取所有的枚举类型String name = red.name();//可以获得枚举值的名称int ordinal = red.ordinal();//可以获得枚举值的编号原理那我们定义枚举类型后,到底发生了什么呢?我们对枚举的实现原理进行探究。我们
2021-08-14 16:50:33 129
原创 Java 7 新特性之try-with-resources实践理解
想象这么一个情景,我们需要使用一个资源,在使用完之后需要关闭该资源,并且使用该资源的过程中有可能有异常抛出。此时我们都会想到用try-catch语句,在finally中关闭该资源。此时会有一个问题,如果关闭该资源的时候也抛出了异常呢?见如下例子:package com.rundong;import java.io.IOException;public class ResourceTest implements AutoCloseable{ @Override public void
2021-08-14 14:51:12 112 1
原创 Java时间类从此变得清晰明了
Java时间类Java时间类分为Date 日期类和Calendar 日历类,相信很多小伙伴在初学时会对这个两个类的用法、区别以及有什么联系会感到疑惑,似乎懂了,但又不能具体说清,今天再带你来清晰的再次认识它俩!Date 类为了更直观了解,话不多说,直接上代码【参考代码】package date; import java.util.Date; public class Test { public static void main(String[] args) {
2021-08-13 16:36:20 114
原创 Java反编译工具
编译和反编译编程语言分成高级语言和低级语言。低级语言如机器语言、汇编语言。这类语言直接用计算机指令编写命令,不需要编译。这些语言机器能看到懂,但是程序员读起来很费劲。而我们平时经常用的语言C、Java、Python属于高级语言,这些语言程序员能看的懂。而机器是看不懂的。简单的总结为:高级语言就是程序员认识的语言,而低级语言是机器认识的语言。而把高级语言转成低级语言这个过程就是编译,而反编译就是把低级语言转成高级语言。有了反编译,我们就可以看懂Java编译器生成的字节码,比如Synchronized的实
2021-08-13 16:11:32 248
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人