一篇文章带你入门C语言数据结构:绪论

2021-08-02
目录 绪论 什么是数据结构? Example 1 讨论 Example 2 Example 3 Example 4 总结 绪论 什么是数据结构? 不同于计算机操作培训,注意与程序设计的区别. Example 1 求n个数的最大值.次最大值. //1.遍历 - 最朴素的方法 int main() { int arr[10] = { 22,334,552,1,4,6,78,23,55,98 }; int i = 0; int temp = 0; int max1 = arr[0]; int max2

一篇文章带你入门java集合

2021-08-02
目录 一.简介 1.java集合框架图 2.集合框架体系 3.Set和List的区别 二.ArrayList 1.定义 2.用实例了解ArrayList 三.LinkedList 1.语法 2.示例 四.HashSet 1.定义 2.语法 3.示例 五.HashMap 1.定义 2.语法 3.示例 Java HashMap 方法 六.Iterator(迭代器) 1.定义 2.示例 七.List和数组互转 总结 一.简介 1.java集合框架图 从上面的集合框架图可以看到,Java 集合框架主要包

一篇文章带你入门Java基本概念

2021-08-02
目录 Java基本概念 一.JRE(Java运行时环境) 二.JDK(Java开发工具) 三.Java源代码文件(.class) 四.Java字节码文件(.java) 五.Java虚拟机(JVM) 六.跨平台运行 七.JDK与JRE.JVM的关系? 八.几个结论 总结 Java基本概念 JDK包含了不少Java开发相关命令.如,javac.java.javap.javaw.javadoc.虽然现在的Java开发都使用IDE完成,基本上不会直接使用这些命令.但是理解这些命令的用法,可以让我们更加扎

关于C语言操作符的那些事(超级全)

2021-08-02
目录 前言 操作符的分类 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用符 函数调用符 结构体调用操作符 总结 前言 C语言中操作符不多,但是有些相同的操作符都是在不同的表达式中,有不同的解释意思,比如 * 号,在表达式中5*5表示乘号,在int *p表示指针,在 *p = 10中,又表示解引用,所以今天就来详细的整理一下C语言中的操作符,做到心中有数,可以一眼识破,用途有哪些.重点不是记忆:是理解,兄弟们,要动本质. 操作符的分类 注意:

idea 在springboot中使用lombok插件的方法

2021-08-02
在idea中添加lombok插件 选择 file-->setting--->plugins  搜索lombok  并安装插件后重启idea 使用Lombok 在pom.xml中引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <s

使用@Value 注入 List 类型的配置属性需要注意的 BUG

2021-08-02
@Value 注入 List 类型的配置属性 @Value 注解可以方便的帮助我们注入配置属性值. 那么当注入一个 List 类型时该怎么做呢? 想必大家都会知道,可以使用下面这种写法: @Value("#{'${zf.ids}'.split(',')}") private List<Integer> ids; 上面的配置简单说下就是,先使用 ${zf.ids} 拿到配置文件中 zf.ids 属性的值,然后使用 #{} 也就是 SPEL 表达式语言进行按,拆分,得到的结果转

C++强制类型转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)

2021-08-02
目录 1. c强制转换与c++强制转换 2. static_cast.dynamic_cast.const_cast.reinterpret_cast dynamic_cast const_cast reinterpret_cast 3. c++强制转换注意事项 1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2 c++除了能使用c语言的强制类型转

关于redisson缓存序列化几枚大坑说明

2021-08-02
redisson缓存序列化几枚坑 1.返回值为Map<T, K> 的方法增加@Cacheable后,T和K被类型擦出了,为啥? redisson结合Spring使用时,会有RedissonSpringCacheManager,将redissonClient自动注入,另外还有codec的概念,即序列化和反序列化,可以查看实现类,就几种实现,假设我们使用org.redisson.codec.JsonJacksonCodec,可以看到,decode中,仅一个Object.class,即范型信息并未带

Node.js中npx命令的使用方法及场景分析

2021-08-02
npx使用教程 今晚在学习Vue-Cli时, 由于突发奇想想试试最新的@4.x.x版本, 但是本地全局安装的脚手架版本是@2.x.x的, 因为不想污染全局于是就想到用npx命令, 一路上踩坑不断, 为了以后能够更好的使用npx并区分其跟npm的指令, 就有了本篇笔记 npm 是从5.2版开始, 增加(自带)了 npx 命令. 如果发现没安装请手动安装: npm i -g npx npm与npx的概念 NPM(Node Package Manager) 是Node.js提供的一个包管理器, 可以使

Java虚拟机类加载器之双亲委派机制模型案例

