
热爱技术
- 第一步 , 知其事 。
- 第二步 , 知其然 。
- 第三步,知其所以然。
- 第四步,周而复始。
- 第五步,融汇贯通 。
- 请走好每一步。
热爱生活:世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。
游山西村
- 莫笑农家腊酒浑 ,
- 丰年留客足鸡豚 。
- 山重水复疑无路 ,
- 柳暗花明又一村 。
- 箫鼓追随春社近 ,
- 衣冠简朴古风存 。
- 从今若许闲乘月 ,
- 拄杖无时夜叩门 。
热爱技术
热爱生活:世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。
游山西村
按自然数从1开始数:
从 1到n
中选择一个一个最小的数,放到第 1
位置上
从 2到n
中选择一个一个最小的数,放到第 2
位置上
从 n-1到n
中选择一个一个最小的数,放到第 n-1
位置上
从 n到n
中选一个最小的数,就是本身,放到 n
位置上
按程序数从0开始数:
从 0到n-1
中选择一个一个最小的数,放到第 0
位置上
从 1到n-1
中选择一个一个最小的数,放到第 1
位置上
从 n-2到n-1
中选择一个一个最小的数,放到第 n-2
位置上
从 n-1到n-1
中选一个最小的数,就是本身,放到 n-1
位置上
逐个两两比较,前面比后面大交换,直到n位置是最大值 重新逐个两两比较,前面比后面大交换,直到n-1位置是最大值 。。。 重新逐个两两比较,前面比后面大交换,直到2位置是最大值 只剩一个只自然最大,不用交换
package learn.note.algorithm.sort.three;
import java.util.Arrays;
/**
* @author Wang WenLei
* @date 2025/7/23 13:37
* @since 1.0
*/
public class BubbleSort {
public static void main(String[] args) {
int [] data = new int[]{1,7,3,11,8,5,10,2,4,9,6};
bubbleSort(data);
Arrays.stream(data).forEach(System.out::println);
}
private static void bubbleSort(int [] data) {
for (int i = 0; i < data.length; i++) {
for (int j = 0 ; j < data.length - 1 - i; j++) {
if (data[j] > data[j + 1]) {
swap(data,j,j + 1);
}
}
}
}
private static void swap(int [] data,int i,int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
异或运算,相同为0,不同为1。
可以理解成不进位加。
a ^ b = b ^ a
(a ^ b) ^ c = a ^ (b ^ c)
题目:一个数组,有n种数出现偶次,只有一种数出现奇次,找出奇次的这种数。
eor=0,遍历数组从头亦或到位,得到的数就是奇次的这种数。
把相同的数都异或掉,剩余的数就是。
文章转载自:雪花算法(snowflake)生成Id重复问题——唐江旭
最近工作上遇到一个雪花算法生成Id重复导致数据库中表主键冲突,导致入库失败的问题,所以顺便学习了一下雪花算法,下面是学习的笔记以及讨论如果解决雪花算法在分布式部署中生成重复Id的问题。
snowflake中文的意思是雪花,所以常被称为雪花算法
实现 Java 类型和 jdbc 类型的相互转换
类型处理器接口有一个实现类 CompositeEnumTypeHandler
和一个抽象实现类 BaseTypeHandler
BaseTypeHandler
继承 TypeReference
作用是得到获取泛型类型的能力
BaseTypeHandler
实现 TypeHandler
作用是针对不同的泛型类型的实现提供统处理一部分信息的能力,如在 setParameter
时判断空直接处理,不为空时调用具体实现类。
uni-app获取微信头像昵称,使用uView的弹窗显示修改信息,使用vuex存储用户信息,效果如下
如下为代码,在此记录实现
<!-- 用户卡片 -->
<view class="user-card" @click="showPop">
<image class="avatar" :src="userInfo.avatar || defaultAvatarUrl"></image>
<view class="nickname">{{ userInfo.nickName }}</view>
</view>
<!-- 普通弹窗 -->
<u-popup :show="show" :round="10" mode="bottom" @close="close" @open="open">
<view class="containar">
<view class="containar-title">授权用户头像昵称</view>
<view class="containar-row">
<view>头像</view>
<view class="avatarUrl">
<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<image class="refreshIcon" :src="updateUser.avatar"></image>
</button>
</view>
</view>
<u-line hairline="false" margin="20px 0 20px 0"></u-line>
<view class="containar-row">
<view>昵称</view>
<view>
<input type="nickname" style="text-align: right" placeholder="请输入昵称"
:value="updateUser.nickName" @input="onInputChange" />
</view>
</view>
<u-line hairline="false" margin="20px 0 20px 0"></u-line>
<view class="containar-row">
<view class="btn">
<u-button type="primary" :plain="true" text="取消" @click="canclePop"></u-button>
</view>
<view class="btn">
<u-button type="primary" text="确定" @click="confirmUser"></u-button>
</view>
</view>
</view>
</u-popup>
<script>
data() {
return {
userInfo: {},
updateUser: {},
defaultAvatarUrl: 'https://ibi-business.oss-cn-beijing.aliyuncs.com/frontend/imges/default-avatar.png',
};
},
methods: {
// 展示弹框
showPop() {
this.updateUser = {
avatar: this.userInfo.avatar ? this.userInfo.avatar : defaultAvatarUrl,
nickName: this.userInfo.nickName ? this.userInfo.nickName : ''
}
this.show = true;
// 隐藏下面的Bar
uni.hideTabBar({
animation: true
});
},
// 取消弹框
canclePop() {
this.close()
},
open() {
// console.log('open');
},
// 关闭弹框
close() {
// 恢复下面的Bar
uni.showTabBar();
this.show = false
},
onChooseAvatar(e) {
const {
avatarUrl
} = e.detail
// 获取到头像需要上传到自己的服务器oss
if (avatarUrl) {
let baseUrl = uni.$http.baseUrl;
let token = this.$store.state.m_user.token
uni.uploadFile({
fileType: "image",
url: baseUrl + '/oss/upload?project=ptd-map-view',
filePath: avatarUrl,
name: 'file',
formData: {
//iFile:tempFilePaths[0], // 这里一定不能加,加了 iOS 图片上传会失败
ibitoken: token,
},
// 请求头一定要加,否则 iOS 图片上传会失败
header: {
'content-type': 'multipart/form-data'
},
success: (res) => {
let result = JSON.parse(res.data);
if (result.code === 200) {
this.updateUser.avatar = result.data.fileName;
} else {
uni.$u.toast('上传失败1');
}
},
fail: (e) => {
uni.$u.toast('上传失败,网络错误', e);
}
});
}
},
onInputChange(e) {
this.updateUser.nickName = e.detail.value
},
async confirmUser() {
let info = {
avatar: this.updateUser.avatar,
nickName: this.updateUser.nickName,
id: this.userInfo.id
}
let {
data: res
} = await uni.$http.post('/login/updateUserInfo', info);
if (res && res.code === 200) {
// 单独更新修改信息
this.$store.commit('m_user/updateUserNickName', info.nickName);
this.$store.commit('m_user/updateUserAvatar', info.avatar);
// 更新本地 userInfo
this.userInfo.nickName = info.nickName;
this.userInfo.avatar = info.avatar;
// 显示更新成功提示
uni.showToast({
title: '用户信息更新成功',
icon: 'success'
});
this.close()
} else {
uni.showToast({
title: '用户信息更新失败',
icon: 'fail'
});
}
},
}
</script>
<!-- 样式 -->
<style lang="scss" scoped>
.user-card {
background: #fff;
border-radius: 20rpx;
margin: 32rpx 24rpx 0 24rpx;
display: flex;
align-items: center;
padding: 32rpx 24rpx;
.avatar {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
margin-right: 28rpx;
border: 2rpx solid #eee;
background: #f0f0f0;
}
.nickname {
font-weight: bold;
font-size: 32rpx;
color: #333;
}
}
.containar {
.containar-title {
padding: 20px;
font-weight: bold;
}
.containar-row {
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 20px;
padding-left: 20px;
}
.btn {
width: 45%;
}
.avatarUrl {
padding: 0;
background: #fff;
button {
background: #fff;
line-height: 15rpx;
height: auto;
border: none !important;
width: auto;
padding: 0;
margin: 0;
display: flex;
border: none;
justify-content: center;
align-items: center;
&::after {
border: none;
}
.refreshIcon {
width: 30px;
height: 30px;
border-radius: 50%;
background-color: #ccc;
}
}
}
.avatarUrl:active {
transform: scale(0.8);
}
}
</style>
全称是:Request For Comments
是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。RFC文件是由Internet Society(ISOC)赞助发行。
基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多在标准内的论题,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中。
如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。
详细: # RFC 是什么含义?