首页 文章 精选 留言 我的

精选列表

搜索[CI/CD集成],共10000篇文章
优秀的个人博客,低调大师

支付宝卡包集成流程

该产品可以用于管理电子凭证的产品,该产品聚合来自各类生活服务的票据凭证,包括优惠券、折扣券、代金券、换购券、电影票、演出票、火车票、机票。 用户交易创建后,企业或者个人开发者根据交易外部订单号可以通过支付宝提供的开放接口,把卡券添加到支付宝卡包,用户可以通过支付宝钱包客户端,在卡包功能中查看并使用卡券。 一、文档地址 官方文档地址:[url]https://docs.open.alipay.com/199/105248/[/url] 二、开发前准备工作 调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url] 注意事项:1、支持沙箱测试;2、不需签约,但需要添加功能;3、支持第三方调用。 检查调用appid的应用功能列表中是否添加“支付宝卡包”。 三、接口集

优秀的个人博客,低调大师

Springboot Application 集成 OSGI 框架开发

Java 类加载器 启动类加载器 (Bootstrap ClassLoader) 是 Java 类加载层次中最顶层的类加载器,负责加载 JDK 中的核心类库,如:rt.jar、resources.jar、charsets.jar 等 扩展类加载器(Extension ClassLoader) 负责加载 Java 的扩展类库,默认加载 JAVA_HOME/jre/lib/ext/目下的所有 jar 应用类加载器(Application ClassLoader) 负责加载应用程序 classpath 目录下的所有 jar 和 class 文件。 ClassLoader 使用的是双亲委托模型来搜索类的,每个 ClassLoader 实例都有一个父类加载器的引用(不是继承的关系,是一个包含的关系),虚拟机内置的类加载器(Bootstrap ClassLoader)本身没有父类加载器,但可以用作其它 ClassLoader 实例的的父类加载器。当一个 ClassLoader 实例需要加载某个类时,它会试图亲自搜索某个类之前,先把这个任务委托给它的父类加载器,这个过程是由上至下依次检查的,首先由最顶层的类加载器 Bootstrap ClassLoader 试图加载,如果没加载到,则把任务转交给 Extension ClassLoader 试图加载,如果也没加载到,则转交给 App ClassLoader进行加载,如果它也没有加载得到的话,则返回给委托的发起者,由它到指定的文件系统或网络等 URL 中加载该类。如果它们都没有加载到这个类时,则抛出 ClassNotFoundException 异常。否则将这个找到的类生成一个类的定义,并将它加载到内存当中,最后返回这个类在内存中的 Class 实例对象。 判别两个类是否相同,除了是相同的 class 字节码,还必须由同一类加载器加载。比如类 Example,javac 编译之后生成字节码文件 Example.class,ClassLoaderA 和 ClassLoaderB 这两个类加载器并读取了 Example.class 文件,并分别定义出了 java.lang.Class 实例来表示这个类,对于 JVM 来说,它们是两个不同的实例对象,但它们确实是同一份字节码文件,如果试图将这个 Class 实例生成具体的对象进行转换时,就会抛运行时异常 java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Class OSGI 类加载器 OSGI 类加载器并不遵循 Java 的双亲委派模型,OSGi 为每个 bundle 提供一个类加载器,该加载器能够加载 bundle 内部的类和资源,bundle 之间的交互是从一个 bundle 类加载器委托到另一个 bundle 类加载器,所有 bundle 都有一个父类加载器。 Fragment bundle 是一种特殊的 bundle,不是独立的 bundle,必须依附于其他 bundle 来使用。通过 Fragment-Host 来指定宿主 bundle,同时也可以通过这种方式使用宿主的类加载器。 图 1.OSGI 类加载器 image OSGI 框架根据 Bundle 的 MANIFEST.MF 文件中描述的数据信息进行解析处理 Bundle 间的依赖关系。Fragment Bundle 的宿主 bundle 的检查在 bundle 解析之前已经完成,所以 Fragement Bundle 可以获取到宿主 bundle 的加载器信息。 Equinox OSGI ServletBridge 实现原理及源码解析 BridgeServlet 与 OSGI 容器 Equinox 提供了 servletbridge.jar 将 OSGI framework 和 servlet container 桥接起来,并且提供了一系列的 bundle 可以将 Equinox OSGI 应用嵌入到现有的 web 服务器中(eg. Tomcat)。servletbridge.jar 包含如下两个文件 (package: org.eclipse.equinox.servletbridge) BridgeServlet – 负责请求处理 FrameworkLauncher – 负责 OSGI bundle 启动管理 Web 工程被加载到 web 容器中,比如 Tomcat,容器读取 web 工程 WEB-INF 目录下的 web.xml 文件,通过 servlet mapping 指定相应的类处理请求...... https://www.ibm.com/developerworks/cn/java/j-springboot-application-integrated-osgi-framework-development/index.html 总结 本文从 Java 类加载器说起,探讨了 OSGI 的类加载器原理并对 Equinox 中的 Servletbridge 原理实现进行了详细的研究,同时扩展到使用这一原理如何在 Spring boot 应用中嵌入 OSGI 开发和 Spring boot 应用如何与 OSGI 插件之间进行相互调用。使用一个例子来对这一系列的使用做了进一步的讲解。并对它的实现方法做了进一步的探讨,这些探讨对于将 OSGI 应用嵌入到任何其他的系统中是一个启发和帮助,希望有兴趣的读者可以做进一步的了解和实现。

