自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qizong007的博客

为开源世界贡献本人微薄之力

  • 博客(78)
  • 收藏
  • 关注

原创 Go Slice/Map 复制陷阱

为什么Go的 slice 和 map 都作为内部引用类型,但是 slice 有“复制陷阱”,而 map 却没有?

2024-04-15 07:51:25 1076

原创 直播弹幕系统设计

直播弹幕系统的系统设计,与IM类似,本质也是在一个空间内收发消息。本文仅提供思路参考,并非完备的详细设计。

2024-04-14 22:07:15 1043

原创 一文快速搞懂垂直扩展与水平扩展

只要产品增长,就会带来系统负载的增长,包括但不限于:数据量、流量、业务复杂性。当一个系统的负载增加时,系统就可能会出现性能瓶颈、响应时间变慢、甚至崩溃等问题。而扩展就是解决此类系统性能和可靠性问题的常用方法,以提高业务效率和可靠性,从而获得商业效益。

2023-07-15 17:03:17 619

原创 一系列MySQL索引问题引起的争论

题目题目1:表t(id,a,b,c)有索引(a,b,c),判断下列查询语句走不走索引题目查询语句select * from t where a=?select * from t where a=? and b=?select * from t where a=? and c=?select * from t where a=? and b=? and c=?select * from t where b=?select * from t where b=

2021-11-22 21:57:04 666 1

原创 计算机系统结构【简答题专项复习】

第一章计算机系统结构、计算机组成、计算机实现三者之间的区别和联系区别计算机系统结构的实质是一种系统设计,就是完成硬件、软件的功能分配, 对计算机的机器级界面的确定。界面之上,是软件实现的功能;界面之下是硬件和固件实现的功能。计算机组成的实质是一种逻辑设计,是计算机系统结构的逻辑实现(数据流、控制流、控制机构、各部件的功能及连接)计算机实现的实质是一种物理设计,是计算机组成的具体物理实现(器件、组装)联系相同系统结构的计算机可以采用不同的组成;相同组成的计算机可以采用不同的实

2021-06-10 11:32:28 1906

原创 《冒号课堂》读后感:1 开班导言

