自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

 

博客内容供学习交流,如有错误恳请指正

  • 博客(41)
  • 收藏
  • 关注

原创 【MobaXterm】Execute command 的问题;Linux环境变量配置;

通过这种方式打开的shell,我推测是moba与服务器建立连接后通过Nologin方式执行了shell脚本,此时打开的shell是Nologin Shell,是不执行~/.bash_profile的。所以环境变量未加载上。因为,在此之前我是可以正常使用MobaXterm重启服务的,我按照以前的方法在MobaXterm上新建了一个session连接到服务器发现 控制台输出了 .bash_profile,也就是说这次登录加载了。发现此时jdk版本正常了,可以说文件和命令都是可用的,文件本身应该是没有问题的。

2024-03-07 15:46:11 394

原创 HashMap源码阅读;HashMap的put()方法;

当仔细研究HashMap的put方法后,实际对HashMap的原理已经有了基本认知。描述HashMap的原理可以从数据结构的角度展开来说,这是因为HashMap作为容器存储数据,那么数据存储一定离不开数据结构。首先,java8的HashMap需要的数据结构有三种(数组、链表和红黑树)。数组,是哈希表来作为链表的索引。哈希表会在元素个数大于扩容阈值时引发扩容,扩容是以2次幂的规模来处理,哈希表只有在第一次put元素时才会创建,所以HashMap是懒加载的。链表,是真正保存数据的位置。

2024-01-25 16:16:02 858 1

原创 使用 docker 部署 MySQL 会导致数据丢失吗

docker 部署 MySQL服务,只有 MySQL 容器被删除的情况下,数据会丢失。可以通过 docker 外挂宿主机的文件夹,来存储 MySQL 的数据。并且当重新运行一个 MySQL 镜像时,也要外挂同一个文件夹,确保容器能读取到先前删除的容器内的数据。

2023-02-28 23:53:54 3747 2

原创 学习:Spring事务扫盲

spring事务的传播方式spring事务的隔离级别

2022-11-17 22:44:18 408

原创 解决:redis部署后远程连接报 Could not connect to redis at IP:Port: No route to host

搭建redis服务,尝试使用RDM远程连接时,发现连接不上redis。修改 redis.conf注释调ip绑定# bind 127.0.0.1 ::1关闭保护模式protected-mode no设置登录密码requirepass 密码当保护模式开启时,如果:1) 服务器没有使用“bind”指令显式绑定到一组地址。2) 没有配置密码。服务器只接受来自IPv4和IPv6环回地址127.0.0.1和::1的客户端的连接,以及来自Unix域套接字的连接。redis.conf 位置在安装目

2022-04-11 16:08:45 4130

原创 设计模式;一句话归纳面向对象设计原则;

保存一个比较好的设计模式总结的网站。一句话归纳设计模式

2022-03-15 14:59:40 130

原创 双写一致性;缓存与数据库一致性问题;

双写一致性即,缓存和数据库的数据保持一致结合查询的资料简单的对双写进行分析总结。1 先更新缓存,后更新数据库不推荐。产生的问题:缓存一般不支持事务回滚,或设计回滚代价较高,当更新数据库遇错回滚,缓存无法进行相同的操作。2 先更新数据库,后更新缓存不推荐。产生的问题:线程A、线程B修改数据库,由于网络原因,B先于A修改了缓存,导致数据库与缓存不一致。3 先删缓存,后更新数据库不推荐。一般情况下,数据库的写操作要慢于读操作产生的问题:线程A删缓存,线程B读缓存时无数据,查数据库,线程A

2022-03-15 12:02:38 1137

原创 Ribbon 负载均衡轮询算法;多对多轮询;

轮询算法通过 ribbon 原码可以看到轮询算法的原码,也就清楚了原理是通过计算 请求次数 % 服务器总数 = 服务器下标 来获取请求的服务器。请求次数,保存在轮询算法类的成员变量中,作为 一个原子整型(AtomicInteger)保存。保证多线程情况下的自增线程安全(原子整型的CAS算法)。服务器总数,可用服务器列表 维护在 注册中心(eureka) 中。每次请求经过轮询算法可以在 注册中心 获取这个列表,同时得到列表的元素个数。继承 AbstractLoadBalancerRule 抽

