自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode 并查集模板

class UnionFind: def __init__(self, n): self.count = n self.p = [i for i in range(n)] def parent(self, i): root = i while self.p[root] != root: root = self.p[root] while self.p[i] != i:

2021-03-08 17:40:35 254

原创 Lua常用库,垃圾回收

print("=================自带库=================")-- string-- tableprint("=================时间=================")-- 系统时间print(os.time())-- 自定义参数 得到时间print(os.time({year = 2021, month = 3, day = 3}))-- 返回一个tablelocal nowTime = os.date("*t")for k, v i

2021-03-03 12:11:10 267

原创 Lua常用库

print("=================自带库=================")-- string-- tableprint("=================时间=================")-- 系统时间print(os.time())-- 自定义参数 得到时间print(os.time({year = 2021, month = 3, day = 3}))-- 返回一个tablelocal nowTime = os.date("*t")for k, v i

2021-03-03 11:56:41 426

原创 Lua面向对象

print("=================面向对象=================")Student = { age = 1, sex = true, Up = function () print(Student.age) print("Growing up") end, Learn = function() print("好好学习") end}Student.name = "guan"f

2021-03-03 00:22:46 121

原创 Lua笔记协程

fun = function() print(123)endprint("**************携程的创建****************")-- (1)coroutine.create()-- (2)coroutine.wrap()co = coroutine.create( fun )co2= coroutine.wrap( fun )print(co2)print(type(co2))print("**************携程的运行****************"

2021-03-02 16:12:56 97

原创 Lua笔记表实现class

-- 表内定义成员变量Student = { age = 1, sex = true, Up = function () print(Student.age) print("Growing up") end, Learn = function() print("好好学习") end}--表外定义成员变量tudent.name = "guan"function Student:Speak2()

2021-03-01 20:48:02 107

原创 Linux面试相关基础命令

内存相关命令查看系统内存使用情况 free -m(静态查询)各个进程内存的使用情况(动态查询)toptop -M 进行排序查看网络,网卡等相关信息 cat /etc/sysconfig/network-scripts/ifcfg-eth0显示文件内容的命令...

2021-02-24 12:00:56 109

原创 Unity Lua热修复框架图

2021-02-23 11:46:43 180

原创 Redis 事务

事务Redis事务本质:一组命令的集合! 一个食物中的所有命令都会被序列化,在十五执行过程中,会按照顺序执行!一次性,顺序性,排他性Redis事务没有隔离级别的概念所有的命令在事务中,没有直接被执行,只有发起执行命令的时候才会执行! ExecRedis单条命令式保存原子性的,但是事务部保证原子性Redis事务:开启事务(multi)命令入队()实行事务(exec)正常执行事务127.0.0.1:6379> multi # 开启事务OK127.0.0.1:6379&gt

2021-02-19 22:36:44 82

原创 Redis 数据类型

Redis对象typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问的时间 unsigned lru:22;}robjtype : 五大数据类型(字符串,列表,集合)encoding:指的是每种数据结构存储

2021-02-19 21:13:35 141 1

原创 Python字典顺序存储原理解析

