自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (1)
  • 问答 (6)
  • 收藏
  • 关注

原创 hashMap源码解释

hashMap的默认大小一个不太接近2的整数幂的素数,常常是散列表大小的一个较好的选择。/** * The default initial capacity - MUST be a power of two. */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 public Hashtable() { this(11, 0.75f); }为什么hashmap的大小要设为16,且要

2021-04-19 15:07:40 185 1

原创 threadlocal错误用法记录

threadlocal错误用法记录

2023-03-13 14:14:28 190

原创 自定义快捷键 复制一段特定内容

自定义快捷键-复制特定文本

2023-03-08 18:02:16 1418 2

原创 开发笔记(持续)

项目笔记

2022-09-15 23:26:19 258 1

转载 skywalking连接java项目

先看大佬的博客把es和skywalking装好。https://blog.csdn.net/weixin_43145299/article/details/109400431然后看这篇博客https://blog.csdn.net/qq_16946803/article/details/108471785如果成功就到此结束。但是我这里是把jar包导到linux上运行,发现vm的配置无效,怎么改都没用。最后通过直接加命令的方式解决。java -javaagent:/usr/src/apache-

2021-11-09 14:24:25 323

原创 学习scala

创建临时方法-闭包val multiplier = (i:Int) => i * 10;main方法def main(args: Array[String]) {}在main方法外创建的变量即为全局变量,在里创建的为局部变量main方法存在时,main方法外的语句也会生效,且优先级更高。for循环输出所有数组元素 for ( x <- myList ) { println( x ) }计算数组所有元素的总和 var total = 0.0; for

2021-07-13 10:17:29 88

原创 JVM面试,这篇就够了

1.基本概念JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。运行过程:我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。2.JVM 内存区域JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAV

2021-07-08 17:28:20 299 1

原创 zookeeper创建分布式锁

错误的方式,创建一个临时节点,最先创建的获取到锁,会导致大量客户端频繁操作正确的方式:创建临时顺序节点,编号最小的获取到锁流程图

2021-07-06 16:19:43 79

原创 idea无法创建springboot项目

问题描述:idea无法通过阿里云创建springboot项目,明明之前都能创建创建的项目是这样的,只有unknown这个文件解决方式url换成这个,也就是把最后的 / 给去掉,就挺离谱的https://start.aliyun.com...

2021-06-23 15:48:32 543

原创 webstorm创建vue项目

nodejs安装vue-cli安装点击next即可,需要注意的是需要用3.x版本脚手架,其次是需要用管理员身份打开。

2021-06-21 20:34:00 247

原创 vue cli安装

nodejs安装卸载脚手架npm uninstall-g@vue/cli//卸载3.x版本脚手架npm uninstall-gvue-cli//卸载2.x版本脚手架1. Vue Cli官方网站https: //cli. vuejs.org/zh/guide/2.安装 vue clinpm install-g vue-cli

2021-06-21 16:33:43 135

原创 nodejs安装

1.下载nodejshttp: //nodejs. cn/download/windows系统:msi安装包(exe)指定安装位置zip(压缩包)直接解压缩指定目录2.配置nodejs环境变量windows系统:1.计算上右键属性—>高级属性—环境变量添加如下配置:NODE_home= nodejs安装目录3.验证nodejs环境是否成功 node -v4.npm介绍node package mangager nodejs包管理工具前端主流技术npm进行统一管理maven管理java

2021-06-21 16:23:56 147

原创 正则表达式

限定符? 表示前面的一个字符或表达式可有可无* 表示前面的一个字符或表达式可以有0-n个+ 表示前面的一个字符或表达式可以有1-n个{ } 给前面的一个字符或表达式设置出现次数如:A{2}表示A出现两次A{2,6}表示A出现2–6次A{2,} 表示A出现2次及以上()就是括号的用处或:(a|b)表示a或b[ ] 表示由[ ]里指定的字符组成如:[ a-zA-Z0-9 ] 表示所有英文数字字符^ 在[ ] 里表示非如:[ ^a-z ] 表示不能是小写英文字符元字符大写都表示反义

