- 博客(209)
- 资源 (109)
- 问答 (1)
- 收藏
- 关注
原创 升职加薪的机会——ChatGPT辅助程序开发
结合最佳实践,本文演示了日志系统方案设计/博客系统编码开发测试部署和客服系统训练等开发全周期场景应用,希望给有类似需求的朋友一点启发,当前ChatGPT不是完美的,但是在现有技术基础上迭代完善是迟早的事,赶紧学起来吧。
2023-02-15 09:19:28 3032 1
原创 ChatGPT 最佳实践,成为驾驭AI的人
最近一段时间,互联网最火的莫过于ChatGPT,比尔盖茨更是盛赞ChatGPT的出现堪比当年PC和互联网的诞生。不少人在讨论ChatGPT是否可能淘汰程序员,笔者认为就像历史上马车-汽车/线下店-线上淘宝的转变一样,新技术出现会淘汰很多职业和人,同时也会孕育更多的新职业和机会,对于咱们来说,最重要的是——提升认知,拥抱变化,抓住变革带来的机会,驾驭AI为我所用!
2023-02-15 09:15:27 3436
原创 golang 1.20正式发布,更好更易更强
预期中的Go 2不会有了,1.20也算是一个小gap,从中可以一窥Go未来的发展之路。对于Go来说,未来保持1.x持续演进和兼容性之外,重点就是让Go性能更优,同时保持大道至简原则,使用尽可能容易,从这两个方面带大家看看你1.20值得关注的特性。
2023-02-09 01:05:03 5340
原创 golang新特性arena,带你起飞
golang 1.20引入新特性arena,支持手动分配和释放内存,初步测试性能提升5%-15%甚至更多,真的是起飞了!尽管目前还是实验特性,对于泛型和反射reflect都已支持相当完善,常用场景比如JSON解析/ProtoBuf反序列化都会产生不少提升,本文带你提前全方位解析arena,并给出一些实际优化实践,早学早享受!
2023-02-09 00:57:20 2645 2
原创 golang 协程关闭——谁敢说没踩过坑
生产实践中,go常常遇到未能正确关闭协程而影响程序运行的场景,轻则协程泄漏资源浪费,重则程序崩溃。本文,总结协程关闭的三大原则,结合实际场景让你彻底搞定协程关闭,保证又快又稳!
2023-02-02 21:19:12 3494 1
原创 golang 高手才会的【协程数量控制】套路总结
尽管Goroutine(协程)非常清轻量,但是本身也是占用资源的,过多协程切换也会带来开销,总之物极必反,无限制的开协程的结果只会是Game Over。生产实践中必须考虑控制协程数量,本文带你看看针对不同场景和需求的协程数量控制方式,看看这些姿势你都会了吗?
2023-01-20 09:18:21 3179
原创 golang 错误处理channel+error真的香
官方推荐golang中错误处理当做值处理, 既然是值那就可以在channel中传输,本文带你看看golang中channel+error来做异步错误处理有多香,看完本文还会觉得golang的错误处理相比java try catch一点优势都没有吗?
2023-01-18 18:01:05 2542 1
原创 爆肝3天只为Golang 错误处理最佳实践
对于开发者来说,要是不爽Go错误处理,那就看看最佳实践。Go可能引入try catch吗?那可能估计有点难度。本文简单介绍Go为什么选择这样的错误处理和目前常见处理方式,并梳理常见Go错误处理痛点,给出最佳实践,相信看完本文你会觉得Go错误处理好像也没那么糟糕,甚至好像还挺自然。
2023-01-14 22:21:10 1196
原创 别等大佬了——用TryLock实现可重入锁
同样是大佬抗拒的痛点,Go 1.18 TryLock有了,可重入锁还会远吗?TryLock没啥好说的,简单介绍下,再看看TryLock对优化可重入锁实现的作用,自己动手,丰衣足食,别等大佬了,人生有多少个9年!
2023-01-11 09:56:18 643
原创 golang 为什么需要context
当前go的各种源码中应该都可以看到context的使用,Context是golang 1.7的引入的核心结构,本质是为了处理go的并发控制问题。本文主要带大家深入理解context如何使用,为什么需要context和context设计原理。
2023-01-09 09:41:30 479
原创 现代前端常用工具
使用工具前,必须要理解为什么需要这些工具,这些工具解决了什么问题。本文,先带大家看下前端发展主流方向,然后基于此介绍常见工具的作用和使用。
2022-11-29 09:29:05 733
原创 CentOS 编译安装 Nebula Graph 3.10
Nebula Graph 3.10在Centos环境编译,包括分布式版本和存算合并版本。
2022-07-26 11:23:27 1083 2
原创 Flink 代码混淆
混淆本质上就是对于生成的class文件中敏感的部分替换,包括包名、类名、类成员变量、类成员函数、函数参数等最常用的java混淆就是proguard混淆Flink通常可能是scala+java的混编代码,有大量的序列化逻辑存在,因此需要注意proguard的配置,通常的java工程和spring的混淆配置不适用...
2022-06-15 12:25:33 410 2
原创 go模式-责任链
所谓责任链也就是一组任务执行,每个任务输入是上一个任务输出,每个任务输出是下个任务输入,每个任务完成自己负责部分,相当于一个管道串接起来完成任务,因此也叫pipe filter ,常用于任务编排。
2021-10-07 16:54:18 431 2
原创 go模式-生产者消费者
常见的生产者消费者,就是多个生产者并发生产数据,多个消费者并发消费数据。在golang中很简单,生产者生产全部输入到channel中,消费者消费全部从channel中读取,天然具有并发安全性。
2021-10-07 16:37:12 1080
原创 go并发-对象池实现
对象池,简单来说就是维持一个并发访问的池子,需要对象时从池子取,用完了再还回去。在golang中通过维持一个带缓冲channel很容易完成这一功能,天然具有并发访问安全性。
2021-10-07 16:14:12 277
原创 go并发-异步和超时控制
go 中可如下实现异步Future功能,异步任务AsyncService返回的是获取数据的管道chan string而不是直接的string调用后立即返回。通过管道控制,可轻松实现异步和超时控制。
2021-10-07 15:31:57 960
原创 go unsafe常见应用
go 本身是类似java一样,底层运行虚拟机,整个程序处于托管状态(GC等),要想和底层打交道需要用到unsafe模块,unsafe也常用于性能提升和程序灵活处理场景,本文介绍unsafe常用的几个场景。
2021-10-07 10:47:46 659
原创 字典树(Trie树)
字典树主要是为了解决前缀匹配问题,比如下图的搜索输入前缀后匹配比如有6个字符串how,hi,her,hello,so,see,如果现在输入字符判断是否要前缀匹配指定字符串,必须一个字符串比较,如果有100万就要比对100万次,如何优化这个问题呢?其实我们可以理解,每输入一个字符,应该整个搜索空间就会缩小,具体来说就是构造一颗如下的树,就是所谓的字典树(Trie树),一旦构建完成,搜索过程中,即可完成动态剪裁,最大搜索次数就是最长字符串长度。具体实现来说就是一颗多叉树,可以使用hashmap或者数组
2021-09-14 08:57:56 229
原创 并查集(Union Find)
算法背景Union Find算法,中文并查集。主要用来解决图论中的连通判断问题,简单抽象问题为:平面上有n个点给定他们之间两两连接关系要求输入任意两个点,判断他们是否能够有一条路径联通算法步骤一旦有连接,就把一个节点设为另一个节点的父节点,最终连通的点会构成一颗树。通过判断两个节点的根节点是否相同,即可判断是否连通。具体如下初始化时,每个节点指向自己,也就是根节点遍历给定的两两连接关系,分别找各自的根节点,将两个根节点连接起来判断是否联通很简单,找两个点的根结点是否相同整个过程是
2021-08-23 12:51:11 198
原创 go 接口/错误处理 知识点
接口面向对象3大特性,封装/继承/多态,封装采用结构体完成,继承使用组合的方式完成,而接口使用的是所谓的鸭子模型(Duck Type)。也就是说不像c++/java中,实现接口必须继承实现,只需要实现了接口定义的一组方法,那么就默认为实现了该接口。如下,利用接口实现多态,注意new后传入对象指针// --- interfacetype Animal interface { sayHello(words string)}type Peopple struct {}func
2021-08-02 11:41:55 570
原创 3.kafka 重要参数和性能测试
参数配置不同的参数对集群性能影响很大,除了之前基础与安装中指定的参数,还有一些中要的参数值得注意,包括如下Broker参数Topic 管理auto.create.topics.enable:是否允许自动创建 Topic,一般设为false,允许集群管理员统一分配和管理。unclean.leader.election.enable:是否允许 Unclean Leader 选举,一般设为false,不允许落后太多的副本参与选举。auto.leader.rebalance.enable:是否允许定
2021-06-14 16:39:50 633 1
原创 2.kafka 选择和集群部署规划
kafka有不同的发行版和版本号,部署时选择什么样的硬件等都决定kafka不同的特性和性能,在正式上线前通常需要考虑如下选择:发行版本选择当kafka作为一个开源框架有自己的一套生态,不仅有原生的kafka框架,也有开源公司在社区版本基础上扩展开发的发行版,相比来说提供的功能更多,使用更加友好,但是定制性下降,目前主流版本如下:Apache Kafkakafka的社区发行版,最正宗,大公司一般在此基础上定制自己的版本,但是特性相比较少,比如缺少自带的集群监控系统,个人用适用于简单流处理场合。另外
2021-06-14 16:11:07 274
原创 go 类型/表达式/函数 知识点
最近准备换工作,又过一遍常规go基础,发现还是很多细节需要细扣下,顺便分享给需要的朋友参考,既是自我提升,也能加快开发效率。基础用好多值传递和常量自增定义,很多时候事半功倍。const ( east = iota + 1 south west earth)const ( On = 1 << iota Off Unknown)func TestBase(t *testing.T) { // 支持多值传递 a := 1 b := 2 a, b =.
2021-03-07 12:29:55 233
原创 datax同步hive到mongo
1.datax简介datax是阿里开发的大数据同步引擎,现在使用越来越广泛,其基本原理就是各种输入输出统一转换成中间格式,中间层处理各种控制来完成整个过程。具体详细截取段文档如下DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。Writer: Writer为数据写入模块,负责不断向
2020-10-23 20:34:43 1630
原创 python并行处理数据
背景尽管大数据处理越来越流行,但是少不了本地python处理大量数据的场景,这时候单线程处理效率较低,本文以csv探讨常用的几种python本地并行处理数据方式。1.自分割处理顾名思义,就是自己分割文件,起多线程处理数据,相对比较麻烦,但是效率很高。主要就是按照指定大小分割文件,使用信号量控制并行线程个数,具体实现如下:# 自己分割文件,分块多线程处理class ParallelSelfSplit: def __init__(self, max_thread_num=multip
2020-10-23 17:44:56 1392
原创 为什么Hbase按前缀查询慢
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结问题使用hbase shell时我们经常会按前缀查询,如下scan 't1', {ROWPREFIXFILTER => 'row2'}现在想在java client中实现类似的按前缀查询,如何做呢?网上给的解决方案大多是基于PrefixFilter的,代码如下public void scane..
2020-09-10 09:59:30 3298 13
原创 3.spark 集群模式安装
集群模式说明安装JDK/Scala安装hadoop安装Spark下载安装测试开启独立集群开启shell执行语句测试集群模式说明如第一节所说,spark依赖的存储引擎和资源调度框架均可以替换,上一节默认都在本地,要改成集群模式,只需要把对应的存储引擎和计算引擎替换上即可。这里主要讲独立集群模式(standlone)和yarn集群模式:前者只依赖hdfs作为...
2020-01-29 17:15:52 271
原创 1.hive基础与安装
hive简介hive简单安装- 快速测试- 生产环境配置hive简介hive是标准hadoop体系的一员,常作为OLAP的数据仓库。hive存储一般基于HDFS或HBase构建,查询计算过程依赖 Apache Tez™, Apache Spark™, 或MapReduce。没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\...
2019-10-27 16:41:06 193
python父子进程
2018-08-02
MFC程序员的WTL指南
2018-07-28
WebBrowser 高级特性调整
2017-11-02
带透明度的HBITMAP和Bitmap的转换
2017-10-21
ATL常用包装类演示
2017-08-12
HbaseJavaClient.java
2020-09-10
SendMessage 无法设置ComboBox的值
2015-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人