java
文章平均质量分 75
ccddsdsdfsdf
这个作者很懒,什么都没留下…
展开
-
Couldn‘t check the working tree for unmerged files because of an error. unsafe repository
比如重装系统后,D中的git项目,重新再拉取的时候,报如下错误。到项目 所以目 录打开 git bash,原创 2023-12-07 11:22:35 · 568 阅读 · 0 评论 -
Java中泛型的?和T的区别
关于java泛型中的?和T的区别之前一直停留在一些概念上,而并没有真正明白到底什么时候用?,什么时候用T。并且之前虽然有写过抽象类,但一直用的是T、Q,没有用过?,所以一直不明白?到底怎么个用法,什么时候用。但在这里还是得再提下T?的概念。原创 2023-06-08 17:27:09 · 3489 阅读 · 0 评论 -
由jar包冲突导致的logback日志不输出
最近升级一个老项目,发面日志没有按照预期的生成。原创 2023-05-30 14:13:22 · 4319 阅读 · 0 评论 -
logback实现日志信息脱敏
文章目录一、一些敏感信息比如 手机号、身份证号,不在明文在日志中打印,自定义logback转换器,将这些字段脱敏后输出1、定义一个ESensitiveDataConverter 类如下:2、logback.xml中添加如下配置:一、一些敏感信息比如 手机号、身份证号,不在明文在日志中打印,自定义logback转换器,将这些字段脱敏后输出1、定义一个ESensitiveDataConverter 类如下:import ch.qos.logback.classic.pattern.MessageConve原创 2021-11-12 12:25:53 · 7033 阅读 · 0 评论 -
apollo配置中心之--spring boot如何加载apollo
一、启动类上加入@EnableApollo注解流程如下:1.1、initializePropertySources()方法源码private static final String APOLLO_PROPERTY_SOURCE_NAME = "ApolloPropertySources";protected void initializePropertySources() { if (environment.getPropertySources().contains(APOLLO_PROP原创 2021-04-21 16:31:30 · 2320 阅读 · 0 评论 -
apollo配置中心之-如何启动源码及Config Service 通知配置变化源码解析
一、apollo整体架构apollo服务端大概有3个服务:Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口Client通过域名访问Meta Serv原创 2020-06-18 18:01:45 · 3049 阅读 · 0 评论 -
基于AOP实现权限管理:访问控制模型RBAC和ACL
前言权限、日志是系统必不可少的的功能,将这些通用的东西抽出来,以AOP方式切入系统中,可以得到非常高的复用率。在OA中,接触了ACL(access control list)模型的权限设计。在高校平台中,采用RBAC(Role Based Access Control)模型的权限设计。一、ACL实体模型下面是ACL实体模型ACL的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时,会首先检查这个列表中是否有关于当前转载 2020-06-10 17:06:31 · 453 阅读 · 0 评论 -
前后端分离后产生的跨域问题sessionid丢失,cookies无法写入等
前言现在大部分项目都采用的前后端分离,比哪后台用spring boot ,前端用vue等。一、会话机制session和cookies常用来会话保持。1. 何为一次会话,会话从什么时候开始,从什么时候结束?一次会话是指: 好比打电话,当A打给B,电话接通了 会话开始,持断会话结束。 浏览器访问服务器,就如同打电话,浏览器A给服务器发送请求,访问web程序,该次会话就开始,其中不管浏览器发送了多少请求 ,都为一次会话,直到浏览器关闭,本次会话结束。2.cookies如何保持会话,它的工作流程?工作原创 2020-06-09 15:36:42 · 11307 阅读 · 2 评论 -
SLF4J和Logback和Log4j和Logging的区别与联系
前言Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能: 输出日志。对于这一点,IO大臣其实非常清楚, 日志是个很重要的东西, 因为程序运行起来以后, 基本上就是一个黑盒子,如果程序的行为和预料的不一致,那就是出现Bug了,如何去定位这个Bug 呢?臣民们能用的工具有两个,第一个就是单步调试,一步...转载 2020-03-24 17:01:47 · 729 阅读 · 0 评论 -
Java中使用Protocol Buffer
文章目录一、Protocol Buffer简介二、Protocol Buffer的使用(Java)1、编写.proto文件,定义消息类型2、使用ProtocolBuffer的编译器,将.proto文件编译成对应的java文件3、在你的项目中引入protobuf 依赖4、在Java代码中使用上一步编译好的java文件服务端代码:客户端代码:启动客户端后,服务接收数据如下:一、Protocol Bu...原创 2020-03-13 13:17:57 · 621 阅读 · 0 评论 -
xxl-job分布任务调度框架-2源码解析
一、执行器项目1、执行器组件配置类@Configurationpublic class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String admin...原创 2020-02-15 23:35:33 · 1442 阅读 · 0 评论 -
xxl-job分布任务调度框架-1入门应用
一、xxl-job分布任务调度框架部署1、部署可参考官方文档https://www.xuxueli.com/xxl-job/1.1、下载源码http://gitee.com/xuxueli0323/xxl-job1.2、执行源码路径下sql语句/xxl-job/doc/db/tables_xxl_job.sql1.3、部署“调度中心”项目解压源码,按照maven格式将源码导入ID...原创 2020-02-15 21:09:26 · 369 阅读 · 0 评论 -
缓存技术方案
一、现在为了提高应用并发量,我们通常会在应中添加缓存如何保证数据库、缓存一致性?1、 业务方法修改数据库时,同步修改缓存-----》 实时更新2、 定时任务, 定时同步-》 统计类展示3、 两分钟内,可不一致-> 大量业务 都可以接受----》 redis失效机制,未失效期内的不一致利用缓存失效,那么可能会现在缓存击穿 缓存雪崩a = 1 b = 1 c = 1 某一秒所有数据都...原创 2019-10-11 21:15:15 · 160 阅读 · 0 评论 -
设计模式(一)
创建型: 单例模式 工厂方法模式:用一个统一工厂来创建对象,用参数来获取不同对象 工厂方法模式:将工厂也抽象,由具体子类来实现抽象工厂来创建具体对象。 抽象工厂模式:创建一组相关或相互依赖的对象提供一个接口,比如一个产品有形状和颜色2个属性,建立一个抽象工厂来定义这2组相关系的方法,具体子类继承抽象工厂来获取不同颜色不同形状。 建造者模式:用于一个复杂对象的创建 原型模式1 v1...原创 2018-03-23 12:55:45 · 152 阅读 · 0 评论 -
2018面试收集
buffer1、接口如何保证幂等性(接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是一致的。)查询接口本身具有幂等性 a、全局唯一id,根据业务操作生成一个全局唯一id,在执行前根据唯一id判断这个操作是否存在,如果不存在则插入,存在则进行一些其它操作 b、根据业务来订唯一标识,设置成表的唯一索引,把创建和写入放到同一个事物中,如果订单号重复则 数据库会抛出唯一约...转载 2018-03-15 17:48:10 · 1258 阅读 · 1 评论 -
HTTP 协议入门
原文地址: http://www.ruanyifeng.com/blog/2016/08/http.htmlHTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。 本文介绍 HTTP 协议的历史演变和设计思路。1、HTTP/0.9HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户...转载 2018-03-14 23:14:26 · 154 阅读 · 0 评论 -
mac下source tree配置外部比较工具beyond compare
前言在用惯了windows下的gittortois后,转到mac下的sourcetree发现版本差异对比看起来非常不方便,于是发现需要给source tree配置一个功能强大的外部比较工具,避免代码合并中的一些问题。source tree配置beyond compare1、安装beyond compare mac版 2、打开bc在菜单栏点击安装行命令工具,安装成功。 3、打开source tre原创 2017-02-07 11:09:53 · 2977 阅读 · 0 评论 -
mybatis使用PageHelper分页插件原理
1、官方介绍: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md 官方介绍文档中已经说明了详细的配置方法和使用方法,这里不再详细介绍。 2、简单说一下本项目的配置案例。 a、spring配置文 件<bean id="sqlSessionFactory" class="org.mybatis.sp原创 2017-01-11 11:00:05 · 5772 阅读 · 3 评论 -
mac下简单java开发环境配置
1、jdk config打开一个终端,执行下面的命令$ vim .bash_profile export JAVA_HOME=/usr/libexec/java_home$ source .bash_profile$ echo $JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home参考:https:/原创 2017-01-09 09:44:29 · 451 阅读 · 0 评论 -
quartz动态添加、更新、删除定时任务
业务需求:产品上下架信息通过数据配置,到时间自动上架或下架,需要用定时任务完成,并且定时器任务可由数据配置动态的新增、更新和删除。quartz可实现此功能,以往用quartz的地方,定时任务配置一般写到配置文件中的。现在需要动态的添加、更新、删除任务,需要任务信息配置到数据。原创 2017-01-09 16:41:53 · 2371 阅读 · 0 评论 -
redis配置优化(记一次线上redis问题排查)
一、问题描述在通过redis缓存进行了一系列的接口性能优化后,大部分接口返回在1ms~200ms间,这都是redis的功劳,但随着接口redis缓存越来越多,新的问题产生了,从redis取数据竟然用了5s = =,通过观察日志,并不是每次取数据都是5s, 大部分情况从redis取数据还是很快的不会超过5ms.二、解决1 在查看代码后,发现有些redis的key设计的过长,于是首先...原创 2018-03-30 14:48:12 · 1166 阅读 · 1 评论 -
JAVA NIO浅析
java 阻塞IO最古老的javaIO通信模式BIO,即阻塞IO,同步调用,性能低: 在服务器端:有专门的客户连接 接收器Acceptor,当有新的客户端连接到达后,Acceptor负责第一步连接,然后给每一个客户端连接创建一个新的线程来处理对应的业务;处理完成后,通过输出流返回给客户端,并将线程销毁,这也是最典型的一对一服务模型。 对应模型图如下: 伪代码://serveri...原创 2018-03-21 15:47:19 · 204 阅读 · 0 评论 -
设计模式(二)
结构型: 代理模式 适配器模式 装饰器模式:继承同一个接口,持有父类对象,调用父类方法后再添加新技功(如英雄每升一次级都添加一个技能) 桥接模式:为避免继承太多,将对象分成多纬度变化,避免多层次继承,而是用一个抽象类 来持有桥接类(桥接类即是一个纬度的功能),建立关联关系。 组合模式 :以树的形式 表示“整体部分结构”,比如目录结构 享元模式 :类似对象缓存,当有些对象时直接从ha...原创 2018-03-27 15:45:18 · 157 阅读 · 0 评论 -
设计模式(三)
观察者模式:发布者持有订阅者列表,当发布者变化时通知观察者列表。 模板模式:抽象父类规范主方法,调用内部的抽象方法由具体子类重写实现。 命令模式:命令者下发命令到一个系统接收命令类,由这个类去找合适的执行者,比如一个智能遥控器包括电脑、门、灯的开关功能,我们只需使用遥控去下发这个命令。 状态模式: 责任链模式:先判断自己能否处理,如果不能就交给下一个链处理。1、观察者模式一个被观察...原创 2018-03-28 17:06:51 · 134 阅读 · 0 评论 -
HTTP 请求
前言我用是apache-httpclient这个jar包,依赖坐标&lt;dependency&gt; &lt;groupId&gt;apache-httpclient&lt;/groupId&gt; &lt;artifactId&gt;commons-httpclient&lt;/artifactId&gt; &a原创 2018-10-26 18:48:32 · 1217 阅读 · 0 评论 -
mongodb(一) 入门
一、mongodb 之manager图形管理工具1、下载的mongodb工具是NoSql Manager for MongoDB Professsional,直接官网就可以下载。2、连接mongodb填写地址和端口就可以3、界面查询双击表名,就可以打开表里的数据,数据上面就是查询条件,可以筛选数据Query: 是查询条件,json格式,{字段名:'字段值'}Order:是排序条...原创 2018-11-06 18:45:26 · 145 阅读 · 0 评论 -
@Transactional失效
一、场景一1、下单成功后发送短信通知@Transactionalpublic void addorder(Order order){ dao.insertOrder(order); try{ //短信发送失败不影响主流程 sendMsg(Message msg); }catch(Exception(e)){ }}@Transactionalpublic void ...原创 2019-06-19 20:08:13 · 660 阅读 · 0 评论 -
java Comparable 和Comparator详解及 区别
java中,对集合对象或者数组对象排序,有两种实现方式。即:(1)对象实现Comparable 接口(2)定义比较器,实现Comparator接口。一、Comparable 介绍 Comparable 是在对象内部定义排序方法, 可以看成是一个`内比较器`,如果想实现对象与对象的比较,那么实再Comparable 接口,重写compareTo方法,compareTo就是定义比较规则,这...原创 2019-08-28 14:45:04 · 237 阅读 · 0 评论 -
jQuery插件:跨浏览器复制jQuery-zclip
说明jQuery-zclip是一个复制内容到剪贴板的jQuery插件,使用它我们不用考虑不同浏览器和浏览器版本之间的兼容问题。jQuery-zclip插件需要Flash的支持,使用时记得安装Adobe Flash Player。下载jquery-zclip,引入<script src="${pageContext.request.contextPath}/resources/...原创 2016-12-05 10:33:35 · 506 阅读 · 0 评论