2022-03-03 17:03:56 664

原创 解决:lombok插件安装好了,pom配置好了,运行时仍然报:找不到符号

引入使用lombok出现了这样的问题,插件安装好了,pom也配置好了。然后正常的使用 @Data 方法。 左侧project浏览窗口中的文件报红 ,但是打开文件后,报红消失。解决我修改了pom.xml 的 lombok 版本原改为程序正常运行,build时 不再报 找不到符号附上我的IDEA版本lombok插件版本其他参考这个链接试试解决IDEA插件使用Lombok找不到符号问题...

2022-02-09 22:21:10 633

原创 Java volatile 的作用;双重检查锁中的 volatile 关键字

引入最近在学习设计模式的时候《HeadFirst设计模式》,学到了熟悉的单例模式。这个模式本应该是最熟悉的,毕竟初学时应用懒汉模式创建数据库连接。书中提到的单例代码可以看到图中有 volatile 修饰的单例对象,他引起了我的注意,而下方的注释并没有解决我的疑问。因为之前使用单例模式的时候并没有添加这个关键字,似乎也能满足单例需求,难道说只是表面上满足了需求,而问题并没有暴露出来吗?查资料JAVA中volatile介绍Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)双

2021-12-30 17:38:04 220

原创 奇怪的 -2147483648;为什么Java中 2147483647加一是-2147483648

发现Java int 范围 -2147483648 ~ 2147483647执行一下代码发现:int a = 2147483647;int b = a + 1; int c = b - 1;sout(b) // b = -2147483648sout(c) // c = 2147483647b 是 -2147483648c 是 2147483647似乎是一个循环?为什么原码反码补码上边这个链接看完知道,cpu二进制计算不对原码进行计算, 而是对补码进行计算。就是说计算机的运

2021-12-15 18:44:51 2851 1

原创 使用@FeignClient时报错nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map

使用 @FeignClient 的 fallback 时报错:nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'XXX' method XXXto {GET /XX/XX/XX}: There is already 'XXX' bean methodXXX() mapped.@FeignClient 的属性fallback的值是 当前接口的实现类的类对象比如:@Service

2021-12-06 22:36:01 1265

原创 VUE:router 页面跳转后样式混乱或消失

Vue加载外部样式的方式第一种:import方式router 跳转后 在跳转回来 import 引的文件消失<style scope>@import 'css路径'/* 填写样式*/</style>第二种:src中添加样式引入的文件为当前页面局部样式,router 跳转后再跳转回来,样式还在<style src="'css路径1'" scope></style><style src="'css路径2'" scope></

2021-06-22 10:35:41 1694

原创 学习:强、软、弱、虚引用简单理解

强引用:使用最多的引用,被强引用的对象,即使内存溢出(OOM)也不会被GC回收。Object o = new Object();软引用:被软引用的对象会在内存不足的情况下被GC回收,即使该对象依然被引用。因此软引用适合应用在缓存方向。SoftReference<Object> s = new SoftReference(o);弱引用:被弱引用的对象,GC时会直接回收掉。即只要发生GC就会回收被弱引用的对象。JDK8 线程中维护的 ThreadLocalMap 的 key 使用了弱引用

2021-06-01 10:20:09 147

原创 解决:页面回退监听事件监听到<a>标签的 ‘onClick’ 事件

