自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

君若雅的博客

Java 技术专家,专注Java 领域和面试相关知识。

  • 博客(30)
  • 资源 (2)
  • 收藏
  • 关注

原创 拥抱Java 21—— main 函数精简和未命名模式的变化

本文讨论了Java 21版本的两个主要的改进是对main函数的简化和未命名模式和变量的引入。对于main函数的简化,现在可以使用更简洁的方式定义主方法,不再需要public关键字,也不需要String[]参数。这样的改进,从官方的描述来看,旨在降低初学者的学习曲线,使得入门阶段更加友好。另一方面,未命名模式和变量的改进允许使用__来代替未使用的变量。这项特性的目标是提高代码的可读性和可维护性,在某些情况下提高代码的清晰度,但在大型项目中广泛使用可能引起混淆和维护上的困难。

2024-02-13 21:30:12 883

原创 Java 并发编程之一——天生的多线程语言

Java 是一门支持并发编程的语言,它通过提供内置的多线程支持使得程序能够执行多任务并且提高效率。在一个简单的 Java 程序中,就算是最基本的main函数运行时,实际上也会有多个系统级别的线程同时运行,提供不同的服务。执行结果显示了除了主线程 (main) 之外,还有一些如垃圾回收器的辅助线程 (Finalizer),信号分发线程 ()等,这些线程都是 Java 虚拟机为了优化执行和管理工作而自动创建的。

2024-02-12 22:35:54 958

原创 拥抱Java 21—让字符串(String)类型的使用更方便

JDK 21中的String Templates是Java语言的一个新特性,用于简化字符串的创建和拼接,允许你将变量和表达式嵌入到字符串文本中。这个特性类似于其他编程语言中的字符串插值或者模板字符串。简单来说,String Templates让你可以在字符串中直接插入变量或表达式,而不需要使用传统的字符串拼接方式。这使得代码更加整洁,易于阅读和维护。JDK21 中的字符串模板仍然是一个预览特性。你需要慎重考虑是否要使用!如果使用的话,选择要在启动时候增加 参数开启预览功能的使用。

2024-02-07 17:02:46 849

原创 避免Arrays.asList陷阱:优雅处理结构性修改的方法

在Java编程中,Arrays.asList方法是一个常见的工具,用于将数组转换为List集合。本文将深入探讨Arrays.asList方法的细节,并解释为什么会出现相关异常。

2024-02-06 20:58:05 1522

原创 深入实战:ElasticSearch的Rest API与迭代器模式在高效查询中的应用

迭代器模式一直是"理论"上的设计模式之一。笔者在开发某个项目的ES查询的过程中,总算有机会将其应用在实战过程中。欢迎大家交流、分享和收藏!

2024-02-05 16:15:12 1574

原创 解决EasyExcel写入数据时的Invalid char错误

在项目中使用EasyExcel写入Excel数据时,遇到了Invalid char错误。该错误通常由于Excel表格命名规范不符合要求导致。Excel对工作表名有一些基本的规定,如不能超过31个字符、不能以空格开头或结尾、不能包含特殊字符(如:、/、\、?、*、[、]、、:)。为解决此问题,我们编写了一个修复方法,将不符合规范的字符替换为下划线、去除首尾空格、限制长度,并在数据写入前调用该方法。这样可确保工作表名符合Excel命名规范,解决了Invalid char错误。

2024-02-04 16:21:11 488

原创 chapet13-常见的反爬虫和反反爬虫技术

爬虫与反爬虫本身就是一种“对抗性”的技术。正所谓“道高一尺,魔高一丈”。反爬虫技术的出现,往往会导致反反爬虫技术的“问世”。作为一名爬虫工程师,我们要意识到,目前的反爬虫技术,已经逐渐从当初普通的限制IP,变为现在的验证信息的方法进行发展——事实上,目前爬虫技术通过IP代理技术,可以完全无视限制IP的约束。但是,像是“滑动滑块”、“点击对应的文字”等具有动作判定的反爬虫技术,我们并没有什么特别好的办法,只能一点一点的去模拟,去猜测动作判定的标准——而标准会随时因为提供商的升级进行改变。

2024-01-22 00:34:54 2285

原创 chapter12-实战成绩通知短信系统(下)

