开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

阿里架构师详解虚拟机工作原理

一、类加载器 首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入 [java] view plain copy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码的时候,开发工具已经帮你完成了上述的编译工作,因此你可以在对应的目录下看到class文件。此时的class文件依然是保存在硬盘中,因此,当你在命令行中运行 [java] view plain copy java YourClassName 就完成了上面红色方框中的工作。JRE的来加载器从硬盘中读取class文件,载入到系统分配给JVM的内存区域--运行数据区(Runtime Data Areas). 然后执行引擎解释或者编译类文件,转化成特定CPU的机器码,CPU执行机器码,至此完成整个过程。 接下来就重点研究一下类加载器究竟为何物?又是如何工作的? 首先看一下来加载器的一些特点,有点抽象,不过总有帮助的。 》》层级结构 类加载器被组织成一种层级结构关系,也就是父子关系。其中,Bootstrap是所有类加载器的父亲。如下图所示: --Bootstrap class loader: 当运行java虚拟机时,这个类加载器被创建,它加...
权律二啊- 发布于 2天前 阅读 756 评论 9 点赞 1

浅析常用软件架构中的一定要理解的三种架构模型 

常用的软件架构模型可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。 一.三种架构模型 1.3/N层架构 这是经典的多层架构模型,对于稍微复杂一点或特别复杂的系统,不使用分层架构是很难想象的。下图是经典的3层架构: 如今,凡是个程序员都能侃侃而谈3/N层架构,这确实是解决系统复杂性的一种主流模式,但是,只要采用了3/N层架构是不是就一定能解决系统的复杂性了?不一定,关键在于你在你的系统中如何实作你的3/N层结构。 在采用了3/N层架构后,我们还是要解决以下非常重要的问题:系统的可扩展性(能从容地应对变化)、系统的可维护性(因为系统并不是使用一次就被抛 弃)、方便部署(在需求变化时,方便部署新的业务功能)、还有等等其它系统质量属性。然而系统的可扩展性和可维护性是大多数软件系统必须解决的重中之重, 这是由于当前需求复杂多变的软件环境决定的。就像实现功能需求是最基本的,采用3/N层架构也只是万里长征的第一步。 我采用“框架+插件”架构来解决与系统的可扩展性、可维护性和部署相关的难题。 2. “框架+插件”架构 经典的3/N层架构是对系统进行“纵向”分层,而“框架+插件”架构对系统进行“横向”分解。3/N层架...
Java架构资源分享 发布于 1周前 阅读 34

Spring Cloud + Mybatis 多数据源配置

项目开发中遇到缺陷,使用多数据源能避免分库间数据同步的步骤,在此记录配置步骤。 ### 一、数据源自动配置禁用 1、将spring boot自带的DataSourceAutoConfiguration禁掉,防止自动配置数据源。在@SpringBootApplication注解中添加exclude属性即可。 2、添加注解@EnableTransactionManagement 并创建两个事务管理器 ``` @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @EnableTransactionManagement public class ManagerApplication { public static void main(String[] args) { SpringApplication.run(ManagerApplication.class, args); } @Bean public PlatformTransactionManager testDBaTransactionManager(@Qualifier("testDBa") DataSource prodDataSource) { return new DataSourceTransactionManager(prodDataSource); } @Bean public PlatformTransactionManager testDBbTransactionManager(@Qualifier("testDBb") DataSource sitDataSource) { return new DataSourceTransactionManager(sitDataSource); } } ``` ### 二、serviceImpl层的@Transactional注解配置 在serviceImpl层的@Transactional注解中指定事务管理器。 a、若servi...
奶铭啊 发布于 1周前 阅读 478 评论 2

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 3912 评论 12 点赞 20

说说Java日志

  本文首发于个人微信公众号《andyqian》,期待你的关注 前言 我们在编写代码时,都知道在关键算法,逻辑性较强的地方添加注释。一来提高了代码的可维护性。二来让代码有了自可读性。如果我们把注释理解为静态的自可读性。那么,程序在运行时,我们如何才能知道程序的实际运行路径呢?这就是今天的主角--日志! 为什么要打日志? 有很多朋友,不太喜欢打日志。好几百,甚至上千行的代码。啪,啪,啪的全写完!自信满满,一行日志也没打。联调,测试,上线都没问题。系统运行一段时间后,莫名的出现问题。那么,到底是哪个地方出现问题了?方法的入参是什么?系统走到哪一步了?一无所知。这下就只剩抓瞎了。从这里我们应该可以看出,打日志是非常有必要的。我们梳理一下,打日志有诸多好处。 最直接的好处就是方便解决BUG了。 记录请求的耗时时间,特别是接入第三方供应商时,调用远程服务时,我们可以通过日志来记录请求的耗时时间。 对关键业务,关键算法的入参,以及结果打点并记录下来。 最后: 记录日志是给自己分析问题,解决bug用的。我们尽量记录的尽可能简洁,易懂以及清晰,理想情况下甚至能通过日志还原一次请求,一次调用的全过程。 如何打日志? 上面我们说了为...
andyqian 发布于 2周前 阅读 413

@JsonView的用法

    我们来描述一个这样的业务需求,首先有两个URL,/A:为获取用户详情信息包含用户的所有字段(用户名,密码),/B:为获取用户信息字段(只要用户名),怎么处理呢?可能会想到建一个USER类然后返回不同的属性。但是这样写法确实Low的一逼。@JsonView可以十分方便的解决以上问题。下面我来介绍一下@JsonView。      @JsonView是jackson json中的一个注解,Spring mvc同样支持这个注解,它的作用就是控制输入输出后的json。 一、 @JsonView的使用步骤     1、使用接口声明多个视图     2、在对象属性的get方法上指定视图  import org.hibernate.validator.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonView; public class User { //声明一般视图接口 只允许这个视图返回用户名属性 public interface UserSimpView{}; //声明完整视图接口 允许返回用户名密码属性 由于集成了一般视图接口 含义是拥有了一般视图所具有的返回属性 public interface UserDetailView extends UserSimpView{}; private Integer Id; private String userName; private String passWord; public User() { } public User(Integer Id,...
二十岁以后 发布于 2周前 阅读 174

基于 Docker 的微服务架构实践

本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的快速发展。本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结。希望给在创业初期探索如何布局服务架构体系的 DevOps,或者想初步了解企业级架构的同学们一些参考。 Microservice 和 Docker 对于创业公司的技术布局,很多声音基本上是,创业公司就是要快速上线快速试错。用单应用或者前后台应用分离的方式快速集成,快速开发,快速发布。但其实这种结果造成的隐性成本会更高。当业务发展起来,开发人员多了之后,就会面临庞大系统的部署效率,开发协同效率问题。然后通过服务的拆分,数据的读写分离、分库分表等方式重新架构,而且这种方式如果要做的彻底,需要花费大量人力物力。 个人建议,DevOps 结合自己对于业务目前以及长期的发展判断,能够在项目初期使用微服务架构,多为后人谋福。 随着 Docker 周围开源社区的发展,让微服务架构的概念能有更好的一个落地实施的方案。并且在每一个微服务应用内部,都可以使用 DDD(Domain-Drive Design)的六...
Java架构资源分享 发布于 3周前 阅读 3219 评论 13 点赞 5

mac 使用Karabiner配置键盘映射(2)-核心标签的解读

 mac 使用Karabiner配置键盘映射(2)-核心标签的解读 KeyOverlaidModifier 使用场景:一般用在 改变Modifier(控制键,例如ctrl,command,alt等)的行为. 例如正常情况下,单独按下control或command 是没有反应(动作的), 但是我们可以通过KeyOverlaidModifier 增加反应. 实例: 目标:单独按下右边的command 触发Alfred 所以单独按下右边的command,触发F17就行: <item> <!-- 右边的command,单独按下相当于F17,用于触发Alfred --> <name>COMMAND_R to F17</name> <appendix>(COMMAND_R Only, send F17)</appendix> <identifier>private.command_r_only2f17</identifier> <autogen> --KeyOverlaidModifier-- KeyCode::COMMAND_R, KeyCode::COMMAND_R, KeyCode::F17 </autogen> </item> 为什么使用F17?因为F17不占用实体键 解说: 对KeyOverlaidModifier 下的行逐行解释: 第一行:原始按键; 第二行:和其他键组合按下时要映射的键(先按下该键,hold住,再按下其他键); 第三行:单独按下要映射的键. 单独按下右边的command,相当于按下F17, 和其他键组合按下时不变.   2.实例解说 <item...
黄威 发布于 3周前 阅读 142

MyClouds微服务治理及快速开发平台简介

MyClouds是一个基于成熟软件项目研发方法论和SpringCloud生态圈的插拔式轻量级微服务治理及快速开发平台。以“标准功能可复用、通用模块可配置、业务需求快速开发、异构系统无缝集成、应用性能可监控扩展、系统日志可分析审计”为目标, 帮助企业落实IT策略、屏蔽技术壁垒,快速实现可水平扩展的高性能高可用业务愿景。 为软件研发团队提供高效可控、随需应变、快速实现业务需求的全栈式技术解决方案,以最低成本和最低风险获得更高质量、更快交付业务和运维支持的核心技术竞争力。
阿老表 发布于 3周前 阅读 685

论自由软件和自由硬件的商业化和发展潜力

不久前有位Linux吧的成员问我,有些不能使用红帽模式提供付费服务的软件(例如压缩软件)该如何盈利?在这篇文章我将会回答这个问题。 由于FUD们的影响,商业模式的完全不同和其他的某些未知原因,有不少人认为这二者会让作者赚不到钱。我现在来谈谈这方面的问题。
ICE冰焰火灵X 发布于 4周前 阅读 417 评论 7

《大型网站技术架构》读书笔记--大型网站架构演进

       存在即合理,每一项新技术的出现都有它存在的道理,学习新技术个人觉得首先就应该搞懂它的来龙去脉、历史渊源,因为业务才决定了技术,应对应地根据不同业务进行技术选型,而不是一味追随大公司的解决方案,为了技术而技术。 从小型的几个人访问的网站到数亿用户访问的大系统,采用的技术、架构也必然需要对应地改变,以下本人根据《大型网站技术架构-核心原理与案例分析》一书的读书心得来介绍大型网站架构演进。 大型网站软件系统的特点         特别需要关注的有以下4点: 高并发,大流量。需要面对高并发用户,大流量访问。 高可用。系统无间断地提供服务,不能出现宕机。 海量数据。需要使用大量服务器存储、管理数据。 安全环境恶劣。需高度注意黑客攻击问题。 大型网站架构演化发展历程         以下按业务规模的从小到大的10个阶段分别介绍对应采用的技术架构: 1.初始阶段       开发一个小型网站,只需一台服务器即可,服务器上只需部署应用服务器、数据库服务器,然后部署应用即可访问。架构图如下: 2.应用服务和数据服务分离        当应用系统的业务规模较大时,出于对应用的性能、数据库存储空间的考虑,这时候需要考...
allenwe23 发布于 1个月前 阅读 584 评论 1 点赞 5

Java“老兵”浅谈源码的七大设计模式

一个专业的程序员,总是把代码的清晰性,兼容性,可移植性放在很重要的位置。他们总是通过定义大量的宏,来增强代码的清晰度和可读性,而又不增加编译后的代码长度和代码的运行效率;他们总是在编码的同时,就考虑到了以后的代码维护和升级。甚至,只要分析百分之一的代码后,你就会深刻地体会到,什么样的代码才是一个专业的程序员写的,什么样的代码是一个业余爱好者写的。而这一点是任何没有真正分析过标准代码的人都无法体会到的。 本文会介绍一些经典的设计模式思想: 常用设计模式 Proxy代理模式 代理模式:为其他对象提供一种代理以便控制对这个对象的访问。 可以详细控制访问某个类(对象)的方法,在调用这个方法前作的前置处理(统一的流程代码放到代理中处理)。调用这个方法后做后置处理。 代理模式分类: 1.静态代理(静态定义代理类,我们自己静态定义的代理类。比如我们自己定义一个明星的经纪人类) 2.动态代理(通过程序动态生成代理类,该代理类不是我们自己定义的。而是由程序自动生成)比较重要!! JDK自带的动态代理 javaassist字节码操作库实现 CGLIB ASM(底层使用指令,可维护性较差) 结构组成 代理模式主要涉及到三个角色:抽象角色、代理角色、...
Java架构资源分享 发布于 1个月前 阅读 868 评论 2 点赞 1

最新版的PayPal快速集成方法(个人经验记录)

首先注册商户账户,这个属于非技术流程 按步骤操作就可以了,不细讲了 首先需要创建一个应用 https://developer.paypal.com/developer/applications/ 在这里创建一个应用 然后可以获得 clientId 和 clientSecret ,在下面会用到,接下来是创建一个测试账号,同样是下面会用到 https://developer.paypal.com/developer/accounts/ 下来来讲PayPal的代码嵌入: 有三种方式 1.Server Side Express Checkout using REST 2.Client Side Express Checkout using REST 3.Express Checkout using Braintree SDK 因为我们有现有的支付体系,只是想额外支持PayPal这种支付方式,所以我们就采用了第一种方式 先说一下页面部分的实现 <!DOCTYPE html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://www.paypalobjects.com/api/checkout.js"></script> </head> <body> <div id="paypal-button-container"></div> <script> paypal.Button.render({ env: 'sandbox', // sandbox | production // Show t...
小海bug 发布于 1个月前 阅读 309

基于NET实现的DDD、CQRS与微服务架构的演示案例

最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA)。我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索。现将自己的思考和收获整理成文,分享给大家。
高级架构师 发布于 2个月前 阅读 235 评论 1

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 发布于 2个月前 阅读 14027 评论 35 点赞 8

