孤狼独闯天宇

孤狼独闯天宇 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

孤狼独闯天宇 提出了问题 · 10月28日

redis命令串行执行问题???

比如有一个点赞功能,服务是集群部署的(8080,8090)两个服务,然后通过nginx做负载均衡。
在并发下,请求可能会被路由到两个服务中去,然后执行redis的hincrby自增操作,按道理来说1000个人点赞就会有1000个赞,但是实际上却不是,点赞数远远少于实际的数量。
这是由于并发造成的。

疑惑:多个客户端连接redis服务,并发送多条自增命令,按道理来说应该是串行执行才对呀,不存在并发。为什么会出现自增的数量不对呢?

关注 3 回答 2

孤狼独闯天宇 提出了问题 · 10月26日

公司里的服务器一般都是通过什么方式部署的??

比如redis集群、nginx、mysql等等这些服务,是通过编译安装的还是通过docker容器部署的。

关注 2 回答 0

孤狼独闯天宇 提出了问题 · 10月16日

python 使用 Selenuim怎么抓取动态生成的html内容???

python 使用 Selenuim抓取的网页内容,但是动态生成的部分无法拿到?还有其它办法可以拿到吗

关注 3 回答 2

孤狼独闯天宇 提出了问题 · 10月13日

chrome浏览器F12查看到的网站js文件是加密压缩过的,可以还原吗?

image

上面的js代码根本看不懂,有什么办法可以把它们还原吗

关注 3 回答 3

孤狼独闯天宇 提出了问题 · 8月28日

解决后端返回图片的stream流,前端怎么显示出图片

 /**
     * 礼包图片下载
     * @return
     */
    @GetMapping(value= "/dowloadPacketImage")
    public void dowloadPacketImage( HttpServletResponse response, String packetPicPath){
        if(StringUtils.isBlank(packetPicPath)) {
            logger.info("礼包图片路径为空");
            return;
        }
        String imgName = packetPicPath.substring(packetPicPath.lastIndexOf(File.separator) + 1);
        DownloadUtil.downloadFile(response, packetPicPath, imgName);
    }
  public static void downloadFile(HttpServletResponse response, String filePath, String fileName) {
        OutputStream responseStream = null;
        try {
            byte[] resultBytes = FileUtils.readFileToByteArray(new File(filePath));
            // response.setCharacterEncoding("UTF-8");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

            responseStream = response.getOutputStream();
            responseStream.write(resultBytes, 0, resultBytes.length);

            responseStream.flush();
            response.flushBuffer();
        } catch (Exception e) {
            if (null != responseStream) {
                try {
                    responseStream.close();
                } catch (IOException ignored) {
                }
            }
        }
    }

关注 3 回答 2

孤狼独闯天宇 提出了问题 · 8月19日

docker-compose 搭建redis哨兵,哨兵配置文件监听master节点的问题???

port 26379
dir /tmp
sentinel monitor mymaster 172.20.0.3 6379 2
sentinel auth-pass mymaster redis_pwd
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

想问下 sentinel monitor mymaster 监听master节点的IP和端口是写宿主机的IP和映射端口还是写master节点容器的ip和端口。

如果写成宿主机的IP和端口的话,需要在docker-compose.yml配置network参数吗?

关注 1 回答 0

孤狼独闯天宇 提出了问题 · 8月9日

使用docker-compose搭建redis哨兵,启动哨兵master节点就变成了slave了????

使用docker-compose搭建redis哨兵集群
是一主二从三哨兵的模式:
docker-compose.yml搭建主从

version: '3.0'
services:
  master:
    container_name: redis-master
    restart: always
    image: redis:5.0.9
    ports:
      - "6379:6379"
    volumes:
      - ./master/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
      - ./master/data:/data:rw
      - ./master/logs:/var/log/:rw
    command: redis-server --requirepass pwd_123  --masterauth pwd_123

  slave1:
    container_name: redis-slave-1
    restart: always
    image: redis:5.0.9
    ports:
      - "6380:6379"
    volumes:
      - ./slave1/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
      - ./slave1/data:/data:rw
      - ./slave1/logs:/var/log/:rw
    command:  redis-server --slaveof redis-master 6379 --requirepass pwd_123 --masterauth pwd_123 --appendonly yes

  slave2:
    container_name: redis-slave-2
    restart: always
    image: redis:5.0.9
    ports:
      - "6381:6379"
    volumes:
      - ./slave2/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
      - ./slave2/data:/data:rw
      - ./slave2/logs:/var/log/:rw
    command:  redis-server --slaveof redis-master 6379 --requirepass pwd_123 --masterauth pwd_123 --appendonly yes

