自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你的名字的博客

这是我的记事本~

  • 博客(124)
  • 资源 (3)
  • 收藏
  • 关注

原创 系统设计取舍问题

由于资源和时间的限制,不可能满足所有的需求,因此需要进行取舍。优先级:对于不同的需求,可以根据其重要性和紧急程度来确定优先级。对于低优先级的需求,可以暂时搁置或延后。成本与效益:在取舍时,需要考虑到实施某个需求所需的成本和所带来的效益。时效性:需求可能具有不同的时效性,一些需求可能会随着时间的推移而失去价值。总之,在需求设计取舍过程中,需要综合考虑多个因素,并根据优先级、成本与效益、可行性、用户反馈和时效性等进行取舍。如果用户对某个需求不满意或不需要,可以考虑将其暂时搁置或取消。

2024-04-07 19:30:00 170

原创 多数据源读库打印sql

在本地进行开发的时候,需要打印读库的sql,但是常规的配置是无法打印的,需要在读库的配置中进行设置。

2024-04-07 09:52:11 8

原创 k8s系列之十六 Istio通过kiali可视化bookinfo

kiali 是使用 istioctl 客户端工具安装 demo profile 时自动就会安装的组件,kiali 是一款 istio 服务网格可视化工具,提供了服务拓扑图、全链路跟踪、指标遥测、配置校验、健康检查等功能。

2024-03-26 23:45:00 232

原创 k8s系列之十七 Istio中的服务治理

在 Istio 中,流量路由管理是通过 DestinationRule 和 VirtualService 这两个资源来实现的。DestinationRule 用于定义服务的目标规则,例如负载均衡策略、连接池设置等。而 VirtualService 则用于定义服务的路由规则,包括如何将流量路由到不同的版本或实例。

2024-03-26 23:45:00 1160

原创 k8s系列之十五 Istio 部署Bookinfo 应用

Bookinfo 应用中的几个微服务是由不同的语言编写的。这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 reviews 服务具有多个版本。该应用由四个单独的微服务构成。这个应用模仿在线书店的一个分类,显示一本书的信息。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论。下图展示了这个应用的端到端架构。Bookinfo 应用中的几个微服务是由不同的语言编写的。

2024-03-21 21:00:00 1193

原创 k8s系列之十四安装Istio

Istio 是一个开源的服务网格(Service Mesh),用于连接、管理和保护微服务。它提供了一组功能强大的工具,包括流量管理、安全性、监控和跟踪等,以帮助在微服务架构中更好地管理服务之间的通信。总的来说,Istio 提供了一种灵活且强大的方法,用于解决微服务架构中常见的网络通信、安全性和可观察性等问题。

2024-03-21 18:30:00 1121

原创 k8s系列-kubectl 命令快速参考

这些指令适用于 Kubernetes v1.29。要检查版本,请使用 kubectl version 命令。kubectl -A。

2024-03-15 18:30:00 793

原创 k8s系列之补充三数据管理之nfs手动搭建

nfs手动安装

2024-02-29 19:00:00 670

原创 写代码当时觉得没问题,过段时间再看就有问题

相信每个人都会遇到这种情况:遇到写代码时觉得没问题,但过段时间再看就发现问题。这通常与代码的可读性、复杂度以及当初编码时对问题理解的深度有关。

2024-02-26 21:30:00 405

原创 fastjson 替换超大的JSON对象中的key优化

遇到一个处理超大json(接近2w行)的问题,原有处理代码效率比较低下,耗时10几秒,业务要求耗时越短越好。因为json非常长,原来对value进行解析的逻辑是逐个字段进行正则匹配判断是否是月份,所以导致效率非常低。优化以后建立映射字段,存储月份对应的码值,遇到对应码值直接返回,原来正则表达式没有进行预编译,所以效率低下。思维转换:一般的思维是遍历json的所有字段,对符合条件的进行转换,但是效率低下,还有大量的正则匹配操作。逆向思维,只对配置中指定的字段进行转换,非配置中的直接跳过,可以大幅提升速度。

2024-02-19 17:50:02 186

原创 k8s系列之十三Service Account和RBAC授权

