
java
文章平均质量分 78
格格巫 MMQ!!
==========青春肆意飞扬,热爱经久不息。==============
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类加载和字节码技术篇
Classfile /E:/编程内容/JVM/资料-解密JVM/代码/jvm/out/production/jvm/cn/itcast/jvm/t3/bytecode/Demo3_1.class。Classfile /E:/编程内容/JVM/资料-解密JVM/代码/jvm/out/production/jvm/cn/itcast/jvm/t3/bytecode/Demo3_2.class。// 实际调用的是 Object obj = List.get(int index);原创 2022-11-06 10:44:52 · 550 阅读 · 0 评论 -
mysql InnoDB事务
上一篇关于buffer pool的学习中,我们学习Buffer pool相关知识,innodb再对某个页面进行读写访问时,会将这个页面读到buffer pool 中,之后如果修改了某个页面,也不会立即刷新到磁盘,而只是将缓冲页面的控制块添加到flush 链表中,之后某个时间点(后台定时任务线程每隔一定时间将flush 链表中的脏页刷新到磁盘,或者新的页面需要缓冲,将LRU链表中一些脏页刷盘)。那么如果mysql服务突然崩溃,或者服务器突然断电,岂不是已经提交的事务将丢失?原创 2022-11-01 09:32:16 · 455 阅读 · 0 评论 -
ASP.NET Core知多少:路由重写及重定向
但最最简单的办法是在进入ASP.NET Core MVC路由之前,写个中间件根据参数改掉请求路径即可,路由的事情还是让MVC替你干就好。在做微信公众号的改版工作,之前的业务逻辑全塞在一个控制器中,现需要将其按厂家拆分,但要求入口不变。目前这个中间件还是有很多弊端,只支持get请求的路由重写,不过大家可以根据项目需要按需改造。在startup config方法注入MVC中间件之前,注入自定义的重写中间件即可。拆分很简单,定义控制器基类,添加公用虚方法并实现,各个厂家按需重载。原创 2022-10-30 13:44:42 · 597 阅读 · 1 评论 -
ASP.NET Core 反向代理部署知多少
Nginx 配置路由转发首先来看下IdentityServer4.Admin的项目结构:├── Id4.Admin.Api # 用于提供访问Id4资源的WebApi项目├── Id4.Admin # 用于提供管理Id4资源的Web管理面板├── Id4.STS.Identity # 用于提供 STS 服务的Web项目。原创 2022-10-30 09:24:25 · 362 阅读 · 0 评论 -
Java 性能 - ArrayLists 与 Arrays 的大量快速读取
我有一个程序,对于类似细胞自动机的程序,我需要在尽可能短的时间内(以毫秒为单位)对类似 List 的对象进行 100,000 到 1,000,000 次随机访问读取.我认为我正在使用的更新算法已经优化(有效地跟踪活动单元格等).列表确实需要更改大小,但性能并不重要.所以我想知道使用 Arrays 而不是 ArrayLists 的性能是否足以在如此短的时间内处理如此多的读取.目前,我正在使用 ArrayLists.您很可能是正确的-读取许多文件可能会限制潜在的加速,因为磁盘I / O将成为限制因素。原创 2022-10-28 23:05:33 · 932 阅读 · 0 评论 -
MassTransit | .NET 分布式应用框架
通过对消息模型的高度抽象,以及对主流的消息代理(包括RabbitMQ、ActiveMQ、Kafaka、Azure Service Bus、Amazon SQS等)的集成,大大简化了基于消息驱动的开发门槛,同时内置了连接管理、消息序列化和消费者生命周期管理,以及诸如重试、限流、断路器等异常处理机制,让开发者更好的专注于业务实现。无状态消费者,即消费者无状态,消息消费完毕,消费者就释放。Transport:传输模块,消息代理透明化的核心,用于和消息代理通信,负责发送和接收消息。原创 2022-10-28 22:42:21 · 765 阅读 · 0 评论 -
这才是使用ps命令的正确姿势
在前面的命令当中我们都没有定制化的输出过一些内容,都是ps命令想输出啥就输出啥!我们在上一个终端后台启动一个 sleep.out 的程序,我们就能够在上面的终端里面看到我们刚刚启动的程序。跟终端无关的进程很好理解,就是跟终端脱离关系,一般是系统进程和用户的守护进程。我们可以看到这个进程的 STAT 当中还有一个 l 表示这是一个多进程的程序。上面的命令输出除了 session leader 和跟终端无关的所有进程。但是我们在下面同一个用户的不同终端就不能够看到在上面一个终端启动的程序。原创 2022-10-24 23:29:19 · 671 阅读 · 0 评论 -
自定义springboot-starter,感受框架的魅力和原理
例如,假设您正在为“acme”创建一个启动器,并且您命名自动配置模块acme-spring-boot和启动器acme-spring-boot-starter。如果您只有一个模块将两者结合起来,请将其命名为acme-spring-boot-starter.引入starter — xxxAutoConfiguration — 容器中放入组件 ---- 绑定xxxProperties ---- 配置项。我们Ctrl点击spring-boot-starter-web,进入内部pom,我们发现里面有个。原创 2022-10-20 11:30:39 · 227 阅读 · 0 评论 -
select获取选中的option(包含value和text,重点是text怎么获取)
(“#orgnize”).find(“option:selected”).val()//取值$(“#orgnize”).find(“option:selected”).text()//取文本var item =(“#orgnize”).options[item].val();//取值$(“#orgnize”).options[item].text();//取文本//其他获取选中项索引的方法var item =(“#orgnize option:selected”).val()取值。//拿到选中项的文本。原创 2022-10-17 13:13:07 · 2226 阅读 · 0 评论 -
echarts-for-react源码略读
因此实际影响ECharts实例的逻辑被放置到componentDidUpdate那里,这做法和react-amap中在useEffect中通过Marker等实例内置的set方法更新状态的原理是一致的。但这一步采用deep equal比较,来减少ECharts实例的更新。若更新的props包含theme, opts或onEvents则要销毁原来的ECharts实例,重新构建一个新的ECharts实例,并终止更新渲染过程;添加特性,监测容器尺寸的变化,并自动调用ECharts实例的resize方法实现自适应。原创 2022-10-16 10:11:43 · 1175 阅读 · 0 评论 -
SpringBoot多环境配置及配置文件分类
一、多环境配置在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明1.1 yaml文件。原创 2022-10-10 13:09:33 · 2779 阅读 · 1 评论 -
Java 读写锁 ReadWriteLock 原理与应用场景详解
主要是为了保证数据的可见性,如果当前线程不获取读锁而直接释放写锁,假设此刻另一个线程获取的写锁,并修改了数据,那么当前线程就步伐感知到线程T的数据更新,如果当前线程遵循锁降级的步骤,那么线程T将会被阻塞,直到当前线程使数据并释放读锁之后,线程T才能获取写锁进行数据更新。或者锁状态不为零,而写锁的状态也不为0,但是获取写锁的线程不是当前线程,则当前线程不能获取写锁。公平性:读写锁支持非公平和公平的锁获取方式,非公平锁的吞吐量优于公平锁的吞吐量,默认构造的是非公平锁。原创 2022-09-30 09:53:17 · 4067 阅读 · 1 评论 -
Vue实现拖拽穿梭框功能四种方式
点击打开视频讲解更加详细left和top要写在行内样式里面按住拖动# 二、VUe使用js实现拖拽穿梭框。原创 2022-09-29 10:40:12 · 872 阅读 · 0 评论 -
Jmix 中 REST API 的两种实现
你知道吗,在 Jmix 中,REST API 有两种实现方式!很多应用是采取前后端分离的方式进行开发。这种模式下,对前端的选择相对灵活,可以根据团队的擅长技能选择流行的 Angular/React/Vue 之一,或者前端为App/小程序等手机应用。Jmix 的一种典型应用场景就是作为这种类型应用程序的高级别管理 UI 和后端。为此,Jmix 提供了强大的通用 REST API 功能,支持包括开箱即用的实体、文件、元数据、用户会话的 API 以及经过简单配置就能支持的业务逻辑(服务)REST API。原创 2022-09-28 18:24:37 · 392 阅读 · 0 评论 -
OpenglEs之三角形绘制
这里说明一下函数glVertexAttribPointer的stride参数,一般情况下不会用到,传递0即可,但是如果需要提高性能,例如将顶点坐标和纹理/颜色坐标等放在同一个数组中传递,则需要使用到这个stride参数了,目前顶点坐标数组和其他数组是分离的,暂时可以不管。如下图,在在标准化设备坐标中,假设有一个正方形的屏幕,那么屏幕中心就是坐标原点,左上角就是坐标(-1,1),右下角则是坐标(1,-1)。在前面的章节中我们介绍了着色器的创建、编译、链接等,但是缺少了具体使用方式,这里我们补充说明一下。原创 2022-09-28 16:16:50 · 412 阅读 · 0 评论 -
多租户改造
注意 mybatis-plus 新多租户插件配置,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration #useDeprecatedExecutor = false 避免缓存万一出现问题;如果是使用mybatis-plus3.4.1之前的版本,可以通过自定义一个TenantSqlParser解析器并重写processInsert方法,网上很多,可自行百度;原创 2022-09-28 09:40:29 · 1959 阅读 · 1 评论 -
Kafka - broker使用-topic
broker在kafka的服务端运行,一台服务器相当于一个broker;每个broker下可以有多个topic,每个topic可以有多个partition,在producer端可以对消息进行分区,每个partiton可以有多个副本,可以使得数据不丢失。通常以集群模式,下面来阐述一下broker的几个状况。分区数据与副本kafka的partition有一个leader的数据区域,是为了接收producer端发送的数据;原创 2022-09-28 09:24:10 · 1271 阅读 · 0 评论 -
Java线程同步的四种方式详解
如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本,副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响,从而实现线程同步。使用 ReentrantLock锁,JVM 将花费较少的时间来调度线程,线程更好,并且具有更好的扩展性(提供更多的子类);线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。原创 2022-09-28 09:17:20 · 259 阅读 · 0 评论 -
SpringBoot及基础项目构建
前言Spring框架的大名想必大家早已如雷贯耳,我们来看一下springboot诞生的初衷,以及它在springframe的基础上解决了哪些痛点。很久以前,J2EE还是java企业级应用的标准规范之时,spring以其轻量级开发的理念顺势杀出,一路势如破竹,逐渐取代J2EE成为王者。但随着人们对spring深入使用,其中的弊端也逐渐显现出来,其中最典型的便是——配置地狱。原创 2022-09-23 14:14:52 · 430 阅读 · 0 评论 -
SpringBoot之基础Web开发
现在,我们已经能自行完成SpringBoot的初级项目搭建了,接下来看如何实现一些Web开发中的基础功能。复制代码}复制代码在controller文件夹下创建JsonController,代码如下:复制代码}复制代码@RestController注解我们在上一节已经用过了,代表整个Controller请求方法仅返回纯数据,不包含Html页面信息这种情况多见于前后端分离的情况,前端框架(如Vue)在拿到后端返回数据之后自行组织页面渲染。原创 2022-09-23 14:10:42 · 343 阅读 · 0 评论 -
如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
添加该代码后,我们可以在 Web 浏览器中打开该页面,并查看 Excel 文件加载到 Spread.Sheets 中并添加了收入行。JavaScript在前端领域占据着绝对的统治地位,目前更是从浏览器到服务端,移动端,嵌入式,几乎所有的所有的应用领域都可以使用它。除了 SpreadJS 和 jQuery 文件之外,我们还需要导入 FileSaver 库,为了便于后续程序处理,SpreadJS默认提供完整的文件流,FileSaver库可以用来把文件流转成文件下载到本地。为此,我们可以使用命令行参数进行安装。原创 2022-09-21 11:54:48 · 641 阅读 · 0 评论 -
深入浅出 JavaScript 中的 this
一个程序中只会有一个全局执行上下文。由于 foo() 的 this 绑定到 obj1, bar(引用箭头函数)的 this 也会绑定到 obj1,箭头函数的绑定无法被修改。另一个需要注意的是,你有可能(有意或者无意地)创建一个函数的“间接引用”,在这 种情况下,调用这个函数会应用默认绑定规则。另一个需要注意的是,你有可能(有意或者无意地)创建一个函数的“间接引用”,在这 种情况下,调用这个函数会应用默认绑定规则。this 是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调 用时的各种条件。原创 2022-09-20 19:10:11 · 639 阅读 · 0 评论 -
Kafka为什么性能这么快?
通过这种分区分段的设计,Kafka 的 message 消息实际上是分布式存储在一个一个小的 segment 中的,每次文件操作也是直接操作的 segment。这种分区分段+索引的设计,不仅提升了数据读取的效率,同时也提高了数据操作的并行度。另一个主要功能是 kafka 写数据的时候,是以磁盘顺序写的方式来写的,也就是说仅仅将数据追加到文件的末尾,不是在文件的随机位置来修改数据。即采用磁盘顺序写,这样就不需要寻道时间,只需很少的旋转时间,将数据追加到文件的末尾,不是在文件的随机位置来修改数据。原创 2022-09-20 12:37:36 · 238 阅读 · 0 评论 -
简单的token用户登录实现,接口权限校验
不想用redis管理也可以放在内存中,基本思路就是每次登录成功新建一个map,key是token,value是临时类,里面有user的实体和当前保存时的毫秒值,然后将map放入list中,每次请求对比有无这个token(key),然后拿出user即可,再建立一个定时任务,定时对比当前系统时间和临时类中的毫秒值,如果超出规定的时间就删除当前map,切记删除后break,否则会报空指针异常。# redis数据库索引(默认为0),我们使用索引为6的数据库,避免和其他数据库冲突。# redis连接池配置。原创 2022-09-16 11:24:51 · 1719 阅读 · 0 评论 -
MySQL 中的锁机制
需要注意的是,如果申请加 MDL 锁失败,那么再此之后的加锁申请都必须等待(公平锁机制,遵循先来先执行原则,先来的没有加锁成功,后来的不能加锁)。共享锁-独占锁、独占锁-独占锁互斥:如果事务要修改对象,必须先以独占模式获取锁。意向锁的提出就是为了加表级别的共享锁 和 独占锁时,快速判断表中的记录是否被上锁,以避免用遍历的方式来查看表中有没有被加锁的记录,提供判断速度。访问延迟具有非常大的不确定性:假如一个事务需要等待另一个事务释放锁,另一个事务释放锁的时机是不确定的,因此等待它释放锁的耗时是不确定的。原创 2022-09-16 11:20:40 · 192 阅读 · 0 评论 -
Java内存溢出(OOM)分析
当JVM内存不足时,会抛出java.lang.OutOfMemoryError.主要的OOM类型右:Java heap space:堆空间不足GC overhead limit exceeded : GC开销超出限制Permgen space:永久代内存不足Metaspace:元空间内存不足Unable to create new native thread:无法创建新的本地线程: 交换空间内存不足Java heap space:堆空间不足。原创 2022-09-16 09:41:55 · 3306 阅读 · 0 评论 -
教你用Java获取IP归属地
直接访问公网服务器地址能成功获取IP地址,但是通过Nginx反向代理获取的都是127.0.0.1。客户端请求Nginx服务器再反向代理转发到服务端,此时拿到的IP反向代理的IP,也就是Nginx服务器的IP,并不是真正的客户端IP。在本地环境调用获取IP,要么是0:0:0:0:0:0:0:1,或者是局域网IP。局域网IP是以192.168.x.x开头,或者是127.0.0.1的IP。通过IP获取归属地一般都从地址库找到匹配的地址,本文介绍两种方法.扫一扫,就能获取查到自己的归属地了。原创 2022-09-14 15:54:11 · 687 阅读 · 0 评论 -
java.io.EOFException:ZLIB输入流的意外结束 - 从HTTP读取
您使用的方法不太适合像GZip这样的二进制格式,我假设您只是为了测试而这样做?除了那个以及HTTPURLConnection的错误之外,代码中没有太多可能导致问题的原因。我建议使用字节缓冲区交换进行读取,至少要将其作为可能的错误来源消除。当我可以的时候,我发现了这个异常并且重试了操作 - 成功了。问题是我不知道是什么导致这个异常弹出。我想相信这是一个网络问题。任何人都找到了解决这个问题的方法吗?原创 2022-09-14 11:43:39 · 1047 阅读 · 0 评论 -
ERROR executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
bash spark-submit --driver-memory 8G --class MF字段 你的jar名字.jar。scala打包jar并在Linux下运行。原创 2022-09-14 11:04:09 · 1360 阅读 · 0 评论 -
使用 Spring Boot Admin 监控应用状态
Spring Boot Actuator 是 Spring Boot 提供的对应用的自省和监控功能,如健康检查,审计,指标收集,HTTP 跟踪等,可以帮助开发和运维人员监控和管理 Spring Boot 应用。该模块采集应用的内部信息,并暴露给外部的模块,支持 HTTP 和 JMX,并可以与一些第三方监控系统(如 Prometheus)整合。1.1 Actuator endpoint端点 Endpoint 是 Actuator 的核心组成部分,用来监视应用程序的各种状态。 Spring Boot Actu原创 2022-09-09 16:08:29 · 1679 阅读 · 0 评论 -
shutdown 自动杀掉进程
123原创 2022-09-08 16:34:33 · 222 阅读 · 0 评论 -
ChannelSftp 远程下载目录
直接下载, 出现 : not supported to get directory …ChannelSftp 并不直接支持远程下载目录,原创 2022-09-06 17:01:36 · 1403 阅读 · 0 评论 -
Java开发学习----Maven聚合和继承解析
如果把所有的依赖都放在了父工程中进行统一维护,例如ssm_crm,ssm_goods,ssm_order都继承至ssm_parent,并且ssm_parent里面包含了spring-webmvc、spring-jdbc、spring-test等依赖,那这样就会导致ssm_order项目中多引入了spring-test的jar包(但其实是不需要),如果这样的jar包过多的话,对于ssm_order来说也是一种"负担"。实际开发中,聚合和继承一般也都放在同一个项目中,但是这两个的功能是不一样的。原创 2022-09-06 11:28:50 · 411 阅读 · 0 评论 -
mysql数据库安装配置
管理员方式打开cmd,输入mysqld -install进行mysql服务的注册,执行了之后就会将mysql注册为系统的服务。内容是来自黑马老师和其他博客里的配置内容,应该大差不差,但是主要是黑马的老师说创建在安装的根目录下,运行下一步初始化之后报错了,弹幕提示说要装在bin目录下。在cmd内输入刚才设置的用户名密码mysql -uroot -p1234,就可以通过bin目录下的mysql.exe和mysql服务进行通信。在系统变量下的path中,新建一个%MYSQL_HOME%\bin。原创 2022-09-03 16:04:52 · 2281 阅读 · 0 评论 -
mysql分区
通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。...原创 2022-08-26 18:41:09 · 166 阅读 · 0 评论 -
Hbase 单机环境搭建
HBase的安装包里面有自带的ZooKeeper,HBASE_MANAGES_ZK环境变量用来设置是使用HBase默认自带的 Zookeeper还是使用独立的ZooKeeper。Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。(2)、无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一个表中的不同行的可以有截然不同的列。向表中添加数据,在想HBase的表中添加数据的时候,只能一列一列的添加,不能同时添加多列。原创 2022-08-20 15:39:24 · 1140 阅读 · 0 评论 -
一个非常简单用.NET操作RabbitMQ的方法
RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,RabbitMQ支持的语言更多、功能更完善。本文提供一种市面上最/极简单的使用RabbitMQ的方式(支持.NET/.NET Framework/.NET Core),只需要会调用以下三个方法,你就几乎可以掌握整个RabbitMQ的使用:(1) SendMessage,发送一个消息(2) GetMessage,获取一个消息(3) UseMessage,使用一个消息(连续使用)...原创 2022-08-16 09:52:51 · 468 阅读 · 0 评论 -
MySQL更新锁表超时 Lock wait timeout exceeded
添加嵌套事务需要考虑到死锁的问题。一个事务只有等全部方法执行完毕之后才会提交事务。含有嵌套的事务的更新,需要按照相同的顺序更新,不然可能会出现锁相互等待的情况。原创 2022-08-16 09:12:32 · 326 阅读 · 0 评论 -
CDH断电后cloudera-scm-server启动报错
报错背景:CDH未关闭的情况下,Linux断电,导致cloudera-scm-server无法启动。报错现象:输入启动命令之后:/opt/cm-5.15.1/etc/init.d/cloudera-scm-server start,cloudera-scm-server 会启动,但是几秒中之后就会死掉,显示:cloudera-scm-server 已死,但 pid 文件存在。于是查看日志文件:vim /opt/cm-5.15.1/log/cloudera-scm-server/cloudera-scm-原创 2022-08-15 09:52:35 · 1160 阅读 · 0 评论 -
java的stream让我灵光一现
在我的理解里面,InputStream实际上就是JVM和文件或者标准输入建立了一个桥梁,之后我们再去想要输入的的话就直接请求Stream。然而怎么用,在我家的32bit远古电脑的加持下,intellij根本下载不了,所以piao了个gitpod先用着。语言似乎没有什么难不难之分,一个平常的io或者是其他的基本运算真的也就算是学会这个语言了。这让我想到了我之前写快读模板的时候的xin_stream,这显然是个盗版玩意儿。后来渐渐明白了之后,我发现,java的库也就是api是真的丰富。...原创 2022-08-13 12:01:17 · 166 阅读 · 0 评论