
学习
文章平均质量分 67
追风少年潇歌
越努力,越幸运
展开
-
并发编程之 ThreadLocal
ThreadLocal 是 Java 里一种特殊变量,它是一个线程级别变量,每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞态条件被彻底消除了,在并发模式下是绝对安全的变量。原创 2022-11-01 16:15:05 · 393 阅读 · 1 评论 -
并发编程之线程池
通过线程池这种方式,创建固定数量的线程来执行任务,就能够使线程复用起来,加快响应速度,并且还合理利用CPU和内存,还统一管理。原创 2022-10-24 23:17:19 · 389 阅读 · 0 评论 -
RocketMQ 一站式安装指南
由于笔者在安装 Rocket 过程中,遇到很多棘手的问题,在上面耗了很多时间,为了避免大家踩坑也为了做个记录,所以写这篇文章记录以下。原创 2022-09-02 13:58:59 · 2671 阅读 · 0 评论 -
声明式HTTP客户端-Feign 使用入门详解
OpenFeign (以下统一简称为 Feign) 是 Netflix 开源的声明式 HTTP 客户端,集成了 Ribbon 的负载均衡、轮询算法和 RestTemplate 的 HTTP 调用等特性,并对其进行封装,使用者只需要在此基础上,定义一个接口,并在接口上标注一个,便可以实现 HTTP 远程调用,上面的声明式 HTTP如何理解,可以理解为 只需要声明一个接口,Feign 就会通过你定义的接口,自动给你构造请求的目标地址并请求。...原创 2022-08-31 08:30:00 · 465 阅读 · 1 评论 -
Java并发编程之synchronized 与 volatile
本文简单的介绍下synchronized和volatile两大关键字的区别原创 2022-08-22 08:30:00 · 360 阅读 · 0 评论 -
fail-fast 机制
fail-fast 机制是集合里比较常见的错误检测机制,通常出现在遍历集合元素的过程中。原创 2022-08-19 08:30:00 · 538 阅读 · 0 评论 -
HashCode 和 equals 学习笔记
hashCode 和 equals 用来标识对象,两个方法协同工作可以用来判断两个对象是否相等。原创 2022-08-18 07:52:03 · 215 阅读 · 0 评论 -
《计算机网络-自顶向下方法》学习笔记一
TCP 和 UDPTCP 服务TCP 服务模型包括面向连接和可靠数据传输服务。当某个应用程序调用TCP作为其运输服务协议时,该应用程序就能获得来自TCP 的这两种服务。面向连接的服务:在应用层数据报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让它们为大量分组的到来做好准备。在握手阶段后,一个 TCP 连接 就在两个进程的套接字之间建立了。这种链接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接。原创 2022-05-03 18:06:42 · 1736 阅读 · 0 评论 -
死锁学习笔记
死锁定义:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种堵塞的现象。在没有外力的作用下,它们将无法推进下去,此时系统便处于死锁状态或者产生了死锁。举个例子,当线程 A 持有独占锁 a ,并尝试去获取独占锁 b 的同时,线程 B 持有独占锁 b ,并尝试获取独占锁 a 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁。产生原因:竞争资源 - 共享资源数量不满足各个进程的需求进程调度顺序不当必要条件:(只有全部满足这四种必要条件才会导致死锁,缺一不可原创 2022-03-21 09:39:56 · 187 阅读 · 0 评论 -
Java 设计模式之单例模式
单例模式也算是面试中的高频面试点,本文简要介绍了单例模式中的两大经典案例饿汉模式和懒汉模式,并提出了在多线程情况下,如何防止在多线程场景下,始终只拿到一个实例。原创 2022-03-16 17:05:48 · 797 阅读 · 0 评论 -
并发与多线程之线程安全篇
并发与多线程之线程安全篇 并发是指某个时间段内,多个任务交替执行的能力。 CPU 把可执行时间均匀地分成若干份,每个进程执行一段时间后,记录当前的工作状态,释放当前的执行资源并进入等待状态,让其他进程抢占 CPU 资源。并行是指同时处理多任务的能力。目前, CPU 已经发展为多核,可以同时执行多个互不依赖的指令及执行块。原创 2022-01-04 10:10:37 · 394 阅读 · 0 评论 -
深入理解Java虚拟机之类加载机制篇
概述 虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然增加了类加载时系统额外的开销,但是能给 Java 应用程序提供高度的灵活性,Java 的动态扩展优势就依赖于运行期动态加载和动态连接来实现的。例如用户可以在编写一个面向接口的应用程序时,可以等到运行时再指定具体的实现类,还可以通过 Java 预定义的和原创 2021-10-24 21:04:58 · 2714 阅读 · 0 评论 -
深入理解Java虚拟机之垃圾回收篇
Java 会对内存进行自动分配与回收管理,使上层业务更加安全,方便地使用内存实现程序逻辑。在不同的 JVM 实现及不同的回收机制中,堆内存的划分方式是不一样的。原创 2021-10-18 08:30:00 · 180 阅读 · 0 评论 -
踩坑系列《一》数据库建表权限 CREATE command denied to user for table
今天在表中用Navicat连接服务器上的mysql账号进行建表,报了个这样类似的错, CREATE command denied to user for table是数据库权限设置的问题,所以无法进行创建。只需给对应账户,赋予所有的权限即可:mysql>grant all privileges on data.* to work; //data是数据库,work是操纵data的用户m...原创 2020-05-04 16:20:51 · 26969 阅读 · 0 评论 -
SQL语句的执行顺序
select item1,Count(*) as total from table where item = {#item} group by item1 order by total desc limit 5;from > where > group by > select >order by>limit先 from 判断查询哪张表,再根据 where 查询字段条件,进行 group by 分组,进行select 汇总字段,对结果 order by 排序,最后进行 lim原创 2021-03-23 09:12:04 · 101 阅读 · 0 评论 -
简单介绍session,cookie,token以及区别
Cookie简介①.是由服务器发给客户端的特殊信息,以文本的形式存放在客户端②.客户端再次请求的时候,会把Cookie回发给服务器③.服务器接收到后,会解析Cookie生成与客户端相对应的内容Cookie的设置与发送过程分以下四步:(cookie的实现方式)客户端发送一个http请求到服务端服务端发送一个http响应到客户端,其中包括了Set-Cookie的头部客户端再发送一个http请求到服务器端,包括了cookie头部服务器端发送一个http响应到客户端Session简介①.服务器端原创 2021-03-04 22:41:39 · 270 阅读 · 1 评论 -
浏览器输入URL之后,HTTP请求返回的完整过程
1、输入url,按下回车时,先做一个redirect(重定向),因为浏览器可能记录本机的地址已经永久跳转成新的地址,所以一开始浏览器就先要判断下需不需要重定向,以及重定向到哪里;2、然后第二步就是看App cache(应用缓存),因为请求的资源已经缓存过了,要先去看缓存,看是否有缓存,有直接返回,如果没有缓存,就去服务器请求资源 ;3、因为输入的是域名,域名对应成IP地址之后,才能真正的访问到服务器,所以这里要先去查找域名对应的IP地址,所以就叫DNS解析;4、然后有了IP之后,我们就要去创建TCP连原创 2021-03-04 20:00:52 · 680 阅读 · 1 评论 -
并编之路《一》入门多线程的创建方式及常见误区
一、线程创建方式实现多线程有两种方式。第一种是通过实现Runnable接口的run方法,并把Runnable实例传给父类Thread;public class RunnableWay implements Runnable{ @Override public void run() { System.out.println("这是实现Runnable接口的方式"); } public static void main(String[] args) {原创 2021-03-13 17:05:45 · 142 阅读 · 0 评论 -
通用脱敏工具类和判断URL
通用脱敏工具类public class DesensitizationUtil { private static final int SIZE = 6; private static final String SYMBOL = "*"; /** * 通用脱敏方法 * @param value * @return */ public static String commonDisplay(String value) {原创 2021-03-10 15:49:17 · 377 阅读 · 0 评论 -
项目中用到的随机名,文件扩展名,循环创建目录
都是些简单的方法,记录下随机名/** * 生成随机文件名,当前年月日小时分钟秒钟 +五位随机数 * * @return */public class RandomName { private static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); private static final Random r = new Random(); public static vo原创 2021-02-06 16:38:06 · 149 阅读 · 0 评论 -
获取classpath(src/main/resources)的绝对路径
先贴上代码private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();原因:方法是通过线程去执行的,因此我们可以通过线程去逆推到类加载器,从而在这个类加载器得到资源的路径。...原创 2021-02-06 15:48:19 · 1159 阅读 · 0 评论 -
centos7有关于防火墙的命令
查看防火墙状态firewall-cmd --state开启防火墙systemctl start firewalld.service 关闭防火墙systemctl stop firewalld.service原创 2021-03-06 23:36:56 · 124 阅读 · 0 评论 -
Eclipse常用快捷键
常用快捷键注释/* */ 类型 :ctrl + shift + / (一定要选中才可以);取消掉注释:ctrl + shift + // 类型:ctrl + / ;取消掉也是: ctrl + /快速编辑在当前行上插一行:ctrl + shift + enter ;在当前行下插一行:shift + enter删除当前行:ctrl + d ;移动一行或多行:alt + ↑/↓箭头自动补齐...原创 2020-03-24 17:02:12 · 199 阅读 · 0 评论 -
Java 集合基础入门,看这篇就够了
集合1.父接口:Collectionjava.util.Collection 是进行单对象保存的最大父接口,即每次利用 Collection 接口都只能保存一个对象信息。定义如下:public interface Collection<E> extends Iterable<E> {}Collection 接口中使用了泛型,可以保证集合中操作数据类型的统一,同时...原创 2019-12-12 09:27:55 · 1009 阅读 · 0 评论 -
深入理解Java虚拟机之对象实例化篇
Java是面向对象的`静态强类型`语言,我们一般先声明并创建对象,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象,如`Object obj = new Object()`,obj 即`引用变量`,也叫`实例成员变量`。下面通过简单地从执行步骤的角度来分析原创 2021-10-13 10:00:25 · 227 阅读 · 0 评论 -
走进Java内存布局之JVM入门篇
JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。原创 2021-10-12 08:30:00 · 166 阅读 · 0 评论 -
初探计算机网络之常见的网络攻击方式
在当今的互联网当中,总是存在着我们看不见也摸不着的一些 “互联网地下工作者”,也就是黑客。黑客的攻击方式分为很多种,有非破坏性攻击和破坏性攻击。非破坏性攻击一般是为了扰乱系统的执行,使之暂时失去正常正常对外界提供服务的能力,比如臭名昭著的DDoS攻击等。而破坏性攻击主要会造成两种结果:系统数据受损或者信息被窃取,好比如CSRF攻击等。黑客使用的攻击大致可分为三种,植入病毒式、洪水式(大幅度攻击)、系统漏洞式。 他们攻击的特点主要集中于:分布式、高流量、深度匿名。就好比如DDoS攻击,利用的就是国外大原创 2021-10-08 08:30:44 · 386 阅读 · 0 评论 -
初探计算机网络之HTTPS请求
HTTPS自诞生以来,我们总是对它充满着很多的疑问,HTTPS到底是啥?HTTPS多出来的`S`指的是什么?HTTPS安全可靠吗?访问一个HTTPS的网站的流程等等,带着这些疑问,我们一起来揭开HTTPS的面纱。原创 2021-10-07 08:30:00 · 171 阅读 · 0 评论 -
初探计算机网络之TCP/IP网络协议
网络协议 在计算机诞生以来,从最原始的单机模式到现在多台计算机协同工作,形成计算机网络,从前很难想象的信息共享、多机合作、大规模计算在今天也早已成了现实。在早期,计算机网络需要解决的痛点,就是怎样才能无障碍地发送和接受数据。而发送和接受数据的过程中,需要相关的协议来支撑,下面介绍下平时接触最多的协议TCP/IP协议。TCP和IP TCP(Transmission Control Protocol)的中文名称为传输控制协议,IP(Internet Protocol)的中文名称为互联网互联协议,除此之原创 2021-10-06 08:00:00 · 400 阅读 · 0 评论 -
初探计算机网络之CPU和内存
CPU CPU是一块超大规模的集成电路板,是计算机的核心部件,承载着计算机的主要运算和控制功能,是计算机的最终解释模块和执行模块。总之,用一句话概括就是,CPU是由控制器和运算器组成的,而内部寄存器使这两者协作更为高效。CPU的内部结构如下图所示。下面对图中的三大组成部分进行简单的讲解。控制器 控制器是由控制单元、指令译码器、指令寄存器三大部分构成。其中控制单元是CPU的核心,由时序控制和指令控制等组成;指令译码器是在控制单元的协调下完成指令读取、分析并交由运算器执行等操作;指令寄存器是存储指原创 2021-10-04 08:00:00 · 400 阅读 · 0 评论 -
教你一招让Idea搭配上Xshell连接远程服务器端数据库(内网地址连接),再也不用在命令行输入繁琐的指令操作~~~
因为公司服务器端数据库提供的是内网地址,远程连接无法直接通过内网地址进行连接,只能在命令行输入mycli -h + 内网地址命令进行访问。现在提供一种简易的方式去连接服务器端的数据库内网地址打开Xshell客户端,连接上服务器。...原创 2021-10-03 08:30:00 · 1916 阅读 · 1 评论 -
Kotlin零基础入门教程,查漏补缺来一手~~~
由于楼主主要是Java开发,kotlin是因为项目中部分模块有用到,为了方便开发且提高开发效率,研究了下kotlin的语法,发现kotlin跟java很像,而且基本上掌握了基础,kotlin使用起来就朗朗上手了,话不多说,才艺展示。(注:本篇只是针对基础入门篇,未涉及到Kotlin高级特性,如协程等等)原创 2021-10-03 08:30:00 · 1330 阅读 · 0 评论 -
SpingCloud超级详细的openFeign入门指南
本文章转载于 不才陈某的 openFeign夺命连环9问,这谁受得了?1、前言前面介绍了Spring Cloud 中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。今天介绍一款服务调用的组件:OpenFeign,同样是一款超越先辈(Ribbon、Feign)的狠角色。文章目录如下:2、Feign是什么?Feign也是一个狠角色,Feign旨在使得Java Http客户端变得更容易。Feign集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用转载 2021-09-23 23:06:23 · 344 阅读 · 0 评论 -
教你用一行Java代码也能轻松实现字符串的倒序
使用递归的方式,用1行代码实现字符串逆序。代码如下:public class StrReverse { public static void main(String[] args) { String str = "Hello World"; System.out.println(reverseStr(str)); // 结果:dlroW olleH } private static String reverseStr(String st转载 2021-08-23 15:53:19 · 446 阅读 · 0 评论 -
SpringBoot 简易实现热搜邮件推送
1、实现思路:首先找到百度热搜的页面,按F12打开开发者工具,刷新下页面,看能不能在返回的请求中得到我们想要的信息。很好,什么都没有。2、环境准备因为是个SpringBoot工程,所以怎么搭建就不详细地讲解了,不懂的同学麻烦自行百度,直接跳到依赖文件,需要的依赖分别是pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <arti原创 2021-08-15 10:40:24 · 883 阅读 · 0 评论 -
idea2021版本更新git远程仓库地址
更新git远程仓库原创 2021-07-16 14:15:23 · 1030 阅读 · 0 评论 -
jdk8 Stream的操作分类
随手记录下,方便以后查看(Stream的中间操作和结束操作图如下)List<String> names = Arrays.asList("hello", "world");List<String> newNames = names.stream() .filter(it -> it.equals("hello")) .map(it -> it.toUpperCase()) .collect(Collectors.toLi原创 2021-07-10 22:49:59 · 232 阅读 · 0 评论