优秀的个人博客,低调大师

Java发送Email邮件及SpringBoot集成

一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.6.1</version> </dependency> <!-- 真正的实现库 --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.1</version> </dependency> 2.代码 实例:通过一个已知的163邮箱发送给他人邮件 public static void main(String[] args) throws MessagingException { // 1.创建一个程序与邮件服务器会话对象 Session Properties props = new Properties(); props.setProperty("mail.transport.protocol", "SMTP"); props.setProperty("mail.smtp.host", "smtp.163.com"); props.setProperty("mail.smtp.port", "25"); // 指定验证为true props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.timeout", "1000"); // 验证账号及密码,密码对应邮箱授权码(163密码可行,qq必须授权码) Authenticator auth = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("xxxx@163.com", "xxxxx"); } }; Session session = Session.getInstance(props, auth); // 2.创建一个Message,它相当于是邮件内容 Message message = new MimeMessage(session); // 设置发送者 message.setFrom(new InternetAddress("xxx同上xxx@163.com")); // 设置发送方式与接收者 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("xx10086xx@qq.com")); // 设置主题 message.setSubject("邮件发送测试"); // 设置内容 message.setContent("Hello!", "text/html;charset=utf-8"); // 3.创建 Transport用于将邮件发送 Transport.send(message); } 二:SpringBoot的JavaMailSenderImpl发送 1.在resources下新建mailConfig.properties mailConfig.properties #服务器 mailHost=smtp.163.com #端口号 mailPort=25 #邮箱账号(使用者改成自己的) mailUsername=xxxxxx@163.com #邮箱密码(使用者改成自己的) mailPassword=xxxxx #时间延迟 mailTimeout=25000 2.新建一个类去读这个配置文件的内容 import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Create by yster@foxmail.com 2018/5/28/028 21:00 */ public class MailConfig { private static final String PROPERTIES_DEFAULT = "mailConfig.properties"; public static String host; public static Integer port; public static String userName; public static String passWord; public static String emailForm; public static String timeout; public static String personal; public static Properties properties; static{ init(); } /** * 初始化 */ private static void init() { properties = new Properties(); try{ InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT); properties.load(inputStream); inputStream.close(); host = properties.getProperty("mailHost"); port = Integer.parseInt(properties.getProperty("mailPort")); userName = properties.getProperty("mailUsername"); passWord = properties.getProperty("mailPassword"); emailForm = properties.getProperty("mailUsername"); timeout = properties.getProperty("mailTimeout"); personal = "来自星星的我";//发送人 } catch(IOException e){ e.printStackTrace(); } } } 3.以上只是准备阶段,下面开始邮件编码 import cn.zyzpp.config.MailConfig; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.UnsupportedEncodingException; import java.util.Properties; /** * Create by yster@foxmail.com 2018/5/28/028 21:05 */ public class MailUtil { private static final String HOST = MailConfig.host; private static final Integer PORT = MailConfig.port; private static final String USERNAME = MailConfig.userName; private static final String PASSWORD = MailConfig.passWord; private static final String emailForm = MailConfig.emailForm; private static final String timeout = MailConfig.timeout; private static final String personal = MailConfig.personal; private static JavaMailSenderImpl mailSender = createMailSender(); /** * 邮件发送器 * * @return 配置好的工具 */ private static JavaMailSenderImpl createMailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost(HOST); sender.setPort(PORT); sender.setUsername(USERNAME); sender.setPassword(PASSWORD); sender.setDefaultEncoding("Utf-8"); Properties p = new Properties(); p.setProperty("mail.smtp.timeout", timeout); p.setProperty("mail.smtp.auth", "false"); sender.setJavaMailProperties(p); return sender; } /** * 发送邮件 * * @param to 接受人 * @param subject 主题 * @param html 发送内容 * @throws MessagingException 异常 * @throws UnsupportedEncodingException 异常 */ public static void sendMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException { MimeMessage mimeMessage = mailSender.createMimeMessage(); // 设置utf-8或GBK编码,否则邮件会有乱码 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); messageHelper.setFrom(emailForm, personal); messageHelper.setTo(to); messageHelper.setSubject(subject); messageHelper.setText(html, true); mailSender.send(mimeMessage); } 4.开始发送一封邮件 public static void main(String[] args){ try { MailUtil.sendMail("xxxx@qq.com", "标题", "内容"); } catch (MessagingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } 欢迎关注博主!

优秀的个人博客,低调大师

Docker实战之registry持续集成

csphere的支持条件 每台运行docker的主机到控制器所在主机之间的网络必须能够连通 docker版本必须在1.6.0以上 仅支持64位系统,已测试可在以下操作系统下正常运行: CentOS 7+ Ubuntu 14.04+ Debian 7+ CoreOS Boot2Docker 虚拟机环境 内网:172.16.1.66 外网:10.0.0.66 1.基础的步骤(查看docker镜像) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@oldboy~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE csphere/wordpress4.204109740355a11hoursago722.7MB csphere/mysql5.563b2bd2cab9739hoursago725.1MB csphere/php-fpm5.438d1572aef9439hoursago685MB csphere/centos7.1080063d1c72d40hoursago591.4MB jb/jobs03latestdd40474b2a4c2daysago1.093MB jobs03latestdd40474b2a4c2daysago1.093MB centoscentos6273a1eca2d3a7daysago194.6MB centoslatestd83a55af4e757daysago196.7MB registrylatestad8da6d14f6d8daysago33.31MB centos6.8c51f770ba2ca5weeksago194.5MB centoscentos7.1.15030250eeee799f5weeksago212.1MB busyboxlatestb05baf071fd56weeksago1.093MB registry0.9.1bdc26a9667256monthsago422.9MB [root@oldboy~]# 2.启动registry容器 1 2 3 4 5 [root@oldboy~]#dockerrun-d-p5000:5000--nameregistryregistry:0.9.1 e407b8224975bcfe47a93d63b52b8eae164ec7c0abae44d4c546796c99115b00 [root@oldboy~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES e407b8224975registry:0.9.1 "docker-registry" AboutaminuteagoUp59seconds0.0.0.0:5000->5000/tcpregistry 3.csphere docker镜像的安装 1 2 3 4 curl-SsL-o/tmp/csphere-install.shhttps: //csphere.cn/static/csphere-install-v2.sh sudoenvROLE=controllerCSPHERE_VERSION=1.0.1/bin/sh/tmp/csphere-install.sh 打tag' [root@oldboy~]#dockertagcsphere/csphere:1.0.1172.16.1.66:5000/csphere/csphere:1.0.1 add host OK 本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/1834986,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册