开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

filebeat合并多行日志示例

filebeat Examples of multiline configuration,译文部分非全译,已经按照我的理解口语化处理。
看着星空的状态 发布于 16小时前 阅读 71

使用aerogear生成totp

## 序 本文主要讲述一下如何使用aerogear-otp生成otp,以及相关源码分析 ## otp分类 全称是one time password,通常用来支持双因素认证。主要可以分两类 - HMAC-Based One-time Password (HOTP) 在[RFC 4226](https://tools.ietf.org/html/rfc4226)规范中 - Time-based One-time Password (TOTP) 在[RFC 6238](https://tools.ietf.org/html/rfc6238)规范中 >这里主要讲TOTP - 客户端 其常见的手机客户端有Google Authenticator APP以及阿里云的身份宝。由于google的软件在国内被墙,因此可以使用阿里云的[身份宝](http://otp.aliyun.com/shenfenbao.html) - 服务端 服务端的话,google官方有c的代码,java的话很多第三方都有实现,这里选择jboss提供的aerogear-otp-java,其maven如下 ``` org.jboss.aerogear aerogear-otp-java 1.0.0 ``` ## 步骤 主要的步骤如下: ### 绑定密钥 - 服务端为每个账户生成一个secret并保存下来 - 服务端提供该密钥的二维码扫描功能,方便客户端扫描绑定账号 - 用户手机安装Google Authenticator APP或阿里云的身份宝,扫描二维码绑定该账号的secret ### 使用otp验证 绑定secret之后,就可以使用one time password进行验证了。 ## 实例 ### ...
go4it 发布于 18小时前 阅读 24

视频编码综述

你用手机、电脑看电影追剧时,是看的高清还是标清?我想只要网速够得上应该没有人愿意再看标清了吧!毕竟高清视频的高分辨率和清晰画质总是能让人有更好的观影体验。 伴随着用户对高清视频的需求量的增加,视频多媒体的视频数据量也在不断加大。如果未经压缩,这些视频很难应用于实际的存储和传输。视频压缩解码技术可以帮助有效地去除视频数据中冗余信息,实现视频数据在互联网中快速传输和离线的存储。因此,视频压缩解码技术是视频应用中的一项关键技术。   视频编码的背景   在过去的几十年中,一系列的视频编码标准被广泛的应用。目前已有的视频压缩标准有很多种,包括国际标准化组织(International Organization for Standardization, ISO)/国际电工技术委员会(International Electrotechnical Commission, IEC)制定的MPEG-1、MPEG-2、MPEG-4标准;国际电信联盟电信标准化部门(International Telecommunication Union-Telecom, ITU-T)制定的H.261、H.263。   2003年3月,ITU-T和ISO/IEC 正式公布了H.264/MPEG-4 AVC视频压缩标准。H.264作为目前应用最为广泛的视频编码标准,在提高编码效率和灵活性方面取得了巨大成功,使得数字视频有效地应用在各种各样的网...
图鸭科技研究员 发布于 18小时前 阅读 215

谈谈MySQL显式类型转换

《谈谈MySQL隐式转换姊妹篇》,要不要进来看看!
划不出的界限 发布于 20小时前 阅读 145 点赞 1

开源,想说爱你不容易!

去年年末的时候,我心血来潮,想搞一个 side project,闲暇之余饶有兴趣的做个项目练练手,没有想那么多,于是向团队征求了项目的方向,大家建议我做接口管理平台,OK,操起久违的 vue 和 node,撸起袖子先干起来,产品第一版出来后,大家感觉不错,其中有一位顺口对我说道:昕哥,你去 GitHub 开源吧,涨涨人气呗,对你的项目也有利!我一听,得嘞,顺手就把源码传了上去。顺便也在几个技术群发了发,没过多久,github 的 star 数不知不觉的涨了起来,直到有一天有一位朋友给我发邮件请教我有关产品部署的问题,我突然意识到,这个项目是不是还有点搞头。 于是,我建了一个群,拉了几个人进去,工作的闲暇之余也在不断的完善着这个项目,虽然不是很确定,但是冥冥之中我感觉到这个项目我不会轻易的放弃,直到有一天,一家比较大的公司找到我,他们跟我说想为这个产品做定制化,收费的那种,我突然脑光一闪,难道我要凭这个项目做上 CEO,迎娶白富美(等等,这个还是算了),走上人生巅峰了! 打住!现实没有我想的那么好,在和那家公司深入交流之后,他们放弃了,他们觉得我的这个项目目前还不是很完善,口碑也没有真正的建立起来。恩!没事,这对我来说是一种动力,产品不...
我不是肥羊 发布于 22小时前 阅读 268 评论 12 点赞 2

什么是DB的三星索引

如果你从网上或者教程中,查询索引设计相关规范,常常会看到一些不知所云的规则和注意事项,这些规则看似很有道理,但应用时,仍然一头雾水,那么究竟如何来做?
wier 发布于 22小时前 阅读 142 评论 2 点赞 1

Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client,业界也有些知名的同类开源产品,比如百度的disconf。
鹏磊 发布于 1天前 阅读 173

疯狂Activiti6.0连载(26)BPMN边界事件

Activiti6 边界事件
杨大仙的程序空间 发布于 1天前 阅读 105

flask 部署在apache24.* + wsgi 填坑总结

下载安装apache  打开apache官网http://www.apache.org/     点击右上角Download,出现以下界面 ,这里是各镜像服务器,随便找一个,这里用的是推荐版。  出现目录列表,这些是apache的项目列表,我也不明白apahce为什么用这种方式浏览。 点“httpd",出现以下界面  点红框部分,出现如下界面    进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台,在它的网站下载独立的Apache会是一个压缩包。另外四个中,第二个也是独立的Apache下载地址,另外三个是集成开发环境。 在新的界面中,会发现VC9和VC11字样,通过阅读相关内容得知,VC9是指用VS2008编译的代码,而VC11是用VS2012编译的,而用VS2012编译的无法在Windows XP和Server 2003中使用。 2.安装apache 把下载文件解压到你要安装目录,如:d: 安装服务:打开cmd 进入apache\bin 文件 执行httpd.exe -k install -n Apache2.4 该命令的意思是,安装apache服务,并将该服务名称命名为Apache2.4(你也可以改成别的) 如果报一下错误 sock: could not bind to address [::]:443 (OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试。  : AH00072: make_ sock: could not bind to address 0.0...
RyanXing 发布于 2天前 阅读 97 评论 2

Spring Cloud Stream 简明教程(持续更新)

Spring Cloud Stream 版本是:Ditmars.RELEASE 有错误的地方欢迎指出
-_-一条狗 发布于 2天前 阅读 302 评论 5

SpringCloud系列:利用Zuul实现统一服务网关服务,简单实现IP白名单功能

本文基于SpringCloud Zuul实现统一网关服务、请求校验等功能,最后通过zuul过滤器实现IP白名单功能
闲等莫 发布于 2天前 阅读 315 点赞 1

Git提交历史的修改删除合并

今天主要针对在项目版本控制器Git的使用中遇到的一些和提交历史操作相关的常见问题,进行实践总结。在项目开发中经常会需要修改提交commit信息,合并多个提交commit,甚至放弃当前修改回退至某一历史提交的需求,那我们到底该如何操作呢,本篇一一阐述。
熊建刚 发布于 2天前 阅读 237 点赞 1

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。你只需要在部署环境中,例如Kubernetes的pod里注入一个特别的sidecar proxy来增加对istio的支持,用来截获微服务之间的网络流量。 目前版本的istio只支持kubernetes,未来计划支持其他其他环境。
tqyin 发布于 2天前 阅读 240

深入理解JVM原理之编译openjdk7

        Java虚拟机种类很多例如:HotSpot 丶 JRockit 丶 J9等 我们一般用的就是HotSpot,如果我们电脑上装了JDK,可以运行java -version查看相关信息 java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 之前想着编译openjdk7,但是试过windows系统,linux系统,各种不如意,尤其是windows系统操作起来比linux更复杂,最后不得不放弃,centos试过,redhat也试过,各种不行 ,简直要吐血, 不过苍天不负有心人,经过一周的不断尝试,终于使用Ubuntu16.04.3搞定. 准备阶段: ①.需要安装的:使用 apt-get install 命令 build-essential gawk libasound2-dev libcups-dev libxrender-dev xorg-dev ant(1.7以上) libxtst-dev libxi-dev libxt-dev ②.openjdk7 , jdk6 我使用的jdk6为:jdk-6u45, ③.将CurrencyData.properties文件中的日期一定要改成10年内, 否则在编译过程中会报错从而导致编译失败: Error: time is more than 10 years from present: 1136059200000 文件位置:  /usr/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties 开始编译: ①.进...
大大的微笑 发布于 2天前 阅读 396 评论 1

