首页
学习
活动
专区
圈层
工具
发布

字节面试:Go 字符串截取坑

1️⃣错误示范:直接按索引截取展开代码语言:GoAI代码解释packagemainimport"fmt"funcmain(){str:="Go测试"//❌错误:直接按字节截取sub:=str[:3]fmt.Println...码,占1字节测:UTF-8中文,占3字节试:UTF-8中文,占3字节str[:3]取的是前3个字节:G(完整)o(完整)测的第1个字节(不完整)结果:UTF-8解码器遇到不完整的中文编码,显示为乱码()...3️⃣正确做法:转[]rune再截取Rune是Go中的Unicode码点类型,一个rune代表一个完整的字符。...长字符串/高性能场景:使用utf8.RuneCountInString先判断长度,或遍历range截取。...要想截取不乱码,转成rune再操作。✅避坑指南:涉及用户输入、国际化场景,永远不要假设1字符=1字节!

21010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    单例模式【单例设计模式】

    单例模式的定义 指一个类只有一个实例,且该类能自行创建这个实例的一种模式。...单例模式的优点和缺点 单例模式的优点 单例模式可以保证内存里只有一个实例,减少了内存的开销。 可以避免对资源的多重占用。 单例模式设置全局访问点,可以优化和共享资源的访问。...单例模式的缺点 单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。 在并发测试中,单例模式不利于代码调试。...单例模式的应用场景 对于 Java 来说,单例模式可以保证在一个 JVM 中只存在单一实例。单例模式的应用场景主要有以下几个方面。...由于单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。如 Web 中的配置对象、数据库的连接池等。 单例模式的结构 单例模式的主要角色如下。

    2.4K20

    单例模式《单例模式概念、什么时候能用到单例模式、单例模式的好处》

    目录 一、单例模式的概念 1.类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做呢? 二、什么时候能用到单例模式?...三、单例模式的好处 1.单例模式好处 2.代码目录结构 一、单例模式的概念 1.类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做呢?...图片来自网络 单例模式: 就是我们创建一个类,这个类只能被实例化一次,也就是说这个类只能创建出来一个实例对象,这种叫做单例模式。 二、什么时候能用到单例模式?...三、单例模式的好处 1.单例模式好处 不管你实例化多少次,它始终只返回第一次创建的对象。不管你什么时候创建,它始终返回这一个对象。...比如在这个qh_05day_01.py里面实现了一个单例模式: # 1、多个装饰器装饰同一个函数 # 2、python中类里面三个内置的装饰器 # 3、用类实现装饰器 import time def

    2.6K20

    C++ 单例模式_c 单例模式

    目录 C++ 单例模式介绍 一、单例是什么 二、C++实现单例 2.1 基础要点 2.2 C++ 实现单例的几种方式 ---- C++ 单例模式介绍 单例可能是最简单的一种设计模式,实现方法很多种;同时单例也有其局限性...一、单例是什么 单例是设计模式里面的一种,全局有且只有一个类的static实例,在程序任何地方都能够调用到。...二、C++实现单例 2.1 一个好的单例应该具备下面4点 1.全局只有一个实例:static 特性,同时禁止用户自己声明并定义实例(把构造函数设为 private) 2.线程安全 3.禁止赋值和拷贝 4...线程安全的问题,当多线程获取单例时有可能引发竞态条件:第一个线程在if中判断 m_pInstance是空的,于是开始实例化单例;同时第2个线程也尝试获取单例,这个时候判断m_pInstance还是空的,...也没有双重检查锁定模式的风险 */ class SingletonPattern_V3 { public: ~SingletonPattern_V3() { std::cout << "destructor

    1.6K20

    设计模式——单例模式

    关于单例模式,这是面试时最容易遇到的问题。当时以为很简单的内容,深挖一下,也可以关联出类加载、序列化等知识。...InnnerLazy 类进行初始化,然后才会调用 Lazy 的构造方法,这也是由类加载机制保证的: 遇到 new 、getstatic、putstatic 或者 invokestatic 这 4 条字节码指令时...随后的反序列化的过程中,这些信息被用来在运行时环境中查找存在的枚举类型对象,这也就解决了序列化破坏单例的问题。...但需要注意:这种方法属于饿汉模式,所以有浪费资源的隐患,但如果你的单例对象并不占用资源,没有状态变量,那么这种方式就很适合你。...总结 以上就是我关于单例模式的一些理解,简单的问题,也可以关联出并发、类加载、序列化等重要知识。

    65910

    单例模式singleton_单例模式例子

    单例模式 Singleton 动机 模式定义 实例 结构 要点总结 笔记 动机 在软件系统中,经常有一些特殊的类,必须保证它们在系统中只存在一个实例,才能保证他们的逻辑正确性、以及良好的效率 如何绕过常规的构造器...模式定义 保证一个类仅有一个实例,并提供一个该实例的全局访问点。...实例 单例 class Singleton{ private : Singleton(); Singleton(const Singleton& other); public:...Singleton 模式一般不要支持拷贝构造函数和Clone接口,因为这有可能导致多个对象实例,与Singleton模式的初衷相违背 如何实现多线程环境下安全的Singleton?...注意对双检查锁的正确实现 笔记 保证只有一个单例是设计者的责任 不是使用者的责任 java C#都有voliate机制 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    1.6K20

    设计模式:单例模式

    单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个访问它的全局访问点。在Go语言中,实现单例模式有多种方式,包括懒汉式、饿汉式、双重检查锁定等。...懒汉式 下面是一个使用懒汉式实现的单例模式的例子: package singleton import "sync" type singleton struct{} var instance...在GetInstance函数中,我们直接返回了instance变量的值,保证了每次调用GetI懒汉模式和饿汉模式的区别 这个实现中,我们在init函数中初始化了instance变量,保证了在程序运行时,...懒汉模式和饿汉模式的区别 懒汉模式和饿汉模式都是单例模式的实现方式,区别在于: 1. 懒汉模式比较懒,只有当调用getInstance的时候,才回去初始化这个单例。 2....饿汉模式就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了。

    44620

    设计模式---单例模式

    单例模式 单例模式的介绍 单例模式实现的八种方式 饿汉式 静态常量 静态常量的优缺点 静态代码块 静态代码块的优缺点 懒汉式 线程不安全的写法 优缺点 线程安全,同步锁---效率低,不推荐...线程安全,同步代码块---无法解决线程安全问题,不推荐 优缺点 双重检查---解决线程安全和懒加载问题--推荐使用 优缺点 静态内部类---可以实现懒加载,线程安全,推荐使用 优缺点 枚举 优缺点 单例模式注意事项...---- 单例模式的介绍 ---- 单例模式实现的八种方式 ---- 饿汉式 静态常量 步骤: 1.构造器私有化(防止new) 2.类的内部创建对象 3.向外暴露一个静态的公共方法—getInstance...getInstance() { if(instance==null) { //锁的是代码块 //锁的对象是当前类的字节码文件对象...s2.getInstance(); System.out.println(s1.hashCode()==s2.hashCode()); } } 优缺点 ---- 单例模式注意事项

    47610

    设计模式—单例模式

    设计模式—单例模式 1.1.简介 例如在Java开发中,我们都知道类和对象实例可以通过new来创建一个或者多个,而单例模式就是采取一定的办法保证整个系统中某一个类只能存在唯一一个对象实例,并且获取该类实例的方法只能是该类自己提供的一个获取其实例的静态方法...1.2.使用样例 例如在Spring源码中的doGetBean方法中就使用到了单例模式,如下: 单例模式认知小结: 1.一个类只有一个实例;2.类的实例只能是由自己创建;3.该类必须向外提供获取自己实例的静态方法...; 1.2.应用场景 在《图解设计模式》一书中详细介绍了单例模式在开发中的使用场景,如下所示: 一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或

    60720

    设计模式-单例模式

    设计模式-单例模式 1、单例模式简介 单例模式是保证系统实例唯一性的重要手段。...同时,单例模式为系统资源的优化提供了很好的思路,频繁创建和销毁对象都会增加系统的资源消耗,而单例模式保障了整个系统只有一个对象能被使用,很好地节约了资源。   ...单例模式的实现很简单,每次在获取对象前都先判断系统是否已经有这个单例对象,有则返回,没有则创建。...单例模式的常见模式有懒汉模式(线程安全)、饿汉模式、静态内部类、双重校验锁。...懒汉模式和饿汉模式的最大不同在于,懒汉模式在类中定义了单例但是并未实例化,实例化的过程是在获取单例都西昂的方法中实现的,也就是说,在第一次调用懒汉模式时,该对象一定为空,然后去实例化对象并赋值,这样下次就能直接获取对象了

    60620

    设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类负责创建自己的对象,同时确保只有单个对象被创建。...注意点 构造方法私有化,让除了自己类中能创建外其他地方都不能创建 在自己的类中创建一个单实例 提供一个方法获取该实例对象(创建时需要进行方法同步) 优点 在内存里只有一个实例,减少了内存的开销 避免对资源的多重占用...单例模式的几种实现方式 懒汉式 懒汉式是需要的时候才创建单实例(加入了成员变量是否为空的判断语句)。 懒汉式又分为线程安全和线程不安全的实现方式。 1....懒汉式,线程安全 使用 synchronized 进行加锁,保证单例,但是加锁会影响效率,导致效率较低。...---- 饿汉式 接下来我们介绍另一种单例模式的实现方式 -- 饿汉式。 该实现方式是在类加载的时候就创建单实例。实现起来比较简单,比较常用,但会产生垃圾对象。

    63350
    领券