自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go语言实现设计模式之「状态机模式」

实现”进程的三态模型扭转“

2023-02-27 01:43:02 373

原创 Go语言实现设计模式之「策略模式」

简单实现一个策略模式,吃不同的水果。

2023-02-27 01:42:49 220

原创 Go中var、短变量赋值、New 和 Make的区别

分配内存。内存里存的值是对应类型的零值。只有一个参数。参数是分配的内存空间所存储的数据类型,Go语言里的任何类型都可以是new的参数,比如int, 数组,结构体,甚至函数类型都可以。返回的是指针。

2023-02-22 00:26:59 363

原创 五分钟学会Go这个Append内建函数~

如果没有,将分配一个新的底层数组,并且 Append 返回更新后的新的切片。ss3和ss4也指向了同一个数组地址,但是与ss1、ss2不同的是,ss3和ss4是有该数组共享部分的,即元素1,而元素2不属于ss3,即使元素1和2都在该数组里面。不一致,因为ss1与ss2不是一个切片,只能感知到len范围内的元素,ss1包含0个元素,因此ss1输出的是空,ss2输出了元素1。append是golang中的一个内建函数,它的作用是官方的介绍是。另外还有一个值得注意的点是,切片只会感知len范围内数组内容。

2023-02-21 23:50:55 322

原创 new xxx()出来的对象无法调用类中@Autowired注入的Spring Bean 及 原理分析、解决方法

@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注入的Bean。

2021-06-13 00:49:52 3785

原创 Java 算法 刷题 常用API 代码

