编程
文章平均质量分 83
程序员版鸨哥
分享经验
展开
-
java之异常
自定义一个编译期异常,自定义类,继承于Exception自定义一个运行期异常类,并继承于RuntimeException。原创 2022-07-31 10:09:34 · 290 阅读 · 1 评论 -
Java 异步调用实践
本文介绍了线上业务中的一些异步调用实践经验,包含IO模型介绍、CompletableFuture的基本使用、RPC异步调用、异步HTTP客户端SpringWebClient的使用等。RPC使用前文介绍的手写RPC框架,该框架支持异步调用。...原创 2022-07-31 10:07:15 · 437 阅读 · 0 评论 -
Java多线程之线程池
在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。为了防止资源不足,需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。//2.给线程池分配任务。.原创 2022-07-31 10:05:55 · 370 阅读 · 0 评论 -
只分享这一次!阿里软件架构师深入底层手写JDK源码
通过和大厂的面试官聊了一下发现,现在大厂特别爱考底层的一些原理,因为一些底层是不涉及到语言的,语言对于开发工程师来说是是吃饭的工具,但对于架构师的层面的人来说就工具而已,这也是大厂培养人的一个方向。...原创 2022-07-31 09:18:01 · 237 阅读 · 0 评论 -
如何在 IDEA 中创建并部署 JavaWeb 程序
在之前Java的学习中,我们可能更多地是和控制台程序打交道,也就是我们日常说的黑框框程序。现在既然完成了JavaSE部分的基础知识,是时候来学习JavaWeb部分。而随着IDEA的强势崛起和不断更新,使用Eclipse的同学可能会有些不习惯IDEA。这一点确实是,IDEA不同版本之间的操作和设置可能都有微小的变动,就算你之前一直使用的IDEA,也可能会随着IDEA的更新找不到某些隐藏在犄角旮旯的操作。Windows11。...原创 2022-07-30 10:40:49 · 846 阅读 · 0 评论 -
JavaWeb之简单介绍与tomcat扩展
就可以将http//localhost8080更改为http//www.atu.com8080/C\Windows\System32\drivers\etc路径下hosts文件中的配置。-基于java语言的(所有的大公司,或者一些开源的组件,都是用java写的)如果想更改tomcat的访问路径为其他路径比如www.atu.com。不仅需要更改server.xml内的host路径,还需要更改。-可以承载三高(高并发、高可用、高性能)带来的问题。-sun公司主推的B/S架构。...原创 2022-07-30 10:36:57 · 111 阅读 · 0 评论 -
JavaWeb(Web核心介绍)
状态码大类状态码分类说明1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功——表示请求已经被成功接收,处理已完成3xx重定向——重定向到其它地方它让客户端再发起一个请求以完成整个处理。4xx客户端错误——处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等5xx服务器端错误——处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等状态码大全常见的响应状态码状态码英文描述解释。...原创 2022-07-30 10:32:05 · 227 阅读 · 0 评论 -
[Javaweb]JSON
JSONJavaScriptObjectNotation(JavaScript对象标记法)。JSON是一种存储和交换数据的语法。JSON是一种轻量级的数据交换格式JSON是通过JavaScript对象标记法书写的文本。JSON使用JavaScript语法,但是JSON格式是纯文本的。文本可被任何编程语言作为数据来读取和使用。JSON格式最初由DouglasCrockford提出。如下是JavaScript对象的定义格式{nameage23,...原创 2022-07-30 10:29:03 · 424 阅读 · 0 评论 -
java中 基础 知识 逻辑控制
long就不能成为switch中的条件,),这里还可以使用枚举类型。如果满足if中的条件那么执行if语句中的内容,如果不满足if满足elseif语句中的条件,那么我们执行elseif中的内容,最后if和elseif都不满足,就会执行else语句中的内容。其实这里我们的逻辑控制是非常简单的稍微学习一下就能理解,这里也没啥好说的,下面我们来学习一下java中的输入输出。...原创 2022-07-30 10:23:39 · 184 阅读 · 0 评论 -
Java开发学习---AOP环绕通知案例之密码数据兼容处理
综上所述,我们需要考虑两件事①在业务方法执行之前对所有的输入参数进行格式处理——trim()②使用处理后的参数调用原始方法——环绕通知中存在对原始方法的调用。现在项目的效果是,当输入密码为"root"控制台打印为true,如果密码改为"root"控制台打印的是false。当我们从别人发给我们的内容中复制提取码的时候,有时候会多复制到一些空格,直接粘贴到百度的提取码输入框。我们的需求是将原始方法的参数处理后在参与原始方法的调用,能做这件事的就只有环绕通知。//判断参数是不是字符串。...原创 2022-07-30 10:18:16 · 237 阅读 · 0 评论 -
超全面!阿里巴巴最新发布22年秋招200道Java面试题(含答案)
马上过34岁生日了,和大家聊聊最近的情况面试中总结了200道经典的Java面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了~原创 2022-07-30 10:15:23 · 568 阅读 · 0 评论 -
基于 Spring Cloud +OAuth2 的权限管理系统
基于SpringCloudHoxton、SpringBoot2.3、OAuth2的RBAC权限管理系统基于数据驱动视图的理念封装element-ui,即使没有vue的使用经验也能快速上手提供对常见容器化支持Docker、Kubernetes、Rancher2支持提供lambda、streamapi、webflux的生产实践。...原创 2022-07-30 09:37:58 · 348 阅读 · 0 评论 -
学习 MySQL 需要知道的 28 个小技巧
随着信息技术的不断发展以及互联网行业的高速增长,作为开源数据库的MySQL得到了广泛的应用和发展。目前MySQL已成为关系型数据库领域中非常重要的一员。无论是运维、开发、测试,还是架构师,数据库技术都是一个,那么,一直说学习数据库、学,到底是要学习它的哪些东西呢?...原创 2022-07-30 09:25:47 · 171 阅读 · 0 评论 -
java高级用法之:调用本地方法的利器JNA
JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做javanativeinterface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令创建C语言的头文件,接着使用C或者C++语言来实现这个头文件中的方法,编译源代码,最后将编译后的文件引入到JAVA的classpath中,运行即可。虽然JAVA官方提供了调用原生方法的方式,但是好像这种方法有点繁琐,使用起来没有那么的方便。那么有没有更加简洁的调用本地方法的形式吗?...转载 2022-07-29 11:23:55 · 1052 阅读 · 0 评论 -
Java算法练习
System.out.println("共有英文字母、空格、数字和其它字符个数分别为"+enChar+""+spaceChar+""+num+""+otherChar);这个数为num,那么就有num+100为一个整数n的平方,num+168为另一个整数m的平方,用%1为0的表达方式表示为一个整数。System.out.println("第"+i+"个月有"+calculateRabiit(i)+"只兔子");//去除最后一个"+"...原创 2022-07-29 11:19:51 · 240 阅读 · 0 评论 -
Java 中级 学习笔记 JVM GC 垃圾回收与算法
引用计数法,通俗的来说,每个对象都有一个计数器,用于记录这个对象被引用的数量,因为JAVA里面所有的对象都是按照内存地址的引用来使用的,被引用则计数器+1,反之则-1,若这个对象计数器为0,则可大致确认这个对象已经可以被回收了。可达性分析,是为了解决引用计数法的循环引用问题,GCroots就好比是一个对象树的根部,而每个对象就可以看做是树状图的上面的树干以及末端叶子,若根部GCroots与末端或者树枝直接不可达,没有路径,则其成为不可达对象。复制算法,将区域的内存划分为两块,每次只是使用其中的一块。...原创 2022-07-29 11:16:16 · 122 阅读 · 0 评论 -
Java集合中级——AbstractList源码解析
AbstractList是AbstractCollection和List的抽象子类,为一些通用的方法提供实现,并为所有List结构提供统一父类采用组合模式继承AbstractList}i指向父串,offset父串开始截取的index,size为两个index之差,此外还有一个从父串继承的modCount。...原创 2022-07-29 11:13:21 · 318 阅读 · 0 评论 -
中级JAVA程序员应该掌握的数据结构知识
见下图,这是一道排序算法的面试题(要求稳定,快速),我在做这道题的时候,根据我总结的内容,很快便锁定了算法,首先,算法要求一个稳定,快速的算法,我们便可以确定要从基数排序和二路归并排序中做选择,我选择了基数排序,并快速回忆了快速排序的例子,于是便很快的做出来了这道题。程序=数据结构+算法,算法很重要,数据结构也很重要,只有掌握了这两者,我们才等于掌握了写程序的本领,才是合格的程序员哦。左右两边往中间走,左边走的找到比他大的,右边走的找到比他小的。打完之后,发现出的牌是有顺序的。...原创 2022-07-29 11:00:37 · 262 阅读 · 0 评论 -
使用Java优雅的实现先查询缓存再查询数据库
在访问量大的时候,为了提高查询效率,我们会将数据先缓存到redis中。先查询redis,查询不到再去查询数据库,实现这个逻辑也不复杂,写一个也就行了。这种做法也不是不行,就是看起来有点儿粗糙,所以我想换一种更优雅的写法。在Java中有一个package,里面全部是接口,并且都被注解所修饰。Function分类Consumer(消费)接受参数,无返回值Function(函数)接受参数,有返回值Operator(操作)接受参数,返回与参数同类型的值Predicate(断言)...原创 2022-07-29 10:57:10 · 1932 阅读 · 1 评论 -
特殊的阻塞队列 - java.util.concurrent.SynchronousQueue 分析
和常见的阻塞队列比起来处理方式不一样,也比较难理解。对于不公平和不公平分为了两种实现方式,利用了FIFO(公平)和LIFO(不公平)的特性来实现。相比于可存储的队列,导致其他线程就必须自旋等待交付,所以如果交付占用了大量时间就导致其他线程就需要等待特别久的时间,但好处是不需要存储而且是直接交付的。SynchronousQueue还有一些理解不到位的地方,以上仅供参考。httpshttpshttpshttpshttps。...原创 2022-07-29 10:52:08 · 212 阅读 · 0 评论 -
MySQL应用实战与性能调优
MySQL是当下流行的关系型数据库管理系统,使用C和C++语言编写而成,因而具有源码级的可移植性。MySQL可以在Linux、macOS、NovellNetWare、OpenBSD、Solaris、Windows等多种操作系统中运行。在Web应用方面,MySQL是非常好的关系数据库管理系统(RelationalDatabaseManagementSystem,RDBMS)应用软件之一。...原创 2022-07-29 10:44:07 · 370 阅读 · 0 评论 -
赞评论收藏分享冲刺金九银十!GitHub中文社区秋招趋势最热的面试题被我整理好了
这份总结涵盖技术点有Java基础,JVM,多线程高并发,redis,微服务,分布式,算法,操作系统,spring全家桶,MySQL,设计模式,计算机网络,Linux等等!题题分明每个技术点都有对应的学习路线图文并茂直击面试官痛点如何写简历怎么正确回答面试官问题httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...原创 2022-07-29 10:25:30 · 188 阅读 · 0 评论 -
HUAWEI内网最新发布了一份452页网络协议手册,GitHb百万收藏
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。原创 2022-07-29 10:06:11 · 127 阅读 · 0 评论 -
Java项目:springboot在线选课系统
后端技术包含springboot+mybatis+springsecurity+mysql+redis前端技术包含semanticUI+thymeleaf模板引擎。原创 2022-07-28 15:34:25 · 316 阅读 · 0 评论 -
分析 java.util.LinkedHashMap
该实现与HashMap不同的是它维护一个双向链表,可以使HashMap有序。与HashMap一样,该类不安全。原创 2022-07-28 15:32:02 · 205 阅读 · 0 评论 -
Java开发学习----AOP案例之测量业务层接口执行效率
System.out.println("万次执行"+className+"."+methodName+"---->"+(end-start)+"ms");System.out.println("业务层接口万次执行时间"+(end-start)+"ms");//@Around("ProjectAdvice.servicePt()")可以简写为下面的方式。//@Around("ProjectAdvice.servicePt()")可以简写为下面的方式。//通过签名获取执行操作名称(接口名)...原创 2022-07-28 15:30:16 · 250 阅读 · 0 评论 -
【深入理解java虚拟机】 - 类加载器与双亲委派模型
在Java的日常应用程序开发中,类的加载几乎是由这三种类加载器互相配合来完成加载的,如果用户认为有必要,还可以加入自定义的类加载器来进行拓展,典型的如增加除了磁盘位置之外的Class文件来源,或者通过类加载器实现类的隔离、重载等功能。隔离加载类修改类加载的方式扩展加载源防止源码泄漏。...原创 2022-07-28 15:28:58 · 92 阅读 · 0 评论 -
Java基础-Stream流
Streamstream2=womanList.stream().filter(name->name.startsWith("杨")).skip(1);Stream.concat(list.stream(),list2.stream()).forEach(s->System.out.println(s));list.stream().filter(s->s.startsWith("张")).forEach(s->System.out.println(s));原创 2022-07-28 15:24:47 · 164 阅读 · 0 评论 -
干货来袭!阿里大佬“亲码”Java全线笔记,差距不止一点点
抛开面试,说一些题外话(我们每个人都要面对的)。大家作为程序员,在开发岗位上做了几年,特别是到了30岁,这个而立之年,我们会来到一个重要的人生岔路口。就是管理和技术两个选择,一边是专业路线,一边是管理路线。很多朋友不知道怎么选,但其实不管走哪一条路,一些能力是共通的,小编个人的建议是一定要技术加管理两条腿走路!!!总之,作为程序员,技术和管理,就像人的两条腿,所有的职业发展路线都离不开,毕竟一条腿是走不远的。回到正题httpshttpshttpshttpshttpshttpshttps。...原创 2022-07-28 10:53:37 · 99 阅读 · 0 评论 -
Java 通用配置 版本配置实现
Java通用配置(四)版本配置实现。原创 2022-07-27 15:45:03 · 743 阅读 · 0 评论 -
Java8中的LongAdder类,大大提升CAS性能
如果没有,就更改值!同理,如果有人在执行CAS的时候,发现自己之前获取的值跟当前的值不一样,会导致CAS失败,失败之后,进入一个无限循环,再次获取值,接着执行CAS操作!这些线程不停地获取值,然后发起CAS操作,但是发现这个值被别人改过了,于是再次进入下一个循环,获取值,发起CAS操作又失败了,再次进入下一个循环。一个接一个的排队,加锁,处理数据,释放锁,下一个再进来。首先,每个线程都会先获取当前的值,接着走一个原子的CAS操作,原子的意思就是这个CAS操作一定是自己完整执行完的,不会被别人打断。...原创 2022-07-27 15:37:37 · 200 阅读 · 0 评论 -
全面吃透JAVA Stream流操作,让代码更加的优雅
好啦,关于JAVAStream的理解要点与使用技能的阐述就先到这里啦。那通过上面的介绍,各位小伙伴们是否已经跃跃欲试了呢?快去项目中使用体验下吧!当然啦,如果有疑问,也欢迎找我一起探讨探讨咯。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...原创 2022-07-27 15:33:20 · 652 阅读 · 0 评论 -
Java实现规则几何图形问题求解
规则几何图形求解根据图形的某些特征设置输入参数,根据这些参数来计算相应图形的面积和周长。在绘制图形方面,是根据所输入的参数来确定坐标,再连接坐标形成的图形。在改变图形方面,用绘图的类去改变图形。这个程序适合在新手学习完Java基础知识以后练习,可以加深对Java编程的理解,同时对Java流的操作这一个抽象的概念有了更加深入的理解,学习完GUI技术不仅提升了编程兴趣,同时为Java下一阶段的学习奠定了基础。追风赶月莫停留,平芜尽处是春山httpshttpshttpshttpshttps。...原创 2022-07-27 15:27:46 · 536 阅读 · 0 评论 -
灵魂一问:一个Java文件的执行全部过程你确定都清楚吗?
1、隔离加载类,创建多个模块空间,确保相互间加载的类不会冲突。2、修改类加载的方式。某些非必要导入的类可以自定义类加载器在某个事件按需导入。3、扩展加载器,加载不同位置位置的资源。4、防止源码外泄。在编译时加密。...原创 2022-07-27 15:24:12 · 125 阅读 · 0 评论 -
Java多线程第十三篇--盘一盘晕头转向的Runnable、Callable、Future、RunnableFuture、FutureTask
在之前介绍线程的时候,我们就知道了,创建线程的很多方法,其中实现Runnable接口就是其中的方式,其实就是定义了这个线程run方法中做了哪些事情源码中的注释还是比较好理解的,但是我们会发现,这个run方法没有任何返回值,也就是说我们根本就不知道,run方法的执行结果到底怎么样,这时DougLea大神就定义了另外一套接口Callable系列接口。1、FutureTask分别实现了Runnable和Future的接口,其中的各种操作都离不开对状态state的操作和判断。自旋+CAS头压栈中断式)...原创 2022-07-27 15:15:09 · 189 阅读 · 0 评论 -
相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?
能帮助开发者顺利完成工作的工具,已经是编程语言可用性中的重要组成部分。而工具本身也在持续变化,标准不断提高。整个过程基本就是在出现新的开发者创新工具时,比较年轻的编程语言更有机会将成果融入自身生态系统,由此形成增量优势。随着时间推移,这些增量优势会推动开发者体验迎来质变。于是乎,较新的语言可以用更明确、更精准的方法解决问题,而旧有语言则面临大量相互矛盾的方法、甚至完全没有可行的解决路线。所以,开发者们才会普遍认为,传统编程语言工具发展进度缓慢。httpshttpshttps。...原创 2022-07-27 15:10:33 · 277 阅读 · 0 评论 -
能让java性能提升的JIT深度解析
在从事Java开始的一段时间,那时候经常可以听到什么C++的瞧不起写Java的,在一些群里也经常看到二个派的人经常互怼。Java能够这么流行与它的跨平台,语言无关性是分不开的,不管你是用Java,python还是Go,只要变成对应的标准字节码文件,那么JVM都是可以识别并执行的,但是那时候的Java之所以被C++吐槽主要还是因为Java,为什么这么说呢。我们写的程序虽然能被JVM识别,但是不能被机器识别,程序要运行起来,还是得让机器能够识别你的程序,所以JVM还需要一个。,简称。...原创 2022-07-27 15:07:01 · 756 阅读 · 0 评论 -
99%的Java程序员会踩的六个坑
作为Java程序员的你,不知道有没有踩过一些基础知识的坑。有时候,某个bug,你查了半天,最后发现竟然是一个非常低级的错误。有时候,某些代码,这一批数据功能正常,但换了一批数据就出现异常了。有时候,你可能会看着某行代码目瞪口呆,心里想这行代码为什么会出错?今天跟大家一起聊聊99%的Java程序员踩过,或者即将踩的6个坑。...原创 2022-07-27 15:04:09 · 93 阅读 · 0 评论 -
0基础就可以上手的Spark脚本开发-for Java
最近由于工作需要,要分析大几百G的Nginx日志数据。之前也有过类似的需求,但那个时候数据量不多。一次只有几百兆,或者几个G。因为数据都在Hive里面,当时的做法是把数据从Hive导到MySQL,然后写代码查询MySQL并处理。如果你的处理逻辑比较简单,或只是查询统计,不会设计上游的服务调用,也可以直接写HiveSQL。上面的做法在面对少量数据时还可以应付,对于大量数据就很不可取了。从Hive导数据到MySQL,光这一步就够呛,就更别说自己写的Java脚本效率性能如何了。可以用Spark做什么?...原创 2022-07-27 14:58:31 · 543 阅读 · 1 评论