自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 白话云原生-云原生的简介

云原生(cloud native)是基于分布部署和统一运管的分布式云,是一系列相关技术的集合(包括如:DevOps、容器、服务网格、微服务、不可变基础设施、声明式API)。云原生就像“敏捷”或者“DevOps”一样演化到今天,他的定义已经不是一个具体的概念,而是已经变得五花八门,只要是关于系统上云构建、部署或管理等的好的方式,都是云原生的组成部分。

2024-04-15 16:25:47 339

原创 回调函数简介

回调函数是一种在编程中常见的概念,它是将一个函数作为参数传递给另一个函数(函数指针,函数的首地址),并在特定事件发生或特定条件满足时被调用执行的函数。以下是我对回调函数的简化的理解。

2024-04-13 00:48:14 428

原创 Nginx配置:location中的proxy_pass和alias的简介

一般情况下,前端的包等静态资源可以使用alias来设置;后端的api接口可以使用proxy_pass来设置。一个简单的前后端分离的系统就可以通过这两个关键字完成配置。以及Nginx中proxy_pass的斜杠“/”问题。

2024-04-09 23:37:47 639 1

原创 隐私计算相关技术简介

隐私计算其实是一系列数据可用不可见”技术集合,在保护数据和隐私安全的前提下,实现数据价值的转化和释放。比如可以实现联合求交、联合统计、联合计算和隐私查询等。

2024-04-09 00:01:21 310

原创 简单的双活应用部署方案

简单的高可用双活应用部署方案

2024-04-07 23:29:47 738 1

原创 扫码登录方案设计

由于传统账号密码登录的方式过于繁琐,因此主流H5桌面端都可以使用扫码登录。当我们涉及扫码登录的时候我们首先需要考虑是“同一个产品内的扫码登录”还是“第三方应用的扫码登录”,其次扫码登录的安全问题我们也需要考虑。下文分别介绍了同一产品内的扫码登录和第三方产品扫码登录的一种实现方案。某个产品既有App端又有桌面H5端,用户可以使用App来扫描桌面H5端的登录二维码,经过App端授权后,桌面H5端实现自动登录。

2024-03-29 11:15:41 411

原创 双因素认证

双因素认证方法

2022-11-24 17:29:59 1462 1

原创 shell的串行和并行执行

shell脚本的串行和并行执行。

2022-11-24 17:07:08 1427

原创 常用持久化方式选择

关系型数据库:结构化数据,支持事物,结构简单清晰。NoSQL数据库:半结构化数据,不同场景选用不同的数据库,每种数据库设计实现都完全不同,针对不同场景,比如:Redis:作为缓存,数据结构服务器,可以实现分布式锁,消息队列。数据结构支持String,Hash,List,Set,SortedSet等,作为缓存使用所以不常用复杂查询。支持各类序列化器。案例:购物车(Hash),实时排行榜(SortedSet)等。MongoDB:最像关系型数据库的非关系型数据库,包含有各种查询方式。Collection.

2021-09-13 10:59:24 424

原创 0.0.0.0,localhost,127.0.0.0的区别

0.0.0.0不同场景不同意思:在服务器中:0.0.0.0表示本机上的任意ip地址,比如本机有内外网两个ip,那么当服务A开通0.0.0.0的访问后,通过两个ip都可以访问服务A。比如:3306端口监听在127.0.0.1,只有本机客户端可以访问,其他服务器无法访问;3306端口如果监听在0.0.0.0上,如果没有端口限制,那么其他服务器则可以连接该服务器的该端口。在路由中:0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。表示”任意IPV4主机”。当一台主机

2021-08-11 10:56:59 3679 2

原创 Spring依赖注入的几种方式

一. 三种依赖注入1. 字段注入@Autowire private ExampleService exampleServiceImpl;这种注入方式存在三个明显缺陷:对象的外部可见性:也就是脱离了Spring容器那么这个对象就不会被注入进去。循环依赖:字段注入不会被检测是否出现依赖循环。比如A类中注入B类,B类中又注入了A类。无法设置注入对象为final:因为final的成员变量必须在实例化时同时赋值。2. 构造器注入private ExampleService exampleSer

2021-08-11 10:40:42 2536

原创 POI处理blank和null

