Commit on 2025/07/05 周六 14:52:46.52
This commit is contained in:
parent
2c71156c3c
commit
d8f67d93e9
100
后端笔记/安卓开发.md
Normal file
100
后端笔记/安卓开发.md
Normal file
@ -0,0 +1,100 @@
|
||||
# 安卓开发
|
||||
|
||||
## 导入功能模块心得
|
||||
|
||||
最近想在我的书城中增加一个阅读器的功能,难度颇高,因此在github上找到了一个封装了阅读器功能的项目,仅需获得文件本地存储地址,调用其提供的函数即可进行阅读。
|
||||
|
||||
**但是**,github介绍的使用方法并不总是有效,比如我就经常无法正确添加依赖
|
||||

|
||||
|
||||
|
||||
|
||||
因此,我将其项目代码拷贝到本地,手动集成。
|
||||
|
||||

|
||||
|
||||
依据项目结构,可以发现app是主项目,hwtxtreaderlib是功能模块,根据是这张图:
|
||||
|
||||

|
||||
|
||||
build.gradle(:app)中引入了hwtxtreaderlib的依赖,而app只是个demo测试模块,相当于演示了如果在自己的项目中引用hwtxtreaderlib。因此,手动步骤如下:
|
||||
|
||||
- 将hwtxtreaderlib复制到自己的项目文件夹中
|
||||
|
||||

|
||||
|
||||
- 在app的build.gradle中,添加依赖
|
||||
|
||||
```text
|
||||
implementation project(':hwtxtreaderlib')
|
||||
```
|
||||
|
||||
- 在settings.gradle中,设置项目包括的模块
|
||||
|
||||
```
|
||||
include ':app', ':hwtxtreaderlib'
|
||||
```
|
||||
|
||||
- syn now! 同步一下,然后android studio中项目结构变成如下图
|
||||
|
||||

|
||||
|
||||
- build没报错基本就稳了,然后就运行试试
|
||||
|
||||

|
||||
|
||||
这里可能AndroidManifest.xml报错,需要查看原项目中app模块如何编写的,做些适当的修改!我这里卡了很久.
|
||||
|
||||
|
||||
|
||||
有时候github项目会将项目的详细信息写在wiki中!!!
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 如何运行本项目?
|
||||
|
||||
用前须知:
|
||||
|
||||
1. 本项目需联网使用,数据存储在后端云Bmob中,目前续费日期到7.22日结束,之后可能会出现无法运行情况。
|
||||
2. 内置的阅读小助手调用了chatgpt,但是通过国内网站镜像,因此无须连接vpn,且密钥写在项目中了,无须额外配置,直接使用即可,额度有限,超额小助手会无法响应,但基本不会超额
|
||||
3. 可以注册用户,也可以直接使用账号:6462 密码:123 登录
|
||||
4. 如有问题,联系我的qq:3061033470
|
||||
|
||||
### 法一(推荐):
|
||||
|
||||
本项目已经打包成签名的发布版APK,可以直接在apk文件夹下找到app-release.apk,发送到安卓手机上下载安装(需要在设置上启用‘安装未知来源的应用’),打开app登录即可使用。效果如下:
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nq2rv5-0.jpg" style="zoom: 33%;" />
|
||||
**注意**:可能部分手机打开会出现颜色显示问题,目前未解决该问题
|
||||
|
||||
### 法二
|
||||
|
||||
**JianShu为项目文件,需要存放在无中文的路径中!!!**
|
||||
|
||||
1. 下载2022版本的android studio(老旧版本可能出现bug)
|
||||
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql4a1-0.png"/>
|
||||
|
||||
2. android studio内置各种安卓模拟机,需要首先打开Device Manager下载,建议下载Pixel 5 API30,下载模拟机可能耗时几分钟
|
||||
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql12j-0.png"/>
|
||||
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql2g4-0.png"/>
|
||||
<img src="D:\folder\study\whut\企业级WEB应用开发\Jianshu大作业报告\pic\屏幕截图 2024-05-22 164348.png"/>
|
||||
|
||||
3. 导入本项目,点击根目录
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql2p7-0.png"/>
|
||||
|
||||
4. Gradle会自动导入依赖,下载本项目所依赖的文件,若android studio右下角停止加载则说明项目导入成功,第一次加载时间可能比较长
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql39i-0.png"/>
|
||||
如果意外中断了,可以在Android Studio中,点击`File > Sync Project with Gradle Files`。
|
||||
|
||||
5. 运行项目,第一次运行会在模拟机上安卓该app
|
||||
|
||||
<img src="https://pic.bitday.top/i/2025/07/05/nql5t5-0.png"/>
|
||||
|
||||
6. 出现登录界面则成功
|
||||

