- 博客(119)
- 收藏
- 关注
原创 2020-12-24
哎,好菜项目中遇到的问题以及怎么解决的日志如何串联起来HTTP的字段有哪些,那几个是比较常用的redis是如何实现事务的,是否满足原子性redis的持久化,哪个好redis bloom filter是个啥,为啥会有重复,怎么降低重复写一个算法题 二叉树的z字遍历...
2020-12-24 17:21:10
262
1
原创 2020-12-4
如何判断用户是否是登录态:用户登录的时候在服务器端创建一个session,登录成功后,把用户信息放在session里,接下里,服务器会把sessionID返回给用户的浏览器,浏览器接收到这个cookie后,用户再访问网站的URL地址时,浏览器会顺带着把这个网站下的cookies全部发送给服务器,服务器检查cookies里有木有sessionID,如果有,会根据sessionID找到session,然后再判断session里有木有用户信息,有则用户已登录,反之就是没登录静态资源和动态资源的区别.
2020-12-04 19:16:15
229
原创 面试总结
排序算法的稳定性顺便将排序算法的时间复杂度也进行分析 - 稳定性的概念:在待排序的记录序列中,存在多个具有相同的关键字记录以后,即类似ri = rj这种相邻的不变,在排序以后的相对次序也不发生改变,则称这种算法是稳定的 不稳定稳定的排序算法:堆排序、快速排序、希尔排序、直接选择排序、桶排序是不稳定的稳定的排序算法:基数排序、冒泡排序、插入排序、折半插入排序、归并排序冒泡排序,对比相邻元素之间的大小,O(n2)稳定,因为在变换的时候不会改变相邻之间的相对次序func BubbleSo.
2020-11-30 11:02:22
200
原创 Redis-cluster
Redis集群当使用网络分区的时候就会涉及数据的一致性,根据CAP定理:当网络分区发生时,一致性和可用性两难全,如何实现主节点与从节点的一致性就成为了难题,Redis通过保持最终一致的方式,实现主从数据异步同步,节点会努力追赶主节点,最终从节点的状态和主节点的状态保持一致。增量同步redis同步的是指令流,主节点会将哪些对自己的状态产生修改性影响的指令记录在本地的Buffer中,然后异步将buffer中的指令同步到从节点,从节点执行同步指令,主节点反馈自己同步到哪里缺点:buffer是有限的,如果b
2020-11-19 13:51:13
161
原创 redis的基本使用
Redis的基本使用Redis中的位图在日常的开发过程中,经常会涉及一部分的bool类型的存储,如果使用关系性数据库,则会产生很大的数据量,比如需要统计一个公司所有人365的打卡情况,则需要 n*365,这时候需要的数据量是巨大的,而redis中产生了位图的概念,类似byte数组。比如我们使用bit存储字符串”hello“使用Python获取字符串的二进制值>>> bin(ord('h'))'0b1101000'>>> bin(ord('e'))'0b11
2020-11-18 22:20:02
224
原创 redis中的位图
涉及大量bool类型需要存放时在开发过程中,可能需要存放大量value是bool类型的key/value的形式但是当用户量特别大的时候,这部分存储就需要特别大的内存由此,redis提出了位图的概念可以理解位图就是普通的byte数组我们可以使用get/set命令进行获取或配置也可以使用位图操作命令,getbit/setbit...
2020-10-10 15:21:56
202
原创 redis的队列
redis的队列通常会作为异步队列使用127.0.0.1:6379> rpush notify-queue apple banana pear(integer) 3127.0.0.1:6379> llen notify-queue(integer) 3127.0.0.1:6379> lpop notify-queue"apple"127.0.0.1:6379> llen notify-queue(integer) 2127.0.0.1:6379> lpop
2020-10-10 15:11:05
291
原创 redis的分布式锁
在redis中,可能涉及多个进程对同一个资源进行修改,如此便容易产生死锁等问题所以有了redis的锁机制,setnx represent set if not exist127.0.0.1:6379> setnx lock:codehole true // 加锁(integer) 1127.0.0.1:6379> del lock:codehole // 删除锁(integer) 1在我们的代码中通常先加锁,然后再进行一些逻辑性操作,最后删除锁但如果中间的逻辑代码出现
2020-10-10 14:54:41
128
原创 Five structures of redis
Redis has five data structures, they are string, list, map, hash, set, zset➜ ~ redis-cli127.0.0.1:6379> set name codeholeOK127.0.0.1:6379> get name"codehole"127.0.0.1:6379> exists name // is exist of this key(integer) 1127.0.0.1:6379>
2020-10-10 14:28:30
109
原创 2020-10-09
package mainimport ( "net" "os" "io" "bytes" "fmt")func checkSum(msg []byte) uint16 { sum := 0 n := 0 for n+1 < len(msg) { sum += (int(msg[n]) << 8) } sum = (sum >> 16) + (sum & 0xffff) sum += (sum >> 16) return
2020-10-09 19:34:53
137
原创 Golang Struct
package maintype Rect struct { x, y float64 width, height float64}func main() { a := new(Rect) b := &Rect{} c := &Rect{0,0,100, 200} d := &Rect{width: 100, height: 200}}
2020-09-24 20:07:32
115
原创 Golang的匿名函数处理
package main// 小写字母的函数,只是在包内可见import ( "errors" "fmt")func Add(a, b int) (ret int, err error) { if a<0 || b<0 { err = errors.New("Should be non-negative numbers!") return } return a + b, nil}/*不定参数...type 格式的类型*/func myfunc(a
2020-09-24 17:17:33
173
原创 Golang中的Map
package mainimport "fmt"type PersonInfo struct { Id string Name string Address string}func main() { var personDB map[string] PersonInfo personDB = make(map[string] PersonInfo) // 往这个map里插入几条数据 personDB["wanglanxin"] = PersonInfo{"1","
2020-09-24 16:51:33
136
原创 Golang中的数组
package mainimport "fmt"func main() { // 数组的长度定义后就不可更改 a := [32]int{1,1,1,1} fmt.Println(a) for i := 0; i < len(a); i++ { fmt.Println("Element", i, "of array is", a[i]) } for i, v := range a { fmt.Println("Element", i, "off array is", v)
2020-09-24 16:29:17
173
原创 Golang中的channel机制
package mainimport "fmt"//func Add(x, y int) {// z := x + y// fmt.Println(z)//}////func main() {// for i := 0; i < 10; i++ {// go Add(i,i)// }//}/*由于golang的main函数不会等待协程进行完毕,所以会直接结束,不会返回结果解决办法:1. 通常在别的语言中都有添加锁的操作,等待进程完成 join方法2. golan
2020-09-24 15:58:42
452
原创 Golang中的基本类型
package mainimport "strconv"// 变量的声明var v1 intvar v2 stringvar v3 [10]int // 数组var v4 []int // 数组切片var v5 struct { f int}var v6 *int // 指针var v7 map[string] int // map,key为string类型,value为int类型var v8 func(a int) intvar ( v9 int v10 string
2020-09-24 15:48:49
168
原创 MongoDB的高级语句
条件查询db.collection.find({"field":{$gt:value}}) // 大于 field>valuedb.collection.find({"field":{$lt:value}}) // 小于 field<valuedb.collection.find({"field":{$gte:value}}) // 大于等于 field=>valuedb.collection.find({"field":{$gte:value}}) // 大于等于
2020-09-23 21:10:29
112
原创 MongoDB
MongoDB的逻辑结构包括:document(文档)collection(集合)database(数据库)MongoDB关系型数据库文档(document)行(row)集合(collection)表(table)数据库(database)数据库(database)data/db为默认数据库目录,其中包含*.ns文件和一些数据文件,ns文件负责存储命名空间的元数据,数据文件负责存储表和索引数据,其中有一个是预分配空间文件启动数据库:1. 指定配
2020-09-23 21:00:16
112
原创 git checkout -b
依照远程分支创建一个新的分支git checkout -b myself_dev origin/myself_dev
2020-06-30 14:42:28
380
原创 SSH-Keygen
使用SSH地址进行git clone时候,需要是项目的管理员或者拥有者使用HTTP地址进行git clone时候,可以任意clone,但是push的时候需要输入用户名和密码使用SSH地址的时候需要配置私钥和秘钥在~/.SSH目录下,可以发现id_rsa和id_rsa.pub文件ssh-keygen -t rsa -c “邮箱”-t 指定秘钥类型-c是指注释文件输入ssh-keygen以后接下去的两步可以不用输入密码接下去的密码输入用于push提交时候使用可以默认回车使用ssh-keyg
2020-06-30 14:34:17
180
原创 CELERY配置问题
CELERY可以理解为消费队列使用worker进行消费任务使用beat分配任务可以使用redis作为中间件启动work的命令需要在虚拟环境中启动celery multi start 3 -c 3 -A celery_worker.celery -l info -c4 -Q:1 db -Q:2 notify -Q:3 default -P gevent -c 4 --pidfile=%n.pid --logfile=%N.log启动beat的命令python -m celery beat -A
2020-06-24 17:42:33
418
2
原创 拉格朗日乘子法
转载自:https://www.cnblogs.com/massquantity/p/10807311.html拉格朗日乘子法一般应用于求解指定作用域上的最优化问题含有等式约束的优化问题:minxf(x) min_x f(x)minxf(x)s.t.hi(x)=0,i=1,2,....,m s.t. h_i(x) = 0, i = 1,2, ....,ms.t.hi(x)=0...
2020-04-06 21:36:02
563
原创 奇异值分解
奇异值分解(SVD):可以将一个比较复杂的矩阵用更小更简单的几个子矩阵相乘来表示,这些小矩阵描述的是矩阵的重要特性。特征值分解:特征值:若向量V是方阵A的特征向量,则可以表示成 AV=λV AV = \lambda VAV=λV 这时候向量V是A的特征向量, λ \lambdaλ 则为特征值特征值分解: A=QEQ−1 A = Q E Q^{-1} A=QEQ−1 Q是特征向量...
2020-04-05 00:39:46
410
原创 基于LDA的SRDA算法
基于统计分析的子空间方法分析人脸识别的主流方法是基于统计分析的子空间方法人脸的图像维数通常很大,而其在高维空间分布很不紧凑,不利于分类,而且计算复杂度很大,因此通常将图像投影到低维的子空间进行判别。子空间方法是根据一定目标来找线性或者非线性的变换,使原始信号压缩到一个低维的子空间中,让数据在该子空间的分布更加紧凑为数据的描述提供更好的手段,并且使其计算复杂度降低。子空间有向图嵌入用一个低...
2020-03-04 14:18:04
761
原创 HTML5
HTML学习过程记录什么是HTML?HTML是用来描述网页的一种语言,指超文本标记语言(Hyper Text Markup Language),不是变成语言,是标记语言,2012出现HTML 5。HTML基础讲解HTML 5标签的声明<!DOCTYPE html>HTML基础标签 head、bodyhead是对头部的各种定义,包括中英文,中文是zh,英文是enb...
2020-02-06 01:40:50
146
原创 2019.10.23
python2和python3的区别输入一个url,返回页面的全过程蓝图和函数怎么关联的加速爬虫的方法time wait状态Redis数据类型Redis持久化MySQL性能优化SQL注入原理,怎么预防的后序遍历power函数...
2019-10-23 12:22:23
139
原创 2019.10.22
如何实现去重如果一个文件是10G,内存只有4G,该怎么读取select * from table where id=1 and name = ‘xxx’; 这个语句使用了什么索引,怎么实现索引数据库事务的隔离机制可重复读的产生原因数据库的事务是怎么实现的后面回答的已经没底气了,说话没力气那种,很无奈,不知道往哪个方向回答...
2019-10-22 12:59:12
310
3
原创 java数组操作
for 循环遍历数组import java.util.Arrays;public class For_arr { public static void main(String[] args){ int ns[] = {1, 4, 9, 16, 25}; // 按照索引的方式实现遍历 for(int i = 0; i<ns.leng...
2019-10-15 17:40:15
149
原创 Java流程控制
输出System.out.println == print line; //即输出换行System.out.print == print ; // 输出不换行System.out.printf("%.f\n", d); // 替换输入import java.util.Scanner;public class Input_method { public static vo...
2019-10-15 11:34:07
100
原创 DDOS攻击
DOS攻击拒绝服务攻击,主要是耗尽被攻击对象的资源,使其无法提供正常的服务DDOS攻击DDoS(Distributed Denial of Service)攻击是基于DOS攻击的一种特殊形式。攻击者将多台受控制的计算机联合起来向目标计算机发起DOS攻击,它是一种大规模协作的攻击方式。...
2019-10-14 19:27:11
189
原创 java基础知识
照例先编写Hello World/*类名必须以英文字母开头,后接数字,下划线和数字的组合习惯以大写字母开头 */public class Hello { public static void main(String[] args){ // 向屏幕输出字符串 System.out.println("Hello Java!"); }}变量...
2019-10-14 18:26:17
116
原创 内存泄漏&内存溢出
内存泄漏&内存溢出内存泄漏当一个对象不需要使用本应该被回收,但是有另一个对象正在使用,且持有他的引用,然后造成它不能被回收,这导致本应该被回收的对象不能被回收而停留在堆内存中,这就造成了内存的泄漏。这会导致程序奔溃或者程序运行的特别慢。解决的办法:Python中存在GC模块,相应的可以查看在其他语言中,需要良好的编码习惯,尽量在涉及内存的程序段,检测是否内存泄漏。在使...
2019-10-12 18:07:26
133
原创 Python的垃圾回收机制
Garbage Collection小整数对象池Python中为了避免为整数频繁申请和销毁内存空间,Python对小整数[-5,257)这些整数对象是提前创建好的,不会被垃圾回收。在一个Python程序中,所有位于这个返回内的整数使用的都是同一个对象。同理,单个字母也是如此。对于超过这个数值大小的数字就单独创建一个地址。intern机制如果多个变量同时指向同一个str对象,相应...
2019-10-12 12:17:11
144
原创 二叉搜索树、AVL树、红黑树、B+树、B-树
二叉搜索树:简介二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:任意节点左子树不为空,则左子树的值均小于根节点的值.任意节点右子树不为空,则右子树的值均大于于根节点的值.任意节点的左右子树也分别是二叉查找树.没有键值相等的节点.由于其在某些情况下会退化为一个线性链表,时间复杂度变成链表形式O(n)由此产生了AVL树和红黑树AVL树简介...
2019-09-17 22:39:02
257
原创 设计模式Python实现
设计模式23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解设计模式分为三类:创建者模式、结构型模式、行为型模式创建者模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式:这些设计模式关...
2019-08-22 20:34:55
130
原创 Web漏洞以及其防御的手段
常见的漏洞分为两类,分别是通用型漏洞和逻辑型漏洞通用型漏洞包括:SQL注入攻击、XSS跨站攻击、CSRF攻击逻辑型漏洞包括:水平越权攻击以及垂直越权攻击SQL注入:定义:是指输入的字符串中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或者入侵攻击者能够在存在的漏洞接口提交数据攻击流程:攻击者在测试接...
2019-08-20 17:27:27
364
1
原创 Kafka的基本概述
kafka概念解释kafka是用于构建实时数据管道和流应用程序,具有横向扩展,高容错,wicked fast(变态快)等优点。Apache kafka是消息中间件的一种,举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),...
2019-08-12 10:22:05
214
原创 网络编程
网络编程网络编程就是如何在程序中实现两台计算机的通信。也就是两个进程之间的通信Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。客户端网络编程导入socket库:import socket创建一个socket:s = socket.socket(socket.AF_...
2019-08-07 23:43:40
180
原创 Git命令面试篇
GIT面试题1.fetch和merge和pull的区别pull相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。git fetch:相当于是从远程获取最新版本到本地,不会自动mergegit merge : 将内容合并到当前分支git pull:相当于是从远程获取最新版本并merge到本地2.tagtag指向一次commit...
2019-08-07 23:40:37
1468
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人