自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

STILLxjy

戒急戒躁,厚积薄发。

  • 博客(473)
  • 资源 (2)
  • 收藏
  • 关注

原创 (Redis) RDB与AOP持久化的实现与本质区别

Redis服务器Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 例如,下图就是一个包含三个数据库以及数据控中的键值对的服务器的数据库状态。Redis是内存数据库,它将自己的数据库状态存在内存中,所以如果不想办法将存储在内存中的数据库状态保存在磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。RDB持久化Redis提供了RDB持久化功能,可以将Redis内

2021-01-09 15:37:11 677

原创 (Redis) 跳跃表(skiplist)实现原理

跳跃表简介跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。以下是个典型的跳跃表例子(图片来自维基百科):有序链表如下图所有,有一个有序(按score从小到大排序)双向

2021-01-05 22:41:52 579 1

原创 (Mysql) 事务隔离级别

事前准备为了故事的顺利发展,我们需要创建一个表:然后向这个表里插入一条数据:INSERT INTO hero VALUES(1, ‘刘备’, ‘蜀’);现在表里的数据就是这样的:事务隔离级别我们知道MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理多个事务。在事务

2021-01-04 21:20:38 284

原创 (Mysql) 事务简介

事务简介对于大部分程序员来说,他们的任务就是把现实世界的业务场景映射到数据库世界。比如银行为了存储人们的账户信息会建立一个account表:狗哥和猫爷是一对好基友,他们都到银行开一个账户,他们在现实世界中拥有的资产就会体现在数据库世界的account表中。比如现在狗哥有11元,猫爷只有2元,那么现实中的这个情况映射到数据库的account表就是这样:在某个特定的时刻,狗哥猫爷这些家伙在银行所拥有的资产是一个特定的值,这些特定的值也可以被描述为账户在这个特定的时刻现实世界的一个状态。随着时间的流逝,

2021-01-04 20:58:27 145

原创 (Mysql) MVCC多版本并发控制原理详解

版本链我们创建一个hero表:CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number)) Engine=InnoDB CHARSET=utf8;然后向这个表里插入一条数据:INSERT INTO hero VALUES(1, ‘刘备’, ‘蜀’);现在表里的数据就是这样的:对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中除了包含用户定义的列外,还包含两个必

2021-01-04 20:16:41 867

原创 (MySql) InnoDB索引的本质和快速查询过程

本文涉及的范围包括:1:到底什么是InnoDB引擎的索引,它的本质是什么,是如何实现的,实现的思路是什么?2:根据索引的实现思路,当我们要查询一条数据(行记录)时,查询语句的查询过程是什么?说到数据库引擎的索引,我们都知道它的作用是提高数据的查询速度,即在成千上万条记录中,如何快速的找到我们需要的数据?要搞清楚这个过程,首先我们需要搞懂,我们插入到数据库中的数据是如何存储和表示的。InnoDB行格式:一条数据是如何存储的InnoDB定义了4中行格式:COMPACT行格式,Redundant行格式,

2020-12-21 20:58:46 1379 1

原创 (LeetCode 069) x的平方根 【分析一道简单题,避免二分查找中死循环的写法】

题目:69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。来源:力扣(LeetCode)分析:题目很简单,很容易就想到使用二分查找。答案区间为 [left, right], 并且 mid = (left + right) >>>1更新条件为:if(mid * mid > x) right = mid - 1;else left = mid;上

2020-12-07 16:32:54 143

原创 Jetson nano sudo运行vncserver后导致Ubuntu循环登录

今早在jetson nano上安装vncserver后,重启后出现了循环登录的问题。输入密码后黑屏,然后需要再次输入密码。。。问题是因为 :~/下的 .ICEauthority文件的owner被修改为了root解决方案:1:开机后,在登录页面按 Ctrl+Alt+f1 (到底是f?大家可以自己多试试)进入文本模式2:然后依次输入用户名和密码,就可以进入控制台了。3:可以在 /home/xjy 目录下使用以下命令查看文件的详细信息:stat .ICEauthority如果owner和group