Springboot 打jar包分离lib,配置文件正确方式

## Springboot 打jar包分离lib,配置文件正确方式 ### 前言 Springboot 打jar包分离lib,配置文件的方式,网上可以搜到的我都没试通。跟刘大神(大神没有博客,很可惜)讨论后,给出了这么一个解决方案,供大家参考。 ### 部署环境 - window 10 - redhat 6.4 - 其他版本没有尝试,应该也是可以的 ### POM.xml ``` 4.0.0 com.elvish test 0.0.1-SNAPSHOT jar test test org.springframework.boot spring-boot-starter-parent 1.5.10.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.apache.maven.plugins maven-dependency-plugin copy-dependencies package copy-dependencies target/lib false false runtime org.apache.maven.plugins maven-jar-plugin **/*.properties **/*.xml **/*.yml static/** templates/** org.springframework.boot spring-boot-maven-plugin ZIP non-exists non-exists repackage classes false org.apache.maven.plugins maven-antrun-plugin package run target/distribution target/distribution/tmp ${project.artifactId}-${project.version} ```...
小祝特烦恼 发布于 2个月前 阅读 1176 评论 9 点赞 3

微服务架构与soa框架的区别,一名架构师的学习笔记

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: 需要Registry,实现动态的服务注册发现机制; 需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑; 同步调用还是异步消息传递,如何保证消息可靠性?SOA由ESB来集成所有的消息; 都需要统一的Gateway来汇聚、编排接口,实现统一认证机制,对外提供APP使用的RESTful接口; 同样的要关注如何再分布式下定位系统问题,如何做日志跟踪,就像我们电信领域做了十几年的信令跟踪的功能; 那么差别在哪? 是持续集成、持续部署?对于CI、CD(持续集成、持续部署),这本身和敏捷、DevOps是交织在一起的,我认为这更倾向于软件工程的领域而不是微服务技术本身; 使用不同的通讯协议是不是区别?微服务的标杆通讯协议是RESTful,而传统的SOA一般是SOAP,不过目前来说采用轻量级的RPC框架Dubbo、Thrift、gRPC非常多,在Spring Cloud中也有Feign框架将标准RESTful转为代码的API这种仿RPC的行为,...
Java架构资源分享 发布于 2个月前 阅读 83

Ubuntu下安装RabbitMQ

/*添加源 */ echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list /*新增公钥(不加会有警告)*/ wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - /*更新源*/ sudo apt-get update /*安装rabbitmq-server*/ sudo apt-get install rabbitmq-server 命令介绍: 1、查看rabbitmq运行状态     invoke-rc.d rabbitmq-server stop/start/etc 2、打开管理页面     sudo rabbitmq-plugins enable rabbitmq_management 3、查看安装的插件     sudo rabbitmqctl list_users 4、查看用户     sudo rabbitmqctl list_users 5、新增管用户     sudo rabbitmqctl add_user admin admin 6、分配管理员权限     sudo rabbitmqctl set_user_tags admin administrator   访问WEB管理页面...
二十岁以后 发布于 2个月前 阅读 35

发布开源工具——JyEntity

当前为第一版本,只支持mysql数据库,后面有时间的话会支持Oracle和数据库表的选择
二十岁以后 发布于 3个月前 阅读 319 评论 2 点赞 1

spring boot整合 freemarker 详细教程

spring boot 我们都知道是一个简化配置的服务,省去繁琐的xml配置,以properties和yml还有 注解形式来替代之前的xml配置。 我们首先实现spring boot 对freemarker的支持,引入pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> 在yml中添加配置项: spring: freemarker: template-loader-path: classpath:/ftl/ classpath后面为前缀。也可以在注解配置类中实现 新建配置类:FreeMarkerConfig.java import com.jagregory.shiro.freemarker.ShiroTags; import freemarker.template.TemplateException; import freemarker.template.TemplateModelException; import java.io.IOException; import java.util.Properties; import javax.annotation.PostConstruct; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.ui.freemarker.FreeMarkerConfigurationFactory; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servl...
一枚码农 发布于 3个月前 阅读 519 评论 1

java 编程中的非空判断怎么加才优雅?

https://www.zhihu.com/question/264897698/answer/287463667
张宏亮1982 发布于 3小时前 阅读 6

谷歌明确Fuchsia并非基于Linux内核

根据公布的文档,Fuchsia是基于功能的模块化系统,使用名为“Zircon”(锆石)的内核,该微内核为Fuchsia系统提供核心驱动以及C Library(libc)实例。 虽然文档仍未完成,但是我们也注意到Google正在打造的Fuchsia OS非常独特,极具创新且前途无限。这款系统从头构建自己的库和组件,通过POSIX向后兼容性和使用基于Vulkan的驱动打造出类UNIX系统。 Fuchsia系统使用名为“Escher”的物理渲染器,提供物体的Soft Shadows,镜头特效、光影扩散和色彩外溢等功能。此外Fuchsia的文件系统完全在用户空间之间进行操作,并没有链接或者加载到内核中。 在文档中写道:“Fuchsia的文件系统本身可以很容易的进行更改--修改不需要重新编译内核。事实上,对Fuchsia的文件系统更新可以不需要重启。” 本文地址:https://www.linuxprobe.com/fuchsia-linux.html编辑:何云艳,审核员:逄增宝
linux-tao 发布于 3小时前 阅读 2

POJO、BO与VO

                                                 图-Web分层示意图         复杂业务会有POJO(与数据库字段对应,不会填充业务逻辑)、BO(业务对象)、VO(view-object、供前端显示);简单业务中随着业务逻辑的复杂化,VO(value-object,值对象,承载各种数据要求的值)会演变拆分成VO(view-object)、BO。
學習是一种信仰 发布于 1个月前 阅读 11

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

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

谷歌、高通、三星宣布支持​RISC-V

RISC-V 处理器架构得到了更多业内知名公司的支持。包括 Google、三星和高通在内的约 80 家公司将联合为自动驾驶汽车等应用开发新的 RISC-V 芯片设计。 RISC-V获支持 据外媒报道,RISC-V 处理器架构最近又获得了进一步的巨头“加持” —— 得到了更多业内知名公司的支持。其中包括 Google、三星和高通在内的约 80 家公司将联合为自动驾驶汽车等应用开发新的 RISC-V 芯片设计。 此外,西部数据和英伟达也都计划在其部分产品中使用 RISC-V,而特斯拉也已经加入了 RISC-V 基金会,并正在考虑使用这项开源技术。Linux 内核已经加入了对 RISC-V 架构的初步支持。 RISC-V 是基于精简指令集(RISC)原则的一个开源指令集架构,它允许任何人设计、制造和销售 RISC-V 芯片和软件,在性能相等的情况下费用以及能耗更低,因此对企业具有相当大的吸引力。 对于 RISC-V,Linux 内核对其支持早已进行,此前我们曾报道过 Linux 内核已经加入了对 RISC-V 架构的初步支持。 相关连接 RISC-V 的详细介绍:"https://www.oschina.net/p/risc-v" 原文来自:https://www.oschina.net/news/94799/risc-v-processor-gets-more-support 本文地址:https://www.linuxprobe.com/google-support-​risc....
linux-tao 发布于 1周前 阅读 8

