利发国际官方网

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

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
开源中国 - 找到您想要的开源项目,分享和交流 - 利发国际官网-利发国际官方网-利发国际官方网站

精彩阅读

  1. 最新推荐

  2. 今日热门

  3. 本周热门

  4. 每日一博

  5. 最新文章

微服务架构项目实战:Spring Boot 如何创建简单的 REST 服务

你将学习 什么是 REST 服务? 如何使用 Spring Initializr 引导创建 Rest 服务应用程序? 如何创建获取 REST 服务以检索学生注册的课程? 如何为学生注册课程创建 Post REST 服务? 如何利用 postman 执行 rest 服务? 本教程使用的 rest 服务 在本教程中,我们将使用适当的 URI 和 HTTP 方法创建三个服务: @GetMapping(“/ students / {studentId} / courses”):您可以使用请求方法 Get 和示例 uri / students / Student1 / courses 来查询特定学生已注册的课程。 @GetMapping(“/students/{studentId}/courses/{courseId}”):您可以使用请求方法 Get 和示例 uri / students / Student1 / courses / Course1 获取特定学生的特定课程。 @PostMapping(“/students/{studentId}/courses”) :您可以通过向 UURI /students/Student1/courses 发送 POST 请求来为学生注册一门课程 您将需要的工具 Maven 3.0+ 是您的构建工具 你最喜欢的 IDE。我们使用 Eclipse。 JDK 1.8+ 完整的 spring booot rest Maven 项目代码示例子 我们的 Github 存储库包含所有代码示例 - https://github.com/in28minutes/in28minutes.github.io/tree/master/code-zip-files 带有单元和集成测试的 ...
烂猪皮 发布于 9小时前 阅读 18 评论 1

优化 | Redis AOF重写导致的内存问题

Redis突然内存爆涨,直到服务器内存不足半夜报警,是天灾还是人祸?
o翡翠谷o 发布于 9小时前 阅读 17 评论 1

阿里架构师详解虚拟机工作原理

一、类加载器 首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入 [java] view plain copy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码的时候,开发工具已经帮你完成了上述的编译工作,因此你可以在对应的目录下看到class文件。此时的class文件依然是保存在硬盘中,因此,当你在命令行中运行 [java] view plain copy java YourClassName 就完成了上面红色方框中的工作。JRE的来加载器从硬盘中读取class文件,载入到系统分配给JVM的内存区域--运行数据区(Runtime Data Areas). 然后执行引擎解释或者编译类文件,转化成特定CPU的机器码,CPU执行机器码,至此完成整个过程。 接下来就重点研究一下类加载器究竟为何物?又是如何工作的? 首先看一下来加载器的一些特点,有点抽象,不过总有帮助的。 》》层级结构 类加载器被组织成一种层级结构关系,也就是父子关系。其中,Bootstrap是所有类加载器的父亲。如下图所示: --Bootstrap class loader: 当运行java虚拟机时,这个类加载器被创建,它加...
权律二啊- 发布于 15小时前 阅读 336 评论 7

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

java基础(一) 深入解析基本类型

### 一、基本类型的简介 **基本类型的两条准则:** - Java中,如果对整数不指定类型,默认时int类型,对小数不指定类型,默认是double类型。 - 基本类型由小到大,可以自动转换,但是由大到小,则需要强制类型转换。 **所占的字节数:** byte: 1个字节; char: 2个字节; short: 2个字节; int: 4个字节; long: 8个字节; float: 4个字节;(6位小数,指数是:10^-38~10^38; 范围:) double: 8个字节; char:Java中用 "\u四位十六进制的数字 (即使在注释中出现\u,后面如果 跟的不是4个16进制的数字,也会报错)"表示将字符转换成对应的unicode编 码;也可以用字符来赋值如: char c="\u0000" ,char的默认初始化值,unicode的null字符 **基本类型的后缀:** long : l 或 L float: f 或 F; double: d 或 D ### 二、类型转换   正如前面所说的,类型由大到小,是必需强制转换。但这并不意味着需要用户手动强制转换 —— 也就是 隐式转换。隐式转换 说的透彻点就是由编译器来进行强制转换,不需要用户再去写强制转换的代码。下面的前两个小点所说的便是特殊的隐式类型转换。 本小节所讨论的类型转换是不包括 类型由小到大的转换,讨论的是其他比较容易让人迷惑...
sihailoveyan 发布于 18小时前 阅读 217

手把手教你打造一个可视化接口自动化测试系统

现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都可以称之为接口,面临着如此庞大的接口数据,如果更好的管理和测试他们都是一个比较头疼的问题,更主要的是很多业务场景是需要多个接口进行联调的,因此在接口开发完成后,一轮自动化测试能快速反馈出当前系统的状况,面对这样的需求,一个对测试人员友好的可视化接口自动化测试系统就显得必不可少了。那么,我们今天就来和大家聊聊如何实现一个小型的http接口自动化测试系统! 我们拿DOClever 做为这套系统的范本进行阐述,因为它是开源的,源码随时可以从GitHub和OSChina上获取,同时,这套系统内置了完整的自动化测试框架,从无需一行代码的UI测试用例编写,到更强大更灵活的代码模式,都提供了很友好的支持。 系统需求: 1.   能在一个测试用例里可以对一个接口自由编辑其入参,运行并判断出参是否正确,同时可以查看该接口完整的输入输出数据 2.   能在一个测试用例里可以对一组接口进行测试,自由调整他们的执行顺序,并根据上一接口的出参作为下一接口的入参条件。 3.  ...
ansun123 发布于 19小时前 阅读 168

基于Docker的MySQL主从数据库搭建

最初的想法是为了做数据备份,但实际作用远不止于此,菜鸟一枚,仅作为记录。
Raphael_Zhang 发布于 19小时前 阅读 158

老旧Java Web应用实现增量自动化部署的一个方案

本文介绍的方案主要针对老旧Java Web应用的增量部署,全量部署实现起来更简单。 其他关键词:PaaS、Git、自动化部署、持续集成、jgit比较两个分支的差异
joock 发布于 20小时前 阅读 157

Python标准库笔记(8) — pprint模块

> `struct`模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串。   该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换。 这可以用于处理存储在文件中或从网络连接中存储的二进制数据,以及其他数据源。 ### 1. 模块函数和Struct类   它除了提供一个`Struct`类之外,还有许多模块级的函数用于处理结构化的值。这里有个格式符(Format specifiers)的概念,是指从字符串格式转换为已编译的表示形式,类似于正则表达式的处理方式。通常实例化`Struct`类,调用类方法来完成转换,比直接调用模块函数有效的多。下面的例子都是使用`Struct`类。 ### 2. Packing(打包)和Unpacking(解包)   `Struct`支持将数据packing(打包)成字符串,并能从字符串中逆向unpacking(解压)出数据。   在本例中,格式指定器(specifier)需要一个整型或长整型,一个两个字节的string,和一个浮点数。格式符中的空格用于分隔各个指示器(indicators),在编译格式时会被忽略。 ```python import struct import binascii values = (1, 'ab'.encode('utf-8'), 2.7) s = struct.Struct('I 2s f') packed_data = s.pack(*values) print('原始值:', val...
j_hao104 发布于 20小时前 阅读 100

高阶爬虫实战:破解极验滑动验证码

今天给大家带来的是极验验证码的selenium破解之法,是不是有点小激动呢,小伙伴们等不及了,让我们赶紧直入主题吧。 虎X网注册 这次我们是拿虎X开刀,注册账号的时候需要滑动图片到缺口位置,这种验证码我们现在也经常遇到,这个就不用详细介绍了吧 针对这种验证码我们首先确定了使用selenium模拟滑动破解方式,selenium鼠标移动点击拖动都比较简单,那么问题就在于拖动多少距离,眼睛看起来很直观,但是程序怎么获取呢?利用图像识别……,额,这个只能想想了吧。不如看看网页源码或者请求信息,看看有没有有效的信息。 查看网页信息 鼠标右键点击到图片上,查看元素 这一瞬间的图片,还好我二十几年的麒麟臂没白练,我们看看元素查看到的都是什么东西 这看起来有点奇怪哦,有个图片链接,还有位置信息,而且还那么多,先把图片链接拷贝到浏览器里访问下看看 WTF,这是什么鬼?注意到那个像猪尾巴一样的6了吗?还有那个小箭头,跟上面完整图片对比一下,发现把箭头挪动到小6旁边,猪尾巴就成功了。当然你仔细观察的话,还有其他的比如文字也是类似。那么我们可以确认这张图片应该是被打乱的,如果我们可以把它拼起来,是不是就离计算缺口位置比较近了。现在我们应该要注意...
千龍 发布于 20小时前 阅读 295 评论 3

Sass指南:Sass前世今生和如何安装以及使用Webstorm直接支持编写

Sass简易指南   什么是Css预处理器?   CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。   通俗的说,“CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题”,例如你可以在 CSS 中使用变量、简单的逻辑程序、函数(如右侧代码编辑器中就使用了变量$color)等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。   CSS 预处理器语言: - Sass(SCSS) - LESS - Stylus - Turbine - Swithch CSS - CSS Cacheer - DT CSS   什么是 Sass?   l  官方定义 Sass 是一门高于 CSS 的元语言,它能用来清晰地、结构化地描述文件样式,有着比普通 CSS 更加强大的功能。 Sass 能够提供更简洁、更优雅的语法,同时提供多种功能来创建可维护和管理的样式表。   l  Sass 前世今生 Sass 是最早的 CSS 预处理语言,有比 LESS 更为强大的功能,不过其一开始的缩进式...
GeCoder 发布于 20小时前 阅读 75

ActiveMQ关于WSS的配置(SSL)

ActiveMQ配置wss的一项记录,查阅了大把资料发现没能解决问题,耗费了我一天时间,后来自行思考后发现,原来确实是这样;在此分享出来还是希望需要的同学少走弯路
葛传艺 发布于 20小时前 阅读 74

你离BAT之间,只差这一套Java面试题

