自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(503)
  • 资源 (1)
  • 收藏
  • 关注

原创 学习笔记 | Java数据类型(字符串、数组、整型)的相互转换

字符串、数组、整型之间的转换字符串 ——> 字符数组(char数组)toCharArray()方法String str = "HelloWord";// String ——> 字符数组char[] arr = str.toCharArray();split("")和split(" ") // String ——> 字符串数组 String[] arr1 = str.split(""); //单个字符转换为一个字符串数组的元素 String[] arr2 = str.sp

2021-07-29 23:28:04 342

原创 学习笔记 | Java的队列Queue、PriorityQueue、Deque

Queue在Java的标准库中,队列接口Queue定义了以下几个方法:int size():获取队列长度;boolean add(E)/boolean offer(E):添加元素到队尾;E remove()/E poll():获取队首元素并从队列中删除;E element()/E peek():获取队首元素但并不从队列中删除。要避免把null添加到队列中,否则poll()方法返回null时,很难确定是取到了null元素还是队列为空。...

2021-07-29 00:32:25 503

原创 学习笔记 | 零基础平面设计入门

一、文字排版文字排版是文本的样式或风格,也是文字运用的艺术。常见字体的基础知识衬线体:附加在字母的主要部分,适合传统的项目(印刷出版物:杂志、报纸????等)。无衬线体:比衬线体更加干净且现代,更易于在屏幕上阅读。手写体、哥特体、大写字体、花体【最适合少量文本的设计(标题、片头和重视图像的设计)】相关术语:字距离:具体字符与字符间的距离。行距:使文本易于阅读。字宽距离层级距离:它展示的是先看哪儿然后看哪儿。突出重点。二、颜色明亮的颜色

2021-04-07 16:41:34 1536

原创 学习笔记 | Linux 五种IO模型

在网络环境下,通俗的讲,将IO分为两步:1.等;数据准备~2.数据搬迁。如果要想提高IO效率,需要将等的时间降低。IO相关概念同步阻塞:小明一直盯着下载进度条,到100%的时候就完成。同步体现在:等待下载完成通知;阻塞体现在:等待下载完成通知过程中,不能做其他任务处理;同步非阻塞:小明提交下载任务后就去干别的,每过一段时间就去瞄一眼进度条,看到100%就完成。同步体现在:等待下载完成通知;非阻塞体现在:等待下载完成通知过程中,去干别的任务了,只是时不时会瞄一眼进度条;【小明必须要在两

2020-09-16 20:23:39 282

原创 学习笔记 | 面对海量数据,为什么无法设计出完美的分布式缓存体系?

随着互联网的发展,分布式系统变得越来越重要,当前的大中型互联网系统几乎都向着分布式方向发展。分布式系统简单说就是一个软硬件分布在不同机房、不同区域的网络计算机上,彼此之间仅仅通过消息传递进行通信及协调的系统。分布式系统需要利用分布的服务,在确保数据一致的基础上,对外提供稳定的服务。CAP 定理的诞生在分布式系统的发展中,影响最大最广泛的莫过于 CAP 理论了,可以说 CAP 理论是分布式系统发展的理论基石。早在 1998 年,加州大学的计算机科学家 Eric Brewer ,就提出分布式系统的三个.

2020-09-15 17:28:53 383

原创 学习笔记 | 分布式锁

一、锁使用场景对公共区域数据并发访问,为防止数据脏读,脏写而使用锁。下面举例如下:从redis中取数据,做一定处理,再将处理后的数据压入,当多线程或多进程对同一个key对应的数据做处理时,就可能由于并发导最后的结果不是预期想要的。二、锁的使用流程锁的大体使用流程都是获取锁,做数据处理,然后释放锁,流程图如下:...

2020-09-15 16:04:30 147

原创 学习笔记 | 最长回文子串

5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"分析class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str "

2020-09-14 21:24:27 208

原创 学习笔记 | 秒杀系统分析

