其他
文章平均质量分 86
程序新视界
个人公众号【程序新视界】,一个硬技术,软实力同步提升的平台。《Spring Boo技术内幕:架构设计与实现原理》作者,《深入以太坊智能合约开发》联合作者之一。主要从事于三方支付行业。
展开
-
GitHub 2023排名前十的最佳开源项目
开源软件(OSS)彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中,要找到最适合需求的开源项目可能会让人不知所措。今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目,也可以从整体上了解一下目前技术的整体动向。原创 2023-11-28 07:56:09 · 7515 阅读 · 6 评论 -
Log4j一波未平,Logback 一波又起,再爆漏洞
背景前些天Log4j的漏洞,不知多少程序被抓去加班,关键漏洞还是接连出现的,真是辛苦了程序员,也辛苦了Log4j的开源作者。为此,二师兄还专门写了一篇还原漏洞的文章【原文点这里】。竟然有朋友在评论区说”就这么一个小漏洞,值得这么大肆的写吗?“。看来那位朋友还没意识到漏洞的严重性。本来以为使用的是Logback能够躲过一劫,没想到,又看到朋友圈在讨论Logback的爆出的新漏洞,吓得赶紧看了一下项目中的版本。漏洞详情为了了解一下是什么情况,先去官网(https://logback.qos.ch/ne原创 2021-12-25 17:27:06 · 2888 阅读 · 1 评论 -
Git如何checkout远程tag
拉取项目执行命令git clone:git clone git@github.com:secbr/nacos.git查看远程tag执行命令git tag:appledeMacBook-Pro-2:nacos apple$ git tag0.2.10.2.1-RC10.3.00.3.0-RC10.4.0...此时可找到需要拉取的tag名称。checkout需要的tag执行命令git checkout:(base) appledeMacBook-Pro-2:nacos app原创 2021-07-15 15:00:15 · 13811 阅读 · 1 评论 -
Github代码fork之后,如何与原仓库进行同步?
前言我们在使用GitHub时,看到好的项目或想给某个项目做贡献,此时通常会将代码仓库fork到自己的账号下。如果在此期间,如果源仓库的代码发生了变动,就需要与源仓库代码进行同步。本篇文章就带大家实操一下,如何实现这一操作。配置项目的上游仓库首先需要大家将fork的仓库代码clone到本地,后面的所有操作都是基于本地代码库来进行操作的。比如,可以通过git clone先将fork的代码下载到本地:git clone git@github.com:secbr/nacos.git后续的一步步操作,都是原创 2021-06-03 07:14:37 · 1486 阅读 · 1 评论 -
Solidity如何通过代码减少gas消耗
我们知道,在以太坊上的交易gas是有上限的,因此也是比较昂贵的,特别是针对一些复杂业务的处理,随着业务数据的增长,有可能会导致gas超高,甚至业务无法进行操作。之前专门写过文章来描述如何减少gas的细节内容,这里再为大家讲解一种通过代码中memory来大幅度减少gas使用。首先先看下面示例代码:pragma solidity ^0.5.10;contract Test{ ...原创 2020-02-18 09:40:55 · 2321 阅读 · 0 评论 -
Solidity函数返回(returns)多个值及接收方式
在Solidity中一个函数方法是可以返回多个结果的。下面示例中完整的展示了,如何定义多返回值的函数,并且如何获取参数。pragma solidity ^0.5.10;contract ManyReturns{ // 基础方法:返回多个参数,用于被调用 function getThreeNum() public returns(uint one,uint two, uint...原创 2020-02-17 11:14:54 · 8838 阅读 · 1 评论 -
solidity中transfer异常"send" and "transfer" are only available for objects of type address
在solidity只能合约中,正常情况下我们可以使用transfer方法来进行转账操作,具体使用如下:msg.sender.transfer(_value);这样,就可以将指定的金额转到msg.sender的账户内。但是,还有一些情况时,ETH的接收者并不是msg.sender。那么该如何处理呢?使用下面这一种方式?function transfer(address _to, uint25...原创 2020-01-16 16:53:01 · 4789 阅读 · 1 评论 -
SOLIDITY REMIX方法传递数组参数
在编写智能合约的时候,某些方法可能需要通过传递数组来实现,那么在solidity中如何通过传递数组来完成相应的功能呢。下面以具体实例来进行说明。function test1(address[] memory a3,uint256[] memory a4) public{ // 省略业务逻辑}在上面的方法中参数a3为地址的数组,参数a4为整数的数组。在remix编译出来的方法中展示效果如...原创 2019-09-01 01:45:01 · 7252 阅读 · 0 评论 -
Solidity 文档--第三章:Solidity 编程实例
Solidity 编程实例Voting 投票接下来的合约非常复杂,但展示了很多Solidity的特性。它实现了一个投票合约。当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵。我们不能解决所有的问题,但至少我们会展示如何委托投票可以同时做到投票统计是自动和完全透明。思路是为每张选票创建一个合约,每个投票选项提供一个短名称。合约创建者作为会长将会给每个投票参与人各自的地址投票权。地址后面的转载 2016-11-21 09:57:10 · 9186 阅读 · 0 评论 -
Solidity 文档--第二章:安装 Solidity
安装Solidity基于浏览器的Solidity如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问基于浏览器的Solidity。如果你想离线使用,你可以保存页面到本地,或者从 http://github.com/chriseth/browser-solidity 克隆一个。NPM / node.js这可能安装Solidity到本地最轻便最省事的方法。在基于浏览器的Sol转载 2016-11-18 15:47:44 · 7097 阅读 · 0 评论 -
Solidity番外篇(一)Solidity在线or插件使用
在学习以太坊合约的过程中会需要自己编写智能合约,官方提供了几种方式供大家使用。下面分别简单介绍一下,如果有错误的地方,还留言指正补充。DAPP IDE说实话,这个版本IDE我还没有使用过,只提供一个连接地址供大家参考。 The-DApp-IDE 此连接中有具体的使用描述。在线编程Solidity支持在线编程,在线编程网址为:https://ethereum.github.io/browser-s原创 2016-11-18 11:13:19 · 6894 阅读 · 1 评论 -
Solidity 文档--第一章:智能合约入门
一个简单的智能合约先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节。存储contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint re转载 2016-11-17 22:08:21 · 3360 阅读 · 0 评论 -
Solidity 文档--目录
Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。在后续内容中你将会发现,使用它很容易创建用于投票、众筹、封闭拍卖、多重签名钱包等等的合约。注意 目前尝试Solidity的最好方式是使用基于浏览器的编译器(需要一点时间加载,请耐心等待)。有用链接Ethereum Browser-Based Compiler Changelog Stor转载 2016-11-17 21:56:18 · 1698 阅读 · 0 评论 -
Linux安装activemq
下载官网下载地址:http://activemq.apache.org/components/classic/download/获得对应版本下载地址,并下载。wget https://mirrors.tuna.tsinghua.edu.cn/apache//activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz安装拷贝gz文件到/usr/lo...原创 2019-04-24 16:37:25 · 1861 阅读 · 5 评论 -
单独HornetQ启动HornetQ
启动HornetQ打开命令行,进入到HornetQ的bin目录下,执行./run.sh (或者在Windows下 run.bat)。 在linux环境下可执行nobup ./run.sh。配置项默认情况下,启动和停止脚本都使用config/stand-alone/non-clustered 下的配置文件。要使用不同的配置目录,可运行./run.sh ../config/stand-alone/cl原创 2016-08-22 14:47:53 · 1746 阅读 · 1 评论 -
Merkle tree在区块链中的应用
上篇博文我们转载了一篇《Merkle Tree(默克尔树)算法解析》,那么大家是不是会有疑问,学习这个算法之后,我们改怎么去应用,区块链中又是如何应用的?今天这篇博客就以Merkle tree在区块链中的具体用法为例简单说明一下。要了解Merkle tree的使用,先要了解一下区块链中每个区块的数据结构,下面以比特币的数据结构为例说明。如下图,数据区块由区块头和区块体两部分组成: 从图中我们可以看原创 2017-01-22 21:06:09 · 11165 阅读 · 0 评论 -
Merkle Tree(默克尔树)算法解析
Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1]1、HashHash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Hash运算得到固定长度的Has转载 2017-01-20 17:52:14 · 119006 阅读 · 18 评论 -
以太坊开发入门-朱智胜-专题视频课程
本课程是一个系列基础教程,目标是带领读者上手实战,课程以以太坊为核心,带领到家从具体的以太坊节点部署、真实环境同步及问题、 以太坊节点json-rpc接口调用等,以及这个过程中的经验分享。...原创 2018-04-19 09:18:27 · 766 阅读 · 0 评论 -
SecureCRT超时自动断开解决方案
解决方法可以通过两个入口进行设置: 1、右击Session中的连接,选择Properties->Terminal->Anti-idle->勾选Send protocol NO-OP。 2、当已经建立连接的情况,可以通过上面方法,另外也可以通过点击Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP选中之后,后面显原创 2016-09-13 19:06:10 · 29422 阅读 · 0 评论 -
SecureCRT通过脚本实现自动化登录
场景公司为了安全性,访问服务器IP地址之前又添加了一层堡垒机,每次登录都要非常麻烦的通过ssh输入IP地址,用户名和密码。在网络不好或大量服务器IP的情况下,会浪费大量的时间在这上面。解决方案SecureCRT是一款很好用的终端仿真程序。通过录制脚本功能,可以很容易的录制一个脚本。然后修改,使用此脚本就可以轻易的登录系统。步骤1、打开script–》Start Recording Script,然后原创 2016-03-17 18:46:31 · 21077 阅读 · 2 评论 -
Spring+dubbo+mybatis出现NoSuchMethodError和MutablePropertyValues.add异常
场景Spring+mybatis3+ dubbo整合下,出现以下异常。在此问题上花费了两个多小时,终于查到原因。org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationCo原创 2016-03-10 16:51:33 · 5110 阅读 · 0 评论 -
架构01-什么是反向代理,什么又是正向代理?
说起Nginx,我们都知道它可以用来做反向代理。那么,到底什么是反向代理,对应的正向代理又是什么呢?这篇文章就带大家来了解一下。其中反向代理也是系统架构的重要组成部分。说起代理其本质上可以理解为中介。当A和B不方便进行交互时,往往会引入一个中间角色C,那么C便是中介,便是代理。正向代理正向代理服务器通常位于客户端和服务器之间,类似一个跳板机,通过代理服务器可以访问到目标服务器。正向代理时,通常,客户端发送对目标服务器的请求,代理服务器在中间将请求转发给目标服务器,并将结果返回给客户端。正向代理时客原创 2021-03-16 21:29:17 · 511 阅读 · 2 评论 -
nginx入门(1)——反向代理
反向代理百度百科上的解释如下: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。参考下图可以更清晰的了解这个过程: 通俗的讲,反向代理就是一台负责转发请求及请求结果的服务器,在客户机看来它就是服务器。原创 2016-02-29 19:54:18 · 1387 阅读 · 0 评论 -
Oracle创建Sequence时Order/NoOrder选项
问题Oracle创建Sequence时会有Order/NoOrder两个选项,那么到底什么场景用到Order,什么场景又用到NoOrder呢?官方文档ORDER guarantees that sequence numbers are generated in order of request. You may want to use this option if you are原创 2015-09-06 10:34:42 · 13686 阅读 · 0 评论 -
push代码到github每次输入用户名和密码
问题每次进行代码push的时候都需要输入用户名和密码,效率极低,安全性也无法保证。原因使用了https的方式push代码解决方案方法一在termail里输入:git remote -v 输出:origin git@github.com:HappySecondBrother/example.git (fetch)origin git@github.com:HappySecondBrother/e原创 2016-08-10 21:53:57 · 3219 阅读 · 2 评论 -
github的Watch、Star和Fork
github的右上角,一篇按钮,分别为:Watch、Star和Fork。此篇博文就简单介绍一下这三个按钮的作用。按钮详情如下图: Watch按钮当勾选此按钮下面的Watching时,即关注了此项目的所有动态信息,包含:提交、评论等等。个人中心收到通知消息绑定邮箱,邮箱收到相应消息点击Not Watching即可取消接受消息经常变化的项目可优先选择此项进行跟踪Star按钮Star:关注或点赞原创 2016-08-05 10:16:43 · 2145 阅读 · 0 评论 -
ZK Spring 整合View/Controller层属性注入
问题场景ZK实例化的View/Controller不同于Spring MVC实例化的Controller,不受Spring管理,无法进行注入。解决方案方法一在doAfterCompose方法中调用SpringUtil提供的获取bean的方法,给bean赋值,代码如下:userService = (UserService) SpringUtil.getBean("userService");方法二在d原创 2015-08-18 21:06:40 · 4186 阅读 · 2 评论 -
springboot logback中动态获取application中配置项
在多环境的情况下,logback的日志路径需要进行针对性配置,也就是需要通过application.yml文件中进行配置。logback自身支持以下方式配置:property name="USER_HOME" value="/home/sebastien" />但是怎样才能灵活的配置“/home/sebastien”参数呢,如果不同的环境此参数值不同,那么就需要通过applicat原创 2018-01-21 20:48:13 · 18215 阅读 · 0 评论 -
日志文件锁定问题
场景描述一台机器上部署两个同样的应用,两个相同的应用服务同时使用一套日志输出文件。异常现象日志文件中两个应用间歇性的丢失日志信息。分析及解决日志丢失原因:两个应用程序在写日志的时候会对日志文件进行锁定,导致此时另外一个应用程序无法对此日志文件记性读写。解决方案:将两个应用程序的日志打印到不同的日志文件内。原创 2015-07-24 16:59:40 · 2270 阅读 · 0 评论 -
slf4j中有典型适配器模式,不看一看?
slf4j的日志源码分析第5篇,我们来讲解其中适配器模式的运用案例。历史文章回顾:1、《聊聊这些年我们用过的Java日志框架》2、《slf4j框架源码中是如何实现双重锁的?》3、《slf4j中是如何运用SPI机制兼容各类日志框架的?》4、《slf4j是如何绑定具体的日志框架的?》5、《slf4j中的桥接器是如何运作的?》什么是适配器模式在看slf4j中适配器模式的具体实现之前,我们先来了解一下适配器模式的基础概念和运用场景。适配器模式,运用的场景用一句通俗的话来说就是:用一个包装来包装不兼原创 2020-12-05 08:18:42 · 980 阅读 · 0 评论 -
slf4j中的桥接器是如何运作的?
关于slf4j源码分析系列,更多精彩内容,请关注公众号“程序新视界”,持续更新中…阅读分析slf4j的日志源码,发现其中涵盖了许多知识点和优秀的设计,关键它们都是活生生的实践案例。写成系列文章与大家分享,欢迎持续关注。第4篇。前言在日志框架slf4j中有一组项目,除了核心的slf4j-api之外,还有slf4j-log4j12、slf4j-jdk14等项目。这一类项目统称桥接器项目,针对不同的日志框架有不同的桥接器项目。在使用logback日志框架时,并没有针对的桥接器,这是因为logback与.原创 2020-11-28 08:48:29 · 675 阅读 · 0 评论 -
slf4j框架源码中是如何实现双重锁的?
阅读分析slf4j的日志源码,发现其中涵盖了许多知识点和优秀的设计,关键它们都是活生生的实践案例。因此专门写成系列文章与大家分享,欢迎持续关注。第1篇。前言阅读源码,必然需要先将源代码下载到本地,本篇为本系列第一篇,因此特意建议大家在阅读本篇文章时看一下配套的源代码(持续更新)。本文章已经将原有的代码fork到笔者的GitHub仓库,后续代码均以fork过来的代码为基准进行讲解。地址:https://github.com/secbr/slf4j好了,本篇文章我们就从使用日志框架最常见的入口类及方法入手原创 2020-11-16 17:17:29 · 519 阅读 · 0 评论 -
quartz入门(二)SimpleTrigger简单实例
此篇博客为quartz2.2.1第二个例子的解析,此例子主要对SimpleTrigger的使用进行详细说明,详细使用说明均在代码中以注释的形式体现。SimpleTrigger:在某个时刻开始,然后按照某个时间间隔重复执行。SimpleTrigger包括属性:开始时间,结束时间,重复次数,重复间隔。SimpleJobpackage com.secbro.job;import org.quartz原创 2015-06-15 13:34:40 · 8687 阅读 · 0 评论 -
quartz入门(一)下载及简单实例
下载官网下载地址:http://www.quartz-scheduler.org/ 下载步骤: 1、点击橘黄色的download连接。 2、点击Direct Download下面的Quartz 2.2.1 full distribution (release notes) 3、点击quartz-2.2.1-distribution.tar.gz进行下载,选择两个中的任何一个即可。原创 2015-06-12 16:43:44 · 4681 阅读 · 1 评论 -
SVN中tag branch trunk用法详解
在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆。在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs)。一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的转载 2017-03-29 11:18:35 · 1844 阅读 · 0 评论 -
Intellij Idea 使用SVN更新到指定版本
使用问题默认情况下,changes视图,在Incoming中更新任意版本,整个项目都会被更新。这样会导致的更新到很多不应该更新的版本。解决方法方法很简单,只用在原本操作的过程中勾选指定版本即可。详细步骤如下: 进入changes视图,进入Incoming,右击新增版本(这里往往会有很多版本);选择Update Project,进入版本更新选择项界面。勾选Update/Switch to speci原创 2016-03-22 17:25:48 · 64048 阅读 · 5 评论 -
Intellij 解除(去除)SVN关联
安装插件打开Intellij的setting(ctrl+alt+s),选择plugins,在右边搜索框输入“SVN”,搜索。选择“SVN disconnect”,安装此插件。 插件使用点击菜单栏中的VCS,在下拉菜单中选择SVN disconnect,完成SVN版本管理移除。原创 2015-11-05 10:46:09 · 37270 阅读 · 0 评论 -
SVN更新被Locked,Can't open file 'folder/.svn/tmp/text-base/file.svn-base'
错误状况最近项目SVN每次更新项目都会出现Can’t open file ‘项目目录/.svn/tmp/text-base/xxx.xml.svn-base’类似的错误,同时导致项目目录被Locked,只有执行clean up才能进行解锁。同时,针对单个文件或文件夹的更新操作却没有问题。其中错误信息中“xxx.xml”文件为导致错误的文件。原因分析及查找: 1、浏览SVN资源库,查看出错的xxx.原创 2015-06-09 17:40:42 · 8269 阅读 · 0 评论 -
不要再用main方法测试代码性能了,用这款JDK自带工具
作为软件开发人员,我们通常会写一些测试程序用来对比不同算法、不同工具的性能问题。而最常见的做法是写一个main方法,构造模拟场景进行并发测试。如果细心的朋友可能已经发现,每次测试结果误差很大,有时候测试出的结果甚至与事实相反。当然,这不排除是因为软硬件环境因素导致,但更多的可能是因为所使用测试方法自身有问题。比如,不同需要性能比较方法放到一个虚拟机里调用,有可能会互相影响,缺少预热的过程等。本文给大家推荐一款JDK9及以后自带的一款可用于软件基准测试的工具JMH(Java Microbenchmark原创 2021-01-07 12:32:39 · 989 阅读 · 1 评论 -
junit5中Assertions替代了Assert
最近基于Spring Boot2.x版本中的JUnit5进行单元测试,发现Assert类已经不存在了,在JUnit5中使用Assertions进行替代。而且Junit5不仅仅替代了这么一个类,还有其他大量的类被重新定义和替换,在使用的时候大家需要留意。同时Assertions中也提供了更多的方法,相关源码实现如下:@API( status = Status.STABLE, si...原创 2020-03-06 09:26:44 · 2851 阅读 · 1 评论