开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其文档,终于搞明白了它...
JamesView 发布于 2小时前

git-merge完全解析

Git的git-merge是在Git中频繁使用的一个命令,很多人都觉得git合并是一个非常麻烦的事情,一不小心就会遇到丢失代码的问题,从而对git望而却步。本文基于Git 2.8.2对git-merge命令进行完整详细的介绍,特别是关于...
chuckiefan 发布于 4小时前 阅读 5 评论 1 点赞 1

一个学渣的阿里之路

前言 最近有些朋友在面试阿里,加上 Java-Interview 项目的原因也有小伙伴和我讨论,近期也在负责部门的招牌,这让我想起年初那段长达三个月的奇葩面试经历。 本来没想拿出来说的,毕竟最后也没成。 但由于那几个...
crossoverJie 发布于 5小时前 阅读 48 评论 6 点赞 1

MyBatis四大核心概念

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

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

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

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

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

一文带你搞定Integer

1.1 前言 Integer是int对应的包装类,它包含一个int类型的字段存储数据,并提供了多个基本操作,能在 int 类型和 String 类型之间互相转换。在Java5中,引入了自动装箱和自动拆箱功能,Java可根据上下文,自动进行...
筱虾米 发布于 17小时前 阅读 72

Containerd概述

Containerd概述 (2018-03-23) “早在16年3月,Docker 1.11的Docker Engine里就包含了containerd,而现在则是把containerd从Docker Engine里彻底剥离出来,作为一个独立的开源项目独立发展,目标是提供一个更加开放...
Markz0928 发布于 18小时前 阅读 61

管理Docker数据[译]

管理Docker数据 2018-04-12 原文链接:https://docs.docker.com/storage/ 在容器的可写层可以存储数据,但是有如下缺点: 容器不再运行时,数据将不会持续存在,数据很难从容器中取出。 容器可写层与容器运行的宿...
Markz0928 发布于 18小时前 阅读 83 点赞 1

BIO、NIO、AIO 内部原理分析

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

前端基础(四):前端国际规范收集

  字数:1142 阅读时间:5分钟   前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,...
老司机带你撸代码 发布于 19小时前 阅读 104

Kubernetes Resource QoS Classes介绍

Kubernetes Resource QoS Classes介绍 @(Kubernetes) 基本概念 Kubernetes根据Pod中Containers Resource的request和limit的值来定义Pod的QoS Class。其中,指定容器request,代表系统确保能够提供的资源下限值。指...
Markz0928 发布于 20小时前 阅读 40

使用Guava的RateLimiter做限流

场景: 1. 在日常生活中,我们肯定收到过不少不少这样的短信,“京东最新优惠卷…”,“天猫送您…”。这种类型的短信是属于推广性质的短信。这种短信一般群发量会到千万级别。然而,要完成这些短信发送,我们是需...
wind2012 发布于 20小时前 阅读 101

UINavigationController 自定义转场动画(模仿淘宝App跳转)

# 制作目的 * 想要自定义系统转场动画速度 * 放弃不顺畅的 NavigationBar 隐藏消失 * 干脆直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定...
laiguofeng 发布于 20小时前 阅读 57

Go-简洁的并发

多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一...
万建宁 发布于 21小时前 阅读 168 点赞 2

感知哈希算法

# 一、感知哈希算法 ## 1、基于低频的均值哈希 一张图片就是一个二维信号,它包含了不同频率的成分。如下图所示,亮度变化小的区域是低频成分,它描述大范围的信息。而亮度变化剧烈的区域(比如物体的边缘)...
guorongjin 发布于 21小时前 阅读 83

基于Hadoop集群的Hive安装配置(Derby数据库)

    Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行(具体的Hive架构大家自行搜索)。接下来主要讲下Hadoo...
海岸线的曙光 发布于 22小时前 阅读 92

CoreOS裸机iso安装和相关配置

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

竟然这就是面向对象的游戏设计?!

从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句。在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计。本文将概述原型继承和使用 JavaScript 实现基本...
柳猫 发布于 23小时前 阅读 261 评论 3

Spring AOP 源码分析——创建代理对象

1.简介 与筛选合适的通知器相比,创建代理对象的过程则要简单不少,本文所分析的源码不过100行,相对比较简单。在接下里的章节中,我将会首先向大家介绍一些背景知识,然后再去分析源码。那下面,...
代码屠夫18 发布于 24小时前 阅读 169

MyBatis四大核心概念

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

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

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

一个学渣的阿里之路

前言 最近有些朋友在面试阿里,加上 Java-Interview 项目的原因也有小伙伴和我讨论,近期也在负责部门的招牌,这让我想起年初那段长达三个月的奇葩面试经历。 本来没想拿出来说的,毕竟最后也没成。 但由于那几个...
crossoverJie 发布于 5小时前 阅读 48 评论 6 点赞 1

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其文档,终于搞明白了它...
JamesView 发布于 2小时前

抓包工具fiddler妙用

