- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 微信小程序post请求发送json数据时,后端报json解析错误或得到的都是null
问题描述小程序发送一个json对象(字符串格式),后端用@RequestBody接收。后端代码不变,使用postman发送数据时一切正常;但如果前端用微信小程序发送,后端就无法接收到数据(报json解析错误或不报异常,但接收到的属性都是null)。原因: 小程序发送请求时data设置错误wx.request({ url: `xxx`, method: 'post', // 发送的格式为 key: {key:value,key:value,...} ,这时右侧的{..}才是我们
2020-11-26 16:32:37
4021
1
原创 Mybatis 批量插入Batch模式与foreach对比
mysql默认接受sql的大小是 1M, 即第三种方式若数据量超过1M会报如下异常:(可通过调整MySQL安装目录下的my.ini文件中[mysqld]段的"max_allowed_packet = 1M")JDBC连接url中添加参数rewriteBatchedStatements=true可准备工作表结构CREATE TABLE `t_user` ( `id` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '主键', `name`.
2020-11-25 13:19:24
4581
5
原创 微信小程序POST请求 Required Date parameter ‘xxx‘ is not present
问题描述:最近做项目与前端进行交互时,突然出现了 Required Date parameter 'xxx' is not present错误.解决思路这时第一反应是前端传递的参数名称/类型是否与后端要求的不一致,经检测排除.然后又认为是接口本身出现了问题,使用postman测试发现正常响应结果,排除正准备启用万能的百度时,突然想到是不是请求头中content-type设置错误导致的问题,打开控制台->network->查看请求头,发现微信小程序Post默认请求为content-ty
2020-11-23 09:34:38
3936
3
原创 Java基础工具类之Scanner类和Random类
Scanner类什么是Scanner类一个可以解析基本类型和字符串的简单文本扫描器。 例如,以下代码使用户能够从 System.in 中读取一个数:Scanner sc = new Scanner(System.in);int i = sc.nextInt();备注:System.in 系统输入指的是通过键盘录入数据。引用类型使用步骤导包使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。 格式:import 包名.类名;
2020-09-26 13:49:30
311
原创 Junit新语法assertThat
Unit4.4 结合 Hamcrest 提供了一个新的断言语法——assertThat.使用assertThat的一个断言语句结合 Hamcrest 提供的匹配符,就可以表达全部的测试思想.assertThat的基本语法assertThat(value, matcher)/**数值匹配**///测试浮点数是否在1.0~8.8之间assertThat(test1.getShares(), closeTo(1.0,8.8));//测试变量是否大于指定值assertThat(test1.getShar
2020-09-15 08:52:28
1430
原创 MIUI12 Google Play从服务器检索信息时出错 df-dferh-01
如果你正在使用MIUI 12系统,那么有可能是系统拒绝Google Play启动Google框架导致的(默认拒绝链式启动),可以在设置→应用设置→应用管理→应用行为记录,确认下是否这个原因。如果是,点击应用管理→权限→自启动管理,把google相关的程序全部允许就好了有时候修改完自启动软件,还需要重启一下手机...
2020-09-10 11:08:25
18409
1
原创 SpringBoot三种系统启动任务
ServletContextListenerweb项目一般定义一个 ServletContextListener,然后就可以监听到项目启动和销毁,进而做出相应的数据初始化和销毁操作public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { //在这里做数据初始化操作 }
2020-09-10 08:23:11
768
原创 Spring Bean生命周期中各方法的执行顺序及代码
方法的执行顺序Bean 容器 / BeanFactory 通过对象的构造器或工厂方法先实例化 Bean;设置对象属性检查 xxxAware 相关接口,如果有就调用相应的 setxxx 方法把所需要的 xxx 传入到 Bean 中。检查是否存在有关联的 BeanPostProcessors执行执行 postProcessBeforeInitialization() 方法进行前置处理调用 @PostConstruct注解的方法如果 Bean 实现了 InitializingBean 接口,执行 a
2020-09-02 14:23:05
483
原创 @Transactional 事务失效场景大全
1.确保已开启TransactionManagment如果你的项目引入了boot-starter的jar包,则不需要自己配置DataSourceTransactionManager,springboot自动配置特性会帮你配置。如果未正确配置,则需在Application启动类上,使用注解@EnableTransactionManagement让springboot帮你配置。不建议重写config类,自己实现改配置2.确保@Transactional注解的方法的修饰符@Transaction作
2020-08-25 19:11:16
336
原创 MySQL 解决大数据量limit分页执行时间很长
执行时间长是因为数据库要去扫描 N + M 条记录,然后又要放弃之前 N 条记录,开销很大解决思路:前端加缓存,或者其他方式,减少落到库的查询操作,例如某些系统中数据在搜索引擎中有备份的,可以用 es 等进行搜索使用延迟关联,即先通用 limit 得到需要数据的索引字段,然后再通过原表和索引字段关联获得需要数据select a.* from a,(select id from table_1 where is_deleted='N' limit 100000,20) b where a.id =
2020-08-24 15:29:19
650
转载 面向对象设计原则
开闭原则(Open-Closed Principle, OCP)一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。这是面向对象设计(OOD)的基石,也是最重要的原则。接口隔离原则(Interface Segregation Principle, ISP)一个类对另外一个类的依赖是建立在最小的接口上。使用多个专门的接口比使用单一的总
2020-08-22 17:47:44
140
转载 Spring常用注解大全
文章目录文章目录0.前言1. @SpringBootApplication2. Spring Bean 相关2.1. @Autowired2.2. Component,@Repository,@Service, @Controller2.3. @RestController2.4. @Scope2.5. Configuration3. 处理常见的 HTTP 请求类型3.1. GET 请求3.2. POST 请求3.3. PUT 请求3.4. DELETE 请求3.5
2020-08-18 23:56:41
1033
转载 Maven配置阿里云HTTPS镜像地址
打开 Maven 的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在标签中添加 mirror 子节点:<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/pu
2020-08-13 16:41:14
2189
原创 Redis高级数据结构GEO/HyperLogLog/BitMaps
Bitmaps 位图由二进制数组成的数组叫做位图SETBIT key offset value 给位图指定索引设置值GETBIT key offset 获取位图指定索引的值BITCOUNT key [start] [end] 获取位图指定范围(start到end,单位为字节,如果不指定就是获取全部)位值为1的个数BITPOS key bit [start] [end] 获取位图中第一个值为 bit(0/1) 的二进制位的位置。位图应用如果一个网站有1亿用户,假如user_
2020-08-13 16:17:29
346
原创 消息队列的流派及分类
文章目录什么是消息队列核心概念消息队列的数据结构消息队列的两大流派有 Broker重 Topic轻 Topic无 BrokerActor 模型Actor 是异步的并发原语调度什么是消息队列MQ (Message Queue),消息队列可以理解为一种在 TCP 协议之上构建的一个 简单的协议,但它又不是具体的通信协议,而是更高层次的 通信模型 即 生产者 / 消费者模型,通过定义自己的生产者和消费者实现消息通信从而屏蔽复杂的底层通信协议;它为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用
2020-08-10 18:16:09
632
原创 图解为什么 Java 中只有值传递?
按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。example 1public static void main(String[] args) { int num1 = 10; int num2 = 20; swap(num1, num2); System.out.println
2020-08-07 15:29:08
128
原创 布隆过滤器原理以及java/redis使用
文章目录布隆过滤器布隆过滤器原理使用场景利用Google开源的 Guava中自带的布隆过滤器Redis 中的布隆过滤器使用Docker安装命令布隆过滤器布隆过滤器是用于判断一个元素是否在集合中。通过一个位数组和N个hash函数实现。(某样东西一定不存在或者可能存在.)优点:空间效率高,所占空间小。查询时间短。自带去重缺点:元素添加到集合中后,不能被删除。有一定的误判率布谷鸟过滤器解决了布隆过滤器无法删除的问题布隆过滤器原理当一个元素加入布隆过滤器中的时候,会进行如
2020-08-05 17:55:30
1672
转载 HashMap Infinite Loop
RehashHash表当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大Hash表的尺寸,但是这样一来,整个Hash表里的无素都需要被重算一遍。这叫rehash,这个成本相当的大。正常的ReHash的过程我假设了我们的hash算法就是简单的用key mod 一下表的大小(也就是数组的长度)。最上面的是old hash 表,其中的Hash表的size=2, 所以key = 3, 7, 5,在mod 2以后都冲突在table[1]这里了。接下来的三个步骤是Hash表
2020-08-01 18:44:41
219
转载 oAuth2协议
文章目录什么是 oAuth传统账号密码方式登录的问题交互过程开放平台令牌的访问与刷新Access TokenRefresh Token客户端授权模式简化模式授权码模式密码模式客户端模式什么是 oAuthoAuth(哦 si)协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。传统账号密码方式登录的问题“
2020-08-01 15:49:19
314
原创 Java通过POI操作Excel
文章目录POI简介Excel 03版与07版区别使用基本写基本读读取不同类型的数据公式计算POI简介基本功能HSSF - 提供读写Microsoft Excel XLS格式文件的功能。XSSF - 提供读写Microsoft Excel OOXML XLSX格式文件的功能。SXSSF -XSSF高速版HWPF - 提供读写Microsoft Word DOC格式文件的功能。HSLF - 提供读写Microsoft PowerPoint格式文件的功能。HDGF - 提供读Microsoft
2020-07-29 11:00:08
298
原创 MySQL性能优化之索引与执行计划
文章目录SQL执行过程分析执行计划索引创建索引的缺点创建索引的建议索引类型确定前缀索引的长度全文索引的使用创建索引索引数据结构Hash的局限性BTREESQL语句优化join使用原则分页查询优化索引失效SQL执行过程通过网络的通讯协议接收客户端传入的SQL查看该SQL对应的结果在查询缓存中是否存在存在则直接返回结果不存在则继续往下走由解析器来解析当前SQL,最终形成初步的解析树再由预处理器对解析树进行调整,完成占位符赋值等操作查询优化器对最终的解析树进行优化,包括调整SQL顺序,是否
2020-07-26 22:42:39
244
原创 从零开始学Nginx
文章目录Nginx简介基于 Docker 部署 NginxNginx命令Nginx配置nginx.conf 配置文件的结构全局配置events 配置http 配置upstream 配置server配置nginx自定义请求头Nginx 虚拟主机Nginx 反向代理代理服务器正向代理反向代理使用 Nginx 反向代理 Tomcat启动 Tomcat 容器配置 Nginx 反向代理反向代理中url的传递问题反向代理解决跨域问题Nginx 负载均衡Nginx简介Nginx 是一款高性能的 HTTP 服务器/反向
2020-07-23 16:30:41
212
原创 better-scroll 移动端滚动
文章目录简介无法滚动问题better-scroll 1.x安装起步配置参数probeType 侦测滚动到的位置click 监听按钮点击pullUpLoad 上拉加载方法on() 监听当前实例上的事件finishPullUp() 上拉加载完成refresh() DOM改变后需要刷新 better-scrollscrollTo() 滚动到指定的位置事件钩子BScroll 1.x 与Vue结合异步数据的处理数据的动态更新路由跳转时记录离开时状态和位置BetterScroll 2.x简介better-scrol
2020-07-16 16:30:49
689
原创 Vue从零开始之axios
文章目录Axios网络请求安装Axiosaxiox请求方式get请求简单使用axios同时发送多个请求axios 配置设置为全局配置axios实例模块封装回调函数方式promise方式axios原生方式(推荐)axios拦截器Axios网络请求jQuer有1w+行代码,vue的代码也才1w+行.我们只为进行网络请求就引入jQuery得不偿失.安装Axiosnpm安装npm install axios --save --registry=https://registry.npm.taobao.o
2020-07-09 22:18:57
189
原创 Vue从零开始之Vuex
文章目录Vuex 状态管理安装并导入登录状态管理sessionStorage的方法添加状态判断用户是否登录配置 Vuex存储用户信息到vuexstate数据响应式渲染mapState 辅助函数对象展开运算符mutations使用常量作为函数名调用actions异步操作 执行成功/失败时回调浏览器刷新 Vuex 数据消失手动解决问题描述解决方案修改代码使用vuex-persistedstate持久化插件Vuex模块化创建 user 模块修改 store/index.js命名空间Vuex推荐目录结构Vuex
2020-07-06 22:33:16
208
原创 Vue从零开始之VueRouter
文章目录VueRouter路由安装vue-router插件VueRouter+ElementUI基本使用创建项目,安装依赖修改目录结构创建首页视图创建登录页视图创建路由配置导入路由和ElementUI模板中渲染组件路由匹配规则路由跳转标签代码方式进行跳转VueRouter 动态路由route路由记录和route路由记录和route路由记录和router路由实例VueRouter 参数传递使用params的方式传递参数接收参数使用query方式传递参数接收参数使用 props 的方式传递参数接收参数嵌套路由V
2020-07-04 21:44:50
234
原创 Vue从零开始之Vue组件
文章目录Vue 组件组件基础组件模板抽离的写法组件中定义data/方法父子组件通信传值父传子:props属性props大小写问题子传父: 自定义事件数据双向绑定时 子传父父子组件访问父访问子 children和children和children和refs子访问父 parent和parent和parent和rootVue 插槽slot与slot-scopeVue 组件组件基础组件化就是将一个页面拆成一个个可复用功能块(组件),方便扩展和复用.注意:在实际开发中,我们并不会用以下方式开发组件,而是采用
2020-06-30 23:04:54
447
原创 Vue从零开始之Vue基础
文章目录什么是Vue?Vue使用下载node.js兼容性导入文件第一个项目Vue 实例的生命周期钩子函数的触发时机Vue常见问题input复用问题Vue语法vue对象绑定数据Vue.set 修改数组的值条件判断语句 v-if连续的条件判断语句是否展示元素 v-show循环遍历语句 v-for只渲染一次 v-once解析标签进行显示 v-html不解析直接显示 v-text不进行转义 v-prevue解析元素后会自动将 `v-cloak` 属性删除表单输入 v-modelv-model 修饰符监听事件 v-o
2020-06-24 22:57:54
646
原创 java从零开始之JUC
文章目录TimeUnit 时间单位枚举类线程安全的集合CountDownLatch 闭锁(减法计数器)CyclicBarrier 加法计数器Semaphore信号量Queue 队列BlockingQueue四种API线程池ExecutorsExecutorServiceThreadPoolExecutorForkJoin 分治ForkJoinTaskForkJoinPoolFuture异步回调atomic 原子类锁的理解CAS 乐观锁CAS的缺点可重入锁自旋锁 SpinlockTimeUnit 时间单
2020-06-18 22:42:42
246
原创 java从零开始之多线程操作
文章目录线程创建继承Thread类实现Runnable接口真实开发中,类不用实现接口,直接new线程将对象传入实现Callable接口Thread方法线程状态Thread.State线程优先级priority守护线程daemon停止线程线程同步synchronized锁的范围使用方式synchronized 优化LOCKLock与synchronized的区别Volatile指令重排Volatile与synchronized的区别线程协作通信synchronized使用等待wait与唤醒notifylock
2020-06-14 17:27:52
235
原创 java从零开始之JMM(java内存模型)
文章目录什么是JMM内存屏障JMM的一些同步的约定8种内存交换操作八种指令使用规则什么是JMMJava内存模型(JMM-java Memory Model)是Java虚拟机定义一种的规范,JMM定义了主内存和线程工作内存的抽象关系,主内存中存储了所有的变量,任意线程都可访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行.线程首先要将变量从主内存拷贝的自己的工作内存空间,然后对变量进行操作,操作完成后再将变量写回主内存,不能直接操作主内存中的变量,工作内存中存储着主内存中的变量副本拷贝.产生
2020-06-12 00:12:17
165
原创 java从零开始之初识JVM
文章目录什么是JVM?三种JVM运行时数据区堆内存JVM堆内存分配GC垃圾回收GC分类引用计数法(弃用)标记清除法标记压缩法复制算法分代收集算法(GC使用)类加载流程实例化对象流程双亲委派机制沙箱安全机制native方法常用JVM参数GC日志类堆空间大小调优Jprofiler分析内存什么是JVM?JVM是(Java Virtual Machine)Java虚拟机的缩写,是一个运行在操作系统之上的虚拟机。JVM 屏蔽了与操作系统平台相关的信息,使 Java 程序只需生成字节码就可以在多种平台上不加修改地
2020-06-09 15:02:59
202
原创 小程序获取太阳码(二维码)accessToken未到7200秒,却失效
通过阅读微信开发文档发现accessToken的有效期为2小时也就是7200秒,所以将accessToken在缓存中的过期时间设置为了7000秒,但今天测试时突然发现调用微信接口生成的太阳码图片为空。经过反复测试也没找到问题所在,只好一步步debug,最终发现是调用微信接口后响应流中没有图片,同时code为200。这时第一反映就是accessToken已过期,但从redis工具中发现accessToken刚刚申请半个小时,远没到官方规定的2小时。没办法只好通过百度获取答案了,最终我在微信开放社区获取到了
2020-06-08 14:49:07
1959
原创 pagehelper导致一对多查询分页出错
问题复现我们都知道在实际的开发中,我们经常遇到需要展示一对多的数据问题,如:一个人共有n个订单,每个订单有不定的商品,那么这种显示的数据结构就是我们的一对多数据结构:如下所示:但使用pagehelper分页导致mybatis一对多查询分页结果出错,错误原因在于,一对多collection,他计算的条数是按商品计算的(一对多的“多”,而不是“一”),比如上图中,如果分页参数是pageNum=1,pageSize=2,那么我们想要的结果应该是上图所示,但我们实际查询出来的是,只有orderNo为1的那一部
2020-06-06 02:01:05
1593
1
原创 Java的23种设计模式(2)工厂模式
文章目录工厂模式简单(静态)工厂模式工厂方法模式工厂模式实现对象创建者和调用者分离. 实例化对象不使用new,用工厂的方法替代.简单(静态)工厂模式所有产品使用同一个工厂类.创建工厂类,工厂使用不同静态方法或同一个静态方法传入不同参数去 new 不同的产品对象.消费者只需调用工厂的静态方法即可得到需要的对象.//产品接口public interface Shape { void draw();}//产品类public class Rectangle implements Shap
2020-06-04 15:01:06
112
转载 SpringBoot 整合 UEditor 完整版 解决多个Bug
文章目录1.新建SpringBoot项目,添加web和thymeleaf包2.从官网下载源代码并解压至项目,注意config.json我拷到了resources根路径下,如图:3.添加UEditorController,跳转到index页面:4.运行项目。访问路径localhost:8080,跳转到如下界面即是源码已拷贝成功5.此时发现上传图片功能不能用。下面接着看。修改pom,添加UEditor依赖的Jar包。pom文件如下:6.照着源码里的controller.jsp.依样画葫芦,写入UEditorCo
2020-06-03 14:59:19
646
原创 Java的23种设计模式(0)23种设计模式分类与简介
文章目录什么是设计模式设计模式的三个分类创建型模式结构型模式行为型模式什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们
2020-06-02 21:36:24
136
原创 Java的23种设计模式(1)单例模式
文章目录单例模式饿汉式懒汉式DCL 懒汉式枚举式单例模式不再手动创建对象,通过调用方法获取全局唯一的实例.饿汉式类一加载,实例就被创建,且只创建一次,线程安全,高效,但长时间不使用,浪费资源,public class Hungry { // 可能会浪费空间 private byte[] data1 = new byte[1024*1024]; private byte[] data2 = new byte[1024*1024]; private byte[] dat
2020-05-31 20:33:19
196
原创 基于wx-java的微信分享(包含前后端代码)
基于wx-java的微信分享简介前期准备开始配置微信公众号测试号内网穿透后端代码前端代码简介最近做了个项目用到了微信分享功能,奈何认识的同学也没人会,只好自己研究文档博客来做了。看了不少博客,每篇博客都有自己的特色,但就是没找到一篇从注册开始到分享成功的完整案例,只好打开N多页面一个个试。所以写了这篇博客希望后来人可以快速的完成微信分享功能。前期准备完成微信认证的微信公众号(个人测试可以使用微信公众号测试号)后端服务必须可以通过域名访问(个人测试可以使用内网穿透工具)后端我使用的是基于wx-j
2020-05-29 17:19:00
1935
原创 从零了解分布式主键
从零了解分布式主键分布式主键的需求解决方案数据库生成(主从)数据库生成(多主)UUIDSNOWFLAKE(雪花算法)分布式主键的需求全局唯一性: 不能出现重复的 ID 号,既然是唯一标识,这是最基本的要求。趋势递增: 在 MySQL InnoDB 引擎中使用的是聚集索引,由于多数 RDBMS 使用 B-tree 的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增: 保证下一个 ID 一定大于上一个 ID,例如事务版本号、IM 增量消息、排序等特殊需求。信息
2020-05-28 21:28:36
2272
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人