目录比较器StringStringBuilder数组排序集合框架CollectionListStackQueueDequePriorityQueueSetMap以下为Java常用API(带注释)比较器Comparator<Object> cmp = new Comparator<Object>() { @Override public int compare(Object o1, Obj

2021-03-08 21:17:10 1303

原创 TCP 详解

三次握手TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。Client连接Server:当Client端调用socket函数调用时,相当于Client端产生了一个处于Closed状态的套接字。1)第一次握手:Client端调用 connect 函数调用,系统为Client随机分配一个端口,连同传入connect中的参数(Server的IP 和 端口),这就形成了一个连接四元组。主机A向主机B发送TCP连接请求报文,即客户端发送一个带SYN标志的TCP报文到...

2021-02-26 02:04:27 637

原创 Java——变量定义与赋值 使用连等号的解析 连等赋值问题

在变量定义的时候使用连等号是错误的,而在定义之后使用连等号是正确的。为什么会这样呢定义的时候使用如下的连等号,此时编译器默认此条语句定义了一个变量slow ,并将head地址赋值给res ,又将res赋值给fast ,最后将fast赋值给slow 。由于代码前面并没有定义fast ,res ,head ,故会报错。 ListNode slow = fast = res =head;定义了fast ,res ,head三个变量,下一步再进行赋值。...

2021-02-20 00:20:45 1310 1

原创 力扣——139. 单词拆分,140. 单词拆分 II

目录139. 单词拆分题目题解140. 单词拆分 II题目题解139. 单词拆分题目给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode".

2021-01-25 13:21:36 115

原创 Java 八大基本数据类型的默认值 及其 相关初始化问题分析

八大基本数据类型的默认值boolean falsechar '/uoooo'(null)byte (byte)0short (short)0int 0long 0Lfloat 0.0fdouble 0.0d基本类型数组没有赋值也一样。基本数据类型默认值和初始化问题class TestClass { static double double1; double double2; double[] double4; public static.

2021-01-25 02:21:31 342

原创 Java 集合框架 详解

一、Java 集合框架概述集合框架是一个用来代表和操纵集合的统一架构(java集合框架位于java.util包中)。所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。 算法:是实现集合接口的对象里的.

2021-01-21 17:25:04 903

原创 在 某项目下 某个时间段内 查询某类型传感器下 各个传感器 所有原始数据的最大值最小值

在 某项目下 某个时间段内 查询某类型传感器下 各个传感器 所有原始数据的最大值最小值sensor表(传感器表)sensor_data表(传感器数据表)SELECT id, max( Vx ) AS maxVx, max( Vy ) AS maxVy, max( Vz ) AS maxVz, min( Vx ) AS minVx, min( Vy ) AS minVy, min( Vz ) AS minVz FROM pkg, sensor WHERE id .

2021-01-20 16:59:06 322

原创 统计某一字段下相同值的个数 及 统计A字段下不重复,B字段相同值的个数

目录SQL知识点实例说明(统计各个部门员工的个数)第一种情况,根据员工表查询员工个数(统计某一字段下相同值的个数)第二种情况,根据员工操作数据表查询员工个数(统计A字段下不重复,B字段相同值的个数)SQL知识点统计某一字段下相同值的个数 统计A字段下不重复,B字段相同值的个数实例说明(统计各个部门员工的个数)下面用具体的例子说明:员工表员工操作数据表第一种情况,根据员工表查询员工个数(统计某一字段下相同值的个数)根据下面 员工表 统计各个部..

2021-01-20 16:40:37 1019

转载 深入JVM字节码执行引擎

我们都知道,在当前的Java中(1.0)之后,编译器讲源代码转成字节码,那么字节码如何被执行的呢?这就涉及到了JVM的字节码执行引擎,执行引擎负责具体的代码调用及执行过程。就目前而言,所有的执行引擎的基本一致:输入:字节码文件 处理:字节码解析 输出:执行结果。物理机的执行引擎是由硬件实现的,和物理机的执行过程不同的是虚拟机的执行引擎由于自己实现的。运行时候的栈结构每一个线程都有一个栈,也就是前文中提到的虚拟机栈,栈中的基本元素我们称之为栈帧。栈帧是用于支持虚拟机进行方法调用和方法执行的数

2021-01-16 14:52:19 72

转载 JVM的类加载和字节码执行引擎

在上篇《JVM的Class文件结构》中,简单梳理了Class文件内容,然而这只是一个小小的开始。Class文件只是一个你所编写的程序信息的等价完备的存储,它是死的,若要让它活起来,就需要将Class文件加载到虚拟机中并运行。Class文件的类加载过程是怎样?进入到虚拟机中的Class文件信息又会以什么样的形式存储?虚拟机如何找到应该执行的方法?虚拟机如何执行Class文件中的字节码?这些都是需要思考的问题。一、类加载C/C++在编译时就需要进行连接工作,而在Java里,类型的加载、连接和初始化都

2021-01-16 14:48:09 133

转载 Java程序编译和运行的过程

Java整个编译以及运行的过程如下图,Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言("semi-interpreted" language)。图1 java程序编译运行过程下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如下:...

2021-01-16 14:45:50 144

原创 字节码文件(Class文件)结构解读、理解与分析

字节码什么是字节码?字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。字节是电脑里的数据量单位。字节码文件展示魔数(4个字节 )每个Class文件的头4个字节被称为魔数(Magic Number) , 值为0xCAFEBABE(咖啡宝贝? ),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。版本号(4个字节)紧接着魔数的4个字节存储的是Class文件的版本号: 第5和第6个字节是次版本号(Min

2021-01-16 14:23:58 7269 1

原创 集合迭代器遍历的 快速失败(fail-fast)与 安全失败(fail-safe)

目录一、快速失败(fail—fast)二、安全失败(fail—safe)三、实例说明题外话(关于牛客一道面试题)一、快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会...

2021-01-15 11:53:04 598

转载 原码, 反码, 补码 详解

一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就是机器数。2、真值因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如.

2021-01-05 10:40:59 893

转载 Java负整数的左移、右移、无符号右移

Java负整数的左移、右移、无符号右移。正数的位移没有涉及到符号,而且正数的原码、反码、补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆。Java的<< >> >>> 都是针对补码来进行的,因为Java只存储补码。例如对整数-3进行<< >> >>>运算做说明。整数-3的二进制原码为 10000000 00000000 00000000 00000011反码为1111...

2021-01-04 22:47:39 197

原创 MySQL查询、统计最近30天的数据

统计数据中最近三十天各天个数MySQL统计最近三十天 update_time(更新时间)字段中 各天个数,并将时间转变为 2020-12-02的日期格式SQL代码SELECT COUNT(*),DATE_FORMAT(update_time,'%Y-%m-%d') as time FROM `alarm` where DATE(update_time)>=DATE_SUB(CURDATE(), INTERVAL 29 DAY) GROUP BY time执行结果20...

2020-12-30 21:29:15 9399

原创 子网掩码

掩码掩码是一串二进制代码对目标字段进行位运算,从而获得所需要的二进制代码。子网掩码判断地址192.168.1.1为C类地址,所以采用C类的子网掩码为255.255.255.0,换算为二进制就是11111111.11111111.11111111.00000000。作用使用的IPv4协议对IP地址强行定义了一些保留地址,即:“网络地址”和“广播地址”。所谓“网络地址”就是指“主机号”全为“0”的IP地址,如:125.0.0.0(A类地址);而“广播地址”就是指“主机号”全为“255”时的I

2020-12-18 17:05:16 3977 1

转载 非线性激活函数(为什么需要它、导数、优缺点)

为什么需要非线性激活函数?a=z 叫做线性激活函数 或 恒等激活函数如果使用线性激活函数,那么这个模型的输出不过是你输入特征x的线性组合。神经网络只是把输入线性组合再输出。所以即使你有很多个隐含层,但是你如果使用线性激活函数或者不用激活函数,一直在做的只是计算线性激活函数,所以还不如直接去掉全部隐藏层。所以除非引入非线性,那么无法计算更有趣的函数。只有一个地方可以使用线性激活函数,那就是回归问题。或者在输出层用也是可以的。非线性激活函数导数【基础知识:对于一元二次..

2020-12-17 21:54:51 517

原创 MySQL 查询两个指定时间之间的数据

Controller层 @RequestMapping(value = "/queryTime", method = RequestMethod.POST) public List<Pkg> sensorByTimeQuery(@RequestBody Map<String, Object> params) { String sensorId = (String) params.get("sensorId"); String pr.

2020-12-17 17:25:52 908 2

转载 Java 泛型总结(三):通配符的使用

简介前两篇文章介绍了泛型的基本用法、类型擦除以及泛型数组。在泛型的使用中,还有个重要的东西叫通配符,本文介绍通配符的使用。这个系列的另外两篇文章:Java 泛型总结(一):基本用法与类型擦除 Java 泛型总结(二):泛型与数组数组的协变在了解通配符之前,先来了解一下数组。Java 中的数组是协变的,什么意思?看下面的例子:class Fruit {}class Apple extends Fruit {}class Jonathan extends Apple {}clas

2020-12-13 22:04:41 206

原创 JAVA 通过类属性名称(String)操作属性值

根据属性名获取属性值/** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + fi

2020-12-12 16:25:35 3409

原创 HTTPS与CA认证

1. HTTP 协议在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。1.1 HTTP 协议介绍HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的RFC 2616拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下:请求POST http://www.baidu.co..

2020-12-11 21:19:37 975 1

原创 Java中Comparable和Comparator接口区别 以及 Collections调用重写的compareTo方法 分析

ComparableComparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,“实现Comparable接口的类的Comparable 定义Comparable 接口仅仅只包括.

2020-12-09 16:38:35 378

原创 SpringBoot直接返回字符串中文乱码问题解决

问题SpringBoot直接返回字符串中文乱码问题,如下:向后台上传一个图片并下载保存,返回保存的地址,但是中文出现乱码解决1.使用produces参数,produces ="text/html;charset=utf-8"2.尝试将String类型封装进对象中返回...

2020-12-09 16:31:35 1098

转载 重载和重写 以及 重载的方法不能根据返回类型进行区分

请说明重载(Overload)和重写(Override)的区别。方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载的方法能否根据返回类型进行区分?首先重载是Java多态的

2020-12-07 21:48:47 357

原创 面向对象的“六原则一法则“

单一职责原则- 单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。另一个是模块化,好的自行车是组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装的,好的乒乓球拍也不是成品拍,一定是底板和胶皮可以拆分和自行组装的,一个好的软件系统,它里面的每个功能模块也应该是.

2020-12-07 16:18:51 90

原创 MySQL查近时间范围内的数据

查询一天:select * from table where to_days(update_time) = to_days(now());select * from table where date(update_time) = curdate();查询N天:select * from table where DATE_SUB(CURDATE(), INTERVALNDAY) <= date(update_time);查询一周:select * from table whe..

2020-12-07 10:56:40 285

原创 HashMap 哈希表 原理

HashMap具体的存取过程HashMap原理深入理解https://blog.csdn.net/visant/article/details/80045154哈希表的存储过程(存取原理)https://www.cnblogs.com/z-b-q/p/11641991.html 哈希表的存储过程(存取原理):每存入一个新的元素都要走以下五步  (1)调用对象的hashCode()方法,获得要存储元素的哈希值。(为什么是对象的HashCode()方法??不...

2020-12-06 20:48:36 151

原创 【JAVA面试题】为什么会出现4.0-3.6=0.40000001这种现象?

这种舍入误差的主要原因是:浮点数值采用二进制系统表示, 而在二进制系统中无法精确地表示分数 1/10。这 就好像十进制无法精确地表示分数 1/3—样。如果在数值计算中不允许有任何舍入误差, 就应该使用 BigDecimal类。浮点数值不适用于无法接受舍入误差的金融计算中。例如,命令 System.out.println ( 2.0-1.1 ) 将打印出 0.8999999999999999, 而不是人们想象的 0.9。为什么二进制无法精确表示1/10其实跟数位表示法有关,比如十进制的情况下

2020-12-05 14:16:05 1688

原创 JVM 运行时数据区域

程序计数器程序计数器(Program Counter Register) 是一块较小的(各线程私有的)内存空间, 它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令, 它是程序控制流的指示器, 分支、 循环、 跳转、 异常处理、 线程恢复等基础功能都需要依赖这个计数器来完成。每条线程都需要有一个独立的程序计数器, 各条线程之间计数器互不影响, 独立存储, 我们称这类内存区域为“线程私有”的内存。Java虚...

2020-12-04 21:39:17 84

原创 探究 Serializable接口和serialversionUID 意义及用途

问题描述我们在实体类中实现了Serializable这个接口,那么这个接口到底有什么用?另外还定义了个serialVersionUID变量,这个变量又有什么作用呢?什么是Serializable接口一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。什么是序列化?序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象.

2020-12-04 16:39:18 719

原创 Mybatis的resultMap中各个标签解释

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dao.IRoleDao"> <!--定义role表的ResultMap...

2020-11-23 21:43:34 1581

原创 xml文件配置url时“&”符导致解析错误问题

学习使用mybatis中配置SqlMapConfig.xml文件时配置mysql信息,配置url属性时,&符报错,需要用&amp;来替代<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.d...

2020-11-12 15:44:52 1208 6

原创 Mybatis学习:一、mybatis入门

一、mybatis入门1、什么是框架?它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。2、三层架构表现层:是用于展示数据的业务层:是处理业务需求持久层:是和数据库交互的3、持久层技术解决方案JDBC技术:Connection PreparedStatement ResultSetSpring的JdbcTemplate:Spring中对jdbc的简单封装

2020-10-11 10:27:33 333

原创 Java设计模式——代理模式

UML类图UML—— Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图:使用UML来建模,常用的工具有 Rational rose,也可以使用一些插件来建模,如 AmaterasUMLEclipse安装Amatera

2020-10-09 10:37:08 187

空空如也

空空如也

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

TA关注的人

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