如何愉快的使用MQ-详述各种功能场景

  消息队列(MQ)是一种不同应用程序之间(跨进程)的通信方法。应用程序通过写入和检索出入列队的数据(消息)来通信,而无需通过专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(Remote Procedure Call. RPC)的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。这样天然的就实现了异步的目标。那么MQ还有哪些功能场景呢。下面逐一介绍。 解耦 解耦.png MQ最直接的使用场景就是可以将两个系统进行解耦,比如我们的货款抵扣业务场景,用户生成订单发送MQ后立即返回,结算系统去消费该MQ进行用户账户金额的扣款。这样订单系统只需要关注把订单创建成功,最大可能的提高订单量,并且生成订单后立即返回用户。而结算系统重点关心的是账户金额的扣减,保证账户金额最终一致。这个场景里面还会涉及到重试幂等性问题,后面有介绍。 削峰填谷 还是以订单系统和结算系统场景为例,如果订单系统通过RPC框架来调用结算系统,在有高峰促销的情况下生成订单的量会非常大,而且由于生成订单的速度也非常快,这样势必会给结算系统造成系统压力,...
新栋BOOK 发布于 2天前 阅读 2769 评论 19 点赞 8

一篇文章看懂爬虫

爬虫的本质、webmagic
冷血狂魔 发布于 2天前 阅读 606 评论 2 点赞 1

自学编程,十年磨一剑

