开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

Git 对象存储结构分析

# 1. 前言 git 对象有四种:blob (数据块), tree (目录树), commit (提交), tag (标签)。 本文通过一个示例,以blob为例来讨论对象的存储结构。示例采用的git版本为**2.17** 。 # 2. 实践讨论 ## 2.1. 生成Blob对象文件 首先创建一个测试git仓库 ``` $ mkdir hello $ cd hello $ git init ``` 然后通过创建一个文件 test,test的内容为 "hello", 可以看到test文件的字节长度为6, 是因为创建文件的时候自动在行末加上了换行符\n。对文件其执行 `git add` , 可以看到在.git/objects目录下面生成了一个子目录ce,ce目录下面有个文件013625030ba8dba906f756967f9e9ca394464a。 ``` $ echo "hello" > test $ du -b test 6 test $ git add test $ find .git/objects/ -type f .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a ``` 该文件即为git为 test 文件数据内容生成的blob对象文件,该对象的SHA值为`ce013625030ba8dba906f756967f9e9ca394464a`. 至此,产生两个问题: 1. **对象文件的数据结构是什么样的 ?** 2. **对象的SHA值又是如何生成的 ?** ## 2.2. 对象数据结构及SHA值 根据 [Git-Internals-Git-Objects](https://git-scm.com/book/en/v2/Git-Internals-G...
囚兔 发布于 2天前 阅读 109 评论 1

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

《GNU通用公共许可证》第3版 中英对照翻译版 By: 冰焰火灵X

/* GNU 通用公共许可证 第3版 翻译。 翻译者:冰焰火灵X <1079092922@qq.com> 辅助工具(网站):有道翻译 / 百度翻译 翻译出来的部分字句进行了调整。 其中包含的译者注是一些可能必要的提醒和我对这份许可证的理解。在普通括号“()”里面注*的是我添加的注释。 本翻译文本采用 知识共享 - 署名 4.0 国际版许可证 进行许可。 */
ICE冰焰火灵X 发布于 1周前 阅读 145 点赞 1

修改Gradle 和Maven本地仓库的位置 方法

关于Maven的配置: 用过Maven的开发人员应该知道Maven可以通过配置 conf文件夹下面的settings.xml文件来修改maven下载的包,默认是下在c盘的用户文件夹下的.m2中,日积月累.m2会越来越庞大,自然会影响windows的响应,所以一般我们都会将其移动到其他非系统盘下。具体是修改下面这段配置: 默认是: <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> 修改后: <localRepository>D:/Maven/.m2/repo</localRepository> 这样就将下载的包下到D盘下的.m2中。 这里在补充一个很好的maven的远程地址即阿里云maven地址。 后来发现了 国内maven的救星【阿里云maven】真是由衷的感谢啊!具体配置如下,同样是操作conf下面的settings.xml文件: 将原有被注释了的那段<mirrors>找到并全部替换成下面这样: <mirrors>     <mirror>       <id>alimaven</id>       <name>aliyun maven</name>       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>       <mirrorOf>central</mirrorOf>  ...
JackFace 发布于 1个月前 阅读 150

JMETER进行HTTP接口性能实例

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。  但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具 Apache JMeter - Apache JMeter™ Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。 下面就以上图的Restful类型的接口为例简单介绍使用Jmeter进行接口测试的方法。 获取某个具体网关设备的基本信息。 请求 方法:GET URI:/api/gateway/<gateway_id> 参数: 在HTTP请求(http request)的头部(header)添加Userid和Token字段作为用户验证字段 参数名 必需 类型 说明 gateway_id true int 网关ID,置于URL内 响应 返回值:JSON格式的网关信息 参数: 参数...
摆渡人啊东 发布于 1个月前 阅读 350

Jenkins持续集成SVN版本库项目

1 概述 Jenkins是一个Java语言编写的开源的持续集成工具,它的前身为Hudson,使用它可以进行项目的自动编译、测试与发布,这极大的减轻了团队之间的繁琐重复的工作,从而加快了整个项目的交付进度。 jenkins官方wiki:https://wiki.jenkins.io/display/JENKINS/Use+Jenkins 2 安装Jenkins  2.1 安装JDK (1)安装包:jdk-7u80-linux-x64.rpm (2)解压安装包 $ rpm -ivh jdk-7-linux-x64.rpm (3)环境变量配置:vi /etc/profile JAVA_HOME=/usr/java/jdk1.7.0_80 JRE_HOME=/usr/java/jdk1.7.0_80/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH 2.2 安装Maven (1)安装包:apache-maven-3.5.2-bin.tar.gz (2)解压安装包 $ tar -zxvf apache-maven-3.5.2-bin.tar.gz -C /usr/local/ (3)配置maven的环境变量 2.3 安装Jenkins 这里有两种方式 方式一:直接下载jenkins.war包 运行jenkins.war的两种方式 (1)通过jenkins内建的容器运行 java -jar jenkins.war (2)通过独立的tomcat/jboss容器运行 方式二:通过yum安装(这里选择安装稳定...
FEINIK 发布于 2个月前 阅读 475 点赞 1

妆罢低声问夫婿, 画眉深浅入时无——我的年度Markdown笔记软件VNote

关于VNote的设计和开发
tamlok 发布于 2个月前 阅读 117 打赏 1

写自己的产品的教训

一个程序员开发自己的产品,是需要跳出技术的小圈子的
自由之信 发布于 3个月前 阅读 601 评论 7 点赞 3

java 通过网络唤醒实现远程开机

网络唤醒的原理其实是,网卡接收到特定格式的数据包,就会唤醒主板,从而启动机器,所以需要网卡和主板的支持。一般现在的电脑都支持的
千里明月 发布于 3个月前 阅读 3284 评论 6 点赞 10

SpringBoot集成JPA

idea工具,框架springboot,数据库mysql 可根据实体类自动生成数据表 更方便的执行CRUD操作
千里明月 发布于 3个月前 阅读 298 评论 7

Selenium使用及原理

#### 1、Selenium介绍 Selenium是一个Web测试工具,通过直接控制浏览器来实现Web测试,与真实用户操作完全一致。Selenium目前支持IE、Firefox、Chrome、Safari、Opera等浏览器,Selenium支持主流的操作系统平台-Windows、Linux、Mac等,Selenium支持Java、Ruby、Python、Perl、PHP、C#等编程语言进行制定测试。 Selenium IDE还可以录制用户的基本操作,用于方便生产测试案例,可以在随后的测试过程中回放。 #### 2、基于Python的简单使用 下面是一个简单的例子,用于打开百度并进行搜索 ```python from selenium import Webdriver from selenium.webdriver.common.keys import Keys #启动web driver server,打开IE浏览器 ie = Webdriver.Ie() #打开百度首页 ie.get('http://www.baidu.com') #获取搜索输入框 kw = ie.get_element_by_id('kw') #在输入框输入selenium,并回车 kw.send_keys('selenium'+Keys.RETURN) #ie.close() ``` #### 3、远程调用浏览器 selenium实际上是由服务端和客户端两部分组成的,服务端必须与被调用浏览器在同一主机,服务端通过webdriver控制浏览器的行为,客户端可以与服务端位于不同主机,只要网络能够访问到即可。客户端通过http协议(restful...
tangchenyi 发布于 3个月前 阅读 202

将自己的 jar 包发布到 maven 中央仓库

注册 首先到sonatype官网进行注册! 找到注册“sign up”,如图,进行注册! 登录 登录后,在页面上方点击“create”进行创建 issue。 获得如下图所示。 Summary:写你想做什么,你的包的功能。简单概述,要短一点。 Description:可以直接复制 summary,然后加一点描述信息。 Group Id :推荐写 github。例如我的是 io.github.dslzc ,很快能通过,自己域名的话我没试过,虽然我有自己的域名。 Project UR : 你的项目的描述,填写你的项目的 github 地址就可以了。 SCM url: 有填写说明的,如https://github.com/DSLZC/dslcode-common-utils.git。 Username(s):邀请其他人有权限一起完成这个项目。我当时没填。 等待 Issue 审批通过 网上说需要一天到两天。为何我这一步是秒过的。大概 20 秒过后我就接收到通过邮件了。或许是我填写的 github 比较好认真真实性。 配置 GPG 如果是 Windows 操作系统,需要下载 Gpg4win 软件来生成密钥对。建议大家下载 Gpg4win-Vanilla 版本,因为它仅包括 GnuPG,这个工具才是我们所需要的。 安装 GPG 软件后,打开命令行窗口,依次做以下操作: 查看是否安装成功 gpg --version 能够显示 GPG 的版本信息,说明安装成功了。 生成密钥对 ...
田心双木 发布于 3个月前 阅读 216 评论 1

