首页 文章 精选 留言 我的

精选列表

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

统一收单交易创建接口集成开发者指南

说明: 交易创建接口主要是用于创建交易生成trade_no,配合jsapi唤起收银台来唤起支付的。 一、官方文档 官方文档地址:[url]https://docs.open.alipay.com/api_1/alipay.trade.create/[/url] 二、开发前准备工作 1、签约:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url] 2、创建应用:[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url] 3、生成密钥:[url]https://openclub.alipay.com/read.php?tid=1833&fid=69[/url] 4、下载服务端sdk:[url

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

自开发Web应用和SAP Customer Data Cloud Identity服务的集成

今天的文章继续由SAP成都研究院的云时代女王,Aviva给大家分享关于SAP Customer Data Cloud的一些使用经验。 Aviva之前的文章可以在本文末尾处获得。 下面是她的正文。 * 大家好,我是Aviva。本人在SAP不负责Gigya的开发工作,只是出于个人兴趣,在业余时间阅读了SAP官网上Gigya的帮助文档后,就Gigya提供的网站登录接入功能做了一些非常简单的Hello World级别的例子,在此分享给大家。 2017年SAP收购了以色列创业公司Gigya, 现在Gigya又被称作SAP Customer Data Cloud,是SAP C/4HANA的五朵云之一。所以下文在不同的上下文出现的SAP Customer Data Cloud和Gigya,大家可以认为这两组词表达的是同一个意思。 文章分为两部分,第一部分,

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

崛起于Springboot2.0.X之集成规则引擎Drools(41)

