Java
Java实现发送邮件并携带附件
一、 邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器。主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。 SMTP服务器地址:一般是 http://smtp.xxx.com,163邮箱是http://smtp.163.com,qq邮箱是http://smtp.qq.com。 SMTP协议 通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服
使用Redis实现多节点任务调度
1. 目的 目前中有部分功能需要定时更新或者推送数据,但正式环境存在多个server运行,会导致定时任务在多台服务器或者多个server同时运行。 解决思路1:可以使用一台固定的服务器的一个节点单独部署定时任务的程序。 解决思路2:多节点调度时,使用Redis锁来实现只有一个节点单独执行。 结论:只需要保证在同一时间只有一个节点执行调度程序。 2. redis实现方式 2.1 引入依赖 <
JVM(Java虚拟机) 整理
JVM整体结构 本文主要说的是HotSpot虚拟机, JVM 全称是 Java Virtual Machine,中文译名:Java虚拟机 简化一下: Java字节码文件 Class文件本质上是一个以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,JVM根据其特定的规则解析该二进制数据,从而得到相关信息 Class文件采用一种伪结构来存储数据,它有两种类
Kotlin扩展函数与属性原理解析
一、扩展函数 扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。 二、原理 反编译: 可以看出扩展函数实际上是生成了一个静态方法,并且将被扩展的类的对象传进了函数中。 由此我们可以知道: 我们在扩展函数中可以访问被扩展的类的函数与属性,但是不能访问私有的函数与属性,其访问权限与对象访问权限一致。 三、扩展属性 扩展属性提供了一种方法能通过属性语法进行访问的API来扩展。尽管它们被叫做属
在Mac上使用jenv管理JDK版本
主要使用的工具就是jenv,安装方法有很多教程,这里贴个我使用的教程 这里记录下常用的一些命令 注意jenv中的jdk版本,要与springboot中的版本保持一致,否则项目就会报错启动不了 &nb
优先级队列的应用 I
目录1. 题目列表2. 应用2.1. Leetcode 295. 数据流的中位数2.1.1. 题目2.1.2. 解题思路2.1.3. 代码实现 1. 题目列表 题目列表: 序号 题目 难度 1 295. 数据流的中位数 困难 2. 应用 2.1. Leetcode 295. 数据流的中位数 2.1.1. 题目 295. 数据流的中位数 中位数是有序整数列表中的中间值
Java代码审计-FileUpload
Web应用通常都会包含文件上传功能,用户可以将其本地的文件上传到Web服务器上。如果服务器端没有能够正确的检测用户上传的文件类型是否合法(例如上传了jsp后缀的WebShell)就将文件写入到服务器中就可能会导致服务器被非法入侵。 漏洞成因 后缀名无限制 漏洞分析 黑白名单 黑名单 漏洞分析 白名单 上传参数可控 漏洞分析 其他漏洞 除了以上三种常见漏洞 还有其他漏洞
Java代码审计-FileOperations
常见文件读写 常见文件读写方式 通过FileInputStream读取文件并使用FileOutputStream写入另一个文件的测试方法 通过BufferedInputStream读取文件并使用BufferedOutputStream写入另一个文件的测试方法 通过BufferedReader读取文件并使用BufferedWriter写入另一个文件的测试方法 通过FileWriter和Buffer
A retro of 2023
prologue 2023 is going to far away from me, I will walk into the new year 2024, as a software engineer, I am very familiar with the idea of a "retro", Retros are an important step in the agile m
极狐GitLab 16.8 如期而至,快来看看有哪些功能更新!
沿袭我们的月度发版机制,今天我们正式发布极狐GitLab 16.8。此次发布带来众多功能更新,包括已经生产可用的工作空间、使用 Maven 依赖代理来加速构建以及基于 DORA 的行业基准的组织级别的 DevOps 视图等。 CI/CD 组件与目录、只包含默认分支的最小 fork 及安全合规等方面的众多功能更新。 以下是此次版本发布的一些重点功能更新详情,请查阅。 16.8 的关键改进 支持 GC
dremio yarn 测试环境部署
以前我简单写过关于dremio yarn 运行的说明(开发上基于了Twill框架,当创建基于yarn 的引擎的时候会进行dremio executor 的打包,放到hfds 中,之后基于yarn 的调度运行),以下是一个简单的基于docker 的部署环境,方便学习 环境 docker-compose version: "3" services: zk: i
WebAssembly入门笔记[3]:利用Table传递引用
在《WebAssembly入门笔记[2]》中,我们介绍了如何利用Memory在作为宿主的JavaScript应用和wasm模块之间传递数据,但是Memory面向单纯二进制字节的读写在使用起来还是不太方便,此时我们会更多地用到另一个重要的对象Table。Table利用用来存储一组指定类型的对象,说得准确一点是对象的引用,所以可以读取出来直接消费。一、利用Table存储wasm函数引用 二、执行cal
Oracle DBA告警处置方法(更新)
归档日志满了 ==如果出现rman登陆不了,到trace目录下清理一些trc 文件== ORA-04031 方法一 扩大share pool容量 方法二 数据库有锁 Oracle导出awr报告 连接数 远程登录数据库 查询表空间余量(不显示已满表空间) 查询表空间余量(显示已满表空间) Oracle各类日志存放位
【深度思考】一线开发大头兵对于工作的感悟分享
目录前言一、工作方式方法1.1先尽人事1.2关注个人成长1.3work&life balance二、构建知识体系2.1夯实基础2.2抽象思维2.3广度与深度三、尽早规划职业3.1市场现状3.2如何破局四、文章小结 前言 写在前面的是关于自己的一点介绍,21年本科毕业,学的是计算机科学与技术专业,到现在工作(实习)也有两三年了。自己本身对编程和开发是有兴趣的,同时也对项目管理、团队建设方面有
docker安装windows
声明:文章转载于微信公众号:高等精灵实验室,更多详情请移步原文 保姆级:在NAS上使用Docker跑一个Windows系统,支持远程桌面,有点意思! 原创
go中间件实现登录验证
一、概述 在java中可以使用过滤器、拦截器实现登录验证(验证token的有效性、判断哪些路径需要登录、哪些路径不需要登录)等等的一些公共性的验证操作。 go语言中有没有类似的东西呢,答案是有的,go语言中可以使用中间件来完成这个操作。 接下来使用gin+中间件的形式来验证token的有效性(公共/通用验证) 验证步骤: 1.登录时生成token 2.添加中间件
Go语言的100个错误使用场景(一)|代码和项目组织
目录前言1. Go: Simple to learn but hard to master1.1 Go 语言概述1.2 简单不等于容易1.3 使用 Go 的100个错误2. Code and project organization2.1 变量屏蔽(#1)2.2 没有必要的代码嵌套(#2)2.3 误用 init 函数(#3)2.4 过度使用 getter & setter(#4)2.5 接
推荐一个轻量的文件快递柜!像拿快递一样取文件!
大家好,我是 Java陈序员。 很多时候,我们都想将一些文件或文本传送给别人,或者跨端传递一些信息! 但是我们又不想为了分享,而去下载一些乱七八糟的软件。 那么有没有一款工具可以快速实现跨平台传输文件信息的呢?答案是有的。 今天给大家介绍一个文件分享工具,像拿快递一样取文件。 关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 Fil
Dubbo 架构演进:从 RMI 到 Dubbo
目录 Dubbo 架构演进:从 RMI 到 Dubbo 1. 自定义 RPC 2. RMI 架构 2.1 整体架构 2.2 RPC 调用 3. Dubbo 架构 3.1 整体架构 3.2 RPC 调用 3.3 服务治理 4. 总结时刻 推荐阅读 谈谈你对 Dubbo 的认知?对于这个问题,你是怎么回答的呢? 我们知道 Dubbo 是从 RPC 起家,到
面试官:说一下零拷贝技术的实现原理?
零拷贝(Zero-copy)技术是一种计算机操作系统中用于提高数据传输效率的优化策略。在传统的数据传输过程中,需要将数据从一个缓冲区拷贝到另一个缓冲区,然后再传输给目标。这涉及到多次的 CPU 和内存之间的数据拷贝操作,会消耗 CPU 的时间和内存带宽。而零拷贝技术通过直接共享数据的内存地址,避免了中间的拷贝过程,从而提高了数据传输的效率。 1.传统 IO 执行流程 要搞明白零拷贝技术就要先搞清
简单一招竟把nginx服务器性能提升50倍
需求背景 接到重点业务需求要分轮次展示数据,预估最高承接 9w 的 QPS,作为后端工程师下意识的就是把接口写好,分级缓存、机器扩容、线程拉满等等一系列连招准备,再因为数据更新频次两只手都数得过来,我们采取了最稳妥的处理方式,直接生成静态文件拿 CDN 抗量 架构流程大致如下所示: 数据更新后会重新生成新一轮次的文件,刷新 CDN 的时候会触发大量回源请求,应用服务器极端情况得 h
[Java]自定义注解
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17993690 出自【进步*于辰的博客】 由于单独的一个或多个元注解无法进行测试,故本篇文章中的示例都是基于自定义注解。因此,大家在阅读代码时,可能会觉得有点云里雾里。无妨,疑惑是暂时的。 参考笔记一,P72.1、P76.1。 注: 本篇文章引入
parallelStream和completableFuture的线程池区别,以及Executors线程池的使用
目录parallelStream不能使用自定义线程池CompletableFuture支持使用自定义线程池未使用自定义线程池使用自定义线程池Executors使用(有多种线程池)简单总结 parallelStream不能使用自定义线程池 并行流特点: 基于服务器内核的限制,如果你是八核,每次线程只能起八个,不能自定义线程池; 适用于对list密集计算操作充分利用CPU资源,如果需要调用远端服务不
Windows 堆管理机制——参考资料链接
参考 博客: Windows 10上的堆溢出漏洞利用 - 安全客,安全资讯平台 (anquanke.com) Learning Windows pwn -- Nt Heap |诺普的博客 (n0nop.com) [原创]windows10下的堆结构及unlink分析-Pwn-看雪论坛-安全社区|安全招聘|bbs.pediy.com [原创][原创]逆向RltAllocateHea
用Java语言实现一个观察者模式
观察者模式(也被称为发布/订阅模式),提供了避免组件之间紧密耦合的另一种方法,它将观察者和被观察的对象分开。在该模式中,一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者收到消息后所执行的操作后所执行的操作与可观察的对象物无关,这种模式使得对象可以相互会话,而不必了解原因。Java语言与C#语言的时间
“类图”之旅UML继承(泛化),实现,关联依赖,组合聚合.
开启“类图”之旅 说到对系统代码中的模型梳理,其实最好的方式还是使用UML类图。上个章节中老猫没有展开和大家分享UML类图,一个是由于篇幅的原因,第二个是老猫觉得类图对于咱们后续阅读框架源码以及底层设计模式有着相当大的帮助,所以很有必要将其作为单独一篇来和大家分享。如下概要: 类图的简介 类图是什么呢?比较专业一点的说法:在软件工程中,类图是一种静态的结构图,描述了系统的类的集
每日一道面试题:Java中序列化与反序列化
写在开头 哈喽大家好,在高铁上码字的感觉是真不爽啊,小桌板又拥挤,旁边的小朋友也比较的吵闹,影响思绪,但这丝毫不影响咱学习的劲头!哈哈哈,在这喧哗的车厢中,思考着这样的一个问题,Java中的对象是如何在各个方法,或者网络中流转的呢? 通过这个问题便引出了我们今天的主人公:序列化与反序列化! 序列化:所谓的序列化就是将Java对象或数据结构转为字节序列的过程,以便于存储到数据库、内存、文件系统或者
Spring整合jasypt原理分析
前言 在我们系统中,有很多敏感数据,如 MySQL 及 Redis 的账号密码信息等,jasypt 可以帮我们加密这些信息,使系统更加的安全。 使用 添加 maven 依赖 添加配置 application.yml 手动创建加密信息 原理分析 JasyptSpringBootAutoConfiguration 配置类会导入 EnableEncryptablePropertiesCo