在刷题的时候看到很多时候题目要用到OrderedDict,不是很理解这样做的目的,看到解析说是要按照插入的顺序存储和取出。当时就很疑惑,亲自试验了默认的dict也能够实现顺序存储和取出。Dictionary vs OrderedDict在3.6版本之前,Python Dict底层在初始创建的时候采用的是indice和存储合并在一个二维数组当中。Dictionary采用哈希表原理,key作为取值对象,进行hash(key)操作,得到哈希值,然后用值进行 % 字典容量得到要插入的位置。my_dict['a

2021-02-03 11:57:23 1145

原创 java中四种引用

Java中的四种引用Java中四种引用类型:强引用,软引用,弱引用,强引用强引用通过new 去进行创建的对象的引用通过手动调用gc,并且将引用赋值为null进行回收软引用软引用就是把对象用SoftReference包裹一下,当我们需要从软引用对象获得包裹的对象,只需要get一下就好了SoftReference<TestQuote> testQuoteSoftReference = new SoftReference<>(new TestQuote());TestQuo

2021-02-02 15:48:18 366 1

原创 Unity脚本声明周期和MonoBehaviour常用方法

初始状态:Awake() 唤醒:当物体载入时立即调用一次,用于在游戏开始前进行初始化,判断满足某种条件执行此脚本this.enable = trueOnEnable() 可用:当脚本对象启用时调用物理阶段:FixedUpdate() 固定更新: 脚本启用后,固定事件被调用,适用于对游戏对象做物理操作,移动。设置更新频率:Edit->Project Setting->Time->Fixed Timestep ,默认值0.02s。游戏逻辑:Update() 更新:脚本启用后,..

2021-01-29 11:40:46 161

原创 C# 面试知识

结构体和类的区别类型,成员变量,变量初始值,构造析构结构体是值类型,类是引用类型结构提成员不可被声明为protected,类可以机构题变量声明不能指定初始值,类变量声明可以指定初始值结构体不能声明析构以及默认的构造函数,类无此限制值类型和引用类型的区别值类型隐式继承自System.ValueType而且不能继承其他任何类型,引用类型继承自System.Object值类型在栈中分配内存,引用类型在堆中分配内存,引用中存放的是堆中存放的地址值类型存取快,引用类型比值类型存取慢值类型表示

2021-01-25 17:07:28 290 1

原创 Leetcode-721 账户合并

题目(此题还可用作合并 json 数据)给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式

2021-01-18 16:14:03 118

原创 Docker操作

Ubuntu安装docker拉取mysql images创建容器test_mysql运行镜像sudo docker run -dt --name=test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql进入容器docker exec -it test_mysql /bin/bash启动mysqlmysql -uroot -ppassword退出容器exit...

2020-12-27 22:09:45 82

原创 装箱拆箱

装箱和拆箱什么是装箱和拆箱。它其实很简单,把值类型实例转换为引用类型实例,就是装箱。相反,把引用类型实例转换为值类型实例,就是拆箱。// 装箱int a = 5;object obj = a;//拆箱a = (int)obj;值类型数据会直接存储变量装箱,因为a 是值类型是直接有数据的变量,obj为引用类型是指针与内存是拆分开来的,把 a 赋值给 b 实际上就是 b 为自己创建了一个指针并指向了a的数据空间。引用类型的变量会在声明时预留出内存地址,其为null, 当进行new创建实例的

2020-12-25 12:14:35 148

原创 基本数据类型

PythonNumber(数字)int(有符号整数)long(长整型)float(浮点型)complex(复数 -5 ~ 257)String(字符串)List(列表)Tuple(元组)Dictionary(字典)JavaByte 1short 2int 4long 8float 4double 8boolean 1char 2

2020-11-26 10:27:11 103

原创 快速排序实现

def partation(arr, left, right): pivot = arr[left] while left < right: while left < right and arr[right] >= pivot: right -= 1 arr[left] = arr[right] while left < right and arr[left] <= pivot:

2020-11-21 00:32:10 97

转载 Mysql 索引优化分析

转载链接: https://blog.csdn.net/oneby1314/article/details/107938325

2020-11-11 16:01:41 87

原创 Python字典底层讲解

Dictonary字典字典在python中是以键值对(k-v)的形式进行存储。添加,删除,修改,查询的时间复杂度均是O(1)。(1)哈希表(Hashtable)哈希表(也叫散列表),根据关键值对(Key-value)而直接进行访问的数据结构。它通过把key和value映射到表中一个位置来访问记录,这种查询速度非常快,更新也快。而这个映射函数叫做哈希函数,存放值的数组叫做哈希表。 哈希函数的实现方式决定了哈希表的搜索效率。具体操作过程是:数据添加:把key通过哈希函数转换成一个整型数字,然后就将该数字

2020-10-24 16:56:59 247

原创 Redis

Redis 快的原因基于内存实现高效的数据结构 : 简单动态字符串, 双端链表,压缩列表,字典,跳跃表合理的数据编码合适的线程模型 : I/O多路复用, 避免上下文切换,单线程模型一. Redis是基于内存的数据库Redis相对于磁盘数据库来说,省去了将数据I/O进内存的一个过程二. 高效的数据结构Redis有多种数据类型,每种数据类型的底层由一种或多种数据结构来支持。简单动态字符串在C语言中字符串的结尾以\0为结尾代表结束,如需获取字符串的全部信息就需要遍历。Redis中用

2020-10-23 10:35:22 147 1

原创 virtual和abstract关键字

virtual类中定义的虚方法(虚方法就是virtual修饰的方法)除了辅助实现多态特性,其实它和普通函数没什么区别。基类声明或基类定义(即实现)的虚方法,其派生类可以重写也可不重写;如果派生类不重写基类虚方法,那么派生类实例访问的虚方法是基类中定义的方法在基类中定义了虚方法,并且在派生类中使用override重写了该方法(C++中使用virtual关键字表示要重写虚方法),那么派生类的实例调用中,该虚方法使用的是派生类中重写的方法。abstractC#中abstract关键字只能用在抽象类中修

2020-09-30 15:59:56 194

原创 操作系统-互斥锁、自旋锁、读写锁、悲观锁、乐观锁

一 互斥锁使用场景: 如果你能确定被锁住的代码执行时间很长,就不应该用互斥锁加锁的目的就是保证共享资源在任意时间里,只有一个线程访问,这样就可以避免多线程导致共享数据错乱的问题。互斥锁加锁失败后,线程会释放 CPU ,给其他线程,自身处于获取锁阻塞状态,然后从用户态切换到内核态由由内核帮助进行切换线程,当加锁失败时,内核会将线程置为「睡眠」状态,等到锁被释放后,内核会在合适的时机唤醒线程,当这个线程成功获取到锁后,于是就可以继续执行,着之间的过程会产生上下文切换。获取线程失败的线程会从Runnin

2020-09-25 00:46:51 1099

原创 Django-请求生命周期

一 请求的生命周期Django的请求生命周期是指:当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情。二 Django的生命周期第一步:浏览器发起请求第二步:WSGI创建socket服务端,接收请求(Httprequest)第三步:中间件处理请求第四步:url路由,根据当前请求的URL找到视图函数第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图;view视图将数据渲染到template模板;将数据返回)第六步:中间件处理