首先Kubernetes中账户区分为:User Accounts(用户账户) 和 Service Accounts(服务账户) 两种,它们的设计及用途如下:UserAccount是给kubernetes集群外部用户使用的,例如运维或者集群管理人员,使用kubectl命令时用的就是UserAccount账户。UserAccount是全局性,在集群所有namespaces中,名称具有唯一性,默认情况下用户为admin;用户名称可以在kubeconfig中查看。

2024-02-05 22:15:00 1221

原创 k8s系列之十二Kubernetes Ingress

首先我们来思考用传统的web服务器,比如Nginx,如何处理这种场景?比如使用Nginx充当一个反向代理服务器拦截外部请求,读取路由规则配置,转发相应的请求到后端服务。反向代理web服务器负责拦截外部请求,比如Nginx、Apache、traefik等等。我一般以Deployment方式部署到kubernetes集群中,当然也可以用DeamonSet方式部署;这两种部署方式个人觉得有利有弊,感兴趣的请参考这篇文章。

2024-02-05 19:00:00 2160

原创 k8s系列之十一Kubernetes的网络

Network Policy是K8S的一种资源,它使K8S可以通过Label选择Pod,并指定其他Pod或外界如何与这些Pod通信。换句话说,当Pod被定义了Network Policy时,只有Policy允许的流量才能访问Pod(默认情况下,任何来源的流量都可以访问Pod,是没有限制的)即帮助K8S实现更为精细的流量控制,实现租户隔离机制。目前已经有多种支持K8S的网络方案,包括 Flannel、Calico、Canal等,它们都实现了CNI规范,因此无论我们选择哪种具体方案,它们的网络模型都是一致的。

2024-02-04 20:30:00 1323

原创 k8s系列之十Kubernetes的包管理器Helm

Kubernetes能够很好地组织和编排容器,但它缺少⼀个更高层次的应用打包工具,而Helm就是来干这件事的。

2024-02-04 19:30:00 2050

原创 k8s系列之补充二helm安装Tiller出错解决

到那时查看pod是会发现ErrImagePull,ImagePullBackOff,查看一下pod。查看tiller-deploy-54cb5b4ff9-tgz8c pod日志信息。1.删除tiller deployment,顺带会一起删除tiller pod。安装tiller ,但是有时间镜像会很慢,所以选择手动安装tiller。2.删除完再执行helm init,发现提示已安装。4.再次查询版本信息,发现已经不报错了。坑出现了,版本不匹配。

2024-02-02 22:15:00 584

原创 k8s系列之九Secret 与Configmap

在应用启动过程中需要一些敏感信息,比如数据库用户名、密码,如果直接明文存储在容器镜像中是不安全的,K8S提供的方案是Secret。

2024-02-01 22:00:00 1174

原创 k8s系列之八数据管理

在Docker中我们知道,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中,常用的手段就是Volume数据卷。在K8S中,也提供了存储模型Volume,支持我们将应用中的数据持久化存储到容器中。(1)学习Volume,以及Kubernetes如何通过Volume为集群中的容器提供存储;(2)实践几种常用的Volume类型并理解它们各自的应用场景;

2024-01-31 23:30:00 1177

原创 k8s系列之七Health Check

强大的自愈能力是Kubernetes这类容器编排引擎的⼀个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用Liveness和Readiness探测机制设置更精细的健康检查,进而实现:(1)零停机部署。(2)避免部署无效的镜像。(3)更加安全的滚动升级。

2024-01-31 21:45:00 1103

原创 k8s系列之六Rolling Update滚动更新

为了服务升级过程中提供可持续的不中断的服务,K8S提供了Rolling Update机制,它可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新。滚动更新采用渐进的方式逐步替换旧版本Pod,如果更新不如预期,那么也可以通过回滚操作恢复到更新前的状态。

2024-01-31 21:00:00 754

原创 k8s系列之五通过Service访问Pod

假设Pod中的容器很可能因为各种原因发生故障而死掉。Deployment等Controller会通过动态创建和销毁Pod来保证应用整体的健壮性。换句话说,Pod是脆弱的,但应用是健壮的。每个Pod都有自己的IP地址。当Controller用新Pod替代发生故障的Pod时,新Pod会分配到新的IP地址。这样就产生了⼀个问题:如果⼀组Pod对外提供服务(比如HTTP),它们的IP很有可能发⽣变化,那么客户端如何找到并访问这个服务呢?Kubernetes给出的解决方案是Service。

