自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 JAVA功能模块开发

https://blog.csdn.net/wdvceafvcsrgfv/category_6943478.html

2020-10-26 11:43:54 542

转载 压力测试

1.从压力测试说起压力测试的理解,xxx的性能10w/s,对你有意义么?没有那家卖瓜的会说自己家的不甜,同样,没有哪个开源项目愿意告诉你在对它条件最苛刻的时候压力情况是多少,一般官网号称给你看的性能指标都是在最理想环境下的,毫无参考意义。举个栗子,Redis官网压测的例子,256字节的读速度11w/s,写速度8.1w/s,都知道redis优点是多变的数据结构,string、List、hash、set、sortset,实际工作稍微复杂的环境往往都是各种结构混合使用,字符串长度各异,你需要的是真正在你的

2020-10-04 00:05:03 377

原创 自旋、偏向锁、轻量级锁、重量级锁

java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。并且锁只能升级不能降级。自旋现在假设有这么一个场景:有两个线程A,B在竞争一个锁,假设A拿到了,这个时候B被挂起阻塞,一直等待A释放了锁B才得到使用权。在操作系统中阻塞和唤醒是一个耗时操作,如果A在很短的时间内就释放了锁,当这个时间与阻塞唤醒比较起来更短的时候,我们将B挂起,其实不是一个最优的选择。自旋是指某线程需要获取锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停

2020-10-03 22:02:40 166

原创 单例模式双重检验锁的volatile和两次判空

