自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

安洁莉娅丶的博客

一个无聊会打打代码的人

  • 博客(126)
  • 收藏
  • 关注

原创 【部署】Dubbo 管理控制台 Dubbo Admin 0.2.0 安装启动

2021.10.11自学dubbo过程中,需要部署dubbo的admin控制台,踩到了不少坑。特此记录。事前准备zookeeper-3.4.10dubbo-admin-0.2.0版本很关键,因为dubbo-admin本质是一个SpringBoot项目,它里面是有很多pom.xml依赖,如果版本对不上,就部署不出来。启动zookeeper服务器在zookeeper的bin文件目录下,启动zkServer.cmd。修改dubbo-admin配置打开dubbon-admin可以看到分布如下

2021-10-11 10:40:32 866

原创 IntelliJ IDEA 2020.3 将Web项目(SSM项目)打包成war包的步骤(包含解决访问404的方法)

2021.6.25本篇文章承接上一篇文章的结尾:【部署项目】【CentOS_7】将Web项目(SSM项目)部署到阿里云服务器最后提到要讲Web项目打包成war包部署到tomcat上。因为我用的是IDEA 2020.3 (非社区版),所以我就通过这个集成开发工具来进行讲解了。有很多步骤我也是参考别人的博客,因此趋于雷同,不过本篇文章主要是记录一个别的博客没有提到的一个大坑。第一步:配置打包路径。Project Structure --> Artifacts --> Web Applic

2021-06-25 16:41:27 3375 3

原创 【部署项目】【CentOS_7】将Web项目(SSM项目)部署到阿里云服务器

2021.6.25大三的课程设计需要用到微信小程序,微信小程序中有可以使用云服务器还是自己的服务器,想了一下还是想尝试一下使用自己的尝试搭建的服务器。于是有了这一篇文章。在途中遇到了不少的坑,特此记录。可能有些坑并不适用于所有的博友,但我还是希望路过的博友们能够通过这篇文章少走一些弯路。目录1、准备工作购买服务器下载需要的资源2、尝试使用XShell和Xftp来远程操作云服务器3、安装JDK并配置环境变量卸载已经安装过的JDK版本安装JDK配置Java环境变量4、安装Tomcat并且启动服务安装Tom

2021-06-25 16:05:55 1168 2

原创 【报错】【CentOS_7】【BIND】解决named[7151]: loading from master file XXX.XXX.XXX failed: permission

2021.6.4参考博客:点击此处报错信息如图所示:今日在搭建DNS服务器的时候,出现了这个报错,经过在网上查询资料,发现是zone域文件权限的问题。解决方案:首先进入zone域的目录下,并且查看文件信息# 进入zone域目录cd /var/named# 查询文件信息ll可以看到,官方的zone文件,文件权限都是root:named而自己在root账号下创建的文件文件权限是root:root修改文件权限chown root:named dnstuneltest.com.

2021-06-04 11:03:38 4316

原创 【报错】【CentOS_7】【BIND】解决named[5493]: network unreachable resolving

参考博客:点击此处2021.6.4今日搭建DNS服务器的时候总是不知道为什么ping不通,结果发现运行状态中报错出这个信息,根据上述博客的解决方案,成功解决了这个报错。原因:这个错误的原因是named尝试使用IPV6进行传输,所以我们可以让他只运行在IPV4模式下。解决方案:编辑文件vi /etc/sysconfig/named在文件上添加一句OPTIONS="-4"...

2021-06-04 10:51:35 1296

原创 SpringAOP中责任链模式的原理浅析(自己动手实现一个简易的责任链与SpringAOP源码学习)

2021.4.18本文参考博客:点击查看原文根据其原文用代码实现,并作图理解。目录责任链模式自己简单实现一个责任链模式分析代码责任链模式一个对象被多个拦截器拦截处理时,我们称这样的设计模式为责任链模式。重点是其中在多个拦截器中,对象都是同一个,这样做能让处理始终围绕一开始的对象。责任链模式在Filter过滤器和Spring的Interceptor里面都常常用到。自己简单实现一个责任链模式先画出UML的类图,大致的关系如下:可以看出上面有三个接口,三个实现类。接口代码分别是:连接点

2021-04-19 11:53:22 629

原创 有关AOP术语(织入、增强等)的个人理解

2021.4.11阅读《精通Spring4.x企业应用开发实战》一书做笔记下图为本人理解的AOP术语韦恩图,由于引介跟增强在同一个位置,没在图上标出。连接点(Joint Point)由两个组成:程序执行点相对位置表示的方位Test.foo方法执行前的连接点:执行点为Test.foo(),方位是执行前的位置。切点(Pointcut)每个程序有多无数多的连接点,如果程序中有一个方法,那么连接点就有方法执行前,方法执行后,异常抛出时,方法调用前后这些连接点。Spring中通过切点来定位

