当前位置: 首页 > news >正文

wordpress小说站群做网站虚拟主机价格

wordpress小说站群,做网站虚拟主机价格,seo的优化方向,网站营销单页怎么设计方案手撕单例模式 所谓单例#xff0c;就是整个程序有且仅有一个实例。该类负责创建自己的对象#xff0c;同时确保只有一个对象被创建。 在Java#xff0c;一般常用在工具类的实现或创建对象需要消耗资源。特点#xff1a;类构造器私有、持有自己类型的属性、对外提供获取实…手撕单例模式 所谓单例就是整个程序有且仅有一个实例。该类负责创建自己的对象同时确保只有一个对象被创建。 在Java一般常用在工具类的实现或创建对象需要消耗资源。特点类构造器私有、持有自己类型的属性、对外提供获取实例的静态方法 懒汉模式 线程不安全延迟初始化严格意义上不是不是单例模式 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance null) { instance new Singleton(); } return instance; } }饿汉模式 线程安全比较常用但容易产生垃圾因为一开始就初始化 public class Singleton { private static Singleton instance new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }双重锁模式 线程安全延迟初始化。这种方式采用双锁机制安全且在多线程情况下能保持高性能。 public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton null) { synchronized (Singleton.class) { if (singleton null) { singleton new Singleton(); } } } return singleton; } }双重检查模式进行了两次的判断第一次是为了避免不要的实例第二次是为了进行同步避免多线程问题。由于singletonnew Singleton()对象的创建在JVM中可能会进行重排序在多线程访问下存在风险使用volatile修饰signleton实例变量有效解决该问题。 静态内部类单例模式 public class Singleton { private Singleton(){}public static Singleton getInstance(){ return Inner.instance; } private static class Inner { private static final Singleton instance new Singleton(); } } 只有第一次调用getInstance方法时虚拟机才加载 Inner 并初始化instance 只有一个线程可以获得对象的初始化锁其他线程无法进行初始化保证对象的唯一性。目前此方式是所有单例模式中最推荐的模式但具体还是根据项目选择。 在以上所有的单例模式中推荐静态内部类单例模式。非常直观即保证线程安全又保证唯一性。 众所周知单例模式是创建型模式都会新建一个实例。那么一个重要的问题就是反序列化。当实例被写入到文件到反序列化成实例时我们需要重写readResolve方法以让实例唯一。 private Object readResolve() throws ObjectStreamException{return singleton; } Java线程池各种参数 ThreadPoolExecutor的重要参数 1.corePoolSize核心线程数核心线程会一直存活及时没有任务需要执行。 当线程数小于核心线程数时即使有线程空闲线程池也会优先创建新线程处理。 设置allowCoreThreadTimeouttrue默认false时核心线程会超时关闭。 2.queueCapacity任务队列容量阻塞队列 当核心线程数达到最大时新任务会放在队列中排队等待执行。 3.maxPoolSize最大线程数 当线程数corePoolSize且任务队列已满时。线程池会创建新线程来处理任务。 当线程数maxPoolSize且任务队列已满时线程池会拒绝处理任务而抛出异常。 4.keepAliveTime线程空闲时间 当线程空闲时间达到keepAliveTime时线程会退出直到线程数量corePoolSize。 如果allowCoreThreadTimeouttrue则会直到线程数量0。 5.allowCoreThreadTimeout允许核心线程超时 6.rejectedExecutionHandler任务拒绝处理器 两种情况会拒绝处理任务(1)当线程数已经达到maxPoolSize切队列已满会拒绝新任务。(2)当线程池被调用shutdown()后会等待线程池里的任务执行完毕再shutdown。如果在调用shutdown()和线程池真正shutdown之间提交任务会拒绝新任务。线程池会调用rejectedExecutionHandler来处理这个任务。如果没有设置默认是AbortPolicy会抛出异常。 手撕two linkedlist megre to one /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val x; }* }*/ class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode headnew ListNode(0);ListNode temphead;while(l1!null l2!null){if(l1.vall2.val){temp.nextl2;l2l2.next;}else{temp.nextl1;l1l1.next; }temptemp.next;}if(l1!null){temp.nextl1;}else{temp.nextl2;}return head.next;} } Linux命令 我这里简单列举还要多多练习复杂的操作。 Linux的常用命令介绍:        问题                因为平时开发的时候对于服务器主机的操作系统是不需要界面的。                那么我们如何使用操作系统完成资源的操作呢        使用                命令方式        作用                使用命令来替换界面的操作。        内容                1、查看IP信息ifconfig                2、进入指定的文件目录 cd                        绝对路径 cd /目录/子目录/../..                        相对路径:  cd  当前路径的子目录/子目录/../..                        注意 :                                第一个 /表示根目录                3、退回上级目录:                                 cd ..  回退当上级目录退一层                                 cd ../.. 回退两次                4、查看当前路径pwd                5、查看当前目录下的内容                        ls只显示文件名或者目录名                        ll:以详细信息的方法列出当前目录的内容                6、自动补全tab                        注意我们需要写出要操作的文件或者目录的从头开始的一部分唯一的名字。                7、清屏clear                8、创建目录                        mkdir 文件名                          在当前目录下创建指定的文件夹                        mkdir /目录名/目录名/../../新的文件名    在指定的目录下创建新的文件夹                9、创建文件                        vi 新的文件名 示例vi my.txt                                注意                                        会直接进入文本状态需要点击键盘的i键或者insert键进入编辑状态。                                        书写内容后先点击esc键退出编辑状态。然后输入                                        q! 强制退出                                        q 退出但不保存                                        : wq 保存并退出                        vim 新的文件名  示例: vim you.java                        vi和vim的区别                                vi命令打开的文本编辑器中没有颜色标识                                vim命令的文本编辑器中带有关键字颜色                10、编辑现有文件vi或者vim                        vi 现有文件名                        vim 现有文件名                11、查看文件内容cat命令                        cat 文件名  在控制显示所有的文件信息                12、查看指定前多少行数据: head命令                        默认显示前10行                        head -n 行数 文件名                13、查看指定后多少行数据tail命令                        默认显示后10行                        tail -n 行数 文件名                14、动态查看文件的内容:tailf 命令                        作用动态的显示文件的内容一旦文件内容增加了控制台会立即显示出来                        tailf -行数 文件名                        默认显示后10行                15、追加内容                                echo 内容文件名                16、复制                        cp 文件绝对路径  新的文件绝对路径                                作用将指定的文件复制到指定路径下的文件中                                示例cp /usr/local/wollo/my.txt  /usr/mm.txt                                注意复制的同时重命名                        cp  文件  新的文件名                                作用在当前目录下复制文件同时重命名                        cp -r 目录路径   新的路径                                作用将指定的目录下的全部复制到指定的路径下                                示例 cp -r /usr/local/wollo  /usr/wollo2                                注意同时可以对文件夹的名字进行重命名                17、删除                        删除文件                                rm 文件名                                        作用删除当前目录下的指定文件                                        注意会提示是否要删除输入y删除输入n取消                                rm -rf 文件名                                        作用删除指定的文件                                        注意不会提示直接删除                        删除目录                                rm -r 目录名                                        作用删除指定的目录                                        注意会有提示语但是不能在当前目录下删除自己。                                rm -rf 目录名强制删除                18、剪切                        mv 文件  新的路径                19、解压文件                        tar -zxvf 压缩包名                      HashMap  这里也是简单写一下算了具体多学。 //map MapInteger, Integer mapnew HashMapInteger, Integer();int size()//K-V关系数量 boolean isEmpty()//是否为空 增V put(K key,V value)//放入K-V键值对void putAll(MapK,V m)//放入m包含的所以键值对 删V remove(Object key)//删除key对应的键值对void clear()//删除所有键值对 改直接put会覆盖旧的记录 查boolean containsKey(Object key)//是否包含keyboolean containsValue(Object value)//是否包含valueV get(Object key)//得到key对应的value 生成集合SetK keySet()//返回包含所有key的setCollectionV values()//返回包含所有value的CollectionTreeMap特有 public K firstKey()//返回第一个key最高 public K lastKey()//返回最后一个key最低哈希冲突若干Key的哈希值如果落在同一个数组下标上将组成一条链对Key的查找需要遍历链上的每个元素执行equals()比较,1.8后优化为红黑树负载极限“负载极限”是一个01的数值“负载极限”决定了hash表的最大填满程度。当hash表中的负载因子达到指定的“负载极限”时hash表会自动成倍地增加容量桶的数量并将原有的对象重新分配放入新的桶内这称为rehashing。默认当HashMap中的键值对达到数组大小的75%时即会rehashing。 解释0.75 是时间和空间成本上的一种折中 较高的“负载极限”也就是数组小可以降低占用的空间但会增加查询数据的时间开销较低的“负载极限”也就是数组大会提高查询数据的性能但会增加hash表所占用的内存开销 可以根据实际情况来调整“负载极限”值。 HashMap线程不安全 HashTable线程安全实现的方式是在修改数据时锁住整个HashTable效率低ConcurrentHashMap做了相关优化 ConcurrentHashMap 线程安全其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。 ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分每个段其实就是一个小的Hashtable它们有自己的锁。 只要多个修改操作发生在不同的段上它们就可以并发进行。 默认将hash表分为16个桶诸如get、put、remove等常用操作只锁住当前需要用到的桶读操作大部分时候都不需要用到锁。 JDK1.8已经摒弃了Segment并发控制使用Synchronized和CAS来操作整个看起来就像是优化过且线程安全的HashMap虽然在JDK1.8中还能看到Segment的数据结构但是已经简化了属性只是为了兼容旧版本。 jvm垃圾回收机制 标记-清除 该算法分为“标记”和“清除”阶段首先标记出所有需要回收的对象在标记完成后统一回收所有被标记的对象。它是最基础的收集算法后续的算法都是对其不足进行改进得到。这种垃圾收集算法会带来两个明显的问题 效率问题空间问题标记清除后会产生大量不连续的碎片复制 为了解决效率问题“复制”收集算法出现了。它可以将内存分为大小相同的两块每次使用其中的一块。当这一块的内存使用完后就将还存活的对象复制到另一块去然后再把使用的空间一次清理掉。这样就使每次的内存回收都是对内存区间的一半进行回收。 标记-整理 根据老年代的特点提出的一种标记算法标记过程仍然与“标记-清除”算法一样但后续步骤不是直接对可回收对象回收而是让所有存活的对象向一端移动然后直接清理掉端边界以外的内存。 分代收集 当前虚拟机的垃圾收集都采用分代收集算法这种算法没有什么新的思想只是根据对象存活周期的不同将内存分为几块。一般将 java 堆分为新生代和老年代这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比如在新生代中每次收集都会有大量对象死去所以可以选择复制算法只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的而且没有额外的空间对它进行分配担保所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。 HotSpot的算法 可达性分析会导致gc停顿因为必须保证确保一致性也就是冻结在某个时间点所以我们必须要停顿。 但是停顿太久的代价我们是不能承受的。 在hotspot虚拟机中采用OopMap结构记录哪些地方存着引用的。 但是也不可能为每一个指令设置OopMap只有在“安全点”才记录gc也是在安全点才暂停。 安全点的选定不能太少导致gc等待时间长 太多导致过分增大负荷。 但是还不能解决问题我们确实保证了运行时隔一段时间就能进入安全点但是不运行的时候呢程序未抢到cpu很久 安全区指这一段代码中引用关系绝对不会发生变化。在这个区域中任意地方开始gc都是安全的。 concurrenthashmap原理 见上文 如何给项目数据库加锁 链接 前后端交互 看你用的什么模板我用的leaf 项目的redis怎么用 这个看我redis总结或者你自己想想怎么用的。 redis的入门/原理/实战大总结 项目Spring MVC如何接收参数 springboot1——spring相关入门 MySQL事务隔离级别 事务的隔离级别分为未提交读(read uncommitted)、已提交读(read committed)、可重复读(repeatable read)、串行化(serializable)。 未提交读A事务已执行但未提交B事务查询到A事务的更新后数据A事务回滚---出现脏数据 已提交读A事务执行更新B事务查询A事务又执行更新B事务再次查询时前后两次数据不一致---不可重复读 可重复读A事务无论执行多少次只要不提交B事务查询值都不变B事务仅查询B事务开始时那一瞬间的数据快照 MySQL的持久化和redis的持久化 还是看我redis总结 如何配置项目服务器 linux-在cenos上安装大全(nginx/JRE/maven/Tomcat/MYSQL/redis/kafka/es...) Linux如何查看端口冲突 1.查找被占用的端口 netstat -tln netstat -tln | grep 80 netstat -tln 查看端口使用情况而netstat -tln | grep 80 则是只查看端口80的使用情况 2.查看端口属于哪个程序端口被哪个进程占用 lsof -i :80 3.杀掉占用端口的进程 kill -9 进程id 如何查看项目日志 1.tail 假定日志文件为catalina.log tail -f catalina.log    该命令用来的查看动态的日志信息 tail -fn 200 catalina.log    查看最后200行日志且动态显示 tail -f catalina.log | grep 过滤字符串       显示存在需要过滤的字符串的行的动态的日志信息 2.grep grep 过滤字符串 catalina.log    从日志文件中过滤出字符串 grep -r 过滤字符串 ./    从当前目录中的所有文件中过滤出字符串 3.less less catalina.log    进入日志文件然后 g    是到文件头部 G    也就是Shiftg,到文件尾部 ctrlF    向前移动一屏 ctrlB    向后移动一屏 ctrlD    向前移动半屏 ctrlU    向后移动半屏 Collection.sort()底层用的什么排序方法 接口中能否定义常量 Jvm的内存模型 类的静态变量和静态方法能否被子类继承 子类中能否调用父类的静态变量和静态方法 String a New string (a);在jvm中如何存储 Jvm调整堆大小
http://www.hn-smt.com/news/49178/

