java
jiuanc
想成为架构的菜鸟
展开
-
算法-快速排序
快速排序定义数组z[],每次都采用第一个元素a,定义最后一个元素位置n(n初始为z.length-1),第一个元素位置m(初始为0)然后a先和z[n],如果z[n]>=a,就n–。否则,a[n]=a[m]a再和z[m],如果z[m]<=a,就m++。否则,a[m]=a[n]到最后,再将z[m]=a;多次循环即可//快速排序 public class Main { public static void main(String[] args) {原创 2021-08-03 00:34:10 · 73 阅读 · 0 评论 -
算法-归并排序
归并排序说白了,就是将这个数组一直拆分,直到拆分成单个元素,相邻两个元素相比较,大的放到后面,再重组,重复这个过程!//归并排序public class Main { public static void main(String[] args) { int[] a={1,2,3,9,8,7,4,5}; sb(a); System.out.println(Arrays.toString(a)); } public static vo原创 2021-08-03 00:33:28 · 42 阅读 · 0 评论 -
算法-冒泡排序
冒泡排序重复地走访过要排序的数列,每次比较相邻两个元素,如果它们的顺序错误就把它们交换过来//冒泡排序public class ggg { public static void main(String[] args) { int[] a={1,4,2,9,8,0,29,7,4,38,84,3,7}; sq(a); System.out.println(Arrays.toString(a)); } private static v原创 2021-08-03 00:32:23 · 57 阅读 · 0 评论 -
Redis
Redis7.1:数据结构String Hash(存储对象) List zest SetRedis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 zset的成员是唯一的,但分数(score)却可以重复7.2:缓存击穿缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据原创 2021-07-26 22:29:40 · 51 阅读 · 0 评论 -
CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch/CyclicBarrier/SemaphoreCountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;Semaphore 就是一个信号量,它的作用是限制某段代码块的并发数。 synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,Semaphore(信号量)可以指定多个线程同时访问某个资源。...原创 2021-07-26 22:26:10 · 57 阅读 · 0 评论 -
工厂模式与单例模式
1:工厂模式简单工厂模式:我们创建一个工厂类,然后当调用者想要创建一个对象时,只需要告诉工厂类即可,由工厂类去创建对象,调用者无需知道是如何创建的,也不用自己去创建。工厂方法模式:在简单方法中,我们是只有一个工厂类,由这个工厂类负责动态的创建我们所需要的对象;而在工厂方法模式中,我们的工厂类下面还有很多子工厂类,我们需要的对象是由这些子工厂类来创建的。其实就是改进了简单工厂模式,因为当我们需要一个新产品时,只需要扩展一个新的子工厂类即可,而不用去修改原有的代码,这样就符合了开闭原则。抽象工厂模式:原创 2021-07-26 22:25:00 · 1745 阅读 · 0 评论 -
ArrayList、HashSet、HashMap线程不安全
ArrayList、HashSet、HashMap线程不安全因为ArrayList中的add方法,没有用synchronized修饰故障现象:java.util.ConurrentModificationException解决方案?List<String> list=new ArrayList<>(); //这是本来的,不安全List<String> list=new Vector<>(); //第一种方法List<String&原创 2021-07-26 22:23:42 · 114 阅读 · 0 评论 -
ArrayList 和 LinkedList
ArrayList 和 LinkedList 的区别是什么?数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为ArrayList 增删操作要影响数组内的其他数据的下原创 2021-07-26 22:21:40 · 47 阅读 · 0 评论 -
GET和POST区别
GET和POST区别HTTP协议中定义了浏览器和服务器进行交互的不同方法,基本方法有4种,分别是GET,POST,PUT,DELETE。这四种方法可以理解为,对服务器资源的查,改,增,删。GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。PUT:英文含义是放置,也就是向服务器新添加数据,就是所谓的增。DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。GET和POST区别G原创 2021-07-26 22:19:49 · 59 阅读 · 0 评论 -
String和StringBuffer、StringBuilder的区别是什么
String和StringBuffer、StringBuilder的区别是什么如果要操作少量的数据用 = String (线程安全)单线程操作字符串缓冲区 下操作大量数据 = StringBuilder(线程不安全)多线程操作字符串缓冲区 下操作大量数据 = StringBuffer(线程安全)性能的话,string每次都是生成一个新的string对象,然后指针指向新对象;而stringbuffer则是对他本身进行操作,相同情况下,使用stringbuilder比stringbuffer有10%~1原创 2021-07-26 22:17:20 · 63 阅读 · 0 评论 -
spring cloud---Getway网关
spring cloud—Getway网关相当于nginx,不过更牛逼,即以后不需使用nginx了客户端和服务端之间的一面墙,可以起到很多作用:请求转发、负载均衡、权限控制、跨域(如果使用getway来跨域,就得删除模块那个跨域注解)等1:getway使用(负载均衡)创建一个新的子模块,创建普通启动类即可需要将该模块和需要到的模块全部弄到nacos中1.1:引入依赖<dependencies> <!--这个是自定义的那个--> <dependen原创 2021-06-30 11:13:43 · 2680 阅读 · 1 评论 -
定时执行任务
定时执行任务用于定时执行某个模块1:创建定时任务类,使用cron表达式调整定时时间import com.atguigu.staservice.service.StatisticsDailyService;import com.atguigu.staservice.utils.DateUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.ann原创 2021-06-30 11:12:31 · 78 阅读 · 0 评论 -
查询显示二级目录
二级目录注:这个过于繁琐,直接去看通过递归生成多级目录1:先创建俩VO,分为一级目录和二级目录,一般在entity一级目录包含@Datapublic class OneSubject { private String id; private String title; //一个一级分类包含多个二级分类 private List<TwoSubject> children = new ArrayList<>();}@Datapubl原创 2021-06-30 11:08:25 · 703 阅读 · 0 评论 -
给某地址传送值让其返回东西时
给某地址传送值让其返回东西时如:生成二维码的时候,就需要给某个地址传送一些值,通过值生成二维码注:代码中的%s就是占位符,下面还需要给里面传入数据如://获取到code和state public String callBack(String code,String state){ //传入扫描二维码获取的两个参数code,state //拿着code,请求微信提供固定的地址,获取到有两个值access_token(访问凭证),openid(唯一标识)原创 2021-06-30 11:07:46 · 51 阅读 · 0 评论 -
统一返回结果
统一返回结果在common_utils,创建包com.atguigu.commonutils,创建接口 ResultCode.javapublic interface ResultCode { public static Integer SUCCESS = 20000; public static Integer ERROR = 20001;}com.atguigu.commonutils下创建统一返回结果类 R.java@Datapublic class R {原创 2021-05-23 20:56:46 · 112 阅读 · 0 评论 -
swagger
swagger<!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <dependency> <group原创 2021-05-23 20:55:56 · 54 阅读 · 0 评论 -
跨域
跨域通过一个地址去访问另外一个地址,这个过程如果有三个地方中任何一个不一样访问协议:http 和 httpsip地址端口号如:前端访问后端,有时候需要跨域的解决方式:法1:在后端接口controller上加一个注解:@CrossOrigin法2:使用网关解决...原创 2021-05-23 20:55:18 · 39 阅读 · 0 评论 -
MD5加密
MD5加密只可加密,不可解密用于和数据库做对比一般都放在公共工具类中package com.atguigu.commonutils;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public final class MD5 { public static String encrypt(String strSrc) { try {原创 2021-05-23 20:54:32 · 76 阅读 · 0 评论