Other

母亲的爱--今天是母亲节,和妈妈通话后回忆起往事

母亲的爱  “卖家鸡了,大家快来买啊!”母亲清脆的吆喝声穿透整个熙攘的集市。市场里,吆喝声、叫卖声、讨价还价声、嬉戏声都混杂在一起,形成一曲奇特的市集交响乐。那是儿时动听的音符,满满的回忆。时间记不太清楚了,大抵是2002年的一个夏天,那年我5岁。 每逢周末,我都会和爸爸妈妈一起去姥姥、姥爷家,那时的我就像脱缰的小野马,在院子里尽情驰骋,哪怕踩坏了姥姥种的菜,也不会遭到批评,儿时的快乐就是那般纯粹。母亲说周末闲来无事,咱家养的鸡也长大了,不如我们娘俩去集市上卖咱们养的鸡,在集市上卖点东西补贴家用。之后无论是风和日丽,还是淫雨霏霏,我和母亲都会在周末这两天如时赴约集市,驮着那一只只的鸡去卖,车座后边驮着我,虽稍显枯燥无味,但却是我童年最渴盼的事。 乡集上熙熙攘攘,商品琳琅满目,推搡的人群里最显目的是背着竹筐售卖的母亲们,她们就像我的母亲一样,抱着舍不得吃的鸡鸭,提着带有余温的鸡蛋,摆着带有水珠的蔬菜……她们小心翼翼地和那些精挑细选不肯出价的人攀谈,期待一个好价钱把自己的东西卖出去,又委曲求全地想竭力留住一个驻足观望的人,担心他们又去了下一家。 “冰糖葫芦喽,又酸又甜的冰糖葫芦……”待母亲刚刚把鸡从竹筐里拿出来摆放完,一阵悦耳的叫卖声回荡在耳畔,我的眼神也随之而去,母亲看懂了我的心思,二话没说:“你等着啊,想吃了吧,妈给你买去。”“妈,我不想吃,就是瞅两眼而已。”“等着啊……”母亲奔跑着去买冰糖葫芦,瞬间于穿梭的人群中不见了踪影,恰好一阵风拂过,吹掉了路旁的几片花瓣,不知怎的,当时我心里莫名有些伤感。而恰巧就在此时,一位骑自行车的妇女停下驻足:“这鸡咋卖,便宜点不?”“大姨,我说不好多少钱一斤,您等会行吗?大人这就来……”还没等我说完,这位妇女便离去了。正当我自责不已,眼前晃过一串晶莹剔透、红彤彤的冰糖葫芦,母亲正拿着它,汗珠淌过她通红的脸颊,那一刻仿佛瞬间成了永恒,在我记忆里镌刻成母爱的丰碑。“妈,刚才有一个人想买咱们的鸡,我不懂,她走了……”“话音未落,母亲又是一阵狂奔,去人群中追寻那位妇女,片刻过后,母亲拖着疲惫的身躯缓缓回来,失望和无奈的神情已经让我晓得一切。这天也凑巧,我们娘俩一只鸡都没卖出去。望着当时手中的冰糖葫芦,内疚感萦绕心头,说啥也吃不下,心里酸极了。 后来,每次花钱买东西之前我都思虑再三,总是想起那串冰糖葫芦里的故事。然而每到冬季,我总会情不自禁地买上一串冰糖葫芦,在寻觅和追逐那熟悉的甘甜时,在咀嚼和吞咽那熟悉的味道时,感受母爱的味道——甘如饴、甜如蜜!

Java 构造器

