Other

程序员自配台式机

持续更新: 整机配置: 处理器(CPU)AMD Ryzen 5 3400G with Radeon Vega Graphics 四核主 板微星 B450M MORTAR (MS-7B89)内 存16 GB ( 未知 DDR4 3000MHz )硬 盘三星 SSD 970 EVO Plus 250GB ( 250 GB / 固态硬盘 )显 卡AMD Radeon RX Vega 11 Graphics ( 2 GB / 微星 )显示器冠捷 AOC2401 24T1W1G5 ( 24 英寸 )类比:https://www.zhihu.com/question/356204364/answer/897082313

JAVA面经内存溢出

1、长生命周期持有短声明周期的对象,尽管短生命周期不再使用,但是由于长生命周期一直存在,导致不能被回收 2、各种连接,如果不进行close很多的对象都不会被回收。 3、变量的作用域过大,导致生命周期过长 4、内部类持有外部类 5、hashmap中存放了某个对象,但是修改了这个对象中的参与计算哈希的值,这种情况如果再次去查找就找不到这个结果。导致无法删除该对象,导致内存溢出 6、缓存泄露,hashmapo中很容易遗忘,可以用弱引用,当内存不够时会进行垃圾回收WeakHashMap  

Spring源码解析之BeanPostProcessor

前言 AbstractApplicationContext类 refresh()方法 spring在bean的注册与实例化之间会出现如下代码 //bean的注册 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); //1. Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(beanFactory); //2. Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); //3. Register bean processors that intercept bean creation. registerBeanPostProcessors(beanFactory); //bean的实例化 finishBeanFactoryInitialization(beanFactory); 1.在AbstractApplicationContext为一个空方法,其子类对该方法进行了重写 2.BeanDefinitionRegistryPostProcessor与BeanFactoryPostProcessor接口的调用 3.把实现了BeanPostProcessor接口的类实例化,并且加入到BeanFactory中 invokeBeanFactoryPostProcessors()的源码分析 看个例子 BeanDefinitionTest类 @Component public class BeanDefinitionTest implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { GenericBeanDefinition genericBeanDefinition = new GenericBeanDefinition(); genericBeanDefinition.

实验4 函数与异常处理应用编程

实验任务1:1 print(sum) 2 sum=42 3 print(sum) 4 def inc(n): 5 sum=n+1 6 print(sum) 7 return sum 8 sum=inc(7)+inc(7) 9 print(sum) 不是: 第一个sum作用的是一开始定义的42; 第二个sum作用的是调用的n+1; 第三个sum作用的是调用里的另一个; 第四个sum作用的是最后一个两者相加的。 实验任务2:task2_1.py: 1 def func1(a,b,c,d,e,f): 2 ''' 3 返回参数a,b,c,d,e,f构成的列表 4 默认,参数按位置传递;也支持关键字传递 5 ''' 6 return [a,b,c,d,e,f] 7 def func2(a,b,c,*,d,e,f): 8 ''' 9 返回参数a,b,c,*,d,e,f构成的列表 10 *后面的参数只能按关键字传递 11 ''' 12 return [a,b,c,d,e,f] 13 def func3(a,b,c,/,d,e,f): 14 ''' 15 返回参数a,b,c,d,e,f构成的列表 16 /前面的参数只能按位置传递 17 ''' 18 return [a,b,c,d,e,f] 19 print(func1(1,9,2,0,5,3)) 20 print(func1(a=1,b=9,c=2,d=0,e=5,f=3)) 21 print(func1(1,9,2,f=3,d=0,e=5)) 22 print(func2(11,99,22,d=0,e=55,f=33)) 23 print(func2(a=11,b=99,c=22,d=0,e=55,f=33)) 24 print(func3(111,999,222,0,555,333)) 25 print(func3(111,999,222,d=0,e=555,f=333))  实验任务2:task2_2.

shell脚本

一、shell概述 shell 的两层含义:既是一种应用程序,又是一种程序设计语言 作为应用程序:交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能,因而又可称为shell命令解析器。 shell 是用户和 Linux 内核之间的接口程序 1、用户在提示符下输入的命令都由 shell 先解释然后传给 Linux 核心; 2、它调用了系统核心的大部分功能来执行程序、并以并行的方式协调各个程序的运行; 3、Linux 系统中提供了好几种不同的 shell 命令解释器,如 sh、ash、bash 等。一般默认使用 bash 作为默认的解释器; 4、shell 是用户跟内核通信几种方式的一种。 作为程序设计语言:它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支完成类似于 windows 下批处理操作,简化我们对系统的管理与应用程序的部署称之为shell 脚本。 shell脚本是shell命令的有序集合  c/c++等语言,属于编译性语言(编写完成后需要使用编译器完成编译、汇编、链接等过程变为二进制代码方可执行);shell 脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装 shell 命令解释器的环境下执行 shell 脚本主要用于:帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中,通过简单的一步执行操作完成相应任务, 从而解放他们的负担。 二、shell语法  2.1 shell 脚本的定义与执行 shell脚本的代码编写流程  第一步:指定shell脚本文件,一般以.sh作为后缀名,也可以不加,例如:test.sh 第二步:编写代码 #!/bin/bash # #!用于指定当前脚本文件的shell解释器的类型,如不写,则用默认的shell #shell脚本是shell命令的有序集合,代码的构成就是命令 ls pwd echo hello world 第三步:修改文件权限 chmod +x test.sh 第四步:执行脚本文件 三种执行方式 ./test.sh 增加可执行权限后执行 bash test.sh 直接指定使用 bash 解释 test.sh . test.