本文存在着大量的编码转化、数据存储操作。希望大家有问题一定要去讨论区进行讨论,我会第一时间为大家解答;还是要提醒大家:项目需要配置的信息很多,希望同学们能够静下心来,耐心的跟着文章学习;自动识别验证码目前的准确率已经达到了90%,我将会尽快更新相关代码。可能你看到这篇文章的时候,就不需要人工识别验证码了。

2024-01-22 00:33:20 1256

原创 chapter11-实战成绩通知短信系统(上)

本章完成了成绩短息通知服务的登录和获取成绩步骤,这两个步骤是我们开发中最重要的过程,因此同学们有不理解或者不明白的地方,一定要在讨论区发表自己的看法!事实上,某方的教务系统代码杂乱无章,或者是有意为之。因此接下来的网页解析,也希望大家能够认真学习;在编写课程中,我尝试了使用机器学习去识别验证码,但是准确率只有70%左右,成熟度不够,因此只能使用保守的人工识别验证码的方式保证系统登录正常。

2024-01-21 11:39:07 1349

原创 chapter10-让你拥有“火眼金睛”的 Fiddr4 和其他工具

本文首先介绍了目前流行Ajax技术,然后使用Chrome分析Ajax加载的规律,最后使用正则表达式获取到了相应的课程标题;正如之前提到的那样,正则表达式是一种强大的语言,当网站没有一定的规律或者是爬取的信息不能够正常的解析出来时,我们只能通过正则表达式来获取我们想要的数据;Fiddler 4 最大的优点是可以直接连接手机,抓取手机的请求数据——在某些情况下,使用手机爬取信息往往是最简单的。限于篇幅原因,你可以在这篇文章了解如何连接手机;

2024-01-21 11:35:16 813

原创 chapter9-让你的系统全天候为你服务

本章从购买服务器开始,一步一步将我们之前开发的程序搬移到服务器中,实现服务的全天候运作;前几章都是直接请求API,减少了网页爬取方面的知识,主要是方面同学们了解我们之后要使用的相关基础技术。从下一章开始,我们要重点攻克网页爬取技术,为最后的实战项目做准备;事实上,网上有很多免费的API接口,为了不浪费珍贵的服务器资源,同学们在课后如果感兴趣的话,可以开发属于自己的短信小程序,提高生活的质量。

2024-01-21 11:32:37 900

原创 chapter8-“天上的馅饼”—免费的短信通知方式

上一篇文章我们详细的讲解了如何购买短信服务提供商的短信服务,并且做了一个天气预报的短信通知小服务。但是,使用国内的短信服务提供商提供的短信接口是收费的。我们可以使用它的邮件提醒服务:发送邮件至我们的139信箱,然后由139信箱通过短信发送到我们的手机上,达到免费短信接收的效果。本文涉及到的2种免费短信接口都存在一定的限制,我会在文章中穿插说明,同时在本文的总结中进行说明。如下图所示,创建应用后,我们进入CONSOLE后台,Twilio为了发送短信,会为我们分配一个手机号码。Twilio提供的免费接口,暂。

2024-01-20 22:57:20 945 1

原创 chapter7-使用短信接口发送信息

是我们自己定义的短信签名,短信签名是作为短信发送者属性的一种标识,一方面能够让接受者知道我们的提供服务的名称,另一方面也是短息服务提供商用来判定我们是否正常使用短信接口的一种方式。讲了那么多知识点,还是没有写代码,可能很多同学都开始烦躁起来了——那我们就做一个天气预报的短信通知服务,约定每天8点的时候,短信通知我们今天的天气如何吧!一种是直接提供SDK。使用Token验证的方法提供API接口,的确大大方便了开发者的开发过程,但是也随之带来了很多的问题,比如编码错误、请求的文字太多系统无法处理等等。

2024-01-20 22:53:54 860

原创 chapter6-BeautifulSoup 简介和使用

是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.我们注意到,官方说明中,提到了提取数据这个词语。为什么已经爬取了网页源码,还要解析后才能提取到相关的内容呢?

2024-01-19 00:19:37 894

原创 chapter5-使用网页爬虫取利器—Requests

使用Requests 能够将大量原本复杂的开发过程进行简化,方便了我们更关注网页爬取技术本身;对与请求头,我们可以直接定制,你可以参考这篇文章详细的了解请求头和请求体;

2024-01-19 00:16:36 1420

原创 chapter4-爬取你的第一个网页