https://www.cnblogs.com/chenshaoping/p/5785010.html http://www.cnblogs.com/tangdongchu/p/4178552.html https://www.cnblogs.com/pachongshangdexuebi/p/6586590.html 1、fiddler过滤会话 2、Response乱码时...
onedotdot 发布于 3小时前

jvm相关

jvm相关配置: -Xms1048m -Xmx1048m -Xmn10m -XX:MaxPermSize=1048m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails...
洛水 发布于 2小时前

开发利器JRebel部署SpringBoot项目

不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automatically 快捷键 ctrl+s...
郑龙飞 发布于 2小时前

vmware方式搭建hadoop-1.2.1 集群

Linux节点搭建 1、安装vmware 2、打开虚拟机,选择本地虚拟机文件(文章最后附件) 3、网络配置,删除vmnet8,增加一个vmnet8 4、选择桥接模式 5、再切换到net模式 6、修改文件: cd /etc/sysconfig/network-scri...
Prepared 发布于 4小时前 阅读 5

QtCreator 编译时提示 warning C4819 的解决办法

用 QtCreator + Visual C++ 编译器 编译程序时经常会出现类似的警告: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 warning C4819: 该文件包含不能...
水海云 发布于 4小时前 阅读 4

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种方法: 方法一 在需要...
人觉非常君 发布于 11小时前 阅读 8

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本由Netapp公司开发,是基于RPC远程过程调用(Remote Procedure Call)协议的服务。 NFS原理图: 当A、B、C三台机器访...
lgsxp 发布于 4小时前 阅读 5

JavaScript 知识点总结

 
夜寒曦 发布于 1周前 阅读 24 点赞 1

微信小程序组件化开发框架wepy 学习(三)

前言 组件引用、循环渲染、computed计算属性、watch监听 官方文档说的很清楚。基本照着看看就能理解,本篇重点说父组件子组件相互传值交互的问题。这里我感觉还是有点绕的。 Props传值 静态传值 静态传值为父组件...
NotFound403 发布于 4小时前 阅读 5

我的第一个python爬虫

再次声明,我没有用服务器下过小电影
Li-Wang 发布于 3周前 阅读 16

cookie 和session

我个人理解这两个其实就是为了记录一些用户行为或者留下的用户行为的记录,HTTP是一种无状态的协议,为了分辨链接是谁发起的,就需要我们自己去解决这个问题。不然有些情况下即使是同一个网站我们每打开一个页面也...
RainOrz 发布于 3小时前 阅读 1

github使用

原地址: https://www.jianshu.com/p/79454cf00945
talent-tan 发布于 3小时前

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意: zip既可以压缩目录文件也可以压缩普通文件。 语法: zip [options] [file name.zip] [file name] 说明: zip后面先跟目标文件名,也就是自定义的压缩包名,然后跟源文件名。 options: -r:压缩目录文件时使用,表示级联压缩,连通目录内文件一同压缩 安装zip工具 [root@cham3 d6z]# yum install -y zip  压缩普通文件 [root@cham3 d6z]# zip 1.txt.zip 1.txt adding: 1.txt (deflated 73%) [root@cham3 d6z]# du -sh 1.txt.zip 548K 1.txt.zip [root@cham3 d6z]# ls 1.txt 1.txt.zip 2 2.txt 2.txt.gz 2.txt.zip 3.txt 4.txt chamlinux 说明: 使用zip压缩文件时,源文件不会被删除。   压缩目录文件 [root@cham3 d6z]# du -sh chamlinux 8.0M chamlinux [root@cham3 d6z]# zip -r cham.zip 3.txt chamlinux adding: 3.txt (deflated 73%) adding: chamlinux/ (stored 0%) adding: chamlinux/2/ (stored 0%) adding: chamlinux/2/4.txt (deflated 73%) adding: chamlinux/tm...
Champin 发布于 2个月前 阅读 26

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style> </head> <body> <di...
fyliujj 发布于 2小时前

Django-ORM 使用

1.多表连接查询(Django ORM 神器)。 class A(models.Model): name = models.CharField(u'名称') class B(models.Model): aa = models.ForeignKey(A) B.objects.filter(aa__name__contains='searchtitle') -> 反向查询(Django ORM 神器) class A(models.Model): name = models.CharField(u'名称') class B(models.Model): aa = models.ForeignKey(A,related_name="FAN") bb = models.CharField(u'名称') 查A: A.objects.filter(FAN__bb='XXXX'),都知道related_name的作用,A.FAN.all()是一组以A为外键的B实例,可前面这样的用法是查询出所有(B.aa=A且B.bb=XXXX)的A实例,然后还可以通过__各种关系查找. 2.条件选取querySet的时候,filter表示=,exclude表示!=。 querySet.distinct() 去重复 __exact 精确等于 like 'aaa' __iexact 精确等于 忽略大小写 ilike 'aaa' __contains 包含 like '%aaa%' __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。 __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内 __startswith 以...开头 __i...
Mr_zebra 发布于 1周前 阅读 8

kibana启动异常

