自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Thepatterraining的博客

蝴蝶的力量可以颠覆苍穹,学习的力量可以强大己身,分享是一种精神,订阅是一种美德

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

原创 JAVA-LocalDateTime时间格式化,转换时间戳和源码分析(万字长文详解)

这篇文章主要介绍了JAVA8新增的LocalDateTime时间的格式化,和时间戳的互相转换。以及对应的源码分析,有这完整的源码调用链。源码的执行分析。逐行对源码进行了注释,方便大家看懂。万字长文带图带代码示例,一文带你彻底了解时间类型。看完本篇文章,你将获得源码技术++,源码阅读量++,JAVA水平++。对于JAVA源码的解析希望能给你帮助。并提升阅读源码的思维。

2022-12-01 22:55:01 32468 2

原创 让你薪资翻倍的mysql优化面试回答,面试官都惊呆了。。

当面试官问你mysql优化首先要知道mysql分为两个层次。你要逐一从各个层次讲解mysql优化,让面试官知道,哇,原来你对mysql这么了解。面试官:你知道哪些mysql优化?我: …巴拉巴拉巴拉。mysql结构层次首先,mysql分为server层和引擎层。server层有连接器。对于连接器可以通过建立连接池来进行优化。连接器进行连接的时候会消耗资源,还会进行权限验证等操作,为了避免频繁创建连接,所以使用连接池。server层还有缓存模块,只不过缓存模块在新版本,也就是mysql8中被去掉

2020-05-14 17:05:56 2572

原创 CSAPP fall2015 深入理解计算机系统 Cache lab详解

cache lab 缓存实验。

2024-01-23 17:57:12 917

原创 spring Cloud Stream 实战应用深度讲解

spring cloud stream是一个框架,用于构建与共享消息传递系统连接的高度可扩展的事件驱动微服务。该框架提供了一个灵活的编程模型,该模型建立在已经建立和熟悉的 Spring 习惯用语和最佳实践之上,包括对持久发布/订阅语义、消费者组和有状态分区的支持。核心模块。

2024-01-23 11:44:35 1411 3

原创 CSAPP fall2015 深入理解计算机系统 lab1 datalab详解

data lab 数据实验这个数据实验请在linux机器上面运行,实测mac m1本跑不起来。windows没试过。centos上需要安装好gcc运行环境。如果跑不起来记得安装下面这个东西:运行make btest的时候可能会有warning提示,不用管,这个时候其实已经创建完btest了,可以直接运行btest。

2023-07-06 15:06:53 383

原创 手把手带你读java源码之JAVA-stream-中间操作map,flatmap,filter,unordered,peek,distinct,sorted,limit,skip(万字图文详解)

这篇文章主要介绍了JAVA8新增的stream流,作为最常用的一个工具,你是否常常不会用或者用错呢?本文自顶向下一步步的手把手带你通读它的源码,做到不仅会用,还可以用好,甚至学习其中的精妙之处以后自己也可以实现。本文中包括了所有中间操作,比如map,faltMap,filter,unordered,peek,distinct,sorted,limit,skip。本文章属于手把手带你读java源码系列文章,做到每一行源码都有注释,告诉你其中的原理和为什么要这么做。

2023-03-03 17:28:18 1344 1

原创 手把手带你读java源码之JAVA-stream数据结构和初始化源码详解(万字长文详解)

这篇文章主要介绍了JAVA8新增的stream流,作为最常用的一个工具,你是否常常不会用或者用错呢?本文自顶向下一步步的手把手带你通读它的源码,做到不仅会用,还可以用好,甚至学习其中的精妙之处以后自己也可以实现。本文章属于手把手带你读java源码系列文章,做到每一行源码都有注释,告诉你其中的原理和为什么要这么做。无论你是小白,新手还是高手,相信本文都会为你带来一些收获。跟着本系列文章通读所有java源码,用大白话告诉你,源码并不难。我可以,你也可以。

2023-02-16 17:12:24 917

原创 spring框架中的IOC实现

但是呢,我们这里说的是`面向对象编程中的一种设计原则`。他的全称是`Inversion Of Control`即控制反转。这里有两个单词`控制`和`反转`。这两个单词单独拿出来会发现,都缺少主语。比如- 谁控制了谁?- 什么东西发生反转了呢?

2022-11-14 19:07:17 415

原创 php实现归并排序算法

