- 博客(310)
- 资源 (1)
- 收藏
- 关注
原创 同步、异步、阻塞、非阻塞的关系
1、同步与异步:针对调用方而言。调用方是否需要等待返回调用结果。异步不需要等待,可以采用状态通知、回调函数的方式获取结果,以read文件为例同步方式读取文件:read(filename),直接读取文件,需要等待read方法执行完才能继续运行后续代码异步方式读取文件:read(filename, callbackFunc),不需要等read方法执行完,可以立马运行后续代码,读取文件完成后会执行回调函数的逻辑2、阻塞与非阻塞:针对执行方而言。
2024-09-27 17:12:18 349
原创 一道有深度的面试题:本地悲观锁实现计数器需要加 volatile 吗?
synchronized 关键字遵循监视器锁规则,从而实现了代码临界区内变量的可见性。ReentrantLock 及其它 Lock 接口实现类借助了 volatile 关键字间接地实现了可见性。
2024-03-13 20:18:08 1070
原创 修改IDEA的idea.vmoptions参数导致IDEA无法打开(ReservedCodeCacheSize)
Maven导依赖的时候OOM,因此怀疑是内存太小,尝试修改idea.vmoptions的参数,然后发现IDEA重启后打不开了,卸载重装后也无法打开。。。实际上如果导包爆出OOM的话应该调整下图参数,不过这都是后话了。
2023-08-09 21:32:51 2673 1
原创 Maven编译显示无法访问xxxx(cannot access xxx zip END header not found)
删除Maven仓库即可。
2023-08-06 04:56:32 740
原创 【区块链杂谈】区块链的前世今生(今生)
在前面,我们回顾了区块链技术自诞生到野蛮生长的三个阶段,自某些不可抗因素主动干预之后,整个市场因为比特币价格的腰斩而萎靡不振,热衷于赚取热钱快钱的投机者逐渐退出,只留下了一片狼藉。在这样的背景下,,投机者的退出意味着留下的都是对区块链技术抱有信心的积极分子,他们推动着区块链技术继续向前,让区块链技术成为现在的样子。
2023-04-08 00:22:22 1609 1
原创 【区块链杂谈】区块链的前世今生(前世)
相信说起金融危机,你我都会谈虎色变。最近的一次世界级金融危机就在 2008 年,这次危机让很多先行者对现代金融体系逐渐失望。在这样的时代背景下,比特币应运而生。比特币的发明者中本聪敏锐地意识到,大部分的互联网贸易结算都依赖可信任的第三方金融机构处理,尽管在大多数时候这些系统的运转是足够好的。可是一旦遇上极端信任危机,信任关系的失衡就会导致现代金融体系的结构性塌陷。常规的思路几乎失灵,但中本聪却另辟蹊径,提出了一种全新的解决方案,一个自由主义者拯救世界的故事就此拉开帷幕。
2023-04-08 00:04:19 999
原创 【区块链杂谈】一文大话区块链
区块链从哪里来:区块链核心技术的来龙去脉,以及技术发展历史的关键阶段区块链是什么:区块链应该是什么样子的?剖析支撑区块链的底层基础技术,了解区块链技术的本质区块链将往哪里去:区块链技术如何跟其他行业黏合,实现 1+1 大于 2 的增益效果。
2023-04-07 23:49:22 1413
原创 Go语言基础知识学习笔记
关于各类型最大值可以通过获取布尔型:true、false整数类型:uint8、uint16、uint32、uint64、int8、int16、int32、int64浮点型:float32、float64复数类型:complex64、complex128字符串:双引号包裹,采用UTF-8编码,一个汉字需要3个字节编码Go 语言的字符型有以下两种:uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。rune类型,代表一个UTF-8字符。
2023-02-17 17:45:12 861
原创 我的创作纪念日
初心实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流帮助同学们进步收获帮助同学们学习巩固学过的知识当做图库…日常创作应该是一种习惯生活不止编程憧憬Java领域优质创作者用Go做出更多精彩的项目进一步了解深度学习Tips您发布的文章将会展示至 里程碑专区 ,您也可以在 专区 内查看其他创作者的纪念日文章优质的纪念文章将会获得神秘打赏哦...
2022-05-25 12:25:30 319 4
原创 Windows、Linux、Mac安装配置搭建RocketMQ环境
下载RocketMQWindows下载地址:https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zipLinux && MacLinux或Mac可以用命令下载,一般解压放在/usr/local目录下cd /usr/localwget https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zipunzip
2022-04-24 01:53:06 805 4
原创 Windows 关闭指定端口的进程
查看端口占用情况 netstat -ano |findstr “9876”查看相关进程信息tasklist | findstr 11448关闭进程以下命令二选一即可,推荐第一种,指定进程号关闭taskkill /f /t /im “11448”taskkill /f /t /im “java.exe”...
2022-04-23 23:58:40 1223
原创 自定义GitHub的WebHook
背景/介绍如果我们想利用github搭建cicd平台的话需要使用webhook,即网络钩子。它的作用是当发生一些事件的时候会向目标服务器发送一个请求,通知服务器该仓库发生了变更,具体什么粒度我们可以指定,一般push即可搭建简易服务器from flask import Flask, requestapp = Flask(__name__)@app.route("/ping")def hello_world(): return "pong!"@app.route("/rive
2022-04-11 21:43:03 2698
原创 go tool link: fork/exec /usr/local/go/pkg/tool/darwin_amd64/link: no such file or directory
原因从MacOS 12.3 Beta版本开始,Apple不再内置python2且将无法正常安装python2,无论是intel芯片还是Apple芯片的设备都无法安装。原因是/usr/bin/python的软链接无法正常被删除或覆盖。解决办法首先你需要安装一个Python2,下载地址:https://www.python.org/downloads/release/python-2718/方法一:修改link文件将link文件的第一行修改为#!/usr/bin/env pythonsudo vim
2022-03-24 15:40:15 2190 6
原创 Python中heapq堆相关方法
背景在LeetCode中,有很多题目都可以使用优先队列实现,Python中的数据结构是heapq,Python的堆是小顶堆,heap[0]永远是最小的元素,今天总结一下常用方法常用方法添加元素>>> import heapq>>> my_list = []>>> heapq.heappush(my_list,2)>>> my_list[2]删除并返回最小的元素>>> my_list[1, 1,
2022-03-20 20:59:55 997
原创 分布式锁用 Redis 还是 Zookeeper
什么是分布式锁在分布式架构中,Java的锁无法管理多个实例,因此需要有一个类似于统一管理锁的架构模式,即分布式锁。目前比较常见的分布式锁实现方案有以下几种:基于数据库乐观锁,如MySQL(增加字段版本标识version控制实现)基于缓存,如Redis基于Zookeeper、etcd等(ZooKeeper机制规定:同一个目录下只能有一个唯一的文件名,借助ZooKeeper的临时节点实现)例如两个订单服务,对要更新数据库的数据,如果能获取到相应的锁才能进行后续操作。分布式锁的几种实现方式基
2022-03-07 21:44:22 4015 3
原创 Linux硬盘空间爆满后如何清理
背景我远程连接MySQL的时候,报错显示tmp空间没了,我进入Linux去查看查看空间占用情况df -h额,我滴麻麻呀,我一共就40G的空间,占用已经达到100%了,得赶紧清理一下查看大于100兆的文件find / -size +100M |xargs ls -lh 突然想起来了,以前想用服务器做中转站,传了15G左右的视频,然后就删了就好了rm -rf /root/learn/python/*注:du -h --max-depth=1可以查看当前文件夹大小清理日志可以看到有
2022-01-30 15:37:22 2771
原创 SpringBoot 缓存之 @Cacheable 详细介绍
简介缓存介绍Spring 从 3.1 开始就引入了对 Cache 的支持。定义了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术。并支持使用 JCache(JSR-107)注解简化我们的开发。其使用方法和原理都类似于 Spring 对事务管理的支持。Spring Cache 是作用在方法上的,其核心思想是,当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存在缓存中
2021-12-01 16:24:11 2901
原创 ZooKeeper学习笔记
为什么会有ZooKeeperhttps://zhuanlan.zhihu.com/p/69114539?utm_source=wechat_sessionZooKeeper架构https://blog.csdn.net/qq_43161674/article/details/106380609ZooKeeper命令服务端命令操作zkServer.sh start启动服务器zkServer.sh stop关闭服务器zkServer.sh status查看服务器
2021-11-15 17:11:01 275
原创 知识图谱构建流程与实现技术浅谈
一些预备知识结构化、半结构化与非结构化数据知识图谱的原始数据类型一般来说有三类(也是互联网上的三类原始数据):结构化数据(Structed Data):如关系数据库半结构化数据(Semi-Structed Data):如XML、JSON、百科非结构化数据(UnStructed Data):如图片、音频、视频、文本实体实体可以简单理解为一个对象,它是知识图谱最基本的单位多关系图那什么叫多关系图呢? 学过数据结构的都应该知道什么是图(Graph)。图是由节点(Vertex)和边(Edge)
2021-11-14 20:54:55 7586 1
原创 如何自己设计一个扫码登录
扫码登录场景扫码登录场景想必我们都不陌生——很多PC端的网站都提供了扫码登录的功能,无需在网页上输入任何账号和密码,只需要通过手机上的APP,如微信、淘宝、QQ等等,使用扫描功能,扫描网页上的二维码,确认登录,就可以完成网页端登录。扫码登录QQ邮箱扫码登录分析我们来分析一下,扫码登录,其实涉及到三种角色,需要解决两个问题。三种角色很明显,扫码登录当中涉及到的三种角色:PC端、手机端、服务端。三端相关的设计都要围绕这三端来展开,具体的设计其实就是每一端应该完成什么功能?应该怎么实现?端和端应该
2021-11-07 15:43:00 1944
原创 由浅入深全面解析threadlocal
https://blog.csdn.net/weixin_50280576/article/details/113849450ThreadLocal介绍ThreadLocal 是什么从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。ThreadLocal 有两大作用:
2021-10-28 22:03:06 542
原创 synchronized原理剖析与优化
并发编程的三个问题可见性原子性有序性缓存CPU的运算速度和内存的访问速度相差比较大。这就导致CPU每次操作内存都要耗费很多等待时间。内存的读写速度成为了计算机运行的瓶颈。于是就有了在CPU和主内存之间增加缓存的设计。最靠近CPU的缓存称为L1,然后依次是L2,L3和主内存,CPU缓存模型如图下图所示:CPU Cache分成了三个级别: L1, L2, L3。级别越小越接近CPU,速度也更快,同时也代表着容量越小。1. L1是最接近CPU的,它容量最小,例如32K,速度最快,每个核上都有一个
2021-10-28 15:51:22 1152 1
原创 深入浅出JWT
JWT(JSON WEB TOKEN)的组成https://jwt.io/header(头部)承载两部分信息:声明类型,这里是JWT;声明加密的算法,通常直接使用 HMAC SHA256playload(载荷)就是存放有效信息的地方,这些有效信息包含三个部分:标准中注册的声明;公共的声明;私有的声明;signature(签证信息)对header+.+payload进行base64编码,然后实用签证算法和密钥加密三种认证流程基于session+cookie的认证流程用
2021-09-28 01:29:50 1387
原创 高并发解决方案
导读优秀程序员奋斗目标:实现高并发、高性能、高可用 的“三高”分布式系统衡量高并发常用的一些指标有:响应时间:系统对请求做出的响应时间吞吐量:单位时间内能处理的请求数量QPS:系统每秒能处理多少流量TPS:系统每秒处理多少事务(查询多少数据)并发用户数:同时能承载用户正常使用系统功能的用户数量提升硬件性能CPU 从 32 位提升为 64 位内存从 64GB 提升为 256GB(比如缓存服务器)磁盘从 HDD(Hard Disk Drive)提升为 SSD(固态硬盘(Solid
2021-09-27 00:36:07 664
原创 Java8新特性
笔记地址:https://blog.didispace.com/books/java8-tutorial/ch1.html视频讲解:https://www.bilibili.com/video/BV1T54y1q7W2Lambda与函数式接口接口中有默认方法实现Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。interface Formula { double calculate(int a); default double
2021-09-27 00:34:34 170
原创 Java定时任务解决方案
https://www.bilibili.com/video/BV1WL41147PJ从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较熟悉,毕竟工作中的定时任务也是无处不在的:每天凌晨更新一波数据库,每天9点发一波邮件,每隔10秒钟抢一次火车票。。。至于怎么实现的?很简单啊,操作系
2021-09-26 21:46:09 1262
原创 Ubuntu安装Docker并配置镜像
方法一:从Ubuntu的仓库直接下载安装安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装。$ sudo apt install docker.io$ sudo systemctl start docker$ sudo systemctl enable docker查看是否安装成功$ docker -vDocker version 17.12.1-ce, build 7390fc6方法二:从Docker仓库下载安装:这种安装方式首先要保证U
2021-09-20 22:02:25 2994
原创 windows安装docker环境并配置镜像
安装docker Toolbox点击下载下好安装包之后,一路next到如图所示(我的安装包virtualBox是必须选项,虽然我已经安装过一次),Git如果安装过也可以不安装,kitematic是一个镜像可视化工具,也可以不勾选。启动Docker Quickstart Terminal这里如果之前安装过Git,或者没有走默认路径的安装的话,会弹出没有打开方式,右键:属性->快捷方式,找到目标那一栏,把login -i前的路径替换成你的Git安装路径中bash.exe的路径即可,bash的相对
2021-09-20 21:14:06 1864
原创 组员给我发了个Java程序让我帮他精简一下,改完我把他的代码量增加了1倍...
一个积极的小组员这是前几天面试的一个小组员,难得有这么一个积极的小孩,看到消息就立马去看了存在的问题可能是他刚学习Java的原因,看到他的代码,我…唉,自己收的组员,含着泪也要改原代码public class demo { public static void main(String[] args) { int money = 1000; /*初始资金*/ boolean go_on=false; while (money>0)
2021-09-20 15:43:36 276
原创 沸点工作室Java组介绍/后端介绍
后端与Java的不解之缘Java可以理解为一门编程语言,而后端和Java常常挂钩,因为后端开发主要以Java为主(现在有转型的趋势),所以有人会把Java和后端搞混,但其实不然,Java只是一个开发工具,而后端面对的是具体问题。解决问题的方式有很多,Java也只是进行后端开发的一种语言,很多语言都可以进行后端开发,例如:Python、PHP等等,但相比之下,Java是更加适合的,理由可以见下文2021年,我们为什么要学习Java?。2021年,我们为什么要学习Java?我始终认为,编程语言没有优劣之
2021-09-18 16:47:35 910
原创 windows下查看端口占用并终止进程
查看端口占用在命令行里输入命令:netstat -ano,可以看到所有端口列表。netstat -ano|findstr 80 // 查找端口80查找端口号所在行,找到对应的PID,这个PID就是进程的ID,通过它就可以找到进程所对应的程序。查看被占用的端口所在进程命令行输入命令:tasklist|findstr PID,可以看到具体是哪个程序进程tasklist|findstr 2736ThunderPlatform.exe 2736 Console
2021-09-17 00:35:10 525
原创 一文带小白玩转NFC、门禁卡
背景介绍华农有三宝:听力、早操、南湖跑,那跑南湖的时候一定要带着校园卡吗?我宿舍晚归没带校园卡进不去门不很尴尬吗?小区发的的门禁钥匙不够怎么办呢?今天就带大家走进NFC…卡类型的区别门禁卡分为IC卡和ID卡两种,其中,ID卡没有加密措施,IC卡可以加密也可以不加密市面上的门禁卡大约八成都是加密的IC卡,最好购买cuid类卡片如何分辨自己门禁卡的种类呢只有IC卡才可以写入穿戴装置内,如果你有NFC读写器,放上去听到一声就是IC卡,听到两声就是ID卡。我没有读卡机?只要手机或穿戴装置可以写入N
2021-09-16 16:40:27 20425 4
原创 Java监控工具——VisualVM
介绍VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。下载地址:http://visualvm.github.io/download.html简单使用下载后打开bin目录下的文件运行一个程序可以查看堆Heap使
2021-09-15 04:08:05 197
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人