![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础
qq_42317239
这个作者很懒,什么都没留下…
展开
-
Java 基础
java 组成 JDK JRE JVM的组成JDK – Java Development Kit 是包含了 Java 运行环境 JRE Java工具类 和Java基础类库JRE – Java Runtime Environment 包含了JVM 和 Java核心类库JVM – Java Virtual MachineJDK > JRE > JVM标识符:规则:A:标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含@、%、空格等其他特殊字符。B: 不能以数字原创 2021-03-24 10:26:42 · 132 阅读 · 0 评论 -
java之间int和char转换
现在普遍接受的是ASCII编码,例如a 对应 97,b 对应 98,int类型是一个32位的数据类型,因为其位有符号数,范围是-2^31 至 2^31 - 1。char是16位的数据类型,为无符号数,范围是0 至 2 ^ 32 -1,即0-65535,用十六进制来看就是’\u0000’-’\uffff’。char c1=97;System.out.println(c1);输出:a可以看到97ASCII码对应的字符是a,char q=‘a’;int w=q;System.out.p原创 2020-12-06 12:19:58 · 519 阅读 · 0 评论 -
进制转换
进制转换二进制数左移一位相当于数位上的数值乘以2,右移一位相当于数位上的数值除以2java中,>>为有符号右移,>>>为无符号右移,<<为有符号左移,不存在无符号左移运算符。^属于二进制位运算符 代表异或的意思运算时两个二进制数对应位的数不同时结果为1 否则为0所以1100^1010的结果应该是0110十六进制是由4位二进制组成的,进制的转换是不影响数制的,因此转换的时候应该是把二进制数从右往左来计算,每4位来组合成一个十六进制数,每4位数字都按照84原创 2020-11-08 13:50:52 · 673 阅读 · 0 评论 -
日期类Date
日期类DateetTime():取内部毫秒值setTime():存取内部毫秒值getMonth():获取当前月份getHours():获取当前小时compareTo(Date):当前对象与参数对象比较。当前对象大返回正数,小返回负数,相同0。原创 2020-11-08 13:22:20 · 121 阅读 · 0 评论 -
日期工具SimpleDateFormat
日期工具SimpleDateFormatnew SimpleDateFormat(格式)格式:yyyy-MM-dd HH:mm:ssMM/dd/yyyy…format(Date):把Date格式化成字符串parse(String):把String解析成Date原创 2020-11-08 13:18:41 · 119 阅读 · 0 评论 -
BigDecimal
BigDecimal/BigIntegerBigDecimal:常用来解决精确的浮点数运算。BigInteger:常用来解决超大的整数运算。常用方法add(BigDecimal bd): 做加法运算substract(BigDecimal bd) : 做减法运算multiply(BigDecimal bd) : 做乘法运算divide(BigDecimal bd) : 做除法运算divide(BigDecimal bd,保留位数,舍入方式):除不尽时使用setScale(保留位数,舍入方式原创 2020-11-08 13:16:23 · 69 阅读 · 0 评论 -
API
equals(Object obj)当前对象和参数对象比较大小,默认是比较内存地址,如果要比较对象的属性,可以重写该方法。创建String对象方式1:new String(char[])char[] c = {‘a’,‘b’,‘c’,‘d’};String s = new String©;//堆中分配新的内存方式2:直接创建String s2=“abcd”;//常量池中分配新的内存System.out.println(s2);//如果使用过了就不再创建,引用存在的对象String s3=原创 2020-11-08 13:06:48 · 98 阅读 · 0 评论 -
linux命令
系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息cat /proc/interrupts 显示中断cat /proc/meminfo 校验内存使用cat /pr转载 2020-11-08 12:18:12 · 142 阅读 · 0 评论 -
springmvc路由
springmvc的另一种配置@Configuration@EnableWebMvcpublic class SpringMVCConfig{@Beanpublic InternalResourceViewResolver viewResolver(){InternalResourceViewResolver viewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPre原创 2020-10-30 17:27:01 · 117 阅读 · 0 评论 -
Java队列的两种实现方式
Java队列的两种实现方式1. 基于数组package Algorithm.learn;import java.util.Arrays;/** * Created by liujinhong on 2017/3/7. */public class ArrayQueue<E> { Object[] queue; int size; public ArrayQueue() { queue = new Object[10]; }原创 2020-10-29 14:18:04 · 167 阅读 · 1 评论 -
选择排序
选择排序a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)b) 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]ar原创 2020-10-22 16:45:15 · 78 阅读 · 0 评论 -
栈
栈栈和队列是有操作限制的线性表。栈是一种只允许在一端进行插入或删除的线性表。1、栈的操作端通常被称为栈顶,另一端被称为栈底。2、栈的插入操作称为进栈(压栈|push);栈删除操作称为出栈(弹栈|pop)。顺序存储的栈称为顺序栈;链式存储的栈称为链式栈。我们可以围绕栈的4个元素来实现栈:2状态:是否栈空;是否栈满。2操作:压栈push;进栈pop。顺序栈的实现package test;import org.junit.Test;public class test {@Testpub原创 2020-10-21 16:34:32 · 81 阅读 · 0 评论 -
二叉树
二叉树二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树1、斜树所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少2、满二叉树所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上,这样就是满二叉树。就是完美圆满的意思,关键在于树的平衡。根据满二叉树的定义,得到其特点为:叶子只能出现在最下一层。非叶子结点度一定是2.在同样深度的二原创 2020-10-21 15:43:52 · 453 阅读 · 0 评论 -
java安全防溢出的两整数平均值算法
一般求两整数平均值大家可能会有如下写法public static int mean(int a, int b){return (a + b) / 2;}好一些的会这样写public static int mean(int a, int b){return (a + b) >> 1;}//或public static int mean(int a, int b){return (a + b) >>> 1;}这样的确能够求出两个数的平均值,但是,当两数为a=原创 2020-10-21 11:24:05 · 298 阅读 · 0 评论 -
二分查找
二分查找二分查找算法思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。二分查找优缺点优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表原创 2020-10-21 11:21:42 · 66 阅读 · 0 评论 -
堆排序
堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。通常所说的堆是一个近似完全二叉树的结构,并同时满足堆的性质:即最大堆子结点的关键字总是小于(如果是最小堆那就是大于)它的父节点。通常堆是通过一维数组来实现的。在起始数组为 0 的情形中:父节点 i 的左子节点在位置 (2*i+1);父节点 i 的右子节点在位置 (2*i+2);子节点 i 的父节点在位置 (i-1) / 2; 0 1 23 4 5原创 2020-10-20 20:58:27 · 113 阅读 · 0 评论 -
面试题一
一.去重id,并且按时间排序倒序,30万条数据select * from (select * from T_ORDER order by orderdate desc) group by id;优化1.创建索引create index varchar_index on kind(id);二.java设计开发模式一.单例模式其中单例模式最重要的是确保对象只有一个。简单来说,保证一个类在内存中的对象就一个。RunTime就是典型的单例设计,我们通过对RunTime类的分析,一窥究竟。目的:控原创 2020-10-18 13:17:22 · 175 阅读 · 0 评论 -
SpringBoot
SpringBoot 全新开发方式特点⚫ 创建独立的 Spring 应用程序⚫ 嵌入的 Tomcat,无需部署 WAR 文件⚫ 简化 Maven 配置⚫ 自动配置 Spring⚫ 提供生产就绪型功能,如指标,健康检查和外部配置原创 2020-10-17 19:46:12 · 70 阅读 · 0 评论 -
Dubbo 框架
Dubbo 是 [1] 阿里巴巴公司开源的一个高性能优秀的服务框架(SOA),使得应用可通过高性能的 RPC 实现服务的输出和输入功能可以和 Spring 框架无缝集成。原创 2020-10-17 19:24:28 · 88 阅读 · 0 评论 -
Seata分布式事务框架-AT模式
Seata分布式事务框架-AT模式eata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Seata AT事务方案Seata 的 AT 模式(Automatic Transaction)是一种无侵入的分布式事务解决方案Seata AT基本原理Seata AT 事务分两个阶段来管理全局事务:第一阶段: 执行各分支事务第二阶段: 控制全局事务最终提交或回滚Sea原创 2020-10-17 10:42:45 · 208 阅读 · 0 评论 -
分布式事务
分布式事务在微服务系统中,每个微服务应用都可能会有自己的数据库,它们首先需要控制自己的本地事务。一项业务操作可能会调用执行多个微服务。如何保证多个服务执行的多个数据库的操作整体成功或整体失败?这就是分布式事务要解决的问题。CAP 和 BASE 是对大规模互联网系统分布式实践的理论总结CAP:C:consistency一致性A:Availability 可用性P:partion Tolerance 分区容忍性在分布式系统中,由于网络原因出现子系统之间无法通信的情况,就会造成分区。一般分布式系统原创 2020-10-17 10:28:07 · 57 阅读 · 0 评论 -
单点登录
你的单点登录是怎么调用的原理:实现步骤:当用户登陆时,通过 nginx 访问 jt-web 中任意的服务器之后输入用户名和密码访问JT-SSO 单点登录服务器.获取用户的登陆信息查询数据库,校验用户名和密码是否正确.如果用户名和密码是正确的,将用户信息转化为 JSON 串.之后生成加密的秘钥 TOKEN(MD5(盐值+随机数)).将token:userJSON 保存 redis 中.并且将 token 信息返回给客户端(jt-web).Jt-web接收到服务端数据时首先校验数据是否有效.如果原创 2020-10-16 17:52:54 · 137 阅读 · 0 评论 -
HttpClient
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。原创 2020-10-16 17:49:39 · 166 阅读 · 0 评论 -
MybatisPlus
MybatisPlus特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 -原创 2020-10-14 19:38:40 · 113 阅读 · 0 评论 -
业务场景环境切换
一般开发时使用的都是测试环境.当项目上线时需要在生产环境下部署项目.问题: 在测试环境中的配置与生产环境下的配置可能不一致,经常需要修改IP地址及端口.想法:能否简化该操作?策略:指定多个运行环境. 当现在处于测试环境时,让配置文件指向测试. 反之做相同的操作.编辑YML配置文件# 测试环境 /jt 端口号 8095 生产环境: / 端口号8090 配置必须完整.#设定默认的环境spring: profiles: active: test---# yml 1.ke原创 2020-10-14 16:50:18 · 110 阅读 · 0 评论 -
SpringBoot依赖部署
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>原创 2020-10-14 16:43:28 · 116 阅读 · 0 评论 -
SPEL表达式
指定配置文件为属性赋值需求: YML配置文件是SpringBoot整合第三方配置文件,如果将业务配置与YML配置写到一起,则不方便管理.能否在指定的配置文件(pro)中实现属性的赋值.@RestController//导入配置文件,之后由Spring容器扫描@PropertySource(value = “classpath:/properties/image.properties”, encoding = “UTF-8”)public class FileController {@Value(原创 2020-10-14 16:37:23 · 105 阅读 · 0 评论 -
AOP
用户行为日志记录实现(实践)本小节作为课堂练习,以AOP方式记录项目中的用户行为信息,并将其存储到数据库。参考日志模块的文档。在SysLogDao接口中添加,用于实现日志信息持久化的方法。关键代码如下:int insertObject(SysLog entity);在SysLogMapper.xml中添加insertObject元素,用于向日志表写入用户行为日志。关键代码如下: insert into sys_logs (username,operation,method,param原创 2020-10-06 16:05:29 · 96 阅读 · 0 评论 -
instanceof 关键字
instanceof 关键字的作用instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。boolean result原创 2020-09-03 15:04:13 · 105 阅读 · 0 评论 -
Shiro 框架
Shiro 框架权限管理时的认证和授权流程描述Shiro 权限控制流程的原理:应用代码 —- 调用 Subject (shiro 的 Subject 就代表当前登陆用户) 控制权限 —- Subject 在 shiro 框架内部 调用 Shiro SecurityManager 安全管理器 —–安全管理器调用 Realm (程序和安全数据连接器 )。Subject 要进行任何操作,都必须要调用安全管理器(对我们来说是自动的)。而安全管理器会调用指定的 Realms 对象,来连接安全数据。Rea原创 2020-08-20 14:16:39 · 68 阅读 · 0 评论 -
Mybatis
Mybatis 的好处把 Sql 语句从 Java 中独立出来。封装了底层的 JDBC,API 的调用,并且能够将结果集自动转换成 JavaBean 对象,简化了Java 数据库编程的重复工作。自己编写 Sql 语句,更加的灵活。入参无需用对象封装(或者 map 封装),使用@Param 注解...原创 2020-08-20 10:11:40 · 307 阅读 · 0 评论 -
SpringMVC
Struts2 和 SpringMvc 的区别入口不同:Struts2:filter 过滤器SpringMvc:一个 Servlet 即前端控制器开发方式不同:Struts2:基于类开发,传递参数通过类的属性,只能设置为多例SpringMvc:基于方法开发(一个 url 对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)请求方式不同:Struts2:值栈村塾请求和响应的数据,通过 OGNL 存取数据SpringMvc:通过参数解析器将 request 请求内容解析原创 2020-08-20 10:09:56 · 129 阅读 · 0 评论 -
Spring
Spring 在 ssm 中起什么作用?Spring:轻量级框架作用:Bean 工厂,用来管理 Bean 的生命周期和框架集成。两大核心:1、IOC/DI(控制反转/依赖注入) :把 dao 依赖注入到 service 层,service 层反转给 action层,Spring 顶层容器为 BeanFactory。2、AOP:面向切面编程Spring 的配置文件中的内容开启事务注解驱动事务管理器开启注解功能,并配置扫描包配置数据库配置 SQL 会话工厂,别名,映射文件不用编写 Da原创 2020-08-20 10:07:14 · 174 阅读 · 0 评论 -
BS 和 CS 的区别
BS 和 CS 的区别C/S 用户固定,并且处于相同区域,要求拥有相同的操作系统。B/S 要有操作系统和浏览器就行。与操作系统平台无关。C/S 客户端的计算机电脑配置要求较高。B/S 客户端的计算机电脑配置要求较低。C/S 每一个客户端都必须安装和配置软件,客户端不必安装,使用浏览器访问,易推广。B/S 最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。C/S 每一个客户端都要升级程序。可以采用自动升级。BS 客户端不必安装及维护。C/S 一般面向相对固定的用户群,程序更加注重流原创 2020-08-20 09:41:19 · 161 阅读 · 0 评论 -
Tomcat
Tomcat 配置,部署优化内存优化:Tomcat 依赖于 JVM,可以配置 JVM 的内存配置最大连接数配置(并发能力)通常搭配 Nginx 提升 Tomcat 的并发性能原创 2020-08-20 09:27:36 · 120 阅读 · 1 评论 -
HTML 和 xml 的区别
HTML 和 xml 的区别XML 是可扩展标记语言,而 HTML 超文本标记语言。不同之处:1、语法有所不同。XML 语法比较严谨而 HTML 语法比较松散。2、用途不同。XML 主要用于数据格式化存储而 HTML 主要用于网页的编辑。...原创 2020-08-20 09:23:03 · 77 阅读 · 0 评论 -
Ajax
Ajax 原理Ajax 的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给 Ajax 引擎自己来做, 只有确定需要从服务器读取新数据时再由 Ajax 引擎代为向服务器提交请求。Ajax 其核心只有 JavaScript、XMLHTTPRequest 和 DOM,在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端, 每当服务器处理客户端提交的请求原创 2020-08-20 09:16:43 · 246 阅读 · 0 评论 -
事务
什么是事务事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性:事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。一致性:事务在完成时,必须使所有的数据保持一致的状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B 树索引或双向链表)都必须是正确的。隔离性:由并发事务所做的修改必须与任何其他并发事务所做的修改原创 2020-08-19 15:00:58 · 152 阅读 · 0 评论 -
md5原理与实现
md5原理与实现@SpringBootTestpublic class MD5Tests {@Testvoid testMD501() { String pwd="123456"; //String salt=UUID.randomUUID().toString();//da5bf161-32eb-4521-970e-efe61d56a8e6 String salt="da5bf161-32eb-4521-970e-efe61d56a8e6"; System.out.println("sal原创 2020-08-18 15:10:56 · 143 阅读 · 0 评论 -
web 容器与设计模式
什么是 web 容器给处于其中的应用程序组件(JSP、Servlet)提供一个环境,是 JSP、Servlet 直接跟容器中的变量交互,不必关注其他系统问题。主要有 web 服务器来实现。例如:tomcat、weblogic、sphere、JBoss 等。该容器提供的接口严格遵守 J2EE 规范中的 web application 标准。我们把遵守以上标准的 web 服务器叫做 J2EE 的 web 容器。J2EE 常用的设计模式?说明工厂模式Java 中一共有 23 中设计模式:Facto原创 2020-08-18 15:15:13 · 94 阅读 · 0 评论