hero image

景兴春

轻松学技术,快乐每一天

微服务项目
记录博客中的代码项目,代码示例( •̀ ω •́ )✧
笔记本
记录一些常用代码的小例子🌰
知识点
一些概念性的知识点🧀芝士😋
JVM指令手册
JVM指令手册,٩(●˙ε˙●)۶
苹果内购-WWDC

苹果内购-WWDC

App Store Server API

苹果提供了以下这些 Server API

API简介


查询用户订单的收据

GET https://api.storekit.itunes.apple.com/inApps/v1/lookup/{orderId}

Jingxc大约 9 分钟payjava后端payjavaapplewwdc后端
google内购

google内购

google支付需要在服务端记录并验证订单,防止伪造订单,这里记录一下服务端校验订单

Google Pay主要支付流程:

相关信息

  • 手机端向Java服务端发起支付,生成预订单,给手机端返回生成的订单号
  • 手机端向Google发起支付(传入java服务端生成的订单号)
  • Google服务器将支付结果返回给手机端(因这边用到的是消耗型的产品,所以购买后必须要通知gp我已经消耗了这次交易)
  • 手机端向Java服务端发送校验请求,校验通过后即可处理订单(服务端重试校验,发货,保证订单正常发货成功)

Jingxc大约 14 分钟payjava后端payjavagoogle后端
短视频app

短视频app

一. 创建项目

1.1 前言


项目使用的工具:

  • MAC M1:苹果M1芯片笔记本
  • HBuilderX:用于app开发
  • IDEA:用于后端开发
  • PhpWebStudy:用于数据库,Redis,静态资源文件等控制

项目使用语言极其版本:

  • 后端:jdk1.8,mysql8,redis7.2.4
  • 前端:vue3,uts,uni-app x

特别说明

uni-app x,是下一代 uni-app,是一个跨平台应用开发引擎。

uni-app x 是一个庞大的工程,它包括uts语言、uvue渲染引擎、uni的组件和API、以及扩展机制。

uts是一门类ts的、跨平台的、新语言。uts在iOS端编译为swift、在Android端编译为kotlin、在Web端编译为js。

在Android平台,uni-app x 的工程被编译为kotlin代码,本质上是换了vue写法的原生kotlin应用,在性能上与原生kotlin一致。


Jingxc大约 4 分钟uni-appjavaappjavauni-appapp
Midjourney

Midjourney

1. Midjourney指令

指令 作用 指令 作用 指令 作用
/imagine 生成图像 /settings 查看机器人设置 /info 查看基本信息
/describe 描述图片信息 /relax 切换到relaxed模式 /fast 切换到fast模式
/blend 混合两个图像 /ask 提问(获得答案) /help 查看帮助信息
/stealth 切换到隐身模式 /public 切换到公共模式 /subscribe 查看/管理订阅
/prefer option set 创建一个自定义变量 /prefer suffix 指定要添加某个末尾的提示后缀 /prefer option list 列出之前设置的所有自定义变量
/show 结合任务ID生成原图片

Jingxc大约 4 分钟MidjourneyMidjourney
uni-app项目

uni-app项目

1. 开发软件安装

推荐:HBuilderX

安装文档:参照

2. 创建项目

按照官网提供的教程新建项目即可参照


Jingxc大约 4 分钟前端uni-app小程序前端templateh5小程序
Mybatis源码

Mybatis源码

1. 手写持久层框架思路

1.1 框架使用端(项目)


引入自定义持久层框架jar包

  • 创建SqlMapConfig.xml配置文件:数据库配置信息,(存放mapper.xml的路径地址)
  • 创建mapper.xml配置文件:存放sql信息,参数类型,返回值类型

1.2 框架本身


本质是对JDBC进行封装

  1. 加载配置文件

    • 创建Resources类,负责加载配置文件,加载成字节数入流,存放到内存中
    • 方法:InputStream getResourceAsStream(String path)
  2. 创建两个JavaBean(容器对象)

    • Configuration:全局配置类,存储sqlMapConfig.xml配置文件解析出来的内容
    • MappedStatement:映射配置类:存储mapper.xml配置文件解析出来的内容
  3. 解析配置文件,填充容器对象

    • 创建SqlSessionFactoryBuilder类
      • 方法:SqlSessionFactory
      • build(InputStream)(1)解析配置文件(dom4j+xpath)封装Configuration,(2) 创建SqlSessionFactory
  4. 创建SqlSessionFactory接口及DefaultSqlSessionFactory

    • 方法:SqlSession openSession() 工厂模式
  5. 创建SqlSession接口和DefaultSqlSession实现类

    • 方法:selectList()...
  6. 创建Executor接口和实现类SimpleExecutor

    • 方法:query(Configuration,MappedStatement,Object),执行底层JDBC代码(数据库和sql配置信息)

Jingxc大约 2 分钟mybatisjava后端javamybatis后端
ConcurrentHashMap

ConcurrentHashMap

1. 构造器

ConcurrentHashMap的构造器和HashMap的构造器基本相同

2. put方法

ConcurrentHashMap键或者值为空会抛出空指针异常,put方法开始先求取hash

final V putVal(K key, V value, boolean onlyIfAbsent) {
    if (key == null || value == null) throw new NullPointerException();
    int hash = spread(key.hashCode());
    ...
}

static final int spread(int h) {
    return (h ^ (h >>> 16)) & HASH_BITS;
}

Jingxc大约 8 分钟java后端ConcurrentHashMapjava后端
HashMap-02

HashMap-02

1. 构造器

HashMap在创建对象时,可的调用构造器有三种,无参构造器(常用),初始化容量大小,初始化容量和加载因子

初始化的时候,

  • 默认容量为16,static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
  • 默认最大容量为1<<30(高位符号位), static final int MAXIMUM_CAPACITY = 1 << 30;
  • 加载因子,static final float DEFAULT_LOAD_FACTOR = 0.75f;

Jingxc大约 6 分钟java后端HashMapjava后端
2
3
4
5