即使如此车轮依旧在转动——番外——一封放在自行车篮里的信
妹妹12岁生日到了,给她买了辆捷安特的自行车,也写了一封信放在车包里,她花三分钟看完评价“哈哈,我好聪慧”后把信扔在一旁,就又跑去做贝果了,真是哭笑不得,不过这种反应也在我意料之中,也许给小孩写信只是 …
妹妹12岁生日到了,给她买了辆捷安特的自行车,也写了一封信放在车包里,她花三分钟看完评价“哈哈,我好聪慧”后把信扔在一旁,就又跑去做贝果了,真是哭笑不得,不过这种反应也在我意料之中,也许给小孩写信只是 …
核心的工具其实还是 grep
命令,下面我将分场景给你讲讲我的实战经验,保证你能直接套用!
Java 异常堆栈通常都是多行的,仅仅用 grep "NullPointerException"
只能看到最上面那一行,问题根源在哪你压根找不到。
这时候使用 grep
的 -A
(After) 参数来显示匹配行之后的 N 行。
# 查找 NullPointerException,并显示后面 50 行
grep -A 50 "java.lang.NullPointerException" a.log
如果你发现异常太多,屏幕一闪而过,也可以用 less
加上分页查看:
grep -A 50 "java.lang.NullPointerException" a.log | less
在 less
视图中,你可以:
使用 箭头↑↓ 或 Page Up/Down 键来上下滚动
输入 G
直接翻到末尾,方便快速查看最新的日志
输入 /Exception
继续搜索
按 q
键退出
这样你就能 第一时间拿到完整异常上下文信息,告别反复 vi
+ /
的低效操作!
如果你的应用正在运行,并且你怀疑它会随时抛出异常,你可以实时监控日志文件的增长。
使用 tail -f
结合 grep
:
# 实时监控 a.log 文件的新增内容,并只显示包含 "java.lang.NullPointerException" 的行及其后50行
tail -f a.log | grep -A 50 "java.lang.NullPointerException"
只要异常一出现,它就会自动打出来,堆栈信息也一并送到你面前!
想停下?Ctrl + C
想更准确?加 -i
忽略大小写,防止大小写拼错找不到
服务器上的日志一般都会按天或按大小分割并压缩,变成 .log.2025-07-02.gz
这种格式,查找这些文件的异常信息怎么办?
.log
文件:# 在当前目录下查找所有以 .log 结尾的文件,-H 参数可以顺便打印出文件名
grep -H -A 50 "java.lang.NullPointerException" *.log
其中 -H
会帮你打印出 是哪个文件 中出现的问题,防止你找完还不知道是哪天的事。
.gz
文件(压缩日志):zgrep -H -A 50 "java.lang.NullPointerException" *.gz
zgrep
是专门处理 .gz
的 grep
,它的功能和 grep
完全一样,无需手动解压,直接开整!
有时候你需要知道某个异常到底出现了多少次,是偶发还是成灾,使用 grep -c
(count):
grep -c "java.lang.NullPointerException" a.log
如果你要统计所有日志里的数量:
grep -c "java.lang.NullPointerException" *.log
参数 | 作用 |
---|---|
-B N |
匹配行之前的 N 行(Before) |
-A N |
匹配行之后的 N 行(After) |
-C N |
匹配行上下共 N 行(Context) |
-i |
忽略大小写 |
-H |
显示匹配的文件名 |
-r |
递归搜索目录下所有文件 |
比如:
grep -C 25 "java.lang.NullPointerException" a.log
这个命令就能让你一眼看到异常前后的上下文,帮助定位代码逻辑是不是哪里先出问题了。
月初就回老家了,最近半年几乎每隔一月就带着苗姐回去住半月,孩子大了,真的不好带,不像以前给个玩具就能自己玩半天,现在特别磨人,从早晨醒来,一直缠着爸爸到晚上睡觉,一天要哭十几次,我想她是到第一个叛逆期了。
没有好看的配图,用老家的「大肉面」做配图吧,百闻不如一见,大,肉,面…
这个月想更博客的念头有不下五六次,每次都是因为小x要用我的鼠标,我又不想用笔记本的触控板而放鸽子,他收拾行李不够仔细,自己鼠标没带,天天霸占着我的鼠标玩游戏,我也不知道他玩的啥。
在老家的日子过得挺快的,明天约了大姐家的两个外甥一起去漂流,全程8公里,用时2个半小时。
好了,七月准备拜拜了,八月再见吧。哦,配图是我们在路边捡的小狗,还没取名呢,不知道叫啥。
空调在东北不是每家人的必备电器,甚至以前上班时公司也没有,所以往年夏天都是靠风扇避暑,一般热的时间也就两个月左右,我也就是曾在福建上班那年享受过空调...
但今年实在是热,我妈劝我让我给自己装一台空调,其实有个小悖论,我不装她不舍得给自己装,她那边不装我也不好意思给自己装,所以我就先买了台给父母那边装上,然后再给自己买了台装上。
想着买京东自营的统帅来着,结果显示xx号到货,时间太久了,我最初以为华凌是杂牌来着,后来看到网上评论区有人吹华凌,我才去了解了下,原来是美的的子品牌,华凌非京东自营的【但是用京东物流】说是次日就能到货,于是乎就买了它,然后中途延后了两次说是京东爆仓,拖了四五天才到,第二天安装师傅到位,开始安装,一切都很顺利,空调也没毛病,但...
但到了下午,邻居上门,说安装的空调外机离他家窗户太近了,有声音影响他睡眠,让我们挪走...于是乎又约师傅移空调外机,因为这段时间按空调的比较忙,所以过了好几天才去给移机...
费用方面:空调本体1673元,打孔60元,空调外机支架我自己买的39元,空调外机支架膨胀螺丝20元(师傅提供的,因为我买的那个螺丝太小),空调移机150元,移机后也需要重买膨胀螺丝20元,空调铜管加长1米100元。
邻居一句话多花270元,大家以后按空调如果靠近邻居最好提前问问...
然后就是安排我自己家的空调了,想着不能买同一个牌子,就买了统帅,依旧是京东自营无货,买的第三方的,物流也不是京东的,等了两三天到货,次日师傅上门安装,我这个很顺利,一切安好...
费用方面:空调本体1699元,空调外机支架我自己买的30元,空调外机支架膨胀螺丝20元(师傅提供的,因为我买的那个螺丝太小)
两台空调都是一级能耗,我只看了我自己这边,大概每天3~5度电的样子,尝试有一天开满24小时不到6度电,最近室外温度不是特别高,后面天气再热一些应该会更费电一点。
后悔,十分后悔,后悔没早点装😄...
《将饮茶》是杨绛(1911-2016)的散文作品集,书中回忆自己的父亲,三姑母,记钱钟书和《围城》等,在讲述时也穿插记录了自己的成长经历。这也是继高诵芬《山居杂记》、杨步伟《一个女人的自传》等之后,看过的另一本记录那个时期女性成长、描写父亲形象等内容的书。
据书中介绍,杨父荫杭(1878-1945)先生1895年考入北洋大学堂,1897年转入南洋公学,1899年由南洋公学派送日本留学,卒业早稻田大学。他回国后因鼓吹革命,清廷通缉,筹款再度出国,先回日本早稻田读得学位,又赴美留学。她笔下的父亲是儒雅、刚直、开明的,“从不疾言厉色”,重视子女教育,对学问态度严谨,注重实证与逻辑。他既有知识分子的风骨,看重名节,清廉自守,厌恶官场腐败,曾经做过京师高等审判厅厅长、江苏省高等审判厅厅长等职务,因不愿同流合污而辞官,拒绝利用人脉谋利,对“说情”之事反感,又有从容处世的态度,在动荡年代、经济窘迫时保持着乐观豁达。
杨绛是其父留美回国后生的第四个女儿,受家庭氛围影响和中西文化融汇,毕业于东吴大学,清华大学研究生院肄业。1935年与钱锺书结婚后共赴英国、法国留学。1938年秋回国,曾任上海震旦女子文理学院、清华大学外语系教授。1952年调入北京大学文学研究所,后任中国社会科学院外国文学研究所研究员。看过不同的人生经历,越来越明显感受到高收入精英家庭可以获得更高质的教育资源,从小在家庭环境中耳濡目染的语言表达、思维方式、行为习惯等也更胜一筹。普通家庭通过极端努力获得高分,在生活和工作中也会时不时暴露出综合能力与认知匮乏。个人受教育情况与职业发展,和家族积累的经济资本、社会资本与文化资本等密切相关。当学历红利逐渐消失,经济下行压力增大,如今考上大学也仅仅是获得学历而已,难以突破世代积累的阶层壁垒。回想2008年毕业投递简历时,用人单位都在挑选985和211,二本、三本和专科在他们眼中没有太多区别。以前自己读书时焦虑,现在又焦虑孩子考学和就业。“仅靠个人努力学习十年,怎能比得上别人三代人的托举?”“学习改变命运”“付出就有(好的)回报”“一分耕耘一分收获”等传统观念,已不是万能公式。
书中《丙午丁末年纪事》一篇,以“陪斗者”的经历记录特殊时期,有被批斗、挂牌子、戴高帽、抽鞭子、扫厕所、剃阴阳头、抄家(部分)、停发工资、只准吃咸菜土豆窝窝头、被赶下公交车等生活细节。杨绛在书中引用西方成语“每一朵乌云都有一道银边”,表示能调节心态适应“颠倒过来”的生活,保持着尊严(如自制假发)和精神独立,也能体会到意想不到的妙处,还提到身边有着一群“披着狼皮的羊”在暗中关照他们。她的另一本书《干校六记》讲的是夫妻两人60岁到河南息县下放劳动,因年岁大身体不好,干些轻易的活儿。总体来说,感觉没有《秋园》描写的那段时间他们一家所受的苦难深重,没有过多饱受饥寒和精神上的折磨。这部分内容的描写,感觉比较生活化和贴近实际,看过后也消解了一些我在看过《洗澡》《洗澡之后》因观念不和的反感心理。
在看书的过程中,不由想起十多年前看的《我们仨》,当时还没有太多感触。如今自己年近40岁,粗算下能够生活自理的时间也逝去一半,特别是今年春节前后身边几位亲戚、同事接连离世或重病,触动很深,有一种世事无常的感觉。人不是年老才会死,有时忽然就去世了。杨绛的丈夫和独生女都先她而去,女婿在批斗中自杀去世,最后一人终老。以前年轻时不相信命运,当时仅简单认为走什么人生道路,都是努力和选择的结果。如今再想,感觉万事皆有命数。现实中并不是所有事情都有正确答案,并非所有结论都能还原事件本身,往往不是非黑即白非对即错,人与人也不是非善即恶非友即敌,随着利益关系改变也会发生变化。以前把工作看的太重,后来在乌烟瘴气的氛围中开始躺平,想明白了上班的目的就是赚钱,停止内耗,改变学生思维,不要去在意别人的评价,不需要背负着超过职级范围的使命感责任心,日常工作留痕,提防被挖坑背锅,用心享受和体验当下生活,保持身心健康,期盼领取退休金的日子。
“我们曾如此渴望命运的波澜,到最后才发现,人生最曼妙的风景,竟是内心的淡定与从容。我们曾如此期盼外界的认可,到最后才知道,世界是自己的,与他人毫无关系”。《将饮茶》这本书,像是一位老者坐在藤椅上,手捧一杯清茶,和读者回忆着过往云烟,茶香氤氲间,透露出历经沧桑后的从容和淡泊。人生如茶,初尝苦涩,回味甘甜,最后归于平淡。以平常心对待不平常事,用淡泊情看尽世间情。杨绛已经饮尽了她那杯茶,通过文字记载,留给读着饮下“生活”这杯茶的方法。
description: globs:
这是一个规则文件,用于帮助 AI 理解您的代码库和遵循项目约定。
X199508是一个基于Spring Boot 3.3.10 + Java 21的多模块微服务架构项目,采用DDD(领域驱动设计)分层架构模式。
后端技术栈: - 后端框架: Spring Boot 3.3.10 - Java版本: Java 21 - 数据库: MySQL + MyBatis-Plus - 缓存: Redis + Lettuce - 认证: Sa-Token - 文档: Knife4j (Swagger) - 构建工具: Maven - 日志: Logback
前端技术栈: - 前端框架: Vue 3.5.13 - 开发语言: TypeScript 5.6.3 - UI组件库: Element Plus 2.9.0 - 状态管理: Pinia 2.3.0 - 路由管理: Vue Router 4.5.0 - 构建工具: Vite 6.0.3 - 包管理器: pnpm >=9 - CSS框架: TailwindCSS 3.4.16 - HTTP客户端: Axios 1.7.9
x199508/
├── api/ # Web层 - HTTP接口暴露
├── core/ # 核心层 - 通用响应、异常处理、工具类
├── auth/ # 认证授权模块 - 用户、管理员相关业务
├── common/ # 公共模块
│ ├── constant/ # 常量定义
│ ├── mybatis-plus/ # MyBatis-Plus配置
│ └── redis/ # Redis配置
└── web/ # 前端项目 - Vue3 + TypeScript + Element Plus
├── src/ # 源代码目录
│ ├── api/ # API接口定义
│ ├── components/ # 公共组件
│ ├── views/ # 页面视图
│ ├── utils/ # 工具函数
│ └── store/ # 状态管理
├── build/ # 构建配置
└── types/ # TypeScript类型定义
这是一个规则文件,用于帮助 AI 理解您的代码库和遵循项目约定。
X199508是一个基于Spring Boot 3.3.10 + Java 21的多模块微服务架构项目,采用DDD(领域驱动设计)分层架构模式。
com.x199508.{模块名}.{分层}
分层结构:
- controller
- 控制器层
- service
- 业务服务层
- model
- 数据模型层
- entity
- 实体类
- mapper
- 数据访问层
- req
- 请求参数类
- resp
- 响应参数类
- dto
- 数据传输对象
- config
- 配置类
- utils
- 工具类
类型 | 命名规则 | 示例 |
---|---|---|
Controller | 以Controller结尾 | AuthController |
Service | 业务服务以Service结尾 | AdminService |
DAO Service | 数据访问服务以DaoService结尾 | AdminDaoService |
Entity | 使用名词 | Admin , User |
DTO | 以DTO结尾 | LoginDTO , LoginResultDTO |
Request | 以Req结尾 | AdminPageReq |
Response | 以Resp结尾 | AdminPageResp |
操作类型 | 命名规则 | 示例 |
---|---|---|
Controller方法 | 使用动词 | login , userInfo , logout |
Service方法 | 动词+名词 | userLoginInfo , getUserId |
查询方法 | get/find/query开头 | getUserById , findUserList |
新增方法 | add/create/save开头 | addUser , createAdmin |
修改方法 | update/modify/edit开头 | updateUser , modifyStatus |
删除方法 | delete/remove开头 | deleteUser , removeAdmin |
@Tag(name = "模块名称")
@RestController
@RequestMapping(value = "模块路径")
@RequiredArgsConstructor
public class XxxController {
private final XxxService xxxService;
@PostMapping("action")
@Operation(summary = "操作描述")
public R<ResponseType> action(@Validated @RequestBody RequestType request) {
return R.ok(xxxService.action(request));
}
}
强制要求:
- 必须使用 @Tag
注解标注模块名称
- 必须使用 @RequiredArgsConstructor
进行依赖注入
- 禁止使用 @Autowired
- 统一使用 R<T>
作为响应包装类
- 请求参数必须使用 @Validated
进行校验
- 必须使用 @Operation
注解描述接口功能
@Service
@RequiredArgsConstructor
public class XxxService {
private final XxxDaoService xxxDaoService;
public ResponseDTO businessMethod(RequestDTO request) {
// 1. 参数校验
// 2. 业务逻辑处理
// 3. 数据持久化
// 4. 返回结果
}
}
强制要求: - 业务服务层只处理业务逻辑,不直接操作数据库 - 必须通过DaoService进行数据访问 - 方法内部按照:校验→处理→持久化→返回的顺序组织代码
@Data
public class XxxEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
@TableLogic(value = "null", delval = "now()")
private LocalDateTime deletedDate;
private Long creator;
private Long editor;
private LocalDateTime createDate;
private LocalDateTime updateDate;
}
强制要求:
- 必须实现 Serializable
接口
- 主键使用 @TableId(type = IdType.AUTO)
- 逻辑删除使用 @TableLogic
注解
- 统一包含审计字段:creator、editor、createDate、updateDate、deletedDate
public class R<T> {
private int code; // 响应码
private String msg; // 响应消息
private T body; // 响应数据
}
使用规范:
- 成功响应: R.ok()
或 R.ok(data)
- 错误响应: R.error(msg)
或 R.error(code, msg)
- 参数错误: R.invalidParamError(msg)
- 未找到: R.notFound(msg)
- 认证错误: R.tokenError(msg)
ToastException
: 业务异常,用于用户友好提示AuthException
: 认证授权异常使用 @ControllerAdvice
统一处理异常,返回标准的错误响应格式。
sys_admin
, sys_user
id
,类型为 BIGINT
,自增所有表必须包含以下审计字段:
- creator
- 创建人ID (BIGINT)
- editor
- 修改人ID (BIGINT)
- create_date
- 创建时间 (DATETIME)
- update_date
- 修改时间 (DATETIME)
- deleted_date
- 删除时间 (DATETIME, 逻辑删除)
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
xxxxxxxxxxxx
random-32
AuthService.getUserId()
获取当前用户IDAuthException
使用AOP统一记录请求日志,包含: - 请求URL - 请求参数 - 响应结果 - 执行时间 - 客户端IP
注意: 敏感信息(如密码)不能记录到日志中
should_期望结果_when_测试条件
application.yaml
- 主配置文件application-dev.yaml
- 开发环境配置application-prod.yaml
- 生产环境配置敏感信息使用环境变量注入:
spring:
datasource:
url: ${spring.datasource.url}
username: ${spring.datasource.service}
password: ${spring.datasource.password}
SELECT *
clean install -DskipTests -T 12
spring.profiles.active=dev
spring.profiles.active=prod
web/
├── src/
│ ├── api/ # API接口定义
│ │ ├── auth.ts # 认证相关接口
│ │ ├── user.ts # 用户相关接口
│ │ ├── utils.ts # API工具函数
│ │ └── types/ # 接口类型定义
│ ├── components/ # 公共组件
│ ├── views/ # 页面视图
│ │ ├── login/ # 登录页面
│ │ ├── system/ # 系统管理模块
│ │ │ ├── hooks.ts # 系统模块公共hooks
│ │ │ └── role/ # 角色管理
│ │ │ ├── index.vue # 角色列表页面
│ │ │ ├── form.vue # 角色表单页面
│ │ │ └── utils/ # 角色管理工具
│ │ │ ├── hook.tsx # 业务逻辑hooks
│ │ │ ├── types.ts # 类型定义
│ │ │ └── rule.ts # 表单验证规则
│ │ ├── permission/ # 权限管理模块
│ │ ├── error/ # 错误页面
│ │ └── welcome/ # 欢迎页面
│ ├── utils/ # 工具函数
│ │ ├── http/ # HTTP请求封装
│ │ └── auth.ts # 认证工具
│ ├── store/ # Pinia状态管理
│ ├── router/ # 路由配置
│ └── style/ # 样式文件
├── types/ # 全局类型定义
└── build/ # 构建配置
user-list.vue
UserList
userName
API_BASE_URL
IUserInfo
// API接口定义模板
export const getUserList = (data?: object) => {
return http.request<IBaseResponse<IUserInfo[]>>("post", apiUrl("/admin/user/list"), {
data
});
};
// API工具函数
export const apiUrl = (url: string) =>
process.env.NODE_ENV === "development" ? `/api${url}` : `${baseApiUrl}${url}`;
强制要求:
- 所有API接口必须定义返回类型
- 使用统一的IBaseResponse<T>
响应格式
- API路径必须使用apiUrl()
函数包装,支持开发环境代理
- 请求方法必须明确指定(get、post等)
- 开发环境使用/api
前缀进行代理转发
<template>
<div class="main">
<!-- 搜索表单 -->
<el-form
ref="formRef"
:inline="true"
:model="form"
class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto"
>
<!-- 搜索条件 -->
</el-form>
<!-- 表格内容 -->
<div ref="contentRef" :class="['flex', deviceDetection() ? 'flex-wrap' : '']">
<PureTableBar title="页面标题" :columns="columns" @refresh="onSearch">
<template #buttons>
<el-button type="primary" @click="openDialog()">新增</el-button>
</template>
<template v-slot="{ size, dynamicColumns }">
<pure-table
ref="tableRef"
:data="dataList"
:columns="dynamicColumns"
:pagination="pagination"
>
<template #operation="{ row }">
<!-- 操作按钮 -->
</template>
</pure-table>
</template>
</PureTableBar>
</div>
</div>
</template>
<script setup lang="ts">
import { useHook } from "./utils/hook";
defineOptions({
name: "PageName" // 必须定义组件名称
});
// 使用自定义hook处理业务逻辑
const {
form,
loading,
columns,
dataList,
pagination,
onSearch,
resetForm,
openDialog
} = useHook();
</script>
// utils/hook.tsx
export function useHook() {
const form = reactive({
name: "",
status: ""
});
const dataList = ref([]);
const loading = ref(false);
// 表格列定义
const columns: TableColumnList = [
{
label: "序号",
type: "index",
width: 70
},
{
label: "名称",
prop: "name"
},
{
label: "操作",
fixed: "right",
slot: "operation"
}
];
// 分页配置
const pagination = reactive<PaginationProps>({
total: 0,
pageSize: 10,
currentPage: 1,
background: true
});
// 搜索方法
const onSearch = async () => {
loading.value = true;
try {
// API调用逻辑
} finally {
loading.value = false;
}
};
return {
form,
loading,
columns,
dataList,
pagination,
onSearch
};
}
强制要求:
- 必须使用<script setup>
语法和defineOptions
定义组件名
- 复杂业务逻辑必须抽离到独立的hook文件中
- 表格组件必须使用PureTableBar
和pure-table
- 搜索表单必须使用统一的样式类名
- 必须使用TypeScript进行类型约束
// store模板
import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {
state: () => ({
userInfo: null as IUserInfo | null,
token: ''
}),
getters: {
isLoggedIn: (state) => !!state.token
},
actions: {
async login(loginData: ILoginData) {
// 登录逻辑
}
}
});
http
实例// 路由配置模板
{
path: '/user',
name: 'User',
component: () => import('@/views/user/index.vue'),
meta: {
title: '用户管理',
requiresAuth: true
}
}
// 统一响应格式
export interface IBaseResponse<T = any> {
code?: number;
msg?: string;
body: T;
}
// 分页响应格式
export type IListResponse<T> = { records: T[] } & IPagination;
interface IPagination {
size: number;
total: number;
current: number;
pages: number;
}
// 页面表单类型定义规范
interface FormItemProps {
/** 字段名称 */
name: string;
/** 字段编码 */
code: string;
/** 备注信息 */
remark: string;
}
interface FormProps {
formInline: FormItemProps;
}
// 用户信息类型
export type UserResult = {
success: boolean;
data: {
avatar: string;
username: string;
nickname: string;
roles: Array<string>;
permissions: Array<string>;
accessToken: string;
refreshToken: string;
expires: Date;
};
};
类型定义规范:
- 接口字段必须添加JSDoc注释说明
- 复杂类型必须拆分为多个接口
- 表单相关类型统一使用FormItemProps
和FormProps
命名
- API响应类型必须明确定义success和data结构
src/style/
目录# 开发环境
pnpm dev
# 构建生产环境
pnpm build
# 构建预发布环境
pnpm build:staging
环境配置:
- 开发环境: .env.development
- 生产环境: .env.production
- 预发布环境: .env.staging
src/views/system/
├── hooks.ts # 系统模块公共hooks
├── role/ # 角色管理
│ ├── index.vue # 列表页面
│ ├── form.vue # 表单页面
│ └── utils/ # 工具文件
│ ├── hook.tsx # 业务逻辑
│ ├── types.ts # 类型定义
│ └── rule.ts # 验证规则
└── user/ # 用户管理(类似结构)
// system/hooks.ts
export function usePublicHooks() {
const { isDark } = useDark();
// 开关样式
const switchStyle = computed(() => ({
"--el-switch-on-color": "#6abe39",
"--el-switch-off-color": "#e84749"
}));
// 标签样式
const tagStyle = computed(() => (status: number) => ({
"--el-tag-text-color": status === 1 ? "#389e0d" : "#cf1322",
"--el-tag-bg-color": status === 1 ? "#f6ffed" : "#fff1f0"
}));
return { isDark, switchStyle, tagStyle };
}
<template #operation="{ row }">
<el-button link type="primary" @click="openDialog('修改', row)">
修改
</el-button>
<el-popconfirm :title="`确认删除${row.name}?`" @confirm="handleDelete(row)">
<template #reference>
<el-button link type="primary">删除</el-button>
</template>
</el-popconfirm>
<el-button link type="primary" @click="handlePermission(row)">
权限
</el-button>
</template>
<!-- 权限设置侧边栏 -->
<div v-if="isShow" class="permission-panel">
<div class="panel-header">
<div class="action-buttons">
<IconifyIconOffline :icon="Close" @click="handleClose" />
<IconifyIconOffline :icon="Check" @click="handleSave" />
</div>
<p class="panel-title">菜单权限({{ curRow?.name }})</p>
</div>
<el-input v-model="treeSearchValue" placeholder="搜索菜单" />
<div class="tree-controls">
<el-checkbox v-model="isExpandAll" label="展开/折叠" />
<el-checkbox v-model="isSelectAll" label="全选/全不选" />
<el-checkbox v-model="isLinkage" label="父子联动" />
</div>
<el-tree-v2
ref="treeRef"
show-checkbox
:data="treeData"
:check-strictly="!isLinkage"
:filter-method="filterMethod"
/>
</div>
R<T>
格式IBaseResponse<T>
接收/api
-> http://127.0.0.1:19900
pure-table
组件PureTableBar
组件useRenderIcon
函数渲染el-popconfirm
组件// 搜索表单样式
.search-form {
@apply bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto;
:deep(.el-form-item) {
margin-bottom: 12px;
}
}
// 主内容区域
.main {
// 主要内容样式
}
// 权限面板样式
.permission-panel {
@apply min-w-[calc(100vw-60vw-268px)] w-full mt-2 px-2 pb-2 bg-bg_color ml-2 overflow-auto;
}
deviceDetection()
判断设备类型flex-wrap
布局// vite.config.ts
server: {
port: VITE_PORT,
host: "0.0.0.0",
proxy: {
"/api": {
target: "http://127.0.0.1:19900",
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, "")
}
}
}
# .env.development
VITE_API_URL=http://127.0.0.1:19900
VITE_PORT=3000
# .env.production
VITE_API_URL=https://api.production.com
重要: 以上所有规则都是强制性的,在生成或修改代码时必须严格遵守,确保代码质量和项目的可维护性。
第一步提示词:
API设计: 设计RESTful风格的接口规范
开发实现
前端开发: 实现基于Vue/React的管理界面
后端开发: 实现基于Spring/Node.js的后端服务
权限控制: 实现细粒度的权限拦截机制
系统分析
代码审查: 分析现有代码结构和扩展点
集成方案: 设计与现有系统的无缝集成方案
保证安全性: 所有接口必须经过严格权限验证
行为准则:
兼容现有系统: 充分利用已有admin和user表结构
清晰文档: 提供完整的API文档和数据库设计文档
代码规范: 遵循团队统一的代码风格和命名规范
限制条件:
不修改现有登录功能: 保持现有认证机制不变
不重复造轮子: 复用已有基础组件和工具类
性能约束: 确保权限检查不影响系统响应速度
作为RBAC系统架构师,你必须遵守上述Rules和project-rule.md,按照Workflows执行任务
第二步提示词:
作为Java全栈开发工程师,你必须遵守Constrains和project-rule.md,使用默认Language与用户交流。
分享一个提示词优化网站: https://prompt.always200.com/
罗三妹山不走回头路主题公园位于中山市三乡镇青云路罗三妹山,以“不走回头路”为主题,精心修建罗三妹山“不走回头路”主题公园。作为国家AAA级旅游景区的罗三妹山“不走回头路”主题公园,以当年邓小平同志登山的路径为主线,建有丰碑廊、仙池、孝德浮雕墙、三妹牧牛等多个景点。在公园里面走的时候,会一直听到公园播放的邓小平爷爷讲话录音。
罗三妹山,原名锣鼓岗,又名罗仙姑山。海拔98.8米,面积0.22平方公里,入公园需要先经过“中山温泉”牌坊。公园不大,但作为日常健身散步也不失为当地人一个好去处,这里还是中山红色教育基地之一,我去的当天就看到有单位在团建。
改革开放的词典里,有著名的“三论”:摸论、猫论、不争论。景点的设计灵感来自于“摸论”。
“邓小平塑像”是为纪念中国改革开放总设计师邓小平同志登上罗三妹山,在山上发出了“不走回头路”警世诤言而建。塑像由霍英东家族敬立,塑像以邓小平当年站在罗三妹山上平台远眺沉思的照片为蓝本。
山的南边是中国第一家中外合作宾馆中山温泉宾馆,北边有中国大陆第一个高尔夫球场。山里怪石奇木,溪水隐现,树林茂密,风景秀丽。
被保留并修缮的罗仙姑庙前,有一座后来新建的三妹牧牛雕塑。
山的得名源于当地传说中的一个人物。传说,在罗三妹山下雍陌村,有一个叫罗三妹的女孩,自小失去了父亲,家境十分贫寒。她的母亲一直生病,长年卧床不起,而罗三妹非常孝顺,侍奉无倦。在罗三妹14岁那年,母亲病逝,她悲痛欲绝,十多天粒米未进,哀伤而死。百姓为纪念这位孝女,把这座山命名为“罗三妹山”。
By 理光 GR3
第一次看王朔的小说,语言和故事都很有特色。他喜欢用长句,通常是大段的长句,读得让人喘不过气来,笔下的人物吊儿郎当又玩世不恭,说话痞里痞气。
很久以前看过它改编的电影《阳光灿烂的日子》,电影的剧情现在忘得差不多了。看完小说发现它和电影的情节相差很大,没有跳烟囱和双方群殴的情节。我觉得小说没有电影好看,故事比较散,节奏也比较慢,不过两者的风格是一致的,处处流露着京城大院纨绔子弟高傲的姿态,弥漫着动荡和狂野的格调。
这部小说讲的是一群初中生整天逃学,无聊又无所事事,学着大人的样子抽烟侃大山,免不了惹是生非、打架斗殴,围绕女人争风吃醋——高端阶层的颓废的青春和成长的烦恼。
我不喜欢这种故作姿态的小混混的模样,靠着家里的资本耀武扬威,本身都是些绣花枕头。王小波在《最灿烂的阳光》里说这群人过得浑浑噩噩,很幸福,没吃过什么苦,他们的阳光当然很灿烂,和他们生活在同时代的同龄人,每天却为了生活过着暗无天日的日子。
秦皇岛渔岛行
周末出行带孩子去秦皇岛溜溜,这次是小区的一个专门搞旅游的邻居组织,坐大巴到秦皇岛两天,提供交通和食宿。第一天渔岛,第二天滑沙,算上我和老婆孩子以及姥姥,一共四个人,性价比超高。
渔岛是一座位于秦皇岛的主题乐园,沙滩大海,水上滑梯,水上表演,好莱坞特技秀,龙秀等。我去时候没注意,到了发现满大街比基尼姑娘好多,大饱眼福。
不过非常不建议这个季节出行,天气炎热超出我的想象。我闺女到那里就不走路,全程抱娃,三岁大胖娃挂件,加上这个季节的温度,我汗流浃背,预想的拍点美照再次实现一点点,。图片为什么没有加,没整理,等我不忙了再整理再加点。
管理服务器和域名
最近精简服务器和域名,发现一台服务器带了一堆网站,市面上开始服务器再次降价了,碰上搞活动就赶快替换掉老的服务器,把这些项目都分拆出来,然后按照区域重新梳理下。
国内:一台阿里云的2c2g服务器。
香港:一台ZoVPS的8c16g服务器。
海外:一台Netcup的的4c8g服务器。
国内的主要是放图片,还有放一些备案网站,虽然配置低了点,但是放我开发这些程序完全没问题,因为在开发之初,我就约束了程序的性能前置,消耗性能的全部砍掉,全部用最简单的方式实现。
慈云数据的服务器比较大,是在618买的所以放了我开发的社区,和我现在的博客,以及Findblog的网站,这个性能比较大,应该还会再放一些内容。
当前的FindBlog就是我通过wp开发的插件,纯展示博友们的rss内容,后面应该会升级FB的程序,单独开发一套系统,核心两部分,一个是前台的博友展示,后台是订阅预览,然后增加一个json输出,我觉得这个算上一个博友们能够用上的东西,一些博友的博友圈可以直接调用自己订阅的博客内容展示,当前的想法是这样的,这台服务器完全没问题。
海外的服务器,我是上周五购买的,一台Netcup的美国服务器,放一些海外的网站,国内关于这方面的教程已经很多,在AI加持之下,我已经能够做到之前一些无法做的的项目,所以后续的重点都是这里,这方面我还是处于学习状态,边学边做
域名整理
每次写到这里都是痛,前两天一整理域名发现又多了一大堆域名,目前是平台就是阿里云和Gname了。这次整理完域名,我给自己定下一个约束方法。
第一是非项目不买,就是即使看到自己喜欢的域名也不买,因为没有屁用。除非是要做一个项目使用。
第二是非项目开发完成不买,即使有项目了,不到部署的最后一刻,也不买这个对应的域名。
第三是有人买合适就卖,不再持有域名,非项目域名全部售出,只要价格合理就卖。
第四是项目停了立刻低价卖了,留着干嘛呢,卖了可以买几包烟,点击次外卖,贵的能够买一个电动车,做人不能浪费。
域名被封禁
今年我已经停止写一些金融和社会的内容,结果还是被微信封禁域名,没有必要申请解禁,我连搜索引擎都屏蔽,这相当于帮我了,感谢腾讯的封禁,我谢谢您啊。
为了应景,我这里放一首我喜欢的歌曲,汪峰的《一百万吨的信念》。这首歌被禁了,这首歌非常适合我,一个带着信念前行的平凡人。
更新和访问
今年很明显的更新频率降低了,是更多的时间在写项目,时间都在这些事情上面,一些兴趣和折腾的东西都在减少。有时候赶进度都需要晚上写到后半夜,有种在和时间赛跑的感觉。
头伏饺子二伏面,这两天耳畔总是想起这句话,简简单单,一日三餐,四季五谷。这周天气凉快许多,不过各种事情却没有减少,有眼下的,有未来的,不胜其烦。昨晚瞅见人民日报《用一种“轻轻的心情”去面对生活中的大小事》,心生欢喜。很多事情回到本质,也就那么回事。就像打翻的牛奶收不回,擦干净桌面就好。那些曾经觉得天大的事,如今看来不过是可爱的烦恼。
我们常说昨天的太阳晒不干今天的被子,同理明天的雨淋不湿今天的晴朗。不管什么状况,都应胜似闲庭信步。风不慌不忙在吹,云不紧不慢在飘,日子总是在过的,不必为还没发生的事忧心,别自己把自己给困住。纵然偶尔出错,过一段时间看,可能只是人生轻轻浅浅的一笔,更何况本就无所谓对错。少比较,少焦虑,勇敢体验人生。尽兴去闯,大胆去试,活出自己喜欢的样子。
人生没有固定的剧本,所有经历,都是礼物。用一种“轻轻的心情”,去面对生活中的大小事。昨晚在图书馆翻书,摘录了下面这段话。异曲同工,是以为记。头伏饺子二伏面,抬头,白云苍狗,自自然然,夫复何求。
人的痛苦往往来源于想要的太多,而其实本来需要的并不多。当你认清什么是你的需要,而什么只是你的想要。追逐需要的,在一定范围内去实现想要的,你将远离痛苦,幸福常伴。东西不是越多越好,地位不是越高越好。在我们的生活里面,需要的东西并不多,想要的却很多。一味地追求想要的东西,只会让人生变成一种痛苦。贪得无厌只会让自己沦为欲望的奴隶,离幸福越来越远。
世界上的很多事没有太大意义,真理与爱除外。
SSL,英文全拼是Secure Sockets Layer ,即安全套接层,SSL是为我们网络通信提供安全及数据完整性的一种安全协议,它可以在传输层对网络连接进行加密,使我们的访问更安全可靠,ssl可以防止数据在传输过程中被黑客肆意篡改,保证数据传输的完整性。
所以部署SSL还是非常有必要的。
免费SSL,推荐使用阿里云、腾讯云、宝塔等一些平台上的免费SSL,申请,部署还是挺方便的。
过年走亲戚也都走的差不多了,跟着舅舅家的几个大老表,小老表在老家前面的麦地里放放风筝,空气可是真不错。
跟同事一块去转了转,Iphone12发布一个月了,去线下店里去看看实体机,同事买了个iPhone12mini
用他手机随手拍的南京东路华为旗舰店,哈哈。
QQ打开就是关闭QQ广告,微信打开就是关闭微信广告,并不是完全关闭,只是减少了!
打开地址->点击管理->进入下拉页面->依次关闭即可->每六个月需要再来关闭一次
地址: https://privacy.qq.com/advertisement.htm
我本不善言辞,却忙于人际交往。 我本喜欢独处,却忙于奔波劳碌。
而所做的一切,都是为了得到那、能解万千惆怅的碎银几两……
阿里云Linux虚拟主机共享版,想在一个虚拟主机下面建立多个网站呢?教你利用.htaccess绑定子域名到子目录,亲测可用。
一般的做法就是在根目录下面建立一个文件夹,然后访问时域名后面跟着这个文件夹名字?比如,访问www.abc.com跳转到abc.com/www,这样可以做到一台虚拟主机建立多个网站,但是访问时后面都跟这个文件夹名,是不是很LOW很不爽。
具体操作步骤:
登陆域名所在解析平台,解析你要的二级域名到你的虚拟主机。
登陆阿里云虚拟主机管理页面,绑定你解析的域名。
在你的电脑本地新建一个htaccess.txt文件,并在文档中插入以下代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteCond %{REQUEST_URI} !^/目录名/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /目录名/$1
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteRule ^(/)?$ 目录名/index.php [L]
上面整套是绑定一个子域名到一个子目录,如需绑定多个,重复上面代码即可。
将创建好的htaccess.txt文件通过FTP软件上传到虚拟主机根目录,如果没有控制面板推荐用8uftp,通过8uftp上传到根目录之后,把文件名字改为.htaccess,更改之后可能会不显示(8uftp—视图—显示隐藏文件)就会显示.htaccess文件了。
实例:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?blog.abc.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
RewriteCond %{HTTP_HOST} ^(www.)?blog.abc.com$
RewriteRule ^(/)?$ blog/index.php [L]
经理上面一番操作之后,你再需要访问 abc.com/blog,只需要直接输入访问 blog.abc.com就OK了。
{mtitle title="《从前慢》 -木心"/}
{mtitle title="记得早先少年时,
大家诚诚恳恳,
说一句,是一句。
清早上火车站,
长街黑暗无行人,
卖豆浆的小店冒着热气。
从前的日色变得慢,
车,马,邮件都慢,
一生只够爱一个人。
从前的锁也好看,
钥匙精美有样子,
你锁了,人家就懂了。"/}
到上海也有小半年了,晚上下了班心血来潮跟几个同事一起约着去外滩看看.
域名:
前前后后备案了5个域名,拿去两个做二级分发,避免不了都红了,唉,再备案一个自己用吧,就花费巨资购买了这个 yra.cc (已经卖了) 个人感觉还挺好看的,看着这个域名,脑子里蹦出来个一人安,嗯哼,不错,买,就入手了这个,玩建站两年多,换了一堆域名一堆服务器,写的为数不多的几篇分享文章也都没了,以后就用这个吧。
程序:
玩过emlog,zblog,wordpress,终于又回到了这个轻巧的Typecho程序,刚好前几天发现了这个简洁的主题,正好配套域名,nice!
主机:
主机和服务器换的可太多了,前两年疯狂找免费免备的,不过大部分都是不久就删库跑路,可太多了,然后就决定还是找阿里云腾讯云这些大厂吧,活动还是挺多的,优惠力度还可以,再配上备案域名,还是国内服务器的香啊,装个宝塔面板,可玩性可太高了。
上个月偶然捕捉到这个姓名米,然后就准备给博客换个域名,改个名字 ,正好腾讯EdgeOne公测活动,刚开始用EO海外节点的时候速度很快,本来不打算备案了,结果才几天就被玩坏了,本来好多IP,几天就被搞的80端口一片红,迫不得已还是老老实实备案用国内节点吧,正好前段时间入手了个西部数码的虚拟主机,就想着在西部备案得了,就不用在阿里云一直续费服务器了,原来老备案主体是18年备的,中间备案又注销好多域名,再用原来的主体备的话,新的序号就到-9了,中间都是空的,干脆直接重新备个主体,就把原来的阿里云主体直接注销了,6月30号重新在西部数码提交了新主体和这个hxy的域名备案。
首先吐槽一下西部的备案初审,之前在阿里备的每次都是提交之后最多几个小时就接到初审的电话了,没问题就直接提交管局了,结果西部直接到3号才初审通过提交到管局,然后就开始焦灼的等待,每天都希望收到一个通过的邮件,每到周五期待感愈加强烈,结果苦苦登了三周,本来以为这周又没希望了,今天早上突然收到了审核通过的通知,7月3号到22号,苦苦等到第19天才审批通过,可算了解一桩心事。
刚才把老域名已经全量301跳转到新域名,新域名也接入到了EO的国内节点,确实真香,希望腾讯EO可以活久一点。
(1)头部(白色毛线)
R1.6X
R2.6V
R3.6(X,V)
R4.6(X,V,X)
R5.6(3X,V)
R6.30X
R7.6(2X.V.2X)
R8.36X
R9.8X,4(X,V),4X,4(V,X),8X
R10-R13.44X
R14.8X,4(X,A),4X,4(A,X),8X
R15.6(2X,A,2X)
(2)耳朵2个(黑色毛线)
R1.6X
R2.6V
R3.3(3X,V)
R4.15X
(3)身体(白色毛线)
R1: 8CH倒2钩6X.V.6X.V
R2: 8(X.V)
R3: 8(X.V.X)
R4: 8(3X.V)
R5-R12:40X
R13:黑线4 (4X.A.4X)
R14: 6(2X.A.2X)
(4)胳膊2条(黑色毛线)
R1-R5: 8X
R6: X.A.X.A.2X
R7:6X
(5)脚2条(黑色毛线)
R1:4CH倒2钩2X.W.X.V
R2:V.X.3V.X.2V
R3: BLO14X
R4: 5X,2A,5X
R5:2(X,A),2(A,X)
R6:8X
(6)眼睛*2(黑色毛线)
4ch,倒2钩2X.W.X.V
(7)尾巴(黑色毛线)
R1:6X
R2:6V
(8)竹子(绿色毛线)
R1:8X
R2:BLO8X
R3-R4: 8X
R5:3X.A.3X
R6:BLO7X
R7-R9:7X
R10: 3X.A.2X
R11:BLO6X
R12: 6X
R13: X.A.X.A
R14: X.A.X
小笋叶:环起5cH,倒2钩2sl.x.sl,圈内sl7cH,倒2钩2sl.2x.2sl,圈内sl
(1)头部(白色毛线)
R1.6X
R2.6V
R3.6(X,V)
R4.6(X,V,X)
R5.6(3X,V)
R6.30X
R7.6(2X.V.2X)
R8.36X
R9.8X,4(X,V),4X,4(V,X),8X
R10-R13.44X
R14.8X,4(X,A),4X,4(A,X),8X
R15.6(2X,A,2X)
R16.6(3X,A)
R17.6(X,A,X)
(2)耳朵2个(黑色毛线)
R1.6X
R2.6V
R3.3(3X,V)
R4.15X
(3)腿2条(黑色、白色毛线)
R1.黑色毛线6X
R2.3(X,V)
R3-R4.换白色毛线3(X,V,X)
(4)身体(黑色、白色毛线)
R5.3CH连接两条腿,6(2X,V,2X)
R6-R10.36X(3CH处各挑半针钩)
R11.换白色毛线BLO12X,9X,16X
R12-R14.36X
R15.6(2X,A,2X)
R16.30X
R17.6(3X.A)
R18.换黑色毛线24X
R19.6(X,A)
(5)胳膊2条(黑色毛线)
R1.6X
R2.2(X,V,X)
R3-R7.8X
(6)吊带裙(绿色毛线)
裙子:R11在FLO钩织两圈36X,FLO36FW钩织花边
吊带:R11中FLO15X,R12-R13:15X;
R14:A,11X,A;R15.A,9X,A;各钩20CH背后交叉
(7)蝴蝶结(绿色毛线)
环起(3CH,2F,3CH,SL)(3CH,2F,3CH,SL)绕线5-6圈
渡边淳一的《失乐园》讲的是五十三岁的出版社部长和三十七岁的女书法家婚外情的故事。这本书的故事情节很简单,人物也很少,聚焦在男女主人公,文字极其细腻,读起来很舒适。
书中有大量篇幅的性爱场面的描写,前半本书写的都是男女主人公辗转于各个酒店进行各种各样性爱的场景。这些描写色而不淫,作者点到即止,烘托了男女双方的为爱痴狂。
男人很大方,每次约女主都是住豪华的房间(能看到海、湖或者樱花),哪怕只有几个小时的时间也会选择最好的房间,吃饭的品味也很高,每次都点名贵的酒,客房冰箱里的酒也是随意喝。女主被描写得很妖娆,三十七岁是颜值和身体的顶峰,总是让男主淫心四起。
女主和她老公之间早就没有了感情,饭也不在一起吃,住在一个屋檐下心里很难受,这时遇到了体贴的男主,委身后越发爱上了他,觉得自己找到了真正的爱情。她不理会世俗的看法,不想被婚姻羁绊,哪怕失去所有。
偷情的事情难免被发现,男主老婆要和他离婚,女主老公死活不离婚,他们俩也不理会这些,搬出去一起住。女主心中一直都有一个想法:「已经是人生顶峰了,再往后就是下坡路,年龄和身体都将老去,连爱情也会淡去,要在人生最辉煌的时候死去。」男主刚开始被女主毅然决然的想法吓到了,渐渐地越陷越深,工作失意和家人远离越发让他觉得孤独,唯与女主心意相通,慢慢地生发出了诀别的想法。
我觉得这本书适合三十岁以上,最好四十岁以上的人来看。书中对性爱的描写有误导的嫌疑,把它写得过于美好,因为作者写得很细腻,看起来像真的似的。比如,作者说女主在男主的抚摸下就会「冲顶」,一次性爱过程多次「冲顶」。「冲顶」哪有这么容易,技巧哪有这么有用?又说,男主每次和女主相见两三天,男主能行房五六次。这对于五十多岁的男人应该不会这么轻松吧?书中把爱情和死亡挂钩也让我看得不适,为了让爱情永远炽热下去却用自杀的方式来解决,我觉得这是对自己、对爱人、对家人的不负责。
R1:白色线6X
R2:6V
R3:6(X,V)
R4:18X
R5:换浅粉线6(2X,V)
R6-R9:24X
R10:6(2X,A)
R11:18X
R12:6(X,A)
R13:4(X,A)
填充棉花。可钩织两个并在鱼嘴巴加入磁铁,做成情侣鱼。也可装入吱吱叫气囊,一捏发出响声,增加趣味性。
R14:对折钩4X
R15:换玫红线4FV
背鳍:鱼尾倒数第3行入针V,TV,3FV,T,V, V
腹鳍:在R7和R8之间入针V.TV.V
侧鳍2个:R6入针X,TV,X
粘贴黑色圆眼睛,刷腮红
R1:白色线6X
R2:2(2X,V)
R3:2(3X,V)
R4:2(4X,V)
R5:2(5X,V)
R6:2(6X,V)
R7-R9:换紫色线16X
R10-R11:换浅绿线16X
R12:换明黄线16X
R13:换草绿线16X
R14:2(6X,A)
R15:换浅棕线14X
R16:2(5X,A)
R17:12X
R18:2(4X,A)
R19:10X
R20:2(3X,A)
R21:8X
R22:换白色线8X
R23:BlOV,2X,2V.2X,V
R24:BLOV,4X,2V,4X,V
R25:对折钩8X
粘贴黑色圆眼睛,刷腮红
(1)龟壳(深绿色、浅绿色毛线)
R1.深绿6X
R2.6V
R3.6浅绿(X,V)
R4.6(浅绿X,深绿X,V)
R5.6(浅绿X,深绿X,X,V)
R6-R8.6(浅绿X,深绿4X)
R9.浅绿FLO30X
R10.30X
(2)腹部(白色毛线)
R9.BLO30X
R1.6(3X,A)
R2.6(2X,A)
R3.6(X,A)填充棉花
R4.6A
(3)腿4个+尾巴(白色毛线)
R1-R3.5X
尾巴不引拔,螺旋钩织
(4)头(白色毛线)
R1.6X
R2.6V
R3.6(X,V)
R4-R5.18X
R6.6(X,A)
R7.12X填充棉花
R1.6X
R2.6V
R3.6(X,V)
R4.6(X,V,X)
R5.6(3X,V)
R6-R10.30X
R11.6(3X,A)
R12.8[(5F),K,SL]
用浅蓝色毛线和浅粉色毛线各钩织一个,用黑色毛线缝眼睛,红色毛线缝嘴巴。再将两个章鱼缝合在一起。
后记:以上步骤钩出来是直筒型的,形态不怎么像章鱼,于是又按照以下方法重新钩了一个。
R1.8X
R2.8V
R3.8(X,V)
R4.8(X,V,X)
R5-R8.32X
R9.8(X,A,X)
R10.24X
R11.8[(5F),K1,SL]
上午去处理周六的事故了,也不是交警大队,就一个路口的岗亭,里面登记处理,九点半到那里,处理事故的人是真多,只能挨着排队,这大热天的在外面晒着排队真受罪,有的和和气气该认责认责,也有的不认,在那大吵的,真是见到了各种形形色色的人。
快到11点才终于排到,先是有个交警问情况然后定责,定责的时候刚开始对方不认,我说变道蹭到我了,他们说没有变道,搁那讲一大通,我就没说话,最后把行车记录仪视频让交警看了下,然后交警结合他们现场交警拍的照片,明显看到对方变道,对方车右边还压着车道线往这边来呢,对方看到视频也立马认责了,对方是一对中年夫妻,当天是那个大姐开的,看到视频那大哥也认了他们责任。然后就是出具事故认定书,接着他们就报保险修车了,刚把车送到保险公司指定的修车厂,右前脸那一块和车门挨着那一块有掉漆,然后有点变形,开副驾驶门的时候有点卡,说是明天或者后天能能修好,折腾了一大上午,唉,搞的一上午又热又晒,真受罪。以后还是能让就让一下吧,不然又耽误时间又麻烦要修车。
晚上吃完饭开车出去玩呢,去罍街了,周末人很多很多,结果到里面两个停车场都停满了,我就让家里人带着宝宝下来先去玩了,我开着车往外走了,看看路边哪里有没有停车位,结果转了二十分钟,附近一两公里的路边都停的满满的,我就打算回去了,想着晚一会他们玩好了我再回来接她们,结果还没走出去多远呢,就发生了个小插曲。
我这边在二环辅路直行走的好好的,右边这个车也不打灯就硬往我这边挤,他也没有停下来的意思,我也没有停下来的意思,然后就来了个亲密接触,正好不远处路口就有交警在指挥交通,看到这边堵车不走了就往这边来了,然后拍了驾驶证行驶证照片和现场照片,然后就让走了,周一让去交警队处理,也不知道怎么个说法,唉,开车这么久还是第一次和别的车发生事故,美好的周末不美好了。
{bilibili bvid="BV1i3udzREy6" page=""/}