网站设计师培训中心wordpress默认主题的坏处

张小明 2026/1/1 11:56:41
网站设计师培训中心,wordpress默认主题的坏处,网站集群建设ppt,能买源码的网站有哪些怎么理解面向对象#xff1f;简单说说封装继承多态 面向对象是一种编程范式#xff0c;它将现实世界中的事物抽象为对象#xff0c;对象具有属性#xff08;称为字段或属性#xff09;和行为#xff08;称为方法#xff09;。面向对象编程的设计思想是以对象为中心简单说说封装继承多态面向对象是一种编程范式它将现实世界中的事物抽象为对象对象具有属性称为字段或属性和行为称为方法。面向对象编程的设计思想是以对象为中心通过对象之间的交互来完成程序的功能具有灵活性和可扩展性通过封装和继承可以更好地应对需求变化。Java面向对象的三大特性包括封装、继承、多态。https和http的区别一、根本区别是否加密特性HTTPHTTPS全称HyperText Transfer ProtocolHyperText Transfer ProtocolSecure安全性❌ 明文传输数据可被窃听、篡改✅加密传输防窃听、防篡改、防冒充端口80443URL 前缀http://https://序列化和反序列化的原理序列化把内存中的对象→ 转成可存储或传输的格式如字节流、JSON、XML反序列化把字节流/文本→ 重新变回内存中的对象。1.序列化过程程序遍历对象的字段属性按照某种格式规则如 Java 的ObjectOutputStream、JSON、Protobuf将对象的类型信息 数据值转为字节流或字符串可保存到文件、数据库或通过网络发送。2.反序列化过程读取字节流/字符串根据其中的类型信息创建对应类的新实例把数据填充回对象的字段最终得到一个结构和数据都相同的对象但内存地址不同。BIO、NIO、AIO区别是什么模型全称核心特点BIOBlocking I/O同步阻塞 I/O一个连接一个线程读写会阻塞当前线程NIONon-blocking I/O同步非阻塞 I/O一个线程管理多个连接靠轮询Selector检查是否就绪AIOAsynchronous I/O异步非阻塞 I/O操作完成后系统主动通知你全程不阻塞特性BIONIOAIO模型同步阻塞同步非阻塞异步非阻塞线程模型1 连接 : 1 线程1 线程 : 多连接Reactor 模式1 线程 : 多连接Proactor 模式是否阻塞是否但需轮询否系统通知编程难度简单较复杂复杂吞吐量低连接多时崩溃高极高理想场景典型应用Tomcat 早期版本Netty、Redis、Kafka、Tomcat NIOJava AIO较少用操作系统支持通用Linux: epoll, Windows: IOCPWindows: IOCP, Linux: 依赖 libaio不完善1.BIOBlocking I/O—— 老派服务员工作方式服务端每 accept 一个客户端连接就创建一个新线程处理调用read()/write()时线程会一直阻塞直到数据读完或写完。缺点连接数多 → 线程爆炸内存耗尽、上下文切换开销大大量线程空等如客户端发数据慢资源浪费。适用场景连接数少、数据交互频繁且稳定的场景如内部系统。️类比餐厅有 100 个客人老板请了 100 个服务员每人盯一个客人——即使客人在发呆服务员也不能干别的。2.NIONon-blocking I/O—— 多路复用经理核心组件Buffer缓冲区、Channel通道、Selector选择器工作方式一个线程通过Selector 轮询多个 ChannelChannel 设置为非阻塞模式read()若无数据立即返回 0不卡线程只有当 Selector 告诉你“某个 Channel 有数据可读”时才去处理。优点单线程可处理成千上万连接如 Netty、Redis避免线程阻塞资源利用率高。缺点编程复杂需手动管理 Buffer、状态机轮询仍有 CPU 开销但远小于 BIO 的线程开销。️类比1 个经理拿着对讲机Selector监听所有餐桌Channel。只有客人按铃数据就绪经理才过去服务。3.AIOAsynchronous I/O—— 主动通知的智能系统工作方式Java 7基于java.nio.channels.AsynchronousChannel发起read()操作时立即返回不阻塞线程系统在后台完成 I/O完成后主动通知回调或 Future线程可以去做其他事完全不用关心 I/O 是否就绪。优点真正的异步无需轮询在高并发、低活跃连接场景下效率极高如聊天服务器。缺点依赖操作系统支持Linux 下基于 epoll 的模拟Windows 下原生支持好Java 生态中使用较少Netty 等主流框架仍用 NIO调试和编程模型较复杂回调地狱。️类比客人点完餐系统自动记录。厨房做好后主动呼叫服务员送餐——服务员全程不用盯着。集合java基础04集合、异常、引用、线程)---java八股_java八股 异常-CSDN博客Java中的线程安全的集合是什么早期线程安全集合1.Vector线程安全的List所有方法加synchronized全局锁性能差已被CopyOnWriteArrayList或Collections.synchronizedList()替代。2.Hashtable线程安全的Map不允许null所有方法加synchronized已被ConcurrentHashMap完全取代。3.Stack继承自Vector同样线程安全但性能差推荐用Deque代替如ArrayDeque。java.util.concurrent包下的高性能并发集合1.ConcurrentHashMap线程安全的MapJDK 1.8 使用CAS synchronized锁桶头支持高并发读写2.CopyOnWriteArrayList线程安全的List写时复制Copy-On-Write每次修改add/remove都复制整个底层数组读操作直接访问原数组无锁适合“读多写少”场景如监听器列表、白名单写操作开销大不适合频繁修改。3.CopyOnWriteArraySet基于CopyOnWriteArrayList实现的线程安全Set同样适用于读多写少场景。4.BlockingQueue阻塞队列—— 生产者-消费者模型核心类特点ArrayBlockingQueue有界队列基于数组FIFOLinkedBlockingQueue可选有界默认无界基于链表高吞吐SynchronousQueue不存储元素每个 put 必须等待 takePriorityBlockingQueue支持优先级的无界队列✅ 所有操作线程安全天然支持线程间协作。ArrasyLIst线程不安全多线程下会报什么异常1、最常见的异常ConcurrentModificationException并发修改异常什么时候抛出当一个线程正在遍历迭代ArrayList比如用for-each或iterator()而另一个线程同时修改了列表结构如添加、删除元素2.数组越界ArrayIndexOutOfBoundsException在扩容过程中ensureCapacityInternal多个线程同时修改size和底层数组elementData可能导致某个线程写入的索引超出当前数组长度。LinkdeList多线程下会报什么异常1.ConcurrentModificationException并发修改异常触发场景一个线程在遍历LinkedList如 for-each、iterator()另一个线程同时修改结构add/remove。原因LinkedList也实现了fail-fast 机制内部有modCount计数器迭代时发现修改就抛异常。2.NullPointerException空指针异常这是LinkedList特有的高风险问题原因LinkedList的节点Node通过prev和next指针连接。多线程并发修改如两个线程同时add可能导致链表结构被破坏指针错乱某个节点的next或prev被设为null但逻辑上不应为空后续操作如遍历、get()访问null.next→ 抛NPE。CopyonWriteArraylist是如何实现线程安全的CopyOnWriteArrayList底层也是通过一个数组保存数据使用volatile关键字修饰数组保证当前线程对数组对象重新赋值后其他线程可以及时感知到。public class CopyOnWriteArrayListE { private transient volatile Object[] array; // 底层数组volatile 保证可见性 final transient ReentrantLock lock new ReentrantLock(); }array是volatile的确保一个线程修改后其他线程能立即看到新数组所有写操作先加锁再复制数组最后原子地替换array引用。集合遍历的方法有哪些普通 for 循环可以使用带有索引的普通 for 循环来遍历 List。增强 for 循环for-each循环用于循环访问数组或集合中的元素。Iterator 迭代器可以使用迭代器来遍历集合特别适用于需要删除元素的情况。IteratorString iterator list.iterator(); while(iterator.hasNext()) { String element iterator.next(); System.out.println(element); }使用 forEach 方法Java 8引入了 forEach 方法可以对集合进行快速遍历。list.forEach(element -System.out.println(element));使用 forEach 方法Java 8引入了 forEach 方法可以对集合进行快速遍历。list.stream().forEach(element -System.out.println(element));Hashtable的底层原理底层数据结构数组 链表Hashtable内部使用一个Entry[] table数组JDK 8 之前每个Entry是一个链表节点包含hash键的哈希值keyvaluenext指向下一个节点解决哈希冲突private transient Entry?,?[] table; // 哈希桶数组 private transient int count; // 当前元素个数 private int threshold; // 扩容阈值 capacity * loadFactor private final float loadFactor; // 负载因子默认 0.75f线程安全全表 synchronized⚠️ 缺点并发性能极差高并发下成为瓶颈即使多个线程操作不同 key也会互相阻塞。所有 public 方法都用synchronized修饰锁的是整个Hashtable对象this同一时间只允许一个线程操作其他线程阻塞。HashMap和hashtable的区别特性HashMapHashtable线程安全❌ 不安全✅ 安全所有方法加synchronizednull 键/值✅ 允许一个nullkey多个nullvalue❌完全不允许会抛NullPointerException初始容量1611扩容方式容量 × 2容量 × 2 1底层结构JDK 8数组 链表 红黑树链表长度 ≥8 时转树仅数组 链表无红黑树优化继承关系extends AbstractMapextends Dictionary已过时的抽象类迭代器fail-fastfail-fast推荐使用✅ 单线程首选❌已过时不推荐ConcurrentHashMapjava线程-并发编程-CSDN博客讲讲currenthashmap原理分别讲了1.7和1.8的原理特性JDK 1.7JDK 1.8核心结构Segment 数组 HashEntry 链表Node 数组 链表/红黑树并发策略分段锁ReentrantLockCAS synchronized锁单个 bin锁粒度Segment 级较粗桶bin级更细是否支持红黑树❌ 否✅ 是扩容机制单线程 per Segment多线程协作扩容内存占用高预分配 Segment低按需分配读操作无锁无锁volatile 保证性能好更好尤其高并发写JDK 1.7 版本分段锁Segment核心思想“分而治之” —— 把整个哈希表分成多个段Segment每段独立加锁1. 底层结构ConcurrentHashMap内部包含一个Segment[] segments数组每个Segment继承自ReentrantLock相当于一个小的 HashMap每个Segment内部是一个HashEntry[]数组 链表。2. 并发机制分段锁Segment Locking默认有16 个 SegmentconcurrencyLevel 16当线程操作 key 时先通过hash(key)计算出属于哪个 Segment只对该 Segment 加锁其他 Segment 可并发访问在该 Segment 内部执行 put/get/remove。3. 扩容每个 Segment 独立扩容不是整个 Map 扩容扩容时锁住当前 Segment不影响其他 Segment。JDK 1.8 版本CAS synchronized取消 Segment核心思想“更细粒度的锁” —— 直接对每个桶bin加锁结合 CAS 优化1. 底层结构与 HashMap 几乎一致直接使用Node[] table类似 HashMap 的 Node支持链表 红黑树链表长度 ≥8 且容量 ≥64 时转树取消了 Segment结构更简洁。2. 并发机制CAS synchronized当执行put(key, value)时计算hash(key)定位到table[i]如果table[i] null使用CAS尝试直接插入新节点无锁如果table[i] ! null存在链表或树对table[i]的头节点加synchronized锁在同步块内遍历链表/树执行插入或更新。优点锁粒度更细只锁单个桶bin不是整个 Segment减少内存开销无需预分配 Segment利用 CAS 避免锁竞争空桶直接 CAS 插入支持红黑树提升长链表性能。3. 读操作get完全无锁利用volatile 语义保证可见性Node.val和Node.next都是volatile写操作通过Unsafe.putObjectVolatile()保证立即可见所以get()不需要加锁性能极高。4. 扩容transfer支持多线程协助扩容当一个线程发现需要扩容时创建新数组自己负责迁移一部分数据其他写线程在操作时发现正在扩容会主动帮忙迁移提高效率迁移过程中旧数组的桶会被标记为ForwardingNode转发节点get()请求会自动去新数组查。分段锁怎么加锁的在 ConcurrentHashMap 中将整个数据结构分为多个 Segment每个 Segment 都类似于一个小的 HashMap每个 Segment 都有自己的锁不同 Segment 之间的操作互不影响从而提高并发性能。每个 Segment 都有自己的锁不同 Segment 之间的操作互不影响从而提高并发性能。然后再在该 Segment 上加锁而不是像传统的 HashMap 一样对整个数据结构加锁。这样可以使得不同 Segment 之间的操作并行进行提高了并发性能.ConcurrentHashMap用了悲观锁还是乐观锁?悲观锁和乐观锁都有用到。添加元素时首先会判断容器是否为空如果为空则使用 volatile 加CAS 乐观锁来初始化。如果容器不为空则根据存储的元素计算该位置是否为空。如果根据存储的元素计算结果为空则利用CAS乐观锁设置该节点如果根据存储的元素计算结果不为空则使用synchronized悲观锁然后遍历桶中的数据并替换或新增节点到桶中最后再判断是否需要转为红黑树这样就能保证并发访问时的线程安全了。list转map的方法最推荐、最简洁的方式是使用 Java 8 的 Stream API Collectors.toMap()。方法一Java 8 StreamMapK, V map list.stream() .collect(Collectors.toMap( element - keyExtractor, // 如: User::getId element - valueMapper // 如: User::getName )); // 保留新值 MapInteger, String map users.stream() .collect(Collectors.toMap( User::getId, User::getName, (oldValue, newValue) - newValue // 冲突时用 newValue ));方法二手动 for 循环兼容老版本 JavaMapInteger, String map new HashMap(); for (User user : users) { map.put(user.getId(), user.getName()); }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

