- 博客(214)
- 资源 (6)
- 收藏
- 关注
原创 go语言基础 break和contine区别
continue,代码执行contine的时候,当前的这次循环不继续执行。即代码完整执行次数是N-1次,遇到contine这次执行了contine之前的部分,之后不执行。contine和break仅作用域{}内,遇到多重for嵌套,break和contine对{}外部,即上一层for循环时没有作用的。break和continue是编程语言的标准语法,几乎在所有的语言都有类似的用法。break 代码执行到break的时候直接终止for循环。假设一个for循环代表{}内循环N次。
2023-11-27 00:55:36 918
原创 【shell实战案例】批量注释nginx的重定向并进行文件对比
线上配置中nginx存在大量 return 301重定向的配置,根据必须注释。文件夹下有大量文件,每个文件都有很多行。由于登录服务器有点麻烦,希望通过shell脚本处理。这个命令比较简陋,给所有匹配到的行前面加#。如果这一行本来就注释了,可能会重复注释。大家根据业务实际情况使用。对比修改后的文件夹和备份的文件夹,这个命令会对比两个文件夹所有文件内容,比较清晰的给出结果。
2023-01-12 14:42:32 698 1
原创 【算法入门】什么是时间复杂度和空间复杂度,最优解
常数操作:执行时间固定和数据量没有关系的运算操作,如果和数据量有关就不是常数操作。时间复杂度:描述发生N次常数操作的指标。除了数据本身占用的空间,需要申请多少额外的空间来完成算法。估算时,每个数占用的空间为O(1)。列:插入中你自己使用了一个新的数组用来作为临时内存保存结果,空间复杂度就是O(N).直接跑几千万次,对比不同常数操作看哪个消耗时间短的就好。例如:对比乘法和位操作,可以发现位操作比较节省时间。所以位运算比普通运算好。冒泡排序 O(N^2)...
2022-06-09 05:10:59 809
原创 【每日算法220522】分区快速排序的从0到1
今日题目快速排序通过选择数组的最右侧数作为分隔符,将数组分割成小于区域,等于区域,大于区域,周而复始,最终将数组排序。今日心得数组相关的算法,一旦出现大量的systemcopy就说明不是最优解,没有充分利用数组空间。递归虽然理解很难,但是理解了解答就会很简单。只需要关注构建最小算法模型和边界条件。反而,使用非递归法的边界十分困难,非常容易出错。如果能画出纸上的过程,代码就实现了一半。否则,代码会卡在边界条件处理上,绕不出。算法编码package sort;/** * @ClassN
2022-05-22 19:24:28 173
原创 [每日算法0519] 二叉树逐层遍历和通过中序前序获取完整的树
今日题目二叉树的入门级别题目递归今日心得递归是算法的王道,对于初学者来说确实有点难。这么简单两行代码解决了复杂的问题,同时说明很重要。理解递归的本质是算法进阶的不二法门二叉树作为面试和工作中最常见的树,从此种下树苗,希望能慢慢成长。没有想象中那么难,至少可以默写一遍把。会有很多意想不到的困惑和收获。算法编码按层级倒叙打印二叉树package binarytree;import linklist.ListNode;import java.util.LinkedList;im
2022-05-19 00:37:34 217
原创 【每日算法220514】链表顺位相加和有序链表合并
今日题目题目1: 把两个长短链表按照顺序每一位相加后返回新的链表(难)题目2: 把两个有序链表合并后返回新的有序链表(中)今日心得直接看算法答案是不能提高算法水平的,算法最重要的就是解题思路而非编码。看了别人的思路去实现会少了最重要的部分。基本功就是数据结构的基本操作。比如链表结构以及如何遍历链表。如果这些知识都不具备。面试是不可能写出代码的,因为基本人你很难构思出如何遍历链表。算法编码链表结构package linklist;import java.util.List;/*
2022-05-14 02:01:22 264
原创 [每日算法220508] 单链表和双链表的反转
今日题目链表结构,单链表和双向链表链表的逆序今日心得算法要求太严格,理解别人的代码容易。字节写的时候差一点,结果就很难出现。一定要用示例演示算法过程,一开始就写抽象代码,边界条件很难想清楚。算法也是需要背的,多背两遍,多写两边。你就可以说你看这个就是入门的东西。算法并不高级,也不代表聪明程度。大部分人的算法都不到天分的程度。面试基本上也用不到天分。算法编码package linklist;/** * @ClassName SingleLinkList * @Descripti
2022-05-08 00:30:24 417
原创 [每日算法220505] 二分法与复杂度
今日题目二分法查找有序数组二分法解决局部最小值问题今日心得[局部最小]就是典型的纯算法题目,包含了很多隐藏的条件,如果不是事先准备。绝无可能在短时间内给出答案。抽象算法出来,需要通过一些具体的案例,用笔和纸演算。在脑中推算效率不高,大脑需要记忆太多内容。既要根据案例演算,也需要跳过细节,快速抽象出模型。然后通过对数器快速生成测试数据,根据测试结果调整算法。算法编码二分法查找有序数组package find;import math.Comp;import sort.Insert
2022-05-06 00:51:22 182
原创 为什么大厂程序员都要面试算法
这不是广告大部分起这个标题的都是广告,为了告诉你通过一些课程就能让你进入大厂。我主要是说给我自己听,我是如何决定在工作这么多年后开始学习算法,以及这样判断的决策依据是什么?一、算法和数据结构是什么算法是什么?具体的问题设计解决整个问题的流程设计评价流程好坏的标准和方法算法分类下面两大分类包含了所有明确知道如何算的流程,1+1=2,利用计算器更快速计算。不知道如何算,但是知道怎么尝试,通过计算机代替人工尝试的流程。举例问题: 给定个正数数组排序算法: 选择排序,冒泡排序,堆
2022-05-03 23:00:49 1312
原创 【每日算法220503】随机数和对数器
今日题目随机数的基本使用通过随机数生成对数器今日心得题目解法想不到很正常,不要新生惭愧。开始对于任何人都很难。就比如你想不到1+1等于2 一样。看似简单的问题,实际有复杂的推导过程。你不必要知道怎来的,但一定要学习1+1=2这个结论用来解决实际问题。练习做到位了,想法自然就有了一、 Math.random()函数等概率返回 double [0,1)int ans=(int)(Math.random()*K); 等概率返回任意整数获取不等概率返回[0,1)概率是x,Max(Mat
2022-05-03 21:49:21 366
原创 mysql深入理解全局锁和表锁解决MDL锁和死锁问题
说明不太深入细节,mysql的数据库可以粗略划分为global、table、row三种锁锁的种类全局锁global lock如何加锁全局锁又称为库锁,即锁住整个db instance.当我想让一个表read-only的时候,可以通过下面命令添加全局锁Flush tables with read lock (FTWRL) 命令set global readonly = true 全局参数Update,Create,ALter,Commit,事务等操作都会被锁住。什么时候使用全局锁使用
2022-04-23 20:50:45 1220 1
原创 Linux系统的ssh rsa免密登录的两种方式及原理(精)
本文目的说明白秘钥的使用方式,其他方面有较多文章已经说明了。免密登录的实现两种方式生成rds秘钥对cd ~/.ssh && ssh-keygen -t rsa -N "" -f id_rsa -q得到两个文件,公钥和私钥都是相对于执行命令的这台linux服务器而言的id_rsa 私有id_rsa.pub 公钥A免密登录B的两种方式比如A要登录B服务器方式一,把A的公钥pub文件,放在B的~/authorized_keys文件中打开A的id_isa.pub的文件,复
2022-04-10 20:25:37 3912 2
原创 golang下的rpc框架jsonrpc理解和使用示例
说明本文的目的理解一下rpc协议使用上的区别golang下jsonrpc框架的使用示例定义RPC协议import "github.com/pkg/errors"//定义一个叫做Demo的Rpc服务协议//包含参数结构和2个不同的参数处理协议// 返回值通过result指针获取,这点是由RPC服务来定义的type DemoService struct {}//包含1: 参数的个数和类型type Args struct { A, B int}//包含2: 参数的处理协议
2022-04-05 22:11:19 2967
原创 kubectl rollout restart 命令“unkonw command“
问题尝试用命令发现不识别kubectl rollout restart deployment <deployment_name> -n <namespace>原因kubectl版本太低,使用kubectl version查看版本发现是v1.14.8而kubectl rollout在1.15版本之后才有解决升级kubectl版本...
2022-03-28 18:41:15 738
原创 【golang学习路径04】包管理、依赖管理GoMoudle
封装和包管理封装 package每个目录一个包,有且只有一个package包名可以不和文件名一致main package包含可执行入口为struct定义的方法必须在相同包内(可以是不同文件)封装特性任何属性的命名首字母是否大写代表了其封装状态首字母大写 public首字母小写 privatepackage treeimport "fmt"type TreeNode struct { Value int Left, Right *TreeNode}//
2022-03-24 14:38:26 287
原创 【golang学习路径03】面向对象封装、继承、多态
六、面向对象仅支持封装,不支持继承和多态go语言没有class有structgo没有构造器,可以使用工厂方法代替通过面向对象学习struct和interface6.1 type关键字定义一种新的数据类型func testType() { // type代表定义一种新的类型,这里等同于int类型的别名。 // 一般用来定义结构体或者接口 type number int var b number =10 fmt.Println(b)}6.2 struct定义和初始化
2022-03-24 13:44:58 482
原创 【golang简明入门进阶指南02】 数组、切片、map类型的基础使用
五、集合类型5.1 数组数据定义func defArray() { //定义数组,默认赋值0 var arr1 [5]int fmt.Println("init val of arr1 =",arr1) arr1=[5] int {1,3,4,5} fmt.Println(arr1) //定义数组并赋予初始值 var arr2 = [3]int{1, 3, 4} arr3 := [3]int{13, 3, 4} fmt.Println(arr2, arr3) // 定义二位数组
2022-03-24 13:39:11 693
原创 【golang简明入门进阶指南01】golang基础变量、函数、条件控制
说明本文目的:学习golang 必须掌握的基本语法和概念前置条件:搭建号golang环境并输出helloworld一、变量和常量这部分要分清golang语言的优势特性1.1 变量声明名称在前,类型在后,重点突出变量声明既有初值,不存在null一旦声明必须使用,编译器决定可以不声明类型,编译器做类型推断var和: 等同,后者更短,短就是好注 := 只能在函数内使用,不能声明全局变量详细声明方法请参考代码(建议逐行演练一遍)package mainimport "fmt"
2022-03-24 13:38:19 638
原创 shell三剑客grep、sed、awk精讲
总览grep 文本过滤器sed 流编辑器awk 报告生成器grep基本语法以行为单位过滤通过匹配规则,对每一行进行匹配查找进行filter操作,匹配上的输出改行,否则丢弃改行## 方式1grep [option][pattern][file1,file2,file3]## 方式2(常用)comand | grep pattern选项含义-v取反,不包含某一行信息(常用)-i忽略大小写-n显示行号-r递归搜索-E支持正则
2021-11-27 18:27:36 628
原创 shell find命令使用简介
find命令基础语法find [path] [optional] [operation]path相对路径绝对路径optional选项含义-name根据文件名查找(常用)-iname同上,忽略大小写-perm根据文件权限查找-prune排除查找某些目录-user/group根据文件所属user,group- mtime -n | +n根据更改毫秒数(常用)-size -n +n按照文件大小-type按照文件类型
2021-11-27 18:16:43 964
原创 shell进阶指南
一、变量替换语法含义${变量#pattern}从开头匹配,删除0第一个匹配到字符删除。双#表示删除0匹配到的最后一个字符呢删除${变量%patther}从尾部开始匹配,从尾部开始删除,其他同上${变量/oldstr/newstr}匹配第一个替换,双//表示全部替换var1=${variable_1#*ov}var2=${variable_1##*ov}echo "# *ov匹配结果:" $var1echo “## *ov匹配结果:” $var2v
2021-11-27 18:06:39 380
原创 shell简易入门指南
二、基础语法2.1 变量不能以数字开头区分大小写变量、等号、值不能有空格。值的内部有空格可以用引号括起来,例如 var1=“a 2 c”#!/bin/bash指的是当前脚本通过bash命令解释和执行shell中不加local修饰的变量都是全局变量,比如函数内部声明的变量,其他函数中也可以使用2.2 位置变量位置变量参数含义$nn是数字,$0代表脚本本身,$0$9代表第19个参数。10个以上的参数用大括号包含 ${10}$@接收所有参数$*接收所
2021-11-27 17:54:24 363
原创 [100 tips about shell] shell中变量拼接输出字符串、单引号、双引号
文章目的shell脚本中会涉及很多变量结果拼接的场景,这篇文章相对其中的场景探讨和总结。变量拼接字符串时变量之间可以直接拼接变量拼接字符串可以通过${变量名} 限定变量范围可以用引号分割变量和字符串echo $var1world echo $var1"world"helloworldecho ${var1}worldhelloworld变量结果拼接单引号双引号单引号和双引号区别单引号内部变量会被当做字符串双引号内部变量依然会被解析其他区别略[root@se
2021-11-27 17:35:29 4582
原创 [100 tips about shell] Shell中的变量作用域,全局和局部变量
本文目的shell中的变量作用域是什么?是否有全局变量和局部变量?这个问题很多人可能都会犯错,下面一起看一下真相结论shell中没有变量作用域,一旦声明就全局可用。或者认为所有变量都是全局变量。使用local关键字修饰的变量,可以作为局部变量。验证#!/bin/bash# 脚本上方声明的变量var1="hello world"function test1{ # 脚本内部声明变量 var2=87 echo "test1 $var2"}ec
2021-11-27 15:43:44 257
原创 [100 Tips About Shell] Shell中是如何处理换行符的
背景命令行中需要\续行,shell脚本内部需要吗?shell需要某个符号作为结尾吗?比如java中的分号,javascript中可用分号可不用shell脚本 一行命令中途航换行写 shell 如何处理今天我们就搞明白这个问题命令行中换行符使用学习linux时,我们有如下两种经验敲击回车时会触发命令执行。命令太长需要通过 反斜杠\ 来告诉linux下一条命令是当前命令的继续使用上箭头拿到上一条命令时发现,最终执行的命令之间其实是没有换行符的。直到最后遇到 -l后的换行符开始执行命
2021-11-27 15:32:49 1661
原创 SaltStack远程执行命令使用指简介
一、文档说明工作中用到了salt,这里简单整理下一些常用命令,理解slat的命令语法,方便工作展开二、基本概念2.1 salt是什么?SaltStack,是开源的配置管理和远程执行引擎。是基于Python开发的C/S架构底层使用ZeroMQ消息队列pub/sub方式通信。ZeroMQ号称世界上最快的消息引擎。远程使用SSL证书签发的方式进行认证管理。2.2 核心概念Master 主,管理所有从服务器Minions 从,术语叫做minion2.3 GRAINSSalt中用来
2021-10-13 17:15:35 508
原创 【若依框架】登录,token,自定义session,鉴权等前后端流程解读
背景之前虽然讲了login,getInfo,getRoutes的三个接口,但从设计的角度来讲,这3个接口并没有完整实现一个功能。这里重点讲解若依框架对于自定义session,token校验,权限验证三个方面的实现。这些对于自己实现一个简单的后端框架有不错的参考意义功能说明登录功能\login及token的生成权限过滤校验自定义session前端如何配合可以参考上一篇博客登录及token生成主要解决的是用户登录、生成token和session的场景前端用户登录页输入usernam
2021-08-13 01:08:12 17885 4
原创 【架构设计02】C4架构模型-四步完成绝大部分的设计
定义C4架构设计是一个通过架构图来描述程序流程和架构设计的方法论,它最强大的地方在于仅仅通过四个模型就可以完成绝大部分系统的设计。C4模型COTEXT上下文:高度抽象的系统层面描述系统之间的交互图谱,说明系统之间的差异性和联通情况CONTAINER:容器指的是应用层面,通过放大某个系统查看里面的应用组成COMPONENT: 放大某个应用我们能看到应用组件,这些组件对应了代码组件。能够成为描述应用组成的重要参考。CODE: 代码层面的设计,也就是类图等UML制图。描述了一本或者多本代码的设计思路
2021-08-01 19:03:18 3235 3
原创 【经典传颂】人月神话The Mythical Man-Month
书籍是一种凝固的时间,穿过明月清辉与万里河山来看你。这本书写成十余载后我才出生,半个世纪后我才阅读。可怕之处在于,书中的观点仍然广泛受到认同。软件工程领域与其他工程行业相比大多程序员所认为的还要相似。有些方面右又比我们人所认为的差异还要大。这个领域的知识重在积累,终身学习是很多程序员的觉悟。0、引言人月神话是危险性和欺骗性的神话,因为他暗示了人员数量和时间可以互相替换的。进一步说,及时人力(Man)和时间(Month)不是线性关系,使用人月作为衡量标准实际上就是Mythical.一、程序员不为人.
2021-07-11 21:07:43 914 1
原创 【忆当年】H5布局易筋经——一个模型教你画出90%的前端页面
前言有没有一种前端通用的模式,可以让初学者或者和后端同学快速掌握页面布局呢?前端有很多种布局套路可以实现同样的页面效果,随着前端的发展也出现了很多布局的专业名词。比如框架布局,表格布局,流式布局,响应式布局、浮动模型、flexbox弹性伸缩布局,栅格化布局等等。这些布局方式柔和在一起,让前端的布局变得复杂。刚刚跨入前端的同学或者后端同学其实只要掌握一种方式就可以实现大部分的页面UI效果。今天我讲的是CSS+DIV盒子模型,这种模式可以说是最基础的布局知识。只要你掌握了盒子模型,所有的前端组件的UI都可
2021-07-07 10:37:10 941 2
原创 【忆当年】刚学java一个月时那些困扰过我的问题(java入门必读)
背景下面是我刚学习java一个月左右的笔记,回答了我刚学习java时对于面向对象里面的一些关键问题。如今看起来凌乱,甚至有些问题过于简单。但我知道有相当一部分刚入门的同学像我当年一样被这些问题苦恼。希望能对这些同学学习java有所帮助。最好的方式是理解后建立自己的笔记,并反复查看,直到您觉得这些问题不言自明面向对象OPP Obejct Oriented Programming一切皆对象抽象(abstract):舍弃个别的非本质特征,提取共同本质特征的过程。给你香蕉,苹果,大鸭梨,你得出“水
2021-07-02 01:10:06 1078 13
原创 手把手教你从如何从公司内网访问外网(非翻墙)
背景不能上外网?是可忍孰不可忍。根据公司安全要求,在办公网络是无法访问外网的,甚至打开百度都只能靠页面快照。作为一名程序员,不能百度是一件无法忍受的事情。幸好不是完全的网络隔离,而是屏蔽了几乎所有能上传文件的网站。如果你也遇到类似的情况,请参考下面文档,给你将如何突破这种限制。友情提示:技术无罪,方便自己同时,不要故意违反公司规定,损害公司利益。技术选型nginx,正向代理老牌squid,请参考我另外一篇博客。说明因为 Nginx 不支持 CONNECT,所以无法正向代理 Http
2021-06-28 00:50:24 50384 32
原创 【经验分享】mybatis那些约定的配置你分得清吗?
背景在springboot中有很多约定大于配置的规则,如果我们准守了约定,可以零配置。mybatsi中Mapper和xml文件之间有很多约定俗称的规则,比如名称匹配,包扫描,别名等,这些规则是什么。如果想更加灵活,该如何配置呢?今天就给大家讲一下如何配置mybatsi的xml文件等。一、@Mapper注解和@MapperScan注解使用说明可以不使用@MapperScan注解,默认扫描根路径下标注了@Mapper注解的接口可以使用@Mapper注解,使用@MapperScan(“com.koury
2021-06-17 01:50:21 515 4
原创 【精品必收藏】如何构建企业级微服务异常编码体系
一、说明异常的捕获和抛出是软件开发过程中经常需要处理的场景,在传统单体服务中,我们通过统一异常码值的方式可以达到统一异常管理的目的。在微服务体系中,服务非常多,每个服务都需要自己的异常码值,编码体系变成了领工程师头痛的事情。今天通过调研,发现了两种基于阿里巴巴开发规约实现的异常编码体系,包含了具体的编码规则和异常抛出的方式方法。希望对于相同问题感到困惑的朋友有所帮助。二、阿里巴巴异常规范说明2.1 基础异常BaseException作为头部的互联网大厂,阿里巴巴推出的开发手册里对异常编码有完整的
2021-06-11 21:04:31 589
原创 BeyondCompare4.0比较代码内容相同但显示红色问题终结方案
问题描述比较时几乎所有文件都显示红色不相同打开文件后发现内容相同,然后关闭发现列表两个文件编程相同了问题原因不知道解决方案设置-》会话设置注意请务必重启如果按照上面配置了还是不行,就重装打开软件前先按照上图设置后再比较我是下载了一个新的软件安装后直接按照上图设置,就可以了。没有出现内容相同但是现实红色的情况。用的比较久的,如果反复无法解决不妨重装了。按照我的路径完全来一遍...
2021-06-09 15:00:59 728 5
原创 2021-05-24
一、说明springboot starter是springboot的四大特性之一,他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的构建中;理解stater并熟练应用是掌握spring框架的基本功之一。二、条件starter其实本质上是一个空的jar包,仅仅用来提供整合的maven依赖,告诉你启动一个项目需要什么模块。starter理应简洁明了,不要包含过多的功能和非必要的依赖。一个自定义的starter推荐包含两个模块autoconfigure自动配置模块,用来
2021-05-24 00:44:38 123 3
原创 021-【springboot源码解读-自动配置三部曲01】创建属于自己的spring boot autofigure
说明在springboot项目启动时,componentScan会扫描项目根路径下所有的组件并且加载到spring容器中。但对于外部引入的maven依赖,由于jar包的位置不自在根目录,组件扫描是不起作用的。如果我们项目中需要引入一个自己开发的模块,该如何让springboot自动识别并加载到容器中呢? 今天我们参考官方讲述下spring自动装配组件的用法。这里是指springboot自动装配的一个很重要部分,但并不是自动装配完整过程。过程定位需要装配的类spring-boot启动的时候会找到
2021-05-24 00:43:09 219 3
原创 【忆当年】初学者如何理解java中的static关键字
背景我学习java时候学习笔记,对于初学java的人思路更接近一,希望能帮助刚接触java的同学。现在看当时的笔记实在乱的可以,工作这么多年业成长了很多黄金原则被static修饰的方法和属性在类被载入时(是否new对象无关)就已经被分配了内存。和普通方法属性相比,他们可以通过两种方法访问。1,直接访问:类名.属性名2,实例化后访问:对象名.属性名因为静态属性不属于某个对象,是类属性,所以推荐使用直接访问的方式。黄金原则:static修饰的,属于类,为所有对象共有。在对象创建之前就已存在。不
2021-05-19 23:04:56 721 10
FastStone.rar
2020-04-09
Enclave.7z IntelSGX测试案例Win7测试可用
2020-01-03
纯前端图片压缩和预览工具
2019-07-26
UniversalThemePatcher主题破解与恢复工具
2018-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人