c语言指针和内存原理(1)
c语言指针和内存原理(1)分配内存
c语言常见的分配内存主要为变量声明和malloc方法,这篇文章主要讨论变量声明部分
变量声明包含变量类型与变量名称两个属性,而变量类型又包括非数组变量类型和数组变量类型
非数组变量类型int,short,float,double,char,结构体,联合体等
数组变量类型多个同样的变量组成的一维构造类型
包含元素个数和元素的变量类型两个属性
如int[2],char[3]
数组变量类型的元素也可以为其他数组变量类型
如int[2][3]的每个元素都是int[3]类型
指针变量类型指针变量类型其实也是非数组变量类型
任意一种变量类型,都有指向其的指针变量类型
这里要区分一下
int(*)[2]是一个指针变量类型,指向一个int[2]类型
int*[2]是一个数组变量类型,其每个元素是int*指针变量类型
Tip: 把int*作为一个整体来看待,这样后面加上[2]就能理解为什么是数组变量类型了
同理,再拓展一下:int*(*)[2]表示一个指针类型,其指向一个数组类型,数组类型的元素类型是指针类型
值值包含两个层面的语义:值,值的类型
一个值记作&l ...
cf817
cf #817A判断一个字符串是否为另一个字符串的排列(字符串中字符互不相同)
分析:看了标答发现比较tricky的方法是把这两个string排序,然后直接判断==
太简单代码就不发了
E题意:给定n个矩形,询问q次,每次给出hs,ws,hb,wb,输出在高度在(hs+1,hb-1),宽度在(ws+1,wb-1)的矩形面积之和。
分析:要求一定范围内的矩形面积之和,考虑二维前缀和。sum[x][y]表示从(1,1)到(x,y)的面积之和。求某个区间的话,我们只需要sum[x2][y2]+sum[x1][y1]-sum[x2][y1]-sum[x1][y2]
主要还是不熟悉二维前缀和,可以结合一维前缀和一起理解。
1234567891011121314151617181920212223242526272829303132333435363738#include <bits/stdc++.h>using namespace std;#define pb push_backtypedef vector<int> vi;typedef lo ...
selenium入门
Selenium入门原理&安装
我们写代码模拟用户操作时,调用Selenium里的接口,Selenium将对应的请求发送给浏览器驱动,浏览器驱动再将请求转化后发送给浏览器
浏览器驱动 也是一个独立的程序,是由浏览器厂商提供的,不同的浏览器需要不同的浏览器驱动。比如 Chrome浏览器和火狐浏览器有各自不同的驱动程序。
安装只需执行下述命令:
1pip install selenium
同时我们还要安装浏览器驱动
https://chromedriver.storage.googleapis.com/index.html
这里尽量选择与浏览器版本相近的驱动
Tip: Chrome设置里关于Chrome可查看Chrome版本
示例11234567from selenium import webdriver //import Selenium中的webdriverfrom selenium.webdriver.chrome.service import Service //import Servicewd = webdriver.Chrome(service=Service(r ...
java反射
Java 反射对于Class类的理解注意,这里的Class和关键词class是两码事。这里的Class是一个类,它的实例就是我们平常使用的类如Person,Dog。如果说运行时类是对日常事物的一个抽象,Class可以理解为对运行时类类的进一步抽象。
创建Class的实例调用运行时类的属性 .class1Class<Person> clazz = Person.class;
调用运行时类对象的getClass()123Person person = new Person("Ando", 19);Class<? extends Person> clazz2 = person.getClass();System.out.println(clazz2);
调用Class的静态方法:forName(String classPath)12Class<?> clazz3 = Class.forName("Person");System.out.println(clazz3);
这三种方法获取到的运行时类均为同一个
类加 ...
echarts
ECharts 基础使用
本文代码中令myChart为一个echarts实例(echartsInstance)
基本原理为先设置好装图表的容器,然后再在option中指定图表的配置项和数据
最后通过 myChart.setOption(option)显示图表
图表容器及大小初始化先在html中定义一个有宽度,高度的div节点,通过下列代码初始化一个echarts实例
1var myChart = echarts.init(document.getElementById('xxx'));
也可以为不存在宽度高度的容器指定宽度,高度
1234var myChart = echarts.init(document.getElementById('main'), null, { width: 600, height: 400});
响应容器大小让图表大小实时根据容器的大小进行变化
1234567var myChart = echarts.init(document.getElementById('main') ...
echarts
CSS flex布局flex布局基础任何一个容器都可以指定为flex布局
123456789// 盒状模型.box{ display: flex}// 行内元素.box{ display: inline-flex}
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
容器属性flex-direction1234// 主轴方向.box { flex-direction: row | row-reverse | column | column-reverse;}
flex-wrap当主轴排列不下所有子内容时,flex-wrap决定如何换行
1234.box{ flex-wrap: nowrap | wrap | wrap-reverse;}// nowrap为默认
三种分别对应:
flex-flow12345// flex-direction与flex-wrap的合并写法// 默认为row nowrap.box { fl ...
从零开始学django-3
从零开始学django-3请求和响应请求:浏览器通过http协议发送给服务器端的数据
响应:服务器端接收到请求后做相应的处理后再回复给浏览器端的数据
请求主要有三大部分:起始部分,请求头,body
请求方法常用的有GET,POST,HEAD
GET:请求指定的页面信息,并返回实体主体
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取响应头
POST:提交数据时使用。数据被包含在请求体里
PUT,DELETE,CONNECT,OPTIONS,TRACE等不太常用
cf815
cf815 div2 (A题fst的一场)
下述题目中默认n为10^5级别,n*m为10^5-10^6级别,整数范围10^9级别。
A题意:有两个分数a/b,c/d,我们一次操作可以给a,b,c,d乘上任意数(b,d不可以乘0),问最少多少次操作两个分数相等。
思路:两个分数相等即a*d=b*c,同时可以注意到我们可以给a和c都乘0,因此必然操作数最多为2。接下来只需要判断什么时候为0,1,2即可。
0:显然a*d=b*c时就是0
1:只需要1次操作,说明我们只能乘1次,便使得a*d=b*c。假如乘的数是k,那么最开始就有a*d = k*b*c或者b*c=k*a*d。
2:剩余的情况显然就是2次
碎碎念:A题判断1次的时候我写的是a*d/b%c==0||b*c/a%d==0,蠢蠢牛马了属于是。。。
1234567891011121314151617181920212223242526#include <bits/stdc++.h>usi ...
从零开始学django-2
从零开始学 django-2URL定义:Uniform Resource Locator
作用:定位互联网上某个资源的位置
格式:protocol :// hostname[:port] / path [?query][#fragment]
12345678protocol:协议,有http,https,file(本地计算机上的文件,为file:///)等hostname:域名或者iphttp默认端口为80path:路由[]内的内容可有可无port:端口query:传参,用&隔开,每个参数的名和值用'='隔开fragment:信息片段,字符串,用于指定网络资源中的片段,直接定位到页面某一位置
Django处理URL请求
django从配置文件中找到ROOT_URLCONF,找到主路由文件
django加载主路由文件的urlpatterns变量
依次匹配urlpatterns(数组)的path,直到匹配成功再停止
匹配成功,调用对应的视图函数处理请求
匹配失败,返回404
视图函数定义:用来接受浏览器请求并通过HttpResp ...
从零开始学django-1
从零开始学django-1创建django项目首先安装环境,这里推荐一个安装教程:
https://blog.csdn.net/weixin_44293949/article/details/113071069
安装成功后终端执行:
1django-admin startproject xxxx
xxxx为你的项目名称
启动django服务终端进入django项目文件夹
1cd xxxx
进入项目文件夹后,启动服务
1python manage.py runserver
默认的运行端口是8000,即127.0.0.1:8000
关闭django服务
runserver终端下Ctrl+C
在其他终端下,可以查找django对应的进程id,然后kill掉
Django框架总览db.sqlite3:django默认的数据库文件
manage.py:是包含项目管理子命令的文件
python manage.py runserver 启动服务
python manage.py startapp 创建app
python manage.py migrate 数据库迁移
…
(可用pyth ...