
Java
文章平均质量分 76
北冥牧之
一个人必须不停地写作,才能不被茫茫人海湮灭。
展开
-
VMware安装CentOS Stream 8以及JDK和Docker
本篇文章我们的大概讲解了通过VMware安装CentOS Stream 8、JDK和 Docker。由于之前我已经 写过 类似的文章,这里只是简单讲述,详细的安装文档已经在链接中发出来了。原创 2023-09-23 17:33:11 · 2293 阅读 · 1 评论 -
万字详解Java的Lambda表达式
这个方法实现,只能是接口的方法实现,不能是抽象类的方法实现。至于为什么,这里我们先卖个关子。此时代码可以写成这样并运行,我们依然可以打印出一个“喵”。原创 2023-04-18 22:13:03 · 1491 阅读 · 1 评论 -
Java命令行参数
本文我们介绍一个命令行工具,Apache Commons CLI。在我们执行java的jar包时,常用的命令是我们还可以在执行该命令时添加执行参数,不管是在dos还是Linux上执行该命令,抑或是在IDE工具中配置,都是一样的。Java的命令行参数有很多,本文不做介绍,感兴趣的小伙伴可以自行百度:Java命令行参数。原创 2023-04-07 17:13:50 · 1822 阅读 · 0 评论 -
Git的标签:tag
目录1. 查看标签1.1 简单查看1.2 匹配筛选标签 2. 创建标签2.1 附注标签2.2 轻量标签2.3 代码提交之后打标签2.4 提交标签3. 删除标签4. 检出标签Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( 、 等等)。本篇文章我们简单介绍一下Git标签。Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。轻量标签很像一个不会改变的分支——它只是某个特原创 2023-01-06 21:46:13 · 2083 阅读 · 0 评论 -
架构师技术要求
有这样一句话,Redis搞定,架构师就搞定了一半。作为架构师,有两大工具必不可少,一个叫Redis,一个叫Nginx。但是他们都不简单,源码都是c编写的。下面我们就简单讲一讲架构师的基本技术要求。原创 2022-10-23 13:07:56 · 837 阅读 · 0 评论 -
服务器上的 Git - 生成 SSH 公钥
目录概述一、生成 SSH 公钥1. Linux 系统2. Windows 系统二、发送公钥三、 复制公钥四、 验证 SSH参考文章概述许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。一、生成 SSH 公钥首先,你需要确认自己是否已经拥有密钥。1. Linux 系统默认情况下,用户的 SSH 密钥存储在其 ~/.ssh原创 2022-05-07 12:33:09 · 3161 阅读 · 0 评论 -
XOR及其应用
XOR是什么?XOR就是单词exclusive or的缩写,翻译成中文就是,异或。关于异或是什么,以及异或自身的定律,本文不作讨论。我们只需要记住一点,异或的最简单的意义就是:不同为1,相同为0意思就是,如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被原创 2021-07-12 09:51:20 · 1569 阅读 · 0 评论 -
Java的原码补码反码以及位移运算的详细介绍与使用
Java的原码、补码、反码以及<<、>>、>>>等位移运算介绍与使用一、Java的原码、补码、反码(一)正数(二)负数二、位移运算一、左移特殊情况二、右移和无符号右移1.右移注意:2.无符号右移两者的区别和联系三、结论一、Java的原码、补码、反码具体概念在各大网站博文上多如牛毛,此处不赘述,直接上重点:首先,我们通常所说的原码、补码、反码都属于机器...原创 2019-08-06 11:22:56 · 284 阅读 · 0 评论 -
一文读懂Cookie、Session、Token和JWT(建议收藏)
文章来源:https://mp.weixin.qq.com/s/iSoGtv8AUaUBUn4pPnNMXg前半部分有少许增删。什么是认证(Authentication)什么是授权(Authorization)什么是凭证(Credentials)什么是 Cookie什么是有状态协议什么是无状态协议什么是 SessionCookie 和 Session 的区别什么是 Token(令牌)Token 和 Session 的区别什么是 JWTToken 和 JWT 的区别常见的前后端原创 2020-07-05 15:38:00 · 610 阅读 · 0 评论 -
Mybatis的collection三层嵌套查询(验证通过)
查询class的信息,以及对应的学生列表,采用2个SQL的写法处理,其中select是查询这个studentList的SQL的id,即queryStudentInfo。在Mybatis中存在很多1对N查询的场景,比如在打开一个编辑页面时,需要带出对应的新增时添加的数据,如果页面有一些多个层级一对多的情况,那么在编辑时就需要查询出所有的层级。查询学生的信息,以及爱好列表,采用单个SQL的查询方式,直接把爱好的字段直接放在了collection中。但是如果是三层,乃至于多层的嵌套就不太好处理了。...原创 2022-08-18 15:23:32 · 4862 阅读 · 10 评论 -
Java Web三大组件
这样我们就可以在服务器启动和关闭的时候执行一些任务,比如服务器启动之后读取SpringFramework的配置文件(applicationContext.xml),创建Spring的核心容器。此接口的实现接收有关更改它们所属的Web应用程序的servlet上下文的通知。日常开发中会用到的ServletContext的事件监听,对应的API就是ServletContextListener。JavaWeb三大组件指的是Servlet、Filter、Listener。二、Listener使用。...原创 2022-07-18 23:08:53 · 2954 阅读 · 2 评论 -
Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.DataSourc
项目中使用了阿里的 Druid 数据库,刚开始很正常,后来发现出现了问题,问题如下: 日志比较多,重点有以下几个: 其他的我们截图看看: 上图打码的地方是公司的dao层查数据库的代码。意思很明白了,就是因为在进行查询的时候,连接已经关闭了,而且会一直刷出这样的日志。综合网上大家的意见,可能原因主要有以下几点: 博主给的答案是: 参考:Druid连接池自动关闭其实这个答案和上面一个的说法一致,不过这个给出了解决方案:是否在定时器中手动获取了 DataSource,然后使用后关闭了或者用完后长期不再用被连接池自原创 2022-07-08 17:39:12 · 29033 阅读 · 0 评论 -
maven安装jar包
在中央仓库、其他企业的仓库,或者私服,没有对应的jar包的时候,我们就需要手动安装对应的jar包。这个命令就是通过maven来执行的。原创 2022-06-14 10:19:27 · 5679 阅读 · 2 评论 -
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_
Spring boot项目正常启动没问题,但是debug模式启动就报错。FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)ERROR: transport library not found: dt_socketERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(原创 2022-06-14 10:01:02 · 3781 阅读 · 5 评论 -
idea 社区版设置 vm options 参数
一、简介项目开发中,很多时候会遇到一些乱码情况,这个时候我们就要进行编码修改,其他地方修改了之后还要修改一个地方,就是我们的虚拟机启动参数。打开我们的应用程序配置,找到 vm options,然后在里面输入参数:-Dfile.encoding=UTF-8如果你使用的旗舰版的 idea,这个当然没问题,但是如果你使用的是社区版的,不好意思,你找不到这个 vm options。如图所示:我的 idea 是安装了中文插件,所以会这么显示。我们看到,并没有虚拟机选项,或者 vm opti..原创 2022-05-05 12:00:17 · 18311 阅读 · 0 评论 -
IDEA上Java项目控制台中文乱码
目录一、错误说明二、解决方案第一步,修改 idea64.exe.vmoptions 文件第二步,修改 IDE 编码第三步,添加 vm options第四步,编辑自定义 vm options第五步,重启 IDE!一、错误说明Java项目在 idea 上本来好好的,几天没打开,竟然全部报错,解决了报错之后又出现了其他问题,问题其中之一就是:控制台中文乱码具体情况,参见我的另一篇文章:IDEA上Java项目启动全部报错就是这篇文章的情况导致的...原创 2022-05-05 11:44:23 · 11115 阅读 · 1 评论 -
IDEA上Java项目启动全部报错
在IDEA上的Java项目本来是好好的,不管是编译还是启动都没问题。现在是不知道什么原因,竟然全部报错了,不管打开哪个类文件都报错。首先排除:settings文件 maven导入 jdk版本在开篇中我们说到了,项目本来是好好的,所以以上问题应该是没问题的。不过这也不是绝对的,为什么这么说呢?因为我的idea是加载了多个项目,启动不同项目的时候启动了多个idea窗口,并没有把这些不同的项目放在同一个idea启动窗口中作为不同模块来打开。这不同的项目的jdk版本是不一样的,我修改过他们的jd原创 2022-05-04 09:13:17 · 6846 阅读 · 0 评论 -
Java项目启动报错:Process exited with an error: 1 (Exit value: 1)
刚开始一直不知道这个是什么问题,网上的答案莫衷一是,看到有网友说是端口占用问题,但是我看idea中没有说这个问题:这是报错情况。我又点击了exec那一行,终于显示出错误原因了:APPLICATION FAILED TO START***************************Description:Web server failed to start. Port 8011 was already in use.Action:Identify and stop the p.原创 2022-03-17 16:02:13 · 38813 阅读 · 9 评论 -
将应用部署到Tomcat上
首先,我们把项目打成jar包,通过命令的方式启动项目看看效果。1.打包这个简单,直接通过maven的install命令即可;2.上传到linux指定目录将打好的jar包,通过ftp工具上传到指定目录。3.运行jar包在jar包所在目录我们使用命令:nohup java -jar xxx.jar &在我们执行命令之前,我们打开另外一个窗口,找到程序运行生成的日志,使用tail命令打开实时观测:tail -f nohup.out我们运行jar包,结果如下:原创 2022-02-05 14:08:53 · 802 阅读 · 0 评论 -
maven仓库报错:501 HTTPS Required
之前项目中的settings配置一直使用的阿里云的镜像地址,只是阿里云的有不少需要的依赖没有,就增加了mirror。 <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo1.maven.org/maven2/原创 2021-12-31 16:04:58 · 5758 阅读 · 2 评论 -
Java三大器之拦截器(Intercepter)的实现原理和代码示例
说明:本文来源如下:Java三大器之拦截器(Interceptor)的实现原理及代码示例Java三大器:过滤器、监听器、拦截器对比 过滤器(Filter) 监听器(Listener) 拦截器(Intercepter) 关注的点 Web请求 系统级别参数、对象 Action(部分Web请求) 如何实现 函数回调 事件 Java反射机制(动态代理) 应用场景 设置字符编码 统计网站在线人数 拦截未登录用户 U原创 2021-09-02 00:10:09 · 5414 阅读 · 0 评论 -
Zookpeer的ZAB协议
ZAB(Zookeeper Atomic Broadcast) 协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,zookeeper实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。转载 2021-07-20 23:14:37 · 192 阅读 · 0 评论 -
Idea的Language level自动恢复到8
我的idea版本是最新版的2021.1版本,jdk用的是15的版本——个人比较喜欢追求新一点的东西,但是这个idea上的Project Structure下的Modules目录的Language level总是自动恢复到8,挺烦人的,查找了资料发现:按照其他博文的做法我尝试了下:很明显,报错了,这说明他们的方法在我的这个idea版本上是行不通的,但是我想,这是在pom文件中添加的属性,应该与idea版本无关吧!但是我也想,有可能只是idea的告警等级问题,这个告警等级我们先不管他,就这样去编原创 2021-04-10 00:08:26 · 1803 阅读 · 3 评论 -
Idea上隐藏不必要提交的文件
接上一篇文章——Idea上的Java项目编译全部报错,顺便记录一下隐藏不必要提交的代码方法,当然其他博文中都有介绍,这里大概说一下。打开File --> Settings -->Editor --> File Types——>Ignored Files and Folders,如图:Idea版本:2021.1——刚刚更新了最新版。上图中被红框框柱的四个文件后缀:.gitee、.idea、.iml和target目录是我添加进去的,你们可以按照自己的习惯添加。需要注意原创 2021-04-09 23:38:30 · 1279 阅读 · 0 评论 -
Idea上的Java项目编译全部报错
本来准备写一下关于Spring事务嵌套的问题的代码,打开Idea之后,忘记动了什么东西,所有代码全线飘红,之前遇到过这种情况,这次竟然半天没有解决掉。分享一下这次解决的历程。这里的报错有两类,一类是我自己写的代码,一类是导入的相关jar包,比如:尝试过的解决方案有:更新maven; 使用maven进行clean、compiler等; Rebuild项目; 设置Modules中的Sources的类别;......原创 2021-04-09 23:13:23 · 3658 阅读 · 0 评论 -
一文说透String的hashCode
关于String类的hashCode方法,网上已经有很多文章,他们大多讲解的都是基于以下代码:public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i];原创 2021-02-11 14:51:46 · 8627 阅读 · 11 评论 -
Eclipse新建类时日期注释格式修改
一直对于新建的类中自动生成的注释不满意,尤其是对于日期时间格式很不喜欢,所以决定自己修改一下。尝试了几次没有达到自己满意的效果,百度了很多文章,却没有找到一篇文章对于这个问题有一些哪怕浅层次的介绍。修改注释格式的方法,网上很多,这里简述一下:按照下面的步骤走下去:Window—>Preferences—>Java—>Code Style—>Code Template—>Code—>New Java files找到New Java files之后点击右上角的原创 2020-10-24 18:34:31 · 733 阅读 · 0 评论 -
Java的集合排序:Collections.sort、list.sort和list.stream().sorted方法详解
在工作中我们经常需要对集合中的元素进行比较排序,下面就java中常用的排序方法进行详解。主要有三种用法:// 第一种Collections.sort(studentList);// 第二种studentList.sort(Comparator.comparing(Student::getAge).reversed());// 第三种List<Student> studentList = studentList.stream().sorted(Comparator .compa原创 2020-10-17 14:11:57 · 12594 阅读 · 3 评论 -
IDE连接MySQL报错:Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ property
IDE连接MySQL报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.意思就是:服务器返回无效时区。转到“高级”选项卡并手动设置“serverTimezone”属性。百度之后找到问题的答案,自己尝试解决,发现个别地方有坑,谨记于此。本人MySQL版本:mysql> select version();+-----------+原创 2020-10-07 14:18:56 · 1029 阅读 · 0 评论 -
Git的author与committer的区别
在使用Git提交代码的时候会有author和committer两个不同的身份,很多人不明就里,当然不出问题也不管他们,实际上他们两个是有区别的,只不过我们本地提交代码的时候因为两者都是一样的。当然你也可以设置成不一样的——这样的操作实际很没必要,当然这指的是对于我们日常开发提交代码而言。下面说一下两者之间的区别:首先从单词上我们可以看出,author是作者的意思,而committer是提交者的意思。通过字面意思我们大致可以理解为:author是代码的编写者,而committer是代码的提交者。这原创 2020-08-19 10:20:35 · 11007 阅读 · 8 评论 -
MySQL出现“Lock wait timeout exceeded; try restarting transaction”
本文参考:https://www.cnblogs.com/guanbin-529/p/10993549.html今天在一次单条数据插入操作时,Navicat客户端右下角提示:查询时间xxxs,即即查询时间多少秒,这个时间是一直增加的,最后定格在:查询时间50.855s。SQL执行结果信息提示如下:1205 -Lock wait timeout exceeded; try restarting transaction时间:50.824s挺好奇这是什么错误,还有一个是两者的时间竟然不一样。.原创 2020-08-13 15:52:25 · 1040 阅读 · 0 评论 -
Spring从入门到精通(一)
本章主要是Spring框架的概述与整体介绍,对于Spring比较熟悉的朋友可以跳过。一、Spring概述Spring是一个优秀的开源框架,它为更容易而又快捷地开发java应用程序提供了全面的基础设施。下面是百度百科关于其起源的介绍Spring的形成,最初来自Rod Jahnson所著的一本很有影响力的书籍《Expert One-on-One J2EE Design and Development》,就是在这本书中第一次出现了Spring的一些核心思想,该书出版于2002年。另外一本书《Ex原创 2020-08-11 23:59:06 · 3018 阅读 · 0 评论 -
GIT报错:POSSIBLE DNS SPOOFING DETECTED!
在工作中使用GIT难免会遇到各种各样的问题,一天不知什么情况,电脑上所有浏览器保存的密码都没了,然后git也出了问题,提交代码报错,图片如下:原创 2020-08-11 22:21:19 · 696 阅读 · 0 评论 -
枚举最常规的使用
对于单一的常量,我们通常会放到常量类中,如果有需要就添加一个。但是,如果是固定数量,比如春夏秋冬、总部机构类型等,使用枚举是一个更好的方式,因为它们不仅仅有对应的code,还有对应的name,或者说是KV,此时是使用枚举的最好时机。public enum SeasonEnum { // 枚举实例必须定义在枚举类的最前面 SPRING("1", "春天"), SUMMER("2", "春天"), AUTUMN("3", "春天"), WINTER("4", "春原创 2020-08-11 15:46:53 · 193 阅读 · 0 评论 -
详解CAP定理与BASE理论
分布式一.CAP定理CAP原则又称作CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否有同样的值(等同于所有节点访问同一份最新的数据副本)。 通过某个节点的写操作结果对后面其他节点的读操作可见; 如果更新数据后,并发访问情况下可立即感知该更新,被称作强一致性;原创 2020-07-07 21:26:44 · 1189 阅读 · 0 评论 -
关于异常处理的特殊情况
关于异常处理的特殊情况说到异常处理问题,里面有一些弯弯绕绕的,简单来说,try-catch就像if-else一样,这么理解就明白很多了,其实也就是这么回事。今天遇到一个问题,要获取excel文件中的某一个字段,这个字段可以为空,但是公共字典项又对该字段做了长度校验,那代码中自然也要做校验的。可是问题来了,如果该字段为空,那么获取该字段的方法就会报空指针,但是你必须拿到该字段,因为你要获取其长度...原创 2019-10-12 17:31:23 · 234 阅读 · 0 评论