古时的风筝

其他

超实用的团队 Git 实践

大家好,我是风筝如果是一个人做项目的话,只要能保证代码不丢,就算没有版本管理也无妨。但是如果是团队项目,版本管理就是必须的了,仅仅有版本管理还不行,版本管理一定要有规范。如果你觉得没有必要,那你可能没有体验过合并混乱的分支带来的生无可恋的痛苦。如果你的团队中还没有这种规范,建议提早下手,不要等到亡羊补牢的那天。在
2023年12月18日
其他

除了关系型数据库外,还有好几种数据库类型呢

NoSQL,这种类型的数据库结构比较简单,就是一个键对应一个值,当然,值的类型可能有很多。由于结构简单,所以这种类型的存储可以有很高的读取写入速度,所以对读写性能要求比较高的环境可以用
2023年8月25日
其他

我的第一个 Chrome 插件上线了,欢迎试用!

插件,安装好之后,不管你在什么网站,只要页面上有输入框,你都可以直接输入中文,然后直接在原地将中文翻译为你想要的目标语言,比如英文、俄语等。插件安装应用商店安装插件已经上线到
2023年7月13日
其他

RPC框架的核心到底是什么

这篇文章。协议的实现这里说的协议就是网络通信协议。远程过程调用嘛,那必须得通过网络传输才行,而通过网络传输那就得有遵行规定的协议。这个协议是用来规范传输的数据的,所以它是一个应用层协议,比如
2023年7月11日
其他

前端同事最讨厌的后端行为,看看你中了没有

听说这是前端程序员最讨厌的后端行为,不知道你有没有碰到过,或者你的前端同事虽然没跟你说过,但是你已经被偷偷吐槽了。“前端吐槽:后端从不自测接口,等到前后端联调时,这个接口获取不到,那个接口提交不了,把前端当成自己的接口测试员,耽误前端的开发进度。”听到这个吐槽,仿佛看到曾经羞愧的自己。这个毛病以前我也有啊,有些接口,尤其是大表单提交接口,表单特别大,字段很多,有时候就偷懒了,直接编译过了,就发到测试环境了。前端同时联调的时候一调接口,异常了。好在后来改了,毕竟让人发现自己接口写的有问题,也是一件丢脸的事儿。但是我还真见过后端的同学,写完接口一个都不测,直接发测试环境的。我就碰到过厉害的,编译都不过,就直接提代码。以前,有个新来的同事,分了任务就默默的干着,啥也不问,然后他做的功能测试就各种发现问题。说过之后,就改一下,但是基本上还是不测试,本想再给他机会的,所以后来他每次提代码,我都review一下。直到有一天,我发现忍不了了,他把一段全局配置给注释了,然后把代码提了,我过去问他是不是本地调试,忘了取消注释了。他的回答直接让我震惊了,他说:不是的,是因为不注释那段代码,我本地跑步起来,所以肯定是那段代码有问题,所以就注释了。然后,当晚,他就离职了。解决方式对于这种大表单类似的问题,应该怎么处理呢?好像没有别的方法,只能克服自己的懒惰,为自己写的代码负责。就想着,万一接口有问题,别人可能会怀疑你水平不行,你水平不行,就是你不行啊,程序员怎么能不行呢。你可以找那么在线
2023年7月3日
其他

面试要准备新知识了:什么是向量数据库

方法,它可以将高维的矩阵映射成两个低维矩阵的乘积,很好地解决了数据稀疏的问题。基于自然语言处理的方法自然语言处理(NLP)是一种人工智能技术,它涉及计算机对人类语言的理解和生成。NLP
2023年6月26日
其他

剑走偏锋,无头浏览器是什么神奇的家伙

都有服务端渲染的能力(RSC)。网页截图功能我们可能见过一些网站提供下载文字卡片或者图文卡片的功能。比如读到一段想要分享的内容,选中之后将文本端所在的区域生成一张图片。其实就是通过调用浏览器自身的
2023年6月7日
其他

突破性革新!JDK21引入协程,再也不用为并发而头疼了

ExecutorService的invokeAll和invokeAny实现,但是会有一些额外的工作,在拿到第一个结果后,要手动关闭另外的线程。而
2023年6月1日
其他

用了这两款插件,同事再也不说我代码写的烂了

使用静态代码分析技术来检测代码中的常见错误和漏洞。例如,它可以检测空指针引用、类型转换错误、重复代码和逻辑错误等。这些都是常见的问题,但是有时候很难发现。使用
2023年3月15日
其他

要理解网络,其实不就是理解这三张表吗

地址。别问为什么,协议就是这么规定的。2、正因为链路层以太网帧必须是下一跳MAC地址,所以整个传输过程中,以太网帧是一直解包、重组的,目的就是把下一跳MAC地址重组进去。3、网络层
2023年2月20日
其他

5000字,10张图,完全掌握 MySQL 事务隔离级别

