- 博客(236)
- 收藏
- 关注
原创 【Windows本地端口占用脚本自动化】
本地启动多个Java微服务,因为停电或者内存回收原因,IDEA直接退出;再次启动各个服务会提示端口占用。每次都cmd输入命令手动Kill比较繁琐,可以把此脚本放在桌面上作为一个小工具,运行即可。代码(核心部分是chatGPT自动生成)
2023-12-05 10:36:43 579
原创 修复存量数据技巧之【存储过程】
开发迭代的过程,你是否经常遇到需要考虑:增量、存量数据如何处理的场景?比如一个新功能,对增量的数据不用过多考虑,不过对存量的数据,需要处理后才能满足升级需求。这里简单记录下在修复存量数据过程中可能会用到的一个技巧【存储过程】。存储过程一般很少用,笔者写过和接触过的存储过程寥寥无几。有的领导在编码规则中会专门强调尽量不用或者少用存储过程。不过,在修复数据,数据量不大又需要遍历的时候,走走存储过程还是蛮方便的。数据库前期业务未考虑幂等,未对关键的几个字段比如:company_id、employee_id, ty
2022-06-13 08:02:51 693 1
原创 技术视角看我的一码通-系列2
文章目录两个核心入口1) 小程序2)进入方式核心接口使用缓存小伙伴们,大家好。上次那篇文章-“技术视角看我的一码通【系列】”简单的从扫描一码通后二维码中包含的网址信息分析了下,今天我们继续。这篇文章主要是为下期深入讲解【缓存】做个铺垫,以及准备一下缓存所需的基本环境。两个核心入口笔者把“一码通”保存在了手机桌面,所以打开一码通非常方便。一般打开一码通的步骤是: 支付宝: 支付宝首页 -> 一码通(已添加到了首页)或者:首页-》 搜索一码通-》 进入 微信: 微信 -》 发现 -
2022-01-10 04:16:29 1554
原创 缺乏架构思维
文章目录一、什么时候会觉得欠缺架构思维?二、怎么办呢?三、的有时候,遇到一个偏架构的问题,立刻就需要一个“英雄”站出来?也就是“还有谁?!”,此刻,自己如果脑袋空空或者畏畏缩缩,是不是会有深深的挫败感?为什么机会来临的时候,却不敢站出来?为什么问道:你有什么想法?的时候,就总是只是沉默?……此刻,最能说明能力配不上梦想。一、什么时候会觉得欠缺架构思维?举几个实战场景吧?1、关于认证和鉴权这块,应该如何设计呢?目前系统的认证和鉴权是否有问题?哪些地方考虑得比较好?哪些还有欠缺?2、前后端部署,是都
2021-10-06 08:59:53 278
原创 Git-2-命令行大总结
读者朋友,晚上好。三年前就接触Git了,是个小工具。最新学习Docker,对当时学习Git的过程还记忆犹新,这里就录制了些视频权当总结。如果你是git新手,建议完整看下这个系列视频(视频有先后顺序,紧密相关,环环相扣),因为笔者对网上关于Git的文章,从现在的视角去看,没有一篇比较满意的。为什么?因为一上来就是命令。没头没尾,零碎得很。该系列分享了如何搭建一个属于你自己的Git环境和基本的命令,相信你从中能感受到笔者很早之前个人学习所留下的痕迹。
2021-07-24 21:36:02 201
原创 JVM-5-垃圾收集算法
读者朋友,今天介绍下垃圾收集算法。之所以会有不同的垃圾收集算法,就是因为在JVM的Heap区,有着分代的假说。之所以要分代,是因为不同“代”之间区别很明显,有着显著不同的特征,正因为这些显著不同的特征,所以针对各个代就有了针对性的“策略”——不同的GC收集算法。分代(Generational Collection)假说分为两种:分代原理弱分代假说大量对象都是“朝生夕灭”弱强分代假说熬过多次垃圾收集的对象就越难以消亡那么分代是依据什么来分的呢?依据:对象的年龄。对象的
2021-05-25 23:35:47 137
原创 JVM-4-对象已死?
读者朋友,晚上好,这里简单介绍下在JVM中是如何判断对象是否存活的。只有死去的对象,GC过程就会回收掉,所以GC的第一步是判断对象是否已死。文章内容均来自:《深入理解Java虚拟机 JVM高级特性与最佳实践》 周志明著 第三版机械工业出版社判断对象是否存活有2种方法:一、判断对象存活的2种算法方法原理优点缺点引用计数法(Reference Counting)对象中添加一个引用计数器,有一个地方引用,就+1;引用失效就-1简单易懂相互循环引用,造成“假引用”
2021-05-25 00:26:19 196
原创 技术视角看生活-2-为什么来电后必须立刻接听?
大家好!之前的技术视角看生活-1-目录篇里抛出的第一个疑问就是:高德地图语音播报时,后台正在运行的酷狗音乐声音会自动变小,为什么?来电后无论在打游戏、看视频、听歌,手机主界面立马会显示来电界面,必须得马上处理,为什么?听歌时候,然后看抖音,酷狗播放器会自动暂停,为什么?其实,上面几个为什么的本质,都是关于【手机软件平台架构】方面的。如果想真正解释清楚,最好需要有实际APP的开发经验,开发一个APP,从开发、发布、安装、自测,走完整个流程自然就对以上原理很清楚了,因为笔者之前都是后端开发
2021-05-20 03:24:05 426
原创 技术视角看生活-1-目录篇
嗨,读者朋友,大家好!回家路上边导航边听歌,无意间发现高德地图语音播报的时候,酷狗音乐正在播放的歌曲的声音会自动变小,待导航语音播报完毕,后台的音乐声音恢复正常……日常经意或者不经意都会基础大量类似的现象,加上最近看JVM,着实有些枯燥,所以不妨出个专栏,专门记录零碎的生活中发现的技术之美。一、地图导航语音播报时后台运行的音乐播放器声音会自动变小与此类似的现象还有:1.2 来电的时候,无论在听歌还是刷视频,来电会充斥整个页面,必须立刻处理1.3 听歌时候又开始刷视频,音乐播放器会自动暂停播放背
2021-05-20 00:49:57 146
原创 JVM-3-实战制造OOM
读者朋友,下午好。这里从JVM的堆、栈、方法区(常量池)、本机直接内u存四个维度分别人为制造OOM-Out Of Memory。目的:1、怎样的操作会导致在指定区域发生OOM?或者StackOverFlow?2、出现这种情况时候如何分析?如何解决。(不是重点,后面学习了各种检测工具之后回头思考)以下代码示例均来自:《深入理解Java虚拟机 JVM高级特性与最佳实践》 周志明著 第三版机械工业出版社1、堆溢出要使堆溢出,只需要创建大量对象即可,并且保证对象在使用。package com
2021-05-16 18:08:34 1896 3
原创 JMV-2-基本构造和各区域作用
读者朋友,下午好。这里介绍下JVM的组成、各部分作用、各部分容易发生的问题等,一图胜千言。当然也可以用电脑画图,但是确实没有手绘方便。
2021-05-16 15:03:38 300 1
原创 JVM-1-虚拟机系列学习目录
大家好,这里记录学习JVM的过程。所有内容均来自:《深入理解Java虚拟机 JVM高级特性与最佳实践》 周志明著 第三版机械工业出版社我们不妨带着以下问题来阅读:JVM的构造是怎样的?没个区域主要做什么?各个区域容易发生什么问题?OutOfMemoryError、StackOverFlow、内存泄漏、内存溢出的具体示例?如何证明在哪个区域发生了?如何解决?GC机制——如何判断哪些对象可回收?GC的常见算法及优缺点?知道这些的作用?排查JVM故障的工具有哪些?怎么用?JVM如何调优
2021-05-16 14:52:34 175
原创 训练程序思维的些许益智题目
大家好!其实,写好程序,本质是什么呢?逻辑思维。逻辑思维本质是什么呢?本质是推理和演算、总结和归纳、假设等等,这些的本质又是什么呢?个人觉得应该是数学吧。所以,这里把自己曾经接触过的一些益智的训练思维,也算是编程思维的题目分享出来,大家有更简洁的思考方法,欢迎评论留言。程序也是如此,实现一个功能有多种方法,尤其是一些算法,用程序表达出来并不是特别难,难得是理解背后的数学逻辑。一、题目一个水池装有甲乙两个水管,单开甲管4小时能注满,单开乙管5小时放完水,两管同时打开多少小时注满水?二、答案
2021-05-09 17:56:47 226
原创 并发-2-竞争条件例子、锁对象
读者朋友,下午好!今天分享一个很好地讲解并发中竞争条件的例子——银行在多个线程时候,随机在2个账户之间随机的转金额,在未加锁的时候,账户总金额会出乎意料的不一致;我们希望的是无论怎么转账,银行所有账户的总金额是固定不变的。示例代码来源《Java核心技术 卷1 第10版》 Core Java Volume I-Fundamentals(10th Edition)[美] Cay S.Horstmann 著周立新 陈波 叶乃文 邝劲筠 杜永萍 译代码库:git@github.com:cmhhc
2021-05-05 19:02:38 245
原创 安全系列-2-学习目录
读者朋友,中午好!实现一个功能,如果不考虑性能、安全等因素,只管写还是挺爽的。一旦要考虑这些因素,就需要更加小心谨慎了,因为那时候你是无知者无畏嘛。最近修复了一些安全单子,想借此机会系统全面的记录下安全相关的知识。在安全领域,也是有一套规范的,类似编程语言有编程语言的规范,这些规范明确了我们不能做什么,这么做了有啥问题。因此,我们就站在巨人的肩膀上,避免重蹈覆辙。因为,每一次攻击背后,都是惨痛的“牺牲”!商场如战场,编程领域何尝不是?每次攻击背后,都要牺牲大量财力、牺牲大量人力时间去挽救损失…这里的记
2021-04-24 10:49:01 171
原创 并发-1-从直观的swing弹球感受并发
大家好,从今天开始,有计划的恶补一下并发知识。目录见:目录示例代码来源《Java核心技术 卷1 第10版》 Core Java Volume I-Fundamentals(10th Edition)[美] Cay S.Horstmann 著周立新 陈波 叶乃文 邝劲筠 杜永萍 译一、效果图上图的却显示无法通过多次点击Start出现多个弹球,Close也没法关闭。上图用到了线程,可发射多个弹球并且可Close。二、示例代码git仓库 git@github.com:cmhhcm/g
2021-04-18 16:55:59 186 1
原创 并发-学习计划
一、夯实基础根据《Java核心技术 卷1 第10版》来夯实直观demon感受线程线程中断线程状态新创建线程、可运行线程、被阻塞线程和等待线程、被终止线程线程属性同步线程安全的集合Collable 和Future执行器10.同步器线程与Swing二、实战案例从codeHub或者收藏的公众号中寻找实战案例:>=10三、落实在作品中思考怎么融合到自己的代码中,并做个作品出来。...
2021-04-18 15:44:16 108
原创 安全系列-2-自定义参数校验-枚举校验
Hi,大家好。今天实现一个枚举类型的参数校验器。效果图:一个接口在Controller层,如果有个属性是枚举类型,我们把参数定义为String呢,还是定义为枚举?类型优点缺点String方便灵活,想传啥传啥其他开发看到此代码不明确可以传什么值枚举非常明确知道可以传哪些值不好做参数校验,容易报HttpMessageNotReadableException类型的异常项目地址:还是在之前的参数校验项目基础上开发的git@github.com:cmhhcm/S
2021-03-07 00:02:55 774 1
原创 SpringCloud-3-Eureka实现服务间调用
Hi,大家好。目标:3个SpringBoot的项目,一个作为EurekaServer,另外2个作为客户端,客户端A用四种方式调用客户端B来实现通信。知识点:Eureka的基本配置界面查看服务注册情况及判断是否真正注册成功三种方式实现服务间调用服务名作用简称EurekaServerEureka服务器ParamsValidation客户端客户端BEurekaClient2客户端客户端A注册效果:客户端分别使用:@DiscoveryClie
2021-03-04 01:53:34 2201 3
原创 SpringBoot-2-MyBatis实现增删改查
文章目录一、整体包结构二、核心依赖三、application.yml配置四、mvc三层五、总结这里介绍下Spring+MyBatis实现CURD。后期我们可以在这个基础上逐步去增加一些我们想要实现的功能和技术。实现思路:新建SpringBoot项目(web) -》 引入MyBatis依赖 -》连接数据库配置 -》 Mapper层和Mapper.xml -》 Postman自测这里暂不考虑用其自带的18种方法。项目整体代码详见:git@github.com:cmhhcm/SecurityTes
2021-01-31 19:05:16 235
原创 能写出一个生产笑话的程序吗?
文章目录这是人工智能、大数据的时代,很多程序已经可以写诗、作词、作曲了,不过我觉得这些确实有难度,今天突然来了灵感,用程序来创作笑话,会是什么结果呢?当然,怎么创作,这里就不show code了,因为:暂不会。不过,不妨先来分析分析写这种程序的思路:1、笑话的定义:你知道吗? 有一个专门的笑话公式呢!完美笑话公式: x=(fl+no)/p其中x表示笑话的完美程度f表示笑料的有趣程度l表示笑话的长度n表示听笑话者笑得前仰后合的次数o表示引起尴尬的程度p表示双关语的数量既然公式
2021-01-27 23:55:40 159
原创 安全系列-1-自定义参数校验
文章目录一、背景二、实现效果三、如何自定义参数校验?1)准备工作2)自定义注解3)实现ConstraintValidator接口,重写isValid方法4)参数异常处理四、遇到的问题1、@Validated未生效,自定义注解断点进不去2、开始引入了thymeleat模板,跳转到了页面;或者报错:3、返回的数据格式不是我们预期的JSON格式。五、思考1、ConstraintValidator 校验的本质是什么?拦截器?2、需要注意一下@pattern中regex表达的是:如果不满足表达式,才会报错。一、背景
2021-01-24 12:30:22 418
原创 IDEA无法启动或者启动闪退
文章目录因为尝试按照网上教程去破解IDEA,尝试了几次后虽然当时激活到了2089年,但是过一阵子又回归到了需要注册的状态。索性下载最新版,发现启动不了。教程:https://www.cnblogs.com/yangchangsong/p/12693230.html现象:点击IDEA启动图标,无反应;在~/目录下也未发现任何启动报错输出的log解决办法:找到idea.vmoptions这个文件,删除java-agent的内容即可。该文件位置:不同操作系统路径不一样,笔者系统是Mac,路径是:
2021-01-17 11:24:40 1339
原创 short s1=1;s1 = s1 +1有什么错?看这篇就够了。
文章目录一、这篇博客的不同二、代码示例三、总结一、这篇博客的不同题目:第一题:short s1 = 1; s1 = s1 + 1;有什么错?* 第二题:short s1 = 1; s1 += 1;有什么错?* 第三题:第三题:short s1=1,s2=1;short s3=s1+s2;有什么错?看了网上相同题目的解析,要么太啰嗦,要么知识点讲解得不全、不透彻,笔者重新梳理了下。所以看这篇就够了。二、代码示例具体见githubhttps://github.com/cmhhcm/new
2020-09-01 06:05:14 1108
原创 技术面试感想一二
文章目录一、面试应该是一个比较轻松的过程二、主动投简历而不是被动回答三、面试不是“应试”,请丢弃"应试思维"四、相信自己五、不要为了技术而技术疫情期间,都说不敢换工作,或者换工作要慎重之类的。笔者想好了要换,就裸辞了。总共面试了十五家左右(Java),用时差不多两个月。最终入职哪里,并不重要,重要的是从中感悟的东西,个人觉得也许对其他伙伴有所帮助。笔者在上海面试了十二三家,在西安面试了五家。在上海呆了三年多,今年回西安,想离家近点。感悟有以下几点。一、面试应该是一个比较轻松的过程如果你面试面的很辛苦
2020-08-30 11:27:43 642 1
原创 分布式中间件-Redis-1-SpringBoot+Maven+MyBatis环境搭建
文章目录一、结果展示二、我学到的1、Maven构建多模块2、lombok的使用3、maven没有gradle方便三、对作者的建议3.1 有误之处3.2 期待改进之处读者盆友好,这段时间集中精力研究下Redis,把实战、学习过程记录下。内容来自:《分布式中间件技术实战(Java版)》 钟林森 编著这本书果然很“实战”,非常容易上手。看了第一篇后立马实战了下,除了安装lombok插件花费了点时间,基本2-3小时搞定吧。作者书上也分享了git源码,笔者实战的源码也分享出来。https://gi
2020-08-20 05:23:52 279
原创 从IDEA的一次意外退出发现JVM
文章目录一、背景:1、排除内存不够。2、看日志二、发现JVM三、总结一、背景:2020.1的IDEA到期了,网上寻找各种办法,然后把“全家桶” jetbrains-agent.jar拖入的IDEA后,发现IDEA打开就闪退;无奈重新安装IDEA后也闪退。按照网上解决思路:1、排除内存不够。看下mac的内存 :1)活动监视器看;2)命令行看:echo -e "\n$(top -l 1 | awk '/PhysMem/';)\n"笔者是Mac,在应用程序中右键Idea的标志:显示包结构,找到
2020-08-08 17:22:00 4015 2
原创 java并发编程-1-多线程简单运用
文章目录一、运用场景二、结论三、代码读者盆友,晚上好。这里介绍下多线程的简单用法。一、运用场景实现配置中心,有多种思路,其中一种思路是:1)启动线程,定期刷新值;2)另外利用Zookeeper的Watche机制,对新增的节点或者有变化的节点新增监听。其中1)所用到的就是今天要介绍的。二、结论主要介绍以下四种多线程最简单的用法: * Executors.newCachedThreadPool(); * Executors.newFixedThreadPool(3); *
2020-06-27 21:13:38 362
原创 三目运算符引起的NPE
文章目录一、诡异的NPE二、原因:三目运算符表达式类型对齐拆箱导致NPE三、继续深究四、总结情况这段代码:一、诡异的NPE报错信息如下:2020-06-03 13:02:22.193 [] [DubboServerHandler-120889-thread-8] ERROR com.alibaba.dubbo.rpc.filter.ExceptionFilter 90 - [DUBBO] Got unchecked and undeclared exception which called by
2020-06-08 22:31:48 680
原创 你有良好的编码习惯嘛?
文章目录一、背景二、编码前2.1 透彻理解需求文档2.2 写好设计文档2.3 评估开发时间三、编码中3.1 确定开发的分支3.2 多人协作,及时git pull; git push3.3 小步快跑,一个功能点一个commit3.4及时反馈遇到的技术问题、产品问题3.5 及时准备SQL脚本四、编码完成及自测五、提测5.1 跑脚本5.2 Jenkins部署服务5.3 自我验证六、复盘6.1 开发流程复盘6.2 技术难点复盘6.3 沟通及管理复盘一、背景经常性重复一些流程,时间久了就容易越过一些步骤。eg:
2020-06-07 22:14:36 361
原创 设计模式-1-Builder
读者盆友早上好。从今天开始,我们系列化的介绍设计模式。先打响设计模式第一枪:Builder模式。笔者的博客目的在于通过实战、实际的例子介绍设计模式,而不是空洞的介绍理论,看了也不怎么清楚到底怎么用。文章目录一、典型用法二、优点1:初始化大量默认参数三、优点2:流式API、具名参数四、自己写Builder的思路五、总结Builder模式即建造者模式,在Gof这本书中介绍的还是有点晦涩,虽然例子也简单,但是总感觉缺点接地气的感觉。一句话,还是高度抽象了。学习方法:个人建议《Design Patterns
2020-05-11 07:22:53 306
原创 算法34-最短增广路径的Ford-Fulkerson最大流量算法
读者盆友,下午好。这里介绍下最短增广路径的Ford-Fulkerson最大流量算法当前看这个需要对“网络流量算法”中的基本概念有所了解,这里就不啰嗦了。直奔主题哈。这是这段时间算法系列的最后一篇拉,也算是五一劳动节对自己的奖励吧,晚上和爱人一起吃夜宵。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Way...
2020-05-01 18:38:12 922
原创 算法33-后缀数组(初级实现)
读者盆友,下午好。这里介绍下后缀数组。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.background;import com.cmh.algorithm.str.Quick3String;/** * 后缀数组(初级实...
2020-05-01 17:39:08 209
原创 算法32-B-Tree
读者盆友,清晨好。这里介绍下B-Tree。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.background;/** * B-Tree * Author:起舞的日子 * Date: 2020/5/1 16:53 *...
2020-05-01 17:19:56 228
原创 算法31-基于事件模拟互相碰撞的粒子
各位读者盆友,上午好!我们终于接近《算法》的尾声拉。这里介绍看起来很酷炫的一种算法实践:模拟粒子碰撞。其实,这方面有非常广阔的使用天地,曾经在关于宇宙的记录片中就看到科学家们研究星球变化、宇宙演化就用计算你模拟的,很酷炫,真的是超酷炫!背后的技术也非常难。先看结果,酷炫吧:本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewi...
2020-05-01 12:29:13 1407 2
原创 算法30-LZW算法
读者盆友,清晨好。这里介绍下LZW算法。这是上世纪70年代末至80年代初由A.Lempel、J.Ziv 、T.Welch发明的。本博客代码示例均来自:算法 Algorithmes Forth Edition[美] Robert Sedgewick Kevin Wayne 著 谢路云译package com.cmh.algorithm.str;import edu.princeton...
2020-05-01 00:14:56 335
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人