最近,各大公司开始了春招,很多人已经开始在准备面试了,特地来总结下初中级程序员应该掌握的面试题目。这篇面试指南,只适用于初中级程序员,其中不涉及分布式等问题。关于中高级的程序员问题,我后面可能再出一篇文章。 对于一个初中级程序员来说,面试问题不仅仅涉及到Java语言,还会包括很多其他知识,比如计算机基础知识(数据结构、计算机网络、操作系统等)、C语言基础、Java底层知识以及一些框架相关知识等。本文几乎覆盖到了所有领域。 计算机基础知识 C语言基础 Java基础 Java高级 Java Web 设计模式 知识的综合能力 工具使用 项目相关 技术热情 表达能力 思考方式 其他 推荐阅读 还有,我知道很多人会问关于这些题目的答案问题。答案我都有,由于篇幅有限没办法直接贴上来。这些题目的答案我会在我的公众号及知识星球中给出,感谢关注。 为了方便,我把他们分了类,有一些是必看的,我用!标注,有一些进阶型的我用%标注,有一些需要了解的,我用?标注。 必会关键字 void byte int long char short float double String StringBuffer StringBuilder Array CollectionCollections List ArrayList LinkedList Vector Set HashMap TreeMap L...
Java工程师-Distance 发布于 21小时前 阅读 372 点赞 1

Python中的迭代器、生成式、生成器及装饰器

1.迭代器 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比较大的数据集合,节省内存 生成一个迭代器:   >>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration   2.生成式和生成器 列表生成式格式: [exp for val in collection if condition] [x*x for x in xrange(10) if x*x%2 == 0] 生成...
枫叶云 发布于 1天前 阅读 139 点赞 1

CNN进化史

卷积神经网络(CNN)近年来取得了长足的发展,是深度学习中的一颗耀眼明珠。CNN不仅能用来对图像进行分类,还在图像分割(目标检测)任务中有着广泛的应用。CNN已经成为了图像分类的黄金标准,一直在不断的发展和改进。 刘昕博士总结了CNN的演化历史,如下图所示:   CNN的起点是神经认知机模型,此时已经出现了卷积结构,经典的LeNet诞生于1998年。然而之后CNN的锋芒开始被SVM等模型盖过。随着ReLU、dropout的提出,以及GPU和大数据带来的历史机遇,CNN在2012年迎来了历史突破:AlexNet。随后几年,CNN呈现爆发式发展,各种CNN模型涌现出来。   CNN的主要演进方向如下: 1、网络结构加深 2、加强卷积功能 3、从分类到检测 4、新增功能模块 下图是CNN几个经典模型(AlexNet、VGG、NIN、GoogLeNet、ResNet)的对比图,可见网络层次越来越深、结构越来越复杂,当然模型效果也是越来越好:   本博客通过一系列的“大话深度学习”文章,全面详细地介绍了CNN进化史各个阶段的里程碑成果。 1、小白讲卷积:大话卷积神经网络(CNN)   2、卷积初尝试:大话CNN经典模型 LeNet   3、历史の突破:大话CNN经典模型 AlexNet   4、网络再加深:大话CNN经典模型VGGNet   5、增强卷...
雪饼 发布于 1天前 阅读 136

在浏览器中进行深度学习:TensorFlow.js (三)更多的基本模型

