编程语言

Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsear

12-09
随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构的兴起,看似一个简单的应用,后台可能很多服务在支撑:一个请求可能需要多个服务的调用:当请求迟缓或不可用时,无法得知是哪个微服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin 分布式跟踪系统就能很好的解决这样的问题. 那么到底怎么使用呢?接下来完成一个具体的实例来体会一把微服务链路追踪: 本文使用的 Spring Cloud Finchley 版本,和其他版本会有不同 我们使用user-service,order-serv

java的多线程学习,第三记

12-09
一,Java内存模型 Java内存模型规定了所有的内存变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来).线程对变量的所有操作(读取,赋值)都必须在工作内存中进行.不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均通过主内存来完成 基于这种模型的多线程就会出现很多问题,多线程的---------脏读数据 举例说明: i=123++; 现在有同时2个线程执行这段代码,加入初始值为123,那么有两个线程正

springMVC @[email protected]@[email protected]@Controller的区别和理解

12-09
作用: @Component------------------------泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注.(Component-------成分; 组分; 零件) @Resource------------------------(资源) @Autowired-----------------------(自动绑定) @Repository-----------------------于标注数据访问组件,即DAO组件(repository-------仓库; 贮藏

python常用模块——logging

12-09
日志模块 logging 默认情况下Python的logging模块的日志级别是warning,默认输出到标准输出stdout 默认的日志格式为 日志级别:Logger名称:用户输出消息: 设置logging的默认格式及输出位置使用basicConfig方法. 一. logging模块的常用方法 1. basicConfig(**kwargs) 配置日志基本配置:参数可以是如下: filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储

【Python学习】request库

12-09
Requests库(https://www.python-requests.org/)是一个擅长处理那些复杂的HTTP请求.cookie.header(响应头和请求头)等内容的Python第三方库. 提交一个最基本的表单 大多数网页表单都是由一些HTML字段.一个提交按钮.一个在表单处理完之后跳转的"执行结果"(表单属性action的值)页面构成. 一个最简单的表单(http://www.pythonscraping.com/pages/files/form.html) 这个表单的源码

Python编程:从入门到实践pdf下载

12-09
作者: [美]埃里克·马瑟斯 出版社: 人民邮电出版社副标题: 从入门到实践原作名: Python Crash Course译者: 袁国忠 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib.NumPy 和Pygal 等强大的Python 库和工具介绍,以及列表.字典.if 语句.类.文件与异常.代码测试等内容:第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D

5.spring:注解配置 Bean

12-09
在classpath中扫描组件 组键扫描:能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定的组件包括: ->@Componment:基于注解,标识一个受Spring管理的组键 ->@Respository:标识持久层组件 ->@Service:标识服务层 ->@controller:标识表现层组件 对于扫描到的组件,Spring有默认的命名策略,使用非限定类名,第一个字母小写,也可以通过注解中value属性值标识组建的名称 在classpath中扫描组键当在

面试 | 冒泡排序优化

12-09
一般冒泡排序: void bubble_sort(vector<int>& nums) { int i, j; int len = nums.size(); for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]); } 优化后冒泡排序: 加入一个布尔变量,作用是标识该轮有没有进行数据的交换,若在某一

python之数据类型补充、集合、深浅copy

12-09
一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址. 小数据池: 前提:int,str,bool 1,节省内存. 2,提高性能和效率. 小数据池是什么? 在内存中,创建一个'池',提前存放了 -5 ~256 的整数,一定规则的字符串和bool值. 后续程序中,如果设置的变量指向的是小数据池的内容,那么就不会再内存中重新创建. 小数据池与代码块的关系

python魔法函数之__getitem__

12-09
魔法函数会增强python类的类型,独立存在 class Company: def __init__(self, employees): self.employees = employees def __getitem__(self, item): return self.employees[item] company = Company(['a', 'b', 'c']) for val in company: print(val) company1 = company[:2] for val

