![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
四郎别认输
这个作者很懒,什么都没留下…
展开
-
kmp算法
#include <iostream>#include <string>#include <vector>using namespace std;int nexts[100];int Index_KMP(string s,string t,int pos){ int sl=s.size(); int tl=t.size(); int i=pos; int j=0; while(i<sl&&j.原创 2021-03-12 17:54:27 · 211 阅读 · 0 评论 -
Adapter(适配器)模式(Java)
Adapter模式使用场景:原程序无法直接使用,需要适当变化之后才能使用,使用Adapter模式弥补差异种类:类适配器模式(使用继承的适配器) 对象适配器模式(使用委托的适配器)类适配器模式Banner类当前实际的类PrintBanner类将Banner适配到PrintPrint接口Main所调用的实例现有一个接口FileIO,声明了将属性集合保存至文件的方法,这个实例中的Banner为java.util.Properties类FileIO(Print原创 2020-09-17 15:51:44 · 169 阅读 · 0 评论 -
迭代器(iterator)模式(java)
迭代器(iterator)模式迭代器模式下的四个部分原创 2020-09-13 08:29:06 · 220 阅读 · 0 评论 -
Maven初学习
什么是MavenApache Maven 是一个软件项目管理和构建工具,可以帮助开发人员创建和管理项目基于项目对象模型POM(Project Object Model)的概念Maven的功能项目的管理工具 jar包的管理工具 自动化的构建工具Maven的相关术语中央仓库:是一个网络仓库,存储jar包和maven插件,地址:repo.maven.apache.org/maven2/|repoq.maven.org/maven2/ 本地仓库:从中央仓库下载的jar包的存放位置,在本地原创 2020-09-11 15:17:36 · 77 阅读 · 0 评论 -
Java的多线程基础学习
Java的多线程实现方式Thread类实现方式线程要执行的代码写在thread的 run方法中实例代码:package lmw14;public class ThreadTest { public static void main(String[] args) { Thread thread = new TestThread(); thread.start(); for (int i=0;i<20000;i++){原创 2020-09-09 23:54:27 · 92 阅读 · 0 评论 -
Java的JDBC初学习
Java的JDBC初学习JDBC常用APIDriver接口该接口专门提供给数据库厂商使用DiverManager类用于加载JDBC驱动并且创建与数据库的连接。Connection接口代表Java程序和数据库的连接,只有获得连接对象后,才能访问数据库,并操作数据表。常用方法Statement接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQ原创 2020-09-03 06:59:41 · 287 阅读 · 0 评论 -
Java的File类
File类用于封装一个路径,这个路径是从系统盘符开始的绝对路径或相对路径常用的构造方法常用的方法原创 2020-09-01 17:19:48 · 112 阅读 · 0 评论 -
Java的字符流
字符流的抽象顶级父类——Reader和Writer字符流本质上也是基于字节流Reader是字符输入流,用于从某个源设备读取字符Writer是字符输出流,用于向某个目标设备写入字符OutStreamWriter是Writer的子类,可以将字符输出流转换成字节输出流,方便直接写入字符InputtputStream是Reader的子类,可以将有一个字节输入流转换成字符输入流,方便直接读取字符...原创 2020-09-01 17:04:28 · 106 阅读 · 0 评论 -
Java的字节流
Java的I/O流分为字节流和字符流根据输入输出方向不同可以分为输入流(InputStream)和输出流(OutputStream)InputStream(输入流)OutputStream(输出流)这两个是抽象类,不能被实例化FileInputStream是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。由于从文件读取数据是重复的操作,因此需要通过循环来实现数据的持续读取FileoutStream是操作文件的字节输出流,专原创 2020-09-01 16:39:29 · 214 阅读 · 0 评论 -
tp框架使用中间件修改get或者post请求所传递的变量
代码:<?phpnamespace app\http\middleware;class Notiflogcheck{ public function handle($request, \Closure $next) { $filter = json_decode(htmlspecialchars_decode($request->get('filter'))); if (isset($filter->result) &原创 2020-09-01 15:18:59 · 1319 阅读 · 1 评论 -
mysql二进制日志以及其对复制的影响
mysql的日志类型二进制日志记录了所有对Mysql数据库的修改事件,包括增删改查事件和对表结构的修改事件基于段的格式binlog_format=STATEMENT该格式日志记录量相对较小,节约磁盘及网络I/O只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量必须记录上下文信息,保证语句在从服务器上执行结果和在主服务器上相同,有可能出现主从不一致基于行的日志格式binlog_format=ROW可以避免MySQL复制中出现的主从不一致问题原创 2020-08-23 15:19:58 · 169 阅读 · 0 评论 -
TP框架的Container容器类源码分析
TP框架的Container源码分析版本:5.1.39TLSContainer的结构导图Container结构图Container中的属性$instance——用于容器自身实例化 $instances——一个用于存放容器中的对象实例的数组 $name——容器表示别名 $bind——容器绑定标识$bind的初始值 /** * 容器绑定标识 * @var array */ protected $bind = [ 'a原创 2020-08-22 15:22:46 · 814 阅读 · 0 评论 -
理解php的依赖注入
依赖注入用来减少代码之间的耦合有效分离对象和它所需的外部资源示例现有Person类和Car类这两个类Person类<?phpnamespace di;class Person{ /** * 依赖 : Person类依赖于Car * 注入 car类注入到Person */ public static function buy() { $bmw = new Car(); return原创 2020-08-19 15:48:50 · 167 阅读 · 0 评论 -
mysql架构学习——数据库结构优化笔记
数据库结构优化目的减少数据冗余 尽量避免数据维护中出现更新,插入和删除异常设计步骤需求分析:全面了解产品设计的存储需求,数据处理需求,数据的安全性和完整性 逻辑设计:设计数据的逻辑存储结构,数据实体之间的逻辑关系,解决数据冗余和数据维护异常 物理设计:根据所使用的数据库特点进行表结构设计逻辑设计什么是反范式化设计为了性能和读取效率的考虑而适当的对数据库设计范式的要求进行违反,而允许存在少量的数据冗余(用空间换时间)范式化设计的优缺点优点可以减少数据冗余 范式化的更原创 2020-08-19 14:38:02 · 89 阅读 · 0 评论 -
经典sql问题——每门课都大于X分
测试数据create table sql01_score( id int not null auto_increment primary key, name varchar(30) not null comment '学生姓名', course varchar(50) comment '课程名称', grade int comment '成绩' )engine=InnoDB default charset=utf8; insert into sql01_score(name, course, g..原创 2020-08-19 10:46:30 · 281 阅读 · 0 评论 -
Java集合类——Set接口,Map接口,泛型
Set接口继承自Collection接口元素是无序的,并会以某种规则保证存入的元素不出现重复主要有两个实现类:HashSet和TreeSetHashSet类向HashSet集合中添加一个对象时,首先会调用该对象的hashCode方法来计算对象的哈希值,从而确定元素的存储位置,若此时哈希值相同则调用对象的equals()方法确保该位置没有重复元素Map接口Map接口是一种双列集合,每个元素包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合原创 2020-08-19 10:05:30 · 174 阅读 · 0 评论 -
Java集合类——List接口与Iterator接口
Java集合类——List接口List接口继承自Collection接口List接口的对象称为List集合在List集合中元素可以重复,线性存储,可以通过索引访问指定元素特点:元素有序——存入顺序和取出顺序一致List的特定方法ArrayListList接口的一个实现类在内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,其会在内存中分配一个更大的数组来存储这些元素因此ArrayList相当于一个长度可变的数组因为基于数组所以查询速度很快但是增删效率低原创 2020-08-18 23:22:47 · 284 阅读 · 0 评论 -
如何在tp5.1中添加自定义类库,实现多扩展类库目录
在tp5.1中添加与extend目录相同的扩展文件夹,实现多扩展类库目录方法第一步在thinkphp中建立一个与extend文件夹同级的目录在这个文件夹下建立一个测试类Test,命名空间为ali<?phpnamespace ali;class Test{ public static function index() { echo '你侮辱了PHP几十年的历史,我要你立刻改正,但我一向是无所谓的'; }}在applica原创 2020-08-17 11:24:22 · 938 阅读 · 0 评论 -
Tp5自动加载Loader类学习
Tp5自动加载Loader类学习spl_autoload_register自动用给定的函数尝试加载未定义的类参数:自动加载的函数 是否抛出异常 true为添加至队首,false为添加至队尾Loader的Register方法注册系统自动加载composer自动加载调用了composer文件夹下的autoload_static.php文件$prefixLengthPsr4——自动加载的类的命名空间的名称的长度键为这个类的命名空间的首字母,值为这个类的命名空间的名原创 2020-08-13 22:29:00 · 403 阅读 · 0 评论 -
tp5.1框架初始化流程学习
tp5.1框架初始化流程学习tp5.1的入口文件(public/index.php)主要完成框架的初始化与应用启动,等待用户请求,然后进行调度处理入口文件代码<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +--------------------------------------原创 2020-08-13 16:28:58 · 365 阅读 · 0 评论 -
Linux网络命名空间实验——学习docker基于同一个镜像构建的两个容器彼此之间可以ping通的原理
Linux网络命名空间实验目的:将一台centos的虚拟机下的test1和test2两个网络空间连通环境:一台用vagrant拉起的centos虚拟机准备工作ip link当前存在的网络接口sudo ip netns list第一步sudo ip link add veth-test1 type veth peer name veth-test2添加一对网络端口第二步将veth-test1添加到test1sudo ip link set原创 2020-08-10 23:03:27 · 385 阅读 · 0 评论 -
Java API学习记录——包装类
Java API学习记录——包装类包装类将基本数据类型的值包装为引用数据类型的对象装箱指将基本数据类型的值转化为引用数据类型拆箱将引用数据类型的对象转为基本数据类型原创 2020-08-10 21:02:32 · 117 阅读 · 0 评论 -
Java API学习记录——Math类和Random类
Java API学习记录——Math类和Random类Math类Math类时数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E分别代表数学常量π和e。Random类可以在指定的取值范围内随机产生数字Random的构造方法第一种Random()用于创建一个伪随机数生成器该方法创建时使用的种子是随机的,每个对象产生的随机数不同第二种Random(long seed)构造方法,使用一个long型的seed原创 2020-08-10 20:50:17 · 145 阅读 · 0 评论 -
Java API学习记录——System和Runtime类
System类定义了一些系统相关的属性和方法,所提供的的属性和方法都是静态的常用方法:Runtime类用于表示虚拟机运行时的状态,用于封装JVM虚拟机进程,每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计实例化Runtime run = Runtime.getRuntime();...原创 2020-08-10 13:49:05 · 122 阅读 · 0 评论 -
JAVA API学习记录——String和StringBuffer类
JAVA API学习String类用于封装字符串在使用String类之前需要先对String类进行初始化1.使用字符串常量直接初始化一个String对象String str1 = "abc";2.使用String的构造方法初始化字符串对象String类常用方法注:String字符串在获取某个字符时,会用到字符的索引,当访问字符串中的字符时,如果字符的索引不存在,则会发生StringIndexOutOfBuoundsException(字符串角标越界异常)。Str原创 2020-08-10 13:33:08 · 251 阅读 · 0 评论 -
Java的垃圾回收和final关键字
Java的垃圾回收当一个对象成为垃圾后仍会占用内存空间,时间一长,会使内存空间不足,因此Java引入了垃圾回收机制一个对象在成为垃圾后暂时地保留在内存中,当这样的垃圾堆积到一定程度时,Java虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的内存空间。也可以调用System.gc()方法来通知虚拟机立即进行垃圾回收。当一个对象在内存中被释放时会触发finalize()方法。代码:package lmw03;public class Trash {原创 2020-08-09 11:04:47 · 978 阅读 · 0 评论 -
Java的基础语法——变量,运算符
Java中的变量自动(隐式)类型转换满足条件两种数据类型彼此兼容 目标类型的取值范围大于源类型的取值范围强制类型转换当两种类型不兼容是过目标类型取值范围小于源类型时,自动类型转换㞏进行,则需强制类型转换目标类型 变量 = (目标类型)值Java的运算符算数运算符注意:取模时,数的符号只与被模数有关与模数无关赋值运算符1)在Java中可以通过一条赋值语句对多个变量进行赋值2)除了“=”,其他都是特殊的赋值运算符比较运算符逻辑运算符原创 2020-08-08 20:56:25 · 140 阅读 · 0 评论 -
InnoDB的锁机制原理学习
共享锁(读锁,S锁)该锁只允许其他事务操作读数据,但不能修改。select * from account where id = 1 lock in share mode;排他锁(写锁,X锁)在事务中进行DML操作时会有排他锁当该条数据上了排他锁后,其他事务读写等一切操作无法实行(但其他事务操作可以读取该数据在快照中的值)for update//获取排他锁innoDB的行锁和表锁行锁:给索引项加锁表锁:给没索引的项加锁意向共享锁(IS锁)意向排他锁(IX锁)原创 2020-08-06 23:00:41 · 154 阅读 · 0 评论 -
MySQL事务的四种隔离级别及相关语句
MySQL事务的四种隔离级别隔离级别读未提交会读取到事务尚未提交或回滚的数据,造成脏读set tx_isolation='read-uncommitted';读已提交只会读取事务已提交的数据,但是不可重复读set tx_isolation='read-committed';可重复读解决了重复读的问题,在事务开始时,所使用现有的数据固定在该事务开始的那一刻,但是会出现幻读set tx_isolation='repeatable-read';串行化解决了幻读原创 2020-08-03 20:30:18 · 103 阅读 · 0 评论 -
MySQLslap的参数整理
MySQLslap的参数整理--auto-generate-sql 由系统自动生成SQL脚本进行测试 --auto-generate-sql-add-autoincrement 在生成的表中增加自增ID --auto-generate-sql-load-type 指定测试中使用的查询类型 --auto-generate-sql-write-number 指定初始化数据时生成的数据量 --concurrency 指定并发线程的数量 --engine 指定要测试表的存储引擎,可以用逗号分割多个存储原创 2020-07-16 21:18:59 · 351 阅读 · 0 评论 -
mysql架构——基准测试
基准测试定义是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响和压力测试的区别压力测试需要针对不同主题,所适用的数据和查询也是真实用到的基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系目的建立MySQL服务器的性能基准线模拟比当前系统更高的负载,以找出系统的扩展瓶颈测试不同的硬件,软件和操作系统配置证明新的硬件设备是否配置正确测试方式:系统测试,MySQL测试原创 2020-07-16 17:34:59 · 84 阅读 · 0 评论 -
mysql架构学习——MySQL的配置参数
mysql的配置参数获取配置信息路径命令行参数 配置文件MySQL配置参数的作用域全局参数:set global 参数名 = 参数值;set @@global.参数名 := 参数值; 会话参数:set[session]参数名=参数值; set @@session.参数名 := 参数值;内存配置相关参数确定可以使用的内存上限 确定MySQL的每个连接使用的内存sort_buffer_size:排序缓冲区大小join_buffer_size:连接缓冲区大小read_buff.原创 2020-07-15 19:05:27 · 148 阅读 · 0 评论 -
MySQL架构学习——存储引擎
MySQL架构学习——存储引擎MyISAM存储引擎表由MYD和MYI组成特性并发锁与锁级别 表损坏修复(check table 表名 repair table 表名) 支持索引类型 支持数据压缩(命令行 mysiampack -b (-f强制压缩) 表名)限制版本5.0之前默认表大小为4G适用场景非事务型应用 只读类应用 空间类应用InnodbInnodb使用表空间进行数据存储innodb_file_per_tableON:独立表空间:表名.ibdO.原创 2020-07-14 21:41:48 · 110 阅读 · 0 评论 -
Dokerfile的语法梳理
Dokerfile的语法梳理FROMFROM 自定义的名称:制作base image FROM 官方image名:使用base image尽量使用官方image,保证安全LABEL定义了image的一些基本信息,必须要有帮助信息(Metadata)类似于代码的注释RUN在安装软件时经常使用复杂的RUN使用你反斜线换行避免无用分层,合并多条命令为一行WORKDIR设定当前工作目录类似于cd与mkdir的组合取代RUN cd尽量使用绝对目录ADD原创 2020-07-12 14:33:53 · 129 阅读 · 0 评论 -
mysql架构学习——硬件对数据库的影响
CPUMySQL不支持多CPU对同一SQL处理(更快的CPU)衡量数据库处理能力的指标QPS:每秒同时处理SQL的数量不要使用32位操作系统内存越多越好,但在增加有限当内存的容量大于文件的大小时,再增加也无法提升数据库的性能MyISAM将索引存入内存,数据通过操作系统缓存Innodb将索引和数据都放入内存缓冲缓存对写入的易处可以将多次小的写入存入内存缓存再合并成一次写入选择内存时选择主板支持的最大内存磁盘传统机器硬盘磁盘的读取速度=访问时间+传输时原创 2020-07-12 13:41:47 · 281 阅读 · 0 评论 -
mysql架构学习——sql执行过程
mysql架构学习——sql执行过程mysql基础架构连接器用于连接用户和mysql数据库查询缓存mysql在得到一个执行查询请求后,会首先去查询缓存中查找,是否执行过这条sql,之前执行过的结果会以键值对的形式保存键——sql语句值——查询结果类似于操作系统缓存的工作机制分析器若没有命中则会执行SQL语句分析器进行语法分析优化器决定使用的索引,连接,执行效率最高的方案执行器执行SQL语句SQL的执行优先级FROM>ON>J原创 2020-07-10 20:15:17 · 96 阅读 · 0 评论 -
php——赋值语句作为条件判断
php——赋值语句作为条件判断赋值语句返回的是所赋的值<?php$a = 0;$b = 0;var_dump($b = 0);//返回0;示例if ($a = 1||$b = 3) { var_dump($a);//返回true var_dump($b);//返回0}/***分析:if中的条件判断语句可以看作$a=(1||$b=3)*所以此时根据短路原理可以知道$b=3这条语句不执行*$a则接收或运算符所返回的true*/if (($a =原创 2020-07-05 09:25:48 · 1045 阅读 · 0 评论 -
mysql架构学习———大表与大事务
mysql架构学习大表记录行数巨大,单表超过千万行表数据文件巨大,表数据文件超过10G大表会造成的影响慢查询:很难在一定的时间内过滤出所需要的数据 对DDL操作产生影响:建立索引需要很长的时间 对DDL操作产生影响:修改表结构需要长时间锁表(造成长时间的主从延迟,影响正常的数据操作)处理数据库中的大表分库分表把一张大表分成多个小表定期进行历史归档大事务运行时间比较长,操作的数据比较多的事务大事务造成的影响锁定太多的数据,造成大量的阻塞和锁超时 回滚所需时间原创 2020-07-04 14:36:58 · 1193 阅读 · 0 评论 -
初学docker——构建一个BASE image
构建一个BASE image第一步建一个c语言文件vim work.cc语言文件代码:#include<stdio.h>int main(){ printf("no pain,no gain\n");}第二步编译c语言文件gcc -static work.c -o work第三步编写Dokerfilevim Dockerfile内容FROM scratchADD work /CMD ["/work"]第四步原创 2020-07-04 13:43:27 · 501 阅读 · 0 评论 -
Centos7的docker安装命令记录
docker安装命令记录第一步$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ dock转载 2020-07-04 10:02:46 · 90 阅读 · 0 评论