- 博客(119)
- 资源 (3)
- 收藏
- 关注
原创 并发编程之锁
什么是Lock锁是一种工具,用于控制对共享资源的访问。Lock 和 synchronized 作用相同,都可以实现线程安全的目的。Lock 不会像 synchronized 一样在异常时自动释放锁。Lock 锁的是锁对象本身synchronized 的不足之处效率低:锁的释放情况少、试图获得锁时不能设定超时、不能中断一个正在试图获得锁的线程不够灵活(读写锁更灵活):加锁和释...
2022-11-03 00:20:00
157
原创 并发编程之 ThreadLocal
ThreadLocal 是 Java 里一种特殊变量,它是一个线程级别变量,每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞态条件被彻底消除了,在并发模式下是绝对安全的变量。
2022-11-01 16:15:05
377
原创 《计算机网络-自顶向下方法》学习笔记
TCP 和 UDPTCP 服务TCP 服务模型包括面向连接和可靠数据传输服务。当某个应用程序调用TCP作为其运输服务协议时,该应用程序就能获得来自TCP 的这两种服务。面向连接的服务:在应用层数据报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让它们为大量分组的到来做好准备。在握手阶段后,一个 TCP 连接 就在两个进程的套接字之间建立...
2022-09-04 22:44:00
117
原创 RocketMQ 一站式安装指南
由于笔者在安装 Rocket 过程中,遇到很多棘手的问题,在上面耗了很多时间,为了避免大家踩坑也为了做个记录,所以写这篇文章记录以下。
2022-09-02 13:58:59
2656
1
原创 声明式HTTP客户端-Feign 使用入门详解
OpenFeign (以下统一简称为 Feign) 是 Netflix 开源的声明式 HTTP 客户端,集成了 Ribbon 的负载均衡、轮询算法和 RestTemplate 的 HTTP 调用等特性,并对其进行封装,使用者只需要在此基础上,定义一个接口,并在接口上标注一个,便可以实现 HTTP 远程调用,上面的声明式 HTTP如何理解,可以理解为 只需要声明一个接口,Feign 就会通过你定义的接口,自动给你构造请求的目标地址并请求。...
2022-08-31 08:30:00
442
1
原创 《计算机网络-自顶向下方法》学习笔记一
TCP 和 UDPTCP 服务TCP 服务模型包括面向连接和可靠数据传输服务。当某个应用程序调用TCP作为其运输服务协议时,该应用程序就能获得来自TCP 的这两种服务。面向连接的服务:在应用层数据报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让它们为大量分组的到来做好准备。在握手阶段后,一个 TCP 连接 就在两个进程的套接字之间建立了。这种链接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接。
2022-05-03 18:06:42
1728
原创 死锁学习笔记
死锁定义:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种堵塞的现象。在没有外力的作用下,它们将无法推进下去,此时系统便处于死锁状态或者产生了死锁。举个例子,当线程 A 持有独占锁 a ,并尝试去获取独占锁 b 的同时,线程 B 持有独占锁 b ,并尝试获取独占锁 a 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁。产生原因:竞争资源 - 共享资源数量不满足各个进程的需求进程调度顺序不当必要条件:(只有全部满足这四种必要条件才会导致死锁,缺一不可
2022-03-21 09:39:56
179
原创 Java 设计模式之单例模式
单例模式也算是面试中的高频面试点,本文简要介绍了单例模式中的两大经典案例饿汉模式和懒汉模式,并提出了在多线程情况下,如何防止在多线程场景下,始终只拿到一个实例。
2022-03-16 17:05:48
790
原创 并发与多线程之线程安全篇
并发与多线程之线程安全篇 并发是指某个时间段内,多个任务交替执行的能力。 CPU 把可执行时间均匀地分成若干份,每个进程执行一段时间后,记录当前的工作状态,释放当前的执行资源并进入等待状态,让其他进程抢占 CPU 资源。并行是指同时处理多任务的能力。目前, CPU 已经发展为多核,可以同时执行多个互不依赖的指令及执行块。
2022-01-04 10:10:37
379
原创 深入理解Java虚拟机之类加载机制篇
概述 虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然增加了类加载时系统额外的开销,但是能给 Java 应用程序提供高度的灵活性,Java 的动态扩展优势就依赖于运行期动态加载和动态连接来实现的。例如用户可以在编写一个面向接口的应用程序时,可以等到运行时再指定具体的实现类,还可以通过 Java 预定义的和
2021-10-24 21:04:58
2709
原创 深入理解Java虚拟机之垃圾回收篇
Java 会对内存进行自动分配与回收管理,使上层业务更加安全,方便地使用内存实现程序逻辑。在不同的 JVM 实现及不同的回收机制中,堆内存的划分方式是不一样的。
2021-10-18 08:30:00
171
原创 深入理解Java虚拟机之对象实例化篇
Java是面向对象的`静态强类型`语言,我们一般先声明并创建对象,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象,如`Object obj = new Object()`,obj 即`引用变量`,也叫`实例成员变量`。下面通过简单地从执行步骤的角度来分析
2021-10-13 10:00:25
218
原创 深入理解Java虚拟机之JVM内存布局篇
内存布局 JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。如下图所示:Heap 堆区 Heap堆区是Java发生OOM(Out Of Memory)故障的地方,堆中存储着我们平时创建的实例对象,最终这些不再使用的对象会被垃圾收集器回收...
2021-10-12 08:36:00
52
原创 走进Java内存布局之JVM入门篇
JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。
2021-10-12 08:30:00
158
原创 初探计算机网络之常见的网络攻击方式
在当今的互联网当中,总是存在着我们看不见也摸不着的一些 “互联网地下工作者”,也就是黑客。黑客的攻击方式分为很多种,有非破坏性攻击和破坏性攻击。非破坏性攻击一般是为了扰乱系统的执行,使之暂时失去正常正常对外界提供服务的能力,比如臭名昭著的DDoS攻击等。而破坏性攻击主要会造成两种结果:系统数据受损或者信息被窃取,好比如CSRF攻击等。黑客使用的攻击大致可分为三种,植入病毒式、洪水式(大幅度攻击)、系统漏洞式。 他们攻击的特点主要集中于:分布式、高流量、深度匿名。就好比如DDoS攻击,利用的就是国外大
2021-10-08 08:30:44
378
原创 初探计算机网络之HTTPS请求
HTTPS自诞生以来,我们总是对它充满着很多的疑问,HTTPS到底是啥?HTTPS多出来的`S`指的是什么?HTTPS安全可靠吗?访问一个HTTPS的网站的流程等等,带着这些疑问,我们一起来揭开HTTPS的面纱。
2021-10-07 08:30:00
164
原创 Kotlin基础入门之必知必会,查漏补缺来一手~~~
数据类型Kotlin跟 java 相同,基本数据类型有八种 boolean,char,int,short,long,float,double,byte类型位宽最小值最大值Short16-3276832767Int32(-2^31)(2^31-1)Long64(-2^63)(2^63-1)Byte8-128127Float...
2021-10-06 13:24:00
32
原创 初探计算机网络之TCP/IP网络协议
网络协议 在计算机诞生以来,从最原始的单机模式到现在多台计算机协同工作,形成计算机网络,从前很难想象的信息共享、多机合作、大规模计算在今天也早已成了现实。在早期,计算机网络需要解决的痛点,就是怎样才能无障碍地发送和接受数据。而发送和接受数据的过程中,需要相关的协议来支撑,下面介绍下平时接触最多的协议TCP/IP协议。TCP和IP TCP(Transmission Control Protocol)的中文名称为传输控制协议,IP(Internet Protocol)的中文名称为互联网互联协议,除此之
2021-10-06 08:00:00
392
原创 初探计算机网络之CPU和内存
CPU CPU是一块超大规模的集成电路板,是计算机的核心部件,承载着计算机的主要运算和控制功能,是计算机的最终解释模块和执行模块。总之,用一句话概括就是,CPU是由控制器和运算器组成的,而内部寄存器使这两者协作更为高效。CPU的内部结构如下图所示。下面对图中的三大组成部分进行简单的讲解。控制器 控制器是由控制单元、指令译码器、指令寄存器三大部分构成。其中控制单元是CPU的核心,由时序控制和指令控制等组成;指令译码器是在控制单元的协调下完成指令读取、分析并交由运算器执行等操作;指令寄存器是存储指
2021-10-04 08:00:00
390
原创 教你一招让Idea搭配上Xshell连接远程服务器端数据库(内网地址连接),再也不用在命令行输入繁琐的指令操作~~~
因为公司服务器端数据库提供的是内网地址,远程连接无法直接通过内网地址进行连接,只能在命令行输入mycli -h + 内网地址命令进行访问。现在提供一种简易的方式去连接服务器端的数据库内网地址打开Xshell客户端,连接上服务器。...
2021-10-03 08:30:00
1878
1
原创 Kotlin零基础入门教程,查漏补缺来一手~~~
由于楼主主要是Java开发,kotlin是因为项目中部分模块有用到,为了方便开发且提高开发效率,研究了下kotlin的语法,发现kotlin跟java很像,而且基本上掌握了基础,kotlin使用起来就朗朗上手了,话不多说,才艺展示。(注:本篇只是针对基础入门篇,未涉及到Kotlin高级特性,如协程等等)
2021-10-03 08:30:00
1314
转载 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
333
转载 教你用一行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
434
原创 SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了
1、前言上班的时候,无聊的时候,偶尔跑去百度看下热搜,所以就萌生出这种想法,通过邮件推送的方式实现效果,首先找到百度热搜的页面 热搜,话不多说,直接开干。2、环境准备因为是个SpringBoot工程,所以怎么搭建就不详细地讲解了,不懂的同学麻烦自行百度,直接跳到依赖文件,需要的依赖分别是pom.xml<dependencies> <dependency> ...
2021-08-15 11:11:00
83
原创 SpringBoot 简易实现热搜邮件推送
1、实现思路:首先找到百度热搜的页面,按F12打开开发者工具,刷新下页面,看能不能在返回的请求中得到我们想要的信息。很好,什么都没有。2、环境准备因为是个SpringBoot工程,所以怎么搭建就不详细地讲解了,不懂的同学麻烦自行百度,直接跳到依赖文件,需要的依赖分别是pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <arti
2021-08-15 10:40:24
862
原创 踩坑系列《十四》解决Disconnected from the target VM, address: ‘127.0.0.1:12345‘, transport: ‘socket‘
转圈结束后,直接断开连接。。。刚开始出现这问题的时候,本来以为只是简单的端口冲突,根据yml的端口,查看并未发现有启动端口,又试着kill掉所有的Java进程,还是无法解决。网上查找答案,说少了SpringBoot的web依赖下,检查了下并没有缺少。后来询问了开发同事,才把问题找到,原来上线的时候,把bootstrap.yml的环境换成生产服也就是prod,本地开发的话,无法连接上生产服的数据库等其他地址,就会连接不上,至于没有其他日志,是因为logback-spring日志文件中,日志什么的都输出.
2021-07-27 11:49:48
5900
原创 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
222
原创 踩坑系列《十三》解决时间戳long转换int溢出(即转换值为负数)
最近业务需求,需要使用到 int 类型的时间戳,所以在使用时间戳的时候,由于java自带的 System.currentTimeMillis() 返回的类型是long,强行转换一波的话,是会出现数据溢出的情况。看例子long longTimeStamp = System.currentTimeMillis();int intTimeStamp = (int) (longTimeStamp);结果展示-1890658190这是因为int变量的存储空间为2个字节,而long的存储空间为4个字节,
2021-07-10 15:57:19
4348
原创 关于广告投放需要懂的几个关键词(DAU,DNU等等)
DAU:单日活跃用户DNU:单日新增用户CPM:按千次展现计费(千次展现价格)ECPM:每千次展示可以获得的广告收入CPM是对广告主说的词,你要花多少钱,买一千次广告展示机会;eCPM是对媒体说的词,你每展示一千次广告,能赚多少钱!CPA:每次行动成本(按用户行为作为指标来计费的广告)一般指消费量/转化量。计算:CPA=广告花费金额/转化数量ARPU:每用户平均收入LTV:生命周期总价值ROAS:(目标广告支出回报率),用于衡量每组广告花费能带来多少收入。计算:ROAS=总收入/广告花费1
2021-07-02 13:16:38
2703
原创 轻松实现在后端设置Cookie,并在前端取出对应的Cookie的方法
现在一般Spring或者SpringBoot的话都已经集成Cookie的获取方法,想要更简单便捷的话可以自行去了解下,这边主要是分享下手动编写获取的Cookie的工具类话不多说,直接上代码后端代码public class CookieUtil { // 获取Cookie的方法 public static String getCookie(HttpServletRequest request, String cookieid) { Cookie[] cookies = request.g
2021-06-20 22:44:19
13460
原创 解决工程的端口冲突问题
类似于下图这种情况输入下行命令,找出对应的IP地址netstat -ano | findstr “端口号”然后再按下面的命令把进程kil掉,一般都是强行kill掉taskkill /pid pid号(强制的话 taskkill -f /pid pid号)
2021-06-20 22:21:32
172
原创 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
96
原创 借助Cookie实现是否第一次登陆/显示上次登陆时间
Cookie实现是否第一次登陆/显示上次登陆时间最近刚好看到Cookie这方面知识,对Servlet部分知识已经生疏,重新翻出已经遗弃角落的《JavaWeb开发实战经典》,重新温习了Cookie知识,并总结一下Cookie知识,以供大家借鉴。Cookie1.概念:客户端会话技术,将数据保存到客户端2.使用方法1、创建Cookie对象new Cookie(String name,Str...
2021-03-21 12:52:00
40
原创 数据库建表权限 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的用户...
2021-03-21 12:36:00
588
原创 a标签的href属性拼接问题
<a id="nickName" href="/community/user/userinfo?nickName="></a>如上所示,无法直接在 html里面的 a 标签的href属性传递参数时,只需要在 JS 中获取对应 a 标签的id,再通过 attr 方法抓到 href,进行字符串拼接即可var href = $('nickName').attr('href'...
2021-03-21 12:35:00
57
Typora-Theme.zip
2021-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人