自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 字典组件(前端使用)

字典组件,方便前端管理字典

2022-09-30 11:07:46 790 2

原创 国际化组件

国际化组件,用于前端多语言翻译

2022-09-30 11:05:52 329

原创 liquibase(数据库管理)

sql管理工具,类似git

2022-09-30 11:03:33 1249

原创 mysql-binlog查看日志命令

mysqlbinlog.exe--base64-output=decode-rows-v--start-datetime="2020-11-1911:40:00"--stop-datetime="2020-11-1911:40:00"C:\Users\dingr\Desktop\新建文件夹\mysql-bin.000048>C:\Users\dingr\Desktop\新建文件夹\mysql-bin.000048.log

2021-02-05 17:11:52 112

原创 netty实现消息通信

需求如下:物业系统A、B、C,很早之前都是单机应用,部署在小区机房,现提出云平台概念,用来统一管理各个物业系统,所有的用户请求都先走云平台,通过云平台采集信息,然后转发给下游各个物业系统。实现:此处使用netty通信,为什么用netty呢,而不直接使用转发?因为由于物业机房ip不固定,所以只能使用socket长连接方式发送消息。云平台维护一个socket连接池,简单来说就是内存里的一个map(可优化成redis),小区应用会启task一直尝试连接云平台(推送心跳消息),需要发送消息时,通过小区唯

2020-09-29 11:15:57 386

原创 微信小程序开发-坑4

切记!切记!切记!小程序开发,需要注册公网域名,一般优先推荐腾讯云服务器,申请域名会快些,阿里云需要2-4个星期

2020-09-29 11:00:31 123

原创 微信小程序开发-坑3(打通小程序->公众号用户共享信息)

这里有2种方式,我们选择了最简单的一种1.前端小程序控制,用户使用小程序时,必须先关注公众号2.用户在进入小程序时,我们可以拿到用户的unsionId(可以理解为sessionID,小程序和公众号的unsionID相同),存入关系表(三个字段、公众号openid、小程序openid、unsionid)。3.task定时调用公众号接口获取关注用户列表(公众号openid、unsionid),补充关系表(此处切记,必须关注公众号,否则api查不到数据)...

2020-09-29 10:50:52 440

原创 微信小程序开发-坑2(测试环境api参数与官方文档不一致)

发送模板消息,官方定了入参pagepath,但在测试环境调试时,应改成path或者page,否则接口调用不通,切换到正式环境再传pagepath

2020-09-29 10:41:26 406

原创 微信小程序开发-坑1(api调用方式)

大坑,调用微信api最好使用jdk原生api,一开始用的ali的httputils,接口死活返回code已被使用,可能是httputils经过了两次转发private String LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=APPSECRET&js_code=JSCODE&grant_type=authorization_code";private .

2020-08-18 10:03:21 560

原创 并发+事务处理不当引起的部分数据被提前消费

今天线上出现了一个诡异bug,部分数据被提前消费。由于业务流程保密问题,下面用例子详解场景:现在有个需求,学校需要统计每个班,每天的考勤情况我们用两个定时任务来解决,定时任务A插入考勤数据,定时任务B统计考勤数据定时任务之间可能存在并发。package com.test.scholl.service.impl;// 定时任务A执行方法public void inser...

2020-04-30 10:16:21 167

原创 善用Websocket替代前端轮询请求接口

一、由来WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。实际场景:实时获取后台数据,首先想到的一定是ajax每隔几秒不断轮询调用后台接口,这种方式可以实现,简单粗暴,但是一次次的请求会浪费很多的带宽资源。在java中,有消息中间件MQ,客户端向Broker中间件发消息,服务端监听Broker,也可替换http接口调用实现数据传输。htm...

2019-05-20 16:31:01 6189

原创 并发优化

本篇主要讲解的是前阵子的一个压测问题,那么就直接开门见山。可能有的朋友不并不知道forceTransactionTemplate这个是干嘛的,首先这里先普及一下,在Java中,我们一般开启事务就有三种方式: XML中根据service及方法名配置切面,来开启事务(前几年用的频率较高,现在基本很少用) @Transactional注解开启事务(使用频率最高) 采用...

2019-05-07 14:07:00 1139 1

转载 天才算法-睡眠排序

