
程序开发
文章平均质量分 85
程序开发
BarackHusseinObama
好玩,Interesting
展开
-
一次 JVM 占用 CPU 资源过高的问题排查
早晨刚到公司就收到服务器 CPU 持续飙高在 400% 左右的邮件。因为是新的服务器,上面只在一个 docker 中跑了一个 Java 应用,所以大致可以确定就是它的问题,接下来就是如何通过工具定位具体代码的问题了。大致的处理思路如下:定位系统中引发问题的进程定位进程中引发问题的线程定位线程中引发问题的代码如果能找到出问题的代码段,那么问题也就好解决了。1. 定位引发问题的进程与线程...原创 2019-08-03 20:45:44 · 3139 阅读 · 0 评论 -
Kafka 学习与使用总结
一、Kafka 简介kafka 是一个分布式流处理平台,主要适用于以下场景:构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue) ;构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过 kafka stream topic 和 topic 之间内部进行变化)。有如下特点:Kafka作为一个集群,运行在一台或者多台服务器...原创 2019-07-03 00:08:28 · 747 阅读 · 0 评论 -
SQLServer 数据异构实时同步之数据时序的问题
文章目录一、简介二、数据时序的问题三、数据以主键为单位的有序四、数据操作被重复发送五、数据操作的重复发送与影响六、结论一、简介数据异构实时同步是指将数据从源端数据库近实时的同步至目的端数据库的一个过程,比如将 SQLServer 中的数据同步至 HBase 或 Kafka 中。不同于离线同步,实时同步需要解决变更数据采集与数据时序等问题,以此保证数据的一致性。不同于 MySQL 可以通过解...原创 2019-04-09 23:48:10 · 1652 阅读 · 0 评论 -
DataX 中流的速度限制
概述这里的流的速度限制是指在单位时间窗口内,最多允许指定的单位数据通过。比如我们需要从源端 A 发送 1000 条数据到目的端 B,如果设置的速度限制为最多 100 条每秒,那么理论上需要 10 秒的时间才能将数据传输完成,即使当前的网络允许在极短的时间便完成这个任务。但是我们没办法严格控制每秒时间内的数量一定是小于等于 100 的,因为我们不能每传输一条数据便进行速度与其控制的计算,这样会极...原创 2019-03-06 22:05:05 · 9408 阅读 · 9 评论 -
一款简洁的税后工资计算器(2019)
一款简洁的税后工资计算器,地址:http://kentt.top/tools/personal-tax/,特点:1. 支持自定义社保基数/比例、公积金基数/比例、个税起征点;2. 可对比改革前后数据;3. 可查看各支出所占比例;4. 无任何广告原创 2020-06-22 19:34:21 · 18522 阅读 · 0 评论 -
JHipster 中的设计(1)RESTful API Response 与异常处理的设计
一、 Response 设计在JHipster生成的项目中,RESTful API的Response相比一些传统的方式,特别的依赖了Response.header来传输一些附加信息,比如分页请求结果中的总数、执行的方法代码等。下面以用户相关接口为例: name method uri body Get User GET /users/{userId} ...原创 2018-07-18 22:31:05 · 4387 阅读 · 2 评论 -
[Angular Directive] 输入框禁止为空字符串与自动去除空格指令
一、前言input 输入框自带了required属性,用以表单验证,但是只要有字符,即使全为空格也能通过required验证,这无法满足一些应用场景,所以需要自定义一些指令,用来满足验证全为空格的输入。在使用自定义的 Directive 修改 input 输入框值或属性时,需要注意:请尽量使用 Angular 提供的类或方法来修改输入框的值, 以免ngModel无法同步;同上,使用原创 2018-01-30 19:43:33 · 3002 阅读 · 1 评论 -
在 nginx 中部署 angular 应用
最近使用Angular做了第一个应用,但是网上的教程大多是教如何开发,部署相对较少,所以这里就简单记录一下如何在nginx中部署Angular应用。 注:Angular应用可以编译成静态页面,然后部署在任何 web 服务器上,这里仅仅是选择nginx而已,同时编译后的文件其实就仅仅是静态文件而已,与其它 html 文件本质上无异。一、编译 前提: 请确保@angular/cli已经安装在原创 2017-10-15 22:19:18 · 13228 阅读 · 2 评论 -
在需要实时更新数据的接口中使用 304 状态码
一、前言Http 状态码是接口设计中不可或缺的一部分,它简洁却蕴含着丰富的含义,这里就简单介绍一下 304 状态码的使用示例吧。二、场景比如最近的一个需求是:在 Web 页面中查看任务详情时,要求能够不刷新页面便自动的更新它的状态与日志等信息(任务的执行会花费一定的时间,同时后台在处理任务的过程中会同步它的状态与日志的更新)。三、分析与方案使用Ajax不定时的获取数据是肯定的(不采用WebSocke原创 2017-10-11 19:49:26 · 5540 阅读 · 0 评论 -
[Spring Cloud] Eureka 的自我保护模式及相关问题
一、Eureka 的自我保护模式访问Eureka主页时,如果看到这样一段大红色的句子: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING E原创 2017-10-11 19:39:57 · 8483 阅读 · 2 评论 -
Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式
1. 应用场景有时候我们需要在一个 Project 中运行多个不同版本的 jar 包,以应对不同集群的版本或其它的问题。如果这个时候选择在同一个项目中实现这样的功能,那么通常只能选择更低版本的 jar 包,因为它们通常是向下兼容的,但是这样也往往会失去新版本的一些特性或功能,所以我们需要以扩展的方式引入这些 jar 包,并通过隔离执行,来实现版本的强制对应。2. 实现在 Java 中,所有的类默认通原创 2017-06-14 21:16:05 · 30911 阅读 · 18 评论 -
Spring JdbcTemplate查询示例
这里有一些示例向你展示如何使用JdbcTemplate的query()方法从数据库中查询或提取数据。1. 查询单行有两种可以从数据库中查询或提取一行数据,并将它们转换成一个model对象。1.1 自定义RowMapper通常,总是建议通过实现RowMapper接口来创建一个自定义的RowMapper类来满足你的需求,如下:package com.mkyong.customer.model;impor翻译 2017-03-13 18:51:48 · 9070 阅读 · 2 评论 -
业界难题-“跨库分页”的四种方案
本文转载于58沈剑的文章,原文地址:http://mp.weixin.qq.com/s/h99sXP4mvVFsJw6Oh3aU5A,感谢同意转载。一、需求缘起分页需求互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息(2)京东下单过多时,拉取第N页订单(3)浏览58同城,查看第N页帖子 这些转载 2017-03-08 21:21:58 · 822 阅读 · 0 评论 -
Java 返回数组或集合的方法设计
写过很多方法,却依然写不好最简单的Getter方法?面向对象的其中一个很重要特征是封装,最简单的封装可能就是对一组属性的封装,然后只提供了setter和getter方法,比如下面这个对象:public class Dog { private String name; public String getName() { return name; }原创 2016-12-03 00:37:33 · 9502 阅读 · 1 评论 -
【图解JDK源码】BlockingQueue的基本原理
BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、Link原创 2016-11-08 21:27:29 · 5202 阅读 · 0 评论 -
利用Spring进行LDAP验证登录遇到的问题及其解决方式
有些系统需要使用公司内部的域帐号登录,那么就需要连接LDAP进行验证,Spring Secutiry提供了使用LDAP验证的方式(就相比登录验证来说,Spring提供的LDAP验证,比自己实现LDAP验证真是麻烦了不少),能完美契合Spring Secutiry的可参考这篇文章:https://www.ibm.com/developerworks/cn/java/j-lo-springsecurit原创 2016-10-25 22:47:47 · 21659 阅读 · 8 评论 -
《淘宝技术这十年》读后感
最近拜读了《淘宝技术这十年》,大致的了解了淘宝网在过去将近十年的某些技术的变化,其中深有体会的两点便是:1. 优秀的架构不是一蹶而就的,它是随着业务的增长而不断进化与完善,并在不断的重构与技术创新中得到升华的; 2. 良好的架构设计与实现应该同时考虑到成本的控制,包括经济成本与时间成本;之所以会对这几点有特别的感触,大概与两个项目有关。一:初出茅庐刚毕业那会儿,在相继看完《大型网站技术架构:核心原原创 2016-09-15 12:17:06 · 1163 阅读 · 0 评论 -
Spring MVC Post请求返回403错误,Get请求却正常?
困惑:很奇怪,明明在方法上面配置了RequestMethod.POST,POST表单提交却返回403状态码,可是使用GET方式却没问题啊!!!@RequestMapping(value="***", method = { RequestMethod.POST })public ModelAndView edit() { ModelAndView model = new ModelAndVie原创 2016-09-01 22:47:21 · 33796 阅读 · 12 评论 -
选择一个 HTTP 状态码不再是一件难事 – Racksburg
有什么能比 HTTP 响应状态码更简单呢?页面渲染了吗?好极了,返回 `200`。页面不存在?那么是 `404`。想要跳转到另一个页面?`302` 或者可能是 `301`。> 我喜欢把 HTTP 状态码想象成无线电波传输的 10 码<sup>1</sup>。“呼叫,呼叫,我是 White Chocolate Thunder,发现 200 OK。” —— Aaron Patterson (@tenderl转载 2016-08-04 18:28:25 · 687 阅读 · 0 评论 -
【图解JDK源码】HashMap的容量大小增长原理(JDK1.6/1.7/1.8)
1. 前言HashMap的容量大小会根据其存储数据的数量多少而自动扩充,即当HashMap存储数据的数量到达一个阈值(threshold)时,再往里面增加数据,便可能会扩充HashMap的容量。可能?事实上,由于JDK版本的不同,其阈值(threshold)的默认大小也变得不同(主要是计算公式的改变),甚至连判断条件也变得不一样,所以如果说threshold = capacity * loadFac原创 2016-05-06 12:25:46 · 6483 阅读 · 0 评论 -
【图解JDK源码】HashMap的基本原理与它的线程安全性
1. 前言能用图说清楚的,就坚决不用代码。能用代码撸清楚的,就坚决不写解释(不是不写注释哦)。2. 数据结构HashMap内部通过维护一个Entry<K, V>数组(变量为table),来实现其基本功能,而Entry<K, V>是HashMap的内部类,其主要作用便是存储键值对,其数据结构大致如下图所示。从Entry的数据结构可以看出,多个Entry是可以形成一个单向链表的,HashMap中维护的E原创 2016-05-05 18:06:50 · 2157 阅读 · 0 评论 -
Java 通过魔数判断上传文件的类型
前言文件上传功能是很多网站都必须的功能,而判断文件类型不仅可以过滤文件的上传,同时也能防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当作免费的文件存储服务器使用。而对于上传文件来说,不能简单的通过后缀名来判断文件的类型,因为恶意攻击可以将可执行文件的后缀名称改为图片或者其他格式,诱导用户执行,因此,判断上传文件的类型需要更安全的方式。与Java的class文件类似,很多类型的文件,起始的几原创 2016-04-25 14:36:39 · 13075 阅读 · 7 评论 -
Java 生成唯一性标识解决方案与重复概率分析
应用背景在分布式Session存储方案中,提到了分布式环境下,Session的四种存储方案,其中Session数据集中存储的方案是将Session集中存储在单独的服务器或集群上,也是比较常用的方式之一,但是这里面涉及到应用服务器每次请求Session服务器都必须携带一个唯一性标识,用以获取存储在Session服务器上的Session数据(想一想传统的Session实现方式),而如何生成这个唯一原创 2016-02-23 13:20:56 · 10274 阅读 · 2 评论 -
【数据结构与算法】二叉树给定两个节点的最短距离(C++实现)
问题描述对于普通的二叉树,求指定两节点的最短距离。两节点间的最短距离即指连接两节点需要的边的最小数量,对于下图:有如下结果:Dist(9, 11) = 4Dist(8, 12) = 6Dist(8, 2) = 2分析与实现两节点之间note1与note2主要存在两种关系,即: 1)note1为note2的祖先节点(或反过来),此时note1与note2在同一条直线上; 2)note1与not原创 2016-02-22 17:00:46 · 4292 阅读 · 0 评论 -
编程思想之多线程与多进程(4)——C++中的多线程
原文:http://blog.youkuaiyun.com/luoweifu/article/details/46701167 作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,《编程思想之多线程与多进程(2)——线程优先级与线程安全》一文讲了线程安全(各种同步锁)和优先级,这是多线转载 2016-02-19 14:10:12 · 655 阅读 · 0 评论 -
编程思想之多线程与多进程(3)——Java中的多线程
原文:http://blog.youkuaiyun.com/luoweifu/article/details/46673975 作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java中多线程程序的开发单线程任何程序至少转载 2016-02-19 13:48:13 · 692 阅读 · 0 评论 -
编程思想之多线程与多进程(2)——线程优先级与线程安全
原文:http://blog.youkuaiyun.com/luoweifu/article/details/46701167 作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下线程优先级和线程安全。线程优先级现在主流转载 2016-02-19 11:37:21 · 431 阅读 · 0 评论 -
编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
原文:http://blog.youkuaiyun.com/luoweifu/article/details/46595285 作者:luoweifu 转载请标名出处什么是线程什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把转载 2016-02-19 11:11:17 · 697 阅读 · 0 评论 -
Java -Xms -Xmx -Xss -XX:MaxNewSize -XX:MaxPermSize含义记录
出现java.lang.OutOfMemoryError异常时,常使用的方法便是将如下配置语句:-Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M -XX:MaxPermSize=256M加在MyEclipse中的JDK的Optional Java VM arguments里面。然而久而久之容易混淆或忘却其中参数的含义,下面就简单的将这些参数的意义记录一下原创 2016-02-18 17:05:57 · 9099 阅读 · 1 评论 -
C++ 运算符重载与友元函数的简单运用实例
前言:C++的运算符重载与友元函数是像类似Java这种纯的面向对象编程语言所不具备的特征,那么使用运算符重载与友元函数到底能带来什么样的不同呢?举个例子,假如需要实现一个复数的加减法,用Java实现后两个复数相加的代码可能如下:public static void main(String[] args) { ComplexNumber a = new ComplexNumber(10原创 2016-02-15 14:23:21 · 1596 阅读 · 0 评论 -
基于Tcp协议与基于Http协议的RPC简介笔记
前言:之前对于RPC方面的学习多限于对RMI原理的学习,直到今天在看陈康贤前辈的《大型分布式网站架构-设计与实践》这本书的时候,才发现原来RPC可以基于TCP协议也可以基于HTTP协议(这里所说的TCP协议与HTTP协议更多的是指服务的消费者与远端的提供方的一种连接或消息传送形式),在此就简单记录一下,作为之后研究其它类似框架的基础。RPC全称Remote Process Call,即远程过程调用,原创 2016-02-04 16:15:19 · 11628 阅读 · 3 评论 -
C++ 宏定义与常量
前言:突然想起很久之前上课时被问及C++ 宏定义与常量的区别,仔细了想了想,并没有答起(尴尬),这次就简单总结一下C++宏常量与常量的区别吧。1. 宏定义宏定义是C语言提供的三种预处理中的一种,又称为宏代换、宏替换,简称“宏”,用#define定义,如下:#define Pi 3.1415926宏常量没有类型,它是在编译前即预编译阶段进行字符替换,就好比如下的例子:S = PI原创 2016-01-29 13:10:14 · 19984 阅读 · 1 评论 -
Python 3.x基于Svn补丁日志自动生成Java项目补丁包
1. 前言之前打补丁的方法一直是将项目编译后的文件全部拷贝出来,然后再删除不必要的文件,经常会为了一个小BUG或其它什么的打补丁,然后就一直删删删。然而作为一名爱“偷懒”的程序猿,能让代码做的,就坚决不会自己动手做,正好最近学习了Python,所以决定使用Python开发一个基于Svn补丁日志的自动生成补丁包的脚本。2. 使用说明先看看如何使用,再贴源码吧。为了使用方便,尽可能减少操作,我决定增加一原创 2016-01-29 11:09:36 · 1506 阅读 · 0 评论 -
Python 3.x基于Xml数据的Http请求
1. 前言由于公司的一个项目是基于B/S架构与WEB服务通信,使用XML数据作为通信数据,在添加新功能时,WEB端与客户端分别由不同的部门负责,所以在WEB端功能实现过程中,需要自己发起请求测试,于是便选择了使用Python编写此脚本。另外由于此脚本最开始希望能在以后发展成具有压力测试的功能,所以除了基本的访问之外,添加了多线程请求。整个脚本主要涉及到的关于Python的知识点包括:基于urlli原创 2016-01-28 10:27:34 · 6684 阅读 · 0 评论 -
volatile关键字作用与内存可见性、指令重排序概述[JAVA]
在理解volotile关键字的作用之前,先粗略解释下内存可见性与指令重排序。1. 内存可见性Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存,并且线程只能访问自己的工作内存,不可以访问其它线程的工作内存。工作内存中保存了主内存中共享变量的副本,线程要操作这些共享变量,只能通过操作工作内存中的副本来实现,操作完毕之后再同步回到主内存当中,其JVM内存模型大原创 2019-10-21 15:16:24 · 8836 阅读 · 7 评论 -
生产者消费者模式与实际应用
1. 前言目前的项目需要在用户提交订单后,将订单放入队列,并由专门处理订单的线程对队列中的订单做处理,由此便引入了生产者与消费者模式。2. 生产者与消费者模式概述生产者与消费者模式是通过一个容器来解决生产者与消费者的强耦合关系,生产者与消费者之间不直接进行通讯,而是利用阻塞队列来进行通讯,生产者生成数据后直接丢给阻塞队列,消费者需要数据则从阻塞队列获取,实际应用中,生产者与消费者模式则原创 2016-01-18 17:58:19 · 7472 阅读 · 0 评论 -
分布式Session存储方案
前言 本文主要探讨集群后不同Web服务器获取Session数据的问题解决方案。1. Session Stick Session Stick 方案即将客户端的每次请求都转发至同一台服务器,这就需要负载均衡器能够根据每次请求的会话标识(SessionId)来进行请求转发,如下图所示。 这种方案实现比较简单,对于Web服务器来说和单机的情况一样。但是可能会带来如下问题:如果有一原创 2016-01-07 17:44:47 · 5231 阅读 · 0 评论 -
Spring项目中使用Junit单元测试并配置数据源的问题
一、问题描述由于公司项目中的数据源是配置在Tomcat中的server.xml中的,所以在使用Junit进行单元测试的时候,无法获取数据源。 二、解决方案由于项目集成了Spring的自动注入等功能,所以在使用Junit进行单元测试的时候需要保证Spring的配置文件都能被加载,同时需要保证连接数据库的数据源必须被加载,这就需要配置单独的数据源,具体方法如下:新建spring_jndi_test.x原创 2015-12-29 16:43:01 · 11939 阅读 · 1 评论 -
深入浅出JMS(一)---JMS简介
如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了。为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随着这个疑惑,短息和留言应运而生,无论手机是否开机、是否未及时接到,我们都能得到其中的信息。JMS提供了类似这样的功能,本章我们将系统的学习JMS中的相关重要内容。 Ø 掌握J转载 2014-07-28 15:54:29 · 608 阅读 · 0 评论 -
plupload上传插件在SpringMVC中的整合(JAVA 版)【一】
前言:最近在给学院的网站做一个添加附件的功能,首先到了某某邮箱看了一下,简单实用,但是是flash做的,无法拷贝,就只好上网找插件了。经过筛选,终于找到plupload这款插件(事实上有的编辑器自带添加附件功能)。官网只有PHP版本,后来各种百度谷歌,找到的资料都用点小问题,拼搏一天终于实现了功能,下面就把遇到的问题和重点部分写出来,希望遇到同样问题的同学可以参考。首先你需要下载pluploa...原创 2014-07-19 10:06:02 · 14272 阅读 · 22 评论