从本篇开始,我们正式开始学习Python 网页爬虫的相关知识。通过上面两篇基础教程的学习,相信大部分的小伙伴都了解了Python 和HTML 的相关开发技术,也可能有一小部分的同学因为刚学习新的知识,还没有完全明白,就迫不及待的点开了这篇文章。无论怎样,在正式学习网页爬虫的相关文章中,作者都会力求详细,对一些之前没有讲解过、讲解的不够细致的点再次复习,将Python 网页爬虫的学习坡度降到最低。本篇使用Python 自带的 urllib 模块抓取简单的网页,在这过程中为读者提供一个较为详细的网页爬虫过程。u

2024-01-18 10:23:32 948

原创 chapter3-网页基础知识一点通

当你在浏览器输入,并回车访问的时候,你看到的所有的展现在你屏幕上的东西,其实都是网页。网页是通过URL来进行识别和访问的。按照wiki 百科的说法,网页被定义成下面的说明网页web page)是一个适用于万维网和网页浏览器的文件,它存放在世界某个角落的某一部或一组计算机中,而这部计算机必须是与互联网相连。网页经由网址URL)来识别与访问,当我们在网页浏览器输入网址后,经过一段复杂而又快速的程序,网页文件会被传送到用户家的计算机,然后再通过浏览器解释网页的内容,再展示给用户。是网络中的一“页”,通常是。

2024-01-18 10:21:12 696

原创 chapter2-Python 极速教程

需要说明的是,本部分的所有语法,都是围绕着本课程展现的,还有很多未涉及的语法和高级特性。作为一名开发者,我得承认:如果你想以后从事Python开发工作,并且目前对Python 一点都不了解的话,这样的学习方法并不合适。之前我们讲的一系列的操作,都是放在内存中的,一旦关闭程序,那么相关的变量也就被释放了。对于重复性的代码段,我们不需要每次都写出,只需要通过函数的名称调用就可以了。列表是具有索引的,因此想要访问一个列表中的数值,只需要列表名+索引值就能够得到了。上面的语句是输出1,到10之间的数,请注意,

2024-01-17 11:02:47 902

原创 chapter1-爬虫那些事

无论你之前学过什么语言,无论你是否了解Python,在正式学习本课程前,你需要告诉自己:Python作为高级编程语言,哪怕你没有编程的基础,你也可以高傲而且自豪地去使用它!本门课程无意争辩到底哪门语言的效率最高,亦或是哪个编程语言是最好的。Python 简单易学,初学者在什么都不了解的情况下,都可以很好的上手;Python 自带的封装接口,以及丰富的第三方库大大简化了我们的开发流程,一些看上去很难实现的功能,往往一行代码就能够搞定;基于Python 开发的网页爬虫框架众多,方便我们以后的深入学习。

2024-01-17 11:01:08 1346

原创 跨越语言边界—Java如何调用JavaScript函数

Java调用JavaScript虽然在日常开发中相对较小众,但仍然具有重要性,并且在某些场景下不可或缺。这种技术可以扩展Java应用程序的功能,特别是在与前端开发有关的项目中。我们应深入了解所使用的技术,考虑性能、安全性和维护性等因素。此外,应根据项目的具体需求和复杂性来决定是否使用Java与JavaScript的互操作性。

2024-01-16 14:06:52 921

原创 加固 Java 应用程序—代码加密的项目实践

代码加密是一个容易被忽视,但是在某些情况下十分需要的方向。对于项目组来说,我们需要保障公司的某些敏感数据(例如数据接口、数据处理逻辑)得到充分的保护。代码加密有助于确保这些数据不被未经授权的人访问或窃取;在某些情况下,我们的业务可能受到法规和合规性要求的约束。代码加密有助于确保我们的应用程序符合这些要求。最后,需要强调的是,代码加密并不是一劳永逸的解决方案。虽然它可以提供一定程度的安全性,但没有绝对的安全。攻击者可能会采取各种方法来反混淆代码,因此,安全性是一个多层次的问题。

2024-01-16 14:06:17 961

原创 客户定制项目如何优雅地记录日志?

敏感日志的保存方式和脱敏方法,一定要事先沟通,保证日志能从客户环境获取;不要相信客户的输入,第一时间确定的永远是客户进行了什么操作;日志是出现问题时最重要的复现工具之一,一定要做好规划,日志内容要足够详细;