桥西区附近网站建设价格今天国际新闻

如何快速掌握diff-pdf:新手的终极PDF对比指南 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf 在日常工作中,你是否曾经为对比两个PDF文件而头疼不已&…

张小明 2025/12/27 1:16:12 网站建设

完成网站建设成本后台系统免费模板网站

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch…

张小明 2025/12/27 2:18:47 网站建设

网站建设的安全措施十大电商平台

3D高斯渲染终极指南:浏览器端实时渲染的完整解决方案 【免费下载链接】GaussianSplats3D Three.js-based implementation of 3D Gaussian splatting 项目地址: https://gitcode.com/gh_mirrors/ga/GaussianSplats3D 你是否曾为在浏览器中渲染复杂3D场景而苦恼…

张小明 2025/12/27 20:27:03 网站建设

杭州建网站用哪个软件做网站好

第一章:Open-AutoGLM隐私风险大型语言模型在自动化任务中展现出强大能力,Open-AutoGLM作为开源的自动推理框架,允许开发者构建具备上下文理解与决策能力的智能代理。然而,其开放性也带来了显著的隐私风险,尤其是在数据…

张小明 2025/12/27 20:27:00 网站建设

做商城网站要多少钱昌邑市住房和建设局网站

作为一名网络工程师或安全分析师,你是否曾经希望在命令行环境中也能享受到Wireshark级别的数据包分析体验?Termshark正是这样一个专为终端环境设计的强大工具,它结合了tshark的功能和直观的用户界面,让网络分析工作在任何终端设备…

张小明 2025/12/27 20:26:56 网站建设

做网站推广的公司网站源码网

从地址到源码:WinDbg符号配置实战指南,让minidump分析不再“盲调”你有没有遇到过这样的场景?打开一个蓝屏dump文件,调用栈里满屏都是0x7fff...这种内存地址,函数名一个都看不到。你只能靠猜、靠经验、靠反复查资料来推…

张小明 2025/12/27 20:26:53 网站建设