自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据处理的基本操作——增删查

代码对数据的处理在一个数组中找出出现次数最多的那个元素的数值。例如,输入数组 a = [1,2,3,4,5,5,6] 中,只有 5 出现了两次,其余都是 1 次。显然 5 出现的次数最多,则输出 5。为了降低时间复杂度,我们引入了 k-v 的字典的数据结构。那么问题来了,究竟是什么原因,促使我们想到了使用字典的数据结构呢?如果不使用字典,改为使用数组行不行呢?为了回答这些问题,我们先看一下究竟此处代码需要对数据进行哪些操作。我们提到过,这段代码处理数据的核心思路是:第一步,根据原始数组计算每个元素

2020-08-31 17:55:02 1018

原创 前端程序员的知识养成体系

HTML、CSS页面样式老版本兼容CSS可维护方案JavaScript基础基本JS操作,操作数据原型、继承、闭包框架:Vue、React组件:vuex、vue-router、redux常用类库:动画、数据处理、Httpanimate、lodash、axios运行环境:浏览器API、浏览器原理TypeScriptJS的超集Node.js独立起服务,操作数据库,形成完整的应用计算机基础:编译原理、网络协议数据结构算法游戏、大数据可视化排序、动态规划、二叉树前端工程化:构

2020-08-27 22:49:34 128

原创 Redis中value中文显示问题解决

问题描述当从redis中value的值的时候,遇到中文的时候,无法正常的显示,如图所示:解决方案这时候的解决方案就是在你启动redis的时候多加一条命令:redis-cli --raw显示结果

2020-08-27 14:12:56 759

原创 前端、后端和全栈到底是什么?

前端前端开发(Frontend Development)就是开发网页上的内容展示和与用户的交互。内容展示:在网页上看到的图片、文字、视频、数字等信息用户的交互:用户在页面通过点击按钮、输入文字等等动作对网站提供数据输入,然后前端对用户的输入进行响应,如:更新页面的内容。前端的基础技术:HTML、CSS和JavaScript。它们分别用来控制网页的内容、视觉效果和用户交互。HTML:它并不是一门编程语言,它是一种用来定义结构化数据的标记语言。浏览器上的网页就是一个HTML文件。浏览器的职责之

2020-08-26 23:14:49 5554 1

原创 彻底搞懂HTTPS(2)——深入对称加密算法:3DES, AES, CBC/GCM模式

对称加密类别对称加密大致分两类:序列型 stream cipher分组型 block cipher对称加密算法对称加密算法的模式分类如图所示:序列型 stream cipher:根据密钥生成无穷长的序列。文本和无限长的密钥进行异或操作得到加密的文本。但是RC4已经被证明是一个不安全的算法,目前的序列型并没有特别好的算法。分组型 block cipher:把数据分成一块一块的分组型 block cipher有多种工作模式,如下图所示:ECB是简单粗暴的分组,但是问题

2020-08-26 13:22:54 1451

原创 彻底搞懂HTTPS(1)——对称加密,非对称加密

背景密码学究竟是要解决什么问题?密码学主要解决三大问题:机密,防止窃听保持机密性,你所要发送的消息要保证自己和接受的人可以看懂,而其他人看不懂。验证通信人的身份在你收到消息的时候,如何判断收到的消息是发送者发送的而不是别人仿造的呢?内容没有被篡改怎么样保证消息是正确的呢?消息没有被别人篡改过。在整个通信的过程中,如果要保证安全性,完全取决于密钥,需要使用当前无法破解的算法,而密钥本身的KEY是使用随机数生成的,这样让别人没有办法去猜测,随机数的生成可以戳链接。对称加密对称加密其实就

2020-08-26 13:22:04 410

原创 Java中的String到底是什么?(知识扩展+考点分析+源码分析)

背景知识现在几乎所有的Java面试题中都是涉及到String的问题,也是很基本的问题,对于String的知识点,我们可能只是知道:String 不属于基础类型、String不可变、String有这三个类:String、StringBuffer、StringBuilder等等。但是String是如何实现的?它有哪些重要的方法?源码分析对于现在的主流JDK版本JDK1.8,String的内部存储结构是char数组,源码如下:public final class String implements

