自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(374)
  • 资源 (2)
  • 收藏
  • 关注

原创 ThreadLocal与FastThreadLocal

FastThreadLocal 真的一定比 ThreadLocal 快吗?答案是不一定的,只有使用FastThreadLocalThread 类型的线程才会更快,如果是普通线程反而会更慢。FastThreadLocal 会浪费很大的空间吗?虽然 FastThreadLocal 采用的空间换时间的思路,但是在 FastThreadLocal 设计之初就认为不会存在特别多的 FastThreadLocal 对象,而且在数据中没有使用的元素只是存放了同一个缺省对象的引用,并不会占用太多内存空间。

2024-04-11 16:50:43 974

原创 Netty的基本架构与组件

这些组件是怎么协作的呢?服务端启动初始化 Boss EventLoopGroup 和 Worker EventLoopGroup 两个组件,其中Boss负责监听网络连接事件。当有新的网络事件到达时,则将Channel注册到Worker EventLoopGroup。Worker EventLoopGroup 会被分配到一个EventLoop负责处理Chanel的读写事件。每个 EventLoop 都是单线程 的,通过 Selector 进行事件循环。

2024-04-10 15:29:49 925 1

原创 Databales的组件TableTools用法

按键:https://datatables.net/extensions/tabletools/button_options#Ajax-button-options。

2024-04-02 16:42:20 256

原创 拒绝服务攻击(Dos)与Tomcat的解决方法

拒绝服务攻击(Denial of Service,DoS)是一种网络攻击,旨在使目标系统无法提供正常的服务,使其无法响应合法用户的请求。这种攻击通过消耗目标系统的资源,例如带宽、处理能力或存储空间,来实现其目的。拒绝服务攻击的主要目标是瘫痪目标系统,使其对合法用户不可用。拒绝服务攻击可以采用多种方式实施,其中一种常见的方法是通过向目标系统发送大量无效的请求,使其资源耗尽。另一种常见的方法是利用系统的漏洞或弱点来使其崩溃或无法正常工作。

2024-04-02 16:39:17 839

原创 getInputStream流只能读取一次问题

InputStream默认不实现reset的相关方法,而ServletInputStream也没有重写reset的相关方法,这样就无法重复读取流,这就是我们从request对象中获取的输入流就只能读取一次的原因。需要读取request的输入流 ,因为 ServletRequest中getReader()和getInputStream()只能调用一次。正常普通接口请求,request.getParameter()可以获取,能多次读取。如果我们的接口是用@RequestBody来接受数据,那么我们在拦截器中。

2024-04-02 16:36:10 357

原创 浏览器中的Content-Type属性

HTTP的Content-Type是一种标识HTTP请求或响应中包含的实体的媒体类型的头部字段。它指示了数据的类型,使接收方能够正确处理数据。以下是一些常见的Content-Type类型:text/plain:纯文本,没有特定格式。text/html:HTML文档。text/javascript:JavaScript代码。application/json:JSON数据。application/xml:XML数据。application/pdf:Adobe PDF文档。

2024-04-02 16:35:25 402

原创 操作系统注入漏洞

命令注入漏洞是一种安全漏洞,允许攻击者通过在应用程序中注入恶意命令来执行非法操作。在操作系统中,这种漏洞可能存在于用户输入被不正确处理的情况下。攻击者可能通过恶意构造的输入来执行系统命令,这可能导致未经授权的访问、数据泄露、拒绝服务等安全问题。1、输入验证和过滤: 对于用户输入,确保进行有效的验证和过滤。不信任的输入数据应该被正确地验证、过滤或转义,以防止恶意命令的注入。这可以有效地防止 SQL 注入和命令注入攻击。3、最小权限原则: 应用程序和系统应该以最小权限的方式运行。

2024-04-02 16:33:54 243

原创 XML与Xpath

XML是一种具有某种层次结构的文件,Xpath则是解析这种文件的工具接下来将会解释XML文件的结构和Xpath的基本使用,并且用Java语言进行操作展示。

