开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

应用统计平台架构设计:智能预测APP统计数据

作者董霖,个推高级技术总监。 前言:近期,智能大数据服务商“个推”推出了应用统计产品“个数”,今天我们就和大家来谈一谈个数实时统计与AI数据智能平台整合架构设计。 很多人可能好奇,拥有数百亿SDK的个推,...
illy安智 发布于 1天前 阅读 1

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilde...
waylau 发布于 2天前 阅读 251

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操作。 - Redis 发布订...
Simonton 发布于 2天前 阅读 171 评论 2

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软...
Oo若离oO 发布于 2天前 阅读 10

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

BIO、NIO、AIO 内部原理分析

相关文章 NIO 之 Selector实现原理 NIO 之 Channel实现原理 NIO 之 ByteBuffer实现原理 阻塞IO 所有的读写IO都是阻塞操作。 多路复用模型 select/poll 从程序的角度解释: 将 channel 注册到 seletor 上,通过轮询...
轨迹_ 发布于 2天前 阅读 177 打赏 1

CoreOS裸机iso安装和相关配置

裸机通过iso安装CoreOS,个人趟了很多坑,以下就是完整的从零开始部署和配置的过程,希望对大家有用。 一、安装CoreOS到硬盘 1. 准备Live iso镜像,制作好usb启动盘
ykbj 发布于 2天前 阅读 82

浅谈服务治理、微服务与Service Mesh(三) Service Mesh与Serverless

**__引言__** 作为本系列文章的第三篇,本文主要为大家介绍下当前非常火热的Service Mesh概念,最后也会简单介绍一下目前同样非常热门的Serverless概念。Service Mesh目前比较多的翻译为“服务网格”,也有翻译...
Li_Peng 发布于 2天前 阅读 46

spring cloud fegin踩坑记录

1:多客户端时,fegin接口抽取到公共jar中,此时,客户端的启动类上需要对该jar中fegin所在的包进行扫描,要在spring和fegin中同时注册,否则启动时会报:“Consider defin...
玄影镜心 发布于 2天前 阅读 14

Nginx测试实验--rest服务端负载均衡应用

Nginx版本如何查看(windows系统下)
karma123 发布于 3天前 阅读 14

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编写代码、调试、集成和...
fastjrun 发布于 3天前 阅读 98

鲸鱼游戏后端开发工程师职位面试过程回顾

# 面试 ## Intro 简单介绍下面试的前置情况。 面试的公司是鲸鱼游戏,职位是后端开发工程师,开发语言C++。 这篇博文主要是为了记录面试中发现的自身不足。 这次面试里,因为面试约得比较匆忙,所以基...
uniqptr 发布于 3天前 阅读 281 评论 2

数据库中常说的steal和force到底是什么?

      时长在看一些database paper的时候看到steal和no-force的字样,深入了解了一下,发现我们平时关注的redo log个undo log都是有渊源的,什么时候需要redo log,什么时候需要undo log,什么时候两者都需要。英文好的可以直接去看上面的wiki,不好的可以看我总结的大白话吧。 steal/no-steal:       是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo log。 force/no-force:       force策略表示事务在committed之后必须将所有更新立刻持久化到磁盘,这样会导致磁盘发生很多小的写操作(更可能是随机写)。no-force表示事务在committed之后可以不立即持久化到磁盘, 这样可以缓存很多的更新批量持久化到磁盘,这样可以降低磁盘操作次数(提升顺序写),但是如果committed之后发生crash,那么此时已经committed的事务数据将会丢失(因为还没有持久化到磁盘),因此系统需要记录redo log,在系统重启时候进行前滚(roll-forward)操...
黑客画家 发布于 3天前 阅读 247

开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成)