2020-08-24 23:54:42 231

原创 什么是动态链表?

链表结构头结点(0XA0)值变量213value0XC0next结点2(0XC0)值变量114value0XZ0next结点3(0XZ0)值变量514valueNULLnext代码代码逻辑创建动态链表,依次打印结点中flag的值。flag=0XC0;*flag->value=114*flag->next=0XZ0;flagflag=flag->next=0XZ0

2020-08-21 23:12:01 695

原创 随机数真的随机吗?

随机数随机吗?其实计算机的底层是有无数个二极管组成的,每个二极管都是特定的状态。所以无法做到真正的随机。真正的随机数需要靠硬件去打造。伪随机数伪随机数,通常意义上讲是软件领域的随机数。是因为计算机软件上是没有真正意义上的随机数。随机数是安全领域的核心,如:依赖难以预测的随机数作为秘钥(Secret Key)怎样实现更安全的随机数真正重视随机数,不能用任何时间函数来充当随机数。系统时间看上去随机,但是是顺序增长,是可以被预测的。因此任何时间函数都不能当做随机数来使用。在重要或敏感的系统中,要用

2020-08-20 21:27:45 2012

原创 LDAP/AD到底是什么?

定义LDAP(Lightweight Directory Access Protocol)轻量级DAP协议AD(Active Direcctory)是LDAP的实现。不仅实现了LDAP协议,还实现了具体应用(windows 域控)认证源应用公司内的各种人员账户,电脑打印机等设备管理是AD最常见的应用。可以将人员和设备加在活动目录里,对资源进行统一的管理。可以把公司分为多个域,每个域存储不同的信息,存储公司里各个资源的信息。存储用户名密码对外提供LDAP协议的身份认证——LDAP BIND

2020-08-19 12:03:28 6143

原创 LeetCode47——全排列||(递归法)

题目描述给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]题目分析这一题和上一题LeetCode46——全排列(递归法)大体思路相同,唯一的区别就是这里面有重复数字出现的情况。1.我们先进行排序。2.此时我们要设置prenum,每次判断当前的数和prenum不相同的情况在进行接下来的循环操作。3.我们用Boolean数组来替代hashset,因为重复数字的出现。代码class Solution

2020-08-18 18:15:11 155

原创 Go语言的并发到底是什么?

背景知识在传统的并发模型中,基于内存分享,各线程通信,需要通过共享变量以及锁的同步机制。并且共享变量很麻烦,要保证:内存可见性,保证其他线程可以看到修改后的值原子性Go语言的并发编程Go语言里有同步的包,类似于Java concurrent包,能够提供锁的功能,但是不是太推荐。Go语言里提倡基于消息传递的并发模型,不共享变量,因此就不涉及锁的问题。虽然说Go语言里的Goroutine不是真正意义上的协程,但是有时我们就称呼它为“协程”。一个go关键词就可以起一个新的Go协程(注意:跟底层

2020-08-17 15:13:57 223

原创 LeetCode43——字符串相乘

题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比

2020-08-14 21:59:51 104

原创 Go语言的面向对象

Go语言基本语法包函数var变量const常量类型流程控制更多类型方法Go没有类。不过可以为结构体类型定义方法。方法就是一类带特殊的接受者参数的函数。方法接收者在它自己的参数列表内,位于func关键字和方法名之间。package mainimport ( "fmt" "math")type Vertex struct { X, Y float64}func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v

2020-08-13 21:35:40 112

原创 LeetCode53——最大子序和

题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目分析定义两个变量maxToCur和max。其中maxToCur = Max(maxToCur+num[i], num[i])max = Max(maxToCur, max)-123-21maxToCur-1253

2020-08-12 17:52:50 99

原创 LeetCode49——字母易位词分组

题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]题目分析首先要对易位词选定一个标志词eat - >aetate -> aettea -> aet这是用到hashmap来记录,key是aet标志词,value是listaet -

2020-08-11 18:21:37 134

原创 LeetCode48——旋转图像