2024-01-30 22:00:00 1431 4

原创 k8s系列之四DaemonSet和Job

Deployment部署的副本Pod会分布在各个Node上,每个Node都可能运行好几个副本。DaemonSet的不同之处在于:每个Node上最多只能运行⼀个副本。

2024-01-27 22:00:00 1122

原创 k8s系列之三Deployment

既然 用YAML配置文件 署应用 , 现在就很有必要了解⼀下Deployment的配置格式了,其他Controller(比如DaemonSet)非常类似。metadata:spec:selector:template:metadata:labels:spec:这是一个Kubernetes Deployment的YAML文件,用于定义一个NGINX容器的部署。: 指定使用的 Kubernetes API 版本,这里是 Apps API 的版本。

2024-01-18 22:15:00 1310

原创 k8s系列之二集群环境搭建以及插件安装

终端工具很好用。1、虚拟机三台(ip按自己的网络环境相应配置)(master/node)2、关闭防火墙(master/node)3、关闭selinux(master/node)4、关闭swap(master/node)5、添加主机名与IP对应的关系(master/node)#添加如下内容:#保存退出6、修改主机名(master/node)[root@localhost ~] hostname k8s-master ##临时生效。

2024-01-17 22:00:00 1222

原创 k8s系列之一集群搭建的一些坑

k8s集群部署的时候会遇到很多的坑,即使看网上的文档也可能遇到各种的坑。

2024-01-17 01:00:00 1107

原创 go mod 模式下安装beego

网上大部分的教程都是基于GOPATH模式的,所以会很坑!都排除了以后执行bee命令就会出现命令提示了,可以正常玩耍了。确保您的Go版本在1.11或更高版本。创建一个新的文件夹作为您的项目根目录,并导航到该目录。上面两个命令会生成bee.exe文件,生成的路径在。这一步只是把代码下载下来了而已,运行。命令来检查您的Go版本。

2023-12-15 01:00:00 483

原创 自定义BeanPostProcessor之Spring Cloud Feign组件服务间优雅调用

如果引用的其他服务比较多,需要修改很多的url,这样比较浪费时间,通过重写@FeignClient的url,可进行统一处理,而不用一个一个的去修改。也可以配置研发环境,本地环境等多个环境的服务地址。在本地研发环境开发时候可能需要调用其他服务,例如通过service-name的方式调用,但是如果经过注册中心,并且服务有多实例的情况下会出现超时的情况。可以通过指定服务ip的方式调用。可以看到,使用feign之后,我们调用eureka 注册的其他服务,在代码中就像各个service之间相互调用那么简单。

2023-12-07 01:00:00 441

原创 自定义BeanPostProcessor之XssBeanPostProcessor

BeanPostProcessor是Spring框架中的一个重要的扩展点,它允许开发者在Bean初始化前后对Bean进行自定义处理。Spring中有很多内置的BeanPostProcessor,如AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、InitDestroyAnnotationBeanPostProcessor等。

2023-12-01 01:00:00 757

原创 arthas使用

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。math-game进程是第 2 个,则输入 2,再输入回车/enter。输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。功能 追踪方法内部调用路径,并输出方法路径上的每个节点上耗时(只会打印到第一层)

2023-11-29 16:03:37 448

原创 java使用freemarker模板生成html,再生成pdf

1.freemarker模板生成html添加Maven依赖在pom.xml文件中添加以下依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>创建Freemarker模板新建一个HTML文件,例如ta

2023-11-29 01:00:00 1721

原创 基于EasyPoi进行word模板导出时循环写段落

EasyPoi是一个Java的Excel和Word处理库,主要用于将Java对象转换为Excel或Word文档,并且可以从Excel或Word文档中读取数据到Java对象。本文将重点介绍如何使用EasyPoi写Word文档。

2023-11-11 08:00:00 1219 1

原创 《实现领域驱动设计》

领域、子域、界限上下文2.1 有效建模的要素

2023-10-27 18:31:15 135

原创 Java枚举值比较容易出错问题

