- 博客(82)
- 资源 (1)
- 收藏
- 关注
原创 Java 集合框架 fail-fast 机制
字段保证原子性、可见性之类的多线程问题,并没有什么意义。因为本身就不是一个线程安全的类,设计的意义也不是硬性的保证能够及时抛出异常,所以不会使用。下划线的部分意思是:如果单个线程发出的一系列方法调用违反了对象的契约,则该对象可能会抛出此异常。fail-fast 机制是确保集合在使用迭代器遍历的过程中,不会出现除迭代器自己。讨论乐观锁往往在多线程中,fail-fast 机制并不是一定在多线程场景下。类似乐观锁的版本号,迭代器在创建的时候后会生成自己的一个属性。实现方式使用了乐观锁的思想,但是并不是乐观锁。
2023-07-27 16:38:46
266
原创 腾讯云数据万象 CI 使用笔记
数据万象API 文档文档转码同步请求接口可以对部分文档进行截取,输出目标为图片等格式。裁剪默认封面图。仅针对于存储桶的资源同步接口可能应答会比较慢COS 资源正则表达式(不一定标准):/^http[s]?:\/\/\w+-\d+\.cos\..+\.myqcloud\.com.+$/...
2022-03-02 09:05:33
306
原创 JSP 笔记
jsp:include 动态引入与传递参数<jsp:include> 用于把另外一个文件的输出内容插入当前 JSP 页面的输出内容中,这种在 JSP 页面执行时引入的方式称为动态引入。区别于静态引入。这样,主页面程序与被包含文件是彼此独立的,互不影响。被包含的文件可以是一个动态文件(JSP 文件),也可以是一个静态文件(如文本文件)。使用 jsp:include 动作包含文件时,只有当该标记被执行时,程序才会将请求转发到(注意是转发,而不是请求重定向)被包含的页面,再将其执行结果输出到
2022-02-27 23:29:58
123
原创 Java 内部类的意义
解决多继承问题Java 不支持多继承,因为如果继承的两个类都有一个共同的父类,那么属性会产生歧义。C++ 支持多继承,通过 virtual 关键字解决如果没有内部类,想要达到多继承的效果,可以通过实现多个接口来达到效果,但是实现了接口就要实现其中的方法,并不是特别友好,而且有可能有些方法并不需要实现,甚至也不用对外暴露(非 public)。或者,更多的时候,我们需要多继承是为了聚合一些方法,减少代码的冗余,也许我们可以将多个父类进行实例化存储为类属性,但是如果这些类是抽象类,我们需要自己创建.
2022-02-22 18:50:55
544
原创 JUC 笔记
线程状态转换NEW当线程刚创建时Runnable当调用 Thread.start() 时,状态由 NEW > Runnable当调用 LockSupport.unpark() 或调用了线程的 interrupt,会让目标线程从 WAITING 变为 RUNNABLEWAITING当线程 t 进入同步块获取了对象锁 obj 之后,调用 obj.wait() 方法时,状态从 RUNNABLE 变为 WAITING这些线程会保存到 monitor 的 WaitSet当
2022-02-20 23:04:19
111
原创 Spring Cloud Gateway笔记
1. How to Include Spring Cloud Gateway<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>如果你包含了 starter,但是你不想启用网关,则可以设置 spring.cloud.ga
2021-12-16 11:11:30
296
原创 MySQL 事务笔记
事务事务满足 ACID:Atomicity、Consistency、Isolation、Durability。MySQL 事务的开启与使用一般,MySQL 都是自动提交事务,即输入命令之后立即提交。这由变量 autocommit 控制,可以通过命令查看注意:MyISAM 存储引擎并不支持事务,测试时注意。事务并发问题脏读事务 A 执行过程中,对某数据进行了修改,能被事务 B 及时获取到,事务 B 出现脏读;不可重复读事务 A 第一次获取某值与第二次某值之间被事务 B 修改了这个值,因
2021-12-06 23:48:44
738
原创 MyBatis Spring Boot 笔记
mybatis-spring-boot-autoconfigure最新版本见官网<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${version}</version></dependency>
2021-11-24 18:52:34
511
原创 Local Storage、Session Storage、Cookies
Local StorageLocal Storage,也叫本地存储,是 HTML5 中新增的 web 存储的功能,它解决了客户端存储的一些缺点,并提供更强大的功能和操作API。Local Storage 有效期:永不失效,除非 web 应用主动删除。// 清除指定 keywindow.localStorage.removeItem('key')// 清除所有window.localStorage.clear()Local Storage 作用域:Local Storage 的作用域是限定在
2021-11-15 09:01:11
1627
原创 PHP 扩展笔记
XDebugInstallWindows官网会告诉你跳转到下载页去下载,但我只找到兼容较新 PHP 的 XDebug,如果需要下载旧版本的,首先访问wizard在文本域中粘贴 php -i 输出的内容让后台进行分析,之后跳转到新的页面,点击下载 XDebug将下载的 dll 文件移动到 PHP 所在目录的 ext 文件夹下修改 php.ini 文件,添加如下配置,其中值为 dll 绝对路径:zend_extension = D:\wampserver\bin\php\php7.1.33\ext
2021-11-11 09:45:35
111
原创 Tomcat 应用服务器 笔记
Tomcat 部署项目的若干种方式war 包将打包好的 war 包放到 webapps 下此时 Servlet Context 就是 war 包文件名server.xml 部署在 Tomcat server.xml 配置文件中,节点 Host 下配置 Context 节点docBase 是文件夹绝对路径path 是 Servlet Context文件夹部署直接向 webapps 中投放文件夹描述符部署在 conf\Catalina\localhost 创建 xml 文件
2021-10-30 09:20:40
153
原创 Spring Framework Data Access 笔记
Data Access2. DAO Support2.1. Consistent Exception HierarchySpring 提供了特定异常到自己异常类层次结构的转换。该类层次结构将 DataAccessException 作为根异常。3. Data Access with JDBC3.3. Using the JDBC Core Classes to Control Basic JDBC Processing and Error Handling3.3.3. Using SQLExc
2021-10-12 18:24:54
199
原创 Java 8 笔记
OptionalJava 8 引入的特性是 Optional 类。Optional 类主要解决的问题是空指针异常(NullPointerException)。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。public static void main(String[] args) { Map<String, Object> map = null; forEach(map);} public static void forEach
2021-10-08 18:41:59
129
原创 HTTP 协议笔记
HTTP 报文HTTP 请求报文的格式HTTP 相应报文的格式 HTTP authenticationThe general HTTP authentication framework基本流程:Client 请求:浏览器请求需要认证的资源Server 质询:服务器返回 401 状态码(Unauthorized),同时设置 WWW-Authenticate 响应头,格式类似:WWW-Authenticate: BASIC realm="xxx"Java shiro 框架
2021-10-07 00:54:27
230
原创 SPI 笔记
SPI基本用法类路径 /META-INF/services/ 文件夹下,创建文件名为接口全限定名的文件,文件中填写接口的实现类。通过 ServiceLoader 能够进行加载Tomcat基本用法创建 classpath:/META-INF/services/javax.servlet.ServletContainerInitializer 文件编写 ServletContainerInitializer 实现类,并用 @HandlesTypes 注解@HandlesTypes(
2021-10-04 17:55:30
126
原创 常用的设计模式笔记
单例这是一种简单、安全的方式,这种写法即使在多线程下也不会出现安全问题:public class SingleInstance { private static SingleInstance instance = new SingleInstance(); private SingleInstance() {} public static SingleInstance getInstance() { return instance; }}懒加载pu
2021-10-01 20:19:11
97
原创 Session 和 Cookie 笔记
Tomcat SessionTomcat Session 是懒加载的。具体创建流程从 org.apache.catalina.connector.RequestFacade#getSession() 开始跟踪。.最终创建由 org.apache.catalina.connector.Request#getSession(boolean) 调用 session.getSession() 实现。org.apache.catalina.session.#getSession...
2021-09-29 18:42:04
95
原创 Element UI 笔记
Form回车提交<el-form @keyup.enter.native="handleConfirm">表单验证<el-form :model="user" :rules="rules" ref="form"> <el-form-item label="姓名" prop="name"> <el-input v-model="user.name"></el-input> </el-form-i
2021-09-16 18:51:42
164
原创 Java 集合类 Map 笔记
Hashtable、HashMap、TreeMap 三者区别比较点HashtableHashMapTreeMapkey不能为null可以为 nullvalue不能为 null可以为 nullkey一定情况下可以为 null有序性无序无序有序容量初始 11初始 16,且一定为 2n2^n2n扩容2n+12n线程安全性线程安全线程不安全hash 值计算底层是模运算,效率较低底层是移位运算Tr
2021-09-09 23:27:04
275
原创 Java 内存模型
finalJava 方法内匿名类引用局部变量必须用 final 修饰在 JDK 8 之前,方法内的匿名类需要用 final 修饰,否则编译器会报错。JDK 8 及以后增加语法糖,无需显式地用 final 修饰了,但需要知道,编译器已经为你做了这一步。对于 “为什么 Java 方法内匿名类引用局部变量必须用 final 修饰?” 这个问题,我觉得先不必纠结 final 修饰符。首先明确两个条件,一是 Java 方法内的匿名类,而不是任何其他的匿名类,包括以下的例子也是合法的。public class
2021-09-09 22:11:08
114
原创 JBoss 笔记
Windows 安装和启动 JBoss 7步骤一 Download步骤二 解压到指定目录步骤三 配置 JAVA_HOME 环境变量建议使用 JDK 7,而且 JAVA_HOME 不配置会导致 JBoss 启动失败双击运行 <JBOSS_HOME>/bin/standalone.bat 即可Ant<?xml version="1.0" encoding="UTF-8"?> <project basedir="." name="ejb-0113"> &
2021-09-08 18:46:39
158
原创 Visual Studio 使用笔记
前端开发*** 快速生成 HTML后缀名为 html 的文件,长按 ! + Tab*** 格式化 JS 代码配置1、File > Preferences > Settings2、搜索 vetur.format.defaultFormatterOptions,点击 Edit in settings.json{ "vetur.format.options.tabSize": 4, // 缩进数量 "vetur.format.defaultFormatter.html":
2021-09-07 16:03:27
162
原创 Composer 笔记
官方地址https://getcomposer.org/https://getcomposer.org/download/安装完毕后,Path 环境变量也会自动配置,接下来就可以直接使用 composer 命令常用命令移除依赖composer remove twbs/bootstrap常见问题composer require 下载速度缓慢全局修改镜像配置composer config -g repo.packagist composer https://mirrors.aliyun.c
2021-09-07 14:50:14
426
原创 注册 Filter Servlet Listener 的方式
注入 Filter@Component 注册特点:通过加入注解 @Component 即可,如果要设置 Order,还可以使用注解 @Order,无法设置 UrlPatterns。适用范围:Filter 针对全部 URL。建议如果是 Web 项目可以继承 HttpFilter,实现 doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain),避免 Http 强转。@Component@
2021-09-01 18:37:25
132
原创 Bootstrap 笔记
Bootstrap-switch 的使用引入相关 CSS JS<link href="https://cdn.bootcss.com/bootstrap-switch/4.0.0-alpha.1/css/bootstrap-switch.min.css" rel="stylesheet"><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script src=
2021-08-18 11:27:45
161
原创 PHPStorm 建议配置
通过访问域预测数组是否在此处总是为空。PHP | Code smell | Array is always empty at the point of access 建议 Error没有必要的变量花括号PHP | Code style | Unnecessary curly braces syntax for variablePHP | Undefined symbols | Undefined variable缺少参数类型声明PHP | Type compatibility | Missing
2021-08-17 19:23:16
808
原创 腾讯云产品笔记
云点播媒体上传有服务端上传和客户端上传。工作上一般使用客户端上传。客户端上传一般需要上传签名,签名一般由后端提供接口,签名可以控制任务流相关参数等,具体见客户端上传签名 签名生成示例事件通知在官方文档中介绍了事件通知的具体类型。事件一般可以通过普通回调(被动)和可靠回调(主动)两种方式获取。一般为了需要更高的可靠性会选择可靠回调,通过定时脚本每隔一段时间拉取事件。视频播放一般有基础播放器和超级播放器,具体场景见官方文档。为了限制视频播放,可以使用防盗链技术。控制台开启防盗链之后,原始 U
2021-08-17 11:59:44
147
原创 Java 源码阅读笔记
编码方式注意字符集和字符编码的区别,字符集是一系列字符进行排序,对应的序号叫码位。字符编码是存储到计算机中的值。ASCII码位从 0 ~ 127,其中 0 ~ 31 和 127 是控制字符,32 ~ 126 是可见字符。字符编码比较简单,直接将码位以二进制形式存储。这里字符集码位和字符编码一致。扩展 ASCII在原有的 128 位 ASCII 码上进行扩展,解决了一些欧洲国家的字符存储问题,现在能表示 256 个字符。GB2312字符集采用分区管理,共 94 个区,每个区含有 94 码位,共
2021-08-07 20:33:24
144
原创 Chrome 笔记
插件JSON Viewer下载地址INFINITY下载地址Chrome 如何导出 / 导入收藏夹导出收藏夹(书签)点击右上角三个点 > 书签 > 书签管理器点击右上角三个点(注意:不是浏览器三个点,而是网页右上角三个点)选择导出书签选择路径导入收藏夹(书签)点击浏览器右上角三个点 > 书签 > 导入书签和设置选择“以前导出的书签(HTML文件)”选择刚才导出的 HTML 文件即可...
2021-07-22 00:25:56
142
原创 PHP 配置文件笔记
PHP 错误处理参考文档https://www.php.net/manual/zh/language.errors.basics.phpdisplay_errors 控制了是否要将错位作为脚本输出的一部分显示。在生产环境里应该禁用(也就是 off 关掉),因为可能包含类似数据库密码这样的敏感信息, 而在开发环境中应该启用,能确保立即报告问题。php.ini 中 error_reporting 的配置 或者是运行时调用 error_reporting() 控制了哪些错误需要报告,哪些错误需要自动忽略
2021-07-21 10:26:56
111
原创 JavaScript 函数总结
小驼峰转大驼峰function smallCamel2bigCamel(obj, newObj) { if (obj instanceof Array) { if (newObj === undefined) { newObj = [] } obj.forEach(function(value) { smallCamel2bigCamel(value, newObj) }) } else if (obj instanceof Object)
2021-07-16 16:35:12
99
原创 Elasticsearch 的使用
Elasticsearch 版本:6.8.8文章参考如下链接,但有些内容可能过时,以实践结果为主:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlIndex API创建 indexPUT http://localhost:9200/twitterPUT http://localhost:9200/twitter/tweet/1自动索引创建如果索引不存在,会自动创建,并使用一些默认的索引模板Get A
2021-07-01 18:31:16
182
原创 Eclipse 开发工具相关问题汇总
修改 Eclipse 的默认 JRE在较高版本 Eclipse 中,JRE 的环境至少为 JDK 8 ,如果没有显式地设置 JRE,则默认选择 JAVA_HOME 所在的 JDK。如果需要改变 JRE,则需要在 eclipse.ini 配置文件下加入以下两行:-vmE:\SDK\Java\jdk1.8.0_172\bin\javaw.exe # 表示 javaw.exe 的路径注意:这两行必须在 -vmargs 之前Package Explorer 过滤无关文件点击该视窗右上角“三个点”,选
2021-06-29 18:49:27
140
原创 Java I/O 笔记
InputStream 所有字节输入流的超类FileInputStream 用于操作文件的读取ByteArrayInputStreamFilterInputStreamBufferedInputStreamDataInputStream OutputStreamFilterOutputStreamDataOutputStreamPrintStreamBufferedOutputStream Java 1.1 对基本 I/O 流类库.
2021-06-24 16:34:24
94
原创 MySQL 参数总结
MySQL Server AdministrationThe MySQL ServerServer System Variablessecure_file_priv该变量用于限制数据的导入导出操作,比如:LOAD_DATA 语句SELECT … INTO OUTFILE 语句LOAD_FILE() 语句The InnoDB Storage EngineInnoDB Startup Options and System Variablesinnodb_flus.
2021-06-23 23:31:06
195
原创 Part Servlet 3.0 新特性
Servlet 3.0 改进了部分API,这种改进很好地简化了Java Web开发。其中包括HttpServletRequest 增加了对文件上传的支持。HttpServletRequest 提供了如下两个方法来处理文件上传:Part getPart(String name); 根据 name 来获取文件上传域Collection getParts(); 获取所有的文件上传域构造上传文件的表单<form action="uploadServlet" method="post" encty
2021-06-23 22:24:54
295
原创 MySQL 基础语法总结
MySQL 修改表结构添加列ALTER TABLE table_name ADD COLUMN column_name int DEFAULT 100 NOT NULL修改列ALTER TABLE table_name MODIFYCOLUMN column_name int DEFAULT 100 NOT NULLalter table`table_name`modify column`column_name` int default 0 not null删除列A...
2021-05-05 14:47:47
111
原创 无状态服务系统(Token)统计在线人数(Redis)
无状态服务类型的系统不再使用服务端存储 session 的模式,而是把用户信息存放在一个 token 中,并通过 key 加密,key 也作为检验 token 正确性的密钥,一般存储在服务端。为了防止 token 无限期使用,导致泄露之后的危险性,一般 token 会设置一个过期时间,过期时间也会存储在 token 中,与用户信息并存。比较常用的有 JWT。解决方案参考:https://www.cnblogs.com/php-no-2/p/9431213.html因为是无状态...
2021-04-09 08:52:06
1377
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人