小型框架合集2

34 篇文章 1 订阅
订阅专栏

十、SeaTa分布式事务

        添加依赖

        <!--    Seata和SpringBoot整合依赖      -->
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
        </dependency>
        <!--   Seata 完成分布式事务的两个相关依赖(Seata会自动使用其中的资源)   -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>

消费者只添加

      <!--    Seata和SpringBoot整合依赖      -->
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
        </dependency>

        添加配置信息 

seata:
  #定义事务分组,方便与其他项目区分  
  tx-service-group: csmall_group
  service:
    vgroup-mapping:
      #分组配置按照默认的配置seata      
      csmall_group: default
    grouplist:
      #配置seata服务器地址和端口号      
      default: localhost:8091

        事务触发者(消费者)添加注解 :谁是TM就添加注解

    //Global全局 Transactional事务
    //方法添加注解后,会设置为分部式事务的起点,当前模块就是TM事务管理器
    //所有远程调用操作数据库的功能都在同一个事务中,体现事务原子性
    @GlobalTransactional
    @Override
    public void buy() {
        OrderAddDTO orderAddDTO = new OrderAddDTO();
        orderAddDTO.setMoney(20);
        orderAddDTO.setCommodityCode("PC100");
        orderAddDTO.setUserId("UU100");
        orderAddDTO.setCount(100);
        log.info("新增订单信息为:{}",orderAddDTO);
        //dubbo调用,完成订单的增加
        dubbooderService.orderAdd(orderAddDTO);
    }

 

十一、Sentinel框架

        主要用于限流

     <!--Spring Cloud Sentinel-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        配置路径,和spring cloud nacos处于同一路径 

sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel提供的运行状态仪表盘
        port: 8721 #执行限流的端口号,每个项目需设置不同端口号,例如cart模块设置为8722

        添加注解,添加在controller中。在方法运行前不会被检测到,必须执行一次后才可以被检测到

  @SentinelResource("减少商品库存数")
    public JsonResult reduceCommodityCount(
                        StockReduceCountDTO stockReduceCountDTO){
        // 调用业务逻辑层
        stockService.reduceCommodityCount(stockReduceCountDTO);
        return JsonResult.ok("库存减少完成!");
    }

十二、Gateway网关

添加网关依赖

        <!--   SpringGateway的依赖   -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--   Nacos依赖   -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--   网关负载均衡依赖    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

配置文件,配置网关路由