|
44
后端笔记/本地记录.md
Normal file
44
后端笔记/本地记录.md
Normal file
@ -0,0 +1,44 @@
|
||||
# 技巧
|
||||
|
||||
## 修改git提交日期:
|
||||
|
||||
用git bash here打开,不要cmd终端。
|
||||
|
||||
1.先提交本地修改
|
||||
|
||||
2.git rebase -i --root =》然后将需要修改的pick改为edit
|
||||
|
||||
3.GIT_AUTHOR_DATE="2025-04-08T18:11:42" \
|
||||
GIT_COMMITTER_DATE="2025-04-08T18:11:42" \
|
||||
git commit --amend --no-edit --date "2025-04-08T18:11:42"
|
||||
|
||||
注意这两个时间都要设置,删掉--no-edit可以编辑commit信息。
|
||||
|
||||
4.git rebase --continue 继续编辑下一个提交记录
|
||||
|
||||
5.git push --force origin master 提交修改到远程。
|
||||
|
||||
|
||||
|
||||
git rebase --abort 如果中途不想修改了,可以退出操作
|
||||
|
||||
git log --pretty=fuller -1 ,查看AuthorDate和CommitDate是否一致。
|
||||
|
||||
|
||||
|
||||
编辑远程Gitea中的活动记录
|
||||
|
||||
docker exec -it gitea bash
|
||||
sqlite3 /data/gitea/gitea.db
|
||||
|
||||
SELECT id, name, created_unix FROM repository WHERE name = '你的仓库名'; =>获得仓库的id
|
||||
SELECT id, repo_id, created_unix FROM action where repo_id=19; =>获得该仓库的所有action
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
82
自学/test.md
82
自学/test.md
@ -1,82 +0,0 @@
|
||||
```c
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
# 
|
||||
|
||||
# 一级标题:# xx
|
||||
|
||||
## 二级标题:## xx
|
||||
|
||||
无序列表:- xx
|
||||
|
||||
- 1
|
||||
- 2
|
||||
|
||||
有序列表:1. xx
|
||||
|
||||
1. first
|
||||
2. second
|
||||
|
||||
任务列表:- [ ] xx
|
||||
|
||||
- [ ] xx
|
||||
- [ ] xxx
|
||||
|
||||
斜体:星号xx星号
|
||||
|
||||
*斜体*
|
||||
加粗:星号星号xx星号星号
|
||||
|
||||
**加粗**
|
||||
|
||||
删除:波浪线波浪线xx波浪线波浪线
|
||||
|
||||
~~删除~~
|
||||
|
||||
---
|
||||
|
||||
分割线:---
|
||||
$$
|
||||
\frac{\partial f}{\partial x}=2\sqrt{a}x
|
||||
$$
|
||||
注释:<!--ww1w1-->
|
||||
|
||||
[百度](www.baidu.com "一个搜索引擎")
|
||||
|
||||
[谷歌][id]
|
||||
|
||||
[id]: google.com ""谷歌""
|
||||
|
||||
[请参考标题一](#一级标题:# xx )
|
||||
|
||||
![ww]()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
52
自学/安卓开发.md
52
自学/安卓开发.md
@ -1,52 +0,0 @@
|
||||
# 安卓开发
|
||||
|
||||
## 导入功能模块心得
|
||||
|
||||
最近想在我的书城中开发一下阅读器的功能,难度颇高,因此在github上找到了一个封装了阅读器功能的项目,仅需获得文件本地存储地址,调用其提供的函数即可进行阅读。
|
||||
|
||||
**但是**,github介绍的使用方法并不总是有效,比如我就经常无法正确添加依赖
|
||||

|
||||
|
||||
|
||||
|
||||
因此,我将其项目代码拷贝到本地,手动集成。
|
||||
|
||||

|
||||
|
||||
依据项目结构,可以发现app是主项目,hwtxtreaderlib是功能模块,根据是这张图:
|
||||
|
||||

|
||||
|
||||
build.gradle(:app)中引入了hwtxtreaderlib的依赖,而app只是个demo测试模块,相当于演示了如果在自己的项目中引用hwtxtreaderlib。因此,手动步骤如下:
|
||||
|
||||
- 将hwtxtreaderlib复制到自己的项目文件夹中
|
||||
|
||||

|
||||
|
||||
- 在app的build.gradle中,添加依赖
|
||||
|
||||
```text
|
||||
implementation project(':hwtxtreaderlib')
|
||||
```
|
||||
|
||||
- 在settings.gradle中,设置项目包括的模块
|
||||
|
||||
```
|
||||
include ':app', ':hwtxtreaderlib'
|
||||
```
|
||||
|
||||
- syn now! 同步一下,然后android studio中项目结构变成如下图
|
||||
|
||||

|
||||
|
||||
- build没报错基本就稳了,然后就运行试试
|
||||
|
||||

|
||||
|
||||
这里可能AndroidManifest.xml报错,需要查看原项目中app模块如何编写的,做些适当的修改!我这里卡了很久.
|
||||
|
||||
|
||||
|
||||
**非常重要!!!**有时候github项目会将项目的详细信息写在wiki中!!!
|
||||
|
||||

|
@ -877,7 +877,7 @@ public class MyFeature {
|
||||
|
||||
- 扫描带 `@DCCValue` 的字段;
|
||||
- 拼出完整 Redis Key(如 `dcc_prefix_key`),若不存在则写入默认值,否则读最新值;
|
||||
- 反射把值注入到该 Bean 的私有字段;
|
||||
- **反射把值注入到该 Bean 的私有字段**;
|
||||
- 将 `(redisKey → Bean 实例)` 记录到内存映射,用于后续热更新。
|
||||
|
||||
```java
|
||||
@ -940,3 +940,83 @@ public Object postProcessAfterInitialization(Object bean, String name) {
|
||||
|
||||
|
||||
|
||||
### HTTP客戶端框架
|
||||
|
||||
**引入依赖**
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp-sse</artifactId>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
**让Spring 管理 Http客户端**
|
||||
|
||||
- 写配置类
|
||||
|
||||
```java
|
||||
@Configuration
|
||||
public class OKHttpClientConfig {
|
||||
|
||||
@Bean
|
||||
public OkHttpClient httpClient() {
|
||||
return new OkHttpClient();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- 在需要使用的地方注入
|
||||
|
||||
```java
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class HttpService {
|
||||
|
||||
private final OkHttpClient okHttpClient;
|
||||
|
||||
/**
|
||||
* 发送 JSON POST 请求并返回响应内容
|
||||
*
|
||||
* @param apiUrl 接口地址
|
||||
* @param jsonPayload 请求体 JSON 字符串
|
||||
*/
|
||||
public String postJson(String apiUrl, String jsonPayload) throws IOException {
|
||||
//1.构建参数
|
||||
MediaType mediaType = MediaType.get("application/json; charset=utf-8");
|
||||
RequestBody body = RequestBody.create(jsonPayload, mediaType);
|
||||
Request request = new Request.Builder()
|
||||
.url(apiUrl)
|
||||
.post(body)
|
||||
.addHeader("Content-Type", "application/json")
|
||||
.build();
|
||||
//2.调用接口
|
||||
try (Response response = okHttpClient.newCall(request).execute()) {
|
||||
if (!response.isSuccessful()) {
|
||||
log.error("HTTP 请求失败,URL:{},状态码:{}", apiUrl, response.code());
|
||||
throw new IOException("Unexpected HTTP code " + response.code());
|
||||
}
|
||||
ResponseBody responseBody = response.body();
|
||||
return responseBody != null ? responseBody.string() : "";
|
||||
} catch (IOException e) {
|
||||
log.error("调用 HTTP 接口异常:{}", apiUrl, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- 优点:
|
||||
|
||||
单例复用,性能更优
|
||||
|
||||
- Spring 默认将 Bean 作为单例管理,整个应用只创建一次 `OkHttpClient`。
|
||||
- 内部的连接池、线程池、缓存等资源可以被复用,**避免频繁创建、销毁**带来的开销。
|
||||
|
||||
统一配置,易于维护
|
||||
|
||||
- 超时、拦截器、连接池、SSL、日志等配置集中在一个地方,改动一次全局生效。
|
||||
- 避免在代码各处手动 `new OkHttpClient()`、重复配置。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user