自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 MockMvc单元测试

参考文章一参考文章二

2020-10-14 16:00:33 127

原创 Javaweb后端获取本机ip

开发过程中有时需要获取项目的ip,也就是获取本机ip,如邮件激活验证等,网上有很多教程在window下或者linux中都成功获取了ip。参考https://blog.csdn.net/m0_37039484/article/details/89498197然而在开发中,测试是没有问题的,项目上线后,在生产环境下获取的ip就可能错误。这个我猜测是部署的服务器是一个集群,而不是单机,所以有时候获取到的是网关地址(本人试过)。就是说上面的方法适合单机linux。怎么解决这个问题?难道真的要去问运维的同事他们

2020-09-27 15:29:52 722

原创 springboot log4j日志配置

参考https://www.cnblogs.com/keeya/p/10101547.html日志策略配置https://blog.csdn.net/u013066244/article/details/72461105OnStartup Triggering Policy在每次重启项目时候将日志roll到历史日志中,现有日志重新开始(空白)

2020-09-27 15:08:29 102

原创 git学习心得

git是现在最流行的分布式版本控制系统,开发Linux时诞生的,可以多人合作分布式开发,管理多个版本,跟github不是同一个东西,github是开源代码托管的服务器,支持git开发。git包括工作区,版本库,远程库。#创建版本库,执行完成后生成.git的版本库git init#添加内容到版本库的暂存区,.表示添加工作区的全部git add .#将暂存区的东西提交到当前分支,可以加提示内容git commit -m "first commit"#查看版本库关联的远程库git remote

2020-08-08 11:44:48 130

原创 OSI参考模型

应用层:可以产生网络流量的应用程序,如扣扣,微信。表示层:加密、压缩,开发者考虑。会话层:服务端和客服端建立的会话,netstat -nb ,可以查看建立的会话,检查木马,病毒是消耗主机资源或者破坏系统,木马是可以远程控制操作你的电脑。传输层:可靠传输建立会话、不可靠传输(扣扣发消息、域名解析)、流量控制。网络层:IP地址编址、选择最佳路径。数据链路层:输入如何封装,添加物理层地址MAC。物理层:电压、接口的标准。开发人员:应用层、表示层、会话层网络工程师:传输层、网络层、数据链路层各层之

2020-07-08 20:07:43 278

原创 Internet常识知识

一 Internet的概述多级ISP(网络服务代理)的Internet结构,连接不同代理的用户之间上网相对慢。为了提高用户体验感,可以在每个ISP上连接一个服务器,该区域的网民就可以连接该ISP所在的服务器二 Internet的组成分为核心部分和边缘部分边缘部分包括C/S方式和P2P方式,其中P2P方式中每个主机既是客服端也是服务器,所以采用P2P下载方式,下载的人越多速度越快。核心部分,电路交换提前建立专属的连接通道,适用实时的通信(电话和视频),缺点占线。分组交换和报文交换都有时延。

2020-07-08 14:33:40 452

原创 环境配置win10+anaconda3+tensorfllow_gpu

安装anaconda3:https://blog.csdn.net/u014546828/article/details/80334448安装tensorflow_gpu:https://blog.csdn.net/weixin_40732844/article/details/87103195

2020-03-24 13:53:52 99

原创 工厂模式

工厂模式分类:简单工厂模式(静态工厂模式)工厂方法模式抽象工厂模式以生产冰淇淋为列子简单工厂模式三种口味的冰淇淋用一台机器生产,工厂类需要来做逻辑判断生产哪一种定义一个冰淇淋接口,一个抽象的口味方法,让苹果口味,香蕉口味和橙汁口味的三个类实现这个接口重写里面的口味方法,定义一个工厂类,在里面有一个方法来生产不同口味的冰淇淋。缺点,如果在多一种口味的,就需要把机器里面添加逻辑还有在创...

2019-09-21 21:03:32 101

原创 位图存储大数据