原文链接 [Teach Yourself Programming in Ten Years](http://norvig.com/21-days.html) 作者 Peter Norvig 原文几经修改,[已有的翻译](http://blog.jobbole.com/22905/) 惨不忍睹,多处翻译得背道相驰,怒而重新翻译,是为此文。2017.11.5 ### 为什么每个人都如此急于求成? 在任何书店里你都能看到类似于《24 小时 Java 无师自通》这样的书,以及旁边无穷无尽的变种,试图教你在短时间内学会 C、SQL、Ruby、算法等等技能。 我在亚马逊在线书店搜索“自学”“小时”“2000年以后出版”等关键字,找到了 512 本类似书籍。前十名有九个都是编程书。 似乎一切都昭示着,要么当下人们迫切地想学会编程,要么学会编程是相当容易的一件事。在其他领域里,你很难找到诸如此类的书,甚至是《狗狗喂养指南》都鲜有“几日速成”这种说法。你不奇怪吗? 是的,Felleisen 等人也注意到了,他们的著作[《如何设计程序》](http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html)里提到了这种速成书泛滥的趋势,并给出评论“拙劣的编程水平确实相当容易达成。傻子都能在 21 天里学会,哪怕他们天生就是个白痴。”。Abtruse Goose 的漫画[《如何自学编程》](http://abstrusegoose.com/...
傅易 发布于 2天前 阅读 509 评论 4 点赞 2

redis无法获取连接Could not get a resource from the pool分析

背景 随着系统使用用户上升,我们也愈发多的使用到了redis组件! 比如在做session共享时 tomcat使用redis做session 参考https://github.com/jcoleman/tomcat-redis-session-manager 当然关于session共享在tomcat中使用存在一些限制 tomcat指定版本 web应用使用jedis和common pools 需要指定版本 容易出现jar冲突 运维配置对应redis信息 连接池开发无感 因此更多可以考虑使用spring-session通过redis来管理session 当然我们目前的场景使用shiro做session管理【shiro可以委托给容器或者第三方组件】 那么当使用redis组件多了的场景我们就极容易碰到如下的错误 Could not get a resource from the pool 简要分析一下我们系统中发生该错误的场景 分析 我们在某些场景下报错如下 at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.Applicati...
Mr_Qi 发布于 2天前 阅读 211 评论 1 点赞 2

MySQL连接配置文件密码加密及其在多种连接池上的应用

为了安全,连接数据库的配置文件中,如密码等信息需要采用密文的形式存放。 本文将给出多种连接池数据库密码密文存放的实现~ 如何配置数据库密码加密访问数据库? 将配置文件用户相关的信息(例如:密码)进行加密使其以密文形式存在,进行初始化连接池的时候进行解密操作,达到成功创建连接池的目的。 接下来,我们完成如下几个连接池采用数据库密文存储的实现: DBCP连接池 C3P0连接池 Druid连接池 DBCP连接池 数据库属性文件database.properties 配置数据库属性文件, 配置数据库连接的密码(jdbc.password)设置为加密后的值,该值可以采用AES、DES、3DES等对称加密方式实现,也可以采用RSA的加密算法存储~ # jdbc.driverClassName jdbc.driverClassName=com.mysql.jdbc.Driver # Database URL jdbc.url=jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull jdbc.username=abc jdbc.password=YpIADNvyi+/X2O33wS5E9SaEVKZgKuS70X8kgxgioEJ7+7KccS8aVmFIWndJ83NsUebDkb+w94HM3xCyjnjg4Q== # Time to wait for an open connection before timing out # (in milliseconds) cpool.checkoutTimeout=5000 # Conne...
王孟君 发布于 2天前 阅读 239 评论 3

掌握python机器学习-读书笔记 5 (评估算法)

如果你想知道你的算法的性能。 最好的办法就是对已知结果的数据进行预测比较, 第二呢, 就是用统计学更加聪明的办法,比如重采样来让你做精准的估计。 本章就是提供一些相关的办法。
zzbb 发布于 2天前 阅读 242 点赞 1

java用pdfbox切图并重绘宽高

引入pdfbox使用的jar pdfbox-2.0.8.jar,maven依赖如图: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.8</version> </dependency 切图:按页切图并生成对应的png格式的图片,输出至相应的目录下 /** * pdf切割成图片 * @param url1 //源文件路径 * @param url2 //切割后图片存储路径 * @param contractId //合同模板id * @throws IOException */ public static void cutting(String url1, String url2, String contractId) throws IOException{ //将pdf按页生成图片 File file = new File(url1); Rectangle tempReader = null; PdfReader pdfReader = null; PDDocument doc = null; try { String urls = url2+contractId+"/"; File files = new File(urls); if(!files.exists()){ files.mkdirs(); } // 读入PDF pdfReader = new PdfReader(url1); // 计算PDF页码数 int pageCount = pdfReader.getNumberOfPages(); System.out.println(pageCount); doc = PDDocument.load(file); ...
风格若干 发布于 2天前 阅读 4

MySQL主从配置

## 17.1 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。也就是说,当你在A机器写入一个表,再次查看B机器也会同步一个表。 ### MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 主从过程大致有3个步骤: - 主将更改操作记录到binlog里。 - 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里。 - 从根据relaylog里面的sql语句按顺序执行 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地。 ### 主从原理图: ![](https://static.oschina.net/uploads/img/201712/14233702_ttkn.png "MySQL主从原理图") Master:主mysql Slave:备mysql > 当有数据写进主mysql中的时候,就出自动生成一个log dump thread,记录到如上讲的binlog中,然后从数据库就会和主mysql有个线程进行交互,从服务器就会读取binlog日志到Slave,然后再次生成一个relay log(中继日志),然后再次和从服务器中的SQL thread线程进程交互执行。 简单的说,就是...
周云台 发布于 9小时前 阅读 4

PHP后台师面试知识点整理(草稿,未完)

PHP后台开发面试知识点整理,主要关键技术MySQL,Redis,Nginx,PHP,消息队列,Web安全等,包含少量的Golang
laiconglin 发布于 9小时前 阅读 3

为程序员准备的音乐编辑器-VexTab

VexTab 是一种用于书写音乐的语言,你只需要花非常少的时间学习一下,就可以用它来创建,编辑和分享非常好看的五线谱和六线谱了。和 ASCII 谱的设计目标为易于阅读不一样,VexTab 是为了可方便书写而诞生的。
叶大侠 发布于 8小时前 阅读 3

ZooKeeper学习第八期——ZooKeeper伸缩性

一、ZooKeeper中Observer 1.1 ZooKeeper角色 经过前面的介绍,我想大家都已经知道了在ZooKeeper集群当中有两种角色Leader和Follower。Leader可以接受client 请求,也接收其他Server转发的写请求,负责更新系统状态。 Follower也可以接收client请求,如果是写请求将转发给Leader来更新系统状态,读请求则由Follower的内存数据库直接响应。 ZooKeeper集群如图1.1所示。 图 1.1 ZooKeeper集群服务 但在ZooKeeper的3.3.3版本以后,ZooKeeper中又添加了一种新角色Observer。Observer的作用同Follower类似,唯一区别就是它不参与选主过程。那么,我们就可以根据该特性将ZK集群中的Server分为两种: (1) 投票Server:Leader、Follower (2) 非投票Server:Observer 1.2 为什么引入Observer (1) ZooKeeper可伸缩性 那么,ZooKeeper为什么要引入Observer这个角色呢?其实在ZooKeeper中引入Observer,主要是为了使 ZooKeeper具有更好的可伸缩性。那么,何为可伸缩性?关于伸缩性,对于不同的人意味着不同的事情。 而在这里是说,如果我们的工作负载可以通过给系统分配更多的资源来分担,那么这个系统就是可伸缩的;一个不可伸缩的系统却无法通过增加资源来提升性能,甚 至会在工作负载...
卯金刀GG 发布于 2个月前 阅读 12

eclipse 出现 debug Line breakpoint 问题解决

当你的eclipse 出现这个   把这个点击一下就好了  
一个橙子HHH 发布于 4天前 阅读 20

一分钟了解索引技巧

举例,业务场景,用户表,表结构为: t_user( uid primary key, login_name unique, passwd, login_time, age, … );   聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。   举例:t_user场景中,uid上的索引。   非聚集索引(non-clustered index):它并不决定数据在磁盘上的物理排序,索引上只包含被建立索引的数据,以及一个行定位符row-locator,这个行定位符,可以理解为一个聚集索引物理排序的指针,通过这个指针,可以找到行数据。   举例,查找年轻MM的业务需求: select uid from t_user where age > 18 and age < 26; age上建立的索引,就是非聚集索引。   联合索引:多个字段上建立的索引,能够加速复核查询条件的检索 举例,登录业务需求: select uid, login_time from t_user where  login_name=? and passwd=? 可以建立(login_name, passwd)的联合索引。   联合索引能够满足最左侧查询需求,例如(a, b, c)三列的联合索引,能够加速a | (a, b) | (a, b, c) 三组查询需求。   这也就是为何不建立(passwd, login_name)这样联合索引的原因,业务上几乎没有passwd的单条件查询需求,...
architect刘源原 发布于 15小时前 阅读 2

Java入门之计算机基础(一)

阅读本文大概需要 4 分钟 想要开始学习Java开发,需要掌握一些必要的计算机基础。如果你是计算机专业的人或者已经学过类似的课程,可以跳过这篇文章的阅读。计算机基础课程有很多,小编在大学里学过的课程就有:计算机组成原理、计算机网络、编译原理、数据结构等。当然这里只会对一些简单的知识进行介绍,如果对这些课程感兴趣的,可以去网上找一些资料,也可以上中国大学幕课网上进行学习。中国大学幕课网上的视频目前都是免费的,推荐(免费打广告)。 一、机器语言分类 机器语言 机器语言说白了就是计算机能识别的语言,它是直接用二进制代码指令表达的计算机语言。指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。这里的0和1组成的一串代码也就是后面要介绍的二进制数。 汇编语言 汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。它与机器语言的区别在于指令的表示方法上,汇编语言的主体是汇编指令,相比于机器指令,编程人员更容易记住。 //机器指令与汇编指令示例,来源于百度百科:汇编语言 //操作:寄存器BX的内容送到AX中 1000100111011000 //机...
DemonFS 发布于 11小时前 阅读 2

一个numpy int64的坑

一个numpy int64引起的坑,对类型还是要重视呀~~
Kanonpy 发布于 3个月前 阅读 65 点赞 1

Photon:轻量级专用于容器的Linux发行版

导读 容器在当下的火热,并不是没有原因的。正如之前讨论的,容器可以使您轻松快捷地将新的服务与应用部署到您的网络上,而且并不耗费太多的系统资源。比起专用硬件和虚拟机,容器都是更加划算的,除此之外,他们更容易更新与重用。 更重要的是,容器喜欢 Linux(反之亦然)。不需要太多时间和麻烦,你就可以启动一台 Linux 服务器,运行Docker,然后部署容器。但是,哪种 Linux 发行版最适合部署容器呢?我们的选择很多。你可以使用标准的 Ubuntu 服务器平台(更容易安装 Docker 并部署容器)或者是更轻量级的发行版 —— 专门用于部署容器。 Photon 就是这样的一个发行版。这个特殊的版本是由 VMware 于 2005 年创建的,它包含了 Docker 的守护进程,并可与容器框架(如 Mesos 和 Kubernetes )一起使用。Photon 经过优化可与 VMware vSphere 协同工作,而且可用于裸机、Microsoft Azure、 Google Compute Engine、 Amazon Elastic Compute Cloud 或者 VirtualBox 等。 Photon 通过只安装 Docker 守护进程所必需的东西来保持它的轻量。而这样做的结果是,这个发行版的大小大约只有 300MB。但这足以让 Linux 的运行一切正常。除此之外,Photon 的主要特点还有: 内核为性...
问题终结者 发布于 18小时前 阅读 2

使用DuckDuckGo在命令行中搜索

导读 最近出现了一款能够从命令行搜索 DuckDuckGo 的工具。它叫做 ddgr(我把它读作 “dodger”),非常好用,像 Googler 一样,ddgr 是一个完全开源而且非官方的工具。没错,它并不属于 DuckDuckGo。所以,如果你发现它返回的结果有些奇怪,请先询问这个工具的开发者,而不是搜索引擎的开发者。 DuckDuckGo 命令行应用 DuckDuckGo Bangs(DuckDuckGo 快捷搜索) 可以帮助你轻易地在 DuckDuckGo 上找到想要的信息(甚至 本网站 omgubuntu 都有快捷搜索)。ddgr 非常忠实地呈现了这个功能。 和网页版不同的是,你可以更改每页返回多少结果。这比起每次查询都要看三十多条结果要方便一些。默认界面经过了精心设计,在不影响可读性的情况下尽量减少了占用空间。 ddgr有许多功能和亮点,包括: 更改搜索结果数 支持 Bash 自动补全 使用 DuckDuckGo Bangs 在浏览器中打开链接 ”手气不错“选项 基于时间、地区、文件类型等的筛选功能 极少的依赖项 你可以从 Github 的项目页面上下载支持各种系统的 ddgr: 从 Github 下载 “ddgr” 另外,在 Ubuntu 16.04 LTS 或更新版本中,你可以使用 PPA 安装 ddgr。这个仓库由 ddgr 的开发者维护。如果你想要保持在最新版本的话,推荐使用这...
问题终结者 发布于 18小时前 阅读 2

使用 Python 连接 MySQL 的方法

导读 尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发、亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式,你可以在实际开发过程中根据实际情况合理选择。 1、MySQL-python MySQL-python 又叫 MySQLdb,是 Python 连接 MySQL 最流行的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在 Windows 平台安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代的是它的衍生版本。 # 前置条件sudo apt-get install python-dev libmysqlclient-dev # Ubuntusudo yum install python-devel mysql-devel # Red Hat / CentOS # 安装pip install MySQL-python #!/usr/bin/pythonimport MySQLdbdb = MySQLdb.connect( host="localhost", # 主机名 user="john", # 用户名 passwd="megajonhy", # 密码 db="jonhydb") # 数据库名称 # 查询前,必须先获取游标cur = db....
问题终结者 发布于 18小时前 阅读 2

给克隆的centos 7 配置静态ip常见问题

因为是克隆的机器,如果克隆机和被克隆的主机同时开机的话,出现的第一个问题就是两台机器因为网卡配置文件完全一样, 会出现配置完ip地址后,配置文件不生效的问题 如图,出现一个Job for network.service failed.See 'systemctl status network.service'and'journacctl -xn'for details的报错, 这是因为同一个网段有MAC地址冲突,所以需要改一下MAC地址,方法如下 将这个MAC地址填写到配置文件当中,替换掉配置文件中的HWADDR=后面的这一串mac地址 然后可以通过手写给配置文件添加ip,掩码,网关,dns等信息 配置地址是为了能让虚拟机和物理机能够通讯,那么上面这个ip是怎么来的呢?可以提前查看这里,如下图 在VMware软件左上角点击编辑,选择里面的虚拟网络编辑器,会出现上面第二个画面, 选择VMnet8 ,下面就会有它的网段和掩码 再点击NAT设置,就可以看到网关地址 把这些有用的信息填写到配置文件当中,按esc ,再按: ,输入wq    敲回车。这是 保存退出的意思 运行dhclient -r 这个命令,就杀死自动获取ip的进程了, 然后使用systemctl restart network.serviec来重启网络服务是配置文件生效 再使用ifconfig就可以看到ip就是我们配置文件里面的ip了,使用pin...
李超小牛子 发布于 6小时前 阅读 2

CyclicBarrier源码分析

CyclicBarrier源码分析 首先分析CyclicBarrier的核心方法await public int await() throws InterruptedException, BrokenBarrierException { try { return dowait(false, 0L); } catch (TimeoutException toe) { throw new Error(toe); // cannot happen; } } public int await(long timeout, TimeUnit unit) throws InterruptedException, BrokenBarrierException, TimeoutException { return dowait(true, unit.toNanos(timeout)); } 可以看出不管是否带超时,但将会调用方法dowait方法 private int dowait(boolean timed, long nanos) throws InterruptedException, BrokenBarrierException, TimeoutException { final ReentrantLock lock = this.lock; lock.lock(); try { final Generation g = generation; if (g.broken) throw new BrokenBarrierException(); if (Thread.interrupted()) { breakBarrier(); ...
BingZhong 发布于 1个月前 阅读 106

百度地图api使用指南

- 百度地图API是可以给开发人员调用的开放API,我们可以用Javascript语言进行调用; - 听起来API这个概念很抽象,初学者想:“百度的API,我们怎么能调用?”,其实不是这样,我们通过一个URL地址进行引用,然后就可以调用他的API; - 不需要Web服务器,只需要一个浏览器就能够使用百度地图API;
QinwangLiu 发布于 18小时前 阅读 2

mongodb 数据的增加删除操作

1、插入数据库 db.person.insert({"name":"solar","pwd":"solar"}) 2、查询数据库 db.person.find() db.person.find().sort({"name":1}) db.person.find().skip(3).sort({"name":1}) 3、修改数据 db.person.update({key:1},{key:1,value:2}) 覆盖修改 db.person.update({key:1},{$set:{key:2}})  部分更新 db.person.update({key:1},{key:1,value:2},true)如果修改的数据不存在, 则插入 db.person.update({key:1},{$set:{key:2}},false,true)   多文档更新 4、删除数据 db.person.remove({key:value}) db.person.drop() 删除表 5、创建索引 单键索引 db.person.ensureIndex({name:1})  多键索引 db.person.ensureIndex({name:[1,2,3,4]}) 复合索引 db.person.ensureIndex({X:1,Y:1}) 复合索引查询      db.person.find({x:1,y:2}) 过期索引 db.person.ensureIndex({time:1},{expireAfterSeconds:10}) 全文索引 db.person.ensureIndex({key_1:"text",key_2:"text"}) db.person.ensureIndex({"$**":"text"}) 查询 db.person.find({$text:{$search:"solar"}})  包含solar db.person.find({$text:{$search:"solar mei"}})   包含solar 或者 mei db.person.find({$t...
西行侠客 发布于 16小时前 阅读 2

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 报错解决方案

## 背景 ``` # [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux # [root@localhost ~]# mysql --help | grep Distrib mysql Ver 14.14 Distrib 5.6.35, for linux-glibc2.5 (x86_64) using EditLine wrapper ``` MySQL是用二进制免编译包安装的,修改my.cnf配置文件后,登录MySQL出错。 ``` [root@localhost ~]# mysql -uroot -p123456 Warning: Using a password on the command line interface can be insecure. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) ``` ## 报错解释 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 意思是说MySQL Server服务和socket正确连接,错误代码 2002 (HY000) ## 解决方案 MySQL配置文件中加上如下[client],再登录mysql。 ``` [root@localhost ~]# vim /etc/my.cnf ....... [mysqld] datadir=/data/mysql socket=/tmp/mysql.sock server-id=181 ....... #添加上client [client] socket=/tmp/mysql.sock [root@localhost ~]...
周云台 发布于 16小时前 阅读 2

Java多线程老鸟养成记(二):线程的状态控制

0、概述        Java提供了一些API用于线程状态的控制,在上篇文章 Java多线程老鸟养成记(一):线程的生命周期 中已经提到了大多数常用的重要API,下面是来自jdk1.6中文手册中的API  void destroy()          已过时。 该方法最初用于破坏该线程,但不作任何清除。它所保持的任何监视器都会保持锁定状态。不过,该方法决不会被实现。即使要实现,它也极有可能以suspend方式被死锁。如果目标线程被破坏时保持一个保护关键系统资源的锁,则任何线程在任何时候都无法再次访问该资源。如果另一个线程曾试图锁定该资源,则会出现死锁。这类死锁通常会证明它们自己是“冻结”的进程。  void interrupt()          中断线程。  void join()          等待该线程终止。  void join(long millis)          等待该线程终止的时间最长为 millis 毫秒。  void join(long millis, int nanos)          等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。  void resume()          已过时。 该方法只与 suspend() 一起使用,但 suspend() 已经遭到反对,因为它具有死锁倾向。  void setDaemon(boolean ...
AI9o後 发布于 16小时前 阅读 2

js删除数组内相同元素(同时删除多个)

删掉数组元素时,数组的length也是随时改变的,数组内的排序也是动态改变的,导致会漏掉一些元素。所以for循环需要倒着删,或者采用其他的方式实现删除多个元素。
刘昌鑫 发布于 15小时前 阅读 2

5 款最酷的 Linux 终端模拟器!

导读 虽然,我们可以继续使用老旧的 GNOME 终端、Konsole,以及好笑而孱弱的旧式 xterm。 不过,让我们带着尝试某种新东西的心境,回过头来看看 5 款酷炫并且实用的 Linux 终端。 Xiki 首先我要推荐的第一个终端是 Xiki。 Xiki 是 Craig Muth 的智慧结晶,他是一个天才程序员,也是一个有趣的人(有趣在此处的意思是幽默,可能还有其它的意思)。 很久以前我在 遇见 Xiki,Linux 和 Mac OS X 下革命性命令行 Shell 一文中介绍过 Xiki。 Xiki 不仅仅是又一款终端模拟器;它也是一个扩展命令行用途、加快命令行速度的交互式环境。 视频播放器     00:00 03:14     Xiki 支持鼠标,并且在绝大多数命令行 Shell 上都支持。 它有大量的屏显帮助,而且可以使用鼠标和键盘快速导航。 它体现在速度上的一个简单例子就是增强了 ls 命令。 Xiki 可以快速穿过文件系统上的多层目录,而不用持续的重复输入 ls 或者 cd, 或者利用那些巧妙的正则表达式。 Xiki 可以与许多文本编辑器相集成, 提供了一个永久的便签, 有一个快速搜索引擎, 同时像他们所说的,还有许许多多的功能。 Xiki 是如此的有特色、如此的不同, 所以学习和了解它的最快的方式可以看 Craig 的有趣和实用的视频...
问题终结者 发布于 4天前 阅读 15

Spring boot + LayIM + t-io 好友申请通知的实现

本文包含内容:用户主页面信息加载,绑定。好友申请,t-io服务端主动推送,layim消息盒子的数据绑定。
丶Pz 发布于 1周前 阅读 2917 评论 22 点赞 6

前途光明的机器学习将走向何方?这里有 5 个关于它的未来预测

关于机器学习的 5 个未来预测
编辑部的故事 发布于 3天前 阅读 2281 评论 7 点赞 1

2017 前端大事件和趋势回顾,2018 何去何从?

2017年,前端开发继续飞速发展。以下是在过去的一年中非常值得关注的一些事件和趋势整理,主要参考了国内外的一些报道和文章,希望能对大家在思考 2018 年的趋势和走向上有所帮助。欢迎指正、评论和补充。 1、React 16 和 MIT 许可证 2017年,React 继续在前端领域占据主导地位,备受期待的 React 16 也正式发布。该版本包含可实现异步 UI 渲染的 fiber 架构,以及更便捷的错误管理。 不过,React 更引人关注的不是其新特性,而是开源许可证的更改。Facebook 放弃了导致很多企业拒绝使用其开源项目的 BSD+专利许可模式,并采用了对用户友好的 MIT 许可证。同时,Jest、Flow、Immutable.js 和 GraphQL 等项目也更改为了 MIT 许可证。 >> 相关阅读: React 16.0.0 发布,去除专利条款,改用 MIT 许可证 Facebook 被集体“声讨”,要求更改 ReactJS 许可 2、下一代 Web 应用模型 — PWA PWA(Progressive Web App)是 Google 于 2016 年提出的概念,2017 年已被迅速采用。PWA 旨在增强 Web 体验,可显著提高加载速度、可离线工作、可被添加至主屏、全屏执行、推送通知消息等等。这些特性将使得 Web 应用渐进式接近原生 App。 >> 相关阅读: 您的第一个 Progressive Web Ap...
编辑部的故事 发布于 1周前 阅读 4939 评论 15 点赞 10 打赏 1

Python随机生成手机号

### 依据 ``` 根据2017年10月份最新的手机号正则进行编码, 正则如下: (13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8} ``` ### 代码 ``` # -*- coding: utf-8 -*- import random def create_phone(): # 第二位数字 second = [3, 4, 5, 7, 8][random.randint(0, 4)] # 第三位数字 third = { 3: random.randint(0, 9), 4: [5, 7, 9][random.randint(0, 2)], 5: [i for i in range(10) if i != 4][random.randint(0, 8)], 7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)], 8: random.randint(0, 9), }[second] # 最后八位数字 suffix = random.randint(9999999,100000000) # 拼接手机号 return "1{}{}{}".format(second, third, suffix) # 生成手机号 phone = create_phone() print(phone) ``` ### 运行结果 ``` 13937342780 15835720604 14589505530 ... ``` ### 验证 (使用正则验证) ``` # -*- coding: utf-8 -*- import random import re def create_phone(): # 第二位数字 second = [3, 4, 5, 7, 8][random.randint(0, 4)] # 第三位数字 third = { 3: random.randint(0, 9), 4: [5, 7, 9][random.randint(0, 2)], 5: [i for i in range(10) if i != ...
tianshl 发布于 1周前 阅读 24729

JavaScript指定长度和进制的UUID

### 指定长度和进制的UUID ``` /** * 指定长度和进制的UUID * @param len 长度 * @param radix 进制 * @returns {string} */ function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; } else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } ``` ### 测试 ``` uuid(32, 2) "11110011000001100111011111001111" uuid(32, 8) "31730315503322654076326054034634" uuid(32, 10) "50235847867589708943975575132412" uuid(32, 16) "405F8CA9918F71FC9C73DACB47CEC6EE" ```...
tianshl 发布于 2周前 阅读 66769

javacsv读写csv文件

### 添加依赖 ``` net.sourceforge.javacsv javacsv 2.0 ``` ### 读文件 ``` CsvReader reader = null; String row; String path = "./tmp/read.csv"; try { reader = new CsvReader(path, ',', Charset.forName("GBK")); // 跳过表头(需要表头就不用跳过) reader.readHeaders(); while (reader.readRecord()) { // 读取每行数据 row = reader.getValues(); System.out.println(row); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (Exception e) { e.printStackTrace(); } ``` ### 写文件 ``` CsvWriter csvWriter = null; String path = "./tmp/write.csv"; try { csvWriter =new CsvWriter(path,',', Charset.forName("GBK")); // 写入一行数据 csvWriter.writeRecord(new String[]{"张三", 18, "男"}); } catch (Exception e) { e.printStackTrace(); } finally { try { if (csvWriter != null) { csvWriter.close(); } } catch (Exception e) { e.printStackTrace(); } } ``` ### 备注 ##### 参考文档 [JavaCSV API](http://javacsv.sourceforge.net/) ``` http://javacsv.sourceforge.net/ `...
tianshl 发布于 1个月前 阅读 199585 点赞 1

java递归删除文件或文件夹

```java /** * 递归删除文件或文件夹 * * @param file 文件或文件夹 */ public void delFile(File file) { if (!file.exists()) { return; } if (file.isFile()){ // 文件: 直接删除 file.delete(); } else if (file.isDirectory()) { // 文件夹 // 1. 删除子文件 for (File f: file.listFiles()){ delFile(f); } // 2. 删除文件夹 file.delete(); } } ```
tianshl 发布于 1个月前 阅读 200068 点赞 3

MacOS 配置Java环境变量

### 编辑 bash_profile ```shell vim ~/.bash_profile 输入以下内容并保存 export JAVA_HOME=`/usr/libexec/java_home` export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin ``` ### 使环境变量生效 ``` source ~/.bash_profile ``` ### 检验 ```shell tianshl@tianshl ~ $ echo $PATH ``` ### 备注 ``` 1. source前使用fish的要先退出fish 2. /usr/libexec/java_home 这条命令可以输出JAVA_HOME的路径 ```
tianshl 发布于 2周前 阅读 81799 点赞 1

Python库打包到PyPI

### 打开pypi官网, 并注册账号 ``` https://pypi.python.org/ ``` ### 创建并编辑.pypirc (注: 家目录下创建) ``` tianshl@tianshl ~ $ vim .pypirc [pypirc] index-servers = pypi pypitest [pypi] repository=https://pypi.python.org/pypi [pypitest] repository=https://testpypi.python.org/pypi [server-login] username:tianshl password:****** ``` ### 前提 ``` 1. 要打包的代码必须是一个包(package) 2. 代码是开源的 ``` ### 包(package) ##### 创建包 ``` 右键 / New / Python Package / 输入包名 / OK ``` ##### 创建成功后,查看目录结构 ``` tianshl@tianshl wechat $ tree . └── wxReply └── __init__.py 实际上就是文件夹中包含__init__.py文件 ``` ### 编写要打包的源代码 ``` tianshl@tianshl wechat $ tree . └── wxReply ├── __init__.py └── wxReply.py 1 directory, 2 files ``` ### 创建README.rst和setup.py文件 ``` README.rst为说明文档 setup.py为安装脚本 (核心) ``` ##### 此时wechat包的目录结构 ``` tianshl@tianshl wechat $ tree . ├── README.rst ├── setup.py └── wxReply ├── __init__.py └── wxRepl...
tianshl 发布于 1个月前 阅读 204431 评论 1 点赞 1

深度学习之视频摘要发展综述

现如今城市生活节奏越来越快,用户在浏览一些视频时,并不想花费大量的时间来看一个完整的视频。更多时候,用户只想知道这个视频最精华的信息,也是基于这种需求,谷阿莫等影视评论者才得到如此多的关注。此时,视频摘要就体现出其价值所在了。   什么是视频摘要?   视频摘要,就是以自动或半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段/帧。从摘要的技术处理过程来讲,视频摘要一般可以分成两种,静态视频摘要和动态视频摘要。现阶段,我们公司主要致力于静态视频摘要的研究。接下来就和大家说一下静态视频摘要。   什么是静态视频摘要?   静态视频摘要,又称为视频概要,即用一系列从原始视频流中抽取出来的静态语义单元来表示视频内容的技术。简单来说,就是在一段视频中提取出一些关键帧,通过将多个关键帧组合成视频摘要,使用户可以通过少量的关键帧快速浏览原始视频内容。进一步发展的话可以为用户提供快速的内容检索服务。   例如,公开课的视频中,提取出含有完整PPT的帧。我们将含有关键信息的所有帧提供给浏览者,可以使其在较短的时间内了解到较长视频的主要内容。又例如,将一个2小时的电影提取出其关键部分,...
图鸭科技研究员 发布于 4天前 阅读 808 点赞 2

image not recognized

image not recognized
tianshl 发布于 2个月前 阅读 347550 点赞 1

xxx is not in the sudoers file

### 问题 ``` 无法使用sudo指令 ``` ### 方法一 ``` 1. 查找sudoers位置(默认会在/etc/sudoers) [tianshl@tianshl ~]# whereis sudoers sudoers: /etc/sudoers /etc/sudoers.bak /usr/share/man/man5/sudoers.5.gz 2. 切换到root身份 [tianshl@tianshl ~]# su - 3. 修改sudoers权限 [root@tianshl ~]# chmod u+w /etc/sudoers 4. 把用户添加到sudoers中 [root@tianshl ~]# vi /etc/sudoers 1. 找到 "root ALL=(ALL)" 2. 另起一行输入 "tianshl ALL=(ALL) ALL" 备注:tianshl为用户名 修改后如下所示: ## Allow root to run any commands anywhere root ALL=(ALL) ALL tianshl ALL=(ALL) ALL 5. 去掉sudoers的写权限 [root@tianshl ~]# chmod u-w /etc/sudoers 6. 退出root用户后就可以利用sudo命令来执行管理员权限了。 ``` ``` 注:如果不去掉写权限,系统不允许执行suoders文件,运行sudo命令时会出现以下错误: sudo: /etc/sudoers is mode 0640, should be 0440 ``` ### 方法二 ``` 1.首需要切换到root身份 [tianshl@tianshl ~]# su - 2. 执行visudo [root@tianshl ~]# visudo 1、移动光标,到最后一行 2、按a,进入append模式 3、输入 "tianshl ALL=(ALL) ALL" 备注...
tianshl 发布于 1个月前 阅读 215921 点赞 1

logback是怎么知道java代码的行数的?

使用logback,忽然想到这个问题,然后问了几个同事都没研究过,我来看看logback是如何知道的 打断点如下: stop in com.sql.mysql.sharding.plugin.ExecutorInterceptor.intercept stop in ch.qos.logback.classic.Logger.callAppenders stop in ch.qos.logback.core.encoder.LayoutWrappingEncoder.encode encode的java函数如下: public byte[] encode(E event) { String txt = layout.doLayout(event); return convertToBytes(txt); } 那么layout的值是啥呢? main[1] print layout layout = "ch.qos.logback.classic.PatternLayout("%level %date , %logger{36} [%file:%line] , Thread-[%thread] - %msg%n")" 就是我们自己定义的格式,好,继续往下走。 碰到了这个函数 ​ protected String writeLoopOnConverters(E event) { StringBuilder strBuilder = new StringBuilder(INTIAL_STRING_BUILDER_SIZE); Converter<E> c = head; while (c != null) { c.write(strBuilder, event); c = c.getNext(); } return strBuilder.toString(); } ​ 这里看来是做了一个字...
强子哥哥 发布于 1周前 阅读 1823 评论 16 点赞 7

Swoft 协程框架0.2.1版本更新

基于 Swoole 原生协程,新时代PHP高性能协程框架
stelin 发布于 3天前 阅读 629 点赞 2

Spring Boot: 加密应用配置文件敏感信息

应用中会存在多个需要配置敏感信息(比如stfp等),都需要加密,类似于druid加解密方式依赖于工具类的实现,没有统一的加解密标准,麻烦、而且不好维护。
冷冷gg 发布于 4天前 阅读 516 评论 9 点赞 1

Redis 分布式锁

redis分布式锁
NoComments 发布于 5天前 阅读 511 评论 4 点赞 1

postgresql 10 使用PGPOOL-II做集群

# DBA不可不知的操作系统内核参数 ## 修改/etc/sysctl.conf ``` # vi /etc/sysctl.conf # add by digoal.zhou fs.aio-max-nr = 1048576 fs.file-max = 76724600 kernel.core_pattern= /data01/corefiles/core_%e_%u_%t_%s.%p # /data01/corefiles事先建好,权限777,如果是软链接,对应的目录修改为777 kernel.sem = 4096 2147483647 2147483646 512000 # 信号量, ipcs -l 或 -u 查看,每16个进程一组,每组信号量需要17个信号量。 kernel.shmall = 107374182 # 所有共享内存段相加大小限制(建议内存的80%) kernel.shmmax = 274877906944 # 最大单个共享内存段大小(建议为内存一半), >9.2的版本已大幅降低共享内存的使用 kernel.shmmni = 819200 # 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 262144 # The default setting of the socket receive buffer in bytes. net.core.rmem_max = 4194304 # The maximum receive socket buffer size in bytes net.core.wmem_default = 262144 # The default setting (in bytes) of the socket send buffer. net.core.wmem_max = 4194304 # The max...
碧辉 发布于 3天前 阅读 429 点赞 2

掌握python机器学习-读书笔记4(特征选择)

摘要: 在机器学习建模中,你所选择的数据特征对结果会有巨大的影响。 不相关和部分相关的特征可能会影响到模型的效果。 本章你将会学习用scikit-learn来 探索自动特征选择技术。 如下: - 单变量选择 - 回归的特征消除 - 主成因分析- 这个前面做过单独的学习 - 特征重要性分析
zzbb 发布于 3天前 阅读 400

分布式实时日志分析解决方案ELK部署架构

一、概述 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案。本文将会介绍ELK常见的架构以及相关问题解决。 Filebeat:Filebeat是一款轻量级,占用服务资源非常少的数据收集引擎,它是ELK家族的新成员,可以代替Logstash作为在应用服务器端的日志收集引擎,支持将收集到的数据输出到Kafka,Redis等队列。 Logstash:数据收集引擎,相较于Filebeat比较重量级,但它集成了大量的插件,支持丰富的数据源收集,对收集的数据可以过滤,分析,格式化日志格式。 Elasticsearch:分布式数据搜索引擎,基于Apache Lucene实现,可集群,提供数据的集中式存储,分析,以及强大的数据搜索和聚合功能。 Kibana:数据的可视化平台,通过该web平台可以实时的查看 Elasticsearch 中的相关数据,并提供了丰富的图表统计功能。 二、ELK常见部署架构 2.1、Logstash作为日志收集器 这种架构是比较原始的部署架构,在各应用服务器端分别部署一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、分析、格式化处理后发送至Elasticsearch存储,最后使用Kibana进...
FEINIK 发布于 2周前 阅读 4841 评论 6 点赞 4

JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)

gearman java mysql
happyhuangjinjin 发布于 4天前 阅读 364

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务

上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下 SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client,业界也有些知名的同类开源产品
鹏磊 发布于 1小时前 阅读 4

LAMP架构介绍

LAMP架构介绍 LAMP架构介绍 LAMP是 Linux+Apache(httpd)+MySQL+PHP的简称,即把Apache(httpd)、MySQL以及PHP安装在Linux系统上,Apache(httpd)是最常用的web服务器软件,MySQL是比较小型的数据库软件,PHP是脚本语言(Google、淘宝、百度、51cto博客、猿课论坛),三个角色可以在一台机器上,也可以分开( httpd 和 PHP 要在一起). httpd、PHP、MySQL三者是如何工作的 Apache和PHP是一个整体,Apache不能直接和MySQL去连接,只能通过PHP这个模块去MySQL中拿数据,拿到数据后,PHP把这个结果交给Apache,Apache再交给用户。PHP和MySQL交互数据的操作、行为,称为动态请求。  
风流花生 发布于 1小时前 阅读 1

DUBBO Thread pool is EXHAUSTED! 问题分析

  先来看看这个异常日志样子 Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-172.16.166.211:9491, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 165633 (completed: 165433), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://172.16.166.211:9491! at com.alibaba.dubbo.common.threadpool.support.AbortPolicyWithReport.rejectedExecution(AbortPolicyWithReport.java:53) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:768) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:656) at com.alibaba.dubbo.remoting.transport.dispatcher.all.AllChannelHandler.caught(AllChannelHandler.java:65) 一句话,dubbo的线程池满了,用完了。怎么解决,1:修改dubbo的连接池中的大小; 2:优化系统业务逻辑,但是问题就要先找到那线程的干活的他占用了,要先找到才能优化。 一、 修改dubbo的线程池大小 方法1:调整dubbo.pro...
独钓渔 发布于 5小时前 阅读 1

给克隆的centos 7 配置静态ip常见问题

因为是克隆的机器,如果克隆机和被克隆的主机同时开机的话,出现的第一个问题就是两台机器因为网卡配置文件完全一样, 会出现配置完ip地址后,配置文件不生效的问题 如图,出现一个Job for network.service failed.See 'systemctl status network.service'and'journacctl -xn'for details的报错, 这是因为同一个网段有MAC地址冲突,所以需要改一下MAC地址,方法如下 将这个MAC地址填写到配置文件当中,替换掉配置文件中的HWADDR=后面的这一串mac地址 然后可以通过手写给配置文件添加ip,掩码,网关,dns等信息 配置地址是为了能让虚拟机和物理机能够通讯,那么上面这个ip是怎么来的呢?可以提前查看这里,如下图 在VMware软件左上角点击编辑,选择里面的虚拟网络编辑器,会出现上面第二个画面, 选择VMnet8 ,下面就会有它的网段和掩码 再点击NAT设置,就可以看到网关地址 把这些有用的信息填写到配置文件当中,按esc ,再按: ,输入wq    敲回车。这是 保存退出的意思 运行dhclient -r 这个命令,就杀死自动获取ip的进程了, 然后使用systemctl restart network.serviec来重启网络服务是配置文件生效 再使用ifconfig就可以看到ip就是我们配置文件里面的ip了,使用pin...
李超小牛子 发布于 6小时前 阅读 2

LMAP架构介绍与安装MySQL

### LAMP架构介绍 ![](http://ww1.sinaimg.cn/large/7fb05a5ely1fmguh6vkwgj20nt0d1wk7.jpg) ![](http://ww1.sinaimg.cn/large/7fb05a5ely1fmguhgj6pej20o00dfdjs.jpg) ### MySQL_MariaDB介绍 - MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀) MySQL官网https://www.mysql.com 最新版本5.7GA/8.0DMR MySQL5.6变化比较大,5.7性能上有很大提升 Mariadb为MySQL的一个分支,官网https://mariadb.com/最新版本10.2 MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领大部分原班人马创立. Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6 Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本 ### 安装MySQL - 介绍 &准备 MySQL的几个常用安装包:rpm、源码、二进制免编译 这里使用的是二进制免编译安装包 ``` ###查看自己的系统是多少位的 [root@centos001 mysql]# uname -a Linux c...
杉下 发布于 6小时前 阅读 2

为程序员准备的音乐编辑器-VexTab

VexTab 是一种用于书写音乐的语言,你只需要花非常少的时间学习一下,就可以用它来创建,编辑和分享非常好看的五线谱和六线谱了。和 ASCII 谱的设计目标为易于阅读不一样,VexTab 是为了可方便书写而诞生的。
叶大侠 发布于 8小时前 阅读 3

Linux中找回密码的方式及两台主机互相登陆

1.13 单用户模式 1.14 救援模式 1.15 克隆虚拟机 1.16 Linux机器相互登录
mixuyulv 发布于 8小时前 阅读 1

PHP后台师面试知识点整理(草稿,未完)

PHP后台开发面试知识点整理,主要关键技术MySQL,Redis,Nginx,PHP,消息队列,Web安全等,包含少量的Golang
laiconglin 发布于 9小时前 阅读 3

MySQL主从配置

## 17.1 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。也就是说,当你在A机器写入一个表,再次查看B机器也会同步一个表。 ### MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 主从过程大致有3个步骤: - 主将更改操作记录到binlog里。 - 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里。 - 从根据relaylog里面的sql语句按顺序执行 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地。 ### 主从原理图: ![](https://static.oschina.net/uploads/img/201712/14233702_ttkn.png "MySQL主从原理图") Master:主mysql Slave:备mysql > 当有数据写进主mysql中的时候,就出自动生成一个log dump thread,记录到如上讲的binlog中,然后从数据库就会和主mysql有个线程进行交互,从服务器就会读取binlog日志到Slave,然后再次生成一个relay log(中继日志),然后再次和从服务器中的SQL thread线程进程交互执行。 简单的说,就是...
周云台 发布于 9小时前 阅读 4

掌握python机器学习-读书笔记 6 (算法的度量)

上一章是说在实验不同算法的时候, 如果评估来选择更优的算法。 而这一章则是已经确定了这个算法, 然后最后要评估一下这个算法到底效果如何。 评价的度量是有很多种的, 不同的场景使用的度量也不尽相同, 会覆盖分类和回归两种。 重点应用的话, 看10.2.5 分类的报表
zzbb 发布于 9小时前 阅读 5

区块链技术实战学习路线图

## 引言 给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,但区块链技术支撑着比特币的运行,因此要搞明白区块链技术,应该先了解下比特币。 ## 比特币 如果你是还不知比特币是什么,那就看看[比特币是什么](https://learnblockchain.cn/2017/10/23/whatisbitcoin/) ### 基础入门 接下来可以通过下面这几篇文章了解比特币大概的运行原理: * [区块链记账原理](https://learnblockchain.cn/2017/10/25/whatbc/) 通过这篇可以了解到区块链是一个怎样的结构 * [比特币所有权及隐私问题](https://learnblockchain.cn/2017/11/02/bitcoin-own/) 通过这篇可以了解到地址私钥 非对称加密应用 等概念 * [比特币如何挖矿](https://learnblockchain.cn/2017/11/04/bitcoin-pow/) 通过这篇了解工作量证明 * [比特币如何达成共识 - 最长链的选择](https://learnblockchain.cn/2017/12/07/bitcoin-sonsensus/) 通过这篇可以了解共识机制。 ### 进阶 在基础入门之后,可以进一步阅读以下几篇,理解分布式网络,交易验证。 * [分析比特币网络:一种去中心化、点对点的网络架构](https://learnblockchain.cn/2017/11/07/bitcoin-p2p/) * [比特币区块结构 Merkle 树及简...
Tiny熊 发布于 9小时前 阅读 7

时间转换

/** * 时间字符串转化为毫秒 * * @param dateTime * @return * @throws ParseException */ public static long StringToMS(String dateTime) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(dateTime)); return calendar.getTimeInMillis(); } /** * 毫秒转为为时间字符串 * * @param millisecond * @return */ public static String MSToString(long millisecond) { Date date = new Date(millisecond); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss SSS a"); return format.format(date); }                                    ...
t_yapeng 发布于 9小时前 阅读 5

Canvas中的globalAlpha和globalCompositeOperation

1.globalAlpha 效果图: 代码: 2.globalCompositeOperation 效果图: 代码: globalCompositeOperation的11种取值
罗码码 发布于 10小时前 阅读 3

logback.xml 配置

<?xml version="1.0" encoding="UTF-8"?> <!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="10 seconds"> <!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> <property name="LOG_PATH" value="D:/log"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志输出编码 --> <layout class="ch.qos.logback.classic.PatternLayout"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </layout> </appender> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${LOG_PATH}/info.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%...
非想非非想 发布于 10小时前 阅读 2

【Java基础拾遗】Java位运算符

最近自己整理的,位运算符部分不知道有没有人感兴趣,贴出来互相学习,查漏补缺吧(文字版的贴出来比较乱,截图之)。  
RJKD 发布于 10小时前 阅读 3

linux救援模式

救援模式即rescue模式,主要用于系统无法进入的情况。 比如:grub损坏或者某一个配置文件修改出错。   如何使用rescue模式 具体操作如下: 1 光盘启动 1.1 首先检查光驱是否是开机启动。 具体方法:点击WMvare右下角的小光盘图标处,点击它,此时,会出现两个选项,选“设置”选项,会弹出“虚拟机设置”对话框,看下右侧的“设备状态”, 要保证两个对勾是打上的。 过程如图所示: 但此时,重启系统不会进入光驱启动界面,还需要设置一个WMvare的BIOS。 1.2 设置WMvare的BIOS操作如下: 关机Centos7,然后在VMware左侧中选中这台虚拟机并右击,从中选择“电源”--》“启动时进入BIOS”。如下图所示: 进入BIOS后,按右方向键,选择Boot,然后按-或+调节各个启动对象,有硬盘,光驱,网卡等,总之让CD-ROM在最前面,也就是让它第一个启动。最终结果如下图所示。 设置完后,按F10保存设置并退出。 2 进入resce模式 进入光驱启动界面,使用上下方向键选择Troubleshooting。如下图所示。 回车后,出现如下界面,使用向下方向键 选择rescue a CentOS Linux system. 连续按回车会出现如下所示界面。 其中有些提示。 初始系统在/mnt/sysimage下面。有4个选项。     这里选择第...
流逝将军 发布于 10小时前 阅读 3

Hystrix动态配置(zookeeper实现)

Hystrix实现动态配置的几种方案实现, 项目放在GitHub上
OrangeJoke 发布于 10小时前 阅读 3

合格前端系列第八弹-造一个属于自己的ui库

轮子总得造上一造~
qiangdada 发布于 10小时前 阅读 8

关于Fabric中的Orderer

还是从/home/yjm/go/src/github.com/hyperledger/fabric/orderer的main函数开始。 ``` logger.Infof("Starting %s", metadata.GetVersionInfo()) conf := config.Load() initializeLoggingLevel(conf) conf := config.Load() initializeLoggingLevel(conf) initializeProfilingService(conf) grpcServer := initializeGrpcServer(conf) conf := config.Load() initializeLoggingLevel(conf) initializeProfilingService(conf) grpcServer := initializeGrpcServer(conf) initializeLocalMsp(conf) signer := localmsp.NewSigner() manager := initializeMultiChainManager(conf, signer) server := NewServer(manager, signer) ab.RegisterAtomicBroadcastServer(grpcServer.Server(), server) logger.Info("Beginning to serve requests") grpcServer.Start() ``` 周末补上完整的...
火华社社长 发布于 10小时前 阅读 4

【CentOS 7架构】,LNMP模式介绍与MySQL安装#171214

> hellopasswd --- # LAMP架构 Linux+Apache(httpd)+MySQL+PHP # mysql和MariaDB介绍 - MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿美金),2009年sun公司被Oracle(甲骨文)公司收购(74亿美金) - MySQL官网https://www.mysql.com最新版本5.7GA/8.0DMR - MySQL5.6变化比较大,5.7性能上有很大提升 - MariaDB为MySQL的一个分支,官网https://mariadb.com/最新版本10.2 - MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领大部分原班人马创立。 - MariaDB5.5版本对应MySQL的5.5,10.0对应MySQL5.6 - Community社区版本,Enterprise企业版本,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本。 # 安装MySQL - MySQL的几个常用安装包:rpm、源码、二进制免编译 - cd /usr/local/ssrc - wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz - tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz - mv mysql-5.6.36-l...
hellopasswd 发布于 10小时前 阅读 4

如何愉快的使用MQ-详述各种功能场景

  消息队列(MQ)是一种不同应用程序之间(跨进程)的通信方法。应用程序通过写入和检索出入列队的数据(消息)来通信,而无需通过专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(Remote Procedure Call. RPC)的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。这样天然的就实现了异步的目标。那么MQ还有哪些功能场景呢。下面逐一介绍。 解耦 解耦.png MQ最直接的使用场景就是可以将两个系统进行解耦,比如我们的货款抵扣业务场景,用户生成订单发送MQ后立即返回,结算系统去消费该MQ进行用户账户金额的扣款。这样订单系统只需要关注把订单创建成功,最大可能的提高订单量,并且生成订单后立即返回用户。而结算系统重点关心的是账户金额的扣减,保证账户金额最终一致。这个场景里面还会涉及到重试幂等性问题,后面有介绍。 削峰填谷 还是以订单系统和结算系统场景为例,如果订单系统通过RPC框架来调用结算系统,在有高峰促销的情况下生成订单的量会非常大,而且由于生成订单的速度也非常快,这样势必会给结算系统造成系统压力,...
新栋BOOK 发布于 2天前 阅读 2769 评论 19 点赞 8

深度学习之视频摘要发展综述

现如今城市生活节奏越来越快,用户在浏览一些视频时,并不想花费大量的时间来看一个完整的视频。更多时候,用户只想知道这个视频最精华的信息,也是基于这种需求,谷阿莫等影视评论者才得到如此多的关注。此时,视频摘要就体现出其价值所在了。   什么是视频摘要?   视频摘要,就是以自动或半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段/帧。从摘要的技术处理过程来讲,视频摘要一般可以分成两种,静态视频摘要和动态视频摘要。现阶段,我们公司主要致力于静态视频摘要的研究。接下来就和大家说一下静态视频摘要。   什么是静态视频摘要?   静态视频摘要,又称为视频概要,即用一系列从原始视频流中抽取出来的静态语义单元来表示视频内容的技术。简单来说,就是在一段视频中提取出一些关键帧,通过将多个关键帧组合成视频摘要,使用户可以通过少量的关键帧快速浏览原始视频内容。进一步发展的话可以为用户提供快速的内容检索服务。   例如,公开课的视频中,提取出含有完整PPT的帧。我们将含有关键信息的所有帧提供给浏览者,可以使其在较短的时间内了解到较长视频的主要内容。又例如,将一个2小时的电影提取出其关键部分,...
图鸭科技研究员 发布于 4天前 阅读 808 点赞 2

kubernetes中部署DNS

* 先吐槽一下,最近研究k8s的dns,看了很多相关博客,发现很多都是一样的内容,大部分都是转载或者copy,也不验证一下就发出来,给我无形中挖了很多坑。再次先谴责一下这些人! * 开始正题! * 使用场景:ubuntu16.04, kubernetes1.4及以上, 集群没有搭建CA等认证!其他场景仅作参考! ## 1.为什么要部署DNS kubernetes 提供了 service 的概念可以通过 VIP(Service IP 是 virtual IP(VIP)) 访问 pod 提供的服务,但是在使用的时候还有一个问题:怎么知道某个应用的 VIP?比如我们有两个应用,一个 app,一个 是 db,每个应用使用 rc或deployment进行管理,并通过 service 暴露出端口提供服务。app 需要连接到 db 应用,我们只知道 db 应用的名称,但是并不知道它的 VIP 地址。这就涉及到了==服务发现==的问题了。 * 针对以上问题,k8s提供了三种==服务发现==的方法: ### 方法1.通过kubernetes 提供的 API 查询 该方法较为简单,但问题较多。首先每个应用都要在启动的时候编写查询依赖服务的逻辑,这本身就是重复和增加应用的复杂度;其次这也导致应用需要依赖 kubernetes,不能够单独部署和运行(当然如果通过增加配置选项也是可以做到的,但这又是增加复杂度)。 ### ...
蓝色雨全 发布于 6天前 阅读 973 评论 9 点赞 2 打赏 1

ElasticSearch单机部署多实例环境

ElasticSearch6.0.0
ssdut_buster 发布于 1周前 阅读 1426 评论 7

Vue中使用axios的一些注意点

1. 基本使用 现在我们的团队使用的基本都是axios发起请求,使用方式如下 在service.js文件中返回promise对象 import config from '@/config' import axios from 'axios' export default{ /*启用停用*/ setB2bStoreGoodsBlackUpOrDown(data) { return new Promise(function (resolve, reject) { const url = `${config.server.http}${config.server.host}/b2b-seller-admin/setStoreGoodsBlackUpOrDown` axios.post(url, data) .then(function (data) { resolve(data) }) .catch(function (error) { reject(error) }) }) }, /*一个接口查黑名单*/ getListB2bCanaleStoreGoodsBlacks(data) { return new Promise(function (resolve, reject) { const url = `${config.server.http}${config.server.host}/b2b-seller-admin/page/getListCanaleStoreGoodsBlacks` axios.post(url, data) .then(function (data) { resolve(data) ...
龙马行空 发布于 1周前 阅读 1464 评论 17 点赞 2

logback是怎么知道java代码的行数的?

使用logback,忽然想到这个问题,然后问了几个同事都没研究过,我来看看logback是如何知道的 打断点如下: stop in com.sql.mysql.sharding.plugin.ExecutorInterceptor.intercept stop in ch.qos.logback.classic.Logger.callAppenders stop in ch.qos.logback.core.encoder.LayoutWrappingEncoder.encode encode的java函数如下: public byte[] encode(E event) { String txt = layout.doLayout(event); return convertToBytes(txt); } 那么layout的值是啥呢? main[1] print layout layout = "ch.qos.logback.classic.PatternLayout("%level %date , %logger{36} [%file:%line] , Thread-[%thread] - %msg%n")" 就是我们自己定义的格式,好,继续往下走。 碰到了这个函数 ​ protected String writeLoopOnConverters(E event) { StringBuilder strBuilder = new StringBuilder(INTIAL_STRING_BUILDER_SIZE); Converter<E> c = head; while (c != null) { c.write(strBuilder, event); c = c.getNext(); } return strBuilder.toString(); } ​ 这里看来是做了一个字...
强子哥哥 发布于 1周前 阅读 1823 评论 16 点赞 7

Spring boot + LayIM + t-io 好友申请通知的实现

本文包含内容:用户主页面信息加载,绑定。好友申请,t-io服务端主动推送,layim消息盒子的数据绑定。
丶Pz 发布于 1周前 阅读 2917 评论 22 点赞 6

Sql优化器究竟帮你做了哪些工作?

关系型数据库的一大优势之一,用户无需关心数据的访问方式,那么优化器是如何做到的,我们要如何优化?
wier 发布于 1周前 阅读 351 评论 4 点赞 3

vue全面介绍

2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You)。 Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架。它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js;同时比起 React + Redux 相对复杂的架构,
爱敲代码的程序员 发布于 1周前 阅读 4279 评论 13 点赞 14

TensorFlow Serving在Kubernetes中的实践

本文介绍了TensorFlow Serving的配置,尤其是官方文档没作完整介绍的model version policy的配置,另外介绍了编译TensorFlow Serving时的优化实践以及在Kubernetes中的部署,以及使用时的注意事项。
WaltonWang 发布于 1周前 阅读 1147 评论 4 点赞 2

HTTPS连接过程以及中间人攻击劫持

一 、HTTPS连接过程及中间人攻击原理 https协议就是http+ssl协议,如下图所示为其连接过程:  1.https请求  客户端向服务端发送https请求;  2.生成公钥和私钥  服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容;  3.返回公钥  服务端将公钥(证书)返回给客户端,公钥里面包含有很多信息,比如证书的颁发机构、过期时间等等;  4.客户端验证公钥  客户端收到公钥之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密;  5.发送客户端密钥  客户端用服务端的公钥加密密钥,然后发送给服务端。  6.服务端收取密钥,对称加密内容  服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。  7.加密传输  服务端将经过加密的内容传输给客户端。  8.获取加密内容,解密  客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。 中间人劫持...
MengXS 发布于 2周前 阅读 2556 评论 6 点赞 10

Spring Cloud(一)服务的注册与发现(Eureka)

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
鹏磊 发布于 2周前 阅读 1202 评论 2

Spring Boot 定制与优化内置的Tomcat容器

通过定制与优化内置的Tomcat来提应用的服务性能。
Hanson_Q 发布于 2周前 阅读 3010 评论 10 点赞 12

DB——数据的读取和存储方式

数据库是我们常用的一些存储数据的方式,我们从读写来了解RDBMS的存取结构
wier 发布于 2周前 阅读 1484 评论 4 点赞 5

理解TCP/IP三次握手与四次挥手的正确姿势

背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声音,过一会儿之后才会恢复。 中间双方可能就要不断的确认网络是否恢复,但是有时候会: 她:“你可以听到了吗?” 我:“可以了,你呢?”、 她:“喂喂,你可以听到了吗?” 我:“可以了,我可以听到了,你呢?” 她:“你可以听到了吗?” ..... 这种情况很蛋疼,那么怎样才能找一个简单的办法,让两个人都确认自己可以听到对方的声音,对方也可以听到自己的声音呢? 注:以下情节纯属虚构   方案 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。 举个日常例子,打电话时我们对话如下:   对应为客户端与服务器之间的通信: 于是有了如下对话: 我:1+1等于几? 她:2,2+2等于几? 我:4 首先两个人约定协议 1.感觉网络情况不对的时候,任何一方都可以发起询问 2.任何情况下,若发起询问后5秒还没收到...
Champin 发布于 2周前 阅读 2777 评论 8 点赞 9

JVM与字节码——类的方法区模型

介绍一个类从Java编码到Java bytecode再到JVM运行的过程,在介绍过程中分析JVM方法区(非堆)的存储模型。
随风溜达的向日葵 发布于 2周前 阅读 2485 评论 11 点赞 9

分布式实时日志分析解决方案ELK部署架构

一、概述 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案。本文将会介绍ELK常见的架构以及相关问题解决。 Filebeat:Filebeat是一款轻量级,占用服务资源非常少的数据收集引擎,它是ELK家族的新成员,可以代替Logstash作为在应用服务器端的日志收集引擎,支持将收集到的数据输出到Kafka,Redis等队列。 Logstash:数据收集引擎,相较于Filebeat比较重量级,但它集成了大量的插件,支持丰富的数据源收集,对收集的数据可以过滤,分析,格式化日志格式。 Elasticsearch:分布式数据搜索引擎,基于Apache Lucene实现,可集群,提供数据的集中式存储,分析,以及强大的数据搜索和聚合功能。 Kibana:数据的可视化平台,通过该web平台可以实时的查看 Elasticsearch 中的相关数据,并提供了丰富的图表统计功能。 二、ELK常见部署架构 2.1、Logstash作为日志收集器 这种架构是比较原始的部署架构,在各应用服务器端分别部署一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、分析、格式化处理后发送至Elasticsearch存储,最后使用Kibana进...
FEINIK 发布于 2周前 阅读 4841 评论 6 点赞 4

Kotlin Primer·第七章·协程库(上篇)

本篇只讲了协程库的使用。还有中篇讲协程的启动和切换实现原理,下篇核心讲解kotlin协程在JVM层的实现原理。 这可能是至今为止最详细实用的 Kotlin 协程库详解了。
kymjs张涛 发布于 3周前 阅读 1354

Redis 笔记系列(九)——Redis的持久化之AOF

前文我们介绍了redis持久化及其中的一种方法——RDB。本文将介绍另一种方式——AOF。 请大家带着三个问题来思考这两种方法: 1. 如果一个系统中同时存在AOF和RDB,它们是冲突还是协作? 2. 为什么AOF会在RDB之后产生出现? 3. 相比于RDB,本文介绍的AOF会有什么优缺点?   AOF(Append Only File)     官网介绍      官网的原文介绍如下: AOF advantages Using AOF Redis is much more durable: you can have different fsync policies: no fsync at all, fsync every second, fsync at every query. With the default policy of fsync every second write performances are still great (fsync is performed using a background thread and the main thread will try hard to perform writes when no fsync is in progress.) but you can only lose one second worth of writes. The AOF log is an append only log, so there are no seeks, nor corruption problems if there is a power outage. Even if the log ends with an half-written command for some reason (disk full or other reasons) the redis-check-aof tool is able to fix it easily. Redis i...
HappyBKs 发布于 3周前 阅读 2450 评论 5 点赞 7

从0开始搭建自动部署环境

# 从0开始搭建自动部署环境 ## 前言 从Docker改变使用动态库后,DooD不再可行,而Dind依然可行。针对此改变,重新整理并记录自动部署环境配置步骤。 此环境是实现微服务自动部署的基础,使用jenkins持续集成工具,并内置了java和maven,并实现了容器内运行Docker命令的功能。 ## 软件环境 - 宿主机win10 - 虚拟机CentOS-7-x86_64-Minimal-1708 - Docker 17.09.0-ce - apache-maven-3.5.2 - jdk 1.8.0_151 - jenkins 2.73.3 ## 虚拟机安装配置 ### 1. 安装Docker 参考官方教程[Get Docker CE for CentOS](https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository) 可选项:更换源。官方源下载Docker可能很慢,更换成国内的Docker源,比如阿里云的Docker源[https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo) ### 2. 启动Docker并设置开机自启 ``` $ sudo service docker start $ sudo chkconfig docker on ``` ### 3. 更换Docker镜像源 从Docker官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器[地址](https://cr.console.aliyun.com/?spm=5176.100...
五毛程序员 发布于 3周前 阅读 2200 评论 2 点赞 2
顶部