了。这就出现了一个问题,在同一事务中(本例中的事务B),事务的不同时刻同样的查询条件,查询出来的记录内容是不一样的,事务A的提交影响了事务B的查询结果,这就是不可重复读,也就是读提交隔离级别。每个
2022年12月19日
其他

过两年 JVM 可能就要被它替代了

镜像的体积。缺点好处多多,当然也有一些弊端。对于反射这种纯粹在运行时才能确定的部分,不可能完全通过优化编译器解决,只能通过增加配置的方式解决。麻烦是麻烦了一点,但是是可行的,Spring
2022年12月1日
其他

原来 GitHub 不光能学代码,还有这些

作为一个若隐若现(有时墙有时不墙)的网站,对于程序员来说,再熟悉不过了,绝大多数时候,我们到上面都是为了学习高质量的源代码,或者一些实用、稳定的框架或者工具包。有同学说,那在
2022年11月20日
其他

二维码的秘密

2、参考字母数字表,转换成对应的数字,然后用第一个字符数字*45+第二个字符数字,再转换成二进制,一个字符补满6位,两个字符补满11位。例如:HE=(45*17)+14=779,再转换成二进制
2022年11月9日
其他

一个 MySQL 隐式转换的坑,差点把服务器搞挂了

字段做类型转换,转换为数值类型,这时候,之前建的索引也就不会命中,只能走全表扫描,查询性能指数级下降,搞不好,数据库直接查崩了。吃一堑长一智,愿各位吃不到这个堑,但能长这个智。还可以读:MySQL
2022年11月3日
其他

​高频面试题:Java程序占用 CPU 过高怎么排查

程序造成的,如果有系统监控工具,可能会直接在预警信息里告诉你是有哪个进程造成的,但也有可能不知道,需要我们手动排查。如果是在面试场景中,这个问题可能不需要确认,毕竟
2020年11月2日
其他

JVM:我就想知道我是怎么没的

的大小是没有限制的,也就是所在服务器的实际内存大小,但是,一般情况下,最好还是设置元空间的大小。一般在产生大量动态生成类的情景中,可能会出现元空间的内存溢出。模拟元空间溢出public
2020年10月20日
其他

教你几招,快速制造五百万级 MySQL 数据

好了,现在可以愉快的做各种测试和优化了。有同学看完可能要说了,20多分钟好像也不算快啊。因为数据量确实比较大,再有数据复杂度和导入时间也有很大关系,如果你只是导入一列自增id,别说
2020年8月6日
其他

终于学会了 MySQL 主从配置和读写分离

的内容对从数据库做对应的操作。主从配置一般都是和读写分离相结合,主服务器负责写数据,从服务器负责读数据,并保证主服务器的数据及时同步到从服务器。主服务器配置开启远程连接使用命令行或者客户端工具进入
2020年7月27日
其他

这里几款免费且好用的 MySQL 客户端送给你

,但功能也算比较全了。支持数据库管理,可对数据库进行增加、修改等操作。支持对表结构、内容、关联关系等进行界面版管理。还有两个方便的操作,可以列出所有的
2020年7月7日
其他

跟我极速尝鲜 Spring Boot 2.3

Desktop,直接打开设置,在里面加上代理就可以了(别问我代理怎么搞,问我就是没有代理)。image-20200623174349112好了,通过上面一顿猛如虎的操作,再次运行命令mvn
2020年6月24日
其他

别说你还不懂 HashMap

中没有真正的动态数组这一说,数组初始化的时候是多大,那它就一直是这么大,那扩容是怎么来的呢,答案就是创建一个新数组,然后将老数组的数据拷贝过去。拷贝的时候可能会有如下几种情况:如果节点
2020年6月22日
其他

有趣的图说 HashMap,普通人也能看懂

ArrayList和HashMap了吧。HashMap存的是键值对类型的数据,其存储和获取的速度快、性能高,是非常好用的一个数据结构,每一个
2020年6月19日
其他

Lambda、函数式接口、Stream 一次性全给你

invokedynamic指令实现的,并不会产生新类。方法引用方法引用的出现,使得我们可以将一个方法赋给一个变量或者作为参数传递给另外一个方法。::双冒号作为方法引用的符号,比如下面这两行语句,引用
2020年6月9日
其他

别在重复造轮子了,这几个开源工具库送你了

commons官方地址:http://commons.apache.org/这不是一个库,而是一系列的工具库。由于包含的库过多,我就不一一列举了,可以到官网一探。有集合处理的、数学计算的、IO
2020年6月3日
其他

隔离做的好,数据操作没烦恼[MySQL]

了。这就出现了一个问题,在同一事务中(本例中的事务B),事务的不同时刻同样的查询条件,查询出来的记录内容是不一样的,事务A的提交影响了事务B的查询结果,这就是不可重复读,也就是读提交隔离级别。每个
2020年3月24日
其他

为什么要使用接口编程

的两个实现类。就是文章第一部分所举的例子那样。有的同学看完想了想说,那不对呀,你这样整完之后,那和重新创建一个类的方式有什么区别,该修改的地方还是要修改呀?其实不然,用了接口之后,我们
2020年3月12日
其他