查看master的信息
角色是master角色

 docker exec -it 434e343e9a4e /bin/bash
root@434e343e9a4e:/data# redis-cli
127.0.0.1:6379> auth pwd_123
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.19.0.1,port=6379,state=online,offset=56,lag=1
slave1:ip=172.19.0.1,port=6379,state=online,offset=56,lag=1
master_replid:7e029af3597a6390cbf2fed4b1a114c8c6a92c77
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56

哨兵的docker-compose.yml

version: '3.0'
services:
  sentinel1:
    image: redis:5.0.9
    container_name: redis-sentinel-1
    ports:
      - 26379:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
  sentinel2:
    image: redis:5.0.9
    container_name: redis-sentinel-2
    ports:
      - 26380:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
  sentinel3:
    image: redis:5.0.9
    container_name: redis-sentinel-3
    ports:
      - 26381:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf

三个哨兵的sentinel.conf为:

port 26379
dir /tmp
sentinel monitor mymaster 192.168.72.158 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster pwd_123
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

哨兵启动后,再次进入master容器,角色就变成了slave,而且其它两个节点角色也都是slave。没有角色为mater节点了。

docker exec -it 434e343e9a4e /bin/bash
root@434e343e9a4e:/data# redis-cli
127.0.0.1:6379> auth pwd_123
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.72.158
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:3649
master_link_down_since_seconds:1596963854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7e029af3597a6390cbf2fed4b1a114c8c6a92c77
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3649
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3649

查看其中一个哨兵发现:

redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
 1) "name"
 2) "mymaster"
 3) "ip"
 4) "192.168.72.158"
 5) "port"
 6) "6379"
 7) "runid"
 8) "3f270936377dd5132a482abb3fc4ce238f440240"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "134"
19) "last-ping-reply"
20) "134"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "6669"
25) "role-reported"
26) "slave"
27) "role-reported-time"
28) "46803"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "3"
33) "num-other-sentinels"
34) "3"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

num-slaves 变成三个从节点了,见鬼!!!!!

关注 2 回答 0

孤狼独闯天宇 关注了标签 · 8月7日

大数据

大数据(Big Data)又称为巨量资料,指需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。“大数据”概念最早由维克托·迈尔·舍恩伯格和肯尼斯·库克耶在编写《大数据时代》中提出,指不用随机分析法(抽样调查)的捷径,而是采用所有数据进行分析处理。大数据有4V特点,即Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。

大数据 - 定义

对于“大数据”(Big data)研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
根据维基百科的定义,大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。

大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。

从技术上看,大数据与云计算的关系就像一枚硬币的正反面一样密不可分。大数据必然无法用单台的计算机进行处理,必须采用分布式架构。它的特色在于对海量数据进行分布式数据挖掘,但它必须依托云计算的分布式处理、分布式数据库和云存储、虚拟化技术。

随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。《着云台》的分析师团队认为,大数据(Big data)通常用来形容一个公司创造的大量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。

大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。

大数据 - 特征

容量(Volume):数据的大小决定所考虑的数据的价值的和潜在的信息;
种类(Variety):数据类型的多样性;
速度(Velocity):指获得数据的速度;
可变性(Variability):妨碍了处理和有效地管理数据的过程。
真实性(Veracity):数据的质量
复杂性(Complexity):数据量巨大,来源多渠道

大数据 - 技术盘点

HadoopMapReduce

思维模式转变的催化剂是大量新技术的诞生,它们能够处理大数据分析所带来的3个V的挑战。扎根于开源社区,Hadoop已经是目前大数据平台中应用率最高的技术,特别是针对诸如文本、社交媒体订阅以及视频等非结构化数据。除分布式文件系统之外,伴随Hadoop一同出现的还有进行大数据集处理MapReduce架构。根据权威报告显示,许多企业都开始使用或者评估Hadoop技术来作为其大数据平台的标准。

NoSQL数据库