Spring Session java连接redis 失败解决方案

使用Spring Session 连接redis时被拒绝的解决方案
jaffreyen 发布于 3个月前 阅读 191

在java中使用solr7.2.0 新旧版本创建SolrClient对比

solr:基于lucene的高性能查询服务器
jaffreyen 发布于 3个月前 阅读 132

zookeeper 管理 solrcloud 的配置以及安装 步骤

今天整理的是 在linux 环境中zookeeper搭建并且建立多个solr实例,和solr的集群搭建。 使用环境和工具:linuxCentOS6.5 , apache-tomcat-7.0.47.tar.gz,jdk-7u55-linux-i586.tar.gz ,solr-4.10.3.tgz.tgz ,zookeeper-3.4.6.tar.gz 注:由于本人是win7系统,所以安装的是linux虚拟机。 JDK这里就不写安装步骤了网上其他大神也写过,可以去搜索一个。 ————————————————————黄金分割线—————————————————— 搭建zookeeper: 在linux环境中先建立一个文件夹 放置解压的zookeeper压缩包: [root@localhost ~]# mkdir /usr/local/solrcloud   解压zookeeper压缩包,并保存在刚刚建立的文件中重命名,三个zookeeper实例: [root@localhost 文件位置]# tar -zxvf zookeeper-3.4.6.tar.gz  [root@localhost 文件位置]# cp -r zookeeper-3.4.6 /usr/local/solrcloud/zookeeper1 [root@localhost 文件位置]# cp -r /usr/local/solrcloud/zookeeper1 /usr/local/solrcloud/zookeeper2 [root@localhost 文件位置]# cp -r /usr/local/solrcloud/zookeeper1 /usr/local/solrcloud/zookeeper3 在每一个zookeeper文件夹中创建一个data文件加并...
Bill_Liu1 发布于 3个月前 阅读 29

linux jenkins 2.89.1 安装部署 持续构建svn下maven项目并部署到tomcat

jenkins 自动化构建部署工具。安装、修改主目录、配置环境、新建任务、部署项目到tomcat
jaffreyen 发布于 4个月前 阅读 414 点赞 2

基于Docker安装、部署、破解Confluence 6.6图文教程

> 原文:http://www.itmuch.com/work/confluence-crack/ > 采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章原文地址。 > Confluence可谓目前最强大的Wiki系统,但它是个收费软件。本文讲解如何安装、部署、破解Confluence,部署的环境是Docker。 ## WARNING * 不建议大家在公司使用破解版,用收费版的吧^_^。如果不想掏钱,可以尝试开源的`XWik` ,功能也非常强大。 * 本文只提供破解的思路及步骤,破解补丁 `atlassian-extras-decoder-v2-3.2.jar` 不提供,聪明如你,一定能在谷歌、百度、bing、ask上找到。 最近公司想将Confluence迁到Docker环境,同时顺序想升级一下。虽然公司用的是收费版,不过我顺便也研究了下怎么破解。以下是步骤,所用版本是 `Confluence 6.6` 。 Confluence的破解比较简单,只需要替换JAR包 `atlassian-extras-decoder-v2-3.2.jar` 就可以了。 ## 准备 ### Dockerfile 以下是Dockerfile。 ```dockerfile FROM atlassian/confluence-server MAINTAINER 周立 # 传入破解补丁 ADD crack/atlassian-extras-decoder-v2-3.2.jar ${CONFLUENCE_INSTALL_DIR}/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.2.jar # 设置...
EACDY 发布于 4个月前 阅读 491 点赞 1

秒杀解决方案:没有 redis 也能够支撑”小米在印度把亚马逊搞挂了”

没有 redis 也能够支撑”小米在印度把亚马逊搞挂了”事件的秒杀解决方案
monroeCode 发布于 4个月前 阅读 115

Spring Cloud各组件调优参数

原文: 采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章原文地址。 Spring Cloud整合了各种组件,每个组件往往还有各种参数。本文来详细探讨Spring Cloud各组件的调优参数。欢迎联系我的QQ:`511932633` 或微信:`jumping_me` ,补充或者勘误,一起总结出最全、最实用的调优参数。 ## Tomcat配置参数 ```yaml server: tomcat: max-connections: 0 max-threads: 0 ``` ## Hystrix配置参数 - 如隔离策略是THREAD: ```yaml hystrix.threadpool.default.coreSize: 10 hystrix.threadpool.default.maximumSize: 10 hystrix.threadpool.default.maxQueueSize: -1 # 如该值为-1,那么使用的是SynchronousQueue,否则使用的是LinkedBlockingQueue。注意,修改MQ的类型需要重启。例如从-1修改为100,需要重启,因为使用的Queue类型发生了变化 ``` 如果想对特定的`HystrixThreadPoolKey` 进行配置,则将`default` 改为 `HystrixThreadPoolKey` 即可。 - 如果隔离策略是SEMAPHORE: ```yaml hystrix.command.default.execution.isolation.strategy: SEMAPHORE hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests: 10 # 默认值 ``...
EACDY 发布于 4个月前 阅读 250

实用技巧:Hystrix传播ThreadLocal对象(两种方案)