构造器 构造器能在实例化对象的时候直接传入参数,使对象完成我们设定的初始化,构造器本质上就是一个成员方法,在实例化对象时,会运行构造器方法,但是它没有返回值,且由无需自己调用,JVM会在实例化对象时调用构造器方法。 如果有python基础可以将构造器认为是python中的初始化方法__init__ 构造器定义、使用 构造器的定义方法,在类中定义一个与类名同名的方法即可 语法访问修饰符 类名 (形参列表) {方法体} class ... { public static void main (String[] args) { // 实例化对象,并传参 Constructor conObj = new Constructor(1, Test, 1.1); System.out.println(conObj.number + \n + conObj.str + \n + conObj.floatNum); } } class Constructor { int number; String str; double floatNum; // 构造器 public Constructor (int Num, String Str, double FloatNum) { number = Num; Str = Str; floatNum = FloatNum; } } 构造器细节 如果类中没有定义构造器,那么 Java 会自己生成一个无参构造器 类名 () {},如果定义了构造器那么默认的无参构造器将会被覆盖,也就是不能再使用无参方式实例化对象,除非利用重载重新定义一个无参构造器。 构造器支持重载,与方法的重载一样,一样是通过我们传入的实参匹配调用对应的构造器。 构造器的名字一定要与类名一致,严格区分大小写 构造器没有返回值,定义构造器时无需指定返回值类型 构造器方法会在实例化对象的时候自动调用。 构造器方法无法被手动调用。 对象创建流程 先在方法区中加载类信息(如果在此之前加载过不会再进行二次加载) new 在堆中开辟对象空间 初始化对象属性并设置对象属性默认值 如果在类中给类属性赋值了,会对类属性进行显式初始化 执行构造器方法 将对象空间的内存地址返回给引用对象的变量

GNN、DeepWalk 和 GraphSage

https://easyai.tech/blog/gnn-deepwalk-graphsage/ 参考这篇文章  给定一个部分标记的 graph G,目标是利用这些标记的节点来预测未标记的节点的标签。它学习用包含邻域信息的 d 维向量 h_v 表示每个节点。即: 其中 x_co[v] 表示与 v 相连的边的特征,h_ne[v] 表示 v 相邻节点的嵌入,x_ne[v] 表示v 相邻节点的特征。函数 f 是将这些输入映射到 d 维空间上的过渡函数。  DeepWalk [2] 是第一个提出以无监督的方式学习节点嵌入的算法。 它在训练过程中非常类似于词汇嵌入。  分层 softmax 利用二叉树来处理这个问题,要计算给定顶点 v_k 的概率,只需计算从根节点到叶节点 v_k 路径上每一个子路径的概率。由于每个节点的子节点的概率之和为 1,所以所有顶点的概率之和为 1的特性在分层 softmax 中仍然保持不变。  DeepWalk 的主要问题是缺乏泛化能力。  GraphSage 通过聚合其附近的节点,可以为看不见的节点生成可表示的嵌入。  

快速排序算法

快速排序算法 import random class Solution(): def quickSort(self, arr, head,tail): if head >= tail: return arr mid = head + random.randint(0,tail - head) pivot = arr[mid] arr[mid] = arr[head] low = head high = tail while low != high: while low < high and arr[high] >= pivot: high -= 1 arr[low] = arr[high] while low < high and arr[low] <= pivot: low += 1 arr[high] = arr[low] arr[low] = pivot Solution.quickSort(self, arr, head, low - 1) Solution.

冒泡排序算法

冒泡排序算法 class Solution(): def maopao(self, arr: list) -> list: N = len(arr) for i in range(N-1,0,-1): for j in range(i): temp = 0 if arr[j] > arr[j+1]: temp = arr[j] arr[j] = arr[j+1] arr[j+1] = temp return arr if __name__ == '__main__': arr = list(map(int,input().strip().split())) s = Solution() kk = s.maopao(arr) N = len(kk) for i in range(N): print(kk[i],end=' ')

插入排序算法

插入排序算法 # -*- coding: utf-8 -*- # @Time : 2022/3/9 18:38 # @Author : chuqianyu # @FileName: 011-插入排序.py # @Software: PyCharm # @Blog :https://home.cnblogs.com/u/chuqianyu class Solution: def charuSort(self, arr): # 插入排序 n = len(arr) for i in range(1, n): for j in range(i - 1, -1, -1): temp = 0 if arr[j] > arr[j + 1]: temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp return arr if __name__ == __main__: arr = list(map(int, input().

选择排序算法

选择排序算法 # -*- coding: utf-8 -*- # @Time : 2022/3/9 18:43 # @Author : chuqianyu # @FileName: 012-选择排序.py # @Software: PyCharm # @Blog :https://home.cnblogs.com/u/chuqianyu class Solution: def selectSort(self, arr): # 选择排序 n = len(arr) for i in range(n - 1, 0, -1): for j in range(i): temp = 0 if arr[j] > arr[i]: temp = arr[j] arr[j] = arr[i] arr[i] = temp return arr if __name__ == __main__: arr = list(map(int, input().

微服务生态组件之Spring Cloud LoadBalancer详解和源码分析

Spring Cloud LoadBalancer 概述 Spring Cloud LoadBalancer目前Spring官方是放在spring-cloud-commons里,Spring Cloud最新版本为2021.0.2 Spring Cloud LoadBalancer 官网文档地址 https://docs.spring.io/spring-cloud-commons/docs/3.1.2/reference/html/#spring-cloud-loadbalancer Spring Cloud官网文档地址 https://docs.spring.io/spring-cloud/docs/current/reference/html/ 一方面Netflix Ribbon停止更新,Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon。 常见负载均衡器分为服务端负载均衡器(如网关层均衡负载)和客户端层均衡负载。 网关层如硬件层面的F5或软件层面的LVS、或者nginx等。 客户端层就如Spring Cloud LoadBalancer,作为一个客户端去发现更新维护服务列表,自定义服务的均衡负载策略(随机、轮询、小流量的金丝雀等等)。 Spring Cloud提供了自己的客户端负载平衡器抽象和实现。对于负载均衡机制,增加了ReactiveLoadBalancer接口,并提供了基于round-robin轮询和Random随机的实现。为了从响应式ServiceInstanceListSupplier中选择实例,需要使用ServiceInstanceListSupplier。目前支持ServiceInstanceListSupplier的基于服务发现的实现,该实现使用类路径中的发现客户端从Service Discovery中检索可用的实例。 可以通过如下配置来禁用Spring Cloud LoadBalance spring: cloud: loadbalancer: enabled: false 入门示例 前面simple-ecommerce项目创建已在父Pom引入三大父依赖,详细可以看下前面的文章<<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析>>,其中Spring Cloud的版本为2021.0.1,前面文章也已说过,Spring Cloud Alibaba整合在spring-cloud-starter-alibaba-nacos-discovery本身就依赖spring-cloud-loadbalancer。 注意如果是Hoxton之前的版本,默认负载均衡器为Ribbon,需要移除Ribbon引用和增加配置spring.cloud.loadbalancer.ribbon.enabled: false。 如果是在Spring Boot项目中添加下面的启动器依赖,该starter也包含了Spring Boot Caching and Evictor. <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> 我们使用Spring官方提供了负载均衡的客户端之一RestTemplate,RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。创建RestTemplateConfig配置类,标注 @LoadBalanced注解,默认使用的ReactiveLoadBalancer实现是RoundRobinLoadBalancer。 package cn.itxs.ecom.order.config; import org.

shell编程里的那些事儿

read命令 read 变量名1 变量名2 -输入内容 1、不加任何变量名 read [root]- mike 20 male 输入内容 mike 20 male 保存在变量 REPLY,${REPLY} 进行引用  2、加一个变量 read NAME [rooot]- mike 20 male 输入内容 mike 20 male 不论怎样全部保存在 唯一的NAME变量中 3、变量少于输入单词数,单词对应每个变量,当只有一个最后变量时,剩余的所有单词给最后一个变量保存 read NAME AGE [] mike 20 male mike 保存在 NAME;20 MALE保存在 AGE 4、变量等于单词数 read NAME AGE mike 20 mike保存在NAME;20保存在AGE      使用read来把输入值分配给一个或多个shell变量,read从标准输入中读取值,给每个单词分配一个变 量,所有剩余单词都被分配给最后一个变量,如果变量名没有指定,默认标准输入的值赋值给系统内置 变量REPLY