2021-06-14 18:49:45 54

原创 最简单的随机生成合法日期方法

思路我们要指定一个起始日期,1900-1-1,这是最小值。然后我们要指定一个最大日期,如2200-1-1然后计算出两个日期之间的差值天数,简单算一下就是365300,然后我们就可以得到一个(0-365300)的随机值,只要初始日期加上这个随机值,就可以得到一个合法日期。代码 DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); //起始日期 Date start = dateFormat1.parse

2021-05-24 12:26:53 746

原创 动态规划压缩空间【算法】

1.当一个位置可以由它上面的数的左边的数得来第一步,建一个数组把第一行的值填进去,因为第一行只能由左边的数得来,所以可以得出。第二步,求第二行,第一个数只能由上面一个数得出,第二个数就可以得到它上面的数的左边的数。2.当一个位置可以由它上面的数和左上角的数得来由右向左遍历即可3.当一个位置可以由它上面的数、左上角的数、左边的数得来可以用一个变量保存左上角的值。...

2021-05-23 11:29:00 193

原创 【redis】RDB、AOF

RDB如果既要满足持久化又要满足修改,这个代价会很大,数据也不好保证,时间会混乱。redis的做法fork一个子线程来做持久化,父子进程对数据的修改对方看不到。save–阻塞,关机维护时bgsave–fork创建子线程copy on write 写时复制ACFredis的写操作记录到文件中丢失数据少、可以和RDB同时开启如果开启了AOF只会用AOF恢复AKF将redis一变多,实现读写分离数据一致性问题:主redis在写命令后阻塞,等待从redis执行完成,直到数据一致。但这样的

2021-05-13 15:06:06 64

原创 redis击穿、穿透、雪崩

击穿肯定发生了高并发,大量请求某个key,而redis中的这个key不存在,如过期了,这时就会对数据库产生很大压力。解决方案:阻止高并发到达数据库,当请求来时,查询redis,没查到就将这个key setnx,如果setnx操作成功就去访问数据库,并将数据库的值存到redis里。如果操作不成功,就sleep一会,醒了再从查redis开始,查到就返回了。存在问题:1、第一个人挂了,导致死锁,可以设置过期时间2、第一个人超时了,可以用多线程,一个线程去取数据,一个线程进行监控,更新锁的时间穿透查询的

2021-05-13 15:05:20 61

原创 git 基础 idea集成(三)

本地库操作一远程库操作二管理员操作1、进入idea 在settings\version Control 中找到git2、本地库的初始化操作 create git Repository3、右键点击你的项目,点击add,把项目添加到暂存区再提交勾选要提交的文件,填写注释信息,最后点击commit提交修改文件后,一样执行add、commit操作即可。push到远程但如果你创建的远程仓库使用过,就会出现错误fatal: refusing to merge unrelated hist

2021-05-06 17:02:44 52

原创 git 基础 远程库(二)

远程库操作一、初始化本地库二、创建一个远程库三、将本地库推送到远程库四、添加其他成员五、将远程库克隆到本地六、更新七、协同开发时的冲突八、多分支操作免密操作本地库操作一、初始化本地库首先创建一个文件夹,在文件夹里右键打开 Git bash heregit init 初始化本地仓库二、创建一个远程库这里使用gitee填写仓库名称等信息,点击创建。会生成https的一个远程仓库地址https://gitee.com/aidid/gitstudy2.git地址很长,所以为了方便可以在g

2021-05-06 17:02:01 51

原创 git基础 本地库

首先创建一个文件夹,在文件夹里右键打开 Git bash heregit init 初始化本地仓库会在文件夹里创建一个.git 文件夹创建一个demo.txt添加到暂存区git add demo.txt 提交到本地仓库git commit -m "填写注释信息" demo.txt修改demo.txt文件(可以直接打开文件修改)在终端修改:vi demo.txt按a可以修改内容,修改完成按ESC键,输入:wq保存退出然后再次添加、提交日志方式一git log日志内容

