重庆网站建设 吧做算命类网站违法吗?

diannao/2026/1/26 0:20:18/文章来源:
重庆网站建设 吧,做算命类网站违法吗?,齐全的网站建设,网站有死链怎么办转载自 JVM初探- 使用堆外内存减少Full GC问题: 大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao、LinkedIn、Vdian), 虽然CMS可与用户线程并发GC以降低STW时间, 但它也并非十分完美, 尤其是当出现Concurrent Mode Failure由并行GC转入串行时, 将导致非常长时间的…转载自  JVM初探- 使用堆外内存减少Full GC问题: 大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao、LinkedIn、Vdian), 虽然CMS可与用户线程并发GC以降低STW时间, 但它也并非十分完美, 尤其是当出现Concurrent Mode Failure由并行GC转入串行时, 将导致非常长时间的Stop The World(详细可参考JVM初探- 内存分配、GC原理与垃圾收集器).解决: 由GCIH可以联想到: 将长期存活的对象(如Local Cache)移入堆外内存(off-heap, 又名直接内存/direct-memory), 从而减少CMS管理的对象数量, 以降低Full GC的次数和频率, 达到提高系统响应速度的目的.引入 这个idea最初来源于TaobaoJVM对OpenJDK定制开发的GCIH部分(详见撒迦的分享-JVM定制改进淘宝), 其中GCIH就是将CMS Old Heap区的一部分划分出来, 这部分内存虽然还在堆内, 但已不被GC所管理.将长生命周期Java对象放在Java堆外, GC不能管理GCIH内Java对象(GC Invisible Heap):  (图片来源: JVMTaobao PPT)这样做有两方面的好处: 减少GC管理内存: 由于GCIH会从Old区“切出”一块, 因此导致GC管理区域变小, 可以明显降低GC工作量, 提高GC效率, 降低Full GC STW时间(且由于这部分内存仍属于堆, 因此其访问方式/速度不变- 不必付出序列化/反序列化的开销).GCIH内容进程间共享: 由于这部分区域不再是JVM运行时数据的一部分, 因此GCIH内的对象可供对个JVM实例所共享(如一台Server跑多个MR-Job可共享同一份Cache数据), 这样一台Server也就可以跑更多的VM实例. (实际测试数据/图示可下载撒迦分享PPT).但是大部分的互联公司不能像阿里这样可以有专门的工程师针对自己的业务特点定制JVM, 因此我们只能”眼馋”GCIH带来的性能提升却无法”享用”. 但通用的JVM开放了接口可直接向操作系统申请堆外内存(ByteBuffer or Unsafe), 而这部分内存也是GC所顾及不到的, 因此我们可用JVM堆外内存来模拟GCIH的功能(但相比GCIH不足的是需要付出serialize/deserialize的开销).JVM堆外内存 在JVM初探 -JVM内存模型一文中介绍的Java运行时数据区域中是找不到堆外内存区域的:  因为它并不是JVM运行时数据区的一部分, 也不是Java虚拟机规范中定义的内存区域, 这部分内存区域直接被操作系统管理. 在JDK 1.4以前, 对这部分内存访问没有光明正大的做法: 只能通过反射拿到Unsafe类, 然后调用allocateMemory()/freeMemory()来申请/释放这块内存. 1.4开始新加入了NIO, 它引入了一种基于Channel与Buffer的I/O方式, 可以使用Native函数库直接分配堆外内存, 然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作, ByteBuffer提供了如下常用方法来跟堆外内存打交道: API描述static ByteBuffer allocateDirect(int capacity)Allocates a new direct byte buffer.ByteBuffer put(byte b)Relative put method (optional operation).ByteBuffer put(byte[] src)Relative bulk put method (optional operation).ByteBuffer putXxx(Xxx value)Relative put method for writing a Char/Double/Float/Int/Long/Short value (optional operation).ByteBuffer get(byte[] dst)Relative bulk get method.Xxx getXxx()Relative get method for reading a Char/Double/Float/Int/Long/Short value.XxxBuffer asXxxBuffer()Creates a view of this byte buffer as a Char/Double/Float/Int/Long/Short buffer.ByteBuffer asReadOnlyBuffer()Creates a new, read-only byte buffer that shares this buffer’s content.boolean isDirect()Tells whether or not this byte buffer is direct.ByteBuffer duplicate()Creates a new byte buffer that shares this buffer’s content. 下面我们就用通用的JDK API来使用堆外内存来实现一个local cache.示例1.: 使用JDK API实现堆外Cache 注: 主要逻辑都集中在方法invoke()内, 而AbstractAppInvoker是一个自定义的性能测试框架, 在后面会有详细的介绍./*** author jifang* since 2016/12/31 下午6:05.*/ public class DirectByteBufferApp extends AbstractAppInvoker {TestOverridepublic void invoke(Object... param) {MapString, FeedDO map createInHeapMap(SIZE);// move in off-heapbyte[] bytes serializer.serialize(map);ByteBuffer buffer ByteBuffer.allocateDirect(bytes.length);buffer.put(bytes);buffer.flip();// for gcmap null;bytes null;System.out.println(write down);// move out from off-heapbyte[] offHeapBytes new byte[buffer.limit()];buffer.get(offHeapBytes);MapString, FeedDO deserMap serializer.deserialize(offHeapBytes);for (int i 0; i SIZE; i) {String key key- i;FeedDO feedDO deserMap.get(key);checkValid(feedDO);if (i % 10000 0) {System.out.println(read i);}}free(buffer);}private MapString, FeedDO createInHeapMap(int size) {long createTime System.currentTimeMillis();MapString, FeedDO map new ConcurrentHashMap(size);for (int i 0; i size; i) {String key key- i;FeedDO value createFeed(i, key, createTime);map.put(key, value);}return map;} } 由JDK提供的堆外内存访问API只能申请到一个类似一维数组的ByteBuffer, JDK并未提供基于堆外内存的实用数据结构实现(如堆外的Map、Set), 因此想要实现Cache的功能只能在write()时先将数据put()到一个堆内的HashMap, 然后再将整个Map序列化后MoveIn到DirectMemory, 取缓存则反之. 由于需要在堆内申请HashMap, 因此可能会导致多次Full GC. 这种方式虽然可以使用堆外内存, 但性能不高、无法发挥堆外内存的优势. 幸运的是开源界的前辈开发了诸如Ehcache、MapDB、Chronicle Map等一系列优秀的堆外内存框架, 使我们可以在使用简洁API访问堆外内存的同时又不损耗额外的性能. 其中又以Ehcache最为强大, 其提供了in-heap、off-heap、on-disk、cluster四级缓存, 且Ehcache企业级产品(BigMemory Max / BigMemory Go)实现的BigMemory也是Java堆外内存领域的先驱.示例2: MapDB API实现堆外Cache public class MapDBApp extends AbstractAppInvoker {private static HTreeMapString, FeedDO mapDBCache;static {mapDBCache DBMaker.hashMapSegmentedMemoryDirect().expireMaxSize(SIZE).make();}TestOverridepublic void invoke(Object... param) {for (int i 0; i SIZE; i) {String key key- i;FeedDO feed createFeed(i, key, System.currentTimeMillis());mapDBCache.put(key, feed);}System.out.println(write down);for (int i 0; i SIZE; i) {String key key- i;FeedDO feedDO mapDBCache.get(key);checkValid(feedDO);if (i % 10000 0) {System.out.println(read i);}}} }结果 分析 DirectByteBufferAppS0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 0.00 5.22 78.57 59.85 19 2.902 13 7.251 10.153 the last one jstat of MapDBAppS0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 0.03 8.02 0.38 44.46 171 0.238 0 0.000 0.238 运行DirectByteBufferApp.invoke()会发现有看到很多Full GC的产生, 这是因为HashMap需要一个很大的连续数组, Old区很快就会被占满, 因此也就导致频繁Full GC的产生. 而运行MapDBApp.invoke()可以看到有一个DirectMemory持续增长的过程, 但FullGC却一次都没有了. 实验: 使用堆外内存减少Full GC 实验环境 java -version java version 1.7.0_79 Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) VM Options -Xmx512M -XX:MaxDirectMemorySize512M -XX:PrintGC -XX:UseConcMarkSweepGC -XX:CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction80 -XX:UseCMSInitiatingOccupancyOnly 实验数据 170W条动态(FeedDO).实验代码 第1组: in-heap、affect by GC、no serialize ConcurrentHashMapApp public class ConcurrentHashMapApp extends AbstractAppInvoker {private static final MapString, FeedDO cache new ConcurrentHashMap();TestOverridepublic void invoke(Object... param) {// writefor (int i 0; i SIZE; i) {String key String.format(key_%s, i);FeedDO feedDO createFeed(i, key, System.currentTimeMillis());cache.put(key, feedDO);}System.out.println(write down);// readfor (int i 0; i SIZE; i) {String key String.format(key_%s, i);FeedDO feedDO cache.get(key);checkValid(feedDO);if (i % 10000 0) {System.out.println(read i);}}} } GuavaCacheApp类似, 详细代码可参考完整项目.第2组: off-heap、not affect by GC、need serialize EhcacheApp public class EhcacheApp extends AbstractAppInvoker {private static CacheString, FeedDO cache;static {ResourcePools resourcePools ResourcePoolsBuilder.newResourcePoolsBuilder().heap(1000, EntryUnit.ENTRIES).offheap(480, MemoryUnit.MB).build();CacheConfigurationString, FeedDO configuration CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, FeedDO.class, resourcePools).build();cache CacheManagerBuilder.newCacheManagerBuilder().withCache(cacher, configuration).build(true).getCache(cacher, String.class, FeedDO.class);}TestOverridepublic void invoke(Object... param) {for (int i 0; i SIZE; i) {String key String.format(key_%s, i);FeedDO feedDO createFeed(i, key, System.currentTimeMillis());cache.put(key, feedDO);}System.out.println(write down);// readfor (int i 0; i SIZE; i) {String key String.format(key_%s, i);Object o cache.get(key);checkValid(o);if (i % 10000 0) {System.out.println(read i);}}} } MapDBApp与前同.第3组: off-process、not affect by GC、serialize、affect by process communication LocalRedisApp public class LocalRedisApp extends AbstractAppInvoker {private static final Jedis cache new Jedis(localhost, 6379);private static final IObjectSerializer serializer new Hessian2Serializer();TestOverridepublic void invoke(Object... param) {// writefor (int i 0; i SIZE; i) {String key String.format(key_%s, i);FeedDO feedDO createFeed(i, key, System.currentTimeMillis());byte[] value serializer.serialize(feedDO);cache.set(key.getBytes(), value);if (i % 10000 0) {System.out.println(write i);}}System.out.println(write down);// readfor (int i 0; i SIZE; i) {String key String.format(key_%s, i);byte[] value cache.get(key.getBytes());FeedDO feedDO serializer.deserialize(value);checkValid(feedDO);if (i % 10000 0) {System.out.println(read i);}}} } RemoteRedisApp类似, 详细代码可参考下面完整项目.实验结果 *ConcurrentMapGuavaTTC32166ms/32s47520ms/47sMinor C/T31/1.52229/1.312Full C/T24/23.21236/41.751    MapDBEhcacheTTC40272ms/40s30814ms/31sMinor C/T511/0.557297/0.430Full C/T0/0.0000/0.000    LocalRedisNetworkRedisTTC176382ms/176s1hMinor C/T421/0.415-Full C/T0/0.000- 备注: - TTC: Total Time Cost 总共耗时 - C/T: Count/Time 次数/耗时(seconds)结果分析 对比前面几组数据, 可以有如下总结:将长生命周期的大对象(如cache)移出heap可大幅度降低Full GC次数与耗时;使用off-heap存储对象需要付出serialize/deserialize成本;将cache放入分布式缓存需要付出进程间通信/网络通信的成本(UNIX Domain/TCP IP) 附: off-heap的Ehcache能够跑出比in-heap的HashMap/Guava更好的成绩确实是我始料未及的O(∩_∩)O~, 但确实这些数据和堆内存的搭配导致in-heap的Full GC太多了, 当heap堆开大之后就肯定不是这个结果了. 因此在使用堆外内存降低Full GC前, 可以先考虑是否可以将heap开的更大.附: 性能测试框架 在main函数启动时, 扫描com.vdian.se.apps包下的所有继承了AbstractAppInvoker的类, 然后使用Javassist为每个类生成一个代理对象: 当invoke()方法执行时首先检查他是否标注了Test注解(在此, 我们借用junit定义好了的注解), 并在执行的前后记录方法执行耗时, 并最终对比每个实现类耗时统计.依赖 dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-proxy/artifactIdversion${commons.proxy.version}/version /dependency dependencygroupIdorg.javassist/groupIdartifactIdjavassist/artifactIdversion${javassist.version}/version /dependency dependencygroupIdcom.caucho/groupIdartifactIdhessian/artifactIdversion${hessian.version}/version /dependency dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion${guava.version}/version /dependency dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version /dependency启动类: OffHeapStarter /*** author jifang* since 2017/1/1 上午10:47.*/ public class OffHeapStarter {private static final MapString, Long STATISTICS_MAP new HashMap();public static void main(String[] args) throws IOException, IllegalAccessException, InstantiationException {SetClass? classes PackageScanUtil.scanPackage(com.vdian.se.apps);for (Class? clazz : classes) {AbstractAppInvoker invoker createProxyInvoker(clazz.newInstance());invoker.invoke();//System.gc();}System.out.println(********************* statistics **********************);for (Map.EntryString, Long entry : STATISTICS_MAP.entrySet()) {System.out.println(method [ entry.getKey() ] total cost [ entry.getValue() ]ms);}}private static AbstractAppInvoker createProxyInvoker(Object invoker) {ProxyFactory factory new JavassistProxyFactory();Class? superclass invoker.getClass().getSuperclass();Object proxy factory.createInterceptorProxy(invoker, new ProfileInterceptor(), new Class[]{superclass});return (AbstractAppInvoker) proxy;}private static class ProfileInterceptor implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {Class? clazz invocation.getProxy().getClass();Method method clazz.getMethod(invocation.getMethod().getName(), Object[].class);Object result null;if (method.isAnnotationPresent(Test.class) method.getName().equals(invoke)) {String methodName String.format(%s.%s, clazz.getSimpleName(), method.getName());System.out.println(method [ methodName ] start invoke);long start System.currentTimeMillis();result invocation.proceed();long cost System.currentTimeMillis() - start;System.out.println(method [ methodName ] total cost [ cost ]ms);STATISTICS_MAP.put(methodName, cost);}return result;}} } 包扫描工具: PackageScanUtil public class PackageScanUtil {private static final String CLASS_SUFFIX .class;private static final String FILE_PROTOCOL file;public static SetClass? scanPackage(String packageName) throws IOException {SetClass? classes new HashSet();String packageDir packageName.replace(., /);EnumerationURL packageResources Thread.currentThread().getContextClassLoader().getResources(packageDir);while (packageResources.hasMoreElements()) {URL packageResource packageResources.nextElement();String protocol packageResource.getProtocol();// 只扫描项目内classif (FILE_PROTOCOL.equals(protocol)) {String packageDirPath URLDecoder.decode(packageResource.getPath(), UTF-8);scanProjectPackage(packageName, packageDirPath, classes);}}return classes;}private static void scanProjectPackage(String packageName, String packageDirPath, SetClass? classes) {File packageDirFile new File(packageDirPath);if (packageDirFile.exists() packageDirFile.isDirectory()) {File[] subFiles packageDirFile.listFiles(new FileFilter() {Overridepublic boolean accept(File pathname) {return pathname.isDirectory() || pathname.getName().endsWith(CLASS_SUFFIX);}});for (File subFile : subFiles) {if (!subFile.isDirectory()) {String className trimClassSuffix(subFile.getName());String classNameWithPackage packageName . className;Class? clazz null;try {clazz Class.forName(classNameWithPackage);} catch (ClassNotFoundException e) {// ignore}assert clazz ! null;Class? superclass clazz.getSuperclass();if (superclass AbstractAppInvoker.class) {classes.add(clazz);}}}}}// trim .class suffixprivate static String trimClassSuffix(String classNameWithSuffix) {int endIndex classNameWithSuffix.length() - CLASS_SUFFIX.length();return classNameWithSuffix.substring(0, endIndex);} } 注: 在此仅扫描项目目录下的单层目录的class文件, 功能更强大的包扫描工具可参考Spring源代码或Touch源代码中的PackageScanUtil类.AppInvoker基类: AbstractAppInvoker 提供通用测试参数 工具函数.public abstract class AbstractAppInvoker {protected static final int SIZE 170_0000;protected static final IObjectSerializer serializer new Hessian2Serializer();protected static FeedDO createFeed(long id, String userId, long createTime) {return new FeedDO(id, userId, (int) id, userId _ id, createTime);}protected static void free(ByteBuffer byteBuffer) {if (byteBuffer.isDirect()) {((DirectBuffer) byteBuffer).cleaner().clean();}}protected static void checkValid(Object obj) {if (obj null) {throw new RuntimeException(cache invalid);}}protected static void sleep(int time, String beforeMsg) {if (!Strings.isNullOrEmpty(beforeMsg)) {System.out.println(beforeMsg);}try {Thread.sleep(time);} catch (InterruptedException ignored) {// no op}}/*** 供子类继承 外界调用** param param*/public abstract void invoke(Object... param); }序列化/反序列化接口与实现 public interface IObjectSerializer {T byte[] serialize(T obj);T T deserialize(byte[] bytes); } public class Hessian2Serializer implements IObjectSerializer {private static final Logger LOGGER LoggerFactory.getLogger(Hessian2Serializer.class);Overridepublic T byte[] serialize(T obj) {if (obj ! null) {try (ByteArrayOutputStream os new ByteArrayOutputStream()) {Hessian2Output out new Hessian2Output(os);out.writeObject(obj);out.close();return os.toByteArray();} catch (IOException e) {LOGGER.error(Hessian serialize error , e);throw new CacherException(e);}}return null;}SuppressWarnings(unchecked)Overridepublic T T deserialize(byte[] bytes) {if (bytes ! null) {try (ByteArrayInputStream is new ByteArrayInputStream(bytes)) {Hessian2Input in new Hessian2Input(is);T obj (T) in.readObject();in.close();return obj;} catch (IOException e) {LOGGER.error(Hessian deserialize error , e);throw new CacherException(e);}}return null;} } 完整项目地址: https://github.com/feiqing/off-heap-tester.git.GC统计工具 #!/bin/bashpidjps | grep $1 | awk {print $1} jstat -gcutil ${pid} 400 10000 使用 sh jstat-uti.sh ${u-main-class}附加: 为什么在实验中in-heap cache的Minor GC那么少? 现在我还不能给出一个确切地分析答案, 有的同学说是因为CMS Full GC会连带一次Minor GC, 而用jstat会直接计入Full GC, 但查看详细的GC日志也并未发现什么端倪. 希望有了解的同学可以在下面评论区可以给我留言, 再次先感谢了O(∩_∩)O~.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主流网站开发高端企业网站模板

前言随着今年6月份的 HTTP/3 协议的正式发布,它背后的网络传输协议 QUIC,凭借其高效的传输效率和多路并发的能力,也大概率会取代我们熟悉的使用了几十年的 TCP,成为互联网的下一代标准传输协议。在去年 .NET 6 发布的时候&#xf…

网站界面设计如何实现功能美与形式美的统一佛山做外贸网站咨询

jsp里面编写java代码注意加双引号 if("<%type%>""open"){document.getElementById("e").focus();}

为什么做pc网站06627网页制作和网站建设试卷

含位域结构体的sizeof: 前面已经说过&#xff0c;位域成员不能单独被取sizeof值&#xff0c;我们这里要讨论的是含有位域的结构体的sizeof&#xff0c;只是考虑到其特殊性而将其专门列了出来。 C99规定int、unsigned int和bool可以作为位域类型&#xff0c;但编译器几乎都对此作…

梅县区住房和城乡规划建设局官方网站做企业网站需要什么条件

全世界只有3.14 % 的人关注了爆炸吧知识10月18日&#xff0c;有网友爆料称“上海野生动物园猛兽区一饲养员遭群熊撕扯”。随后&#xff0c;上海野生动物园证实&#xff0c;该饲养员目前已身亡。据悉&#xff0c;他才27岁&#xff0c;还没成家。从网上发布的现场视频来看&#x…

网站设计服务开发小程序商城多少钱

文章目录 VMWare 介绍Android 系统介绍概述最终效果前置步骤开始安装 VMWare 介绍 VMware Workstation是VMware公司开发的一款桌面虚拟化软件。它允许用户在一台物理计算机上同时运行多个操作系统&#xff0c;每个操作系统都在自己的虚拟机中运行。这使得用户可以在同一台计算…

电商设计就是网站设计吗wordpress 表格程序

效果 需求 我们这个页面顶部有tabs 栏 而且可以滑动到底部 进行分页 实现这样的页面我们应该怎么做 你应该会想到scroll-view 这个组件吧 下面我们来详情介绍一下这个页面的实现和功能开发 首先展示一下代码 item 循环项 <template><div class"wechat-or…

企业网站建设ejiew天猫交易购买平台

HTTP协议 HTTP协议&#xff08;HyperText Transfer Protocol&#xff09;即超文本传输协议 &#xff0c;是TCP/IC网络体系结构应用层的一个客户端-服务端协议&#xff0c;是所有客户端&#xff0c;服务端数据传输的基石&#xff08;数据传输规则&#xff09; 特点 ⭐基于TCP协…

假发网站是怎么做的wordpress慢6

介绍 Elasticsearch Curator通过以下方式帮助您策划或管理您的Elasticsearch索引和快照&#xff1a; 从集群中获取索引&#xff08;或快照&#xff09;的完整列表&#xff0c;作为可操作列表迭代用户定义的过滤器列表&#xff0c;根据需要逐步从此可操作列表中删除索引&#…

如何免费做网站网页遵义做网站优化

原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表我们知道目标平台是32位的程序运行在64位的系统上&#xff0c;去访问部分注册表的时候系统自动重定向到win32node节点对应的项去了。但是做过安装程序开发人员可能遇到过“需要去掉重定向”的问题&#xff0c…

做斗图的网站伪造wordpress浏览量

2019独角兽企业重金招聘Python工程师标准>>> 做Android应用的人都知道&#xff0c;要一个apk适用多个不同的手机屏幕是很容易的&#xff0c;就是在项目的res文件夹下面有多套相关的资源文件。程序运行的 时候&#xff0c;Android系统会根据当前设备的信息去加载不同…

自学网站平面设计ui设计和网站开发

转载自&#xff08;http://www.cnblogs.com/M-LittleBird/p/5902850.html&#xff09; 一、下载windows版本的Redis 官网以及没有下载地址&#xff0c;只能在github上下载&#xff0c;官网只提供linux版本的下载 官网下载地址&#xff1a;http://redis.io/download github下载地…

中文网站模板大全wordpress支持系统

解决多级路径刷新页面样式丢失的问题 1.public/index.html 中 引入样式时不写 ./ 写 / &#xff08;常用&#xff09;2.public/index.html 中 引入样式时不写 ./ 写 %PUBLIC_URL% &#xff08;常用&#xff09;3.使用HashRouter

兰州企业网站建设多少钱电工培训学校

来自&#xff1a;金钟路上小码工链接&#xff1a;https://www.cnblogs.com/danbing/p/7459224.html一、什么是负载均衡&#xff1f;互联网早期&#xff0c;业务流量比较小并且业务逻辑比较简单&#xff0c;单台服务器便可以满足基本的需求&#xff1b;但随着互联网的发展&#…

网站顶端图片素材宁波网站推广外包服务

1. 对于带宽为50k Hz的信道&#xff0c;若有4种不同的物理状态来表示数据&#xff0c;信噪比为20dB 。&#xff08;1&#xff09; 按奈奎斯特定理&#xff0c;信道的最大传输数据速率是多少&#xff1f;&#xff08;2&#xff09; 按香农定理&#xff0c;信道的最大传输数据速度…

中文网站开发语言公司简历模板

2017年9月发布时&#xff0c;小米米A1几乎成功一夜成名。小西米去年夏天推出了Mi A2和Mi A2 Lite。现在&#xff0c;正如XDA开发者所揭示的那样&#xff0c;中国品牌正在筹备第三代产品阵容。代号为“bamboo_sprout”和“cosmos_sprout” - 所有Android One智能手机都包含代号为…

如何在网站上做社交的链接火狐浏览器下载手机版

前言在C#中DataTable导出数据的时候&#xff0c;我们需要HTML格式的输出数据, 这时候就需要使用将DataTable导出为到HTML格式的方法了&#xff0c;以下代码就可以帮助我们达到目的。首先,我们要绑定DataTable和 DataGridView。一、通过DataTable绑定DataGridView1. 创建DataTab…

金融 网站 模板什么叫整合营销

二叉树 1. 二叉树1.1 二叉树的介绍1.2 两种特殊的二叉树1.3 二叉树的性质1.4 二叉树的存储 2. 二叉树的基本操作2.1 二叉树的创建2.2 二叉树的优先遍历2.3 递归实现二叉树遍历2.4 用非递归实现二叉树遍历 1. 二叉树 1.1 二叉树的介绍 二叉树是一种数据结构&#xff0c;一颗二…

python完整网站开发项目视频教程表3-5企业网站建设可行性分析

DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台&#xff0c;采用了 Java 集合框架并完全支持 DOM&#xff0c;SAX 和 JAXP。 DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型&#xff0c;就能使用。 Dom&#xff1a;把整个文档作为一个对象。 DO…

上海比较大的优化公司石家庄网站优化招聘

##江科大51单片机学习 什么是单片机&#xff1f;&#xff1f;&#xff1f; 单片机&#xff0c;英文名&#xff0c;Micro Controller Unit&#xff0c;简称MCU&#xff08;tips&#xff1a;有人会简称它为CPU&#xff0c;但不是如此&#xff0c;CPU其实被集成在MCU中&#xff…

广西专业网站建设玉树北京网站建设

分布式系统的5个优点 资源共享开放性并发性可伸缩性容错性 分布式计算中必须考虑的设计问题 透明性&#xff1a;隐藏底层分布 开放性 可伸缩性 三个维度 规模&#xff1a;又分为增强扩展(单挑)&#xff0c;增加扩展(群殴)分布可靠性 信息安全性 主要防止以下类型的攻击 拦…