- 博客(208)
- 资源 (32)
- 收藏
- 关注

原创 Tomcat源码分析-http请求走过的那些路(二)
1. 概述在上篇文章Tomcat源码分析-http请求走过的那些路(一)中,我们主要讲解了一个Http请求如何被tomcat接受。这里我们简单回顾一下。当Tomcat启动后,Acceptor会开启8080端口用于监听请求事件。当接受到请求,Acceptor会经过一系列的处理,通过轮训的方式转接为poller,poller通过事件处理的方式最终交给任务线程池处理。那么今天,我们就从(org.apache.tomcat.util.net. NioEndpoint.SocketProcessor#doRun)
2020-10-26 00:42:55
598
2

原创 Tomcat源码分析-http请求走过的那些路(一)
1.概述前面几篇文章主要针对Tomcat的启动做了较为详细的分析。而对于Tomcat来说,还有一块复杂的业务,那便是Tomcat是如何处理请求的。所以,今天我们就走进Tomcat源码,看看http在Tomcat中经历了哪些弯弯道道。2.Tomcat启动时的那些准备在Tomcat源码分析--启动流程文章中,我们主要对Tomcat的启动做了较为详细的分析。然而为了更好的进入本次主题,还需要对于Connector的启动这一块做更深层次的分析。那么我们就从org.apache.catalina.conn
2020-10-22 00:02:08
469
2

原创 Tomcat源码分析-服务关闭之谜
1.前言如果我问大家Tomcat的启动有哪些方式?关闭又有哪些方式?我想大多数人都会说出很多种方式,毕竟我们都天天和Tomcat打交道。对于Windows系统,我们可以双击startup.bat、双击tomcat.exe、Tomcatw.exe以及通过服务启动。Tomcat关闭我们可以通过执行shutdown.bat、关闭黑窗口、Tomcatw.exe或者服务中都有停止的按钮。当然,针对于前两种启动我们还可以使用暴力的方式关闭黑窗口。而针对于Linux系统,我们一般使用startup.sh开启,shut
2020-10-20 23:37:52
423
1

原创 Tomcat源码分析--启动流程
1.概述要想了解Tomcat的启动流程,必须先弄明白Tomcat有哪些组件。而对于Tomcat组件的层级结构了解,我们必须弄明白Tomcat一个最重要的配置文件“server.xml”,如果有过Tomcat调优经验或者对Tomat有一定了解的话,一定知道这个文件,他位于${tomcat.base}/conf/server.xml。通过这个文件,我们可以配给几乎所有tomcat的参数信息(当然不会包括jvm相关的参数)。那么我们先看一下server.xml的真实面目。为了更清楚的展现Tomcat组件,我把
2020-10-19 23:48:39
3634
15

原创 MyBatis的那些动态Sql
1.前言动态Sql区别于静态Sql的一点就是在程序运行期间根据特定的条件生成的Sql.这里的条件和一般程序语言一样,包括判断、循环、顺序执行。那么为此Mybatis也提供了...
2020-04-04 20:33:05
752

原创 大话布隆过滤器及其应用场景
1.前言今天看博客,有这么一篇文章,他以一道面试题引出了布隆过滤器的概念。这道题大致意思是这样的:假设现在有1000瓶水,其中有一瓶有毒,只要喝一滴,过30天就会毒发身亡。问最少需要多少只小白鼠可以找到有毒的那瓶水,当然是要求30天找到。不然我可以用一只小白鼠实验30*1000=30000天(大约82年)[想想好多人连30000天都活不了,不谈这个伤心的话题了]。那么这个问题怎么解决呢?这里就...
2020-03-31 21:50:25
4080
1

原创 世上最简单mxGraph 导出图片中文乱码问题_分享一次解决问题的心理历程
1.前言正如标题所言,本篇博客并不是写怎么解决这个问题,说实话,这个问题最终解决下来也就是增加了一行有效代码。而真正关注的还是本次我解决这个问题的思路。希望对大家都有所启发、有所帮助。2.背景及问题描述最近在做一个实验管理的项目,涉及到工作流方面的知识,毋庸置疑,我们使用的是Activiti框架。当我们生成流程图的时候,发现涉及到中文名称的节点出现了“乱码”(如下图),这里之所以给乱码...
2020-03-27 14:36:13
1656
3

原创 字符串比较也不是一件容易的事,你信吗?
目录1.前言2.案例一2.1 需求描述2.2 需求分析2.3 代码实现12.4 代码实现22.5小结3.案例二3.1 需求描述3.2 需求分析3.3 代码实现1.前言字符串比较大小对于任何一个程序员来说并不陌生,对于一个Java程序员,我们知道使用String#compareTo(str)或者是String#compareToIgnore...
2020-03-24 23:59:45
1097
1

原创 Mybatis何时了,占位符你知多少
1.前序在Mybatis的世界里,存在两个我们经常用到的占位符,分别是${}和#{}。我们知道在实际开发过程中#{}的使用频率还是极高的;${}使用不当,极为容易引起Sql注入,但他却并没有在Mybatis框架中消失,足见他在框架的地位也不容小觑。他除了保证框架的兼容性,那是否还有其他存在的必要性呢?那么就跟我我的脚步,继续往下看吧。2.数据准备2.1 sql脚本CREATE T...
2020-03-19 22:12:40
2232
3

原创 多线程中的ThreadLocal
1.ThreadLocal概述多线程的并发问题主要存在于多个线程对于同一个变量进行修改产生的数据不一致的问题,同一个变量指的值同一个对象的成员变量或者是同一个类的静态变量。之前我们常听过尽量不要使用静态变量,会引起并发问题,那么随着Spring框架的深入人心,单例中的成员变量也出现了多线程并发问题。Struts2接受参数采用成员变量自动封装,为此在Spring的配置采用多例模式,而Spring...
2020-03-08 22:43:28
878
2

原创 透过ThreadPoolExecutor学习一下代码回滚
1 前言提起回滚,我们首先的能想到是事务回滚。这个词对于一个有一年以上开发经验不陌生。事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。而对于目前SpringBoot盛行的当下,给一个service类添加事务也是轻而易举的事。然而对于代码层面的回滚,我们的回滚意识就很薄弱。那么今天我们就通过JDK提供的并发包中的ThreadPoolEx...
2020-03-01 11:43:45
617

原创 ThreadPoolExecutor隐藏的位运算
1.前期准备为了更好的了解ThreadPoolExecutor位运算,我们有必要先了解一下位运算的基本知识。1.1 运算符号符号 名称 描述 << 左移 空位补0,被移除的高位丢弃 >> 右移 被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,最高位补1 >>> 无符号右移 被...
2020-02-29 11:46:41
517

原创 LRU与LinkedHashMap的不解情缘
1.前言最近在学习Mybatis源码关于一级和二级缓存的过程中,有这么一个类,LruCache.class。按照设计模式来说这里用到了装饰者的设计模式,维护一个接口类【Cache delegate;】的变量。当然这不是重点,重点是他有一个成员变量,keyMap,实例化对象是LinkedHashMap。更要紧的是,他在创建这个对象的时候,还重写了removeEldestEntry这个方法(如下代...
2020-01-05 14:15:11
324
1

原创 基于字节码中try_catch_finally中的return那点事
前几天在公众号看到一篇文章,通过不同实例代码的方式演示了finally语句在return之前还是之后执行。然而,这个问题对于JVM的指令的逻辑顺序是什么样子的?对于最近在重温JVM的我来说,这是远远不能满足我最知识的好奇的。那么下面就让我们看一下指令代码具体的逻辑方式。1.实例代码11.1 代码如下是一段很简单的代码,通过查看指令代码,就不需要所谓的main方法了。/** * ...
2019-11-02 22:39:25
324
原创 Vue弹窗用也可以直接调用Js方法了
vue组件中的弹出,不在需要将组件引用到template中了。直接可以通过调用js方法即可,极大程度避免了代码的入侵性。
2024-10-24 21:42:24
812
原创 基于BitMap的工作日间隔计算
BitMap无论在存储和计算工作日的复杂度上都占有明显的优势。数据库保存工作日的数据方式,虽然占用空间是BitMap的20多倍,2000个字节也可以忽略不计,由于它计算工作日算是最简单的,也不失为采纳的思路。
2024-07-14 00:52:41
1197
原创 一文弄懂vue中样式穿透v-deep
在vue3的世界里,有一个style标签的关键字v-deep,官网称之为样式穿透。那他究竟是什么原理呢?又是这么工作的呢?让我们一起探究一下。
2024-01-06 09:11:26
13494
2
原创 ArcGIS API for JavaScript 4.x 实现动态脉冲效果
主要通过定时刷新,每一次的脉冲渲染圈不停的放大,并且透明度缩小,直到达到一定的大小再退回0。
2023-09-09 13:27:04
1070
4
原创 基于Jetty9的Geoserver配置https证书
由于Geoserver自带的jetty版本不具备https模块,所以需要下载完整版本jetty。这里需要先查看本地geoserver对应的jetty版本,进入geoserver安装目录,执行如下命令。可以看到当前的jetty版本为。我们需要将etclibmodules三个文件夹拷贝到geoserver对应的目录中。
2023-09-09 13:01:06
1509
1
原创 postgresql自定义方法创建之坐标的自动转换
postgresql导入点类型的空间数据,一般会提供xy坐标(或者lon和lat)字段,一般的工具并没有提供转换为空间数据的功能。此时,我们需要提供一些方法或者触发器来实现空间字段的自动更新。而xy坐标在导入的时候也会存在两种情况,一种是以度分秒的字符串形式提供,一种是小数的方式提供。所以这里我们还要提供一个针对坐标的归一化函数。下面就是相关设计的方法方法代码。
2023-08-18 14:39:45
987
原创 nginx编译以及通过自定义生成证书配置https
nginx安装编译安装以及配置https,需要软件。因此需要先安装相关软件。:主要用于nginx编译的模块安装以及证书的生成。
2023-08-07 18:02:16
1535
原创 ArcGIS Engine 与 Visual Studio版本对照表
通过C#对于Arcgis的二次开发,需要Visual Studio版本需要与ArcGIS Engine对应,Visual Studio版本的或高或低都不能使ArcObjects SDK for microsoft.Net framework安装成功。下面是各个版本的对照表。如果Visual Studio与ArcGIS Engine不对应,解决办法如下:这里以vs2015与ArcgisEngine10.2安装为例。
2023-07-25 13:41:25
5812
1
原创 基于本地centos构建gdal2.4.4镜像
基于基础镜像构建gdal环境一般特别大,一般少则1.6G,多则2G甚至更大,这对于镜像的迁移造成了极大的不便。究其原因在于容器中有大量的源码文件以及编译中间过程文件,还要大量编译需要的yum库。本文主要通过在centos系统上先构建基础gdal环境,然后将编译好的二进制文件以及动态库拷贝出来。通过DockerFile或者操作容器的方式构建进行。通过这样的方式,镜像700M左右(基础镜像200M+gdal500M)。当然文章末尾还提供压缩的方式导出镜像(大小约250M左右)。
2023-03-05 00:21:11
1576
原创 The browser supports WebGL, but initialization failed
在windows server上的浏览器通过cesium预览地图展示,会报错,导致地图不能正常预览。
2023-02-14 14:59:25
5255
3
原创 vmware下linux系统共享本地文件夹
由于vmware自带的vmtools和我当前的系统不兼容,所以需要通过网上下载安装。,每次开机以root用户登陆,就可以直接访问共享文件啦。在/root/.bashrc 中添加命令。这个share就是我们刚才共享的文件夹。
2023-02-11 00:06:12
1525
原创 vsCode添加右击打开文件夹或者文件功能
vsCode有两种安装方式,通过exe执行安装或者绿色版的软件安装。如果使用绿色版软件,不会自动右击文件夹用vscode打开。此时就需要通过修改注册表的方式进行操作。
2023-02-10 23:40:51
1452
1
原创 Navacat不能删除postgresql数据库的解决办法
在PostgreSQL中,如果一个库正在被使用,我们是无法直接去删除的,会收到如下报错:也就是说,数据库被远程连接后是不能删除数据库的。所以我们必须在本地连接数据进行删除。
2022-12-10 09:55:55
1020
原创 docsify配置flowchart模块
开始用作流开始的第一个节点。默认是startst=>startstart结束用作流结束的最后一个节点。默认是ende=>endend操作表示需要在流中进行的操作。operation输入输出表示在流中发生的输入和输出。IO子程序表示在流程中发生的子程序,并且应该由另一个流程图来记录该子程序。判断允许条件或逻辑语句让流引导到两个路径之一cond=>conditioncondition并行允许同时发生多个流程para=>parallelparallel。...
2022-07-24 14:17:50
570
原创 gbk与utf8自动识别
UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。0xxxxxxx通过上图我们可以知道,0xxxxxxx是占用一个字节,那么他最大代表0~127(000000000~011111111)。这个也就是ASCII编码区,即utf-8完全兼容ASCII编码。我们知道,一个汉子的3个字节,所以对应。...
2022-07-20 20:38:40
2704
原创 基于geotools实现shp图层的合并
对于shp图层的合并功能,也就是说两个shp图层如果出现交集的要合并成一个图斑,对于geotools框架,还没有找到两个shp合并对方法。这里提供了一种思路,供大家参考。
2022-05-23 00:17:38
1949
3
原创 Win10下powershell不能执行npm命令(因为在此系统上禁止运行脚本)
1. 错误描述S E:\study\vuePanorama> npmnpm : 无法加载文件 D:\dev\node-v16.14.2-win-x64\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_E170 中的 about_Execution_Policies。所在位置 行:1 字符: 1+ npm+ ~~~ + CategoryInfo
2022-05-11 16:39:56
2428
原创 ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and serv
在mysql 8.0.26 运行load data local 从本地文本导入数据时,报错:“ERROR 3948(42000): Loading local data is disabled - this must be enabled on both the client and server sides”. 解决办法检查一个全局系统变量 ‘local_infile’ 的状态:mysql> show global variables like 'local_infile';+--------
2022-05-08 00:18:26
678
gdal2.4.4源码编译及相关插件
2023-03-03
真正离线安装network3.5.rar
2021-03-23
google_vue-tools.rar
2020-09-04
项目管理44个过程输入输出工具技术忆巧计法.pdf
2020-07-22
jenkinsplugins.rar
2020-03-14
datepicker.rar
2020-02-19
notepad++十六进制64位编辑插件
2018-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人