- 博客(45)
- 收藏
- 关注
原创 监控libary开发
我遇到的一个场景是,想提供一个jar包,各个服务引用后,可以将相关数据上报到监控中心。咨询一轮同事后,大家对主动上报的做法比较不能接受(即需要些一行代码,代码里传入监控数据的key-value)。而对注解上报的方式比较好接受,所谓注解上报,是指在方法上添加一个注解,由注解+返回值来组成上报的key-value。调研了目前市面上主要的aop方案,主要有spring aop, aspectj, jav...
2018-06-11 19:07:53
179
原创 服务运行原理
当我们写完代码,发布之后,服务器上到底发生了什么。目前我们的代码都是部署在tomcat上,tomcat运行在虚拟机上,虚拟机运行在物理服务器上。下面是服务运行的整体结构,分析每层都发生了什么,有助于我们了解服务是怎么运行的。tomcattomcat是一个开源的应用服务器,它可以运行Java web应用。先看下tomcat的结构:server: 表示这个tomcat
2017-07-28 11:09:52
614
原创 工作环境搭建
在搭建开发环境时记录的步骤,软件安装包已上传犀牛云盘,可选择官网或公司内部的犀牛云盘下载intellij idea 安装:下载:http://www.jetbrains.com/idea/download/ , 选择ultimate版本直接双击安装使用licence code激活: http://idea.lanyus.com/ 生成注册码java环境安装:下载
2017-07-27 15:26:17
289
原创 审核回调原子化方案
要解决的问题:目前UGC的审核分为三种,一种是审核评价文字,会变更评价的整体状态;一种是审核评价带图,会变更评价图片的状态;还有一种是审核回应,会变更回应的状态。现在存在一种情况,当审核方同时或者在很短的时间间隔内提交一个评价的多张图片状态更新请求,会出现某张图片的更新操作没有生效。出现此问题的根本原因是因为,每次更新图片状态时,都会先读整个ReviewData,更新该图片在Rev
2017-07-27 14:41:03
354
原创 回调原子化方案调研
目前审核分为三种,一种是审核评价文字,会变更评价的整体状态;一种是审核评价带图,会变更评价图片的状态;还有一种是审核回应,会变更回应的状态。现在存在一种情况,当审核方同时或者在很短的时间间隔内提交一个评价的多张图片状态更新请求,会有某张图片的更新操作没有生效。出现此问题的主要原因是因为,每次更新图片状态时,都会先读整个ReviewData,更新该图片在ReviewData中的状态,然后再根
2017-07-27 14:34:38
269
原创 泛型
什么是泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。怎么使用泛型泛型方法泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。
2017-07-27 11:15:12
241
原创 Map
HashMap存储方式:数组加链表 支持key value为null, null key总是放在数组的第一个位置 线程不安全 元素在数组的位置是hashcode() % table.length,所以一个位置链表的元素的hashcode不一定一致构建参数: threshold = initialCapacity(默认为16), loadFactor = loadFactor 当Key-val
2017-05-11 22:32:32
211
原创 【JVM读书笔记】- Java内存区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存分为若干个区域。1. 程序计数器作用:通过改变这个计数器的值来选取下一条需要执行的指令。 如果正在执行的是Java方法,那么计数器记录的是正在执行的虚拟机字节码指令地址;如果正在执行的是Native方法,那么此计数器为空。存储方式:由于Java虚拟机是通过线程轮流切换并分配处理器的方式来实现的,在任何一个确定的时刻,一个处理器(内核)都
2017-01-11 09:01:14
436
原创 【Java并发编程】读书笔记
volatile定义:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。 理解:如果一个字段被声明为volatile的,那么Java线程内存模型确保所有线程看到的这个变量是一致的。 实现原理:Lock前缀指令会引起处理器缓存回写到内存
2017-01-07 20:12:43
287
原创 职业规划
职业规划来现在的公司工作已快一年,这一年来一直在做些简单的java开发,感觉进步异常缓慢,如果继续在这里混下去,估计2年或3年后仍是个java初级工程师。 主要发展的技能:java web会使用spring mvc开发web应用阅读spring mvc源码会前端开发,会使用一种前端框架快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q插入
2016-11-01 21:45:00
427
原创 最大连续子序列
leetcode题目: Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4], the contiguous subarray [4,−1
2015-06-10 21:08:17
365
原创 openstack rolling upgrade from havana to icehouse
升级步骤:备份配置文件、数据库 更改mysql配置,将default character 设为utf-8升级Keystone更改配置文件 编译安装python包升级数据库 升级glance更改数据库,UTF8的问题更改配置文件 编译安装python包Db sync升级
2015-05-28 10:13:52
588
原创 java面试
快一年没看过java,面试的时候被虐成狗,还是复习一下吧 内容有些是从书上看到,有些是百度到的。JVMJava运行时的数据区域: 1. 程序计数器 a. 当前线程所执行的字节码的行号指示器,通过改变本区域的值来选取下一条要执行的指令 b. 如果线程正在执行的是java方法,那么计数器记录的是正在执行的虚拟机字节码指令地址 c. 如果正
2015-04-12 18:00:35
558
原创 python 排序
python 排序python用for in range的方式真是不习惯,所以搜了一下:for i in range(1, 5): print i 输出是1,2,3,4 range(a,b)返回是 a到b-1 range(a)返回是0到a-1 range(a,b,2)返回的是从a到b-1,每次步长是2 所以range(1,10,2)返回是1,3,5,7,9 想要逆序
2015-03-05 21:31:54
342
原创 openstack horizon 报 error
[Thu Dec 25 07:29:51 2014] [error] **kwargs)[Thu Dec 25 07:29:51 2014] [error] File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 195, in _time_request[Thu Dec 25 07:29:51 20
2014-12-25 15:54:17
446
原创 OPENSTACK运维感想
一个PRO环境中的Openstack集群,在倒下后1个月还没完全恢复,我也是醉了。如果不在这里,实在无法想象到外企的工作效率。不过还好坑的只是部门内部的人,倒也没闹出什么大的幺蛾子。一个月下来,有些感想,仅作记录吧。1.永远不要低估一个线上操作的影响。 线上的每个操作,都应该在beta环境经过测试验证没有危害才能实行。有些操作可能看起来只会影响那么一点,但是总会
2014-11-27 22:33:37
2887
转载 Openstack Avalibility Zone and Host Aggregates
又找到一位大神的博客http://blog.chinaunix.net/uid-20940095-id-4064233.htmlhttp://blog.chinaunix.net/uid-20940095-id-3875022.html大神在博客里说的很清楚了,总结一下A
2014-09-27 15:44:15
617
原创 linux vim 常用操作笔记
vim里跳到对应括号 按%全局替换: %s/被替换词/替换词/g g表示global跳到最后: shift +g跳到最前: gg
2014-07-26 00:19:31
321
原创 openstack add interface
Neutron和nova提供了api将一个Portattach到一台虚拟机上,主要是命令是:Step1: neutron port-create net-id (net-id: 想要将虚拟机接入的网络名)Step2: Nova interface-attach –port-id port-id-above server-id(port-id-above:上面创建的Port的id
2014-07-14 07:35:42
1363
原创 求数组中最长递增子序列
#include/*求数组中最长递增子序列长度:例如:a[10]={1,-1,2,-2,3,-3,4,-4,5,6},递增序列为1,2,3,4,5,6基本思想:对于子序列a[0-i],它的最长子序列长度为b[i],对于子序列a[0-i+1],它的最长子序列有两种情况:一种是前面的都比a[i+1]大,那么它的最长子序列就是a[i]的最长子序列一种是前面有比a[i+1]
2014-05-02 15:00:44
467
转载 BGP笔记摘抄
AS边界运行BGP,用于AS之间交换路由信息。借助BGP,每个AS都可以选择合适自己的IGP协议,并通过BGP来获得其他AS的路由信息。BGP需要做到:支持从各类IGP引入路由信息能够从这些数据中决策出最优路由不论从哪类IGP引入,将最优路由对外发布时,都采用统一的格式 BGP存储路由信息的数据库叫RIB (routing informationbse),分为3个部分:
2014-04-26 10:56:06
821
转载 JAVA 的对象初始化过程
在类中,域会在构造方法执行之前被赋初始值,比如:class Counter{ int i; Counter(){ i=9; }}这里,i会先被置为0,然后赋值为9.初始化的顺序是先静态对象(如果它们尚未因前面的对象创建过程而被初始化),然后是“非静态”对象。对象的创建过程:1.即使没有显式的使用static关键字,构造器实际上是静
2014-03-10 15:10:31
400
转载 java 覆盖与重载
重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系 参数列表又叫参数签名,指三样东西:参数的类型,参数的个数,参数的顺序覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了发生覆盖的条件
2014-03-10 10:21:22
530
原创 Java虚拟机笔记
java虚拟机运行时数据区:1.程序计数器 当前线程所执行的字节码的行号指示器,每个线程有独立的程序计数器,各线程之间计数器互不影响,独立存储。 如果线程正在执行java方法,此区域存的是正在执行的虚拟机字节码指令地址; 如果正在执行native方法,则计数器为空。2.java虚拟机栈 每个方法在执行的同时都会创建一个栈帧,存的是局部变量表,存
2014-03-09 20:29:51
407
原创 网络风险评估笔记
route指令:显示 kernel's IP routing tables(显示内核的IP表)结果是自上而下, 就是说, 哪条在前面, 哪条就有优先, 前面都没有, 就用最后一条defaultARP协议:A mapping between IP addresses and MAC addressesARP攻击:http://netsecurity.51cto.com/a
2014-02-26 15:33:01
587
转载 java static关键字
http://lavasoft.blog.51cto.com/62575/18771/static static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不
2014-02-21 13:04:48
394
转载 OSPF协议介绍
OSPF是一种典型的链路状态路由协议。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以,IETF的IGP工作组特别开发出链路状态协议——OSPF。目前广为使用的是OSPF第二版,最新标准为RFC2328。 OSPF作为一种内部网关协议(Interior Gateway Protocol,IGP),用于
2014-02-15 20:57:09
651
转载 openflow
stp 生成树协议 http://csboy121.blog.51cto.com/2312408/606862在一个交换网络中有可能会出现单点失效的故障,所谓单点失效,指的是由于网络中某一台设备的故障,而影响整个网络的通信。为了避免单点失效,提高网络的可靠性,可以通过构建一个冗余拓扑来解决。但是,一个冗余的拓扑,又会给我们的网络造成环路,而产生其它的影响。为了解决二层环路问题,而设计了
2013-10-29 21:25:51
453
转载 Serializable作用
Object serialization的定义:Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。 serialization不但可以在本机做,而且可以经由网络操作(RMI)。这个好处是很大的----因为它自动屏蔽了操作系统的差异,字节顺序(用Unix下的c开发过网络编程的人应
2013-10-22 10:26:38
467
转载 shell编程
#!/bin/bash 告诉系统执行该脚本程序,此为执行/bin/bash赋值:变量名=值特殊:num=2echo "this is the $numnd" 不会显示2nd,改成 echo "this is the ${num}nd"shell默认为字符串赋值eg:var=1var=$var+1打印的不是2,而是1+1 改成 ((var++))
2013-10-17 20:07:12
425
转载 ububtu eclipse 如何用maven添加jar包
建立一个maven项目后,向项目中添加jar包,不用手打打开pom.xml 打开dependencies标签dependencise下,点击add,输入jar包名称,点击ok在maven dependencies中会出现jar包http://liukai.iteye.com/blog/973120
2013-10-10 20:16:55
1140
原创 opendaylight sample2
package org.opendaylight.controller.topology; import java.io.InputStream;import java.net.URL;import java.net.URLConnection; import javax.xml.bind.JAXBContext;import javax.xml.bind.Unmars
2013-10-08 11:46:37
1274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人