- 博客(148)
- 资源 (2)
- 收藏
- 关注
原创 mongodb基础篇--索引
文章目录索引创建单字段索引复合索引索引前缀多键索引查看索引索引的命名索引删除mongodb使用索引可以提高查询效率。如果没有索引,mongodb会进行全文检索。MongoDB索引的数据结构是B-tree。MongoDB 提供了非常多的索引类型来支持特定类型的数据和查询,例如单字段索引、复合索引、多键索引、文字索引、2d 索引、散列索引和稀疏索引等。索引创建单字段索引创建索引的语法格式如...
2019-12-07 17:56:49
770
原创 mongodb基础篇--explain执行计划
文章目录queryPlannerexecutionStatsallPlansExecutionstage状态我们可以通过执行计划来判断查询语句的效率,根据实际情况进行调整,然后提高查询效率。可以使用如下方法:db.collection.find().explain(<verbose>)verbose 参数表示执行计划的输出模式。有三种:queryPlanner,executi...
2019-12-07 17:54:47
6542
原创 mongodb基础篇--流式聚合操作
文章目录$match$sample$project$unwind$out$lookupMongoDB 中的聚合是指同时对多个文档中的数据进行处理、筛选和归类并输出结果的过程。数据在聚合操作的过程中,就像是水流过一节一节的管道一样,所以 MongoDB 中的聚合又被人称为流式聚合。Aggregation Pipeline 又称聚合管道。开发者可以将多个文档传入一个由多个 Stage 组成的 Pi...
2019-12-03 20:50:13
1531
原创 mongodb基础篇--cursor对象
文章目录limit和skipcount()和size()sort()next()和forEach()toArray()map()Cursor 对象不是查询结果,而是查询返回的 接口。当我们调用 find()/findMany()/findOne() 时,Shell 并不是立即从数据库中取出数据,而是在我们使用时才会取出数据。Cursor 对象有很多方法,例如 close(),hasNext(),...
2019-12-02 20:10:03
7873
原创 mongodb基础篇--文档的CRUD操作-查询
查询文档没有查询条件时,可以使用db.collection.find()或者db.collection.find({})如果需要指定相等的查询条件,比如:字段type = “技术”db.getCollection('test').find({"type": "技术"})等效于mysql中 select * from test where type = “技术”;查询操作符...
2019-12-02 20:06:32
418
原创 mongodb基础篇--文档的CRUD操作-增删改
文章目录新增insertOneinsertManyinsert修改updateOneupdateManyupdatereplaceOnesave字段更新操作符$currentDate$ inc和$mul$ min和$max$unset$set$rename数组更新操作符$pop$push删除CRUD 操作指的是对文档进行 create,read,update and delete 操作,即增删改...
2019-12-02 19:52:39
358
原创 ImageIo.read读取图片有一层红色
使用BufferedImage headBuff = ImageIO.read(url);读取图片,读取后再重写有可能有一层红色。这就是ImageIO.read()方法读取图片时不能正确处理ICC信息的问题。网上很多文章给出以下解决方案。Image src = Toolkit.getDefaultToolkit().getImage(url);BufferedImage originalIm...
2019-11-10 17:48:07
3078
原创 spring+websocket获取httpsession为null
spring整合websocket,需要在拦截器中(HandshakeInterceptor的实现类)beforeHandshake中获取HttpSession,但是获取的值为null代码如下:public class HandShake implements HandshakeInterceptor { public boolean beforeHandshake(ServerHttp...
2019-10-28 19:27:54
2573
5
原创 WebSocket handshake Unexpected response code 403
有时客户端发出websocket请求时,前端会显示如下报错:index.js:9 WebSocket connection to 'ws://127.0.0.1:8080/shop/ws?uid=3224458&sid=826' failed: Error during WebSocket handshake: Unexpected response code: 403原因:从S...
2019-10-28 19:20:19
11058
2
原创 java8中CompletableFuture的使用
文章目录Future接口使用CompletableFuture 构建异步应用supplyAsyncthenCompose和thenCombinethenApplythenAcceptjoinExecutor如果你的意图是实现并发,而非并行,或者你的主要目标是在同一个CPU上执 行几个松耦合的任务,充分利用CPU的核,让其足够忙碌,从而大化程序的吞吐量。那么你其实真正想做的是避免因为等待远程服务...
2019-10-26 15:05:38
1159
原创 spring4集成webSocket,jetty启动报错
使用jetty启动时报错:java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequestorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webSocketHandlerMapping' ...
2019-10-24 17:24:48
3298
2
原创 linux(centos7)安装RabbitMQ
文章目录安装依赖下载安装RabbitMQ修改配置文件配置网页插件配置访问账号密码和权限登录安装依赖安装依赖文件 yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget下载erlang包cd /usr/local/wget http://www.erlang.org/down...
2019-10-24 10:01:02
279
原创 java8中的日期和时间API
java8中引入新的日期时间API,主要解决原来日期操作复杂,表示不清晰,线程不安全等问题。日期创建1. LocalDate和LocalTime//指定日期创建LocalDate date = LocalDate.of(2019, 10, 20);System.out.println(date.getYear()); //2019System.out.println(date.getM...
2019-10-20 19:39:59
3526
1
原创 java8中的Optional
Optional类主要解决空指针异常NullPointerException。Optional 类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。创建Optional 对象1. 声明一个空的Optional通过静态工厂方法Optional.empty()...
2019-10-20 14:55:10
11278
原创 浅析中台2--中台能够解决什么问题?
中台这么火到底是为了解决什么问题呢?或者说能够解决什么问题呢?前台+后台目前大多数的信息化企业拥有的架构是前台+后台系统的方式。包括互联网公司以及传统行业向互联网转型的公司。经过这么多年的沉淀,各行业无论在技术和业务上都慢慢成熟。伴随而来的就是前台和后台之间的问题慢慢出现了。为什么会出现问题呢?首先我们来看下前台和后台分别面向的人群是谁?和解决的问题都是什么?前台:由各类前台系统组成的平...
2019-10-19 14:04:23
1696
原创 java8中的Collectors.groupingBy用法
Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组数据准备:public Product(Long id, Integer num, BigDecimal price, String name, String category) { this.id = id; this.num = num; this.price = price; this.name =...
2019-10-13 18:21:56
258960
37
原创 java8中的方法引用和构造函数引用
方法引用和Lambda方法引用可以被看作仅仅调用特定方法的Lambda的一种快捷 写法。它的基本思想是,如果一个Lambda代表的只是“直接调用这个方法”,那最好还是用名称 来调用它,而不是去描述如何调用它。事实上,方法引用就是让你根据已有的方法实现来创建 Lambda表达式。但是,显式地指明方法的名称,你的代码的可读性会更好。当你需要使用方法引用时,目标引用放在分隔符::前,方法的名称...
2019-09-29 21:43:24
5484
原创 java8中常用函数式接口
常用函数式接口函数式接口函数描述符原始类型特化PredicateT->booleanIntPredicate,DoublePredicate,LongPredicateConsumerT->voidIntConsumer,LongConsumer,DoubleConsumerFunction<T, R>T->RIntFu...
2019-09-28 23:41:15
16593
原创 浅析中台1--中台为什么这么火
之前有幸参与过一段时间的中台开发,中间也遇到了各种各样的坑,又加上今年中台特别火,所以想写一些自己浅显的认知(有参考和借鉴其他中台文章)。不断在实际工作中是不是建设中台,了解中台都是很有好处的。阿里巴巴中台战略阿里共享事业部的产生、演变和发展企业信息中心发展的症结共享服务体系分布式服务框架的选择共享服务中心建设原则数据库瓶颈阻碍业务的持续发展数据库分库分表数据库分库分表之异构索...
2019-09-28 19:30:04
766
原创 java8中Collectors的方法使用实例
java8中Collectors的方法:toCollectiontoListtoSettoMapjoiningmapping/flatMappingfilteringcollectingAndThencountingminBymaxBysummingInt/summingLong/summingDoubleaveragingInt/averagingLong/avera...
2019-09-08 20:22:52
10517
1
原创 java8中Collection新增方法详解
Collection新增方法:removeIfstreamparallelStreamspliteratorlist中replaceAllsortremoveIfdefault boolean removeIf(Predicate<? super E> filter) { Objects.requireNonNull(filter); bool...
2019-09-08 19:39:54
4214
1
原创 Java8中Stream的使用
Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 - Java中的Stream并不会存储元素,而是按需计算。数据源,流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作,类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。和以前...
2019-09-08 19:37:46
5156
原创 java8中map新增方法详解
map新增的方法:getOrDefaultforEachputIfAbsentcomputecomputeIfAbsentcomputeIfPresentmergeremove(key,value)replacereplaceAllgetOrDefaultdefault V getOrDefault(Object key, V defaultValue) { V...
2019-09-08 12:48:39
12145
原创 centos7安装kibana
下载地址:https://www.elastic.co/cn/downloads/kibana或者下载指定版本https://github.com/elastic/kibana/releases下载后kibana-6.2.4.tar.gz上传到/usr/local解压 tar -zxvf kibana-6.2.4.tar.gz修改配置cd /kibana-6.2....
2019-08-24 23:21:48
4640
原创 linux下java生成图片中文乱码
应用场景:java生成图片,图片上的中文乱码或者文字部分缺失操作步骤如下:检查linux下已安装的字体查看所有字体命令:fc-list查看中文字体命令:fc-list :lang=zh如果返回:-bash: fc-list: command not found说明没有安装字体管理,需要安装字体库安装字体库管理yum -y install fontconfig...
2019-08-11 23:26:15
3020
原创 linux(centos7)下mysql数据库导入导出
导出用mysqldump命令导出数据库数据和结构/usr/local/mysql-5.7.21/bin/mysqldump -u root -p dbname > /workspace/db-data/dbname.sql/usr/local/mysql-5.7.21/bin/是mysql的安装路径-u后面是用户名dbname是数据库名/workspace/db-dat...
2019-08-11 23:15:57
2414
1
原创 写入mysql中文乱码及表情符报错
中文插入mysql显示" ?????",表情符号插入报错Incorrect string value: '\xF0\x9F\x8D\xAD' for column 'XXX' at row 1
2019-08-01 11:43:51
858
原创 linux下mysql查询报错sql_mode=only_full_group_by
mysql 5.7中使用group by 会报如下错误: this is incompatible with sql_mode=only_full_group_by,这是因为mysql 默认启用了 ONLY_FULL_GROUP_BY
2019-07-30 12:10:12
4068
原创 linux安装mysql
下载mysql安装包mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz>下载地址<上传mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz到安装目录/usr/local/解压cd /usr/local/tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.t...
2019-07-30 12:06:01
142
原创 centos7安装supervisor
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,...
2019-07-28 18:50:04
1915
原创 elasticsearch.yml配置项及含义
cluster.name: elasticsearch配置elasticsearch的集群名称,默认是elasticsearch。elasticsearch会自动发现在同一网段下的集群名为elasticsearch的主机,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。node.name: “node-1”节点名,默认随机指定一个name列表中名字node.mas...
2019-07-21 10:45:56
456
原创 linux安装elasticsearch-head
elasticsearch-head需要依赖node,先安装node安装node下载node从https://nodejs.org/en/download/下载node-v10.16.0-linux-x64.tar.xz,使用wcp工具放入目录/usr/local解压node-v10.16.0-linux-x64.tar.xztar -Jxvf node-v10.16.0-linux...
2019-07-20 15:02:55
3470
原创 linux搭建elasticsearch集群
我这里使用了两台服务器,其中一台服务器部署了一个es,另一台部署了两个。(如果有3台更好了)比如:准备在39.100.113.100上安装一个,在39.100.113.101上安装两个。elasticsearch的安装,安装参见:Linux安装elasticsearch6.2.4安装好之后,修改配置文件elasticsearch.yml39.100.113.100的配置:#集群名称相...
2019-07-19 20:04:00
1073
原创 Linux安装elasticsearch6.2.4
安装jdk安装es前需要先安装jdk8下载jdk:jdk-8u121-linux-x64.tar.gz 放在目录/usr/lcoal/下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html进入/usr/lcoal/解压cd /usr/localtar -zxv...
2019-07-19 19:52:29
1490
原创 java/golang/js版本号比较
我们一般使用版本号控制版本,并且做一些判断或者向下兼容。一般版本号会使用semver 规范,格式为 Major.Minor.Patch,其中Major、Minor、Patch均为整数。比较版本号的大小可参考如下:javapublic static int compareVersion(String srcString, String anotherString) { String[] v...
2019-05-30 23:48:19
326
原创 Golang中的反射
简介反射是程序运行时动态地调用对象的方法和属性引用包:import ( "reflect")常用方法: reflect.TypeOf() 和reflect.ValueOf()reflect.ValueOf()用来获取输入参数接口中的数据的值,如果接口为空则返回0reflect.TypeOf()用来动态获取输入参数接口中的值的类型,如果接口为空则返回nil基本使用var...
2019-05-14 20:28:42
583
原创 阿里巴巴中台战略--事务与柔性事务
阿里巴巴中台战略阿里共享事业部的产生、演变和发展企业信息中心发展的症结共享服务体系分布式服务框架的选择共享服务中心建设原则数据库瓶颈阻碍业务的持续发展数据库分库分表数据库分库分表之异构索引表业务流程异步化和数据库事务异步化不管是业务流程异步化还是数据库事务异步化,都面临一个如何保证业务事务一致性的问题。面对这个问题目前还没有完美的解决方案。关于数据库事务,核心是提现数据库...
2019-05-12 16:34:28
2068
原创 阿里巴巴中台战略--业务流程异步化和数据库事务异步化
业务流程异步化 以淘宝的交易订单为例,目前淘宝的订单创建流程需要调用200个服务(下图是交易创建流程的示意),如果按照之前所有的业务逻辑均是在一个JVM中顺序执行的方式,要完成超过200次的远程服务调用,就算所有服务的调用时间都控制在20ms内返回结果,整个订单的创建时间也会超过4s,这个时间长度对于现在的客户来说已经很长了。 另外从资源占用角度来说,这样的顺序调用的方式也一定会造成系统...
2019-04-30 21:57:07
2074
原创 Golang中的数组Array和切片Slice
数组数组(Array)是类型相同元素的集合。不允许在一个数组使用不同类型的元素(比如:不允许整数和字符串一起使用)。数组长度是不可变的数组是值类型数组之间可以用== 或 !=比较(但是长度也是类型的一部分,长度不同,是两个不同类型,不能使用==和!=)声明方式//声明一个长度为3的整数类型。数组的所有元素都自动赋值为元素类型的0值var a [3]intfmt.Printl...
2019-04-21 21:02:58
585
原创 golang中的变量和常量
声明变量使用:var声明常量使用:const大多数的数据类型的值都可以赋值给一个变量。而常量则不同,常量只能被赋予基本类型的值本身。例子说明:package mainimport "fmt"const cons string = "constant"func main() { //变量:普通赋值,由关键字var、变量名称、变量类型、特殊标记=,以及相应的值组成。 //单...
2019-04-17 00:30:20
506
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人