自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【JUC】记“Java实现两个线程交替相加1-100”

Synchronized实现一、一些想法1、Sychronized作用:二、完整代码一、一些想法最近看了一些有有关并发下对共享变量操作的博客,总感觉代码要不是重复代码多,要不就是没考虑到wait()被虚假唤醒的问题,考试入门虽然足够,但是多少会有些带偏新人的危险,所以这里记下我的一些想法,希望一起讨论:1、Sychronized作用:二、完整代码public class AlternateAddition { public static volatile int n = 0; p

2021-02-01 15:43:13 635

原创 【UUID】雪花算法及UUID生成策略

雪花算法及UUID生成策略一、UUID:我即是唯一二、SnowFlake算法:想做唯一的那片雪花:三、实际应用中的雪花算法:适合自己的才是最好的:百度(uid-generator)美团(Leaf)一、UUID:我即是唯一UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个

2021-01-20 00:15:07 3751 10

原创 【Java容器】记HashMap的遍历方式

目录分类具体实现:1.迭代器 EntrySet2.迭代器 KeySet3.ForEach EntrySet4.ForEach KeySet5.Lambda6.Streams API 单线程7.Streams API 多线程分类大致来说有以下四种:迭代器(Iterator)方式遍历;For Each 方式遍历;Lambda 表达式遍历(JDK 1.8+);Streams API 遍历(JDK 1.8+)具体实现:1.迭代器 EntrySet Iterator<Map.Entry&

2021-01-19 22:56:50 159

原创 【Java容器】ArrayList扩容机制及源码分析

ArrayList源码分析及扩容机制一、ArrayList介绍:二、ArrayList源码分析:2.1 AL的父亲们:2.2 AL的初始化,你不用就给你个空的:三、ArrayList扩容分析:3.1 add()方法,你用我我才给你开辟空间:3.2 grow() :真正的扩容方法是我:这是总结:一、ArrayList介绍:ArrayList 的底层是数组队列(Object[]),相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。ArrayList 不保证线程安全;在添加大量元素前,应用

2021-01-19 22:47:01 181

原创 【JVM】Java的运行时内存--从GC理解堆

【JVM】JVM的运行时内存一、JVM堆:JVM的运行时内存又叫JVM/JAVA堆,几乎所有的java对象都存放在堆中,而且堆内存是完全自动化管理的,通过垃圾回收机制,垃圾对象会被自动清理,虽然根据垃圾回收算法的不同,堆结构也可能有很大不同,但是最常见的是将堆分为新生代,老生代和永久代。如下图所示:二、新生代,老年代和永久代:1、新生代:JVM新创建的对象(除了大对象)会被存放在新生代,默认占用1/3堆内存空间。由于JVM会频繁创建对象,所以新生代会频繁出发MinorGC进行垃圾回收。新生代又分

2021-01-17 19:12:18 151 2

原创 从消费者生产者模型理解wait()和notify()的用法

从消费者生产者模型理解wait()和notify()的用法首先要明确的一点是wait()和notify()都是在Object类中定义的方法;wait()方法:当一个线程调用一个共享变量的wait()方法时,该线程会被阻塞挂起,知道发生以下事件之一才会返回:1.其他线程调用该共享变量的notify()(随机唤醒一个挂起的线程),notifyALL()(唤醒该由共享变量wait的全部线程);2.其他线程调用了该线程的interrupt()方法,该线程抛出InterruptedException异常;

2021-01-16 22:28:03 122

原创 大数据技术原理与应用课后题(林子雨)

大数据技术原理与应用(林子雨)第1章 大数据概述1单选(2分)第三次信息化浪潮的标志是:A.个人电脑的普及B.云计算、大数据、物联网技术的普及C.虚拟现实技术的普及D.互联网的普及正确答案:B你选对了2单选(2分)就数据的量级而言,1PB数据是多少TB?A.2048B.1000C.512D.1024正确答案:D你选对了3单选(2分)以下关于云计算、大数据和物联网之间的关系,论述错误的是:A.云计算侧重于数据分析B.物联网可以借助于云计算实现海量数据的存储C.物联网可以

2021-01-06 12:10:45 11905 2

原创 后端面试(四)分布式缓存

一、分布式缓存Redis面试:缓存☞将需要频繁访问的数据存放在内存中加快用户访问速度的一种技术。分为进程级缓存和分布式缓存,进程级缓存将数据缓存在服务内部,通过Map,List结构实现存储;分布式缓存将缓存单独存放在分布式系统中,以便于缓存的统一管理和存取;1、介绍一下Redis:redis(Remote Dictionary Server远程字典服务),是一款高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。因为数据都在内存中,所以运行速度快。redis支持

2021-01-03 18:21:50 273

原创 后端面试(三)数据库

数据库常见面试题:1、Mysql引擎有哪些:MyISAM:MySQL的默认存储引擎,不支持数据库事务,不支持行级锁和外键,所以在INSERT和UPDATE的时候会锁住整个表,效率较低;MYSIAM的特点是执行读取速度快,占用内存和存储资源较少。InnoDB:提供了事务支持、回滚、崩溃修复能力、多版本并发控制、事务安全的操作。InnoDB默认底层存储结构是B+树;区别:MyISAM不支持事务;InnoDB是事务类型的存储引擎。MyISAM只支持表级锁;InnoDB支持行级锁和表级锁,默认

2021-01-03 18:20:13 282

原创 后端面试(二)操作系统

操作系统相关:1、进程和线程的概念和区别:进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。根本区别:进程是操作系

2021-01-03 18:08:06 195

原创 后端面试(一)计算机网络相关

计算机网路常见面试题:1、三次握手和四次挥手:字段含义URG紧急指针是否有效。为1,表示某一位需要被优先处理ACK确认号是否有效,一般置为1。PSH提示接收端应用程序立即从TCP缓冲区把数据读走。RST对方要求重新建立连接,复位。SYN请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1FIN希望断开连接。四次挥手过程:三次握手过程:引申问题:2、三次握手可以改为两次吗,为什么:不可以;防止已经失效的请

2021-01-03 18:05:52 531 1

原创 AS3.X Gradle构建中:No cached version available for offline mode解决

Gradle构建中:No cached version available for offline mode解决AS3.X之后的offine Mode(离线模式)从setting中移到了这里:如果构建慢的话,可以把build.gradle改成这个:// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositori

2020-07-24 22:40:31 10017

原创 数据结构5_队列的实现和基本操作

数据结构6_列表的概念与基本操作队列:队列是一种先进先出(First In First Out,FIFO)的操作受限的线性表,只能在两端操作,一端只能进叫做队尾(rear),一端只能出叫做队头(front)。和栈相似,队列可以用顺序存储也可以用链式存储;可以把队列想象成一个购票队伍,买完票的总是先离开队列,这也是队列这个称谓的由来;1. 顺序队列:顺序队列用一段连续的空间存储数据元素;...

2020-04-10 16:54:16 970

原创 python+opencv车道线检测(简易实现)

python+opencv车道线检测(简易实现)技术栈:python+opencv实现思路:canny边缘检测获取图中的边缘信息;霍夫变换寻找图中直线;绘制梯形感兴趣区域获得车前范围;得到并绘制车道线;效果展示:代码实现:import cv2import numpy as npdef canny(): gray = cv2.cvtColor(lane_ima...

2020-04-10 09:56:50 8301 2

原创 数据结构4_栈的c语言实现及基本操作

数据结构4_栈栈:栈是一种先进先出(Last in First out,LIFO)的操作受限的线性表,只能在一端进出操作,可以进出的一端称为栈顶(top),另一端称为栈底(base)。栈也是以用顺序存储和链式存储两种方式存储;1 顺序栈:1.1 结构体定义:动态分配:typedef struct SqStack{ ElemType *base;//栈底指针 ElemType *...

2020-04-09 09:44:26 548

原创 数据结构3_线性表_双向链表

数据结构3_线性表_3总览:线性表:线性表是具有相同数据类型的n(n>=0)个数据元素的有序序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,其一般表示为:L=(a1,a2,a3,a4,∗∗∗,an)L = (a1,a2,a3,a4,***,an)L=(a1,a2,a3,a4,∗∗∗,an)a1为表头元素,an为表尾元素,除了an其他元素都有唯一的直接后继,除...

2020-04-09 09:41:59 276

原创 数据结构3_线性表 _单链表的基本操作及实现

数据结构3_线性表_2总览:线性表:线性表是具有相同数据类型的n(n>=0)个数据元素的有序序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,其一般表示为:L=(a1,a2,a3,a4,∗∗∗,an)L = (a1,a2,a3,a4,***,an)L=(a1,a2,a3,a4,∗∗∗,an)a1为表头元素,an为表尾元素,除了an其他元素都有唯一的直接后继,除...

2020-04-09 09:34:34 1634

原创 数据结构3_线性表_顺序表的基本操作及实现

数据结构3_线性表_1总览:线性表:线性表是具有相同数据类型的n(n>=0)个数据元素的有序序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,其一般表示为:L=(a1,a2,a3,a4,∗∗∗,an)L = (a1,a2,a3,a4,***,an)L=(a1,a2,a3,a4,∗∗∗,an)a1为表头元素,an为表尾元素,除了an其他元素都有唯一的直接后继,除...

2020-04-09 09:25:01 672

原创 数据结构2_算法和算法评价

数据结构2_算法和算法评价1. 算法:算法:对特定问题的求解步骤的一种描述算法的特性:有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止;确定性:每条语句有确定的含义,无歧义可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现输入和输出:有零个输入或多个输入,一个或多个输出2. 优秀算法的标准:正确性:算法能够满足具体问题的需求...

2020-04-09 09:18:21 406

原创 数据结构1_数据结构简介及分类

数据结构1_绪论1. 前言:数据结构+算法 = 程序 ——Niklaus Wirth教授数据结构:如何将数据结构存储在计算机当中;(骨架)​ 数据:一切能输入到计算机当中的信息的总和;​ 结构:数据之间的关系;算法:用什么方法和策略解决问题;(灵魂)2. 数据结构的基本概念:数据:数据是信息的载体,是藐视客观事物的数、字符以及所有能输入到计算机中并被计算机程序识别和处...

2020-04-09 09:14:07 645

原创 Kotlin-改良的java(四)

Kotlin-改良的java(四)20天打卡计划 day04Kotlin-核心语法:for语句的优化与拓展:几个for循环的实例:for(i in 1..10){ println(i)}for(i in 1..10 step 2){ println(i)}for(i in 10 downTo 1 step 2){ //逆序 println(i)}for(i in...

2020-02-29 22:05:40 104

原创 Kotlin-改良的java(三)

Kotlin-改良的java(三)20天打卡计划 day03Kotlin-核心语法:面向表达式编程:表达式也是Kotlin中的重要概念,我们之前学过Lambda表达式,if表达式,函数体表达式等牛逼哄哄的表达式,这节重点介绍一下表达式的重要性,利用表达式来增强程序表达;表达式定义:表达式可以是一个值,常量,变量,操作符,函数,或者他们之间的组合,编程语言对其进行解释和计算,以求产生另...

2020-02-28 21:13:53 179

原创 Kotlin-改良的java(二)

Kotlin-改良的java(二)20天打卡计划 day02Kotlin-核心语法:匿名函数:对于上一篇最后的引用·函数表达方式还是不方便,因为我们每添加一个筛选需求就要在test类中增加一个筛选的方法,这对于追求语法简洁的Kotlin来说显然是不合理的,在Java中有匿名类来优化对象的创建,相应的,Kotlin引入了匿名函数(没有函数名的函数)来对程序作进一步优化:App.findU...

2020-02-27 21:47:55 157

原创 Kotlin-改良的Java(一)

Kotlin-改良的java(一)20天打卡计划 day01Kotlin-改良的Java​ 2010年,创造了pycharm和IDEA的大名鼎鼎的语言构建开发工具的JetBrains产生了改良Java这门主流编程语言的想法,设计之初的第一个问题就是兼容数百万行的Java代码库,这个背景也决定了Kotlin的核心目标——为Java程序员提供一门更好的编程语言(better Java—更好的J...

2020-02-26 16:09:23 360

原创 MyBatis延迟加载实例

MyBatis优化之延迟加载实例什么是延迟加载:​ 在MyBatis中经常会进行多表查询,但是有的时候不会立即用到所有的联合查询结果。例如查询一个游戏玩家的基本信息,这个时候并不会去用这个玩家个人仓库里的物品列表,等到玩家去交易或者取/拿物品时才会查询,这种按需查询的机制就是延迟加载,合理利用延迟加载可以大大提高系统的查询效率;如何实现:​ 首先我们要在MyBatis的全局配置settin...

2020-02-22 19:48:18 380

原创 各大搜索引擎链接提交入口(增加CSDN文章,个人站点,博客,视频等访问量)

搜索链接提交入口:链接提交工具是网站主动向搜索引擎提交推送数据的工具,会加快爬虫发现网站链接时间,增加站点被访问到的概率,进而增加访问量。(管他有用么用,都提交了也没坏处啊狗头保命)百度提交入口:点击进入百度入口搜狗提交入口:点击进入搜狗入口360提交入口:点击进入360入口Bing提交入口:点击进入必应入口谷歌提交入口(听说谷歌的收录速度很快,不需要手动提交):点击进入...

2020-02-17 20:46:16 783

原创 mybatis配置文件超详细解析

SSM学习之MyBatis配置文件详解(超详细)1 SqlMapConfig配置文件详解:1.1 SqlMapConfig核心配置信息​ MyBatis最重要,最核心的全局配置文件就是SqlMapConfig.xml,其中不仅包含了数据库连接信息,同时还包含了Mapper映射文件的加载路径、全局参数以及类型别名等一系列MaBatis的核心配置信息:配置名称配置含义配置简介...

2020-02-17 20:19:07 404

原创 maven从入门到实战(IDEA)版本

maven从入门到实战(IDEA)版本1. Maven简介:1.1 何为Maven:​ Maven可以翻译为“知识的积累”,也可以翻译为“专家”或者“内行”。是一款跨平台的主要服务于基于Java平台的项目管理工具,主要功能又项目构建,依赖管理和项目信息管理。项目构建:Maven能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包部署,我们不需要也不应该一遍一遍地输入命令,点击...

2020-02-15 19:34:09 140

原创 SSM框架之Mybatis入门

SSM框架之Mybatis学习(一)何为框架:​ 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别 人搭好的舞台,你来做表演。而且,框架一般是成熟的...

2020-02-14 22:28:20 293

空空如也

空空如也

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

TA关注的人

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