开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

Maven-- 自定义Archetype

# Maven-- 自定义Archetype ## 学习思维导图 ![image](http://wx4.sinaimg.cn/mw690/006qiLqogy1flppgqlbetj30j30cv74u.jpg) ## 自定义Archetype ### **背景** > Archetype是什么?为什么要自定义Archetype?又或者它能解决什么问题。 Archetype翻译为原型,也可被称作模板。简单来说,可以通过模板创建一个我们想要的初始化工程,从而可以在这个工程下快速或直接开始我们的业务编程工作。即解决创建工程时的重复性操作,比如pom依赖添加,资源文件添加等等等等... ### **操作系统** windows (window 10) ### **软件版本** JDK1.8.0_111 MAVEN3.0.4(可以提升一下版本) ECLIPSE4.4.2 ### **操作步骤** > 这里以小程序为例,web应用也是同样的道理 1. 打开Eclipse,创建Maven项目,选择quickstart。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwoehn4ij30ih0gzmxw.jpg) ![image](http://wx1.sinaimg.cn/mw690/006qiLqogy1flpwoib7hxj30lr0hmwf1.jpg) 2. 打开新建的maven项目的pom文件,添加你需要的jar包依赖。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwuc48sqj319o0kn40l.jpg) 3. 在工程名上右键,Run As -> maven build...,输入archetype:create-...
小祝特烦恼 发布于 3天前 阅读 143 点赞 1

全新的.NET解释器 - Mono已经到来

Mono通过新的运行代码方式,完善了自己的即时编译器和静态编译器。 2001年,Mono项目正式开始,Mono开发团队为.NET指令集编写了一个解释器,用于在Linux上引导一个自托管的.NET开发环境。 当时认为解释器只是一个临时工具,可以在建立一个Just-in-Time(JIT)编译器的时候使用它。解释器(mint)和JIT引擎(mono)一直保持同步存在的状态,直到可以将JIT引擎移植到所有支持的平台。 当引入泛型时,同时保留解释器和JIT引擎的工程成本变得很高,不再值得,所以去掉了解释器。 稍后会介绍.NET代码的全静态编译。这也是引入禁止目标平台生成动态代码的技术。iOS是这方面的主要驱动者,它开启了允许Mono运行在PlayStation和Xbox等游戏机上的大门。 全静态编译的主要缺点是:每次更新代码时都必须重新创建一个全新的可执行文件。这是一个缓慢的过程,不适合于实践的互动式发展。 例如,一些游戏开发者喜欢在不触发完整的重新编译情况下,调整自己的游戏代码。静态编译使这种情况变得不切实际,所以他们在游戏代码中嵌入脚本语言,来快速迭代和调整。 .NET缺乏动态功能,这也妨碍了.NET作为教学或原型开发工具在一些环境中的使用。一些像Xamarin Workbooks或简单的脚本的工具,不...
葡萄城控件技术团队 发布于 1周前 阅读 335

腾讯与阅文技术合作 微服务框架Tars再添PHP

> 梁晨(Ted),任职阅文集团技术中心,负责起点中文网的WEB后台开发工作。曾负责腾讯上海企业产品部营销QQWeb后台开发、QQ公众号Web后台开发,对大型网站技术架构,有自己的经验和见解。腾讯开源项目TSF2.0框架开发者,腾讯开源组件Tars-PHP开发者,也曾是腾讯公司多个PHP扩展组件的开发者与维护者。 ## 引言 TARS作为由腾讯公司开源的优秀RPC框架与服务部署运维解决方案,被阅文集团引入了实际实践中,同时阅文集团对TARS在PHP语言层面进行了能力的补全,令TARS如虎添翼。TARS-PHP的解决方案兼具简单高效、接口维护方便容易扩展、代码自动生成,以及集成寻址、服务发现、监控、上报等功能。经历了阅文集团线上业务的考验与洗礼,充分证明了该解决方案的优势。 项目地址:https://github.com/Tencent/Tars/tree/master/php ## "PHP是世界上最好的语言" 众所周知,在PHP诞生之初,就是WEB站点的开发而生。但是一直以来,都无法摆脱弱类型、脚本语言的性能之殇的帽子。随着互联网行业的不断发展,以及用户需求和基础架构的不断变化,PHP语言本身也一直在发展。无论是SWOOLE的出现,还是PHP7对性能的提升,都丰富和助力了PHP本身的应用。 相信大家在开发中也会发现,作为经常处...
腾讯开源 发布于 3周前 阅读 468 点赞 2

SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍     目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的EtherCAT开源协议栈,SylixOS已移植支持。 2 SylixOS-IgH使用框架     SylixOS-IgH的使用尽可能保留了Linux下IgH的使用方式,其中延续了命令行工具的功能,而在应用程序开发方面,借助SylixOS集成开发套件的优势,用户可以更方便编辑、调试基于SylixOS-IgH的应用程序。     SylixOS-IgH主要分为IgH主站协议栈、网络设备驱动、IgH用户层接口库以及用户应用程序。具体介绍如下所述: 2.1 IgH主站协议栈     IgH主站协议栈源代码经编译后是一具体的ec_master.ko内核模块,EtherCAT功能集中实现在该模块中,另外该模块注册之后会在/dev路径下创建一个EtherCAT字符设备,如图 2‑1所示。 图2‑1  /dev路径下的EtherCAT0主站    用户程序操作EtherCAT主站,会通过用户层接口函数最终调用I/O系统的open,ioctl函数完成EtherCAT协议栈的执行。 2.2 网络设备驱动     针对SylixOS-IgH的网络设备驱动源代码经编译后是一具体的内核模块,其中通用网卡驱动模块命名为generic...
Jackstraw瑞 发布于 3周前 阅读 79

MySQL Schema与数据类型的优化

MySQL Schema与数据类型的优化
jasonccs 发布于 4周前 阅读 79 评论 1

git工作流介绍--结合sourcetree

git工作流介绍--结合sourcetree   git分布式版本控制系统   分布式是如何实现的: 服务器上有一个git仓库。完整地克隆服务器上的git仓库生成本地仓库。进行本地开发,开发完成后,提交到本地仓库。在合适的时候将变更推送到服务器仓库。 好处: 完全复制代码库,多备份,服务器仓库损坏也没有影响。 环境完全隔离,本地如何修改都不会影响其他人。 多分支的特性,使得不同版本、新特性开发、修复bug可以同时进行,互不影响 可以离线开发,不需要时时连接服务器。   svn与git的对比 vss--svn--git优缺点   git相关工具 github--一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名github。 stash--企业级Git代码库管理工具 sourcetree--git的界面化工具 SourceTree | Free Git GUI for Mac and Windows   其他众多gui    git工作流指南 开发者开始先克隆中央仓库。在自己的项目拷贝中编辑文件和提交修改;但修改是存在本地的,和中央仓库是完全隔离的。开发者可以把和上游的同步延后到一个方便时间点。 要发布修改到正式项目中,开发者要把本地master分支的修改『推』到中央仓库中,推送(push)操作会把所有还不在中央仓库...
sekaiga 发布于 1个月前 阅读 335 点赞 2

【避坑】初次接项目的血与泪,扎坑了老铁

谈起外包经历,我的第一次外包源自前两年某天陪着女友逛商场时,接到一个朋友的电话,朋友兴高采烈地跟我介绍一个大项目:需求不多、钱不少,难度不大、口气不小,我一听心动了,原以为要赚一笔 easy money,后面再看看,这次外包踩了大大小小不少的坑,遂想好好记录一下。
面包奶油巧克力 发布于 1个月前 阅读 1175 评论 28 点赞 5

Kubernetes调度算法介绍

调研k8s scheduler的结果,基于v1.6.6版本
jonathan_loda 发布于 1个月前 阅读 15

TeamFlowy——结合Teambition与Workflowy

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

C# FTP 坑了我两天的一个坑

开发c#下的ftp协议上传工具时遇到的一个坑中坑。。。。。
dingdayu 发布于 2个月前 阅读 601 评论 19 点赞 2

kubernetes数据卷管理源码分析

分析k8s对volume的管理
jonathan_loda 发布于 2个月前 阅读 171 评论 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 发布于 3个月前 阅读 1946 评论 7

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

