自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

长城的博客

聚沙成塔,集腋成裘

  • 博客(79)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring Boot refresh()方法

在这里插入图片描述。

2024-02-02 16:41:11 375

原创 3. Driver 源码

java.sql.Driver接口规定了Driver应该具有以下功能,重要的有三个acceptsURL判断jdbcUrl是否支持、创建一个连接、获取属性信息,三个主要接口。下边以​ 类的源码简单分析以下。

2024-01-20 02:03:01 701

原创 2. 注册 Driver

第三方 jar 包实现接口,同时为了可以被 SPI 机制发现(在META-INF/services文件中,以接口的全限定名来命名文件名,文件里面写该接口的实现)。​前,jvm 类加载系统会先将 DriverManager.class字节码文件加载到 jvm 中。​前,jvm 类加载系统会先将 DriverManager.class字节码文件加载到 jvm 中。而不是下文的这种调用方式,下文这种 Class.forName注册驱动其实是可以省略的。父加载器委托子加载器加载,打破了双亲委派机制。

2024-01-20 00:44:37 407

原创 1. JDBC 连库操作的基本流程

根据Mysql JDBC基本操作,我们大概可以总结出JDBC的API。以下是Mysql JDBC 的基本操作流程。

2024-01-19 22:16:20 453

原创 SPI 动态服务发现机制

SPI(Service Provier Interface)是一种服务发现机制,通过ClassPath下的META—INF/services文件查找文件,自动加载文件中定义的类,再调用forName加载;spi可以很灵活的让接口和实现分离, 让API提供者只提供接口, 第三方来实现。​。

2024-01-19 22:14:54 1328

原创 4. Mybatis 事务和Spring事务关系

大体上分为两种情况:方法上添加了事务注解@Transactional 和方法上没有添加事务注解@Transactional。

2024-01-14 23:41:54 1196 1

原创 缓存数据库双写不一致

设置缓存过期时间:给缓存设置过期时间短一些,所有写操作以数据库为准,只要达到缓存过期时间,则后面的读请求会从数据库读取新值然后回填缓存;方案2应该是最好的,也是最复杂的。面向缓存,所有读、写请求都在 Redis 中进行,发生写事件时由消息队列异步更新数据库。漏洞:如果另一个Java web 服务也在操作同一张表,但却没有缓存同步,就无解了。漏洞:如果另一个Java web 服务也在操作同一张表,但却没有缓存同步,就无解了。如果不一致的数据是业务操作引起的,可以在业务操作时,对相应的缓存进行失效操作。

2024-01-10 09:58:18 421

原创 3. Mybatis 中SQL 执行原理

这里有两种方式,一种为常用的 Spring 依赖注入 Mapper 的方式。另一种为直接使用 SqlSessionTemplate 执行 Sql 的方式。

2024-01-08 14:49:23 1122

原创 我的JDK动态代理流程

如果每一个框架都有自己的BPP,且自己的BPP中都有自己的wrapIfNecessory,那样可能就是一个BPP一个代理类。但通常应该都是各自的框架以提供 Advisior(切面)的方式,让AOP的BPP去处理他们的Advisior。对于拦截器链不为空的情况,会将代理对象、目标方法、拦截器链等信息,封装为一个 ReflectiveMethodInvocation 对象,然后通过它的。BeanPostProcessor 处理bean的时候,会找到这个bean匹配上的的advisior(切面)的集合。

2024-01-03 22:19:28 876

原创 2. Spring Boot 自动配置 Mybatis 流程

自动配置过程中做了3个主要bean的创建及很重要的一些事情。

2024-01-03 22:14:42 1562

原创 1. Mybatis 中 SqlSession接口的三种实现

​SqlSession​ 是一个接口,并且里面包含了许多 CRUD 操作数据库等方法。​SqlSession​​ 它有三个实现类,分别是​​ 、​​ 和​​,其中​​ 它的默认实现类。DefaultSqlSession 是线程不安全的 Sqlsession。也就是说 DefaultSqlSession 不能是单例,必须是多例的。​​ 和​ 是 SqlSession 的代理版,每次新建一个代理对象。姿势都是一样的,但是代理逻辑SqlSessionInterceptor 是不一样的。

