综合
文章平均质量分 54
__HelloWorld__
这个作者很懒,什么都没留下…
展开
-
常用Linux命令行技巧
结果以表格形式输出column -t比如;mount | column -t默认分隔符为空格,如果输出文件是以别的字符进行分割的呢,比如/etc/passwd中的冒号,那么,我们可以通过-s参数来指定cat /etc/passwd | column -t -s:重复执行某个命令直至执行结果成功while true按内存使用大小列出进程信息ps aux | sort ...原创 2019-11-21 16:56:13 · 3766 阅读 · 5 评论 -
TCP三次握手
SYN:Synchronize Sequence Numbers ACK:AcknowledgementTCP建立连接三次握手过程建立连接时,客户端发送SYN包(SYN=j)到服务器,并进入SYN_SENT状态,等待服务器确认。服务器收到syn包,必须确认客户的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入...原创 2018-03-20 09:35:53 · 297 阅读 · 0 评论 -
Java中的对象“克隆”
前言在前一章节中,我们讨论了构建Java对象的五种方式,其中,clone(克隆)也是我们比较常见的一种方式。protected native Object clone() throws CloneNotSupportedException;如果想要克隆一个对象,我们需要:实现Cloneable接口,否则当我们调用clone方法时JVM将会抛出CloneNotSupportedEx...原创 2018-08-27 15:43:27 · 346 阅读 · 0 评论 -
Threads and Executors
Threads and ExecutorsWelcome to the first part of my Java 8 Concurrency tutorial. This guide teaches you concurrent programming in Java 8 with easily understood code examples. It’s the first part o...转载 2018-08-30 21:52:22 · 422 阅读 · 0 评论 -
TCP vs UDP
TCP与UDP都是传输层协议TCP与UDP协议对比   TCP UDP 全称 传输控制协议 用户数据报协议或通用数据报协议 连接属性 TCP是面向连接的协议。 UDP是一种无连接协议。 功能特点 面向连接,可以基于此进行网络间信息传输。 UDP也是用于消息传输的协议。但不是基于连接的,你可以使用UDP直接从...原创 2018-08-24 10:51:21 · 1202 阅读 · 0 评论 -
Flask Web开发入门(十四)之使用蓝图(Blueprints)
Flask uses a concept of blueprints for making application components and supporting common patterns within an application or across applications. Blueprints can greatly simplify how large applications原创 2018-01-15 10:04:15 · 1485 阅读 · 0 评论 -
Synchronization and Locks
SynchronizedIn the previous tutorial we’ve learned how to execute code in parallel via executor services. When writing such multi-threaded code you have to pay particular attention when accessing sh...转载 2018-08-31 13:45:11 · 627 阅读 · 0 评论 -
Atomic Variables and ConcurrentMap
AtomicIntegerThe package java.concurrent.atomic contains many useful classes to perform atomic operations. An operation is atomic when you can safely perform the operation in parallel on multiple t...转载 2018-08-31 14:07:13 · 468 阅读 · 0 评论 -
Fail-Fast in Java
A fail-fast system is nothing but immediately report any failure that is likely to lead to failure. When a problem occurs, a fail-fast system fails immediately. In Java, we can find this behavior w...原创 2018-08-24 14:06:52 · 384 阅读 · 0 评论 -
Atomic Variables and ConcurrentMap
AtomicIntegerjava.concurrent.atomic包中包含了许多可以执行原子操作的类,所谓的原子操作是指在多线程并发的情况下无需使用synchronized或者其他锁同步机制的情况下,仍旧可以正确执行的操作,我们就称之为原子操作。 在JVM内部实现上,这些类通过使用compare-and-swap (CAS)来实现原子操作,CAS是CPU内部的一种原子指令,执行速度远比通...翻译 2018-09-04 11:17:18 · 313 阅读 · 1 评论 -
Thread.join
Waits for this thread to die 确保线程先后顺序执行public class ThreadJoinTest { public static void main(String[] args) throws Exception { Thread thread0 = new Thread(() -> System.out.p...原创 2018-08-30 14:12:15 · 326 阅读 · 0 评论 -
OSI七层模型与TCP/IP四层模型
OSI:Open System Interconnect原创 2018-03-20 08:58:34 · 286 阅读 · 0 评论 -
【公告】个人站点上线了
业余时间撸了个人站点,欢迎来踩,同时遵照有关规定,暂不开放评论功能!访问入口:http://www.kangkang.中国原创 2018-02-07 15:18:57 · 459 阅读 · 0 评论 -
Flask Web开发入门(八)之文件上传
本章我们介绍Flask Web开发中涉及的文件上传模块定义后台接收处理逻辑# http://flask.pocoo.org/docs/0.12/patterns/fileuploads/@app.route('/upload', methods=['POST'])def upload_file(): if request.method == 'POST':原创 2018-01-10 19:30:23 · 15003 阅读 · 12 评论 -
从技术角度告诉你,区块链到底有哪些特点和运作机制
从技术角度告诉你,区块链到底有哪些特点和运作机制 王思宇 • 2016-06-28 13:18摘要: 区块链技术的核心是实现了沿时间轴记录数据与合约,并且一旦写入,就只能读取,不能修改和删除。自从今年1月20日,中国人民银行在数字货币研讨会上表示高度重视区块链(Blockchain)等技术带来的新机遇和挑战,并争取早日推出央行发行的数字货币[1]以来,区块链的概念在国内越发火转载 2018-01-16 16:47:26 · 8740 阅读 · 0 评论 -
Flask Web开发入门(二)之Flask-Login使用
上一章我们介绍了使用Flask开发基本的Web应用,并使用session来进行基本的登录授权验证,接下来我们将使用Flask-Login来进行会话管理,来处理我们的“登入、登出”问题 Flask-Login provides user session management for Flask. It handles the common tasks of logging in, loggi原创 2018-01-08 20:18:59 · 9760 阅读 · 0 评论 -
Flask Web开发入门(一)之简单的登录验证
Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. 我们的目标是通过Flask实现一个简单的web系统,系统需要用户登录,未登录用户无法访问授权页面,因此,我们定义页面如下:index.html默认首页,需要登录授权访问login.html登录页,输入用户名和密码e原创 2018-01-08 19:47:42 · 22253 阅读 · 2 评论 -
Flask Web开发入门(三)之使用 Request Loader 定制登录
在上一章中,我们介绍了使用Flask-Login进行会话管理,实现基本的登入、登出功能,在实际的业务运用中,不仅要求基本的登录登出授权管理,还要求对外暴漏API接口服务,当然暴漏的服务接口不可能随意访问,还需要一定的授权信息,这时,我们需要Request Loader来进行定制登录,简单期间,我们使用HTTP Header中的Authorization作为查询参数的API密钥,只有请求Header原创 2018-01-08 20:37:17 · 2894 阅读 · 1 评论 -
Flask Web开发入门(四)之错误处理
在我们上一章中,我们介绍了使用 Request Loader 定制登录,在我们的逻辑分支中,错误处理我们使用了abort函数:当我们使用abort函数时,它表示放弃请求并返回错误代码,默认情况业务不友好,那么我们可以使用errorhandler() 装饰器来进行定制错误页面,errorhandler装饰器使用如下:@app.route('/error')@app.errorhan原创 2018-01-08 20:47:19 · 1912 阅读 · 0 评论 -
Flask Web开发入门(五)之日志
作为码农,在开发功能中记录日志是必要且必须的,因为事情往往不像你想象的那样理想完美,就像你开发的代码那样,良好的日志习惯能助你快速排查定位问题,从 Flask 0.3 开始,Flask 就已经预置了日志系统。以下是Flask日志的运用示例:import osimport loggingimport sysLOG_PATH = 'logs'LOG_FILE = 'text.t原创 2018-01-08 21:05:02 · 3135 阅读 · 0 评论 -
Flask Web开发入门(六)之访问数据库
我们介绍两种访问MySQL数据库的方式,一种是使用mysql.connector直连,另一种是使用sqlalchemy ORM框架。mysql.connector直连方式# get database connectiondef get_connection(): try: conn = mysql.connector.connect(**config)原创 2018-01-08 21:20:19 · 1594 阅读 · 2 评论 -
Java中的sleep与wait区别
sleep让当前线程休眠指定时间。休眠时间的准确性依赖于系统时钟和CPU调度机制。不释放已获取的锁对象,如果sleep方法在同步上下文中调用,那么其他线程是无法进入到当前同步块或者方法中的。可通过调用interrupt()方法来唤醒休眠线程。wait让当前线程进入等待状态,当别的其他线程调用notify()或者notifyAll()方法时,当前线程进入就绪状态wait方法...翻译 2018-08-30 14:49:46 · 22561 阅读 · 1 评论 -
Elastic Job 入门教程(一)— 与Spring Boot集成
注册中心配置@Configurationpublic class RegistryCenterConfig { @Value("${reg-center.server-list}") private String serverList; @Value("${reg-center.namespace}"原创 2018-09-19 19:37:32 · 3494 阅读 · 0 评论 -
GitLab 与 Jenkins 持续集成实践
首先,我们简单说明下我们的部署环境:GitLab:192.168.43.61 Jenkins:192.168.43.116Jenkins中系统设置中,配置GitLab连接信息,这里需要我们指定URL地址,Credentials连接凭据。我们可以通过Add按钮新增一个连接凭据API Token需要GitLab提供,我们在GitLab中的User Settings - Acc...原创 2018-12-17 10:55:16 · 1083 阅读 · 0 评论 -
Java 8 中的List排序
按字母顺序排序字符串列表List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", "New Delhi");System.out.println(cities);//[Milan, london, S...翻译 2019-06-13 16:50:36 · 13662 阅读 · 0 评论 -
Linux下免密认证登录失败原因总结
事件背景A机器已经生产rsa密钥且已经将public key添加到B机器/root/.ssh/authorized_keys,但是从A机器上ssh root@B机器时仍然需要输入密码,即无密码认证失败。原因总结(B机器上)(1).ssh目录的权限必须是700(2)用户目录的权限必须是700,比如我是用wutengfei用户操作的,则/home/wutengfei(家目录)的权限...转载 2019-06-02 22:09:50 · 4746 阅读 · 0 评论 -
Microservices vs SOA - 微服务与SOA
开始之前,我们先简单看下单体架构、SOA与微服务之间的区别,如下图所示:简单来讲,对于单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。而对于SOA架构来说,其本质上也是服务的集合,服务与服务之间彼此调用,这种调用可能涉及到简单的数据处理或者有超过多个服务之间相互协作共同完成模型业务操作,在SOA中我们需要考虑服务之间应如何相互通信。最后说到微服务...翻译 2019-06-14 16:47:20 · 1235 阅读 · 0 评论 -
公钥添加到authorized_keys到文件中之后仍无法免密登陆
接上一章,关于Linux下免密登陆失败,这里找了Stackoverflow上关于这个问题的讨论: Adding public key to ~/.ssh/authorized_keys does not log me in automatically同样的,检查目录和文件权限,确保.ssh目录权限为700,authorized_keys文件权限为600chmod 700 ~/.sshc...原创 2019-06-03 22:45:44 · 9268 阅读 · 0 评论 -
微服务架构特征
一个典型的微服务架构(MSA)通常包含以下组件:客户端身份标识提供者: 提供访问服务所需的身份密钥,服务网关会负责完成对请求客户端的基本验签工作API服务网关: 客户端访问目标服务的入口点,经服务请求经服务网关路由到目标服务提供方。服务网关的优点:服务更新操作对客户端透明服务与服务之间的消息路由协议不一定非得基于WEB服务网关可以统一进行安全授权或者负载均衡等操作消息:...翻译 2019-06-16 16:25:12 · 921 阅读 · 0 评论 -
Java之keytool命令学习
Java Keytool is a key and certificate management utility. It allows users to manage their own public/private key pairs and certificates. It also allows users to cache certificates. Java Keytool store...原创 2019-06-20 21:46:54 · 783 阅读 · 0 评论 -
微服务架构系列——API服务网关
本章我们简单介绍微服务架构下的API服务网关,本章我们将讨论以下话题:什么是API服务网关为什么需要API服务网关API服务网关的工作机制处理横切关注点当我们在开发设计大型软件应用时,我们一般都会采用分层的架构模式,比如,在WEB应用程序中,下面的这种架构是我们最为常见的设计模式在这样的一个分层架构中,我们可以看到应用被分成了web层、业务层、数据层。在分层架构设计中,我们可以看...翻译 2019-06-17 19:07:45 · 969 阅读 · 0 评论 -
如何避免敏捷失败?
很多人都听说敏捷,有些人知道敏捷是什么,有些人也尝试过敏捷,本章中将列举出一些常见的错误敏捷实践,如果想要避免敏捷失败,建议还是要对照下你所在的敏捷团队中有没有类似的敏捷实践,这对于你的敏捷成功是很有帮助意义的。敏捷错误实践一: 没有或者糟糕的项目回顾会回顾会的目的在于总结和发现问题,一句话——继往开来,团队中的每个人都可以想一想在过去的这个迭代冲刺中,哪些方面做的很好,哪些方面可以做的更...翻译 2019-06-24 11:34:15 · 520 阅读 · 0 评论 -
一个人有文化,到底有多重要?
关于什么是文化,我最最欣赏的回答,是作家梁晓声的四句概括:根植于内心的修养,无需提醒的自觉,以约束为前提的自由,为别人着想的善良。-01-一位叫做“Judy”的空姐,在微博上讲了一件关于刘诗诗的趣事。因为是空姐,在飞机上服务,Judy常会遇见各种大咖和明星。但这些大咖和明星都没给她留下深刻印象。直到前几天,她遇见了刘诗诗。那一天,刘诗诗坐的头等舱。飞机落地后,Judy去整理头等舱...转载 2019-06-24 17:59:52 · 728 阅读 · 0 评论 -
Jenkins使用笔记
本章简单记录Jenkins的使用笔记首先,我们从官网中下载安装介质,可以看到这里有适合各种操作系统版本的安装源介质,简单起见,我们直接下载一个通用的war程序包执行命令java -jar jenkins.war --ajp13Port=-1 --httpPort=8081,可根据实际情况指定启动端口,启动Jenkins注意,首次启动时会生成管理员初始密码,初始密码也可通过查...原创 2018-12-17 10:10:10 · 557 阅读 · 0 评论 -
ubuntu中GitLab的安装与配置
这里,我们采用离线安装的方式安装GitLab首先,我们从清华大学开源软件镜像站中下载软件包,用户可根据实际的服务器操作系统版本来选择不同的镜像资源,这里我们以ubuntu为例。执行命令sudo dpkg -i gitlab-*.deb,安装GitLab,若无报错,会提示修改external_url,打开/etc/gitlab/gitlab.rb,根据实际情况修改属性值,之后执行命令su...原创 2018-12-14 16:49:56 · 2820 阅读 · 0 评论 -
Spring Batch简单入门(四) - Job启动与监控
接上一章,本章我们介绍Job的启动与监听。Running a JobSpring Boot默认支持自动启动已配置好的Job,我们可以通过配置项**spring.batch.job.enabled=false**来禁止Spring容器自动启动Job。正常情况下,当我们通过调度器调用Job时,整个流程如下: A JobExecution,is the primary storage...原创 2018-09-11 16:21:54 · 7169 阅读 · 0 评论 -
Threads and Executors
Threads and RunnablesJava自JDK1.0就支持线程,一般来说,在启动线程之前,我们需要指定线程实际执行方法体,通常我们可以通过重写Runnable接口中的run方法来完成。Runnable task = () -&gt; { String threadName = Thread.currentThread().getName(); System....翻译 2018-09-03 14:43:41 · 325 阅读 · 0 评论 -
Synchronization and Locks
Synchronized上一章节中,我们初步了解了如何通过ExecutorService来执行并发代码,注意,我们并没有深入讨论多线程间的同步问题,本章,我们将重点讨论线程间同步问题,深入剖析多线程间如何优雅的共享变量,首先,我们从一个简单的例子入手。int count = 0;void increment() { count = count + 1;}如果没有任何同步措...翻译 2018-09-03 16:37:17 · 321 阅读 · 0 评论 -
Spring Batch简单入门(一)- 简介
从本章开始的接下来几篇,我们将介绍关于Spring Batch的相关知识。本章,是一个关于Spring Batch的简单入门。Spring Batch根植于Spring Framework大家庭,是一个轻量级的批处理框架,在企业级应用中,我们常见一些批处理业务场景,借助Spring Batch我们可以很方便的开发出健壮、易用的批处理应用。因为Spring Framework框架可以说满...原创 2018-09-10 20:03:26 · 20748 阅读 · 0 评论 -
Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job)
在Elastic Job 入门教程(一)— 与Spring Boot集成这篇文章中,我们简单介绍了Spring Boot与Elastic Job 的集成,并见简单实现了SimpleJob类型作业。本章,我们介绍Spring Boot框架下如何实现Elastic Job的Script Job类型作业。...原创 2018-09-23 18:46:01 · 1808 阅读 · 0 评论