2017级算法第二次上机-C.芸如的入学测试

12-09
这道题考察的实际就是一个简单的前缀和问题.值的注意的还是取模的问题.两个数取模,以防万一,出现对负数取模的问题 可以先加上mod然后再对mod取模. 能long long就不int #include <algorithm> #include <iostream> using namespace std; const int maxlen = 1e6 + 10; const int mod = 10007; long long ar[maxlen]; long long prefix

python学习之-对象的的初始化与__init__方法

12-09
class OldboyStudent: # name='xxxx' # 相似的特征: school = 'oldboy' # 相似的技能 def choose_course(self): print('choosing course....') stu1=OldboyStudent()stu2=OldboyStudent()stu3=OldboyStudent() 对象的本质也是一个名称空间stu1.name='王三炮'stu1.gender='male'stu1.age=38 stu2.na

axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析

12-09
环境:用axis2生成服务端,用aixs做客户端 1:直接返回String[]: public String[] testArr(String name) { String[] ret=new String[]{"一二三四五","上山打老虎",name}; return ret; } 发布后,wsdl为: 而普通返回String方法的格式为: 可以看到,返回String[]比返回String的响应中多了一个参数maxOccurs="unbounded&qu

对Java Serializable(序列化)的理解和总结(二)

12-09
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化 b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 c,serialVersionUID 这个的值到底是在怎么设置的,有什么用.有的是1L,有的是一长串数字,迷惑ing. 我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题. 在处理这个问题之前,你要先知道一个问题,这个比较重要. 这个Serializable接口,以及相关的东西,全部

算法之排序:堆排序

12-09
public static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } public static void heapInsert(int[] arr, int index) { while (arr[index] > arr[(index - 1) / 2]) { swap(arr, index, (index - 1) / 2); index = (index

【Python】filter()的结果仍可以被filter()

12-09
def test_twice_filter(): list_a = [1, 2, 3, 4, 5] x = filter(lambda m: m > 2, list_a) y = filter(lambda n: n < 4, x) print(list(y)) if __name__ == '__main__': test_twice_filter() 结果: ssh://[email protected]:250/usr/bin/python3.6 -u /home/dba/HAL_900

JVM垃圾回收(四)- GC算法:实现(1)

12-09
GC算法:实现 上面我们介绍了GC算法中的核心概念,接下来我们看一下JVM里的具体实现.首先必须了解的一个重要的事实是:对于大部分的JVM来说,两种不同的GC算法是必须的,一个是清理Young Generation的算法,另一种是清理Old Generation的算法. 在JVM里有各种各样的这种内置算法,如果你没有特别指定GC算法,则会使用一个默认的.适应当前平台(platform-specific)的算法.接下来我们会解释每种算法的工作原理. 下面的列表提供了一个快速的预览,关于哪些算法可能

python收集参数

12-09
最近学习python,看<Python基础教程>(第2版),发现函数定义里面有一个"收集参数"很有趣. 用户定义函数时,可以定义一个确定参数数量的函数,如: >>> store(data, name1, name2, name3) 但是假如定义前不知道有多少个参数,该如何定义呢,C++和java中都有相应的解决方法,python中自然也有 def print_params(*params): print(params) 这里参数前面加上了星号*,即是不确定

【译】spring注解编程模型

12-09
原文链接: https://github.com/spring-projects/spring-framework/wiki/Spring-Annotation-Programming-Model#stereotype-annotations 原文链接: https://github.com/spring-projects/spring-framework/wiki/Spring-Annotation-Programming-Model#stereotype-annotations 本文内容 概

对列表里的字典按年龄从小到大排序

12-09
infors=[{'name':'laowang','age':10},{'name':'xiaoming','age':30},{'name':'hehe','age':20}] infors.sort(key=lambda x:x['age']) print(infors) 原文地址:https://www.cnblogs.com/z-x-y/p/10090746.html