系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成) 4. 开源一款强大的文件服务组件(QJ_FileCenter)(系列四 文件结构)计划中... 5. 开源一款强大的文件服务组件(QJ_FileCenter)(系列五 数据结构)计划中... 6. 开源一款强大的文件服务组件(QJ_FileCenter)(系列六 图片处理说明)计划中... 7. 开源一款强大的文件服务组件(QJ_FileCenter)(系列七 与阿里云和七牛云等云存储搭配使用)计划中...   前两篇文章介绍了,开发思路和安装说明,下面进入详细介绍。 一:访问接口,接口采用RESTFul模式,在安装好服务默认页面有API的简单介绍   qycode,在使用接口之前,需要先申请qycode,后台会根据qycode分开集中存储文件,方便管理,比如申请了qycode为tx,重点介绍几个接口: 1.上传文件(http://localhost:9000/v2/tx/document/fileupload)   2.下载文件(http://localhost:9000/v2/tx/document/{md5})  在浏览器打开直接下载文件,如果是图片,需要在页面上展示,可以使用src属性展示图...
bluesky001 发布于 4天前 阅读 342

数据库数据导入Elasticsearch案例分享

The best elasticsearch highlevel java rest api-----bboss  基于bboss持久层和bboss elasticsearch客户端...
bboss 发布于 4天前 阅读 445

使用Statefulset在Kubernetes集群中部署etcd集群

![](https://wilhelmguo.tk/api/file/getImage?fileId=5b24c7aeaddba4075b00000c) 随着微服务架构的火爆,Etcd作为服务发现或者分部式存储的基础平台也越来越频繁的出现在我们的视野里。因此对于快速部署一套高可用的Etcd集群的需求也越来越强烈,本次就带领大家一起使用Kubernetes的Statefulset特性快速部署一套Etcd集群。 ## 什么是Kubernetes? Kubernetes 是一个用于容器集群的自动化部署、扩容以及运维的开源平台。 使用Kubernetes,你可以快速高效地响应客户需求: - 快速并且无意外的部署你的应用。 - 动态地对应用进行扩容。 - 无缝地发布新特性。 - 仅使用需要的资源以优化硬件使用。 ## 什么是Etcd? Etcd的目的是提供一个分布式键值动态数据库,维护一个"Configuration Registry"。 这个Registry的基础之一是Kubernetes集群发现和集中的配置管理。 它在某些方面类似于Redis,经典的LDAP配置后端以及Windows注册表。 Etcd的目标是: - 简单:定义良好,面向用户的API(JSON and gRPC) - 安全:自动TLS和可选的客户端证书身份验证 - 快速:benchmarked 写 10,000 次/秒 - 可靠:使用Raft协议作为分布式基础 ## 官方已经有了Etcd-Operator,我为什么还要使用这种方式...
WilhelmGuo 发布于 4天前 阅读 135

Kubernetes(五) - Service

![](http://pic.w-blog.cn/kubernetes/7.png) Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberneres的DNS服务我们只需要访问Service的名字就能以负载的方式访问到各个容器 Kubernetes官方文档:[https://kubernetes.io/docs/reference/](https://kubernetes.io/docs/reference/) Kubernetes官方Git地址:[https://github.com/kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) > PS:本系列中使用 KubernetesV1.8 RancherV1.6.14 ## 1. Service的三种类型 Service有三种类型: - ClusterIP:默认类型,自动分配一个仅cluster内部可以访问的虚拟IP 常用于内部程序互相的访问,比如Gitlab需要访问Redis的postgresql,但是是内部使用的不需要外部访问,这个时候用ClusterIP就比较合适 - NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过:NodePort来访问改服务 当我们的Gitlab需要提供访问,可以使用NodePort指定一个端口释放服务,然后外层负载均衡映射就可以在外部访问,或者直接访问对应的端口...
喵了_个咪 发布于 5天前 阅读 180

从golang函数栈空间分布看defer,你就不会再错了

    defer 是golang 面试常会面的一个点,但是实在话, 这玩意没多大用,特别是高频下,很多厂的优化点之一就是defer。但是这玩意复杂起来,你确实不一定能都答对,到底怎么分析defer ,才能保证返回值正常呢?其实明白 golang 的函数栈空间布局,就不会再弄错了。     参考网上一哥们的文章,http://www.zenlife.tk/golang-defer.md,这个兄弟拿了三个例子,总结了一个方法,对于处理带复杂返回值的情况是有用的。     首先做个测试题,如果全部都能做对,这篇文章就没必要看了,要是感觉有点瞎蒙,就还是看下: ex1: func f() (result int) { defer func() { result++ }() return 0 } ex2: func f() (r int) { t := 5 defer func() { t = t + 5 }() return t } ex3: func f() (r int) { defer func(r int) { r = r + 5 }(r) return 1 }     这三个例子基本涵盖了defer 最复杂的情况,而且非常有代表性。    那个兄弟说的比较清楚了,他也总结了一个很好的方法,这里我不复述他说的内容,谈下自己的理解,他的方法是这样的,当出现defer 的时候,我们拆解成下面步骤:...
鼎铭 发布于 5天前 阅读 150

golang Mutex 实现上的几个巧妙的点

    golang 的metux 的实现有几个点做法是非常有意思的,一个是底层数据结构上,用了平时很少用的位运算,第二个,用到了自旋,并做了自旋策略控制,最后是用了信号量控制协程。     首先是golang mutex 中用了很多位运算。位运算不做细介绍,对内存利用比较高的算法都有涉及,比如redies 的压缩列表,比如golang 的Protobuffer。     有几个关键点,iota 在定义的时候,用的多,做自增运算:     const ( mutexLocked = 1 << iota // mutex is locked mutexWoken mutexWaiterShift = iota ) // 这里 第一个变量为1 ,第二个变量为10, 第三个为10     然后,位运算的求或和求与用的很多,一个是与1 求或将某位置1,一个是与0 求与将某位置0,这些都是用于改变某些标志位的方式,不要看懵逼了: new := old | mutexLocked // 将old 的最后一位置1,表示new 锁一定是被持有状态 if old&mutexLocked != 0 { // 将最后一位保留后,其他位全部置0, 判断最后一位的状态是不是0,判断是不是被持有 if runtime_canSpin(iter) { // Active spinning makes sense. // Try t...
鼎铭 发布于 5天前 阅读 138

为什么 PHP 程序员应该学习使用 Swoole

最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧。 借助这篇文章,我希望能够把 Swoole 安利给更多人。虽然 Swoole 可能目前定位是一些高级 phper 的玩具,让中低级望而生畏,可能对一些应用场景也一脸懵逼,但其实没这么难的。 在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。 Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。 那为什么要使用 Swoole? 宇润认为有以下几点: - 常驻内存,避免重复加载带来的性能损耗,提升海量性能 - 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) - 方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信 - PHP 高性能微服务架构成为现实 ### 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。这可能已经成为性能问题的一大原因,而使用 Swoole 则没有这个问题,一次加载多...
宇润 发布于 1周前 阅读 1504 评论 12 点赞 4

node-rdkafka在docker build中失败的解决方法

> @ start / > node app.js /node_modules/bindings/bindings.js:88 throw e ^ Error: /node_modules/node-rdkafka/build/Release/node-librdkafka.node: invalid ELF header at Object.Module._extensions..node (module.js:664:18) at Module.load (module.js:554:32) at tryModuleLoad (module.js:497:12) at Function.Module._load (module.js:489:3) at Module.require (module.js:579:17) at require (internal/module.js:11:18) at bindings (/node_modules/bindings/bindings.js:81:44) at Object.<anonymous> (/node_modules/node-rdkafka/librdkafka.js:10:32) at Module._compile (module.js:635:30) at Object.Module._extensions..js (module.js:646:10) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @ start: `node app.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @ start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be fou...
ykbj 发布于 1周前 阅读 160

6月25日至27日,为何全球开源大咖齐聚国家会议中心?LC3来啦!

广告
今年6月25日至27日, LinuxCon + ContainerCon + CloudOpen(LC3)将在北京国家会议中心召开。本次会议针对开源技术在人工智能和深度学习、区块链、云原生、虚拟服务器架构和微服务、新兴技术、基础实施和自动化、IoT和M2M、KVM、Linux系统、网络编排等10大前沿领域的应用,邀请了全球数百位业界大咖,用三天时间、超过200场分享,从市场、技术、产业甚至整个生态层面,将做全方位的探讨。
LinuxCon + ContainerCon + CloudOpen(LC3)

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Test public void testQuer...
bboss 发布于 21小时前 阅读 2

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen 80; server_name loca...
算法之名 发布于 17小时前 阅读 1

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的是我们不需要重启Web...
CodeSheep 发布于 14小时前 阅读 1

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只要不同步,共享数据就...
长安一梦 发布于 12小时前

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不忘更新Spring的知识,...
Wenyi_Feng 发布于 19小时前 阅读 10 评论 3

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一...
佛系程序猿灬 发布于 22小时前

Java 限流策略

概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队...
轨迹_ 发布于 6小时前 阅读 1

003、nginx配置反向代理

1、反向代理的作用:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务...
北岩 发布于 4小时前

maven顶级pom和子pom的版本号批量修改

当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。还好,maven为我们提供了以下...
ArlenXu 发布于 2天前 阅读 5

搬瓦工 VPS 安装并开启 Google BBR 教程(KVM / OpenVZ)

为了方便大家复制,把一些命令贴在这儿。更多详情
python-yzw 发布于 1个月前 阅读 53

聊聊spring cloud的HystrixAutoConfiguration

序 本文主要研究一下spring cloud的HystrixAutoConfiguration HystrixAutoConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/netflix/hystrix/HystrixAutoConfigu...
go4it 发布于 13小时前

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~ 开头表示uri以某个常规...
北岩 发布于 4小时前

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资...
kim_o 发布于 11小时前

637. Average of Levels in Binary Tree - LeetCode

Question 637. Average of Levels in Binary Tree Solution 思路:定义一个map,层数作为key,value保存每层的元素个数和所有元素的和,遍历这个树,把map里面填值,遍历结束后,再遍历这个map,把每层的平均数放到数组里...
yysue 发布于 2小时前

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一台服务器上是可以排序...
tsmyk0715 发布于 6小时前 阅读 1

Spring mvc DispatchServlet 实现原理

在Spring中, ContextLoaderListener只是辅助类,在web 容器启动的时候查找并创建WebApplicationContext对象,通过该对象进行加载spring的配置文件。而真正的逻辑实现其实是在DispatcherServlet中进行的,Dispatc...
轨迹_ 发布于 9小时前

单点登录JWT

比较主流的方案有几种: 用户名和密码鉴权,使用Session保存用户鉴权结果。---依赖session不适用移动应用 使用OAuth进行鉴权(其实OAuth也是一种基于Token的鉴权,只是没有规定Token的生成方式)---对于非开放平台有些过于复杂 自行采用Token进行鉴权---JWT JWT Json Web Token     JWT是基于RFC 7519标准定义的一种可以安全传输的小巧合自包含的JSON对象。由于数据使用数字签名的,所以是可信任和安全的。     JWT只不过提供了一种基于token的请求验证机制,用户权限,对于API的权限划分、资源的权限划分,用户的验证等等都不是JWT负责的, 工作流程 1 用户导航到登录页面,输入用户名,密码,进行登录 2 服务器验证登录鉴权,如果该用户合法,根据用户的信息和服务器的规则生成JWT Token 3 服务器将该token以json形式返回(不一定json的形式,只是常见的做法) 4 用户得到token,存在localStorage,cookie或其他数据存储形式中。 5 以后用户请求 、protected中的API时,在请求header中加入Authorization:Bearer xxx(token)。注意token之前有一个7字符长度的Bearer。 6 服务器端对此token进行检查,如果合法就解析其中内容,根据其拥有的权限和自己的业务逻辑给出对...
yangty2017 发布于 3个月前 阅读 13

Java 内存模型

物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度有几个数量级的差距。...
长安一梦 发布于 7小时前

Windows Server 2012 安装 Oracle 11g r2 环境不满足最低要求

Windows Server 2012 R2 安装 Oracle 11g r2 环境不满足最低要求 今天在生产环境(window server 2012 R2)上安装 Oracle 数据库时出现了 **[INS-13001] 安装环境不满足最低要求 ** 的错误,之前在 win10 上也遇到...
Os_yxguang 发布于 13小时前

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标签的镜像 docker rmi...
vvx1024 发布于 12小时前

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

广告
华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

为什么 PHP 程序员应该学习使用 Swoole

最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧。 借助这篇文章,我希望能够把 Swoole 安利给更多人。虽然 Swoole 可能目前定位是一些高级 phper 的玩具,让中低级望而生畏,可能对一些应用场景也一脸懵逼,但其实没这么难的。 在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。 Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。 那为什么要使用 Swoole? 宇润认为有以下几点: - 常驻内存,避免重复加载带来的性能损耗,提升海量性能 - 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) - 方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信 - PHP 高性能微服务架构成为现实 ### 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。这可能已经成为性能问题的一大原因,而使用 Swoole 则没有这个问题,一次加载多...
宇润 发布于 1周前 阅读 1504 评论 12 点赞 4

Intellij IDEA神器居然还有这些小技巧

# 概述 --- `Intellij IDEA`真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对`Intellij IDEA`的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的`Intellij IDEA`技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。 --- # 我最爱的【演出模式】 --- 我们可以使用【Presentation Mode】,将`IDEA`弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的`coding`。 可以使用`Alt+V`快捷键,弹出`View`视图,然后选择`Enter Presentation Mode`。效果如下: ![这里写图片描述](https://img-blog.csdn.net/20180506101049248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnNvbmdiaW4x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 这个模式的好处就是,可以让你更加专注,因为你只能看到特定某个类的代码。可能读者会问,进入这个模式后,我想看其他类的代码怎么办?这个时候,就要考验你快捷键的熟练程度了。你可以使用`CTRL+E`弹出最近使用的文件。又或者使用`CTRL+N`和`CTRL+SHIFT+N`定位文件。 如何退出这个模式呢?很简单,使用`ALT+V`弹出view视图,然后选择`Ex...
Sam哥哥聊技术 发布于 2个月前 阅读 12264 评论 77 点赞 43 打赏 1

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilde...
waylau 发布于 2天前 阅读 251

用t-io来写一个网页聊天室或客服是个怎样的体验

tio-websocket-server的首发教程,并且是以showcase的形式展现的----不仅仅是个教程,还是个可以放心使用的脚手架。
talent-tan 发布于 2个月前 阅读 8096 评论 56 点赞 18 打赏 2

浅谈设计模式之单例模式

单例模式(Singleton Pattern)是 Java 中常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例...
佛系程序猿灬 发布于 1周前 阅读 851 评论 1

数据库数据导入Elasticsearch案例分享

The best elasticsearch highlevel java rest api-----bboss  基于bboss持久层和bboss elasticsearch客户端...
bboss 发布于 4天前 阅读 445

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操作。 - Redis 发布订...
Simonton 发布于 2天前 阅读 171 评论 2

BIO、NIO、AIO 内部原理分析

相关文章 NIO 之 Selector实现原理 NIO 之 Channel实现原理 NIO 之 ByteBuffer实现原理 阻塞IO 所有的读写IO都是阻塞操作。 多路复用模型 select/poll 从程序的角度解释: 将 channel 注册到 seletor 上,通过轮询...
轨迹_ 发布于 2天前 阅读 177 打赏 1

开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成)

系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成) 4. 开源一款强大的文件服务组件(QJ_FileCenter)(系列四 文件结构)计划中... 5. 开源一款强大的文件服务组件(QJ_FileCenter)(系列五 数据结构)计划中... 6. 开源一款强大的文件服务组件(QJ_FileCenter)(系列六 图片处理说明)计划中... 7. 开源一款强大的文件服务组件(QJ_FileCenter)(系列七 与阿里云和七牛云等云存储搭配使用)计划中...   前两篇文章介绍了,开发思路和安装说明,下面进入详细介绍。 一:访问接口,接口采用RESTFul模式,在安装好服务默认页面有API的简单介绍   qycode,在使用接口之前,需要先申请qycode,后台会根据qycode分开集中存储文件,方便管理,比如申请了qycode为tx,重点介绍几个接口: 1.上传文件(http://localhost:9000/v2/tx/document/fileupload)   2.下载文件(http://localhost:9000/v2/tx/document/{md5})  在浏览器打开直接下载文件,如果是图片,需要在页面上展示,可以使用src属性展示图...
bluesky001 发布于 4天前 阅读 342

数据库中常说的steal和force到底是什么?

      时长在看一些database paper的时候看到steal和no-force的字样,深入了解了一下,发现我们平时关注的redo log个undo log都是有渊源的,什么时候需要redo log,什么时候需要undo log,什么时候两者都需要。英文好的可以直接去看上面的wiki,不好的可以看我总结的大白话吧。 steal/no-steal:       是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo log。 force/no-force:       force策略表示事务在committed之后必须将所有更新立刻持久化到磁盘,这样会导致磁盘发生很多小的写操作(更可能是随机写)。no-force表示事务在committed之后可以不立即持久化到磁盘, 这样可以缓存很多的更新批量持久化到磁盘,这样可以降低磁盘操作次数(提升顺序写),但是如果committed之后发生crash,那么此时已经committed的事务数据将会丢失(因为还没有持久化到磁盘),因此系统需要记录redo log,在系统重启时候进行前滚(roll-forward)操...
黑客画家 发布于 3天前 阅读 247

idea在线生成注册码地址2018已经验证可用

http://idea.lanyus.com/
keppy 发布于 3个月前 阅读 1727

Springboot2 Jpa关于分页PageRequest

Ⅰ 公司做项目,都是使用Mybatis, 个人不太喜欢xml的方式,自然也尝试无xml的Mybatis,在之前写的一篇多数据源+Mybatis+无xml配置. 不废话,本篇记录使用JPA遇到的问题笔记.   Ⅱ 写到Dao层,继承JpaRepository,实现分页时候的问题. public interface HelloRepository extends JpaRepository<Hello,Integer> 单元测试的时候,用到了PageRequest PageRequest pageRequest=new PageRequest(0,10); 这明显是过期了,不能容忍的强迫症犯发,点进去API查看 发现3个构造器都@Deprecated注解,说明过时的调用方式,不推荐使用. 再往下看,可以找到static的方法,是用来建造PageRequest对象的,内部调用的也是原来的构造器. 把原来的 new PageRequest 改成 PageRequest.of(0,10); 有3个重载 对应 3个构造器. 官方API说明: since 2.0, use of(...) instead. 2.0版本后,使用 of(...) 方法代替 PageRequest(...)构造器 URL :  ↓↓↓ https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/PageRequest.html   Ⅲ 扩展学习一下API的设计思想 分析: PageRequest构造器中的参数最多是4个参数,其中必填的是2个参数(page,rows) 另外2个参数是选填direc...
___大侠 发布于 1个月前 阅读 617 评论 4

http2.0 --速度与激情

目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ...
华哥_ 发布于 3周前 阅读 4015 评论 12 点赞 5

Kubernetes(五) - Service

![](http://pic.w-blog.cn/kubernetes/7.png) Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberneres的DNS服务我们只需要访问Service的名字就能以负载的方式访问到各个容器 Kubernetes官方文档:[https://kubernetes.io/docs/reference/](https://kubernetes.io/docs/reference/) Kubernetes官方Git地址:[https://github.com/kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) > PS:本系列中使用 KubernetesV1.8 RancherV1.6.14 ## 1. Service的三种类型 Service有三种类型: - ClusterIP:默认类型,自动分配一个仅cluster内部可以访问的虚拟IP 常用于内部程序互相的访问,比如Gitlab需要访问Redis的postgresql,但是是内部使用的不需要外部访问,这个时候用ClusterIP就比较合适 - NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过:NodePort来访问改服务 当我们的Gitlab需要提供访问,可以使用NodePort指定一个端口释放服务,然后外层负载均衡映射就可以在外部访问,或者直接访问对应的端口...
喵了_个咪 发布于 5天前 阅读 180

spring-boot-admin 2.0小试牛刀

## 序 本文主要展示下spring-boot-admin 2.0版本的新特性 ## server实例 ### maven ``` de.codecentric spring-boot-admin-starter-server 2.0.0 org.springframework.boot spring-boot-starter-webflux org.jolokia jolokia-core org.springframework.boot spring-boot-starter-actuator ``` ### 配置 ``` spring: application: name: spring-boot-admin-server eureka: instance: preferIpAddress: true leaseRenewalIntervalInSeconds: 10 client: registryFetchIntervalSeconds: 5 serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/ management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS ``` ### config ``` @Configuration @EnableAutoConfiguration @EnableAdminServer public class AdminServerApplication { public static void main(String[] args) { SpringApplication.run(AdminServerApplication.class, args); } } ``` ## client实例 ### maven ``` de.codecentric spring-boot-admin-starter-client 2.0.0 org.springframework.boot spring-boot-starter-actuator org.jolokia joloki...
go4it 发布于 1个月前 阅读 646 评论 1 点赞 1

IDEA破解 2018 IDEA license server 激活

http://idea.congm.in  
星痕2018 发布于 3个月前 阅读 3409 点赞 2

从golang函数栈空间分布看defer,你就不会再错了

    defer 是golang 面试常会面的一个点,但是实在话, 这玩意没多大用,特别是高频下,很多厂的优化点之一就是defer。但是这玩意复杂起来,你确实不一定能都答对,到底怎么分析defer ,才能保证返回值正常呢?其实明白 golang 的函数栈空间布局,就不会再弄错了。     参考网上一哥们的文章,http://www.zenlife.tk/golang-defer.md,这个兄弟拿了三个例子,总结了一个方法,对于处理带复杂返回值的情况是有用的。     首先做个测试题,如果全部都能做对,这篇文章就没必要看了,要是感觉有点瞎蒙,就还是看下: ex1: func f() (result int) { defer func() { result++ }() return 0 } ex2: func f() (r int) { t := 5 defer func() { t = t + 5 }() return t } ex3: func f() (r int) { defer func(r int) { r = r + 5 }(r) return 1 }     这三个例子基本涵盖了defer 最复杂的情况,而且非常有代表性。    那个兄弟说的比较清楚了,他也总结了一个很好的方法,这里我不复述他说的内容,谈下自己的理解,他的方法是这样的,当出现defer 的时候,我们拆解成下面步骤:...
鼎铭 发布于 5天前 阅读 150

spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法

在spring boot 1.5.x中,resources/static目录下的静态资源可以直接访问,并且访问路径上不用带static,比如静态资源放置位置如下图所示: ![静态资源目录结构](https://gitee.com/uploads/images/2018/0413/152827_e25801df_1092395.png "静态资源目录结构.png") 那么访问静态资源的路径可以是: - http://localhost:8080/views/demoindex.html - http://localhost:8080/res/js/jquery.min.js 当有配置自定义HandlerInterceptor拦截器时,请求以上静态资源路径不会被拦截。自定义HandlerInterceptor拦截器源码如下: ``` package com.itopener.demo.config; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /** * @author fuwei.deng * @date 2018年4月13日 下午3:32:26 * @version 1.0.0 */ public class LoginRequiredInterceptor extends HandlerInterceptorAdapter { private final Logger logger = LoggerFactory.getLogger(LoginRequiredInterceptor.class); @Override publ...
Mr---D 发布于 2个月前 阅读 1560 评论 4 点赞 3

Intellij IDEA神器那些让人爱不释手的小技巧

Intellij IDEA神器那些让人爱不释手的小技巧
Sam哥哥聊技术 发布于 3周前 阅读 6364 评论 41 点赞 18 打赏 1

Spring Boot2.0使用Redis的一些解决心得

摘要: Spring Boot 从1.5.x升级到2.0,其中有些变化,如果不注意就会跳坑。在Redis模块,从1.5.x升级到2.0,如果不注意其中的变化,就会碰到CacheManager配置的变化。 在Spring Boot 1.5.x之前,Redis模块的配置已经有很多教程和例子了,比如纯洁的微笑的博客还有程序猿DD的博客。 SpringBoot1.5x之前,Redis配置如下: @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { @Bean public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Object generate(Object target, Method method, Object... params) { StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append(method.getName()); for (Object obj : params) { sb.append(obj.toString()); } return sb.toString(); } }; } @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { ...
loubobooo 发布于 2个月前 阅读 1663 评论 1

如何将S/4HANA系统存储的图片文件用Java程序保存到本地

我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api. DATA ls_appl_object TYPE gos_s_obj. DATA lo_gos_api ...
JerryWang_SAP 发布于 1小时前

「华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

637. Average of Levels in Binary Tree - LeetCode

Question 637. Average of Levels in Binary Tree Solution 思路:定义一个map,层数作为key,value保存每层的元素个数和所有元素的和,遍历这个树,把map里面填值,遍历结束后,再遍历这个map,把每层的平均数放到数组里...
yysue 发布于 2小时前

使用Java connector消费ABAP系统的函数

Java Connector(JCO)环境的搭建:Step by step to download and configure JCO in your laptop 我的ABAP系统有个函数名叫ZDIS_GET_UPSELL_MATERIALS,输入一个customer ID和product ID,会输出为这对客户和produ...
JerryWang_SAP 发布于 3小时前

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做? I. 配...
小灰灰Blog 发布于 3小时前

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~ 开头表示uri以某个常规...
北岩 发布于 4小时前

003、nginx配置反向代理

1、反向代理的作用:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务...
北岩 发布于 4小时前

Yii2中findAll()的正确使用姿势/返回为空的处理办法

从一次错误的操作开始 $buildingObject = Building::findAll("status=1"); 1 这个调用看着没有任何毛病,但是在使用时返回的结果却是一个空数组。再回过头来看看数据表中: 按照套路来讲,查询后应该返回的是一...
dragon_tech 发布于 4小时前

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation; import java.lang.annot...
轨迹_ 发布于 4小时前

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们当前无法为客户或子系...
harries 发布于 4小时前

java 线程池

概述 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB...
轨迹_ 发布于 5小时前

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: 1 2 ./configure --us...
Yomut 发布于 5小时前

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用@RequestBody进行注...
@林文龙 发布于 5小时前 评论 1

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4 #> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4 #> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1280x720 -b 1000k out...
Contac 发布于 5小时前

Spring Boot启动配置原理

几个重要的事件回调机制 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListener 只需要放在ioc容器中 ApplicationRunner CommandLineRunner 启动流程: 1、创建SpringApp...
小致dad 发布于 6小时前

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的双端队列 HashSet 一...
edwardGe 发布于 6小时前

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html
BobwithB 发布于 6小时前

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋予权限 (如果不进行安...
晨猫 发布于 6小时前

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAutoConfiguration;错误处...
小致dad 发布于 6小时前

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。
sskill 发布于 6小时前

Spring Boot国际化配置

1)、编写国际化配置文件; 2)、使用ResourceBundleMessageSource管理国际化资源文件 3)、在页面使用fmt:message取出国际化内容 步骤: 1、编写国际化配置文件,抽取页面需要显示的国际化消息 2、SpringBoot自动...
小致dad 发布于 6小时前

华为云」云中优选惠,全场低至2折,6.19-6.30开抢,签到抽P20

华为云年中钜惠,注册抽免费高配(2核4G)云服务器,单人成团2折起抢购热销云产品;云服务器、数据库、安全防护、大数据等150+云产品,更有精彩好礼送不停!
华为云

为什么 PHP 程序员应该学习使用 Swoole

最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧。 借助这篇文章,我希望能够把 Swoole 安利给更多人。虽然 Swoole 可能目前定位是一些高级 phper 的玩具,让中低级望而生畏,可能对一些应用场景也一脸懵逼,但其实没这么难的。 在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。 Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。 那为什么要使用 Swoole? 宇润认为有以下几点: - 常驻内存,避免重复加载带来的性能损耗,提升海量性能 - 协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等) - 方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信 - PHP 高性能微服务架构成为现实 ### 常驻内存 目前传统 PHP框架,在处理每个请求之前,都要做一遍加载框架文件、配置的操作。这可能已经成为性能问题的一大原因,而使用 Swoole 则没有这个问题,一次加载多...
宇润 发布于 1周前 阅读 1504 评论 12 点赞 4

浅谈设计模式之单例模式

单例模式(Singleton Pattern)是 Java 中常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例...
佛系程序猿灬 发布于 1周前 阅读 851 评论 1

t-io 集群解决方案以及源码解析

#### t-io 集群解决方案以及源码解析 [TOC] ##### 0x01 概要说明 本博客是基于老谭[t-io](https://gitee.com/tywo45/t-io) showcase中的[tio-websocket-showcase](https://gitee.com/tywo45/tio-websocket-showcase) 示例来实现集群。看showcase 入门还是挺容易的,入坑(入门)请看老谭写的[用t-io来写一个网页聊天室或客服是个怎样的体验](https://my.oschina.net/talenttan/blog/1806324)。 要深入理解具体实现原理后续的业务扩展,把t-io玩6起来还需要耐心看看源码,看了之后我相信你一定会有收获的,祝你好运。 其实[t-io](https://gitee.com/tywo45/t-io) 在`2.4`的版本中已加入的集群实现的逻辑代码,只是官方没有写文档以及完整的示例而已,在此不得不说[t-io](https://gitee.com/tywo45/t-io) 是一个比较良心的开源项目,很多业务场景都有考虑到。你们有需求也可以去[t-io](https://gitee.com/tywo45/t-io)提[issues](https://gitee.com/tywo45/t-io/issues)。 ##### 0x02 已有的集群解决方案 - [后天雨街同学写的小改下把tio-websocket-showcase变成可集群方式](https://my.oschina.net/u/2078/blog/1810080) - [J-IM 自己实现的一套集群方案](https://gitee.com/x...
Javen 发布于 2周前 阅读 1708 评论 8 点赞 5

Tomcat Session管理分析

前言 在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager介绍 上文中在Tomcat的context.xml中配置了Session管理器RedisSessionManager,实现了通过redis来存储session的功能;Tomcat本身提供了多种Session管理器,如下类图: 1.Manager接口类 定义了用来管理session的基本接口,包括:createSession,findSession,add,remove等对session操作的方法;还有getMaxActive,setMaxActive,getActiveSessions活跃会话的管理;还有Session有效期的接口;以及与Container相关联的接口; 2.ManagerBase抽象类 实现了Manager接口,提供了基本的功能,使用ConcurrentHashMap存放session,提供了对session的create,find,add,remove功能,并且在createSession中了使用类SessionIdGenerator来生成会话id,作为session的唯一标识; 3.ClusterManager接口类 实现了Manager接口,集群session的管理器,Tomcat内置的集群服务器之间的session复制功能; 4.ClusterManagerBase抽象类 继承了ManagerBase抽象类,实现ClusterMana...
ksfzhaohui 发布于 2周前 阅读 524 评论 12 点赞 17

SpringBoot应用部署于外置Tomcat容器

![Desktop](https://upload-images.jianshu.io/upload_images/9824247-cf33cdd281791244.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉SBT应用内置的Tomcat服务器,进而将应用发布并部署到外置的Tomcat容器之中,本文就实践一下这个。 --- ## 0x02. 修改打包方式 修改项目的pom.xml配置,我们修改其打包方式为war方式,如: ``` com.example demo 0.0.1-SNAPSHOT war ``` --- ## 0x03. 移除SBT自带的嵌入式Tomcat 修改pom.xml,从maven的pom中移除springboot自带的的嵌入式tomcat插件 ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` --- ## 0x04. 添加servlet-api依赖 修改pom.xml,在maven的pom中添加servlet-api的依赖 ``` javax.servlet javax.servlet-api 3.1.0 provided ``` --- ## 0x05. 修改启动类,并重写初始...
CodeSheep 发布于 3周前 阅读 2474 评论 5 点赞 7

Intellij IDEA神器那些让人爱不释手的小技巧

Intellij IDEA神器那些让人爱不释手的小技巧
Sam哥哥聊技术 发布于 3周前 阅读 6364 评论 41 点赞 18 打赏 1

http2.0 --速度与激情

目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ...
华哥_ 发布于 3周前 阅读 4015 评论 12 点赞 5

MySQL-性能优化-索引和查询优化

MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 3. 不管在哪种程序优化上,要想快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使用的时候就直接在内存上读取,而不去磁盘上读取,减少I/O操作,这样就能使程序快上10倍以上。但由于内存容量的限制,也不可能将所有的数据都放内存中。 MySQL索引分类 普通索引:最基本的索引,没有任何限制。 唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引...
秋日芒草 发布于 3周前 阅读 3304 评论 19 点赞 16

RESTFul 服务测试自动化的艺术 - TODO 服务篇

老码农在[上一篇博客](https://my.oschina.net/greenlaw110/blog/1811714) 给出了如何从头开始创建一个 自带自动化测试工具的 RESTful 服务项目的例子. 今天我们在这个简单例子上做延伸, 把这个例子改写为一个简单的 TODO Task 应用. 该应用会提供以下服务端口: * GET /todos - 返回所有的 TODO 项 * GET /todos/?q=? - 查询 TODO 项, 所有描述符合 q 参数的 TODO 项都会被返回 * GET /todos/{id} - 返回指定 ID 的 TODO 项 * POST /todos - 添加一条 TODO 项 * DELETE /todos/{id} - 删除指定 ID 的 TODO 项 ## 1. 创建项目 下面开始创建初始项目: ``` mvn archetype:generate -B \ -DgroupId=demo.todo \ -DartifactId=todo-service \ -DarchetypeGroupId=org.actframework \ -DarchetypeArtifactId=archetype-simple-restful-service \ -DarchetypeVersion=1.8.8.5 ``` 下面我们将项目用 Intellij IDEA 打开. (推荐使用 IDEA 开发 Act 应用, 社区版足够使用了) ![image](https://user-images.githubusercontent.com/216930/40701817-cd25d77e-6422-11e8-9657-3f4b55b77e1b.png) ## 2. 加入数据库访问插件依赖 可以删除掉项目创建的 `Service.java` 文件. 然后在 `pom.x...
罗格林 发布于 3周前 阅读 3309 评论 13 点赞 4

MySQL-性能优化-优化设计和设计原则

MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化 1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效率) 2. 节省空间(根据业务经验,设置字段长短) 3. 提高效率 数据库表开发流程 原型=>逐步完善(表的设计也是如此) 数据库种类 1. 层级数据库(注册表) 如:Windows操作系统的核心就是一个注册表,由于配置项比较多,采用层级关系的数据存储 2. 关系型数据库 如:MySQL 3. 时序数据库 4. 图数据库 如:最短路径,地理信息 5. Key-value数据库 如:Redis 6. 对象数据库 7. BigTable数据库 文件系统和数据库系统之间的区别? (1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据; (2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离; (3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据; (4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。 优化设计第一步 想要在表设计中节省空间,就必须精通各种数据类型的特...
秋日芒草 发布于 4周前 阅读 3982 评论 21 点赞 7

JVM调优-堆大小设置、回收器选择

堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX...
小鱼儿321 发布于 4周前 阅读 3111 评论 20 点赞 8

Why c++ coroutine?Why libgo?

讲述C++协程的近况、设计与实现中的细节与决策
Li_Mr 发布于 1个月前 阅读 3554 评论 47 点赞 12

一场版本升级引发的性能血案的追凶过程

## 1. 故事的开始 上周 ActFramework 推出 [act-1.8.8-RC4 版本](https://www.oschina.net/news/96046/act-starter-1-8-8-0-released) 后, 我兴致勃勃更新了 [TFB 性能 PK 项目](https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Java/act) 到最新版, 经过漫长的 60 小时 ( TFB 的一次运行周期是 60 小时) 等待后终于等来了 .............................................. 噩耗: Act 这次的性能骤然下降, 不同测试的下降范围从 60% 到 90% 不等! 不多说了, 说起来都是泪啊. 先上图吧 (为了更加切合重点, 设置了测试过滤, 只显示 Java 全栈框架, 且排除掉了直接用 JDBC 的测试项目): ### 1.1 JSON 测试 [act-1.8.1](https://www.techempower.com/benchmarks/#section=test&runid=61ff99e2-2392-4d7a-b6af-a5f081c5e004&hw=ph&test=db&l=hra0e7&c=6&o=4) ![image](https://user-images.githubusercontent.com/216930/40289132-043035a0-5cfa-11e8-972e-90df52a5b938.png) [act-1.8.8-RC4](https://www.techempower.com/benchmarks/#section=test&runid=ae097e87-3b23-402c-8f51-1608e16dd11a&hw=ph&test=json&l=hra0e7&c=6&o=4) ![image](http...
罗格林 发布于 1个月前 阅读 2588 评论 18 点赞 9

RPC框架实践之:Google gRPC

gRPC是Google开源的通用高性能RPC框架,它支持的是使用**Protocol Buffers**来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。
CodeSheep 发布于 1个月前 阅读 2527 评论 1 点赞 4

深入浅出设计模式——从球赛中悟多例模式

之前有讲过单例模式,多例模式实际上可以看作是单例模式推广。在多例模式中,多例类可以有多个实例,并且多例类要负责创建、管理并且向外提供自己的实例。
珂jack 发布于 1个月前 阅读 1004 评论 5 点赞 2

理解 Dubbo SPI 扩展机制

写在前面         最近接触了 gRPC 体会到虽然众多 RPC 框架各有各的特点但是他们提供的特性和功能有很多的相似之处 , 这就说明他们面对同样的分布式系统带来的问题。从 2016 年左右开始接触到 dubbo ,基本停留在使用的层面,对 dubbo 的设计以及着重要解决的问题都没有系统的研究过,通过对 dubbo 和其他类似 RPC 产品的系统学习 ,学习分布式系统中面临的共同问题以及解决之道。    微内核架构         微内核架构 (Microkernel architecture) 模式也被称为插件架构 (Plugin architecture) 模式。原本与内核集成在一起的组件会被分离出来,内核提供了特定的接口使得这些组件可以灵活的接入,这些组件在内核的管理下工作,但是这些组件可以独立的发展、更改(不会对现有系统造成改动),只要符合内核的接口即可。典型的例子比如 , Eclipse , IDEA 。                           Dubbo 的微内核设计         根据我个人对 Dubbo 微内核设计的理解,以及阅读源码后总结。视觉总是最直观的,可以让大脑最快速度的有一个最直观的认识,一开始就一头深入到源码的细节中只会让人迷糊。不理解 Dubbo 的微内核设计架构的话,学...
j4love 发布于 1个月前 阅读 1777 评论 2

基于Docker搭建MySQL主从复制

本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建。
秋田君 发布于 1个月前 阅读 3130 评论 15 点赞 16

秒杀架构实践

![](https://ws2.sinaimg.cn/large/006tKfTcly1fr1z9k79lrj31kw11zwt8.jpg) ## 前言 之前在 [Java-Interview](https://github.com/crossoverJie/Java-Interview/blob/master/MD/Spike.md) 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 > 本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang😂)。 本文所有涉及的代码: - [https://gitee.com/crossoverJie/SSM](https://gitee.com/crossoverJie/SSM) - https://gitee.com/crossoverJie/distributed-redis-tool](https://gitee.com/crossoverJie/distributed-redis-tool) 最终架构图: ![系统架构设计.png](https://i.loli.net/2018/05/08/5af079ea8618b.png) 先简单根据这个图谈下请求的流转,因为后面不管怎么改进这个都是没有变的。 - 前端请求进入 `web` 层,对应的代码就是 `controller`。 - 之后将真正的库存校验、下单等请求发往 `Service` 层(其中 RPC 调用依然采用的 `dubbo`,只是更新为最新版本,本次不会过多讨论 dubbo 相关的细节,有兴趣的可以查看 [基于dubbo的分布式架构](https://crossoverjie.top/%2F2017%2F04%2F07%2FSSM11%2F))。 - `S...
crossoverJie 发布于 1个月前 阅读 3404 评论 38 点赞 16

Intellij IDEA神器居然还有这些小技巧

# 概述 --- `Intellij IDEA`真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对`Intellij IDEA`的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的`Intellij IDEA`技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。 --- # 我最爱的【演出模式】 --- 我们可以使用【Presentation Mode】,将`IDEA`弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的`coding`。 可以使用`Alt+V`快捷键,弹出`View`视图,然后选择`Enter Presentation Mode`。效果如下: ![这里写图片描述](https://img-blog.csdn.net/20180506101049248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnNvbmdiaW4x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 这个模式的好处就是,可以让你更加专注,因为你只能看到特定某个类的代码。可能读者会问,进入这个模式后,我想看其他类的代码怎么办?这个时候,就要考验你快捷键的熟练程度了。你可以使用`CTRL+E`弹出最近使用的文件。又或者使用`CTRL+N`和`CTRL+SHIFT+N`定位文件。 如何退出这个模式呢?很简单,使用`ALT+V`弹出view视图,然后选择`Ex...
Sam哥哥聊技术 发布于 2个月前 阅读 12264 评论 77 点赞 43 打赏 1

接口方法上的注解无法被@Aspect声明的切面拦截的原因分析

Spring中使用MyBatis的Mapper接口自动生成时,用一个自定义的注解标记在Mapper接口的方法中,@Aspect定义一个切面拦截这个注解以记录日志或者执行时长。但是惊奇的发现,在Spring Boot 1.X(Spring Framework 4.x)中,并不能生效,而在Spring Boot 2.X(Spring Framework 5.X)中却能生效。这是为什么呢?
光闪 发布于 2个月前 阅读 1675 评论 9 点赞 9
顶部