自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Mysql】Lock wait timeout exceeded; try restarting transaction

出现这种问题通常是有事务长时间未提交导致的 可以使用以下sql 查询事务进程。然后通过 kill 线程ID 的方式 ,结束该事务。

2023-10-02 20:06:07 311

原创 springboot 捕获数据库唯一索引导致的异常

在一些业务场景中,需要保证数据的唯一性,一般情况下,我们会先到数据库中去查询是否存在,再去判断是否可以插入新的数据.如果是在高并发的情况下,可能还是会出现重复的情况.这时候可能就需要用到锁.也可以在数据库中设置唯一索引.如果使用唯一索引,在插入相同数据的情况下会抛出异常,这时候我们需要对异常进行捕获,并返回给前端可读性更高的提示内容。添加唯一索引(指定单个或多个列设置唯一索引)

2023-09-25 11:41:37 1088

原创 【支付系统】java springboot 生成二维码,二维码中文乱码

支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能.上述代码使用了hutool的ImgUtil工具类,参数含义如下。

2023-06-28 11:52:53 757

原创 解决Java 自定义字体产生大量+~JF***.tmp文件导致硬盘爆满

自定义字体产生大量+~JF***.tmp文件导致硬盘爆满

2023-06-28 11:30:00 1155

原创 【支付系统】接入多家支付之策略模式

总结: 以上就是通过策略模式优化 if 操作.这样只要添加一个支付平台,就只需要添加一个实现类即可.该文章省略了前端页面如何获取通道信息的,通常后端加一个支付平台,也需要在数据库中加一条对应的信息,并把这个支付平台的唯一标识存到库里.前端拿到数据库里的通道信息后,用户点击传到后端,具体根据实际业务来。1. 首先用户在页面上下单,会给服务器传递多个必要的参数, 支付方式(微信,支付宝),和支付通道(支付平台).首先页面上的支付方式,一定是动态查询出来的,当用户选择下单,一定要把通道信息发送给服务器.

2023-06-21 10:40:14 366

原创 【支付系统】如何生成订单号

通常我们都会用数据库中的主键作为订单号,而id的生成方式又以自增,uuid,雪花id最为常见.但是这些并不适合作为订单号.订单号一般要体现出年月日等信息.方便快速定位是哪个时间的订单.如果我们直接使用时间作为id,会有重复的可能.这里就给大家介绍一种最为简单的一种方式.我们数据库中的id依旧是自增id,不过这里加了一个前缀,在使用时我们使用时采用的是拼接的方式.添加订单的时候会将当天的时间同时插入进去.时间+自增id , 这里借用了数据库的自增id,达到不会重复的效果.又能体现时间。

2023-06-21 10:08:31 890 1

原创 【支付系统】如何实现自己的异步回调通知

接触过支付的可能都会了解到,当用户支付成功之后,支付平台会给我们发送多次通知,告诉我们支付成功,在接受到通知消息后,我们就可以对订单进行操作.以完成整个支付流程 .但如果我们要搭建自己的支付平台,同样的需要给使用我们平台的用户发送通知. 通常这个通知是以多次,不同时间间隔进行发送.避免网络问题,用户接收不到.下面就是使用定时器的方式给用户发送通知.当然前提和其他三方支付一样,用户下单时需要给我传递一个回调的地址.我们需要向这个地址发送多次通知.这里我们采用的是定时器的方式,更简单,更轻便.

2023-06-21 09:53:33 989

原创 【支付系统】加减余额/库存,防止负数和脏读

扣减余额时,检查当前余额数量和版本号是否一致,如果一致则进行扣减操作并更新版本号,否则说明有其他请求已经进行了余额扣减操作,此时需要重新查询当前余额数量和版本号,然后重新尝试扣减余额。如果获取锁成功,则进行余额扣减操作,扣减完成后释放锁。如果当前余额数量大于0,则进行余额扣减操作,并更新数据库中的余额数量。在使用进行余额扣减时,可能会遇到并发请求同时扣减同一余额的情况,这可能会导致脏读和负数余额的问题。总之,使用分布式锁和乐观锁等机制可以保证余额扣减操作的正确性和并发性,避免出现脏读和负数余额等问题。

2023-06-17 22:33:49 529

原创 esc退出全屏,视频播放器没有缩小