【转】MySQL数据库之索引详解

一、概述 索引是MySQL数据库为了加快数据查询的速度,给表中的某一个或者是某几个列添加的一种“目录”。MySQL的索引是一个特殊的文件,但是InnoDB类型引擎(关于MySQL的引擎我们会在今后的文章中进行讲解)的表的索引是表空间的一个组成部分。MySQL数据库一共支持5种类型的索引,分别是普通索引、唯一性索引、主键索引、复合索引和全文索引,下面,我将对这四种类型的索引一一介绍。 二、MySQL的五种索引 1.普通索引 普通索引是MySQL数据库中的一种普通的索引,添加普通索引的列对数据没有特殊要求,普通索引能起到的作用就是加快差查询速度。在创建数据表时添加普通索引SQL语句示例如下 create table exp(id int , name varchar(20),index exp_name(name)); 或者把 index 换成key create table exp (id ,int , name varahcr (20) , key exp_name(name)); 在上述SQL命令中,key或者index表示添加索引,后面紧跟着的是索引名称,后面括号里的是要添加索引的列。本文介绍的所有索引相关的SQL语句,如果没有特殊说明,index都可以换成key,为了节省文章篇幅,这一点在以后就不再赘述了。此外,我们也可以在添加索引时,不指定索引的名称,这时,MySQL会自动为该索引添加与该字段同名的索引名; 创建数据表后向表内新添加普通索引SQL语句示例如下: alter table exp add index exp_id(id); 创建数据表后删除普通索引的SQL语句示例如下: alter table drop index exp_name; 注意,在上述命令中,exp_name是索引的名字而不是含有索引的字段的名字,如果我们忘记了该表中的索引名称,可以执行以下SQL命令进项查询: show index from exp;  2.唯一性索引 唯一性索引,是在普通索引的基础上,要求添加该索引的列所有的值只能出现一次。唯一性索引常用语添加在注入身份证号、学号等字段中,不可以添加在注入名字、等字段中。唯一性索引的添加与普通索引几乎完全相同,只不过要把普通索引的关键字key和index换成unique key和unique index。在创建数据表时添加唯一性索引的SQL语句示例如下: create table exp (id int, name varchar(20), unique key (name)); 可以看出,添加唯一性索引的字段,在使用desc命令查询表结构时,Key列中会显示UNI,表示该字段添加了唯一性索引。 删除唯一性索引的SQL语句示例如下: alter table exp drop index name; 3.

JavaScript 基础

JavaScript 基础 https://blog.csdn.net/itxiaodong/category_10839615.html https://blog.csdn.net/xuaner8786/category_7279528.html

Redis知识点

redis redis是单线程+多路IO复用技术实现 支持内存操作+持久化储存,主要用于高并发海量数据读写 例如秒杀活动 短信验证码等 缓存 消息队列。默认使用0号库 有0-15个库 1.redis快的原因 1.redis使用内存储存,没有磁盘IO开销,读写速度快 2.redis是单线程,避免多线程之间线程切换和锁竞争开销 3.redis使用多路IO复用技术,委托内核监控事件,将数据库操作转为事件,不在网络IO上耗时 2.redis和MySQL对比 ​ MySQL Redis 1.结构化:mysql数据都是借助表存储 非结构化:借助key-value实现存储 2.关联性:mysql表和表之间可以借助外键联系 无关联性 3.SQL查询:有特定的查询语句 select * from tmp; 没有特定SQL 4.ACID事务一致性 无法全部满足事务一致性 5.磁盘存储 内存存储 3.通用命令 1.keys pattern :查看复合模板所有key keys *:匹配全部key keys a*:匹配以a开头的 2.DEL key:删除一个key/多个key del name :删除key为name del v1 v2 v3 v4:删除key为v1 v2 v3 v4 unlink key 根据key非阻塞删除 首先将key从keys里面删除 但是真正数据删除在后续操作 3.exists key :判断key是否存在 exists name : 判断name是否存在 4.expire key :给 key 设置一个有效期 首先你的key要存在

JavaScript – 数据类型

前言 写着 TypeScript 学习笔记, 顺便也写点 JS 的呗.  参考 JS数据类型分类和判断 阮一峰 – 数据类型  JS 数据类型 string number boolan undefined null object symbol bigint 其中 symbol 和 bigint 是后来加进去的 另外还有一些很常见但其它它们不能说是类型. array, function, class, arrow function, NaN, Regex, Date  typeof typeof 是用来判断类型的. console.log('string', typeof 'string'); console.log('number', typeof 1); console.log('boolean', typeof true); console.log('undefined', typeof undefined); console.log('null', typeof null); console.log('object', typeof {}); console.log('symbol', typeof Symbol('v')); console.log('bigint', typeof (100n)); 结果 只有一个奇葩, null = object.

22-5-5 sql语句练习(下)

select语法 通过列名来检索数据 select 列名 from tablename; 仅从表的某一列中检索出“唯一”不同的值,去掉这一列不同的值 select distinct 列名 from tablename; sql and or运算符