自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 蛇形矩阵

蛇形矩阵题目地址:https://www.acwing.com/problem/content/758/输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1 ≤ n,m ≤ 1001 ≤ n,m ≤ 100输入样例:3 3输出样例:1 2 38 9 47 6 5对于这一类问题,我们可能首

2021-01-13 23:17:48 431

原创 敏感词过滤的实现

敏感词过滤最近在做一个项目的过程中正好遇到了敏感词过滤这一功能,由于这个功能应用广泛,就记录下来以便日后复习。设计敏感词过滤可以通过Trie树来实现,即我们所说的前缀树/字典树。Trie树Trie树也称为前缀树、字典树,最大的特点就是共享字符串的公共前缀来达到节省空间的目的了。Trie树的根节点不存任何数据,每整个个分支代表一个完整的字符串。Trie 树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。举个简单的例子来说明一下。我们有 6 个字符串,它们分别是:how,hi,he

2020-12-21 20:29:56 1036

原创 LeetCode刷题汇总(停止更新)

本篇是记录本人在刷leetcode过程中的题解及经验总结,望读者善用Ctrl + F。数组篇删除排序数组中的重复项题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array解题核心思想:双指针。注意本题目的数组是有序的,这就说明重复的元素必然相邻。题目要求不使用额外空间删除重复项,那么就说明这一题我们可以把不重复的元素都挪到数组的左边,最后返回不重复元素的个数即可。解法:定义一个指针 p 指向数组第一

2020-10-29 22:25:25 480

原创 MySQL日志系统

MySQL日志系统上面说的是查询语句的流程,而对于更新语句,流程也是一样的。不过与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:**redo log(重做日志)**和 binlog(归档日志)。下面以这个sql更新语句为例:mysql> update T set c=c+1 where ID=2;redo logredo log(重做日志) 是InnoDB引擎所特有的日志。这里丁奇大佬打的比方就很好:不知道你还记不记得《孔乙己》这篇文章,酒店掌柜

2020-10-29 22:22:41 151

原创 MySQL基础架构

本篇为学习极客时间专栏《MySQL45讲》以及敖丙的技术文章时所记录的笔记,希望能有所帮助。MySQL基础架构首先给出MySQL的基础架构:整体来说:Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存

2020-10-29 22:21:35 102

原创 一文搞懂TCP三次握手和四次挥手

好吧我承认确实有点标题党,不过本文是在我学习了很多博客和书籍后写出来的,希望有所帮助。TCPTCP头部的报文结构序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。确认号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。序号是本TCP报文数据部分的首字节序号,确认号是成功接收别人的TCP报文,并期待接收的下一个TCP报文中数据部分的首字节的序号。TCP FlagsURG:紧急指针标志AC

2020-10-29 22:16:20 961 1

原创 快速排序和归并排序

快速排序快速排序的核心思想是分治,其算法大体可分为三个部分:确定一个分界点 pivot (这个分界点可以任取,一般来说取左端点或中间端点);调整区间,将小于 pivot 的数和大于 pivot 的数分开;递归处小于 pivot 和大于 pivot 的部分。这里我们用到了双指针,即在待排序数组的两端定义两个指针 i 和 j ,i 不断向右移动直到 q[i] > pivot,j 不断向左移动直到 q[j] < pivot,这时将 q[i] 和 q[j] 交换,之后递归进行处理。这样处

2020-09-18 22:18:08 211

原创 关于@RequestParam