以上问题都是因为在浏览器全屏后,按esc 页面内没有见听到键盘事件的原因,在这里我们可以通过监听resize事件即可。esc退出全屏,没有监听到keydown , keyup事件。esc退出全屏,视频播放器没有缩小。直接上代码,以vue2为例。

2023-06-12 18:00:14 254

原创 【支付系统】支付系统中锁的作用-超卖及幂等操作

在支付系统中,最重要的两个步骤为下单和回调.皆需要加锁.下单加锁的作用: 通过下单订单号进行加锁,防止重复下单,或者锁库存防止超卖等回调加锁的作用: 支付系统的回调通常是间隔几秒进行多次发送,为了防止网络积压导致的同时收到多个回调,所以要对回调时携带的订单号进行加锁,确保只对订单执行一次操作.

2023-06-12 15:02:52 633

原创 【支付系统】核心支付流程

支付在产品中常见的用处为购买和充值.这两种功能操作大相径庭,其中购买相对充值多了很多步骤,它需要锁商品或者库存,还需要超时未支付取消订单等操作.在这篇文章中主要探讨支付部分,属于购买和充值公共部分.以上时序图并非完整,其实核心步骤就是, 下单-->获取二维码 ,扫码支付 -->异步通知 . 上一篇文章我们讲到了分布式锁,根据业务的不同锁作用的位置也不同.下篇文章我们讲下单时如何使用分布式锁。下面是绘制的简易支付时序图。

2023-06-12 14:17:05 455

原创 【支付系统】springboot整合redission分布式锁

在做支付相关的功能时,会大量的使用到锁的概念.为了以后方便扩展这里采用了分布式锁,而放弃使用内存锁.以上则为分布式锁redission的使用方式,下一篇将会讲解redission在支付系统中的用途。在支付系统中用到锁的功能基本为:操作余额,接收支付回调处理订单时,结算等。该文中使用的锁,采用的是相对流行redission进行锁的操作.

2023-06-09 16:14:51 265

原创 【支付系统】java springboot 通过ip获取所在地城市信息

我们可以获取到用户发起支付时的ip,我们只需要再获取到用户扫码时的ip进行对比,即可知道当前是否为异地支付.当然我们不能直接对比ip,因为用户通常使用pc端发起支付获取付款码,而支付时采用的是移动端.两端未必处于同一个网络,因此ip也是不同的.如果搭建自己的支付平台,异地支付限制是必不可少的一环.因为市面上一些非法份子,会使用我们平台生成的付款码进行欺诈行为.这也是我们必须杜绝的一种现象.因此限制异地支付就是其中一种手段.4. 使用方式 这里我们获取的是省份,也可以通过实际情况进行调整。

2023-06-09 12:07:45 411

原创 【支付系统】java如何获取请求的来源ip

对于接入支付,肯定是要获取用户发起支付请求时的来源ip,目前市面上的三方支付平台大多都需要传递请求来源,因为他们要保证下单和最终付款的ip处于同一个地点(具体规则各个平台不一致,但目的相同).当然如果你要制作自己的支付平台,那肯定是要使用者来传递ip,而不是平台自己获取ip,平台自己获取的ip只是使用者服务器的ip,这样是不准确的有可能会造成无法支付.以上就是获取用户ip来源的实现方式。

2023-06-09 11:17:32 317 1

原创 codemirror6 实现自定义代码提示

采用codemirror 6版本开发 ,要求:自定义代码提示 ,通过输入关键字,实现代码片段覆盖。

2023-03-31 17:12:41 3182 1

原创 element-ui表格border头部有空隙

element-ui表格border头部有空隙。

2023-02-01 11:10:15 287

原创 Spring Boot 如何返回纯HTML字符串,自动转成页面

在以往的开发经验中, 我们知道后端返回页面使用的是jsp或者themleaf这种模板引擎,但对于现在这种前后端分离的模式,为了偶尔一两个接口引入模板引擎很明显不太值当. 但如果遇到这种返回页面的需求该如何呢。如此 在浏览器上直接输入该接口 就会显示页面了。如下:我们可以拼接字符串 ,最主要的是使用。

2022-11-04 09:26:21 2591

原创 【前端vue】elementui textarea显示换行问题

自使用文本域时,涉及到换行时 ,显示到页面上时并没有换行的效果,其实文本域保存的换行是/r/n 浏览器无法识别这种换行 所以在回显时需要将其替换为浏览器可识别的代码。解决方案 将 文字内的所有空格 和换行 进行替换即可。