先从简单的源码入手:MyBatis 工作原理分析

Configuration(environment);configuration.addMapper(BlogMapper.class);SqlSessionFactory
2020年3月6日
其他

系统内存爆满,原来是线程搞的鬼

那天中午吃饭,一个同事说,那个项目组的人快气死我了,程序有问题,早晨在群里@了他们,到中午才回消息,然后竟然还说他们的程序没有问题,是我们这边调用的太频繁了。简直想笑。背景说明我们当前这个系统和很多的第三方系统做了集成,出问题的就是其中一个三方系统。其实很简单,他们的系统会产生一些个人待办任务,然后待办任务的个数需要推送到我们的
2020年1月9日
其他

写 Java 这么久了,你编译过 JDK 源码吗

https://adoptopenjdk.net/installation.html?variant=openjdk11&jvmVariant=hotspot#x64_mac-jdk
2020年1月7日
其他

手撕 JVM 垃圾收集日志(长文一篇)

mark),与用户线程同时运行;预清理(CMS-concurrent-preclean),与用户线程同时运行;可被终止的预清理(CMS-concurrent-abortable-preclean)
2019年12月12日
其他

分析 JVM 常用的 JDK 内置工具

进程内当前时刻的线程快照,也就是每条线程正在执行的方法栈情况,用于定位线程停顿、死锁等长时间等待的问题。以下是
2019年11月21日
其他

JVM 你不可不知的参数

溢出。-XX:HeapDumpPath=/Users/fengzheng/jvmlog-XX:+HeapDumpOnOutOfMemoryError最后出现异常后,保存的文件格式为
2019年11月14日
其他

无意中就做了个 web 版 JVM 监控端

在线体验我在服务器上部署了一个体验版本。因为服务器配置实在惨的可怜,所以需要在本公众号内回复「jmx」获取体验验证码和在线地址。不支持移动端。源码地址源码放到了
2019年10月11日
其他

JConsole、VisualVM 依赖的 JMX 技术

如果你之前没接触过,一定会出现疑问三连击,"这是个什么玩意儿?干嘛的?有啥用?"。虽然可能不知道它,但是或多或少你肯定都接触过。比如你如果用
2019年9月20日
其他

线上问题排查神器 Arthas

回车,会出现如下提示,并开始正式与目标应用交互。正式交互开始,就到了大展拳脚的时候了,线上出现的问题基本上都可以找到合适的命令。下面简单的介绍几个,就是为了演示一下使用方式。monitor##
2019年9月17日
其他

Java 调试工具、热部署、JVM 监控工具都用到了它

这些线上排查问题的工具,比方说有接口没有按预期的返回结果,但日志又没有错误,这时,我们只要清楚方法的所在包名、类名、方法名等,不用修改部署服务,就能查到调用的参数、返回值、异常等信息。
2019年9月10日
其他

你了解 Spring Boot Starter 吗

类的情况下,才会解析此自动配置类,否则不解析。@EnableConfigurationProperties(KiteProperties.class):启用配置类。@Bean:实例化一个
2019年5月29日
其他

如果你也打算学习和使用 Spring Cloud

的文章,我写的有啥不同吗?答:没有不同。无论是什么框架,说白了也就是个工具,工具的使用都是一样的,所以使用手册也是大同小异。当然,使用姿势正确得当,系统也就更稳定,性能更好。我这个系列也是介绍
2019年3月20日
其他

Spring Boot 和 Docker 实现微服务部署

registry.cn-beijing.aliyuncs.com/fengzheng/kite:latest4、之后根据生成的镜像,就可以以
2019年1月25日
其他

最简单的数据抓取教程,人人都用得上

CHROME”。地址为:https://chrome.google.com/webstore/detail/web-scraper/jnhgnonknehpejjnehehllkliplmbmhn
2018年2月8日
其他

做了个 web 版的 MyBatis Generator

页面的方式,填写几个关键的配置参数,选好要生成的数据库表即可。可配置的参数有如下几个targetRuntime
2018年1月16日
其他

我们说的 JVM 内存是什么

Metaspace(元空间),它也是对方法区的一个实现方式,相比于永久代方式,元空间方式解决了永久代方式存在的一些问题。元空间数据分配在本地内存中,也就是系统可用内存。所以默认情况下,不会发生
2017年11月19日
其他

线上性能排查神器 BTrace 的使用

哪些方法发生了异常多说一点,为了更好解决问题,最好还要配合事前准备和进行中监控,事前准备就是埋点嘛,在一些可能出现问题的方法中进行日志输出,进行中监控就是利用一些实时监控工具,例如
2017年8月17日
其他

Spring AOP 和 动态代理技术

方法,也就执行了我们加入的逻辑,从而实现了切面编程的需求。我们把动态生成的代理类字节码文件反编译一下,也就明白了。由于代码较长,只摘出相关部分。首先看到类的接口和继承关系:public
2017年7月21日