初学Rails遇到的坑--总结 P:Problem,遇到的问题。 A:Answer,解决方案P:1.edit.html submit为什么没有自动跳转到update?A:因为请求方法默认为post,在前端控制台改为put可解决; 具体原因应该是rails版本不同的原因,rails7的写法有所改变P:2.docker-compose启动时报错:bundler: failed to load command: rails (/usr/local/bundle/bin/rails)A:删掉docker-com...
Mybatis如果在select sql 中不写resultType或resultMap会发生什么 1.结论如果select sql 中不写 resultType 或 resultMap在运行该 sql 时会抛出org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement '****(具体的sql方法)' It's likely that neither a Result Type nor a Result Map was s
Zookeeper总结分享 1. Zookeeper基本概念1.1. Zookeeper简介ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper Service集群是一主多从结构。.
BeanUtils.copyProperties使用时需要注意的地方 简介:Spring给开发者提供了一个对java对象进行属性处理的工具类 BeanUtils,如果有两个对象具有大量相同的属性,并且想要把一个对象的属性拷贝到另一个对象里时,我们可以使用BeanUtils.copyProperties(source,target) 方法。用法:BeanUtils.copyProperties(Object source, Object target) 方...
Redis持久化总结(RDB+AOF) Redis的持久化Redis有两种持久化的方式:快照(RDB文件)和追加文件(AOF文件):RDB方式会在一个特定的间隔保存当时的数据快照; AOF则会记录每一个服务器收到的写命令,当服务器启动时,这些记录会逐条执行来重建出原来的数据; Redis的持久化可以被禁用,即可以让Redis的数据的生命周期只存在于服务器的运行时间里; 两种持久化方式可以同时使用,但是当Redis 重启时A...
服务器CPU突然飙升和GC频繁处理 如果遇到线上服务器系统运行突然缓慢并有大量报警的现象时,那么可能系统的CPU过高或者FULL GC 次数过多,我们可以通过以下方法进行排查和解决问题。排查思路:如果因为系统突然运行缓慢导致服务不可用的时候,我们首先要做的是导出 jstack 和内存信息,然后重启系统,尽快恢复服务。这种情况的原因主要有两种:代码中某个位置读取数据量较大,导致系统内存耗尽从而 FULL GC 次数过多...
Java单例模式常用创建方式总结(饿汉式、懒汉式、登记式) 单例模式:单例模式常见有三种:饿汉式单例、懒汉式单例、登记式单例单例模式有以下特点:单例类只能有一个实例单例类必须自己给自己创建唯一实例单例类必须给其他对象提供这一实例饿汉式单例://饿汉式单例类.在类初始化时,已经自行实例化public class Singleton1 { private Singleton1() {} private static fina...
Spring 发生 has not been refreshed yet 异常 Spring发生ApplicationContext has not been refreshed yet 错误的场景为:在Spring容器初始化时发生异常,此时 Spring还没有执行 destroy(该方法中会执行 close()->doClose())方法时尝试去获取Bean时会出现这个问题。因为在Spring容器初始化时发生异常Spring会在catch块中捕捉异常然后调用...
使用Arrays.asList 的坑(UnsupportedOperationException) 我们在工作中应该会经常使用到 Arrays.asList 方法来创建 List 对象,我们通常会认为使用这个方法创建出来的 List 是 java.util.ArrayList 类型,但其实通过这个方法创建出来的是Arrays 自己的内部类 Arrays.ArrayList ,这个方法中的 add、remove 等改变数据的结构的方法会直接抛出异常,因为在使用Arrays.ArrayList 的a...
Java子线程异常及异常处理 最近使用线程池时,了解到了在子线程中抛出异常,主线程的处理方式。Java中抛出 Exception 时必须使用 try..catch 块处理,但是抛出 RuntimeException 和 Error 时可以不使用 try..catch 块来处理,但是会导致线程中断。如下为抛出RuntimeException代码示例:public class ChildThread implements...
使用Redis实现并发一致性 我们现在基本都是使用mysql来实现对金额的操作,保证数据的准确性,那能不能使用redis来对金额进行操作并保证数据的准确性呢?可以利用 redis 的事务来实现这个想法。redis 的 WATCH 和 EXEC 可以提供类似事务的机制:WATCH观察key是否被改动,如果提交时key被改动,EXEC将返回null,表示事务失败。假设redis客户端执行:$money = GET ke...
Spring七种事务传播特性 Spring七种事务传播特性:REQUIRED如果不存在外层事务就主动开启事务,否则使用外层事务。SUPPORTS如果不存在外层事务就不开启事务,否则使用外层事务。MANDATORY如果不存在外层事务就抛出异常,否则使用外层事务。REQUIRES_NEW总是主动开启事务,如果存在外层事务,就将外层事务挂起。NOT_SUPPORTED总是不开启事务,如果...
Redis命令之KEYS与SCAN Redis中有两种用来遍历key的数据的命令,它们分别是KEYS和SCAN。KEYS:KEYS命令的速度虽然非常快,但是因为它是一次将所有满足条件的数据都会找到并返回,所以当redis中的key非常多时对于内存的消耗和redis服务器是一种隐患,Redis2.8版本以上提供了一种更优的遍历 key 的命令就是 SCAN来解决这个问题。SCAN:SCAN命令的基本格式:SCAN...
Java内部类 内部类的种类:在Java中内部类主要分为成员内部类、方法内部类、匿名内部类、静态内部类。1.成员内部类成员内部类也是最普通的内部类,它是外部类的一个成员,所以他是可以无限制的访问外围类的所有成员属性和方法,尽管是private的,但是外围类要访问内部类的成员属性和方法则需要通过内部类实例来访问。在成员内部类中要注意两点:成员内部类中不能存在任何static的变量(但可以是 st...
Spring/SpringBoot 使用@Autowired/@Resource 获取的Bean 在方法中为NULL 昨天在开发时出现使用Spring/SpringBoot 的@Autowired/@Resource 注解依赖的 Bean 在方法调用时为NULL的情况。尝试了很多办法都没有解决,最后发现是调用的方法为 private ,改为 public/protected 就解决了。原因是 Spring 对于 private 方法不能进行代理,所以使用对象来调用该方法时,该方法中的 Bean 为 NULL...
SpringBoot初学时可能出现的问题 最近我在学习SpringBoot,SpringBoot在初学时可能会出现一些问题,下面我将列举出我在初学SpringBoot时出现的问题以及解决的方法:1.启动SpringBoot项目时报错 502,这是因为 java 版本太低,升到与 maven 对应的版本就行了,并且SpringBoot 要求 java 版本必须是 1.8 及以上。...
SpringMVC+Mybatis 使用service层获取对象正常,但是使用dao层获取对象为空 最近写毕设在项目中偷懒直接使用 dao 层来获取对象,从数据库中获取到了数据,但是不能赋给对象,但是使用 service 层获取对象就可以。后来在 mybatis 的 sqlConfig.xml 文件中增加了驼峰命名规则就可以从 dao 层直接获取数据并赋给对象了。。...
java服务端与Android客户端使用 websocket 通信 最近因为项目需要所以得使用 websocket 来进行服务器与客户端的通信。使用java 来实现服务端,Android 实现客户端。刚开始服务端使用 @ServerEndPoint 注解来实现 Websocket 服务端,但是 Android 使用的是autobahn 实现的客户端,所以一直连接不上,报错为:WebSockets protocol violation 。后面我把服务端改...
foreach中修改集合结构抛出异常的原因及CopyOnWriteArrayList 浅析 今天回头看做过的笔记时发现忘记了fail-fast的原因,所以就又复习了foreach和iterator的区别,并由此引入了ArrayList和CopyOnWriteArrayList 对 add(E e) 方法的不同。foreach 即 :List<E> list=new ArrayList<E>();for(E e:list){System.out.pr...