- 博客(23)
- 收藏
- 关注
转载 BeanPostProcessors
文章转自:https://www.cnblogs.com/redcool/p/6397398.htmlSpring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext,认识一下Bean的生命周期活动,对更好的利用它有很大的帮助:下面以BeanFactory为...
2019-03-09 18:04:19 247
原创 kafka的二次封装
kafka是一个优秀的分布式发布订阅系统,我们可以很轻易地实现使用kafka Java API做发布消息或者订阅消息的功能。//producerpublic class ProducerApi { public static void main(String[] args) { Properties props = new Properties(); ...
2019-03-09 13:53:21 4381 5
原创 kafka 初学笔记
1. 概念分析 broker: 消息处理结点, 1个broker就是一个kafka服务进程或者服务器,多个broker组成kafka集群。 topic: 消息主题,所有的消息按照主题归类存储,每个topic会在broker上生成一个文件夹。 partition: topic的物理分组,一个topic可以设置多个partition。partition数量会被各个consu...
2018-08-29 19:24:50 440
原创 Logback + Logstash + Elasticsearch + Kibana 日志检索平台填坑记
公司需要做日志集中管理和检索,所以采用了Logback + ELK方案。由于是第一次接触ELK,遇到不少坑,整整花了一天才彻底搞通。本文elk的版本是6.3.2。根据其它网上文章,一一安装和配置各组件。1. 下载并启动elasticsearch,es不用修改配置,直接运行即可:./bin/elasticsearch。运行成功后,在浏览器打开网址:http://127.0.0.1:920...
2018-08-09 21:12:28 5995 6
转载 企业开发中选择logback而不是log4j的理由
文章写得太好了,忍不住转载原文地址:https://www.cnblogs.com/rollenholt/p/3525822.html 原文:不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢?如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因为什么原因呢?本文就来为你回答这个问题。...
2018-08-08 09:20:31 309
原创 解决一个Maven 工程依赖以及打包顺序的问题
有一个Maven主工程 pp,pp下包含两个Maven Module:pp-Api, pp-Service。pp 的 pom文件部分内容如下: <groupId>com.xxx.center.pp</groupId> <artifactId>xxx-center-pp</artifactId> <version>0.0...
2018-08-01 11:02:08 11798
转载 web开发中常见的安全漏洞及避免方法
原文地址:https://www.cnblogs.com/xiaochun126/p/5113371.html1、安全攻击 1、SQL、HTML、JS、OS命令注入 2、XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3、CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信任的网站。 4、目录遍历漏洞 5、参数篡改 6、会话劫...
2018-07-12 12:24:59 356
转载 字节序
字节序分大端序和小端序: Little endian:将低序字节存储在起始地址, Big endian:将高序字节存储在起始地址, java中一个int型数据占用4个字节,假如有一个16进制的int数,int value =(高字节) 0x01020304 (低字节) 主机字节序跟CPU有关的,IA架构(Intel、AMD)的CPU中是Little-Endian。所谓的...
2018-07-09 12:33:53 166
转载 mysql索引类型
1 普通索引,没有任何索引,支持null,不需要唯一。创建方法: CREATE INDEX indexName ON mytable(username(length)); ALTER mytable ADD INDEX [indexName] ON (username(length)) CREATE TABLE mytable( ID INT NOT NULL, username VAR...
2018-07-09 12:33:39 122
转载 IO多路复用
阻塞I/O有一个比较明显的缺点是在I/O阻塞模式下,一个线程只能处理一个流的I/O事件。如果想要同时处理多个流,需要多个进程或者多个线程,但是这种方式效率不高。 非阻塞的I/O可以在数据未准备好之前,先去做其它的,但是需要经常轮询查看流是否已经准备好了。轮询方法有: a. 忙轮询, while true { for i in stream[]; { if i has data r...
2018-07-09 11:58:12 167
原创 深入学习Java虚拟机学习笔记-虚拟机字节码执行引擎
1. 栈帧(Stack Frame) 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。 程序在编译时,栈帧需要多大的局部变量表,多深得操作数栈都已经确定,并写到方法表的Code属性中。 1.1 局部变量表:存放方法参数...
2018-06-15 22:08:56 138
原创 深入学习Java虚拟机学习笔记-虚拟机类加载机制
1. 类加载时机 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持java语言的运行时绑定(也称动态绑定)。 什么情况下需要开始类加载过程的第一个阶段:加载?虚拟机规范并没有规定。 初始化阶段,规范有严格规定,有且只有5种情况,必须立即对类进行初始化(加载、验证、准备自然需要在此之前开始): a. 遇...
2018-06-15 16:48:54 221
转载 深入学习Java虚拟机学习笔记-类文件结构
原文链接:https://www.cnblogs.com/wade-luffy/p/5929325.htmlClass类文件结构Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在class文件中,中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只...
2018-06-14 21:56:22 154
原创 深入学习Java虚拟机学习笔记-垃圾收集器与内存分配策略
1. 判断对象已死的方法1.1 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它,就加1。缺点是很难解决对象之间的相互循环引用。1.2 可达性算法:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为“引用链”,当一个对象到GC Roots没有任何引用链相连时,证明此对象是不可用的。 能作为GC Roots的对象包括:栈中引用的对象,方...
2018-06-13 22:02:33 164
原创 深入学习Java虚拟机学习笔记-内存区域与内存溢出异常
1. Java运行时数据区域1.1 程序计数器。字节码解释器工作就是通过改变这个计数器的值来选择下一条需要执行的字节码指令。 为了线程切换后能恢复到正确的执行位置,每个线程都需要有一个独立的程序计数器。 如果当前执行Java代码,程序计数器记录的是政治执行的虚拟机字节码指令的地址。如果是Native方法,这个计数器的值为空。1.2 Java虚拟机栈。也是线程私有的,它的声明周期与线程相...
2018-06-12 22:18:22 142
转载 Java-String.intern的深入研究
原文链接:https://www.cnblogs.com/Kidezyq/p/8040338.htmlWhen---什么时候需要了解String的intern方法:面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性、String常量池的设计以及String.intern方法所做的事情。但其实,我们在实际的编程中也可能碰到可以利...
2018-06-12 10:46:42 165
原创 geth源码阅读——交易流程
一、流程简介发起交易:指定目标地址和交易金额,以及需要的gas/gaslimit交易签名:使用账户私钥对交易进行签名提交交易:把交易加入到交易缓冲池txpool中(会先对交易签名进行验证)广播交易:通知EVM执行,同时把交易信息广播给其他结点二、源码分析2.1 发起交易//internal/ethapi/api/go// SendTransaction will create a transact...
2018-06-11 16:08:05 2212 1
原创 geth源码阅读——Node与Ethereum
Node和Ethereum是以go-ethereum代码中两个十分重要的数据结构,Node代表一个以太坊一个p2p端点,主要是账户管理(AccountManager)以及P2P协议(节点底层点对点协议)。Ethereum是整个以太逻辑的后端,负责以太区块链逻辑的方方面面,由Ethereum数据结构表现。我们首先看看Node的数据结构// Node is a container on which s...
2018-06-10 22:19:19 832
转载 geth源码阅读——交易池源码分析
txpool主要用来存放当前提交的等待写入区块的交易,有远端和本地的。txpool里面的交易分为两种,1. 提交但是还不能执行的,放在queue里面等待能够执行(比如说nonce太高)。2. 等待执行的,放在pending里面等待执行。从txpool的测试案例来看,txpool主要功能有下面几点。1. 交易验证的功能,包括余额不足,Gas不足,Nonce太低, value值是合法的,不能为负数。2...
2018-06-08 21:59:34 1599
转载 geth源码阅读——交易池(txpool)的分析
昨天的文章《以太坊如何清除已发出未打包的交易》已经聊到txpool中未被清除的交易如何清除,今天就系统的再聊一聊txpool。txpool对应的启动参数我们先来了解一下,针对txpool有哪些参数项可以设置,然后着重分析。--txpool.nolocals 为本地提交交易禁用价格豁免--txpool.journal value 本地交易的磁盘日志:用于节点重启 ...
2018-06-08 16:45:27 1887 1
原创 geth源码阅读——启动流程
当我们要启动geth网络,我们需要运行命令: geth --datadir=~/gethData --networkid 1 console。这期间,操作分为2步:1. 启动geth运行程序,初始化运行环境2. 运行命令一、初始化运行环境 //cmd/geth/main.gofunc init() { // 初始化CLI(命令行界面),并启动geth app.Action = get...
2018-06-08 11:12:37 3085
原创 geth源码阅读——创建外部账号的流程
本文探究 geth account new 命令的代码执行流程一、寻找命令入口1.1. go-ethereum工程/cmd/geth/main.gofunc init() { // Initialize the CLI app and start Geth app.Action = geth app.HideVersion = true // we have a commandto p...
2018-06-07 17:11:25 896
原创 go-ethereum 源码阅读环境搭建
1. 安装go运行环境https://dl.google.com/go/go1.10.2.windows-amd64.msi 2. 安装git工具3. 安装gcc(go编译geth需要使用)https://jaist.dl.sourceforge.net/project/tdm-gcc/TDM-GCC%20Installer/tdm-gcc-5.1.0-3.exe4. 安装go集成开发环境,这里...
2018-06-07 14:35:34 643
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人