首先是代码,经典的双重锁写法。public class Singleton { private volatile static Singleton Instance; private Singleton(){} public static Singleton getInstance(){ if(Instance == null){ synchronized(Singleton.class){ if(Instan

2020-10-01 11:36:38 702

原创 Leetcode104. 二叉树的最大深度

1.递归解法class Solution { public int maxDepth(TreeNode root) { if(root==null){ return 0; } int left = maxDepth(root.left); int right = maxDepth(root.right); return Math.max(left,right)+1; }

2020-07-27 21:48:42 75

原创 Leetcode101. 对称二叉树

递归结束条件:都为空指针则返回 true只有一个为空则返回 false递归过程:判断两个指针当前节点值是否相等判断 A 的右子树与 B 的左子树是否对称判断 A 的左子树与 B 的右子树是否对称class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return dfs(root.left,root.right); }

2020-07-24 23:35:04 103

原创 Leetcode98:验证二叉搜索树

(1)递归方法class Solution { public boolean isValidBST(TreeNode root) { return helper(root,Long.MIN_VALUE,Long.MAX_VALUE);//表示最小值和最大值 } public boolean helper(TreeNode node,long lower,long upper){ if(node==null) return true;

2020-07-22 15:36:54 75

原创 get和post的使用场景

GET和POST两种方法都是将数据送到服务器。HTTP标准包含这两种方法是为了达到不同的目的。POST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。当请求无副作用时(如进行搜索),便可使用GET方法;当请求有副作用时(如添加数据行),则用POST方法。一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制。若符合下列任一情况,则用POST方法:请求的结果有持续性的副作用,例如,数据库内添加新的数据

2020-07-19 23:31:32 696

原创 Leetcode94:二叉树的中序遍历(迭代法)

public class Solution { public List < Integer > inorderTraversal(TreeNode root) { List < Integer > res = new ArrayList < > (); Stack < TreeNode > stack = new Stack < > (); TreeNode curr = root;//其实这

2020-07-18 01:25:38 140

原创 leetcode31:下一个排列

这道题的思路是从数组倒着查找,找到nums[i] 比nums[i+1]小的时候,就将nums[i]跟nums[i+1]到nums[nums.length - 1]当中找到一个最小的比nums[i]大的元素交换。交换后,再把nums[i+1]到nums[nums.length-1]排序,就ok了 public void nextPermutation(int[] nums) { int i = nums.length-2; while(i>=0&&nu

2020-07-15 22:58:14 85

原创 二维数组查找

public class ArraySearch { public static boolean find(int target,int [][] matrix){ if(matrix==null||matrix.length==0||matrix[0].length==0) { return false; } int...

2020-04-26 22:58:08 78

原创 数组中重复的数字

public class RepeatNumber { public static boolean duplicate(int nums[],int []duplication){ if(nums==null||nums.length==0){ return false; } for(int i=0;i<nums...

2020-04-25 14:50:19 75

原创 Redis学习笔记

redis高并发跟整个系统的高并发之间的关系redis,高并发的话,不可避免,要把底层的缓存搞得很好mysql,高并发,做到了,那么也是通过一系列复杂的分库分表,订单系统,事务要求的,QPS到几万,比较高了要做一些电商的商品详情页,真正的超高并发,QPS上十万,甚至是百万,一秒钟百万的请求量光是redis是不够的,但是redis是整个大型的缓存架构中,支撑高并发的架构里面,非常重要的一个环...

2020-04-21 15:07:40 84

原创 MySQL常见的三种存储引擎

1、InnoDB存储引擎InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。InnoDB特点:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除...

2020-03-24 22:31:11 339

原创 回文链表

判断一个链表是否为回文链表

2020-03-10 23:37:54 66

原创 接口的作用

1.约束2.定义一些方法,让不同的人去实现(例如让10个员工去实现一个接口,但是有十种不同的实现方式)3.方法默认是publc abstract4.常量默认是public statict final5.接口不能比实例化,接口中没有构造方法6.implements可以实现多个接口7.实现接口必须重写接口中的方法...

2020-03-07 15:16:31 84

原创 插入排序

void InsertSort(int arr[], int length){ for (int i = 1; i < length; i++) { int j; if (arr[i] < arr[i - 1]) { int temp = arr[i]; for (j = i - 1; j >= 0 && temp < arr[...

2020-03-06 23:50:06 96

原创 选择排序

原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法假定数组每次比较范围内第一个元素最小min,和剩下的比较,如果比假定的这个元素小,则令min为这个元素,直到找到最小的,然后交换位置,每比较一次,就把最小的一位数找出来放数组最前面。//选择排序function sortSelect(arr) { ...

2020-03-05 23:32:10 134

原创 spring cloud config 统一配置中心

由于大型项目中可能存在大量的微服务,而每个微服务都有自己的配置文件(application.properties),导致存在以下问题:1、大量的配置文件分散在各个微服务的代码中,不易管理2、使用共同的配置时(例如数据库、redis),当共同的配置修改时,所有使用到的微服务的配置都需要修改3、配置内容的安全性以及权限无法保障4、配置更新后,相应的微服务需要重启在spring cloud中使...

2020-03-04 21:50:16 97

原创 快速排序

public static void quickSort(int[] array, int left, int right) { if (left < right) { int pivot = array[left]; int low = left; int high = right; while (low < h...

2020-03-01 23:38:28 67

原创 链表倒序

public ListNode mergeTwoListsReverse(ListNode l1, ListNode l2) { ListNode head = mergeTwoListNode(l1, l2);//这一步是调用另一个方法,不属于倒序的的步骤 ListNode pre = null;//这里是倒序的开始步骤 ListNode ...

2020-02-27 23:47:30 286

原创 Zull

Zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。主要功能是路由转发和过滤器。Zuul可以通过加载动态过滤机制,从而实现以下各项功能:验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请...

2020-02-26 22:51:49 128

原创 Feign

基本介绍Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装json数据的繁琐。 Feign集成了Ribbon。Ribbon+eureka是面向微服务编程,而Feign是面向接口编程。Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它...

2020-02-25 12:02:09 185

原创 Ribbon自定义算法实现

主启动类配置开启自定义算法:添加 @RibbonClient(name = “MICROSERVICECLOUD-DEPT”,configuration=MySelfRule.class) 配置name:指定对使用算法的服务名称@SpringBootApplication@EnableEurekaClient@RibbonClient(name = "MICROSERVICECLOUD...

2020-02-24 00:09:41 281

原创 EureKa:服务注册与发现

eureka信息共享一份注册表,至少一个服务器存在就可正常运行三点注意:1.eureka server 支持跨机房的高可用,不同区域服务器可以相互注册,同一区域服务器也可以两两注册来达到高可用,至少一个服务器存在就可正常运行。2.eureka server 数据一致性级别是最终一致性,他相比强一致性的区别是会保证未来的某一时刻会保障数据的一致。3.eureka client 会对服注册表进...

2020-02-23 13:40:05 97

原创 Server returns invalid timezone

IDEA连接数据库的时候连接不上,并且报了一个错误Server returns invalid timezone原因:服务器返回无效时区解决方案:转到“高级”选项卡并手动设置“serverTimezone”属性,在右边空白处填上 Asia/Shanghai,然后点击右下角apply,重新回到General测试连接,然后不再报错,连接成功了...

2020-02-17 00:10:42 614

原创 The driver is automatically registered via the SPI and manual......

IDEA运行程序的时候报错,查了一下,最后发现是mysql升级后的版本变化导致的,需要更改一下文件位置。将数据配置文件里spring.datasource.driver-class-name=com.mysql.jdbc.Driver修改为spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver这样就可以成功运行了...

2020-02-16 23:59:12 2179

原创 MyBatis使用注解简洁实现CRUD

//根据id查询用户@Select("select * from user where id = #{id}")User selectUserById(@Param("id") int id);//添加一个用户@Insert("insert into user (id,name,pwd) values (#{id},#{name},#{pwd})")int addUser(User us...

2020-02-10 15:08:41 91

原创 Maven资源导出问题

Maven由于它的约定大于配置,可能在开发过程中遇到我们写的配置文件,无法被导出或者生效的问题,尝试在Maven中加上如下配置。 <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> ...

2020-02-10 14:17:18 2118

原创 对二维数组第一个数字排序

定义一个二维数组,其中所包含的一维数组具有两个元素Arrays.sort(intervals,new Comparator<int[]>)(){ @Override public int compare(int[] a,int[] b){ //其中a[0]-b[0]表示对于第二个元素经行升序,排序如果为b[0]-b[0]则表示为降序 return a[0]-b[0]; }...

2019-11-30 15:09:03 1550 1

原创 代码调试纠错

在编译器上运行字母异位词分组算法代码时候,发现控制台一直都是在输出一个1,程序也没有报错开始我以为是main函数里输出写法有问题,修改完了以后发现还是一直输出1尝试着调试了半天,还是一直这样,然后开始怀疑是不是编译器出了问题,索性打开CMD把代码复制过去编译,然后竟然输出了正确的结果。回到编译器里去检查了一下,结果发现同一个工程里已经有两个main函数了,把之前的用来调试的main函数删了以...

2019-11-27 15:10:35 621

原创 模仿京东商场

#模仿京东天猫商城前端页面项目去年在学习了一些前端的知识之后感觉还不是很熟悉其中的操作,所自己在网上找了一个模仿京东前端的页面的项目来练手,代码基本都是前端的操作,大家如果喜欢的话,或者需要一些项目来练练手熟悉前端的一些知识,也可以自己尝试码一下,反正我自己做完这个项目之后感觉学到了很多东西,而且成就感耶稣蛮大的哈哈。登录注册界面购物车界面商品的详细界面由于编写的代码太长了,就不...

2019-09-26 13:48:31 515 3

原创 java多态机制

#Java 中实现多态的机制1重写(override),如果一个子类继承了一个父类,子类中拥有和父类相同方法名称,返回值,参数类型的话,就是重写,会执行子类中的方法。2重载(overload),如果一个类中定义了多个同名方法,他们有不同的参数类型或者参数数量,那就叫重载(注:返回值类型可以不同)...

2019-09-26 10:49:46 85

空空如也

空空如也

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

TA关注的人

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