自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

k的博客

成长经历

  • 博客(282)
  • 资源 (3)
  • 收藏
  • 关注

原创 git 代码回退操作

第一个reset,是完全把代码回退。适合回退本地个人分支。比如选择hard,然后再强制推送到未保护的分支,实现代码完全回退。相当于你由A该成了B,然后push到了远端,在手动的把代码改回去,然后commit掉,只剩下push了。是把你之前修改的,又改了回来,然后你再push就可以了。第二个,适合有保护性分支的代码回退。

2025-02-24 18:43:21 262

原创 DIP的实际举例

SOLID原则。依赖倒置原则(DIP)的核心是高层模块不应该依赖于低层模块,二者都应该依赖于抽象(接口或抽象类)例如,随着业务的发展,订单总金额的计算规则可能需要根据不同的客户类型或促销活动进行调整。如果最初没有使用接口来抽象计算逻辑,那么可能需要直接修改具体的业务代码,这会增加代码的修改风险和维护成本。而使用接口可以方便地实现不同的计算策略,通过依赖注入等方式进行切换,提高系统的灵活性和可扩展性。接下来我们逐步优化,把他变得满足SRP和OCP、DIP原则了。

2025-02-22 21:06:18 545

原创 mybatis @MapKey(“id“)的坑

sql层的写法如下,本来返回一个map,现在用了mapkey指定id再次map一下。本地还特地验证过,没问题的。在生产上打印了日志,发现该map也是有对应的key的。这段代码生产上报空指针。用的3.5.6版本。

2025-01-23 12:23:02 133

原创 @DS datasource多线程环境下的问题

原因:该版本下,保存数据源的类使用的是InheritableThreadLocal,所以子线程创建的时候,会继承父线程的东西。mybatis-plus的@DS注解,在多线程情况下,导致动态数据源切换有问题。但是也有人觉得使用threadlocal的版本是bug。解决:切换一下版本即可,其他版本使用threadlocal。

2024-11-16 17:07:57 238

原创 文件分块上传

讲了理论,接下来写一个简单的demo,可以实现暂停和恢复上传。核心就是分块上传,可以把代码里面的数据都放到数据库里即可。

2024-10-08 10:20:30 225

原创 idea git stash失败,用shelve替换

不知道啥原因,直接用git bash工具可以stash,出现如下,点击确定。但是idea还是不行。

2024-09-12 19:43:20 296

原创 java 反射

总结一下,方便自己查看按照步骤来:获取class对象,然后实例化,然后调用实例化对象的哪一个方法或者得到他的哪一个变量。

2024-09-01 16:03:24 345

原创 Guarded Suspension 保护性暂定模式 以及嵌套死锁问题