题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[1

2020-08-10 21:41:37 112

原创 pika.exceptions.ChannelClosed: (406, “PRECONDITION_FAILED - parameters for queue ‘test‘ in vhost ‘/

问题描述pika.exceptions.ChannelClosed: (406, “PRECONDITION_FAILED - parameters for queue ‘test_persistent’ in vhost ‘/’ not equivalent”)这个问题的描述是你的队列持久化的值不一致.问题分析这是因为生产者和消费者当中队列的durable的参数不一致,解决方案将之前的队列名称 my_queue = ‘queue.undurable.smoke.message’ 换成 my_q

2020-08-07 22:15:26 1895

原创 pika.exceptions.ChannelClosed: (406, “PRECONDITION_FAILED - parameters for queue ‘test‘ in vhost ‘/

问题描述pika.exceptions.ChannelClosed: (406, “PRECONDITION_FAILED - parameters for queue ‘test_persistent’ in vhost ‘/’ not equivalent”)这个问题的描述是你的队列持久化的值不一致.问题分析这是因为生产者和消费者当中队列的durable的参数不一致,大多数情况是修改了其中的一个参数,忘记修改另一个参数了.解决方案将队列的声明语句改成这样: channel.queue_dec

2020-08-06 20:45:24 3231

原创 YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated

问题描述YAMLLoadWarning: calling yaml.load() without Loader=… is deprecated问题分析这是yaml加载时出错,此时要更换加载语句解决方案之前的代码:__author__='yym'import sysimport yamlf = open('yaml_set.yaml')content = yaml.load(f)print(type(content))print("修改前:", content)content['mq

2020-08-05 18:24:57 498

原创 Python在rabbitmq中no_ack=False或auto_ack=False

描述python在rabbitmq中的确认机制可以保证rabbitmq消费者连接断了,消息不丢失,在连接重新建立的时候,在重发那些没有接收到的消息.rabbitmq支持一种方式:应答。比如我从消息里拿一条消息,如果全处理完,你就不要帮我记着了。如果没处理完,突然断开了,再连接上的时候,消息队列就会重新发消息。总结:Basic.Ack 发回给 RabbitMQ 以告知,可以将相应 message 从 RabbitMQ 的消息缓存中移除。Basic.Ack 未被 consumer 发回给 Rabbi

2020-08-04 15:57:13 3698 1

原创 base64解码成16进制字符串--python3

问题描述如果直接使用base64.b64decode()函数将base64解码,是得到的16进制字符串是有问题的.此时要使用base64.b64decode(base64_data).hex()来转换成16进制字符串.解决方案Python代码如下:import base64# base64解码def base64_decode(base64_data): temp = base64.b64decode(base64_data).hex() return tempdata =

2020-08-03 17:05:54 5425 1

原创 Go语言(Golang)是什么?

三大特点开发效率高原生支持高并发高性能开发效率高语言简单,容易上手,只有25个关键字。关键字少,框架很少,设计理念追求简单编译速度很快运维部署简单Java需要装JDK,JRE这些运行环境。JavaScript需要装Node.JS运行环境。Go语言不需要,编译好之后的可执行文件可以直接执行。原生支持高并发语言层面的原生设计GOROUTINE协程比,协程比进程更轻量级。进程是资源分配的最小单位,现成是CPU调度的最小单位。一个进程可以有很多个线程,一个线程可以有上千个协程。G

2020-08-02 11:56:10 1657

原创 带你看网络安全的基本常识

网络安全三要素(CIA)Confidentiality:保密性数据过程中的保密信息,比如密码等信息。解决办法加密:网络传输和保存的时候使用加密算法权限管理:对于不同的信息设置不同的访问权限敏感信息暴露:对于敏感信息:如密码,邮箱,电子签名。整个过程中需要对敏感信息 进行保护Integrity:完整性数据内容是完整的,没有被篡改解决办法:数字签名进行算法校验Availabitiy:可用性有限制的调用服务,防止别人一直call你的服务器,从而搞垮你的服务器威胁分析模型(STRIDE)S

2020-08-01 11:08:01 469

空空如也

空空如也

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

TA关注的人

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