server:
  port: 9000
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        # 网关也是微服务项目的一部分,所以也要注册到Nacos
        server-addr: localhost:8848
    gateway:
      # routes就是路由的意思,这是属性是一个数组类型,其中的值都是数组元素
      routes:
        # 数组元素配置中,-开头表示一个数组元素的开始,后面所有内容都是这个元素的内容
        # id表示当前路由的名称,和任何之前出现过的名字没有任何关联,唯一的要求就是不要后之后的id重复
        - id: gateway-beijing
          # 下面的配置是路由的目标,也就是目标的服务器名称
          # lb是LoadBalance的缩写,beijing是服务器名称
          uri: lb://beijing
          # predicates是断言的意思,就是满足某个条件时,去执行某些操作的设置
          predicates:
            # predicates也是一个数组,配置断言的内容
            # 这个断言的意思就是如果访问的路径是/bj/开头(**表示任何路径),
            # 就去访问上面定好的beijing服务器
            # ↓   P一定要大写!!!!!!!
            - Path=/bj/**
    # spring.cloud.gateway.routes[0].uri
    # spring.cloud.gateway.routes[0].predicates[0]

routes:

{                在配置中添加数组后是这个样子

                {"id":"gateway-beijing","uri":"lb://beijing","predicates":{"Path=/bj/**"}},

}

  动态路由配置:

        不需要再繁琐的添加路由配置

 gateway:
      #开启网关动态路由配置
      #匹配规则:在网关端口号后先编写注册在nacos的名称再编写路径
      #eg:localhost:9081/bj/show -> localhost:9000/beijing/bj/show
      discovery:
        locator:
          enabled: true

十二、Spring Data框架和ES搜索

        类似mybaits,数据源整合框架,此框架用作ES搜索引擎的数据源配置

 <!--   Spring Data Elasticsearch 整合依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
#es ip位置和端口号
spring.elasticsearch.rest.uris=http://localhost:9200
#设置日志门槛
logging.level.cn.tedu.search=debug
#SpringDataElasticsearch框架中有一个框架日志需要设置日志门槛
logging.level.org.elasticsearch.client.RestClient=debug

        添加数据库的实体类

@Data
@Accessors(chain = true) //支持链式set赋值
@AllArgsConstructor      //自动生成全参构造方法
@NoArgsConstructor       //自动生成无参构造方法
//@Document 对应ES框架的一个实体类
//indexName指定ES索引名  例如http中的(/questions),没有的话会自动创建
@Document(indexName = "items")
public class Item implements Serializable {
    //SpringData通过Id注解标记当前实体类主键
    @Id
    private Long id;
    //标记分词,定义分词器
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String title;
    //FieldType.Keyword不分词按整体保存
    @Field(type = FieldType.Keyword)
    private String category;
    @Field(type = FieldType.Keyword)
    private String brand;
    @Field(type = FieldType.Double)
    private Double price;
    //index=false不添加索引
    @Field(type = FieldType.Keyword,index=false)
    private String imgPath;
}

        编写Repository层,等同于mapper层的mapper 

@Repository
//等同于mapper层的mapper,这是SpringData的命名规范,也必须 extends ElasticsearchRepository
public interface ItemRepository extends ElasticsearchRepository<Item, Long> {
    // ItemRepository接口要继承SpringData框架提供的父接口ElasticsearchRepository
    // 一旦继承,当前接口就可以编写连接ES操作数据的代码了,
    // 继承了父接口后,SpringData会根据我们泛型中编写的Item找到对应的索引
    // 会对这个索引自动生成基本的增删改查方法,我们自己无需再编写
    // ElasticsearchRepository<[要操作的\关联的实体类名称],[实体类主键的类型]>

    //SpringData实现自定义查询
    //ES数据库没有SQL语句
    //query(查询)等价SQL的select
    // Item/Items:确定要查询的实体类(对应的索引),不带s是查询单个对象的,带s的查集合
    // By(通过/根据):标识开始设置查询条件的单词,等价于sql中的where
    // Title:要查询的字段,可以是Item实体类中声明的任何字段
    // Matches(匹配):执行查询条件的操作,Matches是匹配字符串类型的关键字,支持分词等价sql中的like
    Iterable<Item> queryItemsByTitleMatches(String title);

    //多条件查询(与)
    Iterable<Item> queryItemsByTitleMatchesAndBrandMatches(String title, String brand);

    //条件查询结果排序
    //多条件查询(或)
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand);

    //分页查询
    Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand, Pageable pageable);
}

public interface ItemRepository extends ElasticsearchRepository<Item, Long>  

//需要继承springdata给定的父接口可以直接使用基本的增删改查方法

//要实现的实体类,主键类型

         实例测试

      //执行单增
    @Test
    void addOne() {
        Item item = new Item()
                .setId(1L)
                .setTitle("小米卷纸")
                .setCategory("生活")
                .setBrand("罗技")
                .setPrice(10.0)
                .setImgPath("/xioami.jpg");
        //利用自带的添加方法添加
        itemRepository.save(item);
        System.out.println("添加OK");
    }

    //单查
    @Test
    void getOne() {
        //optional类型只能放一个元素,类似List但list能放多个
        Optional<Item> byId = itemRepository.findById(1L);
        //把他从Optional里取出来
        Item item = byId.get();
        System.out.println(item);
    }

    //批量增
    @Test
    void addList() {
        //实例化一个list对保存到es数据库中
        List<Item> list = new ArrayList<>();
        list.add(new Item(2L, "罗技激光有线游戏鼠标", "鼠标"
                , "罗技", 9.9, "/2.jpg"));
        list.add(new Item(3L, "雷蛇机械无线办公键盘", "键盘"
                , "雷蛇", 119.9, "/3.jpg"));
        list.add(new Item(4L, "微软有线静音办公鼠标", "鼠标"
                , "微软", 29.9, "/4.jpg"));
        list.add(new Item(5L, "罗技机械有线背光键盘", "键盘"
                , "罗技", 236.0, "/5.jpg"));
        itemRepository.saveAll(list);
        System.out.println("批量添加OK");
    }

    //全查
    @Test
    void getAll() {
        Iterable<Item> items = itemRepository.findAll();
        for (Item item : items) {
            System.out.println(item);
        }
        System.out.println("------------------------");
        items.forEach(item -> System.out.println(item));
    }

    //单查
    @Test
    void queryOne() {
        //查询es中items索引数据,title中字段包含"游戏"的分词数据
        Iterable<Item> items = itemRepository.queryItemsByTitleMatches("键盘");
        items.forEach(item -> System.out.println(item));
    }

    //多条件查询
    @Test
    void queryTwo() {
        //查询ES中,items索引里,title字段包含"游戏",品牌是"罗技"的数据
        Iterable<Item> items = itemRepository
                .queryItemsByTitleMatchesAndBrandMatches("游戏", "罗技");
        items.forEach(item -> System.out.println(item));
    }

    //多条件查询结果排序
    @Test
    void queryTwoorderby() {
        //查询ES中,items索引里,title字段包含"游戏",品牌是"罗技"的数据
        Iterable<Item> items = itemRepository
                .queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc("游戏", "罗技");
        items.forEach(item -> System.out.println(item));
    }

    // 自定义分页查询
    @Test
    void queryPage(){
        int page=2;             // 要查询的页码,写1表示查询第一页
        int pageSize=2;         // 每页条数的设置
        Page<Item> pages=itemRepository
                .queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(
                        "游戏","罗技", PageRequest.of(page-1,pageSize));
        pages.forEach(item -> System.out.println(item));
        // pages对象包含的分页信息输出
        System.out.println("总页数:"+pages.getTotalPages());
        System.out.println("总条数:"+pages.getTotalElements());
        System.out.println("当前页:"+(pages.getNumber()+1));
        System.out.println("每页条数:"+pages.getSize());
        System.out.println("是否是首页:"+pages.isFirst());
        System.out.println("是否是末页:"+pages.isLast());

    }

十三、Pagehelper分页

添加依赖

        <!--分页-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>

在业务中的使用

        Paperhelper框架完成分页的功能原理是sql语句后自动添加limit。

    //Mapper层
    //查所有
    List<LogMg> selectAll();
    //业务层接口
    //查所有
    List<LogMg> selectAll( Integer page,  Integer pageSize);

        page分页只需要包裹住业务层即可不需要关注mapper,controller层只需要调用业务接口就可以。

    //分页查询所有订单信息的方法
    //参数page是页码,pageSize是每页条数
    public List<LogMg> getAllOrdersByPage(Integer page, Integer pageSize) {
        //pagehepler框架实现分页最核心代码,是要编写在执行查询数据代码之前
        PageHelper.startPage(page, pageSize);
        //上面设置好分页执行条件,下面的查询在执行时,SQL会自动追加limit关键字
        List<LogMg> list = orderMapper.findAllOrders();
        return list;
    }

十四、Kafka消息队列

              添加依赖

 <!--Kafka整合SpringBoot=依赖-->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

             添加配置 

spring:
  kafka:
    #定义kafka的位置
    bootstrap-servers: localhost:9092
    #consumer.group-id  是kafka框架必需配置,是话题分组,来区分不同项目消息
    #这个分组名称会在发送时自动前缀在话题名称前
    consumer:
      group-id: csmall
@EnableDubbo
@SpringBootApplication
//启动kafka
@EnableKafka
//为了测试Kafka添加Spring自带的定时任务,向Kafka发送消息
@EnableScheduling
public class CsmallCartWebapiApplication {

    public static void main(String[] args) {
        SpringApplication.run(CsmallCartWebapiApplication.class, args);
    }

}

         测试

        消息产生

//这个类要实现周期运行代码(定时任务)
@Component
public class Producer {
    //直接从spring中获取kafkaTemplate对象
    //这个对象会在springboot启动时,根据配置自动生成
    //kafkaTemplate<话题类型,消息类型>
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    int i = 0;

    //实现每隔15秒,发送以此话题
    @Scheduled(fixedRate = 15000)
    public void sendMessage() {
        Cart cart = new Cart();
        cart.setId(i++);
        cart.setUserId("UU100");
        cart.setCommodityCode("PC100");
        cart.setPrice(RandomUtils.nextInt(90) + 10);
        cart.setCount(RandomUtils.nextInt(10) + 1);
        //将cart转换为JSON格式发送
        //{"id":"1","userId":"UU100"....}
        Gson gson = new Gson();
        String json = gson.toJson(cart);
        System.out.println("要发送的JSON消息为"+json);
        //kafka发送
        kafkaTemplate.send("001",json);
    }
    
}

         消息接受

//要接受Kafka消息必须是spring中装载了的类
@Component
public class Consumer {
    //Springkafka使用了监听机制
    //我们指定了一个话题,只要这个话题发送了信息,这个监听器就会通知我们
    //topics="创建的话题"
    @KafkaListener(topics = "001")
    //方法的参数和返回值是话题指定的不能修改<话题类型,消息类型>
    public void received(ConsumerRecord<String, String> record) {
        //record由监听器自动赋值
        String json = record.value();
        Gson gson = new Gson();
        //                        需要转的值,转的类型
        Cart cart = gson.fromJson(json, Cart.class);
        System.out.println("接受消息" + cart);
    }
}

十五、RabbitMQ消息队列

        添加依赖

        <!--rabbitmq依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

      配置

spring: 
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

        创建交换机队列key 

@Slf4j
@Configuration
//配置Rabbit交换机,路由key和队列关系
//交换机,队列是实体对象,key是他俩绑定关系
public class RabbitConfig {
    public static final String STOCK_EX = "stock_ex";
    public static final String STOCK_ROUT = "stock_rout";
    public static final String STOCK_QUEUE = "stock_queue";

    //创建交换机
    @Bean
    public DirectExchange stockDirectExchange() {
        return new DirectExchange(STOCK_EX);
    }
    //创建队列
    @Bean
    public Queue stockQueue(){
        return new Queue(STOCK_QUEUE);
    }
    //绑定将队列绑定到交换机,和绑定的key
    @Bean
    public Binding stockBinding(){
        return BindingBuilder
                .bind(stockQueue()).to(stockDirectExchange())
                .with(STOCK_ROUT);
    }
}

        添加到消息队列 

       //秒杀成功记录添加到消息队列
        //success信息与秒杀sku信息大部分相同,赋值
        Success success = new Success();
        BeanUtils.copyProperties(seckillOrderAddDTO.getSeckillOrderItemAddDTO(), success);
        success.setUserId(userId);
        success.setOrderSn(orderAddVO.getSn());
        success.setSeckillPrice(seckillOrderAddDTO.getSeckillOrderItemAddDTO().getPrice());
        rabbitTemplate.convertAndSend(
                RabbitMqComponentConfiguration.SECKILL_EX,
                RabbitMqComponentConfiguration.SECKILL_QUEUE,
                success
        );

        接受

@Slf4j
@Component
//创建监听器
@RabbitListener(queues = RabbitConfig.STOCK_QUEUE)
public class RabbitMQConsumer {
    //唯一的注解,监听到后执行的方法
    @RabbitHandler
    public void process(Stock stock){
        System.out.println("消息接受完成:"+stock);
        log.info("消息接受完成:{}",stock);
    }
}
分享别人写的一个小型js框架
10-30
分享别人写的一个小型js框架
小型php框架,超轻量级的PHP框架 MiniFramework
weixin_33318222的博客
03-22 1419
软件介绍MiniFramework 简介MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。MiniFramework 能够帮助开发者用最小的学习成本快速构建 Web 应用,在满足开发者最基础的分层开发、数据库和缓存访问等少量功能基础上,做到尽可能精简,以帮助您的应用基于框架高效运行。目录结构MiniFramewo...
小型企业Web开发框架
huakai_sun的博客
10-13 6034
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。 技术选型 后端技术: 技术 名称 官网
前端Svelte框架初体验
xiangzhihong8的专栏
07-28 4009
Svelte是一个新兴的热门前端框架,作者是RichHarris,被称为前端界的【轮子哥】,有Ractive、Rollup和Buble开源作品。在官方的介绍中,Svelte即是一个前端UI框架,同时也是一个编译器。在《StateofJSsurveyof2020》报告中,它被预测为未来十年可能取代React和Vue等其他框架的新兴技术。在开源托管网站Github上,Svelte也获得了超过61k的关注,这仅次于明星框架React和Vue。...
嵌入式框架分层
weixin_46185705的博客
01-17 3570
如何进行嵌入式的框架分层,硬件驱动层?功能模块层?应用接口层?业务逻辑层?应用层?这些又是啥
BootStrap前端框架
Skf_0004010的博客
11-04 4794
BootStrap 1、Bootstrap介绍 什么是bootstrap? 简单,直观,强悍的前端开发框架,让web开发更迅速,简单。来自Twitter,是目前很受欢迎的前端框架之一。 Bootstrap是基于HTML,CSS,Javascript的 特点 移动端设备优先:自Bootstrap3起,框架包含了贯穿于整个库的移动设备优先的样式 响应式设计:采用栅格布局(底层实现原理:媒体查询结合流体布局) 偏UI,综合框架,包含一些常用的UI组件以及一些JS组件 Bootstrap的适用场景? b
php小型框架(tome)
05-27
这是我自用的PHP开发框架,如有不明白的地方可以看我的博客或博客留言 http://blog.csdn.net/tomyjohn
小型项目框架
11-19
小型iOS框架 这是一个小型框架
txiki:小型 PHP 框架
06-16
代码状态构建状态(主分支)要求00 PHP 5.3.0+ MySQL mod_rewrite 已激活(下面的教程,但也有 ,一个无 mod_rewrite 版本的 MINI)安装在application/config/config.php编辑数据库凭据执行_install/夹中的 .sql ...
自己封装的小型PHP框架
09-22
根据多年的工作经验,也是为了更好的锻炼技术能力,在业余时间,参考类似资料,进行封装的一个框架模型,框架内以完成了一个整体的架构,DUBUG 操作日志 错误日志 以及数据库操作等等 技术点 欢迎大家来提建议
Spring Boot 统一数据返回格式:优化前后端开发协作的利器
最新发布
良月柒
04-29 245
通过本文的介绍,我们了解了Spring Boot中统一数据返回格式的重要性,以及如何设计和处理统一的数据返回格式。统一的数据返回格式可以使得接口返回的数据格式规范、统一、易于理解和处理,提高了前后端开发的效率和协作效果。希望本文能够帮助你更好地理解和应用Spring Boot中的统一数据返回格式。
快速构建Spring boot项目
Fxdll的博客
04-22 537
2、运行4、开发环境热部署查看目前已有的依赖。
# 使用 spring boot 时,@Autowired 注解 自动装配注入时,变量报红解决方法:
段子手168的博客
04-29 147
# 使用 spring boot 时,@Autowired 注解 自动装配注入时,变量报红解决方法:
spring boot的项目+nginx,怎么预防点击劫持(clicekJacking)
keyboard专栏
04-23 591
通过这些措施,你可以在Spring Boot和Nginx层面有效防御点击劫持攻击。综合使用这些技术能够确保你的应用不仅安全,还能适应各种不同的部署环境和安全需求。这样的配置不仅增加了安全性,也提高了应用的健壮性。
spring的CacheManager
weixin_42594143的博客
04-26 462
上述代码中,我们通过@Cacheable注解将getUserById方法标记为需要缓存的方法,并指定缓存名称为"myCache"。当该方法被调用时,如果缓存中已经存在对应的结果,则直接返回缓存中的数据,否则执行方法体并将结果存入缓存中。需要注意的是,@Cacheable注解默认使用方法的参数作为缓存的key,因此在使用时需要保证参数的唯一性。在使用缓存的地方,可以通过@Cacheable注解来标记需要缓存的方法,并指定缓存名称。上述代码中,我们使用了用户对象的id属性作为缓存key,以保证缓存的唯一性。
Spring boot中指定随机可用的端口
m0_75269526的博客
04-23 618
springboot动态端口,springboot 动态可用端口,Springboot动态端口,Spring boot 动态端口,Spring boot 动态端口,正常情况下每个spring boot启动都有固定的端口,也就是8080,如果启动多个项目,很容易出现端口冲突,那么怎么解决这个问题呢?
【定制化体验:使用Spring Boot自动配置,打造个性化Starter】
weixin_48278764的博客
04-26 493
定制化体验:使用Spring Boot自动配置,打造个性化Starter
java毕业设计】 基于Spring Boot+mysql的高校心理教育辅导系统设计与实现(程序源码)-高校心理教育辅导系统
cuihwchn的博客
04-23 700
随着Internet技术的发展,心理教育辅导系统应运而生,心理教育辅导系统为用户提供了一个更为便利的心理测试咨询平台。所以,为了充分满足高校学生心理教育辅导的需求,特开发了本高校心理教育辅导系统。本高校心理教育辅导系统的开发基于springboot框架,采用Java技术,同时使用MYSQL数据库对系统数据进行储存,充分保证系统数据的安全性和稳定性。系统根据高校心理教育辅导的需求开发功能模块,实现对信息数据的添加、删除、修改、查询等基本操作。
spring boot的项目+nginx,怎么预防XSS攻击
keyboard专栏
04-23 995
在一个结合了Spring Boot和Nginx的项目架构中,防御跨站脚本攻击(XSS)需要在两个层面上进行综合防护:应用层(Spring Boot应用)和服务器层(Nginx)。
python小型网站最好的框架
09-21
有很多适合小型网站的Python框架,比较流行的有Flask、Django、Bottle、Pyramid等。每个框架都有其自身的特点和优势,选择哪个框架取决于你的具体需求和技能水平。如果你只是想快速地搭建一个简单的网站,可以选择...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 正则表达式+号的含义 5176
  • 在Oracle VM VirtualBox中添加磁盘,并挂载磁盘 4805
  • Redis数据库创建使用 3609
  • FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_LOAD( 3084
  • 微信小程序-发送Get/Post请求 3032

分类专栏

  • 我跟女友回家见父母,她小妈居然喜欢软考知识点 12篇
  • 自己做的工具类 2篇
  • 为了活命,我对病娇反派弟弟表白,他竟要我python代码 2篇
  • 工具链接 34篇
  • 震惊!回家路上竟然捡到个肤白貌美的Docker镜像 4篇
  • 霸道总裁爱上Linux 25篇
  • 微信app 2篇

最新评论

  • mysqld: error while loading shared libraries: libprotobuf-lite.so.3.19.4 cannot open shared object

    CV猿码人: 对,它本质上就是文件缺失了需要补全

  • mysqld: error while loading shared libraries: libprotobuf-lite.so.3.19.4 cannot open shared object

    2301_76624959: 需要把该文件上传到lunix的MySQL目录下吗?

  • 使用EasyPOI模板导出Execl表格(含有图片)

    疯狂的二师兄: 在翻看的过程中,图片给我一激灵,高举旗帜冲啊

  • 在Oracle VM VirtualBox中添加磁盘,并挂载磁盘

    Ctrl AC: +1,刚送走虚拟机,还好有ova镜像

  • 在Oracle VM VirtualBox中添加磁盘,并挂载磁盘

    苏溪和斯斯: 确实把虚拟机送走了

最新文章

  • 二叉树的先序、中序和后序遍历,以及二叉树的高度
  • Java文件中转
  • execl按照名称order by 并统计数字
2024年15篇
2023年109篇
2022年120篇
2021年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司本溪网站改版公司鹤岗网站搜索优化公司坂田模板推广报价吴忠SEO按天扣费多少钱佛山百度网站优化排名价格扬州百姓网标王报价大同企业网站制作多少钱长沙英文网站建设推荐开封网站推广方案价格张家界百姓网标王哪家好益阳网站搭建多少钱汕头模板制作推荐宿迁百度标王酒泉百度网站优化哪家好哈尔滨seo公司怀化百度seo赤峰网络广告推广价格昆明阿里店铺运营公司运城网页设计厦门网站设计推荐思茅关键词按天收费多少钱汕头网页制作推荐宜昌百度竞价伊春企业网站改版哪家好喀什模板制作价格东营企业网站设计报价南通网站推广系统公司爱联百度竞价包年推广报价新乡网站设计模板价格荷坳品牌网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化