- 博客(70)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 synchronized(this)和synchronized(obj)
首先synchronized(this)和synchronized(obj)区别
2023-02-05 23:04:50
1903
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 浅谈token认证
Token使用token一般的身份验证流程:客户端使用用户名和密码请求登录服务端收到请求,验证用户名和密码验证成功后,服务端会签发一个token,再把这个token返回给客户端客户端收到token后可以把它存储起来,比如放到cookie中客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据Jwt就是一个token的具体实现方式,即:JSON Web
2022-05-19 16:35:28
5613
原创 Nacos学习及使用
nacos是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。(用来实现配置中心和服务注册中心)
2023-03-24 10:46:45
1477
原创 Oracle 函数使用记录
常用方法函数instr(String1,String2)instr(String1,String2) :String1包含String2,返回一个数字值。 字符串中的第一个位置是1。如果在字符串中找不到String2,那么INSTR函数将返回0。例子:1 select instr('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置2 select instr('helloworld','lo') from dual; --返回结果:4
2021-11-24 16:02:05
268
1
原创 MySQL Oracle中的“limit”功能
SQL中的limitlimit 作用是限制SQL语句的返回结果数量,常用语分页查询limit 语法格式:select * from tableName limit i,ni:查询结果的开始的索引值(缺省为0)。i=0可省去 i.n:为查询结果返回的数量mysql的索引从0开始。例子:select * from liuyan limit 0,5;获得的数据索引为:0,1,2,3,4select * from liuyan limit 5,5;数据的索引为:5,6,7,8,9
2021-11-24 15:43:05
7047
原创 restemplate请求乱码一种解决
今天有一个通过Restemplate请求一个天气API,发现其Body数据是乱码。乱码的第一反应是编码格式出了问题。检查头部信息,content-encoding="gzip"content-type="application/json;charset=UTF-8"返回值是UTF-8,Restemplate设置的也是UTF-8。在翻看其他博客,发现问题原因是http存在一个压缩格式:Gzip。Gzip是一个压缩算法,当请求数据或返回数据体积过大,为减少网络负载压力而使用的压缩算法。通常在服务器端使
2021-11-09 14:34:47
1832
4
原创 spring中的事务到底是什么
spring事务事务在代码里或者数据库中都可以配置。其含义理解为 一系列的数据操作,要么全部执行完成、要么都不执行。归纳为1、原子性:事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。2、一致性:一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败3、隔离性:事务之间应该隔离开来。因为可能有许多事务会同时处理相同的数据,每个事务都应该与其他事务有隔离策略。4、持久性:一旦事务完成,它的结果不会收到影响。通常情
2021-09-03 11:07:22
2897
原创 新增数据返回id(Oracle+MySQL)
mybatis 的insert方法返回的是影响的行数,不能直接返回新增数据的id。支持主键自增的情况常见的MySQL、Sql Server都支持主键自增,在mybatis中可以设置useGeneratedKeys="true"和keyProperty。来实现获得自增的主键比如有表 person:id、name、age<insert id="insertPerson" parameterType="com.lijie.mybatis.entity.Person" useGenerate
2021-08-25 09:59:42
848
原创 junit 单元测试报错:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) at java.base/java.security.SecureClassLoader.defin
2021-08-12 15:48:31
201
原创 fastJSON使用
fastJSONFastJson主要有三个类:JSON:FastJson解析器用于JSON格式字符串与JSON对象及JavaBean之间的转化。也是最基础的一个类,因为看过源码之后会发现,下面的两个类继承了JSON类,其中很多方法的实现也是基于JSON类中的parse()方法。JSONObject: FastJson提供的json对象,用于将String对象、javaBean、Collection等解析为JSON格式的对象JSONArray: FastJson提供json数组对象对象与JSON
2021-08-09 16:00:40
399
1
原创 Java斐波拉数列的三种实现方式
求解斐波那契数列例子。求一个问题的解需要用到之前的数据,依次递归。解决方法(以斐波那契数列为例):1、纯递归实现,问题是需要不停的递归,时间复杂度高public static int Fibonacci_recursive(int n){ if(n<=0){ return 0; }else if(n==1){ return 1; } else{ return F
2021-08-05 22:24:58
199
原创 Vue学习笔记
VUE插值操作mustache语法(双大括号)指令:v-one作用:插值操作只执行一次,后续发生值发生变化,显示不变。指令:v-html作用:将语句内容转为HTML格式输出 <div id="app"> <h2 v-html="a"></h2> </div> <script> const vue = new Vue({ el: '#app', data:{
2021-08-05 22:09:52
1247
6
原创 Oracle日期和字符串转换
to_char :日期类型 -> 字符串 输出格式:to_char(date,转换的格式)转换的格式: 表示对象 符号 含义 year年 y 表示年的最后一位 yy 表示年的后两位 yyy 表示年的后三位 yyyy 表示年的完全展示 month月
2021-08-05 14:25:13
1849
原创 Parttion by 与over()
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-07-30 10:13:13
208
原创 docker MySQL出现Access denied for user ‘root‘@‘****‘ (using password: YES)解决
首先有必要说明下,172.17.0.2 是我访问mysql容器的应用容器IP环境说明宿主机,ubuntu容器1: docker_for_api ,提供应用的API服务。容器2: docker_for_web,提供应用的后台管理页面。容器3: docker_for_mysql ,数据库容器。问题复现程序中突然就出现了Access denied for user ‘root’@‘172.17.0.2’ (using password: YES)的错误,因为,我的API中连接数据库 是 这样配
2020-09-10 21:52:28
7146
2
原创 springcloud-Ribbon和Feign
spring cloud的 Netflix 中提供了两个组件实现软负载均衡调用:ribbon 和 feign 。1、Ribbon是一个基于 HTTP 和 TCP 客户端 的负载均衡的工具。它可以 在客户端 配置 RibbonServerList(服务端列表),使用 HttpClient 或 RestTemplate 模拟http请求,步骤相当繁琐。Ribbon 可以用来做客户端负载均衡,调用注册中心的服务2、FeignFeign 是在 Ribbon的基础上进行了一次改进,是一个使用起来更加方便的
2020-09-10 21:23:18
202
原创 zokeeper与eureka对比
前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论CAP理论是分布式架构中重要理论 一致性(Consistency) (所有节点在同一时间具有相同的数据)
2020-09-08 15:42:45
100
原创 排序算法-Java
冒泡排序冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部。冒泡排序的算法比较简单,排序的结果稳定,但时间效率不太高。Java 中的冒泡排序在双层循环中实现,其中外层循环控制排序轮数,总循环次数为要排序数组的长度减 1。而内层循环主要用于对比相邻元素的大小,以确定是否交换位置,对比和交换次数依排序轮数而减少。 public int[] BubbleSort
2020-09-08 10:56:00
110
原创 java基础知识和常见关键字
final、static、abstractstatic被 static 关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static 作用于代码块:称作静态代码块static 方法(类方法)只能访问 static 方法,不能访问非 static 方法static 方法只能访问 static field, 不能访问非 static fieldstatic方法不能访问本类中的非static变量非 static 方法可以访问 static fields
2020-08-29 11:37:23
128
原创 Java中的异常及处理
Java中异常的分类1.Java 标准库内建了一些通用的异常,这些类以 Throwable 为顶层父类。Throwable 又派生出 Error 类和 Exception 类。错误:Error 类以及他的子类的实例,代表了 JVM 本身的错误。错误不能被程序员通过代码处理,Error 很少出现。因此,程序员应该关注 Exception 为父类的分支下的各种异常类。异常:Exception 以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被 Java 异常处理机制使用,是异常处理
2020-08-27 16:10:33
162
原创 mysql多表连接
【题目】现在有两个表,“学生表”记录了学生的基本信息,有“学号”、“姓名”。“成绩”表记录了学生选修的课程,以及对应课程的成绩。这两个表通过“学号”进行关联。现在要查找出所有学生的学号,姓名,课程和成绩。【解题思路】1.确定查询结果题目要求查询所有学生的姓名,学号,课程和成绩信息select 学号,姓名,课程,成绩查询结果的列名“学号”、“姓名”,在“学生”表里,列名“课程”、“成绩”在“成绩”表里,所以需要进行多表查询。2.哪种联结呢?涉及到多表查询,在之前的课程《从零学会sql:多表
2020-08-27 15:27:33
285
1
转载 Restful风格
概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。功能资源:互联网所有的事物都可以被抽象为资源资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应 添加、 删除、修改、查询。传统方式操作资源http://127.0.0.1/item/queryItem.action?id=1 查询,GEThttp://127.0.0.1/item/saveItem.ac
2020-08-27 11:41:45
104
原创 spring-3 AOP
AOPAOP :面向切面编程内容是对于事务的控制,在此之前,我们对与事务的控制是方法1 线程上:线程锁方法2 事务管理方式2:将Connection绑定到当前线程。没有侵入性。方法3 因为必须保证连接为同一个连接,所以在业务层获得连接,再将连接传递到持久层,代码具有侵入性。AOP 学习之前:动态代理 特点:字节码随用随取,随用随加载 分类: 基于接口的动态代理:拦截接口中的方法,然后对需要加强的方法进行加强 基于子类的动态代理 基于接口的动态代理:
2020-08-25 10:06:53
245
1
原创 spring-2 注解
spring注解使用注解之前: 1、若使用注解,需要在创建XML文件时,引入context名称的约束。 2、在创建的XML文件中,加上需扫描注解的包。如com.lijie,扫描后,spring容器才会有相应的对象创建。<context:component-scan base-package="com.lijie"></context:component-scan>回顾XML中对bean的配置<bean name="" class="" scope="" ini
2020-08-25 10:03:20
220
原创 spring-1 IOC
spring学习前置maven 项目结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PckDwXFo-1598319869073)(E:\学习之路\初级阶段\截图\截图.png)]main java:java项目代码文件 resources:资源库 webapp:JSP、CSS、JS WEB-INF:web.XML test:测试 target:存放项目构建后的文件和目录,maven构建的时候生成的工厂模式解耦 1、需要一个配置文
2020-08-25 09:45:20
104
原创 java8新特性—lambda表达式和Stream API
lambda表达式一个匿名函数 ,代码更简洁灵活。格式: -> 箭头操作符箭头左边:lambda形参列表/其实就是接口中抽象方法的形参列表箭头右边:lambda体 / 其实就是重写的抽象方法的方法体注意: lambda 表达式针对的是==接口==语法格式一:无参、无返回值//非lambda表达式写法Runnable l1=new Runnable() { @Override public void run() { System.out.printl
2020-08-18 15:32:14
135
原创 JVM-3 对象创建与执行引擎
对象的实例化、内存布局对象创建的方式newClass 的newInstance() :反射的方式Constructor 的newInstance(Xxxx) :反射的方式clone():不调用构造器,但是要实现Cloneable()接口使用返序列化:第三方库对象创建的步骤1、判断对象对应的类是否加载、链接、初始化2、为对象分配内存,3、处理并发安全问题4、初始化分配到空间5、设置对象的对象头6、执行init()方法进行初始化对象的内存布局对象的访问引用思考:J
2020-08-16 16:08:08
110
原创 JVM-2 运行时数据区
运行时数据区程序执行时: 每个线程独立的拥有 程序计数器、本地方法栈、虚拟机栈 线程共享:方法区和堆空间程序计数器(pc寄存器)作用: pc寄存器用于存储下一条指令的地址,即将要执行的指令代码,由执行引擎读取下一条指令常见问题 1、为什么使用PC寄存器记录当前线程的执行地址? 答:因为CPU需要不停的切换各个线程,切换一个线程后需要记录下次执行从哪开始。明确下次开始的地址 2、 PC寄存器为什么被设定为每个线程一份 答:因为每个线程是独立的,cpu执行时并发的执行
2020-08-16 16:05:30
133
原创 JVM -1 整体结构与类加载子系统
JVM整体结构Java代码执行流程计算机系统指令集分为栈的指令集和寄存器的指令集。JVM是采用栈的指令集,其与硬件耦合度小,指令集小,指令多。性能逊于寄存器指令集JVM生命周期1、虚拟机的启动 虚拟机的启动是通过类加载器创建一个初始类实现的2、虚拟机的执行3、虚拟机的退出 程序正常结束 程序执行出现异常或错误 操作系统错误导致虚拟机出现错误类加载子系统类记载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。Cl
2020-08-16 15:59:47
121
原创 静态代理与动态代理
代理 ProxyProxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获
2020-08-16 15:53:27
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人