我们生活的时代,相对稳定的数据库市场中还在出现一些新的技术,而且在未来几年,它们会发挥作用。事实上,NoSQL数据库在一个广义上派系基础上,其本身就包含了几种技术。总体而言,他们关注关系型数据库引擎的限制,如索引、流媒体和高访问量的网站服务。在这些领域,相较关系型数据库引擎,NoSQL的效率明显更高。

内存分析

在Gartner公司评选的2012年十大战略技术中,内存分析在个人消费电子设备以及其他嵌入式设备中的应用将会得到快速的发展。随着越来越多的价格低廉的内存用到数据中心中,如何利用这一优势对软件进行最大限度的优化成为关键的问题。内存分析以其实时、高性能的特性,成为大数据分析时代下的“新宠儿”。如何让大数据转化为最佳的洞察力,也许内存分析就是答案。大数据背景下,用户以及IT提供商应该将其视为长远发展的技术趋势。

集成设备

随着数据仓库设备(Data Warehouse Appliance)的出现,商业智能以及大数据分析的潜能也被激发出来,许多企业将利用数据仓库新技术的优势提升自身竞争力。集成设备将企业的数据仓库硬件软件整合在一起,提升查询性能、扩充存储空间并获得更多的分析功能,并能够提供同传统数据仓库系统一样的优势。在大数据时代,集成设备将成为企业应对数据挑战的一个重要利器。

关注 968

孤狼独闯天宇 提出了问题 · 8月3日

解决redis哨兵集群中多个master节点,数据怎么分配的???

比如在哨兵模式下,经典的三节点模式:一主二从,写操作都在主节点,然后从节点复制主节点数据提供读操作。

但是如果哨兵模式架构是多个主节点多个从节点,那么数据写入时是怎么判断它是往哪个主节点写入的呢?

比如有三个master节点负责写入操作,并且每个master分别对应两个slave节点,总共有9个节点。

如果写入一个key比如。redis.set("test",11111); 那么这个值到底写入了哪个master节点呢;还有就是读取redis.get("test")怎么判断这个key存在哪个salve节点的呢?

关注 2 回答 1

孤狼独闯天宇 提出了问题 · 8月1日

springboot怎么读取不同yml配置文件

QQ截图20200801144713.png

我配置了三个文件夹,dev、prod、test 代表三个不同的环境配置文件,
然后通过最外层的application.yml来加载不同文件夹的配置文件,
其中system.yml的配置为:

system:
  config: "dev-env"

application-dev.yml为:

#启动端口配置
server:
  port: 8085
#spring配置
spring:
  application:
    name: multi-env  #应用名

但是通过

 @Value("${system.config}")
    public  String config;

报错

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'system.config' in value "${system.config}"

但是可以读取application-dev.yml的配置值

 @Value("${server.port}")
    public  String config;

最外层的application.yml用于动态切换环境

spring:
  profiles:
    active: ${profiles.active} 

pom.xml配置

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <!--使用默认的变量分割符即${}-->
                <configuration>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>

        <!-- 测试文件的编译路径设置 -->
        <testResources>
            <testResource>
                <!--这里是关键! 根据不同的环境,把对应文件夹里的配置文件打包-->
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.yml</include>
                </includes>
                <filtering>true</filtering>
            </testResource>

            <testResource>
                <!--这里是关键! 根据不同的环境,把对应文件夹里的配置文件打包-->
                <directory>src/main/resources/${profiles.active}</directory>
                <includes>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </testResource>
        </testResources>

        <resources>
            <resource>
                <!--打包该目录下的 application.yml -->
                <directory>src/main/resources</directory>
                <includes>
                    <include>application.yml</include>
                </includes>
                <!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <!-- ${profiles.active}由profile提供 -->
                <directory>src/main/resources/${profiles.active}</directory>
                <includes>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>

        </resources>

        <!-- 定义 filter,即该资源中的值将会用来替换同名属性(设置 filtering 为 true 的资源中的属性)-->
        <filters>
            <filter>
                src/main/resources/${profiles.active}/application-${profiles.active}.yml
            </filter>
        </filters>
    </build>

    <profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>

        </profile>

        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>

        <profile>
            <!-- 生产环境 -->
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
    </profiles>

关注 3 回答 2

认证与成就

  • 获得 18 次点赞
  • 获得 260 枚徽章 获得 3 枚金徽章, 获得 57 枚银徽章, 获得 200 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2016-07-27
个人主页被 2.1k 人浏览