2022-10-28 10:42:47 5332

原创 【前端vue】 复制 选中 文本如何不触发点击事件

复制 选中 文本如何不触发点击事件

2022-10-26 09:46:49 1406 1

原创 [css面试题] 深入理解BFC , 其实没有那么难

块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。两个box如果都设置了边距,那么在垂直方向上,两个box的边距会发生重叠,以绝对值大的那个为最后结果显示在页面上。BFC 是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响外面的元素。

2022-10-02 20:16:40 445 1

原创 【快速排雷】JS判断对象是否包含某个元素

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

2022-09-19 12:21:45 2610

原创 JAVA变量

编程归根结底其实就是处理数据。把数据存起来,需要的时候拿出来,然后简单处理一下数据,然后显示到我们平常使用的浏览器页面呀,手机应用啊。大道至简,只要理解就好办了。变量一段代码int a = 1;其中a就是变量,他的名字叫做 ‘a’。通常我们叫它变量a;‘=’ 就是赋值运算符,将右边的赋值给左边的变量。就比如说 日常生活中的门牌号 ‘8号楼’ 就是变量名,而8号楼对应的这座建筑就是变量对应的值。运算符算术运算符 加法 + 减...

2022-03-09 11:00:48 2182

原创 java数据类型

要知道编程是为了解决现实中的问题,让工作生活更便利。所以编程和生活息息相关,不要因为陌生而感到恐惧。在生活中我们看到听到的都是所谓的数据,例如我们去超市购物,每个商品都有固定的属性,名称,价格,生产日期等。如果用编程语言来表述一个商品,首先我们要考虑的是如何记录这些商品的属性。什么是数据类型数据类型其实就是数据的分类,对应不同的数据使用不同的数据类型存放。比如 在实际业务中1. 一串文字,电话号,身份证号码等 我们就会使用字符串类型2. 积分,数量 这些纯数字我们就用数组类型..

2022-03-08 16:54:21 3250

原创 JAVA开发环境的安装

java代码的运行是需要jvm的支撑的,也就是说你的电脑想要运行java代码,就要安装jvm。下载地址:链接:https://pan.baidu.com/s/1v8bdttmipJjhrYpBdN5CyA提取码:cic2下载之后双击打开,一路下一步即可。设置环境变量创建JAVA_HOME点击新建:变量名"JAVA_HOME",变量值为刚刚安装的位置,通常为C:\Program Files\Java\jdk1.8.0_1212. 编辑Path编辑-&g...

2022-03-08 15:30:11 132

原创 如何成为CRUD工程师

可能很多人都看过类似【如何脱离CRUD工程师】这种的文章,当然这是正确的方向。因此还要学习很多技术,无论是从广度上还是从深度上,这永远都是一条没有尽头的探索之路。⭐️ 从标题可以看出,我们讲的是如何成为CRUD工程师。对于半路转行,或者即将毕业的学生来说,大部分人还是想要获取快速进入工作的能力。现在有大量的补课班,会从把所有知识都给你讲一遍。像一些多线程、servlet,甚至是strust。当然不是说这些内容不该学。但对于想要迫切进入这一行的人,这些都可以省去。😎😎...

2022-03-08 14:02:20 1089

原创 【nginx】后端 接收不到请求头中的token

今天在开发的时候发现前端明确向后端传递了请求头,但是后端就是接收不到,网上说是因为跨域问题.经过配置并不是跨域的问题.最后把问题定位在了nginx身上.前端请求如上图,自定义header 的名称中包含了 ‘_’ , 而且后端经过了nginx代理.underscores_in_headers on在nginx中默认过滤掉 带 '_'的请求头.我们只需要在nginx.conf 中添加underscores_in_headers on; #该属性默认为off,表示如果header n.

2022-02-09 17:37:30 3039

原创 【高德地图进阶】--- 添加城市版块纹理

在之前的【高德地图进阶】— 自定义地图中,有了解过如果给地图添加纹理. 但是该功能是收费的,这就劝退了不少人.通常的业务都是将城市版块抬高,这部分之前的文章也讲述过.都是在地图上添加覆盖物在高德的api中只有mesh有添加纹理并且可以做抬高版块的功能.但是该功能需要进行计算.对于复杂的城市版块,并不适用. 因此本章我们选择另辟蹊径效果图:制作地图图片这里以河北省为例,首先你需要找到河北省地图,越高清越好.比例一定要是实际比例.我是通过datav 截的图截取该地图之后,找到美工老.