2024-01-03 22:07:30 746

原创 删除idb文件后磁盘空间不释放

先说结论后看具体场景rm 删除文件后,如果文件正被进程使用,是不会被真实删除的。虽然执行了rm命令但其仍然存在于磁盘中且被进程引用。重启进程服务后会被真正删除。

2023-08-16 10:18:14 249

原创 MySQL binLog问题

然后又登录了一下mysql的navicat客户端,查询了一下。发现binlog是开启状态,而且目录被改到了/data/mysql_data下,名字也对上了OFF*,破案了。但也觉得应该是binlog,于是看了一下cat了一下/ect/my.cnf文件。先说下为什么关闭:开启binlog记录功能,会增加从库磁盘I/O等的压力,非必要开启,请关闭。2)在从库做数据库备份,数据库备份必须要有全备和binlog日志,才是完整的备份。文件的时候很诧异,这玩意是啥,binlog不应该都是*看到数据库目录下有很多。

2023-08-03 17:01:03 397 1

原创 索引节点 inode

一言以概之:Linux上一切皆文件,inode则是文件的元信息。Linux分配硬盘空间会包含两部分,一部分是inode区,一部分是data区。文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。

2023-08-03 00:10:13 265

原创 Linux 文件系统预留空间

此外,不同的文件系统可能具有不同的默认预留空间大小。通过这个计算,您可以知道文件系统上的预留空间的实际大小。请注意,这个值是以字节为单位的,如果需要以其他单位表示,可以进行适当的转换。请注意,调整文件系统的预留空间可能会对系统的稳定性和性能产生影响。在Linux系统中,磁盘的可用空间、已用空间和容量之间的关系是相互依赖的,但也可能存在一些差异。是您想要设置的预留空间的百分比。于是又百度了一下发现可能是磁盘预留空间的问题。命令来查看文件系统的实际使用情况,它会提供关于可用空间、已用空间和总容量的详细信息。

2023-08-03 00:03:06 682

原创 Top命令

另外,缓存和缓冲区的使用是正常的,因为它们可以提高系统性能。在这个示例中,CPU 的使用情况为 5.8% 的时间用于用户进程,2.4% 的时间用于系统进程,91.7% 的时间处于空闲状态,0.1% 的时间用于等待 I/O,0.0% 的时间用于硬中断,0.1% 的时间用于软中断,没有虚拟化时间(虚拟机 steal time)。在这个示例中,系统总共有 7829.0 MiB 的内存,其中 349.6 MiB 是空闲的,1325.7 MiB 是被使用的,6153.7 MiB 是用于缓存和缓冲区的内存。

2023-07-27 21:17:36 212

原创 Interceptor拦截器

拦截器是基于 Java 反射机制实现的,因此拦截器只能拦截实现了接口的类,而不能拦截 url 这种链接。只能拦截部分 web 请求在 Dispatcher 的 doDispatch方法中被调用。找到 Handler 和HandlerAdapter之后执行。

2022-10-25 00:24:27 196

原创 2022年618活动4000价位笔记本推荐

个人硬性要求

2022-06-15 09:16:36 836

原创 Flink源码之StreamExecutionEnvironment

ExecutionConfig并行度 Parallelism有默认值,等于cpu 数量getter and setter方法最大并行度: 0 < maxParallelism <= 2^15 - 1重启策略 RestartStrategiessetRestartStrategy()getRestartStrategy()链化优化 isChainingEnabledisChainingEnableddisableOperatorChaining重试次数 numbe

2022-04-21 02:02:16 2432

原创 Flink理论基础

Flink的核心概念有4个:Window、Time、State和Checkpoint。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MoyaKmap-1650269072634)(assets/image-20220415130848-dw97on8.png)]无穷数据集:无穷的持续集合的数据集合有限数据集:有限不会改变的数据集合核心概念Time事件时间一般来说,我们提供的事件时间通常是数据的原始创建时间,代表是事件发的时间,事件时间一定在数据的架构中,为数据的