[码云地址][1] 在[Chapter 1: 基本用法 - 使用Spring Boot Testing工具][chapter_1_s3_spring_boot_testing.md]里提到: > 除了单元测试(不需要初始化ApplicationContext的测试)外,尽量将测试配置和生产配置保持一致。比如如果生产配置里启用了AutoConfiguration,那么测试配置也应该启用。因为只有这样才能够在测试环境下发现生产环境的问题,也避免出现一些因为配置不同导致的奇怪问题。 那么当我们想在测试代码里关闭Auto Configuration如何处理? 1. 方法1:提供另一套测试配置 1. 方法2:使用`@OverrideAutoConfiguration` 方法1虽然能够很好的解决问题,但是比较麻烦。而方法2则能够不改变原有配置、不提供新的配置的情况下,就能够关闭Auto Configuration。 在本章节的例子里,我们自己做了一个Auto Configuration类,[AutoConfigurationEnableLogger][src-AutoConfigurationEnableLogger]: ```java @Configuration public class AutoConfigurationEnableLogger { private static final Logger LOGGER = LoggerFactory.getLogger(AutoConfigurationEnableLogger.class); public AutoConfigurationEnableLogger() { LOGGER.info("Auto Configuration Enabled");...
jarchan 发布于 3个月前 阅读 75

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

[码云地址][1] [@ActiveProfiles][doc-active-profiles]可以用来在测试的时候启用某些Profile的Bean。本章节的测试代码使用了下面的这个配置: ```java @Configuration public class Config { @Bean @Profile("dev") public Foo fooDev() { return new Foo("dev"); } @Bean @Profile("product") public Foo fooProduct() { return new Foo("product"); } @Bean @Profile("default") public Foo fooDefault() { return new Foo("default"); } @Bean public Bar bar() { return new Bar("no profile"); } } ``` ## 例子1:不使用ActiveProfiles 在没有[@ActiveProfiles][doc-active-profiles]的时候,profile=default和没有设定profile的Bean会被加载到。 源代码[ActiveProfileTest][src-ex1-ActiveProfileTest]: ```java @ContextConfiguration(classes = Config.class) public class ActiveProfileTest extends AbstractTestNGSpringContextTests { @Autowired private Foo foo; @Autowired private Bar bar; @Test public void test() { assertEquals(foo.getName(), "default"); assertEquals(bar.getName(), "no profile"); } } ``` ## 例子2:使用ActiveProfiles 当使...
jarchan 发布于 3个月前 阅读 445 评论 2

Spring、Spring Boot和TestNG测试指南 - 使用Spring Boot Testing工具

[Github地址][1] 前面一个部分讲解了如何使用Spring Testing工具来测试Spring项目,现在我们讲解如何使用Spring Boot Testing工具来测试Spring Boot项目。 > 在Spring Boot项目里既可以使用Spring Boot Testing工具,也可以使用Spring Testing工具。 > 在Spring项目里,一般使用Spring Testing工具,虽然理论上也可以使用Spring Boot Testing,不过因为Spring Boot Testing工具会引入Spring Boot的一些特性比如AutoConfiguration,这可能会给你的测试带来一些奇怪的问题,所以一般不推荐这样做。 ## 例子1:直接加载Bean 使用Spring Boot Testing工具只需要将`@ContextConfiguration`改成`@SpringBootTest`即可,源代码见[FooServiceImpltest][src-ex1-FooServiceImpltest]: ```java @SpringBootTest(classes = FooServiceImpl.class) public class FooServiceImplTest extends AbstractTestNGSpringContextTests { @Autowired private FooService foo; @Test public void testPlusCount() throws Exception { assertEquals(foo.getCount(), 0); foo.plusCount(); assertEquals(foo.getCount(), 1); } } ``` ## 例子2:使用内嵌@Configuration加载Bean 源代码见[FooServi...
jarchan 发布于 3个月前 阅读 608 评论 1

使用SwaggerSpringBootStarter展示web项目api接口

使用springfox的swagger,配合spring boot来使用,展示web项目的api接口
阿信sxq 发布于 4个月前 阅读 734 评论 3

比特币深层技术原理浅析

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

Md5扩展攻击的原理和应用

本文阐述了md5扩展攻击的原理,虽然算法没有仔细研究但是,过程觉得比较有意思所以发这篇博客。
想飞的猫 发布于 6个月前 阅读 581 评论 1

聊聊Golang中的range关键字

golang range
william3608 发布于 6个月前 阅读 389 评论 2 点赞 3

Linux之父:人生在世,Just for Fun !

It started out as survival, but it became a social thing.And then it becomes entertainment. 《Just for Fun: The Story of an Accidental Revolutionary》,是Linux内核的创建者林纳斯·托瓦兹(Linus Torvalds)的自传。这本书由他和大卫·戴蒙德(David Diamond)联合撰写,叙述林纳斯·托瓦兹从小的成长历程、创建Linux内核、Git的过程以及软件世界的江湖恩怨。全书主体部分采用一问一答的访谈形式,由戴蒙德在他们的的汽车旅行过程中记
RiboseYim 发布于 6个月前 阅读 1616 评论 10 点赞 1

软件开发流程

本文面向的对象是,适合和我当初一样对软件开发一无所知的IT从业者(或者有兴趣者),另外也欢迎我的程序员小伙伴和测试小伙伴,因为你们也懂这个过程,所以我们可以作更多探讨,这个过程中我们可能会发现大家对同一件事的理解并不一致,也许经过碰撞,我们能共创智慧的果实。
Mstart 发布于 12小时前 阅读 3

两种用户年龄段统计的方法

统计各个年龄段的用户数量
反AI首席倡议官 发布于 11小时前 阅读 3

USB 虚拟串口简介

1. USB虚拟串口简介 USB虚拟串口属于USB通信设备类。在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传至主机,再由相应的串口应用程序进行处理。对用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。 1.1      USB CDC协议简介 USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型,其中USB传统纯电话业务模型又可分为直线控制模型(Direct Line Control Model)、抽象模型、电话模型,如图 1.1所示。本文讨论的虚拟串口就属于USB 传统纯电话业务模型下的抽象控制模型。 图 1.1 CDC分类 1.2  ...
BEST_CC 发布于 8小时前 阅读 3

BWA-MEM算法记录

BWA-MEM算法整体流程如下: 1 读入 bwt、options、reads; 2 利用mem_chain生成chain; 3 利用mem_chain_flt过滤掉部分chain; 4 利用mem_chain2aln生成比对结果元数据。 BWA采用seed-and-extend策略。在seed阶段,BWA取read的碱基片段在reference上进行精确匹配,并选择满足一定匹配次数和长度要求read片段作为seed,这个阶段算法的核心是基于FM-index的精确匹配;在extend阶段,BWA利用Smith-Waterman算法将seed在read和reference上向两边延伸比对,进而找到整个read在reference上符合条件的全局匹配。  
悲催的古灵武士 发布于 6小时前 阅读 3

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍     目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的EtherCAT开源协议栈,SylixOS已移植支持。 2 SylixOS-IgH使用框架     SylixOS-IgH的使用尽可能保留了Linux下IgH的使用方式,其中延续了命令行工具的功能,而在应用程序开发方面,借助SylixOS集成开发套件的优势,用户可以更方便编辑、调试基于SylixOS-IgH的应用程序。     SylixOS-IgH主要分为IgH主站协议栈、网络设备驱动、IgH用户层接口库以及用户应用程序。具体介绍如下所述: 2.1 IgH主站协议栈     IgH主站协议栈源代码经编译后是一具体的ec_master.ko内核模块,EtherCAT功能集中实现在该模块中,另外该模块注册之后会在/dev路径下创建一个EtherCAT字符设备,如图 2‑1所示。 图2‑1  /dev路径下的EtherCAT0主站    用户程序操作EtherCAT主站,会通过用户层接口函数最终调用I/O系统的open,ioctl函数完成EtherCAT协议栈的执行。 2.2 网络设备驱动     针对SylixOS-IgH的网络设备驱动源代码经编译后是一具体的内核模块,其中通用网卡驱动模块命名为generic...
Jackstraw瑞 发布于 3周前 阅读 79

DWG文件转换为PDF文件

 dwg文件是CAD图纸文件格式中的一种,这类文件不使用专业的CAD看图或编辑软件是无法查看的。要将dwg文件图纸转换为PDF文件格式,就必须要使用专业的CAD看图软件了。那什么软件可以直接转换图纸的文件格式呢?今天小编就要给大家介绍dwg文件格式转换的方法。 接下来小编就来教大家如何使用迅捷CAD编辑器将dwg文件图纸转为PDF文件格式的方法: 1.首先点击迅捷CAD编辑器,将CAD文件打开。 2.之后点击“文件”中的批处理 3.将DWG文件添加进去,选择文件的输出格式为PDF文件格式。 4.最后点击开始,这样就将DWF文件转换为PDF文件了。 以上就是小编介绍的dwg文件图纸转PDF文件格式的方法。如果有多个dwg图纸文件需要转换,软件还可以实现批量转换。我们只要选择批处理功能,然后添加文件夹既可以一次性转换多个图纸文件,非常便捷。  
大小多少111 发布于 12小时前 阅读 2

标准的 Java 项目 .gitignore 可以参考如下:

``` # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files /bin/ /gen/ # Local configuration file (sdk path, etc) local.properties # Eclipse project files .classpath .project .settings/ # Proguard folder generated by Eclipse proguard/ # Intellij project files *.iml *.ipr *.iws .idea/ # Maven /log/ target/ /target/ ```
_Artisan 发布于 10小时前 阅读 2