一. 问题利用POI处理Excel时,对于“空格”的判断往往是程序中必不可少的一步,怎么处理这些“空格”呢?二. 解决Excel中的空格又可能是null也有可能是空字符串"",因此在判断是我们要同时判断这两种情况,如下当单元格不为空时处理:if(targetCell != null || targetCell.getCellType() != Cell.CELL_TYPE_BLANK){ //当单元格不为空时处理逻辑}三. blank和null的处理方式row.getCell(cellIn

2021-08-06 09:44:52 2922

原创 mysql设置免密登陆

一、设置mysql登陆用户和密码:mysql_config_editor set --login-path=root --user=root --host=localhost二、输入密码:Enter password:若密码中包含“#”,请在密码外添加双引号,如:"test!@#"三、查看配置的免密登陆用户mysql_config_editor print --all四、免密登陆mysql --login-path=root五、删除免密登陆配置mysql_config_edi

2021-07-26 13:49:44 2027

原创 notepad和shell中的中文乱码问题

当中文显示乱码时,要清楚这些中文乱码是以什么形式输入到文件中取得,展示的时候是以那种形式展示的。也是就是这些中文原本是按照什么形式编码写入到文件中,又是以什么形式解码显示的。编码解码保持一致,你看到的才是正常的中文。我们都知道字符通过某种编码格式编码成为字节,字节再解码成为字符。文件都是以字节方式存储,当我们打开文件时,文件再解码成为字符展示在我们面前。展示:字符存储:字节一、Notepad++格式 -> 以xxxx格式编码:就是改变展示时解析字节的方式,以xxxx的格式来解码字节来展示。文

2021-07-20 20:04:09 831

原创 shell中的数据处理:grep, sed, cut, awk

简单介绍grep、cut、awk、sed 常常应用在查找日志、数据、输出结果等等,并对我们想要的数据进行提取。通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取。简单理解:grep是简化版的sed,cut是简化版的awkgrep命令grep应用场景:通常对数据进行 行的提取语法:grep [选项]...[内容]...[file]-v #对内容进行取反提取,也就是去除没有这个内容的行-n #对提取的内容显示行号-w #精确匹配 ????-o

2021-07-20 15:52:15 695

原创 python中全局变量的使用

先看一个例子:NUM = 0ARRAY = [0]def fun1(NUM, ARRAY): NUM += 1 ARRAY[0] += 1fun1(NUM, ARRAY)print 'after fun1 %d %s' % (NUM,ARRAY)def fun2(): global NUM NUM += 1 ARRAY[0] += 1fun2()print 'after fun2 %d %s' % (NUM,ARRAY)执行结果:after

2021-07-20 15:09:44 2357

原创 Java的类加载器

静态加载 vs 动态加载动态加载:程序在运行时调用相应方法,即使其他方法是错误的,程序依旧会执行。通过动态加载可以让程序的可延长性大大提升,对以后的维护和扩展有重要意义。静态加载:程序在编译时执行。在执行过程中加载所有可能执行到的程序。在这种加载方式下,只要加载中一个方法出错,程序就不能运行。我们一般写程序默认的是静态加载。但是其实还是看到new进行隐式调用。两个异常 (exception)静态加载的时候如果在运行环境中找不到要初始化的类, 抛出的是 NoClassDefFoundError,

2021-07-20 11:27:56 66

原创 前后端联调跨域解决方案

设置代理利用代理的方式,使前后端的访问的协议(http/https),主机和端口号相同:本地调试方法:主流的IDE(如vscode)中都可以设置代理,使本机称为前后端访问的代理服务器。反向代理服务:利用nginx服务代理前后端请求。跨域资源共享CORS在前后端设置允许浏览器向跨源服务器,发出XMLHttpRequest请求,加入相关代码。JSONP利用浏览器不阻碍js的相互调用而实现跨域请求...

2021-07-20 11:02:39 926 1

原创 黑盒测试类型和作用

等价类划分:用少的用例覆盖每一种输入类型。边界值分析:测试边界情况是否考虑。因果图:输入条件的各种组合造成的错误。正交试验法:为了减少用例,有保证覆盖率。

2021-07-20 10:41:20 320

原创 关系型数据库中范式的理解

存在了主码不是单个字段,那么就是多对多因为否则没必要联合主键。但却不见得是拆成三个表因为,这只是这两个字段的多对多而不是两个表,也就是可能其中一个字段没有小弟。所以此时只用拆成两张表。只有这两个组成主键的字段都有小弟的时候才分三个表。主码传递依赖➡️非主属性间依赖所以,单独形成的这个表可能存在重复现象,就出现了数据冗余的现象。当然也可以都不一样。但是就是出现了插入异常所以还是要分开。所以这里是出现了一对多的可能性。比如id, 姓名, 绰号。

2021-07-19 14:51:12 185

原创 Servlet是什么

sevlet是什么其实服务器端就是只有servlet,而其他层比如service只是给servlet层来提供工具的一个服务类而已,dao又是service的一个工具类????。因为只有servlet才有自己的生命周期,才能被服务器调用起来。tomcat是什么其实server就是一个socket,而webapp就是servlet。而servlet就是j2ee的一个规范,有自己的生命周期,以及作用域等。????tomcat:TCP/IP -> socket + servlet容器 -> t

2021-07-19 14:27:04 152 1

原创 Python变量的作用域

Python有两个内置的函数,locals() 和globals(),它们提供了基于字典的访问局部和全局变量的方式。Python变量就是在不同的域中。联想:Servlet的四大作用域;Java的private default public protected。而正因为我们需要变量在更大的范围内是可用的所以我们才需要更大的作用域,才有了Servlet四大作用域和JSP三大作用域。这些更大的作用域可以理解为在一个线程中定义的变量,作用域是在这个线程等…可以想Servlet的生命周期也是由函数去..

2021-07-19 14:19:02 92

原创 HTTP协议和Socket的区别和联系

HTTP: 超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。Socket: Socket不属于协议范畴,而是一个..

2021-07-19 13:53:43 195

原创 值传递 vs 引用传递 vs 地址传递

是否是值传递:取决于是否发生了复制,并且操作的是地址的值(对于引用类型来说),比如java和python,js等的全部调用都是值传递,都是把指针复制了一份。并且操作的都是地址的值,如果是mutable的变量,那么不会改变地址的值因为,实际上中间其实还有几层指针。但是如果指向了一个immutable的值那么就会操作这个指针指向新的值。java和js中还分为基本类型和引用类型(对象);基本类型没有指针指向,直接操作该值。引用类型又分为mutable和immutable(常量指针)类型。但是java中s.

2021-07-19 11:01:56 89

原创 java泛型/c++模板 vs 多态 vs 重载

论目的:java泛型 vs 模板 vs 模板泛化 vs 重载所以用了泛型的话那么这个代码的结构是不会改变的,只是中间数据类型发生了变化,为了类型检查和之后不需要类型转化,那么就引入了泛型的机制。重载就不是这样了,而是根据传入数据类型,个数,顺序的不同,而使用完全不同的处理办法。泛型是为了传入不同类型的参数也要执行相同的运行的方法。但是不需要类型转换c++模板就是也是为了传入不同的代码也要用相同的代码进行处理,并且不会再运行阶段进行类型擦出对于普通方法的重载就是重载,对于模板方法的重载就是模板的特化

2021-07-19 10:34:35 232

原创 各种排序算法的对比图

2021-07-19 10:26:31 272

原创 编译 vs 解释

把高级语言翻译成机器语言的两种方式:一种是解释,一种是编译。两种方式只是翻译的时间不同,一种是边翻译边运行,另一种是翻译所有的代码,然后开始运行。bat和shell是比较纯粹的解释型语言和脚本语言perl和ruby是先编译成parse tree然后解释运行java和python是先编译成java字节码和python字节码然后再解释运行*c和c++*是纯粹的编译型语言,因为直接编译成为机器码...

2021-07-19 10:22:18 150

原创 python/javascript/java一切皆为对象的理解

对于python中一切皆对象的理解:python中的一等公民可以赋值给一个变量可以添加到集合对象中可以作为参数传递给函数可以当做函数的返回值type,class,object的关系object是一切对象:list、str、dict、tuple的基类,同时object是type的实例类type是自身的实例,同时type也继承自object类由结论1和结论2,得出一切皆对象,同时一切皆继承自object类对于javascript中一切皆为对象的理解:应该是一切引用类型都是

2021-07-19 10:17:47 154 1

原创 VUE{{}}中数据渲染出现undefined

VUE{{}}中数据渲染出现undefinedBackground在前端编码过程中,常常会出现在mustache表达式 {{}} 中undefine的某属性报错。原因是如果 {{}} 仅仅是个变量如 {{a}} 是不会报错的,a可以是undefine或者null。但是如果{{a.b}} 或者 {{a['b']}} ,那么当a是undefine的时候就会报错。并且因为Ajax是异步加载所以常常出现加载数据之前报出这个错误。Solution利用在标签上面添加v-if:例如: <div v-if

2021-07-19 10:05:11 2810

空空如也

空空如也

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

TA关注的人

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