2020-09-16 11:22:10 251

原创 Go学习-变量和常量

标识符在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。Go语言关键字 break default func interface select case defer go map struct chan

2020-09-16 10:28:21 156

原创 进程间的通信方式 8种

进程通信:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。1. 匿名管道通信匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而却只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。// 需要的头文件#include <unistd.h>// 通过pipe

2020-09-15 14:16:41 864

原创 死锁原因,条件和解决

死锁概念和产生原因死锁是指多个进程循环等待彼此占有的资源而无限期的僵持等待下去的局面。原因是:系统提供的资源太少了,远不能满足并发进程对资源的需求进程推进顺序不合适,互相占有彼此需要的资源,同时请求对方占有的资源,往往是程序设计不合理死锁产生的必要条件互斥条件:即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行的从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放占有且等待条件:进程至少已经

2020-09-14 11:38:59 119

原创 Linux常用命令

基础命令cd : 切换目录命令ls -l , ll: 列出文件列表mkdir: 创建目录rmdir: 删除目录浏览文件cat 用于显示文件的内容 cat yum.confmore 一般用于要显示的内容会超过一个画面长度的情况,按空格键显示下一个画面,回车显示下一行内容。less 用法和more类似,不同的是less可以通过PgUp、PgDn键来控制。tail 命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。用法:tail -10 /

2020-09-12 00:34:49 134

原创 Unity3D-单例模式各种写法应用

