对Java异常的理解
...
对Java的基础理解
文章的由来从大学学习到使用Java开发时间快超过三年,发现自己的系统化学习还是缺乏很多知识点,在此重新系统化的整理一下自己对Java学习的一些理解, 我相信走得更远不仅仅有聪明人,还有不聪明但是认真并努力的人。 对Java的理解Java是一种跨平台的,面向对象的,自动化程度高的编程语言。 为什么这样说呢?因为Java的特性有俩,其中一个是一次编译,到处运行,此处充分表达了Java的跨平台特性,Java的虚拟机(JVM)在win、linux都有相同效果的不同实现,为Java成为跨平台语言提供了强大的支持。Java程序的成功运行过程可以分为四步:编码->编译->运行->调试,编码的过程自然不用赘叙,编译指的是将.java文件编译成为.class文件,.class文件就是可以在各个平台运行的文件,在不同的平台中,.class被转化为不同的机器码(机器码指的是计算机的运行指令),但是实现的是相同的功能。 另外一个特性是Java有着日渐成熟的垃圾收集,分配、释放内存的处理机制(gc->Garbage...
关于Spring中@transactional的一些理解
简介在我们的数据库开发的过程中,很多关键性的操作都需要使用到事务,保证数据的一致性和安全性。Spring为事务管理提供了非常丰富的支持,主要分为编码式(通过编码方式实现事务)、声明式(基于AOP,将具体业务逻辑与事务处理逻辑进行解耦)。编码式的事务使用起来较为繁琐,会对代码造成侵入,破坏整体的协调性。声明式则不然,在日常使用中声明式的使用相对比较频繁,它可以在xml中做相关事务规则配置,还有一种则是@Transactional 注解的方式。今天就@Transactional 的注解使用来简单的谈一谈我的理解。 @Transactional 注解管理事务的实现步骤使用@Transactional 注解管理事务的实现步骤分为两步。 第一步,在 xml 配置文件中添加事务配置信息。除了用配置文件的方式,@EnableTransactionManagement 注解也可以启用事务管理功能。这里以简单的 DataSourceTransactionManager 为例。 一、 在 xml 配置中的事务配置信息12345<tx:annotation-driven...
更好用的日期工具
介绍在以往的JAVA开发中,我们只能使用Date作为日期开发的常用工具,但是随着时代的发展,对日期的操作有了更高的需求,Date无法满足,并且使用起来代码比较繁琐,在此情景下,JAVA8引入了新的日期类-LocalDate以及LocalDateTime,新的时间类都是不可变并且线程安全的,下面我们来学一学它的用法。 获取当前时间1234567891011121314151617181920212223242526272829public static void main(String[] args) { /** * 获取当前时间戳 */ Instant instant = Instant.now(); System.out.println(instant); /** * 获取当前日期 */ LocalDate localDate = LocalDate.now(); System.out.println(localDate); /** * 获取当前时刻 */ ...
Java中关于货币金额的计算
BigDecimal的由来由于互联网金额的高发达和高统一性,关于货币的金额基本都是精确到分,因此double在货币计算中可以说用武之地比较小,Java提供了一个非常强大的货币金额计算工具:BigDecimal BigDecimal的基本使用==如果需要进行精确计算,务必将对应数字转化为String来构造BigDecimal== 123456789101112131415161718192021222324252627282930313233public static void main(String[] args) { double a = 10.1234; double b = 5.3134; BigDecimal bigDecimalA = new BigDecimal(String.valueOf(a)); BigDecimal bigDecimalB = new BigDecimal(String.valueOf(b)); /** * 使用BigDecimal做加法运算 ...
Linux远程拒绝服务漏洞
漏洞详情 Linux 以及 FreeBSD 等系统内核上存在严重远程DoS漏洞,攻击者可利用该漏洞构造并发送特定的 SACK 序列请求到目标服务器导致服务器崩溃或拒绝服务。 风险等级高风险->远程发送特殊构造的攻击包,导致目标 Linux 或 FreeBSD 服务器崩溃或服务不可用。 影响版本 目前已知受影响版本如下: FreeBSD 12(使用到 RACK TCP 协议栈) CentOS 5(Redhat 官方已停止支持,不再提供补丁) CentOS 6 CentOS 7 Ubuntu 18.04 LTS Ubuntu 16.04 LTS Ubuntu 19.04 Ubuntu 18.10 安全版本 各大Linux发行厂商已发布内核修复补丁,详细内核修复版本如下: CentOS 6 :2.6.32-754.15.3 CentOS 7 :3.10.0-957.21.3 Ubuntu 18.04 LTS:4.15.0-52.56 Ubuntu 16.04 LTS:4.4.0-151.178 修复建议 请参照上述安全版本升级 Linux...
线上问题-long型数据复现
起因因线上long型数据丢失精度问题未解决彻底,本地线上app端出现了该问题,探索新一步的解决方案。 经过因线上获取该字段的接口数量较多,改动起来代价比较高,所以经过多方验证,讨论除了一套解决方案,因框架为Spring boot,所以新建了以下方法注入,来解决该问题,初见成效。 123456789101112131415161718192021222324252627282930313233import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;import org.springframework.context.annotation.Configuration;import...
使用 SCF 自动刷新被 CDN 缓存的 COS 资源
背景当静态内容需要更新时,通常会往 COS 覆盖上传一个更新版本的资源或删除该资源。当重新部署时,则 CDN 的某些边缘节点可能会仍然缓存旧资源。缓存过期时间太短,则会影响到加速的效果。 根据上述情况,需要使用 CDN 控制台上的 缓存刷新 功能,对指定 URL 进行手动刷新操作,实现删除无效缓存文件或者更新资源。 在此将结合 COS 和 SCF 的功能特性,在 COS 文件更新时,实现自动刷新 CDN 缓存的效果。 准备工作 腾讯云账户,需具备 COS、CDN、SCF 等产品的访问权限。 创建存储桶,并在该存储桶上绑定了 CDN 加速域名。 确保 COS 的存储桶的所属地域支持 SCF 产品功能,暂不支持跨地域调用。 准备好可调用 CDN 刷新接口的云 API 密钥,以及下载 SCF 刷新 CDN 示例代码。 工作步骤创建SCF函数 登录 SCF 控制台,单击函数服务,选择与静态内容相同的地域并创建函数。如下图所示: 在 “新建函数” 页面,选择 “空白函数”,输入函数名称(如 refresh_cdn),设置运行环境(示例代码使用 Node.js 语言,因此运行环境设置为...
搭建ipsec VPN 服务器
前言使用 Linux 脚本一键快速搭建自己的 IPsec VPN 服务器。支持 IPsec/L2TP 和 Cisco IPsec 协议,可用于 Ubuntu/Debian/CentOS 系统。你只需提供自己的 VPN 登录凭证,然后运行脚本自动完成安装。 IPsec VPN 可以加密你的网络流量,以防止在通过因特网传送时,你和 VPN 服务器之间的任何人对你的数据的未经授权的访问。在使用不安全的网络时,这是特别有用的,例如在咖啡厅,机场或旅馆房间。 我们将使用 Libreswan 作为 IPsec 服务器,以及 xl2tpd 作为 L2TP 提供者。 安装 Docker首先,在你的 Linux 服务器上 安装并运行 Docker。 注: 本镜像不支持 Docker for Mac 或者 Windows。 下载预构建的可信任镜像可在 Docker Hub registry 下载: 1docker pull hwdsl2/ipsec-vpn-server 如何使用本镜像环境变量这个 Docker 镜像使用以下几个变量,可以在一个 env...
Java常用工具类集锦
...