- 博客(38)
- 收藏
- 关注

原创 微服务架构 将serviceComb改为springcloud
serviceComb转为springcloud1.拆分服务2.碰到的坑项目本来使用sprigboot+serviceComb ,调整项目架构后需要拆分服务,变为springboot+XXX,将服务的cotroller层独立成一个服务,能适应基于springboot的不同微服务架构,我将过程以及碰到的坑记录下来。1.拆分服务将一个服务拆为2个模块,service+dao层单独成一个模块,co...
2020-04-04 13:34:00
1180

原创 对自定义mybatis的理解
话不多说,直进主题。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ...
2019-06-23 10:11:27
2201
3
原创 springcloud Ribbon详解
微服务间的调用,网关请求转发,feign都是通过ribbon实现的,因此学习ribbon的原理还是很重要的,而ribbon的作用是用于负载均衡,springcloud自动化整合配置ribbon是RibbonEurekaAutoConfiguration这个类。对于开发者来说,使用ribbon只需要在RestTemplate上添加@LoadBalanced注解即可实现消费方的负载均衡RestTemplateresttemplate用于不同服务间的通信和访问,主要有发送GET,POST,PUT,DELETE
2020-06-10 21:35:17
5744
原创 springcloud Eureka详解
1.原理eureka用于服务治理,实现各个微服务实例的自动化注册与发现,不同可用区域的服务注册中心通过异步的方式相互复制各自的状态,eureka客户端向注册中心注册服务并周期性地发送心跳更新服务租约,同时也能从服务端查询所有其他服务的信息。服务提供者须实现的功能1.进行服务注册2.将自身信息注册并同步到其他所有注册中心3.进行服务续约服务消费者须实现的功能1.获取服务2.进行服务调用3.服务下线并传播该事件服务注册中心须提供的功能1.将无法提供服务的实例剔除2.自我保护(当心跳失败
2020-06-05 20:26:23
560
原创 jvm相关知识
首先我们得知道jvm的内存结构和内存模型(JMM)这2个概念:内存结构:存储数据的方式(物理上,逻辑上)内存模型:定义了一系列规则来保证多线程环境下对数据的读写一致性(如:synchronized,volatile关键字)内存结构从图中可看出jvm内存主要分为:程序计数器 :记住下一条jvm指令的执行地址(每个线程私有的)虚拟机栈:每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈,某个线程正在执行的方法被称为该线程的当前方法,当前方法使用的栈帧称为当前帧当前方法的参数和
2020-05-21 11:37:39
214
原创 JDK8新特性 流Stream
突然看到这段代码,一时没懂啥意思,网上搜了下,记录下来List<Long> ids = list.stream().map(map -> Long.parseLong(map.get("id").toString())).distinct().collect(Collectors.toList());Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。先将list转化为流,可以对该元素流进行一系列操作,链式调用,顺序不固定,主要方法有:f
2020-05-18 17:40:53
209
原创 常量池 StringTable
常量池是 .class文件,存放堆中数据的引用地址,而不是真实的对象,运行时常量池是jvm运行时将常量池中数据放入池中,此时引用地址真正的指向对象而不是.class文件;Stringtable是哈希表(不能扩容),它也叫做串池,用来存储字符串,这3个不是同一个东西,我们需要进行区分String table中存储的并不是String类型的对象,存储的而是指向String对象的索引,真实对象还是存储在堆中jdk1.6中,Stringtable是放在永久代(方法区)中,jvm进行FullGC才会对常量池进..
2020-05-18 17:25:39
539
原创 CountDownLatch和线程池
1.CountDownLatch List list = new ArrayList<String>(); for(int i= 0;i<100000;i++){ list.add(String.valueOf(i)); } //System.out.println(list.toString()); int threadnum = list.size() % 200 == 0? li
2020-05-12 16:57:17
1198
原创 JDK源码解析 - java.util.concurrent.ConcurrentHashMap
分析这个类前,补充一些相关的基本常识HashMap:JDK8以前是头插法,JDK8后是尾插法HashMap扩容时,可能会导致死循环:如果两个线程同时触发扩容,在移动节点时会导致一个链表中的2个节点相互引用,从而生成环链表 原因,反正我没看懂ConcurrentHashMap的扩容实现:当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作:如果新增节点之后,...
2020-04-29 20:03:04
518
原创 JDK源码解析 - java.util.Hashtable
1.构造方法public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { private static final long serialVersionUID = 14217467595...
2020-04-28 21:06:22
371
原创 JDK源码解析 - java.util.HashSet
1.实现接口public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable //继承了AbstractSet接口,实现了Set接口{ static final long serialVersion...
2020-04-28 09:48:32
316
原创 JDK源码解析 - java.util.HashMap
1.静态变量 // 6个默认值static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 右移4位 2的4次方 table数组默认初始容量static final int MAXIMUM_CAPACITY = 1 << 30; //table数组最大容量static final float DEF...
2020-04-27 19:45:28
304
原创 3岁儿子还不会这么基本的算法?快速,冒泡,插入排序
直接贴代码import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Sort { //快速排序 public static void quickSort(int[] arr , int left, int right){ int temp = 0;...
2020-04-24 15:27:15
173
原创 JDK源码解析 - java.util.ArrayList
1.实现接口public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 868...
2020-04-23 20:37:47
608
原创 JDK源码解析 - java.util.AbstractList
1.实现接口,构造方法public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { /** * Sole constructor. (For invocation by subclass constructors, typic...
2020-04-14 20:51:40
336
转载 JDK源码解析 - java.lang.ThreadLocal
以下为转载,写的特别好0-0:https://www.jianshu.com/p/3c5d7f09dfbdThreadLocalthreadlocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set(...)sThreadLocal.g...
2020-04-14 14:44:34
472
原创 微服务架构 springcloud改为tsf oracle视图改为tbsql(MySQL)
springcloud改tsfpom.xml将原来springcloud相关依赖删除(包括spring-boot-starter-web)引入tsf相关依赖 <!--腾讯云--> <parent> <groupId>com.tencent.tsf</groupId> <artifactId>spring-cloud-...
2020-04-14 11:08:16
1219
原创 JDK源码解析 - java.lang.Thread
1.启动线程的方式子类继承Thread,重写run()方法 * class PrimeThread extends Thread { * long minPrime; * PrimeThread(long minPrime) { * this.minPrime = minPrime; * } * ...
2020-04-11 17:33:20
492
原创 JDK源码解析 - java.lang.StringBuilder
1.实现接口public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence{ ... //序列化 static final long serialVersionUID = 4383685877...
2020-04-10 16:47:09
242
原创 JDK源码解析 - java.lang.StringBuffer
1.实现接口/** * Whenever an operation occurs involving a source sequence (such as * appending or inserting from a source sequence), this class synchronizes * only on the string buffer performing the o...
2020-04-10 16:01:14
169
原创 JDK源码解析 - java.lang.AbstractStringBuilder
1.实现接口abstract class AbstractStringBuilder implements Appendable, CharSequence {...}StringBuilder和StringBuffer都实现了这个类。Appendable接口有3个append抽象方法,CharSequence接口主要有length,charAt,subSequence,toString4个...
2020-04-10 14:32:20
294
原创 JDK源码解析-java.lang.String
1.String实现接口public final class String implements java.io.Serializable, Comparable<String>, CharSequence {....}序列化接口 private static final ObjectStreamField[] serialPersistentFields =...
2020-04-09 23:24:11
455
原创 JDK源码解析-java.lang.object
1.registerNatives() private static native void registerNatives(); static { registerNatives(); }首先这是个本地方法,是由其他语言编写的,运行中的Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操...
2020-04-07 23:24:46
195
原创 项目笔记learn13(购物车解决方案)
未登陆时使用cookie,登陆后使用redis,用户登陆时,cookie已存在购物车,合并后需要清除cookie数据1.新建一个购物车实体类:public class Cart implements Serializable{ private String sellerId;//商家ID private String sellerName;//商家名称 private List<T...
2019-08-01 19:45:11
142
原创 项目笔记learn12(消息中间件)
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信1.JMS 定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。· TextMessage–一个字符串对象· MapMessage–一套名称-值对· ObjectMessage–一个序列化的 Java 对象· BytesMessage–一个字节的数...
2019-08-01 19:22:02
134
原创 项目笔记learn11(springboot和短信解决方案)
springboot没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求1.引入起步依赖:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>...
2019-08-01 19:02:42
171
原创 项目笔记learn10(Freemarker)
FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。1.引入依赖<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.2...
2019-08-01 18:41:19
135
原创 项目笔记learn09(solr区间和排序搜索)
1.区间搜索private Map searchList(Map searchMap){ ...... if(!"".equals(searchMap.get("price"))){ String[] price = ((String) searchMap.get("price")).split("-");3000-* if(!price[0].equal...
2019-07-23 21:00:06
215
原创 项目笔记learn09(solr高亮显示和过滤分组搜索)
1.高亮显示1.后端代码private Map searchList(Map searchMap){ Map map=new HashMap(); HighlightQuery query=new SimpleHighlightQuery(); HighlightOptions highlightOptions=new HighlightOptions().addField("it...
2019-07-23 20:46:23
150
原创 项目笔记learn09(solr-1)
1.建立在Lucene(全文搜索引擎)之上,不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术(需引入中文分析器)2.复制域的作用在于将某一个Field中的数据复制到另一个域中(联合搜索)3.需要动态扩充字段时,使用动态域。<field name="item_goodsid" type="long" indexed="true" st...
2019-07-23 20:09:04
87
原创 项目笔记learn08(redis)
1.html页面轮播图的显示使用三目运算符 <li data-target="#myCarousel" data-slide-to="{{$index}}" class="{{$index==0?'active':''}}" ng-repeat="item in contentList[1]" ></li>2.对于访问量比较大的页面需要用到缓存技术进行处理,减少数据库...
2019-07-23 19:46:13
89
原创 项目笔记Learn07(数组绑定,html页面跳转和注解配置事务)
1.前端页面显示技巧数据库中存的是0 1 2这样的值来代表不同的数据时,前端显示需要进行多个if判断再将对应的文本显示到页面上,此时可以这样做:1.controller.js中://添加state数组$scope.status=['未审核','已审核','审核未通过','关闭'];2.页面中://显示{{status[entity.auditStatus]}}当然,多个数值时也...
2019-07-19 01:30:57
161
原创 项目笔记Learn06(下拉框实现级联和checkbox)
1.下拉框1.controller.js中//读取一级分类$scope.selectItemCat1List=function(){ itemCatService.findByParentId(0).success( function(response){ $scope.itemCat1List=response; } )...
2019-07-19 01:12:47
190
原创 项目笔记Learn05(面包屑和录入功能)
1.导航栏面包屑实现Controller.js 中$scope.grade=1; //默认为1级 //设置级别 $scope.setGrade=function(value){ $scope.grade=value; } //读取列表 $scope.selectList=function(p_entity){ if($scope.grade==1){ //如果为1级...
2019-07-19 00:50:40
135
原创 项目笔记Learn04(spring security)
Spring Security提供了一组可以在Spring应用上下文中配置的Bean,利用了spring IOC,DI,AOP的功能。需要角色认证和资源访问授权1.使用自定义登陆页1.pom.xml中导入坐标<dependency> <groupId>org.springframework.security</groupId> <art...
2019-07-19 00:16:17
109
原创 项目笔记Learn03
AngularJS的MVC模式$ controller也是angular提供的一个服务,可以实现伪继承,实际上就是与BaseController共享$scopeapp.controller('baseController' ,function($scope){ ....}brandController传参,进行共享app.controller('brandController' ,f...
2019-07-12 00:59:00
102
原创 项目笔记Learn02
AngularJSangularJS能实现双向绑定,框架自动创建对象并实现依赖注入,能够自定义模块进行模块化设计1.ng-app 指令:作用是告诉子元素以下的指令是归angularJs的2.表达式的写法是{{表达式}},表达式可以是变量或是运算式<body ng-app> {{100+100}} //运算 读取model变量</body>3.ng...
2019-07-12 00:09:40
145
原创 项目笔记Learn01
使用技术 Dubbox+SSM+angularJS+bootstrap1.引用dubbo服务配置<dubbo:application name="dubboxdemo-web" /><dubbo:registry address="zookeeper://192.168.25.132:2181"/><-- 扫描配置注解的包 --><dubbo:a...
2019-07-11 23:04:59
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人