2024-04-02 16:31:44 710

原创 Trie树

每个节点定义// 假设只包含小写字母可知,如果只包含小写字符串,可以设置子节点为new TrieNode[26];//每次都要从头部开始查//字符串的减去a后的值是数字值,例如a是97,b是98//如果这个值在索引上没有值,那就需要重新开辟一个TrieNode//继续往下迭代//迭代结束设置一个标识,这个地方可以有很多扩展//查找类似上面的新增//迭代的最后一个字符串需要有个结束字符才能代表当前已经有个一样的字符串了//这里就不需要有结束的标识了。

2024-03-21 15:03:54 425

原创 TopK问题

针对海量数据的top k问题,这里实现了一种时间复杂度为O(Nlogk)的有效算法:初始时一次性从文件中读取k个数据,并建立一个有k个数的最大堆,代表目前选出的最小的k个数。然后从文件中一个一个的读取剩余数据,如果读取的数据比堆顶元素小,则把堆顶元素替换成当前的数,然后从堆顶向下重新进行堆调整;否则不进行任何操作,继续读取下一个数据。直到文件中的所有数据读取完毕,堆中的k个数就是海量数据中最小的k个数(如果是找最大的k个数,则使用最小堆)

2024-03-21 14:19:37 310

原创 HttpClient4基础

HTTP 请求都有一个请求行,其中包含请求方法、请求URI和HTTP的版本协议接下来还有请求体和请求头。

2024-03-19 17:30:42 447

原创 Java的SPI机制与实例

SPI是一种JDK内置的服务提供发现的机制,能够启动框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql。Driver接口。Java机制的核心思想就是将装配的控制权转移到Java之外,核心思想是解耦。

2024-03-15 16:54:16 330

原创 跨域问题与解决方法

浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。同源策略限制以下几种行为:Cookie、LocalStorage 和 IndexDB 无法读取DOM和JS对象无法获得AJAX 请求不能发送。

2024-03-02 14:46:54 949

原创 CMS垃圾回收器

CMS GC的官方名称为“Mostly Concurrenct Mark and Sweep Garbage Collector”(最大-并发-标记-清除-垃圾收集器)。作用范围: 老年代算法: 并发标记清除算法。启用参数:-XX:+UseConMarkSweepGC默认回收线程数:(处理器核心数量 + 3)/4Java9之后使用CMS垃圾收集器后,默认年轻代就为ParNew收集器,并且不可更改,同时JDK9之后被标记为不推荐使用,JDK14就被删除了。

2024-02-26 15:43:07 515

原创 RocketMQ安装与基本使用

在RocketMQ中有NameServer、Broker、生产者、消费者四种角色。而生产者和消费者实际上就是业务系统,所以这里不需要搭建,真正要搭建的就是NameServer和Broker。

2024-02-04 11:09:34 567

原创 缓存一致性问题

到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?为什么要引入消息队列保证一致性?延迟双删会有什么问题?到底要不要用?

2024-02-01 17:24:37 507

原创 Mysql的BufferPool

磁盘太慢,用内存作为缓存很有必要。Buffer Pool本质上是InnoDB向操作系统申请的一段连续的内存空间,可以通过innodb_buffer_pool_size来调整它的大小。Buffer Pool向操作系统申请的连续内存由控制块和缓存页组成,每个控制块和缓存页都是一一对应的,在填充足够多的控制块和缓存页的组合后,Buffer Pool剩余的空间可能产生不够填充一组控制块和缓存页,这部分空间不能被使用,也被称为碎片。InnoDB使用了许多链表来管理Buffer Pool。

2024-02-01 16:31:23 770

原创 Mysql数据库锁--全局锁、表锁、行锁

根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。

2024-02-01 15:23:47 1111

原创 SpringCloud引入父项目需要注意的地方