php实现归并排序算法归并排序算法的复杂度是O(nlogn)。代码如下,完整代码在github上面,只需要clone下来执行composer install然后执行 php artisan test:mergeSort 就可以看到结果了 /** * 归并排序把数据逐步分解,然后对分解后的数据进行排序,最后合并到一起 * * @return mixed */ public function handle() { $this-&

2022-03-07 16:38:30 354 2

原创 有序数组去重算法

有序数组去重算法有序数组去重算法的复杂度是O(n)。代码如下,只进行一次循环,复杂度O(n)完整代码在github上面,只需要clone下来执行composer install然后执行 php artisan test:sortDeduplicate 就可以看到结果了 /** * 因为是有序数组,为了提高去重效率,取一个元素往后一直比对,如果相邻的相等表示是重复的 * 继续往后,直到不相等,也就是遇到一个不重复的为止,将这个不重复的元素移动到该元素的下一个 * 然

2022-02-18 17:31:28 357

原创 无序数组去重算法

无序数组去重算法无序数组去重算法的复杂度是O(n2)。代码如下,首先进行外层循环,复杂度O(n),然后查找这个元素之前的元素中有没有重复的,复杂度O(n),如果有就删除,复杂度O(1),没有就下一个元素,复杂度O(1)。加起来复杂度O(n2)。完整代码在github上面,只需要clone下来执行composer install然后执行 php artisan test:unsortDeduplicate 就可以看到结果了 /** * Execute the console comma

2022-02-18 14:45:57 742

原创 PHP-elasticsearch/elasticsearch包分词功能实现及源码解析

安装直接使用 composer 安装 ES 包就可以了,这里使用官方的 elasticsearch/elasticsearch 这个包。composer require elasticsearch/elasticsearch安装好以后,创建一个客户端。hosts如果是多个节点的集群,那么可以配置一个二维数组。$hosts = [ 'host' => '127.0.0.1', 'port' => '9200', 's

2022-01-19 11:22:10 1946

原创 新概念英语第一册学习笔记

新概念英语第一册21祈使句请给我一本书give me a book please请递给我一本书pass me a bookpass me:递给哪一本书which book?这一本书吗this one?红色的这本the red one不是那本not that one给你here you are语法you give me a book主语 谓语 宾语主语:人称代词主格 i you he she we they宾语:人称代词宾格 me you him her us th

2022-01-15 20:31:08 1470

原创 ElasticSearch十五--ES-基于词项和基于全文的查询

term queryterm是表达语义的最小单位 ,搜索和利用统计语言模型进行自然语言处理都需要处理 term特点term level query: term query/range query/ exists query / prefix query / wildcard query在ES里面,term 查询不做分词,把term查询作为一个整体词汇进行查询,进行一个精确匹配,并对匹配结果进行算分可以通过 Constant Score 将查询转换成一个 filtering ,避免算分,并利用缓

2021-10-21 12:55:00 621

原创 学堂在线C++程序设计第十章学习笔记

学堂在线C++程序设计第十章学习笔记多态运算符重载重载规则C++ 几乎可以重载全部的运算符,而且只能够重载C++中已经有的不能重载的:".",".*","::","?:"重载之后运算符的优先级和结合性都不会改变运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。例如:使复数类的对象可以用 + 运算符实现加法是时钟类对象可以用 ++ 运算符实现时间增加1秒重载为类的非静态成员函数重载为非成员函数双目运算符重载为成员函数重载为类成员的运算符函数定义形式:函数类

2021-08-19 14:32:30 181

原创 数据库系统原理第十节

数据库系统原理第十节数据库设计数据查询视图什么是视图视图是一个对象,他是数据库提供给用户的以多种角度观察数据库中数据的一种重要机制视图不是数据库中真实的表,而是一张虚拟表,其自身并不存储数据视图的优点集中分散数据简化查询语句重用SQL语句保护数据安全共享所需数据更改数据格式创建视图or replace 防止报错,存在替换,不存在创建with check option 增删改查的时候检查视图条件create or replace view view_name [(co

2021-08-15 20:00:21 109

原创 数据库系统原理第九节

数据库系统原理第九节数据库设计数据查询where 子句和条件查询between 2 and 4 包含2,4in (1,2,4)is nullis not null子查询表子查询行子查询列子查询标量子查询比较运算符包括ALLSOMEANY结合existsgroupgroup by id asc|desc with rolluphavinggroup by id having count(*) < 3orderorder by id asc|descgr

2021-08-15 19:59:48 111

原创 学堂在线C++程序设计第九章学习笔记

学堂在线C++程序设计第九章学习笔记继承与派生继承的基本概念和语法继承与派生继承与派生是同一过程从不同的角度看保持已有类的特性而构造新类的过程称为继承在已有类的基础上新增自己的特性而产生新类的过程称为派生被继承的已有类称为基类派生出的新类称为派生类直接参与派生出某类的基类称为直接基类基类的基类甚至更高层的基类称为间接基类继承的目的实现设计与代码重用派生的目的当新的问题出现,原有程序无法解决时,需要对原有程序进行改造单继承时候派生类的语法class 派生类名:

2021-08-12 14:54:08 116

原创 学堂在线C++程序设计第八章学习笔记

学堂在线C++程序设计第八章学习笔记指针与数组定义指向数组元素的指针定义与赋值例如: int a[10], *pa;pa = &a[0] 或 pa = &a*(pa +1)就是 a[1]也可以 pa[1]指针数组:数组的元素是指针类型例如:Point *pa[2];由pa[0],pa[1]两个指针构成指针与函数为什么需要指针做参数需要数据双向传递时(引用传递也可以达到此效果)需要传递一组数据,只传首地址运行效率比较高指针类型的函数若函数的返回类型是指针类型

2021-08-09 12:49:04 197

原创 数据库系统原理第八节

数据库系统原理第八节数据库设计数据更新插入数据insert valuesinsert into table_name[(col_name)] values ();insert setinsert into table_nameset col_name = '值', col_name = '值';insert selectinsert into table_nameselect * from table_name;删除数据delete from table_name wh

2021-08-08 17:22:57 111

原创 数据库系统原理第七节

数据库系统原理第七节数据库设计数据定义连接数据库mysql -u root -p创建数据库create database my_test;查看数据库show databases;删除数据库drop my_test;进入数据库use my_test;表定义创建表数据表被定义为字段的集合按 行 和列的格式存储每一行代表一条记录每一列代表记录中一个字段的取值create [temporary] table tbl_name( 字段名1 数据类型 [列完整性约束条件]

2021-08-07 21:13:28 100

原创 学堂在线C++程序设计第七章学习笔记

学堂在线C++程序设计第七章学习笔记数组的定义与初始化数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素数组的定义类型说明符 数组名[常量表达式] [常量表达式]…数组名的构成方法与一般变量名相同例如:int a[10]int a[5][3]数组的使用数组必须先定义,后使用可以逐个引用数组元素例如:a[0] = a[5] + a[7]数组的存储和初始化一位数组的存储数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应

2021-08-04 16:05:12 283

原创 学堂在线C++程序设计第六章学习笔记

学堂在线C++程序设计第六章学习笔记变量和对象定义在不同的位置其作用域,可见性,生存期都不同友元:对一些类外的函数,其他的类,给预授权,使之可以访问类的私有成员标识符的作用域与可见性作用域分类:函数原型作用域局部作用域类作用域文件作用域命名空间作用域函数原型作用域函数原型中的参数类的作用域类的成员具有类作用域,其范围包括类体和成员函数体在类作用域以外访问类的成员静态成员:通过类名,或者该类的对象名,对象引用访问非静态成员:通过类名,或该类的对象名,对象

2021-08-02 10:17:49 156

原创 数据库系统原理第六节

数据库系统原理第六节数据库设计关系数据库设计方法逻辑结构设计方法将E-R图转换为关系模型一个实体转换为一个关系模式,实体的属性作为关系的属性,实体的码作为关系的码一个一对一联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并一个一对多联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并一个多对多联系可以转换为一个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性三个或以上实体间的一个多元联系可以转换为一个关系模式具有相同码的关系模

2021-08-01 17:18:37 345

原创 数据库系统原理第五节

数据库系统原理第五节数据库设计数据库设计概述数据库的生命周期数据库分析与设计阶段需求分析概念设计逻辑设计物理设计数据库实现与操作阶段实现操作与监督修改与调整数据库设计的目标满足应用功能需求存,取,删,改良好的数据库性能高效率存取和空间的节省共享性,完整性,一致性,安全保密性数据库设计的内容静态的 数据库结构设计数据库概念结构设计逻辑结构设计物理结构设计动态的 数据库行为设计功能设计事务设计程序设计数据库设

2021-08-01 10:38:11 160

原创 C++程序设计第五章

学堂在线C++程序设计第五章学习笔记类与对象对象:现实中对象的模拟,具有属性和行为。类:同一类对象的共同属性和行为定义对象时:通过构造函数初始化删除对象时:通过析构函数释放资源面向对象程序的基本特点抽象:对同一类对象的共同属性和行为进行概括,形成类封装:将抽象出的数据,代码封装在一起,形成类继承:在已有类的基础上,进行扩展形成新的类多态:同一名称,不同的功能实现方式类和对象设计类就是设计类型此类型的“合法值”是什么此类型应该有什么样的函数和操作符新类型的对象该如何被创建和销毁

2021-07-28 13:11:09 218 1

原创 软件工程第二章

软件工程第二章编程过程与规范编程是软件工程师的基本能力编写优雅的代码是每一个程序员的不懈追求编程是一门艺术,他能够展示结构之美,构造之美,表达之美软件变成工作软件编程是一个复杂而迭代的过程,它不仅仅是编写代码,还应该包括代码审查,单元测试,代码优化,集成调试等一系列工作。系统模型到源代码编写代码代码审查单元测试代码优化系统构建集成调试高质量软件开发之道规范的编码高质量的设计有效的测试软件编程规范是与特定语言相关的描写如何编写代码的规则集合目的提高编码质量,

2021-07-25 18:44:27 196

原创 数据库原理第四节

数据库原理第四节关系数据模型关系的完整性约束数据库的数据完整性是指数据库中数据的正确性,相容性,一致性分类:实体完整性约束:主码的组成不能为空,主属性不能是空值NULL参照完整性约束:要么外码等于主码某个元组的主码值,要么为空值用户定义完整性约束域完整性约束执行插入操作检查:检查实体完整性约束插入外码表的时候检查参照完整性约束检查用户定义完整性约束执行删除操作:一般只需要对被参照关系检查参照完整性约束关系数据库的规范化理论关系模式中可能存在的冗余和异常问题数据冗余

2021-07-24 18:11:58 213

原创 数据库原理第三节

数据库原理第三节关系数据模型关系数据结构码或键:属性(属性组)的值都能用来唯一标识该关系的元组,则称这些属性为该关系的码或键超码或超键:在码中去除某个属性,他仍然是这个关系的码候选码或候选键:在码中不能从中移去任何一个属性,否则它就不再是这个关系的码或键。候选码或候选键是这个关系的最小超码或超键主属性或码属性:主码或主键:在若干个候选码中指定一个唯一标识关系的元组(行)全码或全键:一个关系模式的所有属性集合是这个关系的主码或主键,这样的主码或主键称为全码或全键外码或外键:某个属

2021-07-24 14:18:55 183

原创 C++程序设计第三章

C++程序设计第三章数据的输入输出输入输出看成是数据的流动IO流将数据从一个对象到另一个对象的流动抽象为流流在使用前要建立,使用后要删除数据的输入输出是通过IO流来实现的,cin和cout是预定义的流类对象。cin用来处理标准输入,即键盘输入。cout用来处理标准输出,即屏幕输出从流中获取数据的操作称为预定义的插入符和提取符<< 是预定义的插入符,作用在流对象cout上就可以向标准输出设备输出>> 是预定义的提取符,作用在流对象cin上可以写多个常用的

2021-07-20 17:54:46 364 1

原创 数据库系统原理第二节

数据库系统原理第二节关系数据库客户服务器结构客户端,前台或表示层主要完成与数据库使用者的交互任务服务器,后台或数据层主要负责数据管理单机方式网络方式浏览器服务器结构一种基于Web应用的客户/服务器结构,也称为三层客户/服务器结构三层表示层处理层(中间层)数据层数据模型模型是现实世界特征的模拟和抽象表达数据模型是对现实世界数据特征的抽象,描述的是数据的共性内容数据的特征静态特征数据的基本结构数据间的联系数据取值范围的约束动态特征指对数据可以进行符合一定规则

2021-07-19 16:56:38 322

原创 软件工程第一章

软件工程软件无处不在软件是软件工程的研究对象,也是软件工程的产品形态与客观存在工程是将理论和知识应用于实践的科学,其目的是经济有效的解决实际问题软件的本质特性软件 = 程序 + 数据 + 文档程序:计算机可以接受的一系列指令,运行时可以提供所要求的的功能和性能数据:使得程序能够适当地操作信息的数据结构文档:描述程序的研制过程,方法和使用的图文资料软件具有复杂性一致性可变性不可见性上面是软件开发困难的根本原因一致性软件不能独立存在,需要依附于一定的环境(如硬件,网络以

2021-07-18 21:49:34 107

原创 C++程序设计第二章

C++程序设计第二章C++简单程序设计C++的基本数据类型整数类型实数类型字符类型布尔类型C++的基本运算算术运算逻辑运算程序要能输入数据,输出数据C++的输入输出可以调用预定义的功能模块实现程序的执行流程不总是顺序的因此程序要能够对执行流程进行选择(选择/开关语句)反复用同一算法依次处理大批量数据(循环语句)基本数据类型能表示的有限程序员要能够自定义类型枚举类型通过列出所有可取值来定义一种新类型C++特点和程序实例从C语言发展而来,最初称为带类的C

2021-07-18 17:08:31 505

原创 C++程序设计第一章

C++程序设计第一章计算机语言程序员与计算机沟通的语言描述解决问题的方法和相关数据计算机语言的级别二进制代码得机器语言使用助记符的汇编语言使用类似英语单词和语句的高级语言C++是面向对象的高级语言封装消息通信C++支持的程序设计方法面向过程的程序设计方法面向对象的程序设计方法泛型程序设计方法C++程序的开发过程算法设计源程序编辑编译连接信息在计算机中的表示存储计算机中的数据都是二进制的逻辑数据,字符数据也用二进制码表示计算机系统简介输入设

2021-07-16 14:37:38 166

原创 数据库系统原理第一节

数据库系统原理第一节数据什么是数据?数据是描述事物的符号记录,是指利用物理符号记录下来的,可以鉴别的信息。数据是信息存在的一种形式,只有通过解释或处理的数据才能成为有用的信息。什么是数据库?数据库是指长期储存在计算机中的有组织的,可共享的数据集合。数据要按照一定的数据模型组织,描述和存储,具有较小的冗余度,较高的数据独立性,系统易于扩展,并可以被多个用户分享.数据库的三个特点:永久存储有组织可共享数据库管理系统(DBMS)数据库管理系统 是专门用于建立和管理数据库的一套软件,介

2021-07-15 15:35:50 252

原创 ubuntu20 wsl安装docker

wsl安装dockerwsl 使用的是ubuntu 20的版本,所以可以直接使用apt进行安装,docker官网的安装也是推荐使用的apt进行安装。需要先更新apt安装包sudo apt-get update安装一些依赖sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release添加Docker官方的GPG密钥:curl -fsSL

2021-06-07 16:45:20 783

原创 ubuntu20 wsl 上 OpenResty的安装

OpenResty的安装wsl 使用的是ubuntu 20的版本,所以可以直接使用apt进行安装,OpenResty官网的安装也是推荐使用的apt进行安装。添加openresty的公钥sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates导入 GPG 秘钥wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -添加

2021-06-07 16:44:34 399

原创 ElasticSearch十四--ES-index template 和 aggregation聚合分析

index templateindex templateindex template 可以帮助你设定 Mappings 和 Settins ,并按照一定的规则,自动匹配到新创建的索引上模板仅在一个索引被新创建时,才会产生作用。修改模板不会影响已经创建的索引可以设定多个索引模板,这些设置会根据一定的规则 合并到一起可以指定 Order的数值 控制 合并 的过程实例PUT _template/template_default{ "index_patterns":["*"], "ord

2021-05-09 17:10:11 295

原创 ElasticSearch十三--ES--自定义Analyzer分词器

自定义Analyzer多字段特性实现精确匹配增加一个 keyword 字段使用不同的analyzer不同语言pinyin 字段的搜索还支持为 搜索 和 索引 指定不同的 analyzerExact Values vs Full TextExact Value 包括数字 / 日期 / 具体一个字符串(例如 Apple Store) 精确值 不需要分词ES 中的 keyword全文本,非结构化的文本数据 需要分词ES 中的 text自定义分词当 ES 自带的分词器

2021-05-09 14:41:09 1197

原创 ElasticSearch十二--ES--显式mapping 的设置和各个参数详解

显式mapping设置mapping指令PUT {index}{ "mappings":{ "properties":{ //设置mapping "job_name":{ "type":"text" } } }}自定义Mapping可以参考 API 手册,纯手写也可以复制现有的动态Mapping:创建一个临时的index,写入

2021-05-07 21:38:35 417

空空如也

空空如也

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

TA关注的人

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