订单去重

session防重:  方式1:一次性token  缓存防重:  方式1:Redis HyperLogLog  方式2:计数器  注意:需考虑清理机制  数据库防重  方式1:唯一约束  方式2:先插入数据,再统计是否超过1条,超过则作废(第1条不作废)    一定要加前置状态; 1、先锁数据  2、判断状态,如果判断不正确,直接返回  3、业务处理  4、修改状态。     页面,跳转或者重定向新的页面;            
new_chaos 发布于 6小时前 阅读 2

springboot

第一天用 springboot出现异常 Unregistering JMX-exposed beans on shutdown 解决方式 Maven目录下boot文件删除重新生成一下就好
优雅的弗利萨 发布于 2小时前 阅读 2

JAVA微信APP支付接口整合

    上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它大同小异了,当然这其中肯定是有各种变化的:     首先让我把微信支付文档的官网贴出来,下面代码中有不懂得可以查看文档:     1:    各种支付: https://pay.weixin.qq.com/wiki/doc/api/sl.html     2:    APP支付: https://pay.weixin.qq.com/wiki/doc/api/app/app_sl.php?chapter=8_1     3:    业务流程: https://pay.weixin.qq.com/wiki/doc/api/app/app_sl.php?chapter=8_3     4:    统一下单: https://pay.weixin.qq.com/wiki/doc/api/app/app_sl.php?chapter=9_1     5:   支付结果通知: https://pay.weixin.qq.com/wiki/doc/api/app/app_sl.php?chapter=9_7&index=3     好了,关键的文档就这么多;微信的官方支付SDK我没有找到,就只有自己开写啦,当然,也借助了网上不少大牛的技术支持,在这里表示非常非常感谢;     话不多说,我们直接来上代码: 1: 微信APP支付配置文件(数据为测试数据): package com.xt.shop.web.wxpay; /** *<p>类 说 明: TODO 微信APP支付配置文件 *<p>创建时间: 2017年1...
ge洋 发布于 2周前 阅读 8

SylixOS内存错误排查方法

  1.应用程序测试代码 测试代码如程序清单 1.1所示: 程序清单 1.1 #include <stdio.h>   int main (int argc, char **argv) { sleep(2); volatile int *a = (int *)0x40; //设置物理地址   printf("value = %x\n",*a); //读取物理地址中的值 *a = 0x12; //设置物理地址中的值   return (0); }   2.模拟器运行结果 在mini2440模拟器上的运行结果如图 2.1所示: 图 2.1模拟器运行结果 标号1处表示测试程序的加载地址,这里为0x60030000 标号2处表示引起错误的那条指令在内存中的地址,这里为0x600302ec 标号3处表示引起内存访问错误的地址,这里是0x40,意思是系统进行了一个访问0x40这个内存地址的操作,从而导致了内存错误 标号4处表示内存访问错误类型,这里是can not write,意思就是系统执行了一个写内存的操作,但是这个内存地址是不允许写的,从而引起内存错误   3.反汇编测试程序   本测试程序是用debug模式编译所得,将测试程序和sylixos-objdump工具拷贝到同一个目录下,如图 3.1所示: 图 3.1拷贝测试程序和反汇编工具 在空白处按住shift并右击,选择"在此处打开命令窗口",如图 3.2所示: 图 3.2打开命令窗口   在打开的命令行中输入:arm-sylixos-eab...
深山野老 发布于 2天前 阅读 2

必备git神技实现清晰git提交历史

原文地址:http://fle.github.io/git-tip-keep-your-branch-clean-with-fixup-and-autosquash.html 可以使用git commit --fixup和git rebase -i --autosquare来保证分支提交记录的整洁,特别适用于当前提交是由于之前某次提交的简单修复 ``` $ (dev) git add featureA $ (dev) git commit -m "Feature A is done" [dev fb2f677] Feature A is done $ (dev) git add featureB $ (dev) git commit -m "Feature B is done" [dev 733e2ff] Feature B is done ``` 当提交后发现featureA中忘记去掉pdb了,则可以 ``` $ (dev) git add featureA # you've removed a pdb : shameful commit $ (dev) git commit --fixup fb2f677 [dev c5069d5] fixup! Feature A is done ``` 然后通过git log --oneline看下日志 ``` $ (dev) git log --oneline c5069d5 fixup! Feature A is done 733e2ff Feature B is done fb2f677 Feature A is done ac5db87 Previous commit ``` 在合并前使用autosqaure来实现分支记录的整洁,值得注意的是,rebase后面跟的是想要fixup之前一个commit id。 ``` $ (dev) git rebase -i --autosquash ac5db87 pick fb2f677 Feature A is done fixup c5069d5 fixup!...
alazyer 发布于 1天前 阅读 1

ThreadLocal的使用场景

  最近项目中遇到如下的场景:在执行数据迁移时,需要按照用户粒度加锁,因此考虑使用排他锁,迁移工具和业务服务属于两个服务,因此需要使用分布式锁。 我们使用缓存(Tair或者Redis)实现分布式锁,具体代码如下: @Service public class Locker { @Resource(name = "tairClientUtil") private TairClientUtil tairClientUtil; private ThreadLocal<Long> lockerBeanThreadLocal = new ThreadLocal<>(); public void init(long userid) { lockerBeanThreadLocal.remove(); lockerBeanThreadLocal.set(userid); } public void updateLock() { String lockKey = Constants.MIGRATION_PREFIX + lockerBeanThreadLocal.get(); tairClientUtil.incr(lockKey, Constants.COUNT_EXPIRE); } public void invalidLock() { String lockKey = Constants.MIGRATION_PREFIX + lockerBeanThreadLocal.get(); tairClientUtil.invalid(lockKey); } } 因为每个线程可能携带不同的userid发起请求,因此在这里使用ThreadLocal变量存放userid,使得每个线程都有一份自己的副本。 参考官方文档:T...
new_chaos 发布于 5小时前 阅读 1

将博客搬至CSDN

我选择离开OSC
小代码2016 发布于 3个月前 阅读 29 评论 1

Java面试——从JVM角度比较equals和==的区别

