
Just Coding
文章平均质量分 64
Enjoy Coding!
楚兴
这个作者很懒,什么都没留下…
展开
-
JSON Web Token入门手册
文章目录跨域认证问题什么是JWT?JWT 的原理JWT 的使用场景JWT 的数据结构HeaderPayloadSignatureJWT 的使用方式JWT 的几个特点跨域认证问题互联网服务离不开用户认证。一般流程是下面这样:用户向服务器发送用户名和密码。服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。服务器向用户返回一个 session_id,...原创 2019-11-21 22:03:25 · 571 阅读 · 0 评论 -
Consul入门手册
文章目录Consul是什么?基本架构安装Consul运行Agent启动Agent集群成员停止Agent注册服务定义一个服务查询服务DNS APIHTTP API更新服务Consul是什么?Consul是一个服务发现和配置工具,它是分布式和高可用的,而且极易扩展。Consul主要提供了以下特性:服务发现:Consul使得服务注册和服务发现(通过DNS或HTTP接口)变得非常简单。健康检查...原创 2019-11-20 22:46:49 · 1061 阅读 · 0 评论 -
Kubernetes概述
文章目录Kubernetes 简介Kubernetes 是一个平台Kubernetes 不是什么核心组件Kubernetes 基本概念ContainerPodNodeNamespaceServiceLabelAnnotationsKubernetes 简介Kubernetes 是谷歌开源的容器集群管理系统,是 Google 多年大规模容器管理技术 Borg 的开源版本,主要功能包括:基于容...原创 2019-11-18 23:02:19 · 542 阅读 · 0 评论 -
云原生Cloud Native概述
云原生的定义云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。云原生的设计哲学云原生本身甚至不能称为是一种架构,它首先是一种基础设施,...原创 2019-11-17 22:40:50 · 1177 阅读 · 1 评论 -
Service Mesh概述
文章目录什么是服务网格?服务网格的特点理解服务网格为何使用服务网格?服务网格架构服务网格的实现模式Istio 架构解析从边车模式到 Service Mesh什么是边车模式边车模式设计边车模式解决了什么问题从边车模式到 Service MeshKubernetes vs Service Mesh什么是服务网格?服务网格是用于处理服务间通信的专用基础设施层。它负责通过包含现代云原生应用程序的复杂服...原创 2019-11-16 23:54:31 · 653 阅读 · 0 评论 -
API网关概述
API网关接收客户端的所有请求,并将请求路由到相应的后端服务,并提供接口聚合和协议转换。通常来说,API网关通过调用多个后端服务,并聚合结果的方式处理请求。它可将web协议转化为非web的内部后台协议。原创 2019-10-13 13:02:18 · 1115 阅读 · 0 评论 -
Caffe 运行平台支持DenseNet模型
文章目录1 集成DenseNet的报错信息2 caffe源码分析及修改2.1 pooling层源码分析2.2 caffe源码修改3 总结在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如GoogLenet、VGG-19、Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型,从而实现更高的准确度。ResNet模型的核...原创 2019-03-23 23:39:22 · 1214 阅读 · 0 评论 -
RSA加密解密及制作软件license
1 RSA算法倘若在加解密信息的过程中,能让加密密钥(公钥)与解密密钥(私钥)不同,即:甲要传密信给乙,乙先根据某种算法得出本次与甲通信的公钥与私钥;乙将公钥传给甲(公钥可以让任何人知道,即使泄露也没有任何关系);甲使用乙传给的公钥加密要发送的信息原文m,发送给乙密文c;乙使用自己的私钥解密密文c,得到信息原文m。就可以很好的克服对称加密算法的弱点,这种新的加密模式被称为“非对称加...原创 2019-03-16 15:45:53 · 5204 阅读 · 0 评论 -
CentOS安装docker
移除旧的版本:sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ dock...原创 2018-12-24 22:39:27 · 949 阅读 · 1 评论 -
Caffe SSD编译、训练及测试
SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征以用于检测。SSD的网络结构如上图所示(上面是SSD模型,下面是Yolo模型),可以明显看到SSD利用了多尺度的特征图做检测。安装clone代码(假设代码clone到$CAFFE_ROOT目录)。git clone https://github.com/weiliu89/caffe.gitcd ca...原创 2018-11-25 23:10:07 · 2958 阅读 · 0 评论 -
Caffe 运行平台支持DSSD模型
DSSD源码在https://github.com/chengyangfu/caffe/tree/dssd,在cuda9环境下编译,首先把Makefile.config里面的USE_CUDNN := 1开关打开,编译报如下的错:make: *** [.build_release/src/caffe/layers/multibox_loss_layer.o] Error 1In file inc...原创 2018-11-08 22:26:12 · 1039 阅读 · 0 评论 -
Caffe nvcc编译问题:Unsupported gpu architecture
最近学习DSSD,从https://github.com/chengyangfu/caffe/tree/dssd下载源码后编译报错:Unsupported gpu architecture 'compute_20',具体如下:CXX src/caffe/util/db.cppCXX src/caffe/util/benchmark.cppCXX src/caffe/util/im2col.c...原创 2018-11-05 21:43:12 · 3260 阅读 · 0 评论 -
cat less more head tail命令比较
linux查看文件内容常用命令有:cat、more、less、head、tail等。主要区别cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;more命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页。less命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕、查找。不需要在一开始就读取整个文件,打开大文件时比more、vim更快...原创 2018-09-09 14:09:09 · 1674 阅读 · 0 评论 -
SSH交互式脚本StrictHostKeyChecking选项
SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查。什么是SSH公钥检查SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机:The authenticity of host '10.0....原创 2018-09-05 15:52:22 · 2768 阅读 · 0 评论 -
Shell入门教程[1]
Shell 环境第一个shell脚本:运行 Shell 脚本有两种方法:Shell 变量定义变量使用变量只读变量删除变量变量类型Shell 字符串单引号双引号拼接字符串获取字符串长度提取子字符串查找子字符串Shell 数组定义数组读取数组获取数组的长度Shell 注释Shell 传递参数实例Shell运算符算术运算符关系运算...原创 2018-05-13 16:11:58 · 1308 阅读 · 0 评论 -
Shell入门教程[2]
Shell 流程控制if elseifif elseif else-if elsefor 循环while 语句case跳出循环break命令continue命令esacShell 函数函数参数Shell 输入/输出重定向重定向深入讲解Here Document/dev/null 文件Shell 文件包含Shell 流程...原创 2018-05-13 16:14:42 · 706 阅读 · 0 评论 -
读写HDFS的三种方式
1 HttpFSAuthenticator.setDefault(new MyAuthenticator());URL url = new URL("http://dev.test.com:14000/webhdfs/v1/tmp/test?op=OPEN");InputStream ins = url.openConnection().getInputStream();Buffered...原创 2018-05-03 15:33:00 · 3346 阅读 · 0 评论 -
Linux文件传输的三种方式
1 命令执行如下命令,在目标机器(假设ip为10.11.12.13)上监听端口8415 nc -l 8415 > data.txt往目标机器发送数据 nc -v 10.11.12.13 8415 < ~/Downloads/data.txt2 SimpleHTTPServer在服务器(假设ip为10.11.12.13)上执行如下命令: python -m S...原创 2018-05-03 15:09:22 · 2091 阅读 · 0 评论 -
vim常用命令总结
本文主要作为对博文《vim编辑器使用》的补充。1. vim复制单行复制:将光标移动到将要复制的行处,按”yy”进行复制;多行复制:按”nyy”复制n行;其中n为1、2、3……粘贴:将光标移动到将要粘贴的行处,按”p”进行粘贴2. vim删除行把光标移动到要复制的位置,按dd3. 显示行号:输入:set nu3. 移动光标ctrl+u:到文件头...原创 2018-03-29 21:20:48 · 616 阅读 · 0 评论 -
常用hadoop dfs命令
创建目录hadoop dfs -mkdir /home上传文件或目录到hdfshadoop dfs -put hello /hadoop dfs -put hellodir/ /查看目录hadoop dfs -ls /创建一个空文件hadoop dfs -touchz /361way删除一个文件hadoop dfs -rm /361way...原创 2018-03-29 21:14:45 · 8581 阅读 · 1 评论 -
Hadoop环境搭建详解
Hadoop部署模式有:本地模式、伪分布模式、完全分布式模式、HA完全分布式模式。区分的依据是NameNode、DataNode、ResourceManager、NodeManager等模块运行在几个JVM进程、几个机器。 模式名称 各个模块占用的JVM进程数 各个模块运行在几个机器数上 本地模式 1个 1个 伪分布式模式 N个 1个...原创 2018-03-29 21:02:26 · 6062 阅读 · 0 评论 -
浅谈Bloom Filter基本原理及使用方式
一提到元素查找,我们会很自然的想到HashMap。通过将哈希函数作用于key上,我们得到了哈希值,基于哈希值我们可以去表里的相应位置获取对应的数据。除了存在哈希冲突问题之外,HashMap一个很大的问题就是空间效率低。引入Bloom Filter则可以很好的解决空间效率的问题。原理Bloom Filter是一种空间效率很高的随机数据结构,Bloom filter 可以看做是对bit-map原创 2018-02-02 20:40:05 · 6976 阅读 · 0 评论 -
ThreadPoolTaskExecutor使用详解
当我们需要实现并发、异步等操作时,通常都会使用到ThreadPoolTaskExecutor,现对其使用进行介绍。配置ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Executors的工厂方法进行配置。原创 2017-09-23 20:15:30 · 79305 阅读 · 3 评论 -
Douglas-Peucker压缩算法
Douglas-Peucker算法(道格拉斯-普克算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定。Douglas—Peucker算法通常用于线状矢量数据压缩、轨迹数据压缩等。算法步骤连接曲线首尾两点A、B形成一条直线AB;计算曲线上离该直线段距离最大的点C,计算其与AB的距离d;比较该距离与预先给定的阈值thresho原创 2017-09-22 20:24:59 · 10126 阅读 · 0 评论 -
高并发服务设计——缓存
缓存回收策略1 基于空间即设置缓存的存储空间,如设置为10MB,当达到存储空间时,按照一定的策略移除数据。2 基于容量基于容量指缓存设置了最大大小,当缓存的条目超过最大大小,则按照一定的策略将旧数据移除。3 基于时间TTL(Time To Live):存活期,即缓存数据从缓存中创建时间开始直到它到期的一个时间段(不管在这个时间段内有没有访问都将过期)。TTI(Time To Idle):空闲期,即缓原创 2017-09-17 18:34:29 · 3230 阅读 · 1 评论 -
高可用服务设计概述[2]
3 限流在开发高并发系统时,有很多手段保护系统,比如缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力,可谓是抗高并发的银弹。而降级是当服务出问题或者影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开的场景。而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页)等。因此,需要有一种手段来限制这些场景下的原创 2017-09-17 17:21:34 · 1180 阅读 · 0 评论 -
高可用服务设计概述[1]
Nginx提供的负载均衡机制可以实现服务器的负载均衡、故障转移、失败重试、容错、健康检查等,当某些上游服务器出现问题时可以将请求转到其他上游服务器以保障高可用,并通过OpenResty实现更智能的负载均衡,如将热点与非热点流量分离、正常流量与爬虫流量分离等。Nginx负载均衡器本身也是一台反向代理服务器,将用户请求通过Ningx代理到内网中的某台上游服务器处理,反向代理服务器可以对响应结果进行缓存、压缩等处理以提升性原创 2017-09-16 16:45:52 · 1472 阅读 · 0 评论 -
Mac包管理工具安装和使用
HomebrewMac OS X是基于Unix的,它可以使用非常多Linux平台上开源的优秀工具,比如wget,比如dos2unix脚本工具等。但是OS X系统本身却缺少Linux下的包管理器。比如Fedora的yum与dnf,比如Ubuntu的apt-get,比如ArchLinux的Pacman等。于是这些优秀的开源软件在Mac上的安装只能通过下载源码、编译、安装、配置环境变量的步骤来完成安装。对原创 2017-09-14 19:05:26 · 3437 阅读 · 0 评论 -
Redis大Key分拆方案
业务场景中经常会有各种大key的情况, 比如: 1. 单个简单的key存储的value很大 2. hash、set、zset、list中存储过多的元素(以万为单位) (文章中所提及的hash,set等数据结构均指redis中的数据结构)由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上能拆则拆,下面举几个典型的分拆方案。单个简单的原创 2017-08-27 00:29:23 · 9377 阅读 · 0 评论 -
什么是Docker镜像、容器和仓库?
Docker 包括三个基本概念: 镜像(Image)、容器(Container)、仓库(Repository),理解了这三个概念,就理解了 Docker 的整个生命周期。镜像Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository)理解了这三个概念,就理解了 Docker 的整个生命周期。Docker 镜像Docker 镜像就是一个只读的模板。例原创 2017-08-27 00:35:48 · 4522 阅读 · 0 评论 -
交易型系统设计的一些原则
1 高并发原则1.1 无状态如果应用的设计是无状态的,那么应用比较容易进行水平扩展。实际生产环境是:应用无状态、配置文件有状态。1.2 拆分访问量大,资源充足,可考虑拆分。几种主要的拆分情况:系统维度:按照系统功能/业务拆分。功能维度:对一个系统按照功能拆分。读写维度:根据读写比例特征进行拆分。读的量太大,可用缓存;写的量太大,可分库分表。聚合读取场景,可考虑数据异构拆分系统,将分散在多处的数原创 2017-09-09 19:24:30 · 3916 阅读 · 4 评论 -
Spring AOP使用小结
使用配置包含如下依赖:<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version></dependency><dependency> <groupId>org.aspectj</groupId> <art原创 2016-11-19 21:19:44 · 852 阅读 · 0 评论 -
Jprofiler的使用
Jprofiler是一款优秀的Java性能检测工具,下面是JProfiler连接远程JVM的方法。准备首先在远程机器上下载Jprofiler并解压文档:wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_1_1.tar.gztar -zxvf jprofiler_linux_9_1_1.tar.gz原创 2016-11-19 20:57:47 · 4046 阅读 · 0 评论 -
Java容器使用总结
Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack ├Queue│├Deque│└LinkedList└Set ├SortedSet ├TreeSet └HashSetMap ├Hashtable ├HashMap原创 2015-06-18 15:24:28 · 2453 阅读 · 0 评论 -
Java多线程
Windows等操作系统均支持多线程进程的并发处理机制。操作系统支持多线程,使多个程序能够并发执行,以改善资源使用率和提高系统效率;操作系统支持多线程,能够减少程序并发时所付出的时间和空间开销,使得开发粒度更细,并发性更好。进程进程是一个程序关于某个数据集合的一次执行过程,是操作系统进行资源分配和保护的基本单位。进程具有以下特性: ①结构性。进程包含了数据集合和运行于其上的程序。每个进程至少由三要原创 2015-06-20 10:42:20 · 1724 阅读 · 0 评论 -
Java输入输出流和文件操作
文件和流操作系统中的文件和目录概念文件与文件系统文件是信息的一种组织形式,是存储在外部存储介质上的具有标志名的一组相关信息集合。 文件系统用文件概念来组织和管理存放在各种介质上的信息。文件系统提供目录机制实现文件的“按名存取”。目录结构与文件检索目录是文件系统组织和管理文件的基本单位,目录中保存它所管理的每个文件的基本属性信息(成为文件目录项或文件控制块)。原创 2015-06-23 14:46:45 · 3168 阅读 · 0 评论 -
Java连接MySQL数据库
1 下载安装Connector/J,下载地址:http://www.mysql.com/products/connector/。Connector/J是专门针对MySQL而开发的JDBC驱动程序包。 2 将安装目录下的mysql-connector-java-5.1.36-bin.jar添加到环境变量的classpath,或者添加到项目的Java Build Path。 3 JDBC基本编程的步原创 2015-07-08 21:51:46 · 1084 阅读 · 0 评论 -
dom解析和生成XML文件
使用这种方式解析时,需要使用node.getNodeType() == Node.ELEMENT_NODE判断结点是否为元素结点,否则会输出很多#text(结点前有空格存在的原因)。完成的XML解析和生成代码如下:package test;import java.io.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.pars原创 2015-12-02 19:33:56 · 896 阅读 · 0 评论 -
dom4j解析和生成XML文件
转化XMLimport org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;public class Foo { public Document parse(URL url) throws DocumentException { SAXReader reade原创 2015-12-02 20:17:21 · 978 阅读 · 0 评论 -
Java 8十个lambda表达式案例
实现Runnable线程案例使用() -> {} 替代匿名类://Before Java 8:new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8 "); }}).start();//Java 8 way:new Thread原创 2015-12-07 12:42:28 · 1339 阅读 · 0 评论