2022-01-11 16:12:38 1597 1

原创 【高德地图进阶】--- 带图片的点(3)

绘制一个带图片的点,既要可点击,还希望点紧贴地图。可以批量管理,个人觉得用SimpleMarker是最佳的解决办法。他没有明显的缺点,除了需要额外引入组件库,用法和marker差不多。1、引入UI组件库<script src="https://webapi.amap.com/ui/1.1/main.js?v=1.1.1"></script>2、加载 SimpleMarker(模块名:ui/overlay/SimpleMarker)AMapUI.loadUI(['ove.

2022-01-06 15:36:21 783

原创 【高德地图进阶】--- 带图片的点(2)

上一章讲述了AMap.Marker,这一章使用第二种方式Loca来绘制带图片的点。经过测试 ,该api 在点击事件上有些问题。如果你的点会有重叠的可能,请谨慎使用该api。代码<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />.

2022-01-06 11:23:05 734

原创 【高德地图进阶】--- 带图片的点(1)

在使用地图开发时相信用的最多的就是点,其中难免需要使用到自定义图片的点。而且点还要具备,可点击,可携带数据等功能。点的绘制绘制带图片的点常见的方式有四种AMap.Marker :使用地图 JS API中的marker,通过其icon属性指定图片链接特点:绘制简单,对图片无要求,可批量管理。缺点:点有高度,不可调。如果不是水滴图,效果不是很好。Loca.IconLayer:使用Loca 数据可视化特点:绘制简单,点无高度,不会有视觉差,对图片无要求,可批量管理。缺点:点重叠,点.

2022-01-06 10:39:59 1080

原创 【热血传奇】 脚本开发之输入框

在制作npc的时候难免会需要玩家输入内容,传奇内置了输入框的功能在传奇中使用@@InPutIntegerX 弹出只可以输入数字的输入框@@InPutStringX 弹出可以输入文字的输入框后面的X 是 0- 99的数字 他们会自动创建变量,变量名为X对应的数字,变量值为输入的内容...

2022-01-05 16:19:54 2582

原创 【热血传奇】 脚本开发之变量详解

标识[001]-[499](各引擎不同标识的上限值不能。正常的是499个),这不是变量,这是标识标识的初始值是关闭的,它不会因为人物下线或服务器重启而重置标识和变量不同的是只有0和1,标识是私有的,不共享。一般适用于游戏内的个人任务系统相关命令格式:Check [001] 0 的意思是检测你的标识[001]是否关闭SET [001] 1 的意思是设置你的标识[001]为开的状态reset [100] 7 意思是将从100开始的7个变量回复到原始值0,就是把100 101 102 103

2022-01-04 15:57:10 5314 1

原创 【热血传奇】 脚本开发之初识命令

随便找个npc的功能代码上图可见,这个功能文件里面包含了三个代码段。[@main] 表示主函数(主代码段),也就是点击npc第一个执行的代码段[]传奇脚本是以中括号的形式给代码段命名的。\ 表示换行 有几个换几行<> 用来表示按钮,按钮中的 /@SY 表示点击按钮执行的代码段/ 转义符 如果直接 写@SY 那他就是普通的文字 ,而/@SY 表示代码段SY; 注释符号脚本自带了一些函数 例如@exit 表示关闭弹窗[@j] 代码段讲解#IF //if判断

2021-12-30 17:06:07 8576

原创 【热血传奇】 怪物添加(下)

怪物外形和动作主要是通过这三个属性来控制的攻击类型可选值(race)代码备注11无敌加瞬移攻击 主动攻击MOB和红人51不主动攻击死后物品不掉落要割的52不主动攻击死后物品不掉落 有一定几率会逃跑53主动攻击 物品不掉落82主动攻击 2x2范围内毒液攻击-弱81普通的攻击 进入范围自动攻击85地下钻出来 原地攻击 死后物品不掉落87主动攻击 射程590贴身麻痹石化攻击-弱92遇到范围外攻击会瞬移93.

2021-12-30 15:13:23 4477

原创 【热血传奇】 怪物添加(上)

怪物数据库下图文件中存放的就是怪物的信息,可以使用软件查看选定服务端路径 就可以显示怪物数据库了刷怪配置信息D:\MirServer\Mir200\Envir\MonGen.txt代码格式地图代码xy怪物名称范围数量刷新时间配置文件中的怪物名称 要和怪物数据库中的怪物名称一致在地图上放置怪物在配置文件中新增一条配置信息重启m2Server如果不知道那个是m2server ,就直接重启服务器添加新的怪物添加一条测试数据,完成后点击

2021-12-30 15:12:54 6220

原创 【热血传奇】 添加新地图

地图的组成地图数据 : 存放在客户端的map目录下 ,上一讲 添加npc 中的地图代码对应这个目录中的文件地图物件 : 存放在客户端的data目录下的 object.wil 、 smtiles.wil 、 tiles.wil地图配置地图的配置需要是在服务端的 D:\MirServer\Mir200\Envir\MapInfo.txt 文件中MapInfo文件格式新地图(可选)调用地图(地图代码)地图名称参数(多选)例如 下例中M001 表示这个地图文件是M001.ma

2021-12-29 17:41:45 2127

原创 【热血传奇】 添加npc

npc类型交易类 放在 D:\MirServer\Mir200\Envir\MerChant.txt 文件中管理类 放在 D:\MirServer\Mir200\Envir\Npcs.txt 文件中上面两个文件是设置npc的形象和地图位置添加npc一般我们都是把npc 放在MerChant.txt文件,而且需要遵守npc的添加规则格式代码格式(引擎不同 会有些许不同)npc功能文件的目录路径地图代码x轴y轴npc名称0-7NPC方向标识npc形象代码npc是否

2021-12-29 16:00:29 4754

原创 【热血传奇】 登录器配置

登录器配置器的作用就是生成专属自己的登录器,该配置器可以指定分区信息,按钮链接 等信息一个登录器 主要就是 三部分服务器列表:服务器列表的获取,只需要给登录器配置自己的服务器列表文件即可。新闻公告:是给登录器指定链接按钮:同样的也是给按钮指定链接即可配置器上面的两个图,可以看出来不论是服务器列表 还是一些按钮,都是需要指定为http请求链接。因此就必须要有自己的外网服务器。这里先不考虑按钮的链接,因为这需要自己制作页面。主要讲解一下服务器列表。我们知道服务器列表都是树形结构,而

2021-12-28 16:46:37 3948 1

原创 【热血传奇】 认识客户端

客户端主要就是三个目录wav 声音map 地图data 用来存放客户端的数据(npc 怪物等等)data目录讲解:cboeffect.wis : //各种连击的魔法效果。cbohair.wis ://各种连击时头发和斗笠的动态效果cbohum.wis ://各种男女衣着时打连击的动作。cbohum3.wis ://各种男女衣着时打连击的动作。cbohumeffect.wis ://各种男女连击时翅膀和发光武器的效果。cbohumeffect2.wil ://各种男女连击时翅膀和发光武

2021-12-28 11:21:03 553

原创 【热血传奇】 认识服务端

MirServer(服务器目录)DBServer(数据库服务端)ConnectionFDB(人物数据库,数据库格式为传奇自定义格式)Log(角色选择服务端日志)!AddrTable.txt(IP地址配置)!IdList.txt(交费账号列表,!Setup.exe中ServiceMode=TRUE时起作用)!ServerInfo.txt(IP地址配置)DBServer.exe(数据库主程序)DBSrc.ini(数据库主程序配置文件)LoginGate(登陆网关:ID登录接口)..

2021-12-28 10:37:42 4902

adcode与省市行政区对照表.zip

adcode与省市行政区对照表.zip

2022-04-02

SOC 代码、名称、Bounds对照表下载.zip

SOC 代码、名称、Bounds对照表下载.zip

2022-04-02

electron-build.zip

electron-build.zip

2021-12-07

[Java语言程序设计].(Introduction.to.Java.Programming,.Brief.Version,.8ed).pdf

本书是学习Java语言的入门教材。全书从Java语言的基本特点入手,详细介绍了Java语言的基本概念和编程方法,同时深入介绍了Java的高级特性。本书共分为12章,涉及Java中的基本数据类型、基本语法、类的概念及特性、异常处理、用户界面设计、小应用程序、输入/输出操作及线程等内容。

2017-10-15

代码大全2中文版(完整清晰版)].pdf

代码大全(第2版)》是著名IT畅销书作者Steve McConnell十一年前的经典著作的全新演绎:第二版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。

2017-10-15

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

TA关注的人

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