Kotlin和Swift语言在Redmonk榜上排名大幅提升

行业分析公司Redmonk发布了2018年第一季度编程语言排行榜。排名靠前的编程语言应该不会让人吃惊,前5名分别是JavaScript、Java、Python、PHP和C#。Python位居PHP和C#之前,在Stack Overflow 2018开发者调查中也是如此。排名4到9的编程语言分别是C++、CSS、Ruby和C,Swift和Objective-C排名第10。 Swift的位次值得一提,特别是分析其随着时间推移的排名变化时。Swift已经从2015年发布时的18名上升到了现在的位次,和Objective-C一样,也许这标志着苹果平台开发的转向。“......除了攻守地位的变化外,很难说这种态势还意味着什么”,Stephen O'Grady如是说。 苹果对Objective C的支持以它通过iOS平台创造的绝对机会让这门语言从我们做这个排名开始就一直扮演着重要的角色。即使Swift以令人吃惊的速度增长,Objective C的历史让它可避免被替代。不过,最终,它们的发展轨迹必然相交,这个季度的态势就是这种情况的首次出现。在这世界上,进入编程语言排行榜的前25名都出人意料的困难,更不用说前10了,Swift用不到四年的时间就实现了。而且,它还在继续增长,即使它渗透到服务器端的能力还没有达到预期。 排名的产生结合了使用这些语言编写的代码量和过去三个月里关于它们的讨...
linux-tao 发布于 3天前 阅读 3

QT5 C++程序入门

