自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

南瓜慢说

多读书,多分享;多写作,多整理。

  • 博客(177)
  • 收藏
  • 关注

原创 如何制定切实可行的计划并好好执行——2020年,我不想再碌碌无为

1 简介转眼2019年即将结束,又到了做年度总结和下一年计划的时候了。经过多年的失败经历,是时候要总结出一些经验教训了。本文整理了在计划与执行方面的个人学习心得体会,与大家分享,希望对自己有用,对大家也有用吧。2 执行力重要的事情先说三遍!计划的本质是执行!计划的本质是执行!计划的本质是执行!总结我多年失败的经验教训,失败最主要的原因就是没有执行好。任何计划,都是为了辅助我们更好地执...

2019-12-29 16:55:45 1543

原创 简单介绍十几款常用的画架构图流程图的软件

draw.io是开源免费的在线画图工具,还提供桌面版本。实时协作;支持在线离线版本;存储支持多种方式:Google Drive, OneDrive, GitHub, GitLab, Dropbox等;许多丰富的图标库。

2023-04-19 18:06:46 6361 1

原创 安装Zookeeper和Kafka集群

本文介绍如何安装Zookeeper和Kafka集群。为了方便,介绍的是在一台服务器上的安装,实际应该安装在多台服务器上,但步骤是一样的。

2023-04-17 14:48:03 229

原创 Spring Boot整合Google Bard - Web接口访问Google AI聊天机器人

对象注入,通过HTTP GET方法来提问。所以Controller要从GET请求中获取问题,并向。,可以帮助我们简单的提问并获得答案。获取到答案后,我们返回一个对应的DTO对象。应用中,通过Web API让大家可以访问。在使用它之前,我们需要创建一个对应的。

2023-03-30 20:56:15 744

原创 开发了一个Java库的Google Bard API,可以自动化与AI对话了

目前没有用户名密码的方式,直接有Token就行。但这个要从网页上拿。它其实就是一个Cookie,名为。是Google提供的还在实验阶段的人工智能对话服务。来的,它可以提供更实时的答案,会基于Google强大的网页数据。能够回答问题,一般会给出三个答案。第一个是推荐的答案。据说Google未来会开放API接口,拭目以待吧。使用是非常简单的,只要网络通就可以了。这个要在程序最开始设置。欢迎大家STAR...

2023-03-25 14:58:44 1161

原创 Try out Google Bard, Will Google Bard beat the ChatGPT?

【代码】Try out Google Bard, Will Google Bard beat the ChatGPT?

2023-03-24 00:28:58 3632

原创 用Python基于Google Bard做一个交互式的聊天机器人

发送请求的时候,把之前准备的参数和数据发一个POST请求到。通过浏览器先拿到SessionID,它是一个。现在我们想实现自动化,所以我用。之前已经通过浏览器试过了。做一个交互式的聊天机器人。

2023-03-24 00:24:26 229

原创 Java多种方法实现等待所有子线程完成再继续执行