![](https://oscimg.oschina.net/oscnet/917f6e3bca678365e1da691ece0179db810.jpg) 检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。...
增删改查1 发布于 2小时前

为什么 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 则没有这个问题,一次加载多...
宇润 发布于 6天前 阅读 1504 评论 12 点赞 4

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

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

BUG不断,黑马全在。百尺竿头,更进一球!

问:今年这是多少届的世界杯了? 答:第21届! 问:这是第几次开源众包做真正的现金抵用活动了?
开源中国众包平台 发布于 1周前 阅读 5333 评论 8 点赞 4

一文带你看穿String

1.1 前言         String对象是不可变的。String类中每一个看起来会修改String值的方法,例如拼接、裁剪字符串,实际上都会创建一个全新的String对象,用来包含修改后的字符串内容。因此字符串的相关操作往往对性能有明显的影响。 1.2 定义 public final class String implements java.io.Serializable, Comparable<String>, CharSequence         从代码可以看出String是final类型的,表示该类不能被继承,并且实现了Serializable、Comparable、CharSequence三个接口。 Serializable接口,表明String类是可序列化的。 Comparable接口,提供了一个compareTo(T o) 方法。 CharSequence接口,提供了length(),charAt(int index),subSequence(int start,int end),toString()方法。 1.3 属性 //final类型的字符数组,用于存储字符串内容 private final char value[]; //存放字符串的哈希值 private int hash; // Default to 0 //序列化id private static final long serialVersionUID = -6849794470754667710L; 1.4 构造函数 //不含参数的构造函数 public String() { this.value = "".value; } //使用字符串类型的参数来初始化 public Stri...
筱虾米 发布于 6天前 阅读 720 评论 1 点赞 1

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哥哥聊技术 发布于 1个月前 阅读 12264 评论 77 点赞 43 打赏 1

浅谈设计模式之单例模式

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

京东Java架构师讲解购物车的原理及Java实现

今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?  2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?    3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码  问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器  登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢? 1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的. 2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cooki...
Java工程师-Distance 发布于 1个月前 阅读 9715 评论 55 点赞 18

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

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

自己动手写一个单链表

>文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:`好好学java`,获取优质学习资源。 ### 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 链式存储结构的线性表将采用一组任意的存储单元存放线性表中的数据元素。由于不需要按顺序存储,链表在插入、删除数据元素时比顺序存储要快,但是在查找一个节点时则要比顺序存储要慢 使用链式存储可以克服顺序线性表需要预先知道数据大小的缺点,链表结构可以充分利用内存空间,实现灵活的内存动态管理。但是链式存储失去了数组随机存取的特点,同时增加了节点的指针域,空间开销较大。 ### 二、图解 下图就是最简单最一般的单向链表: ![这里写图片描述](https://user-gold-cdn.xitu.io/2018/6/20/1641a579e288345c?w=668&h=87&f=png&s=8183) ##### 新增节点: 将值为element的新节点插入到第index的位置上。 首先要先找到索引为index-1的节点,然后生成一个数据为element的新节点newNode,并令index-1处节点的next指向新节点,新节点的next指向原来index处的节点。 ![这里写图片描述](https://user-gold-cdn.xitu.io/2018/6/20/164...
公众号_好好学java 发布于 2天前 阅读 468 点赞 1

Ansible 极简教程

## 一、基本部署 ### 安装Ansible ``` # yum -y install epel-release # yum list all *ansible* # yum info ansible # yum -y install ansible ``` ### Ansible配置文件 ``` /etc/ansible/ansible.cfg 主配置文件 /etc/ansible/hosts Inventory /usr/bin/ansible-doc 帮助文件 /usr/bin/ansible-playbook 指定运行任务文件 ``` ### 定义Inventory ``` # cd /etc/ansible/ # cp hosts{,.bak} # > hosts # cat hosts [webserver] 127.0.0.1 192.168.10.149 [dbserver] 192.168.10.113 ``` ### 使用秘钥方式连接 ``` # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.149 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.113 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1 ``` ### 使用帮助 ``` # ansible-doc -l 列出ansible所有的模块 # ansible-doc -s MODULE_NAME 查看指定模块具体适用 ``` ### Ansible命令应用基础 ``` 语法:ansible [-f forks] [-m module_name] [-a args] 这次命令对哪些主机生效的 inventory group name ip all -f forks 一次处理多少个主机 -m module_name 要使用的模块 -a args 模块特有的参数 ...
kangvcar 发布于 1周前 阅读 1188 点赞 6

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

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

Chrome提示:Flash Player与您的地区不相容

​ 今天发现使用chrome浏览器时,打开flash的网站后就出现"**此Flash Player 与您的地区不相容**"的提示信息。 按照提示操作后,点击 “重新安装” 按钮打开的是 [2144网站](https://flash.2144.com/) ,不是真实的Adobe官方网站。 ​ 一个即将消亡的技术,竟然还耍流氓,瞬间心里飞过十万个。。。。。。 ### 官网安装 ​ 打开 [Adobe的官网](https://get.adobe.com/cn/flashplayer/) (如何打开,就不说了,大家懂得),下载Flash Player版本,经过安装后不再出现`地区不兼容的提示`,则问题得到圆满解决。 ​ 如果问题依然存在,则继续向下看。 ### 安装低版本 ​ 卸载已安装的Adobe Flash Player PPAPI,在网上下载 低于 30.0.0 的Adobe Flash Player PPAPI 离线包安装,同时设置为”不检查更新“。 可在此处下载 [Flash Player PPAPI 25、26]( https://www.portablesoft.org/adobe-flash-player-offline-installer/)两个版本,如需其他版本自寻找。 ​ 查看当前win7、10系统,已安装的Flash版本: > ​ 控制面板 -> Flash Player -> 更新 ### 禁止Chrome更新Flash插件 ​ 在Chrome安装目录下有一个名叫PepperFlash得文件夹,删除该文件夹下的所有内容,将该文件夹权限设...
lukezp 发布于 2周前 阅读 1198 点赞 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 发布于 3天前 阅读 342

微信小程序组件化开发框架wepy 学习(一)

## 技术要求 1.对微信小程序原生开发文档熟悉 2.对前端mvvm有一定的了解 3.会nodejs npm 进行前端组件化开发 ## 框架特点 框架的产生必然是解决开发中的痛点,wepy解决了什么问题? 主要是对原生的开发进行了简化。原生开发中每一个页面要对应四种文件, 而且交互、 数据绑定都十分繁琐 。`wepy`借鉴了`vue`的思想 , 实现了组件化,以组件代替模板和模块, 结构更清晰。同时数据的绑定,api都进行了优化。特别是参数的绑定和监视 都有很大的改观。极大提高了开发效率。 ## 快速入门 环境要求:`nodejs` 环境。 命令行 `node -v` 查看有没有nodejs 环境. `wepy`的安装或更新都通过 `NPM` 进行。 `wepy`版本:最新的`1.7.2`版本 安装wepy 命令行在指定目下执行 `npm install wepy-cli -g` 进行全局配置wepy环境。 安装完毕后 执行` wepy -h` 查看帮助 有位数不多的几个命令: * init \[options\] \[project-name\] generate a new project from a template * build \[options\] build your project list \[options\] list available official templates * upgrade \[options\] upgrade to the latest version * ~~new~~ 其中 `new` 在`1.7.0+` 版本已经废弃 用`init` 代替。...
NotFound403 发布于 3天前 阅读 323

Java OSGL 工具库 - Bean 拷贝的艺术

本篇是 Java OSGL 工具库系列的第六篇, 前面五篇分别是: 1. [图片处理的艺术](https://my.oschina.net/greenlaw110/blog/1786151) 2. [图片处理的艺术之自定义图片处理器](https://my.oschina.net/greenlaw110/blog/1790145) 3. [字符串操作的艺术](https://my.oschina.net/greenlaw110/blog/1790369) 4. [I/O 操作的艺术](https://my.oschina.net/greenlaw110/blog/1790370) 5. [类型转换的艺术](https://my.oschina.net/greenlaw110/blog/1790380) ## 1. API 一览 ```java // shallow copy from `foo` to `bar` $.copy(foo).to(bar); // deep copy from `foo` to `bar $.deepCopy(foo).to(bar); // deep copy using loose name match $.deepCopy(foo).looseMatching().to(bar); // deep copy with filter $.deepCopy(foo).filter("-password,-address.streetNo").to(bar); // deep copy with special name mapping rule $.deepCopy(foo) .map("id").to("no") .map("subject").to("title") .to(bar); // merge data from `foo` to `bar` $.merge(foo).to(bar); // map data from `foo` to `bar` $.map(foo).to(bar); // map data from `foo` to `bar` using strict name m...
罗格林 发布于 1周前 阅读 2213 评论 13 点赞 8

这届俄罗斯世界杯的冷门那么多怎么办?

最纯粹的世界杯,最神奇的大冷门。 德国0比1被墨西哥摩擦了。 日本历史性的赢了哥伦比亚。 C罗也挑平了西班牙。 梅西被冰岛狮吼吼愣神了。 就连11次进世界杯4强的巴西也被瑞士逼平了。 天台已经挤满了输红眼的人们。空气中充满了悲伤的气氛。这时候人群中突然传来一声嘶哑声:“快看,楼下又来了一大股民朋友!“ 众人揉揉眼,对的。那些是6月19日从股市中劳作归来的人们。大家目不斜视的直接上了天台,乌央乌央变的异常拥挤,颇有西二旗,高米店这类地铁绞肉机味道。 也许是惺惺相惜,此刻的球迷和股民互诉衷肠,互相安慰。一丝温暖阳光渐渐从众人眼里浮现。那是对面大厦的全屏广告版。硕大的标语像是符文一样催动着大家内心那最柔软的部分!没错!钱没了可以再赚。赚钱的动力就来源于花钱。人们凑了过来看着标牌上的字迹。那上面都写的什么呢? 如果看不清请走近点。点击我
开源中国众包平台 发布于 2天前 阅读 437

一名开源小白的Apache成长自述

                今天收到了来自Apache Vote我成为Serviceomb项目Committer的邮件,代表自己的贡献得到了充分的肯定;除了感谢团队的给力支持,我更希望将自己的成长经历——如何践行Apache Way的心得介绍给大家,让大家爱上Apache开源社区,也能和我一样成长为自己喜爱项目的Committer。 根据个人贡献获得价值(Government By Merit)               回忆我刚参与ServiceComb项目,面对上万行的存量代码,总觉得无从下手,甚至认为开源社区高手如云,如果没有深厚且对口的技术功底,还是不要来掺和了。         在这个困难而关键的时候,社区导师给了我明确的指导——不要怕,从小事做起,不要“善小而不为”。于是我静下心来,在Jira上寻找最简单的任务,主动请缨的第一个任务是支持配置兼容,具体需求是cse.xxx配置项和servicecomb.xxx配置项要具备等同效果,经过一番努力,成功Merge PR ;之后我又接下另一个简单任务,增加一个Annotation用于支持Json String作为请求参数……         Apache Way非常看重个人贡献,没有贡献,一切无从谈起,与开源软件同行,不仅看你获得了多少,更要坚持长期贡献,这是它与商业软件最大的不同...
微服务框架 发布于 2天前 阅读 444 评论 4

Spring Cloud Config采用数据库存储配置内容【Edgware+】

在之前的[《Spring Cloud构建微服务架构:分布式配置中心》](http://blog.didispace.com/spring-cloud-starter-dalston-3/)一文中,我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储。这一设计巧妙的利用Git自身机制以及其他具有丰富功能的Git服务端产品,让Spring Cloud Server在配置存储和管理的上避开了很多与管理相关的复杂实现,使其具备了配置中心存储配置和读取配置的基本能力;而更上层的管理机制,由于不具备普遍适用性,所以Spring Cloud Server并没有自己去实现这部分内容,而是通过Git服务端产品来提供一部分实现,如果还需要更复杂的功能也能自己实现与定义。即便如此,对于Spring Cloud Server默认使用Git来存储配置的方案一直以来还是饱受争议。所以,本文将介绍一下Spring Cloud Config从Edgware版本开始新增的一种配置方式:采用数据库存储配置信息。 ## 构建配置中心服务端 第一步:创建一个基础的Spring Boot项目,在pom.xml中引入几个主要依赖: - `spring-cloud-config-server`:配置中心的基础依赖 - `spring-boot-starter-jdbc`:由于需要访问数据库,所以需要加载jdbc的依赖 - `mysql-connector-java`:MySQL数据库的连接包...
程序猿DD 发布于 7天前 阅读 408 评论 1

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 发布于 1个月前 阅读 4321 评论 5 点赞 6

远程桌面发生身份验证错误,要求的函数不受支持

因为工作关系,一直需要远程登录服务器。以前都是正常的,偶尔的故障也是因为机器本身或是网络故障,今天登录远程桌面一直是上面的错误。开始以为是登录凭证的问题,删除本地凭证以后还是不能登录且所有服务器都是一样的错误,这时候能想到的也只能是系统本身的问题了。 电脑常期是没有关的,今天早上打开发现打开的VS项目已经关闭,想到应该是自动更新以后重启了。 这样看到应该就是昨天的更新的某个补丁导致了这样的问题,检查更新发现一个基于FLASH的更新和一个名为KB4103718(适用于基于 x64 的系统的 Windows 7 月度安全质量汇总)的常规更新,卸载更新KB4103718后重启,问题得到解决! 但是很多人可能与我想的一样,既然微软提供了这样的更新肯定是有他的用处的,卸载或许是解决了问题,但带来的其它的影响却不得而知。 经微软的support指点得出如下解决方案: 使用微软官方建议修改本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击。 易受攻击– 使用 CredSSP 的客户端应用程序将通过支持回退到不安全的版本使远程服务器遭受攻击,但使用 CredSSP 的服务将接受未修补的客户端。 问题解决,收工!   PS:该操作仅用于专业版,...
孟凡陆 发布于 1个月前 阅读 6716 评论 2

Glide4.0 以后 监听Gif播放完成

在Glide3.0的时候,我们可以通过GifDecoder获取每一帧的播放时长然后相加得到gif的播放时长,即:   GifDrawable drawable = (GifDrawable) glideDrawable;  GifDecoder decoder = drawable.getDecoder();  long duration = 0;  for (int i = 0; i < drawable.getFrameCount(); i++) {          duration += decoder.getDelay(i); } 然后使用handle 发送一个延时消息,或者其它方法,等gif播放完成以后再做相应操作。 或者,通过重写GifDrawable,重写onStop()方法来处理:   public  class MyGifDrawable extends GifDrawable {         public MyGifDrawable (GifDrawable other) {             this(other, other.getFirstFrame(), other.getFrameTransformation());         }         @Override         public void stop() {             super.stop();             //GIF播放完成,可以做一些操作         }     } 但是到Glide4.0, GifDecoder 被声明为private,去掉了getDecoder()方法,第一种方法如果不使用反射,是无法做到的。 这时我们可以去重写GifDrawable,MyGifDr...
TCTW 发布于 3天前 阅读 239

git从远程仓库拉取代码的常用指令

一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立分支 git pull //把远...
Helios51 发布于 14分钟前 阅读 1

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张的时候,再将内存空间...
影狼 发布于 19分钟前

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图 保罗 E. 麦肯尼 2009...
Romane 发布于 52分钟前

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 order服务中, 开始需要在...
___大侠 发布于 1小时前

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始 e=>end: 结束 op0=>operation: 新建issue op1=>operation: 评审issue op2=>operation: 任务负责人执行任务 cond1=>condition: 是否通过? op3=>operation: 任务负责人提...
lovewinner 发布于 2小时前

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索...
屌丝男神 发布于 2小时前

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer(线程安全,可变) ...
时刻在奔跑 发布于 2小时前

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Credentials credentials = WalletUtils.loadCredential...
以太坊教程 发布于 2小时前

Oracle全文检索配置与实践

Oracle全文检索配置与实践
微小宝 发布于 2小时前

mysql的分区和分表

1,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不...
梦梦阁 发布于 2小时前

exception.ZuulException: Forwarding error

错误日志 com.netflix.zuul.exception.ZuulException: Forwarding error Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: xxx timed-out and no fallback available. Caused by: java.util.c...
jack_peng 发布于 2小时前

jvm相关

jvm相关配置: -Xms1048m -Xmx1048m -Xmn10m -XX:MaxPermSize=1048m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails...
洛水 发布于 2小时前

WAF的优缺点

目前WAF的形态可以简单地分为三种:硬件web应用防火墙、web防护软件和云waf。一般的硬件waf通常是将waf串行部署在web服务器前段,用于检测、阻断异常流量。 常规硬件waf的实现是通过代理技术代理来自外部的流量,...
上树的熊 发布于 2小时前

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...
itcloud 发布于 2小时前

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style> </head> <body> <di...
fyliujj 发布于 2小时前

es6 polyfill array

polyfill之javascript函数的兼容写法——Array篇 1. Array.isArray(obj) if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; }; } 2. A...
球球 发布于 2小时前

kibana启动异常

![](https://oscimg.oschina.net/oscnet/917f6e3bca678365e1da691ece0179db810.jpg) 检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。...
增删改查1 发布于 2小时前

js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过firebug看图片已经变...
HaierBrother 发布于 2小时前

Mysql

1.Jdbc Url 设置allowMultiQueries为true和false mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。 参数名称 参数说明 缺省值 最低版本要求 user...
瑟青豆 发布于 2小时前

mysql导出导入表结构与数据

当我们需要进行数据迁移时,mysql自带的mysqldump会是最好的方式。 1.导出某张表的结构和数据 首先,我们应当使用服务器,打开终端,连接到所需要导出的表所在的服务器上。执行命令: mysqldump -uroot -pdbpassw...
hengbao5 发布于 2小时前

Vue 兼容 ie9 的全面解决方案

## 前言 **背景情况** - vue - 2.5.11 - vue-cli 使用模板 `webpack-simple` - http请求:axios Vue 官方对于 ie 浏览器版本兼容情况的描述是 ie9+,即是 ie9 及更高的版本。经过测试,Vue 的核心框架 `vuejs` 本身,以及生态的官方核心插件(VueRouter、Vuex等)均可以在 ie9 上正常使用。 Vue 的作者尤雨溪对于 [Vue 的学习建议](https://github.com/TerryZ/js-develop-skill-summary/blob/master/vue-base.md#vue2x-%E5%AD%A6%E4%B9%A0%E9%A1%BA%E5%BA%8F%E5%BB%BA%E8%AE%AE) 中有提及为了将项目更好的生态化/工程化,要尽可能学习及使用新的 ECMAScript 规范。目前 ES6/ES2015 是可用度和稳定度较高的规范,文档齐全,国内还有 [阮一峰 《ECMAScript 6 入门》](http://es6.ruanyifeng.com/) 做了大量的文档翻译,开发环境可谓完善。然而版本较旧的浏览器并不支持 es6 规范,尤其是 ie 浏览器,即使是最高的 ie11 版本,对于 es6 规范也支持得并不全。如此则需要对所有原生不支持 ES6 特性的浏览器做兼容性处理。 本文将针对使用 Vue 生态开发完成的网站,以 ie9 版本为基础兼容目标,实现全功能正常使用的全面兼容解决方案。 ## ES6兼容 在 ie9 的环境上,es6 的部分新...
TerryZ 发布于 3天前 阅读 2302 评论 12 点赞 5

为什么 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 则没有这个问题,一次加载多...
宇润 发布于 6天前 阅读 1504 评论 12 点赞 4

浅谈设计模式之单例模式

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

Ansible 极简教程

## 一、基本部署 ### 安装Ansible ``` # yum -y install epel-release # yum list all *ansible* # yum info ansible # yum -y install ansible ``` ### Ansible配置文件 ``` /etc/ansible/ansible.cfg 主配置文件 /etc/ansible/hosts Inventory /usr/bin/ansible-doc 帮助文件 /usr/bin/ansible-playbook 指定运行任务文件 ``` ### 定义Inventory ``` # cd /etc/ansible/ # cp hosts{,.bak} # > hosts # cat hosts [webserver] 127.0.0.1 192.168.10.149 [dbserver] 192.168.10.113 ``` ### 使用秘钥方式连接 ``` # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.149 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.113 # ssh-copy-id -i /root/.ssh/id_rsa.pub root@127.0.0.1 ``` ### 使用帮助 ``` # ansible-doc -l 列出ansible所有的模块 # ansible-doc -s MODULE_NAME 查看指定模块具体适用 ``` ### Ansible命令应用基础 ``` 语法:ansible [-f forks] [-m module_name] [-a args] 这次命令对哪些主机生效的 inventory group name ip all -f forks 一次处理多少个主机 -m module_name 要使用的模块 -a args 模块特有的参数 ...
kangvcar 发布于 1周前 阅读 1188 点赞 6

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

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

JPA、Hibernate、Spring data jpa之间的关系,终于明白了

什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; 如:@Entity、@Table、@Column、@Transient等注解。  2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。 如:entityManager.merge(T t);  3)JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。 如:from Student s where s.name = ? 但是: JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。 也就是说: JPA是一套ORM规范,Hibernate实现了JPA规范!如图: 什么是spring data jpa? spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之...
java思维导图 发布于 1周前 阅读 2734 评论 13 点赞 7

优雅的处理你的Java异常

# 本文介绍 本文仅按照业务系统开发角度描述异常的一些处理看法.不涉及java的异常基础知识,可以自行查阅 **《Java核心技术 卷I》** 和 **《java编程思想》** 可以得到更多的基础信息. ## 写在前面的话 笔者文笔功力尚浅,言语多有不妥,请慷慨指正,必定感激不尽. 本文提出了几个概念: **处理反馈** **业务异常** **代码错误** ,请认真思考一下各中区别. 在开发业务系统中,我们目前绝大多数采用MVC模式,但是往往有人把service跟controller紧紧的耦合在一起,甚至直接使用Threadlocal来隐式传值,并且复杂的逻辑几乎只能使用service中存储的全局对象来传递处理结果,包括异常. 这样一来首先有违MVC模式,二来逻辑十分不清晰,难以维护.本文结合工作经验,给出一些异常使用建议,使用spring来实战异常为我们带来的好处. 常常,我们读罢了各种java的书,异常的各种机制,特性都很清楚,但是始终还是不知道如何使用,甚至背下了概念,却不知道如何致用. 我们开发的业务系统,或者是产品,常常面临着这样的问题: * 系统运行出错,但是完全不知道错误发生的位置. * 我们找到了错误的位置,但是完全不知道是因为什么. * 系统明明出了错误,但是就是看不到错误堆栈信息. ## 什么情况需要自定义异常 经常看...
叶知泉 发布于 2周前 阅读 2689 评论 19 点赞 6

前端后台以及游戏中使用google-protobuf详解

### 前端后台以及游戏中使用google-protobuf详解 [TOC] #### 0、什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更小更快更简单。你可以用定义自己protoBuf的数据结构,用ProtoBuf编译器生成特定语言的源代码,如C++,Java,Python等,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。 特点: - 平台无关、语言无关。 - 二进制、数据自描述。 - 提供了完整详细的操作API。 - 高性能 比xml要快20-100倍 - 尺寸小 比xml要小3-10倍 高可扩展性 - 数据自描述、前后兼容 #### 1、下载protobuf的编译器 [目前最新版本为Protocol Buffers v3.5.1](https://github.com/google/protobuf/releases) #### 2、配置环境变量 解压 `protoc-3.5.1-osx-x86_64.zip` Mac 配置环境变量 `vi ~/.bash_profile` 使其配置生效`source ~/.bash_profile` ```json #protobuf export PROTOBUF_HOME=/Users/Javen/Documents/dev/java/protobuf/protoc-3.5.1-osx-x86_64 export PATH=$PATH:$PROTOBUF_HOME/bin ``` Window 将bin添加到path 即可 例如:`D:\protobuf\protoc-3.5.1-win32\bin` `本文在Mac环境下编写` **Mac**...
Javen 发布于 2周前 阅读 1592 评论 5 点赞 2

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

TiDB 源码阅读系列文章(九)Hash Join

>作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我们使用 Hash Join,不管 Left 表相对于 Right 表而言是大表还是小表,我们都只能使用 Right 表充当 Inner 表并在之上建哈希表,使用 Left 表来当 Outer 表,也就是我们的驱动表。使用 Inner 和 Outer 更准确,没有迷惑性。在 Build 阶段,对 Inner 表建哈希表,在 Probe 阶段,对由 Outer 表驱动执行 Join 过程。 ## TiDB Hash Join 实现 TiDB 的 Hash Join 是一个多线程版本的实现,主要任务有: + Main Thread,一个,执行下列任务: - 读取所有的 Inner 表数据; - 根据 Inner 表数据构造哈希表; - 启动 Outer Fetcher 和 Join Worker 开始后台工作,生成 Join 结果,各个 goroutine 的启动过程由 [fetchOuterAndProbeHashTable](https://github.com/pingcap/tidb/blob/source-...
TiDB 发布于 2周前 阅读 375 评论 2

如何选择 Web 前端模板引擎?

Web 模板就在那里 模板引擎负责组装数据,以另外一种形式或外观展现数据。 浏览器中的页面是 Web 模板引擎最终的展现。 无论你是否直接使用模板引擎,Web 模板一直都在,不在前端就在后端,它的出现甚至可以追溯到超文本标记语言 HTML 标准正式确立之前。 服务器端的模板引擎 我所知道最早的 Web 模板引擎是 PHP,它正式诞生于 1997 年,工作在服务器端。让我们看看 PHP 官方的 intro-whatis: PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。 PHPer 普遍赞同 PHP 本身就是最天然、原生的 PHP 模板引擎,因为她本来就是。在 PHP 的世界里多次出现过再包装的模板引擎,著名的有 smarty。 其它服务器端语言很多都有 HTML 模板引擎,比如 JSP、mustache。 毫无疑问,这些服务器端模板引擎最终生成的结果是 HTML(XML) 字符串,处理流程逻辑使用宿主语言本身的语法实现。 它们的共同特征:HTML 只是个字符串, 最终结果可能还需要类似 Tidy 这样的清洁或修正验证工具。 这里提出一个问题:二次封装的 smarty 有存在的必要么? 浏览器端的模板引擎 我所知道最早的前端...
编辑部的故事 发布于 2周前 阅读 696 评论 6 点赞 4

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

Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证

本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理。 很多文章都将过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解,并认为过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)是Spring提供的应用广泛的组件功能。 但是严格来说,过滤器和监听器属于Servlet范畴的API,和Spring没什么关系。 因为过滤器继承自javax.servlet.Filter接口,监听器继承自javax.servlet.ServletContextListener接口,只有拦截器继承的是org.springframework.web.servlet.HandlerInterceptor接口。 上面的流程图参考自网上资料,一图胜千言。看完本文以后,将对过滤器和拦截器的调用过程会有更深刻理解。 一、安全认证设计思路 有时候内外网调用API,对安全性的要求不一样,很多情况下外网调用API的种种限制在内网根本没有必要,但是网关部署的时候,可能因为成本和复杂度等问题,内外网要调用的API会部署在一起。 实现REST接口的安全性,可以通过成熟框架如Spring Security或者shiro搞定。 但是因为安全框架往往实现复杂(我数了下Spring Security,洋洋洒洒大概有11个核心模块,shiro的源码代码量也比较惊人)同时可能...
代码屠夫18 发布于 2周前 阅读 1394 评论 9 点赞 15

浅谈csrf攻击以及yii2对其的防范措施

> 凡是我yii2学习社群的成员都知道,我不止一次给大家说构造表单100%使用yii2的ActiveForm来实现,这除了能和AR更好结合外就是自动生成csrf隐藏域,一个非常安全的举措。 今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile: **CSRF**(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,在 2007 年曾被列为互联网 20 大安全隐患之一。 关于CSRF,要从一个故事开始~ # 老王丢钱事件 这个故事要从程序员老王丢了1万块钱说起,总之是进了小偷,找回无果。丢钱后的老王一直在思考,**钱是怎么丢的、为何丢钱、为何是我丢钱~~** 后来老王出现了严重的心理问题,他决定报复社会。 老王首先研究了网银系统,他发现转账是通过GET形式 ```php https://bank.abc.com/withdraw?account=liuxiaoer&amount=1000&to=abei ``` 这意思就是说将 **liuxiaoer** 的1000元钱转给**abei**,当然当请求到达银行服务器后,程序会验证该请求是否来自合法的session并且该session的用户就是 **liuxiaoer** 并且已经登录。 老王自己也有一个银行账号 **wang2**,他尝试登录并且通过浏览器发送请求给银行,代码如下 ```php https://bank.abc.com/wi...
阿北2017 发布于 2周前 阅读 1298 评论 5 点赞 1

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 发布于 2周前 阅读 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

深度解析Tengine的调试与资源监控方法论

摘要: 在最近的飞天技术汇CDN Tengine开源技术沙龙上,阿里云CDN团队的高级开发工程师墨飏进行了《Tengine的调试与资源监控》的主题分享。本文为演讲记录,从Tengine的内存调试、核心结构、upstream、coredump四个部分展开,为大家整理和分享一些实践经验,希望能给关注Tengine的开发者带来一些帮助与启发。
我是王雪梨 发布于 3周前 阅读 1900 评论 7 点赞 2

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
顶部