@RequestParam@RequestParam 用来映射请求参数。@RequestParam 用于将请求参数区数据映射到功能处理方法的参数上。比如我们的请求地址为:localhost:8001/test?name=xxx&age=xxx如果我们使用了 @RequestParam :@RequestMapping("/test")public String test(@RequestParam(value = "name", defaultValue = "zhangSan") St

2020-07-15 20:10:07 223

原创 Mybats(七)缓存

缓存MyBatis缓存介绍正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持1.一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。2.二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehca

2020-06-16 09:18:56 164

原创 Mybatis(六)动态SQL

什么是动态SQL?动态SQL就是根据不同的条件生成不同的语句。环境搭建数据库:mysql> select * from blog;+----+-----------------+-----------------+---------------------+-------+| id | title | author | create_time | views |+----+-----------------+-------------

2020-06-16 09:18:19 145

原创 Mybatis(五)一对多和多对一

多对一处理测试环境1.导入Lombok2.新建实体类Teacher,Student3.建立TeacherMapper,StudentMapper接口4.建立TeacherMapper.xml,StudentMapper.xml文件5.在核心配置文件中绑定我们的Mapper接口或xml文件6.测试这是创建的两个表:mysql> select * from teacher;+----+----------+| id | name |+----+----------+|

2020-06-16 09:17:35 124

原创 Mybatis(四)分页和注解

分页分页是为了减少数据处理量。Limit实现分页语法:select * from user limit startIndex,pageSize使用Mybatis实现分页:1.接口List<User> getUserByLimit(Map<String,Integer> map);2.UserMapper.xml<select id="getUserByLimit" parameterType="map" resultType="com.skdjq.pojo

2020-06-16 09:16:41 561

原创 Mybatis(三)Log4j

日志工厂配置日志:标准的日志工厂实现:在mybatis-config.xml文件中添加如下配置(在下面):<settings> <setting name="logImpl" value="STDOUT_LOGGING"/></settings>LOG4J实现(推荐):1.要使用log4j,首先需要在maven中导入对应的Log4j依赖:<dependency> <groupId>log4j</groupId&gt

2020-06-16 09:15:55 215

原创 Mybatis(二)属性配置

Mybatis配置解析核心配置文件:mybatis-config.xml属性(properties)在resources目录下新建一个properties文件:driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8username=rootpassword=123456在核心配

2020-06-16 09:15:02 216

原创 Mybatis(一)环境配置和CRUD

什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MybatisUtils这是一个自定义的工具类,获取sqlSession实例化对象的语句为:SqlSession sqlSes

2020-06-16 09:13:40 121

原创 C++学习记录

C++学习记录类和对象类是现实世界或思维世界在实体计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类型的变量。对象是类的实例,类是对象的模板。举一个简单的例子,人类与张三,人类就代表一个类,而张三就是人类里面的一个实例。创建一个类在创建一个类时,我们常采用class+类名创建,如:class Student{ //访问权限 public: //属性 string m_name; int m_age; //行为 void showName() { c

2020-06-06 08:31:23 1576

原创 Java面向对象

(前言)Java 和 C++ 的区别?都是面向对象的语言,都支持封装、继承和多态Java 不提供指针来直接访问内存,程序内存更加安全Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。Java 有自动内存管理机制,不需要程序员手动释放无用内存在 C 语言中,字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束。但是,Java 语言中没有结束符这一概念。 这是一个值得深度思考的问题,具体请看这篇文章。面向对象构造器构造器类似于C++语

2020-06-04 08:45:28 283

原创 Set集合

Set集合Set 集合里面存储的是无序的不重复元素,没有索引,可以采用迭代器和增强for来获取元素,Set 常用的子类有 HashSet、LinkedHashSet 集合,可以通过 equals 方法来判断是否为重复元素。HashSet 集合HashSet 类实现 Set 接口,由哈希表支持(实际上是一个 HashMap 集合),HashSet 集合不能保证迭代顺序与元素存储顺序相同,采用哈希表结构存储数据结构,保证元素唯一性的方式依赖于:hashCode() 和 equals() 方法。特点

2020-06-04 08:44:20 122

原创 List集合

List集合List 是一个接口,是有序的 collection,此接口的用户可以对列表中每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引访问元素,并搜索列表中的元素。List 接口允许存放重复的元素,并且元素都是有序的(Set 接口不允许存放重复元素,元素是无序的)List 接口特点它是一个有序的集合他是一个带索引的集合,通过索引就可以精确地操作集合中的元素(与数组的索引是一个道理)集合中可以有重复的元素,可以通过 equals 方法来比较是否为重复的元素List 接口常用的

2020-06-04 08:42:22 209

原创 Map集合

Map集合Map集合的特点每个元素成对存在,由键和值两部分组成,通过键可以找到对应的值键(key值)不可重复,值(value)可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值两个 Map 接口的重要实现类:HashMap 类、LinkedHashMap 类以学生学号为例,学号就是键,姓名就是值:学号1 姓名1学号2 姓名2学号1(不行) 姓名3学号3

2020-06-04 08:41:37 283

原创 Java多线程

多线程以下是我在学习Java多线程时的一些总结,如有不对敬请指正!进程与线程进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程。多进程操作系统能同时达运行多个进程(程序),由于 CPU 具备分时机制,所以每个进程都能循环获得自己的CPU 时间片。由于 CPU 执行速度非常快,使得所有程序好像是在同时运行一样。多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,

2020-06-04 08:39:57 155

原创 Java常用类

Java常用类Object类toString方法源码分析:public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());}toString 用于返回该对象的字符串表示,它的值等于:getClass()+’@’+Interger.toHexString(hashCode()) 。由于 toString 方法返回的是内存的地址,实际开发中没太大意义,所以我们需要

2020-06-04 08:35:46 500

原创 Java中的并发修改异常

关于并发修改异常问题的剖析迭代器遍历元素的过程中,通过集合是不能修改元素的,否则会出现并发修改异常。(java.util.ConcurrentModificationException)案例:public class demo2 { public static void main(String[] args) { List list = new ArrayList(); list.add("hello"); list.add("world"); list.a

2020-06-04 08:34:27 704

原创 关于泛型的总结

泛型泛型是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。是参数化类型。参数化类型:把类型当作是参数一样传递<数据类型> 只能是引用类型ArrayList<String> list = new ArrayList<String>();Iterator<String> it = list.iterator();泛型的好处:1.避免了强制类型转换;2.把运行期间的问题提前到了编译期间;3.优化了程序设计,解决了黄

2020-06-04 08:31:13 256

原创 dom4j总结

dom4j解析XML文件理论分析一般来说,dom4j解析xml文件分为以下几个步骤:创建解析器得到document文件得到根节点得到标签对标签进行操作在使用dom4j解析XML文件之前,我们须导入dom4j-1.6.1.jar这个jar包。先来说前面三个步骤:创建解析器得到document文件得到根节点这三个基本上是做任何操作都要有的,他们的代码是://创建解析器SAXReader saxReader = new SAXReader();//得到docum

2020-06-03 23:00:28 133

原创 Servlet总结

Servlet总结以下为本人学习Servlet的总结,如有不足或错误敬请指正!配置web.xml在WEB-INF下的web.xml添加如下代码:<!-- servlet标签给tomcat配置servlet程序--><servlet> <!--servlet-name标签给servlet程序起一个别名(一般是类名)--> <servlet-name>servletDemo1</servlet-name> <!--s

2020-06-03 22:59:15 371

原创 break和return的区别

break和return都有中断的功能。break用于中断如switch和for**、while等循环,注意:break不能中止if循环且break在for、while函数中离哪个近且被括起来就中断哪个循环。如for (a=0;a<=1;a++) { printf("....\n"); for(b=0;b<=1;b++) { printf("hhhhhh\n...

2020-03-18 22:25:19 1778

空空如也

空空如也

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

TA关注的人

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