2021-05-06 14:37:55 80

原创 JDBC

SPI机制服务自动加载机制通过class.forName()将driver对象注册到了driverManager中然后通过driverManager来获取数据库连接//1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2.用户信息和URL String url = "jdbc:mysql://localhost:3306/XXX"; String usena

2021-05-05 17:16:40 51

原创 gc【JVM】

垃圾:没有任何引用指向的都是垃圾java会自动回收垃圾,就是GC如何找到垃圾:1、引用计数每有一个引用指向自己就计数加一,断开引用时减一、当为0时就回收存在问题:出现环,几个对象循环指向,如a->b、b->c、c->a.2根可达算法.GC Root1、线程栈对象,main方法中的对象2、类的静态变量3、常量引用的对象。4、本地方法栈中JNI引用的对象(c 、c++实现的本地对象)...

2021-05-05 17:15:20 54

原创 虚拟机网络配置

1.查看ifconfig命令是否可用如果不可用1.安装`yum search ifconfig yum install net-tools.x86_64` 2.打开/etc/profile文件。命令:vi /etc/profile 3.按大写的G,把光标调到文件最末尾的地方。按i进入输入模式,然后在文件的末尾添加如下的一句:export PATH=$PATH:/sbin。 4.保存退出2.ifconfig命令查看,把ifconfig 里的MAC地址添加到 /etc/sysconfig/net

2021-04-29 12:42:45 189

原创 【算法】由递归推出动态规划