> 原文:[http://www.itmuch.com/spring-cloud-sum/hystrix-threadlocal/](http://www.itmuch.com/spring-cloud-sum/hystrix-threadlocal/) > 采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章原文地址。 目前,Spring Cloud已在南京公司推广开来,不仅如此,深圳那边近期也要基于Spring Cloud新开微服务了。 于是,领导要求我出一套基于Spring Cloud的快速开发脚手架(近期开源)。在编写脚手架的过程中,也顺带总结一下以前在项目中遇到的问题: > 使用Hystrix时,如何传播ThreadLocal对象? 我们知道,Hystrix有隔离策略:THREAD以及SEMAPHORE。 > 如果你不知道Hystrix的隔离策略,可以阅读我的书籍《Spring Cloud与Docker微服务架构实战》,或者参考文档: ## 引子 当隔离策略为 `THREAD` 时,是没办法拿到 `ThreadLocal` 中的值的。 举个例子,使用Feign调用某个远程API,这个远程API需要传递一个Header,这个Header是动态的,跟你的HttpRequest相关,我们选择编写一个拦截器来实现Header的传递(当然也可以在Feign Client接口的方法上加`RequestHeader` )。 示例代码: ```java public class KeycloakRequestInterceptor implements Request...
EACDY 发布于 5个月前 阅读 133

restful框架Jersey另类用法-接口即服务

记录一下我在项目中jersey框架的另一种使用方式。 项目java部分框架采用 spring+jersey+mybatis,数据库采用的mysql。 思路其实很简单,将interface当做jersey的Resource使用。 为什么会有这种要求呢? 其实也很简单, 不想单独写Resource,目的只有一个通过合理的方式减少程序猿的代码量。用最少的代码做更多的事情, 是我一直在考虑的问题。不讲理论,直接上代码吧。 web.xml配置: ![![输入图片说明](https://static.oschina.net/uploads/img/201712/01113438_F5NQ.jpg "在这里输入图片标题")](https://static.oschina.net/uploads/img/201712/01113438_F5NQ.jpg "在这里输入图片标题") spring配置: ![![输入图片说明](https://static.oschina.net/uploads/img/201712/01113614_s0bM.png "在这里输入图片标题")](https://static.oschina.net/uploads/img/201712/01113614_s0bM.png "在这里输入图片标题") interface接口类: ![![输入图片说明](https://static.oschina.net/uploads/img/201712/01113941_gWtu.png"在这里输入图片标题")](https://static.oschina.net/uploads/img/201712/01113941_gWtu.png "在这里输入图片标题") ![![输入图片说明](https://static.osch...
gs586169 发布于 5个月前 阅读 259

第二章 二节spring-core之converter深入解读

### 前言 > 本章节深入讲解spring的converter使用与细节,帮助大家在项目里面正确使用converter。converters是在项目开发里面比较实用,切便利的功能,但是在复杂的业务中,需要架构师或者架构组设计,实现整套规范。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成整个流程。 ### converter类关系体系 ![输入图片说明](https://static.oschina.net/uploads/img/201804/23002226_S5Zv.png "在这里输入图片标题") > 从类实例图中,可以观察到整个converter类关系体系分为两大块。 - 操作体系 - 管理体系 ### 操作体系 ##### Converter ```java public interface Converter { T convert(S source); } ``` ##### ConverterFactory ```java public interface ConverterFactory { Converter getConverter(Class targetType); } ``` > 两个非常简单的类,Converter的子类是负责实现转换,那ConverterFactory是用来干什么。 比如 有一个需求需要把数字型转成字符串类型,但是Number的子类有Byte,Short,Integer,Long等等十多个,每个有一个Converter实现(必须每个都一个Converter,否则代码非常不好管理,通过方法实现十分不优雅),...
鸟菜啊 发布于 1天前 阅读 137

Git 对象存储结构分析

# 1. 前言 git 对象有四种:blob (数据块), tree (目录树), commit (提交), tag (标签)。 本文通过一个示例,以blob为例来讨论对象的存储结构。示例采用的git版本为**2.17** 。 # 2. 实践讨论 ## 2.1. 生成Blob对象文件 首先创建一个测试git仓库 ``` $ mkdir hello $ cd hello $ git init ``` 然后通过创建一个文件 test,test的内容为 "hello", 可以看到test文件的字节长度为6, 是因为创建文件的时候自动在行末加上了换行符\n。对文件其执行 `git add` , 可以看到在.git/objects目录下面生成了一个子目录ce,ce目录下面有个文件013625030ba8dba906f756967f9e9ca394464a。 ``` $ echo "hello" > test $ du -b test 6 test $ git add test $ find .git/objects/ -type f .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a ``` 该文件即为git为 test 文件数据内容生成的blob对象文件,该对象的SHA值为`ce013625030ba8dba906f756967f9e9ca394464a`. 至此,产生两个问题: 1. **对象文件的数据结构是什么样的 ?** 2. **对象的SHA值又是如何生成的 ?** ## 2.2. 对象数据结构及SHA值 根据 [Git-Internals-Git-Objects](https://git-scm.com/book/en/v2/Git-Internals-G...
囚兔 发布于 2天前 阅读 109 评论 1

架构之技术选型

## 前言 > 技术选型是一个公司的重中之重,是技术的根基,是部门的方向,是对技术负责人,架构师,cto,基础架构组的考验。一个错误的选型,可能造成巨大的财务,人力损失。 ## 技术选型原则 ### 开源,是否在持续维护中 #### 开源之后,不害怕闭源 > 不用害怕以后项目会闭源而出现各种问题,如果有一个优秀的项目开源以后,很大的用户群体,大型互联网公司使用过,那么不用担心闭源问题带来的后果,闭源之后大型互联网会在原有的基础上维护或者创新一个类似的。 > 开源项目会有更多人与团队参与,社区十分会比较活跃,生态圈会慢慢完善 > 鸟菜啊个人认为这点非常重要,开始使用某个技术的时候,可能不需要源码。时间长了会暴露大量的问题出来,这个时候请人不如求己。 1. 当需要在某个技术上进行扩展的时候,如果不了解原理与实现,可能造成严重的问题。 2. 深入源码,可以了解实现,正确的使用这个技术。 3. 出现bug的时候,可以了解bug出现的原因 #### 持续维护中 > 如果作者与团队,停止对开源项目进行维护。不应该选择该技术。在技术栈里面已经存在。那么你需要准备寻找替代品,并在一定时间内完成更新。但是有些项目已经做到终点了,比如dubbo2.0,基本满足了soa所有需...
鸟菜啊 发布于 23小时前 阅读 24

【Java集合类】 LinkedHashMap获取第一个元素和最后一个元素

获取LinkedHashMap中的头部元素(最早添加的元素): 时间复杂度O(1) public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) { return map.entrySet().iterator().next(); } 获取LinkedHashMap中的末尾元素(最近添加的元素): 时间复杂度O(n) public <K, V> Entry<K, V> getTail(LinkedHashMap<K, V> map) { Iterator<Entry<K, V>> iterator = map.entrySet().iterator(); Entry<K, V> tail = null; while (iterator.hasNext()) { tail = iterator.next(); } return tail; } 通过反射获取LinkedHashMap中的末尾元素: 时间复杂度O(1),访问tail属性 public <K, V> Entry<K, V> getTailByReflection(LinkedHashMap<K, V> map) throws NoSuchFieldException, IllegalAccessException { Field tail = map.getClass().getDeclaredField("tail"); tail.setAccessible(true); return (Entry<K, V>) tail.get(map); } 测试代码: import static org.junit.Assert.assertEquals; import java.lang.reflect.Field; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map.Entry; im...
YuanyuanL 发布于 2个月前 阅读 438

AI领袖、应用指南、窥见风口……你还能从这场全球峰会中获得更多

时代的潮流浩浩荡荡,上升到国家发展战略与基础设施的人工智能,正以不可思议的速度占据着我们生活的头条。如果说2017年宣告了人工智能接棒时代脉搏,那么2018年的人工智能将作为颠覆性变革力量迭代世界机器的运作。
GAITC

Springboot2.0 升级(Gradle工程)

Springboot2.0 等了很久,下周样子终于有正式版本了。今天有空对原项目进行了升级。 变化还是挺大的,然后打包后项目小10M  项目环境信息: Springboot 1.5.10 + Gradle 4.5.1 + redis+mongodb + es 一、Gradle配置修改 打包命令由gradle build 变成 gradle bootJar 或 gradle bootWar buildscript { repositories { mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}" } } allprojects { apply plugin: "java" apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' apply plugin: 'application' sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile("org.projectlombok:lombok") compile("org.springframework.boot:spring-boot-starter") } repositories { repositories { maven { url ALY_M...
唐代de豆腐 发布于 2个月前 阅读 732 评论 6

Jmeter4.0新版本特性研究

春节刚刚结束,细心的小伙伴发现jmeter4.0也悄悄推出,结合大家平时的使用情况,给新版本增加的特性分析下,jmeter4.0下载地址:http://jmeter.apache.org/download_jmeter.cgi 1.       首先下载打开jmeter4.0,说一个能感受到的视觉变化,如下图1,黑色界面,不少朋友认为做技术黑色的东西看起来高上大一点,虽然这个观念有点肤浅,但似乎也有点道理,毕竟还是有不少朋友热衷于linux黑乎乎的界面乐此不疲。 图1 2.       Jmeter4.0支持java 9版本,随着java 9的普及,jmeter旧版本不兼容这还是一个较为蛋疼的问题,毕竟大多人不愿意装两个java版本或频繁切换环境变量; 3.       正则提取表达式优化,我姑且认为是优化,虽然4.0已经重新命名为Boundary Extractor,但依然保留了原先的Regular Expression Extractor,其实仔细对比后发现,如图2,图3, 图2 图3 除了正则的部分有些变化,其他基本一致,新版本让用户填的比较通俗,这样可以让新手更好理解,更容易上手,jmeter官方给出的另一个理由是with better performances,也就是性能更佳。 4.       增加了json断言,这个对于老版本,也是有外部插件的,4.0将这个融进去了,给大家举个栗子,...
测试匠艺 发布于 2个月前 阅读 1568 评论 2 点赞 1

Java并发编程与高并发解决方案(一)-并发与高并发基本概念

并发:     多个线程操作相同的资源,保证线程安全,合理利用资源 高并发:     服务能同时处理很多请求(如12306的抢票,天猫双十一的秒杀活动,这会导致系统在短时间内执行大量的操作,如对资源的请求,数据库的访问),提高程序性能(如果高并发处理不好,不光会导致用户体验不好,还可能会使服务器宕机,出现内存泄露等问题)  
monroeCode 发布于 4周前 阅读 453 评论 3

gradle报错jdk不匹配时的处理方案

gradle build gradle uploadArchives
帅的不像男的 发布于 2个月前 阅读 199

【Java高并发最佳实践】ConcurrentHashMap的遍历方法

  import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Java中遍历Map的四种方式,这里使用的是ConcurrentHashMap, * 读者可以替换为HashMap */ public class IteratorMap { public static void main(String[] args) { Map<String, String> map = new ConcurrentHashMap<String, String>(); init(map); //方式一:在for-each循环中使用entries来遍历 System.out.println("方式一:在for-each循环中使用entries来遍历"); for(Map.Entry<String, String> entry: map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } //方法二:在for-each循环中遍历keys或values,这种方式适用于需要值或者键的情况,方法二比方法一快了10% System.out.println("方法二:在for-each循环中遍历keys或values,这种方式适用于需要值或者键的情况"); //遍历键 for(String key : map.keySet()) { Sys...
YuanyuanL 发布于 2个月前 阅读 95

GitHub 十大 CI 工具

简评:GitHub 上最受欢迎的 CI 工具。
极光推送 发布于 15小时前 阅读 8

IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法

无效的原因是:对应的目录或者文件之前被提交过,已经被git跟踪,所以再添加  .gitignore无效。。 下面的解决方法也仅仅适用于这种情况,需要你去服务器上验证下。 解决方法 git rm -rf .idea; git commit -m "delete .idea"; git push; 如果提示文件已修改,可以缓存一下,或者直接-f强制删除: git rm --cached DayTest.iml; git rm -f DayTest.iml;         确认把仓库的文件删除后 再添加ignore    
Pig-man 发布于 3个月前 阅读 127

android------eclipse运行错误提示 Failed to load D:\Android\sdk\build-tools\26.0.0-preview\lib\dx.jar

更新了SDK后,在ecplise上运行项目时出现了一个问题。 一运行就提示这个错误:Your project contains error(s), please fix them before running your application.(你的程序包含错误,请修改后再运行)。   控制台是这样输出的:   提示dx.jar文件没加载到,按网上一些方法试了也不行,我就找到D:\Android\sdk\build-tools\这个目录,目录如下图, 我想,既然他找不到26.0.0这个文件夹,那我就把它删了。 我把26.0.0文件夹剪切放到别的位置备份,以免出错再恢复回来。再次打开eclipse运行就成功了. 删了后的目录图:
切切歆语 发布于 1个月前 阅读 73

docker container 启动异常

就是不写摘要.
taadis 发布于 3个月前 阅读 307

Dubbo服务 上传文件解决方案

dubbo服务不支持File文件类型的参数,远程调用是这样的:接口调用实际就是数据的发送过程,File 这样的类型是不能够序列化的,因为File 不是数据,只是一个磁盘文件的抽象。 解决方案: 使用hessian协议进行传输 (参照dubbo 官网,或者搜索dubbo hessian ) 将文件转换成byte[]继续使用dubbo协议(这种情况一般用于上传文件跟业务有关联)
BestDay 发布于 2个月前 阅读 104

gitlab 如何调出工程的setting

版本:GitLab Community Edition 9.4.3 Turn on new navigation(个人账号下拉箭头,Settings下面) 有一项"New Navigation"选择New
看不懂就多看几遍 发布于 1个月前 阅读 45

Linux加载/usr/local/lib中的so库问题

在Linux中运行qTox时,出现一些库加载不上(libavcode***,重新安装也不行),然后下载源码进行编译(https://my.oschina.net/u/2306127/blog/1616888),然后可以运行。说明是一些库的版本不兼容导致的。 问题 但是,编译qTox后,在当前目录使用./qtox可以运行,如果使用make install 后通过qtox命令则无法运行,提示libtoxcore库找不到,到/usr/local/lib中去看,库是在的,而且是刚编译的,版本也没有问题。 后来发现,/usr/local/lib默认没有在Linux的搜索路径中,导致找不到。 把动态链接库的安装路径(例如说是 /usr/local/lib )放到变量 LD_LIBRARY_PATH 里,就可以了。 验证 可以用命令 export 来临时测试确认是不是这个问题: export LD_LIBRARY_PATH=/usr/local/lib 在终端里运行上面这行命令,再运行这个可执行文件,如果运行正常就说明是这个问题。 设置 以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在。 如何把这个值持续写到 LD_LIBRARY_PATH 里呢? bash设置 我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。 加到 ~/.bash...
openthings 发布于 3个月前 阅读 101

手写Spring基本体系IOC+AOP+MVC+事物管理等简单实现。

依赖cglib编写Spring体系包括IOC+AOP+MVC(简单)+切面事物管理等。
Coody 发布于 2个月前 阅读 109 评论 1

设计模式 - 结构型 - 装饰者模式

### 介绍 ### **意图**:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比继承更为灵活。 **主要解决**:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。 **何时使用**:在不想增加很多子类的情况下扩展类。 **如何解决**:将具体功能职责划分,同时继承装饰者模式。 **关键代码**: 1、Component 类充当抽象角色,不应该具体实现。 2、修饰类引用和继承 Component 类,具体扩展类重写父类方法。 ![decorator1.png](https://static.oschina.net/uploads/img/201804/10225115_zbeZ.png "decorator1.png") ### 实现 ### #### 饮料与调料 #### ![decorator2.png](https://static.oschina.net/uploads/img/201804/10225134_PiMt.png "decorator2.png") **饮料** public abstract class Beverage { String description = "Unknown Beverage"; public String getDescription() { return description; } public abstract double cost(); } --- public class Espresso extends Beverage { public Espresso() { description = "Espresso"; } public double cost() { return 1.99; } } ---...
巨輪 发布于 2周前 阅读 8

Lucene 6.0 实战(1)-创建索引

搜索,Lucene
nubo 发布于 2个月前 阅读 41

面向对象三大基本特性,五大基本原则

面向对象三大基本特性,五大基本原则,每天读一遍,你的软件设计思维会渐渐的提升起来!
robortly 发布于 4天前 阅读 11

第二章 二节spring-core之converter深入解读

### 前言 > 本章节深入讲解spring的converter使用与细节,帮助大家在项目里面正确使用converter。converters是在项目开发里面比较实用,切便利的功能,但是在复杂的业务中,需要架构师或者架构组设计,实现整套规范。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成整个流程。 ### converter类关系体系 ![输入图片说明](https://static.oschina.net/uploads/img/201804/23002226_S5Zv.png "在这里输入图片标题") > 从类实例图中,可以观察到整个converter类关系体系分为两大块。 - 操作体系 - 管理体系 ### 操作体系 ##### Converter ```java public interface Converter { T convert(S source); } ``` ##### ConverterFactory ```java public interface ConverterFactory { Converter getConverter(Class targetType); } ``` > 两个非常简单的类,Converter的子类是负责实现转换,那ConverterFactory是用来干什么。 比如 有一个需求需要把数字型转成字符串类型,但是Number的子类有Byte,Short,Integer,Long等等十多个,每个有一个Converter实现(必须每个都一个Converter,否则代码非常不好管理,通过方法实现十分不优雅),...
鸟菜啊 发布于 1天前 阅读 137

Jmeter4.0新版本特性研究

春节刚刚结束,细心的小伙伴发现jmeter4.0也悄悄推出,结合大家平时的使用情况,给新版本增加的特性分析下,jmeter4.0下载地址:http://jmeter.apache.org/download_jmeter.cgi 1.       首先下载打开jmeter4.0,说一个能感受到的视觉变化,如下图1,黑色界面,不少朋友认为做技术黑色的东西看起来高上大一点,虽然这个观念有点肤浅,但似乎也有点道理,毕竟还是有不少朋友热衷于linux黑乎乎的界面乐此不疲。 图1 2.       Jmeter4.0支持java 9版本,随着java 9的普及,jmeter旧版本不兼容这还是一个较为蛋疼的问题,毕竟大多人不愿意装两个java版本或频繁切换环境变量; 3.       正则提取表达式优化,我姑且认为是优化,虽然4.0已经重新命名为Boundary Extractor,但依然保留了原先的Regular Expression Extractor,其实仔细对比后发现,如图2,图3, 图2 图3 除了正则的部分有些变化,其他基本一致,新版本让用户填的比较通俗,这样可以让新手更好理解,更容易上手,jmeter官方给出的另一个理由是with better performances,也就是性能更佳。 4.       增加了json断言,这个对于老版本,也是有外部插件的,4.0将这个融进去了,给大家举个栗子,...
测试匠艺 发布于 2个月前 阅读 1568 评论 2 点赞 1

Springboot2.0 升级(Gradle工程)

Springboot2.0 等了很久,下周样子终于有正式版本了。今天有空对原项目进行了升级。 变化还是挺大的,然后打包后项目小10M  项目环境信息: Springboot 1.5.10 + Gradle 4.5.1 + redis+mongodb + es 一、Gradle配置修改 打包命令由gradle build 变成 gradle bootJar 或 gradle bootWar buildscript { repositories { mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}" } } allprojects { apply plugin: "java" apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' apply plugin: 'application' sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile("org.projectlombok:lombok") compile("org.springframework.boot:spring-boot-starter") } repositories { repositories { maven { url ALY_M...
唐代de豆腐 发布于 2个月前 阅读 732 评论 6

架构之技术选型

## 前言 > 技术选型是一个公司的重中之重,是技术的根基,是部门的方向,是对技术负责人,架构师,cto,基础架构组的考验。一个错误的选型,可能造成巨大的财务,人力损失。 ## 技术选型原则 ### 开源,是否在持续维护中 #### 开源之后,不害怕闭源 > 不用害怕以后项目会闭源而出现各种问题,如果有一个优秀的项目开源以后,很大的用户群体,大型互联网公司使用过,那么不用担心闭源问题带来的后果,闭源之后大型互联网会在原有的基础上维护或者创新一个类似的。 > 开源项目会有更多人与团队参与,社区十分会比较活跃,生态圈会慢慢完善 > 鸟菜啊个人认为这点非常重要,开始使用某个技术的时候,可能不需要源码。时间长了会暴露大量的问题出来,这个时候请人不如求己。 1. 当需要在某个技术上进行扩展的时候,如果不了解原理与实现,可能造成严重的问题。 2. 深入源码,可以了解实现,正确的使用这个技术。 3. 出现bug的时候,可以了解bug出现的原因 #### 持续维护中 > 如果作者与团队,停止对开源项目进行维护。不应该选择该技术。在技术栈里面已经存在。那么你需要准备寻找替代品,并在一定时间内完成更新。但是有些项目已经做到终点了,比如dubbo2.0,基本满足了soa所有需...
鸟菜啊 发布于 23小时前 阅读 24

快速崛起的物联网世界安全问题

      IDC预计:到2020年,全球物联网(IoT)市场规模将会增长至3.04万亿美元。而蓝牙作为IoT最为青睐的技术,已经占据了越来越重要的地位。蓝牙技术联盟亚太区市务高级经理李佳蓉女士表示:“在技术方面,蓝牙技术联盟一直致力于技术的标准化,并创建了保障产品互操作性的平台,同时赋予了成员公司在创新上的灵活性。”蓝牙技术在智能家居应用中的增长,使得智能门锁、灯光控制、暖通空调(HVAC)系统、以及家用电器等都能协同工作,为消费者带来无缝的智能家居体验。其他物联网行业应用蓝牙技术大幅提升用户体验的例子不胜枚举。       就像李佳蓉女士所讲,蓝牙技术乃至物联网整个行业,至今都还在努力推行标准化工作,如今的状态是百家争鸣,各有特点。凡事都有两面性,没有统一的标准,大家对于应用的实现就有各自的理解,对于无处不在的信息安全问题,各大设备厂商、运营商、方案公司自然而然的出现了各自为战的现象。说到安全,永远离不开两个主题,即通讯数据安全和应用程序安全。对于入网设备,永远也离不开身份认证或者鉴权的流程;入网之后的数据传输,终端、APP、云端这三者间的数据传递都是可能被截获的。三年前的某汽车品牌大批召回事件,就是因为车载控...
wyj2298864233 发布于 2周前 阅读 56 评论 24 点赞 2

【Java集合类】 LinkedHashMap获取第一个元素和最后一个元素

获取LinkedHashMap中的头部元素(最早添加的元素): 时间复杂度O(1) public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) { return map.entrySet().iterator().next(); } 获取LinkedHashMap中的末尾元素(最近添加的元素): 时间复杂度O(n) public <K, V> Entry<K, V> getTail(LinkedHashMap<K, V> map) { Iterator<Entry<K, V>> iterator = map.entrySet().iterator(); Entry<K, V> tail = null; while (iterator.hasNext()) { tail = iterator.next(); } return tail; } 通过反射获取LinkedHashMap中的末尾元素: 时间复杂度O(1),访问tail属性 public <K, V> Entry<K, V> getTailByReflection(LinkedHashMap<K, V> map) throws NoSuchFieldException, IllegalAccessException { Field tail = map.getClass().getDeclaredField("tail"); tail.setAccessible(true); return (Entry<K, V>) tail.get(map); } 测试代码: import static org.junit.Assert.assertEquals; import java.lang.reflect.Field; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map.Entry; im...
YuanyuanL 发布于 2个月前 阅读 438

Java并发编程与高并发解决方案(一)-并发与高并发基本概念

并发:     多个线程操作相同的资源,保证线程安全,合理利用资源 高并发:     服务能同时处理很多请求(如12306的抢票,天猫双十一的秒杀活动,这会导致系统在短时间内执行大量的操作,如对资源的请求,数据库的访问),提高程序性能(如果高并发处理不好,不光会导致用户体验不好,还可能会使服务器宕机,出现内存泄露等问题)  
monroeCode 发布于 4周前 阅读 453 评论 3

TeamViewer 远程控制后,鼠标不能操作怎么办

很多小伙伴反映在使用TeamViewer进行远程控制时,偶尔会出现远程控制后,但是鼠标却不能进行任何操作。今天小编就为大家介绍一下遇到这种情况该怎么办吧!
Tiomin 发布于 1个月前 阅读 254

Not a Maven Project *** 的解决办法

mark一下,在多个项目开发中,有时候会出现这样一个问题,将一个项目close project后,发现eclipse中所有的项目都无法使用maven进行bulid和test了,运行Maven bulid后,一直有这个弹框,如下 解决办法: 网上有一些关于此类问题的解决办法,发现都不好使,其实很简单,右键该项目,选择Disable workspace Resolution即可。
JavionXiong 发布于 2个月前 阅读 118 评论 1

QLV格式如何使用迅捷视频转换器转换成MP4格式?

迅捷视频转换器
迅捷视频转换器 发布于 2个月前 阅读 325

GitHub 十大 CI 工具

简评:GitHub 上最受欢迎的 CI 工具。
极光推送 发布于 15小时前 阅读 8

git fetch 的简单用法:更新远程代码到本地仓库

git fetch origin master:tmp git diff tmp  git merge tmp git branch -d tmp          从远程获取最新的版本到本地的tmp分支上    之后再进行比较合并 2. git pull:相当于是从远程获取最新版本并merge到本地     git pull origin master     上述命令其实相当于git fetch 和 git merge     在实际使用中,git fetch更安全一些    因为在merge前,我们可以查看更新情况,然后再决定是否合并 =========================== https://www.cnblogs.com/zknublx/p/6113667.html 方式一 1. 查看远程仓库 1 2 3 4 5 6 $ git remote -v eoecn https://github.com/eoecn/android-app.git (fetch) eoecn https://github.com/eoecn/android-app.git (push) origin https://github.com/com360/android-app.git (fetch) origin https://github.com/com360/android-app.git (push) su@SUCHANGLI /e/eoe_client/android-app (master) 从上面的结果可以看出,远程仓库有两个,一个是eoecn,一个是origin 2 ,从远程获取最新版本到本地 1 2 3 4 $ git fetch origin master From https://github.com/com360/android-app * branch master -> FE...
onedotdot 发布于 1个月前 阅读 46

基于注解的Spring多数据源配置和使用

前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备。由于之前做过的项目都是单数据源的,没有遇到这种场景,所以也一直没有去了解过如何配置多数据源。 后来发现其实基于spring来配置和使用多数据源还是比较简单的,因为spring框架已经预留了这样的接口可以方便数据源的切换。 先看一下spring获取数据源的源码: 可以看到AbstractRoutingDataSource获取数据源之前会先调用determineCurrentLookupKey方法查找当前的lookupKey,这个lookupKey就是数据源标识。 因此通过重写这个查找数据源标识的方法就可以让spring切换到指定的数据源了。 第一步:创建一个DynamicDataSource的类,继承AbstractRoutingDataSource并重写determineCurrentLookupKey方法,代码如下: 1 public class DynamicDataSource extends AbstractRoutingDataSource { 2 3 @Override 4 protected Object determineCurrentLookupKey() { 5 // 从自定义的位置获取数据源标识 6 return DynamicDataSourceHolder.getDataSource(); 7 } 8 9 } 第二步:创建DynamicDataSourceHolder用于持有当前线程中使用的数据源标...
WJtiny 发布于 4天前 阅读 10

面向对象三大基本特性,五大基本原则

面向对象三大基本特性,五大基本原则,每天读一遍,你的软件设计思维会渐渐的提升起来!
robortly 发布于 4天前 阅读 11

java 获取视频时长和视频截图

主要利用ffmpeg,这是个处理视频文件的插件,可以部署在linux上也可以部署在windows上。本文演示的是window上的例子。如果在Linux 上用,需替换插件路径和部分指令。
千里明月 发布于 3个月前 阅读 165

多线程sleep和wait的一些区别

多线程
无知的小狼 发布于 2个月前 阅读 28

Linux加载/usr/local/lib中的so库问题

在Linux中运行qTox时,出现一些库加载不上(libavcode***,重新安装也不行),然后下载源码进行编译(https://my.oschina.net/u/2306127/blog/1616888),然后可以运行。说明是一些库的版本不兼容导致的。 问题 但是,编译qTox后,在当前目录使用./qtox可以运行,如果使用make install 后通过qtox命令则无法运行,提示libtoxcore库找不到,到/usr/local/lib中去看,库是在的,而且是刚编译的,版本也没有问题。 后来发现,/usr/local/lib默认没有在Linux的搜索路径中,导致找不到。 把动态链接库的安装路径(例如说是 /usr/local/lib )放到变量 LD_LIBRARY_PATH 里,就可以了。 验证 可以用命令 export 来临时测试确认是不是这个问题: export LD_LIBRARY_PATH=/usr/local/lib 在终端里运行上面这行命令,再运行这个可执行文件,如果运行正常就说明是这个问题。 设置 以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在。 如何把这个值持续写到 LD_LIBRARY_PATH 里呢? bash设置 我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。 加到 ~/.bash...
openthings 发布于 3个月前 阅读 101

Dubbo服务 上传文件解决方案

dubbo服务不支持File文件类型的参数,远程调用是这样的:接口调用实际就是数据的发送过程,File 这样的类型是不能够序列化的,因为File 不是数据,只是一个磁盘文件的抽象。 解决方案: 使用hessian协议进行传输 (参照dubbo 官网,或者搜索dubbo hessian ) 将文件转换成byte[]继续使用dubbo协议(这种情况一般用于上传文件跟业务有关联)
BestDay 发布于 2个月前 阅读 104

TeamViewer 收不到邮件该怎么办?

我们都知道,TeamViewer需要登录账号才可以实现无人值守访问的快捷操作,那么我们的一个账号可不可以在多台电脑上同时使用吗?该如何操作呢?今天小编就带大家来认识一下吧!
Tiomin 发布于 1周前 阅读 21

java 通过网络唤醒实现远程开机

网络唤醒的原理其实是,网卡接收到特定格式的数据包,就会唤醒主板,从而启动机器,所以需要网卡和主板的支持。一般现在的电脑都支持的
千里明月 发布于 3个月前 阅读 3284 评论 6 点赞 10

1*10—Eclipse配置Git、Gitlab

1、登录Gitlab,新建一个repository 2、桌面右键:Git Bash Here ,在里面运行 git config --global user.name "username" git config --global user.email "email" 3、复制email,生成SSH Key, 打开setting->SSH keys,点击右上角 New SSH key,把生成好的公钥id_rsa.pub放进 key输入框中 ssh-keygen -t rsa -C "email" 4、现在使用Eclipse插件就可以将项目从gitlab上下载下来了
静以修身2025 发布于 8小时前 阅读 2

1.06—SpringMVC直接访问WEB-INF下jsp中的页面

环境是Maven+SSM
静以修身2025 发布于 14小时前 阅读 2

GitHub 十大 CI 工具

简评:GitHub 上最受欢迎的 CI 工具。
极光推送 发布于 15小时前 阅读 8

redhat 安装Rabbitmq

先安装JDK 安装erlang环境: 安装依赖文件:yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto; yum install unixODBC-devel   解压erlang文件:tar -zxvf otp_src_19.2.tar.gz; 安装环境配置 ./configure --prefix=/usr/data/server/erlang --without-javac make && make install 测试erlang,输入:"erl" 进入控制台,输入 "halt()." 安装RabbitMQ 1、解压RabbitMQ:xz -d rabbitmq-server-generic-unix-3.6.6.tar.xz;(因为我们下载的是tar.xz文件) 解压".tar"的RabbitMQ文件:tar -xvf rabbitmq-server-generic-unix-3.6.6.tar -C /usr/data/server/ 启动,关闭服务 启动:./rabbitmq-server -detached (后台运行)或 ./rabbitmq-server start 关闭:./rabbitmqctl stop 启用网页插件:./rabbitmq-plugins enable rabbitmq_management 配置linux 端口 15672 网页管理 5672 AMQP端口   然后访问http://localhost:15672即可;   添加用户: rabbitmqctl add_user admin admin  rabbitmqctl list_users 权限 rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 角色 rabbitmqctl set_user_tags admin administrator   环境变量: J...
ts88 发布于 17小时前 阅读 3

架构之技术选型

## 前言 > 技术选型是一个公司的重中之重,是技术的根基,是部门的方向,是对技术负责人,架构师,cto,基础架构组的考验。一个错误的选型,可能造成巨大的财务,人力损失。 ## 技术选型原则 ### 开源,是否在持续维护中 #### 开源之后,不害怕闭源 > 不用害怕以后项目会闭源而出现各种问题,如果有一个优秀的项目开源以后,很大的用户群体,大型互联网公司使用过,那么不用担心闭源问题带来的后果,闭源之后大型互联网会在原有的基础上维护或者创新一个类似的。 > 开源项目会有更多人与团队参与,社区十分会比较活跃,生态圈会慢慢完善 > 鸟菜啊个人认为这点非常重要,开始使用某个技术的时候,可能不需要源码。时间长了会暴露大量的问题出来,这个时候请人不如求己。 1. 当需要在某个技术上进行扩展的时候,如果不了解原理与实现,可能造成严重的问题。 2. 深入源码,可以了解实现,正确的使用这个技术。 3. 出现bug的时候,可以了解bug出现的原因 #### 持续维护中 > 如果作者与团队,停止对开源项目进行维护。不应该选择该技术。在技术栈里面已经存在。那么你需要准备寻找替代品,并在一定时间内完成更新。但是有些项目已经做到终点了,比如dubbo2.0,基本满足了soa所有需...
鸟菜啊 发布于 23小时前 阅读 24

第二章 二节spring-core之converter深入解读

### 前言 > 本章节深入讲解spring的converter使用与细节,帮助大家在项目里面正确使用converter。converters是在项目开发里面比较实用,切便利的功能,但是在复杂的业务中,需要架构师或者架构组设计,实现整套规范。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成整个流程。 ### converter类关系体系 ![输入图片说明](https://static.oschina.net/uploads/img/201804/23002226_S5Zv.png "在这里输入图片标题") > 从类实例图中,可以观察到整个converter类关系体系分为两大块。 - 操作体系 - 管理体系 ### 操作体系 ##### Converter ```java public interface Converter { T convert(S source); } ``` ##### ConverterFactory ```java public interface ConverterFactory { Converter getConverter(Class targetType); } ``` > 两个非常简单的类,Converter的子类是负责实现转换,那ConverterFactory是用来干什么。 比如 有一个需求需要把数字型转成字符串类型,但是Number的子类有Byte,Short,Integer,Long等等十多个,每个有一个Converter实现(必须每个都一个Converter,否则代码非常不好管理,通过方法实现十分不优雅),...
鸟菜啊 发布于 1天前 阅读 137

QtWebEngine

实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel) https://www.cnblogs.com/sz-leez/p/6698936.html?utm_source=itdadao&utm_medium=referral
zanglaowei 发布于 1天前 阅读 4

Git 对象存储结构分析

# 1. 前言 git 对象有四种:blob (数据块), tree (目录树), commit (提交), tag (标签)。 本文通过一个示例,以blob为例来讨论对象的存储结构。示例采用的git版本为**2.17** 。 # 2. 实践讨论 ## 2.1. 生成Blob对象文件 首先创建一个测试git仓库 ``` $ mkdir hello $ cd hello $ git init ``` 然后通过创建一个文件 test,test的内容为 "hello", 可以看到test文件的字节长度为6, 是因为创建文件的时候自动在行末加上了换行符\n。对文件其执行 `git add` , 可以看到在.git/objects目录下面生成了一个子目录ce,ce目录下面有个文件013625030ba8dba906f756967f9e9ca394464a。 ``` $ echo "hello" > test $ du -b test 6 test $ git add test $ find .git/objects/ -type f .git/objects/ce/013625030ba8dba906f756967f9e9ca394464a ``` 该文件即为git为 test 文件数据内容生成的blob对象文件,该对象的SHA值为`ce013625030ba8dba906f756967f9e9ca394464a`. 至此,产生两个问题: 1. **对象文件的数据结构是什么样的 ?** 2. **对象的SHA值又是如何生成的 ?** ## 2.2. 对象数据结构及SHA值 根据 [Git-Internals-Git-Objects](https://git-scm.com/book/en/v2/Git-Internals-G...
囚兔 发布于 2天前 阅读 109 评论 1

Windows下查看文件MD5值

certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile filename SHA256
yx91490 发布于 2天前 阅读 5

myecplise集成maven项目问题小结

新公司使用maven构建web项目,本人没用过,最近两天使用过程中举步维艰,特此小结下 1.myeclipse 2013保存文件或者提交文件一直 searching for project to migrate,怎么禁止 2.怎么关闭MyEclipse的.html.jsp的可视化编辑器? 打开mye的jsp文件,默认是这样子的,如图; 找到mye的window--preferences 修改html文件,与之类同。 3.MyEclipse中将普通Java项目convert(转化)为Maven项目 1)首先展示的是将Maven项目转成普通Java项目。 2)将Java项目转成Maven项目 右键项目,config-->Convert to Maven Project。热乎乎的,正好享用。 5.myecplise集成tomcat发布maven项目,add 项目找不到或者说配置不了项目path(虚拟目录) 正常点击项目右键》myecplise》project facets 里会有web  如图配置 如何没有web选项,说明maven项目还不是动态web项目,需要勾选如图设置就可以了: 6.eclipse中vm文件样式修改 在eclipse中使用velocity模板时,后缀.vm文件默认是如下的样式: 看起来很不舒服,此时需要进行手动修改样式: 1.打开Eclipse ---》window----》preference -----》Content type-----》Text----》Html -----》Add ------》弹出窗口 File type :  2.在输入框中输入 *.vm  ...
1024菜bird 发布于 3天前

Postman使用

在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-RESTClient,Chrome浏览器插件-Postman等等。这里主要介绍一下Postman。  一、Postman说明   Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口。 二、安装(安装到chrome插件)   在安装时,最好是通过chrome浏览器打开chrome网上应用店直接添加到chrome插件中。如果是直接从网上先把postman下载好很可能按不到chrome上去。 进入chrome网上应用店需要FQ,在这里默认你可以FQ,大体步骤如下: 打开chrome浏览器的chrome网上应用店,搜索postman。 点击添加至CHROME。  三、基本使用方法   说明:在这里以一个提交多层嵌套的json数据格式的post请求为例。 如: 1 data= 2 { 3 "xxx": 4   { 5 "xxx": "xxxxxxxxxxx", 6 "xxx": "xxxxxxxxxxx" 7 }, 8 "aaa": "xxxxxxxxxxx", 9 "bbb": "xxxxxxxxxxx", 10 "ccc": "xxxxxxxxxxx" 11 }...
临江仙卜算子 发布于 3天前 阅读 1

I-10、IdeaIC(Idea社区版)配置Tomcat,搭建Web项目

推荐: https://blog.csdn.net/skyztttt/article/details/72470065  
静以修身2025 发布于 3天前 阅读 1

1.01—SpringMVC访问静态资源的三种方式

推荐: https://blog.csdn.net/u012730299/article/details/51872704  
静以修身2025 发布于 3天前 阅读 1

I-01、Maven的相关使用

推荐: https://www.cnblogs.com/vikezhu/p/6598907.html  
静以修身2025 发布于 4天前 阅读 1

开发环境搭建记录

1、maven私服nexus3.x环境配置 第三方Jar上传到Nexus mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.5.0 -Dpackaging=jar -Dfile=D:\repo-\com\oracle\ojdbc14\10.2.0.5.0\ojdbc14-10.2.0.5.0.jar -Durl=http://192.168.10.247:8081/repository/maven-releases/ -DrepositoryId=releases  
微小宝 发布于 4天前 阅读 4

StarUML建模工具全平台破解及license验证简要分析

找工具时偶然逛到: http://staruml.io/ 该软件为跨平台的UML建模工具,采用NodeJs编写的,界面挺美观的, 下载地址:No time limit for evaluation, a license should be purchased for continuted use. Download for Mac OS X Download for Windows Download for Linux (64bit) Download for Linux (32bit) Version: 2.2.0   破解方法: 找到安装目录下的文件:LicenseManagerDomain.js 阅读得知,改软件用rsa加密用户信息,换行为用户信息的分隔符 修改以下代码,然后打开软件点击菜单栏中的帮助->输入license软件即可获得授权,即可:放一个修改好的Mac-2.5.0版的链接吧: 链接: http://pan.baidu.com/s/1sjDrNmH 密码: gws2     function validate(PK, name, product, licenseKey) {         var pk, decrypted;         // edit by 0xcb         return {             name: "0xcb",             product: "StarUML",             licenseType: "vip",             quantity: "bbs.chinapyg.com",             licenseKey: "later equals never!"         };           try {     ...
onedotdot 发布于 4天前 阅读 5

Android studio 点击按钮跳转到新的Activity

package com.example.admin.onclick; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText et_phone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_phone = (EditText) findViewById(R.id.et_phone); Button bt_call = (Button) findViewById(R.id.bt_call); //设点事件第一种 bt_call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //在按钮响应//MainActivity.this 为当前窗体,LoginActivity.class 为跳到的第二个窗体 Intent intent =new Intent(MainActivity.this,LoginActivity.class); startA...
诺岚 发布于 4天前 阅读 14

面向对象三大基本特性,五大基本原则

面向对象三大基本特性,五大基本原则,每天读一遍,你的软件设计思维会渐渐的提升起来!
robortly 发布于 4天前 阅读 11

基于注解的Spring多数据源配置和使用

前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备。由于之前做过的项目都是单数据源的,没有遇到这种场景,所以也一直没有去了解过如何配置多数据源。 后来发现其实基于spring来配置和使用多数据源还是比较简单的,因为spring框架已经预留了这样的接口可以方便数据源的切换。 先看一下spring获取数据源的源码: 可以看到AbstractRoutingDataSource获取数据源之前会先调用determineCurrentLookupKey方法查找当前的lookupKey,这个lookupKey就是数据源标识。 因此通过重写这个查找数据源标识的方法就可以让spring切换到指定的数据源了。 第一步:创建一个DynamicDataSource的类,继承AbstractRoutingDataSource并重写determineCurrentLookupKey方法,代码如下: 1 public class DynamicDataSource extends AbstractRoutingDataSource { 2 3 @Override 4 protected Object determineCurrentLookupKey() { 5 // 从自定义的位置获取数据源标识 6 return DynamicDataSourceHolder.getDataSource(); 7 } 8 9 } 第二步:创建DynamicDataSourceHolder用于持有当前线程中使用的数据源标...
WJtiny 发布于 4天前 阅读 10

入手第一个小案例,拔打电话

直接新建一个工程, 先画图形----再写点击事件---->然后给权限--->测试 方法一: activity_main.xml 配置如下 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.admin.onclick.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/bt_call" android:layout_width="wrap_content" android:layout_height="wrap_content...
诺岚 发布于 4天前 阅读 9

java 通过网络唤醒实现远程开机

网络唤醒的原理其实是,网卡接收到特定格式的数据包,就会唤醒主板,从而启动机器,所以需要网卡和主板的支持。一般现在的电脑都支持的
千里明月 发布于 3个月前 阅读 3284 评论 6 点赞 10

TeamFlowy——结合Teambition与Workflowy

使用Teambition来管理任务,使用Workflowy来撰写大纲,使用TeamFlowy来将Workflowy里面特定的条目作为任务自动添加到Teambition中。
kingname 发布于 7个月前 阅读 1053 评论 10 点赞 1

Spring、Spring Boot和TestNG测试指南 - 测试@Configuration

[码云地址][1] 在Spring引入Java Config机制之后,我们会越来越多的使用@Configuration来注册Bean,并且Spring Boot更广泛地使用了这一机制,其提供的大量Auto Configuration大大简化了配置工作。那么问题来了,如何确保@Configuration和Auto Configuration按照预期运行呢,是否正确地注册了Bean呢?本章举例测试@Configuration和Auto Configuration的方法(因为Auto Configuration也是@Configuration,所以测试方法是一样的)。 ## 例子1:测试@Configuration 我们先写一个简单的@Configuration: ```java @Configuration public class FooConfiguration { @Bean public Foo foo() { return new Foo(); } } ``` 然后看[FooConfiguration][src-ex1-FooConfiguration]是否能够正确地注册Bean: ```java public class FooConfigurationTest { private AnnotationConfigApplicationContext context; @BeforeMethod public void init() { context = new AnnotationConfigApplicationContext(); } @AfterMethod(alwaysRun = true) public void reset() { context.close(); } @Test public void testFooCreation() { context.register(FooConfiguration.class); context.refresh...
jarchan 发布于 8个月前 阅读 1992 评论 7

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

比特币深层技术原理浅析

这是一篇主要针对技术小白的文章。本文尽量使用通俗易懂但又不失要义的文字,带你深入剖析当前备受追捧的比特币背后的深层技术原理,最后会简要介绍一下业界市场的现状。
中成才 发布于 10个月前 阅读 5068 评论 30 点赞 12 打赏 4

关于“全球遭受网络勒索攻击”WannaCry2.0病毒软件图文分析

我是技术一般般码农 若分析的不到位 错误 请各位大神指出 分析此软件只是出去安全角度研究;请勿非法使用,工具就不公开,大家有兴趣逛逛我博客哈 liberxue博客:本文请勿转载by liberxue
Liberxue 发布于 11个月前 阅读 4792 评论 17 点赞 5

重复性管理——从泛值到泛型以及泛函(上)

为什么用泛型以及它到底解决了什么问题?文中用大量例子介绍了重复性管理的一些具体做法,重点分析了泛型范式在解决重复性问题上的应用。
国栋 发布于 12个月前 阅读 1656 评论 35 点赞 12

使用t-io实现简单的rpc调用(一)

1.先从最基础的来 编写接口及实现类 public interface IUserService { public String getList(); public String getList(Integer id,String name); } import cn.ensoft.service.IUserService; public class UserServiceImpl implements IUserService{ @Override public String getList() { return "{'id':'abc','name':'hello'}"; } @Override public String getList(Integer id, String name) { return "{'id':'"+id+"','name':'"+name+"'}"; } } 2.t-io自定义公共类     2.1业务消息包 import java.io.UnsupportedEncodingException; import org.tio.core.intf.Packet; public class MsgPacket extends Packet{ public static final String CHARSET = "GB18030"; private byte[] body; public MsgPacket() { } public MsgPacket(String msg) { try { this.body = msg.getBytes(MsgPacket.CHARSET); } catch (UnsupportedEncodingException e) { } } /** * @return the body */ public byte[] getBody(){ return body; } /** * @param body the body to set ...
龙图腾飞 发布于 12个月前 阅读 4424 评论 19 点赞 18

Dubbo与Zookeeper、SpringMVC整合和使用(入门级)

Dubbo与Zookeeper、SpringMVC整合和使用 相关的原理介绍可以参考http://blog.csdn.net/congcong68/article/details/41113239博客写的内容。
小帅帅丶 发布于 12个月前 阅读 10030 评论 47 点赞 14

视觉角度: jfinal的Model与Beetlsql比较

JFinal 是目前在 git.oschina.net java中关注最多的项目. 亲自用JFinal开发过有上百张表的项目.项目完结后总要做个总结 这篇文章是介绍项目中开发的一些经历. 会首先列出JFinal的Model开发 (只是Model的使用) 使用Beetlsql替换JFinal的Model (给出一种较爽编码方式) 对比两个在写多条件查询sql时, (就是需要条件判断, 为null的不参与查询) 1.JFinal的Model开发 JFinal的ORM下面称JFinal的Model 这是Model的新增 修改 删除 jfinal 实体类1 public class Elephant extends Model<Elephant> { public static final Elephant Dao = new Elephant(); public List<Integer> findIds() { return Db.query("select id from tb_bird"); } }   jfinal 测试用例1 @Log4j public class ElephantTest { @Test public void testChainSave() { // 无需要创建字段 new Elephant().set("age", 17).set("name", "jfinal").set("desc", "mvc + orm").save(); } @Test public void testUpdate() { Elephant elephant = Elephant.Dao.findById(1); elephant.set("age", 18).update(); } @Test public v...
渔泯小镇 发布于 1年前 阅读 4026 评论 97 点赞 18

Gitlab删库事件的借鉴意义

上周轰动一时的Gitlab事件终于尘埃落定了,不可否认的是这次事故Gitlab官方公关的的很出色,及时公布事件细节并寻求帮助,这让本是一个失误引发的事故,演变为一个真诚面对问题并反思的正面教材。对此,网络上一片好评。
wier 发布于 1年前 阅读 4636 评论 40 点赞 11

使用 TeamCity 实现持续集成(CI)

持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了如何使用 TeamCity 持续集成工具来实现项目的持续集成。
waylau 发布于 1年前 阅读 2813 评论 16 点赞 6

接口自动化测试框架搭建

越来越多的公司开始做接口自动化测试,这里搭建一个轻量级的接口自动化框架,希望对大家有所帮助,在这之前希望大家先思考两个问题,什么是自动化测试?为什么要做接口自动化测试?
红焖鲤鱼 发布于 2年前 阅读 5061 评论 9 点赞 2

软件开发性感吗 ?!

软件开发的本质是复杂,有快感,无性感 。而美的感知是建立在亿万年人类进化之上深层次心理需求。
OceanStack 发布于 2年前 阅读 3061 评论 20 点赞 1

100行lua代码实现简单目录浏览器

界面部分用lae实现,无需写代码,100行lua代码实现简单目录浏览器。
ouloba 发布于 2年前 阅读 3896 评论 7 点赞 9

mybatis源码分析之Configuration

mybatis源码分析之Configuration
udbwcso 发布于 2年前 阅读 3032 评论 6 点赞 4

性能测试艺术[已经迁移]

已经迁移 http://blog.sciencenet.cn/blog-2604609-1106327.html 多谢关注   * 你的赞助是我们前进的动力: 一流企业专家自动化性能接口测试 数据分析 python一对一教,非骗人的培训机构(多数大陆培训机构的老师实际未入门)承接excel合并,电脑自动化操作等工程 并欢迎讨论中医草药风水相学等道家国学 qq群python 测试开发自动化测试 144081101 教你做免费的线上博客(放在简历中增加亮点),自动化测试平台,性能测试工具等,让你有实际项目经验  联系qq:37391319 交流QQ群:python 测试开发自动化测试 144081101  Python数据分析pandas Excel 630011153 中医草药自学自救大数据 391441566 南方中医草药鉴别学习 184175668 中医草药湿热湿疹胃病 291184506 python高级人工智能视觉 6089740 商务合作微信:pythontesting
磁针石 发布于 2年前 阅读 7630 评论 11 点赞 22

编辑-发布-开发分离:git作为NoSQL数据库

动态网页是下一个要解决的难题。我们从数据库中读取数据,再用动态去渲染出一个静态页面,并且缓存服务器来缓存这个页面。既然我们都可以用Varnish、Squid这样的软件来缓存页面——表明它们可以是静态的,为什么不考虑直接使用静态网页呢? 为了实现之前说到的编辑-发布-开发分离的CMS,我还是花了两天的时间打造了一个面向普通用户的编辑器。效果截图如下所示: 作为一个普通用户,这是一个很简单的软件。除了Electron + Node.js + React作了一个140M左右的软件,尽管打包完只有40M左右 ,但是还是会把用户吓跑的。不过作为一个快速构建的原型已经很不错了——构建速度很快、并且运行良好。 尽管这个界面看上去还是稍微复杂了一下,还在试着想办法将链接名和日期去掉——问题是为什么会有这两个东西? 从Schema到数据库 我们在我们数据库中定义好了Schema——对一个数据库的结构描述。在《编辑-发布-开发分离 》一文中我们说到了echeveria-content的一个数据文件如下所示: { "title": "白米粥", "author": "白米粥", "url": "baimizhou", "date": "2015-10-21", "description": "# Blog post \n > This is an example blog post \n L...
Phodal 发布于 2年前 阅读 3872 评论 8 点赞 4

简述 Microservices(微服务)

自 2014 年始,Microservices(微服务)一词越来越火爆,不谈 Microservices 彷佛就 out 了。那么什么是 Microservices?Microservices 架构与传统的架构有什么区别?何时应该采用 Microservices?如何构建 Microservices? 本文,就针对上述提到的问题,来简单介绍下 Microservices。
waylau 发布于 2年前 阅读 3202 评论 4 点赞 8

老翟书摘:从《大野耐一的现场管理》看软件工程管理

![输入图片说明](https://static.oschina.net/uploads/img/201602/11213623_brK3.jpg "在这里输入图片标题") 前年,接触到了[《丰田生产方式》](http://my.oschina.net/zjzhai/blog/522423),就对大野耐一这个人十分感兴趣,就专门找他的书来看。 同时,我一直都有一种“感觉”:我们软件工程的管理方式都是从传统工业借鉴的。比如被吹上天的“精益”概念及“看板”概念。然而,这些概念里,少有人说明这样地借鉴的理由及借鉴了哪些,放弃了哪些。想回答这个问题就必须分别弄清楚传统工业和软件工程的本质。 我尝试在这本书了解一些关于传统工业的管理概念。以下是书摘: ####“精益”的概念的产生 >1990年,美国麻省理工学院的詹姆斯 沃麦克等多位教授,在《改变世界的机器》一书中,首次以“精益生产”(learn production)为核心介绍丰田生产方式,自此,欧美的一些企业才开始把丰田生产方式作为全球化以及提高生产率的标准和尺度。 ####领导说服力:坦诚即代表强劲的说服力 > 要想说服别人或是得到理解,若没有什么根据或道理是行不通的。 > 不要总是认为自己的言行没有错误,意识到错之后就应该爽快地说出来。如果有了这种胸怀,指挥现场以及下属不就变得轻而易举了吗...
翟志军 发布于 2年前 阅读 1940 评论 9 点赞 4

TCP可靠传输&流量控制&拥塞控制

TCP 可靠性算法解释,TCP 可靠性传输的理论知识 LwIP协议栈推荐
满小茂 发布于 2年前 阅读 8899 评论 7 点赞 23
顶部