它的基本思想是:主要是根据CPU的调度算法实现的,对一组数据进行排序,不能存在负数值,这个数是多大,那么就在线程里睡眠它的10倍再加10,不是睡眠和它的数值一样大的原因是,当数值太小时,误差太大,睡眠的时间不比输出的时间少,那么就会存在不正确的输出结果。public class SleepSort { public static void main(String[] args...

2019-05-07 11:23:50 806

原创 Gson转换json对象字段为null时转换问题

使用new GsonBuilder().serializeNulls().create()这个方法创建gson对象,就可以将为null的字段也能转换出jsonGson gs = new GsonBuilder().serializeNulls().create();String data = gs.toJson(backModel);...

2019-05-07 11:10:48 7985 1

原创 mysql int(11)问题

mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度.tinyint可以存储1字节, 即unsigned 0~255(signed -127~127)。显示大小不受此限制 (所有整数类型相同),即使设为1,也可以存入和取出大于10的数。int类型实际最大长度是-2147483646~2147483647括号里的数字,实际最大长度是2147483647即...

2019-04-29 14:04:36 439 1

原创 java形参...的传参问题

最近调用java api遇到个很简单的小问题,贴图如下public void setTriggers(Trigger... triggers) { this.triggers = Arrays.asList(triggers); }java使用省略号代替多参数(参数类型... 参数名),也就是最少传一个,上限不限制,J2SE 1.5开始提供了这种机制。业务场景...

2019-03-01 15:38:28 906 1

原创 springboot使用quartz定时任务

1.需引pom<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version>

2019-03-01 15:14:49 166

原创 springboot配置log4j2踩地雷

需要引入pom如下,必须exclusions排除springboot自带的logback和slf4j jar包,否则log4j2配置一直不生效<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j...

2019-03-01 14:47:03 162

原创 二级域名、一级域名、顶级域名

域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,简而言之,有多少个点就是几级域名。baidu.com 是一级域名XXX.baidu.com 是二级域名( 、zhidao.baidu.com等都是在一级域名baidu.com 下面设置的二级域名)一级域名是妈妈,二级域名是儿子“一级域名”就是在“com top net org”前加一级"二级域名"就是在一级域名前

2017-09-19 09:55:54 1165

原创 动态代理

动态代理涉及到的类或接口java.lang.reflect.Proxy Java动态代理机制的主类,提供了一组静态方法来为一组接口动态地生成代理类及其对象。java.lang.reflect.InvocationHandler 调用处理器接口,它自定义了一个invoke方法,用于集中处理在动态代理对象上的方法调用,通常在该方法中实现对委托类的代理访问。java.lang.ClassLoad

2017-09-12 17:30:26 238

原创 ibatis使用注意

标签的正确使用ibatis作为一种半自动化的OR Mapping工具,其灵活性日益体现出来,越来越多的人都倾向于在项目中使用。由于SQL中经常有与xml规范相冲突的字符,对xml映射文件的合法性造成影响。许多人都知道使用标记来避免冲突,但是在SQL配置中有动态语句的时候,还是有一些细节需要特别注意的。举例说明:1. 符号“select id="find" parameterCl

2017-09-12 17:27:35 268

转载 过滤器与监听器

过滤器1、Filter工作原理(执行流程)              当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向

2017-09-11 17:36:32 299

转载 迭代器Iterator与for循环的区别

迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部.1.IteratorJava提供一个专门的迭代器>Iterator,我们可以对某个序列实现该interface,来提供标准的Java迭代器。Iterator接口实现后的功能是“使用”一个迭代器.

2017-09-11 15:34:42 27226 5

转载 项目管理-敏捷开发

说起敏捷开发,并不是因为敏捷而敏捷。这几年的敏捷开发已经被很多敏捷咨询服务商神话了,这个东西并不是神器,实施了就可以解决所有软件公司的问题,而是要结合自己公司的特点和问题摸索出适合自己的一套模式。  大家都知道,创业公司刚开始需要研发出一款产品并且能够使公司赚钱的产品,不过大部分创业公司没有那么容易一下就能做出来,很多公司还没有成功的产品资金链就断掉了,公司也死掉了。我们公司是这样一个状况

2017-09-11 14:52:16 571

原创 圆桶概念

新功能上线,收集用户喜好,不可能直接把新功能全上去,也就只能部分用户看到新模块,部分用户看到老系统,采集能看到新功能用户的页面操作,数据分析如何实现?涉及圆桶概念,根据本地cookie值转hash值做%运算取绝对值=7580%的用户看到老系统,20%的用户看到新模块架构:模块分为1.前端代码多个模块通过import引入 A模块+B模块+C模块=页面a2.计算哪些用户

2017-09-08 20:26:00 356

原创 阿里双11抢购之限流

1.获取每个用户对应的本地cookie2.将cookie值转换成hash值进行与运算%100=-75 获取绝对值753.对80以下的用户进行限流(2条分支)(1)不限流(2)限流通道:直接返回静态页面

2017-09-08 19:55:23 599

原创 事物-知晓一二

事物秉性原则:将事务极可能的缩小。一个事务越大,它存在的风险也就越多。事物的传播机制可分为:1.requied 必须地 (Spring默认的传播级别)如果上下文中存在事物,则加入事物;如果上下文中不存在事物,则新建事物执行。该级别能满足大多数的业务场景。2.supports 支持如果上下文中存在事物,则加入事物;如果上下文中不存在事物,则已非事物状态执行。

2017-09-08 11:01:46 447

转载 项目组成员开发注意事项

a.注意主线,要优先开发程序中重要的部分,即使在开发中处错误,影响进度,还可以有可以展示的东西PM:(技术上不一定是组内最牛的,但需要协调好组内气氛)①团结所有组员,不能自己单干②针对每天讲课内容进行总结,确保项目组每位成员都已经接收③及时了解组员存在问题,避免人员流失(出工不出力)④分工⑤监管项目进度TL:(技术上过硬)①与PM配合完成工作

2017-09-08 10:52:35 775

原创 项目开发注意

近日,阿里同学针对 项目开发整个流程应该如何运行 进行培训,深受感染。针对开发简而言之,总结如下:1.粗粒度的系分 -->落地文档系分:识别关键点迭代:识别影响点50%思考,50%文档2.整个开发实际可分成三个过程(该干的活):(1)事前:规避 场景考虑,规避能想到的点(2)事中:先于业务方发现问题如果出现问题,代码是否有做处理如catc

2017-09-08 10:49:35 257

转载 oracle 中的 CONCAT,substring ,MINUS 用法

有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:MySQL: CONCAT()Oracle: CONCAT(), ||SQL Server: +CONCAT() 的语法如下:CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次

2017-09-08 10:18:12 1035

原创 mysql与oracle like小知识

like -->模糊查询 -->后匹配走索引,前匹配不走索引like "123%" -->走索引like "%123" -->不走索引like "%123%" -->不走索引一般解决方案:业务尽量避免,或采用搜索引擎在ibatis或mybatis中,mysql与oracle的like语句不同:oracle:select * from xxx wh

2017-09-07 10:12:06 535

原创 spring bean的加载过程

1.初始化bean2.依赖注入bean的所有属性3.判断bean是否实现了BeanNameAware接口,调用setBeanName()方法获取xml配置文件中该bean的id4.判断bean是否实现了BeanFactoryAware接口,调用setBeanFactory()方法获取实例化该bean的工厂实例的引用5.判断bean‘是否实现了ApplicationContext接口

2017-08-16 21:34:41 639

原创 Spring-源码解析

从入职第一天起就得知咱公司的核心开发框架SOFA,而SOFA是基于Spring容器框架的。在使用SOFA一段时间以后,最近有兴趣研究一下Spring的源代码。本文主要将调试过程详细记录下来,一来加深印象,二来将经验沉淀下来,希望能对大家有所帮助。本文结构如下:1:新建Spring工程用于调试2:IoC容器初始化代码调试  2.1    资源的定位  2.2 

2017-08-16 14:00:29 210

转载 java反射机制

学习目标1.了解反射机制2.反射获取类中公有(包含父类)和所有方法、变量3.反射获取基本类型常量一、Java 反射机制参考了许多博文,总结了以下个人观点,若有不妥还望指正:Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及动态调用对象的方法 的功能称为 java

2017-08-14 15:14:40 370

原创 Enum枚举

学习目标1.enum的使用2.enum反向查找(可使用values()获取遍历,或静态代码块初始化enumSet,通过get(key)获取)在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。在Java中想表示这种数据集最容易想到的写法可能

2017-08-14 14:34:50 446

原创 自定义注解

学习目标:1.了解自定义注解2个中心(生命周期,使用场景)2.了解自定义注解属性设置一、认识注解  注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK1.5之后

2017-08-14 12:19:46 418

原创 getClass()和getSimpleName()的区别和作用

Class类,是获取类的类模板实例对象,通过反射的机制获取。根据API中的定义,Class.getSimpleName()方法。是获取源代码中给出的‘底层类’简称(仅仅类名)而Class.getName();以String的形式,返回Class对象的‘实体’名称(包名+类名)应用:打印日志 aop中判断class名称等

2017-08-14 10:56:54 495

原创 Spring ioc-BeanWrapper

BeanWrapperBeanWrapper是Spring IOC内部操作bean对象的api。BeanWrapper是对bean的包装。其接口中所定义的功能:1.    设置获取被包装的对象,2.    获取被包装bean的属性描述器,3.    由于BeanWrapper接口是PropertyAccessor的子接口,因此其也可以设置以及访问被包装对象的属性值。 

2017-08-14 10:07:13 383

原创 java 内省机制与反射机制 的区别

内省,是针对JavaBean对象的。只有符合JavaBean规则的类的成员才可以采用内省API进行操作反射,就是把一个普通类中的每个组成部分都可以单独取出来,对其每一个成员的调用或者修改不必依赖于new对象。一个类的所有成员都可以进行反射操作内省技术访问JavaBean,可以认为是和反射很像,但是内省和反射是不相同不相等的。

2017-08-11 23:36:54 571

原创 java 内省机制

内省(IntroSpector)是Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需

2017-08-11 23:30:49 167

git常用操作

git常用指令

2017-06-09

空空如也

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

TA关注的人

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