2021-04-11 16:45:20 1058

原创 DES加密算法(Java实现)

2021.3.29信息安全课上要求算一个DES的一个流程。实在不想用手算,于是用Java语言实现了分解功能,特此记录。算法步骤参考博客:点击此处上面博客的图可以说是非常清晰了。package entrypt_homework;public class DES { //起始置换表 长度8X8 public int[] innitial = new int[]{ 58,50,42,34,26,18,10,2, 60,52,44,3

2021-03-29 10:12:32 1997 2

原创 Thread.currentThread().getContextClassLoader().getResourceAsStream()无法读取配置文件的记录

2021.3.28问题描述今天在学习尚硅谷小项目的时候看到老师写的代码中用到了JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");这样一段代码,目的是为了加载jdbc.properties这个配置文件,但是我发现我自己使用的时候是空指针异常。非常莫名其妙。于是乎,在网上找了一堆资料,发现很多人都在文章中推荐使用Thread.currentThread().getContextClassLoader().

2021-03-28 16:20:19 6322 3

原创 IntelliJ IDEA 2020.3 :decompiled.class file bytecode version:52.0(java 8)解决问题

今天在IDEA中想要阅读源码的时候发现自己点击导入包的类时看到的是.class文件反编译过来的代码,并没有注释,花了一段时间,解决了问题。注意,在这里我针对的是Maven项目下的处理方式,但是手动导入jar包的原理应该是一样的,如果不是Maven项目的博友,可以从本文提出方向去思考一下。问题图片照理来说,选择了正确的jar包文件,就会显示出源码文件(即.java文件)点击之后出现:说明jar包文件中并不包含源码文件,而是只有.class文件。所以,问题转换:应该去下载包含源码和文档的jar包,并

2021-03-27 14:55:12 21418 4

原创 Linxu内核编程报错:implicit declaration of function ‘init_timer’

今天在做Linux定时器实验的时候,使用init_timer接口的时候,发现爆出这个错误。后在stackoverflow找到答案。(需要梯子)点击此处错误原因在4.15内核里,init_timer被移除了。需要换用新的timer_setup接口。修改后的语法#if 如果Linux内核版本 < KERNEL_VERSION(4,14,0) init_timer(&dev->getIntrTimer); dev->getIntrTimer.data = (u

2021-03-26 16:29:14 5084 2

原创 广州大学《网络编程》第二讲作业 —— 文件加密/压缩文件

作业要求作业难点文件转换为字符串,并对字符串进行加密,加密后进行解密文件的递归读取文件的压缩,Zip流的使用作业代码作业1本代码参考意义价值不大,文件读取较为冗余,用于博主本人记录。里面字符串加密的工具转载于为“com.openailab.oascloud.gateway.util.EncryptUtil”作者为:zxzhangpublic class EncryptOrDecipher { public static void main(String[] args)

2021-03-25 20:37:30 1287

原创 Java中读取文件转换为字符串,并重新转换为文件

目的:为什么要文件转字符串?程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型。对读取声音、图像、视频等文件时,在Java中一般以字节流的形式读取为一个byte数组。但是如果我们要对数据进行加密时,byte数组没有字符串加密来的轻松,因此这里的需求是把byte[]数组转换为字符串,再把字符串转换为正常的byte[]数组,转换为byte[]数组后,想要再转换为文件,就轻松多了。第一步:文件转为byte数组在这一步很多方法,这里采取一种最简单粗暴的,并且为了代码整齐,选择了抛

2021-03-23 00:14:06 3125 1

原创 多图理解MySQL事务的隔离等级,脏读,不可重复读,幻读的几大概念

2021.3.17今天在阅读《高性能MySQL》的第一章时,遇到了四大隔离等级的概念,反复琢磨了许久,最后弄出了几张图来帮助记忆,希望对路过的博友们有帮助。目录概念定义三大问题之一 —— 脏读图解三大问题之二 —— 不可重复读图解三大问题之三 —— 幻读图解隔离等级 —— 提交读图解隔离等级 —— 可重复读图解隔离等级 ——— 可串行化图解概念定义三大事务问题:脏读:事务可以读取另一个事务未提交的数据。不可重复读:在同一个事务中,执行相同的查询,查询出不一样的结果。常对应upd

2021-03-17 10:56:04 212 1

原创 JVM面试题:新生代、老年代、永久代、元数据的相关问题

新生代新生代存放一些新生的对象实例。新生代内又划分了3个区域,分别是:EdenSurvivorFromSurvivorTo一般情况占据的位置是8:1:1当新生代的Eden区区域不够的时候,就会发生minor GC。每当进行一次minor GC时,区域间进行数据交换,Eden区和SurvivorFrom区域会把存活的对象放进SurvivorTo区域。在新生代之中一般采用复制算法进行GC。老年代老年代存放比较稳定存活的对象。对于老年代有Major GC的垃圾回收机制。有两个触发条件

2021-03-14 10:08:32 462

原创 广州大学《网络编程》第一讲作业 —— 使用Java编写一个转换十进制小数的GUI程序

目录作业目的作业代码作业要求作业难点作业思路有关正则表达式有关BigDecimal关于翻转关于String.split()作业代码作业总结作业目的作业代码已上传到Github中GitHub作业要求GUI已经由现成代码给出,因此只需要实现整数部分和小数部分的逆序转换。要充分考虑代码健壮性,即要考虑到各种输入情况作业难点考虑到输入是有很多种不合法情况的,使用正则表达式对输入内容进行筛选。要考虑超出字符串范围,因此不能使用Integer或者是Double,只能使用String或者Big

2021-03-10 11:51:00 1279

原创 IDEA 2020.3 如何配置JVM运行参数

在《深入了解Java虚拟机》书中实战,IDE只谈到了如何用eclipse来进行配置JVM参数。这里记录一下如何使用IDEA来进行配置JVM参数。在工具栏中找到Run,并点击“Edit Configurations”2. 按照操作来进行选择3. 找到Add VM options4. 点击后,出现新的文本框,在文本框中填写JVM参数...

2021-03-04 14:07:32 3569 3

转载 Java面试题——Java基础篇

本文转载自 微信公众号“Java知音”内容稍有修改或者添加,侵权则删。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?考点:Java基础知识答:Java源文件中可以包含多个类,但是必须只能有一个类是public来修饰的,并且用public来修饰的类名要与文件名一致。2、Java有没有goto?考点:保留字答:goto是java的保留字,现在没有在Java中使用。3、说说&和&&的区别。考点:运算符答:回答思路:相同点、不同点相同点:

2021-03-02 11:37:09 175

原创 剑指Offer:矩阵中的路径(JAVA实现)

原题:点击此处考点:DFS这是一道很容易就想到解法的题目。但是我首先想到的是BFS,BFS的解法不是不行,而是太过复杂,不适合面试的时候给出。DFS与BFS的时间复杂度是一样的,并且可以用递归实现,因此面试的时候应该用DFS更好一点。注意细节。各种返回的条件。class Solution { public boolean exist(char[][] board, String word) { char[] chs = word.toCharArray();

2021-03-01 21:41:25 102

原创 剑指Offer:剪绳子(JAVA实现)

原题:点击此处考点:动态规划本题也可以用数学来解,但是博主太过愚笨了,只能用动态规划来解了。0和1都是不可分割的,所以dp[0] = 0,dp[1] = 0假设当前数字为i那么 1<= j < idp[i] 在每一个j处都有两个抉择:要么直接取j * (i - j)要么i - j继续拆分,即j * dp[i-j]对每一个i都进行同样的操作时间复杂度:O(n2)空间复杂度:O(n)class Solution { public int cuttingRope(int

2021-03-01 20:42:59 98

原创 剑指Offer:最长不含重复字符的子字符串(JAVA实现)

原题:点击此处考点:动态规划、字符串本题很容易考虑到用动态规划,但是动态规划的条件是难点。需要考虑一个字符串中,之前的字符是否出现过。假设之前出现的字符位置是j现在出现的字符位置是i那么,考虑两种不同的情况1. dp[i-1] >= i - j2. dp[i-1] < i - j两种对应的加减不同。时间复杂度:O(n)空间复杂度:O(1)class Solution { public int lengthOfLongestSubstring(String s) {

2021-03-01 20:06:13 66

原创 剑指Offer:构建乘积数组(JAVA实现)

原题:点击此处考点:DP这里用了两个数组分别维护前缀和和后缀和。时间复杂度:O(n)空间复杂度:O(n)可以对空间进行压缩,但是实在不好理解,因此还是选择了这种做法:class Solution { public int[] constructArr(int[] a) { if(a.length == 0){ return new int[0]; } if(a.length == 1){ re

2021-02-28 19:30:49 64

原创 剑指Offer:把字符串转换成整数(JAVA实现)

原题:点击此处考点:如何用Int来判断数字越界方法:int boundary = Integer.MAX_VALUE / 10;如果 res > boundry 或 res == boundary && chs[i] > ‘7’ (这个是因为边界的最后一个数字为8)时间复杂度:O(n)空间复杂度:O(n)(使用trim,新创建一个String)自己写的较为复杂的代码:class Solution { public int strToInt(String s

2021-02-28 18:57:15 64

原创 剑指Offer:不用加减乘除做加法(JAVA实现)

原题:点击此处考点:位运算难点:这道题每一行代码都不能变更。每一个字母都不能错。步骤:首先用与运算算出进位的位置,为数字c然后用异或运算算出不需要进位的数字,并且用这个数字取代原本的a,不然无法进行后续运算把b变为新算出来的进位的数字cb不为0,进行循环class Solution { public int add(int a, int b) { while(b != 0){ int c = (a&b)<<1;

2021-02-28 14:01:05 66

原创 剑指Offer:求1+2+…+n(JAVA实现)

原题:点击此处考点:不用if的递归出口本题有很多限制,主要考点我认为是使用一个不用if的方法跳出递归。可以用短路&来进行这样的操作。时间复杂度O(n)空间复杂度O(n)class Solution { int res = 0; public int sumNums(int n) { boolean x = (n>1) && (sumNums(n-1)>0); res += n; return re

2021-02-28 13:39:07 113

原创 剑指Offer:翻转单词顺序(JAVA实现)

原题:点击此处考点:字符串处理、双指针这道题第一时间想到的应该是String的内置方法split()和trim()分别可以进行切分和去除收尾空格。但是面试不该使用上述的内置方法,因此使用双指针法,但是双指针也不是简单的。很容易踩到一些坑:最后拼接出来的字符串,尾部还是有“ ”,因此还是需要trim。substring() 不是 subString() 非常特别时间复杂度O(n)空间复杂度O(n)class Solution { public String reverseWor

2021-02-26 19:06:26 103

原创 剑指Offer:扑克牌中的顺子(JAVA实现)

原题:点击此处考点:排序,数学这道题想到可以用Max-min < 5来解决,但是没想到还有另外一个条件是除了joker,不能有重复的数字class Solution { public boolean isStraight(int[] nums) { Arrays.sort(nums); int joker = 0; for(int num:nums){ if(num == 0){ j

2021-02-26 18:16:48 234

原创 剑指Offer:和为s的连续正数序列(JAVA实现)

原题:点击此处考点:双指针,滑动窗口这道题是 和为s的两个数字 的加强版。本质还是双指针,但是这道题就比上面那道题没那么明显。通过这道题可以更深刻的体会到滑动窗口的有多实用。class Solution { public int[][] findContinuousSequence(int target) { List<int[]> list = new ArrayList<>(); for(int i = 1,j = 2;i&lt

2021-02-26 12:56:13 58

原创 剑指Offer:和为s的两个数字(JAVA实现)

原题:点击此处本题可以用双指针来进行解决。(原因:数组是排序数组,可以用双指针进行压缩)时间复杂度O(n)空间复杂度O(1)class Solution { public int[] twoSum(int[] nums, int target) { if(nums.length <= 1){ return new int[0]; } int a = 0; int b = 0; int

2021-02-26 11:47:09 85

原创 剑指Offer:数组中数字出现的次数 II(JAVA实现)

原题:点击此处考点:位运算本题与上一题相比,明显有混淆之意。这一题中数字出现了3次,因此异或就没有可用之处了,因为异或3次本身还是自己。本题的关键是:在二进制位中,如果出现了3次的位置,必定是3的倍数,因此对该位置进行余3操作,剩余的值便是唯一一个出现1次的数字在该位置的数字class Solution { public int singleNumber(int[] nums) { int[] bitNums = new int[32]; Arrays.f

2021-02-26 11:33:49 104

原创 剑指Offer:数组中数字出现的次数(JAVA实现)

原题:点击此处考点:异或本题关键词:数组中的数字只出现1次。遇到这种问题,第一时间想到的是异或,但是本题难度加大,是有两个数字出现一次。做法:相同的数字分为一组不同的两个数组分为不同组思路就是通过异或所有数字得到一个数,取这个数的其中一个不为0的位置。并把这个位置与所有数字进行AND操作,如果得到的为1,则为一组,如果为0,则为另一组。两个组分别进行异或,得到的就是答案的两个数字。class Solution { public int[] singleNumbers(int[

2021-02-25 13:15:03 119

原创 剑指Offer:平衡二叉树(JAVA实现)

原题:点击此处考点:二叉树、递归,DFS这题建立在深度的基础上,需要考虑的是递归的变化条件。时间复杂度O(n)空间复杂度O(n)class Solution { public boolean isBalanced(TreeNode root) { return culDepth(root) == -1?false:true; } public int culDepth(TreeNode root){ if(root == null){

2021-02-25 12:45:06 71

原创 剑指Offer:二叉树的深度(JAVA实现)

原题:点击此处考点:DFS、二叉树这道题很简单,不多描述class Solution { public int maxDepth(TreeNode root) { return maxDepth(root,0,0); } public int maxDepth(TreeNode root,int depth,int max){ if(root == null){ return depth; }

2021-02-25 11:11:45 68

原创 剑指Offer:两个链表的第一个公共节点(JAVA实现)

原题:点击此处我服了,这道题做了好几遍了,还是没想回来思路。考点:链表,双指针思路:两个指针都跑两条链表,遇到一起就是有公共节点,一起都为null就是无交点。public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode h1 = headA; ListNode h2 = headB; while(h

2021-02-24 18:07:56 77

原创 剑指Offer:数组中的逆序对(JAVA实现)

原题:点击此处考点:归并排序,分治思路:本题较难,不过本题主要的思想是分治的思想。本题计算逆序对只用了一行语句:count += (mid - i + 1);其余几乎都是归并排序的的代码,因此本题也可以作为归并排序的应用题。时间复杂度:O(nlogn)空间复杂度:O(n)分治为什么要用递归?因为分治需要的是从小问题的从头往上堆叠成一个大问题的解决方案。递归正好可以做到。class Solution { public int reversePairs(int[] nums)

2021-02-24 11:24:19 77

原创 剑指Offer:第一个只出现一次的字符(JAVA实现)

原题:点击此处题解:很容易想到用哈希表来进行处理。这里可以用有序的哈希表(LinkedHashMap),来进行判断。时间复杂度O(n)空间复杂度O(1)(因为必定只有26个字母)class Solution { public char firstUniqChar(String s) { Map<Character,Boolean> linkMap = new LinkedHashMap<>(); char[] chs = s.toC

2021-02-24 09:47:52 70

原创 剑指Offer:丑数(JAVA实现)

原题:点击此处初见,不会。看别人题解,得知此题可以用动态规划做出。因为质因数为2,3,5的数,必定可以通过之前的数算出的质因数来*2,*3,*5来计算出当前的数需要考虑的点:1. 如何避免重复(如果dp【a】*2,dp【b】*3 相等,a和b都要进行相加)2. 如何进行打表时间复杂度class Solution { public int nthUglyNumber(int n) { if(n <= 0){ return 0;

2021-02-24 09:24:27 62

原创 剑指Offer:最小的k个数(JAVA实现)

原题:点击此处考点:TopK:即前最大k个数或前最小k个数最大堆,最小堆快排这道题非常考验综合能力思路一:使用内置排序工具,进行排序,这个做法不明智。时间复杂度O(nlogn)空间复杂度O(1)思路二:(比较好实现)使用最大堆,来维持一个k大小的的堆。(手动实现一个堆也是不现实的,也要用内置工具函数,即PriorityQueue)时间复杂度O(nlogk)空间复杂度O(k)优点:不用改变数组思路三:(比较高效)利用快排的思想,将数组patition为k前和k后时间复杂度是O

2021-02-14 17:10:24 65

原创 剑指Offer:数组中出现次数超过一半的数字(JAVA实现)

原题:点击此处考点:哈希、排序、摩尔根投票法思路:哈希和排序都是很容易想出来的方法。摩尔根投票法:找出数组中超过一半的数字,如果数组中没有超过一半的数字,找出来的数字不是众数方法:选一个数作为众数。如果数组中当前遍历的数与他相同,则投票数+1如果不同,投票数-1如果投票数=0,重新选择众数,并开始重新计算最后得到的数字就是超过一半的数时间复杂度O(n)空间复杂度O(1)class Solution { public int majorityElement(int[]

2021-02-14 13:35:52 115

原创 剑指Offer:字符串的排列(JAVA实现)

原题:点击此处考点:字符串、回溯思路:本道题很容易就想到是回溯,难点是怎么实现回溯。对于字符串这个字符性质,用列表来进行不断地remove好像不太合适,因此本题采用的方法是:在当前位置的字符,不断地与后面的字符进行交换,当做完操作后,再换回来。而且要实现一个HashSet,这个原因是因为有可能会有这样的[a,a,c,v,b]这样的列表,其中a是有重复的,如果不用HashSet的话,就会出现重复。时间复杂度O(n!)(因为排列方案就是n × (n-1)× (n-2)……)空间复杂度O(n2

2021-02-14 13:20:12 86

空空如也

空空如也

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

TA关注的人

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