1.1 开班发言——程序员的四种境界首先开篇就是一句:授人以鱼不如授人以渔。这点我非常赞同,计算机更是如此,技术迭代更新那么快,我们要抓的是技术本质,是思想!今天有springboot,明天就可以有summerboot今天有Java,明天就能有Gama对于不变的东西,学透学明白来,学会举一反三,这比什么都重要(本书前半部分讲的编程范式就是这样的东西)接着谈到了“程序员的四个境界”:本班的宗旨是:学会不如会学,会学不如会用,会用不如被用。对于一个软件开发者来说,这意味着四个阶段:1.学会(

2021-05-28 15:49:27 180 1

原创 安卓复习题(四):事件处理、网络编程【自用】

事件处理单选题下面关于Android中消息机制的描述,正确的是() BA、Handler只能用来发送消息B、Handler是用来发送消息和处理消息的C、MessageQueue是用来收集消息并主动发送消息D、Looper是由Handler创建的解析:Message:消息,它由MessageQueue统一列队,由Handler处理;【消息本身】Handler:处理者,主要负责Message的发送以及处理;【处理完再发消息】MessageQueue:消息队列,用来存放Handler发送过

2021-05-06 18:47:16 1229

原创 安卓复习题(三):Broadcast广播、Service服务【自用】

Broadcast广播单选题下列选项中,属于在清单文件中配置广播接收者标签的是() DA、< broadcast/ >B、< broadcastreceiver/ >C、< ContentProvider/ >D、< receiver/ >下面关于广播的描述,正确的是() AA、有序广播可以被接收者拦截B、无序广播是同步的C、有序广播的效率比无序广播高D、无序广播可以被接收者拦截解析:无序广播是完全异步的,所有receive

2021-05-04 22:48:46 3241

原创 安卓复习题(二):Activity、数据存储、ContentProvider【自用】

Activity单选题下列方法中,Activity从其东到关闭不会执行的是()DA、onCreate()B、onStart()C、onResume()D、onRestart()解析:Activity开始启动时会执行A->B->C,C就是获得聚焦时候(也可以通俗理解为在你看得到的最前面),而D只有在后台程序切换回前台时候才会执行startActivityForResult()方法接收两个参数,第一个是Intent,第二个是()CA、resultCodeB、reques

2021-05-03 12:28:10 2388

原创 安卓考试复习题(一):入门、控件、布局【自用】

入门单选题下列选项中,属于定义字符串资源使用的标签的是()AA、< string/ >B、< strings/ >C、< include/ >D、demin在Activity的onCreate()方法中,加载布局资源文件的方法是()BA、setTheme()B、setContentView()C、setView()D、setGroupView()下面关于尺寸资源的描述,正确的是()AA、尺寸资源通常

2021-05-01 23:06:42 4150

原创 屠龙日记0x01:填坑&语法分析器の姿态

填坑哈哈哈没想到吧,一上来就是填坑,上一篇文章可能有些东西没说好或者说的不够清楚,我对几个专业术语、概念做进一步解释推导:比如有个产生式 A->abc ,那我们就说A可以推导到abc,就是一个把产生式左部替换为右部的过程规约:推导的逆过程,比如产生式E->Tc,那我们就说Tc可以规约到E词素lex:就是语言中的最小单位,比如:if、else、int、;、num…词法单元token:其实就是把lex封装一下,进化版的lex,它包含了结构信息,我写个代码比如一下typ

2021-04-16 11:34:29 108

原创 屠龙日记0x00:语法分析时,我们到底在干嘛

写这个系列的原因今天在写课后练习时候,写到一半突然开始怀疑人生为什么要first集?为什么要follow集?啥是LL(1)?我在干嘛?语法分析是到底是在干嘛?好像成了写作业?的机器了,不行!!!!!!!一定要搞明白!!!不能做不明不白的事儿!!!语法分析的地位编译器前端不外乎就是:词法分析语法分析语义分析而其中最重要的,当属语法分析我们前面学过了词法分析,吃进去的是lex(词素),吐出来的是token那我们的词法分析呢,就是拿着前面词法分析输出的Tokens,通过比对语法规则,

2021-04-13 12:51:34 155

原创 Leetcode第234周赛 好因子的最大数目

题目描述Leetcode 第234周赛的T45716. 好因子的最大数目(hard) ????解题思路这题难就难在题目的理解上,比如我,开始就压根没看明白(蒟蒻哭泣…我们来看一下这道题到底想让我们干啥题目翻译给你一个正整数 primeFactors 。你需要构造一个正整数 n ,它满足以下条件:n 质因数(质因数需要考虑重复的情况)的数目 不超过 primeFactors 个。n 好因子的数目最大化。如果 n 的一个因子可以被 n 的每一个质因数整除,我们称这个因子是 好因子 。比方说,

2021-03-28 18:17:44 210

原创 Leetcode第233周赛 统计异或值在范围内的数对有多少

题目描述Leetcode 第233周赛的T45696. 统计异或值在范围内的数对有多少(hard) ????解题心路历程开端:无脑暴力解哟呵,就这还hard,不是直接双重循环就AC了嘛,撑死在时间上卡人(脑中开始计算复杂度:0(n^2),20000*20000 = 4 * 10^8,四亿,嗯还好吧)class Solution {public: int countPairs(vector<int>& nums, int low, int high) {

2021-03-22 23:53:13 180

原创 记“gorm查询没报错,但结果为空”的解决

解决方案在文末问题引入今天闲来无事,想要上手一下gorm,但是开始就碰壁了!明明数据库都连接成功了,但是…代码:type Account struct { id int name string money float64}func main() { db, err := gorm.Open("mysql", "username:pswd@(127.0.0.1)/db?charset=utf8mb4&parseTime=True&loc=Local") db.Si.

2021-03-09 21:58:57 4571 5

原创 软工后端API复盘

返回格式我这次软工作业选用的API格式是这样的{ # 返回状态码 code: integer # 返回值 data: object}但其实更好的话还是要写完整来:{ # 返回状态码 code: integer # 返回信息描述 message: string # 返回值 data: object}先说code吧codecode顾名思义,就是状态码,我在这边是这么设计的参数名值说明SU

2021-01-25 23:25:34 126

原创 【资源分享篇】计算机/编程学习资源推荐(绝非广告,放心食用)

(本文资源均是国内可以正常且快速访问的,放心食用)网站C/C++C语言菜鸟教程C++菜鸟教程C++官网JavaHow2J深入浅出Java多线程GoGo语言圣经Pythonpython123数据结构与算法OI Wiki人工智能人工智能社区有趣的杂文系列码农翻身(很多有意思的小故事)阮一峰的网络日志视频(待更新…)刷题力扣Leetcode????找工作必备OJ牛客网????找工作必备,有OJ,有笔试题,有面试题洛谷????很适合

2020-12-11 15:23:11 208

原创 (FZU)面向对象分析设计考试复习【历年卷】

对象识别与职责划分,是OO设计永恒的主题。(以下非标准答案,仅代表个人理解,欢迎批评指正)填空题面向对象基本知识面向对象理论认为对象比函数更稳定,更适合作为程序的基本构成单位OOP分析方法在做领域分析时,不仅要梳理业务流程,更是要发现对象从软件的角度来看,对象是一个完备的软件模块,因为其内部包括了数据和处理这些数据的方法(函数)OOP中,父类指针可以指向子类,这体现了IS-A这个检测继承关系的准则IS-A代表的是类之间的继承关系HAS-A代表的是对象和它的成员的从属关系类之间.

2020-11-19 16:42:57 1340 1

原创 初次部署springboot项目到阿里云经验

环境IDEA 2020.1.4(Ultimate Edition)springboot项目的打包IDEA右边一列项目Lifecyclepackage运行在target拿到导出的jar包jar包的传输IDEA中选择Tools - Deployment - configuration配置SFTP配置SSH之后在IDEA右边一列多了个Remote Host,直接把jar包拷贝过去即可jar包的运行与关闭运行nohup java -jar xxx.jar

2020-11-06 16:37:21 145

原创 mysql企业规范约束

库、表字段约束规范(经验之谈)判断某个字段是不是的属性is_vip unsigned tinyint(1)年龄什么之类的,不能为负数的整数,就用无符号整型!age unsigned tinyint(3)数据库的表名和字段名的规范都要小写字母开头,单词间也不出现大写字母单词间下划线隔开不能出现单词的复数形式索引名规范主键索引名为pk_xxx唯一键索引名为uk_xxx普通索引名为idx_xxx涉及金额用decimal,避免精度问题短字符串用char

2020-10-21 15:44:43 135

原创 mysql高级部分

视图 view概念为了不让使用数据库的程序员看到敏感/隐私数据(比如别人的账户多少钱),DBA就可以创建视图,让程序员看到DBA想让他看到的东西,专心于事务就好了,是一种“外模式/模式”的映射,实现了逻辑独立性本质呢,是虚表,不是真的表,隐藏了表的结构从某种层面说呢,他也降低了SQL的复杂度创建视图就是把表的查询结果的表作为视图,其实也就是保存查询语句了mysql> select * from score;+------+---------+---------+------+| id

2020-10-21 13:48:17 145

原创 mysql进阶(二)

多表查询 joininner join(内联)其实就是联结查询,那和之前的where+=的方式有什么不同嘛?我们先来看看它怎么写的:select name,score from studentinner join score on student.id=score.stuid它的效果和之前的:select name,score from student,scorewhere student.id=score.stuid其实是一样的,只不过前者是显性的,后者是隐性的。但是,隐性连接

2020-10-20 17:45:44 101

原创 mysql进阶(一)

列属性完整性primary key 主键绝对确定唯一,99%不会再去更改,且能确定数据的存在性(不能为空)优点查询快且方便保证数据完整性,到哪张表都能查用数字做主键的好处规律性唯一性处理方便(相对string而言)举例:我们的身份证create table t_8(id int(18) primary key,name varchar(30));忘记添加?我们可以后期添加主键alter table t_8 add primary key (id);

2020-10-20 08:45:41 345

原创 你真的了解Java的数据驱动吗:从JDBC说起

数据库访问我们要写数据库驱动程序,至少得先访问到、连接上数据库吧。假设我们要写个连接数据库的应用程序,无论是我们要连接本地的数据库,还是远程的数据库,我们要做的事儿,无非就是进程间通信,我们靠OS提供给我们的socket就行啦,这时我们只需要Java和数据库定义一个应用层的协议, 就是所谓的你发什么请求, 我给你什么响应(例如:握手、认证、约定格式等)就行了。接口的统一MySQL、Oracle、SQL Server、DB2等等各家数据库,都有自己家的一个应用层访问协议,这就造成一个问题,我们的数据

2020-10-02 13:03:13 250 1

原创 uCore lab1 操作系统实验 challenge

uCore lab1-challenge扩展练习 Challenge 1扩展proj4,增加syscall功能,即增加一用户态函数(可执行一特定系统调用:获得时钟计数 值),当内核初始完毕后,可从内核态返回到用户态的函数,而用户态的函数又通过系统调用得到内核态的服务(通过网络查询所需信息,可找老师咨询。如果完成,且有兴趣做代替考试的实验,可找老师商量)。需写出详细的设计和分析报告。完成出色的可获得适当加分。提示: 规范一下 challenge 的流程。kern_init 调用 switch_test

2020-09-17 16:16:21 1326 1

原创 uCore lab1 操作系统实验 关于challenge1的思考

来自 2020.9.17 的我在阅读了《操作系统真象还原》前半本(这书我强推!把我任督二脉淦通了!)+反复阅读工程源码后,我发现自己原来的理解是有问题的。我先抛问题吧:问题一:凭什么k2u要自己给两个位置,而u2k不用?中断例程中,k2u要改ss,u2k为什么不用改?问题二:u2k检测到特权级转换,会把用户态的ss和esp压入内核栈,在iret时候,难道不会又弹出来,不就又回到用户态了吗?问题三:我们明明在切换用户态和内核态,cs的值从8变成1b(注意是16进制),又变回8,虽然我们的eip没变,

2020-09-17 16:13:10 708

原创 《操作系统真象还原》环境准备以及bochs的安装与运行(第一章)

虚拟机和OS的安装虚拟机平台我选择的是VMWare优点:功能较全(可以复制粘贴,拖拽文件等等)缺点:相比于VirtualBox,确实臃肿了一点,大家自己权衡OS的话我选择的是CentOS7(x86_64)的iso【以上都在官网淦就行,没什么难的】yum安装配置环境依赖CentOS用的是yum,Ubuntu用的是apt-getsudo yum -y install gccsudo yum -y install gtk2 gtk2-develsudo yum -y instal

2020-08-28 16:00:46 824 1

原创 堆:从数据结构到实现应用

数据结构逻辑结构:完全二叉树物理结构:通常是顺序存储结构,即数组特殊的关键节点假设此时的节点的下标为i,元素个数为n:(根节点为0)最后一个非叶节点:(n-2)/2左子树根节点:2*i+1右子树根节点:2*i+2父节点:(i-1)/2分类小根堆(最小堆)——每个节点都小于它的子节点,即根节点最小大根堆(最大堆)——每个节点都大于它的子节点,即根节点最大(根节点的左右子树也是堆,递归结构)小根堆: 3 / \ 5 4 /\ /\7 9 8

2020-08-26 16:13:10 143

原创 用毕生所学的抽象能力讲解:指针的一生

为什么写下这篇今天被一题叫热心的动物饲养员FINAL的题目给坑了:指针要指向引用对象,应该是这样:p = &r;,而不是别的我以为指针delete完就会自己置NULL,事实证明我想多了…指针的一生我们先来看看代码吧,我大概用一个整型指针模拟了一下#include<bits/stdc++.h> using namespace std;int main(){ int *p; cout << p << endl; p = new

2020-08-16 12:20:16 159 1

原创 多角度聊聊最大公约数:从粗糙到优雅

引言前几天看了《小灰的算法之旅》的最大公约数部分,看完只晓得说“妙啊!”,然后就没然后了今天汇编老师突然在群里发题目,让我们用x86汇编写个最大公约数,我突然一楞意识到问题严重性的我打算好好深入了解一下,吓得我找了波李永乐老师(此文代码演示使用C++)引入——图解法假设有一个长为104,宽为40的长方形,我们要找一个长度为a(a为整数)的正方形,将这个长方形铺满,那么a=?(其实本质就是在求104和40的最大公约数)按宽(即小的一边)来切:40、40、24、16、8、8,刚好剩下2个边长相

2020-08-07 22:14:23 198

原创 聊聊汇编的寻址方式

我们说到寻址,不外乎就三种:立即数寻址寄存器寻址存储器寻址那到底什么是寻址?通过地址访问数据或者指令,就是寻址!立即数寻址我们先看看这个寻址方式:.dataconst=64bvar byte 87h,64h.codemov ax,1234hmov al,'d'mov ecx,constmov esi,offset bvar非常直接,可以是:直接把数字写明白的常量字符offset前面三个我还明白,offset为什么也算???这里就得插句题外话了

2020-06-28 10:43:59 1110

原创 计算机组成原理复习(三):2.运算方法和运算器(二)

2.运算方法和运算器(二)前言“加减乘除”的本质都是“加法”“加法”的本质就是位运算(异或+与)位运算的本质就是逻辑门电路后面,我会用c语言只用位运算模拟一个加法,然后用这个加法实现“加减乘除”定点加法、减法运算定点加法这个要讲的其实不多,直接看例子吧:【例1】x = +1001,y = +0101,求x+y解:[x]补 = 0 1001,[y]补 = 0 0101 0 1001+ 0 0101----------- 0 1110∴x + y = +1110【例2】x

2020-06-27 10:01:31 3764 1

原创 uCore lab1 操作系统实验

uCore lab1 —— 幼儿园lab1有什么?实现功能后能做啥?一个bootloader可以切换到X86保护模式能够读磁盘并加载ELF执行文件格式显示字符一个OS可以处理时钟中断显示字符项目组成lab1的整体目录结构如下所示:.├── boot │ ├── asm.h │ ├── bootasm.S │ └── bootmain.c ├── kern │ ├── debug │ │ ├── assert.h │ │ ├── kdebu

2020-06-22 10:21:50 2041 3

原创 uCore lab0 操作系统实验

uCore lab0最近想开始做清华学堂在线的OS Lab,得先深入理解ucore,自然也就需要了解支撑ucore运行的硬件环境,即了解处理器体系结构(了解硬件对ucore带来影响)和机器指令集(读懂ucore的汇编)。ucore目前支持的硬件环境是基于Intel 80386以上的计算机系统。(之前做的南京大学的NEMU也是i386)Intel 80386运行模式一般CPU只有一种运行模式,能够支持多个程序在各自独立的内存空间中并发执行,且有用户特权级和内核特权级的区分,让一般应用不能破坏操作系统内核

2020-06-19 11:30:13 948

原创 JavaWeb项目没有main怎么跑

JavaWeb项目没有main怎么跑写了这么多的servlet,突然发现,好像找不到程序的入口?(比如main()???)main()在Tomcat里首先必须确认,main()是存在的在哪里呢?在我们部署的Tomcat容器中main()具体在Tomcat的BootStrap类里面,web应用启动是不会执行类中的main方法的,因为只会调用Tomcat的main,然后通过web.xml的配置去加载其它类,我们平时写的main(),只是用来测试用的Tomcat也是个Java程序Java程序跑起来,

2020-06-17 16:57:58 6454

原创 为什么web.xml配置servlet映射要多一个servlet-name

为什么web.xml配置servlet映射要多一个servlet-name昨天在看《Head First Servlets & JSP》二刷JavaWeb的时候,突然注意到一个点,为什么web.xml配置servlet映射要多一个servlet-name?像这样:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xs

2020-06-16 10:47:33 1100 3

原创 二学单例模式

二学单例模式哎呀!单例都学烂了,有什么好学的啊?因为今天看《Head First 设计模式》看到了一些细节部分,决定重新认识一下单例应用场景线程池缓存注册表工厂对话框偏好设置…普通的单例我们先来看看public Single{ private static Single singleInstance; private Single(){} public static Single getSingleInstance(){ if(singleIn

2020-06-08 17:05:38 124

原创 二学“面向接口编程”

面向接口编程——遵循契约办事虽然之前学过【策略模式】,知道要面向接口,而不是面向实现,那么真的有get到精髓吗?接口的本质是什么?——代码世界里的契约。接口里的一个个方法,就是契约的条款OOP中和接口非常相似的就是抽象类,这经常被大家拿来比较,虽然我之前也写过了,但我还是想再说一遍接口和抽象类——它们其实分工明确首先它们相似在哪?——没有具体实现逻辑!那差在哪呢?我们先看例子先:// 抽象类abstract class Door { abstract void open();

2020-06-05 10:14:19 228

原创 异常,天使还是魔鬼

异常,天使还是魔鬼?我们写代码分两种:自信,愉快地写的,业务逻辑正常忐忑,苦恼地写的,小心处理各种错误和意外逻辑为了缓解负面的情绪,OOP的异常机制横空出世!try { //主体逻辑}catch(Exception e) { //异常逻辑}finally { //公用的清理工作,不要在这return}这个机制就像是伏妖袋一样的,捕到了,贼开心;没捕到呢???三个江湖派别将对异常的态度,对所有编程语言分一下类:嗤之以鼻派:C【用个毛】拥趸派:Java、C#【用

2020-06-03 17:16:04 243

原创 记JavaSE中的两个小坑

== 与 equals()==基本数据类型:比较值引用数据类型:比较对象的地址(即是否为同一个对象)equals()类没有重写:等价于"=="类重写了:由我们自己编写的函数,通常是比较他们的范围(有点像C++的operator=)举个例子public class Test1 { public static void main(String[] args) { String a = new String("ab");//一个引用 String b

2020-06-03 14:04:07 133

空空如也

空空如也

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

TA关注的人

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