- 博客(99)
- 资源 (7)
- 收藏
- 关注
原创 基于GraphQL-Java的数据网关系统设计
数据网关系统设计项目背景问题发现解决方案技术设计GraphQL介绍设计框架功能与使用数据查询数据聚合数据计算字段鉴权数据灰度接入方式方法说明后续项目背景随着业务的发展,可以预期到平台的相关子系统,会出现大量依赖外部系统的API服务以及内部系统之间数据流转的情况。如何高效维护这些内部和外部的API,低成本接入外部的服务成了一个棘手的问题问题发现平台内子系统在对接外部系统数据源时,可能有需求重复,导致重复接入增加各子系统开发成本成N*M倍增长;
2020-09-01 14:38:57 645
原创 GraphQL-Java二次开发
GraphQL-Java二次开发Directive指令计算指令DirectiveDirective,指令,可以对Field\Type等类型进行标识,进行一些特殊功能,下面介绍几个常用的指令计算指令 calc通过calc指令,可以在服务端,实行对一些字段的自定义处理.其底层是利用解析Groovy脚本实现 directive @calc ( pattern: String! ) on FIELD_DEFINITION | FIELD #学生信息 type Stud
2020-09-01 20:12:29 611
原创 spring cloud使用中遇到的一些偏僻问题
1.eureka dashboard的界面无法加载图片等静态资源;最有可能原因是将EurekaServer和ConfigServer放在了一起,具体参考如下:https://github.com/spring-cloud/spring-cloud-netflix/issues/1262其次愿意可能是配置的Eureka的路径不是默认,需要通过eureka.dashboard.path进行调整;最后还...
2018-01-27 17:00:23 534
原创 M-Zsh设置
1.打开mac终端的偏好设置 选择Man Page据说这种底色对视力有好处;2.使用如下指令:cd ~sudo vim .bash_profile在最后添加一行:export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/m
2018-01-03 14:18:48 377
原创 redis相关
redis虽然是单线程的队列处理方式,但是在客户端高并发的情况下任然会出现竞争问题,其解决思路可以从以下几个方面考虑: 1.客户端 客户端在调用redis时,注意各个线程之间的争用情况,注意使用lock、synchronize进行线程之间的协调; 2.服务端 服务端在处理客户端的请求时,注意采用分布锁; setnx getAndSet multi事务处理 在进行加锁时,要特别注意死锁
2017-11-10 09:52:50 417
原创 Spring事务的个人总结
Spring事务的理解 事务的四个特性: 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。 隔离性(Isolation):可能有许多事务会同
2017-11-08 19:01:56 374
原创 Spring的Cache使用
Spring在3.x中提供了缓存功能,可以使用注解对方法执行结果进行缓存。核心注解使用 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存@CacheEvict 主要针对方法配置,能够根据方法的请求参数对其结果进行清理制定的缓存@CachePut 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存更新@CacheConfig 针对类,制定类中所有
2017-09-26 13:58:09 315
原创 java中缓存切入方式
java中对缓存的实现有多重方式,从技术角度来讲我觉得可以分为两类:分布式缓存和本地缓存;前者多使用redis、memcache等分布式数据库实现,后者主要是map、loadingCache实现;无论采用哪种实现方式,都需要比较好的缓存切入点,总结了下java中实现缓存比较常用的几个切入点:Mybatis的Cache接口 Mybatis的Interceptor接口 Spring的S
2017-09-25 12:28:39 340
原创 jvm垃圾收集器
jvm垃圾收集的总价可以参考如下blog: http://blog.csdn.net/java2000_wl/article/details/8030172 http://www.jianshu.com/p/50d5c88b272dcms收集器详解: http://blog.csdn.net/mark__zeng/article/details/48751053查看jvm使用的收集器 htt
2017-08-12 16:27:22 231
原创 spring bean的使用总结
1.注解使用方法 用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean;public class Address { private String location = "location";// 街道 private Integer doorId = 1;// 门牌号 public String getLoc
2017-08-02 09:46:38 306
原创 JAVA内部类
package demos.other.java;/** * <code>InnerClassDemo</code> * * @author zhuan.liu 17-7-23 * @version 1.0 */public class InnerClassDemo { private String s1 = "s1"; public String s2 = "s2";
2017-07-23 11:25:22 199
转载 字符串池总结
1.String s1=”s”; 字符串池中创建“s”; 2.String s2 = new String(“s”); 首先在字符串池中查询是否有“s”,若有则复制到堆,并将内存地址返回; 若没有,则在堆中新建”s”,复制到字符串池,返回内存地址; 3.String s3 = s2 + “ss”; 在堆中新建对象”ass”,返回引用
2017-07-12 10:03:05 228
转载 jvm调试问题
1.jps找不到 linux下jps command not found 今天在linux下查看进程,使用命令jps,可是却提示找不到命令,这条命令是在jdk下的bin目录下的一个可执行文件,我查看了一下我的jdk目录,发现有jps可执行文件,但是只是没有放在环境变量里面而已,环境变量可以通过etho PATH命令查看。所以就要自己加上去,以root身份vi/etc/profile,然后在下面
2017-07-11 11:50:39 270
原创 装箱拆箱
public class BoxDemo { public static void main(String[] args) { Boolean i1 = false; Boolean i2 = false; System.out.println(i1 == i2);// true Integer a = Integer.value
2017-07-10 09:29:12 251
原创 联合索引
建立规则 1.等值查询中,查询条件a,b分别查询时返回的条目比较多,但是同时查询时返回条目比价少,可以建立联合索引; 2.对于有等值查询的列和范围查询的列,等值查询的列建在前,范围查询的列建在后比较实用; 3.如果联合索引的前置列和索引单列一致,则可以用到索引,因此尽量将联合索引的前置列和常用的单列一致; 4.超过3列的索引不合适,会导致索引块过多,查询是会遍历更多的索引块; 5.索引建立
2017-07-06 09:19:11 405
转载 javap反编译指令
将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈
2017-06-30 11:51:46 351
转载 java锁概念总结
1.读写锁 http://ifeve.com/read-write-locks/总结下java的锁的概念自旋锁 自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。 http://ifeve.com/java_lock_see1/ http://ifeve.com/java_lock_see2/阻塞锁 http://ifeve.com/ja
2017-06-19 10:32:20 679
原创 jdk Atomic包
原子操作类可以分为4类。 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ; 3. 引用类型: AtomicReference, AtomicStampedRerence, AtomicMarkableRe
2017-06-19 09:24:03 272
原创 算法、数据结构知识点
树的类别 http://blog.csdn.net/sinat_26533265/article/details/51247920
2017-06-17 16:17:18 245
原创 数据库知识点
超键、候选键、主键、外键 超键,在关系中能唯一标识元组的属性集称为关系模式的称为超键; 候选键,不含有多余属性的超键称为候选键,(candidate key); 主键,用户选作元组标识的一个候选键程序主键; 外键,一个表中存在其他表的主键称为此表的外键; http://www.cnblogs.com/lumnm/archive/2010/11/08/1871783.html视图 视图是
2017-06-17 13:21:26 250
原创 dubbo的均衡策略
RandomLoadBalancepublic class RoundRobinLoadBalance extends AbstractLoadBalance { public static final String NAME = "roundrobin"; private final ConcurrentMap<String, AtomicPositiveInteger> sequen
2017-06-15 20:40:24 262
原创 Spring注解总结
记录下不经常用到的一些注解;@Qualifier 在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean。 Spring 允许我们通过
2017-06-15 09:13:15 297
原创 sleep、wait争用锁
线程在调用sleep()时,不放弃对对象的加锁,wait()会放弃,直到notify或是超过时间后重新获取对象锁。但是如果一个线程在先调用wait后紧接着调用了sleep,是否会重新获取对象锁呢? 写了个Demo,证实是可以的。package demos.multiThreadDemo;/** * java中的sleep()和wait()的区别 * * @date 2013-12-10
2017-06-11 15:47:00 303
原创 Spring总结
1.IOC IOC,控制反转,即由spring控制对象的生命周期和对象之间的关系; 2.AOP AOP使用场景:Authentication 权限\Caching 缓存\Context passing 内容传递\Error handling 错误处理\Lazy loading 懒加载\Debugging 调试\logging, tracing, profiling and monitorin
2017-06-04 19:54:57 282
原创 java知识点总结
ArrayList和LinkedList的区别ArrayList是用数组实现;插入时需要整体将插入位置后的数据后移,效率较低;查找效率较高;当前空间不满足时,会增加50%的空间量,空间消耗大,可以在初始化时指定空间; LinkedList使用链表实现;任何位置插入删除开销相同;查找效率较低;2.HashSet、HashMap、HashTable区别
2017-06-04 16:53:26 802 1
原创 Servlet总结
Servlet容器的工作过程是:当客户请求某个资源时,Servlet容器使用ServletRequest对象把客户的请求信息封装起来,然后调用Java Servlet API中定义的Servlet的一些生命周期方法,完成Servlet的执行,接着把Servlet执行的要返回给客户的结果封装到 ServletResponse对象中,最后Servlet容器把客户的请求发送给客户,完成为客户的一次服务过程
2017-05-07 15:19:46 307
原创 使用es中遇到的问题
1.安装head插件时,记性npm install时提示错误:This failure might be due to the use of legacy binary “node” 原因:可能是因为安装了node而不是nodejs导致,使用如下指令安装sudo apt-get install nodejs-legacy后重新进行npm install即可正常2.安装grunt插件: sudo
2017-04-08 12:49:27 6528
原创 Collection使用问题
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4
2017-04-06 11:23:41 637
原创 批量update的几种方式
1.最简单的方式通过多次执行update tablename set () values();适用于并发少,不会对数据库造成较大压力的情况下使用;2.使用foreachmapper栗子如下: "updatePayNoticketsBatch" parameterType="java.util.List"> "payNoticketModels" i
2017-03-26 14:44:34 21069
原创 MyBatis中的动态SQL
Mybatis的主要动态SQL有如下分类:ps:网上有一篇写的很传神的blog ,估计用不上,先记录以下吧ifchoose (when, otherwise)trim (where, set)foreachif:有条件的包含where子句的一部分;比如:"findActiveBlogWithTitleLike" resultType="Blog"> SEL
2017-03-26 14:42:45 290
转载 com.alibaba.druid的介绍
其pom配置可以从以下选择:http://repo1.maven.org/maven2/com/alibaba/druid/与dbcp类似,其常用的配置如下:配置缺省值说明name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + Syst
2017-03-26 14:42:06 4166
原创 ubuntu终端下几个实用工具
以下几款工具,多用于服务器运维人员,但是对于后台开发人员,也是大有裨益的。工具 介绍 相关资料链接 slurm 监控网络,可以用来查看电脑上不同网卡实时的网络传输情况链接iftop 查看流量的,但是和slurm相比显示的内容更加详尽。可以查看当前发生交互的IP以及数据量的大小链接iptr
2017-03-26 14:40:59 2032
原创 StringUtils比String中多的方法
StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法:1. 检查字符串是否为空:static boolean isBlank(CharSequence str) 判断字符串是否为空或null;static boolean isNotBlank(CharSequence str) 判断字符串是否非空或非null;2. 缩进字符串:static St
2017-03-26 14:40:24 873
转载 java中MD5混淆
网站的密码等都需要进行加密后存入数据库,流行的方法采用的是MD5混淆,下面就这种方法做个简单的使用介绍。 public static String stringMD5(String input) { try { // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”) MessageDigest messageDi
2017-03-26 14:39:52 895
procexp_V15.40.0.0.4202571463
2015-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人