安装wslg fedora后一些配置
由于受不了Fedora KED的缩放(在笔记本屏幕上不启用缩放感觉字体实在太小,感觉非常难受),KDE的缩放其实做得已经算是比较好的了,至少启用缩放后看起来不是那末糊了。但仍然用起来还是感觉难受,就重新回到windows了,至少缩放后看起来较为舒服。但是又希望用到linux下的开发环境,这时wsl就很合适了,并且微软也支持了让wsl运行GUI应用了。
安装
我安装的双系统Linux一直都是Fedora,所以对Fedora比较熟悉,所以就还是选择使用Fedora了,但是Fedora的wsl修改版名字是Fedora-Remix-for-WSL,在微软商店也可以搜到,但是需要花费美刀来购买,所以我们下载它在github发布的release版本。
首先下载以 msixbundle 为后缀的安装包,下载完之后我们如果直接双击,就可以安装Fedora了,但是采用这种方式安装的wsl会默认存放在C盘。如果想将其安装到其他位置,那么首先先将下载好的文件后缀改为 zip 将其解压,解压完之后会得到如下的文件:
123456789101112Mode LastWriteTi ...
MySQL进阶篇3(锁,InnoDB引擎)
5.锁
5.1 概述
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
MySQL中的锁,按照锁的粒度分,分为以下三类:
全局锁:锁定数据库中的所有表。
表级锁:每次操作锁住整张表。
行级锁:每次操作锁住对应的行数据。
5.2 全局锁
全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。
其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。
为什么全库逻辑备份,就需要加全就锁呢?
A. 我们一起先来分析一下不加全局锁,可能存在的问题。
假设在数据库中存在这样三张表: tb_stock 库存表,tb_order 订单表,tb_orderlog 订单日志表。
在进行数据备份时,先备份了tb ...
MySQL进阶篇2(视图,存储过程,触发器)
4. 视图/存储过程/触发器
4.1 视图
4.1.1 介绍
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
4.1.2 语法
创建
1CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [CASCADED | LOCAL ] CHECK OPTION ]
2). 查询
12查看创建视图语句:SHOW CREATE VIEW 视图名称;查看视图数据:SELECT * FROM 视图名称 ...... ;
3). 修改
12方式一:CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]方式二:ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH ...
MySQL进阶篇1(存储引擎,索引,优化)
1.存储引擎
1.1 MySQL体系结构
1).连接层
最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
2) 服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
3)引擎层
存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来 ...
MySQL基础篇
1.MySQL概述
1.1数据库概念相关
在这一部分,我们先来讲解三个概念:数据库、数据库管理系统、SQL。
名称
全称
简称
数据库
存储数据的仓库
DataBase(DB)
数据库管理系统
操作和管理数据库的大型软件
DataBase Management
System (DBMS)
SQL
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
Structured Query Language (SQL)
1.2 安装
这里我直接使用docker镜像了,其run过程如下:
1234567891011121314151617181920#拉取mysql镜像docker pull mysql:latest #运行容器##参数说明:#-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。#MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。docker run -itd --name m ...
黑马C++讲义(提高编程)
C++提高编程
本阶段主要针对C++==泛型编程==和==STL==技术做详细讲解,探讨C++更深层的使用
1 模板
1.1 模板的概念
模板就是建立通用的模具,大大提高复用性
例如生活中的模板
一寸照片模板:
PPT模板:
模板的特点:
模板不可以直接使用,它只是一个框架
模板的通用并不是万能的
1.2 函数模板
C++另一种编程思想称为 ==泛型编程== ,主要利用的技术就是模板
C++提供两种模板机制:函数模板和类模板
1.2.1 函数模板语法
函数模板作用:
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
语法:
12template<typename T>函数声明或定义
解释:
template — 声明创建模板
typename — 表面其后面的符号是一种数据类型,可以用class代替
T — 通用的数据类型,名称可以替换,通常为大写字母
示例:
1234567891011121314151617181920212223242526272829303132333435363738394041 ...
黑马C++讲义(核心编程)
C++核心编程
本阶段主要针对C++==面向对象==编程技术做详细讲解,探讨C++中的核心和精髓。
1 内存分区模型
C++程序在执行时,将内存大方向划分为4个区域
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:
不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程
1.1 程序运行前
在程序编译后,生成了exe可执行程序,**未执行该程序前**分为两个区域
**代码区:**
存放 CPU 执行的机器指令
代码区是**共享**的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
代码区是**只读**的,使其只读的原因是防止程序意外地修改了它的指令
**全局区:**
全局变量和静态变量存放在此.
全局区还包含了常量区, 字符串常量和其他常量也存放在此.
==该区域的数据在程序结束后由操作系统释放==.
示例:
12345678910111213141516 ...
黑马C++讲义(基础入门)
C++基础入门
1 C++初识
1.1 第一个C++程序
编写一个C++程序总共分为4个步骤
创建项目
创建文件
编写代码
运行程序
1.1.1 创建项目
Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开
1.1.2 创建文件
右键源文件,选择添加->新建项
给C++文件起个名称,然后点击添加即可。
1.1.3 编写代码
1234567891011#include<iostream>using namespace std;int main() { cout << "Hello world" << endl; system("pause"); return 0;}
1.1.4 运行程序
1.2 注释
作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,==对该行代码说明==
多行注释: /* 描述信息 */
通常放在一段代码的上方,==对 ...
openGL(FreeGlut和GLFW)环境配置
本篇介绍一下windows平台下,Visual Studio作为IDE下的OpenGL的环境配置问题,本文主要分为两个部分,分别介绍FreeGlut和GLFW这两个OpenGL环境的配置。
FreeGlut环境配置
下载freeglut源码
在freeglut官网(网址:http://freeglut.sourceforge.net/)下载最新版的freeglut的源代码。
编译freeglut
下载cmake
由于我们下载的是源代码,并不是编译好的二进制文件,所以需要我们自己进行编译。
首先我们下载Cmake,在cmake官网(https://cmake.org/download/)根据自己的平台下载最新版本的Cmake。这里有已经编译好的二进制文件,我们直接下载二进制文件即可。
这里下载msi安装文件或者zip的压缩文件均可。
打开下载后的cmake-gui,为如图所示的样子:
编译freeglut
souce code位置填写我们下载下来的freeglut源码解压后的文件夹位置,build the binaries填写我们要将编译好的二进制文件保存的位置(自己创建),然后点 ...