单例模式就是保证类的实例的唯一性一般来说所有的管理类都需要设置为单例模式,音频管理模块,UI管理模块,对象池等单例模式有各种各样的写法,有很普通的单例模式,有很复杂的单例模式。有的单例模式需要考虑多线程共享的问题,就要进行加锁防止混乱。一. 普通 非继承Mono单例最常见,最普通的单例模式基类的写法,使用了泛型进行封装使用。通过static变量和static静态方法,达到程序运行过程中的类实例的唯一性。public class BaseManager<T> where T : new(

2020-09-10 18:50:02 317

原创 Django-View视图

内容转载从大江狗博主View视图工作原理Django的Web开发遵循了MVC的模式,Modle, View,Controller。 在Django中的体现是MVT,Model,View,Template。View (视图) 主要根据用户的请求返回数据,用来展示用户可以看到的内容(比如网页,图片),也可以用来处理用户提交的数据,比如保存到数据库中。Django的视图(View)通常和URL路由一起工作的。服务器在收到用户通过浏览器发来的请求后,会根据urls.py里的关系条目,去视图View里查找到与请

2020-09-10 15:49:00 176

原创 Django-.gitingnore内容

创建.gitignore文件安装git然后直接创建一个名字.gitignore的文件Django项目建议忽略的文件清单一般缓存文件__pycache__和本地日志文件.log不需要提交。media文件夹和db.sqlite3文件可能包括了本地测试数据和文件,也不要提交。PyCharm生成的文件, Env文件第三方package也不要提交。下列文件和文件夹建议忽略。Django*.log*.pot*.pycpycachedb.sqlite3mediaBackup files*.b

2020-09-07 01:28:51 251

原创 SQL速查表

数据库操作--创建数据库create DATABASE MYDATABASE;--删除数据库drop database MYDATABASE;创建表CREATE TABLE tab_name ( col1 col1_type PRIMARY KEY, col2 INTEGER AUTOINCREMENT,, col3 col3_type NOT NULL, ..... colN colN_type,);/* 常用类型:TEXT 字符串, CHAR(100)

2020-09-06 10:52:54 171

原创 Django知识点-URL路由 name=

Path()path('article-list/', views.article_list, name='article_list')path('article-detail/<int:id>/', views.article_detail, name='article_detail'),一. 根据name生成新的url路由中的name主要的作用就是通过反向自动化生成需要的url,reverse()中传入url的名字def func(request, *args, **kwargs

2020-09-05 15:28:54 230

原创 TCP的可靠性传输机制

1. TCP是一种面向连接,可靠的,字节流的传输协议TCP使用了 重传机制,滑动窗口,流量控制,拥塞控制来实现可靠的传输重传机制快速重传当接收端连续发送3个相同ack给发送端的时候,就证明了ACK的数据在传输过程中丢失,就会立刻发生重传机制。快速重传机制只解决了一个问题,就是超时时间的问题,但是它依然面临着另外一个问题。就是重传的时候,是重传之前的一个,还是重传所有的问题。比如对于上面的例子,是重传 Seq2 呢?还是重传 Seq2、Seq3、Seq4、Seq5 呢?因为发送端并不清楚这连续的三

2020-09-05 12:20:23 872

转载 Fedora安装mysql

在Fedora 29系统中安装MySQL 8.0数据库的方法本文介绍在Fedora 29、Fedora 28操作系统中安装并配置MySQL 8.0数据库的方法,适用Server或Workstation版本。如果有旧版本的MySQL(例如5.7版本),需要进行就地升级或转储所有数据,升级软件包并将所有数据重新导入到新的MySQL 8.0中。在RHEL 8中安装请参考在RHEL 8系统上安装MySQL 8.0的步骤。1. 添加MySQL 8.0社区存储库29系统:sudo dnf install htt

2020-09-03 12:42:46 1180

原创 Leetcode 22 括号生成

题目 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]题解使用暴力枚举的方法列出所有的生成括号的情况然后,通过判断 isvalid 来将结果添加到result中class Solution: def generateParenthesis(self, n: int) -> List[str]:

2020-08-28 14:58:50 93

原创 Leetcode 剑指offer 52 两个链表的第一个公共节点

题目输入两个链表,找出它们的第一个公共节点。题解class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: node1, node2 = headA, headB while node1 != node2: node1 = node1.next if node1 else headB

2020-08-23 23:32:56 124

原创 TCP/UDP简单介绍和三次握手

TCP和UDP的区别TCP面向连接,UDP无连接TCP基于字节流,UDP基于报文TCP有流量控制和拥塞控制,UDP的吞吐量之取决于数据生成率、传输带宽TCP可靠按序交付,UDP尽可能最大交付且乱序TCP全双工点对点通信,UDP可以一对一,一对多,多对一,多对多三次握手四次分手原因分析TCP通过三次握手来建立连接,通过四次回收来端开连接为什莫是3次握手: - 3次握手时连接双方都确认自己和对方有手法能力的最少握手次数 - 若只握手2次,服务器端在接受到客户点的请求就打开连接, 可能受到

2020-08-23 23:01:10 892

原创 Leetcode 647 回文子串

题目给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:“abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:“aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa” class Solution: def countSubstrings(self, s: str) -> int:

2020-08-21 15:20:17 106

空空如也

空空如也

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

TA关注的人

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