象棋中的马从(0,0)位置跳到(x,y)位置,跳k步,有多少跳的方法?递归方法:结束条件,k=0时,结束,如果x=0,y=0;则是一种方法。边界:x<0||x>9||y<0||y>8递归: 从最后(x,y)点看,有8个点可以一步跳到(x,y)点代码: public static int ways1(int x,int y,int k){ return f(x,y,k); } public static int f(int x,int y,in

2021-04-24 19:05:46 91

原创 左神算法课--窗口和单调栈【算法】

窗口题目:求数组arry上的子数组个数,子数组从L到R上满足max-min<=num,arry和num为参数。推论:1、一个子数组满足条件,则子数组内的任意子数组都满足条件。max-min<=nummax2<=maxmin2>=min则max2-min2<=num2、一个子数组不达标,向外扩,也不会达标。证明同理 思路:做两个双端队列,max和min,以0位置开头,向右扩展窗口,不达标时左端索引向右移动。从0到X位置达标,则从0开始的子数组达标数为X-0+1;

2021-04-24 11:47:08 120

原创 lambda表达式超详细(代码+案例)

lambda表达式详解先看看例子,看看Lambda的厉害之处lambda表达式的语法表达式案例扩展资料方法的引用先看看例子,看看Lambda的厉害之处简化创建线程 new Thread(()->{ System.out.println("running..."); }).start();简化比较器及输出 List<String> list = Arrays.asList("java", "c++", "c","python");

2021-04-20 23:33:58 963

原创 socket上传图片【IO】

服务端接收图片并返回上传成功注意点:要手动关闭流,不然程序不会停止 就是这条语句accept.shutdownInput();,原因是如果不手动关闭流,程序就不知道还有没有数据传输。因为网络传输都是字节流,所以这里用的是字节流。public class PicServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSoc

2021-04-20 19:24:21 182

原创 IO输入输出【IO】

字节流是万能的,可以读取所有文件形式,字符流在读取图片、视频时就会出现问题。字符处理慢,字节处理快OutputStreamWriter 字符流,它是包装了字节流,实现更快的操作以及更加灵活序列化...

2021-04-20 14:43:58 119

原创 【项目】秒杀实战

秒杀的实现一、数据库:秒杀商品表:秒杀时间表:二、流程:1、添加秒杀商品:先查看是否有该时间段,没有就添加一个时间段,并把商品信息添加到秒杀商品表里。2、获取当前时间及往后7个时间段, 总共8个。3、根据时间段id获取商品4、根据秒杀id获取商品详细信息1 从缓存中查询2. 缓存没有,再从数据库中获取,添加到缓存3. 将库存单独存入一个key中4. 返回商品5、秒杀开始1 判断是否卖完2. 判断是否秒杀开始,虽然前端在没开始之前不会打开抢购按钮,但为了防止路径暴露被刷3.

2021-04-18 16:26:58 137

原创 腾讯csig电话面试

刚刚面试完,腾讯csig用的是go语言1、你是做java开发的,但我们是用go语言,你会考虑换语言吗?会啊(能进大厂,谁还在乎什么语言????)2、说一说你的这个商城项目。叭叭叭。。。3、商品表那些字段要加索引没用索引>︿<4、没用到索引是吧,那你觉得那些字段要加索引。。。我觉得名字要加,(只有名字吗?)还有分类id5、模糊查询能命中索引吗不会6、mysql索引底层数据结构?不会, 就b+树之类的,还没开始看7、密码是用什么结构来存在redis里的?key、valu

2021-04-17 15:34:58 997 2

原创 【高并发】容器

hashtable 加锁(基本不用)hashmap 不加锁加锁的hashMap Map<Integer, String> m = Collections.synchronizedMap(new HashMap<Integer, String>());ConcurrentHashMap 插入时会有各种判断,所以效率会低,但读的速度很快。Vector 自带锁 (基本不用)TreeMap 红黑树实现在CAS操作是对树不好操作,所以用ConcurrentSkipListMap

2021-04-17 13:44:39 59

原创 oracle连接失败

oracle连接失败

2021-04-15 15:03:02 127

原创 【并发】线程池

学线程池需要了解ExecutorExecutorService: submit()//异步方法future :get()FutureTask (常用) FutureTask<Integer> task =new FutureTask<Integer>(new Callable(){ @Override public Object call() throws Exception { TimeU

2021-04-13 18:45:44 106

原创 ReentrantLock实现消费者生产者

public class a01_Lock<T> { //生产的东西 final private LinkedList<T> lists = new LinkedList<T>(); //能够放的最大数量 final private int MAX = 10; //数量 private int count = 0; //锁 private Lock lock = new ReentrantLock();

2021-04-11 11:32:23 107

原创 并发编程三大特性(重要)

可见性有序性原子性可见性 private static boolean running =true; public static void main(String[] args) { Thread t = new Thread(()-> { while (running){ System.out.println("a"); } }); t.start();

2021-04-10 11:12:05 192

原创 CAS、锁

cas 期望值、更新值

2021-04-09 17:50:32 728

原创 线程的中断标志位

interrupt()打断每个线程(设置标志位)isInterrupted()查询某个线程是否被打断过(查询标志位)static interrupted()查询当前线程是否被打断过,并重置打断标志当线程sleep或wait、join时,如果这时设置标志位会产生InterruptedException异常,catch后可以进行处理,标志位也会复位。锁操作不会被Interrupte()干扰lockInterruptibly()可以干扰,使其抛出异常,catch异常后可以进行自定义操作。面试题:怎么优

2021-04-09 12:05:52 1103

原创 线程状态

1、NEW 线程刚刚创建,还没启动2、RUNNABLE :可运行状态RUNNABLE 分为READY和RUNNING3、WAITING : 等待被唤醒4、TIMED WAITING:隔一段时间后自动唤醒5、BLOCKED:被阻塞,正在等待锁6、TERMINATED:线程结束...

2021-04-09 11:26:10 66

原创 单例模式的懒汉式双重检查

public class Singleton { private Singleton singleton; public Singleton getInstance() { //这句是提高效率,没必要每次都去加锁,加锁是很费时间的。 if (this.singleton == null) { //加锁防止高并发,很多线程已经冲进这里 A点 synchronized (Singleton.class) {

2021-04-09 10:58:15 283

原创 进程、线程概念及其面试题

进程:一个程序可以在内存中有很多份,每一份都是一个进程,系统会给他分配资源。

2021-04-09 10:36:17 73

java100天学习路线

java学习路线详细

2020-12-29

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

TA关注的人

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