- 博客(70)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 「造轮子」一个简单的 RPC 框架(基于Netty+Zookeeper+Spring)
基于 Netty + Zookeeper + Spring 实现的 RPC 框架
2022-06-25 15:02:55 463 1
原创 关于代理模式的介绍,以及动态代理(jdk、cglib)的介绍
代理模式简要介绍代理,就是代理人当A想找B做一件事,但是可能B在十万八千里之外,联系不上,但是C又能联系上B,而且A也能找到C,所以A找C办这件事,但真正做事的人是B,C只是个代理人一句话:代理人可以控制客户端对其他对象的访问代理种类:远程代理(Remote Proxy):控制对远程对象(不同地址空间)的访问,它负责将请求及其参数进行编码,并向不同地址空间中的对象发送已经编码的请求。虚拟代理(Virtual Proxy):根据需要创建开销很大的对象,它可以缓存实体的附加信息,以便延迟对...
2022-03-04 20:43:55 703
原创 毕设开源-视频网站-在线学习项目
前言给没写毕设的同学一个思路吧,可以适当参考下本项目,也想起了当时自己写毕设时的迷茫,过年回家找了零碎的时间写了写,唯一遗憾的是演示项目时没有部署到服务器上,现在工作了,买了服务器也把项目放上去了;项目体验地址:http://81.70.19.46/源码及使用部署教程:https://github.com/hczs/training项目背景项目名为职工业务培训网站,可以让职工完成在线视频培训;项目基于微服务架构,前后端分离开发;相关技术栈:SpringCloud、Nacos、SpringBoo
2021-08-24 23:10:54 1230 4
原创 刚学反射,理解起来困难?那就写一个Demo入门吧!
背景经历了n多次面试之后,每个面试官问必问的一个问题,就是问我用过反射吗,我当时只是颤颤巍巍的回答说具体没有使用过,但是Spring的IOC容器就是根据配置文件信息获取类文件信息进而反射创建bean实例,然后成功把面试官带领到我的八股文阵地,balabalabala说一堆,然后结束。但是,真的心里踏实吗?最近工作中也是遇到了一个场景需要将实体类转为map,好家伙,不就是反射获取属性信息,执行get方法,然后放到map里面嘛,这不,反射不就用上了嘛,虽然已经工作了,但是还是给之前的自己一个答案吧!关于反
2021-07-10 16:17:18 402 1
原创 Java代码生成器简介、原理、开发流程和Demo
<h2 id="java代码生成器简介、原理、开发流程和demo">Java代码生成器简介、原理、开发流程和Demo</h2><h3 id="简介和背景">简介和背景</h3><p>刚开始学习的时
2021-07-04 23:13:01 4860 5
原创 Oracle查询数据库表信息、列信息和表主键
背景因为最近在搞代码生成器,所以需要根据表名生成实体类,但是需要获取表信息和每一列的信息(列名、列类型和列备注)还需要查表的主键。注:以下sql的参数只有一个数据表名。具体语句查询表信息select a.table_name as tableName, a.commentsfrom user_tab_comments aleft join user_cons_columns b on a.table_name = b.table_namewhere a.Table_Name=
2021-06-28 16:18:41 2781
原创 tomcat部署配置和springmvc配置
<h3 id="tomcat部署配置和springmvc配置">tomcat部署配置和springmvc配置</h3><ol><li><p>项目访问方式,我想直接通过ip+端口直接访问到项目,而不
2021-06-03 11:08:10 1628
原创 ice学习笔记
<h3 id="什么是ice?">什么是ICE?</h3><blockquote><p> 网络通信引擎ICE(Internet Communications Engine)是Zero C公司的分布
2021-06-01 21:28:03 1959 2
原创 记录将服务部署到tomcat中遇到的问题
背景本次是将本地一个服务打成war包部署到tomcat,需要把本地配置好的tomcat部署包和war包传到服务器上,解压之后把war包部署到tomcat中启动。服务器:centos7.3问题问题1:本地的tomcat部署包部署到服务器上时,解压之后,运行startup.sh文件没有权限解决方案:为所有的脚本文件加上可执行权限 chmod +x *.sh问题2:部署到服务器上时,启动tomcat,war包不会自动解压解决方案:刚开始以为是对war包没有操作的权限,直接chmod 777,没用
2021-06-01 16:03:39 382
原创 剑指offer-中等题-47 求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路递归求和,循环求和等等,我们很容易有很多种思路,甚至还可以用求和公式来计算,但是由于上述限制,我们的递归好像是最有可能实现的。很容易有递归代码public int Sum_Solution(int n) { if (n == 1) return n; return n+Sum_Solution(n-1); }
2020-11-17 17:43:36 400
原创 剑指offer-简单题-18 二叉树的镜像
题目描述二叉树的镜像操作给定的二叉树,将其变换为源二叉树的镜像思路题目不难理解,其实就是二叉树左右子树的转换,用很适合用递归来做如果树为空 什么都不干树不为空,交换左右子树然后再递归交换左右子树的左右子树即可代码public void Mirror(TreeNode root) { if (root != null){ TreeNode tmp = root.left; root.left = root.right;
2020-11-09 09:57:44 166
原创 剑指offer-简单题-6 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例输入[3,4,5,1,2]返回值1思路非递减 啥意思 递增或者数相同思考:1 2 3 4 5 6 7 -> 2 3 4 5 6 7 14 5 6 7 1 2 37 1 2 3 4 5 61 1 2 3 5 8 -> 2 3 5 8 1 1很多种转换,不过可以发现规律
2020-11-04 17:02:00 234
原创 剑指offer-简单题-5 用两个栈实现一个队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路stack1用来存放正常入队的值如果要出队了,直接stack1出栈是不行的呀,所以把stack1全部出栈倒腾到stack2中,stack2再出栈就是出队的正确数字了例如当前队列: 1 2 3 4 5stack1(底->上):1 2 3 4 5 此时直接出栈自然是5,但是人家出队应该是出1才对,所以倒腾到stack2中stack2(底->上):5 4 3 2 1 此时出栈就是1啦!所以
2020-10-28 17:00:41 471 2
原创 排序-初遇
排序关于排序的稳定性我们常常说什么什么排序算法是稳定的,什么是不稳定的,到底是啥呢?比如说吧有一段数据,这段无序的数据需要我们对其进行排序,这段数据中有很多重复的关键字,当我们用某种算法对其进行排序之后,这些重复的关键字之间的相对次序保持不变,我们就说这个排序算法是稳定的,反之就是不稳定的。排序的分类内排序定义:排序的时候不涉及到内外存交换适用场景:适用于记录数不多,一个文件就可以放得下的时候对于内排序,按照策略进行划分,可以细分为以下几种:插入排序选择排序交换排序归并排序分配排
2020-09-03 14:42:27 566
原创 剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000这道题…第一想法map,直接存map里面然后取出最大的value,然后取出对应的key值,磕磕绊绊算是过去了!上代码:class Solution { public int majorityElement(int[] nums) {
2020-08-10 17:57:19 551
原创 看到链表相关题,要想想双指针,要画图(LeetCode)
剑指 Offer 24. 反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000两个指针,一个存当前的cur,一个存之后的pre,往后移动,改变pre的指针,指向前面的cur即可,要预先存储一份pre之后的指针。具体看代码:class ListNode {
2020-08-04 22:53:10 291
原创 又是一道没看题解写出来的题,快慢指针也太神奇了(LeetCode)
剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.这道题用快慢指针做即可,一个快的指针先走k步,然后再和慢的指针一起走,这样两个指针刚好相隔k个,快指针走
2020-08-02 22:22:55 326
原创 Java中的异常体系&自定义异常
异常异常体系结构注意:所有异常的共同父类java.lang包下的Throwable类这个Throwable类又分为两个分支Error(程序无法处理的错误)表示的是不希望被程序捕获或者程序无法处理的错误,这个Error类的对象一般由Java虚拟机生成并抛出,大多数错误与代码的编写和执行的操作无关,就比如VirtualMachineError(虚拟机错误)中的OutOfMemoryError错误,是由于内存不足而无法分配对象产生的错误,这些异常发生的时候,JVM一般都选择线程终止。Excep
2020-08-02 18:12:16 369
原创 反射相关/定义/为什么用反射/优缺点/应用场景/demo
反射什么是反射?反射就是程序运行状态中,对于任意一个类,能够知道这个类的所有属性和方法,对于任意一个对象,能够调用方法/获取属性。就是反射可以通过指定的类名来获取类的信息。首先要知道一个知识点,类加载过程:首先,一个.java文件经过编译成功后,得到一个.class文件初始化操作的时候,会将这个.class文件通过类加载器加载到jvm中加载到jvm中又分了好几个步骤,包括加载,连接和初始化加载的时候,会再Java堆中创建一个java.lang.Class类的对象,这个Class对象代表着类
2020-08-01 19:26:13 707
原创 简单说说Java集合
java集合对于使用:如果是集合类型,有List和Set供我们选择List 插入有序,可重复ArrayList 底层数据结构是数组 线程不安全添加元素如何实现? 先去检查数组的容量是否够,够了就直接添加,不够了先扩容为当前容量的1.5倍,第一次扩容后还不够的话就直接将容量扩充为一个minCapacity(就是size+1)增删的时候底层实现是依靠数组的复制,这个数组复制的方法由c/c++实现LinkedList 底层数据结构是链表 线程不安全 还实现了Deque接口 操作他可以
2020-07-31 21:48:08 494
原创 Java继承相关知识
继承权限修饰符说到继承,要先想到权限修饰符(public,protected,private),如果不加,默认的就是在同一包下访问。public 任何人可以访问protected 其他包不能访问private 只有当前类可以访问图源网络抽象类和接口抽象类抽象类和抽象方法都用abstract关键字进行修饰。如果一个类中包含抽象方法,这个类必须声明为抽象类。抽象类和普通类最大的区别,抽象类不能被实例化,只能被继承。接口接口是抽象类的延申,jdk1.8之前可以看作是一个完
2020-07-29 16:01:00 406
原创 Object类常用方法
Object类常用方法equals()看到这个首先想到,equals和==区别equals和====:对于基本类型,== 判断的是两者值是否相等对于引用类型,==判断的是两者是否引用同一个对象。equals:基本类型没有equals方法。对于引用类型,如果equals方法没有被重写,则作用与==相同,都是判断是否引用同一个对象。如果equals方法被重写了,则是比较对象内容是否相同。注意:重写equals方法必须重写hashCode方法,如果不重写hashCode方法,就是出现eq
2020-07-28 18:47:52 249
原创 final和static
final看到final要想到(三点,数据,方法,类):声明数据声明方法声明类以下是具体说明:声明数据声明数据是常量,可以是编译时常量,也可以是运行时被初始化之后不可改变的常量。对于基本类型,final使数值不变对于引用类型,final可以使引用不变,就是不能引用其他对象,但是本身还是可以修改的,引用不可修改,本身属性值可以修改final Student s = new Student();s.name = "houge";s.setName("shuaige");s
2020-07-28 16:58:32 310
原创 说说单例模式!
单例模式定义确保一个类只有一个实例,并且提供该实例的全局访问点,就是这个类只能被new一次,并且每次都是用的new的这个。类结构一个私有的构造方法,一个私有的静态的实例变量,一个公有的静态函数,用来获取实例。私有构造方法:可以不让别人创建共有的静态函数:该实例的全局访问点,返回唯一的私有的静态实例变量具体实现懒汉式-线程不安全懒汉式就是用到的时候才创建返回对象,不用到的时候不会创建,但也存在线程不安全的问题线程不安全:多个线程同时第一次访问获取对象,都判断为空,然后都new了对象,导致多
2020-07-27 18:37:29 154
原创 今天说说String相关知识点
String如何实现以及特性String类被final修饰,所以String不可被继承,Integer等等的包装类都不可以被继承。jdk1.8中,String底层使用final修饰的char数组来存储字符串private final char value[];jdk1.9之后,底层使用final修饰的byte数组来存储字符串private final byte[] value;使用final关键字修饰,说明这个value数组初始化之后就不能引用其他数组,String内部也没有改变value
2020-07-27 09:59:44 304
原创 说说java中的数据类型相关知识
数据类型基本类型(8个)byte,8位,1字节char,16位,2字节short,16位,2字节int,32位,4字节float,32位,4字节long,64位,8字节double,64位,8字节boolean,无明确规定boolean类型只有true和false两个值,可以用1位存储,jvm编译得时候会将boolean类型转化为int,1为true,2为false,jvm支持boolean数组,但是是通过独写byte数组实现。包装类型下图是每个基本类型以及对应的包装类型图片
2020-07-26 17:01:24 295
原创 记录一下刷LeetCode瞬间有思路的一道简单题——剑指 Offer 09. 用两个栈实现队列
刷题这些天,每天都靠看题解过日子,今天又随机了一道题,用两个栈实现队列,看题目感觉挺不错的,但是看输入输出的样例突然就懵了,我感觉这道题可能就是题目看着比较麻烦其实做起来不麻烦,下面是题:题目链接:用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“d
2020-07-15 21:06:05 143
原创 SpringBoot+Thymeleaf+模拟数据库+一套后台模板(练手项目总结)
说在前面:这个呢,是我最近在自学springboot时候做的一个小项目,目前还没有整合Mybatis框架,后面会有整合。这个呢就是用来熟悉springboot的使用以及Thymeleaf的使用,html页面直接拿的bootstrap的一套后台模板,感觉还不错,这个主要用来练手,也不算是练手吧,算是学完一阶段的小demo,写这个就是为了总结,使脑子中的知识不是那么的杂乱,要清除每一个功能是如何实...
2020-06-06 12:25:34 2770 3
原创 支付宝支付接口沙箱环境测试以及整合到一个ssm电商项目中
准备工作官方demo支付宝账号eclipse/ideatomcat具体步骤先下载官方给的demohttps://docs.open.alipay.com/270/106291/导入到eclipse中注意:因为此demo不是maven项目所以得配置本地的tomcat到支付宝开放平台注册开发者账号,进入沙箱进入沙箱会看到给的一个appid和测试用的支付宝网关,这个用于配置我们的工程的配置文件,后面会用到生成应用密钥和应用公钥根据说明的步骤下载支付宝开放平台开发助手,生成应用
2020-06-01 18:35:37 1458 1
原创 关于搭建hadoop集群的配置和错误总结
首先说一些我的关于hadoop的配置吧:hadoop集群的主要配置文件有:hadoop-env.sh:配置hadoop运行所需的环境变量yarn-env.sh:配置yarn运行所需的环境变量core-site.xml:hadoop核心全局配置文件,可在其他配置文件中引用hdfs-site.xml:HDFS配置文件,继承core-site.xml配置文件mapred-site.xm...
2020-02-21 18:47:54 1022
原创 SpringBoot配置druid数据源的两种方式——基于java类的配置和纯yml配置
1.首先是纯yml的配置方式 我认为这种方式简单方便一些,话不多说,直接上配置文件application.ymlspring: datasource: type: com.alibaba.druid.pool.DruidDataSource username: root password: 123456 url: jdbc:mysql://local...
2020-02-15 22:03:45 1780
原创 关于使用springboot使用druid数据源进入druid后台监控页面404问题
首先说出现的问题:进入后台监控显示404,此时检查自己的druid版本吧把版本降级之后,降为1.1.10可以正常访问:
2020-02-14 17:56:05 2621 3
原创 SSM整合学习笔记(主要是思路)
ssm就是将spring,springmvc,mybatis这三个框架结合到了一起来使用。首先就是导入jar包:mybatis所需jarspring所需jar数据库驱动jar数据源所需jarspring与mybatis整合的中间jarspringmvc的jar导入完jar包然后就是先展示一下项目目录吧:如下图所示:首先说明一下思路,就是写一个简单的查询,前台传入一个id,...
2019-11-15 17:10:07 346
原创 MyBatis入门笔记(下载安装以及简单增删改查)
1.首先说下什么是MyBatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。...
2019-10-16 21:13:41 225
原创 记录Spring的学习(关于AOP 整合JDBC 事务)
AOP我个人理解的AOP,就是有一个目标对象,有通知类,要将通知织入目标对象,在目标对象执行某个方法的前后以及出现异常等等情况做一些事情,也就是加入通知。通知分为: 1.前置通知:在目标方法执行前执行此通知 2.后置通知(出现异常不会调用):在执行目标方法后面执行 3.环绕通知:出现目标方法前后都调用 4.异常拦截通知:目标方法出现异常会调用此通知方法 5.后置通知(无论...
2019-09-15 13:07:38 180
原创 Spring各个版本下载以及依赖包和配置文件模板
首先就是关于Spring的下载,各个版本下载地址:https://repo.spring.io/release/org/springframework/spring/还有一个是Spring的依赖包下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi再来一份配置文件(applicationCont...
2019-09-04 19:39:58 1242
原创 Javaweb 请求转发问题
使用request请求转发(request.getRequestDispatcher("/path").forward(request,response);)后记得return 要不然他会想继续执行后面的代码,然后报错
2019-06-09 11:19:35 583 2
Spring的四个基础包.zip
2019-09-04
各位,有维护过中间表的吗?
2021-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人