Predicate:保护条件。只有保护条件为真(或为假),才去真正执行目标动作。GuardAction : 抽象了目标动作(里面的call()方法),并关联了目标动作所需的保护条件(predicate)。意思是,如果predicate为真,才去调用call(),否者就去阻塞。当然阻塞和唤醒都是通过Blocker实现的。它的作用是判断保护条件并阻塞调用的线程;唤醒阻塞的线程/*** 在保护条件成立时立即执行目标动作。* 否则阻塞当前线程,直到保护条件成立*//**

2024-08-31 23:59:16 230

原创 Java 线程实现暂停、中止

用户可以开启任务,暂停任务和中止任务。用户开启任务后,可以随时暂停或者中止。暂停后又可以回到原进度继续运行。

2024-08-31 20:49:36 1384

原创 apache httpclient速成

导入依赖。

2024-08-25 20:01:40 1123

原创 索引排序以及explain

explain和索引排序的一些常见问题

2024-07-31 17:23:58 1011

原创 ==和equals的区别以及为什么重写hashcode

equals一般是比较对象的地址,但是具体分析,如integer里面的equal,就是用里面的基本数据类型int的值取比较的。(new Integer这种不生效)这样,生成的两个对象用==就相等了。且两个对象,用equals是相等的,但是hashcode是不相等的。hashcode一样(hash冲突时),euqlas不一定相等,因此,这两个一般需要同时重写。,这和我们的认知相违背。既然这俩对象相等,那么就应该是同一个key。那么会出现:在put时,这两个对象被放到了0和1两个位置,但。

2024-07-29 17:59:36 261

原创 java 字符串a+b到底生成几个对象?

字符串常量池保存在堆里面。为了节约空间,如果常量池里面有,就不需要创建对象,只需要返回常量池里面的引用;如果常量池没有,就先创建常量池里面的对象(方便其他地方用到),然后在堆里面在新建一个对象。

2024-07-29 17:33:14 414

原创 表字段优化

这一章主要是讲表字段的一些优化和陷阱。

2024-07-29 16:28:56 920

原创 Netty HTTPS服务端高并发宕机案例

导致NioSocketChannel泄漏的可能原因有两个。(1)代码有缺陷,HTTPS客户端关闭连接之后,服务端没有正确关闭连接。(2)服务端负载比较重,客户端超时之后的断连和重连速度超过服务端关闭连接速度,导致服务端的NioSocketChannel发生积压。随着积压数的增加,导致占用的内存快速增加,频繁GC使得服务端处理更慢,积压更严重,最终导致OOM异常。在贴一个NIO的客户端、服务端的模型。不要忘了客户端也可以连接多个服务器,可以用多路复用来增加吞吐量。

2024-07-21 13:24:30 1225 1

原创 IO模型和NIO、BIO、AIO和reactor模型

发现有时经常搞混BIO和reactor模型的关系。这里记录下。

2024-07-21 10:59:58 772

原创 netty channelReadComplete和channelRead执行时机

当收到一个完整的应用层消息报文,channelRead会被触发一次。每次读取完Socket的接收缓冲区的报文,channelReadComplete会被触发一次。

2024-07-21 00:08:44 942

原创 netty中的异步以及promise分析

Netty,所有的网络I/O操作都是异步执行的。netty 中的API操作,大都是异步的,会返回一个future,如有必要,我们需要监听该future的处理结果 或者同步阻塞等待异步的返回结果。这个基础就是多线程交互:一个线程发生了变化,如何通知另一个线程呢?下面看一下常见的方法或问题。

2024-07-21 00:02:49 1528

原创 ByteBuf释放注意的问题

ByteBuf释放注意的问题

2024-07-20 08:09:20 1071

原创 netty 自定义客户端连接池和channelpool

自定义线程池的问题;使用netty自带的channelpool

2024-07-20 05:39:02 890

原创 addLast方法指定EventExecutorGroup

netty addLast(group,handler) 以及 SINGLE_EVENTEXECUTOR_PER_GROUP

2024-07-20 00:59:04 1153

原创 mysql 5.7版本对order by和group by的问题

但实际上在5.7版本中,mysql做了优化,会先执行group by。order by就没有执行的必要了。我们期望先执行()里面的代码,然后再执行group by。

2023-10-16 22:03:29 233

原创 mysql 反斜杠\的坑

如果是模糊查询like, 需要把\替换成\,然后框架再转换成\\才可以了。(java 代码反斜杠使用\表示,所以替换就是把\替换成\\就可以了)如果是等值查询=,这样的不需要处理,好像是因为mybaits框架自动把\变为了\。mysql数据库中字段存的带有\,比如: name\pojo。mysql会对\进行转义,可能导致问题。在java代码中使用mybatis查询。

2023-10-16 21:59:35 544

原创 mysql超级聚合with rollup

它是在group by后面出现的列中,找到第一个不相同的值,把它设置成null。with rollup的工作原理就是在group by分组后,进行超级聚合。比如前两行,当在product列不同时,才会设置成null。

2023-09-27 00:20:34 465

原创 工作中遇到的事务

当时我觉得是mysql的隔离级别是 可重复读导致的。为了防止并发,在component层加了分布式锁。现在我也怀疑,是不是在事务提交前就释放了锁呢?线程A获取到了锁,然后执行下面的操作。线程B查数据库,但是校验失败了。在service层加了事务。线程A执行完了之后,释放锁。遇到了一个很有意思的问题。

2023-09-23 17:36:03 320

原创 字符集xxx

基于 ASCII 码的标准,ISO 2022 制定了8位的标准:1. 0x00 - 0x1f(0-31) 保留给 C0 控制块2. 0x20 - 0x7f(32-127) 保留给 G0 图形块(包括空格和 DEL)3. 0x80 - 0x9f(128-159) 分配给 C1 控制块4. 0xa0 - 0xff(160-255) 分配给 G1、G2 和 G3 图形块,用转义序列切换GB2312 是双字节编码,为了与 ASCII 码区分开,字节的第8位必须是1,所以GB2312是8位编码。

2023-09-18 22:41:40 226

原创 mybatis中的association

association为了解决“ 有一个‘’,也就是包含的关系。假设学生对象里面 有老师对象。

2023-09-17 16:51:28 2805

原创 关系型三大范式与BCNF有什么用呢

我们在设计sql表的时候,是如何使用三大范式以及BCNF的呢?

2023-09-16 18:03:42 192

原创 git push之后的撤销操作

点击其中一条git记录,然后右键单击“reset current branch ti here”,然后再点击hard。首先按照上一步,reset回当前分支,然后让本地强制替换个人仓库。commit之后,没有push,想要撤销:undo commit。push代码到个人远程仓库之后,又从主仓pull了一下。撤销单个:git reset HEAD xxx。add了之后,想要取消add, 未实验!全部撤销:git reset HEAD。xxxxxx是你想要更新的分支。xx是你个人远程仓库的名称。

2023-08-10 16:00:44 1378

原创 实战-单例模式和创建生产者相结合

集群相当于多个进程构成的一个集合,“集群唯一”就相当于是进程内唯一、进程间也唯一。进程在使用这个单例对象的时候,需要先从外部共享存储区中将它读取到内存,并反序列化成对象,然后再使用,使用完成之后还需要再存储回外部共享存储区。为了保证任何时刻,在进程间都只有一份对象存在,一个进程在获取到对象之后,需要对对象加锁,避免其他进程再将其获取。我们知道,经典的单例模式是进程内唯一的,那如何实现一个进程间也唯一的单例呢?分布式其实保证集群内唯一,就是不管你有多少台机器,全局就一个,唯一的一个。2.王铮《设计模式之美》

2023-07-29 10:40:46 1357

原创 mysql cast和concat函数性能比较

最后发现,inner join aa on aa.business_id = cast(bb.id as char)太慢了,aa表的另一个唯一的字段 business_id存的是varchar类型,bb表的id是主键,自然保存的是int类型。有一段sql,最里层的子查询aa才4千多条,用时就2s多。改为concat(bb.id, ‘’)就快了很多。所以实际情况实际考虑。

2023-07-29 10:23:00 350

原创 MSER常见参数

MSER用于文本检测已经成熟了,现简单使用来识别车牌号。首先生成MSER区域,然后按照矩形大小 从大到小排序,去掉重复的矩形,保留最小的矩形。 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); MSER mser = MSER.create(5,350,1200); //MSER.create Mat img= Imgcodecs.imread("D:\\PlateDemo\\src\\main\\reso

2022-04-09 23:07:14 1143 1

原创 获取轮廓、获取内接矩形

对原图像,使用Imgproc.findContours获取轮廓。对轮廓,使用Imgproc.minAreaRect获取轮廓的内接矩形(可能会有旋转角度)。对上述内接矩形使用boundingRect,获得无旋转角度的矩形。如下图,红色是获取轮廓的内接矩形,黄色是获得无旋转角度的矩形。...

2022-01-22 11:55:34 2898

原创 cvtvolor()关于HSV输出问题

src使用imread读入,Imgproc.cvtColor(src,imgHsv, Imgproc.COLOR_RGB2HSV);然后遍历输出imgHsv的值,发现H-S-V均是61-146-196与135-203-216由于H是0-180度,612=121,146/255≈57,196/255≈77,HSV就是(121,57,77)与原图可以对应。但是下一组的1352=270,严重不符。SV倒是符合,暂时不知道原因。打算自己计算HSV而不是用函数、 Mat imgHsv=new Mat

2022-01-19 20:15:27 420

原创 入门级Mat (java版)

javaMat可以保存图片。图片RGB-是三通道,所以Mat也包含了通道数。列举最常见的一些方法文章目录创建理解如何保存get方法put方法push_backreshape创建 Mat mat = new Mat(3,2, CvType.CV_32SC3);第一二个参数是行列数,第三个参数是mat的类型。这里32SC3表示一个像素用了32位,S代表signed int,C3代表通道数是3。即 创建一个3X2的矩阵,此矩阵具有3通道。每个点能保存int类型数据未带通道数的默认是1。例如,CV

2022-01-15 16:34:05 3548 1

原创 opencv 文档

百度一下,很多都是类似,讲不明白的。于是找到了一个不错的网站,记录一下,防止后续丢失https://docs.opencv.org/3.4.15/index.html

2022-01-14 15:22:44 1858

原创 关于RotatedRect与getRotationMatrix2D 的角度问题

在一副图片中,画出旋转矩形。然后将图片旋转,使得矩形放平。注意旋转矩形是带文字的,所以要不影响阅读。

2022-01-11 17:10:24 752

原创 EDIUS输出到文件

AVCHD 蓝光标准H.624/AVC是 MP4标准(开始音频预设为32kHZ,不正确,需要将工程改为48Khz/2ch即可)

2021-08-23 17:23:57 370

原创 EDIUS新建项目工程设置

文章目录视频预设什么是16:9?音频预设高级设置序列设置轨道视频预设DCI 4K 4096 * 2160 24PDCI 是4K的标准,画面为4096 * 2160 ,24P代表每秒24张页面。你在国内就用25,在美国就用30,拍电影用244K分辨率有3840x2160“QFHD”和4096×2160“4K2K”像素2种规格,两者均称为“4K”。QFHD是4k,即超高清。 HD是高清,前者像素数是后者4倍什么是16:9?根据人体工程学的研究,发现人的两只眼睛的视野范围并不是方的,而是一个.

2021-08-23 17:03:43 1557

原创 idea clone 华为云仓库

clone 时,使用HTTPS克隆一直出现git login,将自己的华为云账户密码输入,弹出三次。输入后,失败。报错是此仓库没找到。**解决办法:**使用SSH密钥打开 git bash:输入如下最后成功导入

2021-07-17 13:47:14 564

微信记账前端;微信小程序

微信记账前端

2022-03-16

YALE数据库图片训练集

YALE数据库[5]是由耶鲁大学计算视觉与扼制中心创立,包括15位志愿者,每个人有11张不同姿势、光照和表情的图片,共计165张图片,图片均为80*100像素的BMP格式图像。我们将整个数据库分为两个部分,每个人的前5幅图片作为网络的训练使用,后6副图片作为测试使用。

2021-06-28

wav简易音乐播放器java实现

用Java简单实现了WAV音乐播放器的功能,比如添加歌曲,添加歌词,上一首,下一首,随机播放,暂停,顺序播放,进度条,控制音量等简单功能。

2020-03-30

空空如也

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

TA关注的人

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