自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李思苇

终身程序媛

  • 博客(209)
  • 收藏
  • 关注

原创 对java多线程同步和数据库事务的原子性的理解

在mysql中,事务的隔离性通过mvcc+undolog实现,RC隔离级别、与RR隔离级别对隔离性的实现的区别是:生成read-view的时机不同,RC允许每次进行快照读时都生成一个新的read-view,但是RR则要求整个事务过程中,第一次进行快照读时生成一个read-view,之后的所有快照读都使用这个read-view,但在事务执行了更新操作后,要重新生成新的read-view。多种隔离级别,对数据的安全性高低要求不同,因此各种隔离级别下,事务对操作的控制方式也不同。

2022-10-31 21:42:41 255

原创 shiro的主要类释义

SecurityUtils:提供给开发者使用的工具类,内部持有Subject、SecurityManager类实例对象。

2022-10-12 18:37:51 576

转载 正则表达式中问号?的正确用法

=pattern分别表示匹配断言成立时左侧和右侧的文本,只有断言成立了,左侧或右侧的文本才会被匹配,但断言所匹配的结果并不会出现在匹配结果中,具体例子可以看以下代码。我们知道,正则表达式中大部分的结构所匹配的文本最终会出现在匹配结果中,但也有一部分结构并不真正匹配文本,而只是负责判断某个位置左/右侧是否符合要求,这种结构被称为断言。当我们使用正则表达式的时候,捕获的字符串会被缓存起来以供后续使用,具体表现为每个()中的表达式所匹配到的内容在进行正则匹配的过程中,都会被缓存下来,如以下代码。

2022-10-07 11:51:45 60

转载 gradle使用

gradle作为一个新兴的工具已经有了广泛的应用,相比maven,它有以下优势:编译速度要远超maven,gradle使用构建缓存、守护进程等方式提高编译速度。而且项目越大,差距就越明显。 gradle要比Maven灵活太多,很多Maven项目都通过执行外部脚本的方式来完成一些需要灵活性的工作。而gradle的配置文件本身就是构建脚本,无需外部脚本。简洁性,完成同样的功能,gradle脚本的长度要远远短于maven配置文件的长度。

2022-09-10 17:57:28 94

原创 spring boot 配置文件application.yml中可以配置哪些配置项

spring boot 配置文件application.yml中的可配置项。可以打开spring boot 的spring-boot-autoconfiguration工程的源码,在spring-boot-autoconfigure\src\main\java\org\springframework\boot\autoconfigure包中,找到以集成的框架的名字为名称的文件夹,然后找以*properties.java结尾的类,这个类中的大部分属性都是可以在application.yml中配置的配置项。..

2022-09-01 01:32:37 395

转载 保证接口数据安全的10种方式

我们日常开发中,如何保证接口数据的安全性呢?以下有十种方案,包括对传输的数据加密、https认证、数据加签验签、nonce防止重放攻击、以及黑名单白名单等

2022-08-24 12:26:54 83

原创 Stream: Core Java 2 第一章

jdk8的Stream API,提供的是数据视图,这种数据视图可以让我们在在比集合更高的概念级别上指定计算。我们可以指定要完成什么任务,而不用给出具体实现。例如:假如我们想计算某个属性的平均值,我们可以指定数据源和该属性,但我们不用写代码来对一系列属性的值做加总、再求均值、也不用写Runnable开启多个线程来提高效率,以上这些计算代码都由流库去实现并优化。也就是说流库让开发者以“做什么而非怎么做”的方式处理集合。比如上例中,做什么:求平均值,怎么做:如何实现求平均值

2022-05-21 22:52:48 95 1

转载 吃肉不适、不能吃肉的人——你或许需要鸟氨酸——鸟氨酸的抗疲劳-解毒原理

如果患有道疾病,肠道未能及时消化蛋白质和吸收氨基酸,则这些蛋白质和氨基酸经肠道细菌作用会产生氨,肠道产氨增多,导致血氨浓度高、影响ATP能量供应、人体就容易疲乏、倦怠。这就是通常所说的食积:即食物不能被及时消化吸收、积滞在肠道中产生的不适。这种情况下,补充鸟氨酸,使得尿素循环增强、能清除更多的氨,降低血氨浓度,减轻血氨对ATP的影响,人体有足够的ATP供应能量,就能抗疲劳。