工作过程中遇到的bug记录。问题似乎像题目中所示的页面回退监听事件怎么会监听到<a>标签的 onClick 呢?先上代码:H5<a href="#" @Click="showDetails()">查看详情</a><div v-show="ifShow === true">详细内容</div>vue-cli 的 JSdata () { return { ifshow: false // 显示div的联动变量 }}mounte

2021-05-31 13:35:58 1204

原创 笔记:记录一个比较好用的 通用DTO 类

自己常用的DTO,使用在 SpringBoot 项目中,应用了 Lombok 插件。DTO://响应类:尽量将所有接口的响应信息封装到此对象中,返回给前端@Getter@Setter@AllArgsConstructor@NoArgsConstructorpublic class GeneralResp { private String error; private boolean success; //默认false private Object data;

2021-02-04 10:08:29 362

原创 笔记:JQuery遍历页面内所有的input并赋值

直接上// 将所有 input 的值初始化为 0// 方法一: $("input").each(function () { $(this).val(0) })// 方法二: var inputs = $("input") for(let i=0; i < inputs.length; i++){ $(inputs[i]).val(0) // 数组中每一个元素表示当前标签得用选择器再次选

2021-01-26 10:17:24 2676

原创 学习:CAS算法的理解和ABA问题的解决

学习了CAS算法的原理,以及ABA问题的解决。记录个人理解。CAS 算法:全称 Compare And Swap ,比较交换算法。举个例子说明算法的思路:有一个变量 int a = 0;在多线程条件下,每个线程使变量 a 进行自增操作有一个线程 线程1线程1 对 a 的操作如下: 1. 获取 a 当前的值,并保存为 a1 2. 计算 a1 + 1 的结果 3. 检查 a 当前的值,并与 a1 进行比较如果比较结果相同,则将计算后的值赋给 a,完成自增;如果比较结果不相同,则将重复

2021-01-04 17:13:05 190

原创 解决:Vue 方法的同步问题

记录一个坑,Vue 在业务驱动学习,不免踩了很多坑,不过这个问题其实并不是仅出现在Vue中,属于 Ajax 的同步/异步问题。虽然我不是前端开发,但也避免不了写 Ajax ,长时间使用Ajax 一直都忽略了一个致命问题,那就是同步问题。大家知道Ajax出现就是为了实现异步请求服务器防止页面卡顿,然而并不是所有的业务都要基于异步执行,或者说有些逻辑必须要同步执行,即执行完某一个后台请求后才能继续执行代码。忽视的问题,就是脚下的坑。。。问题描述现在有这样的一个业务,希望在进入页面和页面结束时记录时间戳,首

2020-12-11 10:36:29 3879

原创 解决:微信网页开发,通过 navigator.mediaDevices.getUserMedia() 获取摄像头输入流踩的坑

绕了很大一圈其实解决方法很简单。如果有类似业务需求的可以参考。最近获得了一个需求,微信公众号网页开发,要做一个页面获取手机的摄像头功能,显示在页面里,然后再加样式。我一个后端研究这么个破东西查了一上午资料。最初的想法是,通过微信的jssdk获取手机摄像头的使用权限,调用微信的接口来使用摄像头拍照,一切都是顺理成章,在手机端顺利的调到了摄像头功能。wx.chooseImage() // 具体的实现见微信 JSSDK 文档然而。。。这个方法直接调出了摄像功能,效果就是全屏显示照相功能,直接跃出了

2020-12-08 15:24:14 8935 25

原创 时间复杂度如何计算

计算一些简单的算法时间复杂度。今天算是简单了解了时间复杂度的计算方法。简单概念算法的时间复杂度:是指算法的时间度量,记作 : T(n) = O(n)其中, n 为问题的规模。 f(n) 是表示问题规模的某个函数。 T(n) 是算法的时间复杂度。算法的时间复杂度建立在数据规模与执行次数的函数关系上。所以完整的分析过程是:1. 分析数据规模与操作次数之间的函数关系2. 按 大O阶 方法推导算法的时间复杂度大O阶 方法计算的时间复杂度推导 大O阶 的方法: 1.用常数 1

2020-12-01 17:17:46 6272

原创 解决:SVN解决冲突

Intelij idea 使用SVN,提交代码前先更新代码,此时如果有冲突,就会提示你解决冲突。产生冲突的情况:    A 和 B 两名程序员,分别更新了同一版本 version 1 的代码。同时修改了一个文件。    A提交代码后,服务器中的代码是 version A 即 A 修改后的代码,    B随后提交代码,由于服务器中的代码已经不是 B 一开始更新的 version 1,

2020-11-11 22:13:33 121

原创 理解:Redis作用

自己的疑问,自己的理解。Redis 是干啥的?Redis是一个用于缓存数据库热点数据的nosql数据库,它在内存中做数据的存储。特点是比传统数据库的读写速度快。由于内存存储数据,状态是瞬时数据,数据安全性不高,需要通过持久化来保证数据的可恢复性。Redis 缓存的是热点数据。如何保证缓存的数据是热点数据?如果没有缓存预热,第一次查询时将缓存的数据设置过期时间,每次查询数据库都刷新/重置这个过期时间,那么热点数据的过期时间会经常的刷新和重置,最终 冷数据 不被经常查询到达过期时间就从缓存中淘汰掉。

2020-11-07 16:53:31 312

原创 学习:锁升级过程理解

理解锁升级过程四种锁状态: 无锁态,偏向锁,轻量级锁,重量级锁使用 synchronized 给对象加锁的过程会发生上方四种状态的迭代。锁升级:新建一个对象,他是无锁态,当A线程访问此对象发现他是无锁状态那么将此对象升级为偏向锁,并且在 markword 中使用 54bit 来保存当前线程的信息,在后三位标记为 001 。A线程下次可以直接访问这把锁。当B线程与A线程同时访问这个锁,那么撤销偏向锁标记,然后A线程与...

2020-11-07 16:05:40 152

原创 学习:JVM扫盲

HotSpot: 一种虚拟机,是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。TLAB: Thread Local Allocation Buffer,每个线程在Java堆中预先分配一的小块内存,即线程本地分配缓存区。是仅供当前线程存放对象的内存块,其他线程不能在此区域存放对象。可解决多线程中,新建对象时的线程安全问题。通过 -XX:+/-UseTLAB 设置。分配时线程独占,读取、使用、回收时线程共享。被 HotSpot 采用。运行时内存区java虚拟机运行时的

2020-11-03 18:53:49 75

原创 学习:从源码角度分析 ArrayList 和 add(E e)

尝试分析ArrayList源码。首先看一下他的 类图 的结构可序列化、可克隆、可迭代、可随机访问。可随机访问这个接口,就是说for循环遍历集合会优于迭代器遍历。间接继承了collection 和 list 接口,一般常用 list 接口的方法。常用 list 通过多态引用 ArrayList 对象。上图就是说 ArrayList 中有上方直接或间接父类、接口中的功能的集合体来看 ArrayList 中的部分参数,源码: //默认的初始容量 private static final

2020-10-29 22:21:17 111

原创 学习:JsonP跨域的实例,Jsonp原生和JQuery方法,JAVA后端ssm/springB/C

要了解同源策略,导致跨域,如何解决。直接写前端的三种跨域方式,怕忘了自己的思路,记下来免得以后再去找。代码:<!DOCTYPE html><html> <head> <title>Title</title> <script crossorigin="anonymous" integrity="sha384-AQhQSZGQWTMJhb/TdS7NWpCmOM/8lIEsaevSU5oZtt8pQKoa+uJL4A2WnQ

2020-10-22 15:30:49 92

原创 工具:自己写的分页工具类

实现分页功能的方式很多,其中较为便捷的就是分页插件,这里是我自己封装的分页工具类,便于以后拿来直接用。逻辑简单、易于理解、封装轻巧、便于使用,当然追求强大功能的项目还是去引分页插件的依赖吧。代码:import java.util.List;/** * 分页辅助类 * 分页参数计算半自动化 辅助传递参数 * 必须先初始化查询 表 的 数据总数 totalItems * @param <T> 查询的参数类型 */public class PageInfo<T> {

2020-10-21 16:25:39 273

原创 解决:前端页面内容显示中文乱码的情况

昨天包括以前都出现过这种情况,结合经验和网络资料自己总结一下,出现这种情况一般经过以下几个步骤就可以解决:思路:确定开发工具的各种编码格式配置为 utf-8确定前端页面的编码格式request,response携带的数据的编码格式,可通过 过滤器 设置 CharacterEncodingFilterssm\springB 等项目的 controller 中的注解 @RequestMapping(produces = “application/json;charset=UTF-8” )链接数据

2020-10-21 14:32:31 4573

原创 学习:Mybatis中<forEach>标签的使用

遍历 对象数组 的方式描述:想要通过 Mybatis 动态 sql 实现,批量添加 数据进入数据库时,Dao接口参数设置为实体类型数组,Mapper 的对应方法使用 forEach 标签遍历此数组。代码:dao 接口的方法: /** * 批量插入 * @param goods 货物数组 * @return 影响行数 */ int bulkInsert(Good[] goods);接口中接受的参数是 对象类型的数组mapper 文件对应的 S

2020-10-21 13:57:26 171

原创 学习:Spring-core的序列化工具 SerializationUtils

序列化和反序列化工具,sping-core依赖中封装了此工具,通过两个方法可以将Object类型序列化成 byte[ ] 格式的数据。反之可以将 byte[] 类型的数据反序列化为Object类型。源码:public abstract class SerializationUtils { public SerializationUtils() { } public static byte[] serialize(Object object) { if (obj

2020-10-17 17:04:01 678

原创 学习:JDBC基本使用步骤忘了还好意思学JAVA吗?

整理一下JDBC

2020-10-17 16:56:13 186 4

原创 学习:SSM框架搭建

记录一次搭建简单SSM框架的较详细过程。共本人学习记录交流使用,如有错误或建议恳请批评指正。整体思路:创建maven的webapp工程;为pom文件添加依赖,如:springmvc,spring-context,spring-mybatis 和 druid 等;编写webapp.xml,配置:dispatcherServlet,编码过滤器 和 spring容器监听器;在resources资源文件夹根目录下创建并编写spring_mvc_config.xml配置文件,配置:静态资源放行,视图解析

2020-10-12 23:10:15 88 2

原创 学习:HashMap遍历方式

消化吸收HashMap的四种遍历方式。keySet()方法       使用map.keySet()获得map集合中的所有key,保存在一个Set集合中。遍历这个Set集合同时通过map.get()方法获取到key对应的value Set<String> keys = map.keySet(); for( String key:keys){ System.out.println(key+"

2020-10-12 10:44:13 61

原创 学习:记录Spring-JDBC的简单使用

环境搭建:在SpringBoot中使用Spring-JDBC。首先搭好SpringBoot,1. pom.xml中的依赖<dependencies> <!--springBoot的web启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st

2020-10-04 23:33:44 67

原创 解决:Failed to load resource: the server responded with a status of 405 ()

不知道你们是什么情况,我一个小时解决,我就是个zz情况描述:先贴错误码前端:后端:17:24:35.873 [http-nio-8091-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet - GET “/openingManagerSystem_war_exploded/notice/addNotice.html”, parameters={}17:24:35.874 [http-nio-8091-exec-2]

2020-09-24 18:30:34 63363 2

原创 有关IntelliJ ssm框架的maven项目打war包部署后,报404

记录爬了两小时的坑。今天在写单点登录的功能时,项目写好需要部署到服务器集群,由nginx代理负载均衡,而部署项目后发现请求全部404。问题描述:手动部署项目到Tomcat中,我的操作步骤:检查好项目,运行成功后。打包将包放入服务器的webapp目录下启动所有tomcat启动nginx在浏览器向nginx发送请求按照步骤完成后,得到了一个可爱的404页面。原因分析:进入服务器的manager/text页面点击对应项目的Start按钮页面报错FAIL - Applicati

2020-09-22 21:01:33 452

原创 有关一台机器启动多个tomcat,只能启动一个,而其他tomcat启动失败的解决

我的解决方法:首先,前提是能通过bin目录下的startup.bat启动一个tomcat,这说明jdk、jre环境变量配置没有问题。修改端口号修改端口号是必要的条件,保证各个tomcat的端口号不重复,且设置的端口号没被系统或其他软件占用增加CATALINA_HOME环境变量贴几张图:1.在系统变量中新建2.在Path中添加...

2020-09-22 19:03:59 1114

原创 学习:简要总结 Spring bean 的生命周期

Spring Bean生命周期

2020-09-22 00:16:07 103

原创 解决:关于ssm框架前端ajax请求,后端返回数据正常,而前端接收到的数据为undefined的情况

记录一个菜鸟用周末两天时间爬出的一个坑,我xx真的服了。以下描述内容不够严谨,过程就是这么个过程,细节不讲。内容用于个人学习记录和交流,如有问题还请批评指正。问题描述:最近学习的ssm框架,其中比较重要的功能就是默认集成了jackson,当使用@ResponseBody注解标注的controller方法,该方法的返回值不解析成地址,交给请求体发送回前端,如果返回值是对象,那么jackson会自动将对象转换成json字符串。 这个坑是如何踩到的? 在前端通过ajax向服务器发送请求,过程完美

2020-09-20 22:01:39 5458 2

空空如也

空空如也

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

TA关注的人

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