2020-12-03 19:34:33 532

原创 小偷能获取的最大金额 & 环形小区 [分类讨论第一家是否能偷]

题目有一个环形的小区,每家有一定的金额,使用nums[]数组表示,小偷进了小区进行偷取。小偷偷了一家后,与这家相邻的家就不能再偷了,请问小偷能偷取的最大金额是多少?思路若小区只是一排,那题目就简单了,简单dp即可。dp[i][0] 表示不偷取第i家,在前i家中可偷取的最大金额dp[i][1] 表示偷取第i家,在前i家中可偷取的最大金额那么可得:dp[i][0] = max(dp[i-1][0], dp[i-1[1])dp[i][1] = dp[i-1][0] + nums[i]现在由于是

2020-11-19 12:29:49 511 1

原创 (ByteDance)求全排列

字节面试二面算法题。题目:求无重复数组的求排列。思路是由dfs算法,每次从数组中取出一个没有被取出的数(即f[i] == 0),但取出所有数时,得到一种排列方式。回溯时,还原f[i] 的状态,删除当前列表中的最后的元素。代码package com.STILLxjy.codedance;import java.util.ArrayList;import java.util.List;public class permute { public static void main(S

2020-11-19 09:30:29 193

原创 (ByteDance)找出两人共同的工作空闲时间段 [区间合并]

字节跳动二面算法题。Input:有两名员工A和B,A的上班时间为A’s available time is from 8:00 to 19:00,A在上班时间内有会议的时间段分别为:schedule is [8:30, 11:30], [12:30, 14:00], [17:00, 18:00]B的上班时间为B’s available time is from 10:00 to 20:00,B在上班时间内有会议的时间段分别为:schedule is [10:00, 11:00], [13

2020-11-19 09:20:07 814

转载 即生瑜,何生亮— MAC 地址与IP地址

在教计算机网络课程中,经常会碰到这样的问题,为什么需要两个地址:一个是MAC(物理地址),另一个是IP地址。各种解释都有,基本上一个观点就是一个是物理地址,一个是逻辑地址。然而,这样的解释太抽象,什么是物理,什么是逻辑。这些抽象的表述会让人无法理解到其本质。下面我就谈谈这个问题。要想说明这个问题,首先得说说计算机网络的目标是什么。计算机网络的根本目标就是将数据从一点传送到另外一点。听起来很简单,但是里面包含的意思很多。例如,两个点之间是在同一个网络还是跨网络连接的,如何才能将数据正确的传送到对方,如果出现

2020-10-06 20:50:37 251

原创 (LeetCode 003)无重复字符的最长子串 [滑动窗口(队列) + HashMap]

问题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路:这道题主要用到思路是:滑动窗口 什么是滑动窗口?其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!如何移动?我们对于上述情况只要把队列的左边的元素移出就行了,对于一般情况,

2020-09-29 10:39:59 171

原创 [面试总结] 归并排序 (分治法+后序遍历)

归并排序的核心思想是:分治当我们要排序一个数组时,我们首先将这个数组拆分成两半,想办法将这两个子数组进行排序,然后再将这两个有序的子数组合并为一个有序的数组。而对于两个子数组而言,我们依然先将其拆分,再将其子有序数组进行合并。因此归并排序的算法实现分为两步:拆分 + 合并。并且是先拆分,再合并。由于当一个数组的大小为1时,那它就是有序的,不用进行排序了。所以在一直往下进行拆分时,当拆分为大小为1时,就停止拆分,然后开始逐层往上进行合并,将两个有序的子数组合并为一个有序的数组。例如我们要将下列数组进

2020-09-28 19:28:11 311

原创 [面试总结] 快速排序 (两种实现思路)

快速排序算法的核心是:每次将一个选定的基准数挪到待排序列中的某一位置(假设为位置K),使得以K为分界点,左边的数都小于等于基准数,右边的数都大于等于基准数。 然后以K为分界点,递归操作序列[0, K-1] 和 序列[K+1, n]。假设我们现在对 “6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为 基准数 (就是一个用来参照的数),为了方便,就让 第一个数 6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基

2020-09-28 15:19:07 412

原创 (LeetCode 002) 两数相加 [链表模拟两数相加]

2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https://

2020-09-24 12:54:24 150

原创 (LeetCode 001)两数之和 [HashMap查询O(1)]

1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum暴力

2020-09-24 11:31:37 194

原创 [Java] 自定义验证码

效果展示:HTML代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Register</title> <script> window.onload = function(){ //获取图片对象 var img = document.ge

2020-07-09 16:14:05 150

原创 [Java 反射:框架设计的灵魂] 基于自定义注解,实现在不改变任何代码的前提下,可以创建任意对象,并执行任意方法

目录需求步骤实现需求实现一个“框架”类,在不改变任何代码的前提下,可以创建任意对象,并执行任意方法。步骤获取注解定义的位置的对象 (Class, Method, Field)获取指定的注解:getAnnotation(Class)调用注解中的抽象方法获取配置的属性值实现1:自定义一个名为Pro的注解类,包括抽象方法:className()methodName()2:实现框架类其中://2 获取类上的注解对象Pro an = reflectTest2Class.getAnn

2020-06-16 22:07:28 286

原创 [Java 反射:框架设计的灵魂] 基于配置文件,实现在不改变任何代码的前提下,可以创建任意对象,并执行任意方法

目录反射:基础概念获取Class对象的方法Class对象功能案例(反射的魅力)反射:基础概念框架:半成品软件。反射:将类的各个组成部分封装为其他对象,这就是反射机制。光看概念可能不太好理解,我们先来看看java代码的三个阶段:源代码阶段Class类对象阶段运行时阶段如上图,两个红色框中的内容。将javac编译获得的字节码文件加载进内存,并将类中定义的 成员变量,构造函数,成员方法 分别封装为 Field Constructor Method对象。这就是放射机制。好处:可以在程序运

2020-06-16 15:00:57 302

原创 [Spring XML] spring中基于XML的声明式事务控制配置步骤

目录1、配置事务管理器2、配置事务的通知3、配置AOP中的通用切入点表达式4、建立事务通知和切入点表达式的对应关系5、配置事务的属性1、配置事务管理器2、配置事务的通知此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的使用tx:advice标签配置事务通知属性:id:给事务通知起一个唯一标识transaction-manager:给事务通知提供一个事务管理器引用3、配置AOP中的通用切入点表达式4、建立事务通知和切入点表达式的对应关系5、配置事务的属性是在事务的

2020-06-05 16:17:04 205

原创 [Spring XML] JdbcTemplate的使用方法详解

目录JdbcTemplate的基本使用方法JdbcTemplate基于Spring IOC的使用方法JdbcTemplate的CRUDJdbcTemplate基于持久层的使用JdbcDaoSupport的使用JdbcTemplate的基本使用方法1:数据库账户表信息2:账户实体类3:向账户表中添加一条新数据JdbcTemplate基于Spring IOC的使用方法1.添加bean.xml文件2:基于spring IOC容器获取JdbcTemplate对象,并执行添加语句JdbcT

2020-06-04 06:33:50 414

原创 [Spring XML] 手动实现动态代理:在不修改源码的情况下,对方法进行增强

目录代理(Proxy)的含义实现动态代理:实现基本业务代码基于接口的动态代理对方法进行修改(增强)基于子类的动态代理对方法进行修改(增强)代理(Proxy)的含义如上图所示,很久以前我们我们购买商品的方式是:消费者直接与产品生产厂家联系,厂家负责生产、销售、存储、售后等服务。这种模式下,生产厂家的工作十分的繁重且经营成本非常高。代理商/经销商的出现,极大的降低了生产厂家的成本。生产厂家只需要和固定的几个代理商达成合作关系即可,之后的销售工作都由代理商来(中介)完成。例如:一个生产电脑的厂商,它

2020-05-31 12:37:33 558

原创 [Spring XML] (二)Spring的控制反转(IoC)与依赖注入(Dependency Injection)

Spring的控制反转与依赖注入Spring的控制反转使用Spring框架创建对象Spring的依赖注入Spring的控制反转在使用工厂模式降低程序的耦合性博客中,我们已经实现了使用工厂模式来降低程序类之间的耦合性。原来: 我们在获取对象时,都是采用 new 的方式。 是主动的。现在: 我们获取对象时,跟工厂要,有工厂为我们查找或者创建对象。 是被动的。这种被动接收的方式获取对象的思想就是控制反转,它是 spring 框架的核心之一。使用Spring框架创建对象那么我们如何使用sprin

2020-05-24 23:19:32 183

原创 [Spring XML] (一)手动实现工厂模式解耦,降低程序的耦合性

使用工厂模式降低程序的耦合性传统MVC开发模式中的强耦合性问题使用工厂模式降低程序的耦合性工厂模式的优化:使用单例模式传统方式和工厂模式方法的对比图传统MVC开发模式中的强耦合性问题在传统的mvc开发模式中,自顶向下会分为:表现层,业务层和持久层。在类中存在相互的调用关系,比如:表现层调用业务层的对象,业务层会调用持久层的对象。如下图所示:如图所示,我们在表现层 new 了一个业务层的对象,在业务层 new 了一个持久层的对象。这样使得这3个类之间拥有很强的依赖关系(耦合性),没有Accoun

2020-05-24 22:06:13 459 2

原创 [Mybatis 注解开发] (三)延迟加载与多表查询

Mybatis 注解开发(三)延迟加载实现多表查询并使用延迟加载查询所有账户,并获取账户所属的用户信息查询所有用户,并显示用户拥有的所有账户信息,延迟加载(使用时才加载)下载本博客源代码文件提起码:4ym5延迟加载数据表存在四中对应关系:一对多:一个用户拥有多个账户多对一:多个账户属于一个用户一对一:每个用户对应一个身份证号多对多:一个用户可以有多个社会身份,一个社会身份可以赋予多个用户在mybatis中,多对一和一对一是一样的,因为如果将每个账户(按时间)细分的话,每个特定账户对应一

2020-05-19 13:54:09 329 1

原创 [Mybatis 注解开发] (二)建立实体类属性和数据库表中列名的对应关系

(二)建立实体类属性和数据库表中列名的对应关系问题配置环境添加实体类属性和数据库表中列名的对应关系测试问题[Mybatis 注解开发] (一)环境搭建与基本CRUD操作中我们限定,使User类的属性名和数据库列名相同。这样当执行查询方法后,mybatis会使用数据库的列名,在User类中找到相应的set方法,然后将获取到的信息封装到类对象对应的属性中。因为属性名和数据库列名相同,则不会出错。但是在实际开发中,我们会按照java的命名方式(驼峰式)来给类的属性命名。为了得到一样的执行的效果,我们就

2020-05-19 02:13:45 1713

原创 [Mybatis 注解开发] (一)环境搭建与基本CRUD操作

Mybatis注解开发环境搭建1.建立数据库2.搭建环境1.在IDEA中创建Maven工程2.添加坐标3.创建User实体4.创建持久层接口 IUserDao5.配置mybatis主配置文件:SqlMapConfig.xml5.1添加xml文件的约束5.2配置数据库连接信息5.3配置别名5.4指定带注解的dao接口的位置6.测试环境3.mybatis注解开发的CRUD操作3.1 添加操作(Create)3.2 读取操作(Retrieve)3.3 更新操作(Update)3.4 删除操作(Delete)3.4

2020-05-19 01:22:01 295

原创 [Object Detection] From YOLO to YOLO3

2020-05-07 15:19:11 167

原创 [javascript] 实现二级联动菜单

效果演示:HTML代码:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> &...

2020-05-01 04:08:15 361

原创 [javascript] 表格间隔颜色显示,高亮,复选框全选,删除选中项

效果演示:HTML代码:table.csstable{ border:#249bdb 1px solid; width:500px; border-collapse:collapse;}table td{ border:#249bdb 1px solid; padding:10px;}table th{ border:#249bdb 1px solid; padd...

2020-04-30 14:27:51 204

原创 [Object Detection] From R-CNN/Fast R-CNN/Faster R-CNN to YOLO(You Only Look Once)

2020-04-09 15:07:50 168

原创 [java] 自定义web浏览器客户端和服务器通讯原理-Socket-ServerSocket

客户端服务器通讯原理自定义web浏览器客户端:自定义本地服务器:操作流程:总结:自定义命令行界面的IE浏览器:浏览器get和post两种提交方式的区别:自定义web浏览器客户端:我们自定义一个注册表单页面:源代码:<form action="http://192.168.43.237:9090" method="post"> <table border="2" bor...

2020-04-05 17:12:38 550

原创 HTML标签大全

HTML标签列表标签:有序列表和无序列表:表格标签:图片标签:超链接标签: 画中画标签: 框架标签: 表单标签: 其他标签: 超链接顶部位置列表标签:<!--HTML注释:列表标签,可用于做目录等 列表标签:<dl> (define list) 上层项目:<dt> (define title) 下层项目:<dd> (define d...

2020-04-05 16:28:50 8333 5

原创 [java] 网页爬虫-爬取网页中的邮箱信息

代码:import java.io.*;import java.util.regex.*;import java.net.*;class Spiders { public static void main(String[] args) throws Exception { getMai1s(); } public static void getMai1s() throws...

2020-04-02 17:51:18 841 2

原创 A New Day Has Come

A New Day Has Come歌手:Celine DionA New Day Has Come新的一天已经来临I was waiting for so long漫长等待For a miracle to come等待奇迹的出现Everyone told me to be strong大家告诉我要坚强Hold on and dont shed a tear坚定意志,不要把泪...

2020-04-02 17:32:25 304

原创 [正则表达式] 一文详解正则表达式(入门)-匹配-分割-替换-获取-

正则表达式正则表达式的定义正则表达式对比实例QQ号校验规则总结字符类预定义字符类:数量词:按照操作字符串的功能来分类讲解正则表达式的使用规则。功能1:字符串匹配功能2:字符串切割功能3:替换字符串功能4:获取,将字符串中符合规则的子串获取出来。测试代码正则表达式的定义正则表达式:符合一定规则的字符串表达式。|–作用:用于专门操作字符串。|–特点:用一些特定的符号来表示一些代码操作,简化书...

2020-04-01 22:41:06 703

原创 [java 网络编程] 使用UDP协议进行网络数据通讯

使用UDP协议进行网络数据通讯UDP数据发送端UDP数据接收端测试UDP数据发送端需求:通过udp传输方式,将一段文字数据发送出去。思路:建立udpsocket服务,可为发送网络应用程序指定一个端口:8888提供数据,并将数据封装到数据包中通过socket服务的发送功能,将数据发出去关闭资源import java.net.*;class UdpSend { publi...

2020-03-23 17:48:54 247

原创 (LeetCode 338)比特位计数 [分类讨论 + DP]

338. 比特位计数给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]来源:力扣(LeetCode)分析:由二进制计数特点可知,一个二进制数 i 右移一位可以得到 i整除2 之后的值。例如 4/2=2,...

2019-10-23 11:15:37 177

原创 (LeetCode 343)正数拆分 [简单dp]

题目:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。分析:设dp[i]表示正数i拆分可以获得的最大值。数 i 可以被分为 j 和 i-j 两部分,并且都比 i 小。所以dp[i] 为这两部分的最大值的乘积。由于i 已经分为了两部分,所以对于 j 和 i-j 而言,它们有两种选择,以j 为例:1:不再拆分,值为他们本身 j。2...

2019-10-02 00:04:30 184

机器学习实战配套文件与代码

机器学习实战数据配套的文件和代码

2019-05-22

[NLP] 动手实现邮件分类算法博客对应的数据集

[NLP] 动手实现邮件分类算法博客对应的数据集

2019-05-09

空空如也

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

TA关注的人

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