2022-05-20 17:35:19 165

转载 55分钟学会正则表达式

原文:Learn regular expressions in about 55 minutes @ Things Of Interest伯乐在线补充:推荐几个正则表达式编辑器Debuggex :Debuggex: Online visual regex tester. JavaScript, Python, and PCRE. PyRegex:PyRegex Regexper:Regexper正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用,比如正则表达式被用于:

2022-05-18 11:38:02 90

原创 一文搞懂jdk8时区、日期、时间:Instant、LocalDateTime、ZonedDateTime,以及与旧版本代码的互操作

Instant类定义的是UTC时间,即格林威治时间、零时区的时间。不是UTC+1 或者UTC-1时区时间,也不是UTC+2或者UTC-2时区时间。不论当前服务器所在本地时区是什么,Instant对象永远只表示UTC时间。因此如果服务器操作系统设置的本地时区不是0时区,那么Instant给出的时间会与服务器本地时间不一致。...

2022-05-13 00:41:11 2407

转载 5分钟搞懂计算机的各种时间(GMT、UTC、CST、unix时间戳-timestamp)

转自:https://baijiahao.baidu.com/s?id=1732139602203523267&wfr=spider&for=pcGMT即:格林尼治时间(另有格林威治时间一说)以本初子午线为基础,精确度相对低。注意事项:因为地球每天的自转是不规则的(正在缓慢减速)所以,格林尼治时间的精确度会越来越低。UTC即:世界协调时(Universal Time Coordinated),以原子时钟长为基础,比GMT格林威治时更加科学更加精确。UTC是国际无线电咨询委员会制

2022-05-12 20:05:18 1842

转载 设计模式之简单工厂、工厂方法、抽象工厂

转自:https://www.zhihu.com/question/27125796/answer/1615074467作者:阿里巴巴大淘宝技术链接:https://www.zhihu.com/question/27125796/answer/1615074467来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。工厂模式包括:简单工厂(不在23种设计模式中)、工厂方法和抽象工厂。下面我们详细唠嗑下这几类的用法和区别。(点击头像关注我们,查收更多阿里工程师一线干货分享)—

2022-05-09 22:56:57 162

转载 Java 如何生成 UUID

java uuid

2022-05-09 20:32:32 9371

原创 Executor、ExecutorService、Executors、ThreadPoolExecutor、Future、Runnable、Callable