秒杀系统分析互联网电商为了吸引人气,经常会对一些商品进行低价秒杀售卖活动。比如几年前小米的不定期新品发售,又如当前每年定期举行双11、双12中的特价商品售卖。秒杀售卖时,大量消费者蜂拥而至,给电商带来了极大的人气,也给电商背后的服务系统带来了超高的并发访问负荷。在不同电商、不同的秒杀活动,秒杀系统售卖的商品、销售策略大不相同,但秒杀背后的秒杀系统却有很大的相似性,基本都有以下这些共同特点。首先,秒杀业务简单,每个秒杀活动售卖的商品是事先定义好的,这些商品有明确的类型和数量,卖完即止。其次,秒杀活动

2020-09-14 15:30:38 386

原创 学习笔记 | Redis 分布式部署方案

Redis 分布式部署方案为什么要分布式Redis是一款开源的基于内存的K-V型数据库,因为内存访问速度快,一般被用来做系统的缓存。Redis作为单机部署能够支持业务简单,数据量不大的系统需求,但在实际应用中,一旦系统规模上来,单机的Redis就会遇到下面的挑战:伸缩性。系统随着长期运行与业务增长,对Redis存储的数据量需求也越来越大,单机必然受限于服务器的内存与磁盘大小。高性能。系统规模变大后,对Redis的吞吐量需求也会提高,而单机的吞吐量必然有限,这种情况会影响整体系统的性能。高可用。

2020-09-14 13:42:35 2170

原创 学习笔记 | 01 CPU是什么?

1.1 CPU的内部结构解析程序运行流程CPU的四个构成部分1.2 CPU是寄存器的集合体程序员眼中的CPU (CPU是寄存器的及集合体)1.3 决定程序流程的程序计数器程序计数器决定着程序的流程。1.4 条件分支和循环机制1.5 函数的调用机制1.6 通过地址和索引实现数组1.7 CPU的处理其实很简单外围设备:指的是连接到计算机的键盘、鼠标、显示器、设备装置、打印机等。...

2020-09-13 15:26:08 239

原创 学习笔记 | i++和++i的区别

i++和++i的区别

2020-09-11 19:44:12 178

原创 学习笔记 | 合并K个升序链表

合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:l

2020-09-09 18:59:46 343

原创 学习笔记 | 时间局部性和空间局部性

在CPU访问寄存器时,无论是存取数据还是存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。局部性原理又分为时间局部性(temporal locality) 和空间局部性 (spatial locality) 。1. 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因: 是由于在程序中存在着大量的循环操作。被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。2. 空间..

2020-09-09 15:32:21 4732

原创 学习笔记 | Linux 与 Shell

Linux 与 Shell 的环境搭建操作系统简史bash是什么什么是 Bash?入侵某个电站时,在交互界面显示了一行行的命令,其实这个交互界面就是 UNIX 系统界面,而这一行行指令便是 Linux Shell 指令,那么 Shell 是指什么呢?它其实是 UNIX 系统下的一个解析器,可以解析这些指令并完成相关操作。而在 Shell 出现之前,人们则需要通过编程的方式输入指令来操作系统,效率非常的底下,往往需要提前设计好大量的程序,才可以正常地操作系统,而有了 Shell 以后,用户操作系.

2020-09-09 12:01:16 201

原创 学习笔记 | 互斥锁和自旋锁

互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠,等待锁释放时被唤醒。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库

2020-09-07 19:46:05 240

原创 学习笔记 | 剑指 Offer 65. 不用加减乘除做加法

剑指 Offer 65. 不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用“+”、“-”、“*”、“/”四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数Code:class Solution(object): def add(self, a, b): """ :type a: int :type b: int :rty

2020-09-04 21:16:07 210

原创 学习笔记 | Python版 剑指 Offer 39. 数组中出现次数超过一半的数字

剑指 Offer 39. 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000class Solution(object): def majorityElement(self, nums): """ :type num

2020-09-04 20:10:36 223

原创 学习笔记 | Python版本 面试题 08.12. 八皇后

