BLCL的博客小馆

归档 · 全部📢📢📢 阿里云双十一,2核2G3M的服务器,99元一年,新老用户续费同享!!

首页

关于

归档

JDBC 的事务和隔离级别

这里简单写一下我对 JDBC 的事务和隔离级别的理解。 名词解释事务数据库事务是 DBMS 执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个事务一定是具有原子性(atomic)、一致性(consistency)、隔离性(isolation)、持久性(durability),即 ACID。一个事务会包含一个或多个数据操作语句(data-manipulation statements) 和查询语句。通常来说,事务会依照如下的流程执行: 开始一个事务 执行一系列操作或查询语句 如果没有发生错误,则提交这个事务,并将其结束 如果发生了错误,则回滚这个事务,并将其结束。 ACID Atomic 原子性,即一个事务内的所有操作都被作为一个整体看待,要么全部成功,要么全部失败 Cons..

更多

看懂 ParallelGC 的日志

在排查垃圾回收相关的问题时,一个必不可少的技能就是要能看懂 Java 的垃圾回收日志。本文将介绍打印 GC 日志相关的 JVM 参数,以及使用不同参数时 JVM 将会打印出的日志内容。 JDK 版本123openjdk version "1.8.0_232"OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode) 示例代码在演示过程中,我们将通过在死循环中构造大对象的方式来触发垃圾回收 12345678public class GCExample { public static void ..

更多

Java 的线程安全,以及死锁

刚才面试的时候被问到了关于线程安全和死锁的问题,有点露怯,故赶紧查漏补缺,记录于此。 线程安全 线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的公用变量,使程序功能正确完成。 乐观锁与悲观锁 乐观锁:认为在使用数据时,不会有别的线程修改数据,所以不会加锁,只在更新时判断之前有没有被别的线程更新了数据。比如在数据库中设置一个 version 字段,在更新前先查询该字段的值,然后在写入时比较数据库中的值是否与之前查询到的值相同。 悲观锁:认为自己在使用数据的时候,一定有别的线程来修改数据,因此在获取数据的时候先加锁,确保数据不会被线程修改。 如何保证线程安全 syncronized 关键字,举例:ConcurrentHashMap。是悲观锁。 锁升级机..

更多

Spring bean 的作用域

在 Spring 中,那些由 IoC 容器所管理的对象被称之为 bean。而一个 bean 的定义,其实只是一个 “蓝图”,指导着 Spring 如何去创建这样一个 bean。而在这个蓝图中,有一个属性叫做 “作用域”,它规定了这个 bean 的可见范围。这里我们看一下 Spring 的 bean 都有哪些作用域。 支持的作用域我们先来看一下 Spring 支持哪些作用域。 作用域 说明 singleton 在 Spring 容器中仅存在一个 bean 的实例,bean 以单例形式存在。这是默认的作用域 prototype 每次从容器中获取 bean 时,都将生成一个新的实例,即相当于每次都执行 new xxxBean() request 在 HTTP 请求 (reque..

更多

Spring Boot 自动配置的原理

在使用 Spring Boot 时,最使我们收益的一个功能就是它的自动配置。但是,用了这么久的自动配置功能,有没有想过它是怎么实现的?本文将从源码入手,一步一步搞明白 Spring Boot 自动配置的原理。 我这里就用一个简单的 Eureka server 的项目来举例。实际上只要是个 Spring Boot 项目就可以,我只是懒得再创建一个新的项目了。 它的启动代码我们都很熟悉,是这样子的: 123456789@SpringBootApplication@EnableEurekaServerpublic class EurekaServer { public static void main(String[] args) { SpringApplication.run(Eure..

更多
loading..

循序渐进写一个 Servlet (5) - Filter

Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。 这篇博文将演示如何创建和使用 filter。 什么是 Filter当客户端向 servlet 容器发送请求时,请求通常会直接发送到 servlet 进行处理,就像下图这样: 但是,如果希望在请求被 servlet 处理之前和之后,再进行一些附加的处理,就可以使用 Filter 完成。 一个常见的使用场景是,在 filter 中定义如何检查请求是否合法,比如请求头中是否携带了有效的认证和鉴权信息;或者可以在 filter 中针对请求和响应记录日志。 怎么使用 Filterjav..

更多
loading..

循序渐进写一个 Servlet (4) - 会话追踪

Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。 这篇博文将演示如何使用 cookie 和 session 进行会话追踪。 HTTP 协议是一个无状态的协议,也就是说,在服务器眼中,每一个 HTTP 请求都是一个全新的请求,每个请求之间没有关联。所以我们需要一个可以管理请求中携带的用户信息的方法。而会话追踪就是一个可以管理用户信息的方法。 会话追踪可以通过下列几个方式实现: Cookie 表单隐藏域 URL 改写 HttpSession 本文将主要演示 Cookie 和 HttpSession 的用法。 Cookie什..

更多
loading..
VPS

Doprax搭建免费V2ray节点

Foreword Doprax也是个容器云,类似Heroku,号称永不删容器,Heroku那会基本被滥用,下一个估计就是Doprax了 Doprax Doprax是可以直接使用Docker的,所以只要导入对应Docker构建文件就可以了 搭建流程 参考这里,已经非常详细了 https://www.hicairo.com/post/55.html 搭建完成以后他会给出来xxxx.eu-xxxx.dopraxrocks.net的域名,国内可以ping通,但是打不开,443直接被墙了 由于默认给的域名大概率是被墙的,所以要套一层CDN才能正常使用 增加自定义域名套CF 添加域名以后会让你建立记录并验证 加上域名以后还需要重启一下,然后使用自定义域名访问,正常就能看到nginx页..

更多

Vue全局组件类型提示

一旦我们全局注册了组件,我们就可以在任何地方使用这个组件, 这有一个弊端,如果我们使用了TypeScript的话就丢失了全局组件的类型提示。 对于这个问题,Vue 3 有一个 PRhttps://github.com/vuejs/core/pull/3399 扩展了全局组件的接口。Volar 已经支持这种用法, 我们可以通过在根目录添加components.d.ts文件的方式来添加全对局组件的TypeScript的支持。/* eslint-disable */ /* prettier-ignore */ // @ts-nocheck // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pul..

更多
loading..
VPS

Amazon免费12个月体验和CloudFront替代CF

Foreword Amazon新用户可以可以免费用12个月的EC2和3个月的lightsail,以及永久的CloudFront等服务 1、实例结算周期: 1)EC2的12个月免费按自然月结算,并且在账号注册后就开始计算,和是否创建实例无关; 2)比如:1月25日注册账号,1月31日24点就算1个月,12月31日24点就完全消耗12个月免费额度; 3)停用实例依然会计费,只有终止实例、删除弹性IP、删除卷(默认自动删除)后才会不再计费; 4)EC2实例免费750小时/月,Linux和Win两种类型独立计算,各自均可累积免费750小时; 5)但坑点是硬盘一共就30G免费共用,win占用30G意味着linux硬盘要收钱; 6)时间上比如同时建5个Linux实例和3个Win实例,则单个Linux实例免费..

更多
1333435363779