![](https://img-blog.csdnimg.cn/20210920231101868.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
Java基础知识
云游四海 Jin
一位学习JAVA,CV的小白
展开
-
Java常用容器
java容器原创 2022-08-05 17:24:56 · 229 阅读 · 1 评论 -
三级缓存解决循环依赖
单例池是一级缓存半成品池是三级缓存一级缓存和三级缓存用来解决的是循环依赖的问题工厂池是二级缓存二级缓存主要用来解决动态代理的问题原创 2021-09-25 01:05:12 · 131 阅读 · 0 评论 -
倒数第k个结点(包括输入输出,ACM,白板敲代码,快手面试)
最近面试快手,手撕代码的时候发现既不是关键代码模式也不是ACM,而是从数据结构开始写起,有点懵。记录在此,一起学习!//链表结构体class ListNode{ int val; ListNode next=null; ListNode(int val){ this.val = val; }}public class LastK { public static void main(String[] args) { ListNod原创 2021-09-20 23:09:31 · 107 阅读 · 0 评论 -
两个栈模拟一个队列(包括输入输出,ACM,白板敲代码,快手面试)
快手面试手撕的代码,由于输入输出没搞明白,本来会的题撕得不太顺利,记录在此,共同学习!import java.util.*;public class TwoStack { public static void main(String[] args) { Solution solution = new Solution(); //s1:0 1 2 3 4 for (int i = 0; i < 5; i++) { sol原创 2021-09-20 20:43:25 · 150 阅读 · 0 评论 -
反转链表(包括输入输出,ACM,白板敲代码,快手面试)
最近面试快手,手撕代码的时候发现既不是关键代码模式也不是ACM,而是从数据结构开始写起,有点懵。记录在此,一起学习!//链表结构体class ListNode{ int val; ListNode next=null; ListNode(int val){ this.val = val; }}//包括主函数建立链表和关键代码两部分public class Main{ public static void main(String[] args原创 2021-09-20 20:17:37 · 814 阅读 · 1 评论 -
执行计划和索引
-- 1.添加PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) ;-- 2.添加UNIQUE(唯一索引) ALTER TABLE `table_name` ADD UNIQUE (`column`);-- 3.添加INDEX(普通索引) ALTER TABLE `table_name` ADD INDEX index_name (`column`);-- 4.添加FULLTEXT(全文索引) ALTER原创 2021-08-31 21:42:52 · 97 阅读 · 0 评论 -
synchronized 和Lock区别
synchronizedlock关键字类非公平公平少量同步大量同步自己释放锁必须再finally中释放锁,不然会造成死锁无法判断锁的状态可以判断锁的状态原创 2021-08-31 17:01:48 · 61 阅读 · 0 评论 -
线程池学习记录
import java.util.concurrent.*;public class Test{ public static void main(String[] args){ ExecutorService executorservice = new ThreadPoolExecutor( 3 ,//核心线程数 5, //最大线程数原创 2021-08-18 01:35:54 · 122 阅读 · 0 评论 -
生产者消费者问题
package com.company;/** * 消费者和生产者:线程之间的通信问题 * 等待唤醒,通知唤醒 * 不同的线程操作同一个变量 */public class ProducerAndConsumer { public static void main(String[] args) { Data data = new Data(); //添加线程 new Thread(()->{ for (int原创 2021-08-18 00:17:47 · 74 阅读 · 0 评论 -
计算机网络(TCP、加密、URL)
1. TCP建立连接过程中,第三次握手seq=1000,ack=2000.问第二次握手seq和ack分别为多少?第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK原创 2021-08-17 16:07:21 · 766 阅读 · 0 评论 -
设计模式(单例、工厂)
1.设计模式的六大原则1、开闭原则开闭原则的意思是:对扩展开放,对修改关闭。我们需要使用接口和抽象类。2、里氏代换原则任何基类可以出现的地方,子类一定可以出现。基类与子类的继承关系就是抽象化的具体实现。3、依赖倒转原则针对接口编程,依赖于抽象而不依赖于具体。4、接口隔离原则使用多个隔离的接口,比使用单个接口要好。降低类之间的耦合度。5、迪米特法则,又称最少知道原则一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。6、合成复用原则合成复用原则是指:尽量使用合成/原创 2021-08-17 15:29:11 · 90 阅读 · 0 评论 -
ConcurrentHashMap在JDK1.7和1.8中的区别
其实可以看出JDK1.8版本的ConcurrentHashMap的数据结构已经接近HashMap,相对而言,ConcurrentHashMap只是增加了同步的操作来控制并发,从JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树。1.数据结构:取消了Segment分段锁的数据结构,取而代之的是数组+链表+红黑树的结构。2.保证线程安全机制:JDK1.7采用segment的分段锁机制实现线程安全,原创 2021-08-13 14:08:02 · 800 阅读 · 0 评论 -
RDB与AOF的区别
1.什么是RDB和AOF?RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储AOF持久化方式记录每次对服务器写的操作,当服务器重启时会重新执行这些命令来恢复原始数据,注意:只做缓存的时候可以不做任何持久化同时开启两种持久化方式时当redis重启时会优先载入AOF文件来恢复原始数据因为在通常情况下,AOF文件保存的数据集要比RDB文件保存的完整RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。官方不推荐使用AOF持久化方法,因为RDB更适用于备份数据库(AOF在不断变化原创 2021-08-13 13:50:03 · 1865 阅读 · 0 评论 -
CMS和G1收集器的区别
1.使用范围不一样CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用2.STW的时间CMS收集器以最小的停顿时间为目标的收集器。G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)3.垃圾碎片CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。4. 垃圾回收的过程不一样CMS收集器原创 2021-08-13 11:04:56 · 294 阅读 · 0 评论 -
java对象的生命周期
在Java中,对象的生命周期包含下面几个阶段: 创建阶段(Created) 应用阶段(In Use) 不可见阶段(Invisible) 不可达阶段(Unreachable) 收集阶段(Collected) 终结阶段(Finalized) 对象空间重分配阶段(De-allocated)1.创建阶段(Created)在创建阶段系统通过以下的几个步骤来完毕对象的创建过程为对象分配存储空间开始构造对象2.应用阶段(In Use)对象至少被一个强原创 2021-08-13 10:41:24 · 1129 阅读 · 0 评论 -
MySQL学习记录
1.什么是索引一种能帮助mysql提高查询效率的数据结构索引优点:大大提高数据查询速度索引缺点:维护索引需要耗费数据库资源索引要占用磁盘空间所以数据库表并不是索引加的越多越好,而是仅为那些常用的搜索字段建立索引效果才是最佳的!2.索引的分类主键索引:PRIMARY KEY单值索引:又叫单列索引、普通索引唯一索引:索引列的值必须唯一,但允许有空值(Null),但只允许有一个空值(Null)复合索引:一个索引可以包含多个列,多个列共同构成一个复合索引!全文索引:Full Text (原创 2021-08-13 00:53:30 · 94 阅读 · 0 评论 -
Spring学习记录
1.什么是Spring?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架(1)从大小与开销两方面而言Spring都是轻量级的。(2)通过控制反转(IoC)的技术达到松耦合的目的(3)提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发(4)包含并管理应用对象(Bean)的配置和生命周期,这个意义上是一个容器。(5)将简单的组件配置、组合成为复杂的应用,这个意义上是一个框架。2.Spring Bean的生命周期实例化 Instantia原创 2021-08-13 00:01:39 · 76 阅读 · 0 评论 -
HTTP请求的常见状态码
http请求的状态码主要有1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)5xx(服务器错误)但是我们会遇到的确不是很多,所以不用一一记住,下面是一个列表, 代表了一些常常会出现的状态码:200 OK:代表一次成功的http请求。204 No Content:请求已经被服务器成功执行,但是服务器不会返回资源内容,这个状态码可以这样理解:就是告诉客户端,你的请求我已经处理了,但是我没东西答复你,你也不用改变什么。应用场景:在浏览器中,我们提交一个表单,但是又不想跳转页原创 2021-07-28 19:56:50 · 436 阅读 · 0 评论 -
刷题(电话号码的字母组合)
1.题目2.回溯法回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。class Solution { public List<String> letterCombinations(String digits) { //新建一个lists用来接收结果 List<String> lists = new ArrayLis原创 2021-07-02 22:40:18 · 97 阅读 · 0 评论 -
数据结构讲义
0.引言以下概念均参考彭波数据结构1.绪论数据元素的四种基本逻辑结构集合、线性结构、树形结构、图状或网状结构两种物理结构顺序存储结构、链式存储结构算法的设计取决于逻辑结构,算法的实现依赖于物理结构算法的概念算法的特性:有穷性、确定性、可行性、输入、输出程序是算法(这个算法可以用不同的语言来写)的实现算法的设计要求:正确性、可读性、鲁棒性、高效性算法的效率包括时间和空间,也就是时间按复杂度和空间复杂度算法的时间复杂度取决于算法中基本操作的频度2.线性表线性表的定义:线性是n个具有原创 2021-07-01 16:09:11 · 425 阅读 · 0 评论 -
刷题(三数之和)
1.题目描述2.第一次尝试本来准备暴力破解,三重循环。结果发现一个严重的问题,他会出现重复的列表项,这可不太好办3.排序+双指针看了看大佬的解法,是我草率了考虑的太不全面了很多情况我都没考虑到双指针法之前也见过,但是想不到用,是我没学到精髓吗特意查了双指针我们常说的「双指针」,当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元素的递增,第二个元素是递减的,那么就可以使用双指针的方法,将枚举的时间复杂度从 O(N^2) 减少至 O(N)。class Solution {原创 2021-07-01 01:00:26 · 106 阅读 · 2 评论 -
刷题(盛多水的容器)
1.题目描述2.第一次尝试暴力破解的,使用两个for,时间复杂度是0(n*n)class Solution { public int maxArea(int[] height) { int sum = 0,min = 0; for(int i = 0;i<height.length;i++){ for(int j = 1;j<height.length;j++){ if(height[i]&l原创 2021-06-30 09:59:58 · 76 阅读 · 0 评论 -
Docker部署jenkins
1.拉取镜像https://www.bilibili.com/video/BV12h411Y76j?p=6&spm_id_from=pageDriver2.目录权限chown -R 1000 /root/jenkins3.运行docker run -di --name=jenkins -p 8080:8080 -v /root/jenkins/:/var/jenkins_home jenkins/jenkins:lts4.测试http://192.168.10.187:8080/原创 2021-06-29 13:51:37 · 99 阅读 · 0 评论 -
搭建redis集群(三主三从)
1.创建目录在/usr/local下建文件夹redis-cluster,然后在其下面分别创建6个文件夹mkdir -p /usr/local/redis-clustermkdir 8001、mkdir 8002、mkdir 8003、mkdir 8004、mkdir 8005、mkdir 80062.复制修改redis.conf把之前的redis.conf配置文件copy到8001下,修改内容3.继续修改配置文件把修改后的配置文件,分别复制到各个文件夹下面。注意每个文件要修改第2、4、6项原创 2021-06-29 08:50:13 · 171 阅读 · 0 评论 -
java中的位运算符
1.位运算符介绍 2.应用思路:动态规划+位运算class Solution { public int[] countBits(int n) { int[] bits = new int[n + 1]; int highBit = 0; for (int i = 1; i <= n; i++) { if ((i & (i - 1)) == 0) { highBit = i;原创 2021-06-29 00:32:51 · 91 阅读 · 0 评论 -
刷题(两个栈实现一个队列)
1.用两个栈实现一个队列用 stack1 作为 push 队列,将元素 push 到 stack1用 stack2 作为 pop 队列,当 stack2为空时则将 stack1 的数据 push 到 stack2,否 则直接 pop stack2Stack<Integer> pushStack = new Stack<>();Stack<Integer> popStack = new Stack<>();public void push(int原创 2021-06-26 10:01:32 · 60 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩解决方案
1.缓存穿透描述:访问一个缓存和数据库都不存在的 key,此时会直接打到数据库上,并且查不到数据,没法写缓存,所以下一次同样会打到数据库上。此时,缓存起不到作用,请求每次都会走到数据库,流量大时数据库可能会被打挂。此时缓存就好像被“穿透”了一样,起不到任何作用。解决方案:1、接口校验。在正常业务流程中可能会存在少量访问不存在 key 的情况,但是一般不会出现大量的情况,所以这种场景最大的可能性是遭受了非法攻击。可以在最外层先做一层校验:用户鉴权、数据合法性校验等,例如商品查询中,商品的ID是正整数,原创 2021-06-25 20:13:30 · 117 阅读 · 0 评论 -
多线程学习记录
1.程序、进程、多线程程序是程序,进程是进程,进程指的是程序的运行过程(抽象)一个进程有多个线程,main函数就是一个主线程进程一般由程序、数据集、进程控制块三部分组成。2.同步和异步(消息队列)3.有了进程为啥还需要线程进程的创建非常消耗资源进程之间独立的空间,没办法共享资源进程间通信不方便默认都会有一个主控制线程进程比坐火车,线程比作车厢进程比作工厂,线程比作工人进程是最小的资源单位,线程是最小的执行单位4.创建多线程public class TryConcurrency0原创 2021-06-25 17:28:54 · 106 阅读 · 1 评论 -
分布式锁的三种实现方式
1.分布式的CAP理论分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。2.ZooKeeper 简介ZooKeeper 是一个分布式的,开放源码的分布转载 2021-06-23 21:56:01 · 109 阅读 · 0 评论 -
minio
docker run -p 9000:9000 minio/minio server /data原创 2021-06-19 12:09:50 · 131 阅读 · 0 评论 -
shell项目启动脚本(java -jar)
#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=account-manage-server-1.0-SNAPSHOT.jar#使用说明,用来提示输入参数usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status|logs]" exit 1}#检查程序是否在运行is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '转载 2021-06-19 10:21:40 · 588 阅读 · 0 评论 -
混合式开发学习笔记
目前市场上主流的APP分为三种:原生APP、Web APP(即HTML5)和混合APP三种一、APP原生开发原生开发(Native App开发),是在Android、IOS等移动平台上利用提供的开发语言、开发类库、开发工具进行App软件开发。比如Android是利用Java、Eclipse、Android studio;IOS是利用Objective-C 和Xcode进行开发。通俗点来讲,原生开发就像盖房子一样,先打地基然后浇地梁、房屋结构、一砖一瓦、钢筋水泥、电路走向等,都是经过精心的设计。原生AP原创 2021-06-19 09:59:21 · 209 阅读 · 0 评论 -
shell脚本的编写
1.shellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。...原创 2021-06-11 15:28:44 · 2325 阅读 · 0 评论 -
linux下shell脚本获取网络信息
#! /bin/shdefault_route=$(ip route show)default_interface=$(echo $default_route | sed -e 's/^.*dev \([^ ]*\).*$/\1/' | head -n 1)address=$(ip addr show label $default_interface scope global | awk '$1 == "inet" { print $2,$4}') #ip addressip=$(echo原创 2021-06-11 15:21:37 · 564 阅读 · 0 评论 -
docker学习记录
1.Docker - 部署MySQL, Redishttps://www.cnblogs.com/waller/p/12109143.html2.克隆若以项目原创 2021-06-09 17:25:09 · 117 阅读 · 1 评论 -
注解 @TableField(exist = false) 注明非数据库字段属性
1.需求要查询的数据增加一个字段,这个字段不是数据库中的字段,而是自己添加的字段。2.解析一般情况下,我们需要通过映射来解决但是在mybatis-plus中已经帮我们做好了映射,但是新的字段并没有加入映射中。所以如果我们不加任何操作,我们是没有办法查出来days字段的我们使用以下办法@TableField(exist = false) 注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错原创 2021-06-08 16:10:09 · 9524 阅读 · 0 评论 -
mysql查询近几天的数据
1.案例where DATEDIFF(meeting_time,NOW()) <= #{days} AND DATEDIFF( meeting_time,NOW()) >= 0days是一个整型变量,查询近几(days)天的数据。原创 2021-06-08 11:32:51 · 255 阅读 · 0 评论 -
nginx学习记录
1.定义Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。可以承受50000并发。2.反向代理先说正向代理我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。那什么是反向代理呢?反向代理隐藏了真实的服务端,当我们请求 ww.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为原创 2021-06-03 11:28:13 · 72 阅读 · 0 评论 -
常用linux命令
1.查看IP地址ip addr原创 2021-06-02 16:36:46 · 47 阅读 · 0 评论 -
VitrualBox+Vagrant安装教程
1.下载virtuboxhttps://www.virtualbox.org/wiki/Download_Old_Builds_5_2vagranthttps://www.vagrantup.com/downloadsboxhttps://vagrantcloud.com/centos/boxes/7/versions/1905.1/providers/virtualbox.box2.原创 2021-06-02 15:41:37 · 150 阅读 · 0 评论