面试题 08.12. 八皇后设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。注意:本题相对原题做了扩展示例: 输入:4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释: 4 皇后问题存在如下两个不同的解法。 [ [".Q..", // 解法 1 "...Q",

2020-09-04 15:42:21 194

原创 学习笔记 | Mysql索引查询失效的情况

Mysql索引查询失效的情况首先,复习一下索引的创建:普通的索引的创建:CREATE INDEX (自定义)索引名 ON 数据表(字段);复合索引的创建:CREATE INDEX (自定义)索引名 ON 数据表(字段,字段,。。。);删除索引:DROP INDEX 索引名;以下通过explain显示出mysql执行的字段内容:id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.select_type: SELECT 查询的类型.

2020-09-03 17:24:27 323

原创 学习笔记 | 多线程共同操作同一个数据互斥锁同步

多线程共同操作同一个数据互斥锁同步?import threadingimport timenum = 0mutex = threading.Lock()class MyThread(threading.Thread): def run(self): global num time.sleep(1) if mutex.acquire(1): num += 1 msg = self.name

2020-09-03 13:04:54 566

原创 学习笔记 | Python中pass语句的作用

Python中pass语句的作用是什么?在编写代码时只写框架思路,具体实现还未编写就可以用pass进行占位,使程序不报错,不会进行任何操作。

2020-09-02 11:56:33 176

原创 学习笔记 | 处理机调度 作业调度、内存调度、进程调度

进程调度的时机进程的切换与过程

2020-09-01 22:35:07 631

原创 学习笔记 | 剑指 Offer 38. 字符串的排列

剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8Codeclass Solution(object): def permutation(self, s): """ :type s: str

2020-09-01 10:40:24 115

原创 学习笔记 | Python版本 剑指 Offer 36. 二叉搜索树与双向链表

剑指 Offer 36. 二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成

2020-09-01 10:15:31 262

原创 学习笔记 | 多态案例3-电脑组装

多态案例3-电脑组装案例描述:电脑主要组成部件为 CPU(用于计算),显卡(用于显示),内存条(用于存储)将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口。测试时组装三台不同的电脑进行工作。示例:#include <iostream>using namespace std;//抽象CPU类class CPU{public: CPU(){}; //抽象的计

2020-08-31 00:14:57 546

原创 学习笔记 | 多态案例2-制作饮品

多态案例二-制作饮品案例描述:制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶。#include <iostream>using namespace std;//抽象制作饮品class AbstractDrinking {public: AbstractDrinking(){}; //烧水 virtual void Boil() = 0; //冲泡 virtual void Brew

2020-08-30 23:11:18 701

原创 学习笔记 | 多态案例——计算器类

案例描述:分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类。多态的优点:代码组织结构清晰。可读性强。利于前期和后期的扩展以及维护。开闭原则:对于修改进行关闭、对扩展进行开放。//多态实现//抽象计算器类//多态优点:代码组织结构清晰,可读性强,利于前期和后期的扩展以及维护class AbstractCalculator{public : virtual int getResult() { return 0; } int m_Num1; int

2020-08-30 19:49:27 204

原创 学习笔记 | Python版本 LeetCode 234. 回文链表

LeetCode 234. 回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val =

2020-08-29 20:51:58 202

原创 学习笔记 | redo和undo的区别

redo和undo区别讨论名词:两种流程,redo重做流程,undo撤销还原流程;或者是redo日志与undo段的简称。动词:redo即重做,undo即撤销还原。翻译有时候为了简单,常把动词和名称混用。不同场景不同的使用。1. redo记录了什么:redo即redo日志,记录数据库变化的日志(区别我们常见的简单的文本日志,redo日志里面记录的都是数据啊,表数据啊等等压缩处理,但也很大)。只要你修改了数据块那么就会记录redo信息,当然nologging除外了。修改的数据块包括:表所在

2020-08-28 19:02:22 16522

原创 学习笔记 | 查找成绩排名第二的学生

查找成绩排名第二的学生假设有这样的一张表student:name mark---------------Alice 98Bob 67Eric 75Kato 84首先找到排名第一的学生: SELECT name, MAX(mark) as mark FROM student 有了最高成绩了,那么次高成绩也就很容易搞定了,也就是把所有小于最高成绩的全部拿出来,然后再在这个范围内找出最高成绩,那就是次高成绩:SELECT name, MAX(mark

2020-08-28 13:39:35 1649

原创 学习笔记 | 递归锁?

递归锁?线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。 互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定, 此时资源的状态为“锁定”,其他线程不能更改; 直到该线程释放资源,将资源的状态 变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。读写锁从广义的逻辑上讲,也可以认为是一种共享版的互斥锁。如果对一个临界区大部分是读操作而只有少量的写操作,读写锁在一定程度上能够降低线

2020-08-27 23:56:58 508

原创 学习笔记 | 孤儿进程和僵尸进程的区别?守护进程?

孤儿进程和僵尸进程的区别?怎么避免这两类进程?守护进程?1、 一般情况下,子进程是由父进程创建,而子进程和父进程的退出是无顺序的,两者 之间都不知道谁先退出。正常情况下父进程先结束会调用wait或者 waitpid 函数 等待子进程完成再退出,而一旦父进程不等待直接退出,则剩下的子进程会被 init(pid=1)进程接收,成会孤儿进程。(进程树中除了 init 都会有父进程)。2、如果子进程先退出了,父进程还未结束并且没有调用 wait或者 waitpid 函数获取 子进程的状态信息,则子进程残留的状态

2020-08-27 23:51:00 1331

原创 学习笔记 | 线程安全?如何实现?加锁、非阻塞同步、线程本地化

线程安全?如何实现?如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的; 若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。对于线程不安全的对象我们可以通过如下方法来实现线程安全:加锁 利用 Synchr

2020-08-27 23:28:54 278

原创 学习笔记 | 进程的创建过程?需要哪些函数?需要哪些数据结构?

01 进程的创建过程?需要哪些函数?需要哪些数据结构?fork函数创造的子进程是父进程的完整副本,复制了父亲进程的资源,包括内存的内 容 task_struct 内容;vfork创建的子进程与父进程共享数据段,而且由vfork创建的子进程将先于父进程运行;linux上创建线程一般使用的是pthread库,实际上linux也给我们提供了创建线程 的系统调用,就是 clone;02 进程创建子进程,fork详解函数原型pid_t fork(void); //void 代表没有任何形式参数

2020-08-27 22:45:44 561

原创 学习笔记 | 查询进程占用CPU的命令

查询进程占用CPU的命令toptop命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。psps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态,进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等。总之大部分信息都是通过执行该命令得到。ps是显示瞬间进程的状态,并不动态连续。如果想对进程进行实时监控应该用top命令。...

2020-08-27 21:51:39 812

原创 学习笔记 | 文件处理grep、awk、sed这三个命令

文件处理grep、awk、sed这三个命令必知必会1) grepgrep (global search regular expression(RE) and print out the line, 全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本, 并把匹配的行打印出来。常用来在结果中搜索特定的内容。2) awkawk是一个强大的文本分析工具,相对于 grep的查找,sed 的编辑,awk 在其对数据分析并生成报告时,显得尤为强大。简单来说 awk 就

2020-08-27 21:34:01 224

原创 学习笔记 | epoll的实现

epoll是怎么实现的?Linux epoll机制是通过红黑树和双向链表实现的。首先通过epoll_create()系统调用在内核中创建一个eventpoll类型的句柄,其中包括红黑树根节点和双向链表头节点。然后通过epoll_ctl()系统调用,向epoll对象的红黑树结构中添加、删除、修改感兴趣的事件,返回0标识成功,返回-1表示失败。最后通过epoll_wait()系统调用判断双向链表是否为空,如果为空则阻塞。当文件描述符状态改变,fd上的回调函数被调用,该函数将fd加入到双向链表中,此时

2020-08-27 17:52:52 130

原创 学习笔记 | Python版本 剑指 Offer 48. 最长不含重复字符的子字符串

剑指 Offer 48. 最长不含重复字符的子字符串请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意

2020-08-27 17:29:03 245

原创 学习笔记 | Python版本 剑指 Offer 63. 股票的最大利润

剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大

2020-08-27 17:15:01 161

原创 学习笔记 | Python版本 剑指 Offer 67. 把字符串转换成整数

剑指 Offer 67. 把字符串转换成整数写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,

2020-08-27 12:54:40 138

树结构4.1节

树结构4.1节

2018-10-13

空空如也

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

TA关注的人

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