2022-04-18 16:05:32 226

原创 Mysql 根据某一列的值 循环添加序号

一个表有个主键id,一个工号。现在工号重复,查出来所有的工号重复的数据,并对这些数据的工号后边加01,02,03SELECT rownu, tb.jobid, (rownum1 - d.minvalue)FROM ( SELECT @rownum1 :=@rownum1 + 1 AS rownum1, jobid FROM tablea, (SELECT @rownum1 := 0) t ) tbLEFT JOIN ( SELECT min(rownum

2022-04-07 16:29:08 1412

原创 如何在 Mac 上卸载 Java?

本文适用于:平台: Mac OS XJava 版本: 7.0, 8.0使用终端卸载 Oracle Java注:要卸载 Java,必须具有管理员权限,并且必须以 root 用户身份或者使用 sudo 工具来执行删除命令。按照下面所示,删除一个目录和一个文件(符号链接):单击位于停靠栏中的 Finder 图标单击实用程序文件夹双击终端图标在“终端”窗口中,复制和粘贴命令:sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plug

2022-02-22 08:31:20 2422

原创 树莓派之ubuntu开启ssh服务

更新软件源sudo apt updatesudo apt upgrade安装软件 sudo apt-get install openssh-serversudo vi /etc/ssh/sshd_config修改sshd_config文件中的ssh要开房的端口号和ssh的远程链接状态Port 22PermitRootLogin yes执行systemctl status ssh.service,查看软件启动状态运行sudo/usr/sbin/sshd -T,提示sshd: .

2021-10-16 17:18:06 2606

原创 树莓派Docker镜像无法联网的一种可能

下载的镜像run之后,容器无法联网,例如ping 127.0.0.1报ping: clock_gettime(MONOTONIC) failed。传送门验证:查看镜像的系统时间是否异常docker run --rm alpine:3.13 date,如果打印出来的时间和当前真实时间相差较大,则该容器无法正常使用。原因:树莓派32位镜像有bug传送门解决方案:换低版本的镜像修复bug wget http://ftp.us.debian.org/debian/pool/main/libs/lib

2021-06-25 14:01:34 644

原创 Linux包管理器

GNU/Linux发行版,为一般用户预先集成好的Linux操作系统及各种软件,通常已软件包管理系统进行应用软件的管理。软件包管理系统主要有:Dpkg:Debian系,UbuntuRPM:Red Hat系,Centos、fedoraDPKG: 是Debian packager的简称,是由Debian开发出来的包管理器,软件包在发布时打包成.deb格式RPM:是Red hat package manager的简称,是由Red hat开发出来的包管理器,软件包在发布时打包成.rpm格式dpkg和r

2021-03-28 14:43:42 220 2

原创 API慢接口分析

如果一个用户调用你的接口,说你的接口比较慢,你会从哪几个角度去解决这个问题?是否异地部署,考虑集群部署。亲自验证一下是否真的慢?调用一下接口分析工具,查看各个阶段的耗时,分析慢在哪里?网络问题请求体,响应提比较大,是否可以优化后端业务逻辑:是否使用了缓存,缓存是否生效没有使用缓存,是否可以引入缓存引入缓存,缓存是否生效,check缓存的过期策略。是否有复杂耗时的IO操作是否有循环IO的操作,是否可以合并查询减少IO次数是否有慢sql,可以通过慢sql监控工具分析得出。优化

2020-10-18 12:53:00 962

原创 大数据治理基本思想的三篇论文

MapReduce:http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspxGFS:http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspxBigTale:http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx

2020-07-30 11:18:00 792

原创 Idea插件之RestfulToolkit

插件地址:https://plugins.jetbrains.com/plugin/index?xmlId=com.zhaow.restful.toolkit一套 RESTful 服务开发辅助工具集。1.根据 URL 直接跳转到对应的方法定义 ( Ctrl \ or Ctrl Alt N );2.提供了一个 Services tree 的显示窗口;3.一个简单的 http 请求工具;4.在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数…5.其他功能: java 类上添加 Con

2020-05-15 17:35:35 3898

原创 MySQL 实现行转列SQL

SELECT date,sum(CASE `group` WHEN 'A' THEN value ELSE 0 END) as 'A',sum(CASE `group` WHEN 'B' THEN value ELSE 0 END) as 'B'FROM `table` where date='2020-03-01' GROUP BY date;

2020-04-01 08:56:29 297

原创 linux下查找某个字符串所在行

查找某个字符串所在行数:方法1:grep -n “想要查找的字符串名” 文件名方法2:awk ‘/匹配的字符串/{print NR}’ 文件名

2020-03-31 18:49:48 6417

转载 史上最强Tomcat8性能优化

授人以鱼不如授人以渔本博客的目的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好是测试使用率最高,并发最大,或者是最重要的接口(比如下单支付接口),设置最优的tomcat和jvm配置参数。目的通过Tomcat性能优化可以提高网站的并发能力...

2019-11-11 17:39:49 1499

转载 Tomcat的组成和工作原理

Tomcat是什么开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范,除了上述的之外,还有 EJB...

2019-11-11 15:59:29 384

转载 浅谈Apache与Tomcat的关系和区别

Apache 和 Tomcat 都是Apache组织开发的开源免费色HTTP服务器。两者既有联系又有区别,在进行HTML、PHP、JSP、Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置。  Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)  Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以...

2019-11-07 14:33:30 738

转载 Apache、Tomcat与Catalina作为软件名字的含义与关系

转载自:https://blog.csdn.net/yingchengsun/article/details/44340211如果你是从事于计算机软件相关工作的人,那你肯定经常见到Apache这个单词,也应该知道Tomcat这个服务器软件的名字,Catalina可能陌生一点,但你在配置tomcat时,一定会添加一个环境变量,然后指向tomcat的安装路径,这个环境变量的名字就叫Catalina_...

2019-11-07 13:58:21 1130

原创 calendar.getActualMaximum(calendar.DAY_OF_MONTH)的坑点

如下图的代码public static Date monthLastDate(Integer year, Integer month) throws ParseException { if (year == null || month == null || month > 12 || month < 1) { return null; ...

2019-11-04 15:17:40 1871

原创 Mybatis拦截打印每个sql的执行时间

Mybatis中的插件允许你针对核心组件接口Executor 、StatementHandler、ParameterHandler、ResultSetHandler中任何一个方法进行拦截调用。而每个Interceptor(拦截的接口)其实是通过JDK的动态代理技术生成的代理类,每当执行这4种接口中的方法时,就会进入拦截方法(具体就是InvocationHandler的invoke()方法)。...

2019-10-31 21:45:14 875 1

原创 Cordova配置IOS企业版热更新IVersion插件

iOS企业版版本应用的更新下载不同于个人版本,无需访问应用商店进行更新。使用插件iVersion检查版本更新。https://github.com/nicklockwood/iVersion。更新原理引入插件后的App,首先访问配置的远程version.plist文件获取到最新的版本号和版本更新信息,然后会和本地的版本号作比较。如果本地版本号小于远程版本号,app会弹窗提示是否更新,即...

2019-10-31 10:38:30 541

原创 读书之路,就在脚下

Mon 04红楼梦乖、摸摸头好吗,好的明朝那些事儿血腥的盛唐第三任务构建高性能web站点第二任务第三任务斗罗大陆文学类史学类工具类小说类我的读书史...

2019-10-29 14:49:53 122

原创 Tar解压缩命令

tar -xzvf .tar.gztar [-cxtzjvfpPN] 文件与目录 …参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gz...

2019-10-18 14:16:43 1322

原创 线程的状态

线程状态public enum State { /** 线程还没有启动 */ NEW, /** Java虚拟机执行中,但可能会等待操作系统的其他资源,比如进程 */ RUNNABLE, /** * 一个阻塞线程在等待monitor锁 * 当线程...

2019-02-13 10:54:20 118

空空如也

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

TA关注的人

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