首页
学习
活动
专区
工具
TVP
发布

民工哥技术之路

专栏成员
838
文章
996555
阅读量
58
订阅数
SSH 隧道:端口转发功能详解!
SSH 隧道是一种安全的数据传输方法,它允许我们在不安全的网络上建立一个安全的连接。SSH 隧道提供两大功能:
民工哥
2024-06-17
2000
一款比 ping 更强大、更牛逼的命令行工具!
检测网络联通性与否,我们肯定首先想到的就是 ping 命令,ping 命令是一个十分强大的 TCP/IP 工具,可以用来检测网络的连通情况和分析网络速度,还可以通过 ping 返回的 TTL 值(100~130ms 之间是 Windows 系统;240~255ms 之间是 UNIX/Linux 系统)来判断对方所使用的操作系统及数据包经过路由器数量。
民工哥
2024-06-17
880
项目终于用上了插入式注解,真香!
插入式注解处理器在《深入理解Java虚拟机》一书中有一些介绍(前端编译篇有提到),但一直没有机会使用,直到碰到这个需求,觉得再合适不过了,就简单用了一下,这里做个记录。 了解过lombok底层原理的都知道其使用的就是的插入式注解,那么今天笔者就以真实场景演示一下插入式注解的使用。 需求 我们为公司提供了一套通用的JAVA基础组件包,组件包内有不同的模块,比如熔断模块、负载均模块、rpc模块等等,这些模块均会被打成jar包,然后发布到公司的内部代码仓库中,供其他人引入使用。 这份代码会不断的迭代,我们希望可以通过promethus来监控现在公司内使用各版本代码库的比例,希望达到的效果图如下:
民工哥
2024-06-17
880
爽了!一分钟轻松搞定 SSL 证书自动续期,解决免费证书每 3 个月失效问题
HTTPS 证书,又称为 SSL 证书,是一种数字证书,用于对网站的服务器进行身份验证和加密数据传输。它基于 HTTP 进行通信,但增加了 SSL/TLS 加密层,为数据的安全传输提供了强有力的保障。
民工哥
2024-06-17
7352
Ubuntu 2404 LTS 震撼登场!性能强悍、速度快,老旧电脑的救星
众所周知,从发布至今,Linux 系统有上百种不同的发行版,如基于社区开发的 Debian、ArchLinux,以及基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux等等。这些发行版各有特色,可以根据不同的需求进行选择。
民工哥
2024-06-17
2400
当前最好用的 OCR 文字识别工具!轻量、无限制、断网可用,关键还免费
我们在日常工作过程中,经常会遇到文字识别的场景,一款好用的 OCR 工具也是非常重要的,能帮助我们极大的提高工作效率。
民工哥
2024-06-17
2860
教你用 10 行 shell 脚本搞定监控 Linux !
监控我们的环境对于服务器运维来说至关重要,尤其是在部署新的应用程序时。如今,公司每天都使用开源解决方案来监控系统资源。但是,当出于测试的目的来监控一定时间时,bash 脚本会派上用场。
民工哥
2024-06-17
2130
这也太牛了吧!不写一行代码,也能轻松 Get 你想要的资源
对于我们程序员来说,使用爬虫技术是我们常用的采集数据手段之一,它可以帮助我们自动化地从互联网上获取各种数据,包括文本、图片、音频、视频等。
民工哥
2024-06-17
970
Java 与 lua 互相调用简单教程!
luaj 的功能很简单,但对于集成各种 SDK 来说已经完全满足需求了。 luaj 用法示例 Java 方法原型: public static float getNum(float n) { return n; } lua 调用示例: -- Java 类的名称 local className = "com/xttblog/Test" -- 调用 的Java 方法名 local method = 'getNum' -- 调用 Java 方法需要的参数 local n = 10 local args = { n } -- 调用 Java 方法 local _, testStaticMethod = luaj.callStaticMethod(className, method, args) luaj 实现原理 luaj 的核心目标有两个:从 Lua 调用 Java, 从 Java 调用 Lua。整理出来就是如下几点
民工哥
2024-06-17
960
为什么网上这么多破解的工具,但是官方却不管呢?
身为程序员的我们,对于破解软件肯定不陌生,有的是为了省点使用费用,还有的是为了将技术加以实践,也有为了炫技的。。。。
民工哥
2024-05-23
810
一个提升你 Shell 脚本编写质量的工具,建议大家人手必备的神器!
在 Linux 中,Linux Shell 确实是一个强大的工具,也是一种常见的自动化任务的解决方案。它可以用来自动执行一系列命令,处理文本,进行逻辑判断等等。
民工哥
2024-05-22
2040
微服务 + 多级缓存,性能起飞!
今天我们来聊聊缓存这个话题,看看在微服务环境下如何设计有效的多级缓存架构。主要涉及三方面内容:
民工哥
2024-05-22
1220
突发!知名开源软件宣布暂停国内服务
因被境外诈骗团伙利用的原因,开源远程控制软件 RustDesk 屏蔽国内IP地址的连接(RustDesk 从没有在国内架设过服务器)!
民工哥
2024-05-14
3860
Windows 远程不要再用 mstsc 了,这款开源神器才是 YYDS!
做为程序员的我们,经常与服务器打交道,不可避免的要去登录服务器(远程登录)进行一系列的操作,比如:登录服务器部署应用、调试 API、检查代码运行情况等。
民工哥
2024-05-14
5360
面试官:本地缓存怎么选型?问倒一大片!
图片(2)ConcurrentHashMap 优化 Caffeine 底层都是通过 ConcurrentHashMap 来进行数据的存储,因此随着 Java8 中对 ConcurrentHashMap 的调整,数组 + 链表的结构升级为数组 + 链表 + 红黑树的结构以及分段锁升级为 syschronized+CAS,降低了锁的粒度,减少了锁的竞争,这两个优化显著提高了 Caffeine 在读多写少场景下的查询性能。 (3)新型淘汰算法 W-TinyLFU 传统的淘汰算法,如 LRU、LFU、FIFO,在实际的缓存场景中都存在一些弊端,如 FIFO 算法,如果缓存使用的频率较高,那么缓存数据会一直处在进进出出的状态,间接影响到缓存命中率。LRU 算法,在批量刷新缓存数据的场景下,可能会将其他缓存数据淘汰掉,从而带来缓存击穿的风险。LFU 算法,需要保存缓存记录的访问次数,带来内存空间的损耗。 因此,Caffeine 引入了 W-TinyLFU 算法,由窗口缓存、过滤器、主缓存组成。缓存数据刚进入时会停留在窗口缓存中,这个部分只占总缓存的 1%,当被挤出窗口缓存时,会在过滤器汇总和主缓存中淘汰的数据进行比较,如果频率更高,则进入主缓存,否则就被淘汰,主缓存被分为淘汰段和保护段,两段都是 LRU 算法,第一次被访问的元素会进入淘汰段,第二次被访问会进入保护段,保护段中被淘汰的元素会进入淘汰段,这种算法实现了高命中率和低内存占用。
民工哥
2024-05-14
1440
一款比 JumpServer 更轻量、更牛逼的堡垒机!
堡垒机主要用于保障网络和数据的安全。在特定的网络环境下,它运用各种技术手段对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为进行监控和管理,以便于集中报警、及时处理及审计定责。
民工哥
2024-05-14
6970
2023 年最受欢迎 Linux 发行版本!
Linux 系统一般指 GNU/Linux,它是一个可以免费使用和自由传播的类 UNIX 操作系统。它的内核最初由芬兰赫尔辛基大学的林纳斯·本纳第克特·托瓦兹于1991年10月5日发布。
民工哥
2024-05-14
3170
WebSocket 集群解决方案!
代码演示 1.Websocket Server 建立userid和session的绑定关系 @ServerEndpoint("/websocket/{businessType}/{userId}") @Component public class WebSocketServer { /** * 若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识 * 注意:allSession 只记录当前机器的 客户端连接,不是所有session连接 */ public static ConcurrentHashMap<String, Session> allSession = new ConcurrentHashMap<>(); @Resource private RedisService redisService; /** * 连接建立成功调用的方法 * * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据 */ @OnOpen public void onOpen(@PathParam(value = "businessType") String businessType, @PathParam(value = "userId") String userId, Session session, EndpointConfig config) { if (StringUtils.isEmpty(userId)) { return; } /** * 加入到本地map */ allSession.put(userId, session); } /** * 连接关闭调用的方法 */ @OnClose public void onClose(@PathParam(value = "userId") String userId, Session session) { if (StringUtils.isNotEmpty(userId)) { allSession.remove(userId); } } /** * 发生错误时调用 * * @param * @param */ @OnError public void onError(@PathParam(value = "userId") String userId, Session session, Throwable error) { } /** * 用户id * * @param userId * @param message */ public void sendMessageToOneUser(Integer userId, String message, String msgId) { if (userId == null) { return; } Session session = allSession.get(String.valueOf(userId)); if (session != null) { //所有Websocket Server 根据客户端userid找到对应session, 只有存在userid和session的绑定关系的Websocket Server才发送消息到客户端 session.getAsyncRemote().sendText(message); } else { System.err.println("session为空"); allSession.remove(userId + ""); } } } 2.所有Websocket Server 接收消息并处理 @Component @RequiredArgsConstructor public class CreateOrderConsumer implements BaseConsumer { private final WebSocketServer webSo
民工哥
2024-05-14
2510
早知道有这么个吊炸天的 CI&CD 工具,我就不用 Jenkins 了!
提到运维自动化,我们就不得不提起 Jenkins 这个工具,它是一个功能强大且灵活的持续集成工具,适用于各种规模的软件项目,并能够通过自动化和集成化的方式提高软件开发和测试的效率。
民工哥
2024-05-14
2160
最强终端工具!直到遇上她们我终于狠心的卸载了 Xshell
做为程序员的我们,经常与服务器打交道,不可避免的要通过SSH去登录服务器进行一系列的操作,比如:登录服务器部署应用、调试API、检查代码运行情况等。
民工哥
2024-04-26
4520
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档