简介在现实世界中,我们常常需要等待其它任务完成,才能继续执行下一步。Java实现等待子线程完成再继续执行的方式很多。我们来一一查看一下。Thread的join方法该方法是Thread提供的方法,调用join()时,会阻塞主线程,等该Thread完成才会继续执行,代码如下:private static void threadJoin() { List<Thread> threads = new ArrayList<>(); for (int i = 0; i <

2023-03-08 17:35:02 3745

原创 《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。简介Azure是微软的公有云,它提供了一些免费的资源,具体可以查看: https://azure.microsoft.com/en-us/free/本章将介绍如何通过Terraform来使用Azure的云资源。注册Azure账号首先要注册一个Azure账号,我选择用GitHub账号登陆,免得又记多一个密码。跳到GitHub,同意即可

2023-02-13 22:31:07 739

原创 《Terraform 101 从入门到实践》 Terraform在公有云GCP上的应用

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。Terraform支持的公有云有很多,如AWS、Azure、Google、Alibaba等。将Terraform应用于公有云,才最能发挥其强大的功能。初始化GCP项目创建一个新项目首先我们需要初始化一个GCP项目。GCP给开发者提供了免费试用的服务,我们可以在不花钱的情况下学习GCP的功能。要使用GCP,我们需要创建一个项目,它所有的资

2023-02-13 09:42:43 348

原创 《Terraform 101 从入门到实践》 Functions函数

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。Terraform的函数Terraform为了让大家在表达式上可以更加灵活方便地进行计算,提供了大量的内置函数(Function)。目前并不支持自定义函数,只能使用Terraform自带的。使用函数的格式也很简单,直接写函数名+参数即可。如下面的函数为取最大值:> max(34, 45, 232, 25)232这里把函数单独列成一

2023-02-12 10:34:50 587 2

原创 《Terraform 101 从入门到实践》 第五章 HCL语法

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。介绍了Terraform一些比较基础的概念后,我们可以先了解一下Terraform的语法,也就是HCL的语法。变量Variables变量是实现代码复用的一种方式,同样的代码不同的变量往往会有不同的效果。而在Terraform里,有一个概念非常重要,就是变量都是从属于模块的。变量无法跨模块引用。即在模块A定义的变量X,无法在模块B中直接引用。

2023-02-11 10:45:09 592 1

原创 《Terraform 101 从入门到实践》 第四章 States状态管理

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。军书十二卷,卷卷有爷名。为什么需要状态管理Terraform的主要作用是管理云平台上的资源,通过声明式的HCL配置来映射资源,如果云平台上没有资源则需要创建,如果有则不用。那Terraform要实现这个功能有多种方式。一种是每次执行apply命令时都调用API接口检查一下远程的云资源是否与配置文件一致,如果没有则创建,如果有但不同则需

2023-02-10 20:31:29 968 1

原创 《Terraform 101 从入门到实践》 第三章 Modules模块化

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。模块的概念模块化是Terraform实现代码重用的方式。模块可以理解为一个包含多个资源的容器模板。封装好之后,可以给大家使用。也可以理解为代码中的函数或方法,它接收入参,经过一些声明式的调用后,输出一些结果变量。从Terraform的代码层面来看,模块其实就是一个包含多个.tf或.tf.json文件的目录。任何一个Terraform项目,都

2023-02-10 09:25:06 331

原创 《Terraform 101 从入门到实践》 第二章 Providers插件管理

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。不怕出身低,行行出状元。插件Terraform可以对多种平台的多种资源进行管理,这个是通过插件来实现的。这里的插件,在Terraform的世界也叫Providers,也是一个个可执行文件。不同的插件完成不同的功能,对接AWS,就要使用AWS的插件;对接GCP,就要用GCP的插件。当我们通过terraform init初始化一个项目时

2023-02-09 19:24:04 465

原创 《Terraform 101 从入门到实践》 第一章 Terraform初相识

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。初闻不知Terraform,再闻已是云中人。什么叫基础设施即代码?在以前,当我们需要把应用部署在服务器时,需要购买多台服务器和机房、组装交换机和网络、不间断电源UPS等。随着云时代的到来,我们可以在IaaS(Infrastructure as a Service)平台直接购买所有的基础设施,包括服务器、专用网络、DNS、负载均衡等,而你

2023-02-09 09:58:27 184

原创 《Terraform 101 从入门到实践》 前言

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。Terraform 101 从入门到实践Terraform作为基础设施即代码(Infrastructure as Code,很简称IaC)的事实标准,非常值得大家学习。我是工作中会使用公有云,所以需要经常使用Terraform作为IaC工具以实现自动化部署;也花时间考取了Terraform Associate的证书。所以对它的使用我还是有一些

2023-02-08 22:15:55 258

原创 Springboot整合AOP和注解,实现丰富的切面功能

简介我们在文章《Spring AOP与AspectJ的对比及应用》介绍了AOP的使用,这篇文章讲解一下AOP与注解的整合,通过注解来使用AOP,会非常方便。为了简便,我们还是来实现一个计时的功能。整合过程首先创建一个注解:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface PkslowLogTime {}然后在一个Service中使用注解:@Service@Slf4jpublic

2023-02-07 21:14:58 3691

原创 Spring AOP与AspectJ的对比及应用

1 简介AOP,即面向切面编程是很常用的技术,特别是在Java Web开发中。而最流行的AOP框架分别是Spring AOP和AspectJ。2 Spring AOP vs AspectJSpring AOP是基于Spring IoC实现的,它解决大部分常见的需求,但它并不是一个完整的AOP解决方案。对于非Spring容器管理的对象,它更没有办法了。而AspectJ旨在提供完整的AOP方案,因此也会更复杂。2.1 织入方式两者织入方式有极大的不同,这也是它们的本质区别,它们实现代理的方式不同。A

2023-02-07 20:18:59 574

原创 Java JDK Proxy和CGLib动态代理示例讲解

简介代理模式在Java中有很多应用场景,而代理又分静态代码和动态代理。静态代理是编写、编译或加载时织入代码实现,而动态代理则在运行时实现。简单而言,静态代理是在运行前就已经存在,而动态代理则在运行时才存在的。而常用的动态代理有两种实现:JDK Proxy: JDK Proxy是JDK自带的,不需要引入外部库,通过实现接口进行代理;CGLib: CGLib是引入第三方库,通过ASM技术来实现字节码的生成;通过继承的方式来实现。现在我们来通过代码分别展示一下两种方式。JDK ProxyJDK P

2023-02-07 09:21:31 502

原创 Spring在Filter中记录Web请求Request和返回Response的内容及时长

1 简介在Spring MVC中,我们有时需要记录一下请求和返回的内容,方便出现问题时排查。比较Header、Request Body等。这些在Controller也可以记录,但在Filter中会更方便。而我们使用的是OncePerRequestFilter。2 记录请求2.1 流重复读的问题可以通过下面的代码来读取请求Body:byte[] requestBody = StreamUtils.copyToByteArray(request.getInputStream());log.info(

2023-02-06 20:18:59 965

原创 Java如何测量方法执行时间

四种方法为了知道调用方法用了多长时间,我们需要测量一下方法的执行时间。废话少说,直接给出四种方法。JDK currentTimeMillis先定义一个call方法,我们来测量这个方法的执行时间:private static void call() { try { Thread.sleep(500); } catch (InterruptedException e) { throw new RuntimeException(e); }}使用JDK方法:private

2023-02-06 13:36:59 719

原创 用GPU来运行Python代码

简介前几天捣鼓了一下Ubuntu,正是想用一下我旧电脑上的N卡,可以用GPU来跑代码,体验一下多核的快乐。还好我这破电脑也是支持Cuda的:$ sudo lshw -C display *-display description: 3D controller product: GK208M [GeForce GT 740M] vendor: NVIDIA Corporation physical id: 0

2023-02-05 17:09:58 7185 1

原创 Ubuntu玩机记录,让我破电脑又飞起来了

写在前面很早之前的电脑ThinkPad E440,一直没怎么用。最近整理了一下电脑的资料,全部备份到云盘。整理的过程感觉电脑很慢很慢,难受极了。整理完后,终于我要对它下手了!我制作了启动U盘,把Ubuntu 22.04的镜像烧录进去,通过U盘启动,把系统装在ThinkPad上。居然电脑出奇的好用,根本不卡。那就记录一下吧。安装Ubuntu系统先从官网下载镜像,然后通过BalenaEtcher来把系统镜像放在U盘上。接着就是启动与安装了,没什么特别的,只要改一下BIOS的启动顺序即可。参考: ht

2023-02-05 10:44:32 737

原创 在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用

1 简介我们进行Web API开发的时候,经常会使用Json格式的消息体,而Json格式非常灵活,不同的人会有不同的设计风格和实现,而JSON API提供了一套标准。但它并不提供直接实现。Katharsis是JSON API的Java实现,使用它可以快速开发出Json based的Web接口,还能快速的整合到Spring中。今天我们就来试试如何在Spring Boot中使用Katharsis。2 整合过程2.1 添加依赖我们在Spring Boot中添加依赖如下,包括常规的starter、jpa

2023-02-03 21:35:47 580

原创 在GCP的Kubernetes上安装dapr

1 简介我们之前使用了dapr的本地托管模式,但在生产中我们一般使用Kubernetes托管,本文介绍如何在GKE(GCP Kubernetes)安装dapr。相关文章:dapr本地托管的服务调用体验与Java SDK的Spring Boot整合dapr入门与本地托管模式尝试2 安装GKE我们直接在网页上安装GKE,我们安装的是Autopilot模式的GKE,如下:点击创建,等一段时间后就会创建成功了。检查 GKE状态需要安装以下gcloud插件:$ gcloud compon

2023-02-03 12:11:13 231

原创 dapr本地托管的服务调用体验与Java SDK的Spring Boot整合

1 简介之前在文章《dapr入门与本地托管模式尝试》中介绍了dapr和本地托管,本文我们来介绍如果在代码中使用dapr的服务调用功能,并把它整合到Spring Boot中。Dapr服务调用的逻辑如下:本次实验会创建两个服务:pkslow-data,提供数据服务,用于返回数据;pkslow-hello,提供查询服务,外界调用,它会调用pkslow-data的接口获取数据,而pkslow-data处理完,也会调用pkslow-hello的接口反馈结果。2 创建Spring Boot项目2.1 引

2023-02-03 01:14:45 875

原创 dapr入门与本地托管模式尝试

1 简介Dapr是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。Dapr支持的语言很多,包括C++/Go/Java/JavaScript/Python/Rust/.NET/PHP等。目前,可用的构建块如下:构建块说明服务调用跨服务调用允许进行远程方法调用(包括重试),不管处于任何位置,只需该服务托管于受支持的环境即可。状态管理独立的状态管理,使用键/值对作为存

2023-02-02 09:28:34 299

原创 让Apache Beam在GCP Cloud Dataflow上跑起来

简介在文章《Apache Beam入门及Java SDK开发初体验》中大概讲了Apapche Beam的简单概念和本地运行,本文将讲解如何把代码运行在GCP Cloud Dataflow上。本地运行通过maven命令来创建项目:mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \

2023-02-02 00:12:25 252

原创 Spring Native打包本地镜像,无需通过Graal的maven插件buildtools

简介在文章《GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动》中,我们介绍了如何使用Spring Native和buildtools插件,打包出本地镜像,也打包成Docker镜像。本文探索一下,如果不通过这个插件来生成镜像。这样我们可以控制更多、了解更多。创建Spring Boot项目创建Spring Boot项目,引入Spring Native,我们主要使用的是Spring Native提供的AOT功能。如下:<dependencies

2023-01-30 23:37:17 577

原创 Quarkus入门体验,22ms启动一个Web服务

简介Quarkus是类似于Spring Boot的框架,可以方便大家进行Java开发。利用GraalVM的魔力,能更好的适应云原生的场景,极快的启动速度。创建项目在IDEA就直接有创建Quarkus项目的初始化工具,直接根据自己需要填好即可,非常方便:选择自己需要的一些组件和依赖,我这里只选择Web Reactive。这跟Spring Boot挺像的。生成的Java代码就一个文件,很简单小巧:编译运行创建成功后,把编译目标改为11,因为我用的是JDK11。通过mvn clean pack

2023-01-29 18:04:47 739

原创 GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动

简介GraalVM是高性能的JDK,支持Java/Python/JavaScript等语言。它可以让Java变成二进制文件来执行,让程序在任何地方运行更快。这或许是Java与Go的一场战争?下载安装GraalVM安装GraalVM首先到官网下载,我是直接到GitHub Release Page下载的,请下载对应的系统包,我下载如下:graalvm-ce-java11-darwin-amd64-22.3.0.tar.gz下载后解压到某个目录,我的如下:/Users/larry/Software

2023-01-29 18:03:24 1699 1

原创 打包iOS App并上架到TestFlight测试

开发者账号首先需要注册一个开发者账号,不然什么都免谈。在手机Apple Developer上注册给钱就行了,个人开发者一年688元。打包AppApp开发好后,就可以通过XCode打包。打包前选好版本号,不要跟以前提交的一样,重复的Version和Build是无法提交的。当然第一次打包就不可能会重复了。在菜单栏选择Product,然后选Archive进行打包:打包完成,会弹出以下对话框,就可以把应用上传到App Store Connect了。上面这个对话框可以按下面的方

2023-01-18 08:47:16 2583

原创 通过Docker启动Solace,并在Spring Boot通过JMS整合Solace

1 简介Solace是一个强大的实时性的事件驱动消息队列。本文将介绍如何在Spring中使用,虽然代码使用的是Spring Boot,但并没有使用相关starter,跟Spring的整合一样,可通用。JMS是通过的消息处理框架,可以深入学习一下,不同的MQ在JMS的整合上都是类似的。2 通过Docker启动Solace有两种方式试用Solace,一种是通过Docker来启动,另一种是使用Cloud版本,但Cloud版本有试用期限,我们使用Docker来启动吧。先下载镜像:$ docker pull

2023-01-17 10:07:34 1515 3

原创 通过Docker启动DB2,并在Spring Boot整合DB2

1 简介DB2是IBM的一款优秀的关系型数据库,简单学习一下。2 Docker安装DB2为了快速启动,直接使用Docker来安装DB2。先下载镜像如下:docker pull ibmcom/db2:11.5.0.0启动数据库如下:docker run -itd \ --name mydb2 \ --privileged=true \ -p 50000:50000 \ -e LICENSE=accept \ -e DB2INST1_PASSWORD=pkslow

2023-01-15 10:19:17 998

原创 在Ubuntu上安装OpenShift并使用

服务器信息在阿里云买了个抢占式的服务器,地区为华南广州,系统为Ubuntu 20.04,8核16GB。安装Docker命令如下:$ apt-get update -y$ apt-get upgrade -y$ apt-get install -y docker.io安装成功后,检查一下版本:$ docker versionClient: Version: 20.10.7 API version: 1.41 Go version: go1

2023-01-15 10:12:29 739

原创 Spring Cloud服务发现组件Eureka

简介Netflix Eureka是微服务系统中最常用的服务发现组件之一,非常简单易用。当客户端注册到Eureka后,客户端可以知道彼此的hostname和端口等,这样就可以建立连接,不需要配置。Eureka 服务端添加Maven依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-s

2023-01-14 10:34:19 754

原创 如何通过Terraform Associate考试并获得证书

1 什么是Terraform?Terraform是一个IaC工具,IaC全称为Infrastructure as Code,基础设施即代码。它的理念是通过代码来管理基础设施,如服务器、数据库等,更多请看《Terraform入门教程,示例展示管理Docker和Kubernetes资源》。而作为IaC的事实标准,了解并学习Terraform还是很有必要的。工作中也用到了Terraform,所以我就去考了Terraform Associate这个证书。2 关于Terraform AssociateHas

2023-01-14 10:25:59 1055

原创 在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)

1 简介Cloud SQL 是GCP上的关系型数据库,常用的有三种方式来创建:(1) 界面操作(2) 命令行 gcloud(3) Terraform在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。2 GCP 操作界面登陆GCP,选择SQL,可以创建MySQL、PostgreSQL和SQL Server:以PostgreSQL为例,可以选择很多参数:3 gcloud命令通过命令行创建也很方便,可以自动化。命令如下:$ gcloud sql instances

2023-01-12 20:33:28 587

原创 在GCP上创建GCE的三种方式(Console,gcloud,Terraform)

1 简介如果要选择GCP为云平台,则经常需要创建GCE(Google Compute Engine),有以下几种方式:(1) 在浏览器创建(2) 命令 gcloud(3) Terraform在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。2 GCP Console登陆操作界面,点击创建按钮,然后选择好参数即可:会显示出对应的价格。3 gcloud命令在操作界面创建时,可以直接查看对应的gcould命令:我们直接运行就可以创建了:$ gcloud compu

2023-01-12 20:31:26 666

空空如也

空空如也

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

TA关注的人

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