组件依赖关系详细可查看:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E。要引入两个组件,一个是SpringCloud一个是SpringCloudAlibaba。注意:父项目要加 pom,父项目中意味着可以被子项目共享。子项目要加 jar,子项目需要加个来引用父项目的资源。也可以是war,看打包方式。

2024-01-31 17:19:35 238

原创 ThreadLocal作用实例

ThreadLocal表示线程的“局部变量”,它确保每个线程的ThreadLocal变量都是各自独立的,它提供了一种方法来创建只能被当前线程访问的变量。7、探测式清理,其实这也是非常耗时。输出结果如下,正常情况为true,如果两个线程分别修改了数据,那么可能是false,当然,由于还处在中间过程,还会导致异常情况,那么该如何解决这个问题呢,就需要ThreadLocal了。在代码中每个线程都会 对f进行操作,会导致f这个对象发生变化,由于f这个对象是共享变量,各个线程之间互相影响,由此产生了三种情况。

2024-01-31 10:56:04 316

原创 Redis的哨兵模式

能够自动监控master是否发生故障,如果故障了会根据投票数从slave中挑选一个作为master,其他的slave会自动转向同步新的master,实现故障自动转义。

2024-01-30 15:39:28 885

原创 Redis持久化

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是键快照文件直接读到内存里。

2024-01-30 15:12:24 291

原创 Struts进行文件上传时装饰StrutsRequestWraper导致的问题参数映射失效

在文件都放到request的parameters对象里之后,fileUpload 拦截器会继续调用其他拦截器直到Action等执行完毕,他还要做一个扫尾的工作:把临时文件夹中的文件删除(这些文件是由commons- fileupload组件上传的,供你在自己的Action中将文件copy到指定的目录下,当action执行完了后,这些临时文件当然就没用了)。第二个地方:在上传模板文件时,csrfToken参数无法映射,导致后台校验失败,同时,上传文件。在这个方法中会获得所需的request。

2024-01-25 14:48:34 798

原创 sychnorized积累

锁对象不能为空,因为锁的信息都保存在对象头里作用域不宜过大,影响程序执行的速度,控制范围过大,编写代码也容易出错避免死锁在能选择的情况下,既不要用Lock也不要用synchronized关键字,用java.util.concurrent包中的各种各样的类,如果不用该包下的类,在满足业务的情况下,可以使用synchronized关键,因为代码量少,避免出错。如果这个monitor已经拿到了这个锁的所有权,又重入了这把锁,那锁计数器就会累加,变成2,并且随着重入的次数,会一直累加。

2024-01-23 17:30:15 339

原创 Java 数据结构集合

队列的头部是队列中时间最长的元素。为了降低这部分的开销,在 Java8 中,当链表中的元素达到了 8 个时,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN)。计算 key 的 hash 值,根据 hash 值找到对应数组下标: hash & (length-1)判断数组该位置处的元素是否刚好就是我们要找的,如果不是,走第三步判断该元素类型是否是 TreeNode,如果是,用红黑树的方法取数据,如果不是,走第四步遍历链表,直到找到相等(==或equals)的 key。

2024-01-23 15:51:54 1124

原创 RocketMQ入门--安装与简单使用

在RocketMQ中有NameServer、Broker、生产者、消费者四种角色。而生产者和消费者实际上就是业务系统,所以这里不需要搭建,真正要搭建的就是NameServer和Broker。

2024-01-18 16:36:28 379

原创 tcpdump抓包

s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);

2024-01-17 17:24:21 418

原创 CAP与BASE理论

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。C一致性:状态的一致性,缓存,数据库,集群等A可用性:要求系统内的节点们接收到了无论是写请求还是读请求,都要能处理并给回响应结果P分区容错性:在分布式系统中,节点通信出现了问题,那么就出现了分区。:能容忍网络分区,在网络断开的情况下,被分隔的节点仍能正常对外提供服务。

2024-01-13 17:03:02 428

原创 Redis分布式锁--java实现