位图可以存储大数据存数据的时候,为了节约空间可以采用位图来存假如要存30000这个数public class Main { public static void main(String[] args) { int[] arr = new int[1000];//可以存32000个数 //通过将对应的bit位置1的方式存 int num ...

2019-09-14 22:31:31 801

原创 HashMap和TreeMap的排序问题

HashMap里面的key-value不能保证插入有序,LinkedListMap可以保证插入有序。HashMap可以借助Collections.sort()方法来对key或者value进行排序,value重复的时候也不会出错public class HashMapTest { public static void main(String[] args) { Map&l...

2019-09-14 21:11:03 510

原创 redis知识点

1.数据类型及其应用场景2.单线程原理3.删除key策略4.内存淘汰机制5.持久化机制6.缓存雪崩和缓存穿透7.为什么用redis(高效性和高并发性)8.怎么保证redis的高可用性和高并发性(主从架构,集群模式)9.主从架构,读写分离,主从复制(全量复制,增量复制,异步复制)10.主从架构怎么保证高可用性(哨兵集群,主备切换)11.主从架构数据丢失的情况(异步复制,脑裂问题)...

2019-09-12 22:17:22 78

原创 二叉树按层遍历

题意:第一行是一个数表示N个二叉树节点,接下来N行代表0~N-1节点编号第一个数表示节点值,第二个数表示左指针指向的节点的编号,第三个数表示右指针指向的节点编号,如果为null,用-1表示。求这个二叉树的按层遍历,每层一行。输入82 -1 -11 5 34 -1 62 -1 -13 0 22 4 77 -1 -12 -1 -1输出1 2 2 3 2 2 4 7...

2019-09-07 22:17:54 226

原创 分割数组最大值的最小值

给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。来源:力扣(L...

2019-09-07 12:08:50 1139

原创 打印二叉树

输入是1(2(3,4(,5)),6(7,))输出是中序遍历3245176 static String solution(String input) { if(input.equals("") || input == null) { return input; } return func(input); } ...

2019-09-06 22:48:33 131

原创 BIO,NIO,AIO

BIO同步阻塞NIO同步非阻塞

2019-09-06 10:11:45 72

原创 同步和异步 阻塞和非阻塞

同步和异步同步和异步是针对线程和线程之间的行为来说的,线程1发起了请求调用,线程2开始处理请求,如果线程1一直等在那或者轮询的看处理结果,这叫做同步;如果线程2发起了请求调用后,自己不管了,干自己的事,等到线程2将处理结果发给你(依靠事件,回调等机制),这叫做异步阻塞和非阻塞阻塞和非阻塞是针对方法调用行为来说的,跟同步和异步没有任何的关系,阻塞就是方法调用后不会立即有返回值,一直等待调用结果...

2019-09-04 15:52:25 75

原创 棋盘系列问题

1.一个m*n的迷宫,部分格子上有障碍物,现在需要在左上角走到右下角,返回走的步数最少的方案的步数。 //暴力递归有很多条路可以走,用fla来表示当前这条路走过的痕迹,cnt来表示当前这条路走到这个点时走的步数, //只有当这条路能够走到最后,才算走通,这个时候用一个全局变量来比较每条路的cnt,选出最小的那个 //难点是要将cnt设置成局部变量,flag设置成局部(java语...

2019-09-04 09:45:01 447

原创 最小调整代价

Minimum Adjustment Cost【题目】Given an integer array, adjust each integers so that the difference of every adjacent integers are not greater than a given number target.If the array before adjustment...

2019-09-02 23:03:48 176

原创 ThreadLocal类详解

作用:一个ThreadLocal变量,每个调用它的线程都会有该变量的一份本地副本,从而避免了线程安全的问题。源码详解ThreadLocalMap是ThreadLocal的静态内部类Thread类里面有两个threadLocalMap类型的成员变量创建一个ThreadLocal实例,然后调用它的set方法不同的线程创建不同的ThreadLocal实例,然后调用该实例的set()方法,...

2019-09-02 17:20:17 124

原创 如何调优SQL

1.定位慢SQL,查询慢日志配置信息SHOW VARIABLES LIKE '%quer%';2.查看系统慢查询的数量SHOW STATUS LIKE '%slow_queries%';3.打开慢日志查询SET GLOBAL slow_query_log = ON;4.设置慢查询界定的时间,设置完毕后需要重新打开客服端SET GLOBAL long_query_time = 1...

2019-09-02 15:29:57 125

原创 版本的比较(java)

版本的比较不能直接用字符串的比较,先分割,相同级别比较(比较长度,比较大小)import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) {...

2019-09-01 09:59:32 148

原创 数据库索引

为什么要用索引?当数据量较大时,避免将全表加载到内存,进行全表的扫描,加快查找的速度和节约内存。这跟查字典的原理是一样的,目录就是索引,假如你查一个汉字,肯定不会一页一页的查询后面的正文吧。。。B树B Tree的规则:一、根节点至少两个孩子二、每个节点至多m个孩子(m是树的高度)三、除了根节点和叶子节点外,其他节点至少有ceil(m / 2)个孩子四、所有的叶子节点在同一层五、关...

2019-08-30 16:28:20 88

原创 Java内存模型(Java Memory Model,JMM)

JMM是一种规范,它的作用是屏蔽硬件和操作系统访问内存的差异性,来实现java程序在各平台下达成一致的并发效果,JMM规范了JVM和计算机内存协调工作:规定了一个线程如何和何时能看到由其他线程修改的共享变量的值,以及在必要时如何同步的去访问共享变量的值。围绕着在并发过程中如何处理可见性、原子性、有序性这三个特性而建立的模型。原子性:同一时刻只有一个线程对共享变量做操作Atomic包下的类...

2019-08-27 11:31:25 78

原创 常见的单例模式

饿汉模式/*饿汉模式,加载字节码文件的时候创建对象 */public class Sigleton01 { private static Sigleton01 instance = new Sigleton01(); private Sigleton01() {} public static Sigleton01 getInstance() { re...

2019-08-26 15:00:47 83

原创 java中的值传递

值传递:如果变量是引用类型,调用函数的变量A将存储的引用地址复制一份给被调用函数的变量B,使得被调函数的变量B也指向这个对象,如果变量是基础数据类型,就是将调用函数的变量C的值复制一份给被调用函数的变量D.被调函数中对B的操作不会影响到A,只会改变的是对象C应用传递:调用函数中传递过去的是变量的地址,被调函数中对B的操作会影响到A...

2019-08-22 16:01:28 69

原创 引用拷贝 、浅拷贝和深拷贝

引用拷贝:是不会创建新的对象,只是将对象的引用赋值给变量浅拷贝:是会创建和对象本身大小一样的新对象,如果对象的属性是基本数据类型,直接拷贝值,如果对象的属性是引用类型,采取引用拷贝,不会创建新的对象。深拷贝:会创建和对象本身一样大小的新对象,也会创建对象引用的新对象,实现两个对象的完全独立。其实就是如果对象的属性是引用类型,引用的对象也要创建新的对象,让属性指向引用对象的新对象。参考http...

2019-08-22 11:36:18 134

原创 背包系列问题

一 、01背包问题概念:每件物品只可以取一次解题思路:看最后一件物品能不能进背包的问题最值型问题n种物品,已知每种物品的重量,背包能承受重量w,求最大能装的重量 public class Bag010 { public static int bag0(int[] arrW,int w) { boolean[][] dp = new boolean[arrW.len...

2019-08-20 17:07:22 129

原创 Servlet知识

概念:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们自定义一个类,实现Servlet接口,复写方法。快速入门:1. 创建JavaEE项目2. 定义一个类,实现Servlet接口* public class ServletDemo1 implements Servlet3. 实现接口中的抽象方法4....

2019-08-12 16:39:06 59

转载 分布式锁

1、面试题一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?2、面试官心里分析其实一般问问题,都是这么问的,先问问你zk,然后其实是要过度的zk关联的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。3、面试题剖析(1)redis分布式锁官方叫做RedLock算法,是re...

2019-07-29 15:17:32 70

转载 Redis单线程模型

1)文件事件处理器redis基于reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器,file event handler。这个文件事件处理器,是单线程的,redis才叫做单线程的模型,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件。如果被监听的socket准备好执行accept、read、write、close等操作...

2019-07-29 09:54:11 174

转载 分布式session

session是啥?浏览器有个cookie,在一段时间内这个cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的session域,里面可以放点儿数据。一般只要你没关掉浏览器,cookie还在,那么对应的那个session就在,但是cookie没了,session就没了。常见于什么购物车之类的东西,还有登录状态保存之类...

2019-07-29 09:26:47 58

转载 AVL树

AVL树又叫高度平衡二叉树,其本质就是平衡搜索二叉树,同时满足搜索二叉树和平衡二叉树的条件搜索二叉树(二叉搜索树):左子树小于该节点,该节点小于右子树,对于任意的节点都成立。平衡二叉树:任意节点的左右子树的高度差不超过1。怎样构建一个AVL树,可以参考下面的链接https://www.cnblogs.com/skywang12345/p/3576969.html补充一点:判断四种组合类型...

2019-06-13 17:18:01 63

原创 反射

Java的反射机制是在运行过程中,对于任何一个类,都能知道这个类的所有属性和方法;对于任何一个对象,都能调用它的任何属性和方法;这种动态获取信息以及动态调用方法的功能称为java的反射机制。将类中的各个组成成分映射成一个个对象,加载进内存。...

2019-05-13 19:35:50 103

原创 java的跨平台性

不同的操作系统有不同的JVMjava源码首先编译成.class的二进制字节码文件,然后由不同的JVM进行解析,Java语言在不同的平台上运行时,不需要重新编译,JVM在执行字节码文件的时候,将其解释成具体平台的机器指令。为什么JVM不直接将java源码解析成机器指令一、准备工作,每次执行都需要各种检查二、兼容性,也可以将不同的语言编译成字节码文件,再由JVM来处理。...

2019-05-13 19:28:18 399

原创 java的理解

平台无关性(JVM):一次编译,到处运行垃圾回收机制(GC):不需要想c++那样需要手动释放堆内存了语言特性:泛型、反射、Lambdan表达示面向对象:封装、继承、多态类库异常处理...

2019-05-13 17:51:04 77

原创 树的操作

二叉树的操作一、遍历先序遍历:先访问根节点,再先序遍历左子树,再先序遍历右子树。中序遍历:中序遍历左子树,再访问根节点,再中序遍历右子树后序遍历:后序遍历左子树,后序遍历右子树,再访问根节点二、已知两种遍历序列求原始的二叉树只有通过先序和中序 或者通过中序和后序才能还原二叉树1、已知先序和中序求后序通过先序填节点,中序来判断左右子树2、已知中后序求先序通过后序填节点,中序判断左...

2019-03-20 20:18:16 92

原创 树的存储

树的定义:专业定义:1、有且仅有一个称为根的节2、有若干个互不相交的子树,这些子树本身也是一棵树通俗定义:1、树是由节点和边组成2、每个节点只有一个父节点但可以有多个子节点3、但有一个节点例外,该节点没有父节点,此节点称为根节点专业术语:节点 、父节点、子节点、子孙、堂兄弟深度:从根节点到最底层节点的层数称为深度,根节点是第一层叶子节点:没有子节点的节点非终端节点:非叶子节...

2019-03-20 16:49:39 324

原创 汉诺塔(递归)

任务:A借助B将n个盘子移动到C规则:一次只能移动一个盘子,且大盘子永远在下面任务 = 伪算法 + 子任务;n不能太大,n = 64 时 2的64次方-1是一个天文数字...

2019-03-20 11:18:55 94

原创 接口

接口就是多个类的公共规范接口是一种引用类型,其中最重要的内容是抽象方法如何定义一个接口:public interface 接口名{}如果是java 7,那么接口包含的内容1.常量2.抽象方法如果java 8,3.默认方法4.静态方法java 95.私有方法接口中的抽象方法public abstract void 方法名(){}abstract void 方法名(){}v...

2019-03-09 22:59:52 467

原创 抽象类和抽象方法

1.抽象类不能创建对象,通过非抽象类的子类来创建对象2.抽象类可以有构造方法,通过非抽象类的子类创建对象,来初始化父类成员3.抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类4.抽象类的子类必须覆盖重写所以的抽象方法,除非子类也是抽象类...

2019-03-09 11:09:30 75

空空如也

空空如也

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

TA关注的人

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