1、创建Springboot项目 2、添加pom其他依赖 <dependency> <groupId>org.kie</groupId> <artifactId>kie-spring</artifactId> <version>7.11.0.Final</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>7.11.0.Final</version> </dependency> 3、创建实体类 @Data public class Address { private String postCode; private String street; private String state; } @Data public class AddressCheckResult { //true通过校验,false 未通过 private boolean postCodeResult = false; } 4、配置类 import org.kie.api.KieBase; import org.kie.api.KieServices; import org.kie.api.builder.*; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.kie.internal.io.ResourceFactory; import org.kie.spring.KModuleBeanFactoryPostProcessor; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; import java.io.IOException; @Configuration public class DroolsAutoConfiguration { //rule的存放位置 private static final String RULES_PATH = "rules/"; @Bean @ConditionalOnMissingBean(KieFileSystem.class) public KieFileSystem kieFileSystem() throws IOException { KieFileSystem kieFileSystem = getKieServices().newKieFileSystem(); for (Resource file : getRuleFiles()) { String path = RULES_PATH + file.getFilename(); kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8")); } return kieFileSystem; } /** * 这里要引入 org.springframework.core.io.Resource 包 * * @return * @throws IOException */ private Resource[] getRuleFiles() throws IOException { ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); return resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*"); } @Bean @ConditionalOnMissingBean(KieContainer.class) public KieContainer kieContainer() throws IOException { final KieRepository kieRepository = getKieServices().getRepository(); kieRepository.addKieModule(new KieModule() { public ReleaseId getReleaseId() { return kieRepository.getDefaultReleaseId(); } }); KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem()); kieBuilder.buildAll(); return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId()); } private KieServices getKieServices() { return KieServices.Factory.get(); } @Bean @ConditionalOnMissingBean(KieBase.class) public KieBase kieBase() throws IOException { return kieContainer().getKieBase(); } @Bean @ConditionalOnMissingBean(KieSession.class) public KieSession kieSession() throws IOException { return kieContainer().newKieSession(); } @Bean @ConditionalOnMissingBean(KModuleBeanFactoryPostProcessor.class) public KModuleBeanFactoryPostProcessor kiePostProcessor() { return new KModuleBeanFactoryPostProcessor(); } } 5、创建drools特有的xml <?xml version="1.0" encoding="UTF-8" ?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> <kbase name="rules" packages="mujiutian.rules"> <ksession name="ksession-rule"/> </kbase> </kmodule> 这个packages 要和下面的规则文件对应的名字一致,不然会报错。 6、编写drools规则 package mujiutian.rules; import com.mjt.drools.entity.Address; import com.mjt.drools.entity.AddressCheckResult; rule "Rules" when adress : Address(postCode != null,postCode matches "([0-9]{5})") checkResult: AddressCheckResult(); then checkResult.setPostCodeResult(true); System.out.println("规则中打印日志:校验通过"); end 这个package默认生成是static,要修改一些,不然会报错,同时要和上面xml中的内容一样才行,rule 后面加的"" 是描述内容,可以写任何内容。 7、编写controller层 import org.kie.api.runtime.KieSession; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping(value = "/drools") public class DroolsController { @Resource KieSession kieSession; @GetMapping(value = "/address") public void test1(){ Address address = new Address(); address.setPostCode("99425"); AddressCheckResult result = new AddressCheckResult(); kieSession.insert(address); kieSession.insert(result); int ruleFiredCount = kieSession.fireAllRules(); System.out.println("触发了"+ruleFiredCount+"条规则"); if (result.isPostCodeResult()){ System.out.println("规则校验通过"); } } } 8、运行测试 借鉴于:https://blog.csdn.net/qq_21383435/article/details/82873711 基本完全复制的代码,如果可以也可以进入他的博客专栏,感谢! ok~

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

在gin框架下集成UEditor富文本编辑器

gin-ueditor 在gin框架下使用UEditor富文本编辑器,实现各种上传功能 主要参考了jimmykuu/Go-UEditor和zxysilent/ueditor这两个项目 1.下载最新版本的 UEditor下载UEditor 选择一个版本下载(选择哪个版本不重要,都需要稍微修改)。这里选择最新的(1.4.3.3) PHP 版本, UTF-82.解压 解压到statics目录。解压后的目录结构 | + conf< | + controllers | + models | - static | - ueditor | + dialogs | + lang | - php config.json | + themes | + third-party index.html ueditor.all.js ueditor.all.min.js ueditor.config.job.js ueditor.config.js ueditor.parse.js ueditor.parse.min.js | + routes | + upload | + views 删除static/ueditor/php目录下所有扩展名为 .php的文件,并且将static/ueditor/php改名成static/ueditor/conf3.配置ueditor 修改ueditor.config.js,第 33行, serverUrl: "php/controller.php" 改成, serverUrl: "/demo/controller" //这个url必须和我们在routes.go里配置的router.Any("/demo/controller", controllers.Action)对应 其它的看代码里的注释吧 项目地址:http://git.oschina.net/ankexun/gin-ueditor

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

J2EE分布式架构集成阿里云OSS存储

服务接口定义 /** 文件上传 1:头像 2:显示图片 3:个人封面 :4:基础图片 @param request @param response @param uid 用户id @param userType 文件上传 1:头像 2:显示图片 3:个人封面 :4:基础图片 0:视频 @param files 上传的文件对象 @return @throws Exception */ @RequestMapping(value = "/upload/base64Code", method = RequestMethod.POST) public ResponseVO fileuploadBase64(@RequestBody JSONObject json, HttpServletRequest request, HttpServletResponse response) throws Exception { String uid = json.optString("uid"); String userType = json.optString("userType"); String base64Code = json.optString("base64Code"); String oldName = json.optString("oldName"); String suffix = json.optString("suffix"); //获取当前登陆用户 if(StringUtils.isEmpty(uid)){ return CloudResponseCode.buildEnumResponseVO(CloudResponseCode.USER_ID_NOT_NULL, null); } //上传文件新名字 String newName = String.valueOf(new Date().getTime()); String fileKey = CloudConstant.VITAL_USER_INFO_PATH + uid + "/" + newName + "." + suffix; AliyunUtils.getInstance().uploadByte(base64Code.getBytes(), fileKey); ...... ....... return CloudResponseCode.buildEnumResponseVO(CloudResponseCode.FILEUPLOAD_SUCCESS, obj); } oss utils封装 /** 上传byte数组 @param fileByte @param fileKey */ public void uploadByte(byte[] fileByte, String fileKey){ // 创建OSSClient实例 OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET); // 上传byte数组 ossClient.putObject(CloudConstant.BUCKET, fileKey, new ByteArrayInputStream(fileByte)); // 关闭client ossClient.shutdown(); } /** 上传文件流 @param inputStream @param fileKey */ public void uploadInputStream(InputStream inputStream, String fileKey){ // 创建OSSClient实例 OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET); // 上传文件流 ossClient.putObject(CloudConstant.BUCKET, fileKey, inputStream); // 关闭client ossClient.shutdown(); } /** 删除文件 @param fileKey */ public void deleteFile(String fileKey){ // 创建OSSClient实例 OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET); // 删除文件 ossClient.deleteObject(CloudConstant.BUCKET, fileKey); // 关闭client ossClient.shutdown(); } 界面效果

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

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部分的功能。

用户登录
用户注册