在单体redis中通过SETNX + EXPIRE方式可以为多个JVM加一个分布式锁,但是由于操作的非原子性会导致并发问题,因此出现了几种原子性解决方法,包括SETNX+时间value、lua脚本和SET扩展命令的方式解决,但是,依然会出现事务还没完成时间就失效,产生了新一轮并发,因此,通过添加一个看门狗线程定期检查能够解决这个问题,对于一个Java开发来说有一个Redisson框架实际上封装了lua脚本来实现。哨兵和主从模式下的分布式redis,介绍了Redlock的原理与其缺陷。

2024-01-13 16:07:43 1638

原创 读书笔记--微服务架构

客户端与微服务直接通信GateWay:API 网关是一个服务器,是系统的单入口点。它类似于面向对象设计模式中的门面(Facade)模式。API 网关封装了内部系统架构,并针对每个客户端提供一个定制 API。它还可用于认证、监控、负载均衡、缓存和静态响应处理。例如nginx,node.jsAPI 网关作为系统的单入口点,并且负责请求路由,组合和协议转换。它为每个应用客户端提供了一个自定义 API。API 网关还可以通过返回缓存或默认数据来掩盖后端服务故障。

2024-01-12 16:49:49 387

原创 Mysql查询与更新语句的执行

FROM:对 FROM 子句中的左表<left_table>和右表<right_table>执行笛卡儿积(Cartesianproduct),产生虚拟表 VT1ON:对虚拟表 VT1 应用 ON 筛选,只有那些符合<join_condition>的行才被插入虚拟表 VT2 中JOIN:如果指定了 OUTER JOIN(如 LEFT OUTER JOIN、RIGHT OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表 VT2 中,产生虚拟表 VT3。

2024-01-12 14:50:49 440

原创 Mysql如何优化慢查询

尽量使用 Join 语句来替代子查询,因为子查询是嵌套查询,而嵌套查询会新创建一张临时表,而临时表的创建与销毁会占用一定的系统资源以及花费一定的时间,同时对于返回结果集比较大的子查询,其对查询性能的影响更大。MySQL 处理 union 的策略是先创建临时表,然后将各个查询结果填充到临时表中最后再来做查询,很多优化策略在 union 查询中都会失效,因为它无法利用索引。慢 SQL 的优化,主要从两个方面考虑,SQL 语句本身的优化,以及数据库设计的优化。使用游标,只能一页一页的翻。

2024-01-12 14:12:18 433

原创 Mysql的in与exits

IN和EXISTS是MySQL中用于子查询的两种不同的条件操作符。它们在使用和实现上有一些区别。

2024-01-12 11:11:09 582

原创 Mysql主从复制

MySQL复制(Replication)是一种用于在多个MySQL服务器之间复制数据的机制。这种机制通过将更改从一个MySQL数据库服务器传递到其他MySQL服务器,从而保持多个服务器上的数据一致性。1、读写分离: 通过在主服务器上执行写操作,然后将这些更改复制到多个从服务器上,可以实现读写分离。主服务器处理写入操作,而从服务器用于处理读取操作,从而提高性能和扩展性。2、数据备份: 复制可以用作数据备份的一种形式。

2024-01-11 18:54:47 1246

原创 docker run命令

通过 docker run 命令创建一个新的容器。

2024-01-11 16:40:49 965

原创 Mysql是怎样运行的--下

所以在某个事务提交后,重用这个事务的insert undo链表(这个链表中只有一个页面)时,可以直接把之前事务写入的一组undo日志覆盖掉,从头开始写入新事务的一组undo日志。我们修改了Buffer Pool中某个缓存页的数据,那它就和磁盘上的页不一致了,这样的缓存页也被称为脏页,我们创建一个存储脏页的链表,凡是修改过的缓存页对应的控制块都会作为一个节点加入到一个链表中,因为这个链表节点对应的缓存页都是需要被刷新到磁盘上的,所以也叫flush链表,数据结构与free链表一样。

2024-01-10 17:05:24 1041

原创 Mysql是怎么运行的(上)

Mysql是怎样运行的读书笔记

2024-01-10 16:56:26 1106

原创 JMM内存模型

Java内存模型(Java Memory Model,JMM)JMM主要是为了规定了线程和内存之间的一些关系。对于 Java 来说,你可以把 JMM 看作是 Java 定义的并发编程相关的一组规范,除了抽象了线程和主内存之间的关系之外,其还规定了从 Java 源代码到 CPU 可执行指令的这个转化过程要遵守哪些和并发相关的原则和规范,其主要目的是为了简化多线程编程,增强程序可移植性的。

2024-01-05 15:41:25 944

原创 Mybatis一级缓存

辟谣:Mybatis 一级缓存脏读(数据被另外事务修改并提交后,仍会从缓存中读到旧数据(错误),实际是避免了事务不可重复读问题), Mybatis 一级缓存是在事务的生命周期之内的,在关闭session、执行commit、执行rollback都会清空Mybatis一级缓存。销毁:sqlSession关闭、sqlSession提交、sqlSession回滚、sqlSession执行update(新增、删除、更新)后底层会执行清除、主动清除。条件二:sql上用到的参数要一样。条件四:sql语句的文本要一样。

2024-01-04 23:36:06 426

原创 SpringBean的生命周期

而 Spring 中的对象是 bean,bean 和普通的 Java 对象没啥大的区别,只不过 Spring 不再自己去 new 对象了,而是由 IoC 容器去帮助我们实例化对象并且管理它,我们需要哪个对象,去问 IoC 容器要即可。大家总是会错误的理解Bean的“实例化”和“初始化”过程,总会以为初始化就是对象执行构造函数生成对象实例的过程,其实不然,在初始化阶段实际对象已经实例化出来了,初始化阶段进行的是依赖的注入和执行一些用户自定义的初始化逻辑。2、Spring 中的 bean 的作用域有哪些?

2024-01-04 23:34:12 950

PIC模拟方法的静电模型来模拟多环形电子注在圆柱系统中的运动轨迹Matlab源码

任务要求: 采用PIC模拟方法的静电模型来模拟多环形电子注在圆柱系统中的运动轨迹。模拟电子枪阴极表面发射电子注,电子在静态场的作用下运动直至稳定的运动过程。其中 系统长:0.01m 系统半径:0.005m 入射的每个宏电子电流:-1/3*10-3A 初始5圈电子以同样的速度从左平面入射进系统,一圈36个,且横向分布满足轴对称性,轴向速度为107m/s。 最内圈宏电子注入半径:2.0*10-3m,以后均匀递增2.0*10-4m 每隔相同的时间间隔从阴极注入一批电子。令Nr=101,Nz=201,Nθ=36, 径向网格数 ,角向网格数 ,轴向网格数 。 总共6000个步长,每个步长为1.67*10-13s。 每十个步长注入一次电子。 左平面固定电位为100V,右平面接地电位为0,两平面之间电位均匀变化,且横向等电位。 结果: 根据任务要求的得出仿真结果 此对参数进行修改,主要是两个参数,一是宏电子电流大小,二是左右平面所加的电压。其中宏电子电流能够使电子轨迹更加明显,左右平面电压能够使电子在z方向上加速行进。 课程设计资源下载:

2023-10-24

BootStrap资源页面

BootStrap资源页面

2023-06-30

基于遗传算法的MATLAB16阵元天线的优化.doc

利用Matlab编制一个遗传算法或粒子群算法程序,并实现对间距为半波长均匀直线阵综合,指标如下: 阵元数:16元 副瓣电平:11dB 要求撰写设计报告,内容包括:所采用的算法基本原理,目标函数的设计,各个参数的设置,源代码,仿真结果(增益方向图),参考文献。

2020-06-11

静电模型PIC方法的Matlab仿真设计

本文通过Matlab软件对在静电场条件下的对导体内的电子注对运动规律进行了模拟仿真,完成的最终波形结果。

2019-05-02

空空如也

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

TA关注的人

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