在上一次的博客中,我们介绍了如果实现一个最简单的线性回归的模型,今天我们来看一下,如何利用同样的思路实现更多的模型。 逻辑回归 逻辑回归并非只能实现二分类,我们下面就看一个利用逻辑回归(Multinomial logistic regression)实现多分类的例子。 这个是训练数据: 这个是分类的结果。我们可以看到对某些点,蓝色和橙色,分类效果比较好;而对于绿色和红色的点,分类的结果不是很理想。 代码在这里: function logistic_regression(train_data, train_label) { const numIterations = 100; const learningRate = 0.1; const optimizer = tf.train.adam(learningRate); //Caculate how many category do we have const number_of_labels = Array.from(new Set(train_label)).length; const number_of_data = train_label.length; const w = tf.variable(tf.zeros([2,number_of_labels])); const b = tf.variable(tf.zeros([number_of_labels])); const train_x = tf.tensor2d(train_data); const train_y = tf.tensor1d(train_label); function predict(x) { return tf.softmax(tf.add(tf.matMul(x, w),b)); } function lo...
naughty 发布于 2天前 阅读 218

spqrk通过rdd和dataset实现相同sql操作

待分析的数据文件格式,内容为nginx的日志记录,内容已经被处理过,已经转为只记录ip和url的txt文件,内容如下: rdd读取txt文件: public static void rdd(){ SparkConf conf = new SparkConf().setAppName("name_rdd").setMaster("local[4]"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> logRdd = sc.textFile(textFile); JavaRDD<LogInfo> infoRdd = logRdd.map(new Function<String, LogInfo>() { public LogInfo call(String line) throws Exception{ String[] strs = line.split(" "); LogInfo log = new LogInfo(); if(strs.length == 2){ //LogInfo log = new LogInfo(); log.setIp(strs[0]); log.setUrl(strs[1]); } else{ log.setIp(""); log.setUrl(""); } return log; } }); // rdd1(infoRdd); // rdd2(infoRdd); /...
penngo 发布于 2天前 阅读 122 点赞 1

Elasticsearch source filter检索案例分享

Elasticsearch source filter检索案例分享 1.准备工作 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端 先理解一下es source filter作用:通过在_source中指定includes和excludes,控制查询结果中哪些source字段要返回、哪些source字段不需要返回,source filter的dsl定义语法如下: ​​​​​​​{     "_source": {         "includes": [ "obj1.*", "obj2.*" ],         "excludes": [ "*.description" ]     },     "query" : {         "term" : { "user" : "kimchy" }     } } 本文演示动态从外部传入includes和excludes实现source filter功能,适用于includes和excludes动态变化的source filter场景。 2.定义source filter dsl语句 首先,在DocumentCRUD 案例对应的dsl配置文件esmapper/demo.xml中添加searchSourceFilter: <property name="searchSourceFilter"> <![CDATA[{ #if($includes || $excludes) ## 只有指定了includes或者excludes才需要添加source filter "_source": { #if($includes ) ##设置includes filter "includes...
bboss 发布于 2天前 阅读 187

区块链面试招聘中可能会被问到的40个问题。

1. 问:你认为区块链技术中的区块意味着什么? 区块链由所有金融交易的信息组成。一个块只不过是一个记录列表。当这些列表相互结合时,它们被称为区块链。例如,一个组织有100个分类账簿,其中的组合被称为区块链,单个分类账将被视为一个区块。 2. 问:为什么区块链是一种值得信赖的方法 有很多原因,区块链可以被信任。第一个原因是它与其他商业应用程序有良好的兼容性,因为它是开源的。其次是它的安全性,因为它是为了在线交易而开发的,所以开发人员在保证安全性的同时也特别关注它的数据同步。由于其拥有的业务类型无关,所以在选择的时候区别链很容易地被考虑。 3. 问:区块链中是否有可能从网络中删除一个或多个区块? 当然可以,如果只考虑该在线分类帐的特定部分的时候。借助默认选项和过滤器,可以轻松完成此任务,而不需要付出太多。 4. 问:你对区块链了解多少? 这是一种实际上为比特币设计的技术,后来因为监控和记录网络上所有金融交易而带来的多种好处而获得了大量的推广。这是一种值得信赖的方法,目前情况下有很多组织正在使用它。由于一切都是十分安全的,并且它是一种开源方式,所以从长远来看,它可以轻松获得大家的信任。 5. 问:区块链方法如何识别...
笔阁 发布于 2天前 阅读 443 评论 1

java基础(八) 深入解析常量池与装拆箱机制

### 引言   本文将介绍常量池 与 装箱拆箱机制,之所以将两者合在一起介绍,是因为网上不少文章在谈到常量池时,将包装类的缓存机制,java常量池,不加区别地混在一起讨论,更有甚者完全将这两者视为一个整体,给初学者带来不少困扰,我就是过来的。同时,也因为包装类的缓存 与 字符串常量池的思想是一样的,很容易混淆,但是实现方式是不一样的。 ### 一、常量池 在介绍常量池前,先来介绍一下常量、字面常量、符号常量的定义。 **常量** 可分为 **字面常量**(也称为直接常量)和 **符号常量**。 **字面常量**: 是指在程序中无需预先定义就可使用的数字、字符、boolen值、字符串等。简单的说,就是确定值的本身。如 10,2L,2.3f,3.5,“hello”,'a',true、false、null 等等。 **符号常量**: 是指在程序中用标识符预先定义的,其值在程序中不可改变的量。如 `final int a = 5`; **常量池**   常量池引入的 **目的** 是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。这是一种 享元模式 的实现。 ## 二、 java常量池 Java的常量池可以细分为以下三类: - 量池,编译阶段) - 运行时常量池(又称动态常量池,运行阶段) - 字符串常量池(全局...
sihailoveyan 发布于 2天前 阅读 309

NVIDIA/k8s-device-plugin源码分析

本文主要对NVIDIA/k8s-device-plugin v1.10的源码进行分析,包括插件的启动、停止、注册、gRPC Server的实现,及其基于Kubernetes device plugin v1beta1的ListAndWatch、Allocate接口实现细节等内容。
WaltonWang 发布于 2天前 阅读 197

小白接口,什么鬼?

最近,听闻江湖上出了一个社会接口,也有不少同学已经开始在使用。那就是——小白接口。小白接口,到底是个怎样的冬冬呢?下面将快速来了解下。   来自官网的介绍 先来看下官网本身的说明。 小白接口官网(居然支持HTTPS,第一印象不错):https://www.okayapi.com/ 它的Slogan是:小白接口,服务大众。 它的LOGO:   说白了,小白接口就是提供了一套通用的接口服务,可以帮助客户端应用进行快速开发。   举个粟子 对于非技术的同学,我们来举个粟子,就很容易理解了。假设,在某个地方,你有一个戒备森严的仓库,里面放着很多你的宝贝。(以下是原始阶段的仓库,你还可升级到工业时代、现代化版更强大的版本) 而作为老板的你,当需要取某样东西时,不需要亲力亲为,只需要吩咐随时待命的快递小哥,然后快递小哥就会秉着“使命必达”的精神,跑到仓库取到你想要的东西然后送到你的手上。既然是戒备森严的仓库,那就意味着不是任何人都可随便出入的。哪怕是快递小哥也一样。因此,每次下达命令去仓库取件时,都必须附上你的签名。 这里的快递小哥,实际上就是小白接口提供的各种接口服务,每个接口实现的功能都不一样,返回的数据也不一样。而仓库就是小白接口提供的云端...
暗夜在火星 发布于 7小时前 阅读 15

Python将PDF文件转换成PNG的方案

目前最靠谱的是基于 mupdf 的 Python 绑定:  https://github.com/rk700/PyMuPDF  demo地址:  https://github.com/rk700/PyMuPDF/blob/master/demo/demo.py 安装: 到 https://pypi.org/project/PyMuPDF/#files 下载操作系统对应的安装文件 下载完成后,使用pip安装 然后就可以跑代码了.... 将PDF文件转换成PNG的代码: import fitz import sys doc = fitz.open('demo.pdf') for pg in range(doc.pageCount): page = doc[pg] zoom = int(100) rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) # create raster image of page (non-transparent) pm = page.getPixmap(matrix=trans, alpha=False) # write a PNG image of the page pm.writePNG('%s.png' % pg)  ...
乐_然 发布于 7小时前 阅读 4

Vue-cli(四) 项目中引入Axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止 CSRF/XSRF 安装Axios 我们直接使用npm install来进行安装。 npm install axios --save 由于axios是需要打包到生产环境中的,所以我们使用--save来进行安装。 也可以选择使用cnpm来安装,加快安装速度。 引入Axios 只需要在需要的vue文件中引入axios就可以。 import axios from 'axios' 使用 发送一个GET请求 //通过给定的ID来发送请求 axios.get('/user?ID=12345') .then(function(response){ console.log(response); }) .catch(function(err){ console.log(err); }); //以上请求也可以通过这种方式来发送 axios.get('/user',{ params:{ ID:12345 } }) .then(function(response){ console.log(response); }) .catch(function(err){ console.log(err); }); 发送一个POST请求 axios.post('/user',{ firstName:'Fred', lastName:'Flintstone' }) .then(function(res){ console.log(res); }) .catch(funct...
阿刚ABC 发布于 7小时前 阅读 4

Oracle逻辑备份/还原的三种模式

ORACLE数据库有两类备份方法,一是物理备份,二是逻辑备份。逻辑备份不但备份简单,而且可以不需要外部存储设备。
walkwithdream 发布于 7小时前 阅读 4

73款阿里巴巴利发国际官方网详解!

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

python:map,apply,mapapply区别

apply:可作用与Series,也可以作用DataFrame http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html  作用于Series *data Cabin Fare Age 0 Acd 7.8292 34.5 1 Vafe 7.0000 47.0 2 Cfwrw 9.6875 62.0 3 Rfdf 8.6625 27.0 4 Mfdf 12.2875 22.0 *data['cabin']=data['Cabin'].apply(lambda x:x[0]) *data['cabin'] 0 A 1 V 2 C 3 R 4 M 作用与DataFrame *data[['Fare','Age']].apply(lambda x:x.max()-x.min()) Fare 5.2875 Age 40.0000 map只可作用于Series http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html *data['cabin1'] = data['Cabin'].map(lambda x:x[0]) *data['cabin1'] 0 A 1 V 2 C 3 R 4 M *data[['Fare','Age']].map(lambda x:x.max()-x.min()) AttributeError: 'DataFrame' object has no attribute 'map' #还可以用作替换 *x = pd.Series([0,1,2], index=['one', 'two', 'three']) *y = pd.Series(['foo', 'bar', 'baz'], index=[0,1,2]) *x.map(y) #x的值与y的index 值相同,可将替换,不同,以NaN填充 one foo two bar three...
从模仿到独立思考 发布于 6小时前 阅读 4

Scala2.10.6 Intellij2018.1.1 Vmware12

环境: 宿主机win7+Vmware12+Win10虚拟机 一、Intellij2018.1.1下载 1、先安装Intellij2018.1.1最新版,旗舰版下载地址,进入到这个页面后,有2种方法可以下载 1.1、点击Download,就会自动下载。 1.2、直接点击exe. 以上,如下图所示: 1.3、约500M,我的是电信宽带,下载速度非常快,差不多5分钟就下载完成了。 2、安装。直接回车即可。 3、激活。License Server直接填:http://idea.congm.in/ 二、Scala下载 2.1、访问官网scala-lang.org 2.2、2.10.6下载链接 2.3、电信下载速度还可以,好像也是5分钟左右 2.4、安装。msi直接双击即可。 以上如图所示 三、安装Scala Intellij插件 有2种方式,一种是通过intellij直接联网下载,不过超级慢,真是耽误时间。另一种是通过浏览器下载,这个还能忍受,不过也要15分钟。最好的办法是记住文件名,然后在baidu上搜索。我已经传到百度云上了。 3.1、法1直接从intellij官网上下载,如下图所示   注意事项 1、如何将宿主机的软件搞到虚拟机中?在win10虚拟机上新加一个共享目录,再新建一个用户germmy,专门给共享服务使用。-当然,较为高级的办法是安装toolbox,直接拖拽即可。 参考资料 1、激活教程 2、win10配置java环境变量  3、...
Germmy 发布于 6小时前 阅读 4

Vue-router(三) 参数传递

开发中,参数的传递是个最基本的业务需求。通过URL地址来传递参数是一个形式,这节课我们就看看vue-router为我们提供了那些传递参数的功能。 一、用name传递参数 name传值是如何传递,共计两步就可以实现: 在路由文件src/router/index.js里配置name属性。注意,如果有子路由,必须配置到子路由的name属性。 routes: [ { path: '/', name: 'Hello', component: Hello } ] 模板里(src/App.vue)用$router.name的形势接收,比如直接在模板中显示: <p>{{ $route.name}}</p> 使用name传递项目中多数传参是不用使用,多数会通过下面介绍的方式传递。 二、通过<router-link> 标签中的to传参 用<router-link>标签中的to属性进行传参,需要您注意的是这里的to要进行一个绑定,写成:to。先来看一下这种传参方法的基本语法: <router-link :to="{name:xxx,params:{key:value}}">valueString</router-link> 这里的to前边是带冒号的,然后后边跟的是一个对象形势的字符串. name:就是我们在路由配置文件中起的name值。 params:就是我们要传的参数,它也是对象形势,在对象里可以传递多个值。 了解基本的语法后,我们改造一下我们的src/App.vue里的<router...
阿刚ABC 发布于 7小时前 阅读 3

缓存穿透与缓存雪崩

缓存穿透 什么是缓存穿透? 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。   如何避免? 1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。 2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。 3: 即便DB查询结果为空,也可以将这个key的缓存值设为null,以减少缓存的压力。   缓存雪崩 什么是缓存雪崩? 当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。 如何避免? 1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。 2:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。 3:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期(此点为补充) A.根据业务统计的维度或是场...
vinci321 发布于 7小时前 阅读 3

使用卷积神经网络进行图片分类

https://blog.csdn.net/oxuzhenyi/article/details/73480448 卷积神经网络原理 一、实验介绍 1.1 实验内容 本课程将会先带你理解卷积神经网络的原理,了解卷积神经网络的一些特性。然后动手使用caffe深度学习框架训练一个卷积神经网络模型,并用训练好的模型进行图片分类。 学习本课程之前,请先学习课程814 使用python实现深度神经网络以了解必要的基本概念,本实验中涉及到的深度学习基本概念将不会再次阐述。同时建议学习课程744 深度学习初探——入门DL主流框架(该课为训练营课程)中的caffe相关部分,但本课程中涉及到caffe的内容也会尽量讲解。   本实验作为本课程的第一次实验,将会向大家讲解卷积神经网络的相关基本原理。除非你已经知道什么是卷积神经网络,否则我强烈建议你仔细学习本次实验,理解原理将非常有助于你在实际问题中合理地使用卷积神经网络。 1.2 实验知识点 卷积神经网络的结构 1.3 先学课程 814 使用python实现深度神经网络(必学,否则可能无法理解本课程中的一些概念) 744 深度学习初探——入门DL主流框架(选学) 1.4 实验环境 python 2.7 caffe 1.0.0 (实验楼环境中已经预先安装) 二、实验步骤 2.1 什么是“卷积” 在课程814 使用python实现深度...
tantexian 发布于 7小时前 阅读 3

cockroachDB 设计readme 中文版

关于 本文档是 Spencer Kimball 在 2014 年早期写的最初的设计文档的一个更新版。 概述 CockroachDB 是一个分布式 SQL 数据库,其首要设计目标是可扩展性,强一致性和生存性。 CockroachDB 的目标是,以最小的延迟扰乱且不需手动干预,而能够容忍磁盘、计算机,机架,甚至 数据中心的失效。CockroachDB 节点是对称的;一个设计目标是以最小的配置且不需要额外的依赖同质部署(一个二进制文件)。   数据库客户端的入口点是 SQL 界面。一个CockroachDB 集群中的每个节点都可以作为一个客户端 SQL 网关。 客户端 SQL 网关将客户端 SQL 语句转换为键-值(KV)操作并执行,如果需要,网关会发布到整个集群, 并返回结果给客户端。CockroachDB 实现了一个单一的、巨大的、排序的映射,映射从键到值,其中键值 都是字节串。   键值映射在逻辑上由称为域(域)的键空间的小片段构成。每个域由存储在本地的 KV 存储引擎(我们使用 RocksDB,LevelDB 的一个变种)中的 数据支持。域数据被复制到数量可配置的其它 CockroachDB 节点上。域被合并和分裂,以维持一个目标尺寸, 默认为64M。相对小的尺寸有利于修复和再平衡,以处理节点失效、新的容量,甚至读/写负载。然而,尺寸 必须...
易野 发布于 3个月前 阅读 61

node axios 使用

https://www.npmjs.com/package/axios 简单例子 返回的是一个promise,异步的话需要使用await 响应的结构 { // `data` 由服务器提供的响应 data: {}, // `status` 来自服务器响应的 HTTP 状态码 status: 200, // `statusText` 来自服务器响应的 HTTP 状态信息 statusText: 'OK', // `headers` 服务器响应的头 headers: {}, // `config` 是为请求提供的配置信息 config: {} } let axios = require('axios') axios.defaults.baseURL = 'http://www.ahaoboy.cn' let res = axios.get('/get_hot').then( (res) => { console.log('success', res.data) }, (err) => { console.log('err', err) } ) console.log(res)   常用api https://www.kancloud.cn/yunye/axios/234845 执行 GET 请求 // 为给定 ID 的 user 创建请求 axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); // 可选地,上面的请求可以这样做 axios.get('/user', { params: { ID: 12345 } }) .then(function (response) ...
阿豪boy 发布于 2个月前 阅读 47

Spring Boot 与 Kotlin 使用MongoDB数据库

《Spring Boot 与 kotlin 实战》之使用MongoDB数据库
quanke_ 发布于 3个月前 阅读 211 评论 1

CentOS 7.4 编译boost 1.66

1. 下载最新的 boost_1_66_0.tar.bz2   2. 解压: tar xf boost_1_66_0.tar.bz2 cd boost_1_66_0   3. 编译 boost: bash bootstrap.sh ./b2
MichaelShu 发布于 3个月前 阅读 49

Vagrant入门

Vagrant入门
yysue 发布于 2个月前 阅读 18

Nodejs在Debian和Ubuntu上安装

Nodejs on Debian and Ubuntu based Linux distributions Also including: Linux Mint, Linux Mint Debian Edition (LMDE), elementaryOS, bash on Windows and others. Node.js is available from the NodeSource Debian and Ubuntu binary distributions repository (formerly Chris Lea's Launchpad PPA). Support for this repository, along with its scripts, can be found on GitHub at nodesource/distributions. NOTE: If you are using Ubuntu Precise or Debian Wheezy, you might want to read about running Node.js >= 6.x on older distros. curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs Alternatively, for Node.js 9: curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - sudo apt-get install -y nodejs Optional: install build tools To compile and install native addons from npm you may also need to install build tools: sudo apt-get install -y build-essential Available architectures: i386 (32-bit) amd64 (64-bit) armhf (ARM 32-bit hard-float, ARMv7 and up: ar...
openthings 发布于 3个月前 阅读 21

windows远程桌面无法粘贴复制的问题解决方法

  这两天遇到一个困扰我很久的问题,每次通过winodws远程桌面,本地的数据无法通过复制粘贴到远程服务器上。现把我找到的解决方案记录下来分享给大家 一般出现问题可能性比较大的原因就是rdpclip.exe服务出现了问题,只要通过任务管理器结束后,重新运行都能恢复   打开任务管理器结束 RDP 剪贴板监视程序 (此为winows server 2012截图)   打运行窗口输入 rdpclip.exe 命令确定即可
Michaelyn 发布于 3个月前 阅读 59

【腾讯云CDB】教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:    腾讯云数据库内核团队   0. Intro 在facebook的MySQL版本(以下称为MyRocks)中,RocksDB是可选的存储引擎。相比于InnoDB引擎,RocksDB的一个重要的优势是它使用更少的磁盘空间。在生产系统中,特别是用户数在亿级以上的互联网应用,磁盘空间是其中比较大的成本之一,而能够使用更少的磁盘空间的RocksDB无疑是具有吸引力的。然而在生产系统中使用新的存储引擎自然有它的潜在风险,除了通过外部的各种benchmark工具测试得到各种性能数据,全方位的内部指标可以帮助我们真正了解数据库内部正在发生的事情,对于性能调优和开发都具有指导意义。而MyRocks通过SHOW ENGINE ROCKSDB STATUS和多个INFORMATION_SCHEMA表等方式提供了较为全面的内部指标。 本文将介绍SHOW ENGINE ROCKSDB STATUS中关于STATISTICS统计值与后台线程的实现原理。在了解实现原理的基础上,便可以较容易地通过扩展功能使它更好地为我们服务。 调用SHOW ENGINE ROCKSDB STATUS指令会返回多行数据,其中包括: STATISTICS:RocksDB引擎所有线程的所有操作的各类count/time的累加,比如rocksdb.block.cache.hit和rocksdb.db.write.micros...
腾讯云加社区 发布于 3个月前 阅读 26

ajax 载入html后不能执行其中的js解决方法

事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。 2. 使用document.write输出代码,我等简洁主义者所不愿。 3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。 4. eval是个解决方法,虽然低效。 5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个<script>标签,把js内容插入即可执行。但使用中发现,firefox可行,但IE还是不从。(师太,您就从了吧~) 解决方案 综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下: // 第一步:匹配加载的页面中是否含有js var regDetectJs = /<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig; var jsContained = ajaxLoadedData.match(regDetectJs); // 第二步:如果包含js,则一段一段的取出js再加载执行 if(jsContained) { // 分段取出js正则 var regGetJS = /<script(.|\n)*...
lianyilxm 发布于 1个月前 阅读 16

SpringCloud Eureka注册中心使用

SpringCloud版本区别 一、maven依赖配置,SpringCloud目前有四个版本,经测试Camden,Dalston两个版本构建Eureka正常,其它两版本存在jar依赖问题,所以选取Dalstont版本,目前采用最新和SR5 依赖如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.pkfare</groupId> <artifactId>eureka</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR5</vers...
小兵成长记 发布于 3个月前 阅读 37

Notepad++常用插件

Compare:文件对比 Converter:文件编码转换 FingerText:代码模板 HEX-Editor:十六进制编辑 JSLint:js语法检查 LuaScript:lua工具 MIMETools:URL加密 SourceCookifier:代码结构分析(将工程目录拖进去) TagsView:代码结构分析(自动分析当前打开的文件) XBrackets Lite:自动补齐括号 XML Tools:xml格式检查
姿势喵 发布于 3个月前 阅读 37

春季新增开源项目:可以斗图的 Markdown 编辑器,了解一下?

转眼间,春风又绿江南岸,2018 年悄然过去了四分之一,开发者的热情也似乎正在被回暖的天气点燃。2、3月份,利发国际官方网社区总共收录了近 400 个项目。弱水三千取一瓢,我们从每月新增的开源项目挑选了几个和大家一起分享。
编辑部的故事 发布于 1周前 阅读 8847 评论 9 点赞 10

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

Docker容器可视化监控中心搭建

一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据
hansonwang 发布于 3天前 阅读 2555 评论 7 点赞 3

EMQ百万级MQTT消息服务(小技巧)

![](http://i.imgur.com/vhdeDvX.png) 附上: 喵了个咪的博客:[w-blog.cn](w-blog.cn) EMQ官方地址:[http://emqtt.com/](http://emqtt.com/) EMQ中文文档:[http://emqtt.com/docs/v2/guide.html](http://emqtt.com/docs/v2/guide.html) ## 1.ACL鉴权规则化 在正常业务使用下对于客户端的行为可以使用ACL进行限制,比如A客户端只能订阅 /A/get 队列消息和向 /A/set 发布内容 但是在MYSQL里面处理这样的鉴权就需要写入两条记录,如果设备量有一百万数据库就要承担两百万条鉴权数据量会大大影响数据库的性能 那么有没有什么批量的方式来定义ACL鉴权呢? 在mysql-ACL鉴权的配置文件下关于如何使用鉴权的SQL是可以编辑的,也就意味着你可以通过SQL来实现批量ACL鉴权规则 ```bash > vim /usr/local/emqttd/etc/plugins/emq_auth_mysql.conf # 最下面有这样一条配置 auth.mysql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' ``` 笔者这里就实现每个设备默认可以订阅 /A/get 队列消息和向 /A/set 发布 ![](http://pic.w-blog.cn/ADE78396-BF03-4672-A3E2-07F04...
喵了_个咪 发布于 5天前 阅读 2031 评论 3

Java下载CSV文件

```java @GetMapping("/download") public void download(HttpServletResponse response, @RequestParam String path) throws Exception { // 让servlet用UTF-8转码,默认为ISO8859 response.setCharacterEncoding("UTF-8"); File file = new File(path); if (!file.exists()) { // 让浏览器用UTF-8解析数据 response.setHeader("Content-type", "text/html;charset=UTF-8"); response.getWriter().write("文件不存在或已过期,请重新生成"); return; } String fileName = URLEncoder.encode(path.substring(path.lastIndexOf("/") + 1), "UTF-8"); response.setContentType("text/csv"); response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName)); InputStream is = null; OutputStream os = null; try { is = new FileInputStream(path); byte[] buffer = new byte[1024]; os = response.getOutputStream(); int len; while((len = is.read(buffer)) > 0) { os.write(buffer,0, len); } }catch(Exception e) { throw new RuntimeException(e); }finally { try { if (is != null) is.close(); if (os != null) os.close(); } c...
tianshl 发布于 1周前 阅读 3424

Django开发环境

### 1.虚拟环境 ``` tianshl:workspace tianshl$ mkdir server tianshl:workspace tianshl$ cd server/ tianshl:server tianshl$ virtualenv venv --python=python3 tianshl:server tianshl$ source venv/bin/activate ``` ### 2. 安装依赖 ``` (venv) tianshl:server tianshl$ pip install django (venv) tianshl:server tianshl$ pip install djangorestframework ``` ### 3. 创建项目 ``` (venv) tianshl:server tianshl$ django-admin.py startproject server (venv) tianshl:server tianshl$ tree server/ server ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` ### 4. 更新配置 ``` (venv) tianshl:server tianshl$ cd server/ (venv) tianshl:server tianshl$ vim server/settings.py # 1.修改 INSTALLED_APPS = ( ... 'rest_framework', ) # 2.添加 REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] }...
tianshl 发布于 3个月前 阅读 37051

Java中的OneToMany

### 写在开头 ``` 使用jhipster声明的OneToMany在One的一方DTO中是没有与Many的DTO的映射关系的, 为了在One的一方DTO中使用Many的DTO, 使用以下三步解决此问题。 ``` ### 步骤 ``` 1. OneDTO 中的"mark 1"处为自己写的一对多的关系, 此处变量名称不能与实体One中相应的变量名称一致,否则编译失败。 2. OneMapper 中的"mark 2"处 uses属性添加ManyMapper。 2. OneMapper 中的"mark 3"处使用@Mapping注解声明 Entity 转 DTO 的映射关系。 ``` ### Entity ``` @Entity @Table(name = "one") public class One { ... @OneToMany(mappedBy = "one") private Set manys = new HashSet<>(); ... public void setManys(Set manys) { this.manys = manys; } public Set getManys() { return manys; } } @Entity @Table(name = "many") public class Many { ... @ManyToOne private One one; } ``` ### DTO ``` public class OneDTO { ... // mark 1 private Set manyDTOS = new HashSet<>(); ... public void setManyDTOS(Set manyDTOS) { this.manyDTOS = manyDTOS; } public Set getManyDTOS() { return manyDTOS; } } public class ManyDTO { ... private Long oneId; ... public...
tianshl 发布于 3个月前 阅读 32317

Postman自动登录,请求带token

![这里写图片描述](http://img.blog.csdn.net/20180323182705200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ![这里写图片描述](http://img.blog.csdn.net/20180323182719115?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) #### 添加一个环境 ``` Manage Environments(右上角的齿轮) => Add => 填写环境的名称 => Add ``` #### 添加登录接口 ``` # 比正常的请求多设置一下 "Tests" # 将登录接口返回的response中的token加入环境变量, 如: pm.environment.set("token", JSON.parse(responseBody).data.authorization); ``` #### 添加一个集合 ``` 1. New collection (左侧 目录) 2. 填写名称,如:"需要token的请求" 3. 切换到选项卡"Authorization" 4. 选择相应的 TYPE 5. Token 中填写 {{token}} 6. 点击Create 创建集合 ``` #### 添加需要token的请求 ``` 在刚创建的集合中添加的请求, Headers中都会自动添加 token, 如果token失效, 重新请求一下登录接口即可...
tianshl 发布于 4周前 阅读 11865

JHipster修改JDL中的entity

## 更新model #### 需求 ``` 概览表增加"创建时间,修改时间,软删除" ``` #### 以往的方式 ###### 1. 修改model.jh, 在实体 Overview 中增加三个属性 ``` /** * 数据概览 -- 概览 */ entity Overview { id Long, ... /* 以下属性为新增的属性 */ /* 创建时间 */ createTime ZonedDateTime, /* 更新时间 */ updateTime ZonedDateTime, /* 是否删除 */ delFlag Boolean, } ``` ###### 2. 生成配置文件 ``` jhipster import-jdl model.jh ``` ###### 3. 运行项目使配置生效 ``` 运行项目时提示"Validation Failed",原因是配置文件的MD5值不同, 此时需要以下操作 1. 修改 DATABASECHANGELOG 表中相关记录的 MD5SUM 2. 在overview表中手动新增三个属性. ``` #### 现在的方式 ###### 1. 修改model.h, 在实体 Overview 中增加三个属性 ###### 2. 生成配置文件 ###### 3. 修改生成的配置文件 ``` src/main/resources/config/liquibase/changelog/20180302095615_added_entity_Overview.xml 将 changeSet中新增的三个column提取至新的changeSet中, 如下: 注意: changeSet的id不能与之前的相同 ``` ###### 4. 运行项目使配置生效 ``` 不需要手动修改MySQL,自动生效 ```...
tianshl 发布于 2个月前 阅读 21099

Supervisor&Gunicorn&Django

# django ``` # 刚写的就不复制粘贴了 https://my.oschina.net/tianshl/blog/1611257 # 列一下目录结构 root@tianshl:~# cd server/ root@tianshl:~/server# tree server server ├── db.sqlite3 ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` # gunicorn ##### 安装 ``` pip install gunicorn ``` ##### 配置 ``` # 修改django项目的settings.py INSTALLED_APPS = [ ...... 'gunicorn', ] ``` ##### 运行 ``` root@tianshl:~# cd /root/server/server/ root@tianshl:~/server/server# gunicorn --pythonpath /root/server/venv/bin/python3 -w 3 -b 0.0.0.0:80 server.wsgi # 测试能否正常运行, 然后ctrl+c结束进程 ``` # supervisor ##### 安装 ``` pip install supervisor ``` ##### 配置 ``` # 默认配置 # 使用echo_supervisord_conf命令查看默认配置 root@tianshl:~# echo_supervisord_conf # 自定义配置 root@tianshl:~# mkdir /etc/supervisor root@tianshl:~# mkdir /etc/supervisor/conf.d root@tianshl:~# echo_supervisord_conf > /etc/supervisor/supervisor.conf root@tianshl:~# vim /etc/su...
tianshl 发布于 3个月前 阅读 36795

Maven项目一键部署

### 免登陆 ``` # 生成秘钥 tianshl:.ssh tianshl$ ssh-keygen -t rsa -P '' # 将公钥添加至服务器的authorized_keys中 tianshl:.ssh tianshl$ ssh-copy-id -i ./id_rsa.pub root@192.168.1.54 ``` ### 创建脚本 ``` # 项目根目录下创建脚本,名为:update.sh, 内容如下 #!/usr/bin/env bash # 更新 git pull # 打包 mvn clean package -Dmaven.test.skip=true # 上传 scp target/etl-0.0.1-SNAPSHOT.war root@192.168.1.54:/root/ # 删除原日志 | 终止服务 | 启动服务 | 查看启动日志 ssh root@192.168.1.54 "rm etl.log; ps -ef | grep etl | awk '{print $2}' | xargs kill -9; nohup ./etl-0.0.1-SNAPSHOT.war > etl.log 2>&1 &; tail -f etl.log" ``` ### 配置IDE ``` Run / Edit Configurations... / "+" / Bash 1. Name 填写 2. Script 选择 update.sh 3. Working directory 选择 项目根目录 ```...
tianshl 发布于 1个月前 阅读 13098

Packet for query is too large

### 前言 ##### max_allowed_packet ``` mysql根据max_allowed_packet限制server接收数据包的大小, 数据量超过这个限制时会导致写入或更新失败. ``` ##### 查看当前限制 ``` show VARIABLES like '%max_allowed_packet%'; ``` ### 修改 ``` 以下提供两种修改方式 ``` ##### 1. 修改配置文件 ``` # 查看配置文件路径 mysql --help | grep my.cnf # 修改 vim /etc/my.cnf 在[mysqld]段增加或修改以下内容: max_allowed_packet = 5M # 重启mysql service mysql restart ``` ##### 2. 命令行修改 ``` # 登录mysql mysql -u root -p # 运行指令 set global max_allowed_packet = 5*1024*1024 # 如果上条命令无效: # set @@max_allowed_packet=5*1024*1024 # 重启mysql service mysql restart # ubuntu service mysqld restart # centos ```...
tianshl 发布于 4天前 阅读 1532

Java集合总结【面试题+脑图】,将知识点一网打尽!

前言 声明,本文用的是jdk1.8 花了一个星期,把Java容器核心的知识过了一遍,感觉集合已经无所畏惧了!!(哈哈哈....),现在来总结一下吧~~ 回顾目录: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 Set集合就这么简单! Java容器可分为两大类: Collection List ArrayList LinkedList Vector(了解,已过时) Set HashSet LinkedHashSet TreeSet Map HashMap LinkedHashMap TreeMap ConcurrentHashMap Hashtable(了解,,已过时) 着重标出的那些就是我们用得最多的容器。 其实,我也不知道要怎么总结好,因为之前写每一篇的时候都总结过了。现在又把他们重新罗列出来好像有点水,所以,我决定去回答一些Java容器的面试题! 当然了,我的答案未必就是正确的。如果有错误的地方大家多多包含,希望不吝在评论区留言指正~~ 一、ArrayList和Vector的区别 共同点: 这两个类都实现了List接口,它们都是有序的集合(存储有序),底层是数组。我们可以按位置索引号取出某个元素,允许元素重复和为null。 区别...
Java3y 发布于 4天前 阅读 784 点赞 1

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 发布于 2个月前 阅读 13825 评论 34 点赞 8

Apache Ignite事务架构:Ignite持久化的事务处理

在本系列[上一篇文章](https://my.oschina.net/liyuj/blog/1791800)中,介绍了故障和恢复,下面是本系列剩下的文章将要讨论的主题: - Ignite持久化的事务处理(WAL、检查点及其他) - 第三方持久化的事务处理 在本文中,会聚焦于Ignite持久化的事务处理。 将[Apache Ignite](https://ignite.apache.org/)作为内存数据网格(IMDG)的都知道,如果整个集群瘫痪,仅仅将数据保存在内存中问题是很严重的,其他的IMDG以及缓存技术也会面临同样的问题。解决这个问题的方案之一就是,将Ignite与第三方的持久化存储集成,然后提供通读和通写能力,如图1所示: ![图1:使用第三方存储进行持久化](https://www.gridgain.com/sites/default/files/inline-images/Figure1_10.png) 但是,这个方法有一些缺陷,在本系列的下一篇文章中会说明。 作为第三方持久化的替代方案,Ignite开发了一个固化内存架构,如图2所示,该架构可以同时在内存和磁盘上进行数据和索引的存储和处理,该特性使用非常简单,使得Ignite集群在数据落盘的前提下,获得内存级的性能: ![图2:固化内存](https://www.gridgain.com/sites/default/files/inline-images/Figure2_9.png) 固化内存的工作方式类似于现代操...
李玉珏 发布于 1周前 阅读 884 点赞 3

RabbitMQ实战:界面管理和监控

> 本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 上一篇总结了可能出现的异常场景,并对RabbitMQ提供的可用性保证进行了分析,在出现服务器宕机后,仍然可以正常服务。另外,需要尽快恢复异常的服务器,重新加入集群,推送未消费的消息,通过监控可第一时间接收到错误并进行处理。 另外,我们想主动了解消息堆积和消费的情况,以及服务器节点的压力,RabbitMQ提供了几种方式便捷、直观的了解,包括Web管理插件、REST API、rabbitmqadmin脚本。 通过介绍,你会了解到: * web管理插件 * REST API * rabbitmqadmin脚本 * Nagios和监控RabbitMQ ### web管理插件 RabbitMQ的插件是由Erlang语言写的,并且和服务器一同运行在同一个Erlang VM中,通过下面的命令启用web管理插件: ``` java sudo ./rabbitmq-plugins enable rabbitmq_management ``` 启动之后,访问15672端口,可看到Web管理页面主页面: ![RabbitMQ主页面](http://oc3r3rke2.bkt.clouddn.com/15236961623170.jpg) ##### 添加用户 默认会提供一个默认用户guest,密码也是guest,线上环境需要创建一个新用户,并把guest用户删除。 首先切换到Admin标签页,可以查看或添加用户,添加用户时,可...
情情说 发布于 4天前 阅读 615

SpringBoot+Mybatis,返回Map的时候,将Map内的Key转换为驼峰的命名表达式

遇见这个问题,是公司的小伙伴跟我说,每次使用mybatis的时候,简单的连表查询,用Map接收的时候,都是像DB定义的字段一样,类似以下 student_name,student_id,没有转换为驼峰,但是又不能因为这一个定义一个javabean来映射数据库字段集合,这样,会有无穷无尽的javabean,完全不是办法,然后我看了下mybatis-spring-boot的配置文档http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/,发现有这么个属性   mybatis.configuration.map-underscore-to-camel-case=true 看着属性意思,很像是 map 下划线转换为驼峰,然后我天真的以为,加个这个,就会将Map里面的key转换为驼峰的命名方式,然后我自己测试了一下,发现自己还是太天真,没转过来,该是什么还是什么(心里面是B了狗了).... 没办法,接着找了了一下,发现官方文档http://www.mybatis.org/mybatis-3/configuration.html#properties,描述过这个的作用  才发现,这个属性的作用,是作用于javabean的field的,并不是map,ㄟ( ▔, ▔ )ㄏ,那没办法了,只能自己动手了     -------------------------------我是分割线-------------------------------------- 既然 map-underscore-to-camel-case 不能作用于map,那么...
贺小五 发布于 4天前 阅读 605 评论 2

MySQL的索引是什么?怎么优化?

索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。
我叫刘半仙 发布于 3周前 阅读 5511 评论 14 点赞 40

spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

# spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想,是真的么?,忙到这几个字都没时间打么?毕竟大家都很忙的,所以忙并不是啥理由. 那是因为啥呢?感觉就只有一个理由能站得住脚了,就是因为"懒". 哈哈.... 尬聊了一段,活跃下气氛,下面进入正题 ## **场景** 在实际工作中,大家可能也都遇到过这样的情况 : 一个正在更新迭代过程中项目,会收到大量业务部门的需求,这些需求可能会来自于不同业务部门,或者不同的产品经理 而项目的onwer则需要接收到这些需求,对这些需求进行初步的分析和排期,但是在排期的过程中,会有这样一种尴尬的情况发生. 比如,有两个互不嗒噶的产品经理,针对同一功能点,提出了两个不同业务改造的需求点,两个需求点要求上线的时间很接近,但是又出于某种原因,不能同时上线,或者产品经理根本无法确定上线时间,而告诉你尽快完成开发/测试,他则根据实际情况确定业务需求的发布时间 那么,对于这种情况,通常会采用开分支的方式进行开发,即不同版本的并行需求的开发在不同分支上同时进行开发,那么,团队成员(开发/测试),则可以同时的开展工作...
wangkang80 发布于 4天前 阅读 393

微服务架构—优雅停机方案

微服务架构中的应用优雅停机主要是指应用实例有计划而平滑(即不产生需要处理的事故)的退出。
李景枫 发布于 2周前 阅读 3757 评论 6 点赞 7

Session管理之超时设置和强制下线

Session,强制下线
海岸线的曙光 发布于 3周前 阅读 4167 评论 13 点赞 6

shell编程-for循环

语法:for 变量名 in 条件; do …; done 案例1:计算1到100所有数字的和 ``` #!/bin/bash sum=0 for i in `seq 1 100` do     sum=$[$sum+$i]     echo $i done echo $sum ``` 分析上面的案例,我们先看下下面shell ``` #!/bin/bash for i in `seq 1 10` do echo $i done ``` 执行这个shell,结果如下,结果是返回了1到10的值 ``` [root@lijie-01 ~]# sh for1.sh 1 2 3 4 5 6 7 8 9 10 ``` 其实在linux中我们用的更多的是对文件做循环 案例2:文件列表循环 ``` #!/bin/bash cd /etc/ for a in `ls /etc/` do     if [ -d $a ]     then        ls -d $a     fi done ``` 有下面一个情况需要注意,for循环时以空格或者回车作为分割符,在使用 for i in `ls ./`;do echo $i;done命令里面`ls ./`作为判断条件时,当文件名中有空格时,一个文件会以空格分割拆分成多个文件 ``` [root@lijie-01 shell]# vim for2.sh [root@lijie-01 shell]# touch 1 2 [root@lijie-01 shell]# touch 3\ 4.txt [root@lijie-01 shell]# ll 总用量 44 -rw-r--r-- 1 root root 0 4月 20 06:24 1 -rw-r--r-- 1 root root 0 4月 20 06:24 2 -rw-r--r-- 1 root root 0 4月 20 06:24 3 4.t...
mixuyulv 发布于 35分钟前 阅读 2

OSChina 周五乱弹 —— 终于发现红薯看片的证据了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @花间小酌 :今天才知道《权倾天下》这首曲,适合写码听 《权倾天下》- 墨韵 手机党少年们想听歌,请使劲儿戳(这里) @利发国际官方网首席屌炸天:你们这些想着要看看自己有多少个半年以上没联系过的好友的,可省省吧,良心不会痛吗?   为嘛不联系, 植树节还没给植点B树么? @利发国际官方网绿帽派送员   :前几天找我借钱的小学同学已经把我拉黑了,MMP,果然不能考验人性! “你瞅啥,我们已经是两个世界的人了。” 碰到这样的人, 无论是不是同学, 直接拒绝她, @新垣吉衣OSC :双倍拒绝 这些奇葩人, 程序员有什么奇怪的人么? @巨根道人:打算写一本《程序员志异》大家有没有什么好的故事? 回想了一下, 倒是没想出来程序员有什么奇葩。 想出来上学的一些奇葩规定。 生活里也会遇到各种奇葩, 比如不尊重生命的人, @贪吃飒:福州动物园,游客拿尖锐的石头猛砸袋鼠,导致一死一伤,,,,游客安然离去,没有任何惩治措施,厉害了我的法。 “你有本事带上拳套,下来和我决斗。” 当袋鼠都不安全了, 岂止这样, 吃屎都不安全了。 @Francisdu : 这么多不幸! @魔石  :把所有的不幸都归咎于运气不好,心情好多了。。 最近巴叔...
小小编辑 发布于 46分钟前 阅读 14 评论 5

volume 方式使用 Secret - 每天5分钟玩转 Docker 容器技术(157)

本节讨论如何以 volume 方式使用 secret。
CloudMAN 发布于 2小时前 阅读 2

Scala2.10.6 Intellij2018.1.1 Vmware12

环境: 宿主机win7+Vmware12+Win10虚拟机 一、Intellij2018.1.1下载 1、先安装Intellij2018.1.1最新版,旗舰版下载地址,进入到这个页面后,有2种方法可以下载 1.1、点击Download,就会自动下载。 1.2、直接点击exe. 以上,如下图所示: 1.3、约500M,我的是电信宽带,下载速度非常快,差不多5分钟就下载完成了。 2、安装。直接回车即可。 3、激活。License Server直接填:http://idea.congm.in/ 二、Scala下载 2.1、访问官网scala-lang.org 2.2、2.10.6下载链接 2.3、电信下载速度还可以,好像也是5分钟左右 2.4、安装。msi直接双击即可。 以上如图所示 三、安装Scala Intellij插件 有2种方式,一种是通过intellij直接联网下载,不过超级慢,真是耽误时间。另一种是通过浏览器下载,这个还能忍受,不过也要15分钟。最好的办法是记住文件名,然后在baidu上搜索。我已经传到百度云上了。 3.1、法1直接从intellij官网上下载,如下图所示   注意事项 1、如何将宿主机的软件搞到虚拟机中?在win10虚拟机上新加一个共享目录,再新建一个用户germmy,专门给共享服务使用。-当然,较为高级的办法是安装toolbox,直接拖拽即可。 参考资料 1、激活教程 2、win10配置java环境变量  3、...
Germmy 发布于 6小时前 阅读 4

python:map,apply,mapapply区别

apply:可作用与Series,也可以作用DataFrame http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html  作用于Series *data Cabin Fare Age 0 Acd 7.8292 34.5 1 Vafe 7.0000 47.0 2 Cfwrw 9.6875 62.0 3 Rfdf 8.6625 27.0 4 Mfdf 12.2875 22.0 *data['cabin']=data['Cabin'].apply(lambda x:x[0]) *data['cabin'] 0 A 1 V 2 C 3 R 4 M 作用与DataFrame *data[['Fare','Age']].apply(lambda x:x.max()-x.min()) Fare 5.2875 Age 40.0000 map只可作用于Series http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html *data['cabin1'] = data['Cabin'].map(lambda x:x[0]) *data['cabin1'] 0 A 1 V 2 C 3 R 4 M *data[['Fare','Age']].map(lambda x:x.max()-x.min()) AttributeError: 'DataFrame' object has no attribute 'map' #还可以用作替换 *x = pd.Series([0,1,2], index=['one', 'two', 'three']) *y = pd.Series(['foo', 'bar', 'baz'], index=[0,1,2]) *x.map(y) #x的值与y的index 值相同,可将替换,不同,以NaN填充 one foo two bar three...
从模仿到独立思考 发布于 6小时前 阅读 4

Oracle逻辑备份/还原的三种模式

ORACLE数据库有两类备份方法,一是物理备份,二是逻辑备份。逻辑备份不但备份简单,而且可以不需要外部存储设备。
walkwithdream 发布于 7小时前 阅读 4

使用卷积神经网络进行图片分类

https://blog.csdn.net/oxuzhenyi/article/details/73480448 卷积神经网络原理 一、实验介绍 1.1 实验内容 本课程将会先带你理解卷积神经网络的原理,了解卷积神经网络的一些特性。然后动手使用caffe深度学习框架训练一个卷积神经网络模型,并用训练好的模型进行图片分类。 学习本课程之前,请先学习课程814 使用python实现深度神经网络以了解必要的基本概念,本实验中涉及到的深度学习基本概念将不会再次阐述。同时建议学习课程744 深度学习初探——入门DL主流框架(该课为训练营课程)中的caffe相关部分,但本课程中涉及到caffe的内容也会尽量讲解。   本实验作为本课程的第一次实验,将会向大家讲解卷积神经网络的相关基本原理。除非你已经知道什么是卷积神经网络,否则我强烈建议你仔细学习本次实验,理解原理将非常有助于你在实际问题中合理地使用卷积神经网络。 1.2 实验知识点 卷积神经网络的结构 1.3 先学课程 814 使用python实现深度神经网络(必学,否则可能无法理解本课程中的一些概念) 744 深度学习初探——入门DL主流框架(选学) 1.4 实验环境 python 2.7 caffe 1.0.0 (实验楼环境中已经预先安装) 二、实验步骤 2.1 什么是“卷积” 在课程814 使用python实现深度...
tantexian 发布于 7小时前 阅读 3

Vue-cli(四) 项目中引入Axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止 CSRF/XSRF 安装Axios 我们直接使用npm install来进行安装。 npm install axios --save 由于axios是需要打包到生产环境中的,所以我们使用--save来进行安装。 也可以选择使用cnpm来安装,加快安装速度。 引入Axios 只需要在需要的vue文件中引入axios就可以。 import axios from 'axios' 使用 发送一个GET请求 //通过给定的ID来发送请求 axios.get('/user?ID=12345') .then(function(response){ console.log(response); }) .catch(function(err){ console.log(err); }); //以上请求也可以通过这种方式来发送 axios.get('/user',{ params:{ ID:12345 } }) .then(function(response){ console.log(response); }) .catch(function(err){ console.log(err); }); 发送一个POST请求 axios.post('/user',{ firstName:'Fred', lastName:'Flintstone' }) .then(function(res){ console.log(res); }) .catch(funct...
阿刚ABC 发布于 7小时前 阅读 4

缓存穿透与缓存雪崩

缓存穿透 什么是缓存穿透? 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。   如何避免? 1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。 2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。 3: 即便DB查询结果为空,也可以将这个key的缓存值设为null,以减少缓存的压力。   缓存雪崩 什么是缓存雪崩? 当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。 如何避免? 1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。 2:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。 3:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期(此点为补充) A.根据业务统计的维度或是场...
vinci321 发布于 7小时前 阅读 3

小白接口,什么鬼?

最近,听闻江湖上出了一个社会接口,也有不少同学已经开始在使用。那就是——小白接口。小白接口,到底是个怎样的冬冬呢?下面将快速来了解下。   来自官网的介绍 先来看下官网本身的说明。 小白接口官网(居然支持HTTPS,第一印象不错):https://www.okayapi.com/ 它的Slogan是:小白接口,服务大众。 它的LOGO:   说白了,小白接口就是提供了一套通用的接口服务,可以帮助客户端应用进行快速开发。   举个粟子 对于非技术的同学,我们来举个粟子,就很容易理解了。假设,在某个地方,你有一个戒备森严的仓库,里面放着很多你的宝贝。(以下是原始阶段的仓库,你还可升级到工业时代、现代化版更强大的版本) 而作为老板的你,当需要取某样东西时,不需要亲力亲为,只需要吩咐随时待命的快递小哥,然后快递小哥就会秉着“使命必达”的精神,跑到仓库取到你想要的东西然后送到你的手上。既然是戒备森严的仓库,那就意味着不是任何人都可随便出入的。哪怕是快递小哥也一样。因此,每次下达命令去仓库取件时,都必须附上你的签名。 这里的快递小哥,实际上就是小白接口提供的各种接口服务,每个接口实现的功能都不一样,返回的数据也不一样。而仓库就是小白接口提供的云端...
暗夜在火星 发布于 7小时前 阅读 15

Python将PDF文件转换成PNG的方案

目前最靠谱的是基于 mupdf 的 Python 绑定:  https://github.com/rk700/PyMuPDF  demo地址:  https://github.com/rk700/PyMuPDF/blob/master/demo/demo.py 安装: 到 https://pypi.org/project/PyMuPDF/#files 下载操作系统对应的安装文件 下载完成后,使用pip安装 然后就可以跑代码了.... 将PDF文件转换成PNG的代码: import fitz import sys doc = fitz.open('demo.pdf') for pg in range(doc.pageCount): page = doc[pg] zoom = int(100) rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate) # create raster image of page (non-transparent) pm = page.getPixmap(matrix=trans, alpha=False) # write a PNG image of the page pm.writePNG('%s.png' % pg)  ...
乐_然 发布于 7小时前 阅读 4

聊聊springboot2的ScheduledTasksEndpoint

## 序 本文主要研究下springboot2的ScheduledTasksEndpoint ## 实例 ### 注解形式 ``` @Component public class ScheduleTask { @Scheduled(cron = "0 0 5 * * ?") public void cronJob(){ } @Scheduled(fixedDelay = 2*60*1000,initialDelay = 30*1000) public void fixedDelayJob(){ } @Scheduled(fixedRate = 5 * 1000) public void fixedRatejob(){ } } ``` ### 动态添加 ``` @Configuration public class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addCronTask(new Runnable() { @Override public void run() { System.out.println("hello"); } },"0 0 6 * * ?"); } } ``` ### /actuator/scheduledtasks ``` { "cron": [ { "runnable": { "target": "com.example.task.ScheduleTask.cronJob" }, "expression": "0 0 5 * * ?" }, { "runnable": { "target": "com.example.config.ScheduleConfig$1" }, "expression": "0 0 6 * * ?" } ], "fixedDelay": [ { "runnable": { "target": "com.example.task.ScheduleTask.fixedDelayJob" }, "initialDelay": 30000, "...
go4it 发布于 7小时前 阅读 4

pom中的repository节点配置没有起作用

maven pom
liyuchang 发布于 7小时前 阅读 3

问题记录

1. 今天发现一个重大的问题, 在使用neko vm的二进制安装包中在centos 7中出现libneko.so 加载模块的时候出现segment fault的错误, 出现几率在 5% 左右,通过调试发现这个问题不是我们调用方触发的。 但是在centos 7下自定义编译选项的没有这个问题。 lua -> nvmdso.so ->libneko.so( call loadmodule -> val_callEx -> 访问内存越界 之后在centos6中重新编译后并大批量跑了一下, 也没有这个问题。 所以记录一下这个问题,哪个2进制的包链接的时候由问题。 2. 之前的底层api 由大量的swig生成的代码,生成的userdata 经过swig托管代码后生成的代码,号称是自动引用计数的回收,结果发现分配的内存拷贝是无法通过用户手动清理, 内存泄漏。 所以目前使用lua标准调用方式替换swig生成的代码。
钟元OSS 发布于 7小时前 阅读 4

链表集合

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 链表集合: 优点: 1.有序 2.可以向前面和向后添加 3.中间插入也很方便 4.可以使用它实现简单队列模式 缺点: 1.消耗内存有点大 2.定位删除和定位查找都是比较满的 如下图:指定对象删除方法,按指定对象移除,就是找到你要找的那个对象然后移除,如下图这遍代码就是帮你找,如果没有找着,那就帮你找下家,如果还不对,又循环又帮你找下家,直到找到null为止 上面已经做好查找要删除的节点,如下面代码是开始删除的 指定对象删除的原理:如下图,你只要把引用丢掉就相当于是删除了 如下图:是按下标移除,写个循环,从0开始循环,找到你要删除的下标为止,找到之后就开始删除 如下图:是选择一个下标位置加入一个进去 插入数据的原理图
凯哥学堂 发布于 8小时前 阅读 4

【C++多线程系列】【四】将类的成员函数作为线程启动函数

#include<iostream> #include<thread> using namespace std; class A { public: A(int a):_a(a){} // 需要设置为静态函数,在访问成员函数 static void f(A &a) { a.f2(); } void f2() { cout << _a << endl; } private: int _a; }; int main(int argc, int * argv[]) { A a(5); thread t(&A::f,std::ref(a)); t.join(); system("pause"); }
muqiusangyang 发布于 8小时前 阅读 4

JAVA基础(11)--多线程间的通信

多线程间的通信
Chason-洪 发布于 8小时前 阅读 3

Eclipse启动报错:An internal error occurred during: "Building workspace".

启动Eclipse时发现右下角的building workspce走到2%时,不动了,Eclipse好长时间没反应,然后弹出错误信息:An internal error occurred during: "Building workspace". GC overhead limit exceeded。 如下图: 上网搜了一下,说是要修改一下Eclipse安装下的eclipse.ini文件,增加Eclipse实例的内存分配,。打开eclipse.ini文件,内容如下:   [html] view plain copy   -startup   plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar   --launcher.library   plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807   -product   org.eclipse.epp.package.jee.product   --launcher.defaultAction   openFile   --launcher.XXMaxPermSize   256M   -showsplash   org.eclipse.platform   --launcher.XXMaxPermSize   256m   --launcher.defaultAction   openFile   -vmargs   -Dosgi.requiredJavaVersion=1.5   -Dhelp.lucene.tokenizer=standard   -Xms512m   -Xmx1024m   相应要编辑的行如下     [html] view plain copy   -Xms512m   -Xmx1024m   修改并保存,重启Ecl...
lanjian28 发布于 8小时前 阅读 3

011 docker swarm管理界面portainer

Portainer是一款轻量级的Docker图形化管理工具
GoldLeaf 发布于 8小时前 阅读 3

每日一拍:Linux开发环境搭建,Spyder

开发环境为windows10,本来想在linux上搭建,但是常用的os还是win,所以最终还是选择了win,可能以后调试还是个麻烦事,先不管那么多了
yanglk2010 发布于 8小时前 阅读 1

Ubuntu 编译ffmpeg 实现GPU 转码

    前言,公司转码集群服务器资源有限,需要考虑GPU方案,本文记录下整个实现ffmpeg gpu 转码的过程。          该文章后续仍在不断的更新修改中, 请移步到原文地址 https://my.oschina.net/u/2950272/blog 环境: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS" 注意,这里机器启动级别调低,不要加载桌面系统。 本机是2核4G 普通硬盘,gpu 型号:GTX950M 第一部分,安装cuda 8:     1.1 查看是否有显卡: lspci | grep -i nvidia     1.2 查看操作系统是否cuda 官方支持: uname -m && cat /etc/*release     1.3 安装gcc g++ 等编译依赖基础库 apt-get install gcc g++ build-essential     1.4 下载安装cuda 下载cuda: wget --no-check-certificate https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb 安装 cuda 源: dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb 添加源: deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 / 更新缓存: apt-get update 安装cuda: apt-get i...
鼎铭 发布于 3天前 阅读 1559 评论 18 点赞 4

Docker容器可视化监控中心搭建

一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据
hansonwang 发布于 3天前 阅读 2555 评论 7 点赞 3

EMQ百万级MQTT消息服务(小技巧)

![](http://i.imgur.com/vhdeDvX.png) 附上: 喵了个咪的博客:[w-blog.cn](w-blog.cn) EMQ官方地址:[http://emqtt.com/](http://emqtt.com/) EMQ中文文档:[http://emqtt.com/docs/v2/guide.html](http://emqtt.com/docs/v2/guide.html) ## 1.ACL鉴权规则化 在正常业务使用下对于客户端的行为可以使用ACL进行限制,比如A客户端只能订阅 /A/get 队列消息和向 /A/set 发布内容 但是在MYSQL里面处理这样的鉴权就需要写入两条记录,如果设备量有一百万数据库就要承担两百万条鉴权数据量会大大影响数据库的性能 那么有没有什么批量的方式来定义ACL鉴权呢? 在mysql-ACL鉴权的配置文件下关于如何使用鉴权的SQL是可以编辑的,也就意味着你可以通过SQL来实现批量ACL鉴权规则 ```bash > vim /usr/local/emqttd/etc/plugins/emq_auth_mysql.conf # 最下面有这样一条配置 auth.mysql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' ``` 笔者这里就实现每个设备默认可以订阅 /A/get 队列消息和向 /A/set 发布 ![](http://pic.w-blog.cn/ADE78396-BF03-4672-A3E2-07F04...
喵了_个咪 发布于 5天前 阅读 2031 评论 3

Apache Ignite事务架构:Ignite持久化的事务处理

在本系列[上一篇文章](https://my.oschina.net/liyuj/blog/1791800)中,介绍了故障和恢复,下面是本系列剩下的文章将要讨论的主题: - Ignite持久化的事务处理(WAL、检查点及其他) - 第三方持久化的事务处理 在本文中,会聚焦于Ignite持久化的事务处理。 将[Apache Ignite](https://ignite.apache.org/)作为内存数据网格(IMDG)的都知道,如果整个集群瘫痪,仅仅将数据保存在内存中问题是很严重的,其他的IMDG以及缓存技术也会面临同样的问题。解决这个问题的方案之一就是,将Ignite与第三方的持久化存储集成,然后提供通读和通写能力,如图1所示: ![图1:使用第三方存储进行持久化](https://www.gridgain.com/sites/default/files/inline-images/Figure1_10.png) 但是,这个方法有一些缺陷,在本系列的下一篇文章中会说明。 作为第三方持久化的替代方案,Ignite开发了一个固化内存架构,如图2所示,该架构可以同时在内存和磁盘上进行数据和索引的存储和处理,该特性使用非常简单,使得Ignite集群在数据落盘的前提下,获得内存级的性能: ![图2:固化内存](https://www.gridgain.com/sites/default/files/inline-images/Figure2_9.png) 固化内存的工作方式类似于现代操...
李玉珏 发布于 1周前 阅读 884 点赞 3

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 1周前 阅读 3752 评论 12 点赞 19

有助于提高"锁"性能的几点建议

qq:853089986@qq.com
张泽立 发布于 1周前 阅读 2212 评论 8 点赞 12

如何用Nginx搭建一个安全的、快速的微服务架构

本文改编自Chris Stetson发表在nginx.conf 上的一个有关如今的微服务以及如何使用Nginx构建一个快速的、安全的网络系统的演讲,大家可以在YourTube上回看此次演讲。 自我介绍 Chris Stetson:Hi,我的名字是Chris Stetson,我在Nginx带领专业服务部门,同时也领导微服务实践。 今天我们要谈论微服务以及如何使用Nginx构建一个快速的、安全的网络系统。在我们谈话的最后,我们将与我们在Zokets的合作伙伴向您展示一个使用Fabric模式如何非常快速和轻松地构建一个微服务的demo。 在我们探讨Fabric模式之前,我想谈一谈微服务并且从Nginx的角度来看这意味着什么。 0:56 - 大转变 微服务已经引起了应用程序架构的重大转变。 当我第一次开始构建应用程序时,他们都是差不多的。幻灯片中所展示的单体架构也象征了应用程序的构造方式。 目前存在着某种类型的虚拟机(VM),对我来说,就是通常的Java。在虚拟机中应用的功能组件以对象的形式存在,这些对象是在内存中相互通讯的,它们将来来回回处理并进行方法调用。偶尔,你会采用诸如通知等机制来接触到其他系统以便获取数据或传递信息。 有了微服务之后,应用程序如何构建的范式是完全不同的了。你的功能组件会从在同一个主机的...
烂猪皮 发布于 2周前 阅读 3506 评论 11 点赞 4

List集合就这么简单【源码剖析】

前言 声明,本文用得是jdk1.8 前一篇已经讲了Collection的总览:Collection总览,介绍了一些基础知识。 现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是数组。线程不安全 LinkedList 底层数据结构是链表。线程不安全 Vector 底层数据结构是数组。线程安全 这篇主要来看看它们比较重要的方法是如何实现的,需要注意些什么,最后比较一下哪个时候用哪个~ 看这篇文章之前最好是有点数据结构的基础:Java实现单向链表,栈和队列就是这么简单,二叉树就这么简单         当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、ArrayList解析     首先,我们来讲解的是ArrayList集合,它是我们用得非常非常多的一个集合~ 首先,我们来看一下ArrayList的属性:     根据上面我们可以清晰的发现:ArrayList底层其实就是一个数组,ArrayList中有扩容这么一个概念,正因为它扩容,所以它能够实现“动态”增长 1.2构造方法 我们来看看构造方法来印证我们上面说得对不对:     1.3Add方法 add方法可以说是ArrayList比较重要的方法了,我们来总览一下:     1.3.1add(E e) 步骤: 检查是否需要扩容 插入元素 首先,我们来看看这个方法: ...
Java3y 发布于 2周前 阅读 2312 评论 4 点赞 6

约瑟夫环的几种实现方式

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
珂jack 发布于 2周前 阅读 2175 评论 18

从linux源码看socket的阻塞和非阻塞

# 从linux源码看socket的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 大部分高性能网络框架采用的是非阻塞模式。笔者这次就从linux源码的角度来阐述socket阻塞(block)和非阻塞(non_block)的区别。 本文源码均来自采用Linux-2.6.24内核版本。 ## 一个TCP非阻塞client端简单的例子 如果我们要产生一个非阻塞的socket,在C语言中如下代码所示: ``` // 创建socket int sock_fd = socket(AF_INET, SOCK_STREAM, 0); ... // 更改socket为nonblock fcntl(sock_fd, F_SETFL, fdflags | O_NONBLOCK); // connect .... while(1) { int recvlen = recv(sock_fd, recvbuf, RECV_BUF_SIZE) ; ...... } ... ``` 由于网络协议非常复杂,内核里面用到了大量的面向对象的技巧,所以我们从创建连接开始,一步一步追述到最后代码的调用点。 ### socket的创建 很明显,内核的第一步应该是通过AF\_INET、SOCK\_STREAM以及最后一个参数0定位到需要创建一个TCP的socket,如下图绿线所示: ![inet_family](https://static.oschina.net/uploads/img/201804/08095807_GSaV.png "inet_family") 我们跟踪源码调用 ``` socket(AF_INET, SOCK_STREAM,...
无毁的湖光-Al 发布于 2周前 阅读 3659 评论 12 点赞 7 打赏 1

Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1

Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
悦动智能 发布于 2周前 阅读 2110 评论 8 点赞 3

深入浅出设计模式——从球赛中悟命令模式

命令模式,顾名思义就是向对象发出命令使其执行指定操作。具体的说就是以命令的形式发出请求交给调用对象,随后调用对象又将命令传送给需要处理这条命令的对象并让目标对象执行该命令。
珂jack 发布于 2周前 阅读 1320 评论 8 点赞 5 打赏 1

Spring整合Quartz分布式调度

前言 为了保证应用的高可用和高并发性,一般都会部署多个节点;对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调度系统,来协调每个节点执行定时任务。 Spring整合Quartz Quartz是一个成熟的任务调度系统,Spring对Quartz做了兼容,方便开发,下面看看具体如何整合: 1.Maven依赖文件 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.spri...
ksfzhaohui 发布于 2周前 阅读 3831 评论 14 点赞 12

Shell入门看我吧

shell入门的文章,对shell不太熟悉小伙伴可以看看
aron1992 发布于 2周前 阅读 2465 评论 6 点赞 9

MySQL的索引是什么?怎么优化?

索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。
我叫刘半仙 发布于 3周前 阅读 5511 评论 14 点赞 40

Session管理之超时设置和强制下线

Session,强制下线
海岸线的曙光 发布于 3周前 阅读 4167 评论 13 点赞 6

简单搭建ngrok服务器,实现内网穿透

快速搭建ngrok服务器,或者直接运行我制作的ngrok服务器的镜像来启动
绝影jy 发布于 3周前 阅读 4533 评论 26 点赞 7 打赏 1

深入浅出设计模式——从球赛中悟代理模式

代理模式提供了通过代理对象访问目标对象的访问方式。
珂jack 发布于 3周前 阅读 1644 评论 8 点赞 5

总结:JDK1.5-JDK1.8各个新特性

引用: 此文章意在借鉴前人经验,留作日后查看。如有侵犯,实属无意。我以后会注意,谢谢博友的提醒。也愿各大博友们能够共同学习和努力。 https://my.oschina.net/91jason/blog/309821
iwen-J 发布于 4周前 阅读 5218 评论 1 点赞 32

记又一次解决生产环境宕机问题(业务系统)

OOM low memory 宕机 内存调优
打破突破 发布于 4周前 阅读 4595 评论 36 点赞 27 打赏 2
顶部
利发国际官方网