2021-08-02
1. 双亲委派模型是什么? 当某个类加载器需要加载某个.class字节码文件时,它首先把这个任务委托给它的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类. 2. 双亲委派模型的工作原理? 1.如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去执行: 2.如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器:(每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶

Redis分布式非公平锁的使用

2021-08-02
目录 前言 redis分布式锁第一版 redis分布式锁第二版 redis分布式锁第三版 redis分布式锁最终版 前言 看了很多博客,和资料,这里只针对redis做分布式锁做一下深入探讨,希望对你们有帮助.网上提供了很多分布式锁的操作,这里逐一举例然后评论优缺点及改进方案,希望这样子能让当家更好的理解redis分布式锁. redis分布式锁第一版 大家应该都知道Redis做分布式锁无非就是INCR命令或者是SetNx命令,这里我们采用setnx命令. 操作:setnx key 如果操作成功则代

SpringBoot 如何根据不同profile选择不同配置

2021-08-02
SpringBoot 根据不同profile选择不同配置 附上pom的 profiles配置 <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </re

手把手教你实现Java第三方应用登录

2021-08-02
目录 什么是OAuth2.0 申请网站接入 创建SpringBoot应用 实现登录流程 大家在自己做项目的时候有没有想过实现一个第三方应用登录呢?类似这种: 本篇文章就来聊一聊该如何实现第三方应用登录. 什么是OAuth2.0 OAuth是一项协议,它为用户资源的授权提供了一个安全.开放而简易的标准,OAuth的授权不会使第三方触及到用户的账号信息(比如密码),因此OAuth是相对安全的.而OAuth2.0就是OAuth的延续,不过2.0更加关注客户端开发者的简易性. 申请网站接入 常见的第三方

一篇文章带你入门Java数据结构

2021-08-02
目录 1.逻辑结构和物理结构 2.顺序结构,链式结构,栈,队列,二叉树 二叉树 普通二叉树: 满二叉树: 完全二叉树: 平衡二叉树: 排序二叉树: 二叉树的遍历: 总结 1.逻辑结构和物理结构 逻辑结构:    集合: 数据与数据之间没有任何关系 线性: 一对一关系 树型: 一对多关系 图型: 多对多关系 物理结构: 顺序结构(数组): 链式结构(链表): 2.顺序结构,链式结构,栈,队列,二叉树 顺序结构: 可扩容数组,底层用数组实现,顺序排列,标号连续,内存空间连续 优缺点: 查询速度快,在

SQL实现LeetCode(175.联合两表)

2021-08-02
[LeetCode] 175.Combine Two Tables 联合两表 Table: Person +-------------+---------+ | Column Name | Type    | +-------------+---------+ | PersonId    | int     | | FirstName   | varchar | | LastName    | varchar | +-------------+---------+ PersonId is the

基于Spring Boot 排除自动配置的4个方法

2021-08-02
Spring Boot 排除自动配置 方法1 使用 @SpringBootApplication 注解,用 exclude 属性进行排除指定的类: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class Application { // ... } 方法2 单独使用 @EnableAutoConfiguration 注解的时候: @EnableAutoConfiguration(excl

Fluent Mybatis如何做到代码逻辑和sql逻辑的合一

2021-08-02
使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一.不再需要在Dao中组装查询或更新操作,在xml或mapper中再组装参数.那对比原生Mybatis, Mybatis Plus或者其他框架,FluentMybatis提供了哪些便利呢? 场景需求设置 我们通过一个比较典型的业务需求来具体实现和对比下,假如有学生成绩表结构如下: create table `student_score` ( id big

一篇文章帮你搞懂什么是java的进程和线程

2021-08-02
目录 为什么会有进程 进程的概念 进程的特征 线程 线程的结构 进程之中创建线程的优点 进程和线程的区别 进程和线程之间的关系 总结 为什么会有进程 在简单的批处理操作系统中,作业时串行执行的,即一个作业一旦开始执行,它就会计算机系统的所有资源,直到运行结束之后,下一个作业才可以继续执行. 在多道程序设计批处理的系统中,多个作业可以被载入内存,从宏观上看,多个作业并行执行,他们共享处理器.内存等计算机资源. 在分时系统中,为支持多用户交互,处理器在时间维度上被划为若干间隙,在每一时间间隙,一个用

C++实现LeetCode(179.最大组合数)

2021-08-02
[LeetCode] 179. Largest Number 最大组合数 Given a list of non negative integers, arrange them such that they form the largest number. Example 1: Input: [10,2] Output: "210" Example 2: Input: [3,30,34,5,9] Output: "9534330" Note: The result

Python进行区间取值案例讲解

2021-08-02
需求背景: 进行分值计算.如下图,如果只是一两个还好说,写写判断,但是如果有几十个,几百个,会不会惨不忍睹.而且,下面的还是三种情况. 例如: 解决: # 根据值.比较list, 值list,返回区间值, other_value 即不在的情况 def get_value_by_between(self, compare_value, compare_list, value_list, other_value, type="compare", left=False, right=True