相关文章:

  • 从工匠故事读懂开源软件的特点与价值 - 实践
  • LangChain v1.0 Agent的工具定义及调用
  • 罗盘
  • noip9
  • 2025防晒品牌TOP8精准推荐:按肤质与场景科学选择
  • 2025.11.18模拟赛
  • 如何在ISA-95体系中采用Apache Camel + MQTT Broker衔接L3与L4 Legacy应用
  • 做题随笔:P3403
  • 2025.11.18
  • 「Solution」AGC008F Black Radius
  • 春秋云境Apache OFBiz 目录遍历致代码执行漏洞 CVE-2024-36104
  • 人工智能之编程进阶 Python高级:第一章 栈和队列
  • Spring AI Alibaba 项目源码学习(十二)-完结:Tool
  • DS trick record 2
  • C# 常用控件(学习笔记8)
  • 详细介绍:【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数
  • Balatro GBA - 在Game Boy Advance上体验扑克 Roguelike
  • linux bios 设置
  • 2025年11月高温轴承工厂排行榜,高温轴承公司推荐,耐高温轴承供应厂家,耐高温轴承源头厂家-骄铭轴承
  • 解码死锁的产生与解决
  • linux auto
  • 机器学习鼻祖级算法——使用SVM实现多分类及Python实现 - 指南
  • CCS新能源船舶智能监控终端
  • 每日 Emacs Tip:winner-mode —— 窗口布局的“撤销/重做”神器
  • 无菌药厂变频升级方案:ModbusTCP转Canopen高效适配方案
  • 前端打包的一些注意事项
  • 函数速查表
  • MATLAB实现的基于压缩感知的图像处理
  • 2025年羊毛地毯品牌口碑推荐榜单
  • GYM106191E-Leaf