请注意,当使用“==”运算符比较枚举值时,比较的是它们在内存中的地址,而不是它们的值。因此,这种比较通常是合适的,因为枚举值在Java中是单例对象。但是,如果你需要比较枚举值的值而不是它们的地址,那么你应该使用equals()方法。在Java中,可以使用equals()方法来比较枚举值。也可以使用“==”运算符进行比较,因为枚举值在Java中是单例对象。如果你使用一个字符串去和枚举值比较,容易犯的一个错误是获取的是枚举名称,而没有或者code或者value。

2023-10-26 15:23:06 259

原创 IDEA Go语言开发环境无法debug调试

C:\Users\用户名\IntelliJIdea2018.1\config\plugins\intellij-go\lib\dlv\windows 下,把刚才生成的dlv.exe替换一下就可以了。有些回答go get -u github.com/derekparker/delve/cmd/dlv。下载项目:git clone https://github.com/go-delve/delve。命令 ,会生成dlv.exe 文件,这个就是我们要的。现在如果使用go mod方式的话这个是行不通的。

2023-08-04 10:46:32 1179

原创 Spring Cloud feign服务间调用调试更方便

如果引用的其他服务比较多,需要修改很多的url,这样比较浪费时间,通过重写@FeignClient的url,可进行统一处理,而不用一个一个的去修改。也可以配置研发环境,本地环境等多个环境的服务地址。在本地研发环境开发时候可能需要调用其他服务,例如通过service-name的方式调用,但是如果经过注册中心,并且服务有多实例的情况下会出现超时的情况。可以通过指定服务ip的方式调用。可以看到,使用feign之后,我们调用eureka 注册的其他服务,在代码中就像各个service之间相互调用那么简单。

2023-07-12 15:51:54 392

原创 《数据密集型应用》

这是一本很不错的书。

2023-06-14 11:31:04 75

原创 线程池异常问题排查

如果线程池设置的不合适会出现ask xxx rejected from java.util.concurrent的现象执行后会出现下面的异常:AsyncSupplycb5822rejectedfromjavautilconcurrentThreadPoolExecutor@4b9e13dfRunningpoolsize2activethreads2q。

2023-06-06 16:03:14 416

原创 Springboot restTemplate 自定义消息转换器jackson-dataformat-xml 优先生效的问题

为了解决这个问题,需要更换一下优先级,把MappingJackson2XmlHttpMessageConverter放到解析器列表的最后一个。但是如果同时引入了jackson-dataformat-xml包的时候,你会发现比较坑爹的现象。返回的json变xml了。重新设置StringHttpMessageConverter字符集为UTF-8,解决中文乱码问题。调用第三方接口,返回中文是乱码,因此需要引入自定义消息转换器。

2023-05-24 16:29:06 383

原创 Java8-Function的使用

Function使用

2023-04-12 10:53:19 125

原创 Java8-Consumer的使用场景

执行readPerson作为参数在PersonTest的run()方法里执行了。Java8中可以使用Consumer来实现在函数的入参中传递方法。

2023-04-12 10:38:51 787

原创 Java8-Predicate 策略模式的替代品消灭 if else

利用Java8的Predicate消灭 if else。首先定义一个map,key是不同的服务代码,value是需要做校验的条件,然后针对不同的服务代码做校验。当然Supplier、Consumer都可以做类似的实现。使用策略模式消灭if else,可以利用Java8的新特性来实现策略模式。

2023-03-07 09:44:11 381

前端读取excel示例.zip

前端读取excel示例

2020-07-28

RS232通讯程序代码

RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中EIA (Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有EIARS-422A、EIA RS-423A、EIARS-485。这里只介绍EIA RS-232C(简称232,RS232)。例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

2014-04-13

MSP430_SPI_模块

MSP430单片机特点:(1)SPI模式支持3线和4线模式;(2)支持主机与从机模式;(3)接受和发送有各自独立的发送移位寄存器和缓冲器;(4)接受和发送都有独立的中断能力;(5)移位时钟的极性和相位可编程;(6)字符长度可以是7位或者8位。 当Msp430 USART模块控制器UxCTL的位SYNC置位时,USART模块工作于同步模式,对于149即工作于SPI模式,若是169,USART0可以支持I2C,可以通过另一控制位I2C控制,I2C位0则工作于SPI。在SPI模式下,允许单片机以确定的速率发送和接收7位或8位数据。

2014-03-18

空空如也

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

TA关注的人

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