Java从入门到秃头
文章平均质量分 79
此专栏乃鄙人学习Java的手记,欢迎指正
可乐可乐可
远方,需要不断追寻
展开
-
因为经费问题不得不使用JUC大法 | 限流降级队列
本文作者:可乐可乐可,作者个人主页:可乐可乐可的个人主页因为经费问题不得不使用限流降级队列亲儿子(学校自研的新系统)在进行细致的需求分析时,竟然有经费问题,导致我们使用的邮箱可能挂掉或者被限流,第n次因为经费问题流下泪水233。不过这也是自己的契机,当初用这个小轮子入了面试官的法眼(感谢面试官给机会,蟹蟹蟹蟹,需要字节跳动内推的可以私聊我哦)(想亲自体验被QQ邮箱封号吗,不会很严重,停一会儿就恢复了,下面是Spring Boot 的一个测试类,可以用他体验一下被封的感觉)import o.原创 2021-03-19 22:44:06 · 523 阅读 · 3 评论 -
轻松理解AQS框架 |不会有人看了不懂吧
本文作者:可乐可乐可,博主个人主页:可乐可乐可的个人主页轻松理解AQS框架本文需要以下知识铺垫:Java、临界区、信号量、锁AQS(AbstractQueuedSynchronizer,抽象队列同步器)是Java中重入锁ReentrantLock、读写锁、信号量的实现基石。学会、了解AQS框架对了解Java锁有很大的帮助说的比唱的好听,AQS源码下来2k+行,这是人干的活吗?为了解决大家AQS不了解以及看了忘,忘了看的恶性循环,下面将带领大家从简到繁,一步步的学会AQS框架。本文.原创 2021-02-22 23:32:06 · 2663 阅读 · 10 评论 -
十分钟深入理解volatile
个人觉得JUC里面的东西比JVM还要玄,JUC中将引领我们用一种多线程的角度思考整体的程序,可以说是一种挑战吧。volatile,中文语义:不稳定的大家都应该了解这个常识吧!(不知道的一定要记好)Java中,若一个变量会被多个线程所使用,我们需要给这个变量加上volatile关键字。しかし!(但是)作为未来大厂高级电脑的附属品,我们必然不能只了解这个规则,更应该洞悉why,才能在未来的使用中,稳定起飞一、首先,volatile到底是个啥?Java语言规范第3版中对volatile的定义如下.原创 2021-01-27 16:25:28 · 1085 阅读 · 43 评论 -
Java内存模型基础篇
我们在这里简单复习一下操作系统中的缓存操作系统中的缓存情况为上图,操作系统将内存,缓存分为多个大小相等的块。然后根据缓存的数目依次指定内存块所对应的缓存块,在使用时,直接访问缓存,未命中则更新。但是操作系统的缓存有一个很关键的隐含信息:每个内存块只有一个缓存,一个缓存对应了多个内存。但是在Java内存模型中,情况却似乎反了过来,如下图Java内存模型在Java中,实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享(也就是共享变量局部变量,方法定义参数,异常处理参数不会在线原创 2021-01-27 11:29:46 · 275 阅读 · 0 评论 -
简要JUC常识概念总结
JUC常识概念基础概念1.同步与异步2.并发与并行3.临界区4.阻塞与非阻塞5.死锁、饥饿、活锁死锁饥饿活锁原子性可见性有序性不能指令重排的规则:**Happen-Before规则**并发级别阻塞无饥饿无障碍无锁无等待基础概念Created: Aug 6, 2020 8:45 PMTags: 临界区, 原子性、可见性、有序性, 同步异步, 并发并行, 死锁、饥饿、活锁1.同步与异步用来形容一次方法调用。同步的方法调用一旦开始,调用者必须等到方法调用返回后才能继续。异步调用类似消息传递,执行后原创 2021-01-26 19:04:51 · 545 阅读 · 0 评论 -
浅析JWT| JWT是啥子,Java构建JWT
小声bbb说到系统的安全识别,记得自己第一个项目,用的就是session,用户登录进来以后,给他session标记登录,记录id进去,轻轻松松,设计的操作也很简单,类似操作HashMap。这大概也有1年多快两年了,现在回头看真的是可怕,几乎在裸奔众所周知,平常使用的Session是存储在服务器的一种技术,可以理解为一个会话id,每次使用HTTP请求,都会携带一个sessionId,服务器根据这个SessionId去找对应的sessionしかし,我预判了你的预判第三方完全可以随便输入一个sess原创 2021-01-26 11:09:43 · 4289 阅读 · 64 评论 -
Java环境变量,Linux
vi /etc/profileexport JAVA_HOME=/root/java/jdk-11export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profile原创 2021-01-24 16:28:56 · 187 阅读 · 0 评论 -
Spring data elasticsearch简单上手 | ES-7版本,springboot 2.4
本来觉得写这个没什么意义,感觉看看别人就够了,然鹅,,,,被网上的坑的很惨再次强调本文的环境:2021年1月23日01:51:43的最新配置spring boot 2.4版本Elasticsearch的7.10.1版本如果你环境差距不大,恭喜你,这片文章很适用你注:本文讲解基础的操作,复杂的查询等可以参考参考spring文档(开个翻译就行了)如果你是刚刚入门是不是有各种奇怪的情况,你发现你的Spring data elasticsearch好像不能正常用?恭喜你,本人已经找到了Spr.原创 2021-01-23 00:38:49 · 1228 阅读 · 0 评论 -
单例模式为什么需要volatile关键字?
在单例模式中,为了保证效率的同时,保证线程安全,我们会了解这一段代码双重校验锁public class SingletonLazy { private volatile static SingletonLazy data; private SingletonLazy(){ System.out.println("初始化"); } public SingletonLazy getData() { if (data == null) {原创 2021-01-01 16:58:52 · 1241 阅读 · 4 评论 -
println导致的线程缓冲区刷新|一个volatile引起的思考
问题引出:今天在看volatile的时候,自己写了个例子,发现即使没有volatile,我程序也照常跑了描述首先看看这个情况的描述第一个代码是有关何时以及如何使用volatile的示例,熟悉volatile的一定知道,为了使程序成功运行,我们需要添加volatile。第二个代码表示,即使没有volatile,该程序情景仍然可以成功运行。第一段代码, 经典的volatile使用案例public static int num=1;public static class MyThre原创 2020-12-26 19:06:40 · 3100 阅读 · 15 评论 -
遍历Java中的Map
今早遇到了轮询map中的元素,加入到list中的需求相关材料:Java集合类图解(全面,舒适)https://blog.csdn.net/weixin_44494373/article/details/105898218如何遍历Map一、利用Map内部的entrySet,Set集合进行foreachMap中的每个节点都是一个Entry对象,同时map提供了转化为Set(或者说获取内部的Set)的方法entrySet()利用这个方法,我们能获取一个Set集合,该集合是Collection的子类.原创 2020-11-22 11:44:57 · 584 阅读 · 0 评论 -
ByteBuffer转String与解析为json对应的对象
事情是这样的,今天需要对Feign的响应进行处理,Feign在异常时返回的Body为字节缓冲,需要自己处理。ByteBuffer是个啥原文 https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html字节缓冲区可以是直接的,也可以是非直接的。给定一个直接字节缓冲区,Java 虚拟机将尽最大努力直接在其上执行本机 I/O 操作。也就是说,在每次调用底层操作系统的本机 I/O 操作之前(或之后) ,它都会试图避免将缓冲区的内容.原创 2020-11-22 09:57:19 · 2053 阅读 · 0 评论 -
Java字符串存储在哪里
早上看群友们在讨论,出现了Java字符串究竟在哪里的话题,粗略目睹虚拟机的菜鸡本人起了兴趣,研究了一下整理出来这个博文字符串究竟存在哪里这里总结了大家同意的说法:如果使用常量的方式,该对象将被存储在常量池(永久代)如果使用new的方式,该对象将被存储在堆下面的代码揭示了情况:使用常量的形式,为同一个对象使用new的方式,为不同的对象即使调用了常量创建的对象的方法,该对象也并不会发生什么变化:说明就是一个对象,而不是一组数组public class TestString { .原创 2020-09-18 13:29:29 · 6190 阅读 · 1 评论 -
java.awt.headless模式
学习Spring Boot的时候,碰到了一行代码,代码设置了系统属性java.awt.headless为trueprivate void configureHeadlessProperty() { System.setProperty("java.awt.headless", System.getProperty("java.awt.headless", Boolean.toString(this.headless))); }java.awt.headless模式java.原创 2020-07-17 23:32:11 · 1688 阅读 · 0 评论 -
JDK 14的新特性和增强(原文转译)
有朋友问JDK14都增加了什么东西,从https://www.oracle.com/java/technologies/javase/14-relnote-issues.html#NewFeature翻译来了一篇,分享出来,已经对文章的细节进行了调整。总结主要的内容为会计格式GC的变动JFR 事件流JDK 14的新特性和增强会计货币格式支持core-libs使用“ u-cf-account” Unicode 语言环境扩展调用 NumberFormat.getCurrencyIn.原创 2020-07-14 18:58:26 · 1008 阅读 · 0 评论 -
你要的SpringCloud简略指南来了!(Netflix版本)
SpringCloud笔记一、概述官网简介地址https://spring.io/cloud1、基于分布式的微服务架构2、SpringCloud简介1.What is SpringCloudSpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶2.集成的相关项目SpringCloud已经成为国际微服务开发的主流技术栈,国内开发者社区十分火爆,同时Alibaba已经加入SpringCloud Alibaba3.京东架构4.学习的原创 2020-07-11 11:46:59 · 5476 阅读 · 0 评论 -
mybatis基础知识
mybatis基础知识对原生态jdbc程序中问题总结1.1jdbc程序使用jdbc查询mysql数据库中用户表的记录1.2JDBC开发定义Connection–>PreparedStatement–>ResultSet加载数据库驱动–>通过驱动管理类获取数据库链接–>定义sql语句?表示占位符---->获取预处理statement–>设置参数,依次...原创 2019-10-28 17:12:39 · 322 阅读 · 0 评论 -
Spring是如何扫描包的 Spring5.x(源码向)
Spring是如何扫描包的 Spring5.x锁定这个方法,Spring会在ClassPathScanningCandidateComponentProvider类的这个方法中进行扫描private Set<BeanDefinition> scanCandidateComponents(String basePackage) { LinkedHashSet candidat...原创 2020-05-05 00:16:35 · 854 阅读 · 0 评论 -
使用Shiro+JWT完成的微信小程序的登录(含讲解)
使用Shiro+JWT完成的微信小程序的登录源码地址https://github.com/Jirath-Liu/shiro-jwt-wx微信小程序用户登陆,完整流程可参考下面官方地址,本例中是按此流程开发https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html你需要了解的点微信小程...原创 2020-04-09 21:25:17 · 4356 阅读 · 28 评论 -
Fetch+SpringBoot跨域请求设置
今天搭建博客的时候,尝试性的传递数据,发现报了…blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-co...原创 2020-01-09 20:50:03 · 575 阅读 · 0 评论 -
编写SpringBoot 中的AOP
编写SpringBoot 中的AOP在程序开发的过程中会使用到AOP的思想,面向切面进行开发,比如登录的验证,记录日志等等…频繁需要操作的步骤,在遇到这种情况时就要使用Spring 的AOP了SpringBoot 开发AOP新建一个包命为aspect,在包中新建类记得为该类加上@Aspect @Component 注解(下图来自慕课)若希望避免多次重复书写注解的属性内容,可以使用注解 ...原创 2019-10-29 23:26:26 · 207 阅读 · 0 评论 -
MySQL(Linux)编码问题——网站刚刚上线就被光速打脸
MySQL(Linux)编码问题——刚刚上线就被光速打脸MySql默认编码问题总结了一下,大致是这样的修改数据库配置在URL上加载参数MySql默认编码问题说到这里真的想哭,改了无数bug,眼睁睁看着完善起来的系统,突然跳出来中文乱码,急的到处找资料,各种测试代码,他在本地就是跑的那么流畅,突然想到会不会是因为本地与linux不同,mysql的问题,参考了很多博文,如下几篇linux修改m...原创 2020-01-16 21:08:54 · 173 阅读 · 0 评论 -
Java 连接数据库总是报错
mysql账号密码是正确的,但是一直报账号密码错误。报错信息:java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connect...原创 2020-01-13 13:45:18 · 338 阅读 · 0 评论 -
mysql清空表后id重1开始
通过“truncate table 表名”方式重置清空id,让id从1开始自动递增,原创 2019-09-21 11:20:29 · 2679 阅读 · 0 评论 -
MySQL服务使用cmd启动与停止服务
MySQL未设置自动启动,在使用时需要手动打开服务,方法如下mysql服务的启动:以管理员的身份运行cmd命令窗口,输入命名 net start mysql提示:必须使用管理员身份运行cmd如果不是以管理员的身份运行cmd,会提示如下错误mysql服务的停止:以管理员的身份运行cmd命令窗口,输入命名 net stop mysql...原创 2019-05-09 20:29:33 · 6035 阅读 · 0 评论 -
mysql给root开启远程访问权限
https://www.cnblogs.com/goxcheer/p/8797377.html感谢博主转载 2019-11-07 01:13:26 · 306 阅读 · 0 评论 -
Redis新手的坑,无法连接、缺少类、没有密码、序列化
阿西吧,自己太菜了,用SpringBoot调用Redis缓存的时候,出了各种问题,记录一下,大家别学我本文有自己的经验,也有从其他博客整理来的零零散散的经验。1、安装Redis安装redis,一般有很多方法,比如yun安装,npm安装,直接压缩包安装,docker运行等等等等先说yum里面的yum安装比较简单首先安装epel源yum install -y epel-release...原创 2020-03-26 00:11:01 · 1372 阅读 · 0 评论 -
积攒数月!Java全面的脑图知识点!
制作不易,求求各位点个赞+收藏吧,心情好的爸爸们还望GitHub点个星星,求求你们了GitHub仓库地址https://github.com/Jirath-Liu/JavaKnowledgeMind原创 2020-05-30 10:36:40 · 487 阅读 · 0 评论 -
SpringBoot使用Redis的一些注意(避坑指南?
有其他建议的也可以私信或之间留言,我会加入文章中共享Redis In SpringBoot 避坑1、配置文件与cachenameRedis在SpringBoot中的配置文件一定要记得写,配置文件中配置了cache,注解才能用这个cachename2、序列化返回的对象如果不是基础的类型,包括String等等Java的类型需要让你的类支持序列化,加入此接口Serializable...原创 2020-05-07 11:01:47 · 301 阅读 · 0 评论 -
Java集合类图解(全面,舒适)
网上搜不来Java集合类的框架图,自己做了一个工具:idea方法:将Java源码用idea打开,使用diagram查看类,拖动更多的类进入uml图中,idea会自动连接依赖...原创 2020-05-03 00:32:30 · 756 阅读 · 1 评论 -
Java 8 的 Lambda 表达式和流处理
Java 8 的 Lambda 表达式和流处理写的很nice,记录一下https://www.ibm.com/developerworks/cn/java/j-understanding-functional-programming-3/index.html原创 2020-04-06 22:14:32 · 205 阅读 · 0 评论 -
轻轻松松了解Java的初始化方法(含对象数组的小问题)
Java初始化,对象数组初始化,指定初始化,显示静态初始化原创 2020-03-25 18:03:47 · 434 阅读 · 0 评论 -
让你第一次认识到Java的内存管理
Java内存的管理方法,JVM的妙处,finalize()方法原创 2020-03-22 22:35:20 · 228 阅读 · 0 评论 -
Java构造方法的姿势与易错点
关于类和对象的基本理念,就不再赘述(如果你学习过还忘了,就是一种特殊的本领了),没有学习过的可以去搜索一下OOP或者类和对象,百科的知识就已经足够了,不必重复。这里的讲解由浅入深,我会在分块前做好标注,区分初学者与复习者所需要了解的部分,有基础的可以不再看(基础部分)标注的部分随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主要原因之一。——《Java编程思想》这是一...原创 2020-03-20 21:25:19 · 459 阅读 · 0 评论 -
《Java基础复习》-控制执行流程
最近任务太多了,肝哭我了,boom参考书目:Thinking in Java《Java基础复习》-控制执行流程Java使用了C的所有流程控制语句涉及关键字:if-else、while、do-while、for、return、break一、true和false所以条件语句都利用条件表达式的真假来决定执行路径Java不允许将数字作为布尔值(某些语言中,真是非零,假是0),原因是因...原创 2020-03-17 00:24:33 · 248 阅读 · 0 评论 -
Java基础部分脑图
这两天事情多,Java摸鱼了,就抽空写了一个脑图聊以自慰,表示自己还是学了的下面这些全会了,恭喜你,Java的基础你可以毕业了原创 2020-03-15 15:00:56 · 209 阅读 · 0 评论 -
《Java基础复习》—规范与基础
参考书目《Java 编程思想》所以大家放心食用一、注释规范以及API文档1.注释1.1三种注释方法//注释内容 单行注释/* 注释内容 */ 多行注释/**注释内容*/ 文档注释1.2WHY注释对代码进行说明,增强可读性,方便自己,方便别人调试代码1.3注释注意事项① 单行注释和多行注释,注释了的内容不参与编译。换句话说,编译以后生成的.class结尾的字节码...原创 2020-03-14 01:01:46 · 521 阅读 · 0 评论 -
妈妈再也不怕我弄混前后缀的递增和递减啦
做编程的,基本上都应该知道自动递增和递减,也就是++和–自增、自减 – ++ ,注意该运算符的位置也会影响结果位置不不同,也有不同的意义这两个操作符各有两种使用方式,通常被称为“前缀式”和“后缀式”。“前缀递增”表示“++”操作符位于变量或表达式的前面;而“后缀递增”表示“++”操作符位于变量或表达式的后面。类似的,“前缀递减”意味着“–”操作符位于变量或表达式的前面;而“后缀递减”意味...原创 2020-03-13 18:37:57 · 322 阅读 · 0 评论 -
《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习!所记知识会发布在CSDN与博客网站jirath.cn《Java基础复习》—常识与入门一、Java语言的知识体系图分为三部分编程语言核心结构:变量、基本语法、分支、循环、数组Java面向对象的核心逻辑:OOP(面向对象编程)、封装、继承、多态、接口。。。。。。JavaSE高级应用程序:异常、集合、线程、IO、反射、网络二、常识与概...原创 2020-03-12 19:31:02 · 663 阅读 · 0 评论 -
CentOS使用yum安装jdk
yum是Linux的一个包管理器使用yum安装Java的jdk,需要用到两个命令yum search ***** 搜索相关资源yum install ***** 安装下载指定的资源首先搜索相关就java的项目或者jdk:yum searchyum search java我们将得到大量结果选择java环境安装yum install注意这里需要选择devel版本的使用...原创 2020-02-15 12:05:50 · 202 阅读 · 0 评论