1、环境下载 通过官方下载地址(https://download.qt.io/official_releases/qt/)下载最新版本的QT开发环境 下载完成后双击应用,skip(跳过)注册后,选择配置(基础配置仅选择MinGW和MSVC两项),如下图: 2、创建项目 指定项目名称和路径 选择开发工具包(只选择MinGW) 下拉框里选中新建项目 3、发布项目 选择Release进行项目发布 在程序发布时执行文件会报缺少动态链接库的错误 使用QT自带的MinGW命令窗口(注:普通的Dos窗口运行命令还会导致引入的包不全而报错) 切到项目Release目录,运行命令 windeployqt helloworld.exe 执行helloworld.exe后成功显示发布程序
知止software 发布于 3天前 阅读 15

重构系统的套路-写有组织的代码

如果一个项目经历了快速发展,势必在业务发展背后留下了一个很无序,结构混乱的代码,无序而混乱的代码势必造成很大的bug修复及扩展成本。 > 说到搭建系统都在谈论高并发,大数据,而易于维护和可扩展性则被大部分人抛之脑后,增加最基础的面向对象思想和设计模式帮助我们组织好易于维护和阅读的代码。 不要好高骛远看一下高并发,高可用的东西,做好以下这些最基础的东西,你的系统在可读性和可维护可扩展方面将会提升一倍的能力,将大家的人效从每次bug产生梳理代码的过程中解放出来,建立标准建立原则才是架构师首先要做的。 - 进行适当的封装 - 开放封闭原则 - 单一只能原则 - 代码具备随时删掉而不影响上下文的能力 ## 命名与注释 命名需要见名知义,注释则可以帮助我们去了解当时的业务逻辑,不然后期只能通过一行行的日志去定位问题了。 > 考虑到IDE会帮助我们创建变量名称,如果名称相似则存在误用可能造成很难定位的BUG,入参可以以Req结尾或者Command结尾,返回值以Resp结尾或者Result结尾。 ## 抽离业务骨骼 Web系统的入口层是Controller,基于RPC的服务入口层往往是XxxServiceImpl,入口层应该像一本书的目录和前言部分,说明了这个方法的主要目的,同时梳理了...
春哥大魔王的博客 发布于 2小时前 阅读 1

(十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点:   一、oauth中的角色 client:调用资源服务器API的应用 Oauth 2.0 Provider:包括Authorization Server和Resource Server (1)Authorization Server:认证服务器,进行认证和授权 (2)Resource Server:资源服务器,保护受保护的资源 user:资源的拥有者   二、下面详细介绍一下Oauth 2.0 Provider Authorization Server: (1)AuthorizationEndpoint:进行授权的服务,Default URL: /oauth/authorize (2)TokenEndpoint:获取token的服务,Default URL: /oauth/token   Resource Server: OAuth2AuthenticationProcessingFilter:给带有访问令牌的请求加载认证   三、下面再来详细介绍一下Authorization Server: 一般情况下,创建两个配置类,一个继承AuthorizationServerConfigurerAdapter,一个继承WebSecurityConfigurerAdapter,再去复写里面的方法。 主要出现的两种注解: 1、@EnableAuthorizationServer:声明一个认证服务器,当用此注解后,应用启动后将自动生成几个Endpoint:(注:其实实现一...
SpringCloud关注者 发布于 3个月前 阅读 89 评论 4 点赞 8

微信公众号网页授权代码优化过程(二)

这篇博客我们开始实现网页授权登录,说的简单些就是可以在微信浏览器内打开我们的页面,同时我们可以获取到当前登录者的信息。 #### 框架搭建 我们得先把框架搭建好。 ……搭建框架中…… balabala(其实我是花了一些时间整的),项目框架好了。地址是 https://gitee.com/valuetodays/weixin-oauth-code-optimization-demo/tree/tag-basic-framework, 注意是个tag哦。 项目比较简单,使用SpringMVC、Spring、Maven等工具,没牵涉到数据库,做的网页也没有样式,使用用jetty插件来启动服务,启动命令是`mvn clean package jetty:run -DskipTests`。 启动过程可以参考我的这篇博客【https://my.oschina.net/valuetodays/blog/1616934】, 里面最后有GIF动态图演示操作过程。 项目中要重点关注的几个文件如下: * src/filters/filter-dev-env.properties 这个文件要说明一下,里面全是配置信息,需要 **按需修改**: + APP_NAME 项目名称(可不用关注,此处的配置是和项目名称一样) + LOG_HOME 日志目录(日志文件的目录位置,windows系统可不修改,linux/mac可将前面的'c:'删除) + _appId 微信appId,需要改成自己的 + _secret 微信secret,需要改成自己的 + project_base...
valuetodays 发布于 2个月前 阅读 48

干货:分布式系统详解

先讲个黑色笑话: 半年前,一个谁也没见过的日本浪人推出的理财产品突然在七侠镇火爆起来,据说买上点屯着,不出几月就能把同福客栈,甚至龙门镖局都盘下。我们家小六的七舅老爷,卖掉祖宅也嚷嚷着要 all in。我觉得这事吧很是蹊跷,好歹也是自家人嘛,不能让老人家上当受骗 —— 所以 … 放着我来。我用我无双的智慧,和堪比丞相的三寸不烂之舌给七舅老爷拦下来,让他打消了念头。没出半年,小六七舅老爷全家就和我们斩了联系,死生不复相见。 – 摘自《无双日记》 有朋友问,那做技术的,怎么入行? 我虽不算入行,但知道技术是一脉相承的 —— blockchain 不是像孙猴子凭空从石头里蹦出来的,它有它的根。如果把一门门技术看做一棵棵拔地而起,随时间渐渐丰腴而枝繁叶茂的榕树,那么 blockchain 是若干棵已然成年的榕树交织而成的新枝(branch) —— 它快速成长,活力无限,树冠已然盖住了其它 branch 的锋芒。如果你直接爬到它的树冠上,想要抓其脉络,在纷繁复杂面前,会迷失方向;但若你从根部细细往上捋,线索就如钱老笔下的「真理」,赤裸裸而一览无遗。 今天我们先寻其最重要的一个根:分布式系统。这个题目对互联网从事者来说,看着可笑,谁敢说自己不了解分布式...
茶轴的青春 发布于 1个月前 阅读 331 评论 3

phpstorm 激活码破解

phpstorm 激活码,亲测可用
大山_ 发布于 1个月前 阅读 47

ABP框架快速入门指南--3.多页Web应用

ABP框架快速入门指南--3.单页Web应用
OSC-莫失莫忘 发布于 1个月前 阅读 11

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 发布于 2个月前 阅读 14027 评论 35 点赞 8

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 3912 评论 12 点赞 20

springboot2.0集成redis使用

有意见请随时指教,本人基础还比较浅薄。谢谢   今天第一次使用springboot2.0版本集成redis,在参考http://412887952-qq-com.iteye.com/blog/2294942 进行集成的时候遇见了如下问题: RedisCacheManager类初始化不再能以RedisTemplate为参数进行初始化,取而代之,官方(https://docs.spring.io/spring-data/redis/docs/2.0.5.RELEASE/reference/html/#new-in-2.0.0)给出了另一种初始化RedisCacheManager的方法: RedisCacheManager在新版本中移除了该方法,所以不能再使用,若要使用则需要将spring-data-redis版本降低,1.6.0.RELEASE此方法是可用的,但是不推荐此方法,除非整体降低springboot的版本。 然后去查看spring2.0的官方文档,发下了如下描述: 1、添加spring-boot-starter-data-redis依赖(该依赖版本继承spring-boot版本) <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、按照文档描述创建了Bean: import org.springframework.beans.factory.annot...
一直在成长的程序猿 发布于 1个月前 阅读 2708 评论 2 点赞 2

JeeSite 4.0 前后分离、接口调用、移动端API

# 引言 有不少朋友咨询我,想用JeeSite做前后分开的应用,或者手机端API怎么调用?又或者只想用JeeSite作为服务端API,仅提供服务接口怎么做?那这篇文章一定适合你,下面我来介绍下一些JeeSite已内置的接口及如果自己来开发API接口提供服务。 # 内置接口 ## 系统登录 JeeSite的系统默认登录,设置了DES加密,如果不想加密,可将secretKey设置为空即可,或更改密钥,配置如下(jeesite.yml): ``` shiro: loginSubmit: # 登录提交信息安全Key,加密用户名、密码、验证码,后再提交(key设置为3个,用逗号分隔) secretKey: thinkgem,jeesite,com # 设置为空,关闭登录DES加密。 # secretKey: ~ # 如果是JS请求可能会有跨域访问问题,可将如下参数设置为,允许的域名,全部域名设置*号,否则设置为空 accessControlAllowOrigin: '*' ``` 如果开启了加密,你就需要先将DES加密工具引入: JS:` ` Java: `com.jeesite.common.codec.DesUtils` 引入完成之后就可以通过如下方法进行调用加密了: JS: ``` ``` Java: ``` String secretKey = Global.getConfig("shiro.loginSubmit.secretKey"); String username = DesUtils.encode("system", secretKey); String password = De...
ThinkGem 发布于 1个月前 阅读 1283 评论 9 点赞 1

Springboot 打jar包分离lib,配置文件正确方式

## Springboot 打jar包分离lib,配置文件正确方式 ### 前言 Springboot 打jar包分离lib,配置文件的方式,网上可以搜到的我都没试通。跟刘大神(大神没有博客,很可惜)讨论后,给出了这么一个解决方案,供大家参考。 ### 部署环境 - window 10 - redhat 6.4 - 其他版本没有尝试,应该也是可以的 ### POM.xml ``` 4.0.0 com.elvish test 0.0.1-SNAPSHOT jar test test org.springframework.boot spring-boot-starter-parent 1.5.10.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.apache.maven.plugins maven-dependency-plugin copy-dependencies package copy-dependencies target/lib false false runtime org.apache.maven.plugins maven-jar-plugin **/*.properties **/*.xml **/*.yml static/** templates/** org.springframework.boot spring-boot-maven-plugin ZIP non-exists non-exists repackage classes false org.apache.maven.plugins maven-antrun-plugin package run target/distribution target/distribution/tmp ${project.artifactId}-${project.version} ```...
小祝特烦恼 发布于 2个月前 阅读 1176 评论 9 点赞 3

分享我在阿里8年,是如何一步一步走向架构师的

专心分享,认真做事。
高级架构师 发布于 5天前 阅读 75 评论 2

JeeSite 4.0 替换默认视图风格,自定义主题

# 替换默认视图风格 每个项目的需求都不同,风格要求也不同,例如我想修改下登录页、框架页面、错误页面等待,那在JeeSite4.0中如何覆盖默认视图视图呢? 1、先看下SpringMVC的视图配置: ```java // Beetl主题视图解析器(order越小优先级越高) BeetlViewResolver beetlThemes = new BeetlViewResolver(); beetlThemes.setPrefix("/themes/" + Global.getProperty("web.view.themeName") + "/"); beetlThemes.setSuffix(".html"); beetlThemes.setOrder(10000); registry.viewResolver(beetlThemes); // Beetl默认视图解析器(order越小优先级越高) BeetlViewResolver beetlDefault = new BeetlViewResolver(); beetlDefault.setPrefix("/"); beetlDefault.setSuffix(".html"); beetlDefault.setOrder(20000); registry.viewResolver(beetlDefault); // 默认视图定义,根据后缀渲染(.json、.xml) JsonView jsonView = new JsonView(); jsonView.setPrettyPrint(false); XmlView xmlView = new XmlView(); xmlView.setPrettyPrint(false); registry.enableContentNegotiation(jsonView, xmlView); ``` 2、我们在看下`jeesite.yml`里视图相关配置`themeName`默认为`defa...
ThinkGem 发布于 2个月前 阅读 2265 评论 3 点赞 5

JeeSite 4.0 内置管理功能介绍

# 组织管理 ## 用户管理 用户管理是能够登录平台的账号集合,即登录用户。其最基本的属性为用户名和密码。登录用户类型分为内部员工、往来单位用户、会员用户,往来单位又分为供应商、客户、网点、院校、科研院所等。 主要功能包括:用户的维护、查询、授权角色、授权数据权限 ## 机构管理 机构管理是指组织机构也是部门,采用多级组织管理维护,无限层级,支持全国应用。 ## 公司管理 公司管理,包含以下几种场景: 1. 在财务总账中具有 “帐套”的概念; 2. 在费用预算系统中具有 “出账公司”的概念; 3. 在HR系统中具有 “合同公司” 的概念; 4. 在供应链中具有“交易公司”的概念,采用多级公司管理维护。 ## 岗位管理 岗位管理,是组织架构下的精细岗位划分,是业务流程控制、业绩考核、预警体系的基础,不同的机构、部门下的同一职务,则是不同的岗位。内部员工的属性。 主要是面向业务管理,而角色主要是针对权限功能。 # 权限管理 ## 角色管理 角色维护,是系统功能权限设置的基础,相当于权限分组,所有用户对应到相应权限角色,便具有该权限角色所赋予的所有菜单权限和操作权限。 主要功能包括:角色维护、授权功能菜单、授权数据权限、快速分配用户 ## 二级管...
ThinkGem 发布于 1个月前 阅读 2228 评论 11 点赞 3

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 发布于 2个月前 阅读 14027 评论 35 点赞 8

springboot2.0集成redis使用

有意见请随时指教,本人基础还比较浅薄。谢谢   今天第一次使用springboot2.0版本集成redis,在参考http://412887952-qq-com.iteye.com/blog/2294942 进行集成的时候遇见了如下问题: RedisCacheManager类初始化不再能以RedisTemplate为参数进行初始化,取而代之,官方(https://docs.spring.io/spring-data/redis/docs/2.0.5.RELEASE/reference/html/#new-in-2.0.0)给出了另一种初始化RedisCacheManager的方法: RedisCacheManager在新版本中移除了该方法,所以不能再使用,若要使用则需要将spring-data-redis版本降低,1.6.0.RELEASE此方法是可用的,但是不推荐此方法,除非整体降低springboot的版本。 然后去查看spring2.0的官方文档,发下了如下描述: 1、添加spring-boot-starter-data-redis依赖(该依赖版本继承spring-boot版本) <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、按照文档描述创建了Bean: import org.springframework.beans.factory.annot...
一直在成长的程序猿 发布于 1个月前 阅读 2708 评论 2 点赞 2

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

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

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 3912 评论 12 点赞 20

JeeSite 4.0 前后分离、接口调用、移动端API

# 引言 有不少朋友咨询我,想用JeeSite做前后分开的应用,或者手机端API怎么调用?又或者只想用JeeSite作为服务端API,仅提供服务接口怎么做?那这篇文章一定适合你,下面我来介绍下一些JeeSite已内置的接口及如果自己来开发API接口提供服务。 # 内置接口 ## 系统登录 JeeSite的系统默认登录,设置了DES加密,如果不想加密,可将secretKey设置为空即可,或更改密钥,配置如下(jeesite.yml): ``` shiro: loginSubmit: # 登录提交信息安全Key,加密用户名、密码、验证码,后再提交(key设置为3个,用逗号分隔) secretKey: thinkgem,jeesite,com # 设置为空,关闭登录DES加密。 # secretKey: ~ # 如果是JS请求可能会有跨域访问问题,可将如下参数设置为,允许的域名,全部域名设置*号,否则设置为空 accessControlAllowOrigin: '*' ``` 如果开启了加密,你就需要先将DES加密工具引入: JS:` ` Java: `com.jeesite.common.codec.DesUtils` 引入完成之后就可以通过如下方法进行调用加密了: JS: ``` ``` Java: ``` String secretKey = Global.getConfig("shiro.loginSubmit.secretKey"); String username = DesUtils.encode("system", secretKey); String password = De...
ThinkGem 发布于 1个月前 阅读 1283 评论 9 点赞 1

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

### 前言 > 本章节深入讲解spring的comparator,使用与细节,帮助大家在项目里面正确使用comparator。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成整个流程。 ### 从深入理解java api中的comparator,在脑海中形成一个技术蓝图 ```java private Comparator comparator = new Comparator() { @Override public int compare(Integer o1, Integer o2) { if(o1 == o2){ return 0; } return o1 > o2?1:-1; } }; public void comparatorTest(){ Random random = new Random(); List intList = new ArrayList<>(); for(int i = 0 ; i< 20 ; i++){ intList.add(random.nextInt(40)); } log.info("intList里面的数据,现在是无序的:" + intList); Collections.sort(intList, comparator); log.info("排序之后的结果:" + intList.toString()); } ``` 结果 ``` 2018-04-01 11:27:44.455 [main] INFO c.n.b.spring.core.ordere.OrdereTest - intList里面的数据,现在是无序的:[26, 21, 18, 35, 25, 14, 15, 17, 15, 13, 37, 15, 35, 29, 13, 19, 32, 15, 19, 12] 2018-04-01 11:27:44.479 [main] INFO c.n.b.spring.core.ordere.Ord...
鸟菜啊 发布于 3天前 阅读 146

JeeSite 4.0 内置管理功能介绍

# 组织管理 ## 用户管理 用户管理是能够登录平台的账号集合,即登录用户。其最基本的属性为用户名和密码。登录用户类型分为内部员工、往来单位用户、会员用户,往来单位又分为供应商、客户、网点、院校、科研院所等。 主要功能包括:用户的维护、查询、授权角色、授权数据权限 ## 机构管理 机构管理是指组织机构也是部门,采用多级组织管理维护,无限层级,支持全国应用。 ## 公司管理 公司管理,包含以下几种场景: 1. 在财务总账中具有 “帐套”的概念; 2. 在费用预算系统中具有 “出账公司”的概念; 3. 在HR系统中具有 “合同公司” 的概念; 4. 在供应链中具有“交易公司”的概念,采用多级公司管理维护。 ## 岗位管理 岗位管理,是组织架构下的精细岗位划分,是业务流程控制、业绩考核、预警体系的基础,不同的机构、部门下的同一职务,则是不同的岗位。内部员工的属性。 主要是面向业务管理,而角色主要是针对权限功能。 # 权限管理 ## 角色管理 角色维护,是系统功能权限设置的基础,相当于权限分组,所有用户对应到相应权限角色,便具有该权限角色所赋予的所有菜单权限和操作权限。 主要功能包括:角色维护、授权功能菜单、授权数据权限、快速分配用户 ## 二级管...
ThinkGem 发布于 1个月前 阅读 2228 评论 11 点赞 3

JeeSite 4.0 替换默认视图风格,自定义主题

# 替换默认视图风格 每个项目的需求都不同,风格要求也不同,例如我想修改下登录页、框架页面、错误页面等待,那在JeeSite4.0中如何覆盖默认视图视图呢? 1、先看下SpringMVC的视图配置: ```java // Beetl主题视图解析器(order越小优先级越高) BeetlViewResolver beetlThemes = new BeetlViewResolver(); beetlThemes.setPrefix("/themes/" + Global.getProperty("web.view.themeName") + "/"); beetlThemes.setSuffix(".html"); beetlThemes.setOrder(10000); registry.viewResolver(beetlThemes); // Beetl默认视图解析器(order越小优先级越高) BeetlViewResolver beetlDefault = new BeetlViewResolver(); beetlDefault.setPrefix("/"); beetlDefault.setSuffix(".html"); beetlDefault.setOrder(20000); registry.viewResolver(beetlDefault); // 默认视图定义,根据后缀渲染(.json、.xml) JsonView jsonView = new JsonView(); jsonView.setPrettyPrint(false); XmlView xmlView = new XmlView(); xmlView.setPrettyPrint(false); registry.enableContentNegotiation(jsonView, xmlView); ``` 2、我们在看下`jeesite.yml`里视图相关配置`themeName`默认为`defa...
ThinkGem 发布于 2个月前 阅读 2265 评论 3 点赞 5

Springboot 打jar包分离lib,配置文件正确方式

## Springboot 打jar包分离lib,配置文件正确方式 ### 前言 Springboot 打jar包分离lib,配置文件的方式,网上可以搜到的我都没试通。跟刘大神(大神没有博客,很可惜)讨论后,给出了这么一个解决方案,供大家参考。 ### 部署环境 - window 10 - redhat 6.4 - 其他版本没有尝试,应该也是可以的 ### POM.xml ``` 4.0.0 com.elvish test 0.0.1-SNAPSHOT jar test test org.springframework.boot spring-boot-starter-parent 1.5.10.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.apache.maven.plugins maven-dependency-plugin copy-dependencies package copy-dependencies target/lib false false runtime org.apache.maven.plugins maven-jar-plugin **/*.properties **/*.xml **/*.yml static/** templates/** org.springframework.boot spring-boot-maven-plugin ZIP non-exists non-exists repackage classes false org.apache.maven.plugins maven-antrun-plugin package run target/distribution target/distribution/tmp ${project.artifactId}-${project.version} ```...
小祝特烦恼 发布于 2个月前 阅读 1176 评论 9 点赞 3

分享我在阿里8年,是如何一步一步走向架构师的

专心分享,认真做事。
高级架构师 发布于 5天前 阅读 75 评论 2

架构师视角:对JVM架构进行解析

以架构师的视角来讲述JVM架构
高级架构师 发布于 3天前 阅读 53

体验JBOOT(二)--数据库篇

适合对maven、idea几乎一无所知的小白
Tom-Lin 发布于 1个月前 阅读 211

体验JBOOT(四)-- jboot-admin 篇

jboot、jboot-admin体验
Tom-Lin 发布于 3周前 阅读 194

2018 年最受欢迎 Linux 发行版排行榜

开发人员经常使用基于 Linux 的操作系统来完成日常工作和开发新东西。 他们选择 Linux 发行版进行编程的主要考虑因素是兼容性,功耗,稳定性和灵活性。 像 Ubuntu 和 Debian 这样的发行版已经成为了首选。 其他一些很好的选择如 openSUSE,Arch Linux 等。而对于打算购买 Raspberry Pi 的用户,Raspbian 就是最好的选择。 国外技术网站 FossBytes 近日梳理了 2018 年最值得开发者尝试 9 个发行版,内容仅代表作者个人观点。读者如有不同意见,欢迎留言分享。 1. Debian GNU/Linux 上榜理由:Debian 含有大量的软件包,提供良好的稳定性和大量的教程,帮助开发人员解决问题。Debian 测试分支,它有所有最新的软件,并且非常稳定。适合高级程序员和系统管理员。Debian 有很多开源库,另外,它的 .deb 软件包管理也是值得推荐的一点。 2. Ubuntu 上榜理由:多年来,得益于 Canonical 和开源社区的支持,Ubuntu 已经成为 Linux 桌面场景的一大亮点。由于其受欢迎程度和持续发展,这个 Debian 衍生物在云和服务器应用程序中被大量使用。它也有多种风格来满足人们的不同需求。LTS 版本提供了良好的体验,可以快速解决问题。 Ubuntu 也支持流行的 .deb 包管理系统。 3. openSUSE ...
linux-tao 发布于 3个月前 阅读 293

(Spring Cloud微服务实战-书中之坑)spring cloud eureka报错host name may not be null

一、需求,现在一般项目都尽量选择通过域名的形式去配置,如eureka可以使用IP来定义defaultZone,但我们选择内网计算机名来指定,防止IP变动 二、书中,描述默认是通过计算机名来注册,而我使用docker容器部署eureka,docker的-h参数定义为“maolujun_v5_eureka”,那么eureka,则需要通过maolujun_v5_eureka来定义defaultZone。如: 三、结果,每次启动都会报错:host name may not be 四、处理方式: 将maolujun_v5_eureka改为maolujun-v5-eureka 因为在eureka中java.net.URI不能区分下划线, 所以切记,当使用host作为defaultZone配置时,不要以下划线来命名
maolujun 发布于 3个月前 阅读 146

体验JBOOT(一)-- Hello, Jboot

适合对maven、idea几乎一无所知的小白
Tom-Lin 发布于 1个月前 阅读 235

用eclipse创建动态web项目时没有生成web.xml的补救措施

永久更新地址:https://my.oschina.net/bysu/blog/1679746 创建一个动态web项目(Dynamic web Project),具体步骤见如下图片: 创建之后,整个项目目录如下图: 由于后续使用到Struts框架,需要配置StrutsPrepareAndExecuteFilter。但是进行该配置,需要在web.xml中进行配置。你没猜错,我就是悲剧地发现跟教程上的不一样——没有web.xml这个配置文件。 找了很久,发现很多跟哥一样悲催的人,并且有一个哥们跟我一样执着,找到了下面这个解决方案。在此感谢这哥们的不将就。解决步骤见下图: 会在WEB-INF目录下面生成一个web.xml文件。 参考:https://blog.csdn.net/weiral/article/details/51366485
不最醉不龟归 发布于 4周前 阅读 75

springboot集成shiro框架(2)添加缓存

在集成shiro框架之后,每次在访问设置了权限的页面时,都会去执行doGetAuthorizationInfo方法来判断当前用户是否具备访问权限,由于在实际情况中,权限是不会经常改变的,所以进行缓存。 一、shiro缓存实现原理。 Shiro 提供了一系列让我们自己实现的接口,包括org.apache.shiro.cache.CacheManager 、org.apache.shiro.cache.Cache 等接口。那么我们要对这些做实现,就实现了 Shiro 对 Session 和用户认证信息、用户缓存信息等的缓存,存储。我们可以用缓存,如 Redis 、 memcache 、 EHCache 等,甚至我们可以用数据库,如 Oracle 、 Mysql 等,都可以,只有效率的快慢问题,功能都可以达到。 二、添加缓存 1、Ehcache缓存     由于shiro默认集成了Ehcache缓存,所以这部分的配置比较简单。    (1)生成EhCacheManager(org.apache.shiro.cache.ehcache.EhCacheManager)bean。 /* EhcacheManager */ public EhCacheManager ehCacheManager(){ EhCacheManager ehCacheManager = new EhCacheManager();     //配置Ehcache缓存配置文件,该缓存配置文件默认位置为“classpath:org/apache/shiro/cache/ehcache/ehcache.xml”     //ehCacheManager.setCac...
一直在成长的程序猿 发布于 1个月前 阅读 68

体验JBOOT(三)--RPC篇

目录: 体验JBOOT(一)-- Hello, Jboot 体验JBOOT(二)--数据库篇 体验JBOOT(三)--RPC篇 体验JBOOT(四)-- jboot-admin 篇   到 https://www.consul.io 下载 consul,解压到某个目录下 在命令行下进入consul 的目录,启动 consul:consul agent –dev  回到ideal,在原项目基础上,修改jboot.properties,增加RPC的配置参数:   jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1/demo?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull jboot.datasource.user=demo jboot.datasource.password=demo jboot.rpc.type=motan jboot.rpc.registryType=consul jboot.rpc.registryAddress=127.0.0.1:8500   增加接口包,并生成jar公共包文件。如下图:   package io.jboot.hello.service; import com.jfinal.plugin.activerecord.Record; import java.util.List; /** * Created by Tom on 2018/3/13. */ public interface HelloService { public List<Record> getUsers(); } 生成公共的接口文件包后,新增依赖公共接口包,并添加实现接口的代码。如下:   package io.jboot.hello.impl; import com.jfinal.plugin.act...
Tom-Lin 发布于 1个月前 阅读 201

OTRS 功能介绍

OTRS 是以全球业界公认的IT服务管理标准 ITIL V3[2]  为基础,开发的一整套开源 IT 服务管理解决方案。 OTRS 以工单和配置项(资产)为中心,通过对工单属性,权限和流转的配置,实现事件管理、问题管理、服务请求管理、变更管理,发布管理,CMDB,知识管理,服务和服务水平协议(SLA),及客户特定业务流程。 功能介绍 工单管理 OTRS系统可支持多渠道提交工单:邮件,微信,网页,电话,监控系统。自动可根据预定规则进行工单的自动过滤,自动分类,自动分派。 1. 工单记录与处理 工单中记录的字段可以根据业务需要进行自定义扩展,对工单的每个操作都可以通过配置进行自定义。通过权限控制,可以实现工单按预定的业务流程进行流转。 2. 服务与SLA OTRS支持服务与SLA管理,对不同的服务和SLA设定响应时间,更新时间,以及解决时间的时长限制。当工单处理超过预定时限时,会根据设定的规则进行工单升级。 3. 工单通知 OTRS可以非常灵活的自定义工单通知的触发条件,所有工单的更新事件都可以触发工单通知,每个工单通知的收件人,内容以及形式可以根据业务流程的要求进行自定义 。 4. 与知识库和CMDB的集成 OTRS是一个集成的IT服务管理工具,在工单创建,处理的各种操...
叶子麦兜 发布于 3个月前 阅读 231

git解决错误提交分支

解决提交到错误分支的问题
kidou 发布于 1个月前 阅读 107

重构系统的套路-写有组织的代码

如果一个项目经历了快速发展,势必在业务发展背后留下了一个很无序,结构混乱的代码,无序而混乱的代码势必造成很大的bug修复及扩展成本。 > 说到搭建系统都在谈论高并发,大数据,而易于维护和可扩展性则被大部分人抛之脑后,增加最基础的面向对象思想和设计模式帮助我们组织好易于维护和阅读的代码。 不要好高骛远看一下高并发,高可用的东西,做好以下这些最基础的东西,你的系统在可读性和可维护可扩展方面将会提升一倍的能力,将大家的人效从每次bug产生梳理代码的过程中解放出来,建立标准建立原则才是架构师首先要做的。 - 进行适当的封装 - 开放封闭原则 - 单一只能原则 - 代码具备随时删掉而不影响上下文的能力 ## 命名与注释 命名需要见名知义,注释则可以帮助我们去了解当时的业务逻辑,不然后期只能通过一行行的日志去定位问题了。 > 考虑到IDE会帮助我们创建变量名称,如果名称相似则存在误用可能造成很难定位的BUG,入参可以以Req结尾或者Command结尾,返回值以Resp结尾或者Result结尾。 ## 抽离业务骨骼 Web系统的入口层是Controller,基于RPC的服务入口层往往是XxxServiceImpl,入口层应该像一本书的目录和前言部分,说明了这个方法的主要目的,同时梳理了...
春哥大魔王的博客 发布于 2小时前 阅读 1

谷歌明确Fuchsia并非基于Linux内核

根据公布的文档,Fuchsia是基于功能的模块化系统,使用名为“Zircon”(锆石)的内核,该微内核为Fuchsia系统提供核心驱动以及C Library(libc)实例。 虽然文档仍未完成,但是我们也注意到Google正在打造的Fuchsia OS非常独特,极具创新且前途无限。这款系统从头构建自己的库和组件,通过POSIX向后兼容性和使用基于Vulkan的驱动打造出类UNIX系统。 Fuchsia系统使用名为“Escher”的物理渲染器,提供物体的Soft Shadows,镜头特效、光影扩散和色彩外溢等功能。此外Fuchsia的文件系统完全在用户空间之间进行操作,并没有链接或者加载到内核中。 在文档中写道:“Fuchsia的文件系统本身可以很容易的进行更改--修改不需要重新编译内核。事实上,对Fuchsia的文件系统更新可以不需要重启。” 本文地址:https://www.linuxprobe.com/fuchsia-linux.html编辑:何云艳,审核员:逄增宝
linux-tao 发布于 3小时前 阅读 2

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

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

java 编程中的非空判断怎么加才优雅?

https://www.zhihu.com/question/264897698/answer/287463667
张宏亮1982 发布于 3小时前 阅读 6

JS处理datatime数据类型

# 问题描述 # 数据库中数据类型为datatime,使用AJAX获取JSON数据时,前端获取到的将会是一个长度13位的字符串,因此需要做个转化; ## JS处理标准化写法 ## //后台datetime格式转化 /* 获取日期格式 */ function getDate(date) { var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year + "-" + month + "-" + day ; } /* 获取日期时间格式*/ function getDateTime(date) { var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hh = date.getHours(); var mm = date.getMinutes(); var ss = date.getSeconds(); return year + "-" + month + "-" + day + " " + hh + ":" + mm + ":" + ss; } ## 具体使用 ## var date_before = /*后台返回的数据*/; var date_after = getDateTime(new Date(date_before));...
Ethel_oo 发布于 13小时前 阅读 1

servlet实现文件上传下载的最简单示例

# 文件下载 # 以PDF文件为例,文件在src下: package course.servlet; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/DownloadServlet") public class DownloadServlet extends HttpServlet{ /** * 下载PDF文件 */ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //声明文档类型 resp.setContentType("application/pdf"); //1、读取服务器上的PDF文件 InputStream in = DownloadServlet.class.getClassLoader().getResourceAsStream("/draw.pdf"); //2、读取的同时 写入outputstream OutputStream out = resp.getOutputStream(); writeByte(in, out); } protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("跳转到了doGET"); ...
Ethel_oo 发布于 14小时前

AJAX请求后台返回map集合的处理方法

# 问题描述 # 最近在重新学习servlet,涉及到后台传集合类给前端的格式化处理方法。目前只写了一个map的例子。使用的是alibaba的json解析库。 # 需要的架包或maven配置 # ## 架包 ## fastjson-1.1.32.jar: 下载地址:[http://http://repo1.maven.org/maven2/com/alibaba/fastjson/](http://http://repo1.maven.org/maven2/com/alibaba/fastjson/) ## maven配置 ## 1.2.28 com.alibaba fastjson ${fastjson_version} # servlet发送map集合给前端 # Map map = new HashMap<>(); map.put("residueAmount", residueAmount);//这是一个String map.put("paymentList", paymentList);//这是一个List> //map集合转换为JSON对象 JSONObject result = JSONObject.parseObject(JSON.toJSONString(map)); //将JSON对象传递给前端AJAX接收 resp.getWriter().print(result); ## AJAX接收map集合 ## ### 我的JSP页面源码: ### #### 获取String #### 本月剩余¥: #### 获取数据表 #### # 用途 金额 消费日期 ### 我的AJAX:源码 ### $(document).ready(function() { $.ajax({ url: "ListServlet", method: "POST", async: true, success: function (data) { //把JSON字符串转化为JSON对象...
Ethel_oo 发布于 14小时前 阅读 3 点赞 1

mysql中sum()函数相减结果为空的处理

# 问题描述 # 我有两张表,一张工资表income,消费表payment,需要SQL查询出某一个人在本月的消费余额。当消费表记录为空或者工资表记录为空时,两个sum()函数相减MySQL显示结果为空值。 # 问题原因 # 没有做判断空值的处理。 # 解决方法 # 1、先把两张表中的金额字段的默认值设为0。 2、在运算的时候使用ifnull()函数判断是否为空,为空的话设为0值。 SELECT ( SELECT ifnull(sum(in_amount), 0) FROM income WHERE userid = '' AND DATE_FORMAT(in_date, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') ) - ( SELECT ifnull(sum(pay_amount), 0) FROM payment WHERE userid = '' AND DATE_FORMAT(pay_date, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') ) AS result;
Ethel_oo 发布于 15小时前

自己封装的一个JDBC工具类

# 源码: # package com.util; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.*; /** * 工具类:负责数据库操作 * Created by Ethel_oo on 2018/3/19. */ public class DBCompleteUtil { private static String driverClass; private static String url; private static String username_sql; private static String password_sql; private static Connection connection; private static PreparedStatement preparedStatement; private static ResultSet resultSet; static { try { //读取SQL配置文件 InputStream in = DBCompleteUtil.class.getClassLoader().getResourceAsStream("/jdbc.properties"); Properties properties = new Properties(); properties.load(in); //获取参数 driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); username_sql = properties.getProperty("username"); password_sql = properties.getProperty("password"); ...
Ethel_oo 发布于 15小时前

我的“并发编程十五年”,架构师进阶之路②

昨天编辑完已经很晚了,今天继续分享我的“并发编程15年”,前面没有看到的可以进我的主页观看。 上篇文章写到我为什么不停下来 这是一个合理的问题。 一个非常强大的系统依据上述内容就可以构建,或者我应该说,多年来经历系统上的冲击,上述基础经受住了时间的考验,并经历了比下一步(语法周边)更少的变化 。 我觉得这时可以离开了。 事实上,依据完美的后见之明,我相信停在这里将是一个合理的故事第一个版本。 然而,还有很多事情需要我们继续向前: 子进程没有并行性。 值得注意的是现在还缺乏任务和数据的并行性。 这对于构建.NET的任务和 PLINQ编程模型的人来说是痛苦的。 很多场景有潜在的并行性只是等待被发现,例如图像解码,多媒体管道,FRP渲染堆栈,浏览器,最终语音识别等等。 Midori的一个顶级目标是解决并发难题,尽管很多并行化是为了进程的“自由”,没有任务和数据并行性会使之受到损害。 进程之间的所有消息都需要RPC数据调度,因此无法共享对象。 缺少任务并行性的一个解决方案可能是将所有事物抽象为进程。 需要任务? 那就创建一个进程。 在Midori,他们有充足的条件完成这个工作。 然而,这样做需要调度数据。 这不仅是一个成本高昂的操作,而且...
高级架构师 发布于 18小时前 阅读 4

Lubuntu Next 18.10将默认采用Calamares

Lubuntu是最轻量级的官方Ubuntu衍生版,在即将到来的Bionic Beaver操作系统系列的开发周期中,在过去几个月中遇到各种各样的艰难问题,但是它的小型开发团队设法解决它们并继续在Lubuntu和Lubuntu上工作。 虽然现在我们很少看到有关LUbuntu的新闻,但是Lubuntu和Lubuntu Next操作系统仍将继续开发,开发人员Simon Quigley今天与我们分享了即将发布的一些详细信息。 Lubuntu是最轻量级的官方Ubuntu衍生版,在即将到来的Bionic Beaver操作系统系列的开发周期中,在过去几个月中遇到各种各样的艰难问题,但是它的小型开发团队设法解决它们并继续在Lubuntu和Lubuntu上工作。 虽然Lubuntu Next为我们提供了基于最新Qt 5技术的更现代的LXQt桌面环境,但即将推出的Lubuntu 18.04 LTS版本仍默认使用LXDE桌面环境。从Lubomsu 15.10(Wily Werewolf)开始,从LXDE切换到Luntu的LXQt正处于测试阶段,但在这方面正在取得进展。 “我们经常会遇到一个问题:”为什么不把LXQt作为默认设备?“这些问题的答案是,“我们正在努力实现(并正在取得进展)的同时,我们不希望发布一些尚不完美的东西来损害我们的用户群,“开发人员Simon Quigley说。 Lubuntu Next 18.10采用Calamares图形安装程...
linux-tao 发布于 1天前 阅读 1

011 docker swarm管理界面portainer

Portainer是一款轻量级的Docker图形化管理工具
GoldLeaf 发布于 2天前 阅读 3

ExecutorService

Java API对ExecutorService接口的实现有两个,所以这两个即是Java线程池具体实现类: 1. ThreadPoolExecutor 2. ScheduledThreadPoolExecutor ExecutorService还继承了Executor接口(注意区分Executor接口和Executors工厂类),这个接口只有一个execute()方法,最后我们看一下整个继承树 ExecutorService的创建 Java给我们提供了一个Executors工厂类,它可以帮助我们很方便的创建各种类型ExecutorService线程池,Executors一共可以创建下面这四类线程池: newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。 newSingleThreadExecutor:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。 Executors只是一个工厂类,它所有的方法返回的都是ThreadPoolExecutor、ScheduledThreadPoolExecutor这两个类的实例。 ExecutorService的使用 ExecutorService executorServic...
土茯苓 发布于 2天前 阅读 5

JEECG 新版在线文档WIKI正式发布

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangdaiscott/article/details/80003500   JEECG 新版在线文档WIKI正式发布   背景:  jeecg 从2013年开源至今经历了6年时间,由于时间长迭代版本多,jeecg一直存在文档更新不及时,文档不匹配的问题。为了解决这个问题,jeecg 从3.7.3版本开始正式推出在线手册wiki,不再提供pdf技术文档,统一文档入口。          由于文档刚刚推出,有不匹配或描述不清的地方请大家多多指正,在论坛www.jeecg.org发帖反馈,我们会及时修正。   Jeecg 新版在线文档Wiki: http://jeecg3.mydoc.io Jeecg 新版源码下载:        https://github.com/zhangdaiscott/jeecg Jeecg 新版视频教程:        https://edu.csdn.net/lecturer/929 JEECG 入门开发环境搭建:  http://jeecg3.mydoc.io/?t=278859 MyEclipse非Maven版本:  https://github.com/zhangdaiscott/jeecg-nomaven                                      (针对不熟悉maven的同学提供,降低学习成本)...
Jeecg 发布于 2天前 阅读 6

传统行业中CPK的计算方法

CPK:过程能力指数;是指工序在一定时间里,处于控制状态(稳定状态)下的实际加工能力。 1.67-2 过大,可适当放宽检验 1.33-1.67 充分,继续保持 1-1.33 正常,但接近1危险 小于1 不充分,需改进,严重时停产需整顿
韩不会 发布于 2天前 阅读 4

自助建站平台实力比拼:凡科、微企点、建站之星、宝华建站、微魔方、上线了

随着互联网快速发展,网站建设受到越来越多的关注。优秀的企业网站能够为企业形象代言,也可以成为产品或服务宣传的重要窗口、企业收集反馈客户意见的重要渠道、搭建产品信息的数据库等。相较于独立开发,自助建站具有建站速度快、成本低的优点,能够满足部分中小企业的网站建设需求,而且市面上有越来越多的自助建站平台可供企业选择。 在这篇攻略中精选六款主流的自助建站平台,总结了宣传展示类网站建站系统的评测体系,并对各指标的选取原则进行了解读,为企业选购提供参考。 >>核心指标 自助建站平台的作用就在于企业能够自主制作安全稳定的企业网站,并对网站进行管理。小编基于这一核心原则总结了一套适用于自助建站平台的核心评测体系,分别从基础参数、网站制作和管理以及安全稳定性四个维度对各系统进行评测。 网站的基础参数包括空间、流量、文章数及页面数,不同建站平台对此会有不同的限制。而且,即使同一个建站平台,也提供了套餐价格不同的多个版本的产品,不同版本除了在基础参数限制上有所不同之外,在核心功能上也有所不同。 因此,小编首先对各建站平台的产品价格信息进行简单介绍,详细的报价信息可参考以下官方定价信息:凡科产品报价及功能详情、微...
临江仙卜算子 发布于 2天前 阅读 6

010 docker搭建swarm集群

1.前言     刚开始找资料搭建时,发现网上有两种搭建方式:     第一种:docker run --rm swarm create   一代 Swarm,也被称为 Docker Swarm     第二种:docker swarm init    二代 Swarm,这是内置的 Swarm     本文采用第二种方式搭建swarm集群 2.搭建     假设有三台机器:192.168.20.201   192.168.20.202   192.168.20.203,准备用 201 作为master     2-1创建管理节点 docker swarm init --advertise-addr 192.168.20.201     执行完会显示token,创建工作节点时需要该token,Manager和Worker节点之间通信端口是2377     2-2创建子节点     分别在 192.168.20.202  和 192.168.20.203 上执行命令: docker swarm join --token 上面的token 192.168.20.202:2377 docker swarm join --token 上面的token 192.168.20.203:2377       2-3查看集群信息     该命令只能在master上执行 docker node ls 3.测试     3-1从仓库拉取一个nginx镜像 docker pull bginx docker tag docker.io/nginx nginx     3-2启动镜像 docker service create -p 8080:80 --replicas 3 --name web nginx:latest     3-3查看信息 docker service l...
GoldLeaf 发布于 2天前 阅读 5

一步一步构建自己的管理系统 User profile

User profile
Fly_f 发布于 3天前 阅读 5

架构师视角:对JVM架构进行解析

以架构师的视角来讲述JVM架构
高级架构师 发布于 3天前 阅读 53

百度地图定位(一)

1、转载 <!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />     <style type="text/css">     body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}     </style>     <script src="http://api.map.baidu.com/api?v=1.4&ak=您的密钥"></script>     <title>地图展示</title> </head> <body>     <div id="allmap"></div> </body> </html> <script type="text/javascript">     // 百度地图API功能     var map = new BMap.Map("allmap");    // 创建Map实例     map.centerAndZoom(new BMap.Point(121.272291,31.202356), 22);  // 初始化地图,设置中心点坐标和地图级别 1至22级     //添加地图类型控件     map.addControl(new BMap.MapTypeControl({         mapTypes:[             BMAP_NORMAL_MAP,             BMAP_HYBRID_MAP         ]}));           map.setCurrentCity("上海");          /...
窗前三更月 发布于 3天前 阅读 6

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

### 前言 > 本章节深入讲解spring的comparator,使用与细节,帮助大家在项目里面正确使用comparator。源码解读无法通过文字很详细的解释,诠释。需要读者多次阅读,深入理解,组织逻辑,大脑慢慢形成整个流程。 ### 从深入理解java api中的comparator,在脑海中形成一个技术蓝图 ```java private Comparator comparator = new Comparator() { @Override public int compare(Integer o1, Integer o2) { if(o1 == o2){ return 0; } return o1 > o2?1:-1; } }; public void comparatorTest(){ Random random = new Random(); List intList = new ArrayList<>(); for(int i = 0 ; i< 20 ; i++){ intList.add(random.nextInt(40)); } log.info("intList里面的数据,现在是无序的:" + intList); Collections.sort(intList, comparator); log.info("排序之后的结果:" + intList.toString()); } ``` 结果 ``` 2018-04-01 11:27:44.455 [main] INFO c.n.b.spring.core.ordere.OrdereTest - intList里面的数据,现在是无序的:[26, 21, 18, 35, 25, 14, 15, 17, 15, 13, 37, 15, 35, 29, 13, 19, 32, 15, 19, 12] 2018-04-01 11:27:44.479 [main] INFO c.n.b.spring.core.ordere.Ord...
鸟菜啊 发布于 3天前 阅读 146

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

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

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 3912 评论 12 点赞 20

【区块链】以太坊区块链技术初探

[国内首家]以太坊区块链实战教学:http://edu.csdn.net/course/detail/6455 LinApex个人简介     奋斗在区块链网络在数字货币交易平台,底层框架设计,区块链钱包,区块链解决方案一线,做过人工智能,金融支付行业,目前正在做一款区块链+黄金的App系统。 玩赚区块链QQ群:128148617   连载系列(基于以太坊)     开发系列         1、【区块链】以太坊区块链技术初探         2、【区块链】以太坊区块链环境搭建         3、【区块链】以太坊区块链概念了解         4、【区块链】以太坊区块链技术进阶     源码系列         1、【以太坊源码】编译以太坊源码,打造自己的公链私链         2、【以太坊源码】以太坊源码研究系列(以太坊模拟机、挖矿、点对点网络库、节点发现、合约代码传输、加密签名等)   区块链基本概念     区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。     区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,我们可以使用谷歌地球的例子做类比,ajax不是什么新技术,但组合在...
linapex 发布于 6个月前 阅读 1801 评论 16 点赞 3

基于Activiti扩展的工作流引擎OpenWebFlow

开源地址:https://github.com/bluejoe2008/openwebflow(欢迎star) 1.    OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎。Activiti (官方网站http://activiti.org/,代码托管在https://github.com/Activiti/Activiti)是一个新兴的基于 Apache 许可的支持 BPMN 2.0 标准的开源 BPM 产品,它是一个轻量级,可嵌入的 BPM 引擎,并且提供了功能丰富的开发和流程设计工具。OpenWebFlow与业务应用系统之间的关系如下图所示。 相对于Activiti,OpenWebFlow扩展的功能包括: 1) 完全接管了Activiti对活动(activity)权限的管理。 Activiti允许在设计model的时候指定每个活动的执行权限,但是,业务系统可能需要根据实际情况动态设置这些任务的执行权限(如:动态的Group)。OpenWebFlow完全实现了与流程定义时期的解耦,即用户对活动的访问控制信息单独管理(而不是在流程定义中预先写死),这样有利于动态调整权限,详见自定义活动权限管理; 2) 完全接管了Activiti对用户表(IDENTITY_XXX表)的管理。 在标准的工作流定义中,每个节点可以指定其候选人和候选用户组,但是比较惨的是,Activiti绑架了用户信息表的设计!这个是真正致命的,因为几乎每个业务...
白乔 发布于 6个月前 阅读 2240 评论 9 点赞 6

微服务开发的入门级框架Spring Boot详解(二)

1、Spring Boot的属性配置文件         1.1 Spring Boot的属性配置文件的第一种形式             使用properties配置文件,如下两个属性的含义是更改访问端口为8081,并且加了一个contextPath,可以理解为在地址栏多加层地址。 server.port=8081 server.context-path=/joyou                 右键点击DemoApplication.java ——》Run As ——》Spring Boot App启动程序             效果如下,首先从日志上看,端口已经变为8081             浏览器访问效果如下。                 补充:             属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。SpringApplication 类会在下面位置搜索该文件: 1.当前目录的/config子目录 2.当前目录 3.classpath 中的/config包 4.classpath 上面的顺序也表示了该位置上包含的属性文件的优先级。优先级按照从高到低的顺序排列。 可以通过spring.config.name这个key的配置属性来指定不同的属性文件名称。也可以通过spring.config.location来添加额外...
二十岁以后 发布于 8个月前 阅读 5162 评论 25 点赞 4

让Hibernate识别数据库特有字段

Hibernate已经为绝大多数常用的数据库数据类型提供了内置支持,但对于某些数据库的专属字段支持就不够好了。 这些特殊数据类型往往提供了比常规数据类型更好的数据表达能力,更符合我们的业务场景。比如PostgreSQL的Interval类型,可以非常方便的保存一个时间段的数据。 本文以添加Interval类型支持为例,说明为Hibernate添加特有数据类型支持的方法。
XuYuan 发布于 11个月前 阅读 1412 点赞 1

远程过程调用(RPC)详解

本文介绍了什么是远程过程调用(RPC),RPC 有哪些常用的方法,RPC 经历了哪些发展阶段,以及比较了各种 RPC 技术的优劣。
waylau 发布于 2年前 阅读 6165 评论 27 点赞 20

7 款顶级开源 BI(商务智能)软件和报表工具

在这个信息化时代,每分每秒都产生海量数据。在海量数据中,挖掘出有用的数据,并且能以较人性化、直观的方式展示这些数据,变得尤为重要。本文将介绍 7款顶级开源 BI(商务智能)软件和报表工具,用于商业数据的分析处理,希望对您有所帮助。
催呀催呀 发布于 2年前 阅读 6870 评论 22 点赞 25

Spring 4.3 的新功能和增强

本文介绍了 Spring 4.3 的新功能和增强的特性。
waylau 发布于 2年前 阅读 8250 评论 24 点赞 9

用JS实现简单的神经网络算法

笔者尝试用JavaScript实现最简单的神经网络算法。 神经网络简介 神经网络试图模拟大脑的神经元之间的关系来处理信息。它的计算模型通常需要大量彼此连接的节点。每个神经元通过某种特殊的输出函数来处理来自其它相邻神经元的加权输入值。 神经元之间的信息传递的强度,用所谓的加权值来定义,算法会不断的调整加权值来实现自我的学习过程。 神经网络分为多层,如上图,有输入层,隐藏层和输出层。 JS线性代数包 神经网络的计算涉及到大量的矩阵计算,有许多的线性代数的开源的软件,Python下有著名的numpy,非常有名。 Javascript也有几个: http://numericjs.com/index.php https://github.com/jstat/jstat https://mkaz.tech/javascript-linear-algebra-calculator.html  我使用了numericjs,效果还不错。推荐大家可以试试。 两层神经网络 我们有一些简单的输入输出的数据用来训练神经网络。这里每一行代表一条数据。输入有三个参数,输出是一个。 Inputs 0 Inputs 1 Inputs 2 Output 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 首先我们实现一个最简单的神经网络,没有隐藏层,输入直连输出。 因为输入是三个参数,输出是一个,所以我们的神经网络输入层是三个节点,输出是1个。...
naughty 发布于 2年前 阅读 4053 评论 13 点赞 6

干货|建议初创团队起初也要构建分布式应用

  干货|建议初创团队起初也要构建分布式应用   本文内容整理自W-Time技术分享沙龙-天津站现场演讲《一切都是分布的》,演讲者:李傲,问啊联合创始人,前中交车联网总架构。   好多人都会问什么是架构师?其实架构师的定义很宽泛,前端后端的定义都不一样。作为后端出身的架构师,我认为后端并不是大家想的封装组件,它要定义的是规划,规划模块之前的关系。在一台机器搞不定时怎么办?答:集群!这词说着很容易,但真要给你,你发现how?怎么去加?   有人问我,架构师要做什么?我认为,架构师就是要在软件起初阶段就能够从情景当中预先想到这问题,通过架构分布式解决方案,预先把问题都埋好。可能有人会说这算不算重度设计?其实所谓重度设计,要看团队的基本能力,如果团队写代码还写不利索的情况下,那么这个设计就很重要。因为不能指望一个代码都没有写过几行的人去写架构,这个是不可能的,做分布式都很难。如果团队能力属于中上层,那么有两种可能:1、团队做过十几年的代码,但架构差一些,那么也会把程序写的非常漂亮,因为对代码有把控能力,对底层的研究比较透彻;2、代码写的并不是很好,但是架构师对新技术有了解,那么也是有可能做好分布式的。如...
刘星石 发布于 2年前 阅读 4202 评论 14 点赞 8

使用开源软件快速搭建数据分析平台

本文介绍了如何使用开源软件迅速的搭建一个数据分析平台,包含数据导入,变形,分析,预测,可视化。
naughty 发布于 2年前 阅读 12981 评论 57 点赞 49

Elasticsearch 2.2.0 分词篇:中文分词

在Elasticsearch中,内置了很多分词器(analyzers),但默认的分词器对中文的支持都不是太好。所以需要单独安装插件来支持,比较常用的是中科院 ICTCLAS的smartcn和IKAnanlyzer效果还是不错的,但是smartcn不支持自定义词库,所以优先用IKAnanlyzer。
赛克蓝德 发布于 2年前 阅读 6441 评论 18 点赞 6

Elasticsearch 2.20 高亮显示

Elasticsearch中的高亮显示是来源于lucene的功能,他允许在一个或者多个字段上突出显示搜索内容, lucene支持三种高亮显示方式highlighter, fast-vector-highlighter, postings-highlighter.
赛克蓝德 发布于 2年前 阅读 8517 评论 6 点赞 5

Elasticsearch 2.20入门篇:聚合操作

聚合(Aggregations)提供分组和统计文档的能力。聚合类似关系数据库中group by分组的功能,在Elasticsearch中,对一次的聚合查询中可以同时得到聚合的具体结果再次进行聚合,这是一个非常有用的功能。你可以通过一次操作得到多次聚合的结果,从而避免多次请求,减少网络和服务器的负担。
赛克蓝德 发布于 2年前 阅读 10223 评论 5 点赞 4

mycat实现mysql读写分离实践

mycat是一个的数据库中间件,基于阿里开源的cobar产品而研发,由几个有志之士的牛人共同完成并开源。提供高可用性数据分片集群,自动故障切换,高可用性 ,支持读写分离,支持Mysql双主多从,以及一主多从的模式 ,支持全局表,数据自动分片到多个节点,用于高效表关联查询 ,支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询多平台支持,部署和实施简单。 今天来实践下用mycat实现mysql的读写分离,1.配置mysql端主从数据同步,2.用mycat实现读写分离,配置mysql端主从数据同步不作讲解,这里详细介绍下用mycat实现数据读写分离 新建数据库读库和写库 分别在两个不同主机下新建两个大库,读库r和写库w,在读库r下新建3个数据库分片(db1,db2,db3),在写库w下也新建3个分片(db1,db2,db3)。 1.db1分片脚本 /* Navicat MySQL Data Transfer Source Server         : mysql Source Server Version : 50527 Source Host           : localhost:3306 Source Database       : db1 Target Server Type    : MYSQL Target Server Version : 50527 File Encoding         : 65001 Date: 2016-01-27 1...
rock912 发布于 2年前 阅读 10015 评论 21 点赞 18

获取spring 的bean 方法总结

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?  Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制。BeanFactory使管理不同类型的Java对象成为可能,应用上下文(com.springframework.context.ApplicationContext)建立在BeanFactory基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系,更易于创建实际应用。我们一般称BeanFactory为IoC容器,而称ApplicationContext为应用上下文。但有时为了行文方便,我们也将ApplicationContext称为Spring容器。    对于两者的用途,我们可以进行简单划分:BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext而非底层的BeanFactory。 工厂方式:Resource resource = new ClassPathResource("/applicationContext.xml");              BeanFactory factory = new XmlBeanFactory(resource); factory.getBean(strName);    ApplicationContext的初始化和BeanFactory有...
1024菜bird 发布于 2年前 阅读 9204 评论 16 点赞 8

运维中被低估的日志

日志在运维中的作用是非常重要的,但非常不幸,日志在很多运维中被严重低估,直到磁盘空间不足的时候才想到,这有个大的日志文件把他删了,这样可以节省空间。
赛克蓝德 发布于 2年前 阅读 5483 评论 16 点赞 15 打赏 1

关于PSI开源协议的一些说明

关于PSI开源协议的一些说明
PSI 发布于 2年前 阅读 2516 评论 11 点赞 6 打赏 1

我如何在OSC上做开源项目

讲述我如何在OSC上做开源项目的经验体会
PSI 发布于 2年前 阅读 4354 评论 19 点赞 10

一个开源软件作者和邮件通知奋斗的血泪史

序章: 9月18日,禅道发布了7.3版本,这是禅道五年内发布的第65个开源版本,也是我们和邮件通知斗争五年的“血泪史”。这个版本我们最终集成了一个大招,来彻底解决邮件通知的问题。先卖个关子,后面详细讲我们的大招是啥。 背景: 禅道(http:/www.zentao.net)是我们团队开发的一款开源项目管理软件,主要定位是研发项目管理。面向的用户群体主要是研发团队,部署场景主要是企业内部的私有服务器。这是我们这个故事的大背景。然后悲惨的故事就开始了。 打不死的小强:Email 禅道软件在使用过程中的一个需求是需要将软件里面的各种动态消息通知到相关的人员。解决这个问题可以有很多种手段:客户端软件的提醒,QQ的提醒, 微信的提醒,短信的提醒,邮件的提醒,浏览器的桌面提醒等等。每种手段都有各自的优劣,然后我们与之奋斗了五年之久的邮件就粉墨登场了。在上述的各种通知 手段中,以邮件通知最为广泛,和用户的使用习惯契合度也最为密切。说到这儿,也许有的朋友说,我们团队邮件早都不用了。其实我们还是低估了邮件顽强的生命 力。邮件系统作为自互联网初期就存在的基础服务系统,有着广泛的用户基础。一直有各种各样的协同软件试图干掉邮件,但很遗憾的是,到现在还...
开源春哥 发布于 3年前 阅读 7773 评论 25 点赞 8
顶部