2024-01-16 14:05:45 318

原创 热部署在 Java 定制项目的使用

热部署技术是能够极大方便开发部署的,但需谨慎使用。在客户项目中,我们不仅需评估热部署的适用范围,还需遵守客户的安全规范。过多依赖热部署可能引发问题,应尽量避免。作为开发或者是项目负责人,确保在开发和测试环境中合理使用热部署以提高效率,但在生产环境中,需遵循最佳实践,确保稳定性和安全性。客户的规定和标准是首要考虑因素,应积极遵循以确保项目的成功和安全运行。

2024-01-16 14:05:03 797

原创 拥抱Java 21—一个改动让集合类使用更加方便

我对Java引入了明确定义的遍历顺序和一致的API感到非常开心。这个变化为Java编程带来了许多好处。首先,它使得处理集合变得更加直观和便捷。开发人员现在可以更轻松地执行一系列常见的集合操作,而无需担心遍历顺序的复杂性。此外,这个改进还提高了代码的可读性和可维护性。由于引入了一致的API,不同的集合类型之间的切换变得更加无缝,使得代码更加清晰和一致。这对于团队合作和长期维护项目尤为重要。如果你是技术经理,你会升级 Java 21吗?

2024-01-16 14:04:19 1122

原创 SpringBoot 下载文件名空格变加号的问题【兼容正确加号】

问题来源最近在做一个项目,里面涉及到了文件下载的功能。测试同事在回归测试的时候反馈,文件名中有空格的文件,下载后空格变成了加号。排查过程数据源首先是排查数据库中存储的文件是否正常:可以看到,当前数据库中的文件名(f001v_disk001)是正常的。那就意味着是在代码的逻辑处理中导致的。代码逻辑很简单的下载代码,摘取一下对应的代码片段:String fileName = getFileNameById(id);response.setHeader("Content-Disposition

2022-02-18 14:54:46 3642 8

原创 高可用 Reids 之三:高级数据类型 HyperLogLogs

在Redis 数据结构中,HyperLogLogs与bitmaps经常做比较。那么,HyperLogLogs 在Redis 中的定位是什么,它在哪些场景中使用最合适呢?

2022-02-07 11:00:39 807

原创 高可用 Redis 之二:高级数据类型 bitmaps

itmaps 并不是一个单独的数据类型,它只是 字符串(string) 的二进制表现,可以说是字符串的子集。bitmaps 通过比特来表示某个位置的值,能够大大减少存储空间。

2022-01-26 14:23:56 890

原创 高可用 Redis 之一:Redis 的单线程与多线程

在日常的使用和面试过程中,我们经常会被问到:Redis 是单线程的吗?网络上目前大部分的答案,都是十分肯定的告诉你:Redis 是单线程的。但是事实,是真的这样的吗?

2022-01-25 11:02:23 533

原创 Java 并发编程 第二期:CAS与乐观锁

在讲解 CAS 和乐观锁之前,我们首先需要了解一些基本概念:Java 线程模型以及为什么需要线程模型Java 线程模型我们常说线程是进程的子集,一个进程可以有多个线程。但是对于 Linux 系统而言,并没有线程这个概念。我们可以说,在 Linux 中线程等于轻量级的进程。区别在于:进程拥有独立的内存地址 ,但是线程没有独立的内存地址,多个线程只能共享一个内存的地址。如图所示,Java 是运行在操作系统中的,那么其线程也对应着操作系统中的每一个线程。对应的,Java线程模型和内核必然存在着某种关

2022-01-19 13:17:57 555

原创 Java 并发编程 第一期:锁的机制

Java 并发编程是Java 开发工程师 在日常开发中绕不开的开发工具。本课程为并发编程的第一期,主要讲解 Java 并发编程中有关于锁的机制,从基础出发,尽量做到深入浅出。

2022-01-13 13:36:39 112

Java学生考勤管理系统.zip

查询修改学生个人信息,查看考勤信息、教师信息和课程信息。 查询修改教师个人信息,增删改查教师本人所授课学生的考勤信息。

2019-05-28

C#局域网聊天发送文件

C#开发的局域网聊天软件,可以进行发送消息,传输文件等常见操作。点开即可运行,不需要做任何配置。业务代码逻辑规范,注释完全

2018-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除