1.  Java中数据类型分类 1.1    基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值。   1.2    复合数据类型 当复合数据类型用(==)进行比较,比较的是他们在内存中的存放地址。 当复合数据类型之间进行equals比较时,这个方法的初始行为是比较对象在堆内存中的地址,但在一些诸如String,Integer,Date类中把Object中的这个方法覆盖了,作用被覆盖为比较内容是否相同。 本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52089040   2.  String类的讨论   [java] view plain copy String s1 = "Hello";   String s2 = "Hello";   if (s1 == s2){    System.out.println("s1 == s2");   }else{   System.out.println("s1 != s2");   }   输出:s1 == s2   说明:双等号在进行复合数据类型比较时,比较的是内存中的存放地址。因此s1与s2引用同一个String对象。   [java] view plain copy String s1 = "Hello";   String s2 = new String("Hello");   if (s1 == s2){   System.out.println("s1...
new_chaos 发布于 4小时前 阅读 1

HttpClient 中文官方教程----第5章流利的API+第6章HTTP缓存-只收录,未测试

流利的API 5.1。易于使用的外观API 从4.2版本开始,HttpClient自带了一个易于使用的外观API,基于流畅界面的概念。流畅的外观API仅暴露了HttpClient的最基本功能,旨在用于不需要HttpClient的完全灵活性的简单用例。例如,流畅的外观API可以减轻用户不必处理连接管理和资源释放。 以下是通过HC流畅API执行的HTTP请求的几个示例 // Execute a GET with timeout settings and return response content as String. Request.Get("http://somehost/") .connectTimeout(1000) .socketTimeout(1000) .execute().returnContent().asString(); // Execute a POST with the 'expect-continue' handshake, using HTTP/1.1, // containing a request body as String and return response content as byte array. Request.Post("http://somehost/do-stuff") .useExpectContinue() .version(HttpVersion.HTTP_1_1) .bodyString("Important stuff", ContentType.DEFAULT_TEXT) .execute().returnContent().asBytes(); // Execute a POST with a custom header through the proxy containing a request body // as an HTML...
诺岚 发布于 3个月前 阅读 15

IDEA 新建spring Boot 项目新建后启动失败, 提示Unregistering JMX-exposed beans on shutdown

建项目的步骤:   新建好项目后运行,出错: _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.6.RELEASE) 2017-09-05 11:25:45.397 INFO 10244 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on admin-PC with PID 10244 (D:\usr\demo\target\classes started by admin in D:\usr\demo) 2017-09-05 11:25:45.399 INFO 10244 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default 2017-09-05 11:25:45.428 INFO 10244 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@120d6fe6: startup date [Tue Sep 05 11:25:45 CST 2017]; root of context hierarchy 2017-09-05 11:25:45.748 WARN 1...
诺岚 发布于 3个月前 阅读 31

kubernetes数据卷管理源码分析

分析k8s对volume的管理
jonathan_loda 发布于 2个月前 阅读 171 评论 1

Redis和Memcached的区别

Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较: Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。 内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。 性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。 具体为什么会出现上面的结论,以下为收集到的资料: 1、数据类型支持不同 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多。最为常用的数据类型主要由五种:Str...
new_chaos 发布于 1周前 阅读 25

Maven-- 自定义Archetype

# Maven-- 自定义Archetype ## 学习思维导图 ![image](http://wx4.sinaimg.cn/mw690/006qiLqogy1flppgqlbetj30j30cv74u.jpg) ## 自定义Archetype ### **背景** > Archetype是什么?为什么要自定义Archetype?又或者它能解决什么问题。 Archetype翻译为原型,也可被称作模板。简单来说,可以通过模板创建一个我们想要的初始化工程,从而可以在这个工程下快速或直接开始我们的业务编程工作。即解决创建工程时的重复性操作,比如pom依赖添加,资源文件添加等等等等... ### **操作系统** windows (window 10) ### **软件版本** JDK1.8.0_111 MAVEN3.0.4(可以提升一下版本) ECLIPSE4.4.2 ### **操作步骤** > 这里以小程序为例,web应用也是同样的道理 1. 打开Eclipse,创建Maven项目,选择quickstart。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwoehn4ij30ih0gzmxw.jpg) ![image](http://wx1.sinaimg.cn/mw690/006qiLqogy1flpwoib7hxj30lr0hmwf1.jpg) 2. 打开新建的maven项目的pom文件,添加你需要的jar包依赖。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwuc48sqj319o0kn40l.jpg) 3. 在工程名上右键,Run As -> maven build...,输入archetype:create-...
小祝特烦恼 发布于 3天前 阅读 143 点赞 1

Maven-- 自定义Archetype

# Maven-- 自定义Archetype ## 学习思维导图 ![image](http://wx4.sinaimg.cn/mw690/006qiLqogy1flppgqlbetj30j30cv74u.jpg) ## 自定义Archetype ### **背景** > Archetype是什么?为什么要自定义Archetype?又或者它能解决什么问题。 Archetype翻译为原型,也可被称作模板。简单来说,可以通过模板创建一个我们想要的初始化工程,从而可以在这个工程下快速或直接开始我们的业务编程工作。即解决创建工程时的重复性操作,比如pom依赖添加,资源文件添加等等等等... ### **操作系统** windows (window 10) ### **软件版本** JDK1.8.0_111 MAVEN3.0.4(可以提升一下版本) ECLIPSE4.4.2 ### **操作步骤** > 这里以小程序为例,web应用也是同样的道理 1. 打开Eclipse,创建Maven项目,选择quickstart。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwoehn4ij30ih0gzmxw.jpg) ![image](http://wx1.sinaimg.cn/mw690/006qiLqogy1flpwoib7hxj30lr0hmwf1.jpg) 2. 打开新建的maven项目的pom文件,添加你需要的jar包依赖。 ![image](http://wx2.sinaimg.cn/mw690/006qiLqogy1flpwuc48sqj319o0kn40l.jpg) 3. 在工程名上右键,Run As -> maven build...,输入archetype:create-...
小祝特烦恼 发布于 3天前 阅读 143 点赞 1

全新的.NET解释器 - Mono已经到来

Mono通过新的运行代码方式,完善了自己的即时编译器和静态编译器。 2001年,Mono项目正式开始,Mono开发团队为.NET指令集编写了一个解释器,用于在Linux上引导一个自托管的.NET开发环境。 当时认为解释器只是一个临时工具,可以在建立一个Just-in-Time(JIT)编译器的时候使用它。解释器(mint)和JIT引擎(mono)一直保持同步存在的状态,直到可以将JIT引擎移植到所有支持的平台。 当引入泛型时,同时保留解释器和JIT引擎的工程成本变得很高,不再值得,所以去掉了解释器。 稍后会介绍.NET代码的全静态编译。这也是引入禁止目标平台生成动态代码的技术。iOS是这方面的主要驱动者,它开启了允许Mono运行在PlayStation和Xbox等游戏机上的大门。 全静态编译的主要缺点是:每次更新代码时都必须重新创建一个全新的可执行文件。这是一个缓慢的过程,不适合于实践的互动式发展。 例如,一些游戏开发者喜欢在不触发完整的重新编译情况下,调整自己的游戏代码。静态编译使这种情况变得不切实际,所以他们在游戏代码中嵌入脚本语言,来快速迭代和调整。 .NET缺乏动态功能,这也妨碍了.NET作为教学或原型开发工具在一些环境中的使用。一些像Xamarin Workbooks或简单的脚本的工具,不...
葡萄城控件技术团队 发布于 1周前 阅读 335

七种设计模式(六)迪米特法则

最少知道原则
仟昭 发布于 3天前 阅读 6

化学式中间的圆点符号怎么打

ChemDraw作为最实用的化学公式编辑器软件,在绘制化学结构时,离不开给化学结构标记原子名称,有时还需要插入分隔点,如果你不知道怎么操作,没关系。本教程以下图给出的化学结构为例,讲解用ChemDraw打化学式中间的圆点符号。 化学结构示例 软件获取地址如下: ChemDraw 16:http://wm.makeding.com/iclk/?zoneid=18518 ChemDraw 16 MAC:http://wm.makeding.com/iclk/?zoneid=18519 具体操作步骤如下: 1.启动ChemDraw Std14.0,打开用户界面; 2.在工具栏选择环已烷,输入在编辑区域(如下图所示); 在编辑区域画出环已烷 3.选择文本工具,标记原子名称(如下图所示); 在环已烷结构上标记原子名称 4.选择文本工具,在结构的右面单击显示文本框,选择“View”菜单下的“Show Character Map Windows”命令(如下图所示); 在View菜单下选择“Show Character Map Windows”命令 5.弹出如下图所示的Character Map对话框,选择该符号,或者输入Alt+0183(小键盘); 在Character Map下选择分隔点符号 6.该符号就会出现在文本框中,设置该符号为粗体(同样适用word),然后在该符号后面输入2HCI。 按照上面的步骤操作,就可以掌握输入化学式分隔点的具体方法,这样就不要担...
软件贴士 发布于 2个月前 阅读 26

简明易懂的分布式计算模型

开场 读了 陈绍业.大规模分布式系统架构与设计实战[M]机械工业出版社,2014.2。 根据里面的模型延伸。 开发中用到了分布式计算的系统。但是没有仔细去琢磨其中的设计理念。 本文延伸书中的内容,尝试用更简单的语言去阐述一种分布式计算的模型。 1 2 3 4 5 0x001 现实生活中的分布式计算 每天都会有各种各样的新的公司成立,公司嘛,总是有愿景滴,这个愿景呢,就是分布式计算的结果。那么为了达成这个愿景呢,就需要做分布式计算。谁来做分布式计算呢?当然是员工了。也就是worker。 那么问题来了,我去哪里找这些员工呢?明显是招聘对吧?你总不能指望一个人完成所有的工作吧?我们把所有介绍工作的都称为猎头。猎头维护了大量的求职者的信息,大把大把的资源,而且求职者也会向猎头提交简历并询问有没有工作可以推荐。 当然在这里猎头可以是一个,也可以是多个,我们简化成一个。当然多个也并不复杂。 公司需要员工,向猎头询问员工信息,猎头把目前没有工作的求职者的信息给A公司。A公司问求职者A愿不愿意来工作,求职者说我可以来。接着就是求职者入职啦。  有人了,公司怎么分配工作呢?这就是分布式的分片,由公司领导完成。  怎么干活呢?公司A给员工A(求职者...
new_chaos 发布于 3天前 阅读 4

七种设计模式(五)合成/聚合复用原则

“能不继承就少用继承"
仟昭 发布于 2天前 阅读 4

Taiga 敏捷项目管理工具

Taiga 是一款开源的敏捷项目管理软件,提供Scrum和KanBan两种敏捷管理工具。
爱迪生与钢弹战士 发布于 2周前 阅读 14

计算机科学中的圣经

作为一名计算机行业从业者,不能充当南郭先生,“知其然,不知其所以然” 更是职业禁忌,“多读书,读好书”。  对于一名普通毕业生,有哪些书籍是我们必要要读,而且要反复读的呢?下面介绍一下我严重的“计算机科学中的圣经”: CSAPP(Computer Science, A Programmer's Perspective),一般译作:《深入理解计算机系统》,该书被誉为 “计算机科学的圣经”,属于计算机科学导论性质的图书。本书主要内容是关于计算机体系结构与编译器和操作系统之间的交互,包含数据在计算机内部的存储方法,流水指令的构成,虚拟存储器,编译系统,动态加载库,用户态应用等,几乎涵盖了最重要的计算机系统基础知识,能够让我们充分明白程序执行过程中到底发生了什么事情,能够程序员在写程序、调试程序、优化程序时“知其所以然”,有针对性、方向性地提升程序的安全性,运行效率等。 CLRS (Introduction to Algorithms,作者 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein,简写是取自四位作者姓氏的首字母),一般译作:《算法导论》,被誉为“计算机算法的圣经”。本书主要是介绍前人总结的各种算法,书中各章自成体系,都可以作为独立的学习...
new_chaos 发布于 5天前 阅读 5

Spring源码阅读-AOP实现核心类AbstractAutoProxyCreator

前面两篇主要是讲从两个入口对AbstractAutoProxyCreator的子类进行注册,下面看具体实现逻辑: 一、先看类图,找到AbstractAutoProxyCreator在spring所处的位置: 索引AbstractAutoProxyCreator的本质是BeanPostProcessor,AbstractAutoProxyCreator中实现了代理创建的逻辑,它的子类AbstractAdvisorAutoProxyCreator主要是获取Advisors, 核心方法getAdvicesAndAdvisorsForBean,而图中红色字实现类就是前面两篇分别讲的注册,他们有一些根据自己场景的实现逻辑。 二、debug代码,跟踪流程: 在createBean中,doCreateBean是真正创建对象的地方,在创建对象之前调用了postProcessBeforeInstantiation方法,给扩展点一次创建代理的机会,如果代理对象返回不为空则createBean就直接返回了,后面的目标对象就不再实例化了。 public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { Object cacheKey = getCacheKey(beanClass, beanName); if (beanName == null || !this.targetSourcedBeans.contains(beanName)) { if (this.advisedBeans.containsKey(cacheKey)) { return null; } // 1. 有些对象是不可以被代...
Small-Liu 发布于 3个月前 阅读 68

腾讯与阅文技术合作 微服务框架Tars再添PHP

> 梁晨(Ted),任职阅文集团技术中心,负责起点中文网的WEB后台开发工作。曾负责腾讯上海企业产品部营销QQWeb后台开发、QQ公众号Web后台开发,对大型网站技术架构,有自己的经验和见解。腾讯开源项目TSF2.0框架开发者,腾讯开源组件Tars-PHP开发者,也曾是腾讯公司多个PHP扩展组件的开发者与维护者。 ## 引言 TARS作为由腾讯公司开源的优秀RPC框架与服务部署运维解决方案,被阅文集团引入了实际实践中,同时阅文集团对TARS在PHP语言层面进行了能力的补全,令TARS如虎添翼。TARS-PHP的解决方案兼具简单高效、接口维护方便容易扩展、代码自动生成,以及集成寻址、服务发现、监控、上报等功能。经历了阅文集团线上业务的考验与洗礼,充分证明了该解决方案的优势。 项目地址:https://github.com/Tencent/Tars/tree/master/php ## "PHP是世界上最好的语言" 众所周知,在PHP诞生之初,就是WEB站点的开发而生。但是一直以来,都无法摆脱弱类型、脚本语言的性能之殇的帽子。随着互联网行业的不断发展,以及用户需求和基础架构的不断变化,PHP语言本身也一直在发展。无论是SWOOLE的出现,还是PHP7对性能的提升,都丰富和助力了PHP本身的应用。 相信大家在开发中也会发现,作为经常处...
腾讯开源 发布于 3周前 阅读 468 点赞 2

Spring、Spring Boot和TestNG测试指南 - 使用Spring Boot Testing工具

[Github地址][1] 前面一个部分讲解了如何使用Spring Testing工具来测试Spring项目,现在我们讲解如何使用Spring Boot Testing工具来测试Spring Boot项目。 > 在Spring Boot项目里既可以使用Spring Boot Testing工具,也可以使用Spring Testing工具。 > 在Spring项目里,一般使用Spring Testing工具,虽然理论上也可以使用Spring Boot Testing,不过因为Spring Boot Testing工具会引入Spring Boot的一些特性比如AutoConfiguration,这可能会给你的测试带来一些奇怪的问题,所以一般不推荐这样做。 ## 例子1:直接加载Bean 使用Spring Boot Testing工具只需要将`@ContextConfiguration`改成`@SpringBootTest`即可,源代码见[FooServiceImpltest][src-ex1-FooServiceImpltest]: ```java @SpringBootTest(classes = FooServiceImpl.class) public class FooServiceImplTest extends AbstractTestNGSpringContextTests { @Autowired private FooService foo; @Test public void testPlusCount() throws Exception { assertEquals(foo.getCount(), 0); foo.plusCount(); assertEquals(foo.getCount(), 1); } } ``` ## 例子2:使用内嵌@Configuration加载Bean 源代码见[FooServi...
jarchan 发布于 3个月前 阅读 608 评论 1

PageHelper5.0版本后使用问题

因为5.0版本后与之前版本实现方式不同,不在实现拦截器
766767 发布于 1周前 阅读 4

C# 计算代码的运行时间

就是不写摘要.
taadis 发布于 2天前 阅读 7

TortoiseGit、Git在项目中的应用

TortoiseGit Git
程序员狗蛋 发布于 3天前 阅读 4

docker容器虚拟化(一)

25.1 docker简介 docker近几年非常火,因为它是容器虚拟化,更能够充分提高硬件资源的使用率。其实利用率高不算什么,它最大的优势是能给让运维人员或者开发人员快速部署和交付资源,大大提高了工作效率。几乎所有的大企业都在使用docker,所以我们没有理由不去了解它,不去学习它。 官网 www.docker.com github https://github.com/docker/docker.github.io 开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便 由go语言编写,基于apache2.0协议发布 基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现 自2013年开始,近些年发展迅猛 docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式,当前最新稳定版为17.09 参考http://blog.csdn.net/chenhaifeng2016/article/details/68062414   容器虚拟化和传统虚拟化比较 容器虚拟化: 传统虚拟化: 自己的理解 传统虚拟化:硬件→发行版操作系统→hypervisor(如kvm如VMware服务驱动虚拟化)→新建虚拟机(centos64位)→安装虚拟机操作系统(centos7)→跑环境 虚拟化容器:硬件→发行版操作系统→docker服务驱动虚拟化→拉镜像下来→容...
阿qlinux 发布于 6天前 阅读 4

Linux源码中的逗比代码-user_mode()

代码在:http://elixir.free-electrons.com/linux/v4.14/source/arch/x86/include/asm/ptrace.h#L121 static inline int user_mode(struct pt_regs *regs) { #ifdef CONFIG_X86_32 return ((regs->cs & SEGMENT_RPL_MASK) | (regs->flags & X86_VM_MASK)) >= USER_RPL; #else return !!(regs->cs & 3); #endif } return !!(regs->cs & 3); 两个!!这是为何呢?
macwe 发布于 3天前 阅读 4

git工作流介绍--结合sourcetree

git工作流介绍--结合sourcetree   git分布式版本控制系统   分布式是如何实现的: 服务器上有一个git仓库。完整地克隆服务器上的git仓库生成本地仓库。进行本地开发,开发完成后,提交到本地仓库。在合适的时候将变更推送到服务器仓库。 好处: 完全复制代码库,多备份,服务器仓库损坏也没有影响。 环境完全隔离,本地如何修改都不会影响其他人。 多分支的特性,使得不同版本、新特性开发、修复bug可以同时进行,互不影响 可以离线开发,不需要时时连接服务器。   svn与git的对比 vss--svn--git优缺点   git相关工具 github--一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名github。 stash--企业级Git代码库管理工具 sourcetree--git的界面化工具 SourceTree | Free Git GUI for Mac and Windows   其他众多gui    git工作流指南 开发者开始先克隆中央仓库。在自己的项目拷贝中编辑文件和提交修改;但修改是存在本地的,和中央仓库是完全隔离的。开发者可以把和上游的同步延后到一个方便时间点。 要发布修改到正式项目中,开发者要把本地master分支的修改『推』到中央仓库中,推送(push)操作会把所有还不在中央仓库...
sekaiga 发布于 1个月前 阅读 335 点赞 2

SSM:MyBatis与Spring的整合

# MyBatis与Spring的整合 ## 一:Spring整合MyBatis的准备工作: (1.)在项目中加入Spring,ByBatis及整合相关的jar文件 (2.)建立开发目录结构,创建实体类 (3.)创建数据访问接口 (4.)配置SQL映射文件 (5.)配置MyBatis配置文件 ## 二:实现Spring对MyBatis的整合 (1.)配置数据源 (2.)配置SqlSessionFactoryBean (3.)使用SqlSessionTemplate实现数据库的操作 (4.)编写业务逻辑代码并测试 ## 三:注入映射器实现 (1.)使用MapperFactoryBean主题映射器 规则:1.映射器命名空间和映射器接口的名称相同 2.映射器元素的id和映射器接口方法相同 (2.)使用MapperScannerConfigurer注入映射器(批量注入) 规则:1.basePackage属性中可以包含多个包名,多个包名之间使用逗号或者分号隔开 2.MapperScennerConfigurer会为所有有他创建的映射器实现开启自动配置 3.若环境中出现于不同目的的配置了多个SqlSessionFactory实例,自动配置将无法完成 ## 四:配置声明式事务 (1.)事务管理器类DataSourceTransactionManager 增强事务: (2.)事务传播机制: REQUIRED:默认值 REQUIRES_NEW:表示总是开启一个新的事务 MANDATORY:表示如果存在一个事务则支持当前事务,如...
廉价香水 发布于 4周前 阅读 7

如何将CAD文件版本转换

现在CAD文件很多都是高版本,而我们电脑上使用很多都是之前一直使用到现在的低版本CAD软件,在遇到高版本的CAD文件图纸时会有打不开的情况,这个时候就需要将高版本的CAD图纸转换为低版本的。 文件格式之间的转换,尤其像CAD文件这样精密要求比较高的,需要使用软件进行转换,小编使用的迅捷CAD转换器对文件的转换还是不错的,不仅可以转换多个文件格式,还能对CAD文件进行编辑。下面就来介绍下使用CAD转换器怎么将高版本的CAD文件转换为低版本的吧。 1.首先点击打来迅捷CAD转换器软件。 2.选择软件左边栏中的CAD版本转换 3.将CAD文件添加到软件中。 4.之后点击选择CAD版本,有低版本和高版本的CAD格式。 5.最后点击批量转换,当达到100%,就是转换完成了。 以上的几部操作都很简单,可以根据步骤就可以转换文件,在CAD软件中就可以打开了。
大小多少111 发布于 3天前 阅读 2

shiro的记住我

1 ![输入图片说明](https://static.oschina.net/uploads/img/201709/27142222_2vHv.png "在这里输入图片标题") 2 配置applicationContext-shiro.xml文件 ``` ``` 3 ![输入图片说明](https://static.oschina.net/uploads/img/201709/27142438_HSr0.png "在这里输入图片标题") 4 在自定义表单过滤器中 配置input 输入框的名字 ``` ``` ![输入图片说明](https://static.oschina.net/uploads/img/201709/27142840_ZyPO.png "在这里输入图片标题") ``` /first.action=user ```
小小小施爷 发布于 2个月前 阅读 7

数据库三大范式和反范式

后一个范式都是在满足前一个范式的基础上建立的. 1NF:无重复的列.表中的每一列都是不可分割的基本数据项.不满足1NF的数据库不是关系数据库. 如联系人表(姓名,电话),一个联系人有家庭电话和公司电话,则不符合1NF,应拆分为(姓名,家庭电话,公司电话). 2NF:属性完全依赖于主键.不能存在仅依赖于关键一部分的属性. 如选课关系(学号,课程名称,成绩,学分),组合关键字(学号,课程名称)作为主键.其不满足2NF,因为存在决定关系:课程名称->学分,即存在组合主键中的部分字段决定非主属性的情况.会导致数据冗余,更新/插入/删除异常. 3NF:属性不传递依赖于其它非主属性.非主键列必须直接依赖于主键,而不能传递依赖。即不能是:非主键A依赖于非主键B,非主键B依赖于主键. 如学生表(学号,姓名,学院编号,学院名称),学号是主键,姓名、学院编号、学院名称都完全依赖于学号,满足2NF,但不满足3NF,因为学院名称直接依赖的是学院编号 ,它是通过传递才依赖于主键. 范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦.但等级越高的范式设计出来的表越多,可能会增加查询所需时间.当我们的业务所涉及的表非常多,经常会有多表连接,并且我们对表的操作要时间上要尽量的快,这时可以考...
new_chaos 发布于 4分钟前

或许你不知道的10条SQL技巧

这几天在写索引,想到一些有意思的TIPS,希望大家有收获。   一、一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好习惯   可以优化为in查询: select * from order where status in(2,3)   (2)前导模糊查询不能使用索引 select * from order where desc like '%XX' 而非前导模糊查询则可以: select * from order where desc like 'XX%'   (3)数据区分度不大的字段不宜使用索引 select * from user where sex=1 原因:性别只有男,女,每次过滤掉的数据很少,不宜使用索引。   经验上,能过滤80%数据时就可以使用索引。对于订单状态,如果状态值很少,不宜使用索引,如果状态值很多,能够过滤大量数据,则应该建立索引。   (4)在属性上进行计算不能命中索引 select * from order where YEAR(date) < = '2017' 即使date上建立了索引,也会全表扫描,可优化为值计算: select * from order where date < = CURDATE() 或者: select * from order where date < = '2017-01-01'   二、并非周知的SQL实践 (5)如果业务大部分是单条查询,使用Hash索引性能更好,例如用户中心...
new_chaos 发布于 18分钟前

一千个不用 Null 的理由

港真,Null 貌似在哪里都是个头疼的问题,比如 Java 里让人头疼的 NullPointerException,为了避免猝不及防的空指针异常,千百年来程序猿们不得不在代码里小心翼翼的各种 if 判断,麻烦而又臃肿,为此 java8 引入了 Optional 来避免这一问题。 下面咱们要聊的是 MySQL 里的 null,在大量的 MySQL 优化文章和书籍里都提到了字段尽可能用NOT NULL,而不是NULL,除非特殊情况。但却都只给结论不说明原因,犹如鸡汤不给勺子一样,让不少初学者对这个结论半信半疑或者云里雾里。本文今天就详细的剖析下使用 Null 的原因,并给出一些不用 Null 的理由。 1、NULL 为什么这么多人用? NULL是创建数据表时默认的,初级或不知情的或怕麻烦的程序员不会注意这点。 很多人员都以为not null 需要更多空间,其实这不是重点。 重点是很多程序员觉得NULL在开发中不用去判断插入数据,写sql语句的时候更方便快捷。 2、是不是以讹传讹? MySQL 官网文档: NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte. Mysql难以优化引用可空列查询,它会使索引、索...
new_chaos 发布于 26分钟前

springboot

第一天用 springboot出现异常 Unregistering JMX-exposed beans on shutdown 解决方式 Maven目录下boot文件删除重新生成一下就好
优雅的弗利萨 发布于 2小时前 阅读 2

Java面试——从JVM角度比较equals和==的区别

1.  Java中数据类型分类 1.1    基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值。   1.2    复合数据类型 当复合数据类型用(==)进行比较,比较的是他们在内存中的存放地址。 当复合数据类型之间进行equals比较时,这个方法的初始行为是比较对象在堆内存中的地址,但在一些诸如String,Integer,Date类中把Object中的这个方法覆盖了,作用被覆盖为比较内容是否相同。 本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52089040   2.  String类的讨论   [java] view plain copy String s1 = "Hello";   String s2 = "Hello";   if (s1 == s2){    System.out.println("s1 == s2");   }else{   System.out.println("s1 != s2");   }   输出:s1 == s2   说明:双等号在进行复合数据类型比较时,比较的是内存中的存放地址。因此s1与s2引用同一个String对象。   [java] view plain copy String s1 = "Hello";   String s2 = new String("Hello");   if (s1 == s2){   System.out.println("s1...
new_chaos 发布于 4小时前 阅读 1

ThreadLocal的使用场景

  最近项目中遇到如下的场景:在执行数据迁移时,需要按照用户粒度加锁,因此考虑使用排他锁,迁移工具和业务服务属于两个服务,因此需要使用分布式锁。 我们使用缓存(Tair或者Redis)实现分布式锁,具体代码如下: @Service public class Locker { @Resource(name = "tairClientUtil") private TairClientUtil tairClientUtil; private ThreadLocal<Long> lockerBeanThreadLocal = new ThreadLocal<>(); public void init(long userid) { lockerBeanThreadLocal.remove(); lockerBeanThreadLocal.set(userid); } public void updateLock() { String lockKey = Constants.MIGRATION_PREFIX + lockerBeanThreadLocal.get(); tairClientUtil.incr(lockKey, Constants.COUNT_EXPIRE); } public void invalidLock() { String lockKey = Constants.MIGRATION_PREFIX + lockerBeanThreadLocal.get(); tairClientUtil.invalid(lockKey); } } 因为每个线程可能携带不同的userid发起请求,因此在这里使用ThreadLocal变量存放userid,使得每个线程都有一份自己的副本。 参考官方文档:T...
new_chaos 发布于 5小时前 阅读 1

JVM——Java虚拟机架构

0. 前言 Java虚拟机(Java virtualmachine)实现了Java语言最重要的特征:即平台无关性。 平台无关性原理:编译后的 Java程序(.class文件)由 JVM执行。JVM屏蔽了与具体平台相关的信息,使程序可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。因此实现Java平台无关性。 本文主要介绍JVM中的架构知识,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/51404589     1. JVM结构图       JVM = 类加载器 classloader+ 执行引擎 executionengine + 运行时数据区域 runtime data area 首先Java源代码文件被Java编译器编译为字节码文件,然后JVM中的类加载器加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM中的运行时数据区(内存)会用来存储程序执行期间需要用到的数据和相关信息。   因此,在Java中我们常常说到的内存管理就是针对这段空间进行管理(如何分配和回收内存空间)。     2. ClassLoader classloader把硬盘上的class文件加载到JVM中的运行时数据区域,但是它不负责这个类文件能否执行,而这个是执行引擎负责的。 限于篇幅,类加载器的组织结构,加载类的...
new_chaos 发布于 5小时前

BWA-MEM算法记录

BWA-MEM算法整体流程如下: 1 读入 bwt、options、reads; 2 利用mem_chain生成chain; 3 利用mem_chain_flt过滤掉部分chain; 4 利用mem_chain2aln生成比对结果元数据。 BWA采用seed-and-extend策略。在seed阶段,BWA取read的碱基片段在reference上进行精确匹配,并选择满足一定匹配次数和长度要求read片段作为seed,这个阶段算法的核心是基于FM-index的精确匹配;在extend阶段,BWA利用Smith-Waterman算法将seed在read和reference上向两边延伸比对,进而找到整个read在reference上符合条件的全局匹配。  
悲催的古灵武士 发布于 6小时前 阅读 3

订单去重

session防重:  方式1:一次性token  缓存防重:  方式1:Redis HyperLogLog  方式2:计数器  注意:需考虑清理机制  数据库防重  方式1:唯一约束  方式2:先插入数据,再统计是否超过1条,超过则作废(第1条不作废)    一定要加前置状态; 1、先锁数据  2、判断状态,如果判断不正确,直接返回  3、业务处理  4、修改状态。     页面,跳转或者重定向新的页面;            
new_chaos 发布于 6小时前 阅读 2

USB 虚拟串口简介

1. USB虚拟串口简介 USB虚拟串口属于USB通信设备类。在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传至主机,再由相应的串口应用程序进行处理。对用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。 1.1      USB CDC协议简介 USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型,其中USB传统纯电话业务模型又可分为直线控制模型(Direct Line Control Model)、抽象模型、电话模型,如图 1.1所示。本文讨论的虚拟串口就属于USB 传统纯电话业务模型下的抽象控制模型。 图 1.1 CDC分类 1.2  ...
BEST_CC 发布于 8小时前 阅读 3

标准的 Java 项目 .gitignore 可以参考如下:

``` # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files /bin/ /gen/ # Local configuration file (sdk path, etc) local.properties # Eclipse project files .classpath .project .settings/ # Proguard folder generated by Eclipse proguard/ # Intellij project files *.iml *.ipr *.iws .idea/ # Maven /log/ target/ /target/ ```
_Artisan 发布于 10小时前 阅读 2

两种用户年龄段统计的方法

统计各个年龄段的用户数量
反AI首席倡议官 发布于 11小时前 阅读 3

软件开发流程

本文面向的对象是,适合和我当初一样对软件开发一无所知的IT从业者(或者有兴趣者),另外也欢迎我的程序员小伙伴和测试小伙伴,因为你们也懂这个过程,所以我们可以作更多探讨,这个过程中我们可能会发现大家对同一件事的理解并不一致,也许经过碰撞,我们能共创智慧的果实。
Mstart 发布于 12小时前 阅读 3

DWG文件转换为PDF文件

 dwg文件是CAD图纸文件格式中的一种,这类文件不使用专业的CAD看图或编辑软件是无法查看的。要将dwg文件图纸转换为PDF文件格式,就必须要使用专业的CAD看图软件了。那什么软件可以直接转换图纸的文件格式呢?今天小编就要给大家介绍dwg文件格式转换的方法。 接下来小编就来教大家如何使用迅捷CAD编辑器将dwg文件图纸转为PDF文件格式的方法: 1.首先点击迅捷CAD编辑器,将CAD文件打开。 2.之后点击“文件”中的批处理 3.将DWG文件添加进去,选择文件的输出格式为PDF文件格式。 4.最后点击开始,这样就将DWF文件转换为PDF文件了。 以上就是小编介绍的dwg文件图纸转PDF文件格式的方法。如果有多个dwg图纸文件需要转换,软件还可以实现批量转换。我们只要选择批处理功能,然后添加文件夹既可以一次性转换多个图纸文件,非常便捷。  
大小多少111 发布于 12小时前 阅读 2

Oracle数据库应用

# 第二章:Oracle数据库应用 ## 一:.Oracle数据库应用知识 ## 二:表空间和用户权限管理 1. 表空间: 表空间是数据逻辑结构的一个重要组件,表空间可以存放各种应用对象,如表,索引。而每个表空间由一个或者多个数据文件组成 2.表空间的分类可以分成三类: 永久性表空间 一般保存表,视图,过程和索引等的数据。SYSTEM,SYSAUX,USERS,EXAMPLE,表空间是默认安装的 临时性表空间 只用用于保存系统中短暂 的活动的数据,如排序数据等 撤销表空间 用来帮助回退未提交的事务数据,已提交的数据在这里是不可以恢复的。一般不需要建临时和撤销表空间,除非把他们转移到其他磁盘中以提高性能。 2. 表空间的目的: (1.)对不同用户分配不同的表空间,对不同模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理, (2.)可以将不同数据创建在不同的磁盘中,有利于磁盘管理空间,有利于提高i/o性能,有利于备份和数据恢复等。一般在完成的时候Oracle会自动创建多个表空间, 3.创建表空间语法 (1.)CREATE TABLESPACE NAME DATAFILE ‘filename’[size integer] [k|m] [qutoextend [off|on]]; Name:是需要创建的表空间名称 Datafile:指定表空间一个或多个数据,多个数...
廉价香水 发布于 1天前 阅读 3

BWA-MEM原始论文算法部分翻译

Aligning sequence reads, clone sequences and assembly contigs with BWA-MEM   2.1 Aligning a single query sequence 单序列比对 2.1.1 Seeding and re-seeding BWA-MEM follows the canonical seed-and-extend paradigm. It initially seeds an alignment with supermaximal exact matches (SMEMs) using an algorithm we found previously (Li, 2012,Algorithm 5), which essentially finds at each query position the longest exact match covering the position. However, occasionally the true alignment may not contain any SMEMs. To reduce mismappings caused by missing seeds, we introduce re-seeding. Suppose we have a SMEM of length l with k occurrences in the reference genome. If l is too large (over 28bp by default), we re-seed with the longest exact matches that cover the middle base of the SMEM and occur at least k + 1 times in the genome. Such seeds can be found by requiring a minimum occurrence in the original SMEM algorithm. BWA-MEM算法基于seed-and-extend。首先使用以前的算法,用 supermaximal exa...
悲催的古灵武士 发布于 1天前 阅读 1

【教程】网络安全工具FileAudit安装指南

FileAudit可用于对Windows服务器上文件和文件夹的所有访问进行主动跟踪、审核、报告和警告。本文为大家介绍FileAudit的具体安装步骤。   FileAudit安装包(FileAudit_Setup.exe)点击下载>>>   英文和法文版本是相同的,并且与32位和64位平台兼容。   请在安装FileAudit之前阅读要求。   1、要启动FileAudit安装过程,请使用管理员帐户运行FileAudit_Setup.exe。   2、启动安装过程:   3、在随后的窗口中,单击 下一步>:   4、仔细阅读并接受最终用户许可协议,然后单击下一步> :   5、在随后的窗口中,输入您的信息,然后单击下一步> :   6、可根据需要更改安装文件夹:   7、在“安装类型”中,选中“Complete”复选框并点击下一步> :   8、点击 “安装”开始FileAudit安装:   9、向导将在FileAudit成功安装时报告。点击“完成 ”:
Harriet666 发布于 1天前 阅读 1

MongoDB性能优化五个简单步骤

摘要:MongoDB一直是最流行的NoSQL,而根据DB-Engines Ranking最新的排行,时下MongoDB已经击败PostgreSQL跃居数据库总排行的第四位,仅次于Oracle、MySQL和Microsoft SQL Server。本文是MongoDB性能调优的简单总结。 大家在使用MongoDB的时候有没有碰到过性能问题呢?这里总结了MongoDB性能优化的五个步骤,希望能够有所帮助。 第一步:找出慢语句 一般来说查询语句太慢和性能问题瓶颈有着直接的关系,所以可以用MongoDB的性能分析工具来找出这些慢语句:   db.setProfilingLevel(1, 100); 第二步:使用explain分析 通过使用explain来对这些慢语句进行诊断。此外还可以mtools来分析日志。 第三步:创建索引 分析完之后需要创建新的索引(index)来提升查询的性能。别忘了在MondoDB中可以在后台创建索引以避免collections 锁和系统崩溃。 第四步:使用稀疏索引来减少空间占用 如果使用sparse documents,并重度使用关键字$exists,可以使用sparse indexes来减少空间占用提升查询的性能。 第五步:读写分离 如果读写都在主节点的话,从节点就一直处在空置状态,这是一种浪费。对于报表或者搜索这种读操作来说完全可以在从节点实现,因此要做的是在connection string中设置成s...
new_chaos 发布于 1天前 阅读 6

BWA-mem 算法代码解析

main() main.c 程序入口         main_mem() fastmap.c BWA-mem比对主流程       1 读取用户输入,并初始化opt结构体对象       2 bwa_idx_load() fastmap.c 加载索引文件至aux.idx     3 kseq_init() fastmap.c 加载read文件至aux.ks     4 kt_pipeline() kthread.c 创建多线程并启动工作     5 算法执行完成,释放资源                 单线程的流程           process() fastmap.c 每个线程任务流程,分三步进行,每个线程执行一步   1 读read bseq_read() bwa.c       2 mem算法主体 mem_process_seqs() bwamem.c       3 生成最终结果文件并释放资源                   mem_process_seqs() bwamem.c           1 find mapping positions,映射坐标 kt_for(worker1)     2 generate alignment,生成序列 kt_for(worker2)               worker1流程           mem_align1_core() find mapping positions         1 for循环将碱基转变成2位编码         2 mem_chain           3 mem_chain_flt           4 mem_flt_chained_seeds         5 mem_print_chain         6 me...
悲催的古灵武士 发布于 1天前 阅读 2

必备git神技实现清晰git提交历史

原文地址:http://fle.github.io/git-tip-keep-your-branch-clean-with-fixup-and-autosquash.html 可以使用git commit --fixup和git rebase -i --autosquare来保证分支提交记录的整洁,特别适用于当前提交是由于之前某次提交的简单修复 ``` $ (dev) git add featureA $ (dev) git commit -m "Feature A is done" [dev fb2f677] Feature A is done $ (dev) git add featureB $ (dev) git commit -m "Feature B is done" [dev 733e2ff] Feature B is done ``` 当提交后发现featureA中忘记去掉pdb了,则可以 ``` $ (dev) git add featureA # you've removed a pdb : shameful commit $ (dev) git commit --fixup fb2f677 [dev c5069d5] fixup! Feature A is done ``` 然后通过git log --oneline看下日志 ``` $ (dev) git log --oneline c5069d5 fixup! Feature A is done 733e2ff Feature B is done fb2f677 Feature A is done ac5db87 Previous commit ``` 在合并前使用autosqaure来实现分支记录的整洁,值得注意的是,rebase后面跟的是想要fixup之前一个commit id。 ``` $ (dev) git rebase -i --autosquash ac5db87 pick fb2f677 Feature A is done fixup c5069d5 fixup!...
alazyer 发布于 1天前 阅读 1

TeamFlowy——结合Teambition与Workflowy

使用Teambition来管理任务,使用Workflowy来撰写大纲,使用TeamFlowy来将Workflowy里面特定的条目作为任务自动添加到Teambition中。
kingname 发布于 2个月前 阅读 1028 评论 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 发布于 3个月前 阅读 1946 评论 7

比特币深层技术原理浅析

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

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

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

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

为什么用泛型以及它到底解决了什么问题?文中用大量例子介绍了重复性管理的一些具体做法,重点分析了泛型范式在解决重复性问题上的应用。
国栋 发布于 7个月前 阅读 1614 评论 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 ...
龙图腾飞 发布于 7个月前 阅读 3827 评论 19 点赞 17

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

Dubbo与Zookeeper、SpringMVC整合和使用 相关的原理介绍可以参考http://blog.csdn.net/congcong68/article/details/41113239博客写的内容。
小帅帅丶 发布于 7个月前 阅读 7102 评论 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...
渔泯小镇 发布于 7个月前 阅读 3543 评论 97 点赞 18

Gitlab删库事件的借鉴意义

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

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

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

接口自动化测试框架搭建

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

软件开发性感吗 ?!

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

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

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

mybatis源码分析之Configuration

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

性能测试艺术

介绍 本文地址:http://my.oschina.net/u/1433482/blog/634047。 交流:python开发自动化测试群291184506 PythonJava单元白盒测试群144081101 英文原版书籍下载:https://bitbucket.org/xurongzhong/python-chinese-library/downloads。 精品文章推荐: python 2.7 中文教程及自动化测试介绍 使用Python学习selenium测试工具 为什么要进行性能测试? 什么是好的与坏的性能?为什么性能测试在软件开发生命周期(SDLC software development life cycle)中很重要? 性能不佳的应用通常无法实现企业预期利益,花费了大量时间和金钱,但是却在用户中失去了信誉。 相比功能测试和验收测试(OAT operational acceptance testing),性能测试容易被忽略,往往在发布之后碰到性能和扩展性问题才意识到重要性。 最终用户眼中的性能 性能”是用户最终的感受。性能优异的应用在最终用户执行某项任务时不会产生过度的延迟而引起用户的不满。好的应用不会在登录时显示空屏,不会让用户走神。比如偶然的用户在购物网站上寻找和购买他们所需要的东西时,客户中心不会收到差性能的投诉。 多 数应用系统在峰值时性能表现不佳。从高层看,应用由客户端软件和基础设施组成,后者包括了运行软件所需...
磁针石 发布于 2年前 阅读 7474 评论 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年前 阅读 3866 评论 8 点赞 4

简述 Microservices(微服务)

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

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

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

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

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

UI自动化测试框架之Selenium关键字驱动

自动化测试框架demo,用关键字的形式将测试逻辑封装在数据文件中,测试工具解释这些关键字即可对其应用自动化
红焖鲤鱼 发布于 2年前 阅读 11239 评论 14 点赞 18
顶部