ExecutorExecutor类的实例对象是一个执行已提交的任务的对象。该接口提供了一种将任务的提交与每个任务的运行机制分离的方法,包括线程使用细节、调度细节等。通常将为任务显示地创建线程替换为使用Executor来执行任务。比如,当有多个线程任务时,为每个任务创建一个线程并启动new Thread(new Runnable(){}).start()的代码,可以替换为:Executor executor = anExecutor;executor.execute(new Runnable(){}

2022-04-19 21:05:04 373

转载 【转】js-ES6新特性汇总(一图全览)

参见:ES 6 新特性汇总(一图全览)

2022-03-09 10:50:56 153

原创 java 泛型

jdk 1.5之前没有泛型。jdk 1.5开始,增加了一系列泛型相关的接口和类:其中两个顶级接口是Type和AnnotatedElement。Type和Class的区别在jdk 1.5之前,一个类型用一个Class对象表示,一个类型必对应一个Class对象,一个Class对象代表一个类型。在jdk 1.5之后,一个类型可能用一个ParameterizedType对象表示、一个变量的类型可能用一个TypeVariable对象表示,一个方法的参数或者返回值的类型可能用一个wildcardType对象表示

2022-02-19 20:44:13 159

原创 JDK代理:Proxy源码

Proxy类中定义了一个缓存,用于存储当前应用生成的所有代理类。缓存的数据实际存储在一个ConcurrentHashMap中,我们称之为cache-map。cache-map对所有代理类的存储,是以每个代理类的类加载器为分组依据,将同一个类加载器加载的所有代理类分为一组。如此,将有相同类加载器的一组代理类的类加载器对象作为key,将这组代理类构成的一个集合作为value,存储在cache-map中。cache-map的key的类型是ClassLoader,存储代理类的类加载器。cache-map的val

2021-11-15 15:15:09 715

原创 java 集合的迭代器模式源码分析

接口 java.lang.Iterable此接口的javadoc:所有实现了java.lang.Iterable接口的类对象,都可以被应用for-each loop语句。建议使用 for-each loop 遍历此接口的类对象,除非需要对元素做更新(增加、删除)操作。public interface Iterable<T>{ default void foreach(Consumer<T> consumer){ for (T t : this) { // for-e

2021-08-16 16:56:24 96

转载 关于Java的Class类概念:isLocalClass,isMemberClass,isAnonymousClass,isPrimitive,isSynthetic()

作者:weishu链接:https://www.zhihu.com/question/67270393/answer/251059300来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。第一个问题,「本地类,成员类,合成类具体是什么概念?」 其实这些名词本身已经说明了他们自己的意思了,写个例子来说明一下到底何种情况对应这些概念:public class ClassTest { static class StaticMemberClass { i

2021-08-12 22:01:50 510

原创 Unsafe API及 Unsafe对java并发的支持

Unsafe类提供了直接操作内存的方法// 以下方法是获取字段在内存中的偏移量offsetpublic native long objectFieldOffset(Field f); // 获取某个对象的实例域相对于此对象在内存中的偏移量public native long staticFieldOffset(Field f); // 获取某个类的字段相对其所在类的class对象在内存中的偏移量offsetpublic native Object staticFieldBase(Field

2021-07-29 20:30:29 95

原创 Servlet\JSP\Spring mvc之Servlets

servlet包结构:javax.servlet:定义servlet与 servlet容器的交互接口和类(即协议)。javax.servlet.http:定义httpservlet 与 servlet容器的交互接口和类(即协议)。javax.servlet.annotation:定义相关注解,即被注解的类的元数据javax.servlet.descripter:提供程序化登录web容器的配置信息相关类主要类和接口:Servlet <- GenericServlet \ Servle

2021-07-16 13:57:53 87

转载 网络数据传输安全及SSH与HTTPS工作原理

转自:博客园:云游道士:网络数据传输安全概述一、网络数据传输安全概述网络安全涉及到很多个方面,我们这里仅仅讨论下网络数据传输过程中可能受到的威胁,其中常见的有:数据窃听数据篡改身份伪装针对以上威胁,我们介绍下网络数据传输的安全性涉及的几个方面:1. 机密性机密性是指对要传输的数据进行加密和解密,防止第三方看到通信数据的明文内容。其对应的通信过程如下:数据发送方:plaintext(明文) ==> 转换算法 ==> ciphertext(密文)数据接收方:cipher

2021-07-09 20:24:20 532

转载 NIO相关基础篇

转自:NIO相关基础篇用户空间以及内核空间概念我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。(内核也是一个应用程序,即操作系统应用程序,它会启动一个或多个进程,内核各个进程也都有各自的内存空间。用户进程可以通过调用系统调用,调用内核进程提供的服务,获取内核空间的数据)为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚

2021-05-06 15:46:44 45

转载 Redis核心技术与实战1-从构建一个简单的键值数据库SimpleKV开始

数据模型与操作接口开始构造 SimpleKV 时,首先就要考虑里面可以存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口。数据模型和操作接口能够决定什么情况下适合用我们构造的这个键值数据库,什么情况下不适合用,而是需要采用其他类型的数据库。数据模型键值数据库的基本数据模型是: key-value 模型。通常key是String类型。有的键值数据库仅支持vlaue为String类型,例如memcached数据库。也可以设计为value支持所有基本数据类型+String类型。而r

2021-04-28 11:08:16 187

原创 IO :Core Java 2-2

IO流:数据相对内存的流入(In)流出(Out)字符流:以字符为最小数据单元、java中字符是Unicode编码、一个字符占两个字节。只能处理纯文本数据。字节流:以字节位最小数据单元。节点流:File、Memery Array(CharArray、ByteArray)、Memery String、Pipe每种节点流针对字符类型的和字节类型的流的流入流出都有2个类:xxInputStrea...

2020-12-04 13:40:54 154

原创 HTTP缓存——HTTP权威指南.第七章

WEB缓存是可以自动保存常见文档副本的HTTP设备。减少冗余的数据传输:节省了网络费用。没有缓存时,相同的请求,服务器每次都要生成一个文档。有缓存服务器后,只在第一次请求时生成文档,并将文档缓存在缓存服务器上,之后的请求都从缓存服务器上直接获取。减少了原始服务器的网络数据冗余传输。缓解了网络瓶颈问题:请求被部分分散到缓存服务器上去了,原始服务器瞬间拥塞:当大量用户同时访问原始服务器时,造成瞬间拥塞。而缓存后,只有第一次请求需要访问原始服务区,之后的请求都可以由缓存服务器提供,解决了拥塞问题。距离

2020-11-09 15:01:16 77

原创 WeakHashMap源码解析及使用场景

目的让Map中不再使用的Entry被GC及时回收,释放内存空间用途Map本身生命周期很长,需要长期贮留内存中,但Map中的Entry可以删除,使用时可以从其它地方再次取得。实例:tomcat中的缓存有用到。实现方式对于WeakReference可以参考另一篇文章:弱引用——WeakReference——所引用的对象的回收规则在WeakHashMap类中定义了一个实例域ReferenceQueue<Map.Entry> queue。内部的Entry直接继承了WeakRefere

2020-10-26 15:27:49 1354

原创 mysql实用技巧

选自:mysql笔记.pdfhelp命令mysql提供的help命令,对于我们只记得命令中的关键词,但是忘记了命令的具体的参数等情况下,非常有用。例如:help show;help create;help grant;help drop;还可以更进一步:我想创建一个新用户,只记得命令是’create user’开头的,但是忘记了后面一些具体参数,可以使用如下命令:mysql> help create user;强烈建议所有列都 not null,设置默认值。因为null有坑。

2020-10-21 11:32:05 169

原创 web安全

中间人攻击指黑客在http报文传输过程中,伪装成目的服务器,截获、篡改http报文。https目前是预防中间人攻击的有效方案。https使用了证书(非对称加密+签名)可以检测出报文是否被篡改。重放攻击可以通过设置动态数字及过期时间等预防重放攻击。CSRF跨域...

2020-08-26 17:15:53 80

原创 REST 核心概念

REST(Representational State Transfer,表述性状态转移)资源每一个标准的URL可以唯一定位web服务器上的一个资源。当发送HTTP GET请求时,通过URL来说明要请求的资源在哪个web服务器上的哪个位置。资源表述当web客户端发送HTTP GET 请求后,服务器响应给客户端的主体内容,就是对资源的表述。每个URL所定位的那个资源是唯一的,但是对资源的表述却可以是多种多样的。例如,对于服务器上存储的某个学生的信息,可以将数据填充到我们设计好的一个美观的

2020-08-23 17:38:09 627

原创 Nginx服务架构/事件驱动模型

模块化模块化是指:以功能块为单位进行程序设计,一个模块就是一个功能块,应该只负责一个功能,遵循“单一职责原则”的设计模式。自定向下分解、逐步求精原则模块内部高内聚、模块之间的依赖关系低耦合原则。模块化设计支持分布式开发,可以使得nginx灵活的扩展和便捷的升级。Nginx模块化结构分为:核心模块,指源码包中的模块,src文件夹下,包括进程管理、权限控制、错误日志记录等。标准http模块,编译后包含的模块,使得nginx支持基本http功能可选http模块,用于扩展标准的http功能

2020-07-29 10:43:54 442

原创 nginx 基础配置项详解

nginx.conf文件中的基础配置nginx.conf文件中的默认配置信息worker_process 1; #此配置项全局生效events{ #以下配置只在events部分中生效 worker_connections; 1024 }http{ #以下配置只在http部分中生效 include mime.types; default_type application/octet-stream; sendfile on; keepalive_time

2020-07-26 16:42:28 129

原创 nginx 安装部署

Nginx安装部署下载官网下载即可,按操作系统可分为windows版本的和linux\unix版本的。按照适用场景又分为:development(最新版)、stable(稳定版)、legacy(历史版本)第一列CHANGES-x.x,链接到的文件内容主要是这个主要版本相对以前的版本的功能上的改变第二列nginx-x.x.x,链接到可在linux\unix系统环境上使用的的安装包,为tar.gz格式第三列pgp,链接到的文件内容是第二列的安装文件的pgp校验码第四列nginx/Windows-

2020-07-26 16:37:33 141

原创 Nginx服务启动停止

有两种方式的启停给nginx进程发送信号运行nginx命令(即运行nginx软件 /sbin/ 目录下的二进制文件nginx)给nginx进程发送信号发送信号发送信号的命令:kill -SIGNAL pid获取Nginx进程号kill命令中必须给出nginx进程的进程号pid。nginx服务工作过程中,会启动一个master进程,和多个工作进程worker_proccesser,kill命令中的pid参数是指master进程号。获取nginx master进程号的方式有两种:/l

2020-07-26 15:56:59 649

原创 nginx 反向代理及负载均衡策略

正向代理:代理服务器做的是客户端的代理反向代理:代理服务器做的是服务器的代理代理服务先用社会生活中我们常见的场景解释一下代理:租房代理 or 中介很多有房人士想将自己闲置的房子出租,但是他们大部分都还有其它更赚钱的事情要忙,并且他们自己住的房子和闲置的房子也不在同一个地方。因此并不愿花时间接待并带领每一位想要看房子的租客到自己闲置的房子那里去看房,也不愿花时间对租客的各种问题做解答。于是就出现了租房代理或者中介,他们专门负责带领租客看房子、解答租客的问题,虽然租客的主要目标即住房服务是房主提供的

2020-07-26 08:30:49 400

原创 并发:core java 14

Core Java 第14章 并发基本概念线程进程使得一台计算机能够同时执行多个应用程序,进程是多个应用程序的并发执行。线程使得一个应用程序能够同时执行多个任务,线程是一个应用程序内的并发执行。线程的定义及创建建议通过实现Runnable接口的方式定义线程,便于扩展。线程的中断如果一个线程启动后,用户就对其失去了控制,无法中止其执行,是非常不友好的。用户可以通过thread.interrupt();来中断线程thread,这个方法会调用native方法interrupt0(),会将线程的

2020-07-08 09:29:00 126

原创 弱引用——WeakReference——所引用的对象的回收规则

弱引用 WeakReference 相关的GC回收规则当一个对象仅被一个弱引用实例引用(持有)时,这个对象就会被GC回收。注意上述规则中,会被GC回收的是弱引用实例引用的对象,而非弱引用实例本身如果显式地声明了一个变量E e = new E();指向一个对象,而这个对象e被WeakReference实例持有引用,则由于对象的引用被变量e持有,对象并不符合上述回收规则,因此对象至少在变量e的作用域范围内都不会被回收。例如:class Apple{ String color; void Ap

2020-07-08 05:22:21 4116 6

转载 unsafe源码

/* * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU Gen

2020-06-22 08:48:05 102

原创 HashMap源码详解:Core Java 9.3

Map接口keySetvaluessizecontainsKeyputremoveentrySetisEmptycontainsValuegetclear以下为部分JDK1.8添加的默认方法,defaultgetOrdefault(Object o,V v)replaceAll(BiFunction<K,V,V> f)remvoe(K k,V v)forEach(BiConsumer<K,V&g

2020-05-09 10:44:53 89

原创 Core Java(第1-3章)

1.2.6 体系结构中立/编译器jdk>jre>jvm>解释器编译器生成一个体系结构中立的目标文件格式,即字节码。只要有Java运行时系统(JRE,包括了JVM-即java解释器),这些字节码就可以在许多处理器上运行。精心设计的字节码不仅可以很容易地在任何机器上通过JVM解释执行,而且还可以动态地翻译成本地机器代码。虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码...

2020-05-08 23:44:23 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除