- 博客(32)
- 资源 (5)
- 收藏
- 关注
原创 【Mini AI Agent】如何用 100 行代码构建一个最小智能体?
本文基于百度千帆大模型,使用 Langchain 和 Gradio 框架,用短短 100 行代码就构建出一个极简的智能体应用。该应用能够根据用户问题,选择不同的工具获取信息,并生成最终回答,体现了智能体最核心的三步循环:感知-决策-行动。
2024-05-05 19:52:28
1083
1
原创 【热点】程序员会不会被人工智能取代?
面对飞速发展的 AI ,人类将何去何从?是像对待克隆人技术一样明令禁止,还是像对待核武器一样通过《不扩散核武器条约》进行限制,抑或是像《三体》中的降临派一样全面迎接 AI 时代的到来?且看十年之后。
2024-01-02 13:48:26
1487
原创 故障模型哪家强?PDR 模型来帮忙
搞安全的同学都知道,有一个非常著名的网络安全模型叫 PDR 模型,提出者是美国国际互联网安全系统公司(ISS),其核心论断是网络安全是一个时间问题,对应的公式为 Et = Dt + Rt - Pt,其中:Et (Exposure) 暴露时间,系统暴露在攻击下的时间;Pt (Prevent) 防御时间,系统扛住外部攻击的时间,或者说攻击者成功渗透的整个时间;Dt (Detect) 检测时间,安全检测系统发现攻击所需要的时间;Rt (Response) 响应时间,发现攻击到攻击路径被切断,攻击被中止.
2022-04-17 22:01:01
701
原创 不仅仅是一把瑞士军刀 —— Apifox的野望和不足
如果你认为一体化协作平台就是 Apifox 的一切,那你可能低估了 Apifox 的野心。
2022-03-13 22:25:27
3011
原创 代码评审赋魅
先来看一个令无数技术Leader闻风丧胆的项目“死亡”三角,业务压力引发代码质量下降,代码质量下降引发开发效率下降,开发效率下降又加重了业务压力,最终导致业务压力山大,乃至项目烂尾。如何破解?方法有很多,像精简业务需求、增加开发人手、升级技术架构等,很多时候需要多管齐下,但凡打掉这个“死亡”三角中的任何一角,就能终止这个恶性循环,甚至逆转为良性循环。代码评审(Code Revew,简称CR)的首要打击目标显然是“烂代码”。避免“烂代码”的最好时机是写代码的时候,其次是代码评审的时候。IBM 的 Orb..
2020-09-20 23:04:27
346
原创 【JDK 11】关于 Java 模块系统,看这一篇就够了
继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间隔了 Java 9 和 Java 10 两个非LTS(Long Term Support)版本。作为最新的LTS版本,相比 Java 8,Java 11 包含了模块系统、改用 G1 作为默认 GC 算法、反应式流 Flow、新版 HttpClient 等诸多特性。作为 JDK 11 升级系列的第一篇,本文将介绍此次升级最重要的特性——模块系统。1 模块系统简介如果把 Java 8 比.
2020-07-04 22:21:02
3191
1
原创 【Spring Cloud】详解Feign常用配置
1 Feign常用配置搭载着Spring Cloud的顺风车,Feign正以席卷之势成为使用Spring架构的大大小小互联网公司发起HTTP调用的首选框架。基于接口的声明式定义、客户端负载均衡、断路器和后备方法(fallback)是Feign相对上一代HTTP调用框架(比如Spring Template,Apache HttpClient)的四大优势。类似于Retrofit和OkHttp的关系...
2020-03-22 23:17:33
3344
原创 MySQL Connect/J 8.0时区陷阱
最近公司正在升级Spring Boot版本(从1.5升级到2.1),其间踩到一个非常隐晦的MySQL时区陷阱,具体来说,就是数据库读出的历史数据的时间和实际时间差了14个小时,而新写入的数据又都正常。如果你之前也是使用默认的MySQL时区配置,那么大概率会碰到这个问题,深究其背后的原因又涉及到很多技术细节,故整理出来分享给大家。首先来看一下原因。升级到Boot 2.1之后,MySQL Conn...
2019-12-18 08:44:51
487
原创 从零搭建一个基于Istio的服务网格
上篇文章从微服务1.0时代的三大痛点(技术门槛高,多语言支持不足和代码侵入性强)说起,由此引出服务网格的起源和演化历史。但古语有云纸上得来终觉浅,绝知此事要躬行,不亲自撸一遍命令,怎敢跟人提服务网格?本篇我将教大家如何在本地从零搭建一个基于Istio的服务网格,从而对服务网格有一个更直观的认识。
2018-05-03 23:29:44
457
原创 服务网格:微服务进入2.0时代
微服务自2014年3月由Martin Fowler首次提出以来,在Spring Cloud、Dubbo等各类微服务框架的帮助下,以燎原之势席卷了整个IT技术界,成为了最主流的分布式应用解决方案。但仍然还有很多问题没有得到根本性的解决,比如技术门槛高、多语言支持不足、代码侵入性强等。如何应对这些挑战成为了下一代微服务首要回答的问题。直到服务网格(Service Mesh)被提出,这一切都有了答案。1
2018-04-01 14:39:27
1242
原创 零基础玩转Serverless
上篇文章首先指出了Serverless=No Server这一常见误区,然后明确定义了函数这个Serverless中的核心概念,接着介绍了Serverless的4个关键特性:运行成本更低、自动扩缩容、事件驱动、无状态性,最后分析了Serverless和微服务、DevOps之间的关联关系。为了帮助大家更直观的理解Serverless,本文将介绍三种在AWS Lambda上创建函数的方式。
2018-02-04 22:38:18
573
原创 所谓Serverless,你理解对了吗?
随着DevOps和微服务的理念日渐被IT业界所接受,另一个新名词Serverless也开始进入人们的视野。尤其在今年4月份国内两大云服务厂商阿里云、腾讯云先后推出各自的Serverless产品之后,Serverless一时洛阳纸贵。那到底什么是Serverless,它跟DevOps和微服务又有什么样的联系呢?本文将尝试揭开Serverless的神秘面纱,让你一睹为快。
2018-01-01 23:56:17
1925
原创 【Spring 5】响应式Web框架实战(下)
可以看到,使用Router Functions实现RP应用时,你需要自己创建和管理容器,也就是说Spring 5并没有针对Router Functions提供IoC支持,这是Router Functions和Spring MVC相比最大的不同。除此之外,你需要通过`RouterFunction`的API(而不是注解)来配置路由表和过滤器。
2017-07-18 01:23:07
8182
3
原创 【Spring 5】响应式Web框架实战(上)
引子:被誉为“中国大数据第一人”的涂子沛先生在其成名作《数据之巅》里提到,摩尔定律、社交媒体、数据挖掘是大数据的三大成因。IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的。在此背景下,包括NoSQL,Hadoop, Spark, Storm, Kylin在内的大批新技术应运而生。其中以RxJava和Reactor为代表的响应式(Reactive)编程技术针对的就是经典的大数
2017-06-30 00:31:36
5802
原创 响应式编程总览
引子:被誉为“中国大数据第一人”的涂子沛先生在其成名作《数据之巅》里提到,摩尔定律、社交媒体、数据挖掘是大数据的三大成因。IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的。在此背景下,包括NoSQL,Hadoop, Spark, Storm, Kylin在内的大批新技术应运而生。其中以RxJava和Reactor为代表的响应式(Reactive)编程技术针对的就是经典的大数
2017-06-22 00:11:06
1762
原创 【Spring 5】响应式Web框架前瞻
引子:被誉为“中国大数据第一人”的涂子沛先生在其成名作《数据之巅》里提到,摩尔定律、社交媒体、数据挖掘是大数据的三大成因。IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的。在此背景下,包括NoSQL,Hadoop, Spark, Storm, Kylin在内的大批新技术应运而生。其中以RxJava和Reactor为代表的响应式(Reactive)编程技术针对的就是经典的大数
2017-05-30 23:43:12
11483
1
原创 面向开发的测试技术(三):Web自动化测试
引子:自上世纪末Kent Beck提出TDD(Test-Driven Development)开发理念以来,开发和测试的边界变的越来越模糊,从原本上下游的依赖关系,逐步演变成你中有我、我中有你的互赖关系,甚至很多公司设立了新的QE(Quality Engineer)职位。和传统的QA(Quality Assurance)不同,QE的主要职责是通过工程化的手段保证项目质量,这些手段包括但不仅限于编写单
2017-05-15 23:31:35
1097
原创 面向开发的测试技术(二):性能测试
响应时间和吞吐量是衡量应用性能好坏最重要的两个指标。对于绝大多数应用,刚开始的时候,响应时间最短;随着负载的增大,吞吐量快速上升,响应时间也逐渐变长;当负载超过某一个值之后,响应时间会突然呈指数级放大,同时吞吐量也应声下跌,应用性能急剧下降。
2017-05-10 01:03:37
1832
原创 面向开发的测试技术(一):Mock
引子:自上世纪末Kent Beck提出TDD(Test-Driven Development)开发理念以来,开发和测试的边界变的越来越模糊,从原本上下游的依赖关系,逐步演变成你中有我、我中有你的互赖关系,甚至很多公司设立了新的QE(Quality Engineer)职位。和传统的QA(Quality Assurance)不同,QE的主要职责是通过工程化的手段保证项目质量,这些手段包括但不仅限于编写单
2017-05-01 17:04:08
2943
原创 【Spring】详解Spring MVC中不同格式的POST请求参数的数据类型转换过程
对于不同类型的请求格式,Spring有着不同的转换过程(从请求参数到方法参数)。如果是非raw请求,则需要实现一个自定义的Long->OffsetDatetime的Converter;如果是raw请求,则确保ObjectMapper中包含一个Long->OffsetDatetime的反序列化器,注册Jackon自带的JavaTimeModule即可。
2017-04-23 11:05:40
3757
原创 JUnit 5的前世今生
起源 前事不忘,后事之师。–《战国策·赵策一》对Java程序员而言,JUnit无疑是使用最广泛的单元测试框架。自2006年初JUnit 4发布之后,11年间陆陆续续更新了13个小版本,最新的4.12版本是在2014年底发布的。在现今新技术、新框架层出不穷的IT圈,JUnit的版本更新速度不可谓不缓慢,这一点上,和去年同期发布的Jenkins 2.0如出一辙,后者也花了11年才升级了一个大版本。
2017-04-09 19:30:29
2752
原创 我的写作工具箱
对于程序员而言,写作是一种抽象程度更高的编程,需要放松的环境和专注的思考。对我而言,Mac,豆瓣FM,降噪耳机是不可或缺的陪伴。刻意的营造一些仪式感,可以帮助你更快的进入状态,比如一盏灯,一杯咖啡,一块超大鼠标垫。
2017-01-08 21:46:07
1134
原创 我是如何写作的?
我的写作心得上篇文章谈了我对写作的一些认识,这篇文章继续聊一下我现阶段的一些写作心得。最近在《得到》上听到一篇吴军老师谈写作的文章,深以为然,对照这篇文章,同时结合我的一些经验,分4个步骤介绍一下我的写作流程。1 选题选题不分好坏,只看适不适合。那对于一个程序员,什么是适合的选题?在我看来,至少要满足两个条件:第一,感兴趣的,第二,有一些实践经验。兴趣是最好的老师,也会激发你最大的热情。有了兴趣的指
2017-01-03 00:29:51
645
原创 我们为什么要写作?
写作的过程,就是将大脑中层出不穷、稍纵即逝的思维碎片整理成稳定、有序的文字的过程。这就好比Java里面的垃圾回收机制,一边将不再被引用的对象所占用的内存释放出来,一边将碎片化的内存重新整理成连续、有序的内存。
2016-12-27 14:08:26
1090
原创 微服务化改造系列之四:授权中心
这篇文章是微服务化改造系列的第四篇,主题是授权中心。有了服务注册中心和配置中心,下一步应该就可以发起服务调用了吧?Wait, 还有一个关键问题要解决。不同于单体应用内部的方法调用,服务调用存在一个服务授权的概念。打个比方,原本一家三兄弟住一屋,每次上山打猎喊一声就行,后来三兄弟分了家,再打猎就要挨家挨户敲门了。这一敲一应就是所谓的服务授权。
2016-12-04 16:57:07
7182
原创 微服务化改造系列之三:配置中心
前情概要: - 微服务化改造系列之一:总览 - 微服务化改造系列之二:服务注册中心配置中心概述这篇文章是微服务化改造系列的第三篇,主题是配置中心。上一篇我们谈到服务注册中心,即通过提供某种注册和发现的机制,解决服务互通的问题。那么问题来了,一个服务如何知道服务注册中心的地址呢?这就涉及到服务配置了。我们知道,大至一个PaaS平台,小至一个缓存框架,一般都依赖于特定的配置以正常提供服务,
2016-11-27 22:21:53
3214
原创 微服务化改造系列之二:服务注册中心
服务注册中心概述这篇文章是微服务化改造系列的第二篇,主题是服务注册中心。作为微服务架构最基础也是最重要的组件之一,服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。
2016-11-20 21:41:51
2574
原创 微服务化改造系列之一:总览
从本质上来看,相对单体应用,微服务是以牺牲强一致性、提高部署复杂性为代价,换取更彻底的分布式特性,比如异构性和强隔离性。对应CAP理论,就是用Consistency换Partition。
2016-11-13 21:41:56
3009
原创 【CI/CD】几种常见的不停机发布方式
何为不停机发布?本文所说的不停机发布,是指在不停止对外服务的前提下完成应用的更新。与热部署的区别在于,热部署关注于应用层面并且以不重启应用为前提,而不停机发布则关注于服务层面。随着摩尔定律逐渐逼近极限和多核时代的到来,分布式应用已经成为事实上的主流。下文首先给出一种通用的适用于分布式应用环境的不停机发布方式,然后再介绍Master/Worker这种常见的适用于单机应用的不停机发布方式。Cluster
2016-06-09 17:37:07
6576
原创 【Jenkins】Pipeline使用进阶
无所不能,无所不及的Pipeline得益于Jenkins内嵌的Groovy支持,加上丰富的Step库,通过编写自定义Pipeline脚本你几乎可以实现任何复杂的构建、发布流程。下面简单谈谈使用Pipeline的四个段位。I. 启蒙老师:Snipper GeneratorJenkins晦涩的行文风格并没有随着2.0的发布有所改善,Step库的官方参考手册成功的延续了Jenki
2016-05-22 22:24:31
8857
1
原创 【Jenkins】2.0新时代:从CI到CD
2.0 破茧重生自从去年9月底Jenkins的创始人Kohsuke Kawaguchi提出Jenkins 2.0(后称2.0)的愿景和草案之后,整个Jenkins社区为之欢欣鼓舞,不管是官方博客还是Google论坛,大家都在热烈讨论和期盼2.0的到来。4月20日,历经Alpha(2/29),Beta(3/24),RC(4/7)3个版本的迭代,2.0终于正式发布。这也是Jenkins面世11年以来(算
2016-05-02 11:18:40
7797
1
原创 Here I come and my DREAM is to be a good Software Developer
I believe so I can [2005/03/01 23:31]
2005-03-01 23:32:00
913
Ruby完全自学手册 下
2014-09-12
Ruby完全自学手册 上
2014-09-12
Programming Ruby中文版(第二版)下
2014-09-12
Programming Ruby中文版(第二版)上
2014-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人